2434 lines
1.9 MiB
2434 lines
1.9 MiB
var iI=Object.defineProperty;var nI=(Vo,Uo,Uh)=>Uo in Vo?iI(Vo,Uo,{enumerable:!0,configurable:!0,writable:!0,value:Uh}):Vo[Uo]=Uh;var Yt=(Vo,Uo,Uh)=>(nI(Vo,typeof Uo!="symbol"?Uo+"":Uo,Uh),Uh);(function(Vo,Uo){typeof exports=="object"&&typeof module<"u"?Uo(exports):typeof define=="function"&&define.amd?define(["exports"],Uo):(Vo=typeof globalThis<"u"?globalThis:Vo||self,Uo(Vo.WPGPXMaps={}))})(this,function(Vo){var Rp;"use strict";const Uo="",Uh="",sI="";/*!
|
||
* @kurkle/color v0.3.4
|
||
* https://github.com/kurkle/color#readme
|
||
* (c) 2024 Jukka Kurkela
|
||
* Released under the MIT License
|
||
*/function id(m){return m+.5|0}const Hl=(m,a,d)=>Math.max(Math.min(m,d),a);function nd(m){return Hl(id(m*2.55),0,255)}function ql(m){return Hl(id(m*255),0,255)}function ul(m){return Hl(id(m/2.55)/100,0,1)}function Py(m){return Hl(id(m*100),0,100)}const jo={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},t_=[..."0123456789ABCDEF"],Cw=m=>t_[m&15],Iw=m=>t_[(m&240)>>4]+t_[m&15],Xf=m=>(m&240)>>4===(m&15),Lw=m=>Xf(m.r)&&Xf(m.g)&&Xf(m.b)&&Xf(m.a);function zw(m){var a=m.length,d;return m[0]==="#"&&(a===4||a===5?d={r:255&jo[m[1]]*17,g:255&jo[m[2]]*17,b:255&jo[m[3]]*17,a:a===5?jo[m[4]]*17:255}:(a===7||a===9)&&(d={r:jo[m[1]]<<4|jo[m[2]],g:jo[m[3]]<<4|jo[m[4]],b:jo[m[5]]<<4|jo[m[6]],a:a===9?jo[m[7]]<<4|jo[m[8]]:255})),d}const Dw=(m,a)=>m<255?a(m):"";function kw(m){var a=Lw(m)?Cw:Iw;return m?"#"+a(m.r)+a(m.g)+a(m.b)+Dw(m.a,a):void 0}const Rw=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Ay(m,a,d){const g=a*Math.min(d,1-d),w=(b,E=(b+m/30)%12)=>d-g*Math.max(Math.min(E-3,9-E,1),-1);return[w(0),w(8),w(4)]}function Ow(m,a,d){const g=(w,b=(w+m/60)%6)=>d-d*a*Math.max(Math.min(b,4-b,1),0);return[g(5),g(3),g(1)]}function Fw(m,a,d){const g=Ay(m,1,.5);let w;for(a+d>1&&(w=1/(a+d),a*=w,d*=w),w=0;w<3;w++)g[w]*=1-a-d,g[w]+=a;return g}function Bw(m,a,d,g,w){return m===w?(a-d)/g+(a<d?6:0):a===w?(d-m)/g+2:(m-a)/g+4}function i_(m){const d=m.r/255,g=m.g/255,w=m.b/255,b=Math.max(d,g,w),E=Math.min(d,g,w),i=(b+E)/2;let O,j,Y;return b!==E&&(Y=b-E,j=i>.5?Y/(2-b-E):Y/(b+E),O=Bw(d,g,w,Y,b),O=O*60+.5),[O|0,j||0,i]}function n_(m,a,d,g){return(Array.isArray(a)?m(a[0],a[1],a[2]):m(a,d,g)).map(ql)}function s_(m,a,d){return n_(Ay,m,a,d)}function Nw(m,a,d){return n_(Fw,m,a,d)}function Vw(m,a,d){return n_(Ow,m,a,d)}function Cy(m){return(m%360+360)%360}function Uw(m){const a=Rw.exec(m);let d=255,g;if(!a)return;a[5]!==g&&(d=a[6]?nd(+a[5]):ql(+a[5]));const w=Cy(+a[2]),b=+a[3]/100,E=+a[4]/100;return a[1]==="hwb"?g=Nw(w,b,E):a[1]==="hsv"?g=Vw(w,b,E):g=s_(w,b,E),{r:g[0],g:g[1],b:g[2],a:d}}function jw(m,a){var d=i_(m);d[0]=Cy(d[0]+a),d=s_(d),m.r=d[0],m.g=d[1],m.b=d[2]}function Gw(m){if(!m)return;const a=i_(m),d=a[0],g=Py(a[1]),w=Py(a[2]);return m.a<255?`hsla(${d}, ${g}%, ${w}%, ${ul(m.a)})`:`hsl(${d}, ${g}%, ${w}%)`}const Iy={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Ly={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function Zw(){const m={},a=Object.keys(Ly),d=Object.keys(Iy);let g,w,b,E,i;for(g=0;g<a.length;g++){for(E=i=a[g],w=0;w<d.length;w++)b=d[w],i=i.replace(b,Iy[b]);b=parseInt(Ly[E],16),m[i]=[b>>16&255,b>>8&255,b&255]}return m}let Yf;function Hw(m){Yf||(Yf=Zw(),Yf.transparent=[0,0,0,0]);const a=Yf[m.toLowerCase()];return a&&{r:a[0],g:a[1],b:a[2],a:a.length===4?a[3]:255}}const qw=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function Ww(m){const a=qw.exec(m);let d=255,g,w,b;if(a){if(a[7]!==g){const E=+a[7];d=a[8]?nd(E):Hl(E*255,0,255)}return g=+a[1],w=+a[3],b=+a[5],g=255&(a[2]?nd(g):Hl(g,0,255)),w=255&(a[4]?nd(w):Hl(w,0,255)),b=255&(a[6]?nd(b):Hl(b,0,255)),{r:g,g:w,b,a:d}}}function $w(m){return m&&(m.a<255?`rgba(${m.r}, ${m.g}, ${m.b}, ${ul(m.a)})`:`rgb(${m.r}, ${m.g}, ${m.b})`)}const r_=m=>m<=.0031308?m*12.92:Math.pow(m,1/2.4)*1.055-.055,jh=m=>m<=.04045?m/12.92:Math.pow((m+.055)/1.055,2.4);function Xw(m,a,d){const g=jh(ul(m.r)),w=jh(ul(m.g)),b=jh(ul(m.b));return{r:ql(r_(g+d*(jh(ul(a.r))-g))),g:ql(r_(w+d*(jh(ul(a.g))-w))),b:ql(r_(b+d*(jh(ul(a.b))-b))),a:m.a+d*(a.a-m.a)}}function Kf(m,a,d){if(m){let g=i_(m);g[a]=Math.max(0,Math.min(g[a]+g[a]*d,a===0?360:1)),g=s_(g),m.r=g[0],m.g=g[1],m.b=g[2]}}function zy(m,a){return m&&Object.assign(a||{},m)}function Dy(m){var a={r:0,g:0,b:0,a:255};return Array.isArray(m)?m.length>=3&&(a={r:m[0],g:m[1],b:m[2],a:255},m.length>3&&(a.a=ql(m[3]))):(a=zy(m,{r:0,g:0,b:0,a:1}),a.a=ql(a.a)),a}function Yw(m){return m.charAt(0)==="r"?Ww(m):Uw(m)}class sd{constructor(a){if(a instanceof sd)return a;const d=typeof a;let g;d==="object"?g=Dy(a):d==="string"&&(g=zw(a)||Hw(a)||Yw(a)),this._rgb=g,this._valid=!!g}get valid(){return this._valid}get rgb(){var a=zy(this._rgb);return a&&(a.a=ul(a.a)),a}set rgb(a){this._rgb=Dy(a)}rgbString(){return this._valid?$w(this._rgb):void 0}hexString(){return this._valid?kw(this._rgb):void 0}hslString(){return this._valid?Gw(this._rgb):void 0}mix(a,d){if(a){const g=this.rgb,w=a.rgb;let b;const E=d===b?.5:d,i=2*E-1,O=g.a-w.a,j=((i*O===-1?i:(i+O)/(1+i*O))+1)/2;b=1-j,g.r=255&j*g.r+b*w.r+.5,g.g=255&j*g.g+b*w.g+.5,g.b=255&j*g.b+b*w.b+.5,g.a=E*g.a+(1-E)*w.a,this.rgb=g}return this}interpolate(a,d){return a&&(this._rgb=Xw(this._rgb,a._rgb,d)),this}clone(){return new sd(this.rgb)}alpha(a){return this._rgb.a=ql(a),this}clearer(a){const d=this._rgb;return d.a*=1-a,this}greyscale(){const a=this._rgb,d=id(a.r*.3+a.g*.59+a.b*.11);return a.r=a.g=a.b=d,this}opaquer(a){const d=this._rgb;return d.a*=1+a,this}negate(){const a=this._rgb;return a.r=255-a.r,a.g=255-a.g,a.b=255-a.b,this}lighten(a){return Kf(this._rgb,2,a),this}darken(a){return Kf(this._rgb,2,-a),this}saturate(a){return Kf(this._rgb,1,a),this}desaturate(a){return Kf(this._rgb,1,-a),this}rotate(a){return jw(this._rgb,a),this}}/*!
|
||
* Chart.js v4.4.7
|
||
* https://www.chartjs.org
|
||
* (c) 2024 Chart.js Contributors
|
||
* Released under the MIT License
|
||
*/function dl(){}const Kw=(()=>{let m=0;return()=>m++})();function Sn(m){return m==null}function ns(m){if(Array.isArray&&Array.isArray(m))return!0;const a=Object.prototype.toString.call(m);return a.slice(0,7)==="[object"&&a.slice(-6)==="Array]"}function gn(m){return m!==null&&Object.prototype.toString.call(m)==="[object Object]"}function Ss(m){return(typeof m=="number"||m instanceof Number)&&isFinite(+m)}function yo(m,a){return Ss(m)?m:a}function Ji(m,a){return typeof m>"u"?a:m}const Jw=(m,a)=>typeof m=="string"&&m.endsWith("%")?parseFloat(m)/100:+m/a,ky=(m,a)=>typeof m=="string"&&m.endsWith("%")?parseFloat(m)/100*a:+m;function Jn(m,a,d){if(m&&typeof m.call=="function")return m.apply(d,a)}function Vn(m,a,d,g){let w,b,E;if(ns(m))if(b=m.length,g)for(w=b-1;w>=0;w--)a.call(d,m[w],w);else for(w=0;w<b;w++)a.call(d,m[w],w);else if(gn(m))for(E=Object.keys(m),b=E.length,w=0;w<b;w++)a.call(d,m[E[w]],E[w])}function Jf(m,a){let d,g,w,b;if(!m||!a||m.length!==a.length)return!1;for(d=0,g=m.length;d<g;++d)if(w=m[d],b=a[d],w.datasetIndex!==b.datasetIndex||w.index!==b.index)return!1;return!0}function Qf(m){if(ns(m))return m.map(Qf);if(gn(m)){const a=Object.create(null),d=Object.keys(m),g=d.length;let w=0;for(;w<g;++w)a[d[w]]=Qf(m[d[w]]);return a}return m}function Ry(m){return["__proto__","prototype","constructor"].indexOf(m)===-1}function Qw(m,a,d,g){if(!Ry(m))return;const w=a[m],b=d[m];gn(w)&&gn(b)?rd(w,b,g):a[m]=Qf(b)}function rd(m,a,d){const g=ns(a)?a:[a],w=g.length;if(!gn(m))return m;d=d||{};const b=d.merger||Qw;let E;for(let i=0;i<w;++i){if(E=g[i],!gn(E))continue;const O=Object.keys(E);for(let j=0,Y=O.length;j<Y;++j)b(O[j],m,E,d)}return m}function od(m,a){return rd(m,a,{merger:eT})}function eT(m,a,d){if(!Ry(m))return;const g=a[m],w=d[m];gn(g)&&gn(w)?od(g,w):Object.prototype.hasOwnProperty.call(a,m)||(a[m]=Qf(w))}const Oy={"":m=>m,x:m=>m.x,y:m=>m.y};function tT(m){const a=m.split("."),d=[];let g="";for(const w of a)g+=w,g.endsWith("\\")?g=g.slice(0,-1)+".":(d.push(g),g="");return d}function iT(m){const a=tT(m);return d=>{for(const g of a){if(g==="")break;d=d&&d[g]}return d}}function Wl(m,a){return(Oy[a]||(Oy[a]=iT(a)))(m)}function o_(m){return m.charAt(0).toUpperCase()+m.slice(1)}const ad=m=>typeof m<"u",$l=m=>typeof m=="function",Fy=(m,a)=>{if(m.size!==a.size)return!1;for(const d of m)if(!a.has(d))return!1;return!0};function nT(m){return m.type==="mouseup"||m.type==="click"||m.type==="contextmenu"}const ss=Math.PI,rs=2*ss,sT=rs+ss,ep=Number.POSITIVE_INFINITY,rT=ss/180,Cs=ss/2,Vc=ss/4,By=ss*2/3,Xl=Math.log10,Ra=Math.sign;function ld(m,a,d){return Math.abs(m-a)<d}function Ny(m){const a=Math.round(m);m=ld(m,a,m/1e3)?a:m;const d=Math.pow(10,Math.floor(Xl(m))),g=m/d;return(g<=1?1:g<=2?2:g<=5?5:10)*d}function oT(m){const a=[],d=Math.sqrt(m);let g;for(g=1;g<d;g++)m%g===0&&(a.push(g),a.push(m/g));return d===(d|0)&&a.push(d),a.sort((w,b)=>w-b).pop(),a}function Gh(m){return!isNaN(parseFloat(m))&&isFinite(m)}function aT(m,a){const d=Math.round(m);return d-a<=m&&d+a>=m}function Vy(m,a,d){let g,w,b;for(g=0,w=m.length;g<w;g++)b=m[g][d],isNaN(b)||(a.min=Math.min(a.min,b),a.max=Math.max(a.max,b))}function aa(m){return m*(ss/180)}function a_(m){return m*(180/ss)}function Uy(m){if(!Ss(m))return;let a=1,d=0;for(;Math.round(m*a)/a!==m;)a*=10,d++;return d}function jy(m,a){const d=a.x-m.x,g=a.y-m.y,w=Math.sqrt(d*d+g*g);let b=Math.atan2(g,d);return b<-.5*ss&&(b+=rs),{angle:b,distance:w}}function l_(m,a){return Math.sqrt(Math.pow(a.x-m.x,2)+Math.pow(a.y-m.y,2))}function lT(m,a){return(m-a+sT)%rs-ss}function xo(m){return(m%rs+rs)%rs}function cd(m,a,d,g){const w=xo(m),b=xo(a),E=xo(d),i=xo(b-w),O=xo(E-w),j=xo(w-b),Y=xo(w-E);return w===b||w===E||g&&b===E||i>O&&j<Y}function nr(m,a,d){return Math.max(a,Math.min(d,m))}function cT(m){return nr(m,-32768,32767)}function fl(m,a,d,g=1e-6){return m>=Math.min(a,d)-g&&m<=Math.max(a,d)+g}function c_(m,a,d){d=d||(E=>m[E]<a);let g=m.length-1,w=0,b;for(;g-w>1;)b=w+g>>1,d(b)?w=b:g=b;return{lo:w,hi:g}}const pl=(m,a,d,g)=>c_(m,d,g?w=>{const b=m[w][a];return b<d||b===d&&m[w+1][a]===d}:w=>m[w][a]<d),hT=(m,a,d)=>c_(m,d,g=>m[g][a]>=d);function uT(m,a,d){let g=0,w=m.length;for(;g<w&&m[g]<a;)g++;for(;w>g&&m[w-1]>d;)w--;return g>0||w<m.length?m.slice(g,w):m}const Gy=["push","pop","shift","splice","unshift"];function dT(m,a){if(m._chartjs){m._chartjs.listeners.push(a);return}Object.defineProperty(m,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[a]}}),Gy.forEach(d=>{const g="_onData"+o_(d),w=m[d];Object.defineProperty(m,d,{configurable:!0,enumerable:!1,value(...b){const E=w.apply(this,b);return m._chartjs.listeners.forEach(i=>{typeof i[g]=="function"&&i[g](...b)}),E}})})}function Zy(m,a){const d=m._chartjs;if(!d)return;const g=d.listeners,w=g.indexOf(a);w!==-1&&g.splice(w,1),!(g.length>0)&&(Gy.forEach(b=>{delete m[b]}),delete m._chartjs)}function Hy(m){const a=new Set(m);return a.size===m.length?m:Array.from(a)}const qy=function(){return typeof window>"u"?function(m){return m()}:window.requestAnimationFrame}();function Wy(m,a){let d=[],g=!1;return function(...w){d=w,g||(g=!0,qy.call(window,()=>{g=!1,m.apply(a,d)}))}}function fT(m,a){let d;return function(...g){return a?(clearTimeout(d),d=setTimeout(m,a,g)):m.apply(this,g),a}}const h_=m=>m==="start"?"left":m==="end"?"right":"center",Mr=(m,a,d)=>m==="start"?a:m==="end"?d:(a+d)/2,pT=(m,a,d,g)=>m===(g?"left":"right")?d:m==="center"?(a+d)/2:a;function $y(m,a,d){const g=a.length;let w=0,b=g;if(m._sorted){const{iScale:E,_parsed:i}=m,O=E.axis,{min:j,max:Y,minDefined:J,maxDefined:ae}=E.getUserBounds();J&&(w=nr(Math.min(pl(i,O,j).lo,d?g:pl(a,O,E.getPixelForValue(j)).lo),0,g-1)),ae?b=nr(Math.max(pl(i,E.axis,Y,!0).hi+1,d?0:pl(a,O,E.getPixelForValue(Y),!0).hi+1),w,g)-w:b=g-w}return{start:w,count:b}}function Xy(m){const{xScale:a,yScale:d,_scaleRanges:g}=m,w={xmin:a.min,xmax:a.max,ymin:d.min,ymax:d.max};if(!g)return m._scaleRanges=w,!0;const b=g.xmin!==a.min||g.xmax!==a.max||g.ymin!==d.min||g.ymax!==d.max;return Object.assign(g,w),b}const tp=m=>m===0||m===1,Yy=(m,a,d)=>-(Math.pow(2,10*(m-=1))*Math.sin((m-a)*rs/d)),Ky=(m,a,d)=>Math.pow(2,-10*m)*Math.sin((m-a)*rs/d)+1,hd={linear:m=>m,easeInQuad:m=>m*m,easeOutQuad:m=>-m*(m-2),easeInOutQuad:m=>(m/=.5)<1?.5*m*m:-.5*(--m*(m-2)-1),easeInCubic:m=>m*m*m,easeOutCubic:m=>(m-=1)*m*m+1,easeInOutCubic:m=>(m/=.5)<1?.5*m*m*m:.5*((m-=2)*m*m+2),easeInQuart:m=>m*m*m*m,easeOutQuart:m=>-((m-=1)*m*m*m-1),easeInOutQuart:m=>(m/=.5)<1?.5*m*m*m*m:-.5*((m-=2)*m*m*m-2),easeInQuint:m=>m*m*m*m*m,easeOutQuint:m=>(m-=1)*m*m*m*m+1,easeInOutQuint:m=>(m/=.5)<1?.5*m*m*m*m*m:.5*((m-=2)*m*m*m*m+2),easeInSine:m=>-Math.cos(m*Cs)+1,easeOutSine:m=>Math.sin(m*Cs),easeInOutSine:m=>-.5*(Math.cos(ss*m)-1),easeInExpo:m=>m===0?0:Math.pow(2,10*(m-1)),easeOutExpo:m=>m===1?1:-Math.pow(2,-10*m)+1,easeInOutExpo:m=>tp(m)?m:m<.5?.5*Math.pow(2,10*(m*2-1)):.5*(-Math.pow(2,-10*(m*2-1))+2),easeInCirc:m=>m>=1?m:-(Math.sqrt(1-m*m)-1),easeOutCirc:m=>Math.sqrt(1-(m-=1)*m),easeInOutCirc:m=>(m/=.5)<1?-.5*(Math.sqrt(1-m*m)-1):.5*(Math.sqrt(1-(m-=2)*m)+1),easeInElastic:m=>tp(m)?m:Yy(m,.075,.3),easeOutElastic:m=>tp(m)?m:Ky(m,.075,.3),easeInOutElastic(m){return tp(m)?m:m<.5?.5*Yy(m*2,.1125,.45):.5+.5*Ky(m*2-1,.1125,.45)},easeInBack(m){return m*m*((1.70158+1)*m-1.70158)},easeOutBack(m){return(m-=1)*m*((1.70158+1)*m+1.70158)+1},easeInOutBack(m){let a=1.70158;return(m/=.5)<1?.5*(m*m*(((a*=1.525)+1)*m-a)):.5*((m-=2)*m*(((a*=1.525)+1)*m+a)+2)},easeInBounce:m=>1-hd.easeOutBounce(1-m),easeOutBounce(m){return m<1/2.75?7.5625*m*m:m<2/2.75?7.5625*(m-=1.5/2.75)*m+.75:m<2.5/2.75?7.5625*(m-=2.25/2.75)*m+.9375:7.5625*(m-=2.625/2.75)*m+.984375},easeInOutBounce:m=>m<.5?hd.easeInBounce(m*2)*.5:hd.easeOutBounce(m*2-1)*.5+.5};function u_(m){if(m&&typeof m=="object"){const a=m.toString();return a==="[object CanvasPattern]"||a==="[object CanvasGradient]"}return!1}function Jy(m){return u_(m)?m:new sd(m)}function d_(m){return u_(m)?m:new sd(m).saturate(.5).darken(.1).hexString()}const mT=["x","y","borderWidth","radius","tension"],_T=["color","borderColor","backgroundColor"];function gT(m){m.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),m.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:a=>a!=="onProgress"&&a!=="onComplete"&&a!=="fn"}),m.set("animations",{colors:{type:"color",properties:_T},numbers:{type:"number",properties:mT}}),m.describe("animations",{_fallback:"animation"}),m.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:a=>a|0}}}})}function yT(m){m.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const Qy=new Map;function xT(m,a){a=a||{};const d=m+JSON.stringify(a);let g=Qy.get(d);return g||(g=new Intl.NumberFormat(m,a),Qy.set(d,g)),g}function ud(m,a,d){return xT(a,d).format(m)}const e0={values(m){return ns(m)?m:""+m},numeric(m,a,d){if(m===0)return"0";const g=this.chart.options.locale;let w,b=m;if(d.length>1){const j=Math.max(Math.abs(d[0].value),Math.abs(d[d.length-1].value));(j<1e-4||j>1e15)&&(w="scientific"),b=vT(m,d)}const E=Xl(Math.abs(b)),i=isNaN(E)?1:Math.max(Math.min(-1*Math.floor(E),20),0),O={notation:w,minimumFractionDigits:i,maximumFractionDigits:i};return Object.assign(O,this.options.ticks.format),ud(m,g,O)},logarithmic(m,a,d){if(m===0)return"0";const g=d[a].significand||m/Math.pow(10,Math.floor(Xl(m)));return[1,2,3,5,10,15].includes(g)||a>.8*d.length?e0.numeric.call(this,m,a,d):""}};function vT(m,a){let d=a.length>3?a[2].value-a[1].value:a[1].value-a[0].value;return Math.abs(d)>=1&&m!==Math.floor(m)&&(d=m-Math.floor(m)),d}var ip={formatters:e0};function bT(m){m.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(a,d)=>d.lineWidth,tickColor:(a,d)=>d.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ip.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),m.route("scale.ticks","color","","color"),m.route("scale.grid","color","","borderColor"),m.route("scale.border","color","","borderColor"),m.route("scale.title","color","","color"),m.describe("scale",{_fallback:!1,_scriptable:a=>!a.startsWith("before")&&!a.startsWith("after")&&a!=="callback"&&a!=="parser",_indexable:a=>a!=="borderDash"&&a!=="tickBorderDash"&&a!=="dash"}),m.describe("scales",{_fallback:"scale"}),m.describe("scale.ticks",{_scriptable:a=>a!=="backdropPadding"&&a!=="callback",_indexable:a=>a!=="backdropPadding"})}const Uc=Object.create(null),f_=Object.create(null);function dd(m,a){if(!a)return m;const d=a.split(".");for(let g=0,w=d.length;g<w;++g){const b=d[g];m=m[b]||(m[b]=Object.create(null))}return m}function p_(m,a,d){return typeof a=="string"?rd(dd(m,a),d):rd(dd(m,""),a)}class wT{constructor(a,d){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=g=>g.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(g,w)=>d_(w.backgroundColor),this.hoverBorderColor=(g,w)=>d_(w.borderColor),this.hoverColor=(g,w)=>d_(w.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(a),this.apply(d)}set(a,d){return p_(this,a,d)}get(a){return dd(this,a)}describe(a,d){return p_(f_,a,d)}override(a,d){return p_(Uc,a,d)}route(a,d,g,w){const b=dd(this,a),E=dd(this,g),i="_"+d;Object.defineProperties(b,{[i]:{value:b[d],writable:!0},[d]:{enumerable:!0,get(){const O=this[i],j=E[w];return gn(O)?Object.assign({},j,O):Ji(O,j)},set(O){this[i]=O}}})}apply(a){a.forEach(d=>d(this))}}var fs=new wT({_scriptable:m=>!m.startsWith("on"),_indexable:m=>m!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[gT,yT,bT]);function TT(m){return!m||Sn(m.size)||Sn(m.family)?null:(m.style?m.style+" ":"")+(m.weight?m.weight+" ":"")+m.size+"px "+m.family}function np(m,a,d,g,w){let b=a[w];return b||(b=a[w]=m.measureText(w).width,d.push(w)),b>g&&(g=b),g}function MT(m,a,d,g){g=g||{};let w=g.data=g.data||{},b=g.garbageCollect=g.garbageCollect||[];g.font!==a&&(w=g.data={},b=g.garbageCollect=[],g.font=a),m.save(),m.font=a;let E=0;const i=d.length;let O,j,Y,J,ae;for(O=0;O<i;O++)if(J=d[O],J!=null&&!ns(J))E=np(m,w,b,E,J);else if(ns(J))for(j=0,Y=J.length;j<Y;j++)ae=J[j],ae!=null&&!ns(ae)&&(E=np(m,w,b,E,ae));m.restore();const ce=b.length/2;if(ce>d.length){for(O=0;O<ce;O++)delete w[b[O]];b.splice(0,ce)}return E}function jc(m,a,d){const g=m.currentDevicePixelRatio,w=d!==0?Math.max(d/2,.5):0;return Math.round((a-w)*g)/g+w}function t0(m,a){!a&&!m||(a=a||m.getContext("2d"),a.save(),a.resetTransform(),a.clearRect(0,0,m.width,m.height),a.restore())}function m_(m,a,d,g){i0(m,a,d,g,null)}function i0(m,a,d,g,w){let b,E,i,O,j,Y,J,ae;const ce=a.pointStyle,Te=a.rotation,be=a.radius;let Ze=(Te||0)*rT;if(ce&&typeof ce=="object"&&(b=ce.toString(),b==="[object HTMLImageElement]"||b==="[object HTMLCanvasElement]")){m.save(),m.translate(d,g),m.rotate(Ze),m.drawImage(ce,-ce.width/2,-ce.height/2,ce.width,ce.height),m.restore();return}if(!(isNaN(be)||be<=0)){switch(m.beginPath(),ce){default:w?m.ellipse(d,g,w/2,be,0,0,rs):m.arc(d,g,be,0,rs),m.closePath();break;case"triangle":Y=w?w/2:be,m.moveTo(d+Math.sin(Ze)*Y,g-Math.cos(Ze)*be),Ze+=By,m.lineTo(d+Math.sin(Ze)*Y,g-Math.cos(Ze)*be),Ze+=By,m.lineTo(d+Math.sin(Ze)*Y,g-Math.cos(Ze)*be),m.closePath();break;case"rectRounded":j=be*.516,O=be-j,E=Math.cos(Ze+Vc)*O,J=Math.cos(Ze+Vc)*(w?w/2-j:O),i=Math.sin(Ze+Vc)*O,ae=Math.sin(Ze+Vc)*(w?w/2-j:O),m.arc(d-J,g-i,j,Ze-ss,Ze-Cs),m.arc(d+ae,g-E,j,Ze-Cs,Ze),m.arc(d+J,g+i,j,Ze,Ze+Cs),m.arc(d-ae,g+E,j,Ze+Cs,Ze+ss),m.closePath();break;case"rect":if(!Te){O=Math.SQRT1_2*be,Y=w?w/2:O,m.rect(d-Y,g-O,2*Y,2*O);break}Ze+=Vc;case"rectRot":J=Math.cos(Ze)*(w?w/2:be),E=Math.cos(Ze)*be,i=Math.sin(Ze)*be,ae=Math.sin(Ze)*(w?w/2:be),m.moveTo(d-J,g-i),m.lineTo(d+ae,g-E),m.lineTo(d+J,g+i),m.lineTo(d-ae,g+E),m.closePath();break;case"crossRot":Ze+=Vc;case"cross":J=Math.cos(Ze)*(w?w/2:be),E=Math.cos(Ze)*be,i=Math.sin(Ze)*be,ae=Math.sin(Ze)*(w?w/2:be),m.moveTo(d-J,g-i),m.lineTo(d+J,g+i),m.moveTo(d+ae,g-E),m.lineTo(d-ae,g+E);break;case"star":J=Math.cos(Ze)*(w?w/2:be),E=Math.cos(Ze)*be,i=Math.sin(Ze)*be,ae=Math.sin(Ze)*(w?w/2:be),m.moveTo(d-J,g-i),m.lineTo(d+J,g+i),m.moveTo(d+ae,g-E),m.lineTo(d-ae,g+E),Ze+=Vc,J=Math.cos(Ze)*(w?w/2:be),E=Math.cos(Ze)*be,i=Math.sin(Ze)*be,ae=Math.sin(Ze)*(w?w/2:be),m.moveTo(d-J,g-i),m.lineTo(d+J,g+i),m.moveTo(d+ae,g-E),m.lineTo(d-ae,g+E);break;case"line":E=w?w/2:Math.cos(Ze)*be,i=Math.sin(Ze)*be,m.moveTo(d-E,g-i),m.lineTo(d+E,g+i);break;case"dash":m.moveTo(d,g),m.lineTo(d+Math.cos(Ze)*(w?w/2:be),g+Math.sin(Ze)*be);break;case!1:m.closePath();break}m.fill(),a.borderWidth>0&&m.stroke()}}function ml(m,a,d){return d=d||.5,!a||m&&m.x>a.left-d&&m.x<a.right+d&&m.y>a.top-d&&m.y<a.bottom+d}function sp(m,a){m.save(),m.beginPath(),m.rect(a.left,a.top,a.right-a.left,a.bottom-a.top),m.clip()}function rp(m){m.restore()}function ST(m,a,d,g,w){if(!a)return m.lineTo(d.x,d.y);if(w==="middle"){const b=(a.x+d.x)/2;m.lineTo(b,a.y),m.lineTo(b,d.y)}else w==="after"!=!!g?m.lineTo(a.x,d.y):m.lineTo(d.x,a.y);m.lineTo(d.x,d.y)}function ET(m,a,d,g){if(!a)return m.lineTo(d.x,d.y);m.bezierCurveTo(g?a.cp1x:a.cp2x,g?a.cp1y:a.cp2y,g?d.cp2x:d.cp1x,g?d.cp2y:d.cp1y,d.x,d.y)}function PT(m,a){a.translation&&m.translate(a.translation[0],a.translation[1]),Sn(a.rotation)||m.rotate(a.rotation),a.color&&(m.fillStyle=a.color),a.textAlign&&(m.textAlign=a.textAlign),a.textBaseline&&(m.textBaseline=a.textBaseline)}function AT(m,a,d,g,w){if(w.strikethrough||w.underline){const b=m.measureText(g),E=a-b.actualBoundingBoxLeft,i=a+b.actualBoundingBoxRight,O=d-b.actualBoundingBoxAscent,j=d+b.actualBoundingBoxDescent,Y=w.strikethrough?(O+j)/2:j;m.strokeStyle=m.fillStyle,m.beginPath(),m.lineWidth=w.decorationWidth||2,m.moveTo(E,Y),m.lineTo(i,Y),m.stroke()}}function CT(m,a){const d=m.fillStyle;m.fillStyle=a.color,m.fillRect(a.left,a.top,a.width,a.height),m.fillStyle=d}function Gc(m,a,d,g,w,b={}){const E=ns(a)?a:[a],i=b.strokeWidth>0&&b.strokeColor!=="";let O,j;for(m.save(),m.font=w.string,PT(m,b),O=0;O<E.length;++O)j=E[O],b.backdrop&&CT(m,b.backdrop),i&&(b.strokeColor&&(m.strokeStyle=b.strokeColor),Sn(b.strokeWidth)||(m.lineWidth=b.strokeWidth),m.strokeText(j,d,g,b.maxWidth)),m.fillText(j,d,g,b.maxWidth),AT(m,d,g,j,b),g+=Number(w.lineHeight);m.restore()}function fd(m,a){const{x:d,y:g,w,h:b,radius:E}=a;m.arc(d+E.topLeft,g+E.topLeft,E.topLeft,1.5*ss,ss,!0),m.lineTo(d,g+b-E.bottomLeft),m.arc(d+E.bottomLeft,g+b-E.bottomLeft,E.bottomLeft,ss,Cs,!0),m.lineTo(d+w-E.bottomRight,g+b),m.arc(d+w-E.bottomRight,g+b-E.bottomRight,E.bottomRight,Cs,0,!0),m.lineTo(d+w,g+E.topRight),m.arc(d+w-E.topRight,g+E.topRight,E.topRight,0,-Cs,!0),m.lineTo(d+E.topLeft,g)}const IT=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,LT=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function zT(m,a){const d=(""+m).match(IT);if(!d||d[1]==="normal")return a*1.2;switch(m=+d[2],d[3]){case"px":return m;case"%":m/=100;break}return a*m}const DT=m=>+m||0;function __(m,a){const d={},g=gn(a),w=g?Object.keys(a):a,b=gn(m)?g?E=>Ji(m[E],m[a[E]]):E=>m[E]:()=>m;for(const E of w)d[E]=DT(b(E));return d}function n0(m){return __(m,{top:"y",right:"x",bottom:"y",left:"x"})}function Zc(m){return __(m,["topLeft","topRight","bottomLeft","bottomRight"])}function Sr(m){const a=n0(m);return a.width=a.left+a.right,a.height=a.top+a.bottom,a}function Ws(m,a){m=m||{},a=a||fs.font;let d=Ji(m.size,a.size);typeof d=="string"&&(d=parseInt(d,10));let g=Ji(m.style,a.style);g&&!(""+g).match(LT)&&(console.warn('Invalid font style specified: "'+g+'"'),g=void 0);const w={family:Ji(m.family,a.family),lineHeight:zT(Ji(m.lineHeight,a.lineHeight),d),size:d,style:g,weight:Ji(m.weight,a.weight),string:""};return w.string=TT(w),w}function pd(m,a,d,g){let w=!0,b,E,i;for(b=0,E=m.length;b<E;++b)if(i=m[b],i!==void 0&&(a!==void 0&&typeof i=="function"&&(i=i(a),w=!1),d!==void 0&&ns(i)&&(i=i[d%i.length],w=!1),i!==void 0))return g&&!w&&(g.cacheable=!1),i}function kT(m,a,d){const{min:g,max:w}=m,b=ky(a,(w-g)/2),E=(i,O)=>d&&i===0?0:i+O;return{min:E(g,-Math.abs(b)),max:E(w,b)}}function Yl(m,a){return Object.assign(Object.create(m),a)}function g_(m,a=[""],d,g,w=()=>m[0]){const b=d||m;typeof g>"u"&&(g=l0("_fallback",m));const E={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:m,_rootScopes:b,_fallback:g,_getTarget:w,override:i=>g_([i,...m],a,b,g)};return new Proxy(E,{deleteProperty(i,O){return delete i[O],delete i._keys,delete m[0][O],!0},get(i,O){return r0(i,O,()=>jT(O,a,m,i))},getOwnPropertyDescriptor(i,O){return Reflect.getOwnPropertyDescriptor(i._scopes[0],O)},getPrototypeOf(){return Reflect.getPrototypeOf(m[0])},has(i,O){return c0(i).includes(O)},ownKeys(i){return c0(i)},set(i,O,j){const Y=i._storage||(i._storage=w());return i[O]=Y[O]=j,delete i._keys,!0}})}function Zh(m,a,d,g){const w={_cacheable:!1,_proxy:m,_context:a,_subProxy:d,_stack:new Set,_descriptors:s0(m,g),setContext:b=>Zh(m,b,d,g),override:b=>Zh(m.override(b),a,d,g)};return new Proxy(w,{deleteProperty(b,E){return delete b[E],delete m[E],!0},get(b,E,i){return r0(b,E,()=>OT(b,E,i))},getOwnPropertyDescriptor(b,E){return b._descriptors.allKeys?Reflect.has(m,E)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(m,E)},getPrototypeOf(){return Reflect.getPrototypeOf(m)},has(b,E){return Reflect.has(m,E)},ownKeys(){return Reflect.ownKeys(m)},set(b,E,i){return m[E]=i,delete b[E],!0}})}function s0(m,a={scriptable:!0,indexable:!0}){const{_scriptable:d=a.scriptable,_indexable:g=a.indexable,_allKeys:w=a.allKeys}=m;return{allKeys:w,scriptable:d,indexable:g,isScriptable:$l(d)?d:()=>d,isIndexable:$l(g)?g:()=>g}}const RT=(m,a)=>m?m+o_(a):a,y_=(m,a)=>gn(a)&&m!=="adapters"&&(Object.getPrototypeOf(a)===null||a.constructor===Object);function r0(m,a,d){if(Object.prototype.hasOwnProperty.call(m,a)||a==="constructor")return m[a];const g=d();return m[a]=g,g}function OT(m,a,d){const{_proxy:g,_context:w,_subProxy:b,_descriptors:E}=m;let i=g[a];return $l(i)&&E.isScriptable(a)&&(i=FT(a,i,m,d)),ns(i)&&i.length&&(i=BT(a,i,m,E.isIndexable)),y_(a,i)&&(i=Zh(i,w,b&&b[a],E)),i}function FT(m,a,d,g){const{_proxy:w,_context:b,_subProxy:E,_stack:i}=d;if(i.has(m))throw new Error("Recursion detected: "+Array.from(i).join("->")+"->"+m);i.add(m);let O=a(b,E||g);return i.delete(m),y_(m,O)&&(O=x_(w._scopes,w,m,O)),O}function BT(m,a,d,g){const{_proxy:w,_context:b,_subProxy:E,_descriptors:i}=d;if(typeof b.index<"u"&&g(m))return a[b.index%a.length];if(gn(a[0])){const O=a,j=w._scopes.filter(Y=>Y!==O);a=[];for(const Y of O){const J=x_(j,w,m,Y);a.push(Zh(J,b,E&&E[m],i))}}return a}function o0(m,a,d){return $l(m)?m(a,d):m}const NT=(m,a)=>m===!0?a:typeof m=="string"?Wl(a,m):void 0;function VT(m,a,d,g,w){for(const b of a){const E=NT(d,b);if(E){m.add(E);const i=o0(E._fallback,d,w);if(typeof i<"u"&&i!==d&&i!==g)return i}else if(E===!1&&typeof g<"u"&&d!==g)return null}return!1}function x_(m,a,d,g){const w=a._rootScopes,b=o0(a._fallback,d,g),E=[...m,...w],i=new Set;i.add(g);let O=a0(i,E,d,b||d,g);return O===null||typeof b<"u"&&b!==d&&(O=a0(i,E,b,O,g),O===null)?!1:g_(Array.from(i),[""],w,b,()=>UT(a,d,g))}function a0(m,a,d,g,w){for(;d;)d=VT(m,a,d,g,w);return d}function UT(m,a,d){const g=m._getTarget();a in g||(g[a]={});const w=g[a];return ns(w)&&gn(d)?d:w||{}}function jT(m,a,d,g){let w;for(const b of a)if(w=l0(RT(b,m),d),typeof w<"u")return y_(m,w)?x_(d,g,m,w):w}function l0(m,a){for(const d of a){if(!d)continue;const g=d[m];if(typeof g<"u")return g}}function c0(m){let a=m._keys;return a||(a=m._keys=GT(m._scopes)),a}function GT(m){const a=new Set;for(const d of m)for(const g of Object.keys(d).filter(w=>!w.startsWith("_")))a.add(g);return Array.from(a)}function h0(m,a,d,g){const{iScale:w}=m,{key:b="r"}=this._parsing,E=new Array(g);let i,O,j,Y;for(i=0,O=g;i<O;++i)j=i+d,Y=a[j],E[i]={r:w.parse(Wl(Y,b),j)};return E}const ZT=Number.EPSILON||1e-14,Hh=(m,a)=>a<m.length&&!m[a].skip&&m[a],u0=m=>m==="x"?"y":"x";function HT(m,a,d,g){const w=m.skip?a:m,b=a,E=d.skip?a:d,i=l_(b,w),O=l_(E,b);let j=i/(i+O),Y=O/(i+O);j=isNaN(j)?0:j,Y=isNaN(Y)?0:Y;const J=g*j,ae=g*Y;return{previous:{x:b.x-J*(E.x-w.x),y:b.y-J*(E.y-w.y)},next:{x:b.x+ae*(E.x-w.x),y:b.y+ae*(E.y-w.y)}}}function qT(m,a,d){const g=m.length;let w,b,E,i,O,j=Hh(m,0);for(let Y=0;Y<g-1;++Y)if(O=j,j=Hh(m,Y+1),!(!O||!j)){if(ld(a[Y],0,ZT)){d[Y]=d[Y+1]=0;continue}w=d[Y]/a[Y],b=d[Y+1]/a[Y],i=Math.pow(w,2)+Math.pow(b,2),!(i<=9)&&(E=3/Math.sqrt(i),d[Y]=w*E*a[Y],d[Y+1]=b*E*a[Y])}}function WT(m,a,d="x"){const g=u0(d),w=m.length;let b,E,i,O=Hh(m,0);for(let j=0;j<w;++j){if(E=i,i=O,O=Hh(m,j+1),!i)continue;const Y=i[d],J=i[g];E&&(b=(Y-E[d])/3,i[`cp1${d}`]=Y-b,i[`cp1${g}`]=J-b*a[j]),O&&(b=(O[d]-Y)/3,i[`cp2${d}`]=Y+b,i[`cp2${g}`]=J+b*a[j])}}function $T(m,a="x"){const d=u0(a),g=m.length,w=Array(g).fill(0),b=Array(g);let E,i,O,j=Hh(m,0);for(E=0;E<g;++E)if(i=O,O=j,j=Hh(m,E+1),!!O){if(j){const Y=j[a]-O[a];w[E]=Y!==0?(j[d]-O[d])/Y:0}b[E]=i?j?Ra(w[E-1])!==Ra(w[E])?0:(w[E-1]+w[E])/2:w[E-1]:w[E]}qT(m,w,b),WT(m,b,a)}function op(m,a,d){return Math.max(Math.min(m,d),a)}function XT(m,a){let d,g,w,b,E,i=ml(m[0],a);for(d=0,g=m.length;d<g;++d)E=b,b=i,i=d<g-1&&ml(m[d+1],a),b&&(w=m[d],E&&(w.cp1x=op(w.cp1x,a.left,a.right),w.cp1y=op(w.cp1y,a.top,a.bottom)),i&&(w.cp2x=op(w.cp2x,a.left,a.right),w.cp2y=op(w.cp2y,a.top,a.bottom)))}function YT(m,a,d,g,w){let b,E,i,O;if(a.spanGaps&&(m=m.filter(j=>!j.skip)),a.cubicInterpolationMode==="monotone")$T(m,w);else{let j=g?m[m.length-1]:m[0];for(b=0,E=m.length;b<E;++b)i=m[b],O=HT(j,i,m[Math.min(b+1,E-(g?0:1))%E],a.tension),i.cp1x=O.previous.x,i.cp1y=O.previous.y,i.cp2x=O.next.x,i.cp2y=O.next.y,j=i}a.capBezierPoints&&XT(m,d)}function v_(){return typeof window<"u"&&typeof document<"u"}function b_(m){let a=m.parentNode;return a&&a.toString()==="[object ShadowRoot]"&&(a=a.host),a}function ap(m,a,d){let g;return typeof m=="string"?(g=parseInt(m,10),m.indexOf("%")!==-1&&(g=g/100*a.parentNode[d])):g=m,g}const lp=m=>m.ownerDocument.defaultView.getComputedStyle(m,null);function KT(m,a){return lp(m).getPropertyValue(a)}const JT=["top","right","bottom","left"];function Hc(m,a,d){const g={};d=d?"-"+d:"";for(let w=0;w<4;w++){const b=JT[w];g[b]=parseFloat(m[a+"-"+b+d])||0}return g.width=g.left+g.right,g.height=g.top+g.bottom,g}const QT=(m,a,d)=>(m>0||a>0)&&(!d||!d.shadowRoot);function e2(m,a){const d=m.touches,g=d&&d.length?d[0]:m,{offsetX:w,offsetY:b}=g;let E=!1,i,O;if(QT(w,b,m.target))i=w,O=b;else{const j=a.getBoundingClientRect();i=g.clientX-j.left,O=g.clientY-j.top,E=!0}return{x:i,y:O,box:E}}function qc(m,a){if("native"in m)return m;const{canvas:d,currentDevicePixelRatio:g}=a,w=lp(d),b=w.boxSizing==="border-box",E=Hc(w,"padding"),i=Hc(w,"border","width"),{x:O,y:j,box:Y}=e2(m,d),J=E.left+(Y&&i.left),ae=E.top+(Y&&i.top);let{width:ce,height:Te}=a;return b&&(ce-=E.width+i.width,Te-=E.height+i.height),{x:Math.round((O-J)/ce*d.width/g),y:Math.round((j-ae)/Te*d.height/g)}}function t2(m,a,d){let g,w;if(a===void 0||d===void 0){const b=m&&b_(m);if(!b)a=m.clientWidth,d=m.clientHeight;else{const E=b.getBoundingClientRect(),i=lp(b),O=Hc(i,"border","width"),j=Hc(i,"padding");a=E.width-j.width-O.width,d=E.height-j.height-O.height,g=ap(i.maxWidth,b,"clientWidth"),w=ap(i.maxHeight,b,"clientHeight")}}return{width:a,height:d,maxWidth:g||ep,maxHeight:w||ep}}const cp=m=>Math.round(m*10)/10;function i2(m,a,d,g){const w=lp(m),b=Hc(w,"margin"),E=ap(w.maxWidth,m,"clientWidth")||ep,i=ap(w.maxHeight,m,"clientHeight")||ep,O=t2(m,a,d);let{width:j,height:Y}=O;if(w.boxSizing==="content-box"){const ae=Hc(w,"border","width"),ce=Hc(w,"padding");j-=ce.width+ae.width,Y-=ce.height+ae.height}return j=Math.max(0,j-b.width),Y=Math.max(0,g?j/g:Y-b.height),j=cp(Math.min(j,E,O.maxWidth)),Y=cp(Math.min(Y,i,O.maxHeight)),j&&!Y&&(Y=cp(j/2)),(a!==void 0||d!==void 0)&&g&&O.height&&Y>O.height&&(Y=O.height,j=cp(Math.floor(Y*g))),{width:j,height:Y}}function d0(m,a,d){const g=a||1,w=Math.floor(m.height*g),b=Math.floor(m.width*g);m.height=Math.floor(m.height),m.width=Math.floor(m.width);const E=m.canvas;return E.style&&(d||!E.style.height&&!E.style.width)&&(E.style.height=`${m.height}px`,E.style.width=`${m.width}px`),m.currentDevicePixelRatio!==g||E.height!==w||E.width!==b?(m.currentDevicePixelRatio=g,E.height=w,E.width=b,m.ctx.setTransform(g,0,0,g,0,0),!0):!1}const n2=function(){let m=!1;try{const a={get passive(){return m=!0,!1}};v_()&&(window.addEventListener("test",null,a),window.removeEventListener("test",null,a))}catch{}return m}();function f0(m,a){const d=KT(m,a),g=d&&d.match(/^(\d+)(\.\d+)?px$/);return g?+g[1]:void 0}function Wc(m,a,d,g){return{x:m.x+d*(a.x-m.x),y:m.y+d*(a.y-m.y)}}function s2(m,a,d,g){return{x:m.x+d*(a.x-m.x),y:g==="middle"?d<.5?m.y:a.y:g==="after"?d<1?m.y:a.y:d>0?a.y:m.y}}function r2(m,a,d,g){const w={x:m.cp2x,y:m.cp2y},b={x:a.cp1x,y:a.cp1y},E=Wc(m,w,d),i=Wc(w,b,d),O=Wc(b,a,d),j=Wc(E,i,d),Y=Wc(i,O,d);return Wc(j,Y,d)}const o2=function(m,a){return{x(d){return m+m+a-d},setWidth(d){a=d},textAlign(d){return d==="center"?d:d==="right"?"left":"right"},xPlus(d,g){return d-g},leftForLtr(d,g){return d-g}}},a2=function(){return{x(m){return m},setWidth(m){},textAlign(m){return m},xPlus(m,a){return m+a},leftForLtr(m,a){return m}}};function qh(m,a,d){return m?o2(a,d):a2()}function p0(m,a){let d,g;(a==="ltr"||a==="rtl")&&(d=m.canvas.style,g=[d.getPropertyValue("direction"),d.getPropertyPriority("direction")],d.setProperty("direction",a,"important"),m.prevTextDirection=g)}function m0(m,a){a!==void 0&&(delete m.prevTextDirection,m.canvas.style.setProperty("direction",a[0],a[1]))}function _0(m){return m==="angle"?{between:cd,compare:lT,normalize:xo}:{between:fl,compare:(a,d)=>a-d,normalize:a=>a}}function g0({start:m,end:a,count:d,loop:g,style:w}){return{start:m%d,end:a%d,loop:g&&(a-m+1)%d===0,style:w}}function l2(m,a,d){const{property:g,start:w,end:b}=d,{between:E,normalize:i}=_0(g),O=a.length;let{start:j,end:Y,loop:J}=m,ae,ce;if(J){for(j+=O,Y+=O,ae=0,ce=O;ae<ce&&E(i(a[j%O][g]),w,b);++ae)j--,Y--;j%=O,Y%=O}return Y<j&&(Y+=O),{start:j,end:Y,loop:J,style:m.style}}function y0(m,a,d){if(!d)return[m];const{property:g,start:w,end:b}=d,E=a.length,{compare:i,between:O,normalize:j}=_0(g),{start:Y,end:J,loop:ae,style:ce}=l2(m,a,d),Te=[];let be=!1,Ze=null,je,ot,vt;const ht=()=>O(w,vt,je)&&i(w,vt)!==0,gt=()=>i(b,je)===0||O(b,vt,je),Vt=()=>be||ht(),pt=()=>!be||gt();for(let Gt=Y,ui=Y;Gt<=J;++Gt)ot=a[Gt%E],!ot.skip&&(je=j(ot[g]),je!==vt&&(be=O(je,w,b),Ze===null&&Vt()&&(Ze=i(je,w)===0?Gt:ui),Ze!==null&&pt()&&(Te.push(g0({start:Ze,end:Gt,loop:ae,count:E,style:ce})),Ze=null),ui=Gt,vt=je));return Ze!==null&&Te.push(g0({start:Ze,end:J,loop:ae,count:E,style:ce})),Te}function x0(m,a){const d=[],g=m.segments;for(let w=0;w<g.length;w++){const b=y0(g[w],m.points,a);b.length&&d.push(...b)}return d}function c2(m,a,d,g){let w=0,b=a-1;if(d&&!g)for(;w<a&&!m[w].skip;)w++;for(;w<a&&m[w].skip;)w++;for(w%=a,d&&(b+=w);b>w&&m[b%a].skip;)b--;return b%=a,{start:w,end:b}}function h2(m,a,d,g){const w=m.length,b=[];let E=a,i=m[a],O;for(O=a+1;O<=d;++O){const j=m[O%w];j.skip||j.stop?i.skip||(g=!1,b.push({start:a%w,end:(O-1)%w,loop:g}),a=E=j.stop?O:null):(E=O,i.skip&&(a=O)),i=j}return E!==null&&b.push({start:a%w,end:E%w,loop:g}),b}function u2(m,a){const d=m.points,g=m.options.spanGaps,w=d.length;if(!w)return[];const b=!!m._loop,{start:E,end:i}=c2(d,w,b,g);if(g===!0)return v0(m,[{start:E,end:i,loop:b}],d,a);const O=i<E?i+w:i,j=!!m._fullLoop&&E===0&&i===w-1;return v0(m,h2(d,E,O,j),d,a)}function v0(m,a,d,g){return!g||!g.setContext||!d?a:d2(m,a,d,g)}function d2(m,a,d,g){const w=m._chart.getContext(),b=b0(m.options),{_datasetIndex:E,options:{spanGaps:i}}=m,O=d.length,j=[];let Y=b,J=a[0].start,ae=J;function ce(Te,be,Ze,je){const ot=i?-1:1;if(Te!==be){for(Te+=O;d[Te%O].skip;)Te-=ot;for(;d[be%O].skip;)be+=ot;Te%O!==be%O&&(j.push({start:Te%O,end:be%O,loop:Ze,style:je}),Y=je,J=be%O)}}for(const Te of a){J=i?J:Te.start;let be=d[J%O],Ze;for(ae=J+1;ae<=Te.end;ae++){const je=d[ae%O];Ze=b0(g.setContext(Yl(w,{type:"segment",p0:be,p1:je,p0DataIndex:(ae-1)%O,p1DataIndex:ae%O,datasetIndex:E}))),f2(Ze,Y)&&ce(J,ae-1,Te.loop,Y),be=je,Y=Ze}J<ae-1&&ce(J,ae-1,Te.loop,Y)}return j}function b0(m){return{backgroundColor:m.backgroundColor,borderCapStyle:m.borderCapStyle,borderDash:m.borderDash,borderDashOffset:m.borderDashOffset,borderJoinStyle:m.borderJoinStyle,borderWidth:m.borderWidth,borderColor:m.borderColor}}function f2(m,a){if(!a)return!1;const d=[],g=function(w,b){return u_(b)?(d.includes(b)||d.push(b),d.indexOf(b)):b};return JSON.stringify(m,g)!==JSON.stringify(a,g)}/*!
|
||
* Chart.js v4.4.7
|
||
* https://www.chartjs.org
|
||
* (c) 2024 Chart.js Contributors
|
||
* Released under the MIT License
|
||
*/class p2{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(a,d,g,w){const b=d.listeners[w],E=d.duration;b.forEach(i=>i({chart:a,initial:d.initial,numSteps:E,currentStep:Math.min(g-d.start,E)}))}_refresh(){this._request||(this._running=!0,this._request=qy.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(a=Date.now()){let d=0;this._charts.forEach((g,w)=>{if(!g.running||!g.items.length)return;const b=g.items;let E=b.length-1,i=!1,O;for(;E>=0;--E)O=b[E],O._active?(O._total>g.duration&&(g.duration=O._total),O.tick(a),i=!0):(b[E]=b[b.length-1],b.pop());i&&(w.draw(),this._notify(w,g,a,"progress")),b.length||(g.running=!1,this._notify(w,g,a,"complete"),g.initial=!1),d+=b.length}),this._lastDate=a,d===0&&(this._running=!1)}_getAnims(a){const d=this._charts;let g=d.get(a);return g||(g={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},d.set(a,g)),g}listen(a,d,g){this._getAnims(a).listeners[d].push(g)}add(a,d){!d||!d.length||this._getAnims(a).items.push(...d)}has(a){return this._getAnims(a).items.length>0}start(a){const d=this._charts.get(a);d&&(d.running=!0,d.start=Date.now(),d.duration=d.items.reduce((g,w)=>Math.max(g,w._duration),0),this._refresh())}running(a){if(!this._running)return!1;const d=this._charts.get(a);return!(!d||!d.running||!d.items.length)}stop(a){const d=this._charts.get(a);if(!d||!d.items.length)return;const g=d.items;let w=g.length-1;for(;w>=0;--w)g[w].cancel();d.items=[],this._notify(a,d,Date.now(),"complete")}remove(a){return this._charts.delete(a)}}var _l=new p2;const w0="transparent",m2={boolean(m,a,d){return d>.5?a:m},color(m,a,d){const g=Jy(m||w0),w=g.valid&&Jy(a||w0);return w&&w.valid?w.mix(g,d).hexString():a},number(m,a,d){return m+(a-m)*d}};class _2{constructor(a,d,g,w){const b=d[g];w=pd([a.to,w,b,a.from]);const E=pd([a.from,b,w]);this._active=!0,this._fn=a.fn||m2[a.type||typeof E],this._easing=hd[a.easing]||hd.linear,this._start=Math.floor(Date.now()+(a.delay||0)),this._duration=this._total=Math.floor(a.duration),this._loop=!!a.loop,this._target=d,this._prop=g,this._from=E,this._to=w,this._promises=void 0}active(){return this._active}update(a,d,g){if(this._active){this._notify(!1);const w=this._target[this._prop],b=g-this._start,E=this._duration-b;this._start=g,this._duration=Math.floor(Math.max(E,a.duration)),this._total+=b,this._loop=!!a.loop,this._to=pd([a.to,d,w,a.from]),this._from=pd([a.from,w,d])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(a){const d=a-this._start,g=this._duration,w=this._prop,b=this._from,E=this._loop,i=this._to;let O;if(this._active=b!==i&&(E||d<g),!this._active){this._target[w]=i,this._notify(!0);return}if(d<0){this._target[w]=b;return}O=d/g%2,O=E&&O>1?2-O:O,O=this._easing(Math.min(1,Math.max(0,O))),this._target[w]=this._fn(b,i,O)}wait(){const a=this._promises||(this._promises=[]);return new Promise((d,g)=>{a.push({res:d,rej:g})})}_notify(a){const d=a?"res":"rej",g=this._promises||[];for(let w=0;w<g.length;w++)g[w][d]()}}class T0{constructor(a,d){this._chart=a,this._properties=new Map,this.configure(d)}configure(a){if(!gn(a))return;const d=Object.keys(fs.animation),g=this._properties;Object.getOwnPropertyNames(a).forEach(w=>{const b=a[w];if(!gn(b))return;const E={};for(const i of d)E[i]=b[i];(ns(b.properties)&&b.properties||[w]).forEach(i=>{(i===w||!g.has(i))&&g.set(i,E)})})}_animateOptions(a,d){const g=d.options,w=y2(a,g);if(!w)return[];const b=this._createAnimations(w,g);return g.$shared&&g2(a.options.$animations,g).then(()=>{a.options=g},()=>{}),b}_createAnimations(a,d){const g=this._properties,w=[],b=a.$animations||(a.$animations={}),E=Object.keys(d),i=Date.now();let O;for(O=E.length-1;O>=0;--O){const j=E[O];if(j.charAt(0)==="$")continue;if(j==="options"){w.push(...this._animateOptions(a,d));continue}const Y=d[j];let J=b[j];const ae=g.get(j);if(J)if(ae&&J.active()){J.update(ae,Y,i);continue}else J.cancel();if(!ae||!ae.duration){a[j]=Y;continue}b[j]=J=new _2(ae,a,j,Y),w.push(J)}return w}update(a,d){if(this._properties.size===0){Object.assign(a,d);return}const g=this._createAnimations(a,d);if(g.length)return _l.add(this._chart,g),!0}}function g2(m,a){const d=[],g=Object.keys(a);for(let w=0;w<g.length;w++){const b=m[g[w]];b&&b.active()&&d.push(b.wait())}return Promise.all(d)}function y2(m,a){if(!a)return;let d=m.options;if(!d){m.options=a;return}return d.$shared&&(m.options=d=Object.assign({},d,{$shared:!1,$animations:{}})),d}function M0(m,a){const d=m&&m.options||{},g=d.reverse,w=d.min===void 0?a:0,b=d.max===void 0?a:0;return{start:g?b:w,end:g?w:b}}function x2(m,a,d){if(d===!1)return!1;const g=M0(m,d),w=M0(a,d);return{top:w.end,right:g.end,bottom:w.start,left:g.start}}function v2(m){let a,d,g,w;return gn(m)?(a=m.top,d=m.right,g=m.bottom,w=m.left):a=d=g=w=m,{top:a,right:d,bottom:g,left:w,disabled:m===!1}}function S0(m,a){const d=[],g=m._getSortedDatasetMetas(a);let w,b;for(w=0,b=g.length;w<b;++w)d.push(g[w].index);return d}function E0(m,a,d,g={}){const w=m.keys,b=g.mode==="single";let E,i,O,j;if(a===null)return;let Y=!1;for(E=0,i=w.length;E<i;++E){if(O=+w[E],O===d){if(Y=!0,g.all)continue;break}j=m.values[O],Ss(j)&&(b||a===0||Ra(a)===Ra(j))&&(a+=j)}return!Y&&!g.all?0:a}function b2(m,a){const{iScale:d,vScale:g}=a,w=d.axis==="x"?"x":"y",b=g.axis==="x"?"x":"y",E=Object.keys(m),i=new Array(E.length);let O,j,Y;for(O=0,j=E.length;O<j;++O)Y=E[O],i[O]={[w]:Y,[b]:m[Y]};return i}function w_(m,a){const d=m&&m.options.stacked;return d||d===void 0&&a.stack!==void 0}function w2(m,a,d){return`${m.id}.${a.id}.${d.stack||d.type}`}function T2(m){const{min:a,max:d,minDefined:g,maxDefined:w}=m.getUserBounds();return{min:g?a:Number.NEGATIVE_INFINITY,max:w?d:Number.POSITIVE_INFINITY}}function M2(m,a,d){const g=m[a]||(m[a]={});return g[d]||(g[d]={})}function P0(m,a,d,g){for(const w of a.getMatchingVisibleMetas(g).reverse()){const b=m[w.index];if(d&&b>0||!d&&b<0)return w.index}return null}function A0(m,a){const{chart:d,_cachedMeta:g}=m,w=d._stacks||(d._stacks={}),{iScale:b,vScale:E,index:i}=g,O=b.axis,j=E.axis,Y=w2(b,E,g),J=a.length;let ae;for(let ce=0;ce<J;++ce){const Te=a[ce],{[O]:be,[j]:Ze}=Te,je=Te._stacks||(Te._stacks={});ae=je[j]=M2(w,Y,be),ae[i]=Ze,ae._top=P0(ae,E,!0,g.type),ae._bottom=P0(ae,E,!1,g.type);const ot=ae._visualValues||(ae._visualValues={});ot[i]=Ze}}function T_(m,a){const d=m.scales;return Object.keys(d).filter(g=>d[g].axis===a).shift()}function S2(m,a){return Yl(m,{active:!1,dataset:void 0,datasetIndex:a,index:a,mode:"default",type:"dataset"})}function E2(m,a,d){return Yl(m,{active:!1,dataIndex:a,parsed:void 0,raw:void 0,element:d,index:a,mode:"default",type:"data"})}function md(m,a){const d=m.controller.index,g=m.vScale&&m.vScale.axis;if(g){a=a||m._parsed;for(const w of a){const b=w._stacks;if(!b||b[g]===void 0||b[g][d]===void 0)return;delete b[g][d],b[g]._visualValues!==void 0&&b[g]._visualValues[d]!==void 0&&delete b[g]._visualValues[d]}}}const M_=m=>m==="reset"||m==="none",C0=(m,a)=>a?m:Object.assign({},m),P2=(m,a,d)=>m&&!a.hidden&&a._stacked&&{keys:S0(d,!0),values:null};class la{constructor(a,d){this.chart=a,this._ctx=a.ctx,this.index=d,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const a=this._cachedMeta;this.configure(),this.linkScales(),a._stacked=w_(a.vScale,a),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(a){this.index!==a&&md(this._cachedMeta),this.index=a}linkScales(){const a=this.chart,d=this._cachedMeta,g=this.getDataset(),w=(J,ae,ce,Te)=>J==="x"?ae:J==="r"?Te:ce,b=d.xAxisID=Ji(g.xAxisID,T_(a,"x")),E=d.yAxisID=Ji(g.yAxisID,T_(a,"y")),i=d.rAxisID=Ji(g.rAxisID,T_(a,"r")),O=d.indexAxis,j=d.iAxisID=w(O,b,E,i),Y=d.vAxisID=w(O,E,b,i);d.xScale=this.getScaleForId(b),d.yScale=this.getScaleForId(E),d.rScale=this.getScaleForId(i),d.iScale=this.getScaleForId(j),d.vScale=this.getScaleForId(Y)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(a){return this.chart.scales[a]}_getOtherScale(a){const d=this._cachedMeta;return a===d.iScale?d.vScale:d.iScale}reset(){this._update("reset")}_destroy(){const a=this._cachedMeta;this._data&&Zy(this._data,this),a._stacked&&md(a)}_dataCheck(){const a=this.getDataset(),d=a.data||(a.data=[]),g=this._data;if(gn(d)){const w=this._cachedMeta;this._data=b2(d,w)}else if(g!==d){if(g){Zy(g,this);const w=this._cachedMeta;md(w),w._parsed=[]}d&&Object.isExtensible(d)&&dT(d,this),this._syncList=[],this._data=d}}addElements(){const a=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(a.dataset=new this.datasetElementType)}buildOrUpdateElements(a){const d=this._cachedMeta,g=this.getDataset();let w=!1;this._dataCheck();const b=d._stacked;d._stacked=w_(d.vScale,d),d.stack!==g.stack&&(w=!0,md(d),d.stack=g.stack),this._resyncElements(a),(w||b!==d._stacked)&&(A0(this,d._parsed),d._stacked=w_(d.vScale,d))}configure(){const a=this.chart.config,d=a.datasetScopeKeys(this._type),g=a.getOptionScopes(this.getDataset(),d,!0);this.options=a.createResolver(g,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(a,d){const{_cachedMeta:g,_data:w}=this,{iScale:b,_stacked:E}=g,i=b.axis;let O=a===0&&d===w.length?!0:g._sorted,j=a>0&&g._parsed[a-1],Y,J,ae;if(this._parsing===!1)g._parsed=w,g._sorted=!0,ae=w;else{ns(w[a])?ae=this.parseArrayData(g,w,a,d):gn(w[a])?ae=this.parseObjectData(g,w,a,d):ae=this.parsePrimitiveData(g,w,a,d);const ce=()=>J[i]===null||j&&J[i]<j[i];for(Y=0;Y<d;++Y)g._parsed[Y+a]=J=ae[Y],O&&(ce()&&(O=!1),j=J);g._sorted=O}E&&A0(this,ae)}parsePrimitiveData(a,d,g,w){const{iScale:b,vScale:E}=a,i=b.axis,O=E.axis,j=b.getLabels(),Y=b===E,J=new Array(w);let ae,ce,Te;for(ae=0,ce=w;ae<ce;++ae)Te=ae+g,J[ae]={[i]:Y||b.parse(j[Te],Te),[O]:E.parse(d[Te],Te)};return J}parseArrayData(a,d,g,w){const{xScale:b,yScale:E}=a,i=new Array(w);let O,j,Y,J;for(O=0,j=w;O<j;++O)Y=O+g,J=d[Y],i[O]={x:b.parse(J[0],Y),y:E.parse(J[1],Y)};return i}parseObjectData(a,d,g,w){const{xScale:b,yScale:E}=a,{xAxisKey:i="x",yAxisKey:O="y"}=this._parsing,j=new Array(w);let Y,J,ae,ce;for(Y=0,J=w;Y<J;++Y)ae=Y+g,ce=d[ae],j[Y]={x:b.parse(Wl(ce,i),ae),y:E.parse(Wl(ce,O),ae)};return j}getParsed(a){return this._cachedMeta._parsed[a]}getDataElement(a){return this._cachedMeta.data[a]}applyStack(a,d,g){const w=this.chart,b=this._cachedMeta,E=d[a.axis],i={keys:S0(w,!0),values:d._stacks[a.axis]._visualValues};return E0(i,E,b.index,{mode:g})}updateRangeFromParsed(a,d,g,w){const b=g[d.axis];let E=b===null?NaN:b;const i=w&&g._stacks[d.axis];w&&i&&(w.values=i,E=E0(w,b,this._cachedMeta.index)),a.min=Math.min(a.min,E),a.max=Math.max(a.max,E)}getMinMax(a,d){const g=this._cachedMeta,w=g._parsed,b=g._sorted&&a===g.iScale,E=w.length,i=this._getOtherScale(a),O=P2(d,g,this.chart),j={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:Y,max:J}=T2(i);let ae,ce;function Te(){ce=w[ae];const be=ce[i.axis];return!Ss(ce[a.axis])||Y>be||J<be}for(ae=0;ae<E&&!(!Te()&&(this.updateRangeFromParsed(j,a,ce,O),b));++ae);if(b){for(ae=E-1;ae>=0;--ae)if(!Te()){this.updateRangeFromParsed(j,a,ce,O);break}}return j}getAllParsedValues(a){const d=this._cachedMeta._parsed,g=[];let w,b,E;for(w=0,b=d.length;w<b;++w)E=d[w][a.axis],Ss(E)&&g.push(E);return g}getMaxOverflow(){return!1}getLabelAndValue(a){const d=this._cachedMeta,g=d.iScale,w=d.vScale,b=this.getParsed(a);return{label:g?""+g.getLabelForValue(b[g.axis]):"",value:w?""+w.getLabelForValue(b[w.axis]):""}}_update(a){const d=this._cachedMeta;this.update(a||"default"),d._clip=v2(Ji(this.options.clip,x2(d.xScale,d.yScale,this.getMaxOverflow())))}update(a){}draw(){const a=this._ctx,d=this.chart,g=this._cachedMeta,w=g.data||[],b=d.chartArea,E=[],i=this._drawStart||0,O=this._drawCount||w.length-i,j=this.options.drawActiveElementsOnTop;let Y;for(g.dataset&&g.dataset.draw(a,b,i,O),Y=i;Y<i+O;++Y){const J=w[Y];J.hidden||(J.active&&j?E.push(J):J.draw(a,b))}for(Y=0;Y<E.length;++Y)E[Y].draw(a,b)}getStyle(a,d){const g=d?"active":"default";return a===void 0&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(g):this.resolveDataElementOptions(a||0,g)}getContext(a,d,g){const w=this.getDataset();let b;if(a>=0&&a<this._cachedMeta.data.length){const E=this._cachedMeta.data[a];b=E.$context||(E.$context=E2(this.getContext(),a,E)),b.parsed=this.getParsed(a),b.raw=w.data[a],b.index=b.dataIndex=a}else b=this.$context||(this.$context=S2(this.chart.getContext(),this.index)),b.dataset=w,b.index=b.datasetIndex=this.index;return b.active=!!d,b.mode=g,b}resolveDatasetElementOptions(a){return this._resolveElementOptions(this.datasetElementType.id,a)}resolveDataElementOptions(a,d){return this._resolveElementOptions(this.dataElementType.id,d,a)}_resolveElementOptions(a,d="default",g){const w=d==="active",b=this._cachedDataOpts,E=a+"-"+d,i=b[E],O=this.enableOptionSharing&&ad(g);if(i)return C0(i,O);const j=this.chart.config,Y=j.datasetElementScopeKeys(this._type,a),J=w?[`${a}Hover`,"hover",a,""]:[a,""],ae=j.getOptionScopes(this.getDataset(),Y),ce=Object.keys(fs.elements[a]),Te=()=>this.getContext(g,w,d),be=j.resolveNamedOptions(ae,ce,Te,J);return be.$shared&&(be.$shared=O,b[E]=Object.freeze(C0(be,O))),be}_resolveAnimations(a,d,g){const w=this.chart,b=this._cachedDataOpts,E=`animation-${d}`,i=b[E];if(i)return i;let O;if(w.options.animation!==!1){const Y=this.chart.config,J=Y.datasetAnimationScopeKeys(this._type,d),ae=Y.getOptionScopes(this.getDataset(),J);O=Y.createResolver(ae,this.getContext(a,g,d))}const j=new T0(w,O&&O.animations);return O&&O._cacheable&&(b[E]=Object.freeze(j)),j}getSharedOptions(a){if(a.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},a))}includeOptions(a,d){return!d||M_(a)||this.chart._animationsDisabled}_getSharedOptions(a,d){const g=this.resolveDataElementOptions(a,d),w=this._sharedOptions,b=this.getSharedOptions(g),E=this.includeOptions(d,b)||b!==w;return this.updateSharedOptions(b,d,g),{sharedOptions:b,includeOptions:E}}updateElement(a,d,g,w){M_(w)?Object.assign(a,g):this._resolveAnimations(d,w).update(a,g)}updateSharedOptions(a,d,g){a&&!M_(d)&&this._resolveAnimations(void 0,d).update(a,g)}_setStyle(a,d,g,w){a.active=w;const b=this.getStyle(d,w);this._resolveAnimations(d,g,w).update(a,{options:!w&&this.getSharedOptions(b)||b})}removeHoverStyle(a,d,g){this._setStyle(a,g,"active",!1)}setHoverStyle(a,d,g){this._setStyle(a,g,"active",!0)}_removeDatasetHoverStyle(){const a=this._cachedMeta.dataset;a&&this._setStyle(a,void 0,"active",!1)}_setDatasetHoverStyle(){const a=this._cachedMeta.dataset;a&&this._setStyle(a,void 0,"active",!0)}_resyncElements(a){const d=this._data,g=this._cachedMeta.data;for(const[i,O,j]of this._syncList)this[i](O,j);this._syncList=[];const w=g.length,b=d.length,E=Math.min(b,w);E&&this.parse(0,E),b>w?this._insertElements(w,b-w,a):b<w&&this._removeElements(b,w-b)}_insertElements(a,d,g=!0){const w=this._cachedMeta,b=w.data,E=a+d;let i;const O=j=>{for(j.length+=d,i=j.length-1;i>=E;i--)j[i]=j[i-d]};for(O(b),i=a;i<E;++i)b[i]=new this.dataElementType;this._parsing&&O(w._parsed),this.parse(a,d),g&&this.updateElements(b,a,d,"reset")}updateElements(a,d,g,w){}_removeElements(a,d){const g=this._cachedMeta;if(this._parsing){const w=g._parsed.splice(a,d);g._stacked&&md(g,w)}g.data.splice(a,d)}_sync(a){if(this._parsing)this._syncList.push(a);else{const[d,g,w]=a;this[d](g,w)}this.chart._dataChanges.push([this.index,...a])}_onDataPush(){const a=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-a,a])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(a,d){d&&this._sync(["_removeElements",a,d]);const g=arguments.length-2;g&&this._sync(["_insertElements",a,g])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}Yt(la,"defaults",{}),Yt(la,"datasetElementType",null),Yt(la,"dataElementType",null);function A2(m,a){if(!m._cache.$bar){const d=m.getMatchingVisibleMetas(a);let g=[];for(let w=0,b=d.length;w<b;w++)g=g.concat(d[w].controller.getAllParsedValues(m));m._cache.$bar=Hy(g.sort((w,b)=>w-b))}return m._cache.$bar}function C2(m){const a=m.iScale,d=A2(a,m.type);let g=a._length,w,b,E,i;const O=()=>{E===32767||E===-32768||(ad(i)&&(g=Math.min(g,Math.abs(E-i)||g)),i=E)};for(w=0,b=d.length;w<b;++w)E=a.getPixelForValue(d[w]),O();for(i=void 0,w=0,b=a.ticks.length;w<b;++w)E=a.getPixelForTick(w),O();return g}function I2(m,a,d,g){const w=d.barThickness;let b,E;return Sn(w)?(b=a.min*d.categoryPercentage,E=d.barPercentage):(b=w*g,E=1),{chunk:b/g,ratio:E,start:a.pixels[m]-b/2}}function L2(m,a,d,g){const w=a.pixels,b=w[m];let E=m>0?w[m-1]:null,i=m<w.length-1?w[m+1]:null;const O=d.categoryPercentage;E===null&&(E=b-(i===null?a.end-a.start:i-b)),i===null&&(i=b+b-E);const j=b-(b-Math.min(E,i))/2*O;return{chunk:Math.abs(i-E)/2*O/g,ratio:d.barPercentage,start:j}}function z2(m,a,d,g){const w=d.parse(m[0],g),b=d.parse(m[1],g),E=Math.min(w,b),i=Math.max(w,b);let O=E,j=i;Math.abs(E)>Math.abs(i)&&(O=i,j=E),a[d.axis]=j,a._custom={barStart:O,barEnd:j,start:w,end:b,min:E,max:i}}function I0(m,a,d,g){return ns(m)?z2(m,a,d,g):a[d.axis]=d.parse(m,g),a}function L0(m,a,d,g){const w=m.iScale,b=m.vScale,E=w.getLabels(),i=w===b,O=[];let j,Y,J,ae;for(j=d,Y=d+g;j<Y;++j)ae=a[j],J={},J[w.axis]=i||w.parse(E[j],j),O.push(I0(ae,J,b,j));return O}function S_(m){return m&&m.barStart!==void 0&&m.barEnd!==void 0}function D2(m,a,d){return m!==0?Ra(m):(a.isHorizontal()?1:-1)*(a.min>=d?1:-1)}function k2(m){let a,d,g,w,b;return m.horizontal?(a=m.base>m.x,d="left",g="right"):(a=m.base<m.y,d="bottom",g="top"),a?(w="end",b="start"):(w="start",b="end"),{start:d,end:g,reverse:a,top:w,bottom:b}}function R2(m,a,d,g){let w=a.borderSkipped;const b={};if(!w){m.borderSkipped=b;return}if(w===!0){m.borderSkipped={top:!0,right:!0,bottom:!0,left:!0};return}const{start:E,end:i,reverse:O,top:j,bottom:Y}=k2(m);w==="middle"&&d&&(m.enableBorderRadius=!0,(d._top||0)===g?w=j:(d._bottom||0)===g?w=Y:(b[z0(Y,E,i,O)]=!0,w=j)),b[z0(w,E,i,O)]=!0,m.borderSkipped=b}function z0(m,a,d,g){return g?(m=O2(m,a,d),m=D0(m,d,a)):m=D0(m,a,d),m}function O2(m,a,d){return m===a?d:m===d?a:m}function D0(m,a,d){return m==="start"?a:m==="end"?d:m}function F2(m,{inflateAmount:a},d){m.inflateAmount=a==="auto"?d===1?.33:0:a}class hp extends la{parsePrimitiveData(a,d,g,w){return L0(a,d,g,w)}parseArrayData(a,d,g,w){return L0(a,d,g,w)}parseObjectData(a,d,g,w){const{iScale:b,vScale:E}=a,{xAxisKey:i="x",yAxisKey:O="y"}=this._parsing,j=b.axis==="x"?i:O,Y=E.axis==="x"?i:O,J=[];let ae,ce,Te,be;for(ae=g,ce=g+w;ae<ce;++ae)be=d[ae],Te={},Te[b.axis]=b.parse(Wl(be,j),ae),J.push(I0(Wl(be,Y),Te,E,ae));return J}updateRangeFromParsed(a,d,g,w){super.updateRangeFromParsed(a,d,g,w);const b=g._custom;b&&d===this._cachedMeta.vScale&&(a.min=Math.min(a.min,b.min),a.max=Math.max(a.max,b.max))}getMaxOverflow(){return 0}getLabelAndValue(a){const d=this._cachedMeta,{iScale:g,vScale:w}=d,b=this.getParsed(a),E=b._custom,i=S_(E)?"["+E.start+", "+E.end+"]":""+w.getLabelForValue(b[w.axis]);return{label:""+g.getLabelForValue(b[g.axis]),value:i}}initialize(){this.enableOptionSharing=!0,super.initialize();const a=this._cachedMeta;a.stack=this.getDataset().stack}update(a){const d=this._cachedMeta;this.updateElements(d.data,0,d.data.length,a)}updateElements(a,d,g,w){const b=w==="reset",{index:E,_cachedMeta:{vScale:i}}=this,O=i.getBasePixel(),j=i.isHorizontal(),Y=this._getRuler(),{sharedOptions:J,includeOptions:ae}=this._getSharedOptions(d,w);for(let ce=d;ce<d+g;ce++){const Te=this.getParsed(ce),be=b||Sn(Te[i.axis])?{base:O,head:O}:this._calculateBarValuePixels(ce),Ze=this._calculateBarIndexPixels(ce,Y),je=(Te._stacks||{})[i.axis],ot={horizontal:j,base:be.base,enableBorderRadius:!je||S_(Te._custom)||E===je._top||E===je._bottom,x:j?be.head:Ze.center,y:j?Ze.center:be.head,height:j?Ze.size:Math.abs(be.size),width:j?Math.abs(be.size):Ze.size};ae&&(ot.options=J||this.resolveDataElementOptions(ce,a[ce].active?"active":w));const vt=ot.options||a[ce].options;R2(ot,vt,je,E),F2(ot,vt,Y.ratio),this.updateElement(a[ce],ce,ot,w)}}_getStacks(a,d){const{iScale:g}=this._cachedMeta,w=g.getMatchingVisibleMetas(this._type).filter(Y=>Y.controller.options.grouped),b=g.options.stacked,E=[],i=this._cachedMeta.controller.getParsed(d),O=i&&i[g.axis],j=Y=>{const J=Y._parsed.find(ce=>ce[g.axis]===O),ae=J&&J[Y.vScale.axis];if(Sn(ae)||isNaN(ae))return!0};for(const Y of w)if(!(d!==void 0&&j(Y))&&((b===!1||E.indexOf(Y.stack)===-1||b===void 0&&Y.stack===void 0)&&E.push(Y.stack),Y.index===a))break;return E.length||E.push(void 0),E}_getStackCount(a){return this._getStacks(void 0,a).length}_getStackIndex(a,d,g){const w=this._getStacks(a,g),b=d!==void 0?w.indexOf(d):-1;return b===-1?w.length-1:b}_getRuler(){const a=this.options,d=this._cachedMeta,g=d.iScale,w=[];let b,E;for(b=0,E=d.data.length;b<E;++b)w.push(g.getPixelForValue(this.getParsed(b)[g.axis],b));const i=a.barThickness;return{min:i||C2(d),pixels:w,start:g._startPixel,end:g._endPixel,stackCount:this._getStackCount(),scale:g,grouped:a.grouped,ratio:i?1:a.categoryPercentage*a.barPercentage}}_calculateBarValuePixels(a){const{_cachedMeta:{vScale:d,_stacked:g,index:w},options:{base:b,minBarLength:E}}=this,i=b||0,O=this.getParsed(a),j=O._custom,Y=S_(j);let J=O[d.axis],ae=0,ce=g?this.applyStack(d,O,g):J,Te,be;ce!==J&&(ae=ce-J,ce=J),Y&&(J=j.barStart,ce=j.barEnd-j.barStart,J!==0&&Ra(J)!==Ra(j.barEnd)&&(ae=0),ae+=J);const Ze=!Sn(b)&&!Y?b:ae;let je=d.getPixelForValue(Ze);if(this.chart.getDataVisibility(a)?Te=d.getPixelForValue(ae+ce):Te=je,be=Te-je,Math.abs(be)<E){be=D2(be,d,i)*E,J===i&&(je-=be/2);const ot=d.getPixelForDecimal(0),vt=d.getPixelForDecimal(1),ht=Math.min(ot,vt),gt=Math.max(ot,vt);je=Math.max(Math.min(je,gt),ht),Te=je+be,g&&!Y&&(O._stacks[d.axis]._visualValues[w]=d.getValueForPixel(Te)-d.getValueForPixel(je))}if(je===d.getPixelForValue(i)){const ot=Ra(be)*d.getLineWidthForValue(i)/2;je+=ot,be-=ot}return{size:be,base:je,head:Te,center:Te+be/2}}_calculateBarIndexPixels(a,d){const g=d.scale,w=this.options,b=w.skipNull,E=Ji(w.maxBarThickness,1/0);let i,O;if(d.grouped){const j=b?this._getStackCount(a):d.stackCount,Y=w.barThickness==="flex"?L2(a,d,w,j):I2(a,d,w,j),J=this._getStackIndex(this.index,this._cachedMeta.stack,b?a:void 0);i=Y.start+Y.chunk*J+Y.chunk/2,O=Math.min(E,Y.chunk*Y.ratio)}else i=g.getPixelForValue(this.getParsed(a)[g.axis],a),O=Math.min(E,d.min*d.ratio);return{base:i-O/2,head:i+O/2,center:i,size:O}}draw(){const a=this._cachedMeta,d=a.vScale,g=a.data,w=g.length;let b=0;for(;b<w;++b)this.getParsed(b)[d.axis]!==null&&!g[b].hidden&&g[b].draw(this._ctx)}}Yt(hp,"id","bar"),Yt(hp,"defaults",{datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}}),Yt(hp,"overrides",{scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}});class up extends la{initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(a,d,g,w){const b=super.parsePrimitiveData(a,d,g,w);for(let E=0;E<b.length;E++)b[E]._custom=this.resolveDataElementOptions(E+g).radius;return b}parseArrayData(a,d,g,w){const b=super.parseArrayData(a,d,g,w);for(let E=0;E<b.length;E++){const i=d[g+E];b[E]._custom=Ji(i[2],this.resolveDataElementOptions(E+g).radius)}return b}parseObjectData(a,d,g,w){const b=super.parseObjectData(a,d,g,w);for(let E=0;E<b.length;E++){const i=d[g+E];b[E]._custom=Ji(i&&i.r&&+i.r,this.resolveDataElementOptions(E+g).radius)}return b}getMaxOverflow(){const a=this._cachedMeta.data;let d=0;for(let g=a.length-1;g>=0;--g)d=Math.max(d,a[g].size(this.resolveDataElementOptions(g))/2);return d>0&&d}getLabelAndValue(a){const d=this._cachedMeta,g=this.chart.data.labels||[],{xScale:w,yScale:b}=d,E=this.getParsed(a),i=w.getLabelForValue(E.x),O=b.getLabelForValue(E.y),j=E._custom;return{label:g[a]||"",value:"("+i+", "+O+(j?", "+j:"")+")"}}update(a){const d=this._cachedMeta.data;this.updateElements(d,0,d.length,a)}updateElements(a,d,g,w){const b=w==="reset",{iScale:E,vScale:i}=this._cachedMeta,{sharedOptions:O,includeOptions:j}=this._getSharedOptions(d,w),Y=E.axis,J=i.axis;for(let ae=d;ae<d+g;ae++){const ce=a[ae],Te=!b&&this.getParsed(ae),be={},Ze=be[Y]=b?E.getPixelForDecimal(.5):E.getPixelForValue(Te[Y]),je=be[J]=b?i.getBasePixel():i.getPixelForValue(Te[J]);be.skip=isNaN(Ze)||isNaN(je),j&&(be.options=O||this.resolveDataElementOptions(ae,ce.active?"active":w),b&&(be.options.radius=0)),this.updateElement(ce,ae,be,w)}}resolveDataElementOptions(a,d){const g=this.getParsed(a);let w=super.resolveDataElementOptions(a,d);w.$shared&&(w=Object.assign({},w,{$shared:!1}));const b=w.radius;return d!=="active"&&(w.radius=0),w.radius+=Ji(g&&g._custom,b),w}}Yt(up,"id","bubble"),Yt(up,"defaults",{datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}}),Yt(up,"overrides",{scales:{x:{type:"linear"},y:{type:"linear"}}});function B2(m,a,d){let g=1,w=1,b=0,E=0;if(a<rs){const i=m,O=i+a,j=Math.cos(i),Y=Math.sin(i),J=Math.cos(O),ae=Math.sin(O),ce=(vt,ht,gt)=>cd(vt,i,O,!0)?1:Math.max(ht,ht*d,gt,gt*d),Te=(vt,ht,gt)=>cd(vt,i,O,!0)?-1:Math.min(ht,ht*d,gt,gt*d),be=ce(0,j,J),Ze=ce(Cs,Y,ae),je=Te(ss,j,J),ot=Te(ss+Cs,Y,ae);g=(be-je)/2,w=(Ze-ot)/2,b=-(be+je)/2,E=-(Ze+ot)/2}return{ratioX:g,ratioY:w,offsetX:b,offsetY:E}}class $c extends la{constructor(a,d){super(a,d),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(a,d){const g=this.getDataset().data,w=this._cachedMeta;if(this._parsing===!1)w._parsed=g;else{let b=O=>+g[O];if(gn(g[a])){const{key:O="value"}=this._parsing;b=j=>+Wl(g[j],O)}let E,i;for(E=a,i=a+d;E<i;++E)w._parsed[E]=b(E)}}_getRotation(){return aa(this.options.rotation-90)}_getCircumference(){return aa(this.options.circumference)}_getRotationExtents(){let a=rs,d=-rs;for(let g=0;g<this.chart.data.datasets.length;++g)if(this.chart.isDatasetVisible(g)&&this.chart.getDatasetMeta(g).type===this._type){const w=this.chart.getDatasetMeta(g).controller,b=w._getRotation(),E=w._getCircumference();a=Math.min(a,b),d=Math.max(d,b+E)}return{rotation:a,circumference:d-a}}update(a){const d=this.chart,{chartArea:g}=d,w=this._cachedMeta,b=w.data,E=this.getMaxBorderWidth()+this.getMaxOffset(b)+this.options.spacing,i=Math.max((Math.min(g.width,g.height)-E)/2,0),O=Math.min(Jw(this.options.cutout,i),1),j=this._getRingWeight(this.index),{circumference:Y,rotation:J}=this._getRotationExtents(),{ratioX:ae,ratioY:ce,offsetX:Te,offsetY:be}=B2(J,Y,O),Ze=(g.width-E)/ae,je=(g.height-E)/ce,ot=Math.max(Math.min(Ze,je)/2,0),vt=ky(this.options.radius,ot),ht=Math.max(vt*O,0),gt=(vt-ht)/this._getVisibleDatasetWeightTotal();this.offsetX=Te*vt,this.offsetY=be*vt,w.total=this.calculateTotal(),this.outerRadius=vt-gt*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-gt*j,0),this.updateElements(b,0,b.length,a)}_circumference(a,d){const g=this.options,w=this._cachedMeta,b=this._getCircumference();return d&&g.animation.animateRotate||!this.chart.getDataVisibility(a)||w._parsed[a]===null||w.data[a].hidden?0:this.calculateCircumference(w._parsed[a]*b/rs)}updateElements(a,d,g,w){const b=w==="reset",E=this.chart,i=E.chartArea,j=E.options.animation,Y=(i.left+i.right)/2,J=(i.top+i.bottom)/2,ae=b&&j.animateScale,ce=ae?0:this.innerRadius,Te=ae?0:this.outerRadius,{sharedOptions:be,includeOptions:Ze}=this._getSharedOptions(d,w);let je=this._getRotation(),ot;for(ot=0;ot<d;++ot)je+=this._circumference(ot,b);for(ot=d;ot<d+g;++ot){const vt=this._circumference(ot,b),ht=a[ot],gt={x:Y+this.offsetX,y:J+this.offsetY,startAngle:je,endAngle:je+vt,circumference:vt,outerRadius:Te,innerRadius:ce};Ze&&(gt.options=be||this.resolveDataElementOptions(ot,ht.active?"active":w)),je+=vt,this.updateElement(ht,ot,gt,w)}}calculateTotal(){const a=this._cachedMeta,d=a.data;let g=0,w;for(w=0;w<d.length;w++){const b=a._parsed[w];b!==null&&!isNaN(b)&&this.chart.getDataVisibility(w)&&!d[w].hidden&&(g+=Math.abs(b))}return g}calculateCircumference(a){const d=this._cachedMeta.total;return d>0&&!isNaN(a)?rs*(Math.abs(a)/d):0}getLabelAndValue(a){const d=this._cachedMeta,g=this.chart,w=g.data.labels||[],b=ud(d._parsed[a],g.options.locale);return{label:w[a]||"",value:b}}getMaxBorderWidth(a){let d=0;const g=this.chart;let w,b,E,i,O;if(!a){for(w=0,b=g.data.datasets.length;w<b;++w)if(g.isDatasetVisible(w)){E=g.getDatasetMeta(w),a=E.data,i=E.controller;break}}if(!a)return 0;for(w=0,b=a.length;w<b;++w)O=i.resolveDataElementOptions(w),O.borderAlign!=="inner"&&(d=Math.max(d,O.borderWidth||0,O.hoverBorderWidth||0));return d}getMaxOffset(a){let d=0;for(let g=0,w=a.length;g<w;++g){const b=this.resolveDataElementOptions(g);d=Math.max(d,b.offset||0,b.hoverOffset||0)}return d}_getRingWeightOffset(a){let d=0;for(let g=0;g<a;++g)this.chart.isDatasetVisible(g)&&(d+=this._getRingWeight(g));return d}_getRingWeight(a){return Math.max(Ji(this.chart.data.datasets[a].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}Yt($c,"id","doughnut"),Yt($c,"defaults",{datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"}),Yt($c,"descriptors",{_scriptable:a=>a!=="spacing",_indexable:a=>a!=="spacing"&&!a.startsWith("borderDash")&&!a.startsWith("hoverBorderDash")}),Yt($c,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(a){const d=a.data;if(d.labels.length&&d.datasets.length){const{labels:{pointStyle:g,color:w}}=a.legend.options;return d.labels.map((b,E)=>{const O=a.getDatasetMeta(0).controller.getStyle(E);return{text:b,fillStyle:O.backgroundColor,strokeStyle:O.borderColor,fontColor:w,lineWidth:O.borderWidth,pointStyle:g,hidden:!a.getDataVisibility(E),index:E}})}return[]}},onClick(a,d,g){g.chart.toggleDataVisibility(d.index),g.chart.update()}}}});class dp extends la{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(a){const d=this._cachedMeta,{dataset:g,data:w=[],_dataset:b}=d,E=this.chart._animationsDisabled;let{start:i,count:O}=$y(d,w,E);this._drawStart=i,this._drawCount=O,Xy(d)&&(i=0,O=w.length),g._chart=this.chart,g._datasetIndex=this.index,g._decimated=!!b._decimated,g.points=w;const j=this.resolveDatasetElementOptions(a);this.options.showLine||(j.borderWidth=0),j.segment=this.options.segment,this.updateElement(g,void 0,{animated:!E,options:j},a),this.updateElements(w,i,O,a)}updateElements(a,d,g,w){const b=w==="reset",{iScale:E,vScale:i,_stacked:O,_dataset:j}=this._cachedMeta,{sharedOptions:Y,includeOptions:J}=this._getSharedOptions(d,w),ae=E.axis,ce=i.axis,{spanGaps:Te,segment:be}=this.options,Ze=Gh(Te)?Te:Number.POSITIVE_INFINITY,je=this.chart._animationsDisabled||b||w==="none",ot=d+g,vt=a.length;let ht=d>0&&this.getParsed(d-1);for(let gt=0;gt<vt;++gt){const Vt=a[gt],pt=je?Vt:{};if(gt<d||gt>=ot){pt.skip=!0;continue}const Gt=this.getParsed(gt),ui=Sn(Gt[ce]),kt=pt[ae]=E.getPixelForValue(Gt[ae],gt),Pt=pt[ce]=b||ui?i.getBasePixel():i.getPixelForValue(O?this.applyStack(i,Gt,O):Gt[ce],gt);pt.skip=isNaN(kt)||isNaN(Pt)||ui,pt.stop=gt>0&&Math.abs(Gt[ae]-ht[ae])>Ze,be&&(pt.parsed=Gt,pt.raw=j.data[gt]),J&&(pt.options=Y||this.resolveDataElementOptions(gt,Vt.active?"active":w)),je||this.updateElement(Vt,gt,pt,w),ht=Gt}}getMaxOverflow(){const a=this._cachedMeta,d=a.dataset,g=d.options&&d.options.borderWidth||0,w=a.data||[];if(!w.length)return g;const b=w[0].size(this.resolveDataElementOptions(0)),E=w[w.length-1].size(this.resolveDataElementOptions(w.length-1));return Math.max(g,b,E)/2}draw(){const a=this._cachedMeta;a.dataset.updateControlPoints(this.chart.chartArea,a.iScale.axis),super.draw()}}Yt(dp,"id","line"),Yt(dp,"defaults",{datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1}),Yt(dp,"overrides",{scales:{_index_:{type:"category"},_value_:{type:"linear"}}});class _d extends la{constructor(a,d){super(a,d),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(a){const d=this._cachedMeta,g=this.chart,w=g.data.labels||[],b=ud(d._parsed[a].r,g.options.locale);return{label:w[a]||"",value:b}}parseObjectData(a,d,g,w){return h0.bind(this)(a,d,g,w)}update(a){const d=this._cachedMeta.data;this._updateRadius(),this.updateElements(d,0,d.length,a)}getMinMax(){const a=this._cachedMeta,d={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return a.data.forEach((g,w)=>{const b=this.getParsed(w).r;!isNaN(b)&&this.chart.getDataVisibility(w)&&(b<d.min&&(d.min=b),b>d.max&&(d.max=b))}),d}_updateRadius(){const a=this.chart,d=a.chartArea,g=a.options,w=Math.min(d.right-d.left,d.bottom-d.top),b=Math.max(w/2,0),E=Math.max(g.cutoutPercentage?b/100*g.cutoutPercentage:1,0),i=(b-E)/a.getVisibleDatasetCount();this.outerRadius=b-i*this.index,this.innerRadius=this.outerRadius-i}updateElements(a,d,g,w){const b=w==="reset",E=this.chart,O=E.options.animation,j=this._cachedMeta.rScale,Y=j.xCenter,J=j.yCenter,ae=j.getIndexAngle(0)-.5*ss;let ce=ae,Te;const be=360/this.countVisibleElements();for(Te=0;Te<d;++Te)ce+=this._computeAngle(Te,w,be);for(Te=d;Te<d+g;Te++){const Ze=a[Te];let je=ce,ot=ce+this._computeAngle(Te,w,be),vt=E.getDataVisibility(Te)?j.getDistanceFromCenterForValue(this.getParsed(Te).r):0;ce=ot,b&&(O.animateScale&&(vt=0),O.animateRotate&&(je=ot=ae));const ht={x:Y,y:J,innerRadius:0,outerRadius:vt,startAngle:je,endAngle:ot,options:this.resolveDataElementOptions(Te,Ze.active?"active":w)};this.updateElement(Ze,Te,ht,w)}}countVisibleElements(){const a=this._cachedMeta;let d=0;return a.data.forEach((g,w)=>{!isNaN(this.getParsed(w).r)&&this.chart.getDataVisibility(w)&&d++}),d}_computeAngle(a,d,g){return this.chart.getDataVisibility(a)?aa(this.resolveDataElementOptions(a,d).angle||g):0}}Yt(_d,"id","polarArea"),Yt(_d,"defaults",{dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0}),Yt(_d,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(a){const d=a.data;if(d.labels.length&&d.datasets.length){const{labels:{pointStyle:g,color:w}}=a.legend.options;return d.labels.map((b,E)=>{const O=a.getDatasetMeta(0).controller.getStyle(E);return{text:b,fillStyle:O.backgroundColor,strokeStyle:O.borderColor,fontColor:w,lineWidth:O.borderWidth,pointStyle:g,hidden:!a.getDataVisibility(E),index:E}})}return[]}},onClick(a,d,g){g.chart.toggleDataVisibility(d.index),g.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}});class E_ extends $c{}Yt(E_,"id","pie"),Yt(E_,"defaults",{cutout:0,rotation:0,circumference:360,radius:"100%"});class fp extends la{getLabelAndValue(a){const d=this._cachedMeta.vScale,g=this.getParsed(a);return{label:d.getLabels()[a],value:""+d.getLabelForValue(g[d.axis])}}parseObjectData(a,d,g,w){return h0.bind(this)(a,d,g,w)}update(a){const d=this._cachedMeta,g=d.dataset,w=d.data||[],b=d.iScale.getLabels();if(g.points=w,a!=="resize"){const E=this.resolveDatasetElementOptions(a);this.options.showLine||(E.borderWidth=0);const i={_loop:!0,_fullLoop:b.length===w.length,options:E};this.updateElement(g,void 0,i,a)}this.updateElements(w,0,w.length,a)}updateElements(a,d,g,w){const b=this._cachedMeta.rScale,E=w==="reset";for(let i=d;i<d+g;i++){const O=a[i],j=this.resolveDataElementOptions(i,O.active?"active":w),Y=b.getPointPositionForValue(i,this.getParsed(i).r),J=E?b.xCenter:Y.x,ae=E?b.yCenter:Y.y,ce={x:J,y:ae,angle:Y.angle,skip:isNaN(J)||isNaN(ae),options:j};this.updateElement(O,i,ce,w)}}}Yt(fp,"id","radar"),Yt(fp,"defaults",{datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}}),Yt(fp,"overrides",{aspectRatio:1,scales:{r:{type:"radialLinear"}}});class pp extends la{getLabelAndValue(a){const d=this._cachedMeta,g=this.chart.data.labels||[],{xScale:w,yScale:b}=d,E=this.getParsed(a),i=w.getLabelForValue(E.x),O=b.getLabelForValue(E.y);return{label:g[a]||"",value:"("+i+", "+O+")"}}update(a){const d=this._cachedMeta,{data:g=[]}=d,w=this.chart._animationsDisabled;let{start:b,count:E}=$y(d,g,w);if(this._drawStart=b,this._drawCount=E,Xy(d)&&(b=0,E=g.length),this.options.showLine){this.datasetElementType||this.addElements();const{dataset:i,_dataset:O}=d;i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!O._decimated,i.points=g;const j=this.resolveDatasetElementOptions(a);j.segment=this.options.segment,this.updateElement(i,void 0,{animated:!w,options:j},a)}else this.datasetElementType&&(delete d.dataset,this.datasetElementType=!1);this.updateElements(g,b,E,a)}addElements(){const{showLine:a}=this.options;!this.datasetElementType&&a&&(this.datasetElementType=this.chart.registry.getElement("line")),super.addElements()}updateElements(a,d,g,w){const b=w==="reset",{iScale:E,vScale:i,_stacked:O,_dataset:j}=this._cachedMeta,Y=this.resolveDataElementOptions(d,w),J=this.getSharedOptions(Y),ae=this.includeOptions(w,J),ce=E.axis,Te=i.axis,{spanGaps:be,segment:Ze}=this.options,je=Gh(be)?be:Number.POSITIVE_INFINITY,ot=this.chart._animationsDisabled||b||w==="none";let vt=d>0&&this.getParsed(d-1);for(let ht=d;ht<d+g;++ht){const gt=a[ht],Vt=this.getParsed(ht),pt=ot?gt:{},Gt=Sn(Vt[Te]),ui=pt[ce]=E.getPixelForValue(Vt[ce],ht),kt=pt[Te]=b||Gt?i.getBasePixel():i.getPixelForValue(O?this.applyStack(i,Vt,O):Vt[Te],ht);pt.skip=isNaN(ui)||isNaN(kt)||Gt,pt.stop=ht>0&&Math.abs(Vt[ce]-vt[ce])>je,Ze&&(pt.parsed=Vt,pt.raw=j.data[ht]),ae&&(pt.options=J||this.resolveDataElementOptions(ht,gt.active?"active":w)),ot||this.updateElement(gt,ht,pt,w),vt=Vt}this.updateSharedOptions(J,w,Y)}getMaxOverflow(){const a=this._cachedMeta,d=a.data||[];if(!this.options.showLine){let i=0;for(let O=d.length-1;O>=0;--O)i=Math.max(i,d[O].size(this.resolveDataElementOptions(O))/2);return i>0&&i}const g=a.dataset,w=g.options&&g.options.borderWidth||0;if(!d.length)return w;const b=d[0].size(this.resolveDataElementOptions(0)),E=d[d.length-1].size(this.resolveDataElementOptions(d.length-1));return Math.max(w,b,E)/2}}Yt(pp,"id","scatter"),Yt(pp,"defaults",{datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1}),Yt(pp,"overrides",{interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}});var N2=Object.freeze({__proto__:null,BarController:hp,BubbleController:up,DoughnutController:$c,LineController:dp,PieController:E_,PolarAreaController:_d,RadarController:fp,ScatterController:pp});function Xc(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class P_{constructor(a){Yt(this,"options");this.options=a||{}}static override(a){Object.assign(P_.prototype,a)}init(){}formats(){return Xc()}parse(){return Xc()}format(){return Xc()}add(){return Xc()}diff(){return Xc()}startOf(){return Xc()}endOf(){return Xc()}}var V2={_date:P_};function U2(m,a,d,g){const{controller:w,data:b,_sorted:E}=m,i=w._cachedMeta.iScale;if(i&&a===i.axis&&a!=="r"&&E&&b.length){const O=i._reversePixels?hT:pl;if(g){if(w._sharedOptions){const j=b[0],Y=typeof j.getRange=="function"&&j.getRange(a);if(Y){const J=O(b,a,d-Y),ae=O(b,a,d+Y);return{lo:J.lo,hi:ae.hi}}}}else return O(b,a,d)}return{lo:0,hi:b.length-1}}function gd(m,a,d,g,w){const b=m.getSortedVisibleDatasetMetas(),E=d[a];for(let i=0,O=b.length;i<O;++i){const{index:j,data:Y}=b[i],{lo:J,hi:ae}=U2(b[i],a,E,w);for(let ce=J;ce<=ae;++ce){const Te=Y[ce];Te.skip||g(Te,j,ce)}}}function j2(m){const a=m.indexOf("x")!==-1,d=m.indexOf("y")!==-1;return function(g,w){const b=a?Math.abs(g.x-w.x):0,E=d?Math.abs(g.y-w.y):0;return Math.sqrt(Math.pow(b,2)+Math.pow(E,2))}}function A_(m,a,d,g,w){const b=[];return!w&&!m.isPointInArea(a)||gd(m,d,a,function(i,O,j){!w&&!ml(i,m.chartArea,0)||i.inRange(a.x,a.y,g)&&b.push({element:i,datasetIndex:O,index:j})},!0),b}function G2(m,a,d,g){let w=[];function b(E,i,O){const{startAngle:j,endAngle:Y}=E.getProps(["startAngle","endAngle"],g),{angle:J}=jy(E,{x:a.x,y:a.y});cd(J,j,Y)&&w.push({element:E,datasetIndex:i,index:O})}return gd(m,d,a,b),w}function Z2(m,a,d,g,w,b){let E=[];const i=j2(d);let O=Number.POSITIVE_INFINITY;function j(Y,J,ae){const ce=Y.inRange(a.x,a.y,w);if(g&&!ce)return;const Te=Y.getCenterPoint(w);if(!(!!b||m.isPointInArea(Te))&&!ce)return;const Ze=i(a,Te);Ze<O?(E=[{element:Y,datasetIndex:J,index:ae}],O=Ze):Ze===O&&E.push({element:Y,datasetIndex:J,index:ae})}return gd(m,d,a,j),E}function C_(m,a,d,g,w,b){return!b&&!m.isPointInArea(a)?[]:d==="r"&&!g?G2(m,a,d,w):Z2(m,a,d,g,w,b)}function k0(m,a,d,g,w){const b=[],E=d==="x"?"inXRange":"inYRange";let i=!1;return gd(m,d,a,(O,j,Y)=>{O[E]&&O[E](a[d],w)&&(b.push({element:O,datasetIndex:j,index:Y}),i=i||O.inRange(a.x,a.y,w))}),g&&!i?[]:b}var H2={evaluateInteractionItems:gd,modes:{index(m,a,d,g){const w=qc(a,m),b=d.axis||"x",E=d.includeInvisible||!1,i=d.intersect?A_(m,w,b,g,E):C_(m,w,b,!1,g,E),O=[];return i.length?(m.getSortedVisibleDatasetMetas().forEach(j=>{const Y=i[0].index,J=j.data[Y];J&&!J.skip&&O.push({element:J,datasetIndex:j.index,index:Y})}),O):[]},dataset(m,a,d,g){const w=qc(a,m),b=d.axis||"xy",E=d.includeInvisible||!1;let i=d.intersect?A_(m,w,b,g,E):C_(m,w,b,!1,g,E);if(i.length>0){const O=i[0].datasetIndex,j=m.getDatasetMeta(O).data;i=[];for(let Y=0;Y<j.length;++Y)i.push({element:j[Y],datasetIndex:O,index:Y})}return i},point(m,a,d,g){const w=qc(a,m),b=d.axis||"xy",E=d.includeInvisible||!1;return A_(m,w,b,g,E)},nearest(m,a,d,g){const w=qc(a,m),b=d.axis||"xy",E=d.includeInvisible||!1;return C_(m,w,b,d.intersect,g,E)},x(m,a,d,g){const w=qc(a,m);return k0(m,w,"x",d.intersect,g)},y(m,a,d,g){const w=qc(a,m);return k0(m,w,"y",d.intersect,g)}}};const R0=["left","top","right","bottom"];function yd(m,a){return m.filter(d=>d.pos===a)}function O0(m,a){return m.filter(d=>R0.indexOf(d.pos)===-1&&d.box.axis===a)}function xd(m,a){return m.sort((d,g)=>{const w=a?g:d,b=a?d:g;return w.weight===b.weight?w.index-b.index:w.weight-b.weight})}function q2(m){const a=[];let d,g,w,b,E,i;for(d=0,g=(m||[]).length;d<g;++d)w=m[d],{position:b,options:{stack:E,stackWeight:i=1}}=w,a.push({index:d,box:w,pos:b,horizontal:w.isHorizontal(),weight:w.weight,stack:E&&b+E,stackWeight:i});return a}function W2(m){const a={};for(const d of m){const{stack:g,pos:w,stackWeight:b}=d;if(!g||!R0.includes(w))continue;const E=a[g]||(a[g]={count:0,placed:0,weight:0,size:0});E.count++,E.weight+=b}return a}function $2(m,a){const d=W2(m),{vBoxMaxWidth:g,hBoxMaxHeight:w}=a;let b,E,i;for(b=0,E=m.length;b<E;++b){i=m[b];const{fullSize:O}=i.box,j=d[i.stack],Y=j&&i.stackWeight/j.weight;i.horizontal?(i.width=Y?Y*g:O&&a.availableWidth,i.height=w):(i.width=g,i.height=Y?Y*w:O&&a.availableHeight)}return d}function X2(m){const a=q2(m),d=xd(a.filter(j=>j.box.fullSize),!0),g=xd(yd(a,"left"),!0),w=xd(yd(a,"right")),b=xd(yd(a,"top"),!0),E=xd(yd(a,"bottom")),i=O0(a,"x"),O=O0(a,"y");return{fullSize:d,leftAndTop:g.concat(b),rightAndBottom:w.concat(O).concat(E).concat(i),chartArea:yd(a,"chartArea"),vertical:g.concat(w).concat(O),horizontal:b.concat(E).concat(i)}}function F0(m,a,d,g){return Math.max(m[d],a[d])+Math.max(m[g],a[g])}function B0(m,a){m.top=Math.max(m.top,a.top),m.left=Math.max(m.left,a.left),m.bottom=Math.max(m.bottom,a.bottom),m.right=Math.max(m.right,a.right)}function Y2(m,a,d,g){const{pos:w,box:b}=d,E=m.maxPadding;if(!gn(w)){d.size&&(m[w]-=d.size);const J=g[d.stack]||{size:0,count:1};J.size=Math.max(J.size,d.horizontal?b.height:b.width),d.size=J.size/J.count,m[w]+=d.size}b.getPadding&&B0(E,b.getPadding());const i=Math.max(0,a.outerWidth-F0(E,m,"left","right")),O=Math.max(0,a.outerHeight-F0(E,m,"top","bottom")),j=i!==m.w,Y=O!==m.h;return m.w=i,m.h=O,d.horizontal?{same:j,other:Y}:{same:Y,other:j}}function K2(m){const a=m.maxPadding;function d(g){const w=Math.max(a[g]-m[g],0);return m[g]+=w,w}m.y+=d("top"),m.x+=d("left"),d("right"),d("bottom")}function J2(m,a){const d=a.maxPadding;function g(w){const b={left:0,top:0,right:0,bottom:0};return w.forEach(E=>{b[E]=Math.max(a[E],d[E])}),b}return g(m?["left","right"]:["top","bottom"])}function vd(m,a,d,g){const w=[];let b,E,i,O,j,Y;for(b=0,E=m.length,j=0;b<E;++b){i=m[b],O=i.box,O.update(i.width||a.w,i.height||a.h,J2(i.horizontal,a));const{same:J,other:ae}=Y2(a,d,i,g);j|=J&&w.length,Y=Y||ae,O.fullSize||w.push(i)}return j&&vd(w,a,d,g)||Y}function mp(m,a,d,g,w){m.top=d,m.left=a,m.right=a+g,m.bottom=d+w,m.width=g,m.height=w}function N0(m,a,d,g){const w=d.padding;let{x:b,y:E}=a;for(const i of m){const O=i.box,j=g[i.stack]||{count:1,placed:0,weight:1},Y=i.stackWeight/j.weight||1;if(i.horizontal){const J=a.w*Y,ae=j.size||O.height;ad(j.start)&&(E=j.start),O.fullSize?mp(O,w.left,E,d.outerWidth-w.right-w.left,ae):mp(O,a.left+j.placed,E,J,ae),j.start=E,j.placed+=J,E=O.bottom}else{const J=a.h*Y,ae=j.size||O.width;ad(j.start)&&(b=j.start),O.fullSize?mp(O,b,w.top,ae,d.outerHeight-w.bottom-w.top):mp(O,b,a.top+j.placed,ae,J),j.start=b,j.placed+=J,b=O.right}}a.x=b,a.y=E}var Er={addBox(m,a){m.boxes||(m.boxes=[]),a.fullSize=a.fullSize||!1,a.position=a.position||"top",a.weight=a.weight||0,a._layers=a._layers||function(){return[{z:0,draw(d){a.draw(d)}}]},m.boxes.push(a)},removeBox(m,a){const d=m.boxes?m.boxes.indexOf(a):-1;d!==-1&&m.boxes.splice(d,1)},configure(m,a,d){a.fullSize=d.fullSize,a.position=d.position,a.weight=d.weight},update(m,a,d,g){if(!m)return;const w=Sr(m.options.layout.padding),b=Math.max(a-w.width,0),E=Math.max(d-w.height,0),i=X2(m.boxes),O=i.vertical,j=i.horizontal;Vn(m.boxes,be=>{typeof be.beforeLayout=="function"&&be.beforeLayout()});const Y=O.reduce((be,Ze)=>Ze.box.options&&Ze.box.options.display===!1?be:be+1,0)||1,J=Object.freeze({outerWidth:a,outerHeight:d,padding:w,availableWidth:b,availableHeight:E,vBoxMaxWidth:b/2/Y,hBoxMaxHeight:E/2}),ae=Object.assign({},w);B0(ae,Sr(g));const ce=Object.assign({maxPadding:ae,w:b,h:E,x:w.left,y:w.top},w),Te=$2(O.concat(j),J);vd(i.fullSize,ce,J,Te),vd(O,ce,J,Te),vd(j,ce,J,Te)&&vd(O,ce,J,Te),K2(ce),N0(i.leftAndTop,ce,J,Te),ce.x+=ce.w,ce.y+=ce.h,N0(i.rightAndBottom,ce,J,Te),m.chartArea={left:ce.left,top:ce.top,right:ce.left+ce.w,bottom:ce.top+ce.h,height:ce.h,width:ce.w},Vn(i.chartArea,be=>{const Ze=be.box;Object.assign(Ze,m.chartArea),Ze.update(ce.w,ce.h,{left:0,top:0,right:0,bottom:0})})}};class V0{acquireContext(a,d){}releaseContext(a){return!1}addEventListener(a,d,g){}removeEventListener(a,d,g){}getDevicePixelRatio(){return 1}getMaximumSize(a,d,g,w){return d=Math.max(0,d||a.width),g=g||a.height,{width:d,height:Math.max(0,w?Math.floor(d/w):g)}}isAttached(a){return!0}updateConfig(a){}}class Q2 extends V0{acquireContext(a){return a&&a.getContext&&a.getContext("2d")||null}updateConfig(a){a.options.animation=!1}}const _p="$chartjs",eM={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},U0=m=>m===null||m==="";function tM(m,a){const d=m.style,g=m.getAttribute("height"),w=m.getAttribute("width");if(m[_p]={initial:{height:g,width:w,style:{display:d.display,height:d.height,width:d.width}}},d.display=d.display||"block",d.boxSizing=d.boxSizing||"border-box",U0(w)){const b=f0(m,"width");b!==void 0&&(m.width=b)}if(U0(g))if(m.style.height==="")m.height=m.width/(a||2);else{const b=f0(m,"height");b!==void 0&&(m.height=b)}return m}const j0=n2?{passive:!0}:!1;function iM(m,a,d){m&&m.addEventListener(a,d,j0)}function nM(m,a,d){m&&m.canvas&&m.canvas.removeEventListener(a,d,j0)}function sM(m,a){const d=eM[m.type]||m.type,{x:g,y:w}=qc(m,a);return{type:d,chart:a,native:m,x:g!==void 0?g:null,y:w!==void 0?w:null}}function gp(m,a){for(const d of m)if(d===a||d.contains(a))return!0}function rM(m,a,d){const g=m.canvas,w=new MutationObserver(b=>{let E=!1;for(const i of b)E=E||gp(i.addedNodes,g),E=E&&!gp(i.removedNodes,g);E&&d()});return w.observe(document,{childList:!0,subtree:!0}),w}function oM(m,a,d){const g=m.canvas,w=new MutationObserver(b=>{let E=!1;for(const i of b)E=E||gp(i.removedNodes,g),E=E&&!gp(i.addedNodes,g);E&&d()});return w.observe(document,{childList:!0,subtree:!0}),w}const bd=new Map;let G0=0;function Z0(){const m=window.devicePixelRatio;m!==G0&&(G0=m,bd.forEach((a,d)=>{d.currentDevicePixelRatio!==m&&a()}))}function aM(m,a){bd.size||window.addEventListener("resize",Z0),bd.set(m,a)}function lM(m){bd.delete(m),bd.size||window.removeEventListener("resize",Z0)}function cM(m,a,d){const g=m.canvas,w=g&&b_(g);if(!w)return;const b=Wy((i,O)=>{const j=w.clientWidth;d(i,O),j<w.clientWidth&&d()},window),E=new ResizeObserver(i=>{const O=i[0],j=O.contentRect.width,Y=O.contentRect.height;j===0&&Y===0||b(j,Y)});return E.observe(w),aM(m,b),E}function I_(m,a,d){d&&d.disconnect(),a==="resize"&&lM(m)}function hM(m,a,d){const g=m.canvas,w=Wy(b=>{m.ctx!==null&&d(sM(b,m))},m);return iM(g,a,w),w}class uM extends V0{acquireContext(a,d){const g=a&&a.getContext&&a.getContext("2d");return g&&g.canvas===a?(tM(a,d),g):null}releaseContext(a){const d=a.canvas;if(!d[_p])return!1;const g=d[_p].initial;["height","width"].forEach(b=>{const E=g[b];Sn(E)?d.removeAttribute(b):d.setAttribute(b,E)});const w=g.style||{};return Object.keys(w).forEach(b=>{d.style[b]=w[b]}),d.width=d.width,delete d[_p],!0}addEventListener(a,d,g){this.removeEventListener(a,d);const w=a.$proxies||(a.$proxies={}),E={attach:rM,detach:oM,resize:cM}[d]||hM;w[d]=E(a,d,g)}removeEventListener(a,d){const g=a.$proxies||(a.$proxies={}),w=g[d];if(!w)return;({attach:I_,detach:I_,resize:I_}[d]||nM)(a,d,w),g[d]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(a,d,g,w){return i2(a,d,g,w)}isAttached(a){const d=a&&b_(a);return!!(d&&d.isConnected)}}function dM(m){return!v_()||typeof OffscreenCanvas<"u"&&m instanceof OffscreenCanvas?Q2:uM}let gl=(Rp=class{constructor(){Yt(this,"x");Yt(this,"y");Yt(this,"active",!1);Yt(this,"options");Yt(this,"$animations")}tooltipPosition(a){const{x:d,y:g}=this.getProps(["x","y"],a);return{x:d,y:g}}hasValue(){return Gh(this.x)&&Gh(this.y)}getProps(a,d){const g=this.$animations;if(!d||!g)return this;const w={};return a.forEach(b=>{w[b]=g[b]&&g[b].active()?g[b]._to:this[b]}),w}},Yt(Rp,"defaults",{}),Yt(Rp,"defaultRoutes"),Rp);function fM(m,a){const d=m.options.ticks,g=pM(m),w=Math.min(d.maxTicksLimit||g,g),b=d.major.enabled?_M(a):[],E=b.length,i=b[0],O=b[E-1],j=[];if(E>w)return gM(a,j,b,E/w),j;const Y=mM(b,a,w);if(E>0){let J,ae;const ce=E>1?Math.round((O-i)/(E-1)):null;for(yp(a,j,Y,Sn(ce)?0:i-ce,i),J=0,ae=E-1;J<ae;J++)yp(a,j,Y,b[J],b[J+1]);return yp(a,j,Y,O,Sn(ce)?a.length:O+ce),j}return yp(a,j,Y),j}function pM(m){const a=m.options.offset,d=m._tickSize(),g=m._length/d+(a?0:1),w=m._maxLength/d;return Math.floor(Math.min(g,w))}function mM(m,a,d){const g=yM(m),w=a.length/d;if(!g)return Math.max(w,1);const b=oT(g);for(let E=0,i=b.length-1;E<i;E++){const O=b[E];if(O>w)return O}return Math.max(w,1)}function _M(m){const a=[];let d,g;for(d=0,g=m.length;d<g;d++)m[d].major&&a.push(d);return a}function gM(m,a,d,g){let w=0,b=d[0],E;for(g=Math.ceil(g),E=0;E<m.length;E++)E===b&&(a.push(m[E]),w++,b=d[w*g])}function yp(m,a,d,g,w){const b=Ji(g,0),E=Math.min(Ji(w,m.length),m.length);let i=0,O,j,Y;for(d=Math.ceil(d),w&&(O=w-g,d=O/Math.floor(O/d)),Y=b;Y<0;)i++,Y=Math.round(b+i*d);for(j=Math.max(b,0);j<E;j++)j===Y&&(a.push(m[j]),i++,Y=Math.round(b+i*d))}function yM(m){const a=m.length;let d,g;if(a<2)return!1;for(g=m[0],d=1;d<a;++d)if(m[d]-m[d-1]!==g)return!1;return g}const xM=m=>m==="left"?"right":m==="right"?"left":m,H0=(m,a,d)=>a==="top"||a==="left"?m[a]+d:m[a]-d,q0=(m,a)=>Math.min(a||m,m);function W0(m,a){const d=[],g=m.length/a,w=m.length;let b=0;for(;b<w;b+=g)d.push(m[Math.floor(b)]);return d}function vM(m,a,d){const g=m.ticks.length,w=Math.min(a,g-1),b=m._startPixel,E=m._endPixel,i=1e-6;let O=m.getPixelForTick(w),j;if(!(d&&(g===1?j=Math.max(O-b,E-O):a===0?j=(m.getPixelForTick(1)-O)/2:j=(O-m.getPixelForTick(w-1))/2,O+=w<a?j:-j,O<b-i||O>E+i)))return O}function bM(m,a){Vn(m,d=>{const g=d.gc,w=g.length/2;let b;if(w>a){for(b=0;b<w;++b)delete d.data[g[b]];g.splice(0,w)}})}function wd(m){return m.drawTicks?m.tickLength:0}function $0(m,a){if(!m.display)return 0;const d=Ws(m.font,a),g=Sr(m.padding);return(ns(m.text)?m.text.length:1)*d.lineHeight+g.height}function wM(m,a){return Yl(m,{scale:a,type:"scale"})}function TM(m,a,d){return Yl(m,{tick:d,index:a,type:"tick"})}function MM(m,a,d){let g=h_(m);return(d&&a!=="right"||!d&&a==="right")&&(g=xM(g)),g}function SM(m,a,d,g){const{top:w,left:b,bottom:E,right:i,chart:O}=m,{chartArea:j,scales:Y}=O;let J=0,ae,ce,Te;const be=E-w,Ze=i-b;if(m.isHorizontal()){if(ce=Mr(g,b,i),gn(d)){const je=Object.keys(d)[0],ot=d[je];Te=Y[je].getPixelForValue(ot)+be-a}else d==="center"?Te=(j.bottom+j.top)/2+be-a:Te=H0(m,d,a);ae=i-b}else{if(gn(d)){const je=Object.keys(d)[0],ot=d[je];ce=Y[je].getPixelForValue(ot)-Ze+a}else d==="center"?ce=(j.left+j.right)/2-Ze+a:ce=H0(m,d,a);Te=Mr(g,E,w),J=d==="left"?-Cs:Cs}return{titleX:ce,titleY:Te,maxWidth:ae,rotation:J}}class Yc extends gl{constructor(a){super(),this.id=a.id,this.type=a.type,this.options=void 0,this.ctx=a.ctx,this.chart=a.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(a){this.options=a.setContext(this.getContext()),this.axis=a.axis,this._userMin=this.parse(a.min),this._userMax=this.parse(a.max),this._suggestedMin=this.parse(a.suggestedMin),this._suggestedMax=this.parse(a.suggestedMax)}parse(a,d){return a}getUserBounds(){let{_userMin:a,_userMax:d,_suggestedMin:g,_suggestedMax:w}=this;return a=yo(a,Number.POSITIVE_INFINITY),d=yo(d,Number.NEGATIVE_INFINITY),g=yo(g,Number.POSITIVE_INFINITY),w=yo(w,Number.NEGATIVE_INFINITY),{min:yo(a,g),max:yo(d,w),minDefined:Ss(a),maxDefined:Ss(d)}}getMinMax(a){let{min:d,max:g,minDefined:w,maxDefined:b}=this.getUserBounds(),E;if(w&&b)return{min:d,max:g};const i=this.getMatchingVisibleMetas();for(let O=0,j=i.length;O<j;++O)E=i[O].controller.getMinMax(this,a),w||(d=Math.min(d,E.min)),b||(g=Math.max(g,E.max));return d=b&&d>g?g:d,g=w&&d>g?d:g,{min:yo(d,yo(g,d)),max:yo(g,yo(d,g))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const a=this.chart.data;return this.options.labels||(this.isHorizontal()?a.xLabels:a.yLabels)||a.labels||[]}getLabelItems(a=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(a))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){Jn(this.options.beforeUpdate,[this])}update(a,d,g){const{beginAtZero:w,grace:b,ticks:E}=this.options,i=E.sampleSize;this.beforeUpdate(),this.maxWidth=a,this.maxHeight=d,this._margins=g=Object.assign({left:0,right:0,top:0,bottom:0},g),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+g.left+g.right:this.height+g.top+g.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=kT(this,b,w),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const O=i<this.ticks.length;this._convertTicksToLabels(O?W0(this.ticks,i):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),E.display&&(E.autoSkip||E.source==="auto")&&(this.ticks=fM(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),O&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let a=this.options.reverse,d,g;this.isHorizontal()?(d=this.left,g=this.right):(d=this.top,g=this.bottom,a=!a),this._startPixel=d,this._endPixel=g,this._reversePixels=a,this._length=g-d,this._alignToPixels=this.options.alignToPixels}afterUpdate(){Jn(this.options.afterUpdate,[this])}beforeSetDimensions(){Jn(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){Jn(this.options.afterSetDimensions,[this])}_callHooks(a){this.chart.notifyPlugins(a,this.getContext()),Jn(this.options[a],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){Jn(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(a){const d=this.options.ticks;let g,w,b;for(g=0,w=a.length;g<w;g++)b=a[g],b.label=Jn(d.callback,[b.value,g,a],this)}afterTickToLabelConversion(){Jn(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){Jn(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const a=this.options,d=a.ticks,g=q0(this.ticks.length,a.ticks.maxTicksLimit),w=d.minRotation||0,b=d.maxRotation;let E=w,i,O,j;if(!this._isVisible()||!d.display||w>=b||g<=1||!this.isHorizontal()){this.labelRotation=w;return}const Y=this._getLabelSizes(),J=Y.widest.width,ae=Y.highest.height,ce=nr(this.chart.width-J,0,this.maxWidth);i=a.offset?this.maxWidth/g:ce/(g-1),J+6>i&&(i=ce/(g-(a.offset?.5:1)),O=this.maxHeight-wd(a.grid)-d.padding-$0(a.title,this.chart.options.font),j=Math.sqrt(J*J+ae*ae),E=a_(Math.min(Math.asin(nr((Y.highest.height+6)/i,-1,1)),Math.asin(nr(O/j,-1,1))-Math.asin(nr(ae/j,-1,1)))),E=Math.max(w,Math.min(b,E))),this.labelRotation=E}afterCalculateLabelRotation(){Jn(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){Jn(this.options.beforeFit,[this])}fit(){const a={width:0,height:0},{chart:d,options:{ticks:g,title:w,grid:b}}=this,E=this._isVisible(),i=this.isHorizontal();if(E){const O=$0(w,d.options.font);if(i?(a.width=this.maxWidth,a.height=wd(b)+O):(a.height=this.maxHeight,a.width=wd(b)+O),g.display&&this.ticks.length){const{first:j,last:Y,widest:J,highest:ae}=this._getLabelSizes(),ce=g.padding*2,Te=aa(this.labelRotation),be=Math.cos(Te),Ze=Math.sin(Te);if(i){const je=g.mirror?0:Ze*J.width+be*ae.height;a.height=Math.min(this.maxHeight,a.height+je+ce)}else{const je=g.mirror?0:be*J.width+Ze*ae.height;a.width=Math.min(this.maxWidth,a.width+je+ce)}this._calculatePadding(j,Y,Ze,be)}}this._handleMargins(),i?(this.width=this._length=d.width-this._margins.left-this._margins.right,this.height=a.height):(this.width=a.width,this.height=this._length=d.height-this._margins.top-this._margins.bottom)}_calculatePadding(a,d,g,w){const{ticks:{align:b,padding:E},position:i}=this.options,O=this.labelRotation!==0,j=i!=="top"&&this.axis==="x";if(this.isHorizontal()){const Y=this.getPixelForTick(0)-this.left,J=this.right-this.getPixelForTick(this.ticks.length-1);let ae=0,ce=0;O?j?(ae=w*a.width,ce=g*d.height):(ae=g*a.height,ce=w*d.width):b==="start"?ce=d.width:b==="end"?ae=a.width:b!=="inner"&&(ae=a.width/2,ce=d.width/2),this.paddingLeft=Math.max((ae-Y+E)*this.width/(this.width-Y),0),this.paddingRight=Math.max((ce-J+E)*this.width/(this.width-J),0)}else{let Y=d.height/2,J=a.height/2;b==="start"?(Y=0,J=a.height):b==="end"&&(Y=d.height,J=0),this.paddingTop=Y+E,this.paddingBottom=J+E}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){Jn(this.options.afterFit,[this])}isHorizontal(){const{axis:a,position:d}=this.options;return d==="top"||d==="bottom"||a==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(a){this.beforeTickToLabelConversion(),this.generateTickLabels(a);let d,g;for(d=0,g=a.length;d<g;d++)Sn(a[d].label)&&(a.splice(d,1),g--,d--);this.afterTickToLabelConversion()}_getLabelSizes(){let a=this._labelSizes;if(!a){const d=this.options.ticks.sampleSize;let g=this.ticks;d<g.length&&(g=W0(g,d)),this._labelSizes=a=this._computeLabelSizes(g,g.length,this.options.ticks.maxTicksLimit)}return a}_computeLabelSizes(a,d,g){const{ctx:w,_longestTextCache:b}=this,E=[],i=[],O=Math.floor(d/q0(d,g));let j=0,Y=0,J,ae,ce,Te,be,Ze,je,ot,vt,ht,gt;for(J=0;J<d;J+=O){if(Te=a[J].label,be=this._resolveTickFontOptions(J),w.font=Ze=be.string,je=b[Ze]=b[Ze]||{data:{},gc:[]},ot=be.lineHeight,vt=ht=0,!Sn(Te)&&!ns(Te))vt=np(w,je.data,je.gc,vt,Te),ht=ot;else if(ns(Te))for(ae=0,ce=Te.length;ae<ce;++ae)gt=Te[ae],!Sn(gt)&&!ns(gt)&&(vt=np(w,je.data,je.gc,vt,gt),ht+=ot);E.push(vt),i.push(ht),j=Math.max(vt,j),Y=Math.max(ht,Y)}bM(b,d);const Vt=E.indexOf(j),pt=i.indexOf(Y),Gt=ui=>({width:E[ui]||0,height:i[ui]||0});return{first:Gt(0),last:Gt(d-1),widest:Gt(Vt),highest:Gt(pt),widths:E,heights:i}}getLabelForValue(a){return a}getPixelForValue(a,d){return NaN}getValueForPixel(a){}getPixelForTick(a){const d=this.ticks;return a<0||a>d.length-1?null:this.getPixelForValue(d[a].value)}getPixelForDecimal(a){this._reversePixels&&(a=1-a);const d=this._startPixel+a*this._length;return cT(this._alignToPixels?jc(this.chart,d,0):d)}getDecimalForPixel(a){const d=(a-this._startPixel)/this._length;return this._reversePixels?1-d:d}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:a,max:d}=this;return a<0&&d<0?d:a>0&&d>0?a:0}getContext(a){const d=this.ticks||[];if(a>=0&&a<d.length){const g=d[a];return g.$context||(g.$context=TM(this.getContext(),a,g))}return this.$context||(this.$context=wM(this.chart.getContext(),this))}_tickSize(){const a=this.options.ticks,d=aa(this.labelRotation),g=Math.abs(Math.cos(d)),w=Math.abs(Math.sin(d)),b=this._getLabelSizes(),E=a.autoSkipPadding||0,i=b?b.widest.width+E:0,O=b?b.highest.height+E:0;return this.isHorizontal()?O*g>i*w?i/g:O/w:O*w<i*g?O/g:i/w}_isVisible(){const a=this.options.display;return a!=="auto"?!!a:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(a){const d=this.axis,g=this.chart,w=this.options,{grid:b,position:E,border:i}=w,O=b.offset,j=this.isHorizontal(),J=this.ticks.length+(O?1:0),ae=wd(b),ce=[],Te=i.setContext(this.getContext()),be=Te.display?Te.width:0,Ze=be/2,je=function(Si){return jc(g,Si,be)};let ot,vt,ht,gt,Vt,pt,Gt,ui,kt,Pt,Mi,Pn;if(E==="top")ot=je(this.bottom),pt=this.bottom-ae,ui=ot-Ze,Pt=je(a.top)+Ze,Pn=a.bottom;else if(E==="bottom")ot=je(this.top),Pt=a.top,Pn=je(a.bottom)-Ze,pt=ot+Ze,ui=this.top+ae;else if(E==="left")ot=je(this.right),Vt=this.right-ae,Gt=ot-Ze,kt=je(a.left)+Ze,Mi=a.right;else if(E==="right")ot=je(this.left),kt=a.left,Mi=je(a.right)-Ze,Vt=ot+Ze,Gt=this.left+ae;else if(d==="x"){if(E==="center")ot=je((a.top+a.bottom)/2+.5);else if(gn(E)){const Si=Object.keys(E)[0],Qi=E[Si];ot=je(this.chart.scales[Si].getPixelForValue(Qi))}Pt=a.top,Pn=a.bottom,pt=ot+Ze,ui=pt+ae}else if(d==="y"){if(E==="center")ot=je((a.left+a.right)/2);else if(gn(E)){const Si=Object.keys(E)[0],Qi=E[Si];ot=je(this.chart.scales[Si].getPixelForValue(Qi))}Vt=ot-Ze,Gt=Vt-ae,kt=a.left,Mi=a.right}const hn=Ji(w.ticks.maxTicksLimit,J),Ht=Math.max(1,Math.ceil(J/hn));for(vt=0;vt<J;vt+=Ht){const Si=this.getContext(vt),Qi=b.setContext(Si),fi=i.setContext(Si),jt=Qi.lineWidth,ni=Qi.color,Gi=fi.dash||[],an=fi.dashOffset,qt=Qi.tickWidth,ln=Qi.tickColor,Di=Qi.tickBorderDash||[],xi=Qi.tickBorderDashOffset;ht=vM(this,vt,O),ht!==void 0&&(gt=jc(g,ht,jt),j?Vt=Gt=kt=Mi=gt:pt=ui=Pt=Pn=gt,ce.push({tx1:Vt,ty1:pt,tx2:Gt,ty2:ui,x1:kt,y1:Pt,x2:Mi,y2:Pn,width:jt,color:ni,borderDash:Gi,borderDashOffset:an,tickWidth:qt,tickColor:ln,tickBorderDash:Di,tickBorderDashOffset:xi}))}return this._ticksLength=J,this._borderValue=ot,ce}_computeLabelItems(a){const d=this.axis,g=this.options,{position:w,ticks:b}=g,E=this.isHorizontal(),i=this.ticks,{align:O,crossAlign:j,padding:Y,mirror:J}=b,ae=wd(g.grid),ce=ae+Y,Te=J?-Y:ce,be=-aa(this.labelRotation),Ze=[];let je,ot,vt,ht,gt,Vt,pt,Gt,ui,kt,Pt,Mi,Pn="middle";if(w==="top")Vt=this.bottom-Te,pt=this._getXAxisLabelAlignment();else if(w==="bottom")Vt=this.top+Te,pt=this._getXAxisLabelAlignment();else if(w==="left"){const Ht=this._getYAxisLabelAlignment(ae);pt=Ht.textAlign,gt=Ht.x}else if(w==="right"){const Ht=this._getYAxisLabelAlignment(ae);pt=Ht.textAlign,gt=Ht.x}else if(d==="x"){if(w==="center")Vt=(a.top+a.bottom)/2+ce;else if(gn(w)){const Ht=Object.keys(w)[0],Si=w[Ht];Vt=this.chart.scales[Ht].getPixelForValue(Si)+ce}pt=this._getXAxisLabelAlignment()}else if(d==="y"){if(w==="center")gt=(a.left+a.right)/2-ce;else if(gn(w)){const Ht=Object.keys(w)[0],Si=w[Ht];gt=this.chart.scales[Ht].getPixelForValue(Si)}pt=this._getYAxisLabelAlignment(ae).textAlign}d==="y"&&(O==="start"?Pn="top":O==="end"&&(Pn="bottom"));const hn=this._getLabelSizes();for(je=0,ot=i.length;je<ot;++je){vt=i[je],ht=vt.label;const Ht=b.setContext(this.getContext(je));Gt=this.getPixelForTick(je)+b.labelOffset,ui=this._resolveTickFontOptions(je),kt=ui.lineHeight,Pt=ns(ht)?ht.length:1;const Si=Pt/2,Qi=Ht.color,fi=Ht.textStrokeColor,jt=Ht.textStrokeWidth;let ni=pt;E?(gt=Gt,pt==="inner"&&(je===ot-1?ni=this.options.reverse?"left":"right":je===0?ni=this.options.reverse?"right":"left":ni="center"),w==="top"?j==="near"||be!==0?Mi=-Pt*kt+kt/2:j==="center"?Mi=-hn.highest.height/2-Si*kt+kt:Mi=-hn.highest.height+kt/2:j==="near"||be!==0?Mi=kt/2:j==="center"?Mi=hn.highest.height/2-Si*kt:Mi=hn.highest.height-Pt*kt,J&&(Mi*=-1),be!==0&&!Ht.showLabelBackdrop&&(gt+=kt/2*Math.sin(be))):(Vt=Gt,Mi=(1-Pt)*kt/2);let Gi;if(Ht.showLabelBackdrop){const an=Sr(Ht.backdropPadding),qt=hn.heights[je],ln=hn.widths[je];let Di=Mi-an.top,xi=0-an.left;switch(Pn){case"middle":Di-=qt/2;break;case"bottom":Di-=qt;break}switch(pt){case"center":xi-=ln/2;break;case"right":xi-=ln;break;case"inner":je===ot-1?xi-=ln:je>0&&(xi-=ln/2);break}Gi={left:xi,top:Di,width:ln+an.width,height:qt+an.height,color:Ht.backdropColor}}Ze.push({label:ht,font:ui,textOffset:Mi,options:{rotation:be,color:Qi,strokeColor:fi,strokeWidth:jt,textAlign:ni,textBaseline:Pn,translation:[gt,Vt],backdrop:Gi}})}return Ze}_getXAxisLabelAlignment(){const{position:a,ticks:d}=this.options;if(-aa(this.labelRotation))return a==="top"?"left":"right";let w="center";return d.align==="start"?w="left":d.align==="end"?w="right":d.align==="inner"&&(w="inner"),w}_getYAxisLabelAlignment(a){const{position:d,ticks:{crossAlign:g,mirror:w,padding:b}}=this.options,E=this._getLabelSizes(),i=a+b,O=E.widest.width;let j,Y;return d==="left"?w?(Y=this.right+b,g==="near"?j="left":g==="center"?(j="center",Y+=O/2):(j="right",Y+=O)):(Y=this.right-i,g==="near"?j="right":g==="center"?(j="center",Y-=O/2):(j="left",Y=this.left)):d==="right"?w?(Y=this.left+b,g==="near"?j="right":g==="center"?(j="center",Y-=O/2):(j="left",Y-=O)):(Y=this.left+i,g==="near"?j="left":g==="center"?(j="center",Y+=O/2):(j="right",Y=this.right)):j="right",{textAlign:j,x:Y}}_computeLabelArea(){if(this.options.ticks.mirror)return;const a=this.chart,d=this.options.position;if(d==="left"||d==="right")return{top:0,left:this.left,bottom:a.height,right:this.right};if(d==="top"||d==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:a.width}}drawBackground(){const{ctx:a,options:{backgroundColor:d},left:g,top:w,width:b,height:E}=this;d&&(a.save(),a.fillStyle=d,a.fillRect(g,w,b,E),a.restore())}getLineWidthForValue(a){const d=this.options.grid;if(!this._isVisible()||!d.display)return 0;const w=this.ticks.findIndex(b=>b.value===a);return w>=0?d.setContext(this.getContext(w)).lineWidth:0}drawGrid(a){const d=this.options.grid,g=this.ctx,w=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(a));let b,E;const i=(O,j,Y)=>{!Y.width||!Y.color||(g.save(),g.lineWidth=Y.width,g.strokeStyle=Y.color,g.setLineDash(Y.borderDash||[]),g.lineDashOffset=Y.borderDashOffset,g.beginPath(),g.moveTo(O.x,O.y),g.lineTo(j.x,j.y),g.stroke(),g.restore())};if(d.display)for(b=0,E=w.length;b<E;++b){const O=w[b];d.drawOnChartArea&&i({x:O.x1,y:O.y1},{x:O.x2,y:O.y2},O),d.drawTicks&&i({x:O.tx1,y:O.ty1},{x:O.tx2,y:O.ty2},{color:O.tickColor,width:O.tickWidth,borderDash:O.tickBorderDash,borderDashOffset:O.tickBorderDashOffset})}}drawBorder(){const{chart:a,ctx:d,options:{border:g,grid:w}}=this,b=g.setContext(this.getContext()),E=g.display?b.width:0;if(!E)return;const i=w.setContext(this.getContext(0)).lineWidth,O=this._borderValue;let j,Y,J,ae;this.isHorizontal()?(j=jc(a,this.left,E)-E/2,Y=jc(a,this.right,i)+i/2,J=ae=O):(J=jc(a,this.top,E)-E/2,ae=jc(a,this.bottom,i)+i/2,j=Y=O),d.save(),d.lineWidth=b.width,d.strokeStyle=b.color,d.beginPath(),d.moveTo(j,J),d.lineTo(Y,ae),d.stroke(),d.restore()}drawLabels(a){if(!this.options.ticks.display)return;const g=this.ctx,w=this._computeLabelArea();w&&sp(g,w);const b=this.getLabelItems(a);for(const E of b){const i=E.options,O=E.font,j=E.label,Y=E.textOffset;Gc(g,j,0,Y,O,i)}w&&rp(g)}drawTitle(){const{ctx:a,options:{position:d,title:g,reverse:w}}=this;if(!g.display)return;const b=Ws(g.font),E=Sr(g.padding),i=g.align;let O=b.lineHeight/2;d==="bottom"||d==="center"||gn(d)?(O+=E.bottom,ns(g.text)&&(O+=b.lineHeight*(g.text.length-1))):O+=E.top;const{titleX:j,titleY:Y,maxWidth:J,rotation:ae}=SM(this,O,d,i);Gc(a,g.text,0,0,b,{color:g.color,maxWidth:J,rotation:ae,textAlign:MM(i,d,w),textBaseline:"middle",translation:[j,Y]})}draw(a){this._isVisible()&&(this.drawBackground(),this.drawGrid(a),this.drawBorder(),this.drawTitle(),this.drawLabels(a))}_layers(){const a=this.options,d=a.ticks&&a.ticks.z||0,g=Ji(a.grid&&a.grid.z,-1),w=Ji(a.border&&a.border.z,0);return!this._isVisible()||this.draw!==Yc.prototype.draw?[{z:d,draw:b=>{this.draw(b)}}]:[{z:g,draw:b=>{this.drawBackground(),this.drawGrid(b),this.drawTitle()}},{z:w,draw:()=>{this.drawBorder()}},{z:d,draw:b=>{this.drawLabels(b)}}]}getMatchingVisibleMetas(a){const d=this.chart.getSortedVisibleDatasetMetas(),g=this.axis+"AxisID",w=[];let b,E;for(b=0,E=d.length;b<E;++b){const i=d[b];i[g]===this.id&&(!a||i.type===a)&&w.push(i)}return w}_resolveTickFontOptions(a){const d=this.options.ticks.setContext(this.getContext(a));return Ws(d.font)}_maxDigits(){const a=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/a}}class xp{constructor(a,d,g){this.type=a,this.scope=d,this.override=g,this.items=Object.create(null)}isForType(a){return Object.prototype.isPrototypeOf.call(this.type.prototype,a.prototype)}register(a){const d=Object.getPrototypeOf(a);let g;AM(d)&&(g=this.register(d));const w=this.items,b=a.id,E=this.scope+"."+b;if(!b)throw new Error("class does not have id: "+a);return b in w||(w[b]=a,EM(a,E,g),this.override&&fs.override(a.id,a.overrides)),E}get(a){return this.items[a]}unregister(a){const d=this.items,g=a.id,w=this.scope;g in d&&delete d[g],w&&g in fs[w]&&(delete fs[w][g],this.override&&delete Uc[g])}}function EM(m,a,d){const g=rd(Object.create(null),[d?fs.get(d):{},fs.get(a),m.defaults]);fs.set(a,g),m.defaultRoutes&&PM(a,m.defaultRoutes),m.descriptors&&fs.describe(a,m.descriptors)}function PM(m,a){Object.keys(a).forEach(d=>{const g=d.split("."),w=g.pop(),b=[m].concat(g).join("."),E=a[d].split("."),i=E.pop(),O=E.join(".");fs.route(b,w,O,i)})}function AM(m){return"id"in m&&"defaults"in m}class CM{constructor(){this.controllers=new xp(la,"datasets",!0),this.elements=new xp(gl,"elements"),this.plugins=new xp(Object,"plugins"),this.scales=new xp(Yc,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...a){this._each("register",a)}remove(...a){this._each("unregister",a)}addControllers(...a){this._each("register",a,this.controllers)}addElements(...a){this._each("register",a,this.elements)}addPlugins(...a){this._each("register",a,this.plugins)}addScales(...a){this._each("register",a,this.scales)}getController(a){return this._get(a,this.controllers,"controller")}getElement(a){return this._get(a,this.elements,"element")}getPlugin(a){return this._get(a,this.plugins,"plugin")}getScale(a){return this._get(a,this.scales,"scale")}removeControllers(...a){this._each("unregister",a,this.controllers)}removeElements(...a){this._each("unregister",a,this.elements)}removePlugins(...a){this._each("unregister",a,this.plugins)}removeScales(...a){this._each("unregister",a,this.scales)}_each(a,d,g){[...d].forEach(w=>{const b=g||this._getRegistryForType(w);g||b.isForType(w)||b===this.plugins&&w.id?this._exec(a,b,w):Vn(w,E=>{const i=g||this._getRegistryForType(E);this._exec(a,i,E)})})}_exec(a,d,g){const w=o_(a);Jn(g["before"+w],[],g),d[a](g),Jn(g["after"+w],[],g)}_getRegistryForType(a){for(let d=0;d<this._typedRegistries.length;d++){const g=this._typedRegistries[d];if(g.isForType(a))return g}return this.plugins}_get(a,d,g){const w=d.get(a);if(w===void 0)throw new Error('"'+a+'" is not a registered '+g+".");return w}}var Oa=new CM;class IM{constructor(){this._init=[]}notify(a,d,g,w){d==="beforeInit"&&(this._init=this._createDescriptors(a,!0),this._notify(this._init,a,"install"));const b=w?this._descriptors(a).filter(w):this._descriptors(a),E=this._notify(b,a,d,g);return d==="afterDestroy"&&(this._notify(b,a,"stop"),this._notify(this._init,a,"uninstall")),E}_notify(a,d,g,w){w=w||{};for(const b of a){const E=b.plugin,i=E[g],O=[d,w,b.options];if(Jn(i,O,E)===!1&&w.cancelable)return!1}return!0}invalidate(){Sn(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(a){if(this._cache)return this._cache;const d=this._cache=this._createDescriptors(a);return this._notifyStateChanges(a),d}_createDescriptors(a,d){const g=a&&a.config,w=Ji(g.options&&g.options.plugins,{}),b=LM(g);return w===!1&&!d?[]:DM(a,b,w,d)}_notifyStateChanges(a){const d=this._oldCache||[],g=this._cache,w=(b,E)=>b.filter(i=>!E.some(O=>i.plugin.id===O.plugin.id));this._notify(w(d,g),a,"stop"),this._notify(w(g,d),a,"start")}}function LM(m){const a={},d=[],g=Object.keys(Oa.plugins.items);for(let b=0;b<g.length;b++)d.push(Oa.getPlugin(g[b]));const w=m.plugins||[];for(let b=0;b<w.length;b++){const E=w[b];d.indexOf(E)===-1&&(d.push(E),a[E.id]=!0)}return{plugins:d,localIds:a}}function zM(m,a){return!a&&m===!1?null:m===!0?{}:m}function DM(m,{plugins:a,localIds:d},g,w){const b=[],E=m.getContext();for(const i of a){const O=i.id,j=zM(g[O],w);j!==null&&b.push({plugin:i,options:kM(m.config,{plugin:i,local:d[O]},j,E)})}return b}function kM(m,{plugin:a,local:d},g,w){const b=m.pluginScopeKeys(a),E=m.getOptionScopes(g,b);return d&&a.defaults&&E.push(a.defaults),m.createResolver(E,w,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function L_(m,a){const d=fs.datasets[m]||{};return((a.datasets||{})[m]||{}).indexAxis||a.indexAxis||d.indexAxis||"x"}function RM(m,a){let d=m;return m==="_index_"?d=a:m==="_value_"&&(d=a==="x"?"y":"x"),d}function OM(m,a){return m===a?"_index_":"_value_"}function X0(m){if(m==="x"||m==="y"||m==="r")return m}function FM(m){if(m==="top"||m==="bottom")return"x";if(m==="left"||m==="right")return"y"}function z_(m,...a){if(X0(m))return m;for(const d of a){const g=d.axis||FM(d.position)||m.length>1&&X0(m[0].toLowerCase());if(g)return g}throw new Error(`Cannot determine type of '${m}' axis. Please provide 'axis' or 'position' option.`)}function Y0(m,a,d){if(d[a+"AxisID"]===m)return{axis:a}}function BM(m,a){if(a.data&&a.data.datasets){const d=a.data.datasets.filter(g=>g.xAxisID===m||g.yAxisID===m);if(d.length)return Y0(m,"x",d[0])||Y0(m,"y",d[0])}return{}}function NM(m,a){const d=Uc[m.type]||{scales:{}},g=a.scales||{},w=L_(m.type,a),b=Object.create(null);return Object.keys(g).forEach(E=>{const i=g[E];if(!gn(i))return console.error(`Invalid scale configuration for scale: ${E}`);if(i._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${E}`);const O=z_(E,i,BM(E,m),fs.scales[i.type]),j=OM(O,w),Y=d.scales||{};b[E]=od(Object.create(null),[{axis:O},i,Y[O],Y[j]])}),m.data.datasets.forEach(E=>{const i=E.type||m.type,O=E.indexAxis||L_(i,a),Y=(Uc[i]||{}).scales||{};Object.keys(Y).forEach(J=>{const ae=RM(J,O),ce=E[ae+"AxisID"]||ae;b[ce]=b[ce]||Object.create(null),od(b[ce],[{axis:ae},g[ce],Y[J]])})}),Object.keys(b).forEach(E=>{const i=b[E];od(i,[fs.scales[i.type],fs.scale])}),b}function K0(m){const a=m.options||(m.options={});a.plugins=Ji(a.plugins,{}),a.scales=NM(m,a)}function J0(m){return m=m||{},m.datasets=m.datasets||[],m.labels=m.labels||[],m}function VM(m){return m=m||{},m.data=J0(m.data),K0(m),m}const Q0=new Map,ex=new Set;function vp(m,a){let d=Q0.get(m);return d||(d=a(),Q0.set(m,d),ex.add(d)),d}const Td=(m,a,d)=>{const g=Wl(a,d);g!==void 0&&m.add(g)};class UM{constructor(a){this._config=VM(a),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(a){this._config.type=a}get data(){return this._config.data}set data(a){this._config.data=J0(a)}get options(){return this._config.options}set options(a){this._config.options=a}get plugins(){return this._config.plugins}update(){const a=this._config;this.clearCache(),K0(a)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(a){return vp(a,()=>[[`datasets.${a}`,""]])}datasetAnimationScopeKeys(a,d){return vp(`${a}.transition.${d}`,()=>[[`datasets.${a}.transitions.${d}`,`transitions.${d}`],[`datasets.${a}`,""]])}datasetElementScopeKeys(a,d){return vp(`${a}-${d}`,()=>[[`datasets.${a}.elements.${d}`,`datasets.${a}`,`elements.${d}`,""]])}pluginScopeKeys(a){const d=a.id,g=this.type;return vp(`${g}-plugin-${d}`,()=>[[`plugins.${d}`,...a.additionalOptionScopes||[]]])}_cachedScopes(a,d){const g=this._scopeCache;let w=g.get(a);return(!w||d)&&(w=new Map,g.set(a,w)),w}getOptionScopes(a,d,g){const{options:w,type:b}=this,E=this._cachedScopes(a,g),i=E.get(d);if(i)return i;const O=new Set;d.forEach(Y=>{a&&(O.add(a),Y.forEach(J=>Td(O,a,J))),Y.forEach(J=>Td(O,w,J)),Y.forEach(J=>Td(O,Uc[b]||{},J)),Y.forEach(J=>Td(O,fs,J)),Y.forEach(J=>Td(O,f_,J))});const j=Array.from(O);return j.length===0&&j.push(Object.create(null)),ex.has(d)&&E.set(d,j),j}chartOptionScopes(){const{options:a,type:d}=this;return[a,Uc[d]||{},fs.datasets[d]||{},{type:d},fs,f_]}resolveNamedOptions(a,d,g,w=[""]){const b={$shared:!0},{resolver:E,subPrefixes:i}=tx(this._resolverCache,a,w);let O=E;if(GM(E,d)){b.$shared=!1,g=$l(g)?g():g;const j=this.createResolver(a,g,i);O=Zh(E,g,j)}for(const j of d)b[j]=O[j];return b}createResolver(a,d,g=[""],w){const{resolver:b}=tx(this._resolverCache,a,g);return gn(d)?Zh(b,d,void 0,w):b}}function tx(m,a,d){let g=m.get(a);g||(g=new Map,m.set(a,g));const w=d.join();let b=g.get(w);return b||(b={resolver:g_(a,d),subPrefixes:d.filter(i=>!i.toLowerCase().includes("hover"))},g.set(w,b)),b}const jM=m=>gn(m)&&Object.getOwnPropertyNames(m).some(a=>$l(m[a]));function GM(m,a){const{isScriptable:d,isIndexable:g}=s0(m);for(const w of a){const b=d(w),E=g(w),i=(E||b)&&m[w];if(b&&($l(i)||jM(i))||E&&ns(i))return!0}return!1}var ZM="4.4.7";const HM=["top","bottom","left","right","chartArea"];function ix(m,a){return m==="top"||m==="bottom"||HM.indexOf(m)===-1&&a==="x"}function nx(m,a){return function(d,g){return d[m]===g[m]?d[a]-g[a]:d[m]-g[m]}}function sx(m){const a=m.chart,d=a.options.animation;a.notifyPlugins("afterRender"),Jn(d&&d.onComplete,[m],a)}function qM(m){const a=m.chart,d=a.options.animation;Jn(d&&d.onProgress,[m],a)}function rx(m){return v_()&&typeof m=="string"?m=document.getElementById(m):m&&m.length&&(m=m[0]),m&&m.canvas&&(m=m.canvas),m}const bp={},ox=m=>{const a=rx(m);return Object.values(bp).filter(d=>d.canvas===a).pop()};function WM(m,a,d){const g=Object.keys(m);for(const w of g){const b=+w;if(b>=a){const E=m[w];delete m[w],(d>0||b>a)&&(m[b+d]=E)}}}function $M(m,a,d,g){return!d||m.type==="mouseout"?null:g?a:m}function wp(m,a,d){return m.options.clip?m[d]:a[d]}function XM(m,a){const{xScale:d,yScale:g}=m;return d&&g?{left:wp(d,a,"left"),right:wp(d,a,"right"),top:wp(g,a,"top"),bottom:wp(g,a,"bottom")}:a}class yl{static register(...a){Oa.add(...a),ax()}static unregister(...a){Oa.remove(...a),ax()}constructor(a,d){const g=this.config=new UM(d),w=rx(a),b=ox(w);if(b)throw new Error("Canvas is already in use. Chart with ID '"+b.id+"' must be destroyed before the canvas with ID '"+b.canvas.id+"' can be reused.");const E=g.createResolver(g.chartOptionScopes(),this.getContext());this.platform=new(g.platform||dM(w)),this.platform.updateConfig(g);const i=this.platform.acquireContext(w,E.aspectRatio),O=i&&i.canvas,j=O&&O.height,Y=O&&O.width;if(this.id=Kw(),this.ctx=i,this.canvas=O,this.width=Y,this.height=j,this._options=E,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new IM,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=fT(J=>this.update(J),E.resizeDelay||0),this._dataChanges=[],bp[this.id]=this,!i||!O){console.error("Failed to create chart: can't acquire context from the given item");return}_l.listen(this,"complete",sx),_l.listen(this,"progress",qM),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:a,maintainAspectRatio:d},width:g,height:w,_aspectRatio:b}=this;return Sn(a)?d&&b?b:w?g/w:null:a}get data(){return this.config.data}set data(a){this.config.data=a}get options(){return this._options}set options(a){this.config.options=a}get registry(){return Oa}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():d0(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return t0(this.canvas,this.ctx),this}stop(){return _l.stop(this),this}resize(a,d){_l.running(this)?this._resizeBeforeDraw={width:a,height:d}:this._resize(a,d)}_resize(a,d){const g=this.options,w=this.canvas,b=g.maintainAspectRatio&&this.aspectRatio,E=this.platform.getMaximumSize(w,a,d,b),i=g.devicePixelRatio||this.platform.getDevicePixelRatio(),O=this.width?"resize":"attach";this.width=E.width,this.height=E.height,this._aspectRatio=this.aspectRatio,d0(this,i,!0)&&(this.notifyPlugins("resize",{size:E}),Jn(g.onResize,[this,E],this),this.attached&&this._doResize(O)&&this.render())}ensureScalesHaveIDs(){const d=this.options.scales||{};Vn(d,(g,w)=>{g.id=w})}buildOrUpdateScales(){const a=this.options,d=a.scales,g=this.scales,w=Object.keys(g).reduce((E,i)=>(E[i]=!1,E),{});let b=[];d&&(b=b.concat(Object.keys(d).map(E=>{const i=d[E],O=z_(E,i),j=O==="r",Y=O==="x";return{options:i,dposition:j?"chartArea":Y?"bottom":"left",dtype:j?"radialLinear":Y?"category":"linear"}}))),Vn(b,E=>{const i=E.options,O=i.id,j=z_(O,i),Y=Ji(i.type,E.dtype);(i.position===void 0||ix(i.position,j)!==ix(E.dposition))&&(i.position=E.dposition),w[O]=!0;let J=null;if(O in g&&g[O].type===Y)J=g[O];else{const ae=Oa.getScale(Y);J=new ae({id:O,type:Y,ctx:this.ctx,chart:this}),g[J.id]=J}J.init(i,a)}),Vn(w,(E,i)=>{E||delete g[i]}),Vn(g,E=>{Er.configure(this,E,E.options),Er.addBox(this,E)})}_updateMetasets(){const a=this._metasets,d=this.data.datasets.length,g=a.length;if(a.sort((w,b)=>w.index-b.index),g>d){for(let w=d;w<g;++w)this._destroyDatasetMeta(w);a.splice(d,g-d)}this._sortedMetasets=a.slice(0).sort(nx("order","index"))}_removeUnreferencedMetasets(){const{_metasets:a,data:{datasets:d}}=this;a.length>d.length&&delete this._stacks,a.forEach((g,w)=>{d.filter(b=>b===g._dataset).length===0&&this._destroyDatasetMeta(w)})}buildOrUpdateControllers(){const a=[],d=this.data.datasets;let g,w;for(this._removeUnreferencedMetasets(),g=0,w=d.length;g<w;g++){const b=d[g];let E=this.getDatasetMeta(g);const i=b.type||this.config.type;if(E.type&&E.type!==i&&(this._destroyDatasetMeta(g),E=this.getDatasetMeta(g)),E.type=i,E.indexAxis=b.indexAxis||L_(i,this.options),E.order=b.order||0,E.index=g,E.label=""+b.label,E.visible=this.isDatasetVisible(g),E.controller)E.controller.updateIndex(g),E.controller.linkScales();else{const O=Oa.getController(i),{datasetElementType:j,dataElementType:Y}=fs.datasets[i];Object.assign(O,{dataElementType:Oa.getElement(Y),datasetElementType:j&&Oa.getElement(j)}),E.controller=new O(this,g),a.push(E.controller)}}return this._updateMetasets(),a}_resetElements(){Vn(this.data.datasets,(a,d)=>{this.getDatasetMeta(d).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(a){const d=this.config;d.update();const g=this._options=d.createResolver(d.chartOptionScopes(),this.getContext()),w=this._animationsDisabled=!g.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:a,cancelable:!0})===!1)return;const b=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let E=0;for(let j=0,Y=this.data.datasets.length;j<Y;j++){const{controller:J}=this.getDatasetMeta(j),ae=!w&&b.indexOf(J)===-1;J.buildOrUpdateElements(ae),E=Math.max(+J.getMaxOverflow(),E)}E=this._minPadding=g.layout.autoPadding?E:0,this._updateLayout(E),w||Vn(b,j=>{j.reset()}),this._updateDatasets(a),this.notifyPlugins("afterUpdate",{mode:a}),this._layers.sort(nx("z","_idx"));const{_active:i,_lastEvent:O}=this;O?this._eventHandler(O,!0):i.length&&this._updateHoverStyles(i,i,!0),this.render()}_updateScales(){Vn(this.scales,a=>{Er.removeBox(this,a)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const a=this.options,d=new Set(Object.keys(this._listeners)),g=new Set(a.events);(!Fy(d,g)||!!this._responsiveListeners!==a.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:a}=this,d=this._getUniformDataChanges()||[];for(const{method:g,start:w,count:b}of d){const E=g==="_removeElements"?-b:b;WM(a,w,E)}}_getUniformDataChanges(){const a=this._dataChanges;if(!a||!a.length)return;this._dataChanges=[];const d=this.data.datasets.length,g=b=>new Set(a.filter(E=>E[0]===b).map((E,i)=>i+","+E.splice(1).join(","))),w=g(0);for(let b=1;b<d;b++)if(!Fy(w,g(b)))return;return Array.from(w).map(b=>b.split(",")).map(b=>({method:b[1],start:+b[2],count:+b[3]}))}_updateLayout(a){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;Er.update(this,this.width,this.height,a);const d=this.chartArea,g=d.width<=0||d.height<=0;this._layers=[],Vn(this.boxes,w=>{g&&w.position==="chartArea"||(w.configure&&w.configure(),this._layers.push(...w._layers()))},this),this._layers.forEach((w,b)=>{w._idx=b}),this.notifyPlugins("afterLayout")}_updateDatasets(a){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:a,cancelable:!0})!==!1){for(let d=0,g=this.data.datasets.length;d<g;++d)this.getDatasetMeta(d).controller.configure();for(let d=0,g=this.data.datasets.length;d<g;++d)this._updateDataset(d,$l(a)?a({datasetIndex:d}):a);this.notifyPlugins("afterDatasetsUpdate",{mode:a})}}_updateDataset(a,d){const g=this.getDatasetMeta(a),w={meta:g,index:a,mode:d,cancelable:!0};this.notifyPlugins("beforeDatasetUpdate",w)!==!1&&(g.controller._update(d),w.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",w))}render(){this.notifyPlugins("beforeRender",{cancelable:!0})!==!1&&(_l.has(this)?this.attached&&!_l.running(this)&&_l.start(this):(this.draw(),sx({chart:this})))}draw(){let a;if(this._resizeBeforeDraw){const{width:g,height:w}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(g,w)}if(this.clear(),this.width<=0||this.height<=0||this.notifyPlugins("beforeDraw",{cancelable:!0})===!1)return;const d=this._layers;for(a=0;a<d.length&&d[a].z<=0;++a)d[a].draw(this.chartArea);for(this._drawDatasets();a<d.length;++a)d[a].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(a){const d=this._sortedMetasets,g=[];let w,b;for(w=0,b=d.length;w<b;++w){const E=d[w];(!a||E.visible)&&g.push(E)}return g}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0})===!1)return;const a=this.getSortedVisibleDatasetMetas();for(let d=a.length-1;d>=0;--d)this._drawDataset(a[d]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(a){const d=this.ctx,g=a._clip,w=!g.disabled,b=XM(a,this.chartArea),E={meta:a,index:a.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",E)!==!1&&(w&&sp(d,{left:g.left===!1?0:b.left-g.left,right:g.right===!1?this.width:b.right+g.right,top:g.top===!1?0:b.top-g.top,bottom:g.bottom===!1?this.height:b.bottom+g.bottom}),a.controller.draw(),w&&rp(d),E.cancelable=!1,this.notifyPlugins("afterDatasetDraw",E))}isPointInArea(a){return ml(a,this.chartArea,this._minPadding)}getElementsAtEventForMode(a,d,g,w){const b=H2.modes[d];return typeof b=="function"?b(this,a,g,w):[]}getDatasetMeta(a){const d=this.data.datasets[a],g=this._metasets;let w=g.filter(b=>b&&b._dataset===d).pop();return w||(w={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:d&&d.order||0,index:a,_dataset:d,_parsed:[],_sorted:!1},g.push(w)),w}getContext(){return this.$context||(this.$context=Yl(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(a){const d=this.data.datasets[a];if(!d)return!1;const g=this.getDatasetMeta(a);return typeof g.hidden=="boolean"?!g.hidden:!d.hidden}setDatasetVisibility(a,d){const g=this.getDatasetMeta(a);g.hidden=!d}toggleDataVisibility(a){this._hiddenIndices[a]=!this._hiddenIndices[a]}getDataVisibility(a){return!this._hiddenIndices[a]}_updateVisibility(a,d,g){const w=g?"show":"hide",b=this.getDatasetMeta(a),E=b.controller._resolveAnimations(void 0,w);ad(d)?(b.data[d].hidden=!g,this.update()):(this.setDatasetVisibility(a,g),E.update(b,{visible:g}),this.update(i=>i.datasetIndex===a?w:void 0))}hide(a,d){this._updateVisibility(a,d,!1)}show(a,d){this._updateVisibility(a,d,!0)}_destroyDatasetMeta(a){const d=this._metasets[a];d&&d.controller&&d.controller._destroy(),delete this._metasets[a]}_stop(){let a,d;for(this.stop(),_l.remove(this),a=0,d=this.data.datasets.length;a<d;++a)this._destroyDatasetMeta(a)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:a,ctx:d}=this;this._stop(),this.config.clearCache(),a&&(this.unbindEvents(),t0(a,d),this.platform.releaseContext(d),this.canvas=null,this.ctx=null),delete bp[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...a){return this.canvas.toDataURL(...a)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const a=this._listeners,d=this.platform,g=(b,E)=>{d.addEventListener(this,b,E),a[b]=E},w=(b,E,i)=>{b.offsetX=E,b.offsetY=i,this._eventHandler(b)};Vn(this.options.events,b=>g(b,w))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const a=this._responsiveListeners,d=this.platform,g=(O,j)=>{d.addEventListener(this,O,j),a[O]=j},w=(O,j)=>{a[O]&&(d.removeEventListener(this,O,j),delete a[O])},b=(O,j)=>{this.canvas&&this.resize(O,j)};let E;const i=()=>{w("attach",i),this.attached=!0,this.resize(),g("resize",b),g("detach",E)};E=()=>{this.attached=!1,w("resize",b),this._stop(),this._resize(0,0),g("attach",i)},d.isAttached(this.canvas)?i():E()}unbindEvents(){Vn(this._listeners,(a,d)=>{this.platform.removeEventListener(this,d,a)}),this._listeners={},Vn(this._responsiveListeners,(a,d)=>{this.platform.removeEventListener(this,d,a)}),this._responsiveListeners=void 0}updateHoverStyle(a,d,g){const w=g?"set":"remove";let b,E,i,O;for(d==="dataset"&&(b=this.getDatasetMeta(a[0].datasetIndex),b.controller["_"+w+"DatasetHoverStyle"]()),i=0,O=a.length;i<O;++i){E=a[i];const j=E&&this.getDatasetMeta(E.datasetIndex).controller;j&&j[w+"HoverStyle"](E.element,E.datasetIndex,E.index)}}getActiveElements(){return this._active||[]}setActiveElements(a){const d=this._active||[],g=a.map(({datasetIndex:b,index:E})=>{const i=this.getDatasetMeta(b);if(!i)throw new Error("No dataset found at index "+b);return{datasetIndex:b,element:i.data[E],index:E}});!Jf(g,d)&&(this._active=g,this._lastEvent=null,this._updateHoverStyles(g,d))}notifyPlugins(a,d,g){return this._plugins.notify(this,a,d,g)}isPluginEnabled(a){return this._plugins._cache.filter(d=>d.plugin.id===a).length===1}_updateHoverStyles(a,d,g){const w=this.options.hover,b=(O,j)=>O.filter(Y=>!j.some(J=>Y.datasetIndex===J.datasetIndex&&Y.index===J.index)),E=b(d,a),i=g?a:b(a,d);E.length&&this.updateHoverStyle(E,w.mode,!1),i.length&&w.mode&&this.updateHoverStyle(i,w.mode,!0)}_eventHandler(a,d){const g={event:a,replay:d,cancelable:!0,inChartArea:this.isPointInArea(a)},w=E=>(E.options.events||this.options.events).includes(a.native.type);if(this.notifyPlugins("beforeEvent",g,w)===!1)return;const b=this._handleEvent(a,d,g.inChartArea);return g.cancelable=!1,this.notifyPlugins("afterEvent",g,w),(b||g.changed)&&this.render(),this}_handleEvent(a,d,g){const{_active:w=[],options:b}=this,E=d,i=this._getActiveElements(a,w,g,E),O=nT(a),j=$M(a,this._lastEvent,g,O);g&&(this._lastEvent=null,Jn(b.onHover,[a,i,this],this),O&&Jn(b.onClick,[a,i,this],this));const Y=!Jf(i,w);return(Y||d)&&(this._active=i,this._updateHoverStyles(i,w,d)),this._lastEvent=j,Y}_getActiveElements(a,d,g,w){if(a.type==="mouseout")return[];if(!g)return d;const b=this.options.hover;return this.getElementsAtEventForMode(a,b.mode,b,w)}}Yt(yl,"defaults",fs),Yt(yl,"instances",bp),Yt(yl,"overrides",Uc),Yt(yl,"registry",Oa),Yt(yl,"version",ZM),Yt(yl,"getChart",ox);function ax(){return Vn(yl.instances,m=>m._plugins.invalidate())}function YM(m,a,d){const{startAngle:g,pixelMargin:w,x:b,y:E,outerRadius:i,innerRadius:O}=a;let j=w/i;m.beginPath(),m.arc(b,E,i,g-j,d+j),O>w?(j=w/O,m.arc(b,E,O,d+j,g-j,!0)):m.arc(b,E,w,d+Cs,g-Cs),m.closePath(),m.clip()}function KM(m){return __(m,["outerStart","outerEnd","innerStart","innerEnd"])}function JM(m,a,d,g){const w=KM(m.options.borderRadius),b=(d-a)/2,E=Math.min(b,g*a/2),i=O=>{const j=(d-Math.min(b,O))*g/2;return nr(O,0,Math.min(b,j))};return{outerStart:i(w.outerStart),outerEnd:i(w.outerEnd),innerStart:nr(w.innerStart,0,E),innerEnd:nr(w.innerEnd,0,E)}}function Wh(m,a,d,g){return{x:d+m*Math.cos(a),y:g+m*Math.sin(a)}}function Tp(m,a,d,g,w,b){const{x:E,y:i,startAngle:O,pixelMargin:j,innerRadius:Y}=a,J=Math.max(a.outerRadius+g+d-j,0),ae=Y>0?Y+g+d+j:0;let ce=0;const Te=w-O;if(g){const Ht=Y>0?Y-g:0,Si=J>0?J-g:0,Qi=(Ht+Si)/2,fi=Qi!==0?Te*Qi/(Qi+g):Te;ce=(Te-fi)/2}const be=Math.max(.001,Te*J-d/ss)/J,Ze=(Te-be)/2,je=O+Ze+ce,ot=w-Ze-ce,{outerStart:vt,outerEnd:ht,innerStart:gt,innerEnd:Vt}=JM(a,ae,J,ot-je),pt=J-vt,Gt=J-ht,ui=je+vt/pt,kt=ot-ht/Gt,Pt=ae+gt,Mi=ae+Vt,Pn=je+gt/Pt,hn=ot-Vt/Mi;if(m.beginPath(),b){const Ht=(ui+kt)/2;if(m.arc(E,i,J,ui,Ht),m.arc(E,i,J,Ht,kt),ht>0){const jt=Wh(Gt,kt,E,i);m.arc(jt.x,jt.y,ht,kt,ot+Cs)}const Si=Wh(Mi,ot,E,i);if(m.lineTo(Si.x,Si.y),Vt>0){const jt=Wh(Mi,hn,E,i);m.arc(jt.x,jt.y,Vt,ot+Cs,hn+Math.PI)}const Qi=(ot-Vt/ae+(je+gt/ae))/2;if(m.arc(E,i,ae,ot-Vt/ae,Qi,!0),m.arc(E,i,ae,Qi,je+gt/ae,!0),gt>0){const jt=Wh(Pt,Pn,E,i);m.arc(jt.x,jt.y,gt,Pn+Math.PI,je-Cs)}const fi=Wh(pt,je,E,i);if(m.lineTo(fi.x,fi.y),vt>0){const jt=Wh(pt,ui,E,i);m.arc(jt.x,jt.y,vt,je-Cs,ui)}}else{m.moveTo(E,i);const Ht=Math.cos(ui)*J+E,Si=Math.sin(ui)*J+i;m.lineTo(Ht,Si);const Qi=Math.cos(kt)*J+E,fi=Math.sin(kt)*J+i;m.lineTo(Qi,fi)}m.closePath()}function QM(m,a,d,g,w){const{fullCircles:b,startAngle:E,circumference:i}=a;let O=a.endAngle;if(b){Tp(m,a,d,g,O,w);for(let j=0;j<b;++j)m.fill();isNaN(i)||(O=E+(i%rs||rs))}return Tp(m,a,d,g,O,w),m.fill(),O}function eS(m,a,d,g,w){const{fullCircles:b,startAngle:E,circumference:i,options:O}=a,{borderWidth:j,borderJoinStyle:Y,borderDash:J,borderDashOffset:ae}=O,ce=O.borderAlign==="inner";if(!j)return;m.setLineDash(J||[]),m.lineDashOffset=ae,ce?(m.lineWidth=j*2,m.lineJoin=Y||"round"):(m.lineWidth=j,m.lineJoin=Y||"bevel");let Te=a.endAngle;if(b){Tp(m,a,d,g,Te,w);for(let be=0;be<b;++be)m.stroke();isNaN(i)||(Te=E+(i%rs||rs))}ce&&YM(m,a,Te),b||(Tp(m,a,d,g,Te,w),m.stroke())}class Md extends gl{constructor(d){super();Yt(this,"circumference");Yt(this,"endAngle");Yt(this,"fullCircles");Yt(this,"innerRadius");Yt(this,"outerRadius");Yt(this,"pixelMargin");Yt(this,"startAngle");this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,d&&Object.assign(this,d)}inRange(d,g,w){const b=this.getProps(["x","y"],w),{angle:E,distance:i}=jy(b,{x:d,y:g}),{startAngle:O,endAngle:j,innerRadius:Y,outerRadius:J,circumference:ae}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],w),ce=(this.options.spacing+this.options.borderWidth)/2,Te=Ji(ae,j-O),be=cd(E,O,j)&&O!==j,Ze=Te>=rs||be,je=fl(i,Y+ce,J+ce);return Ze&&je}getCenterPoint(d){const{x:g,y:w,startAngle:b,endAngle:E,innerRadius:i,outerRadius:O}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],d),{offset:j,spacing:Y}=this.options,J=(b+E)/2,ae=(i+O+Y+j)/2;return{x:g+Math.cos(J)*ae,y:w+Math.sin(J)*ae}}tooltipPosition(d){return this.getCenterPoint(d)}draw(d){const{options:g,circumference:w}=this,b=(g.offset||0)/4,E=(g.spacing||0)/2,i=g.circular;if(this.pixelMargin=g.borderAlign==="inner"?.33:0,this.fullCircles=w>rs?Math.floor(w/rs):0,w===0||this.innerRadius<0||this.outerRadius<0)return;d.save();const O=(this.startAngle+this.endAngle)/2;d.translate(Math.cos(O)*b,Math.sin(O)*b);const j=1-Math.sin(Math.min(ss,w||0)),Y=b*j;d.fillStyle=g.backgroundColor,d.strokeStyle=g.borderColor,QM(d,this,Y,E,i),eS(d,this,Y,E,i),d.restore()}}Yt(Md,"id","arc"),Yt(Md,"defaults",{borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0}),Yt(Md,"defaultRoutes",{backgroundColor:"backgroundColor"}),Yt(Md,"descriptors",{_scriptable:!0,_indexable:d=>d!=="borderDash"});function lx(m,a,d=a){m.lineCap=Ji(d.borderCapStyle,a.borderCapStyle),m.setLineDash(Ji(d.borderDash,a.borderDash)),m.lineDashOffset=Ji(d.borderDashOffset,a.borderDashOffset),m.lineJoin=Ji(d.borderJoinStyle,a.borderJoinStyle),m.lineWidth=Ji(d.borderWidth,a.borderWidth),m.strokeStyle=Ji(d.borderColor,a.borderColor)}function tS(m,a,d){m.lineTo(d.x,d.y)}function iS(m){return m.stepped?ST:m.tension||m.cubicInterpolationMode==="monotone"?ET:tS}function cx(m,a,d={}){const g=m.length,{start:w=0,end:b=g-1}=d,{start:E,end:i}=a,O=Math.max(w,E),j=Math.min(b,i),Y=w<E&&b<E||w>i&&b>i;return{count:g,start:O,loop:a.loop,ilen:j<O&&!Y?g+j-O:j-O}}function nS(m,a,d,g){const{points:w,options:b}=a,{count:E,start:i,loop:O,ilen:j}=cx(w,d,g),Y=iS(b);let{move:J=!0,reverse:ae}=g||{},ce,Te,be;for(ce=0;ce<=j;++ce)Te=w[(i+(ae?j-ce:ce))%E],!Te.skip&&(J?(m.moveTo(Te.x,Te.y),J=!1):Y(m,be,Te,ae,b.stepped),be=Te);return O&&(Te=w[(i+(ae?j:0))%E],Y(m,be,Te,ae,b.stepped)),!!O}function sS(m,a,d,g){const w=a.points,{count:b,start:E,ilen:i}=cx(w,d,g),{move:O=!0,reverse:j}=g||{};let Y=0,J=0,ae,ce,Te,be,Ze,je;const ot=ht=>(E+(j?i-ht:ht))%b,vt=()=>{be!==Ze&&(m.lineTo(Y,Ze),m.lineTo(Y,be),m.lineTo(Y,je))};for(O&&(ce=w[ot(0)],m.moveTo(ce.x,ce.y)),ae=0;ae<=i;++ae){if(ce=w[ot(ae)],ce.skip)continue;const ht=ce.x,gt=ce.y,Vt=ht|0;Vt===Te?(gt<be?be=gt:gt>Ze&&(Ze=gt),Y=(J*Y+ht)/++J):(vt(),m.lineTo(ht,gt),Te=Vt,J=0,be=Ze=gt),je=gt}vt()}function D_(m){const a=m.options,d=a.borderDash&&a.borderDash.length;return!m._decimated&&!m._loop&&!a.tension&&a.cubicInterpolationMode!=="monotone"&&!a.stepped&&!d?sS:nS}function rS(m){return m.stepped?s2:m.tension||m.cubicInterpolationMode==="monotone"?r2:Wc}function oS(m,a,d,g){let w=a._path;w||(w=a._path=new Path2D,a.path(w,d,g)&&w.closePath()),lx(m,a.options),m.stroke(w)}function aS(m,a,d,g){const{segments:w,options:b}=a,E=D_(a);for(const i of w)lx(m,b,i.style),m.beginPath(),E(m,a,i,{start:d,end:d+g-1})&&m.closePath(),m.stroke()}const lS=typeof Path2D=="function";function cS(m,a,d,g){lS&&!a.options.segment?oS(m,a,d,g):aS(m,a,d,g)}class Kl extends gl{constructor(a){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,a&&Object.assign(this,a)}updateControlPoints(a,d){const g=this.options;if((g.tension||g.cubicInterpolationMode==="monotone")&&!g.stepped&&!this._pointsUpdated){const w=g.spanGaps?this._loop:this._fullLoop;YT(this._points,g,a,w,d),this._pointsUpdated=!0}}set points(a){this._points=a,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=u2(this,this.options.segment))}first(){const a=this.segments,d=this.points;return a.length&&d[a[0].start]}last(){const a=this.segments,d=this.points,g=a.length;return g&&d[a[g-1].end]}interpolate(a,d){const g=this.options,w=a[d],b=this.points,E=x0(this,{property:d,start:w,end:w});if(!E.length)return;const i=[],O=rS(g);let j,Y;for(j=0,Y=E.length;j<Y;++j){const{start:J,end:ae}=E[j],ce=b[J],Te=b[ae];if(ce===Te){i.push(ce);continue}const be=Math.abs((w-ce[d])/(Te[d]-ce[d])),Ze=O(ce,Te,be,g.stepped);Ze[d]=a[d],i.push(Ze)}return i.length===1?i[0]:i}pathSegment(a,d,g){return D_(this)(a,this,d,g)}path(a,d,g){const w=this.segments,b=D_(this);let E=this._loop;d=d||0,g=g||this.points.length-d;for(const i of w)E&=b(a,this,i,{start:d,end:d+g-1});return!!E}draw(a,d,g,w){const b=this.options||{};(this.points||[]).length&&b.borderWidth&&(a.save(),cS(a,this,g,w),a.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}Yt(Kl,"id","line"),Yt(Kl,"defaults",{borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0}),Yt(Kl,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"}),Yt(Kl,"descriptors",{_scriptable:!0,_indexable:a=>a!=="borderDash"&&a!=="fill"});function hx(m,a,d,g){const w=m.options,{[d]:b}=m.getProps([d],g);return Math.abs(a-b)<w.radius+w.hitRadius}class Mp extends gl{constructor(d){super();Yt(this,"parsed");Yt(this,"skip");Yt(this,"stop");this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,d&&Object.assign(this,d)}inRange(d,g,w){const b=this.options,{x:E,y:i}=this.getProps(["x","y"],w);return Math.pow(d-E,2)+Math.pow(g-i,2)<Math.pow(b.hitRadius+b.radius,2)}inXRange(d,g){return hx(this,d,"x",g)}inYRange(d,g){return hx(this,d,"y",g)}getCenterPoint(d){const{x:g,y:w}=this.getProps(["x","y"],d);return{x:g,y:w}}size(d){d=d||this.options||{};let g=d.radius||0;g=Math.max(g,g&&d.hoverRadius||0);const w=g&&d.borderWidth||0;return(g+w)*2}draw(d,g){const w=this.options;this.skip||w.radius<.1||!ml(this,g,this.size(w)/2)||(d.strokeStyle=w.borderColor,d.lineWidth=w.borderWidth,d.fillStyle=w.backgroundColor,m_(d,w,this.x,this.y))}getRange(){const d=this.options||{};return d.radius+d.hitRadius}}Yt(Mp,"id","point"),Yt(Mp,"defaults",{borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0}),Yt(Mp,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"});function ux(m,a){const{x:d,y:g,base:w,width:b,height:E}=m.getProps(["x","y","base","width","height"],a);let i,O,j,Y,J;return m.horizontal?(J=E/2,i=Math.min(d,w),O=Math.max(d,w),j=g-J,Y=g+J):(J=b/2,i=d-J,O=d+J,j=Math.min(g,w),Y=Math.max(g,w)),{left:i,top:j,right:O,bottom:Y}}function Jl(m,a,d,g){return m?0:nr(a,d,g)}function hS(m,a,d){const g=m.options.borderWidth,w=m.borderSkipped,b=n0(g);return{t:Jl(w.top,b.top,0,d),r:Jl(w.right,b.right,0,a),b:Jl(w.bottom,b.bottom,0,d),l:Jl(w.left,b.left,0,a)}}function uS(m,a,d){const{enableBorderRadius:g}=m.getProps(["enableBorderRadius"]),w=m.options.borderRadius,b=Zc(w),E=Math.min(a,d),i=m.borderSkipped,O=g||gn(w);return{topLeft:Jl(!O||i.top||i.left,b.topLeft,0,E),topRight:Jl(!O||i.top||i.right,b.topRight,0,E),bottomLeft:Jl(!O||i.bottom||i.left,b.bottomLeft,0,E),bottomRight:Jl(!O||i.bottom||i.right,b.bottomRight,0,E)}}function dS(m){const a=ux(m),d=a.right-a.left,g=a.bottom-a.top,w=hS(m,d/2,g/2),b=uS(m,d/2,g/2);return{outer:{x:a.left,y:a.top,w:d,h:g,radius:b},inner:{x:a.left+w.l,y:a.top+w.t,w:d-w.l-w.r,h:g-w.t-w.b,radius:{topLeft:Math.max(0,b.topLeft-Math.max(w.t,w.l)),topRight:Math.max(0,b.topRight-Math.max(w.t,w.r)),bottomLeft:Math.max(0,b.bottomLeft-Math.max(w.b,w.l)),bottomRight:Math.max(0,b.bottomRight-Math.max(w.b,w.r))}}}}function k_(m,a,d,g){const w=a===null,b=d===null,i=m&&!(w&&b)&&ux(m,g);return i&&(w||fl(a,i.left,i.right))&&(b||fl(d,i.top,i.bottom))}function fS(m){return m.topLeft||m.topRight||m.bottomLeft||m.bottomRight}function pS(m,a){m.rect(a.x,a.y,a.w,a.h)}function R_(m,a,d={}){const g=m.x!==d.x?-a:0,w=m.y!==d.y?-a:0,b=(m.x+m.w!==d.x+d.w?a:0)-g,E=(m.y+m.h!==d.y+d.h?a:0)-w;return{x:m.x+g,y:m.y+w,w:m.w+b,h:m.h+E,radius:m.radius}}class Sp extends gl{constructor(a){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,a&&Object.assign(this,a)}draw(a){const{inflateAmount:d,options:{borderColor:g,backgroundColor:w}}=this,{inner:b,outer:E}=dS(this),i=fS(E.radius)?fd:pS;a.save(),(E.w!==b.w||E.h!==b.h)&&(a.beginPath(),i(a,R_(E,d,b)),a.clip(),i(a,R_(b,-d,E)),a.fillStyle=g,a.fill("evenodd")),a.beginPath(),i(a,R_(b,d)),a.fillStyle=w,a.fill(),a.restore()}inRange(a,d,g){return k_(this,a,d,g)}inXRange(a,d){return k_(this,a,null,d)}inYRange(a,d){return k_(this,null,a,d)}getCenterPoint(a){const{x:d,y:g,base:w,horizontal:b}=this.getProps(["x","y","base","horizontal"],a);return{x:b?(d+w)/2:d,y:b?g:(g+w)/2}}getRange(a){return a==="x"?this.width/2:this.height/2}}Yt(Sp,"id","bar"),Yt(Sp,"defaults",{borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0}),Yt(Sp,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"});var mS=Object.freeze({__proto__:null,ArcElement:Md,BarElement:Sp,LineElement:Kl,PointElement:Mp});const O_=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],dx=O_.map(m=>m.replace("rgb(","rgba(").replace(")",", 0.5)"));function fx(m){return O_[m%O_.length]}function px(m){return dx[m%dx.length]}function _S(m,a){return m.borderColor=fx(a),m.backgroundColor=px(a),++a}function gS(m,a){return m.backgroundColor=m.data.map(()=>fx(a++)),a}function yS(m,a){return m.backgroundColor=m.data.map(()=>px(a++)),a}function xS(m){let a=0;return(d,g)=>{const w=m.getDatasetMeta(g).controller;w instanceof $c?a=gS(d,a):w instanceof _d?a=yS(d,a):w&&(a=_S(d,a))}}function mx(m){let a;for(a in m)if(m[a].borderColor||m[a].backgroundColor)return!0;return!1}function vS(m){return m&&(m.borderColor||m.backgroundColor)}function bS(){return fs.borderColor!=="rgba(0,0,0,0.1)"||fs.backgroundColor!=="rgba(0,0,0,0.1)"}var wS={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(m,a,d){if(!d.enabled)return;const{data:{datasets:g},options:w}=m.config,{elements:b}=w,E=mx(g)||vS(w)||b&&mx(b)||bS();if(!d.forceOverride&&E)return;const i=xS(m);g.forEach(i)}};function TS(m,a,d,g,w){const b=w.samples||g;if(b>=d)return m.slice(a,a+d);const E=[],i=(d-2)/(b-2);let O=0;const j=a+d-1;let Y=a,J,ae,ce,Te,be;for(E[O++]=m[Y],J=0;J<b-2;J++){let Ze=0,je=0,ot;const vt=Math.floor((J+1)*i)+1+a,ht=Math.min(Math.floor((J+2)*i)+1,d)+a,gt=ht-vt;for(ot=vt;ot<ht;ot++)Ze+=m[ot].x,je+=m[ot].y;Ze/=gt,je/=gt;const Vt=Math.floor(J*i)+1+a,pt=Math.min(Math.floor((J+1)*i)+1,d)+a,{x:Gt,y:ui}=m[Y];for(ce=Te=-1,ot=Vt;ot<pt;ot++)Te=.5*Math.abs((Gt-Ze)*(m[ot].y-ui)-(Gt-m[ot].x)*(je-ui)),Te>ce&&(ce=Te,ae=m[ot],be=ot);E[O++]=ae,Y=be}return E[O++]=m[j],E}function MS(m,a,d,g){let w=0,b=0,E,i,O,j,Y,J,ae,ce,Te,be;const Ze=[],je=a+d-1,ot=m[a].x,ht=m[je].x-ot;for(E=a;E<a+d;++E){i=m[E],O=(i.x-ot)/ht*g,j=i.y;const gt=O|0;if(gt===Y)j<Te?(Te=j,J=E):j>be&&(be=j,ae=E),w=(b*w+i.x)/++b;else{const Vt=E-1;if(!Sn(J)&&!Sn(ae)){const pt=Math.min(J,ae),Gt=Math.max(J,ae);pt!==ce&&pt!==Vt&&Ze.push({...m[pt],x:w}),Gt!==ce&&Gt!==Vt&&Ze.push({...m[Gt],x:w})}E>0&&Vt!==ce&&Ze.push(m[Vt]),Ze.push(i),Y=gt,b=0,Te=be=j,J=ae=ce=E}}return Ze}function _x(m){if(m._decimated){const a=m._data;delete m._decimated,delete m._data,Object.defineProperty(m,"data",{configurable:!0,enumerable:!0,writable:!0,value:a})}}function gx(m){m.data.datasets.forEach(a=>{_x(a)})}function SS(m,a){const d=a.length;let g=0,w;const{iScale:b}=m,{min:E,max:i,minDefined:O,maxDefined:j}=b.getUserBounds();return O&&(g=nr(pl(a,b.axis,E).lo,0,d-1)),j?w=nr(pl(a,b.axis,i).hi+1,g,d)-g:w=d-g,{start:g,count:w}}var ES={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(m,a,d)=>{if(!d.enabled){gx(m);return}const g=m.width;m.data.datasets.forEach((w,b)=>{const{_data:E,indexAxis:i}=w,O=m.getDatasetMeta(b),j=E||w.data;if(pd([i,m.options.indexAxis])==="y"||!O.controller.supportsDecimation)return;const Y=m.scales[O.xAxisID];if(Y.type!=="linear"&&Y.type!=="time"||m.options.parsing)return;let{start:J,count:ae}=SS(O,j);const ce=d.threshold||4*g;if(ae<=ce){_x(w);return}Sn(E)&&(w._data=j,delete w.data,Object.defineProperty(w,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(be){this._data=be}}));let Te;switch(d.algorithm){case"lttb":Te=TS(j,J,ae,g,d);break;case"min-max":Te=MS(j,J,ae,g);break;default:throw new Error(`Unsupported decimation algorithm '${d.algorithm}'`)}w._decimated=Te})},destroy(m){gx(m)}};function PS(m,a,d){const g=m.segments,w=m.points,b=a.points,E=[];for(const i of g){let{start:O,end:j}=i;j=B_(O,j,w);const Y=F_(d,w[O],w[j],i.loop);if(!a.segments){E.push({source:i,target:Y,start:w[O],end:w[j]});continue}const J=x0(a,Y);for(const ae of J){const ce=F_(d,b[ae.start],b[ae.end],ae.loop),Te=y0(i,w,ce);for(const be of Te)E.push({source:be,target:ae,start:{[d]:yx(Y,ce,"start",Math.max)},end:{[d]:yx(Y,ce,"end",Math.min)}})}}return E}function F_(m,a,d,g){if(g)return;let w=a[m],b=d[m];return m==="angle"&&(w=xo(w),b=xo(b)),{property:m,start:w,end:b}}function AS(m,a){const{x:d=null,y:g=null}=m||{},w=a.points,b=[];return a.segments.forEach(({start:E,end:i})=>{i=B_(E,i,w);const O=w[E],j=w[i];g!==null?(b.push({x:O.x,y:g}),b.push({x:j.x,y:g})):d!==null&&(b.push({x:d,y:O.y}),b.push({x:d,y:j.y}))}),b}function B_(m,a,d){for(;a>m;a--){const g=d[a];if(!isNaN(g.x)&&!isNaN(g.y))break}return a}function yx(m,a,d,g){return m&&a?g(m[d],a[d]):m?m[d]:a?a[d]:0}function xx(m,a){let d=[],g=!1;return ns(m)?(g=!0,d=m):d=AS(m,a),d.length?new Kl({points:d,options:{tension:0},_loop:g,_fullLoop:g}):null}function vx(m){return m&&m.fill!==!1}function CS(m,a,d){let w=m[a].fill;const b=[a];let E;if(!d)return w;for(;w!==!1&&b.indexOf(w)===-1;){if(!Ss(w))return w;if(E=m[w],!E)return!1;if(E.visible)return w;b.push(w),w=E.fill}return!1}function IS(m,a,d){const g=kS(m);if(gn(g))return isNaN(g.value)?!1:g;let w=parseFloat(g);return Ss(w)&&Math.floor(w)===w?LS(g[0],a,w,d):["origin","start","end","stack","shape"].indexOf(g)>=0&&g}function LS(m,a,d,g){return(m==="-"||m==="+")&&(d=a+d),d===a||d<0||d>=g?!1:d}function zS(m,a){let d=null;return m==="start"?d=a.bottom:m==="end"?d=a.top:gn(m)?d=a.getPixelForValue(m.value):a.getBasePixel&&(d=a.getBasePixel()),d}function DS(m,a,d){let g;return m==="start"?g=d:m==="end"?g=a.options.reverse?a.min:a.max:gn(m)?g=m.value:g=a.getBaseValue(),g}function kS(m){const a=m.options,d=a.fill;let g=Ji(d&&d.target,d);return g===void 0&&(g=!!a.backgroundColor),g===!1||g===null?!1:g===!0?"origin":g}function RS(m){const{scale:a,index:d,line:g}=m,w=[],b=g.segments,E=g.points,i=OS(a,d);i.push(xx({x:null,y:a.bottom},g));for(let O=0;O<b.length;O++){const j=b[O];for(let Y=j.start;Y<=j.end;Y++)FS(w,E[Y],i)}return new Kl({points:w,options:{}})}function OS(m,a){const d=[],g=m.getMatchingVisibleMetas("line");for(let w=0;w<g.length;w++){const b=g[w];if(b.index===a)break;b.hidden||d.unshift(b.dataset)}return d}function FS(m,a,d){const g=[];for(let w=0;w<d.length;w++){const b=d[w],{first:E,last:i,point:O}=BS(b,a,"x");if(!(!O||E&&i)){if(E)g.unshift(O);else if(m.push(O),!i)break}}m.push(...g)}function BS(m,a,d){const g=m.interpolate(a,d);if(!g)return{};const w=g[d],b=m.segments,E=m.points;let i=!1,O=!1;for(let j=0;j<b.length;j++){const Y=b[j],J=E[Y.start][d],ae=E[Y.end][d];if(fl(w,J,ae)){i=w===J,O=w===ae;break}}return{first:i,last:O,point:g}}class bx{constructor(a){this.x=a.x,this.y=a.y,this.radius=a.radius}pathSegment(a,d,g){const{x:w,y:b,radius:E}=this;return d=d||{start:0,end:rs},a.arc(w,b,E,d.end,d.start,!0),!g.bounds}interpolate(a){const{x:d,y:g,radius:w}=this,b=a.angle;return{x:d+Math.cos(b)*w,y:g+Math.sin(b)*w,angle:b}}}function NS(m){const{chart:a,fill:d,line:g}=m;if(Ss(d))return VS(a,d);if(d==="stack")return RS(m);if(d==="shape")return!0;const w=US(m);return w instanceof bx?w:xx(w,g)}function VS(m,a){const d=m.getDatasetMeta(a);return d&&m.isDatasetVisible(a)?d.dataset:null}function US(m){return(m.scale||{}).getPointPositionForValue?GS(m):jS(m)}function jS(m){const{scale:a={},fill:d}=m,g=zS(d,a);if(Ss(g)){const w=a.isHorizontal();return{x:w?g:null,y:w?null:g}}return null}function GS(m){const{scale:a,fill:d}=m,g=a.options,w=a.getLabels().length,b=g.reverse?a.max:a.min,E=DS(d,a,b),i=[];if(g.grid.circular){const O=a.getPointPositionForValue(0,b);return new bx({x:O.x,y:O.y,radius:a.getDistanceFromCenterForValue(E)})}for(let O=0;O<w;++O)i.push(a.getPointPositionForValue(O,E));return i}function N_(m,a,d){const g=NS(a),{line:w,scale:b,axis:E}=a,i=w.options,O=i.fill,j=i.backgroundColor,{above:Y=j,below:J=j}=O||{};g&&w.points.length&&(sp(m,d),ZS(m,{line:w,target:g,above:Y,below:J,area:d,scale:b,axis:E}),rp(m))}function ZS(m,a){const{line:d,target:g,above:w,below:b,area:E,scale:i}=a,O=d._loop?"angle":a.axis;m.save(),O==="x"&&b!==w&&(wx(m,g,E.top),Tx(m,{line:d,target:g,color:w,scale:i,property:O}),m.restore(),m.save(),wx(m,g,E.bottom)),Tx(m,{line:d,target:g,color:b,scale:i,property:O}),m.restore()}function wx(m,a,d){const{segments:g,points:w}=a;let b=!0,E=!1;m.beginPath();for(const i of g){const{start:O,end:j}=i,Y=w[O],J=w[B_(O,j,w)];b?(m.moveTo(Y.x,Y.y),b=!1):(m.lineTo(Y.x,d),m.lineTo(Y.x,Y.y)),E=!!a.pathSegment(m,i,{move:E}),E?m.closePath():m.lineTo(J.x,d)}m.lineTo(a.first().x,d),m.closePath(),m.clip()}function Tx(m,a){const{line:d,target:g,property:w,color:b,scale:E}=a,i=PS(d,g,w);for(const{source:O,target:j,start:Y,end:J}of i){const{style:{backgroundColor:ae=b}={}}=O,ce=g!==!0;m.save(),m.fillStyle=ae,HS(m,E,ce&&F_(w,Y,J)),m.beginPath();const Te=!!d.pathSegment(m,O);let be;if(ce){Te?m.closePath():Mx(m,g,J,w);const Ze=!!g.pathSegment(m,j,{move:Te,reverse:!0});be=Te&&Ze,be||Mx(m,g,Y,w)}m.closePath(),m.fill(be?"evenodd":"nonzero"),m.restore()}}function HS(m,a,d){const{top:g,bottom:w}=a.chart.chartArea,{property:b,start:E,end:i}=d||{};b==="x"&&(m.beginPath(),m.rect(E,g,i-E,w-g),m.clip())}function Mx(m,a,d,g){const w=a.interpolate(d,g);w&&m.lineTo(w.x,w.y)}var qS={id:"filler",afterDatasetsUpdate(m,a,d){const g=(m.data.datasets||[]).length,w=[];let b,E,i,O;for(E=0;E<g;++E)b=m.getDatasetMeta(E),i=b.dataset,O=null,i&&i.options&&i instanceof Kl&&(O={visible:m.isDatasetVisible(E),index:E,fill:IS(i,E,g),chart:m,axis:b.controller.options.indexAxis,scale:b.vScale,line:i}),b.$filler=O,w.push(O);for(E=0;E<g;++E)O=w[E],!(!O||O.fill===!1)&&(O.fill=CS(w,E,d.propagate))},beforeDraw(m,a,d){const g=d.drawTime==="beforeDraw",w=m.getSortedVisibleDatasetMetas(),b=m.chartArea;for(let E=w.length-1;E>=0;--E){const i=w[E].$filler;i&&(i.line.updateControlPoints(b,i.axis),g&&i.fill&&N_(m.ctx,i,b))}},beforeDatasetsDraw(m,a,d){if(d.drawTime!=="beforeDatasetsDraw")return;const g=m.getSortedVisibleDatasetMetas();for(let w=g.length-1;w>=0;--w){const b=g[w].$filler;vx(b)&&N_(m.ctx,b,m.chartArea)}},beforeDatasetDraw(m,a,d){const g=a.meta.$filler;!vx(g)||d.drawTime!=="beforeDatasetDraw"||N_(m.ctx,g,m.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const Sx=(m,a)=>{let{boxHeight:d=a,boxWidth:g=a}=m;return m.usePointStyle&&(d=Math.min(d,a),g=m.pointStyleWidth||Math.min(g,a)),{boxWidth:g,boxHeight:d,itemHeight:Math.max(a,d)}},WS=(m,a)=>m!==null&&a!==null&&m.datasetIndex===a.datasetIndex&&m.index===a.index;class Ex extends gl{constructor(a){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=a.chart,this.options=a.options,this.ctx=a.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(a,d,g){this.maxWidth=a,this.maxHeight=d,this._margins=g,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const a=this.options.labels||{};let d=Jn(a.generateLabels,[this.chart],this)||[];a.filter&&(d=d.filter(g=>a.filter(g,this.chart.data))),a.sort&&(d=d.sort((g,w)=>a.sort(g,w,this.chart.data))),this.options.reverse&&d.reverse(),this.legendItems=d}fit(){const{options:a,ctx:d}=this;if(!a.display){this.width=this.height=0;return}const g=a.labels,w=Ws(g.font),b=w.size,E=this._computeTitleHeight(),{boxWidth:i,itemHeight:O}=Sx(g,b);let j,Y;d.font=w.string,this.isHorizontal()?(j=this.maxWidth,Y=this._fitRows(E,b,i,O)+10):(Y=this.maxHeight,j=this._fitCols(E,w,i,O)+10),this.width=Math.min(j,a.maxWidth||this.maxWidth),this.height=Math.min(Y,a.maxHeight||this.maxHeight)}_fitRows(a,d,g,w){const{ctx:b,maxWidth:E,options:{labels:{padding:i}}}=this,O=this.legendHitBoxes=[],j=this.lineWidths=[0],Y=w+i;let J=a;b.textAlign="left",b.textBaseline="middle";let ae=-1,ce=-Y;return this.legendItems.forEach((Te,be)=>{const Ze=g+d/2+b.measureText(Te.text).width;(be===0||j[j.length-1]+Ze+2*i>E)&&(J+=Y,j[j.length-(be>0?0:1)]=0,ce+=Y,ae++),O[be]={left:0,top:ce,row:ae,width:Ze,height:w},j[j.length-1]+=Ze+i}),J}_fitCols(a,d,g,w){const{ctx:b,maxHeight:E,options:{labels:{padding:i}}}=this,O=this.legendHitBoxes=[],j=this.columnSizes=[],Y=E-a;let J=i,ae=0,ce=0,Te=0,be=0;return this.legendItems.forEach((Ze,je)=>{const{itemWidth:ot,itemHeight:vt}=$S(g,d,b,Ze,w);je>0&&ce+vt+2*i>Y&&(J+=ae+i,j.push({width:ae,height:ce}),Te+=ae+i,be++,ae=ce=0),O[je]={left:Te,top:ce,col:be,width:ot,height:vt},ae=Math.max(ae,ot),ce+=vt+i}),J+=ae,j.push({width:ae,height:ce}),J}adjustHitBoxes(){if(!this.options.display)return;const a=this._computeTitleHeight(),{legendHitBoxes:d,options:{align:g,labels:{padding:w},rtl:b}}=this,E=qh(b,this.left,this.width);if(this.isHorizontal()){let i=0,O=Mr(g,this.left+w,this.right-this.lineWidths[i]);for(const j of d)i!==j.row&&(i=j.row,O=Mr(g,this.left+w,this.right-this.lineWidths[i])),j.top+=this.top+a+w,j.left=E.leftForLtr(E.x(O),j.width),O+=j.width+w}else{let i=0,O=Mr(g,this.top+a+w,this.bottom-this.columnSizes[i].height);for(const j of d)j.col!==i&&(i=j.col,O=Mr(g,this.top+a+w,this.bottom-this.columnSizes[i].height)),j.top=O,j.left+=this.left+w,j.left=E.leftForLtr(E.x(j.left),j.width),O+=j.height+w}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const a=this.ctx;sp(a,this),this._draw(),rp(a)}}_draw(){const{options:a,columnSizes:d,lineWidths:g,ctx:w}=this,{align:b,labels:E}=a,i=fs.color,O=qh(a.rtl,this.left,this.width),j=Ws(E.font),{padding:Y}=E,J=j.size,ae=J/2;let ce;this.drawTitle(),w.textAlign=O.textAlign("left"),w.textBaseline="middle",w.lineWidth=.5,w.font=j.string;const{boxWidth:Te,boxHeight:be,itemHeight:Ze}=Sx(E,J),je=function(Vt,pt,Gt){if(isNaN(Te)||Te<=0||isNaN(be)||be<0)return;w.save();const ui=Ji(Gt.lineWidth,1);if(w.fillStyle=Ji(Gt.fillStyle,i),w.lineCap=Ji(Gt.lineCap,"butt"),w.lineDashOffset=Ji(Gt.lineDashOffset,0),w.lineJoin=Ji(Gt.lineJoin,"miter"),w.lineWidth=ui,w.strokeStyle=Ji(Gt.strokeStyle,i),w.setLineDash(Ji(Gt.lineDash,[])),E.usePointStyle){const kt={radius:be*Math.SQRT2/2,pointStyle:Gt.pointStyle,rotation:Gt.rotation,borderWidth:ui},Pt=O.xPlus(Vt,Te/2),Mi=pt+ae;i0(w,kt,Pt,Mi,E.pointStyleWidth&&Te)}else{const kt=pt+Math.max((J-be)/2,0),Pt=O.leftForLtr(Vt,Te),Mi=Zc(Gt.borderRadius);w.beginPath(),Object.values(Mi).some(Pn=>Pn!==0)?fd(w,{x:Pt,y:kt,w:Te,h:be,radius:Mi}):w.rect(Pt,kt,Te,be),w.fill(),ui!==0&&w.stroke()}w.restore()},ot=function(Vt,pt,Gt){Gc(w,Gt.text,Vt,pt+Ze/2,j,{strikethrough:Gt.hidden,textAlign:O.textAlign(Gt.textAlign)})},vt=this.isHorizontal(),ht=this._computeTitleHeight();vt?ce={x:Mr(b,this.left+Y,this.right-g[0]),y:this.top+Y+ht,line:0}:ce={x:this.left+Y,y:Mr(b,this.top+ht+Y,this.bottom-d[0].height),line:0},p0(this.ctx,a.textDirection);const gt=Ze+Y;this.legendItems.forEach((Vt,pt)=>{w.strokeStyle=Vt.fontColor,w.fillStyle=Vt.fontColor;const Gt=w.measureText(Vt.text).width,ui=O.textAlign(Vt.textAlign||(Vt.textAlign=E.textAlign)),kt=Te+ae+Gt;let Pt=ce.x,Mi=ce.y;O.setWidth(this.width),vt?pt>0&&Pt+kt+Y>this.right&&(Mi=ce.y+=gt,ce.line++,Pt=ce.x=Mr(b,this.left+Y,this.right-g[ce.line])):pt>0&&Mi+gt>this.bottom&&(Pt=ce.x=Pt+d[ce.line].width+Y,ce.line++,Mi=ce.y=Mr(b,this.top+ht+Y,this.bottom-d[ce.line].height));const Pn=O.x(Pt);if(je(Pn,Mi,Vt),Pt=pT(ui,Pt+Te+ae,vt?Pt+kt:this.right,a.rtl),ot(O.x(Pt),Mi,Vt),vt)ce.x+=kt+Y;else if(typeof Vt.text!="string"){const hn=j.lineHeight;ce.y+=Px(Vt,hn)+Y}else ce.y+=gt}),m0(this.ctx,a.textDirection)}drawTitle(){const a=this.options,d=a.title,g=Ws(d.font),w=Sr(d.padding);if(!d.display)return;const b=qh(a.rtl,this.left,this.width),E=this.ctx,i=d.position,O=g.size/2,j=w.top+O;let Y,J=this.left,ae=this.width;if(this.isHorizontal())ae=Math.max(...this.lineWidths),Y=this.top+j,J=Mr(a.align,J,this.right-ae);else{const Te=this.columnSizes.reduce((be,Ze)=>Math.max(be,Ze.height),0);Y=j+Mr(a.align,this.top,this.bottom-Te-a.labels.padding-this._computeTitleHeight())}const ce=Mr(i,J,J+ae);E.textAlign=b.textAlign(h_(i)),E.textBaseline="middle",E.strokeStyle=d.color,E.fillStyle=d.color,E.font=g.string,Gc(E,d.text,ce,Y,g)}_computeTitleHeight(){const a=this.options.title,d=Ws(a.font),g=Sr(a.padding);return a.display?d.lineHeight+g.height:0}_getLegendItemAt(a,d){let g,w,b;if(fl(a,this.left,this.right)&&fl(d,this.top,this.bottom)){for(b=this.legendHitBoxes,g=0;g<b.length;++g)if(w=b[g],fl(a,w.left,w.left+w.width)&&fl(d,w.top,w.top+w.height))return this.legendItems[g]}return null}handleEvent(a){const d=this.options;if(!KS(a.type,d))return;const g=this._getLegendItemAt(a.x,a.y);if(a.type==="mousemove"||a.type==="mouseout"){const w=this._hoveredItem,b=WS(w,g);w&&!b&&Jn(d.onLeave,[a,w,this],this),this._hoveredItem=g,g&&!b&&Jn(d.onHover,[a,g,this],this)}else g&&Jn(d.onClick,[a,g,this],this)}}function $S(m,a,d,g,w){const b=XS(g,m,a,d),E=YS(w,g,a.lineHeight);return{itemWidth:b,itemHeight:E}}function XS(m,a,d,g){let w=m.text;return w&&typeof w!="string"&&(w=w.reduce((b,E)=>b.length>E.length?b:E)),a+d.size/2+g.measureText(w).width}function YS(m,a,d){let g=m;return typeof a.text!="string"&&(g=Px(a,d)),g}function Px(m,a){const d=m.text?m.text.length:0;return a*d}function KS(m,a){return!!((m==="mousemove"||m==="mouseout")&&(a.onHover||a.onLeave)||a.onClick&&(m==="click"||m==="mouseup"))}var JS={id:"legend",_element:Ex,start(m,a,d){const g=m.legend=new Ex({ctx:m.ctx,options:d,chart:m});Er.configure(m,g,d),Er.addBox(m,g)},stop(m){Er.removeBox(m,m.legend),delete m.legend},beforeUpdate(m,a,d){const g=m.legend;Er.configure(m,g,d),g.options=d},afterUpdate(m){const a=m.legend;a.buildLabels(),a.adjustHitBoxes()},afterEvent(m,a){a.replay||m.legend.handleEvent(a.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(m,a,d){const g=a.datasetIndex,w=d.chart;w.isDatasetVisible(g)?(w.hide(g),a.hidden=!0):(w.show(g),a.hidden=!1)},onHover:null,onLeave:null,labels:{color:m=>m.chart.options.color,boxWidth:40,padding:10,generateLabels(m){const a=m.data.datasets,{labels:{usePointStyle:d,pointStyle:g,textAlign:w,color:b,useBorderRadius:E,borderRadius:i}}=m.legend.options;return m._getSortedDatasetMetas().map(O=>{const j=O.controller.getStyle(d?0:void 0),Y=Sr(j.borderWidth);return{text:a[O.index].label,fillStyle:j.backgroundColor,fontColor:b,hidden:!O.visible,lineCap:j.borderCapStyle,lineDash:j.borderDash,lineDashOffset:j.borderDashOffset,lineJoin:j.borderJoinStyle,lineWidth:(Y.width+Y.height)/4,strokeStyle:j.borderColor,pointStyle:g||j.pointStyle,rotation:j.rotation,textAlign:w||j.textAlign,borderRadius:E&&(i||j.borderRadius),datasetIndex:O.index}},this)}},title:{color:m=>m.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:m=>!m.startsWith("on"),labels:{_scriptable:m=>!["generateLabels","filter","sort"].includes(m)}}};class V_ extends gl{constructor(a){super(),this.chart=a.chart,this.options=a.options,this.ctx=a.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(a,d){const g=this.options;if(this.left=0,this.top=0,!g.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=a,this.height=this.bottom=d;const w=ns(g.text)?g.text.length:1;this._padding=Sr(g.padding);const b=w*Ws(g.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=b:this.width=b}isHorizontal(){const a=this.options.position;return a==="top"||a==="bottom"}_drawArgs(a){const{top:d,left:g,bottom:w,right:b,options:E}=this,i=E.align;let O=0,j,Y,J;return this.isHorizontal()?(Y=Mr(i,g,b),J=d+a,j=b-g):(E.position==="left"?(Y=g+a,J=Mr(i,w,d),O=ss*-.5):(Y=b-a,J=Mr(i,d,w),O=ss*.5),j=w-d),{titleX:Y,titleY:J,maxWidth:j,rotation:O}}draw(){const a=this.ctx,d=this.options;if(!d.display)return;const g=Ws(d.font),b=g.lineHeight/2+this._padding.top,{titleX:E,titleY:i,maxWidth:O,rotation:j}=this._drawArgs(b);Gc(a,d.text,0,0,g,{color:d.color,maxWidth:O,rotation:j,textAlign:h_(d.align),textBaseline:"middle",translation:[E,i]})}}function QS(m,a){const d=new V_({ctx:m.ctx,options:a,chart:m});Er.configure(m,d,a),Er.addBox(m,d),m.titleBlock=d}var eE={id:"title",_element:V_,start(m,a,d){QS(m,d)},stop(m){const a=m.titleBlock;Er.removeBox(m,a),delete m.titleBlock},beforeUpdate(m,a,d){const g=m.titleBlock;Er.configure(m,g,d),g.options=d},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Ep=new WeakMap;var tE={id:"subtitle",start(m,a,d){const g=new V_({ctx:m.ctx,options:d,chart:m});Er.configure(m,g,d),Er.addBox(m,g),Ep.set(m,g)},stop(m){Er.removeBox(m,Ep.get(m)),Ep.delete(m)},beforeUpdate(m,a,d){const g=Ep.get(m);Er.configure(m,g,d),g.options=d},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Sd={average(m){if(!m.length)return!1;let a,d,g=new Set,w=0,b=0;for(a=0,d=m.length;a<d;++a){const i=m[a].element;if(i&&i.hasValue()){const O=i.tooltipPosition();g.add(O.x),w+=O.y,++b}}return b===0||g.size===0?!1:{x:[...g].reduce((i,O)=>i+O)/g.size,y:w/b}},nearest(m,a){if(!m.length)return!1;let d=a.x,g=a.y,w=Number.POSITIVE_INFINITY,b,E,i;for(b=0,E=m.length;b<E;++b){const O=m[b].element;if(O&&O.hasValue()){const j=O.getCenterPoint(),Y=l_(a,j);Y<w&&(w=Y,i=O)}}if(i){const O=i.tooltipPosition();d=O.x,g=O.y}return{x:d,y:g}}};function Fa(m,a){return a&&(ns(a)?Array.prototype.push.apply(m,a):m.push(a)),m}function xl(m){return(typeof m=="string"||m instanceof String)&&m.indexOf(`
|
||
`)>-1?m.split(`
|
||
`):m}function iE(m,a){const{element:d,datasetIndex:g,index:w}=a,b=m.getDatasetMeta(g).controller,{label:E,value:i}=b.getLabelAndValue(w);return{chart:m,label:E,parsed:b.getParsed(w),raw:m.data.datasets[g].data[w],formattedValue:i,dataset:b.getDataset(),dataIndex:w,datasetIndex:g,element:d}}function Ax(m,a){const d=m.chart.ctx,{body:g,footer:w,title:b}=m,{boxWidth:E,boxHeight:i}=a,O=Ws(a.bodyFont),j=Ws(a.titleFont),Y=Ws(a.footerFont),J=b.length,ae=w.length,ce=g.length,Te=Sr(a.padding);let be=Te.height,Ze=0,je=g.reduce((ht,gt)=>ht+gt.before.length+gt.lines.length+gt.after.length,0);if(je+=m.beforeBody.length+m.afterBody.length,J&&(be+=J*j.lineHeight+(J-1)*a.titleSpacing+a.titleMarginBottom),je){const ht=a.displayColors?Math.max(i,O.lineHeight):O.lineHeight;be+=ce*ht+(je-ce)*O.lineHeight+(je-1)*a.bodySpacing}ae&&(be+=a.footerMarginTop+ae*Y.lineHeight+(ae-1)*a.footerSpacing);let ot=0;const vt=function(ht){Ze=Math.max(Ze,d.measureText(ht).width+ot)};return d.save(),d.font=j.string,Vn(m.title,vt),d.font=O.string,Vn(m.beforeBody.concat(m.afterBody),vt),ot=a.displayColors?E+2+a.boxPadding:0,Vn(g,ht=>{Vn(ht.before,vt),Vn(ht.lines,vt),Vn(ht.after,vt)}),ot=0,d.font=Y.string,Vn(m.footer,vt),d.restore(),Ze+=Te.width,{width:Ze,height:be}}function nE(m,a){const{y:d,height:g}=a;return d<g/2?"top":d>m.height-g/2?"bottom":"center"}function sE(m,a,d,g){const{x:w,width:b}=g,E=d.caretSize+d.caretPadding;if(m==="left"&&w+b+E>a.width||m==="right"&&w-b-E<0)return!0}function rE(m,a,d,g){const{x:w,width:b}=d,{width:E,chartArea:{left:i,right:O}}=m;let j="center";return g==="center"?j=w<=(i+O)/2?"left":"right":w<=b/2?j="left":w>=E-b/2&&(j="right"),sE(j,m,a,d)&&(j="center"),j}function Cx(m,a,d){const g=d.yAlign||a.yAlign||nE(m,d);return{xAlign:d.xAlign||a.xAlign||rE(m,a,d,g),yAlign:g}}function oE(m,a){let{x:d,width:g}=m;return a==="right"?d-=g:a==="center"&&(d-=g/2),d}function aE(m,a,d){let{y:g,height:w}=m;return a==="top"?g+=d:a==="bottom"?g-=w+d:g-=w/2,g}function Ix(m,a,d,g){const{caretSize:w,caretPadding:b,cornerRadius:E}=m,{xAlign:i,yAlign:O}=d,j=w+b,{topLeft:Y,topRight:J,bottomLeft:ae,bottomRight:ce}=Zc(E);let Te=oE(a,i);const be=aE(a,O,j);return O==="center"?i==="left"?Te+=j:i==="right"&&(Te-=j):i==="left"?Te-=Math.max(Y,ae)+w:i==="right"&&(Te+=Math.max(J,ce)+w),{x:nr(Te,0,g.width-a.width),y:nr(be,0,g.height-a.height)}}function Pp(m,a,d){const g=Sr(d.padding);return a==="center"?m.x+m.width/2:a==="right"?m.x+m.width-g.right:m.x+g.left}function Lx(m){return Fa([],xl(m))}function lE(m,a,d){return Yl(m,{tooltip:a,tooltipItems:d,type:"tooltip"})}function zx(m,a){const d=a&&a.dataset&&a.dataset.tooltip&&a.dataset.tooltip.callbacks;return d?m.override(d):m}const Dx={beforeTitle:dl,title(m){if(m.length>0){const a=m[0],d=a.chart.data.labels,g=d?d.length:0;if(this&&this.options&&this.options.mode==="dataset")return a.dataset.label||"";if(a.label)return a.label;if(g>0&&a.dataIndex<g)return d[a.dataIndex]}return""},afterTitle:dl,beforeBody:dl,beforeLabel:dl,label(m){if(this&&this.options&&this.options.mode==="dataset")return m.label+": "+m.formattedValue||m.formattedValue;let a=m.dataset.label||"";a&&(a+=": ");const d=m.formattedValue;return Sn(d)||(a+=d),a},labelColor(m){const d=m.chart.getDatasetMeta(m.datasetIndex).controller.getStyle(m.dataIndex);return{borderColor:d.borderColor,backgroundColor:d.backgroundColor,borderWidth:d.borderWidth,borderDash:d.borderDash,borderDashOffset:d.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(m){const d=m.chart.getDatasetMeta(m.datasetIndex).controller.getStyle(m.dataIndex);return{pointStyle:d.pointStyle,rotation:d.rotation}},afterLabel:dl,afterBody:dl,beforeFooter:dl,footer:dl,afterFooter:dl};function io(m,a,d,g){const w=m[a].call(d,g);return typeof w>"u"?Dx[a].call(d,g):w}class U_ extends gl{constructor(a){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=a.chart,this.options=a.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(a){this.options=a,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const a=this._cachedAnimations;if(a)return a;const d=this.chart,g=this.options.setContext(this.getContext()),w=g.enabled&&d.options.animation&&g.animations,b=new T0(this.chart,w);return w._cacheable&&(this._cachedAnimations=Object.freeze(b)),b}getContext(){return this.$context||(this.$context=lE(this.chart.getContext(),this,this._tooltipItems))}getTitle(a,d){const{callbacks:g}=d,w=io(g,"beforeTitle",this,a),b=io(g,"title",this,a),E=io(g,"afterTitle",this,a);let i=[];return i=Fa(i,xl(w)),i=Fa(i,xl(b)),i=Fa(i,xl(E)),i}getBeforeBody(a,d){return Lx(io(d.callbacks,"beforeBody",this,a))}getBody(a,d){const{callbacks:g}=d,w=[];return Vn(a,b=>{const E={before:[],lines:[],after:[]},i=zx(g,b);Fa(E.before,xl(io(i,"beforeLabel",this,b))),Fa(E.lines,io(i,"label",this,b)),Fa(E.after,xl(io(i,"afterLabel",this,b))),w.push(E)}),w}getAfterBody(a,d){return Lx(io(d.callbacks,"afterBody",this,a))}getFooter(a,d){const{callbacks:g}=d,w=io(g,"beforeFooter",this,a),b=io(g,"footer",this,a),E=io(g,"afterFooter",this,a);let i=[];return i=Fa(i,xl(w)),i=Fa(i,xl(b)),i=Fa(i,xl(E)),i}_createItems(a){const d=this._active,g=this.chart.data,w=[],b=[],E=[];let i=[],O,j;for(O=0,j=d.length;O<j;++O)i.push(iE(this.chart,d[O]));return a.filter&&(i=i.filter((Y,J,ae)=>a.filter(Y,J,ae,g))),a.itemSort&&(i=i.sort((Y,J)=>a.itemSort(Y,J,g))),Vn(i,Y=>{const J=zx(a.callbacks,Y);w.push(io(J,"labelColor",this,Y)),b.push(io(J,"labelPointStyle",this,Y)),E.push(io(J,"labelTextColor",this,Y))}),this.labelColors=w,this.labelPointStyles=b,this.labelTextColors=E,this.dataPoints=i,i}update(a,d){const g=this.options.setContext(this.getContext()),w=this._active;let b,E=[];if(!w.length)this.opacity!==0&&(b={opacity:0});else{const i=Sd[g.position].call(this,w,this._eventPosition);E=this._createItems(g),this.title=this.getTitle(E,g),this.beforeBody=this.getBeforeBody(E,g),this.body=this.getBody(E,g),this.afterBody=this.getAfterBody(E,g),this.footer=this.getFooter(E,g);const O=this._size=Ax(this,g),j=Object.assign({},i,O),Y=Cx(this.chart,g,j),J=Ix(g,j,Y,this.chart);this.xAlign=Y.xAlign,this.yAlign=Y.yAlign,b={opacity:1,x:J.x,y:J.y,width:O.width,height:O.height,caretX:i.x,caretY:i.y}}this._tooltipItems=E,this.$context=void 0,b&&this._resolveAnimations().update(this,b),a&&g.external&&g.external.call(this,{chart:this.chart,tooltip:this,replay:d})}drawCaret(a,d,g,w){const b=this.getCaretPosition(a,g,w);d.lineTo(b.x1,b.y1),d.lineTo(b.x2,b.y2),d.lineTo(b.x3,b.y3)}getCaretPosition(a,d,g){const{xAlign:w,yAlign:b}=this,{caretSize:E,cornerRadius:i}=g,{topLeft:O,topRight:j,bottomLeft:Y,bottomRight:J}=Zc(i),{x:ae,y:ce}=a,{width:Te,height:be}=d;let Ze,je,ot,vt,ht,gt;return b==="center"?(ht=ce+be/2,w==="left"?(Ze=ae,je=Ze-E,vt=ht+E,gt=ht-E):(Ze=ae+Te,je=Ze+E,vt=ht-E,gt=ht+E),ot=Ze):(w==="left"?je=ae+Math.max(O,Y)+E:w==="right"?je=ae+Te-Math.max(j,J)-E:je=this.caretX,b==="top"?(vt=ce,ht=vt-E,Ze=je-E,ot=je+E):(vt=ce+be,ht=vt+E,Ze=je+E,ot=je-E),gt=vt),{x1:Ze,x2:je,x3:ot,y1:vt,y2:ht,y3:gt}}drawTitle(a,d,g){const w=this.title,b=w.length;let E,i,O;if(b){const j=qh(g.rtl,this.x,this.width);for(a.x=Pp(this,g.titleAlign,g),d.textAlign=j.textAlign(g.titleAlign),d.textBaseline="middle",E=Ws(g.titleFont),i=g.titleSpacing,d.fillStyle=g.titleColor,d.font=E.string,O=0;O<b;++O)d.fillText(w[O],j.x(a.x),a.y+E.lineHeight/2),a.y+=E.lineHeight+i,O+1===b&&(a.y+=g.titleMarginBottom-i)}}_drawColorBox(a,d,g,w,b){const E=this.labelColors[g],i=this.labelPointStyles[g],{boxHeight:O,boxWidth:j}=b,Y=Ws(b.bodyFont),J=Pp(this,"left",b),ae=w.x(J),ce=O<Y.lineHeight?(Y.lineHeight-O)/2:0,Te=d.y+ce;if(b.usePointStyle){const be={radius:Math.min(j,O)/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:1},Ze=w.leftForLtr(ae,j)+j/2,je=Te+O/2;a.strokeStyle=b.multiKeyBackground,a.fillStyle=b.multiKeyBackground,m_(a,be,Ze,je),a.strokeStyle=E.borderColor,a.fillStyle=E.backgroundColor,m_(a,be,Ze,je)}else{a.lineWidth=gn(E.borderWidth)?Math.max(...Object.values(E.borderWidth)):E.borderWidth||1,a.strokeStyle=E.borderColor,a.setLineDash(E.borderDash||[]),a.lineDashOffset=E.borderDashOffset||0;const be=w.leftForLtr(ae,j),Ze=w.leftForLtr(w.xPlus(ae,1),j-2),je=Zc(E.borderRadius);Object.values(je).some(ot=>ot!==0)?(a.beginPath(),a.fillStyle=b.multiKeyBackground,fd(a,{x:be,y:Te,w:j,h:O,radius:je}),a.fill(),a.stroke(),a.fillStyle=E.backgroundColor,a.beginPath(),fd(a,{x:Ze,y:Te+1,w:j-2,h:O-2,radius:je}),a.fill()):(a.fillStyle=b.multiKeyBackground,a.fillRect(be,Te,j,O),a.strokeRect(be,Te,j,O),a.fillStyle=E.backgroundColor,a.fillRect(Ze,Te+1,j-2,O-2))}a.fillStyle=this.labelTextColors[g]}drawBody(a,d,g){const{body:w}=this,{bodySpacing:b,bodyAlign:E,displayColors:i,boxHeight:O,boxWidth:j,boxPadding:Y}=g,J=Ws(g.bodyFont);let ae=J.lineHeight,ce=0;const Te=qh(g.rtl,this.x,this.width),be=function(Gt){d.fillText(Gt,Te.x(a.x+ce),a.y+ae/2),a.y+=ae+b},Ze=Te.textAlign(E);let je,ot,vt,ht,gt,Vt,pt;for(d.textAlign=E,d.textBaseline="middle",d.font=J.string,a.x=Pp(this,Ze,g),d.fillStyle=g.bodyColor,Vn(this.beforeBody,be),ce=i&&Ze!=="right"?E==="center"?j/2+Y:j+2+Y:0,ht=0,Vt=w.length;ht<Vt;++ht){for(je=w[ht],ot=this.labelTextColors[ht],d.fillStyle=ot,Vn(je.before,be),vt=je.lines,i&&vt.length&&(this._drawColorBox(d,a,ht,Te,g),ae=Math.max(J.lineHeight,O)),gt=0,pt=vt.length;gt<pt;++gt)be(vt[gt]),ae=J.lineHeight;Vn(je.after,be)}ce=0,ae=J.lineHeight,Vn(this.afterBody,be),a.y-=b}drawFooter(a,d,g){const w=this.footer,b=w.length;let E,i;if(b){const O=qh(g.rtl,this.x,this.width);for(a.x=Pp(this,g.footerAlign,g),a.y+=g.footerMarginTop,d.textAlign=O.textAlign(g.footerAlign),d.textBaseline="middle",E=Ws(g.footerFont),d.fillStyle=g.footerColor,d.font=E.string,i=0;i<b;++i)d.fillText(w[i],O.x(a.x),a.y+E.lineHeight/2),a.y+=E.lineHeight+g.footerSpacing}}drawBackground(a,d,g,w){const{xAlign:b,yAlign:E}=this,{x:i,y:O}=a,{width:j,height:Y}=g,{topLeft:J,topRight:ae,bottomLeft:ce,bottomRight:Te}=Zc(w.cornerRadius);d.fillStyle=w.backgroundColor,d.strokeStyle=w.borderColor,d.lineWidth=w.borderWidth,d.beginPath(),d.moveTo(i+J,O),E==="top"&&this.drawCaret(a,d,g,w),d.lineTo(i+j-ae,O),d.quadraticCurveTo(i+j,O,i+j,O+ae),E==="center"&&b==="right"&&this.drawCaret(a,d,g,w),d.lineTo(i+j,O+Y-Te),d.quadraticCurveTo(i+j,O+Y,i+j-Te,O+Y),E==="bottom"&&this.drawCaret(a,d,g,w),d.lineTo(i+ce,O+Y),d.quadraticCurveTo(i,O+Y,i,O+Y-ce),E==="center"&&b==="left"&&this.drawCaret(a,d,g,w),d.lineTo(i,O+J),d.quadraticCurveTo(i,O,i+J,O),d.closePath(),d.fill(),w.borderWidth>0&&d.stroke()}_updateAnimationTarget(a){const d=this.chart,g=this.$animations,w=g&&g.x,b=g&&g.y;if(w||b){const E=Sd[a.position].call(this,this._active,this._eventPosition);if(!E)return;const i=this._size=Ax(this,a),O=Object.assign({},E,this._size),j=Cx(d,a,O),Y=Ix(a,O,j,d);(w._to!==Y.x||b._to!==Y.y)&&(this.xAlign=j.xAlign,this.yAlign=j.yAlign,this.width=i.width,this.height=i.height,this.caretX=E.x,this.caretY=E.y,this._resolveAnimations().update(this,Y))}}_willRender(){return!!this.opacity}draw(a){const d=this.options.setContext(this.getContext());let g=this.opacity;if(!g)return;this._updateAnimationTarget(d);const w={width:this.width,height:this.height},b={x:this.x,y:this.y};g=Math.abs(g)<.001?0:g;const E=Sr(d.padding),i=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;d.enabled&&i&&(a.save(),a.globalAlpha=g,this.drawBackground(b,a,w,d),p0(a,d.textDirection),b.y+=E.top,this.drawTitle(b,a,d),this.drawBody(b,a,d),this.drawFooter(b,a,d),m0(a,d.textDirection),a.restore())}getActiveElements(){return this._active||[]}setActiveElements(a,d){const g=this._active,w=a.map(({datasetIndex:i,index:O})=>{const j=this.chart.getDatasetMeta(i);if(!j)throw new Error("Cannot find a dataset at index "+i);return{datasetIndex:i,element:j.data[O],index:O}}),b=!Jf(g,w),E=this._positionChanged(w,d);(b||E)&&(this._active=w,this._eventPosition=d,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(a,d,g=!0){if(d&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const w=this.options,b=this._active||[],E=this._getActiveElements(a,b,d,g),i=this._positionChanged(E,a),O=d||!Jf(E,b)||i;return O&&(this._active=E,(w.enabled||w.external)&&(this._eventPosition={x:a.x,y:a.y},this.update(!0,d))),O}_getActiveElements(a,d,g,w){const b=this.options;if(a.type==="mouseout")return[];if(!w)return d.filter(i=>this.chart.data.datasets[i.datasetIndex]&&this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index)!==void 0);const E=this.chart.getElementsAtEventForMode(a,b.mode,b,g);return b.reverse&&E.reverse(),E}_positionChanged(a,d){const{caretX:g,caretY:w,options:b}=this,E=Sd[b.position].call(this,a,d);return E!==!1&&(g!==E.x||w!==E.y)}}Yt(U_,"positioners",Sd);var cE={id:"tooltip",_element:U_,positioners:Sd,afterInit(m,a,d){d&&(m.tooltip=new U_({chart:m,options:d}))},beforeUpdate(m,a,d){m.tooltip&&m.tooltip.initialize(d)},reset(m,a,d){m.tooltip&&m.tooltip.initialize(d)},afterDraw(m){const a=m.tooltip;if(a&&a._willRender()){const d={tooltip:a};if(m.notifyPlugins("beforeTooltipDraw",{...d,cancelable:!0})===!1)return;a.draw(m.ctx),m.notifyPlugins("afterTooltipDraw",d)}},afterEvent(m,a){if(m.tooltip){const d=a.replay;m.tooltip.handleEvent(a.event,d,a.inChartArea)&&(a.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(m,a)=>a.bodyFont.size,boxWidth:(m,a)=>a.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Dx},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:m=>m!=="filter"&&m!=="itemSort"&&m!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},hE=Object.freeze({__proto__:null,Colors:wS,Decimation:ES,Filler:qS,Legend:JS,SubTitle:tE,Title:eE,Tooltip:cE});const uE=(m,a,d,g)=>(typeof a=="string"?(d=m.push(a)-1,g.unshift({index:d,label:a})):isNaN(a)&&(d=null),d);function dE(m,a,d,g){const w=m.indexOf(a);if(w===-1)return uE(m,a,d,g);const b=m.lastIndexOf(a);return w!==b?d:w}const fE=(m,a)=>m===null?null:nr(Math.round(m),0,a);function kx(m){const a=this.getLabels();return m>=0&&m<a.length?a[m]:m}class j_ extends Yc{constructor(a){super(a),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(a){const d=this._addedLabels;if(d.length){const g=this.getLabels();for(const{index:w,label:b}of d)g[w]===b&&g.splice(w,1);this._addedLabels=[]}super.init(a)}parse(a,d){if(Sn(a))return null;const g=this.getLabels();return d=isFinite(d)&&g[d]===a?d:dE(g,a,Ji(d,a),this._addedLabels),fE(d,g.length-1)}determineDataLimits(){const{minDefined:a,maxDefined:d}=this.getUserBounds();let{min:g,max:w}=this.getMinMax(!0);this.options.bounds==="ticks"&&(a||(g=0),d||(w=this.getLabels().length-1)),this.min=g,this.max=w}buildTicks(){const a=this.min,d=this.max,g=this.options.offset,w=[];let b=this.getLabels();b=a===0&&d===b.length-1?b:b.slice(a,d+1),this._valueRange=Math.max(b.length-(g?0:1),1),this._startValue=this.min-(g?.5:0);for(let E=a;E<=d;E++)w.push({value:E});return w}getLabelForValue(a){return kx.call(this,a)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(a){return typeof a!="number"&&(a=this.parse(a)),a===null?NaN:this.getPixelForDecimal((a-this._startValue)/this._valueRange)}getPixelForTick(a){const d=this.ticks;return a<0||a>d.length-1?null:this.getPixelForValue(d[a].value)}getValueForPixel(a){return Math.round(this._startValue+this.getDecimalForPixel(a)*this._valueRange)}getBasePixel(){return this.bottom}}Yt(j_,"id","category"),Yt(j_,"defaults",{ticks:{callback:kx}});function pE(m,a){const d=[],{bounds:w,step:b,min:E,max:i,precision:O,count:j,maxTicks:Y,maxDigits:J,includeBounds:ae}=m,ce=b||1,Te=Y-1,{min:be,max:Ze}=a,je=!Sn(E),ot=!Sn(i),vt=!Sn(j),ht=(Ze-be)/(J+1);let gt=Ny((Ze-be)/Te/ce)*ce,Vt,pt,Gt,ui;if(gt<1e-14&&!je&&!ot)return[{value:be},{value:Ze}];ui=Math.ceil(Ze/gt)-Math.floor(be/gt),ui>Te&&(gt=Ny(ui*gt/Te/ce)*ce),Sn(O)||(Vt=Math.pow(10,O),gt=Math.ceil(gt*Vt)/Vt),w==="ticks"?(pt=Math.floor(be/gt)*gt,Gt=Math.ceil(Ze/gt)*gt):(pt=be,Gt=Ze),je&&ot&&b&&aT((i-E)/b,gt/1e3)?(ui=Math.round(Math.min((i-E)/gt,Y)),gt=(i-E)/ui,pt=E,Gt=i):vt?(pt=je?E:pt,Gt=ot?i:Gt,ui=j-1,gt=(Gt-pt)/ui):(ui=(Gt-pt)/gt,ld(ui,Math.round(ui),gt/1e3)?ui=Math.round(ui):ui=Math.ceil(ui));const kt=Math.max(Uy(gt),Uy(pt));Vt=Math.pow(10,Sn(O)?kt:O),pt=Math.round(pt*Vt)/Vt,Gt=Math.round(Gt*Vt)/Vt;let Pt=0;for(je&&(ae&&pt!==E?(d.push({value:E}),pt<E&&Pt++,ld(Math.round((pt+Pt*gt)*Vt)/Vt,E,Rx(E,ht,m))&&Pt++):pt<E&&Pt++);Pt<ui;++Pt){const Mi=Math.round((pt+Pt*gt)*Vt)/Vt;if(ot&&Mi>i)break;d.push({value:Mi})}return ot&&ae&&Gt!==i?d.length&&ld(d[d.length-1].value,i,Rx(i,ht,m))?d[d.length-1].value=i:d.push({value:i}):(!ot||Gt===i)&&d.push({value:Gt}),d}function Rx(m,a,{horizontal:d,minRotation:g}){const w=aa(g),b=(d?Math.sin(w):Math.cos(w))||.001,E=.75*a*(""+m).length;return Math.min(a/b,E)}class Ap extends Yc{constructor(a){super(a),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(a,d){return Sn(a)||(typeof a=="number"||a instanceof Number)&&!isFinite(+a)?null:+a}handleTickRangeOptions(){const{beginAtZero:a}=this.options,{minDefined:d,maxDefined:g}=this.getUserBounds();let{min:w,max:b}=this;const E=O=>w=d?w:O,i=O=>b=g?b:O;if(a){const O=Ra(w),j=Ra(b);O<0&&j<0?i(0):O>0&&j>0&&E(0)}if(w===b){let O=b===0?1:Math.abs(b*.05);i(b+O),a||E(w-O)}this.min=w,this.max=b}getTickLimit(){const a=this.options.ticks;let{maxTicksLimit:d,stepSize:g}=a,w;return g?(w=Math.ceil(this.max/g)-Math.floor(this.min/g)+1,w>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${g} would result generating up to ${w} ticks. Limiting to 1000.`),w=1e3)):(w=this.computeTickLimit(),d=d||11),d&&(w=Math.min(d,w)),w}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const a=this.options,d=a.ticks;let g=this.getTickLimit();g=Math.max(2,g);const w={maxTicks:g,bounds:a.bounds,min:a.min,max:a.max,precision:d.precision,step:d.stepSize,count:d.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:d.minRotation||0,includeBounds:d.includeBounds!==!1},b=this._range||this,E=pE(w,b);return a.bounds==="ticks"&&Vy(E,this,"value"),a.reverse?(E.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),E}configure(){const a=this.ticks;let d=this.min,g=this.max;if(super.configure(),this.options.offset&&a.length){const w=(g-d)/Math.max(a.length-1,1)/2;d-=w,g+=w}this._startValue=d,this._endValue=g,this._valueRange=g-d}getLabelForValue(a){return ud(a,this.chart.options.locale,this.options.ticks.format)}}class G_ extends Ap{determineDataLimits(){const{min:a,max:d}=this.getMinMax(!0);this.min=Ss(a)?a:0,this.max=Ss(d)?d:1,this.handleTickRangeOptions()}computeTickLimit(){const a=this.isHorizontal(),d=a?this.width:this.height,g=aa(this.options.ticks.minRotation),w=(a?Math.sin(g):Math.cos(g))||.001,b=this._resolveTickFontOptions(0);return Math.ceil(d/Math.min(40,b.lineHeight/w))}getPixelForValue(a){return a===null?NaN:this.getPixelForDecimal((a-this._startValue)/this._valueRange)}getValueForPixel(a){return this._startValue+this.getDecimalForPixel(a)*this._valueRange}}Yt(G_,"id","linear"),Yt(G_,"defaults",{ticks:{callback:ip.formatters.numeric}});const Ed=m=>Math.floor(Xl(m)),Kc=(m,a)=>Math.pow(10,Ed(m)+a);function Ox(m){return m/Math.pow(10,Ed(m))===1}function Fx(m,a,d){const g=Math.pow(10,d),w=Math.floor(m/g);return Math.ceil(a/g)-w}function mE(m,a){const d=a-m;let g=Ed(d);for(;Fx(m,a,g)>10;)g++;for(;Fx(m,a,g)<10;)g--;return Math.min(g,Ed(m))}function _E(m,{min:a,max:d}){a=yo(m.min,a);const g=[],w=Ed(a);let b=mE(a,d),E=b<0?Math.pow(10,Math.abs(b)):1;const i=Math.pow(10,b),O=w>b?Math.pow(10,w):0,j=Math.round((a-O)*E)/E,Y=Math.floor((a-O)/i/10)*i*10;let J=Math.floor((j-Y)/Math.pow(10,b)),ae=yo(m.min,Math.round((O+Y+J*Math.pow(10,b))*E)/E);for(;ae<d;)g.push({value:ae,major:Ox(ae),significand:J}),J>=10?J=J<15?15:20:J++,J>=20&&(b++,J=2,E=b>=0?1:E),ae=Math.round((O+Y+J*Math.pow(10,b))*E)/E;const ce=yo(m.max,ae);return g.push({value:ce,major:Ox(ce),significand:J}),g}class Z_ extends Yc{constructor(a){super(a),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(a,d){const g=Ap.prototype.parse.apply(this,[a,d]);if(g===0){this._zero=!0;return}return Ss(g)&&g>0?g:null}determineDataLimits(){const{min:a,max:d}=this.getMinMax(!0);this.min=Ss(a)?Math.max(0,a):null,this.max=Ss(d)?Math.max(0,d):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!Ss(this._userMin)&&(this.min=a===Kc(this.min,0)?Kc(this.min,-1):Kc(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:a,maxDefined:d}=this.getUserBounds();let g=this.min,w=this.max;const b=i=>g=a?g:i,E=i=>w=d?w:i;g===w&&(g<=0?(b(1),E(10)):(b(Kc(g,-1)),E(Kc(w,1)))),g<=0&&b(Kc(w,-1)),w<=0&&E(Kc(g,1)),this.min=g,this.max=w}buildTicks(){const a=this.options,d={min:this._userMin,max:this._userMax},g=_E(d,this);return a.bounds==="ticks"&&Vy(g,this,"value"),a.reverse?(g.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),g}getLabelForValue(a){return a===void 0?"0":ud(a,this.chart.options.locale,this.options.ticks.format)}configure(){const a=this.min;super.configure(),this._startValue=Xl(a),this._valueRange=Xl(this.max)-Xl(a)}getPixelForValue(a){return(a===void 0||a===0)&&(a=this.min),a===null||isNaN(a)?NaN:this.getPixelForDecimal(a===this.min?0:(Xl(a)-this._startValue)/this._valueRange)}getValueForPixel(a){const d=this.getDecimalForPixel(a);return Math.pow(10,this._startValue+d*this._valueRange)}}Yt(Z_,"id","logarithmic"),Yt(Z_,"defaults",{ticks:{callback:ip.formatters.logarithmic,major:{enabled:!0}}});function H_(m){const a=m.ticks;if(a.display&&m.display){const d=Sr(a.backdropPadding);return Ji(a.font&&a.font.size,fs.font.size)+d.height}return 0}function gE(m,a,d){return d=ns(d)?d:[d],{w:MT(m,a.string,d),h:d.length*a.lineHeight}}function Bx(m,a,d,g,w){return m===g||m===w?{start:a-d/2,end:a+d/2}:m<g||m>w?{start:a-d,end:a}:{start:a,end:a+d}}function yE(m){const a={l:m.left+m._padding.left,r:m.right-m._padding.right,t:m.top+m._padding.top,b:m.bottom-m._padding.bottom},d=Object.assign({},a),g=[],w=[],b=m._pointLabels.length,E=m.options.pointLabels,i=E.centerPointLabels?ss/b:0;for(let O=0;O<b;O++){const j=E.setContext(m.getPointLabelContext(O));w[O]=j.padding;const Y=m.getPointPosition(O,m.drawingArea+w[O],i),J=Ws(j.font),ae=gE(m.ctx,J,m._pointLabels[O]);g[O]=ae;const ce=xo(m.getIndexAngle(O)+i),Te=Math.round(a_(ce)),be=Bx(Te,Y.x,ae.w,0,180),Ze=Bx(Te,Y.y,ae.h,90,270);xE(d,a,ce,be,Ze)}m.setCenterPoint(a.l-d.l,d.r-a.r,a.t-d.t,d.b-a.b),m._pointLabelItems=wE(m,g,w)}function xE(m,a,d,g,w){const b=Math.abs(Math.sin(d)),E=Math.abs(Math.cos(d));let i=0,O=0;g.start<a.l?(i=(a.l-g.start)/b,m.l=Math.min(m.l,a.l-i)):g.end>a.r&&(i=(g.end-a.r)/b,m.r=Math.max(m.r,a.r+i)),w.start<a.t?(O=(a.t-w.start)/E,m.t=Math.min(m.t,a.t-O)):w.end>a.b&&(O=(w.end-a.b)/E,m.b=Math.max(m.b,a.b+O))}function vE(m,a,d){const g=m.drawingArea,{extra:w,additionalAngle:b,padding:E,size:i}=d,O=m.getPointPosition(a,g+w+E,b),j=Math.round(a_(xo(O.angle+Cs))),Y=SE(O.y,i.h,j),J=TE(j),ae=ME(O.x,i.w,J);return{visible:!0,x:O.x,y:Y,textAlign:J,left:ae,top:Y,right:ae+i.w,bottom:Y+i.h}}function bE(m,a){if(!a)return!0;const{left:d,top:g,right:w,bottom:b}=m;return!(ml({x:d,y:g},a)||ml({x:d,y:b},a)||ml({x:w,y:g},a)||ml({x:w,y:b},a))}function wE(m,a,d){const g=[],w=m._pointLabels.length,b=m.options,{centerPointLabels:E,display:i}=b.pointLabels,O={extra:H_(b)/2,additionalAngle:E?ss/w:0};let j;for(let Y=0;Y<w;Y++){O.padding=d[Y],O.size=a[Y];const J=vE(m,Y,O);g.push(J),i==="auto"&&(J.visible=bE(J,j),J.visible&&(j=J))}return g}function TE(m){return m===0||m===180?"center":m<180?"left":"right"}function ME(m,a,d){return d==="right"?m-=a:d==="center"&&(m-=a/2),m}function SE(m,a,d){return d===90||d===270?m-=a/2:(d>270||d<90)&&(m-=a),m}function EE(m,a,d){const{left:g,top:w,right:b,bottom:E}=d,{backdropColor:i}=a;if(!Sn(i)){const O=Zc(a.borderRadius),j=Sr(a.backdropPadding);m.fillStyle=i;const Y=g-j.left,J=w-j.top,ae=b-g+j.width,ce=E-w+j.height;Object.values(O).some(Te=>Te!==0)?(m.beginPath(),fd(m,{x:Y,y:J,w:ae,h:ce,radius:O}),m.fill()):m.fillRect(Y,J,ae,ce)}}function PE(m,a){const{ctx:d,options:{pointLabels:g}}=m;for(let w=a-1;w>=0;w--){const b=m._pointLabelItems[w];if(!b.visible)continue;const E=g.setContext(m.getPointLabelContext(w));EE(d,E,b);const i=Ws(E.font),{x:O,y:j,textAlign:Y}=b;Gc(d,m._pointLabels[w],O,j+i.lineHeight/2,i,{color:E.color,textAlign:Y,textBaseline:"middle"})}}function Nx(m,a,d,g){const{ctx:w}=m;if(d)w.arc(m.xCenter,m.yCenter,a,0,rs);else{let b=m.getPointPosition(0,a);w.moveTo(b.x,b.y);for(let E=1;E<g;E++)b=m.getPointPosition(E,a),w.lineTo(b.x,b.y)}}function AE(m,a,d,g,w){const b=m.ctx,E=a.circular,{color:i,lineWidth:O}=a;!E&&!g||!i||!O||d<0||(b.save(),b.strokeStyle=i,b.lineWidth=O,b.setLineDash(w.dash||[]),b.lineDashOffset=w.dashOffset,b.beginPath(),Nx(m,d,E,g),b.closePath(),b.stroke(),b.restore())}function CE(m,a,d){return Yl(m,{label:d,index:a,type:"pointLabel"})}class Pd extends Ap{constructor(a){super(a),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const a=this._padding=Sr(H_(this.options)/2),d=this.width=this.maxWidth-a.width,g=this.height=this.maxHeight-a.height;this.xCenter=Math.floor(this.left+d/2+a.left),this.yCenter=Math.floor(this.top+g/2+a.top),this.drawingArea=Math.floor(Math.min(d,g)/2)}determineDataLimits(){const{min:a,max:d}=this.getMinMax(!1);this.min=Ss(a)&&!isNaN(a)?a:0,this.max=Ss(d)&&!isNaN(d)?d:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/H_(this.options))}generateTickLabels(a){Ap.prototype.generateTickLabels.call(this,a),this._pointLabels=this.getLabels().map((d,g)=>{const w=Jn(this.options.pointLabels.callback,[d,g],this);return w||w===0?w:""}).filter((d,g)=>this.chart.getDataVisibility(g))}fit(){const a=this.options;a.display&&a.pointLabels.display?yE(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(a,d,g,w){this.xCenter+=Math.floor((a-d)/2),this.yCenter+=Math.floor((g-w)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(a,d,g,w))}getIndexAngle(a){const d=rs/(this._pointLabels.length||1),g=this.options.startAngle||0;return xo(a*d+aa(g))}getDistanceFromCenterForValue(a){if(Sn(a))return NaN;const d=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-a)*d:(a-this.min)*d}getValueForDistanceFromCenter(a){if(Sn(a))return NaN;const d=a/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-d:this.min+d}getPointLabelContext(a){const d=this._pointLabels||[];if(a>=0&&a<d.length){const g=d[a];return CE(this.getContext(),a,g)}}getPointPosition(a,d,g=0){const w=this.getIndexAngle(a)-Cs+g;return{x:Math.cos(w)*d+this.xCenter,y:Math.sin(w)*d+this.yCenter,angle:w}}getPointPositionForValue(a,d){return this.getPointPosition(a,this.getDistanceFromCenterForValue(d))}getBasePosition(a){return this.getPointPositionForValue(a||0,this.getBaseValue())}getPointLabelPosition(a){const{left:d,top:g,right:w,bottom:b}=this._pointLabelItems[a];return{left:d,top:g,right:w,bottom:b}}drawBackground(){const{backgroundColor:a,grid:{circular:d}}=this.options;if(a){const g=this.ctx;g.save(),g.beginPath(),Nx(this,this.getDistanceFromCenterForValue(this._endValue),d,this._pointLabels.length),g.closePath(),g.fillStyle=a,g.fill(),g.restore()}}drawGrid(){const a=this.ctx,d=this.options,{angleLines:g,grid:w,border:b}=d,E=this._pointLabels.length;let i,O,j;if(d.pointLabels.display&&PE(this,E),w.display&&this.ticks.forEach((Y,J)=>{if(J!==0||J===0&&this.min<0){O=this.getDistanceFromCenterForValue(Y.value);const ae=this.getContext(J),ce=w.setContext(ae),Te=b.setContext(ae);AE(this,ce,O,E,Te)}}),g.display){for(a.save(),i=E-1;i>=0;i--){const Y=g.setContext(this.getPointLabelContext(i)),{color:J,lineWidth:ae}=Y;!ae||!J||(a.lineWidth=ae,a.strokeStyle=J,a.setLineDash(Y.borderDash),a.lineDashOffset=Y.borderDashOffset,O=this.getDistanceFromCenterForValue(d.reverse?this.min:this.max),j=this.getPointPosition(i,O),a.beginPath(),a.moveTo(this.xCenter,this.yCenter),a.lineTo(j.x,j.y),a.stroke())}a.restore()}}drawBorder(){}drawLabels(){const a=this.ctx,d=this.options,g=d.ticks;if(!g.display)return;const w=this.getIndexAngle(0);let b,E;a.save(),a.translate(this.xCenter,this.yCenter),a.rotate(w),a.textAlign="center",a.textBaseline="middle",this.ticks.forEach((i,O)=>{if(O===0&&this.min>=0&&!d.reverse)return;const j=g.setContext(this.getContext(O)),Y=Ws(j.font);if(b=this.getDistanceFromCenterForValue(this.ticks[O].value),j.showLabelBackdrop){a.font=Y.string,E=a.measureText(i.label).width,a.fillStyle=j.backdropColor;const J=Sr(j.backdropPadding);a.fillRect(-E/2-J.left,-b-Y.size/2-J.top,E+J.width,Y.size+J.height)}Gc(a,i.label,0,-b,Y,{color:j.color,strokeColor:j.textStrokeColor,strokeWidth:j.textStrokeWidth})}),a.restore()}drawTitle(){}}Yt(Pd,"id","radialLinear"),Yt(Pd,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:ip.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(a){return a},padding:5,centerPointLabels:!1}}),Yt(Pd,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),Yt(Pd,"descriptors",{angleLines:{_fallback:"grid"}});const Cp={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},no=Object.keys(Cp);function Vx(m,a){return m-a}function Ux(m,a){if(Sn(a))return null;const d=m._adapter,{parser:g,round:w,isoWeekday:b}=m._parseOpts;let E=a;return typeof g=="function"&&(E=g(E)),Ss(E)||(E=typeof g=="string"?d.parse(E,g):d.parse(E)),E===null?null:(w&&(E=w==="week"&&(Gh(b)||b===!0)?d.startOf(E,"isoWeek",b):d.startOf(E,w)),+E)}function jx(m,a,d,g){const w=no.length;for(let b=no.indexOf(m);b<w-1;++b){const E=Cp[no[b]],i=E.steps?E.steps:Number.MAX_SAFE_INTEGER;if(E.common&&Math.ceil((d-a)/(i*E.size))<=g)return no[b]}return no[w-1]}function IE(m,a,d,g,w){for(let b=no.length-1;b>=no.indexOf(d);b--){const E=no[b];if(Cp[E].common&&m._adapter.diff(w,g,E)>=a-1)return E}return no[d?no.indexOf(d):0]}function LE(m){for(let a=no.indexOf(m)+1,d=no.length;a<d;++a)if(Cp[no[a]].common)return no[a]}function Gx(m,a,d){if(!d)m[a]=!0;else if(d.length){const{lo:g,hi:w}=c_(d,a),b=d[g]>=a?d[g]:d[w];m[b]=!0}}function zE(m,a,d,g){const w=m._adapter,b=+w.startOf(a[0].value,g),E=a[a.length-1].value;let i,O;for(i=b;i<=E;i=+w.add(i,1,g))O=d[i],O>=0&&(a[O].major=!0);return a}function Zx(m,a,d){const g=[],w={},b=a.length;let E,i;for(E=0;E<b;++E)i=a[E],w[i]=E,g.push({value:i,major:!1});return b===0||!d?g:zE(m,g,w,d)}class Ad extends Yc{constructor(a){super(a),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(a,d={}){const g=a.time||(a.time={}),w=this._adapter=new V2._date(a.adapters.date);w.init(d),od(g.displayFormats,w.formats()),this._parseOpts={parser:g.parser,round:g.round,isoWeekday:g.isoWeekday},super.init(a),this._normalized=d.normalized}parse(a,d){return a===void 0?null:Ux(this,a)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const a=this.options,d=this._adapter,g=a.time.unit||"day";let{min:w,max:b,minDefined:E,maxDefined:i}=this.getUserBounds();function O(j){!E&&!isNaN(j.min)&&(w=Math.min(w,j.min)),!i&&!isNaN(j.max)&&(b=Math.max(b,j.max))}(!E||!i)&&(O(this._getLabelBounds()),(a.bounds!=="ticks"||a.ticks.source!=="labels")&&O(this.getMinMax(!1))),w=Ss(w)&&!isNaN(w)?w:+d.startOf(Date.now(),g),b=Ss(b)&&!isNaN(b)?b:+d.endOf(Date.now(),g)+1,this.min=Math.min(w,b-1),this.max=Math.max(w+1,b)}_getLabelBounds(){const a=this.getLabelTimestamps();let d=Number.POSITIVE_INFINITY,g=Number.NEGATIVE_INFINITY;return a.length&&(d=a[0],g=a[a.length-1]),{min:d,max:g}}buildTicks(){const a=this.options,d=a.time,g=a.ticks,w=g.source==="labels"?this.getLabelTimestamps():this._generate();a.bounds==="ticks"&&w.length&&(this.min=this._userMin||w[0],this.max=this._userMax||w[w.length-1]);const b=this.min,E=this.max,i=uT(w,b,E);return this._unit=d.unit||(g.autoSkip?jx(d.minUnit,this.min,this.max,this._getLabelCapacity(b)):IE(this,i.length,d.minUnit,this.min,this.max)),this._majorUnit=!g.major.enabled||this._unit==="year"?void 0:LE(this._unit),this.initOffsets(w),a.reverse&&i.reverse(),Zx(this,i,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(a=>+a.value))}initOffsets(a=[]){let d=0,g=0,w,b;this.options.offset&&a.length&&(w=this.getDecimalForValue(a[0]),a.length===1?d=1-w:d=(this.getDecimalForValue(a[1])-w)/2,b=this.getDecimalForValue(a[a.length-1]),a.length===1?g=b:g=(b-this.getDecimalForValue(a[a.length-2]))/2);const E=a.length<3?.5:.25;d=nr(d,0,E),g=nr(g,0,E),this._offsets={start:d,end:g,factor:1/(d+1+g)}}_generate(){const a=this._adapter,d=this.min,g=this.max,w=this.options,b=w.time,E=b.unit||jx(b.minUnit,d,g,this._getLabelCapacity(d)),i=Ji(w.ticks.stepSize,1),O=E==="week"?b.isoWeekday:!1,j=Gh(O)||O===!0,Y={};let J=d,ae,ce;if(j&&(J=+a.startOf(J,"isoWeek",O)),J=+a.startOf(J,j?"day":E),a.diff(g,d,E)>1e5*i)throw new Error(d+" and "+g+" are too far apart with stepSize of "+i+" "+E);const Te=w.ticks.source==="data"&&this.getDataTimestamps();for(ae=J,ce=0;ae<g;ae=+a.add(ae,i,E),ce++)Gx(Y,ae,Te);return(ae===g||w.bounds==="ticks"||ce===1)&&Gx(Y,ae,Te),Object.keys(Y).sort(Vx).map(be=>+be)}getLabelForValue(a){const d=this._adapter,g=this.options.time;return g.tooltipFormat?d.format(a,g.tooltipFormat):d.format(a,g.displayFormats.datetime)}format(a,d){const w=this.options.time.displayFormats,b=this._unit,E=d||w[b];return this._adapter.format(a,E)}_tickFormatFunction(a,d,g,w){const b=this.options,E=b.ticks.callback;if(E)return Jn(E,[a,d,g],this);const i=b.time.displayFormats,O=this._unit,j=this._majorUnit,Y=O&&i[O],J=j&&i[j],ae=g[d],ce=j&&J&&ae&&ae.major;return this._adapter.format(a,w||(ce?J:Y))}generateTickLabels(a){let d,g,w;for(d=0,g=a.length;d<g;++d)w=a[d],w.label=this._tickFormatFunction(w.value,d,a)}getDecimalForValue(a){return a===null?NaN:(a-this.min)/(this.max-this.min)}getPixelForValue(a){const d=this._offsets,g=this.getDecimalForValue(a);return this.getPixelForDecimal((d.start+g)*d.factor)}getValueForPixel(a){const d=this._offsets,g=this.getDecimalForPixel(a)/d.factor-d.end;return this.min+g*(this.max-this.min)}_getLabelSize(a){const d=this.options.ticks,g=this.ctx.measureText(a).width,w=aa(this.isHorizontal()?d.maxRotation:d.minRotation),b=Math.cos(w),E=Math.sin(w),i=this._resolveTickFontOptions(0).size;return{w:g*b+i*E,h:g*E+i*b}}_getLabelCapacity(a){const d=this.options.time,g=d.displayFormats,w=g[d.unit]||g.millisecond,b=this._tickFormatFunction(a,0,Zx(this,[a],this._majorUnit),w),E=this._getLabelSize(b),i=Math.floor(this.isHorizontal()?this.width/E.w:this.height/E.h)-1;return i>0?i:1}getDataTimestamps(){let a=this._cache.data||[],d,g;if(a.length)return a;const w=this.getMatchingVisibleMetas();if(this._normalized&&w.length)return this._cache.data=w[0].controller.getAllParsedValues(this);for(d=0,g=w.length;d<g;++d)a=a.concat(w[d].controller.getAllParsedValues(this));return this._cache.data=this.normalize(a)}getLabelTimestamps(){const a=this._cache.labels||[];let d,g;if(a.length)return a;const w=this.getLabels();for(d=0,g=w.length;d<g;++d)a.push(Ux(this,w[d]));return this._cache.labels=this._normalized?a:this.normalize(a)}normalize(a){return Hy(a.sort(Vx))}}Yt(Ad,"id","time"),Yt(Ad,"defaults",{bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}});function Ip(m,a,d){let g=0,w=m.length-1,b,E,i,O;d?(a>=m[g].pos&&a<=m[w].pos&&({lo:g,hi:w}=pl(m,"pos",a)),{pos:b,time:i}=m[g],{pos:E,time:O}=m[w]):(a>=m[g].time&&a<=m[w].time&&({lo:g,hi:w}=pl(m,"time",a)),{time:b,pos:i}=m[g],{time:E,pos:O}=m[w]);const j=E-b;return j?i+(O-i)*(a-b)/j:i}class q_ extends Ad{constructor(a){super(a),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const a=this._getTimestampsForTable(),d=this._table=this.buildLookupTable(a);this._minPos=Ip(d,this.min),this._tableRange=Ip(d,this.max)-this._minPos,super.initOffsets(a)}buildLookupTable(a){const{min:d,max:g}=this,w=[],b=[];let E,i,O,j,Y;for(E=0,i=a.length;E<i;++E)j=a[E],j>=d&&j<=g&&w.push(j);if(w.length<2)return[{time:d,pos:0},{time:g,pos:1}];for(E=0,i=w.length;E<i;++E)Y=w[E+1],O=w[E-1],j=w[E],Math.round((Y+O)/2)!==j&&b.push({time:j,pos:E/(i-1)});return b}_generate(){const a=this.min,d=this.max;let g=super.getDataTimestamps();return(!g.includes(a)||!g.length)&&g.splice(0,0,a),(!g.includes(d)||g.length===1)&&g.push(d),g.sort((w,b)=>w-b)}_getTimestampsForTable(){let a=this._cache.all||[];if(a.length)return a;const d=this.getDataTimestamps(),g=this.getLabelTimestamps();return d.length&&g.length?a=this.normalize(d.concat(g)):a=d.length?d:g,a=this._cache.all=a,a}getDecimalForValue(a){return(Ip(this._table,a)-this._minPos)/this._tableRange}getValueForPixel(a){const d=this._offsets,g=this.getDecimalForPixel(a)/d.factor-d.end;return Ip(this._table,g*this._tableRange+this._minPos,!0)}}Yt(q_,"id","timeseries"),Yt(q_,"defaults",Ad.defaults);var DE=Object.freeze({__proto__:null,CategoryScale:j_,LinearScale:G_,LogarithmicScale:Z_,RadialLinearScale:Pd,TimeScale:Ad,TimeSeriesScale:q_});const kE=[N2,mS,hE,DE],Lp={Utils:{DividePolylinesPoints(m){let a=0;const d=[],g=m.length;for(let w=0;w<g;w++)m[w]===null&&(d.push(m.slice(a===0?0:a+1,w)),a=w);return g-1!==a&&d.push(m.slice(a)),d},GetItemFromArray(m,a){try{return m[a]}catch{return[0,0]}}}};var zp=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Hx(m){return m&&m.__esModule&&Object.prototype.hasOwnProperty.call(m,"default")?m.default:m}var Dp={exports:{}};/* @preserve
|
||
* Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com
|
||
* (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade
|
||
*/var qx;function Wx(){return qx||(qx=1,function(m,a){(function(d,g){g(a)})(zp,function(d){var g="1.9.4";function w(p){var A,B,X,ne;for(B=1,X=arguments.length;B<X;B++){ne=arguments[B];for(A in ne)p[A]=ne[A]}return p}var b=Object.create||function(){function p(){}return function(A){return p.prototype=A,new p}}();function E(p,A){var B=Array.prototype.slice;if(p.bind)return p.bind.apply(p,B.call(arguments,1));var X=B.call(arguments,2);return function(){return p.apply(A,X.length?X.concat(B.call(arguments)):arguments)}}var i=0;function O(p){return"_leaflet_id"in p||(p._leaflet_id=++i),p._leaflet_id}function j(p,A,B){var X,ne,ye,We;return We=function(){X=!1,ne&&(ye.apply(B,ne),ne=!1)},ye=function(){X?ne=arguments:(p.apply(B,arguments),setTimeout(We,A),X=!0)},ye}function Y(p,A,B){var X=A[1],ne=A[0],ye=X-ne;return p===X&&B?p:((p-ne)%ye+ye)%ye+ne}function J(){return!1}function ae(p,A){if(A===!1)return p;var B=Math.pow(10,A===void 0?6:A);return Math.round(p*B)/B}function ce(p){return p.trim?p.trim():p.replace(/^\s+|\s+$/g,"")}function Te(p){return ce(p).split(/\s+/)}function be(p,A){Object.prototype.hasOwnProperty.call(p,"options")||(p.options=p.options?b(p.options):{});for(var B in A)p.options[B]=A[B];return p.options}function Ze(p,A,B){var X=[];for(var ne in p)X.push(encodeURIComponent(B?ne.toUpperCase():ne)+"="+encodeURIComponent(p[ne]));return(!A||A.indexOf("?")===-1?"?":"&")+X.join("&")}var je=/\{ *([\w_ -]+) *\}/g;function ot(p,A){return p.replace(je,function(B,X){var ne=A[X];if(ne===void 0)throw new Error("No value provided for variable "+B);return typeof ne=="function"&&(ne=ne(A)),ne})}var vt=Array.isArray||function(p){return Object.prototype.toString.call(p)==="[object Array]"};function ht(p,A){for(var B=0;B<p.length;B++)if(p[B]===A)return B;return-1}var gt="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function Vt(p){return window["webkit"+p]||window["moz"+p]||window["ms"+p]}var pt=0;function Gt(p){var A=+new Date,B=Math.max(0,16-(A-pt));return pt=A+B,window.setTimeout(p,B)}var ui=window.requestAnimationFrame||Vt("RequestAnimationFrame")||Gt,kt=window.cancelAnimationFrame||Vt("CancelAnimationFrame")||Vt("CancelRequestAnimationFrame")||function(p){window.clearTimeout(p)};function Pt(p,A,B){if(B&&ui===Gt)p.call(A);else return ui.call(window,E(p,A))}function Mi(p){p&&kt.call(window,p)}var Pn={__proto__:null,extend:w,create:b,bind:E,get lastId(){return i},stamp:O,throttle:j,wrapNum:Y,falseFn:J,formatNum:ae,trim:ce,splitWords:Te,setOptions:be,getParamString:Ze,template:ot,isArray:vt,indexOf:ht,emptyImageUrl:gt,requestFn:ui,cancelFn:kt,requestAnimFrame:Pt,cancelAnimFrame:Mi};function hn(){}hn.extend=function(p){var A=function(){be(this),this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},B=A.__super__=this.prototype,X=b(B);X.constructor=A,A.prototype=X;for(var ne in this)Object.prototype.hasOwnProperty.call(this,ne)&&ne!=="prototype"&&ne!=="__super__"&&(A[ne]=this[ne]);return p.statics&&w(A,p.statics),p.includes&&(Ht(p.includes),w.apply(null,[X].concat(p.includes))),w(X,p),delete X.statics,delete X.includes,X.options&&(X.options=B.options?b(B.options):{},w(X.options,p.options)),X._initHooks=[],X.callInitHooks=function(){if(!this._initHooksCalled){B.callInitHooks&&B.callInitHooks.call(this),this._initHooksCalled=!0;for(var ye=0,We=X._initHooks.length;ye<We;ye++)X._initHooks[ye].call(this)}},A},hn.include=function(p){var A=this.prototype.options;return w(this.prototype,p),p.options&&(this.prototype.options=A,this.mergeOptions(p.options)),this},hn.mergeOptions=function(p){return w(this.prototype.options,p),this},hn.addInitHook=function(p){var A=Array.prototype.slice.call(arguments,1),B=typeof p=="function"?p:function(){this[p].apply(this,A)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(B),this};function Ht(p){if(!(typeof L>"u"||!L||!L.Mixin)){p=vt(p)?p:[p];for(var A=0;A<p.length;A++)p[A]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",new Error().stack)}}var Si={on:function(p,A,B){if(typeof p=="object")for(var X in p)this._on(X,p[X],A);else{p=Te(p);for(var ne=0,ye=p.length;ne<ye;ne++)this._on(p[ne],A,B)}return this},off:function(p,A,B){if(!arguments.length)delete this._events;else if(typeof p=="object")for(var X in p)this._off(X,p[X],A);else{p=Te(p);for(var ne=arguments.length===1,ye=0,We=p.length;ye<We;ye++)ne?this._off(p[ye]):this._off(p[ye],A,B)}return this},_on:function(p,A,B,X){if(typeof A!="function"){console.warn("wrong listener type: "+typeof A);return}if(this._listens(p,A,B)===!1){B===this&&(B=void 0);var ne={fn:A,ctx:B};X&&(ne.once=!0),this._events=this._events||{},this._events[p]=this._events[p]||[],this._events[p].push(ne)}},_off:function(p,A,B){var X,ne,ye;if(this._events&&(X=this._events[p],!!X)){if(arguments.length===1){if(this._firingCount)for(ne=0,ye=X.length;ne<ye;ne++)X[ne].fn=J;delete this._events[p];return}if(typeof A!="function"){console.warn("wrong listener type: "+typeof A);return}var We=this._listens(p,A,B);if(We!==!1){var at=X[We];this._firingCount&&(at.fn=J,this._events[p]=X=X.slice()),X.splice(We,1)}}},fire:function(p,A,B){if(!this.listens(p,B))return this;var X=w({},A,{type:p,target:this,sourceTarget:A&&A.sourceTarget||this});if(this._events){var ne=this._events[p];if(ne){this._firingCount=this._firingCount+1||1;for(var ye=0,We=ne.length;ye<We;ye++){var at=ne[ye],ft=at.fn;at.once&&this.off(p,ft,at.ctx),ft.call(at.ctx||this,X)}this._firingCount--}}return B&&this._propagateEvent(X),this},listens:function(p,A,B,X){typeof p!="string"&&console.warn('"string" type argument expected');var ne=A;typeof A!="function"&&(X=!!A,ne=void 0,B=void 0);var ye=this._events&&this._events[p];if(ye&&ye.length&&this._listens(p,ne,B)!==!1)return!0;if(X){for(var We in this._eventParents)if(this._eventParents[We].listens(p,A,B,X))return!0}return!1},_listens:function(p,A,B){if(!this._events)return!1;var X=this._events[p]||[];if(!A)return!!X.length;B===this&&(B=void 0);for(var ne=0,ye=X.length;ne<ye;ne++)if(X[ne].fn===A&&X[ne].ctx===B)return ne;return!1},once:function(p,A,B){if(typeof p=="object")for(var X in p)this._on(X,p[X],A,!0);else{p=Te(p);for(var ne=0,ye=p.length;ne<ye;ne++)this._on(p[ne],A,B,!0)}return this},addEventParent:function(p){return this._eventParents=this._eventParents||{},this._eventParents[O(p)]=p,this},removeEventParent:function(p){return this._eventParents&&delete this._eventParents[O(p)],this},_propagateEvent:function(p){for(var A in this._eventParents)this._eventParents[A].fire(p.type,w({layer:p.target,propagatedFrom:p.target},p),!0)}};Si.addEventListener=Si.on,Si.removeEventListener=Si.clearAllEventListeners=Si.off,Si.addOneTimeEventListener=Si.once,Si.fireEvent=Si.fire,Si.hasEventListeners=Si.listens;var Qi=hn.extend(Si);function fi(p,A,B){this.x=B?Math.round(p):p,this.y=B?Math.round(A):A}var jt=Math.trunc||function(p){return p>0?Math.floor(p):Math.ceil(p)};fi.prototype={clone:function(){return new fi(this.x,this.y)},add:function(p){return this.clone()._add(ni(p))},_add:function(p){return this.x+=p.x,this.y+=p.y,this},subtract:function(p){return this.clone()._subtract(ni(p))},_subtract:function(p){return this.x-=p.x,this.y-=p.y,this},divideBy:function(p){return this.clone()._divideBy(p)},_divideBy:function(p){return this.x/=p,this.y/=p,this},multiplyBy:function(p){return this.clone()._multiplyBy(p)},_multiplyBy:function(p){return this.x*=p,this.y*=p,this},scaleBy:function(p){return new fi(this.x*p.x,this.y*p.y)},unscaleBy:function(p){return new fi(this.x/p.x,this.y/p.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=jt(this.x),this.y=jt(this.y),this},distanceTo:function(p){p=ni(p);var A=p.x-this.x,B=p.y-this.y;return Math.sqrt(A*A+B*B)},equals:function(p){return p=ni(p),p.x===this.x&&p.y===this.y},contains:function(p){return p=ni(p),Math.abs(p.x)<=Math.abs(this.x)&&Math.abs(p.y)<=Math.abs(this.y)},toString:function(){return"Point("+ae(this.x)+", "+ae(this.y)+")"}};function ni(p,A,B){return p instanceof fi?p:vt(p)?new fi(p[0],p[1]):p==null?p:typeof p=="object"&&"x"in p&&"y"in p?new fi(p.x,p.y):new fi(p,A,B)}function Gi(p,A){if(p)for(var B=A?[p,A]:p,X=0,ne=B.length;X<ne;X++)this.extend(B[X])}Gi.prototype={extend:function(p){var A,B;if(!p)return this;if(p instanceof fi||typeof p[0]=="number"||"x"in p)A=B=ni(p);else if(p=an(p),A=p.min,B=p.max,!A||!B)return this;return!this.min&&!this.max?(this.min=A.clone(),this.max=B.clone()):(this.min.x=Math.min(A.x,this.min.x),this.max.x=Math.max(B.x,this.max.x),this.min.y=Math.min(A.y,this.min.y),this.max.y=Math.max(B.y,this.max.y)),this},getCenter:function(p){return ni((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,p)},getBottomLeft:function(){return ni(this.min.x,this.max.y)},getTopRight:function(){return ni(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(p){var A,B;return typeof p[0]=="number"||p instanceof fi?p=ni(p):p=an(p),p instanceof Gi?(A=p.min,B=p.max):A=B=p,A.x>=this.min.x&&B.x<=this.max.x&&A.y>=this.min.y&&B.y<=this.max.y},intersects:function(p){p=an(p);var A=this.min,B=this.max,X=p.min,ne=p.max,ye=ne.x>=A.x&&X.x<=B.x,We=ne.y>=A.y&&X.y<=B.y;return ye&&We},overlaps:function(p){p=an(p);var A=this.min,B=this.max,X=p.min,ne=p.max,ye=ne.x>A.x&&X.x<B.x,We=ne.y>A.y&&X.y<B.y;return ye&&We},isValid:function(){return!!(this.min&&this.max)},pad:function(p){var A=this.min,B=this.max,X=Math.abs(A.x-B.x)*p,ne=Math.abs(A.y-B.y)*p;return an(ni(A.x-X,A.y-ne),ni(B.x+X,B.y+ne))},equals:function(p){return p?(p=an(p),this.min.equals(p.getTopLeft())&&this.max.equals(p.getBottomRight())):!1}};function an(p,A){return!p||p instanceof Gi?p:new Gi(p,A)}function qt(p,A){if(p)for(var B=A?[p,A]:p,X=0,ne=B.length;X<ne;X++)this.extend(B[X])}qt.prototype={extend:function(p){var A=this._southWest,B=this._northEast,X,ne;if(p instanceof Di)X=p,ne=p;else if(p instanceof qt){if(X=p._southWest,ne=p._northEast,!X||!ne)return this}else return p?this.extend(xi(p)||ln(p)):this;return!A&&!B?(this._southWest=new Di(X.lat,X.lng),this._northEast=new Di(ne.lat,ne.lng)):(A.lat=Math.min(X.lat,A.lat),A.lng=Math.min(X.lng,A.lng),B.lat=Math.max(ne.lat,B.lat),B.lng=Math.max(ne.lng,B.lng)),this},pad:function(p){var A=this._southWest,B=this._northEast,X=Math.abs(A.lat-B.lat)*p,ne=Math.abs(A.lng-B.lng)*p;return new qt(new Di(A.lat-X,A.lng-ne),new Di(B.lat+X,B.lng+ne))},getCenter:function(){return new Di((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new Di(this.getNorth(),this.getWest())},getSouthEast:function(){return new Di(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(p){typeof p[0]=="number"||p instanceof Di||"lat"in p?p=xi(p):p=ln(p);var A=this._southWest,B=this._northEast,X,ne;return p instanceof qt?(X=p.getSouthWest(),ne=p.getNorthEast()):X=ne=p,X.lat>=A.lat&&ne.lat<=B.lat&&X.lng>=A.lng&&ne.lng<=B.lng},intersects:function(p){p=ln(p);var A=this._southWest,B=this._northEast,X=p.getSouthWest(),ne=p.getNorthEast(),ye=ne.lat>=A.lat&&X.lat<=B.lat,We=ne.lng>=A.lng&&X.lng<=B.lng;return ye&&We},overlaps:function(p){p=ln(p);var A=this._southWest,B=this._northEast,X=p.getSouthWest(),ne=p.getNorthEast(),ye=ne.lat>A.lat&&X.lat<B.lat,We=ne.lng>A.lng&&X.lng<B.lng;return ye&&We},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(p,A){return p?(p=ln(p),this._southWest.equals(p.getSouthWest(),A)&&this._northEast.equals(p.getNorthEast(),A)):!1},isValid:function(){return!!(this._southWest&&this._northEast)}};function ln(p,A){return p instanceof qt?p:new qt(p,A)}function Di(p,A,B){if(isNaN(p)||isNaN(A))throw new Error("Invalid LatLng object: ("+p+", "+A+")");this.lat=+p,this.lng=+A,B!==void 0&&(this.alt=+B)}Di.prototype={equals:function(p,A){if(!p)return!1;p=xi(p);var B=Math.max(Math.abs(this.lat-p.lat),Math.abs(this.lng-p.lng));return B<=(A===void 0?1e-9:A)},toString:function(p){return"LatLng("+ae(this.lat,p)+", "+ae(this.lng,p)+")"},distanceTo:function(p){return xs.distance(this,xi(p))},wrap:function(){return xs.wrapLatLng(this)},toBounds:function(p){var A=180*p/40075017,B=A/Math.cos(Math.PI/180*this.lat);return ln([this.lat-A,this.lng-B],[this.lat+A,this.lng+B])},clone:function(){return new Di(this.lat,this.lng,this.alt)}};function xi(p,A,B){return p instanceof Di?p:vt(p)&&typeof p[0]!="object"?p.length===3?new Di(p[0],p[1],p[2]):p.length===2?new Di(p[0],p[1]):null:p==null?p:typeof p=="object"&&"lat"in p?new Di(p.lat,"lng"in p?p.lng:p.lon,p.alt):A===void 0?null:new Di(p,A,B)}var Is={latLngToPoint:function(p,A){var B=this.projection.project(p),X=this.scale(A);return this.transformation._transform(B,X)},pointToLatLng:function(p,A){var B=this.scale(A),X=this.transformation.untransform(p,B);return this.projection.unproject(X)},project:function(p){return this.projection.project(p)},unproject:function(p){return this.projection.unproject(p)},scale:function(p){return 256*Math.pow(2,p)},zoom:function(p){return Math.log(p/256)/Math.LN2},getProjectedBounds:function(p){if(this.infinite)return null;var A=this.projection.bounds,B=this.scale(p),X=this.transformation.transform(A.min,B),ne=this.transformation.transform(A.max,B);return new Gi(X,ne)},infinite:!1,wrapLatLng:function(p){var A=this.wrapLng?Y(p.lng,this.wrapLng,!0):p.lng,B=this.wrapLat?Y(p.lat,this.wrapLat,!0):p.lat,X=p.alt;return new Di(B,A,X)},wrapLatLngBounds:function(p){var A=p.getCenter(),B=this.wrapLatLng(A),X=A.lat-B.lat,ne=A.lng-B.lng;if(X===0&&ne===0)return p;var ye=p.getSouthWest(),We=p.getNorthEast(),at=new Di(ye.lat-X,ye.lng-ne),ft=new Di(We.lat-X,We.lng-ne);return new qt(at,ft)}},xs=w({},Is,{wrapLng:[-180,180],R:6371e3,distance:function(p,A){var B=Math.PI/180,X=p.lat*B,ne=A.lat*B,ye=Math.sin((A.lat-p.lat)*B/2),We=Math.sin((A.lng-p.lng)*B/2),at=ye*ye+Math.cos(X)*Math.cos(ne)*We*We,ft=2*Math.atan2(Math.sqrt(at),Math.sqrt(1-at));return this.R*ft}}),Ls=6378137,De={R:Ls,MAX_LATITUDE:85.0511287798,project:function(p){var A=Math.PI/180,B=this.MAX_LATITUDE,X=Math.max(Math.min(B,p.lat),-B),ne=Math.sin(X*A);return new fi(this.R*p.lng*A,this.R*Math.log((1+ne)/(1-ne))/2)},unproject:function(p){var A=180/Math.PI;return new Di((2*Math.atan(Math.exp(p.y/this.R))-Math.PI/2)*A,p.x*A/this.R)},bounds:function(){var p=Ls*Math.PI;return new Gi([-p,-p],[p,p])}()};function Vs(p,A,B,X){if(vt(p)){this._a=p[0],this._b=p[1],this._c=p[2],this._d=p[3];return}this._a=p,this._b=A,this._c=B,this._d=X}Vs.prototype={transform:function(p,A){return this._transform(p.clone(),A)},_transform:function(p,A){return A=A||1,p.x=A*(this._a*p.x+this._b),p.y=A*(this._c*p.y+this._d),p},untransform:function(p,A){return A=A||1,new fi((p.x/A-this._b)/this._a,(p.y/A-this._d)/this._c)}};function Us(p,A,B,X){return new Vs(p,A,B,X)}var Zr=w({},xs,{code:"EPSG:3857",projection:De,transformation:function(){var p=.5/(Math.PI*De.R);return Us(p,.5,-p,.5)}()}),Et=w({},Zr,{code:"EPSG:900913"});function $s(p){return document.createElementNS("http://www.w3.org/2000/svg",p)}function $n(p,A){var B="",X,ne,ye,We,at,ft;for(X=0,ye=p.length;X<ye;X++){for(at=p[X],ne=0,We=at.length;ne<We;ne++)ft=at[ne],B+=(ne?"L":"M")+ft.x+" "+ft.y;B+=A?Pe.svg?"z":"x":""}return B||"M0 0"}var Xs=document.documentElement.style,vi="ActiveXObject"in window,kn=vi&&!document.addEventListener,Ys="msLaunchUri"in navigator&&!("documentMode"in document),Hr=qe("webkit"),qr=qe("android"),Wr=qe("android 2")||qe("android 3"),si=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),ps=qr&&qe("Google")&&si<537&&!("AudioNode"in window),zn=!!window.opera,Rn=!Ys&&qe("chrome"),An=qe("gecko")&&!Hr&&!zn&&!vi,js=!Rn&&qe("safari"),vo=qe("phantom"),bo="OTransition"in Xs,wo=navigator.platform.indexOf("Win")===0,yr=vi&&"transition"in Xs,Pr="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!Wr,ro="MozPerspective"in Xs,Ks=!window.L_DISABLE_3D&&(yr||Pr||ro)&&!bo&&!vo,Ar=typeof orientation<"u"||qe("mobile"),mi=Ar&&Hr,On=Ar&&Pr,Un=!window.PointerEvent&&window.MSPointerEvent,Zi=!!(window.PointerEvent||Un),Qn="ontouchstart"in window||!!window.TouchEvent,Fn=!window.L_NO_TOUCH&&(Qn||Zi),zs=Ar&&zn,Ds=Ar&&An,Go=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,Ke=function(){var p=!1;try{var A=Object.defineProperty({},"passive",{get:function(){p=!0}});window.addEventListener("testPassiveEventSupport",J,A),window.removeEventListener("testPassiveEventSupport",J,A)}catch{}return p}(),re=function(){return!!document.createElement("canvas").getContext}(),le=!!(document.createElementNS&&$s("svg").createSVGRect),ge=!!le&&function(){var p=document.createElement("div");return p.innerHTML="<svg/>",(p.firstChild&&p.firstChild.namespaceURI)==="http://www.w3.org/2000/svg"}(),Le=!le&&function(){try{var p=document.createElement("div");p.innerHTML='<v:shape adj="1"/>';var A=p.firstChild;return A.style.behavior="url(#default#VML)",A&&typeof A.adj=="object"}catch{return!1}}(),Ce=navigator.platform.indexOf("Mac")===0,Be=navigator.platform.indexOf("Linux")===0;function qe(p){return navigator.userAgent.toLowerCase().indexOf(p)>=0}var Pe={ie:vi,ielt9:kn,edge:Ys,webkit:Hr,android:qr,android23:Wr,androidStock:ps,opera:zn,chrome:Rn,gecko:An,safari:js,phantom:vo,opera12:bo,win:wo,ie3d:yr,webkit3d:Pr,gecko3d:ro,any3d:Ks,mobile:Ar,mobileWebkit:mi,mobileWebkit3d:On,msPointer:Un,pointer:Zi,touch:Fn,touchNative:Qn,mobileOpera:zs,mobileGecko:Ds,retina:Go,passiveEvents:Ke,canvas:re,svg:le,vml:Le,inlineSvg:ge,mac:Ce,linux:Be},Ye=Pe.msPointer?"MSPointerDown":"pointerdown",Qe=Pe.msPointer?"MSPointerMove":"pointermove",it=Pe.msPointer?"MSPointerUp":"pointerup",mt=Pe.msPointer?"MSPointerCancel":"pointercancel",Ct={touchstart:Ye,touchmove:Qe,touchend:it,touchcancel:mt},It={touchstart:Xn,touchmove:Hi,touchend:Hi,touchcancel:Hi},Kt={},di=!1;function li(p,A,B){return A==="touchstart"&&$i(),It[A]?(B=It[A].bind(this,B),p.addEventListener(Ct[A],B,!1),B):(console.warn("wrong event specified:",A),J)}function ri(p,A,B){if(!Ct[A]){console.warn("wrong event specified:",A);return}p.removeEventListener(Ct[A],B,!1)}function Ki(p){Kt[p.pointerId]=p}function Ni(p){Kt[p.pointerId]&&(Kt[p.pointerId]=p)}function Ei(p){delete Kt[p.pointerId]}function $i(){di||(document.addEventListener(Ye,Ki,!0),document.addEventListener(Qe,Ni,!0),document.addEventListener(it,Ei,!0),document.addEventListener(mt,Ei,!0),di=!0)}function Hi(p,A){if(A.pointerType!==(A.MSPOINTER_TYPE_MOUSE||"mouse")){A.touches=[];for(var B in Kt)A.touches.push(Kt[B]);A.changedTouches=[A],p(A)}}function Xn(p,A){A.MSPOINTER_TYPE_TOUCH&&A.pointerType===A.MSPOINTER_TYPE_TOUCH&&gs(A),Hi(p,A)}function Gs(p){var A={},B,X;for(X in p)B=p[X],A[X]=B&&B.bind?B.bind(p):B;return p=A,A.type="dblclick",A.detail=2,A.isTrusted=!1,A._simulated=!0,A}var ms=200;function vs(p,A){p.addEventListener("dblclick",A);var B=0,X;function ne(ye){if(ye.detail!==1){X=ye.detail;return}if(!(ye.pointerType==="mouse"||ye.sourceCapabilities&&!ye.sourceCapabilities.firesTouchEvents)){var We=$o(ye);if(!(We.some(function(ft){return ft instanceof HTMLLabelElement&&ft.attributes.for})&&!We.some(function(ft){return ft instanceof HTMLInputElement||ft instanceof HTMLSelectElement}))){var at=Date.now();at-B<=ms?(X++,X===2&&A(Gs(ye))):X=1,B=at}}}return p.addEventListener("click",ne),{dblclick:A,simDblclick:ne}}function ha(p,A){p.removeEventListener("dblclick",A.dblclick),p.removeEventListener("click",A.simDblclick)}var Cr=sr(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ua=sr(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),vl=ua==="webkitTransition"||ua==="OTransition"?ua+"End":"transitionend";function Zo(p){return typeof p=="string"?document.getElementById(p):p}function Ho(p,A){var B=p.style[A]||p.currentStyle&&p.currentStyle[A];if((!B||B==="auto")&&document.defaultView){var X=document.defaultView.getComputedStyle(p,null);B=X?X[A]:null}return B==="auto"?null:B}function tn(p,A,B){var X=document.createElement(p);return X.className=A||"",B&&B.appendChild(X),X}function vn(p){var A=p.parentNode;A&&A.removeChild(p)}function oo(p){for(;p.firstChild;)p.removeChild(p.firstChild)}function qo(p){var A=p.parentNode;A&&A.lastChild!==p&&A.appendChild(p)}function da(p){var A=p.parentNode;A&&A.firstChild!==p&&A.insertBefore(p,A.firstChild)}function Ba(p,A){if(p.classList!==void 0)return p.classList.contains(A);var B=Zs(p);return B.length>0&&new RegExp("(^|\\s)"+A+"(\\s|$)").test(B)}function Vi(p,A){if(p.classList!==void 0)for(var B=Te(A),X=0,ne=B.length;X<ne;X++)p.classList.add(B[X]);else if(!Ba(p,A)){var ye=Zs(p);bl(p,(ye?ye+" ":"")+A)}}function Hn(p,A){p.classList!==void 0?p.classList.remove(A):bl(p,ce((" "+Zs(p)+" ").replace(" "+A+" "," ")))}function bl(p,A){p.className.baseVal===void 0?p.className=A:p.className.baseVal=A}function Zs(p){return p.correspondingElement&&(p=p.correspondingElement),p.className.baseVal===void 0?p.className:p.className.baseVal}function es(p,A){"opacity"in p.style?p.style.opacity=A:"filter"in p.style&&Ir(p,A)}function Ir(p,A){var B=!1,X="DXImageTransform.Microsoft.Alpha";try{B=p.filters.item(X)}catch{if(A===1)return}A=Math.round(A*100),B?(B.Enabled=A!==100,B.Opacity=A):p.style.filter+=" progid:"+X+"(opacity="+A+")"}function sr(p){for(var A=document.documentElement.style,B=0;B<p.length;B++)if(p[B]in A)return p[B];return!1}function Js(p,A,B){var X=A||new fi(0,0);p.style[Cr]=(Pe.ie3d?"translate("+X.x+"px,"+X.y+"px)":"translate3d("+X.x+"px,"+X.y+"px,0)")+(B?" scale("+B+")":"")}function Yn(p,A){p._leaflet_pos=A,Pe.any3d?Js(p,A):(p.style.left=A.x+"px",p.style.top=A.y+"px")}function $r(p){return p._leaflet_pos||new fi(0,0)}var Lr,zr,Na;if("onselectstart"in document)Lr=function(){Bi(window,"selectstart",gs)},zr=function(){Cn(window,"selectstart",gs)};else{var fa=sr(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);Lr=function(){if(fa){var p=document.documentElement.style;Na=p[fa],p[fa]="none"}},zr=function(){fa&&(document.documentElement.style[fa]=Na,Na=void 0)}}function Wo(){Bi(window,"dragstart",gs)}function rr(){Cn(window,"dragstart",gs)}var pa,Va;function ki(p){for(;p.tabIndex===-1;)p=p.parentNode;p.style&&(ec(),pa=p,Va=p.style.outlineStyle,p.style.outlineStyle="none",Bi(window,"keydown",ec))}function ec(){pa&&(pa.style.outlineStyle=Va,pa=void 0,Va=void 0,Cn(window,"keydown",ec))}function ei(p){do p=p.parentNode;while((!p.offsetWidth||!p.offsetHeight)&&p!==document.body);return p}function wl(p){var A=p.getBoundingClientRect();return{x:A.width/p.offsetWidth||1,y:A.height/p.offsetHeight||1,boundingClientRect:A}}var Oi={__proto__:null,TRANSFORM:Cr,TRANSITION:ua,TRANSITION_END:vl,get:Zo,getStyle:Ho,create:tn,remove:vn,empty:oo,toFront:qo,toBack:da,hasClass:Ba,addClass:Vi,removeClass:Hn,setClass:bl,getClass:Zs,setOpacity:es,testProp:sr,setTransform:Js,setPosition:Yn,getPosition:$r,get disableTextSelection(){return Lr},get enableTextSelection(){return zr},disableImageDrag:Wo,enableImageDrag:rr,preventOutline:ki,restoreOutline:ec,getSizedParentNode:ei,getScale:wl};function Bi(p,A,B,X){if(A&&typeof A=="object")for(var ne in A)Fi(p,ne,A[ne],B);else{A=Te(A);for(var ye=0,We=A.length;ye<We;ye++)Fi(p,A[ye],B,X)}return this}var os="_leaflet_events";function Cn(p,A,B,X){if(arguments.length===1)ma(p),delete p[os];else if(A&&typeof A=="object")for(var ne in A)Li(p,ne,A[ne],B);else if(A=Te(A),arguments.length===2)ma(p,function(at){return ht(A,at)!==-1});else for(var ye=0,We=A.length;ye<We;ye++)Li(p,A[ye],B,X);return this}function ma(p,A){for(var B in p[os]){var X=B.split(/\d/)[0];(!A||A(X))&&Li(p,X,null,null,B)}}var Ot={mouseenter:"mouseover",mouseleave:"mouseout",wheel:!("onwheel"in window)&&"mousewheel"};function Fi(p,A,B,X){var ne=A+O(B)+(X?"_"+O(X):"");if(p[os]&&p[os][ne])return this;var ye=function(at){return B.call(X||p,at||window.event)},We=ye;!Pe.touchNative&&Pe.pointer&&A.indexOf("touch")===0?ye=li(p,A,ye):Pe.touch&&A==="dblclick"?ye=vs(p,ye):"addEventListener"in p?A==="touchstart"||A==="touchmove"||A==="wheel"||A==="mousewheel"?p.addEventListener(Ot[A]||A,ye,Pe.passiveEvents?{passive:!1}:!1):A==="mouseenter"||A==="mouseleave"?(ye=function(at){at=at||window.event,_a(p,at)&&We(at)},p.addEventListener(Ot[A],ye,!1)):p.addEventListener(A,We,!1):p.attachEvent("on"+A,ye),p[os]=p[os]||{},p[os][ne]=ye}function Li(p,A,B,X,ne){ne=ne||A+O(B)+(X?"_"+O(X):"");var ye=p[os]&&p[os][ne];if(!ye)return this;!Pe.touchNative&&Pe.pointer&&A.indexOf("touch")===0?ri(p,A,ye):Pe.touch&&A==="dblclick"?ha(p,ye):"removeEventListener"in p?p.removeEventListener(Ot[A]||A,ye,!1):p.detachEvent("on"+A,ye),p[os][ne]=null}function _s(p){return p.stopPropagation?p.stopPropagation():p.originalEvent?p.originalEvent._stopped=!0:p.cancelBubble=!0,this}function To(p){return Fi(p,"wheel",_s),this}function Pi(p){return Bi(p,"mousedown touchstart dblclick contextmenu",_s),p._leaflet_disable_click=!0,this}function gs(p){return p.preventDefault?p.preventDefault():p.returnValue=!1,this}function Qs(p){return gs(p),_s(p),this}function $o(p){if(p.composedPath)return p.composedPath();for(var A=[],B=p.target;B;)A.push(B),B=B.parentNode;return A}function Es(p,A){if(!A)return new fi(p.clientX,p.clientY);var B=wl(A),X=B.boundingClientRect;return new fi((p.clientX-X.left)/B.x-A.clientLeft,(p.clientY-X.top)/B.y-A.clientTop)}var un=Pe.linux&&Pe.chrome?window.devicePixelRatio:Pe.mac?window.devicePixelRatio*3:window.devicePixelRatio>0?2*window.devicePixelRatio:1;function Jc(p){return Pe.edge?p.wheelDeltaY/2:p.deltaY&&p.deltaMode===0?-p.deltaY/un:p.deltaY&&p.deltaMode===1?-p.deltaY*20:p.deltaY&&p.deltaMode===2?-p.deltaY*60:p.deltaX||p.deltaZ?0:p.wheelDelta?(p.wheelDeltaY||p.wheelDelta)/2:p.detail&&Math.abs(p.detail)<32765?-p.detail*20:p.detail?p.detail/-32765*60:0}function _a(p,A){var B=A.relatedTarget;if(!B)return!0;try{for(;B&&B!==p;)B=B.parentNode}catch{return!1}return B!==p}var tc={__proto__:null,on:Bi,off:Cn,stopPropagation:_s,disableScrollPropagation:To,disableClickPropagation:Pi,preventDefault:gs,stop:Qs,getPropagationPath:$o,getMousePosition:Es,getWheelDelta:Jc,isExternalTarget:_a,addListener:Bi,removeListener:Cn},ga=Qi.extend({run:function(p,A,B,X){this.stop(),this._el=p,this._inProgress=!0,this._duration=B||.25,this._easeOutPower=1/Math.max(X||.5,.2),this._startPos=$r(p),this._offset=A.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=Pt(this._animate,this),this._step()},_step:function(p){var A=+new Date-this._startTime,B=this._duration*1e3;A<B?this._runFrame(this._easeOut(A/B),p):(this._runFrame(1),this._complete())},_runFrame:function(p,A){var B=this._startPos.add(this._offset.multiplyBy(p));A&&B._round(),Yn(this._el,B),this.fire("step")},_complete:function(){Mi(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(p){return 1-Math.pow(1-p,this._easeOutPower)}}),nn=Qi.extend({options:{crs:Zr,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(p,A){A=be(this,A),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this._initContainer(p),this._initLayout(),this._onResize=E(this._onResize,this),this._initEvents(),A.maxBounds&&this.setMaxBounds(A.maxBounds),A.zoom!==void 0&&(this._zoom=this._limitZoom(A.zoom)),A.center&&A.zoom!==void 0&&this.setView(xi(A.center),A.zoom,{reset:!0}),this.callInitHooks(),this._zoomAnimated=ua&&Pe.any3d&&!Pe.mobileOpera&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),Bi(this._proxy,vl,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(p,A,B){if(A=A===void 0?this._zoom:this._limitZoom(A),p=this._limitCenter(xi(p),A,this.options.maxBounds),B=B||{},this._stop(),this._loaded&&!B.reset&&B!==!0){B.animate!==void 0&&(B.zoom=w({animate:B.animate},B.zoom),B.pan=w({animate:B.animate,duration:B.duration},B.pan));var X=this._zoom!==A?this._tryAnimatedZoom&&this._tryAnimatedZoom(p,A,B.zoom):this._tryAnimatedPan(p,B.pan);if(X)return clearTimeout(this._sizeTimer),this}return this._resetView(p,A,B.pan&&B.pan.noMoveStart),this},setZoom:function(p,A){return this._loaded?this.setView(this.getCenter(),p,{zoom:A}):(this._zoom=p,this)},zoomIn:function(p,A){return p=p||(Pe.any3d?this.options.zoomDelta:1),this.setZoom(this._zoom+p,A)},zoomOut:function(p,A){return p=p||(Pe.any3d?this.options.zoomDelta:1),this.setZoom(this._zoom-p,A)},setZoomAround:function(p,A,B){var X=this.getZoomScale(A),ne=this.getSize().divideBy(2),ye=p instanceof fi?p:this.latLngToContainerPoint(p),We=ye.subtract(ne).multiplyBy(1-1/X),at=this.containerPointToLatLng(ne.add(We));return this.setView(at,A,{zoom:B})},_getBoundsCenterZoom:function(p,A){A=A||{},p=p.getBounds?p.getBounds():ln(p);var B=ni(A.paddingTopLeft||A.padding||[0,0]),X=ni(A.paddingBottomRight||A.padding||[0,0]),ne=this.getBoundsZoom(p,!1,B.add(X));if(ne=typeof A.maxZoom=="number"?Math.min(A.maxZoom,ne):ne,ne===1/0)return{center:p.getCenter(),zoom:ne};var ye=X.subtract(B).divideBy(2),We=this.project(p.getSouthWest(),ne),at=this.project(p.getNorthEast(),ne),ft=this.unproject(We.add(at).divideBy(2).add(ye),ne);return{center:ft,zoom:ne}},fitBounds:function(p,A){if(p=ln(p),!p.isValid())throw new Error("Bounds are not valid.");var B=this._getBoundsCenterZoom(p,A);return this.setView(B.center,B.zoom,A)},fitWorld:function(p){return this.fitBounds([[-90,-180],[90,180]],p)},panTo:function(p,A){return this.setView(p,this._zoom,{pan:A})},panBy:function(p,A){if(p=ni(p).round(),A=A||{},!p.x&&!p.y)return this.fire("moveend");if(A.animate!==!0&&!this.getSize().contains(p))return this._resetView(this.unproject(this.project(this.getCenter()).add(p)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new ga,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),A.noMoveStart||this.fire("movestart"),A.animate!==!1){Vi(this._mapPane,"leaflet-pan-anim");var B=this._getMapPanePos().subtract(p).round();this._panAnim.run(this._mapPane,B,A.duration||.25,A.easeLinearity)}else this._rawPanBy(p),this.fire("move").fire("moveend");return this},flyTo:function(p,A,B){if(B=B||{},B.animate===!1||!Pe.any3d)return this.setView(p,A,B);this._stop();var X=this.project(this.getCenter()),ne=this.project(p),ye=this.getSize(),We=this._zoom;p=xi(p),A=A===void 0?We:A;var at=Math.max(ye.x,ye.y),ft=at*this.getZoomScale(We,A),Rt=ne.distanceTo(X)||1,ii=1.42,Ci=ii*ii;function Wi(ts){var Io=ts?-1:1,ou=ts?ft:at,au=ft*ft-at*at+Io*Ci*Ci*Rt*Rt,hh=2*ou*Ci*Rt,Ya=au/hh,vr=Math.sqrt(Ya*Ya+1)-Ya,uh=vr<1e-9?-18:Math.log(vr);return uh}function Hs(ts){return(Math.exp(ts)-Math.exp(-ts))/2}function ws(ts){return(Math.exp(ts)+Math.exp(-ts))/2}function Os(ts){return Hs(ts)/ws(ts)}var dr=Wi(0);function Xa(ts){return at*(ws(dr)/ws(dr+ii*ts))}function Rd(ts){return at*(ws(dr)*Os(dr+ii*ts)-Hs(dr))/Ci}function Od(ts){return 1-Math.pow(1-ts,1.5)}var Fd=Date.now(),ru=(Wi(1)-dr)/ii,Dl=B.duration?1e3*B.duration:1e3*ru*.8;function fc(){var ts=(Date.now()-Fd)/Dl,Io=Od(ts)*ru;ts<=1?(this._flyToFrame=Pt(fc,this),this._move(this.unproject(X.add(ne.subtract(X).multiplyBy(Rd(Io)/Rt)),We),this.getScaleZoom(at/Xa(Io),We),{flyTo:!0})):this._move(p,A)._moveEnd(!0)}return this._moveStart(!0,B.noMoveStart),fc.call(this),this},flyToBounds:function(p,A){var B=this._getBoundsCenterZoom(p,A);return this.flyTo(B.center,B.zoom,A)},setMaxBounds:function(p){return p=ln(p),this.listens("moveend",this._panInsideMaxBounds)&&this.off("moveend",this._panInsideMaxBounds),p.isValid()?(this.options.maxBounds=p,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this)},setMinZoom:function(p){var A=this.options.minZoom;return this.options.minZoom=p,this._loaded&&A!==p&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(p):this},setMaxZoom:function(p){var A=this.options.maxZoom;return this.options.maxZoom=p,this._loaded&&A!==p&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(p):this},panInsideBounds:function(p,A){this._enforcingBounds=!0;var B=this.getCenter(),X=this._limitCenter(B,this._zoom,ln(p));return B.equals(X)||this.panTo(X,A),this._enforcingBounds=!1,this},panInside:function(p,A){A=A||{};var B=ni(A.paddingTopLeft||A.padding||[0,0]),X=ni(A.paddingBottomRight||A.padding||[0,0]),ne=this.project(this.getCenter()),ye=this.project(p),We=this.getPixelBounds(),at=an([We.min.add(B),We.max.subtract(X)]),ft=at.getSize();if(!at.contains(ye)){this._enforcingBounds=!0;var Rt=ye.subtract(at.getCenter()),ii=at.extend(ye).getSize().subtract(ft);ne.x+=Rt.x<0?-ii.x:ii.x,ne.y+=Rt.y<0?-ii.y:ii.y,this.panTo(this.unproject(ne),A),this._enforcingBounds=!1}return this},invalidateSize:function(p){if(!this._loaded)return this;p=w({animate:!1,pan:!0},p===!0?{animate:!0}:p);var A=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var B=this.getSize(),X=A.divideBy(2).round(),ne=B.divideBy(2).round(),ye=X.subtract(ne);return!ye.x&&!ye.y?this:(p.animate&&p.pan?this.panBy(ye):(p.pan&&this._rawPanBy(ye),this.fire("move"),p.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(E(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:A,newSize:B}))},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(p){if(p=this._locateOptions=w({timeout:1e4,watch:!1},p),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var A=E(this._handleGeolocationResponse,this),B=E(this._handleGeolocationError,this);return p.watch?this._locationWatchId=navigator.geolocation.watchPosition(A,B,p):navigator.geolocation.getCurrentPosition(A,B,p),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(p){if(this._container._leaflet_id){var A=p.code,B=p.message||(A===1?"permission denied":A===2?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:A,message:"Geolocation error: "+B+"."})}},_handleGeolocationResponse:function(p){if(this._container._leaflet_id){var A=p.coords.latitude,B=p.coords.longitude,X=new Di(A,B),ne=X.toBounds(p.coords.accuracy*2),ye=this._locateOptions;if(ye.setView){var We=this.getBoundsZoom(ne);this.setView(X,ye.maxZoom?Math.min(We,ye.maxZoom):We)}var at={latlng:X,bounds:ne,timestamp:p.timestamp};for(var ft in p.coords)typeof p.coords[ft]=="number"&&(at[ft]=p.coords[ft]);this.fire("locationfound",at)}},addHandler:function(p,A){if(!A)return this;var B=this[p]=new A(this);return this._handlers.push(B),this.options[p]&&B.enable(),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch{this._container._leaflet_id=void 0,this._containerId=void 0}this._locationWatchId!==void 0&&this.stopLocate(),this._stop(),vn(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(Mi(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload");var p;for(p in this._layers)this._layers[p].remove();for(p in this._panes)vn(this._panes[p]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(p,A){var B="leaflet-pane"+(p?" leaflet-"+p.replace("Pane","")+"-pane":""),X=tn("div",B,A||this._mapPane);return p&&(this._panes[p]=X),X},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var p=this.getPixelBounds(),A=this.unproject(p.getBottomLeft()),B=this.unproject(p.getTopRight());return new qt(A,B)},getMinZoom:function(){return this.options.minZoom===void 0?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===void 0?this._layersMaxZoom===void 0?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(p,A,B){p=ln(p),B=ni(B||[0,0]);var X=this.getZoom()||0,ne=this.getMinZoom(),ye=this.getMaxZoom(),We=p.getNorthWest(),at=p.getSouthEast(),ft=this.getSize().subtract(B),Rt=an(this.project(at,X),this.project(We,X)).getSize(),ii=Pe.any3d?this.options.zoomSnap:1,Ci=ft.x/Rt.x,Wi=ft.y/Rt.y,Hs=A?Math.max(Ci,Wi):Math.min(Ci,Wi);return X=this.getScaleZoom(Hs,X),ii&&(X=Math.round(X/(ii/100))*(ii/100),X=A?Math.ceil(X/ii)*ii:Math.floor(X/ii)*ii),Math.max(ne,Math.min(ye,X))},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new fi(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(p,A){var B=this._getTopLeftPoint(p,A);return new Gi(B,B.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(p){return this.options.crs.getProjectedBounds(p===void 0?this.getZoom():p)},getPane:function(p){return typeof p=="string"?this._panes[p]:p},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(p,A){var B=this.options.crs;return A=A===void 0?this._zoom:A,B.scale(p)/B.scale(A)},getScaleZoom:function(p,A){var B=this.options.crs;A=A===void 0?this._zoom:A;var X=B.zoom(p*B.scale(A));return isNaN(X)?1/0:X},project:function(p,A){return A=A===void 0?this._zoom:A,this.options.crs.latLngToPoint(xi(p),A)},unproject:function(p,A){return A=A===void 0?this._zoom:A,this.options.crs.pointToLatLng(ni(p),A)},layerPointToLatLng:function(p){var A=ni(p).add(this.getPixelOrigin());return this.unproject(A)},latLngToLayerPoint:function(p){var A=this.project(xi(p))._round();return A._subtract(this.getPixelOrigin())},wrapLatLng:function(p){return this.options.crs.wrapLatLng(xi(p))},wrapLatLngBounds:function(p){return this.options.crs.wrapLatLngBounds(ln(p))},distance:function(p,A){return this.options.crs.distance(xi(p),xi(A))},containerPointToLayerPoint:function(p){return ni(p).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(p){return ni(p).add(this._getMapPanePos())},containerPointToLatLng:function(p){var A=this.containerPointToLayerPoint(ni(p));return this.layerPointToLatLng(A)},latLngToContainerPoint:function(p){return this.layerPointToContainerPoint(this.latLngToLayerPoint(xi(p)))},mouseEventToContainerPoint:function(p){return Es(p,this._container)},mouseEventToLayerPoint:function(p){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(p))},mouseEventToLatLng:function(p){return this.layerPointToLatLng(this.mouseEventToLayerPoint(p))},_initContainer:function(p){var A=this._container=Zo(p);if(A){if(A._leaflet_id)throw new Error("Map container is already initialized.")}else throw new Error("Map container not found.");Bi(A,"scroll",this._onScroll,this),this._containerId=O(A)},_initLayout:function(){var p=this._container;this._fadeAnimated=this.options.fadeAnimation&&Pe.any3d,Vi(p,"leaflet-container"+(Pe.touch?" leaflet-touch":"")+(Pe.retina?" leaflet-retina":"")+(Pe.ielt9?" leaflet-oldie":"")+(Pe.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var A=Ho(p,"position");A!=="absolute"&&A!=="relative"&&A!=="fixed"&&A!=="sticky"&&(p.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var p=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Yn(this._mapPane,new fi(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(Vi(p.markerPane,"leaflet-zoom-hide"),Vi(p.shadowPane,"leaflet-zoom-hide"))},_resetView:function(p,A,B){Yn(this._mapPane,new fi(0,0));var X=!this._loaded;this._loaded=!0,A=this._limitZoom(A),this.fire("viewprereset");var ne=this._zoom!==A;this._moveStart(ne,B)._move(p,A)._moveEnd(ne),this.fire("viewreset"),X&&this.fire("load")},_moveStart:function(p,A){return p&&this.fire("zoomstart"),A||this.fire("movestart"),this},_move:function(p,A,B,X){A===void 0&&(A=this._zoom);var ne=this._zoom!==A;return this._zoom=A,this._lastCenter=p,this._pixelOrigin=this._getNewPixelOrigin(p),X?B&&B.pinch&&this.fire("zoom",B):((ne||B&&B.pinch)&&this.fire("zoom",B),this.fire("move",B)),this},_moveEnd:function(p){return p&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return Mi(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(p){Yn(this._mapPane,this._getMapPanePos().subtract(p))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(p){this._targets={},this._targets[O(this._container)]=this;var A=p?Cn:Bi;A(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&A(window,"resize",this._onResize,this),Pe.any3d&&this.options.transform3DLimit&&(p?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){Mi(this._resizeRequest),this._resizeRequest=Pt(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var p=this._getMapPanePos();Math.max(Math.abs(p.x),Math.abs(p.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(p,A){for(var B=[],X,ne=A==="mouseout"||A==="mouseover",ye=p.target||p.srcElement,We=!1;ye;){if(X=this._targets[O(ye)],X&&(A==="click"||A==="preclick")&&this._draggableMoved(X)){We=!0;break}if(X&&X.listens(A,!0)&&(ne&&!_a(ye,p)||(B.push(X),ne))||ye===this._container)break;ye=ye.parentNode}return!B.length&&!We&&!ne&&this.listens(A,!0)&&(B=[this]),B},_isClickDisabled:function(p){for(;p&&p!==this._container;){if(p._leaflet_disable_click)return!0;p=p.parentNode}},_handleDOMEvent:function(p){var A=p.target||p.srcElement;if(!(!this._loaded||A._leaflet_disable_events||p.type==="click"&&this._isClickDisabled(A))){var B=p.type;B==="mousedown"&&ki(A),this._fireDOMEvent(p,B)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(p,A,B){if(p.type==="click"){var X=w({},p);X.type="preclick",this._fireDOMEvent(X,X.type,B)}var ne=this._findEventTargets(p,A);if(B){for(var ye=[],We=0;We<B.length;We++)B[We].listens(A,!0)&&ye.push(B[We]);ne=ye.concat(ne)}if(ne.length){A==="contextmenu"&&gs(p);var at=ne[0],ft={originalEvent:p};if(p.type!=="keypress"&&p.type!=="keydown"&&p.type!=="keyup"){var Rt=at.getLatLng&&(!at._radius||at._radius<=10);ft.containerPoint=Rt?this.latLngToContainerPoint(at.getLatLng()):this.mouseEventToContainerPoint(p),ft.layerPoint=this.containerPointToLayerPoint(ft.containerPoint),ft.latlng=Rt?at.getLatLng():this.layerPointToLatLng(ft.layerPoint)}for(We=0;We<ne.length;We++)if(ne[We].fire(A,ft,!0),ft.originalEvent._stopped||ne[We].options.bubblingMouseEvents===!1&&ht(this._mouseEvents,A)!==-1)return}},_draggableMoved:function(p){return p=p.dragging&&p.dragging.enabled()?p:this,p.dragging&&p.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var p=0,A=this._handlers.length;p<A;p++)this._handlers[p].disable()},whenReady:function(p,A){return this._loaded?p.call(A||this,{target:this}):this.on("load",p,A),this},_getMapPanePos:function(){return $r(this._mapPane)||new fi(0,0)},_moved:function(){var p=this._getMapPanePos();return p&&!p.equals([0,0])},_getTopLeftPoint:function(p,A){var B=p&&A!==void 0?this._getNewPixelOrigin(p,A):this.getPixelOrigin();return B.subtract(this._getMapPanePos())},_getNewPixelOrigin:function(p,A){var B=this.getSize()._divideBy(2);return this.project(p,A)._subtract(B)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(p,A,B){var X=this._getNewPixelOrigin(B,A);return this.project(p,A)._subtract(X)},_latLngBoundsToNewLayerBounds:function(p,A,B){var X=this._getNewPixelOrigin(B,A);return an([this.project(p.getSouthWest(),A)._subtract(X),this.project(p.getNorthWest(),A)._subtract(X),this.project(p.getSouthEast(),A)._subtract(X),this.project(p.getNorthEast(),A)._subtract(X)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(p){return this.latLngToLayerPoint(p).subtract(this._getCenterLayerPoint())},_limitCenter:function(p,A,B){if(!B)return p;var X=this.project(p,A),ne=this.getSize().divideBy(2),ye=new Gi(X.subtract(ne),X.add(ne)),We=this._getBoundsOffset(ye,B,A);return Math.abs(We.x)<=1&&Math.abs(We.y)<=1?p:this.unproject(X.add(We),A)},_limitOffset:function(p,A){if(!A)return p;var B=this.getPixelBounds(),X=new Gi(B.min.add(p),B.max.add(p));return p.add(this._getBoundsOffset(X,A))},_getBoundsOffset:function(p,A,B){var X=an(this.project(A.getNorthEast(),B),this.project(A.getSouthWest(),B)),ne=X.min.subtract(p.min),ye=X.max.subtract(p.max),We=this._rebound(ne.x,-ye.x),at=this._rebound(ne.y,-ye.y);return new fi(We,at)},_rebound:function(p,A){return p+A>0?Math.round(p-A)/2:Math.max(0,Math.ceil(p))-Math.max(0,Math.floor(A))},_limitZoom:function(p){var A=this.getMinZoom(),B=this.getMaxZoom(),X=Pe.any3d?this.options.zoomSnap:1;return X&&(p=Math.round(p/X)*X),Math.max(A,Math.min(B,p))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){Hn(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(p,A){var B=this._getCenterOffset(p)._trunc();return(A&&A.animate)!==!0&&!this.getSize().contains(B)?!1:(this.panBy(B,A),!0)},_createAnimProxy:function(){var p=this._proxy=tn("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(p),this.on("zoomanim",function(A){var B=Cr,X=this._proxy.style[B];Js(this._proxy,this.project(A.center,A.zoom),this.getZoomScale(A.zoom,1)),X===this._proxy.style[B]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",this._animMoveEnd,this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){vn(this._proxy),this.off("load moveend",this._animMoveEnd,this),delete this._proxy},_animMoveEnd:function(){var p=this.getCenter(),A=this.getZoom();Js(this._proxy,this.project(p,A),this.getZoomScale(A,1))},_catchTransitionEnd:function(p){this._animatingZoom&&p.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(p,A,B){if(this._animatingZoom)return!0;if(B=B||{},!this._zoomAnimated||B.animate===!1||this._nothingToAnimate()||Math.abs(A-this._zoom)>this.options.zoomAnimationThreshold)return!1;var X=this.getZoomScale(A),ne=this._getCenterOffset(p)._divideBy(1-1/X);return B.animate!==!0&&!this.getSize().contains(ne)?!1:(Pt(function(){this._moveStart(!0,B.noMoveStart||!1)._animateZoom(p,A,!0)},this),!0)},_animateZoom:function(p,A,B,X){this._mapPane&&(B&&(this._animatingZoom=!0,this._animateToCenter=p,this._animateToZoom=A,Vi(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:p,zoom:A,noUpdate:X}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(E(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&Hn(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function Tl(p,A){return new nn(p,A)}var Dn=hn.extend({options:{position:"topright"},initialize:function(p){be(this,p)},getPosition:function(){return this.options.position},setPosition:function(p){var A=this._map;return A&&A.removeControl(this),this.options.position=p,A&&A.addControl(this),this},getContainer:function(){return this._container},addTo:function(p){this.remove(),this._map=p;var A=this._container=this.onAdd(p),B=this.getPosition(),X=p._controlCorners[B];return Vi(A,"leaflet-control"),B.indexOf("bottom")!==-1?X.insertBefore(A,X.firstChild):X.appendChild(A),this._map.on("unload",this.remove,this),this},remove:function(){return this._map?(vn(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null,this):this},_refocusOnMap:function(p){this._map&&p&&p.screenX>0&&p.screenY>0&&this._map.getContainer().focus()}}),or=function(p){return new Dn(p)};nn.include({addControl:function(p){return p.addTo(this),this},removeControl:function(p){return p.remove(),this},_initControlPos:function(){var p=this._controlCorners={},A="leaflet-",B=this._controlContainer=tn("div",A+"control-container",this._container);function X(ne,ye){var We=A+ne+" "+A+ye;p[ne+ye]=tn("div",We,B)}X("top","left"),X("top","right"),X("bottom","left"),X("bottom","right")},_clearControlPos:function(){for(var p in this._controlCorners)vn(this._controlCorners[p]);vn(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var as=Dn.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(p,A,B,X){return B<X?-1:X<B?1:0}},initialize:function(p,A,B){be(this,B),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1,this._preventClick=!1;for(var X in p)this._addLayer(p[X],X);for(X in A)this._addLayer(A[X],X,!0)},onAdd:function(p){this._initLayout(),this._update(),this._map=p,p.on("zoomend",this._checkDisabledLayers,this);for(var A=0;A<this._layers.length;A++)this._layers[A].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(p){return Dn.prototype.addTo.call(this,p),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var p=0;p<this._layers.length;p++)this._layers[p].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(p,A){return this._addLayer(p,A),this._map?this._update():this},addOverlay:function(p,A){return this._addLayer(p,A,!0),this._map?this._update():this},removeLayer:function(p){p.off("add remove",this._onLayerChange,this);var A=this._getLayer(O(p));return A&&this._layers.splice(this._layers.indexOf(A),1),this._map?this._update():this},expand:function(){Vi(this._container,"leaflet-control-layers-expanded"),this._section.style.height=null;var p=this._map.getSize().y-(this._container.offsetTop+50);return p<this._section.clientHeight?(Vi(this._section,"leaflet-control-layers-scrollbar"),this._section.style.height=p+"px"):Hn(this._section,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return Hn(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var p="leaflet-control-layers",A=this._container=tn("div",p),B=this.options.collapsed;A.setAttribute("aria-haspopup",!0),Pi(A),To(A);var X=this._section=tn("section",p+"-list");B&&(this._map.on("click",this.collapse,this),Bi(A,{mouseenter:this._expandSafely,mouseleave:this.collapse},this));var ne=this._layersLink=tn("a",p+"-toggle",A);ne.href="#",ne.title="Layers",ne.setAttribute("role","button"),Bi(ne,{keydown:function(ye){ye.keyCode===13&&this._expandSafely()},click:function(ye){gs(ye),this._expandSafely()}},this),B||this.expand(),this._baseLayersList=tn("div",p+"-base",X),this._separator=tn("div",p+"-separator",X),this._overlaysList=tn("div",p+"-overlays",X),A.appendChild(X)},_getLayer:function(p){for(var A=0;A<this._layers.length;A++)if(this._layers[A]&&O(this._layers[A].layer)===p)return this._layers[A]},_addLayer:function(p,A,B){this._map&&p.on("add remove",this._onLayerChange,this),this._layers.push({layer:p,name:A,overlay:B}),this.options.sortLayers&&this._layers.sort(E(function(X,ne){return this.options.sortFunction(X.layer,ne.layer,X.name,ne.name)},this)),this.options.autoZIndex&&p.setZIndex&&(this._lastZIndex++,p.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;oo(this._baseLayersList),oo(this._overlaysList),this._layerControlInputs=[];var p,A,B,X,ne=0;for(B=0;B<this._layers.length;B++)X=this._layers[B],this._addItem(X),A=A||X.overlay,p=p||!X.overlay,ne+=X.overlay?0:1;return this.options.hideSingleBase&&(p=p&&ne>1,this._baseLayersList.style.display=p?"":"none"),this._separator.style.display=A&&p?"":"none",this},_onLayerChange:function(p){this._handlingClick||this._update();var A=this._getLayer(O(p.target)),B=A.overlay?p.type==="add"?"overlayadd":"overlayremove":p.type==="add"?"baselayerchange":null;B&&this._map.fire(B,A)},_createRadioElement:function(p,A){var B='<input type="radio" class="leaflet-control-layers-selector" name="'+p+'"'+(A?' checked="checked"':"")+"/>",X=document.createElement("div");return X.innerHTML=B,X.firstChild},_addItem:function(p){var A=document.createElement("label"),B=this._map.hasLayer(p.layer),X;p.overlay?(X=document.createElement("input"),X.type="checkbox",X.className="leaflet-control-layers-selector",X.defaultChecked=B):X=this._createRadioElement("leaflet-base-layers_"+O(this),B),this._layerControlInputs.push(X),X.layerId=O(p.layer),Bi(X,"click",this._onInputClick,this);var ne=document.createElement("span");ne.innerHTML=" "+p.name;var ye=document.createElement("span");A.appendChild(ye),ye.appendChild(X),ye.appendChild(ne);var We=p.overlay?this._overlaysList:this._baseLayersList;return We.appendChild(A),this._checkDisabledLayers(),A},_onInputClick:function(){if(!this._preventClick){var p=this._layerControlInputs,A,B,X=[],ne=[];this._handlingClick=!0;for(var ye=p.length-1;ye>=0;ye--)A=p[ye],B=this._getLayer(A.layerId).layer,A.checked?X.push(B):A.checked||ne.push(B);for(ye=0;ye<ne.length;ye++)this._map.hasLayer(ne[ye])&&this._map.removeLayer(ne[ye]);for(ye=0;ye<X.length;ye++)this._map.hasLayer(X[ye])||this._map.addLayer(X[ye]);this._handlingClick=!1,this._refocusOnMap()}},_checkDisabledLayers:function(){for(var p=this._layerControlInputs,A,B,X=this._map.getZoom(),ne=p.length-1;ne>=0;ne--)A=p[ne],B=this._getLayer(A.layerId).layer,A.disabled=B.options.minZoom!==void 0&&X<B.options.minZoom||B.options.maxZoom!==void 0&&X>B.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var p=this._section;this._preventClick=!0,Bi(p,"click",gs),this.expand();var A=this;setTimeout(function(){Cn(p,"click",gs),A._preventClick=!1})}}),ya=function(p,A,B){return new as(p,A,B)},Mo=Dn.extend({options:{position:"topleft",zoomInText:'<span aria-hidden="true">+</span>',zoomInTitle:"Zoom in",zoomOutText:'<span aria-hidden="true">−</span>',zoomOutTitle:"Zoom out"},onAdd:function(p){var A="leaflet-control-zoom",B=tn("div",A+" leaflet-bar"),X=this.options;return this._zoomInButton=this._createButton(X.zoomInText,X.zoomInTitle,A+"-in",B,this._zoomIn),this._zoomOutButton=this._createButton(X.zoomOutText,X.zoomOutTitle,A+"-out",B,this._zoomOut),this._updateDisabled(),p.on("zoomend zoomlevelschange",this._updateDisabled,this),B},onRemove:function(p){p.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(p){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(p.shiftKey?3:1))},_zoomOut:function(p){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(p.shiftKey?3:1))},_createButton:function(p,A,B,X,ne){var ye=tn("a",B,X);return ye.innerHTML=p,ye.href="#",ye.title=A,ye.setAttribute("role","button"),ye.setAttribute("aria-label",A),Pi(ye),Bi(ye,"click",Qs),Bi(ye,"click",ne,this),Bi(ye,"click",this._refocusOnMap,this),ye},_updateDisabled:function(){var p=this._map,A="leaflet-disabled";Hn(this._zoomInButton,A),Hn(this._zoomOutButton,A),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),(this._disabled||p._zoom===p.getMinZoom())&&(Vi(this._zoomOutButton,A),this._zoomOutButton.setAttribute("aria-disabled","true")),(this._disabled||p._zoom===p.getMaxZoom())&&(Vi(this._zoomInButton,A),this._zoomInButton.setAttribute("aria-disabled","true"))}});nn.mergeOptions({zoomControl:!0}),nn.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Mo,this.addControl(this.zoomControl))});var bn=function(p){return new Mo(p)},Dr=Dn.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(p){var A="leaflet-control-scale",B=tn("div",A),X=this.options;return this._addScales(X,A+"-line",B),p.on(X.updateWhenIdle?"moveend":"move",this._update,this),p.whenReady(this._update,this),B},onRemove:function(p){p.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(p,A,B){p.metric&&(this._mScale=tn("div",A,B)),p.imperial&&(this._iScale=tn("div",A,B))},_update:function(){var p=this._map,A=p.getSize().y/2,B=p.distance(p.containerPointToLatLng([0,A]),p.containerPointToLatLng([this.options.maxWidth,A]));this._updateScales(B)},_updateScales:function(p){this.options.metric&&p&&this._updateMetric(p),this.options.imperial&&p&&this._updateImperial(p)},_updateMetric:function(p){var A=this._getRoundNum(p),B=A<1e3?A+" m":A/1e3+" km";this._updateScale(this._mScale,B,A/p)},_updateImperial:function(p){var A=p*3.2808399,B,X,ne;A>5280?(B=A/5280,X=this._getRoundNum(B),this._updateScale(this._iScale,X+" mi",X/B)):(ne=this._getRoundNum(A),this._updateScale(this._iScale,ne+" ft",ne/A))},_updateScale:function(p,A,B){p.style.width=Math.round(this.options.maxWidth*B)+"px",p.innerHTML=A},_getRoundNum:function(p){var A=Math.pow(10,(Math.floor(p)+"").length-1),B=p/A;return B=B>=10?10:B>=5?5:B>=3?3:B>=2?2:1,A*B}}),kr=function(p){return new Dr(p)},qn='<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="12" height="8" viewBox="0 0 12 8" class="leaflet-attribution-flag"><path fill="#4C7BE1" d="M0 0h12v4H0z"/><path fill="#FFD500" d="M0 4h12v3H0z"/><path fill="#E0BC00" d="M0 7h12v1H0z"/></svg>',xa=Dn.extend({options:{position:"bottomright",prefix:'<a href="https://leafletjs.com" title="A JavaScript library for interactive maps">'+(Pe.inlineSvg?qn+" ":"")+"Leaflet</a>"},initialize:function(p){be(this,p),this._attributions={}},onAdd:function(p){p.attributionControl=this,this._container=tn("div","leaflet-control-attribution"),Pi(this._container);for(var A in p._layers)p._layers[A].getAttribution&&this.addAttribution(p._layers[A].getAttribution());return this._update(),p.on("layeradd",this._addAttribution,this),this._container},onRemove:function(p){p.off("layeradd",this._addAttribution,this)},_addAttribution:function(p){p.layer.getAttribution&&(this.addAttribution(p.layer.getAttribution()),p.layer.once("remove",function(){this.removeAttribution(p.layer.getAttribution())},this))},setPrefix:function(p){return this.options.prefix=p,this._update(),this},addAttribution:function(p){return p?(this._attributions[p]||(this._attributions[p]=0),this._attributions[p]++,this._update(),this):this},removeAttribution:function(p){return p?(this._attributions[p]&&(this._attributions[p]--,this._update()),this):this},_update:function(){if(this._map){var p=[];for(var A in this._attributions)this._attributions[A]&&p.push(A);var B=[];this.options.prefix&&B.push(this.options.prefix),p.length&&B.push(p.join(", ")),this._container.innerHTML=B.join(' <span aria-hidden="true">|</span> ')}}});nn.mergeOptions({attributionControl:!0}),nn.addInitHook(function(){this.options.attributionControl&&new xa().addTo(this)});var Rr=function(p){return new xa(p)};Dn.Layers=as,Dn.Zoom=Mo,Dn.Scale=Dr,Dn.Attribution=xa,or.layers=ya,or.zoom=bn,or.scale=kr,or.attribution=Rr;var Ps=hn.extend({initialize:function(p){this._map=p},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Ps.addTo=function(p,A){return p.addHandler(A,this),this};var Ua={Events:Si},Xo=Pe.touch?"touchstart mousedown":"mousedown",Yo=Qi.extend({options:{clickTolerance:3},initialize:function(p,A,B,X){be(this,X),this._element=p,this._dragStartTarget=A||p,this._preventOutline=B},enable:function(){this._enabled||(Bi(this._dragStartTarget,Xo,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Yo._dragging===this&&this.finishDrag(!0),Cn(this._dragStartTarget,Xo,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(p){if(this._enabled&&(this._moved=!1,!Ba(this._element,"leaflet-zoom-anim"))){if(p.touches&&p.touches.length!==1){Yo._dragging===this&&this.finishDrag();return}if(!(Yo._dragging||p.shiftKey||p.which!==1&&p.button!==1&&!p.touches)&&(Yo._dragging=this,this._preventOutline&&ki(this._element),Wo(),Lr(),!this._moving)){this.fire("down");var A=p.touches?p.touches[0]:p,B=ei(this._element);this._startPoint=new fi(A.clientX,A.clientY),this._startPos=$r(this._element),this._parentScale=wl(B);var X=p.type==="mousedown";Bi(document,X?"mousemove":"touchmove",this._onMove,this),Bi(document,X?"mouseup":"touchend touchcancel",this._onUp,this)}}},_onMove:function(p){if(this._enabled){if(p.touches&&p.touches.length>1){this._moved=!0;return}var A=p.touches&&p.touches.length===1?p.touches[0]:p,B=new fi(A.clientX,A.clientY)._subtract(this._startPoint);!B.x&&!B.y||Math.abs(B.x)+Math.abs(B.y)<this.options.clickTolerance||(B.x/=this._parentScale.x,B.y/=this._parentScale.y,gs(p),this._moved||(this.fire("dragstart"),this._moved=!0,Vi(document.body,"leaflet-dragging"),this._lastTarget=p.target||p.srcElement,window.SVGElementInstance&&this._lastTarget instanceof window.SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),Vi(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(B),this._moving=!0,this._lastEvent=p,this._updatePosition())}},_updatePosition:function(){var p={originalEvent:this._lastEvent};this.fire("predrag",p),Yn(this._element,this._newPos),this.fire("drag",p)},_onUp:function(){this._enabled&&this.finishDrag()},finishDrag:function(p){Hn(document.body,"leaflet-dragging"),this._lastTarget&&(Hn(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null),Cn(document,"mousemove touchmove",this._onMove,this),Cn(document,"mouseup touchend touchcancel",this._onUp,this),rr(),zr();var A=this._moved&&this._moving;this._moving=!1,Yo._dragging=!1,A&&this.fire("dragend",{noInertia:p,distance:this._newPos.distanceTo(this._startPos)})}});function ao(p,A,B){var X,ne=[1,4,2,8],ye,We,at,ft,Rt,ii,Ci,Wi;for(ye=0,ii=p.length;ye<ii;ye++)p[ye]._code=ks(p[ye],A);for(at=0;at<4;at++){for(Ci=ne[at],X=[],ye=0,ii=p.length,We=ii-1;ye<ii;We=ye++)ft=p[ye],Rt=p[We],ft._code&Ci?Rt._code&Ci||(Wi=Pl(Rt,ft,Ci,A,B),Wi._code=ks(Wi,A),X.push(Wi)):(Rt._code&Ci&&(Wi=Pl(Rt,ft,Ci,A,B),Wi._code=ks(Wi,A),X.push(Wi)),X.push(ft));p=X}return p}function Qc(p,A){var B,X,ne,ye,We,at,ft,Rt,ii;if(!p||p.length===0)throw new Error("latlngs not passed");ls(p)||(console.warn("latlngs are not flat! Only the first ring will be used"),p=p[0]);var Ci=xi([0,0]),Wi=ln(p),Hs=Wi.getNorthWest().distanceTo(Wi.getSouthWest())*Wi.getNorthEast().distanceTo(Wi.getNorthWest());Hs<1700&&(Ci=ja(p));var ws=p.length,Os=[];for(B=0;B<ws;B++){var dr=xi(p[B]);Os.push(A.project(xi([dr.lat-Ci.lat,dr.lng-Ci.lng])))}for(at=ft=Rt=0,B=0,X=ws-1;B<ws;X=B++)ne=Os[B],ye=Os[X],We=ne.y*ye.x-ye.y*ne.x,ft+=(ne.x+ye.x)*We,Rt+=(ne.y+ye.y)*We,at+=We*3;at===0?ii=Os[0]:ii=[ft/at,Rt/at];var Xa=A.unproject(ni(ii));return xi([Xa.lat+Ci.lat,Xa.lng+Ci.lng])}function ja(p){for(var A=0,B=0,X=0,ne=0;ne<p.length;ne++){var ye=xi(p[ne]);A+=ye.lat,B+=ye.lng,X++}return xi([A/X,B/X])}var ar={__proto__:null,clipPolygon:ao,polygonCenter:Qc,centroid:ja};function Ml(p,A){if(!A||!p.length)return p.slice();var B=A*A;return p=Ld(p,B),p=El(p,B),p}function Sl(p,A,B){return Math.sqrt(Ko(p,A,B,!0))}function Xh(p,A,B){return Ko(p,A,B)}function El(p,A){var B=p.length,X=typeof Uint8Array!=void 0+""?Uint8Array:Array,ne=new X(B);ne[0]=ne[B-1]=1,eh(p,ne,A,0,B-1);var ye,We=[];for(ye=0;ye<B;ye++)ne[ye]&&We.push(p[ye]);return We}function eh(p,A,B,X,ne){var ye=0,We,at,ft;for(at=X+1;at<=ne-1;at++)ft=Ko(p[at],p[X],p[ne],!0),ft>ye&&(We=at,ye=ft);ye>B&&(A[We]=1,eh(p,A,B,X,We),eh(p,A,B,We,ne))}function Ld(p,A){for(var B=[p[0]],X=1,ne=0,ye=p.length;X<ye;X++)Yh(p[X],p[ne])>A&&(B.push(p[X]),ne=X);return ne<ye-1&&B.push(p[ye-1]),B}var Ga;function Za(p,A,B,X,ne){var ye=X?Ga:ks(p,B),We=ks(A,B),at,ft,Rt;for(Ga=We;;){if(!(ye|We))return[p,A];if(ye&We)return!1;at=ye||We,ft=Pl(p,A,at,B,ne),Rt=ks(ft,B),at===ye?(p=ft,ye=Rt):(A=ft,We=Rt)}}function Pl(p,A,B,X,ne){var ye=A.x-p.x,We=A.y-p.y,at=X.min,ft=X.max,Rt,ii;return B&8?(Rt=p.x+ye*(ft.y-p.y)/We,ii=ft.y):B&4?(Rt=p.x+ye*(at.y-p.y)/We,ii=at.y):B&2?(Rt=ft.x,ii=p.y+We*(ft.x-p.x)/ye):B&1&&(Rt=at.x,ii=p.y+We*(at.x-p.x)/ye),new fi(Rt,ii,ne)}function ks(p,A){var B=0;return p.x<A.min.x?B|=1:p.x>A.max.x&&(B|=2),p.y<A.min.y?B|=4:p.y>A.max.y&&(B|=8),B}function Yh(p,A){var B=A.x-p.x,X=A.y-p.y;return B*B+X*X}function Ko(p,A,B,X){var ne=A.x,ye=A.y,We=B.x-ne,at=B.y-ye,ft=We*We+at*at,Rt;return ft>0&&(Rt=((p.x-ne)*We+(p.y-ye)*at)/ft,Rt>1?(ne=B.x,ye=B.y):Rt>0&&(ne+=We*Rt,ye+=at*Rt)),We=p.x-ne,at=p.y-ye,X?We*We+at*at:new fi(ne,ye)}function ls(p){return!vt(p[0])||typeof p[0][0]!="object"&&typeof p[0][0]<"u"}function Kh(p){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),ls(p)}function Jh(p,A){var B,X,ne,ye,We,at,ft,Rt;if(!p||p.length===0)throw new Error("latlngs not passed");ls(p)||(console.warn("latlngs are not flat! Only the first ring will be used"),p=p[0]);var ii=xi([0,0]),Ci=ln(p),Wi=Ci.getNorthWest().distanceTo(Ci.getSouthWest())*Ci.getNorthEast().distanceTo(Ci.getNorthWest());Wi<1700&&(ii=ja(p));var Hs=p.length,ws=[];for(B=0;B<Hs;B++){var Os=xi(p[B]);ws.push(A.project(xi([Os.lat-ii.lat,Os.lng-ii.lng])))}for(B=0,X=0;B<Hs-1;B++)X+=ws[B].distanceTo(ws[B+1])/2;if(X===0)Rt=ws[0];else for(B=0,ye=0;B<Hs-1;B++)if(We=ws[B],at=ws[B+1],ne=We.distanceTo(at),ye+=ne,ye>X){ft=(ye-X)/ne,Rt=[at.x-ft*(at.x-We.x),at.y-ft*(at.y-We.y)];break}var dr=A.unproject(ni(Rt));return xi([dr.lat+ii.lat,dr.lng+ii.lng])}var zd={__proto__:null,simplify:Ml,pointToSegmentDistance:Sl,closestPointOnSegment:Xh,clipSegment:Za,_getEdgeIntersection:Pl,_getBitCode:ks,_sqClosestPointOnSegment:Ko,isFlat:ls,_flat:Kh,polylineCenter:Jh},ic={project:function(p){return new fi(p.lng,p.lat)},unproject:function(p){return new Di(p.y,p.x)},bounds:new Gi([-180,-90],[180,90])},Jo={R:6378137,R_MINOR:6356752314245179e-9,bounds:new Gi([-2003750834279e-5,-1549657073972e-5],[2003750834279e-5,1876465623138e-5]),project:function(p){var A=Math.PI/180,B=this.R,X=p.lat*A,ne=this.R_MINOR/B,ye=Math.sqrt(1-ne*ne),We=ye*Math.sin(X),at=Math.tan(Math.PI/4-X/2)/Math.pow((1-We)/(1+We),ye/2);return X=-B*Math.log(Math.max(at,1e-10)),new fi(p.lng*A*B,X)},unproject:function(p){for(var A=180/Math.PI,B=this.R,X=this.R_MINOR/B,ne=Math.sqrt(1-X*X),ye=Math.exp(-p.y/B),We=Math.PI/2-2*Math.atan(ye),at=0,ft=.1,Rt;at<15&&Math.abs(ft)>1e-7;at++)Rt=ne*Math.sin(We),Rt=Math.pow((1-Rt)/(1+Rt),ne/2),ft=Math.PI/2-2*Math.atan(ye*Rt)-We,We+=ft;return new Di(We*A,p.x*A/B)}},bi={__proto__:null,LonLat:ic,Mercator:Jo,SphericalMercator:De},Wt=w({},xs,{code:"EPSG:3395",projection:Jo,transformation:function(){var p=.5/(Math.PI*Jo.R);return Us(p,.5,-p,.5)}()}),Al=w({},xs,{code:"EPSG:4326",projection:ic,transformation:Us(1/180,1,-1/180,.5)}),ci=w({},Is,{projection:ic,transformation:Us(1,0,-1,0),scale:function(p){return Math.pow(2,p)},zoom:function(p){return Math.log(p)/Math.LN2},distance:function(p,A){var B=A.lng-p.lng,X=A.lat-p.lat;return Math.sqrt(B*B+X*X)},infinite:!0});Is.Earth=xs,Is.EPSG3395=Wt,Is.EPSG3857=Zr,Is.EPSG900913=Et,Is.EPSG4326=Al,Is.Simple=ci;var lr=Qi.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(p){return p.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(p){return p&&p.removeLayer(this),this},getPane:function(p){return this._map.getPane(p?this.options[p]||p:this.options.pane)},addInteractiveTarget:function(p){return this._map._targets[O(p)]=this,this},removeInteractiveTarget:function(p){return delete this._map._targets[O(p)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(p){var A=p.target;if(A.hasLayer(this)){if(this._map=A,this._zoomAnimated=A._zoomAnimated,this.getEvents){var B=this.getEvents();A.on(B,this),this.once("remove",function(){A.off(B,this)},this)}this.onAdd(A),this.fire("add"),A.fire("layeradd",{layer:this})}}});nn.include({addLayer:function(p){if(!p._layerAdd)throw new Error("The provided object is not a Layer.");var A=O(p);return this._layers[A]?this:(this._layers[A]=p,p._mapToAdd=this,p.beforeAdd&&p.beforeAdd(this),this.whenReady(p._layerAdd,p),this)},removeLayer:function(p){var A=O(p);return this._layers[A]?(this._loaded&&p.onRemove(this),delete this._layers[A],this._loaded&&(this.fire("layerremove",{layer:p}),p.fire("remove")),p._map=p._mapToAdd=null,this):this},hasLayer:function(p){return O(p)in this._layers},eachLayer:function(p,A){for(var B in this._layers)p.call(A,this._layers[B]);return this},_addLayers:function(p){p=p?vt(p)?p:[p]:[];for(var A=0,B=p.length;A<B;A++)this.addLayer(p[A])},_addZoomLimit:function(p){(!isNaN(p.options.maxZoom)||!isNaN(p.options.minZoom))&&(this._zoomBoundLayers[O(p)]=p,this._updateZoomLevels())},_removeZoomLimit:function(p){var A=O(p);this._zoomBoundLayers[A]&&(delete this._zoomBoundLayers[A],this._updateZoomLevels())},_updateZoomLevels:function(){var p=1/0,A=-1/0,B=this._getZoomSpan();for(var X in this._zoomBoundLayers){var ne=this._zoomBoundLayers[X].options;p=ne.minZoom===void 0?p:Math.min(p,ne.minZoom),A=ne.maxZoom===void 0?A:Math.max(A,ne.maxZoom)}this._layersMaxZoom=A===-1/0?void 0:A,this._layersMinZoom=p===1/0?void 0:p,B!==this._getZoomSpan()&&this.fire("zoomlevelschange"),this.options.maxZoom===void 0&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),this.options.minZoom===void 0&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var cr=lr.extend({initialize:function(p,A){be(this,A),this._layers={};var B,X;if(p)for(B=0,X=p.length;B<X;B++)this.addLayer(p[B])},addLayer:function(p){var A=this.getLayerId(p);return this._layers[A]=p,this._map&&this._map.addLayer(p),this},removeLayer:function(p){var A=p in this._layers?p:this.getLayerId(p);return this._map&&this._layers[A]&&this._map.removeLayer(this._layers[A]),delete this._layers[A],this},hasLayer:function(p){var A=typeof p=="number"?p:this.getLayerId(p);return A in this._layers},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(p){var A=Array.prototype.slice.call(arguments,1),B,X;for(B in this._layers)X=this._layers[B],X[p]&&X[p].apply(X,A);return this},onAdd:function(p){this.eachLayer(p.addLayer,p)},onRemove:function(p){this.eachLayer(p.removeLayer,p)},eachLayer:function(p,A){for(var B in this._layers)p.call(A,this._layers[B]);return this},getLayer:function(p){return this._layers[p]},getLayers:function(){var p=[];return this.eachLayer(p.push,p),p},setZIndex:function(p){return this.invoke("setZIndex",p)},getLayerId:function(p){return O(p)}}),ti=function(p,A){return new cr(p,A)},Xr=cr.extend({addLayer:function(p){return this.hasLayer(p)?this:(p.addEventParent(this),cr.prototype.addLayer.call(this,p),this.fire("layeradd",{layer:p}))},removeLayer:function(p){return this.hasLayer(p)?(p in this._layers&&(p=this._layers[p]),p.removeEventParent(this),cr.prototype.removeLayer.call(this,p),this.fire("layerremove",{layer:p})):this},setStyle:function(p){return this.invoke("setStyle",p)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var p=new qt;for(var A in this._layers){var B=this._layers[A];p.extend(B.getBounds?B.getBounds():B.getLatLng())}return p}}),nc=function(p,A){return new Xr(p,A)},Yr=hn.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0],crossOrigin:!1},initialize:function(p){be(this,p)},createIcon:function(p){return this._createIcon("icon",p)},createShadow:function(p){return this._createIcon("shadow",p)},_createIcon:function(p,A){var B=this._getIconUrl(p);if(!B){if(p==="icon")throw new Error("iconUrl not set in Icon options (see the docs).");return null}var X=this._createImg(B,A&&A.tagName==="IMG"?A:null);return this._setIconStyles(X,p),(this.options.crossOrigin||this.options.crossOrigin==="")&&(X.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),X},_setIconStyles:function(p,A){var B=this.options,X=B[A+"Size"];typeof X=="number"&&(X=[X,X]);var ne=ni(X),ye=ni(A==="shadow"&&B.shadowAnchor||B.iconAnchor||ne&&ne.divideBy(2,!0));p.className="leaflet-marker-"+A+" "+(B.className||""),ye&&(p.style.marginLeft=-ye.x+"px",p.style.marginTop=-ye.y+"px"),ne&&(p.style.width=ne.x+"px",p.style.height=ne.y+"px")},_createImg:function(p,A){return A=A||document.createElement("img"),A.src=p,A},_getIconUrl:function(p){return Pe.retina&&this.options[p+"RetinaUrl"]||this.options[p+"Url"]}});function Ha(p){return new Yr(p)}var So=Yr.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(p){return typeof So.imagePath!="string"&&(So.imagePath=this._detectIconPath()),(this.options.imagePath||So.imagePath)+Yr.prototype._getIconUrl.call(this,p)},_stripUrl:function(p){var A=function(B,X,ne){var ye=X.exec(B);return ye&&ye[ne]};return p=A(p,/^url\((['"])?(.+)\1\)$/,2),p&&A(p,/^(.*)marker-icon\.png$/,1)},_detectIconPath:function(){var p=tn("div","leaflet-default-icon-path",document.body),A=Ho(p,"background-image")||Ho(p,"backgroundImage");if(document.body.removeChild(p),A=this._stripUrl(A),A)return A;var B=document.querySelector('link[href$="leaflet.css"]');return B?B.href.substring(0,B.href.length-11-1):""}}),bs=Ps.extend({initialize:function(p){this._marker=p},addHooks:function(){var p=this._marker._icon;this._draggable||(this._draggable=new Yo(p,p,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),Vi(p,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&Hn(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(p){var A=this._marker,B=A._map,X=this._marker.options.autoPanSpeed,ne=this._marker.options.autoPanPadding,ye=$r(A._icon),We=B.getPixelBounds(),at=B.getPixelOrigin(),ft=an(We.min._subtract(at).add(ne),We.max._subtract(at).subtract(ne));if(!ft.contains(ye)){var Rt=ni((Math.max(ft.max.x,ye.x)-ft.max.x)/(We.max.x-ft.max.x)-(Math.min(ft.min.x,ye.x)-ft.min.x)/(We.min.x-ft.min.x),(Math.max(ft.max.y,ye.y)-ft.max.y)/(We.max.y-ft.max.y)-(Math.min(ft.min.y,ye.y)-ft.min.y)/(We.min.y-ft.min.y)).multiplyBy(X);B.panBy(Rt,{animate:!1}),this._draggable._newPos._add(Rt),this._draggable._startPos._add(Rt),Yn(A._icon,this._draggable._newPos),this._onDrag(p),this._panRequest=Pt(this._adjustPan.bind(this,p))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup&&this._marker.closePopup(),this._marker.fire("movestart").fire("dragstart")},_onPreDrag:function(p){this._marker.options.autoPan&&(Mi(this._panRequest),this._panRequest=Pt(this._adjustPan.bind(this,p)))},_onDrag:function(p){var A=this._marker,B=A._shadow,X=$r(A._icon),ne=A._map.layerPointToLatLng(X);B&&Yn(B,X),A._latlng=ne,p.latlng=ne,p.oldLatLng=this._oldLatLng,A.fire("move",p).fire("drag",p)},_onDragEnd:function(p){Mi(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",p)}}),Rs=lr.extend({options:{icon:new So,interactive:!0,keyboard:!0,title:"",alt:"Marker",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",shadowPane:"shadowPane",bubblingMouseEvents:!1,autoPanOnFocus:!0,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10},initialize:function(p,A){be(this,A),this._latlng=xi(p)},onAdd:function(p){this._zoomAnimated=this._zoomAnimated&&p.options.markerZoomAnimation,this._zoomAnimated&&p.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(p){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&p.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(p){var A=this._latlng;return this._latlng=xi(p),this.update(),this.fire("move",{oldLatLng:A,latlng:this._latlng})},setZIndexOffset:function(p){return this.options.zIndexOffset=p,this.update()},getIcon:function(){return this.options.icon},setIcon:function(p){return this.options.icon=p,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var p=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(p)}return this},_initIcon:function(){var p=this.options,A="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),B=p.icon.createIcon(this._icon),X=!1;B!==this._icon&&(this._icon&&this._removeIcon(),X=!0,p.title&&(B.title=p.title),B.tagName==="IMG"&&(B.alt=p.alt||"")),Vi(B,A),p.keyboard&&(B.tabIndex="0",B.setAttribute("role","button")),this._icon=B,p.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex}),this.options.autoPanOnFocus&&Bi(B,"focus",this._panOnFocus,this);var ne=p.icon.createShadow(this._shadow),ye=!1;ne!==this._shadow&&(this._removeShadow(),ye=!0),ne&&(Vi(ne,A),ne.alt=""),this._shadow=ne,p.opacity<1&&this._updateOpacity(),X&&this.getPane().appendChild(this._icon),this._initInteraction(),ne&&ye&&this.getPane(p.shadowPane).appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),this.options.autoPanOnFocus&&Cn(this._icon,"focus",this._panOnFocus,this),vn(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&vn(this._shadow),this._shadow=null},_setPos:function(p){this._icon&&Yn(this._icon,p),this._shadow&&Yn(this._shadow,p),this._zIndex=p.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(p){this._icon&&(this._icon.style.zIndex=this._zIndex+p)},_animateZoom:function(p){var A=this._map._latLngToNewLayerPoint(this._latlng,p.zoom,p.center).round();this._setPos(A)},_initInteraction:function(){if(this.options.interactive&&(Vi(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),bs)){var p=this.options.draggable;this.dragging&&(p=this.dragging.enabled(),this.dragging.disable()),this.dragging=new bs(this),p&&this.dragging.enable()}},setOpacity:function(p){return this.options.opacity=p,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var p=this.options.opacity;this._icon&&es(this._icon,p),this._shadow&&es(this._shadow,p)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_panOnFocus:function(){var p=this._map;if(p){var A=this.options.icon.options,B=A.iconSize?ni(A.iconSize):ni(0,0),X=A.iconAnchor?ni(A.iconAnchor):ni(0,0);p.panInside(this._latlng,{paddingTopLeft:X,paddingBottomRight:B.subtract(X)})}},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}});function sc(p,A){return new Rs(p,A)}var Tt=lr.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(p){this._renderer=p.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(p){return be(this,p),this._renderer&&(this._renderer._updateStyle(this),this.options.stroke&&p&&Object.prototype.hasOwnProperty.call(p,"weight")&&this._updateBounds()),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+(this._renderer.options.tolerance||0)}}),va=Tt.extend({options:{fill:!0,radius:10},initialize:function(p,A){be(this,A),this._latlng=xi(p),this._radius=this.options.radius},setLatLng:function(p){var A=this._latlng;return this._latlng=xi(p),this.redraw(),this.fire("move",{oldLatLng:A,latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(p){return this.options.radius=this._radius=p,this.redraw()},getRadius:function(){return this._radius},setStyle:function(p){var A=p&&p.radius||this._radius;return Tt.prototype.setStyle.call(this,p),this.setRadius(A),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var p=this._radius,A=this._radiusY||p,B=this._clickTolerance(),X=[p+B,A+B];this._pxBounds=new Gi(this._point.subtract(X),this._point.add(X))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(p){return p.distanceTo(this._point)<=this._radius+this._clickTolerance()}});function Eo(p,A){return new va(p,A)}var ys=va.extend({initialize:function(p,A,B){if(typeof A=="number"&&(A=w({},B,{radius:A})),be(this,A),this._latlng=xi(p),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(p){return this._mRadius=p,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var p=[this._radius,this._radiusY||this._radius];return new qt(this._map.layerPointToLatLng(this._point.subtract(p)),this._map.layerPointToLatLng(this._point.add(p)))},setStyle:Tt.prototype.setStyle,_project:function(){var p=this._latlng.lng,A=this._latlng.lat,B=this._map,X=B.options.crs;if(X.distance===xs.distance){var ne=Math.PI/180,ye=this._mRadius/xs.R/ne,We=B.project([A+ye,p]),at=B.project([A-ye,p]),ft=We.add(at).divideBy(2),Rt=B.unproject(ft).lat,ii=Math.acos((Math.cos(ye*ne)-Math.sin(A*ne)*Math.sin(Rt*ne))/(Math.cos(A*ne)*Math.cos(Rt*ne)))/ne;(isNaN(ii)||ii===0)&&(ii=ye/Math.cos(Math.PI/180*A)),this._point=ft.subtract(B.getPixelOrigin()),this._radius=isNaN(ii)?0:ft.x-B.project([Rt,p-ii]).x,this._radiusY=ft.y-We.y}else{var Ci=X.unproject(X.project(this._latlng).subtract([this._mRadius,0]));this._point=B.latLngToLayerPoint(this._latlng),this._radius=this._point.x-B.latLngToLayerPoint(Ci).x}this._updateBounds()}});function Qh(p,A,B){return new ys(p,A,B)}var Or=Tt.extend({options:{smoothFactor:1,noClip:!1},initialize:function(p,A){be(this,A),this._setLatLngs(p)},getLatLngs:function(){return this._latlngs},setLatLngs:function(p){return this._setLatLngs(p),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(p){for(var A=1/0,B=null,X=Ko,ne,ye,We=0,at=this._parts.length;We<at;We++)for(var ft=this._parts[We],Rt=1,ii=ft.length;Rt<ii;Rt++){ne=ft[Rt-1],ye=ft[Rt];var Ci=X(p,ne,ye,!0);Ci<A&&(A=Ci,B=X(p,ne,ye))}return B&&(B.distance=Math.sqrt(A)),B},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");return Jh(this._defaultShape(),this._map.options.crs)},getBounds:function(){return this._bounds},addLatLng:function(p,A){return A=A||this._defaultShape(),p=xi(p),A.push(p),this._bounds.extend(p),this.redraw()},_setLatLngs:function(p){this._bounds=new qt,this._latlngs=this._convertLatLngs(p)},_defaultShape:function(){return ls(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(p){for(var A=[],B=ls(p),X=0,ne=p.length;X<ne;X++)B?(A[X]=xi(p[X]),this._bounds.extend(A[X])):A[X]=this._convertLatLngs(p[X]);return A},_project:function(){var p=new Gi;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,p),this._bounds.isValid()&&p.isValid()&&(this._rawPxBounds=p,this._updateBounds())},_updateBounds:function(){var p=this._clickTolerance(),A=new fi(p,p);this._rawPxBounds&&(this._pxBounds=new Gi([this._rawPxBounds.min.subtract(A),this._rawPxBounds.max.add(A)]))},_projectLatlngs:function(p,A,B){var X=p[0]instanceof Di,ne=p.length,ye,We;if(X){for(We=[],ye=0;ye<ne;ye++)We[ye]=this._map.latLngToLayerPoint(p[ye]),B.extend(We[ye]);A.push(We)}else for(ye=0;ye<ne;ye++)this._projectLatlngs(p[ye],A,B)},_clipPoints:function(){var p=this._renderer._bounds;if(this._parts=[],!(!this._pxBounds||!this._pxBounds.intersects(p))){if(this.options.noClip){this._parts=this._rings;return}var A=this._parts,B,X,ne,ye,We,at,ft;for(B=0,ne=0,ye=this._rings.length;B<ye;B++)for(ft=this._rings[B],X=0,We=ft.length;X<We-1;X++)at=Za(ft[X],ft[X+1],p,X,!0),at&&(A[ne]=A[ne]||[],A[ne].push(at[0]),(at[1]!==ft[X+1]||X===We-2)&&(A[ne].push(at[1]),ne++))}},_simplifyPoints:function(){for(var p=this._parts,A=this.options.smoothFactor,B=0,X=p.length;B<X;B++)p[B]=Ml(p[B],A)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(p,A){var B,X,ne,ye,We,at,ft=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(p))return!1;for(B=0,ye=this._parts.length;B<ye;B++)for(at=this._parts[B],X=0,We=at.length,ne=We-1;X<We;ne=X++)if(!(!A&&X===0)&&Sl(p,at[ne],at[X])<=ft)return!0;return!1}});function Po(p,A){return new Or(p,A)}Or._flat=Kh;var Kr=Or.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");return Qc(this._defaultShape(),this._map.options.crs)},_convertLatLngs:function(p){var A=Or.prototype._convertLatLngs.call(this,p),B=A.length;return B>=2&&A[0]instanceof Di&&A[0].equals(A[B-1])&&A.pop(),A},_setLatLngs:function(p){Or.prototype._setLatLngs.call(this,p),ls(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return ls(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var p=this._renderer._bounds,A=this.options.weight,B=new fi(A,A);if(p=new Gi(p.min.subtract(B),p.max.add(B)),this._parts=[],!(!this._pxBounds||!this._pxBounds.intersects(p))){if(this.options.noClip){this._parts=this._rings;return}for(var X=0,ne=this._rings.length,ye;X<ne;X++)ye=ao(this._rings[X],p,!0),ye.length&&this._parts.push(ye)}},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(p){var A=!1,B,X,ne,ye,We,at,ft,Rt;if(!this._pxBounds||!this._pxBounds.contains(p))return!1;for(ye=0,ft=this._parts.length;ye<ft;ye++)for(B=this._parts[ye],We=0,Rt=B.length,at=Rt-1;We<Rt;at=We++)X=B[We],ne=B[at],X.y>p.y!=ne.y>p.y&&p.x<(ne.x-X.x)*(p.y-X.y)/(ne.y-X.y)+X.x&&(A=!A);return A||Or.prototype._containsPoint.call(this,p,!0)}});function Qo(p,A){return new Kr(p,A)}var hr=Xr.extend({initialize:function(p,A){be(this,A),this._layers={},p&&this.addData(p)},addData:function(p){var A=vt(p)?p:p.features,B,X,ne;if(A){for(B=0,X=A.length;B<X;B++)ne=A[B],(ne.geometries||ne.geometry||ne.features||ne.coordinates)&&this.addData(ne);return this}var ye=this.options;if(ye.filter&&!ye.filter(p))return this;var We=Ao(p,ye);return We?(We.feature=wa(p),We.defaultOptions=We.options,this.resetStyle(We),ye.onEachFeature&&ye.onEachFeature(p,We),this.addLayer(We)):this},resetStyle:function(p){return p===void 0?this.eachLayer(this.resetStyle,this):(p.options=w({},p.defaultOptions),this._setLayerStyle(p,this.options.style),this)},setStyle:function(p){return this.eachLayer(function(A){this._setLayerStyle(A,p)},this)},_setLayerStyle:function(p,A){p.setStyle&&(typeof A=="function"&&(A=A(p.feature)),p.setStyle(A))}});function Ao(p,A){var B=p.type==="Feature"?p.geometry:p,X=B?B.coordinates:null,ne=[],ye=A&&A.pointToLayer,We=A&&A.coordsToLatLng||th,at,ft,Rt,ii;if(!X&&!B)return null;switch(B.type){case"Point":return at=We(X),eu(ye,p,at,A);case"MultiPoint":for(Rt=0,ii=X.length;Rt<ii;Rt++)at=We(X[Rt]),ne.push(eu(ye,p,at,A));return new Xr(ne);case"LineString":case"MultiLineString":return ft=qa(X,B.type==="LineString"?0:1,We),new Or(ft,A);case"Polygon":case"MultiPolygon":return ft=qa(X,B.type==="Polygon"?1:2,We),new Kr(ft,A);case"GeometryCollection":for(Rt=0,ii=B.geometries.length;Rt<ii;Rt++){var Ci=Ao({geometry:B.geometries[Rt],type:"Feature",properties:p.properties},A);Ci&&ne.push(Ci)}return new Xr(ne);case"FeatureCollection":for(Rt=0,ii=B.features.length;Rt<ii;Rt++){var Wi=Ao(B.features[Rt],A);Wi&&ne.push(Wi)}return new Xr(ne);default:throw new Error("Invalid GeoJSON object.")}}function eu(p,A,B,X){return p?p(A,B):new Rs(B,X&&X.markersInheritOptions&&X)}function th(p){return new Di(p[1],p[0],p[2])}function qa(p,A,B){for(var X=[],ne=0,ye=p.length,We;ne<ye;ne++)We=A?qa(p[ne],A-1,B):(B||th)(p[ne]),X.push(We);return X}function rc(p,A){return p=xi(p),p.alt!==void 0?[ae(p.lng,A),ae(p.lat,A),ae(p.alt,A)]:[ae(p.lng,A),ae(p.lat,A)]}function Cl(p,A,B,X){for(var ne=[],ye=0,We=p.length;ye<We;ye++)ne.push(A?Cl(p[ye],ls(p[ye])?0:A-1,B,X):rc(p[ye],X));return!A&&B&&ne.length>0&&ne.push(ne[0].slice()),ne}function ba(p,A){return p.feature?w({},p.feature,{geometry:A}):wa(A)}function wa(p){return p.type==="Feature"||p.type==="FeatureCollection"?p:{type:"Feature",properties:{},geometry:p}}var Co={toGeoJSON:function(p){return ba(this,{type:"Point",coordinates:rc(this.getLatLng(),p)})}};Rs.include(Co),ys.include(Co),va.include(Co),Or.include({toGeoJSON:function(p){var A=!ls(this._latlngs),B=Cl(this._latlngs,A?1:0,!1,p);return ba(this,{type:(A?"Multi":"")+"LineString",coordinates:B})}}),Kr.include({toGeoJSON:function(p){var A=!ls(this._latlngs),B=A&&!ls(this._latlngs[0]),X=Cl(this._latlngs,B?2:A?1:0,!0,p);return A||(X=[X]),ba(this,{type:(B?"Multi":"")+"Polygon",coordinates:X})}}),cr.include({toMultiPoint:function(p){var A=[];return this.eachLayer(function(B){A.push(B.toGeoJSON(p).geometry.coordinates)}),ba(this,{type:"MultiPoint",coordinates:A})},toGeoJSON:function(p){var A=this.feature&&this.feature.geometry&&this.feature.geometry.type;if(A==="MultiPoint")return this.toMultiPoint(p);var B=A==="GeometryCollection",X=[];return this.eachLayer(function(ne){if(ne.toGeoJSON){var ye=ne.toGeoJSON(p);if(B)X.push(ye.geometry);else{var We=wa(ye);We.type==="FeatureCollection"?X.push.apply(X,We.features):X.push(We)}}}),B?ba(this,{geometries:X,type:"GeometryCollection"}):{type:"FeatureCollection",features:X}}});function tu(p,A){return new hr(p,A)}var Dd=tu,Wa=lr.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(p,A,B){this._url=p,this._bounds=ln(A),be(this,B)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(Vi(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){vn(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(p){return this.options.opacity=p,this._image&&this._updateOpacity(),this},setStyle:function(p){return p.opacity&&this.setOpacity(p.opacity),this},bringToFront:function(){return this._map&&qo(this._image),this},bringToBack:function(){return this._map&&da(this._image),this},setUrl:function(p){return this._url=p,this._image&&(this._image.src=p),this},setBounds:function(p){return this._bounds=ln(p),this._map&&this._reset(),this},getEvents:function(){var p={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(p.zoomanim=this._animateZoom),p},setZIndex:function(p){return this.options.zIndex=p,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var p=this._url.tagName==="IMG",A=this._image=p?this._url:tn("img");if(Vi(A,"leaflet-image-layer"),this._zoomAnimated&&Vi(A,"leaflet-zoom-animated"),this.options.className&&Vi(A,this.options.className),A.onselectstart=J,A.onmousemove=J,A.onload=E(this.fire,this,"load"),A.onerror=E(this._overlayOnError,this,"error"),(this.options.crossOrigin||this.options.crossOrigin==="")&&(A.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),p){this._url=A.src;return}A.src=this._url,A.alt=this.options.alt},_animateZoom:function(p){var A=this._map.getZoomScale(p.zoom),B=this._map._latLngBoundsToNewLayerBounds(this._bounds,p.zoom,p.center).min;Js(this._image,B,A)},_reset:function(){var p=this._image,A=new Gi(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),B=A.getSize();Yn(p,A.min),p.style.width=B.x+"px",p.style.height=B.y+"px"},_updateOpacity:function(){es(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&this.options.zIndex!==void 0&&this.options.zIndex!==null&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var p=this.options.errorOverlayUrl;p&&this._url!==p&&(this._url=p,this._image.src=p)},getCenter:function(){return this._bounds.getCenter()}}),ih=function(p,A,B){return new Wa(p,A,B)},nh=Wa.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0,muted:!1,playsInline:!0},_initImage:function(){var p=this._url.tagName==="VIDEO",A=this._image=p?this._url:tn("video");if(Vi(A,"leaflet-image-layer"),this._zoomAnimated&&Vi(A,"leaflet-zoom-animated"),this.options.className&&Vi(A,this.options.className),A.onselectstart=J,A.onmousemove=J,A.onloadeddata=E(this.fire,this,"load"),p){for(var B=A.getElementsByTagName("source"),X=[],ne=0;ne<B.length;ne++)X.push(B[ne].src);this._url=B.length>0?X:[A.src];return}vt(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&Object.prototype.hasOwnProperty.call(A.style,"objectFit")&&(A.style.objectFit="fill"),A.autoplay=!!this.options.autoplay,A.loop=!!this.options.loop,A.muted=!!this.options.muted,A.playsInline=!!this.options.playsInline;for(var ye=0;ye<this._url.length;ye++){var We=tn("source");We.src=this._url[ye],A.appendChild(We)}}});function ur(p,A,B){return new nh(p,A,B)}var sh=Wa.extend({_initImage:function(){var p=this._image=this._url;Vi(p,"leaflet-image-layer"),this._zoomAnimated&&Vi(p,"leaflet-zoom-animated"),this.options.className&&Vi(p,this.options.className),p.onselectstart=J,p.onmousemove=J}});function rh(p,A,B){return new sh(p,A,B)}var xr=lr.extend({options:{interactive:!1,offset:[0,0],className:"",pane:void 0,content:""},initialize:function(p,A){p&&(p instanceof Di||vt(p))?(this._latlng=xi(p),be(this,A)):(be(this,p),this._source=A),this.options.content&&(this._content=this.options.content)},openOn:function(p){return p=arguments.length?p:this._source._map,p.hasLayer(this)||p.addLayer(this),this},close:function(){return this._map&&this._map.removeLayer(this),this},toggle:function(p){return this._map?this.close():(arguments.length?this._source=p:p=this._source,this._prepareOpen(),this.openOn(p._map)),this},onAdd:function(p){this._zoomAnimated=p._zoomAnimated,this._container||this._initLayout(),p._fadeAnimated&&es(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),p._fadeAnimated&&es(this._container,1),this.bringToFront(),this.options.interactive&&(Vi(this._container,"leaflet-interactive"),this.addInteractiveTarget(this._container))},onRemove:function(p){p._fadeAnimated?(es(this._container,0),this._removeTimeout=setTimeout(E(vn,void 0,this._container),200)):vn(this._container),this.options.interactive&&(Hn(this._container,"leaflet-interactive"),this.removeInteractiveTarget(this._container))},getLatLng:function(){return this._latlng},setLatLng:function(p){return this._latlng=xi(p),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(p){return this._content=p,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var p={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(p.zoomanim=this._animateZoom),p},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&qo(this._container),this},bringToBack:function(){return this._map&&da(this._container),this},_prepareOpen:function(p){var A=this._source;if(!A._map)return!1;if(A instanceof Xr){A=null;var B=this._source._layers;for(var X in B)if(B[X]._map){A=B[X];break}if(!A)return!1;this._source=A}if(!p)if(A.getCenter)p=A.getCenter();else if(A.getLatLng)p=A.getLatLng();else if(A.getBounds)p=A.getBounds().getCenter();else throw new Error("Unable to get source layer LatLng.");return this.setLatLng(p),this._map&&this.update(),!0},_updateContent:function(){if(this._content){var p=this._contentNode,A=typeof this._content=="function"?this._content(this._source||this):this._content;if(typeof A=="string")p.innerHTML=A;else{for(;p.hasChildNodes();)p.removeChild(p.firstChild);p.appendChild(A)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var p=this._map.latLngToLayerPoint(this._latlng),A=ni(this.options.offset),B=this._getAnchor();this._zoomAnimated?Yn(this._container,p.add(B)):A=A.add(p).add(B);var X=this._containerBottom=-A.y,ne=this._containerLeft=-Math.round(this._containerWidth/2)+A.x;this._container.style.bottom=X+"px",this._container.style.left=ne+"px"}},_getAnchor:function(){return[0,0]}});nn.include({_initOverlay:function(p,A,B,X){var ne=A;return ne instanceof p||(ne=new p(X).setContent(A)),B&&ne.setLatLng(B),ne}}),lr.include({_initOverlay:function(p,A,B,X){var ne=B;return ne instanceof p?(be(ne,X),ne._source=this):(ne=A&&!X?A:new p(X,this),ne.setContent(B)),ne}});var ea=xr.extend({options:{pane:"popupPane",offset:[0,7],maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(p){return p=arguments.length?p:this._source._map,!p.hasLayer(this)&&p._popup&&p._popup.options.autoClose&&p.removeLayer(p._popup),p._popup=this,xr.prototype.openOn.call(this,p)},onAdd:function(p){xr.prototype.onAdd.call(this,p),p.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof Tt||this._source.on("preclick",_s))},onRemove:function(p){xr.prototype.onRemove.call(this,p),p.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof Tt||this._source.off("preclick",_s))},getEvents:function(){var p=xr.prototype.getEvents.call(this);return(this.options.closeOnClick!==void 0?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(p.preclick=this.close),this.options.keepInView&&(p.moveend=this._adjustPan),p},_initLayout:function(){var p="leaflet-popup",A=this._container=tn("div",p+" "+(this.options.className||"")+" leaflet-zoom-animated"),B=this._wrapper=tn("div",p+"-content-wrapper",A);if(this._contentNode=tn("div",p+"-content",B),Pi(A),To(this._contentNode),Bi(A,"contextmenu",_s),this._tipContainer=tn("div",p+"-tip-container",A),this._tip=tn("div",p+"-tip",this._tipContainer),this.options.closeButton){var X=this._closeButton=tn("a",p+"-close-button",A);X.setAttribute("role","button"),X.setAttribute("aria-label","Close popup"),X.href="#close",X.innerHTML='<span aria-hidden="true">×</span>',Bi(X,"click",function(ne){gs(ne),this.close()},this)}},_updateLayout:function(){var p=this._contentNode,A=p.style;A.width="",A.whiteSpace="nowrap";var B=p.offsetWidth;B=Math.min(B,this.options.maxWidth),B=Math.max(B,this.options.minWidth),A.width=B+1+"px",A.whiteSpace="",A.height="";var X=p.offsetHeight,ne=this.options.maxHeight,ye="leaflet-popup-scrolled";ne&&X>ne?(A.height=ne+"px",Vi(p,ye)):Hn(p,ye),this._containerWidth=this._container.offsetWidth},_animateZoom:function(p){var A=this._map._latLngToNewLayerPoint(this._latlng,p.zoom,p.center),B=this._getAnchor();Yn(this._container,A.add(B))},_adjustPan:function(){if(this.options.autoPan){if(this._map._panAnim&&this._map._panAnim.stop(),this._autopanning){this._autopanning=!1;return}var p=this._map,A=parseInt(Ho(this._container,"marginBottom"),10)||0,B=this._container.offsetHeight+A,X=this._containerWidth,ne=new fi(this._containerLeft,-B-this._containerBottom);ne._add($r(this._container));var ye=p.layerPointToContainerPoint(ne),We=ni(this.options.autoPanPadding),at=ni(this.options.autoPanPaddingTopLeft||We),ft=ni(this.options.autoPanPaddingBottomRight||We),Rt=p.getSize(),ii=0,Ci=0;ye.x+X+ft.x>Rt.x&&(ii=ye.x+X-Rt.x+ft.x),ye.x-ii-at.x<0&&(ii=ye.x-at.x),ye.y+B+ft.y>Rt.y&&(Ci=ye.y+B-Rt.y+ft.y),ye.y-Ci-at.y<0&&(Ci=ye.y-at.y),(ii||Ci)&&(this.options.keepInView&&(this._autopanning=!0),p.fire("autopanstart").panBy([ii,Ci]))}},_getAnchor:function(){return ni(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}}),oc=function(p,A){return new ea(p,A)};nn.mergeOptions({closePopupOnClick:!0}),nn.include({openPopup:function(p,A,B){return this._initOverlay(ea,p,A,B).openOn(this),this},closePopup:function(p){return p=arguments.length?p:this._popup,p&&p.close(),this}}),lr.include({bindPopup:function(p,A){return this._popup=this._initOverlay(ea,this._popup,p,A),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(p){return this._popup&&(this instanceof Xr||(this._popup._source=this),this._popup._prepareOpen(p||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return this._popup?this._popup.isOpen():!1},setPopupContent:function(p){return this._popup&&this._popup.setContent(p),this},getPopup:function(){return this._popup},_openPopup:function(p){if(!(!this._popup||!this._map)){Qs(p);var A=p.layer||p.target;if(this._popup._source===A&&!(A instanceof Tt)){this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(p.latlng);return}this._popup._source=A,this.openPopup(p.latlng)}},_movePopup:function(p){this._popup.setLatLng(p.latlng)},_onKeyPress:function(p){p.originalEvent.keyCode===13&&this._openPopup(p)}});var Jr=xr.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(p){xr.prototype.onAdd.call(this,p),this.setOpacity(this.options.opacity),p.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(p){xr.prototype.onRemove.call(this,p),p.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var p=xr.prototype.getEvents.call(this);return this.options.permanent||(p.preclick=this.close),p},_initLayout:function(){var p="leaflet-tooltip",A=p+" "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=tn("div",A),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+O(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(p){var A,B,X=this._map,ne=this._container,ye=X.latLngToContainerPoint(X.getCenter()),We=X.layerPointToContainerPoint(p),at=this.options.direction,ft=ne.offsetWidth,Rt=ne.offsetHeight,ii=ni(this.options.offset),Ci=this._getAnchor();at==="top"?(A=ft/2,B=Rt):at==="bottom"?(A=ft/2,B=0):at==="center"?(A=ft/2,B=Rt/2):at==="right"?(A=0,B=Rt/2):at==="left"?(A=ft,B=Rt/2):We.x<ye.x?(at="right",A=0,B=Rt/2):(at="left",A=ft+(ii.x+Ci.x)*2,B=Rt/2),p=p.subtract(ni(A,B,!0)).add(ii).add(Ci),Hn(ne,"leaflet-tooltip-right"),Hn(ne,"leaflet-tooltip-left"),Hn(ne,"leaflet-tooltip-top"),Hn(ne,"leaflet-tooltip-bottom"),Vi(ne,"leaflet-tooltip-"+at),Yn(ne,p)},_updatePosition:function(){var p=this._map.latLngToLayerPoint(this._latlng);this._setPosition(p)},setOpacity:function(p){this.options.opacity=p,this._container&&es(this._container,p)},_animateZoom:function(p){var A=this._map._latLngToNewLayerPoint(this._latlng,p.zoom,p.center);this._setPosition(A)},_getAnchor:function(){return ni(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}}),ac=function(p,A){return new Jr(p,A)};nn.include({openTooltip:function(p,A,B){return this._initOverlay(Jr,p,A,B).openOn(this),this},closeTooltip:function(p){return p.close(),this}}),lr.include({bindTooltip:function(p,A){return this._tooltip&&this.isTooltipOpen()&&this.unbindTooltip(),this._tooltip=this._initOverlay(Jr,this._tooltip,p,A),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(p){if(!(!p&&this._tooltipHandlersAdded)){var A=p?"off":"on",B={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?B.add=this._openTooltip:(B.mouseover=this._openTooltip,B.mouseout=this.closeTooltip,B.click=this._openTooltip,this._map?this._addFocusListeners():B.add=this._addFocusListeners),this._tooltip.options.sticky&&(B.mousemove=this._moveTooltip),this[A](B),this._tooltipHandlersAdded=!p}},openTooltip:function(p){return this._tooltip&&(this instanceof Xr||(this._tooltip._source=this),this._tooltip._prepareOpen(p)&&(this._tooltip.openOn(this._map),this.getElement?this._setAriaDescribedByOnLayer(this):this.eachLayer&&this.eachLayer(this._setAriaDescribedByOnLayer,this))),this},closeTooltip:function(){if(this._tooltip)return this._tooltip.close()},toggleTooltip:function(){return this._tooltip&&this._tooltip.toggle(this),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(p){return this._tooltip&&this._tooltip.setContent(p),this},getTooltip:function(){return this._tooltip},_addFocusListeners:function(){this.getElement?this._addFocusListenersOnLayer(this):this.eachLayer&&this.eachLayer(this._addFocusListenersOnLayer,this)},_addFocusListenersOnLayer:function(p){var A=typeof p.getElement=="function"&&p.getElement();A&&(Bi(A,"focus",function(){this._tooltip._source=p,this.openTooltip()},this),Bi(A,"blur",this.closeTooltip,this))},_setAriaDescribedByOnLayer:function(p){var A=typeof p.getElement=="function"&&p.getElement();A&&A.setAttribute("aria-describedby",this._tooltip._container.id)},_openTooltip:function(p){if(!(!this._tooltip||!this._map)){if(this._map.dragging&&this._map.dragging.moving()&&!this._openOnceFlag){this._openOnceFlag=!0;var A=this;this._map.once("moveend",function(){A._openOnceFlag=!1,A._openTooltip(p)});return}this._tooltip._source=p.layer||p.target,this.openTooltip(this._tooltip.options.sticky?p.latlng:void 0)}},_moveTooltip:function(p){var A=p.latlng,B,X;this._tooltip.options.sticky&&p.originalEvent&&(B=this._map.mouseEventToContainerPoint(p.originalEvent),X=this._map.containerPointToLayerPoint(B),A=this._map.layerPointToLatLng(X)),this._tooltip.setLatLng(A)}});var lc=Yr.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(p){var A=p&&p.tagName==="DIV"?p:document.createElement("div"),B=this.options;if(B.html instanceof Element?(oo(A),A.appendChild(B.html)):A.innerHTML=B.html!==!1?B.html:"",B.bgPos){var X=ni(B.bgPos);A.style.backgroundPosition=-X.x+"px "+-X.y+"px"}return this._setIconStyles(A,"icon"),A},createShadow:function(){return null}});function Ta(p){return new lc(p)}Yr.Default=So;var lo=lr.extend({options:{tileSize:256,opacity:1,updateWhenIdle:Pe.mobile,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(p){be(this,p)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView()},beforeAdd:function(p){p._addZoomLimit(this)},onRemove:function(p){this._removeAllTiles(),vn(this._container),p._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(qo(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(da(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(p){return this.options.opacity=p,this._updateOpacity(),this},setZIndex:function(p){return this.options.zIndex=p,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){if(this._map){this._removeAllTiles();var p=this._clampZoom(this._map.getZoom());p!==this._tileZoom&&(this._tileZoom=p,this._updateLevels()),this._update()}return this},getEvents:function(){var p={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=j(this._onMoveEnd,this.options.updateInterval,this)),p.move=this._onMove),this._zoomAnimated&&(p.zoomanim=this._animateZoom),p},createTile:function(){return document.createElement("div")},getTileSize:function(){var p=this.options.tileSize;return p instanceof fi?p:new fi(p,p)},_updateZIndex:function(){this._container&&this.options.zIndex!==void 0&&this.options.zIndex!==null&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(p){for(var A=this.getPane().children,B=-p(-1/0,1/0),X=0,ne=A.length,ye;X<ne;X++)ye=A[X].style.zIndex,A[X]!==this._container&&ye&&(B=p(B,+ye));isFinite(B)&&(this.options.zIndex=B+p(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!Pe.ielt9){es(this._container,this.options.opacity);var p=+new Date,A=!1,B=!1;for(var X in this._tiles){var ne=this._tiles[X];if(!(!ne.current||!ne.loaded)){var ye=Math.min(1,(p-ne.loaded)/200);es(ne.el,ye),ye<1?A=!0:(ne.active?B=!0:this._onOpaqueTile(ne),ne.active=!0)}}B&&!this._noPrune&&this._pruneTiles(),A&&(Mi(this._fadeFrame),this._fadeFrame=Pt(this._updateOpacity,this))}},_onOpaqueTile:J,_initContainer:function(){this._container||(this._container=tn("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var p=this._tileZoom,A=this.options.maxZoom;if(p!==void 0){for(var B in this._levels)B=Number(B),this._levels[B].el.children.length||B===p?(this._levels[B].el.style.zIndex=A-Math.abs(p-B),this._onUpdateLevel(B)):(vn(this._levels[B].el),this._removeTilesAtZoom(B),this._onRemoveLevel(B),delete this._levels[B]);var X=this._levels[p],ne=this._map;return X||(X=this._levels[p]={},X.el=tn("div","leaflet-tile-container leaflet-zoom-animated",this._container),X.el.style.zIndex=A,X.origin=ne.project(ne.unproject(ne.getPixelOrigin()),p).round(),X.zoom=p,this._setZoomTransform(X,ne.getCenter(),ne.getZoom()),J(X.el.offsetWidth),this._onCreateLevel(X)),this._level=X,X}},_onUpdateLevel:J,_onRemoveLevel:J,_onCreateLevel:J,_pruneTiles:function(){if(this._map){var p,A,B=this._map.getZoom();if(B>this.options.maxZoom||B<this.options.minZoom){this._removeAllTiles();return}for(p in this._tiles)A=this._tiles[p],A.retain=A.current;for(p in this._tiles)if(A=this._tiles[p],A.current&&!A.active){var X=A.coords;this._retainParent(X.x,X.y,X.z,X.z-5)||this._retainChildren(X.x,X.y,X.z,X.z+2)}for(p in this._tiles)this._tiles[p].retain||this._removeTile(p)}},_removeTilesAtZoom:function(p){for(var A in this._tiles)this._tiles[A].coords.z===p&&this._removeTile(A)},_removeAllTiles:function(){for(var p in this._tiles)this._removeTile(p)},_invalidateAll:function(){for(var p in this._levels)vn(this._levels[p].el),this._onRemoveLevel(Number(p)),delete this._levels[p];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(p,A,B,X){var ne=Math.floor(p/2),ye=Math.floor(A/2),We=B-1,at=new fi(+ne,+ye);at.z=+We;var ft=this._tileCoordsToKey(at),Rt=this._tiles[ft];return Rt&&Rt.active?(Rt.retain=!0,!0):(Rt&&Rt.loaded&&(Rt.retain=!0),We>X?this._retainParent(ne,ye,We,X):!1)},_retainChildren:function(p,A,B,X){for(var ne=2*p;ne<2*p+2;ne++)for(var ye=2*A;ye<2*A+2;ye++){var We=new fi(ne,ye);We.z=B+1;var at=this._tileCoordsToKey(We),ft=this._tiles[at];if(ft&&ft.active){ft.retain=!0;continue}else ft&&ft.loaded&&(ft.retain=!0);B+1<X&&this._retainChildren(ne,ye,B+1,X)}},_resetView:function(p){var A=p&&(p.pinch||p.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),A,A)},_animateZoom:function(p){this._setView(p.center,p.zoom,!0,p.noUpdate)},_clampZoom:function(p){var A=this.options;return A.minNativeZoom!==void 0&&p<A.minNativeZoom?A.minNativeZoom:A.maxNativeZoom!==void 0&&A.maxNativeZoom<p?A.maxNativeZoom:p},_setView:function(p,A,B,X){var ne=Math.round(A);this.options.maxZoom!==void 0&&ne>this.options.maxZoom||this.options.minZoom!==void 0&&ne<this.options.minZoom?ne=void 0:ne=this._clampZoom(ne);var ye=this.options.updateWhenZooming&&ne!==this._tileZoom;(!X||ye)&&(this._tileZoom=ne,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),ne!==void 0&&this._update(p),B||this._pruneTiles(),this._noPrune=!!B),this._setZoomTransforms(p,A)},_setZoomTransforms:function(p,A){for(var B in this._levels)this._setZoomTransform(this._levels[B],p,A)},_setZoomTransform:function(p,A,B){var X=this._map.getZoomScale(B,p.zoom),ne=p.origin.multiplyBy(X).subtract(this._map._getNewPixelOrigin(A,B)).round();Pe.any3d?Js(p.el,ne,X):Yn(p.el,ne)},_resetGrid:function(){var p=this._map,A=p.options.crs,B=this._tileSize=this.getTileSize(),X=this._tileZoom,ne=this._map.getPixelWorldBounds(this._tileZoom);ne&&(this._globalTileRange=this._pxBoundsToTileRange(ne)),this._wrapX=A.wrapLng&&!this.options.noWrap&&[Math.floor(p.project([0,A.wrapLng[0]],X).x/B.x),Math.ceil(p.project([0,A.wrapLng[1]],X).x/B.y)],this._wrapY=A.wrapLat&&!this.options.noWrap&&[Math.floor(p.project([A.wrapLat[0],0],X).y/B.x),Math.ceil(p.project([A.wrapLat[1],0],X).y/B.y)]},_onMoveEnd:function(){!this._map||this._map._animatingZoom||this._update()},_getTiledPixelBounds:function(p){var A=this._map,B=A._animatingZoom?Math.max(A._animateToZoom,A.getZoom()):A.getZoom(),X=A.getZoomScale(B,this._tileZoom),ne=A.project(p,this._tileZoom).floor(),ye=A.getSize().divideBy(X*2);return new Gi(ne.subtract(ye),ne.add(ye))},_update:function(p){var A=this._map;if(A){var B=this._clampZoom(A.getZoom());if(p===void 0&&(p=A.getCenter()),this._tileZoom!==void 0){var X=this._getTiledPixelBounds(p),ne=this._pxBoundsToTileRange(X),ye=ne.getCenter(),We=[],at=this.options.keepBuffer,ft=new Gi(ne.getBottomLeft().subtract([at,-at]),ne.getTopRight().add([at,-at]));if(!(isFinite(ne.min.x)&&isFinite(ne.min.y)&&isFinite(ne.max.x)&&isFinite(ne.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var Rt in this._tiles){var ii=this._tiles[Rt].coords;(ii.z!==this._tileZoom||!ft.contains(new fi(ii.x,ii.y)))&&(this._tiles[Rt].current=!1)}if(Math.abs(B-this._tileZoom)>1){this._setView(p,B);return}for(var Ci=ne.min.y;Ci<=ne.max.y;Ci++)for(var Wi=ne.min.x;Wi<=ne.max.x;Wi++){var Hs=new fi(Wi,Ci);if(Hs.z=this._tileZoom,!!this._isValidTile(Hs)){var ws=this._tiles[this._tileCoordsToKey(Hs)];ws?ws.current=!0:We.push(Hs)}}if(We.sort(function(dr,Xa){return dr.distanceTo(ye)-Xa.distanceTo(ye)}),We.length!==0){this._loading||(this._loading=!0,this.fire("loading"));var Os=document.createDocumentFragment();for(Wi=0;Wi<We.length;Wi++)this._addTile(We[Wi],Os);this._level.el.appendChild(Os)}}}},_isValidTile:function(p){var A=this._map.options.crs;if(!A.infinite){var B=this._globalTileRange;if(!A.wrapLng&&(p.x<B.min.x||p.x>B.max.x)||!A.wrapLat&&(p.y<B.min.y||p.y>B.max.y))return!1}if(!this.options.bounds)return!0;var X=this._tileCoordsToBounds(p);return ln(this.options.bounds).overlaps(X)},_keyToBounds:function(p){return this._tileCoordsToBounds(this._keyToTileCoords(p))},_tileCoordsToNwSe:function(p){var A=this._map,B=this.getTileSize(),X=p.scaleBy(B),ne=X.add(B),ye=A.unproject(X,p.z),We=A.unproject(ne,p.z);return[ye,We]},_tileCoordsToBounds:function(p){var A=this._tileCoordsToNwSe(p),B=new qt(A[0],A[1]);return this.options.noWrap||(B=this._map.wrapLatLngBounds(B)),B},_tileCoordsToKey:function(p){return p.x+":"+p.y+":"+p.z},_keyToTileCoords:function(p){var A=p.split(":"),B=new fi(+A[0],+A[1]);return B.z=+A[2],B},_removeTile:function(p){var A=this._tiles[p];A&&(vn(A.el),delete this._tiles[p],this.fire("tileunload",{tile:A.el,coords:this._keyToTileCoords(p)}))},_initTile:function(p){Vi(p,"leaflet-tile");var A=this.getTileSize();p.style.width=A.x+"px",p.style.height=A.y+"px",p.onselectstart=J,p.onmousemove=J,Pe.ielt9&&this.options.opacity<1&&es(p,this.options.opacity)},_addTile:function(p,A){var B=this._getTilePos(p),X=this._tileCoordsToKey(p),ne=this.createTile(this._wrapCoords(p),E(this._tileReady,this,p));this._initTile(ne),this.createTile.length<2&&Pt(E(this._tileReady,this,p,null,ne)),Yn(ne,B),this._tiles[X]={el:ne,coords:p,current:!0},A.appendChild(ne),this.fire("tileloadstart",{tile:ne,coords:p})},_tileReady:function(p,A,B){A&&this.fire("tileerror",{error:A,tile:B,coords:p});var X=this._tileCoordsToKey(p);B=this._tiles[X],B&&(B.loaded=+new Date,this._map._fadeAnimated?(es(B.el,0),Mi(this._fadeFrame),this._fadeFrame=Pt(this._updateOpacity,this)):(B.active=!0,this._pruneTiles()),A||(Vi(B.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:B.el,coords:p})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Pe.ielt9||!this._map._fadeAnimated?Pt(this._pruneTiles,this):setTimeout(E(this._pruneTiles,this),250)))},_getTilePos:function(p){return p.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(p){var A=new fi(this._wrapX?Y(p.x,this._wrapX):p.x,this._wrapY?Y(p.y,this._wrapY):p.y);return A.z=p.z,A},_pxBoundsToTileRange:function(p){var A=this.getTileSize();return new Gi(p.min.unscaleBy(A).floor(),p.max.unscaleBy(A).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var p in this._tiles)if(!this._tiles[p].loaded)return!1;return!0}});function Il(p){return new lo(p)}var Fr=lo.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(p,A){this._url=p,A=be(this,A),A.detectRetina&&Pe.retina&&A.maxZoom>0?(A.tileSize=Math.floor(A.tileSize/2),A.zoomReverse?(A.zoomOffset--,A.minZoom=Math.min(A.maxZoom,A.minZoom+1)):(A.zoomOffset++,A.maxZoom=Math.max(A.minZoom,A.maxZoom-1)),A.minZoom=Math.max(0,A.minZoom)):A.zoomReverse?A.minZoom=Math.min(A.maxZoom,A.minZoom):A.maxZoom=Math.max(A.minZoom,A.maxZoom),typeof A.subdomains=="string"&&(A.subdomains=A.subdomains.split("")),this.on("tileunload",this._onTileRemove)},setUrl:function(p,A){return this._url===p&&A===void 0&&(A=!0),this._url=p,A||this.redraw(),this},createTile:function(p,A){var B=document.createElement("img");return Bi(B,"load",E(this._tileOnLoad,this,A,B)),Bi(B,"error",E(this._tileOnError,this,A,B)),(this.options.crossOrigin||this.options.crossOrigin==="")&&(B.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),typeof this.options.referrerPolicy=="string"&&(B.referrerPolicy=this.options.referrerPolicy),B.alt="",B.src=this.getTileUrl(p),B},getTileUrl:function(p){var A={r:Pe.retina?"@2x":"",s:this._getSubdomain(p),x:p.x,y:p.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var B=this._globalTileRange.max.y-p.y;this.options.tms&&(A.y=B),A["-y"]=B}return ot(this._url,w(A,this.options))},_tileOnLoad:function(p,A){Pe.ielt9?setTimeout(E(p,this,null,A),0):p(null,A)},_tileOnError:function(p,A,B){var X=this.options.errorTileUrl;X&&A.getAttribute("src")!==X&&(A.src=X),p(B,A)},_onTileRemove:function(p){p.tile.onload=null},_getZoomForUrl:function(){var p=this._tileZoom,A=this.options.maxZoom,B=this.options.zoomReverse,X=this.options.zoomOffset;return B&&(p=A-p),p+X},_getSubdomain:function(p){var A=Math.abs(p.x+p.y)%this.options.subdomains.length;return this.options.subdomains[A]},_abortLoading:function(){var p,A;for(p in this._tiles)if(this._tiles[p].coords.z!==this._tileZoom&&(A=this._tiles[p].el,A.onload=J,A.onerror=J,!A.complete)){A.src=gt;var B=this._tiles[p].coords;vn(A),delete this._tiles[p],this.fire("tileabort",{tile:A,coords:B})}},_removeTile:function(p){var A=this._tiles[p];if(A)return A.el.setAttribute("src",gt),lo.prototype._removeTile.call(this,p)},_tileReady:function(p,A,B){if(!(!this._map||B&&B.getAttribute("src")===gt))return lo.prototype._tileReady.call(this,p,A,B)}});function co(p,A){return new Fr(p,A)}var ta=Fr.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(p,A){this._url=p;var B=w({},this.defaultWmsParams);for(var X in A)X in this.options||(B[X]=A[X]);A=be(this,A);var ne=A.detectRetina&&Pe.retina?2:1,ye=this.getTileSize();B.width=ye.x*ne,B.height=ye.y*ne,this.wmsParams=B},onAdd:function(p){this._crs=this.options.crs||p.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var A=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[A]=this._crs.code,Fr.prototype.onAdd.call(this,p)},getTileUrl:function(p){var A=this._tileCoordsToNwSe(p),B=this._crs,X=an(B.project(A[0]),B.project(A[1])),ne=X.min,ye=X.max,We=(this._wmsVersion>=1.3&&this._crs===Al?[ne.y,ne.x,ye.y,ye.x]:[ne.x,ne.y,ye.x,ye.y]).join(","),at=Fr.prototype.getTileUrl.call(this,p);return at+Ze(this.wmsParams,at,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+We},setParams:function(p,A){return w(this.wmsParams,p),A||this.redraw(),this}});function cc(p,A){return new ta(p,A)}Fr.WMS=ta,co.wms=cc;var Qr=lr.extend({options:{padding:.1},initialize:function(p){be(this,p),O(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),Vi(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var p={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(p.zoomanim=this._onAnimZoom),p},_onAnimZoom:function(p){this._updateTransform(p.center,p.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(p,A){var B=this._map.getZoomScale(A,this._zoom),X=this._map.getSize().multiplyBy(.5+this.options.padding),ne=this._map.project(this._center,A),ye=X.multiplyBy(-B).add(ne).subtract(this._map._getNewPixelOrigin(p,A));Pe.any3d?Js(this._container,ye,B):Yn(this._container,ye)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var p in this._layers)this._layers[p]._reset()},_onZoomEnd:function(){for(var p in this._layers)this._layers[p]._project()},_updatePaths:function(){for(var p in this._layers)this._layers[p]._update()},_update:function(){var p=this.options.padding,A=this._map.getSize(),B=this._map.containerPointToLayerPoint(A.multiplyBy(-p)).round();this._bounds=new Gi(B,B.add(A.multiplyBy(1+p*2)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),Ll=Qr.extend({options:{tolerance:0},getEvents:function(){var p=Qr.prototype.getEvents.call(this);return p.viewprereset=this._onViewPreReset,p},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){Qr.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var p=this._container=document.createElement("canvas");Bi(p,"mousemove",this._onMouseMove,this),Bi(p,"click dblclick mousedown mouseup contextmenu",this._onClick,this),Bi(p,"mouseout",this._handleMouseOut,this),p._leaflet_disable_events=!0,this._ctx=p.getContext("2d")},_destroyContainer:function(){Mi(this._redrawRequest),delete this._ctx,vn(this._container),Cn(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){var p;this._redrawBounds=null;for(var A in this._layers)p=this._layers[A],p._update();this._redraw()}},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){Qr.prototype._update.call(this);var p=this._bounds,A=this._container,B=p.getSize(),X=Pe.retina?2:1;Yn(A,p.min),A.width=X*B.x,A.height=X*B.y,A.style.width=B.x+"px",A.style.height=B.y+"px",Pe.retina&&this._ctx.scale(2,2),this._ctx.translate(-p.min.x,-p.min.y),this.fire("update")}},_reset:function(){Qr.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(p){this._updateDashArray(p),this._layers[O(p)]=p;var A=p._order={layer:p,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=A),this._drawLast=A,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(p){this._requestRedraw(p)},_removePath:function(p){var A=p._order,B=A.next,X=A.prev;B?B.prev=X:this._drawLast=X,X?X.next=B:this._drawFirst=B,delete p._order,delete this._layers[O(p)],this._requestRedraw(p)},_updatePath:function(p){this._extendRedrawBounds(p),p._project(),p._update(),this._requestRedraw(p)},_updateStyle:function(p){this._updateDashArray(p),this._requestRedraw(p)},_updateDashArray:function(p){if(typeof p.options.dashArray=="string"){var A=p.options.dashArray.split(/[, ]+/),B=[],X,ne;for(ne=0;ne<A.length;ne++){if(X=Number(A[ne]),isNaN(X))return;B.push(X)}p.options._dashArray=B}else p.options._dashArray=p.options.dashArray},_requestRedraw:function(p){this._map&&(this._extendRedrawBounds(p),this._redrawRequest=this._redrawRequest||Pt(this._redraw,this))},_extendRedrawBounds:function(p){if(p._pxBounds){var A=(p.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new Gi,this._redrawBounds.extend(p._pxBounds.min.subtract([A,A])),this._redrawBounds.extend(p._pxBounds.max.add([A,A]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var p=this._redrawBounds;if(p){var A=p.getSize();this._ctx.clearRect(p.min.x,p.min.y,A.x,A.y)}else this._ctx.save(),this._ctx.setTransform(1,0,0,1,0,0),this._ctx.clearRect(0,0,this._container.width,this._container.height),this._ctx.restore()},_draw:function(){var p,A=this._redrawBounds;if(this._ctx.save(),A){var B=A.getSize();this._ctx.beginPath(),this._ctx.rect(A.min.x,A.min.y,B.x,B.y),this._ctx.clip()}this._drawing=!0;for(var X=this._drawFirst;X;X=X.next)p=X.layer,(!A||p._pxBounds&&p._pxBounds.intersects(A))&&p._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(p,A){if(this._drawing){var B,X,ne,ye,We=p._parts,at=We.length,ft=this._ctx;if(at){for(ft.beginPath(),B=0;B<at;B++){for(X=0,ne=We[B].length;X<ne;X++)ye=We[B][X],ft[X?"lineTo":"moveTo"](ye.x,ye.y);A&&ft.closePath()}this._fillStroke(ft,p)}}},_updateCircle:function(p){if(!(!this._drawing||p._empty())){var A=p._point,B=this._ctx,X=Math.max(Math.round(p._radius),1),ne=(Math.max(Math.round(p._radiusY),1)||X)/X;ne!==1&&(B.save(),B.scale(1,ne)),B.beginPath(),B.arc(A.x,A.y/ne,X,0,Math.PI*2,!1),ne!==1&&B.restore(),this._fillStroke(B,p)}},_fillStroke:function(p,A){var B=A.options;B.fill&&(p.globalAlpha=B.fillOpacity,p.fillStyle=B.fillColor||B.color,p.fill(B.fillRule||"evenodd")),B.stroke&&B.weight!==0&&(p.setLineDash&&p.setLineDash(A.options&&A.options._dashArray||[]),p.globalAlpha=B.opacity,p.lineWidth=B.weight,p.strokeStyle=B.color,p.lineCap=B.lineCap,p.lineJoin=B.lineJoin,p.stroke())},_onClick:function(p){for(var A=this._map.mouseEventToLayerPoint(p),B,X,ne=this._drawFirst;ne;ne=ne.next)B=ne.layer,B.options.interactive&&B._containsPoint(A)&&(!(p.type==="click"||p.type==="preclick")||!this._map._draggableMoved(B))&&(X=B);this._fireEvent(X?[X]:!1,p)},_onMouseMove:function(p){if(!(!this._map||this._map.dragging.moving()||this._map._animatingZoom)){var A=this._map.mouseEventToLayerPoint(p);this._handleMouseHover(p,A)}},_handleMouseOut:function(p){var A=this._hoveredLayer;A&&(Hn(this._container,"leaflet-interactive"),this._fireEvent([A],p,"mouseout"),this._hoveredLayer=null,this._mouseHoverThrottled=!1)},_handleMouseHover:function(p,A){if(!this._mouseHoverThrottled){for(var B,X,ne=this._drawFirst;ne;ne=ne.next)B=ne.layer,B.options.interactive&&B._containsPoint(A)&&(X=B);X!==this._hoveredLayer&&(this._handleMouseOut(p),X&&(Vi(this._container,"leaflet-interactive"),this._fireEvent([X],p,"mouseover"),this._hoveredLayer=X)),this._fireEvent(this._hoveredLayer?[this._hoveredLayer]:!1,p),this._mouseHoverThrottled=!0,setTimeout(E(function(){this._mouseHoverThrottled=!1},this),32)}},_fireEvent:function(p,A,B){this._map._fireDOMEvent(A,B||A.type,p)},_bringToFront:function(p){var A=p._order;if(A){var B=A.next,X=A.prev;if(B)B.prev=X;else return;X?X.next=B:B&&(this._drawFirst=B),A.prev=this._drawLast,this._drawLast.next=A,A.next=null,this._drawLast=A,this._requestRedraw(p)}},_bringToBack:function(p){var A=p._order;if(A){var B=A.next,X=A.prev;if(X)X.next=B;else return;B?B.prev=X:X&&(this._drawLast=X),A.prev=null,A.next=this._drawFirst,this._drawFirst.prev=A,this._drawFirst=A,this._requestRedraw(p)}}});function ho(p){return Pe.canvas?new Ll(p):null}var Ti=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(p){return document.createElement("<lvml:"+p+' class="lvml">')}}catch{}return function(p){return document.createElement("<"+p+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}(),iu={_initContainer:function(){this._container=tn("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Qr.prototype._update.call(this),this.fire("update"))},_initPath:function(p){var A=p._container=Ti("shape");Vi(A,"leaflet-vml-shape "+(this.options.className||"")),A.coordsize="1 1",p._path=Ti("path"),A.appendChild(p._path),this._updateStyle(p),this._layers[O(p)]=p},_addPath:function(p){var A=p._container;this._container.appendChild(A),p.options.interactive&&p.addInteractiveTarget(A)},_removePath:function(p){var A=p._container;vn(A),p.removeInteractiveTarget(A),delete this._layers[O(p)]},_updateStyle:function(p){var A=p._stroke,B=p._fill,X=p.options,ne=p._container;ne.stroked=!!X.stroke,ne.filled=!!X.fill,X.stroke?(A||(A=p._stroke=Ti("stroke")),ne.appendChild(A),A.weight=X.weight+"px",A.color=X.color,A.opacity=X.opacity,X.dashArray?A.dashStyle=vt(X.dashArray)?X.dashArray.join(" "):X.dashArray.replace(/( *, *)/g," "):A.dashStyle="",A.endcap=X.lineCap.replace("butt","flat"),A.joinstyle=X.lineJoin):A&&(ne.removeChild(A),p._stroke=null),X.fill?(B||(B=p._fill=Ti("fill")),ne.appendChild(B),B.color=X.fillColor||X.color,B.opacity=X.fillOpacity):B&&(ne.removeChild(B),p._fill=null)},_updateCircle:function(p){var A=p._point.round(),B=Math.round(p._radius),X=Math.round(p._radiusY||B);this._setPath(p,p._empty()?"M0 0":"AL "+A.x+","+A.y+" "+B+","+X+" 0,"+65535*360)},_setPath:function(p,A){p._path.v=A},_bringToFront:function(p){qo(p._container)},_bringToBack:function(p){da(p._container)}},zl=Pe.vml?Ti:$s,$a=Qr.extend({_initContainer:function(){this._container=zl("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=zl("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){vn(this._container),Cn(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){Qr.prototype._update.call(this);var p=this._bounds,A=p.getSize(),B=this._container;(!this._svgSize||!this._svgSize.equals(A))&&(this._svgSize=A,B.setAttribute("width",A.x),B.setAttribute("height",A.y)),Yn(B,p.min),B.setAttribute("viewBox",[p.min.x,p.min.y,A.x,A.y].join(" ")),this.fire("update")}},_initPath:function(p){var A=p._path=zl("path");p.options.className&&Vi(A,p.options.className),p.options.interactive&&Vi(A,"leaflet-interactive"),this._updateStyle(p),this._layers[O(p)]=p},_addPath:function(p){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(p._path),p.addInteractiveTarget(p._path)},_removePath:function(p){vn(p._path),p.removeInteractiveTarget(p._path),delete this._layers[O(p)]},_updatePath:function(p){p._project(),p._update()},_updateStyle:function(p){var A=p._path,B=p.options;A&&(B.stroke?(A.setAttribute("stroke",B.color),A.setAttribute("stroke-opacity",B.opacity),A.setAttribute("stroke-width",B.weight),A.setAttribute("stroke-linecap",B.lineCap),A.setAttribute("stroke-linejoin",B.lineJoin),B.dashArray?A.setAttribute("stroke-dasharray",B.dashArray):A.removeAttribute("stroke-dasharray"),B.dashOffset?A.setAttribute("stroke-dashoffset",B.dashOffset):A.removeAttribute("stroke-dashoffset")):A.setAttribute("stroke","none"),B.fill?(A.setAttribute("fill",B.fillColor||B.color),A.setAttribute("fill-opacity",B.fillOpacity),A.setAttribute("fill-rule",B.fillRule||"evenodd")):A.setAttribute("fill","none"))},_updatePoly:function(p,A){this._setPath(p,$n(p._parts,A))},_updateCircle:function(p){var A=p._point,B=Math.max(Math.round(p._radius),1),X=Math.max(Math.round(p._radiusY),1)||B,ne="a"+B+","+X+" 0 1,0 ",ye=p._empty()?"M0 0":"M"+(A.x-B)+","+A.y+ne+B*2+",0 "+ne+-B*2+",0 ";this._setPath(p,ye)},_setPath:function(p,A){p._path.setAttribute("d",A)},_bringToFront:function(p){qo(p._path)},_bringToBack:function(p){da(p._path)}});Pe.vml&&$a.include(iu);function ia(p){return Pe.svg||Pe.vml?new $a(p):null}nn.include({getRenderer:function(p){var A=p.options.renderer||this._getPaneRenderer(p.options.pane)||this.options.renderer||this._renderer;return A||(A=this._renderer=this._createRenderer()),this.hasLayer(A)||this.addLayer(A),A},_getPaneRenderer:function(p){if(p==="overlayPane"||p===void 0)return!1;var A=this._paneRenderers[p];return A===void 0&&(A=this._createRenderer({pane:p}),this._paneRenderers[p]=A),A},_createRenderer:function(p){return this.options.preferCanvas&&ho(p)||ia(p)}});var oh=Kr.extend({initialize:function(p,A){Kr.prototype.initialize.call(this,this._boundsToLatLngs(p),A)},setBounds:function(p){return this.setLatLngs(this._boundsToLatLngs(p))},_boundsToLatLngs:function(p){return p=ln(p),[p.getSouthWest(),p.getNorthWest(),p.getNorthEast(),p.getSouthEast()]}});function yn(p,A){return new oh(p,A)}$a.create=zl,$a.pointsToPath=$n,hr.geometryToLayer=Ao,hr.coordsToLatLng=th,hr.coordsToLatLngs=qa,hr.latLngToCoords=rc,hr.latLngsToCoords=Cl,hr.getFeature=ba,hr.asFeature=wa,nn.mergeOptions({boxZoom:!0});var nu=Ps.extend({initialize:function(p){this._map=p,this._container=p._container,this._pane=p._panes.overlayPane,this._resetStateTimeout=0,p.on("unload",this._destroy,this)},addHooks:function(){Bi(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Cn(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){vn(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){this._resetStateTimeout!==0&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(p){if(!p.shiftKey||p.which!==1&&p.button!==1)return!1;this._clearDeferredResetState(),this._resetState(),Lr(),Wo(),this._startPoint=this._map.mouseEventToContainerPoint(p),Bi(document,{contextmenu:Qs,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(p){this._moved||(this._moved=!0,this._box=tn("div","leaflet-zoom-box",this._container),Vi(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(p);var A=new Gi(this._point,this._startPoint),B=A.getSize();Yn(this._box,A.min),this._box.style.width=B.x+"px",this._box.style.height=B.y+"px"},_finish:function(){this._moved&&(vn(this._box),Hn(this._container,"leaflet-crosshair")),zr(),rr(),Cn(document,{contextmenu:Qs,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(p){if(!(p.which!==1&&p.button!==1)&&(this._finish(),!!this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(E(this._resetState,this),0);var A=new qt(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(A).fire("boxzoomend",{boxZoomBounds:A})}},_onKeyDown:function(p){p.keyCode===27&&(this._finish(),this._clearDeferredResetState(),this._resetState())}});nn.addInitHook("addHandler","boxZoom",nu),nn.mergeOptions({doubleClickZoom:!0});var su=Ps.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(p){var A=this._map,B=A.getZoom(),X=A.options.zoomDelta,ne=p.originalEvent.shiftKey?B-X:B+X;A.options.doubleClickZoom==="center"?A.setZoom(ne):A.setZoomAround(p.containerPoint,ne)}});nn.addInitHook("addHandler","doubleClickZoom",su),nn.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var hc=Ps.extend({addHooks:function(){if(!this._draggable){var p=this._map;this._draggable=new Yo(p._mapPane,p._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),p.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),p.on("zoomend",this._onZoomEnd,this),p.whenReady(this._onZoomEnd,this))}Vi(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){Hn(this._map._container,"leaflet-grab"),Hn(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var p=this._map;if(p._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var A=ln(this._map.options.maxBounds);this._offsetLimit=an(this._map.latLngToContainerPoint(A.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(A.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;p.fire("movestart").fire("dragstart"),p.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(p){if(this._map.options.inertia){var A=this._lastTime=+new Date,B=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(B),this._times.push(A),this._prunePositions(A)}this._map.fire("move",p).fire("drag",p)},_prunePositions:function(p){for(;this._positions.length>1&&p-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var p=this._map.getSize().divideBy(2),A=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=A.subtract(p).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(p,A){return p-(p-A)*this._viscosity},_onPreDragLimit:function(){if(!(!this._viscosity||!this._offsetLimit)){var p=this._draggable._newPos.subtract(this._draggable._startPos),A=this._offsetLimit;p.x<A.min.x&&(p.x=this._viscousLimit(p.x,A.min.x)),p.y<A.min.y&&(p.y=this._viscousLimit(p.y,A.min.y)),p.x>A.max.x&&(p.x=this._viscousLimit(p.x,A.max.x)),p.y>A.max.y&&(p.y=this._viscousLimit(p.y,A.max.y)),this._draggable._newPos=this._draggable._startPos.add(p)}},_onPreDragWrap:function(){var p=this._worldWidth,A=Math.round(p/2),B=this._initialWorldOffset,X=this._draggable._newPos.x,ne=(X-A+B)%p+A-B,ye=(X+A+B)%p-A-B,We=Math.abs(ne+B)<Math.abs(ye+B)?ne:ye;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=We},_onDragEnd:function(p){var A=this._map,B=A.options,X=!B.inertia||p.noInertia||this._times.length<2;if(A.fire("dragend",p),X)A.fire("moveend");else{this._prunePositions(+new Date);var ne=this._lastPos.subtract(this._positions[0]),ye=(this._lastTime-this._times[0])/1e3,We=B.easeLinearity,at=ne.multiplyBy(We/ye),ft=at.distanceTo([0,0]),Rt=Math.min(B.inertiaMaxSpeed,ft),ii=at.multiplyBy(Rt/ft),Ci=Rt/(B.inertiaDeceleration*We),Wi=ii.multiplyBy(-Ci/2).round();!Wi.x&&!Wi.y?A.fire("moveend"):(Wi=A._limitOffset(Wi,A.options.maxBounds),Pt(function(){A.panBy(Wi,{duration:Ci,easeLinearity:We,noMoveStart:!0,animate:!0})}))}}});nn.addInitHook("addHandler","dragging",hc),nn.mergeOptions({keyboard:!0,keyboardPanDelta:80});var uc=Ps.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(p){this._map=p,this._setPanDelta(p.options.keyboardPanDelta),this._setZoomDelta(p.options.zoomDelta)},addHooks:function(){var p=this._map._container;p.tabIndex<=0&&(p.tabIndex="0"),Bi(p,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),Cn(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var p=document.body,A=document.documentElement,B=p.scrollTop||A.scrollTop,X=p.scrollLeft||A.scrollLeft;this._map._container.focus(),window.scrollTo(X,B)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(p){var A=this._panKeys={},B=this.keyCodes,X,ne;for(X=0,ne=B.left.length;X<ne;X++)A[B.left[X]]=[-1*p,0];for(X=0,ne=B.right.length;X<ne;X++)A[B.right[X]]=[p,0];for(X=0,ne=B.down.length;X<ne;X++)A[B.down[X]]=[0,p];for(X=0,ne=B.up.length;X<ne;X++)A[B.up[X]]=[0,-1*p]},_setZoomDelta:function(p){var A=this._zoomKeys={},B=this.keyCodes,X,ne;for(X=0,ne=B.zoomIn.length;X<ne;X++)A[B.zoomIn[X]]=p;for(X=0,ne=B.zoomOut.length;X<ne;X++)A[B.zoomOut[X]]=-p},_addHooks:function(){Bi(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){Cn(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(p){if(!(p.altKey||p.ctrlKey||p.metaKey)){var A=p.keyCode,B=this._map,X;if(A in this._panKeys){if(!B._panAnim||!B._panAnim._inProgress)if(X=this._panKeys[A],p.shiftKey&&(X=ni(X).multiplyBy(3)),B.options.maxBounds&&(X=B._limitOffset(ni(X),B.options.maxBounds)),B.options.worldCopyJump){var ne=B.wrapLatLng(B.unproject(B.project(B.getCenter()).add(X)));B.panTo(ne)}else B.panBy(X)}else if(A in this._zoomKeys)B.setZoom(B.getZoom()+(p.shiftKey?3:1)*this._zoomKeys[A]);else if(A===27&&B._popup&&B._popup.options.closeOnEscapeKey)B.closePopup();else return;Qs(p)}}});nn.addInitHook("addHandler","keyboard",uc),nn.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var dc=Ps.extend({addHooks:function(){Bi(this._map._container,"wheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){Cn(this._map._container,"wheel",this._onWheelScroll,this)},_onWheelScroll:function(p){var A=Jc(p),B=this._map.options.wheelDebounceTime;this._delta+=A,this._lastMousePos=this._map.mouseEventToContainerPoint(p),this._startTime||(this._startTime=+new Date);var X=Math.max(B-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(E(this._performZoom,this),X),Qs(p)},_performZoom:function(){var p=this._map,A=p.getZoom(),B=this._map.options.zoomSnap||0;p._stop();var X=this._delta/(this._map.options.wheelPxPerZoomLevel*4),ne=4*Math.log(2/(1+Math.exp(-Math.abs(X))))/Math.LN2,ye=B?Math.ceil(ne/B)*B:ne,We=p._limitZoom(A+(this._delta>0?ye:-ye))-A;this._delta=0,this._startTime=null,We&&(p.options.scrollWheelZoom==="center"?p.setZoom(A+We):p.setZoomAround(this._lastMousePos,A+We))}});nn.addInitHook("addHandler","scrollWheelZoom",dc);var ah=600;nn.mergeOptions({tapHold:Pe.touchNative&&Pe.safari&&Pe.mobile,tapTolerance:15});var lh=Ps.extend({addHooks:function(){Bi(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){Cn(this._map._container,"touchstart",this._onDown,this)},_onDown:function(p){if(clearTimeout(this._holdTimeout),p.touches.length===1){var A=p.touches[0];this._startPos=this._newPos=new fi(A.clientX,A.clientY),this._holdTimeout=setTimeout(E(function(){this._cancel(),this._isTapValid()&&(Bi(document,"touchend",gs),Bi(document,"touchend touchcancel",this._cancelClickPrevent),this._simulateEvent("contextmenu",A))},this),ah),Bi(document,"touchend touchcancel contextmenu",this._cancel,this),Bi(document,"touchmove",this._onMove,this)}},_cancelClickPrevent:function p(){Cn(document,"touchend",gs),Cn(document,"touchend touchcancel",p)},_cancel:function(){clearTimeout(this._holdTimeout),Cn(document,"touchend touchcancel contextmenu",this._cancel,this),Cn(document,"touchmove",this._onMove,this)},_onMove:function(p){var A=p.touches[0];this._newPos=new fi(A.clientX,A.clientY)},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_simulateEvent:function(p,A){var B=new MouseEvent(p,{bubbles:!0,cancelable:!0,view:window,screenX:A.screenX,screenY:A.screenY,clientX:A.clientX,clientY:A.clientY});B._simulated=!0,A.target.dispatchEvent(B)}});nn.addInitHook("addHandler","tapHold",lh),nn.mergeOptions({touchZoom:Pe.touch,bounceAtZoomLimits:!0});var ch=Ps.extend({addHooks:function(){Vi(this._map._container,"leaflet-touch-zoom"),Bi(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){Hn(this._map._container,"leaflet-touch-zoom"),Cn(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(p){var A=this._map;if(!(!p.touches||p.touches.length!==2||A._animatingZoom||this._zooming)){var B=A.mouseEventToContainerPoint(p.touches[0]),X=A.mouseEventToContainerPoint(p.touches[1]);this._centerPoint=A.getSize()._divideBy(2),this._startLatLng=A.containerPointToLatLng(this._centerPoint),A.options.touchZoom!=="center"&&(this._pinchStartLatLng=A.containerPointToLatLng(B.add(X)._divideBy(2))),this._startDist=B.distanceTo(X),this._startZoom=A.getZoom(),this._moved=!1,this._zooming=!0,A._stop(),Bi(document,"touchmove",this._onTouchMove,this),Bi(document,"touchend touchcancel",this._onTouchEnd,this),gs(p)}},_onTouchMove:function(p){if(!(!p.touches||p.touches.length!==2||!this._zooming)){var A=this._map,B=A.mouseEventToContainerPoint(p.touches[0]),X=A.mouseEventToContainerPoint(p.touches[1]),ne=B.distanceTo(X)/this._startDist;if(this._zoom=A.getScaleZoom(ne,this._startZoom),!A.options.bounceAtZoomLimits&&(this._zoom<A.getMinZoom()&&ne<1||this._zoom>A.getMaxZoom()&&ne>1)&&(this._zoom=A._limitZoom(this._zoom)),A.options.touchZoom==="center"){if(this._center=this._startLatLng,ne===1)return}else{var ye=B._add(X)._divideBy(2)._subtract(this._centerPoint);if(ne===1&&ye.x===0&&ye.y===0)return;this._center=A.unproject(A.project(this._pinchStartLatLng,this._zoom).subtract(ye),this._zoom)}this._moved||(A._moveStart(!0,!1),this._moved=!0),Mi(this._animRequest);var We=E(A._move,A,this._center,this._zoom,{pinch:!0,round:!1},void 0);this._animRequest=Pt(We,this,!0),gs(p)}},_onTouchEnd:function(){if(!this._moved||!this._zooming){this._zooming=!1;return}this._zooming=!1,Mi(this._animRequest),Cn(document,"touchmove",this._onTouchMove,this),Cn(document,"touchend touchcancel",this._onTouchEnd,this),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))}});nn.addInitHook("addHandler","touchZoom",ch),nn.BoxZoom=nu,nn.DoubleClickZoom=su,nn.Drag=hc,nn.Keyboard=uc,nn.ScrollWheelZoom=dc,nn.TapHold=lh,nn.TouchZoom=ch,d.Bounds=Gi,d.Browser=Pe,d.CRS=Is,d.Canvas=Ll,d.Circle=ys,d.CircleMarker=va,d.Class=hn,d.Control=Dn,d.DivIcon=lc,d.DivOverlay=xr,d.DomEvent=tc,d.DomUtil=Oi,d.Draggable=Yo,d.Evented=Qi,d.FeatureGroup=Xr,d.GeoJSON=hr,d.GridLayer=lo,d.Handler=Ps,d.Icon=Yr,d.ImageOverlay=Wa,d.LatLng=Di,d.LatLngBounds=qt,d.Layer=lr,d.LayerGroup=cr,d.LineUtil=zd,d.Map=nn,d.Marker=Rs,d.Mixin=Ua,d.Path=Tt,d.Point=fi,d.PolyUtil=ar,d.Polygon=Kr,d.Polyline=Or,d.Popup=ea,d.PosAnimation=ga,d.Projection=bi,d.Rectangle=oh,d.Renderer=Qr,d.SVG=$a,d.SVGOverlay=sh,d.TileLayer=Fr,d.Tooltip=Jr,d.Transformation=Vs,d.Util=Pn,d.VideoOverlay=nh,d.bind=E,d.bounds=an,d.canvas=ho,d.circle=Qh,d.circleMarker=Eo,d.control=or,d.divIcon=Ta,d.extend=w,d.featureGroup=nc,d.geoJSON=tu,d.geoJson=Dd,d.gridLayer=Il,d.icon=Ha,d.imageOverlay=ih,d.latLng=xi,d.latLngBounds=ln,d.layerGroup=ti,d.map=Tl,d.marker=sc,d.point=ni,d.polygon=Qo,d.polyline=Po,d.popup=oc,d.rectangle=yn,d.setOptions=be,d.stamp=O,d.svg=ia,d.svgOverlay=rh,d.tileLayer=co,d.tooltip=ac,d.transformation=Us,d.version=g,d.videoOverlay=ur;var kd=window.L;d.noConflict=function(){return window.L=kd,this},window.L=d})}(Dp,Dp.exports)),Dp.exports}var RE=Wx();const xn=Hx(RE);var OE={exports:{}};(function(m){(function(a,d){m.exports?m.exports=d(Wx()):d(a.L)})(typeof self<"u"?self:zp,a=>{if(typeof document>"u")return console.warn('"window.document" is undefined; leaflet.fullscreen requires this object to access the DOM'),!1;const d=(()=>{const b=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"]],E=b[0],i={};for(const O of b)if(O[1]in document){for(let j=0;j<O.length;j++)i[E[j]]=O[j];return i}return!1})(),g={change:d.fullscreenchange,error:d.fullscreenerror},w={request(b,E){return new Promise((i,O)=>{const j=(function(){this.off("change",j),i()}).bind(this);this.on("change",j),b=b||document.documentElement;const Y=b[d.requestFullscreen](E);Y instanceof Promise&&Y.then(j).catch(O)})},exit(){return new Promise((b,E)=>{if(!this.isFullscreen){b();return}const i=(function(){this.off("change",i),b()}).bind(this);this.on("change",i);const O=document[d.exitFullscreen]();O instanceof Promise&&O.then(i).catch(E)})},on(b,E){const i=g[b];i&&document.addEventListener(i,E,!1)},off(b,E){const i=g[b];i&&document.removeEventListener(i,E,!1)},nativeAPI:d};return Object.defineProperties(w,{isFullscreen:{get(){return!!document[d.fullscreenElement]}},isEnabled:{enumerable:!0,get(){return!!document[d.fullscreenEnabled]}}}),a.Control.FullScreen=a.Control.extend({options:{position:"topleft",title:"Full Screen",titleCancel:"Exit Full Screen",forceSeparateButton:!1,forcePseudoFullscreen:!1,fullscreenElement:!1},_screenfull:w,onAdd(b){let E="leaflet-control-zoom-fullscreen",i,O="";return b.zoomControl&&!this.options.forceSeparateButton?i=b.zoomControl._container:i=a.DomUtil.create("div","leaflet-bar"),this.options.content?O=this.options.content:E+=" fullscreen-icon",this._createButton(this.options.title,E,O,i,this.toggleFullScreen,this),this._map.fullscreenControl=this,this._map.on("enterFullscreen exitFullscreen",this._toggleState,this),i},onRemove(){a.DomEvent.off(this.link,"click",a.DomEvent.stop).off(this.link,"click",this.toggleFullScreen,this),this._screenfull.isEnabled&&(a.DomEvent.off(this._container,this._screenfull.nativeAPI.fullscreenchange,a.DomEvent.stop).off(this._container,this._screenfull.nativeAPI.fullscreenchange,this._handleFullscreenChange,this),a.DomEvent.off(document,this._screenfull.nativeAPI.fullscreenchange,a.DomEvent.stop).off(document,this._screenfull.nativeAPI.fullscreenchange,this._handleFullscreenChange,this))},_createButton(b,E,i,O,j,Y){return this.link=a.DomUtil.create("a",E,O),this.link.href="#",this.link.title=b,this.link.innerHTML=i,this.link.setAttribute("role","button"),this.link.setAttribute("aria-label",b),L.DomEvent.disableClickPropagation(O),a.DomEvent.on(this.link,"click",a.DomEvent.stop).on(this.link,"click",j,Y),this._screenfull.isEnabled&&(a.DomEvent.on(O,this._screenfull.nativeAPI.fullscreenchange,a.DomEvent.stop).on(O,this._screenfull.nativeAPI.fullscreenchange,this._handleFullscreenChange,Y),a.DomEvent.on(document,this._screenfull.nativeAPI.fullscreenchange,a.DomEvent.stop).on(document,this._screenfull.nativeAPI.fullscreenchange,this._handleFullscreenChange,Y)),this.link},toggleFullScreen(){const b=this._map;b._exitFired=!1,b._isFullscreen?(this._screenfull.isEnabled&&!this.options.forcePseudoFullscreen?this._screenfull.exit().then(()=>b.invalidateSize()):(a.DomUtil.removeClass(this.options.fullscreenElement?this.options.fullscreenElement:b._container,"leaflet-pseudo-fullscreen"),b.invalidateSize()),b.fire("exitFullscreen"),b._exitFired=!0,b._isFullscreen=!1):(this._screenfull.isEnabled&&!this.options.forcePseudoFullscreen?this._screenfull.request(this.options.fullscreenElement?this.options.fullscreenElement:b._container).then(()=>b.invalidateSize()):(a.DomUtil.addClass(this.options.fullscreenElement?this.options.fullscreenElement:b._container,"leaflet-pseudo-fullscreen"),b.invalidateSize()),b.fire("enterFullscreen"),b._isFullscreen=!0)},_toggleState(){this.link.title=this._map._isFullscreen?this.options.title:this.options.titleCancel,this._map._isFullscreen?L.DomUtil.removeClass(this.link,"leaflet-fullscreen-on"):L.DomUtil.addClass(this.link,"leaflet-fullscreen-on")},_handleFullscreenChange(b){const E=this._map;b.target===E.getContainer()&&!this._screenfull.isFullscreen&&!E._exitFired&&(this._screenfull.exit().then(()=>E.invalidateSize()),E.fire("exitFullscreen"),E._exitFired=!0,E._isFullscreen=!1)}}),a.Map.include({toggleFullscreen(){this.fullscreenControl.toggleFullScreen()}}),a.Map.addInitHook(function(){this.options.fullscreenControl&&this.addControl(a.control.fullscreen(this.options.fullscreenControlOptions))}),a.control.fullscreen=function(b){return new a.Control.FullScreen(b)},{leaflet:a}})})(OE);var $x={exports:{}};(function(m,a){(function(d,g){g(a)})(zp,function(d){var g=L.MarkerClusterGroup=L.FeatureGroup.extend({options:{maxClusterRadius:80,iconCreateFunction:null,clusterPane:L.Marker.prototype.options.pane,spiderfyOnEveryZoom:!1,spiderfyOnMaxZoom:!0,showCoverageOnHover:!0,zoomToBoundsOnClick:!0,singleMarkerMode:!1,disableClusteringAtZoom:null,removeOutsideVisibleBounds:!0,animate:!0,animateAddingMarkers:!1,spiderfyShapePositions:null,spiderfyDistanceMultiplier:1,spiderLegPolylineOptions:{weight:1.5,color:"#222",opacity:.5},chunkedLoading:!1,chunkInterval:200,chunkDelay:50,chunkProgress:null,polygonOptions:{}},initialize:function(b){L.Util.setOptions(this,b),this.options.iconCreateFunction||(this.options.iconCreateFunction=this._defaultIconCreateFunction),this._featureGroup=L.featureGroup(),this._featureGroup.addEventParent(this),this._nonPointGroup=L.featureGroup(),this._nonPointGroup.addEventParent(this),this._inZoomAnimation=0,this._needsClustering=[],this._needsRemoving=[],this._currentShownBounds=null,this._queue=[],this._childMarkerEventHandlers={dragstart:this._childMarkerDragStart,move:this._childMarkerMoved,dragend:this._childMarkerDragEnd};var E=L.DomUtil.TRANSITION&&this.options.animate;L.extend(this,E?this._withAnimation:this._noAnimation),this._markerCluster=E?L.MarkerCluster:L.MarkerClusterNonAnimated},addLayer:function(b){if(b instanceof L.LayerGroup)return this.addLayers([b]);if(!b.getLatLng)return this._nonPointGroup.addLayer(b),this.fire("layeradd",{layer:b}),this;if(!this._map)return this._needsClustering.push(b),this.fire("layeradd",{layer:b}),this;if(this.hasLayer(b))return this;this._unspiderfy&&this._unspiderfy(),this._addLayer(b,this._maxZoom),this.fire("layeradd",{layer:b}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons();var E=b,i=this._zoom;if(b.__parent)for(;E.__parent._zoom>=i;)E=E.__parent;return this._currentShownBounds.contains(E.getLatLng())&&(this.options.animateAddingMarkers?this._animationAddLayer(b,E):this._animationAddLayerNonAnimated(b,E)),this},removeLayer:function(b){return b instanceof L.LayerGroup?this.removeLayers([b]):b.getLatLng?this._map?b.__parent?(this._unspiderfy&&(this._unspiderfy(),this._unspiderfyLayer(b)),this._removeLayer(b,!0),this.fire("layerremove",{layer:b}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),b.off(this._childMarkerEventHandlers,this),this._featureGroup.hasLayer(b)&&(this._featureGroup.removeLayer(b),b.clusterShow&&b.clusterShow()),this):this:(!this._arraySplice(this._needsClustering,b)&&this.hasLayer(b)&&this._needsRemoving.push({layer:b,latlng:b._latlng}),this.fire("layerremove",{layer:b}),this):(this._nonPointGroup.removeLayer(b),this.fire("layerremove",{layer:b}),this)},addLayers:function(b,E){if(!L.Util.isArray(b))return this.addLayer(b);var i=this._featureGroup,O=this._nonPointGroup,j=this.options.chunkedLoading,Y=this.options.chunkInterval,J=this.options.chunkProgress,ae=b.length,ce=0,Te=!0,be;if(this._map){var Ze=new Date().getTime(),je=L.bind(function(){var vt=new Date().getTime();for(this._map&&this._unspiderfy&&this._unspiderfy();ce<ae;ce++){if(j&&ce%200===0){var ht=new Date().getTime()-vt;if(ht>Y)break}if(be=b[ce],be instanceof L.LayerGroup){Te&&(b=b.slice(),Te=!1),this._extractNonGroupLayers(be,b),ae=b.length;continue}if(!be.getLatLng){O.addLayer(be),E||this.fire("layeradd",{layer:be});continue}if(!this.hasLayer(be)&&(this._addLayer(be,this._maxZoom),E||this.fire("layeradd",{layer:be}),be.__parent&&be.__parent.getChildCount()===2)){var gt=be.__parent.getAllChildMarkers(),Vt=gt[0]===be?gt[1]:gt[0];i.removeLayer(Vt)}}J&&J(ce,ae,new Date().getTime()-Ze),ce===ae?(this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds)):setTimeout(je,this.options.chunkDelay)},this);je()}else for(var ot=this._needsClustering;ce<ae;ce++){if(be=b[ce],be instanceof L.LayerGroup){Te&&(b=b.slice(),Te=!1),this._extractNonGroupLayers(be,b),ae=b.length;continue}if(!be.getLatLng){O.addLayer(be);continue}this.hasLayer(be)||ot.push(be)}return this},removeLayers:function(b){var E,i,O=b.length,j=this._featureGroup,Y=this._nonPointGroup,J=!0;if(!this._map){for(E=0;E<O;E++){if(i=b[E],i instanceof L.LayerGroup){J&&(b=b.slice(),J=!1),this._extractNonGroupLayers(i,b),O=b.length;continue}this._arraySplice(this._needsClustering,i),Y.removeLayer(i),this.hasLayer(i)&&this._needsRemoving.push({layer:i,latlng:i._latlng}),this.fire("layerremove",{layer:i})}return this}if(this._unspiderfy){this._unspiderfy();var ae=b.slice(),ce=O;for(E=0;E<ce;E++){if(i=ae[E],i instanceof L.LayerGroup){this._extractNonGroupLayers(i,ae),ce=ae.length;continue}this._unspiderfyLayer(i)}}for(E=0;E<O;E++){if(i=b[E],i instanceof L.LayerGroup){J&&(b=b.slice(),J=!1),this._extractNonGroupLayers(i,b),O=b.length;continue}if(!i.__parent){Y.removeLayer(i),this.fire("layerremove",{layer:i});continue}this._removeLayer(i,!0,!0),this.fire("layerremove",{layer:i}),j.hasLayer(i)&&(j.removeLayer(i),i.clusterShow&&i.clusterShow())}return this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds),this},clearLayers:function(){return this._map||(this._needsClustering=[],this._needsRemoving=[],delete this._gridClusters,delete this._gridUnclustered),this._noanimationUnspiderfy&&this._noanimationUnspiderfy(),this._featureGroup.clearLayers(),this._nonPointGroup.clearLayers(),this.eachLayer(function(b){b.off(this._childMarkerEventHandlers,this),delete b.__parent},this),this._map&&this._generateInitialClusters(),this},getBounds:function(){var b=new L.LatLngBounds;this._topClusterLevel&&b.extend(this._topClusterLevel._bounds);for(var E=this._needsClustering.length-1;E>=0;E--)b.extend(this._needsClustering[E].getLatLng());return b.extend(this._nonPointGroup.getBounds()),b},eachLayer:function(b,E){var i=this._needsClustering.slice(),O=this._needsRemoving,j,Y,J;for(this._topClusterLevel&&this._topClusterLevel.getAllChildMarkers(i),Y=i.length-1;Y>=0;Y--){for(j=!0,J=O.length-1;J>=0;J--)if(O[J].layer===i[Y]){j=!1;break}j&&b.call(E,i[Y])}this._nonPointGroup.eachLayer(b,E)},getLayers:function(){var b=[];return this.eachLayer(function(E){b.push(E)}),b},getLayer:function(b){var E=null;return b=parseInt(b,10),this.eachLayer(function(i){L.stamp(i)===b&&(E=i)}),E},hasLayer:function(b){if(!b)return!1;var E,i=this._needsClustering;for(E=i.length-1;E>=0;E--)if(i[E]===b)return!0;for(i=this._needsRemoving,E=i.length-1;E>=0;E--)if(i[E].layer===b)return!1;return!!(b.__parent&&b.__parent._group===this)||this._nonPointGroup.hasLayer(b)},zoomToShowLayer:function(b,E){var i=this._map;typeof E!="function"&&(E=function(){});var O=function(){(i.hasLayer(b)||i.hasLayer(b.__parent))&&!this._inZoomAnimation&&(this._map.off("moveend",O,this),this.off("animationend",O,this),i.hasLayer(b)?E():b.__parent._icon&&(this.once("spiderfied",E,this),b.__parent.spiderfy()))};b._icon&&this._map.getBounds().contains(b.getLatLng())?E():b.__parent._zoom<Math.round(this._map._zoom)?(this._map.on("moveend",O,this),this._map.panTo(b.getLatLng())):(this._map.on("moveend",O,this),this.on("animationend",O,this),b.__parent.zoomToBounds())},onAdd:function(b){this._map=b;var E,i,O;if(!isFinite(this._map.getMaxZoom()))throw"Map has no maxZoom specified";for(this._featureGroup.addTo(b),this._nonPointGroup.addTo(b),this._gridClusters||this._generateInitialClusters(),this._maxLat=b.options.crs.projection.MAX_LATITUDE,E=0,i=this._needsRemoving.length;E<i;E++)O=this._needsRemoving[E],O.newlatlng=O.layer._latlng,O.layer._latlng=O.latlng;for(E=0,i=this._needsRemoving.length;E<i;E++)O=this._needsRemoving[E],this._removeLayer(O.layer,!0),O.layer._latlng=O.newlatlng;this._needsRemoving=[],this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds(),this._map.on("zoomend",this._zoomEnd,this),this._map.on("moveend",this._moveEnd,this),this._spiderfierOnAdd&&this._spiderfierOnAdd(),this._bindEvents(),i=this._needsClustering,this._needsClustering=[],this.addLayers(i,!0)},onRemove:function(b){b.off("zoomend",this._zoomEnd,this),b.off("moveend",this._moveEnd,this),this._unbindEvents(),this._map._mapPane.className=this._map._mapPane.className.replace(" leaflet-cluster-anim",""),this._spiderfierOnRemove&&this._spiderfierOnRemove(),delete this._maxLat,this._hideCoverage(),this._featureGroup.remove(),this._nonPointGroup.remove(),this._featureGroup.clearLayers(),this._map=null},getVisibleParent:function(b){for(var E=b;E&&!E._icon;)E=E.__parent;return E||null},_arraySplice:function(b,E){for(var i=b.length-1;i>=0;i--)if(b[i]===E)return b.splice(i,1),!0},_removeFromGridUnclustered:function(b,E){for(var i=this._map,O=this._gridUnclustered,j=Math.floor(this._map.getMinZoom());E>=j&&O[E].removeObject(b,i.project(b.getLatLng(),E));E--);},_childMarkerDragStart:function(b){b.target.__dragStart=b.target._latlng},_childMarkerMoved:function(b){if(!this._ignoreMove&&!b.target.__dragStart){var E=b.target._popup&&b.target._popup.isOpen();this._moveChild(b.target,b.oldLatLng,b.latlng),E&&b.target.openPopup()}},_moveChild:function(b,E,i){b._latlng=E,this.removeLayer(b),b._latlng=i,this.addLayer(b)},_childMarkerDragEnd:function(b){var E=b.target.__dragStart;delete b.target.__dragStart,E&&this._moveChild(b.target,E,b.target._latlng)},_removeLayer:function(b,E,i){var O=this._gridClusters,j=this._gridUnclustered,Y=this._featureGroup,J=this._map,ae=Math.floor(this._map.getMinZoom());E&&this._removeFromGridUnclustered(b,this._maxZoom);var ce=b.__parent,Te=ce._markers,be;for(this._arraySplice(Te,b);ce&&(ce._childCount--,ce._boundsNeedUpdate=!0,!(ce._zoom<ae));)E&&ce._childCount<=1?(be=ce._markers[0]===b?ce._markers[1]:ce._markers[0],O[ce._zoom].removeObject(ce,J.project(ce._cLatLng,ce._zoom)),j[ce._zoom].addObject(be,J.project(be.getLatLng(),ce._zoom)),this._arraySplice(ce.__parent._childClusters,ce),ce.__parent._markers.push(be),be.__parent=ce.__parent,ce._icon&&(Y.removeLayer(ce),i||Y.addLayer(be))):ce._iconNeedsUpdate=!0,ce=ce.__parent;delete b.__parent},_isOrIsParent:function(b,E){for(;E;){if(b===E)return!0;E=E.parentNode}return!1},fire:function(b,E,i){if(E&&E.layer instanceof L.MarkerCluster){if(E.originalEvent&&this._isOrIsParent(E.layer._icon,E.originalEvent.relatedTarget))return;b="cluster"+b}L.FeatureGroup.prototype.fire.call(this,b,E,i)},listens:function(b,E){return L.FeatureGroup.prototype.listens.call(this,b,E)||L.FeatureGroup.prototype.listens.call(this,"cluster"+b,E)},_defaultIconCreateFunction:function(b){var E=b.getChildCount(),i=" marker-cluster-";return E<10?i+="small":E<100?i+="medium":i+="large",new L.DivIcon({html:"<div><span>"+E+"</span></div>",className:"marker-cluster"+i,iconSize:new L.Point(40,40)})},_bindEvents:function(){var b=this._map,E=this.options.spiderfyOnMaxZoom,i=this.options.showCoverageOnHover,O=this.options.zoomToBoundsOnClick,j=this.options.spiderfyOnEveryZoom;(E||O||j)&&this.on("clusterclick clusterkeypress",this._zoomOrSpiderfy,this),i&&(this.on("clustermouseover",this._showCoverage,this),this.on("clustermouseout",this._hideCoverage,this),b.on("zoomend",this._hideCoverage,this))},_zoomOrSpiderfy:function(b){var E=b.layer,i=E;if(!(b.type==="clusterkeypress"&&b.originalEvent&&b.originalEvent.keyCode!==13)){for(;i._childClusters.length===1;)i=i._childClusters[0];i._zoom===this._maxZoom&&i._childCount===E._childCount&&this.options.spiderfyOnMaxZoom?E.spiderfy():this.options.zoomToBoundsOnClick&&E.zoomToBounds(),this.options.spiderfyOnEveryZoom&&E.spiderfy(),b.originalEvent&&b.originalEvent.keyCode===13&&this._map._container.focus()}},_showCoverage:function(b){var E=this._map;this._inZoomAnimation||(this._shownPolygon&&E.removeLayer(this._shownPolygon),b.layer.getChildCount()>2&&b.layer!==this._spiderfied&&(this._shownPolygon=new L.Polygon(b.layer.getConvexHull(),this.options.polygonOptions),E.addLayer(this._shownPolygon)))},_hideCoverage:function(){this._shownPolygon&&(this._map.removeLayer(this._shownPolygon),this._shownPolygon=null)},_unbindEvents:function(){var b=this.options.spiderfyOnMaxZoom,E=this.options.showCoverageOnHover,i=this.options.zoomToBoundsOnClick,O=this.options.spiderfyOnEveryZoom,j=this._map;(b||i||O)&&this.off("clusterclick clusterkeypress",this._zoomOrSpiderfy,this),E&&(this.off("clustermouseover",this._showCoverage,this),this.off("clustermouseout",this._hideCoverage,this),j.off("zoomend",this._hideCoverage,this))},_zoomEnd:function(){this._map&&(this._mergeSplitClusters(),this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds())},_moveEnd:function(){if(!this._inZoomAnimation){var b=this._getExpandedVisibleBounds();this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),this._zoom,b),this._topClusterLevel._recursivelyAddChildrenToMap(null,Math.round(this._map._zoom),b),this._currentShownBounds=b}},_generateInitialClusters:function(){var b=Math.ceil(this._map.getMaxZoom()),E=Math.floor(this._map.getMinZoom()),i=this.options.maxClusterRadius,O=i;typeof i!="function"&&(O=function(){return i}),this.options.disableClusteringAtZoom!==null&&(b=this.options.disableClusteringAtZoom-1),this._maxZoom=b,this._gridClusters={},this._gridUnclustered={};for(var j=b;j>=E;j--)this._gridClusters[j]=new L.DistanceGrid(O(j)),this._gridUnclustered[j]=new L.DistanceGrid(O(j));this._topClusterLevel=new this._markerCluster(this,E-1)},_addLayer:function(b,E){var i=this._gridClusters,O=this._gridUnclustered,j=Math.floor(this._map.getMinZoom()),Y,J;for(this.options.singleMarkerMode&&this._overrideMarkerIcon(b),b.on(this._childMarkerEventHandlers,this);E>=j;E--){Y=this._map.project(b.getLatLng(),E);var ae=i[E].getNearObject(Y);if(ae){ae._addChild(b),b.__parent=ae;return}if(ae=O[E].getNearObject(Y),ae){var ce=ae.__parent;ce&&this._removeLayer(ae,!1);var Te=new this._markerCluster(this,E,ae,b);i[E].addObject(Te,this._map.project(Te._cLatLng,E)),ae.__parent=Te,b.__parent=Te;var be=Te;for(J=E-1;J>ce._zoom;J--)be=new this._markerCluster(this,J,be),i[J].addObject(be,this._map.project(ae.getLatLng(),J));ce._addChild(be),this._removeFromGridUnclustered(ae,E);return}O[E].addObject(b,Y)}this._topClusterLevel._addChild(b),b.__parent=this._topClusterLevel},_refreshClustersIcons:function(){this._featureGroup.eachLayer(function(b){b instanceof L.MarkerCluster&&b._iconNeedsUpdate&&b._updateIcon()})},_enqueue:function(b){this._queue.push(b),this._queueTimeout||(this._queueTimeout=setTimeout(L.bind(this._processQueue,this),300))},_processQueue:function(){for(var b=0;b<this._queue.length;b++)this._queue[b].call(this);this._queue.length=0,clearTimeout(this._queueTimeout),this._queueTimeout=null},_mergeSplitClusters:function(){var b=Math.round(this._map._zoom);this._processQueue(),this._zoom<b&&this._currentShownBounds.intersects(this._getExpandedVisibleBounds())?(this._animationStart(),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),this._zoom,this._getExpandedVisibleBounds()),this._animationZoomIn(this._zoom,b)):this._zoom>b?(this._animationStart(),this._animationZoomOut(this._zoom,b)):this._moveEnd()},_getExpandedVisibleBounds:function(){if(this.options.removeOutsideVisibleBounds){if(L.Browser.mobile)return this._checkBoundsMaxLat(this._map.getBounds())}else return this._mapBoundsInfinite;return this._checkBoundsMaxLat(this._map.getBounds().pad(1))},_checkBoundsMaxLat:function(b){var E=this._maxLat;return E!==void 0&&(b.getNorth()>=E&&(b._northEast.lat=1/0),b.getSouth()<=-E&&(b._southWest.lat=-1/0)),b},_animationAddLayerNonAnimated:function(b,E){if(E===b)this._featureGroup.addLayer(b);else if(E._childCount===2){E._addToMap();var i=E.getAllChildMarkers();this._featureGroup.removeLayer(i[0]),this._featureGroup.removeLayer(i[1])}else E._updateIcon()},_extractNonGroupLayers:function(b,E){var i=b.getLayers(),O=0,j;for(E=E||[];O<i.length;O++){if(j=i[O],j instanceof L.LayerGroup){this._extractNonGroupLayers(j,E);continue}E.push(j)}return E},_overrideMarkerIcon:function(b){var E=b.options.icon=this.options.iconCreateFunction({getChildCount:function(){return 1},getAllChildMarkers:function(){return[b]}});return E}});L.MarkerClusterGroup.include({_mapBoundsInfinite:new L.LatLngBounds(new L.LatLng(-1/0,-1/0),new L.LatLng(1/0,1/0))}),L.MarkerClusterGroup.include({_noAnimation:{_animationStart:function(){},_animationZoomIn:function(b,E){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),b),this._topClusterLevel._recursivelyAddChildrenToMap(null,E,this._getExpandedVisibleBounds()),this.fire("animationend")},_animationZoomOut:function(b,E){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),b),this._topClusterLevel._recursivelyAddChildrenToMap(null,E,this._getExpandedVisibleBounds()),this.fire("animationend")},_animationAddLayer:function(b,E){this._animationAddLayerNonAnimated(b,E)}},_withAnimation:{_animationStart:function(){this._map._mapPane.className+=" leaflet-cluster-anim",this._inZoomAnimation++},_animationZoomIn:function(b,E){var i=this._getExpandedVisibleBounds(),O=this._featureGroup,j=Math.floor(this._map.getMinZoom()),Y;this._ignoreMove=!0,this._topClusterLevel._recursively(i,b,j,function(J){var ae=J._latlng,ce=J._markers,Te;for(i.contains(ae)||(ae=null),J._isSingleParent()&&b+1===E?(O.removeLayer(J),J._recursivelyAddChildrenToMap(null,E,i)):(J.clusterHide(),J._recursivelyAddChildrenToMap(ae,E,i)),Y=ce.length-1;Y>=0;Y--)Te=ce[Y],i.contains(Te._latlng)||O.removeLayer(Te)}),this._forceLayout(),this._topClusterLevel._recursivelyBecomeVisible(i,E),O.eachLayer(function(J){!(J instanceof L.MarkerCluster)&&J._icon&&J.clusterShow()}),this._topClusterLevel._recursively(i,b,E,function(J){J._recursivelyRestoreChildPositions(E)}),this._ignoreMove=!1,this._enqueue(function(){this._topClusterLevel._recursively(i,b,j,function(J){O.removeLayer(J),J.clusterShow()}),this._animationEnd()})},_animationZoomOut:function(b,E){this._animationZoomOutSingle(this._topClusterLevel,b-1,E),this._topClusterLevel._recursivelyAddChildrenToMap(null,E,this._getExpandedVisibleBounds()),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),b,this._getExpandedVisibleBounds())},_animationAddLayer:function(b,E){var i=this,O=this._featureGroup;O.addLayer(b),E!==b&&(E._childCount>2?(E._updateIcon(),this._forceLayout(),this._animationStart(),b._setPos(this._map.latLngToLayerPoint(E.getLatLng())),b.clusterHide(),this._enqueue(function(){O.removeLayer(b),b.clusterShow(),i._animationEnd()})):(this._forceLayout(),i._animationStart(),i._animationZoomOutSingle(E,this._map.getMaxZoom(),this._zoom)))}},_animationZoomOutSingle:function(b,E,i){var O=this._getExpandedVisibleBounds(),j=Math.floor(this._map.getMinZoom());b._recursivelyAnimateChildrenInAndAddSelfToMap(O,j,E+1,i);var Y=this;this._forceLayout(),b._recursivelyBecomeVisible(O,i),this._enqueue(function(){if(b._childCount===1){var J=b._markers[0];this._ignoreMove=!0,J.setLatLng(J.getLatLng()),this._ignoreMove=!1,J.clusterShow&&J.clusterShow()}else b._recursively(O,i,j,function(ae){ae._recursivelyRemoveChildrenFromMap(O,j,E+1)});Y._animationEnd()})},_animationEnd:function(){this._map&&(this._map._mapPane.className=this._map._mapPane.className.replace(" leaflet-cluster-anim","")),this._inZoomAnimation--,this.fire("animationend")},_forceLayout:function(){L.Util.falseFn(document.body.offsetWidth)}}),L.markerClusterGroup=function(b){return new L.MarkerClusterGroup(b)};var w=L.MarkerCluster=L.Marker.extend({options:L.Icon.prototype.options,initialize:function(b,E,i,O){L.Marker.prototype.initialize.call(this,i?i._cLatLng||i.getLatLng():new L.LatLng(0,0),{icon:this,pane:b.options.clusterPane}),this._group=b,this._zoom=E,this._markers=[],this._childClusters=[],this._childCount=0,this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._bounds=new L.LatLngBounds,i&&this._addChild(i),O&&this._addChild(O)},getAllChildMarkers:function(b,E){b=b||[];for(var i=this._childClusters.length-1;i>=0;i--)this._childClusters[i].getAllChildMarkers(b,E);for(var O=this._markers.length-1;O>=0;O--)E&&this._markers[O].__dragStart||b.push(this._markers[O]);return b},getChildCount:function(){return this._childCount},zoomToBounds:function(b){for(var E=this._childClusters.slice(),i=this._group._map,O=i.getBoundsZoom(this._bounds),j=this._zoom+1,Y=i.getZoom(),J;E.length>0&&O>j;){j++;var ae=[];for(J=0;J<E.length;J++)ae=ae.concat(E[J]._childClusters);E=ae}O>j?this._group._map.setView(this._latlng,j):O<=Y?this._group._map.setView(this._latlng,Y+1):this._group._map.fitBounds(this._bounds,b)},getBounds:function(){var b=new L.LatLngBounds;return b.extend(this._bounds),b},_updateIcon:function(){this._iconNeedsUpdate=!0,this._icon&&this.setIcon(this)},createIcon:function(){return this._iconNeedsUpdate&&(this._iconObj=this._group.options.iconCreateFunction(this),this._iconNeedsUpdate=!1),this._iconObj.createIcon()},createShadow:function(){return this._iconObj.createShadow()},_addChild:function(b,E){this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._setClusterCenter(b),b instanceof L.MarkerCluster?(E||(this._childClusters.push(b),b.__parent=this),this._childCount+=b._childCount):(E||this._markers.push(b),this._childCount++),this.__parent&&this.__parent._addChild(b,!0)},_setClusterCenter:function(b){this._cLatLng||(this._cLatLng=b._cLatLng||b._latlng)},_resetBounds:function(){var b=this._bounds;b._southWest&&(b._southWest.lat=1/0,b._southWest.lng=1/0),b._northEast&&(b._northEast.lat=-1/0,b._northEast.lng=-1/0)},_recalculateBounds:function(){var b=this._markers,E=this._childClusters,i=0,O=0,j=this._childCount,Y,J,ae,ce;if(j!==0){for(this._resetBounds(),Y=0;Y<b.length;Y++)ae=b[Y]._latlng,this._bounds.extend(ae),i+=ae.lat,O+=ae.lng;for(Y=0;Y<E.length;Y++)J=E[Y],J._boundsNeedUpdate&&J._recalculateBounds(),this._bounds.extend(J._bounds),ae=J._wLatLng,ce=J._childCount,i+=ae.lat*ce,O+=ae.lng*ce;this._latlng=this._wLatLng=new L.LatLng(i/j,O/j),this._boundsNeedUpdate=!1}},_addToMap:function(b){b&&(this._backupLatlng=this._latlng,this.setLatLng(b)),this._group._featureGroup.addLayer(this)},_recursivelyAnimateChildrenIn:function(b,E,i){this._recursively(b,this._group._map.getMinZoom(),i-1,function(O){var j=O._markers,Y,J;for(Y=j.length-1;Y>=0;Y--)J=j[Y],J._icon&&(J._setPos(E),J.clusterHide())},function(O){var j=O._childClusters,Y,J;for(Y=j.length-1;Y>=0;Y--)J=j[Y],J._icon&&(J._setPos(E),J.clusterHide())})},_recursivelyAnimateChildrenInAndAddSelfToMap:function(b,E,i,O){this._recursively(b,O,E,function(j){j._recursivelyAnimateChildrenIn(b,j._group._map.latLngToLayerPoint(j.getLatLng()).round(),i),j._isSingleParent()&&i-1===O?(j.clusterShow(),j._recursivelyRemoveChildrenFromMap(b,E,i)):j.clusterHide(),j._addToMap()})},_recursivelyBecomeVisible:function(b,E){this._recursively(b,this._group._map.getMinZoom(),E,null,function(i){i.clusterShow()})},_recursivelyAddChildrenToMap:function(b,E,i){this._recursively(i,this._group._map.getMinZoom()-1,E,function(O){if(E!==O._zoom)for(var j=O._markers.length-1;j>=0;j--){var Y=O._markers[j];i.contains(Y._latlng)&&(b&&(Y._backupLatlng=Y.getLatLng(),Y.setLatLng(b),Y.clusterHide&&Y.clusterHide()),O._group._featureGroup.addLayer(Y))}},function(O){O._addToMap(b)})},_recursivelyRestoreChildPositions:function(b){for(var E=this._markers.length-1;E>=0;E--){var i=this._markers[E];i._backupLatlng&&(i.setLatLng(i._backupLatlng),delete i._backupLatlng)}if(b-1===this._zoom)for(var O=this._childClusters.length-1;O>=0;O--)this._childClusters[O]._restorePosition();else for(var j=this._childClusters.length-1;j>=0;j--)this._childClusters[j]._recursivelyRestoreChildPositions(b)},_restorePosition:function(){this._backupLatlng&&(this.setLatLng(this._backupLatlng),delete this._backupLatlng)},_recursivelyRemoveChildrenFromMap:function(b,E,i,O){var j,Y;this._recursively(b,E-1,i-1,function(J){for(Y=J._markers.length-1;Y>=0;Y--)j=J._markers[Y],(!O||!O.contains(j._latlng))&&(J._group._featureGroup.removeLayer(j),j.clusterShow&&j.clusterShow())},function(J){for(Y=J._childClusters.length-1;Y>=0;Y--)j=J._childClusters[Y],(!O||!O.contains(j._latlng))&&(J._group._featureGroup.removeLayer(j),j.clusterShow&&j.clusterShow())})},_recursively:function(b,E,i,O,j){var Y=this._childClusters,J=this._zoom,ae,ce;if(E<=J&&(O&&O(this),j&&J===i&&j(this)),J<E||J<i)for(ae=Y.length-1;ae>=0;ae--)ce=Y[ae],ce._boundsNeedUpdate&&ce._recalculateBounds(),b.intersects(ce._bounds)&&ce._recursively(b,E,i,O,j)},_isSingleParent:function(){return this._childClusters.length>0&&this._childClusters[0]._childCount===this._childCount}});L.Marker.include({clusterHide:function(){var b=this.options.opacity;return this.setOpacity(0),this.options.opacity=b,this},clusterShow:function(){return this.setOpacity(this.options.opacity)}}),L.DistanceGrid=function(b){this._cellSize=b,this._sqCellSize=b*b,this._grid={},this._objectPoint={}},L.DistanceGrid.prototype={addObject:function(b,E){var i=this._getCoord(E.x),O=this._getCoord(E.y),j=this._grid,Y=j[O]=j[O]||{},J=Y[i]=Y[i]||[],ae=L.Util.stamp(b);this._objectPoint[ae]=E,J.push(b)},updateObject:function(b,E){this.removeObject(b),this.addObject(b,E)},removeObject:function(b,E){var i=this._getCoord(E.x),O=this._getCoord(E.y),j=this._grid,Y=j[O]=j[O]||{},J=Y[i]=Y[i]||[],ae,ce;for(delete this._objectPoint[L.Util.stamp(b)],ae=0,ce=J.length;ae<ce;ae++)if(J[ae]===b)return J.splice(ae,1),ce===1&&delete Y[i],!0},eachObject:function(b,E){var i,O,j,Y,J,ae,ce,Te=this._grid;for(i in Te){J=Te[i];for(O in J)for(ae=J[O],j=0,Y=ae.length;j<Y;j++)ce=b.call(E,ae[j]),ce&&(j--,Y--)}},getNearObject:function(b){var E=this._getCoord(b.x),i=this._getCoord(b.y),O,j,Y,J,ae,ce,Te,be,Ze=this._objectPoint,je=this._sqCellSize,ot=null;for(O=i-1;O<=i+1;O++)if(J=this._grid[O],J){for(j=E-1;j<=E+1;j++)if(ae=J[j],ae)for(Y=0,ce=ae.length;Y<ce;Y++)Te=ae[Y],be=this._sqDist(Ze[L.Util.stamp(Te)],b),(be<je||be<=je&&ot===null)&&(je=be,ot=Te)}return ot},_getCoord:function(b){var E=Math.floor(b/this._cellSize);return isFinite(E)?E:b},_sqDist:function(b,E){var i=E.x-b.x,O=E.y-b.y;return i*i+O*O}},function(){L.QuickHull={getDistant:function(b,E){var i=E[1].lat-E[0].lat,O=E[0].lng-E[1].lng;return O*(b.lat-E[0].lat)+i*(b.lng-E[0].lng)},findMostDistantPointFromBaseLine:function(b,E){var i=0,O=null,j=[],Y,J,ae;for(Y=E.length-1;Y>=0;Y--){if(J=E[Y],ae=this.getDistant(J,b),ae>0)j.push(J);else continue;ae>i&&(i=ae,O=J)}return{maxPoint:O,newPoints:j}},buildConvexHull:function(b,E){var i=[],O=this.findMostDistantPointFromBaseLine(b,E);return O.maxPoint?(i=i.concat(this.buildConvexHull([b[0],O.maxPoint],O.newPoints)),i=i.concat(this.buildConvexHull([O.maxPoint,b[1]],O.newPoints)),i):[b[0]]},getConvexHull:function(b){var E=!1,i=!1,O=!1,j=!1,Y=null,J=null,ae=null,ce=null,Te=null,be=null,Ze;for(Ze=b.length-1;Ze>=0;Ze--){var je=b[Ze];(E===!1||je.lat>E)&&(Y=je,E=je.lat),(i===!1||je.lat<i)&&(J=je,i=je.lat),(O===!1||je.lng>O)&&(ae=je,O=je.lng),(j===!1||je.lng<j)&&(ce=je,j=je.lng)}i!==E?(be=J,Te=Y):(be=ce,Te=ae);var ot=[].concat(this.buildConvexHull([be,Te],b),this.buildConvexHull([Te,be],b));return ot}}}(),L.MarkerCluster.include({getConvexHull:function(){var b=this.getAllChildMarkers(),E=[],i,O;for(O=b.length-1;O>=0;O--)i=b[O].getLatLng(),E.push(i);return L.QuickHull.getConvexHull(E)}}),L.MarkerCluster.include({_2PI:Math.PI*2,_circleFootSeparation:25,_circleStartAngle:0,_spiralFootSeparation:28,_spiralLengthStart:11,_spiralLengthFactor:5,_circleSpiralSwitchover:9,spiderfy:function(){if(!(this._group._spiderfied===this||this._group._inZoomAnimation)){var b=this.getAllChildMarkers(null,!0),E=this._group,i=E._map,O=i.latLngToLayerPoint(this._latlng),j;this._group._unspiderfy(),this._group._spiderfied=this,this._group.options.spiderfyShapePositions?j=this._group.options.spiderfyShapePositions(b.length,O):b.length>=this._circleSpiralSwitchover?j=this._generatePointsSpiral(b.length,O):(O.y+=10,j=this._generatePointsCircle(b.length,O)),this._animationSpiderfy(b,j)}},unspiderfy:function(b){this._group._inZoomAnimation||(this._animationUnspiderfy(b),this._group._spiderfied=null)},_generatePointsCircle:function(b,E){var i=this._group.options.spiderfyDistanceMultiplier*this._circleFootSeparation*(2+b),O=i/this._2PI,j=this._2PI/b,Y=[],J,ae;for(O=Math.max(O,35),Y.length=b,J=0;J<b;J++)ae=this._circleStartAngle+J*j,Y[J]=new L.Point(E.x+O*Math.cos(ae),E.y+O*Math.sin(ae))._round();return Y},_generatePointsSpiral:function(b,E){var i=this._group.options.spiderfyDistanceMultiplier,O=i*this._spiralLengthStart,j=i*this._spiralFootSeparation,Y=i*this._spiralLengthFactor*this._2PI,J=0,ae=[],ce;for(ae.length=b,ce=b;ce>=0;ce--)ce<b&&(ae[ce]=new L.Point(E.x+O*Math.cos(J),E.y+O*Math.sin(J))._round()),J+=j/O+ce*5e-4,O+=Y/J;return ae},_noanimationUnspiderfy:function(){var b=this._group,E=b._map,i=b._featureGroup,O=this.getAllChildMarkers(null,!0),j,Y;for(b._ignoreMove=!0,this.setOpacity(1),Y=O.length-1;Y>=0;Y--)j=O[Y],i.removeLayer(j),j._preSpiderfyLatlng&&(j.setLatLng(j._preSpiderfyLatlng),delete j._preSpiderfyLatlng),j.setZIndexOffset&&j.setZIndexOffset(0),j._spiderLeg&&(E.removeLayer(j._spiderLeg),delete j._spiderLeg);b.fire("unspiderfied",{cluster:this,markers:O}),b._ignoreMove=!1,b._spiderfied=null}}),L.MarkerClusterNonAnimated=L.MarkerCluster.extend({_animationSpiderfy:function(b,E){var i=this._group,O=i._map,j=i._featureGroup,Y=this._group.options.spiderLegPolylineOptions,J,ae,ce,Te;for(i._ignoreMove=!0,J=0;J<b.length;J++)Te=O.layerPointToLatLng(E[J]),ae=b[J],ce=new L.Polyline([this._latlng,Te],Y),O.addLayer(ce),ae._spiderLeg=ce,ae._preSpiderfyLatlng=ae._latlng,ae.setLatLng(Te),ae.setZIndexOffset&&ae.setZIndexOffset(1e6),j.addLayer(ae);this.setOpacity(.3),i._ignoreMove=!1,i.fire("spiderfied",{cluster:this,markers:b})},_animationUnspiderfy:function(){this._noanimationUnspiderfy()}}),L.MarkerCluster.include({_animationSpiderfy:function(b,E){var i=this,O=this._group,j=O._map,Y=O._featureGroup,J=this._latlng,ae=j.latLngToLayerPoint(J),ce=L.Path.SVG,Te=L.extend({},this._group.options.spiderLegPolylineOptions),be=Te.opacity,Ze,je,ot,vt,ht,gt;for(be===void 0&&(be=L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity),ce?(Te.opacity=0,Te.className=(Te.className||"")+" leaflet-cluster-spider-leg"):Te.opacity=be,O._ignoreMove=!0,Ze=0;Ze<b.length;Ze++)je=b[Ze],gt=j.layerPointToLatLng(E[Ze]),ot=new L.Polyline([J,gt],Te),j.addLayer(ot),je._spiderLeg=ot,ce&&(vt=ot._path,ht=vt.getTotalLength()+.1,vt.style.strokeDasharray=ht,vt.style.strokeDashoffset=ht),je.setZIndexOffset&&je.setZIndexOffset(1e6),je.clusterHide&&je.clusterHide(),Y.addLayer(je),je._setPos&&je._setPos(ae);for(O._forceLayout(),O._animationStart(),Ze=b.length-1;Ze>=0;Ze--)gt=j.layerPointToLatLng(E[Ze]),je=b[Ze],je._preSpiderfyLatlng=je._latlng,je.setLatLng(gt),je.clusterShow&&je.clusterShow(),ce&&(ot=je._spiderLeg,vt=ot._path,vt.style.strokeDashoffset=0,ot.setStyle({opacity:be}));this.setOpacity(.3),O._ignoreMove=!1,setTimeout(function(){O._animationEnd(),O.fire("spiderfied",{cluster:i,markers:b})},200)},_animationUnspiderfy:function(b){var E=this,i=this._group,O=i._map,j=i._featureGroup,Y=b?O._latLngToNewLayerPoint(this._latlng,b.zoom,b.center):O.latLngToLayerPoint(this._latlng),J=this.getAllChildMarkers(null,!0),ae=L.Path.SVG,ce,Te,be,Ze,je,ot;for(i._ignoreMove=!0,i._animationStart(),this.setOpacity(1),Te=J.length-1;Te>=0;Te--)ce=J[Te],ce._preSpiderfyLatlng&&(ce.closePopup(),ce.setLatLng(ce._preSpiderfyLatlng),delete ce._preSpiderfyLatlng,ot=!0,ce._setPos&&(ce._setPos(Y),ot=!1),ce.clusterHide&&(ce.clusterHide(),ot=!1),ot&&j.removeLayer(ce),ae&&(be=ce._spiderLeg,Ze=be._path,je=Ze.getTotalLength()+.1,Ze.style.strokeDashoffset=je,be.setStyle({opacity:0})));i._ignoreMove=!1,setTimeout(function(){var vt=0;for(Te=J.length-1;Te>=0;Te--)ce=J[Te],ce._spiderLeg&&vt++;for(Te=J.length-1;Te>=0;Te--)ce=J[Te],ce._spiderLeg&&(ce.clusterShow&&ce.clusterShow(),ce.setZIndexOffset&&ce.setZIndexOffset(0),vt>1&&j.removeLayer(ce),O.removeLayer(ce._spiderLeg),delete ce._spiderLeg);i._animationEnd(),i.fire("unspiderfied",{cluster:E,markers:J})},200)}}),L.MarkerClusterGroup.include({_spiderfied:null,unspiderfy:function(){this._unspiderfy.apply(this,arguments)},_spiderfierOnAdd:function(){this._map.on("click",this._unspiderfyWrapper,this),this._map.options.zoomAnimation&&this._map.on("zoomstart",this._unspiderfyZoomStart,this),this._map.on("zoomend",this._noanimationUnspiderfy,this),L.Browser.touch||this._map.getRenderer(this)},_spiderfierOnRemove:function(){this._map.off("click",this._unspiderfyWrapper,this),this._map.off("zoomstart",this._unspiderfyZoomStart,this),this._map.off("zoomanim",this._unspiderfyZoomAnim,this),this._map.off("zoomend",this._noanimationUnspiderfy,this),this._noanimationUnspiderfy()},_unspiderfyZoomStart:function(){this._map&&this._map.on("zoomanim",this._unspiderfyZoomAnim,this)},_unspiderfyZoomAnim:function(b){L.DomUtil.hasClass(this._map._mapPane,"leaflet-touching")||(this._map.off("zoomanim",this._unspiderfyZoomAnim,this),this._unspiderfy(b))},_unspiderfyWrapper:function(){this._unspiderfy()},_unspiderfy:function(b){this._spiderfied&&this._spiderfied.unspiderfy(b)},_noanimationUnspiderfy:function(){this._spiderfied&&this._spiderfied._noanimationUnspiderfy()},_unspiderfyLayer:function(b){b._spiderLeg&&(this._featureGroup.removeLayer(b),b.clusterShow&&b.clusterShow(),b.setZIndexOffset&&b.setZIndexOffset(0),this._map.removeLayer(b._spiderLeg),delete b._spiderLeg)}}),L.MarkerClusterGroup.include({refreshClusters:function(b){return b?b instanceof L.MarkerClusterGroup?b=b._topClusterLevel.getAllChildMarkers():b instanceof L.LayerGroup?b=b._layers:b instanceof L.MarkerCluster?b=b.getAllChildMarkers():b instanceof L.Marker&&(b=[b]):b=this._topClusterLevel.getAllChildMarkers(),this._flagParentsIconsNeedUpdate(b),this._refreshClustersIcons(),this.options.singleMarkerMode&&this._refreshSingleMarkerModeMarkers(b),this},_flagParentsIconsNeedUpdate:function(b){var E,i;for(E in b)for(i=b[E].__parent;i;)i._iconNeedsUpdate=!0,i=i.__parent},_refreshSingleMarkerModeMarkers:function(b){var E,i;for(E in b)i=b[E],this.hasLayer(i)&&i.setIcon(this._overrideMarkerIcon(i))}}),L.Marker.include({refreshIconOptions:function(b,E){var i=this.options.icon;return L.setOptions(i,b),this.setIcon(i),E&&this.__parent&&this.__parent._group.refreshClusters(this),this}}),d.MarkerClusterGroup=g,d.MarkerCluster=w,Object.defineProperty(d,"__esModule",{value:!0})})})($x,$x.exports);const rI="",oI="",aI="";class FE{constructor(){this.Bounds=[],this.lng=null,this.map=null,this.EventSelectChart=null,this.Polylines=[],this.CurrentPositionMarker=null,this.CurrentGPSPositionMarker=null}init(a,d,g,w,b){this.map=xn.map(a,{scrollWheelZoom:g});var E=new xn.Control.FullScreen;this.map.addControl(E),xn.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{attribution:'Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'}).addTo(this.map);var i=(w+"").length>0,O={},j={};switch(i?O["Thunderforest - Cycle"]=xn.tileLayer("https://a.tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey="+w,{maxZoom:18,attribution:'Maps © <a href="https://www.thunderforest.com/">Thunderforest</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>'}):O["Open Cycle Map"]=xn.tileLayer("http://a.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png",{maxZoom:18,attribution:'Maps © <a href="https://www.thunderforest.com/">Thunderforest</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>'}),O["Thunderforest - Outdoors"]=xn.tileLayer("https://a.tile.thunderforest.com/outddors/{z}/{x}/{y}.png?apikey="+w,{maxZoom:18,attribution:'Maps © <a href="https://www.thunderforest.com/">Thunderforest</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>'}),O["Thunderforest - Transport"]=xn.tileLayer("https://a.tile.thunderforest.com/transport/{z}/{x}/{y}.png?apikey="+w,{maxZoom:18,attribution:'Maps © <a href="https://www.thunderforest.com/">Thunderforest</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>'}),O["Thunderforest - Landscape"]=xn.tileLayer("https://a.tile.thunderforest.com/landscape/{z}/{x}/{y}.png?apikey="+w,{maxZoom:18,attribution:'Maps © <a href="https://www.thunderforest.com/">Thunderforest</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>'}),O["Open Street Map"]=xn.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png",{maxZoom:18,attribution:'Maps © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>'}),O["Humanitarian Map Style"]=xn.tileLayer("https://a.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png",{maxZoom:18,attribution:'Maps © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>'}),O["Hike & Bike"]=xn.tileLayer("http://toolserver.org/tiles/hikebike/{z}/{x}/{y}.png",{maxZoom:18,attribution:'Maps © <a href="https://hikebikemap.org/">Hike & Bike Map</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>'}),O["Open Sea Map"]=xn.tileLayer("http://tiles.openseamap.org/seamark/{z}/{x}/{y}.png",{maxZoom:18,attribution:'Maps © <a href="https://www.openseamap.org/">OpenSeaMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>'}),O["GSI Map (Japan)"]=xn.tileLayer("https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png",{maxZoom:18,attribution:'© <a href="https://maps.gsi.go.jp/development/ichiran.html" target="_blank">国土地理院</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>'}),d){case"OSM1":{O["Open Street Map"].addTo(this.map);break}case"OSM2":{O["Thunderforest - Cycle"].addTo(this.map);break}case"OSM3":{O["Thunderforest - Outdoors"].addTo(this.map);break}case"OSM4":{O["Thunderforest - Transport"].addTo(this.map);break}case"OSM5":{O["Thunderforest - Landscape"].addTo(this.map);break}case"OSM7":{O["Humanitarian Map Style"].addTo(this.map);break}case"OSM9":{O["Hike & Bike"].addTo(this.map);break}case"OSM10":{O["Open Sea Map"].addTo(this.map);break}case"OSM11":{O["GSI Map (Japan)"].addTo(this.map);break}default:O["Open Street Map"].addTo(this.map)}xn.control.layers(O,j).addTo(this.map)}AppPolylines(a,d,g,w,b){var Y;if(this.map!=null){var E=Lp.Utils.GetItemFromArray(a,0);if(E!=null){(g==""||g==null)&&(g="https://maps.google.com/mapfiles/kml/pal4/icon25.png");var i=xn.marker(xn.latLng(E),{icon:xn.icon({iconUrl:g,iconSize:[32,32],iconAnchor:[16,16]}),title:(Y=this.lng)==null?void 0:Y.currentPosition});i.addTo(this.map),this.CurrentPositionMarker=i;var O=Lp.Utils.DividePolylinesPoints(a);this.lng,this.EventSelectChart,this.Bounds=a.filter(J=>J!=null),this.CenterMap();for(let J=0;J<O.length;J++){let ae="";J<d.length?ae=d[J]:ae=d[d.length-1];try{let ce=xn.polyline(O[J],{color:ae}).addTo(this.map);this.Polylines.push(ce);let Te=this;this.Polylines[J].on("mousemove",function(be){Te.MoveMarkerToPosition([be.latlng.lat,be.latlng.lng],!0)})}catch{}}if(w!=""){let J=a[0];J!=null&&xn.marker(xn.latLng(J),{icon:xn.icon({iconUrl:w+"",iconSize:[32,32],iconAnchor:[16,16]}),title:"Start"}).addTo(this.map)}if(b!=""&&a[a.length-1]!=null){let J=a[a.length-1];if(J!=null){var j=xn.marker(xn.latLng(J),{icon:xn.icon({iconUrl:b+"",iconSize:[32,32],iconAnchor:[16,16]}),title:"End"});j.addTo(this.map)}}}}}SetCurrentGPSPosition(a,d,g){this.CurrentGPSPositionMarker==null?(d==""&&(d="https://maps.google.com/mapfiles/kml/pal4/icon25.png"),this.map!=null&&(this.CurrentGPSPositionMarker=xn.marker(a,{icon:xn.icon({iconUrl:d,iconSize:[32,32],iconAnchor:[16,16]})}).addTo(this.map).bindPopup(g.currentPosition).openPopup())):this.CurrentGPSPositionMarker.setLatLng(a),this.Bounds.push(a),this.CenterMap()}AddWaypoints(a,d){var g=xn.icon({iconUrl:"https://maps.google.com/mapfiles/ms/micons/flag.png",iconSize:[32,32],iconAnchor:[16,16]});d!=""&&(g=xn.icon({iconUrl:"waypointIcon",iconSize:[32,32],iconAnchor:[16,16]}));for(let j=0;j<a.length;j++){var w=a[j];this.Bounds.push([w.lat,w.lon]);var b=w.lat,E=w.lon;w.sym,w.type,w.img&&(g.iconUrl=w.img+"");var i=xn.marker([b,E],{icon:g}),O="";w.name==""?O="<div>"+unescape(w.desc)+"</div>":O="<div><b>"+w.name+"</b><br />"+unescape(w.desc)+"</div>",O+="<br /><p><a href='https://maps.google.com?daddr="+b+","+E+"' target='_blank'>Itinéraire</a></p>",this.map!=null&&i.addTo(this.map).bindPopup(O)}this.CenterMap()}MoveMarkerToPosition(a,d){this.CurrentPositionMarker!=null&&(this.CurrentPositionMarker.setLatLng(a),this.lng&&this.CurrentPositionMarker.setTooltipContent(this.lng.currentPosition),d==!0&&this.EventSelectChart&&this.EventSelectChart(a))}CenterMap(){var g;try{if(this.Bounds&&this.Bounds.length>0){let w={minLat:Number.POSITIVE_INFINITY,maxLat:Number.NEGATIVE_INFINITY,minLng:Number.POSITIVE_INFINITY,maxLng:Number.NEGATIVE_INFINITY};this.Bounds.forEach(b=>{if(!Array.isArray(b)||b.length!==2)throw new Error("Each coordinate must be an array with [latitude, longitude].");const[E,i]=b;w.minLat=Math.min(w.minLat,E),w.maxLat=Math.max(w.maxLat,E),w.minLng=Math.min(w.minLng,i),w.maxLng=Math.max(w.maxLng,i)});var a=new xn.LatLng(w.minLat,w.minLng),d=new xn.LatLng(w.maxLat,w.maxLng);(g=this.map)==null||g.fitBounds(new xn.LatLngBounds(a,d))}}catch(w){console.log(w)}}AddPhotos(a){for(const d of a){let g=xn.marker(d,{icon:xn.divIcon(xn.extend({html:'<div style="background-image: url('+d.thumbnail+');"></div>',className:"leaflet-marker-photo"},d,{iconSize:[40,40]})),title:d.caption||""});g.bindPopup('<img src="'+d.url+'" /></a><p>'+d.name+"</p>",{minWidth:500}),g.addTo(this.map)}}}var Xx={};Object.defineProperty(Xx,"__esModule",{value:!0});class $h{constructor(a,d){this.styles=a||$h.DEFAULT_STYLES;const g=typeof d=="string"?d:d?d.defaultStyle:void 0;this.defaultStyle=g||$h.DEFAULT_STYLE,this.onDocumentClick=this.onDocumentClick.bind(this),this.events=typeof d!="string"&&d?d.eventListeners:void 0}getDefaultPosition(){return"top-right"}onAdd(a){this.map=a,this.controlContainer=document.createElement("div"),this.controlContainer.classList.add("mapboxgl-ctrl"),this.controlContainer.classList.add("mapboxgl-ctrl-group"),this.mapStyleContainer=document.createElement("div"),this.styleButton=document.createElement("button"),this.styleButton.type="button",this.mapStyleContainer.classList.add("mapboxgl-style-list");for(const d of this.styles){const g=document.createElement("button");g.type="button",g.innerText=d.title,g.classList.add(d.title.replace(/[^a-z0-9-]/gi,"_")),g.dataset.uri=JSON.stringify(d.uri),g.addEventListener("click",w=>{const b=w.srcElement;if(this.closeModal(),b.classList.contains("active")||this.events&&this.events.onOpen&&this.events.onOpen(w))return;const E=JSON.parse(b.dataset.uri);this.map.setStyle(E);const i=this.mapStyleContainer.getElementsByClassName("active");for(;i[0];)i[0].classList.remove("active");b.classList.add("active"),this.events&&this.events.onChange&&this.events.onChange(w,E)}),d.title===this.defaultStyle&&g.classList.add("active"),this.mapStyleContainer.appendChild(g)}return this.styleButton.classList.add("mapboxgl-ctrl-icon"),this.styleButton.classList.add("mapboxgl-style-switcher"),this.styleButton.addEventListener("click",d=>{this.events&&this.events.onSelect&&this.events.onSelect(d)||this.openModal()}),document.addEventListener("click",this.onDocumentClick),this.controlContainer.appendChild(this.styleButton),this.controlContainer.appendChild(this.mapStyleContainer),this.controlContainer}onRemove(){!this.controlContainer||!this.controlContainer.parentNode||!this.map||!this.styleButton||(this.styleButton.removeEventListener("click",this.onDocumentClick),this.controlContainer.parentNode.removeChild(this.controlContainer),document.removeEventListener("click",this.onDocumentClick),this.map=void 0)}closeModal(){this.mapStyleContainer&&this.styleButton&&(this.mapStyleContainer.style.display="none",this.styleButton.style.display="block")}openModal(){this.mapStyleContainer&&this.styleButton&&(this.mapStyleContainer.style.display="block",this.styleButton.style.display="none")}onDocumentClick(a){this.controlContainer&&!this.controlContainer.contains(a.target)&&this.closeModal()}}$h.DEFAULT_STYLE="Streets",$h.DEFAULT_STYLES=[{title:"Dark",uri:"mapbox://styles/mapbox/dark-v10"},{title:"Light",uri:"mapbox://styles/mapbox/light-v10"},{title:"Outdoors",uri:"mapbox://styles/mapbox/outdoors-v11"},{title:"Satellite",uri:"mapbox://styles/mapbox/satellite-streets-v11"},{title:"Streets",uri:"mapbox://styles/mapbox/streets-v11"}];var BE=Xx.MapboxStyleSwitcherControl=$h,Yx={exports:{}};(function(m,a){(function(d,g){m.exports=g()})(zp,function(){var d,g,w;function b(i,O){if(!d)d=O;else if(!g)g=O;else{var j="self.onerror = function() { console.error('An error occurred while parsing the WebWorker bundle. This is most likely due to improper transpilation by Babel; please see https://docs.mapbox.com/mapbox-gl-js/guides/install/#transpiling'); }; var sharedChunk = {}; ("+d+")(sharedChunk); ("+g+")(sharedChunk); self.onerror = null;",Y={};d(Y),w=O(Y),typeof window<"u"&&window&&window.URL&&window.URL.createObjectURL&&(w.workerUrl=window.URL.createObjectURL(new Blob([j],{type:"text/javascript"})))}}b(["exports"],function(i){function O(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var j,Y={},J={};function ae(){if(j)return J;j=1,Object.defineProperty(J,"__esModule",{value:!0}),J.setMatrixArrayType=function(u){J.ARRAY_TYPE=e=u},J.toRadian=function(u){return u*o},J.equals=function(u,l){return Math.abs(u-l)<=r*Math.max(1,Math.abs(u),Math.abs(l))},J.RANDOM=J.ARRAY_TYPE=J.EPSILON=void 0;var r=1e-6;J.EPSILON=r;var e=typeof Float32Array<"u"?Float32Array:Array;J.ARRAY_TYPE=e;var n=Math.random;J.RANDOM=n;var o=Math.PI/180;return Math.hypot||(Math.hypot=function(){for(var u=0,l=arguments.length;l--;)u+=arguments[l]*arguments[l];return Math.sqrt(u)}),J}var ce,Te={};function be(){if(ce)return Te;function r(l){return r=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(f){return typeof f}:function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},r(l)}ce=1,Object.defineProperty(Te,"__esModule",{value:!0}),Te.create=function(){var l=new e.ARRAY_TYPE(4);return e.ARRAY_TYPE!=Float32Array&&(l[1]=0,l[2]=0),l[0]=1,l[3]=1,l},Te.clone=function(l){var f=new e.ARRAY_TYPE(4);return f[0]=l[0],f[1]=l[1],f[2]=l[2],f[3]=l[3],f},Te.copy=function(l,f){return l[0]=f[0],l[1]=f[1],l[2]=f[2],l[3]=f[3],l},Te.identity=function(l){return l[0]=1,l[1]=0,l[2]=0,l[3]=1,l},Te.fromValues=function(l,f,v,S){var D=new e.ARRAY_TYPE(4);return D[0]=l,D[1]=f,D[2]=v,D[3]=S,D},Te.set=function(l,f,v,S,D){return l[0]=f,l[1]=v,l[2]=S,l[3]=D,l},Te.transpose=function(l,f){if(l===f){var v=f[1];l[1]=f[2],l[2]=v}else l[0]=f[0],l[1]=f[2],l[2]=f[1],l[3]=f[3];return l},Te.invert=function(l,f){var v=f[0],S=f[1],D=f[2],x=f[3],P=v*x-D*S;return P?(l[0]=x*(P=1/P),l[1]=-S*P,l[2]=-D*P,l[3]=v*P,l):null},Te.adjoint=function(l,f){var v=f[0];return l[0]=f[3],l[1]=-f[1],l[2]=-f[2],l[3]=v,l},Te.determinant=function(l){return l[0]*l[3]-l[2]*l[1]},Te.multiply=o,Te.rotate=function(l,f,v){var S=f[0],D=f[1],x=f[2],P=f[3],I=Math.sin(v),M=Math.cos(v);return l[0]=S*M+x*I,l[1]=D*M+P*I,l[2]=S*-I+x*M,l[3]=D*-I+P*M,l},Te.scale=function(l,f,v){var S=f[1],D=f[2],x=f[3],P=v[0],I=v[1];return l[0]=f[0]*P,l[1]=S*P,l[2]=D*I,l[3]=x*I,l},Te.fromRotation=function(l,f){var v=Math.sin(f),S=Math.cos(f);return l[0]=S,l[1]=v,l[2]=-v,l[3]=S,l},Te.fromScaling=function(l,f){return l[0]=f[0],l[1]=0,l[2]=0,l[3]=f[1],l},Te.str=function(l){return"mat2("+l[0]+", "+l[1]+", "+l[2]+", "+l[3]+")"},Te.frob=function(l){return Math.hypot(l[0],l[1],l[2],l[3])},Te.LDU=function(l,f,v,S){return l[2]=S[2]/S[0],v[0]=S[0],v[1]=S[1],v[3]=S[3]-l[2]*v[1],[l,f,v]},Te.add=function(l,f,v){return l[0]=f[0]+v[0],l[1]=f[1]+v[1],l[2]=f[2]+v[2],l[3]=f[3]+v[3],l},Te.subtract=u,Te.exactEquals=function(l,f){return l[0]===f[0]&&l[1]===f[1]&&l[2]===f[2]&&l[3]===f[3]},Te.equals=function(l,f){var v=l[0],S=l[1],D=l[2],x=l[3],P=f[0],I=f[1],M=f[2],C=f[3];return Math.abs(v-P)<=e.EPSILON*Math.max(1,Math.abs(v),Math.abs(P))&&Math.abs(S-I)<=e.EPSILON*Math.max(1,Math.abs(S),Math.abs(I))&&Math.abs(D-M)<=e.EPSILON*Math.max(1,Math.abs(D),Math.abs(M))&&Math.abs(x-C)<=e.EPSILON*Math.max(1,Math.abs(x),Math.abs(C))},Te.multiplyScalar=function(l,f,v){return l[0]=f[0]*v,l[1]=f[1]*v,l[2]=f[2]*v,l[3]=f[3]*v,l},Te.multiplyScalarAndAdd=function(l,f,v,S){return l[0]=f[0]+v[0]*S,l[1]=f[1]+v[1]*S,l[2]=f[2]+v[2]*S,l[3]=f[3]+v[3]*S,l},Te.sub=Te.mul=void 0;var e=function(l,f){if(l&&l.__esModule)return l;if(l===null||r(l)!=="object"&&typeof l!="function")return{default:l};var v=n(void 0);if(v&&v.has(l))return v.get(l);var S={},D=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var x in l)if(x!=="default"&&Object.prototype.hasOwnProperty.call(l,x)){var P=D?Object.getOwnPropertyDescriptor(l,x):null;P&&(P.get||P.set)?Object.defineProperty(S,x,P):S[x]=l[x]}return S.default=l,v&&v.set(l,S),S}(ae());function n(l){if(typeof WeakMap!="function")return null;var f=new WeakMap,v=new WeakMap;return(n=function(S){return S?v:f})(l)}function o(l,f,v){var S=f[0],D=f[1],x=f[2],P=f[3],I=v[0],M=v[1],C=v[2],k=v[3];return l[0]=S*I+x*M,l[1]=D*I+P*M,l[2]=S*C+x*k,l[3]=D*C+P*k,l}function u(l,f,v){return l[0]=f[0]-v[0],l[1]=f[1]-v[1],l[2]=f[2]-v[2],l[3]=f[3]-v[3],l}return Te.mul=o,Te.sub=u,Te}var Ze,je={};function ot(){if(Ze)return je;function r(l){return r=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(f){return typeof f}:function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},r(l)}Ze=1,Object.defineProperty(je,"__esModule",{value:!0}),je.create=function(){var l=new e.ARRAY_TYPE(6);return e.ARRAY_TYPE!=Float32Array&&(l[1]=0,l[2]=0,l[4]=0,l[5]=0),l[0]=1,l[3]=1,l},je.clone=function(l){var f=new e.ARRAY_TYPE(6);return f[0]=l[0],f[1]=l[1],f[2]=l[2],f[3]=l[3],f[4]=l[4],f[5]=l[5],f},je.copy=function(l,f){return l[0]=f[0],l[1]=f[1],l[2]=f[2],l[3]=f[3],l[4]=f[4],l[5]=f[5],l},je.identity=function(l){return l[0]=1,l[1]=0,l[2]=0,l[3]=1,l[4]=0,l[5]=0,l},je.fromValues=function(l,f,v,S,D,x){var P=new e.ARRAY_TYPE(6);return P[0]=l,P[1]=f,P[2]=v,P[3]=S,P[4]=D,P[5]=x,P},je.set=function(l,f,v,S,D,x,P){return l[0]=f,l[1]=v,l[2]=S,l[3]=D,l[4]=x,l[5]=P,l},je.invert=function(l,f){var v=f[0],S=f[1],D=f[2],x=f[3],P=f[4],I=f[5],M=v*x-S*D;return M?(l[0]=x*(M=1/M),l[1]=-S*M,l[2]=-D*M,l[3]=v*M,l[4]=(D*I-x*P)*M,l[5]=(S*P-v*I)*M,l):null},je.determinant=function(l){return l[0]*l[3]-l[1]*l[2]},je.multiply=o,je.rotate=function(l,f,v){var S=f[0],D=f[1],x=f[2],P=f[3],I=f[4],M=f[5],C=Math.sin(v),k=Math.cos(v);return l[0]=S*k+x*C,l[1]=D*k+P*C,l[2]=S*-C+x*k,l[3]=D*-C+P*k,l[4]=I,l[5]=M,l},je.scale=function(l,f,v){var S=f[1],D=f[2],x=f[3],P=f[4],I=f[5],M=v[0],C=v[1];return l[0]=f[0]*M,l[1]=S*M,l[2]=D*C,l[3]=x*C,l[4]=P,l[5]=I,l},je.translate=function(l,f,v){var S=f[0],D=f[1],x=f[2],P=f[3],I=f[4],M=f[5],C=v[0],k=v[1];return l[0]=S,l[1]=D,l[2]=x,l[3]=P,l[4]=S*C+x*k+I,l[5]=D*C+P*k+M,l},je.fromRotation=function(l,f){var v=Math.sin(f),S=Math.cos(f);return l[0]=S,l[1]=v,l[2]=-v,l[3]=S,l[4]=0,l[5]=0,l},je.fromScaling=function(l,f){return l[0]=f[0],l[1]=0,l[2]=0,l[3]=f[1],l[4]=0,l[5]=0,l},je.fromTranslation=function(l,f){return l[0]=1,l[1]=0,l[2]=0,l[3]=1,l[4]=f[0],l[5]=f[1],l},je.str=function(l){return"mat2d("+l[0]+", "+l[1]+", "+l[2]+", "+l[3]+", "+l[4]+", "+l[5]+")"},je.frob=function(l){return Math.hypot(l[0],l[1],l[2],l[3],l[4],l[5],1)},je.add=function(l,f,v){return l[0]=f[0]+v[0],l[1]=f[1]+v[1],l[2]=f[2]+v[2],l[3]=f[3]+v[3],l[4]=f[4]+v[4],l[5]=f[5]+v[5],l},je.subtract=u,je.multiplyScalar=function(l,f,v){return l[0]=f[0]*v,l[1]=f[1]*v,l[2]=f[2]*v,l[3]=f[3]*v,l[4]=f[4]*v,l[5]=f[5]*v,l},je.multiplyScalarAndAdd=function(l,f,v,S){return l[0]=f[0]+v[0]*S,l[1]=f[1]+v[1]*S,l[2]=f[2]+v[2]*S,l[3]=f[3]+v[3]*S,l[4]=f[4]+v[4]*S,l[5]=f[5]+v[5]*S,l},je.exactEquals=function(l,f){return l[0]===f[0]&&l[1]===f[1]&&l[2]===f[2]&&l[3]===f[3]&&l[4]===f[4]&&l[5]===f[5]},je.equals=function(l,f){var v=l[0],S=l[1],D=l[2],x=l[3],P=l[4],I=l[5],M=f[0],C=f[1],k=f[2],V=f[3],U=f[4],q=f[5];return Math.abs(v-M)<=e.EPSILON*Math.max(1,Math.abs(v),Math.abs(M))&&Math.abs(S-C)<=e.EPSILON*Math.max(1,Math.abs(S),Math.abs(C))&&Math.abs(D-k)<=e.EPSILON*Math.max(1,Math.abs(D),Math.abs(k))&&Math.abs(x-V)<=e.EPSILON*Math.max(1,Math.abs(x),Math.abs(V))&&Math.abs(P-U)<=e.EPSILON*Math.max(1,Math.abs(P),Math.abs(U))&&Math.abs(I-q)<=e.EPSILON*Math.max(1,Math.abs(I),Math.abs(q))},je.sub=je.mul=void 0;var e=function(l,f){if(l&&l.__esModule)return l;if(l===null||r(l)!=="object"&&typeof l!="function")return{default:l};var v=n(void 0);if(v&&v.has(l))return v.get(l);var S={},D=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var x in l)if(x!=="default"&&Object.prototype.hasOwnProperty.call(l,x)){var P=D?Object.getOwnPropertyDescriptor(l,x):null;P&&(P.get||P.set)?Object.defineProperty(S,x,P):S[x]=l[x]}return S.default=l,v&&v.set(l,S),S}(ae());function n(l){if(typeof WeakMap!="function")return null;var f=new WeakMap,v=new WeakMap;return(n=function(S){return S?v:f})(l)}function o(l,f,v){var S=f[0],D=f[1],x=f[2],P=f[3],I=f[4],M=f[5],C=v[0],k=v[1],V=v[2],U=v[3],q=v[4],$=v[5];return l[0]=S*C+x*k,l[1]=D*C+P*k,l[2]=S*V+x*U,l[3]=D*V+P*U,l[4]=S*q+x*$+I,l[5]=D*q+P*$+M,l}function u(l,f,v){return l[0]=f[0]-v[0],l[1]=f[1]-v[1],l[2]=f[2]-v[2],l[3]=f[3]-v[3],l[4]=f[4]-v[4],l[5]=f[5]-v[5],l}return je.mul=o,je.sub=u,je}var vt,ht={};function gt(){if(vt)return ht;function r(l){return r=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(f){return typeof f}:function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},r(l)}vt=1,Object.defineProperty(ht,"__esModule",{value:!0}),ht.create=function(){var l=new e.ARRAY_TYPE(9);return e.ARRAY_TYPE!=Float32Array&&(l[1]=0,l[2]=0,l[3]=0,l[5]=0,l[6]=0,l[7]=0),l[0]=1,l[4]=1,l[8]=1,l},ht.fromMat4=function(l,f){return l[0]=f[0],l[1]=f[1],l[2]=f[2],l[3]=f[4],l[4]=f[5],l[5]=f[6],l[6]=f[8],l[7]=f[9],l[8]=f[10],l},ht.clone=function(l){var f=new e.ARRAY_TYPE(9);return f[0]=l[0],f[1]=l[1],f[2]=l[2],f[3]=l[3],f[4]=l[4],f[5]=l[5],f[6]=l[6],f[7]=l[7],f[8]=l[8],f},ht.copy=function(l,f){return l[0]=f[0],l[1]=f[1],l[2]=f[2],l[3]=f[3],l[4]=f[4],l[5]=f[5],l[6]=f[6],l[7]=f[7],l[8]=f[8],l},ht.fromValues=function(l,f,v,S,D,x,P,I,M){var C=new e.ARRAY_TYPE(9);return C[0]=l,C[1]=f,C[2]=v,C[3]=S,C[4]=D,C[5]=x,C[6]=P,C[7]=I,C[8]=M,C},ht.set=function(l,f,v,S,D,x,P,I,M,C){return l[0]=f,l[1]=v,l[2]=S,l[3]=D,l[4]=x,l[5]=P,l[6]=I,l[7]=M,l[8]=C,l},ht.identity=function(l){return l[0]=1,l[1]=0,l[2]=0,l[3]=0,l[4]=1,l[5]=0,l[6]=0,l[7]=0,l[8]=1,l},ht.transpose=function(l,f){if(l===f){var v=f[1],S=f[2],D=f[5];l[1]=f[3],l[2]=f[6],l[3]=v,l[5]=f[7],l[6]=S,l[7]=D}else l[0]=f[0],l[1]=f[3],l[2]=f[6],l[3]=f[1],l[4]=f[4],l[5]=f[7],l[6]=f[2],l[7]=f[5],l[8]=f[8];return l},ht.invert=function(l,f){var v=f[0],S=f[1],D=f[2],x=f[3],P=f[4],I=f[5],M=f[6],C=f[7],k=f[8],V=k*P-I*C,U=-k*x+I*M,q=C*x-P*M,$=v*V+S*U+D*q;return $?(l[0]=V*($=1/$),l[1]=(-k*S+D*C)*$,l[2]=(I*S-D*P)*$,l[3]=U*$,l[4]=(k*v-D*M)*$,l[5]=(-I*v+D*x)*$,l[6]=q*$,l[7]=(-C*v+S*M)*$,l[8]=(P*v-S*x)*$,l):null},ht.adjoint=function(l,f){var v=f[0],S=f[1],D=f[2],x=f[3],P=f[4],I=f[5],M=f[6],C=f[7],k=f[8];return l[0]=P*k-I*C,l[1]=D*C-S*k,l[2]=S*I-D*P,l[3]=I*M-x*k,l[4]=v*k-D*M,l[5]=D*x-v*I,l[6]=x*C-P*M,l[7]=S*M-v*C,l[8]=v*P-S*x,l},ht.determinant=function(l){var f=l[3],v=l[4],S=l[5],D=l[6],x=l[7],P=l[8];return l[0]*(P*v-S*x)+l[1]*(-P*f+S*D)+l[2]*(x*f-v*D)},ht.multiply=o,ht.translate=function(l,f,v){var S=f[0],D=f[1],x=f[2],P=f[3],I=f[4],M=f[5],C=f[6],k=f[7],V=f[8],U=v[0],q=v[1];return l[0]=S,l[1]=D,l[2]=x,l[3]=P,l[4]=I,l[5]=M,l[6]=U*S+q*P+C,l[7]=U*D+q*I+k,l[8]=U*x+q*M+V,l},ht.rotate=function(l,f,v){var S=f[0],D=f[1],x=f[2],P=f[3],I=f[4],M=f[5],C=f[6],k=f[7],V=f[8],U=Math.sin(v),q=Math.cos(v);return l[0]=q*S+U*P,l[1]=q*D+U*I,l[2]=q*x+U*M,l[3]=q*P-U*S,l[4]=q*I-U*D,l[5]=q*M-U*x,l[6]=C,l[7]=k,l[8]=V,l},ht.scale=function(l,f,v){var S=v[0],D=v[1];return l[0]=S*f[0],l[1]=S*f[1],l[2]=S*f[2],l[3]=D*f[3],l[4]=D*f[4],l[5]=D*f[5],l[6]=f[6],l[7]=f[7],l[8]=f[8],l},ht.fromTranslation=function(l,f){return l[0]=1,l[1]=0,l[2]=0,l[3]=0,l[4]=1,l[5]=0,l[6]=f[0],l[7]=f[1],l[8]=1,l},ht.fromRotation=function(l,f){var v=Math.sin(f),S=Math.cos(f);return l[0]=S,l[1]=v,l[2]=0,l[3]=-v,l[4]=S,l[5]=0,l[6]=0,l[7]=0,l[8]=1,l},ht.fromScaling=function(l,f){return l[0]=f[0],l[1]=0,l[2]=0,l[3]=0,l[4]=f[1],l[5]=0,l[6]=0,l[7]=0,l[8]=1,l},ht.fromMat2d=function(l,f){return l[0]=f[0],l[1]=f[1],l[2]=0,l[3]=f[2],l[4]=f[3],l[5]=0,l[6]=f[4],l[7]=f[5],l[8]=1,l},ht.fromQuat=function(l,f){var v=f[0],S=f[1],D=f[2],x=f[3],P=v+v,I=S+S,M=D+D,C=v*P,k=S*P,V=S*I,U=D*P,q=D*I,$=D*M,H=x*P,K=x*I,Q=x*M;return l[0]=1-V-$,l[3]=k-Q,l[6]=U+K,l[1]=k+Q,l[4]=1-C-$,l[7]=q-H,l[2]=U-K,l[5]=q+H,l[8]=1-C-V,l},ht.normalFromMat4=function(l,f){var v=f[0],S=f[1],D=f[2],x=f[3],P=f[4],I=f[5],M=f[6],C=f[7],k=f[8],V=f[9],U=f[10],q=f[11],$=f[12],H=f[13],K=f[14],Q=f[15],ie=v*I-S*P,fe=v*M-D*P,de=v*C-x*P,ue=S*M-D*I,Se=S*C-x*I,me=D*C-x*M,Ee=k*H-V*$,ze=k*K-U*$,Ie=k*Q-q*$,Re=V*K-U*H,Ve=V*Q-q*H,Ue=U*Q-q*K,Fe=ie*Ue-fe*Ve+de*Re+ue*Ie-Se*ze+me*Ee;return Fe?(l[0]=(I*Ue-M*Ve+C*Re)*(Fe=1/Fe),l[1]=(M*Ie-P*Ue-C*ze)*Fe,l[2]=(P*Ve-I*Ie+C*Ee)*Fe,l[3]=(D*Ve-S*Ue-x*Re)*Fe,l[4]=(v*Ue-D*Ie+x*ze)*Fe,l[5]=(S*Ie-v*Ve-x*Ee)*Fe,l[6]=(H*me-K*Se+Q*ue)*Fe,l[7]=(K*de-$*me-Q*fe)*Fe,l[8]=($*Se-H*de+Q*ie)*Fe,l):null},ht.projection=function(l,f,v){return l[0]=2/f,l[1]=0,l[2]=0,l[3]=0,l[4]=-2/v,l[5]=0,l[6]=-1,l[7]=1,l[8]=1,l},ht.str=function(l){return"mat3("+l[0]+", "+l[1]+", "+l[2]+", "+l[3]+", "+l[4]+", "+l[5]+", "+l[6]+", "+l[7]+", "+l[8]+")"},ht.frob=function(l){return Math.hypot(l[0],l[1],l[2],l[3],l[4],l[5],l[6],l[7],l[8])},ht.add=function(l,f,v){return l[0]=f[0]+v[0],l[1]=f[1]+v[1],l[2]=f[2]+v[2],l[3]=f[3]+v[3],l[4]=f[4]+v[4],l[5]=f[5]+v[5],l[6]=f[6]+v[6],l[7]=f[7]+v[7],l[8]=f[8]+v[8],l},ht.subtract=u,ht.multiplyScalar=function(l,f,v){return l[0]=f[0]*v,l[1]=f[1]*v,l[2]=f[2]*v,l[3]=f[3]*v,l[4]=f[4]*v,l[5]=f[5]*v,l[6]=f[6]*v,l[7]=f[7]*v,l[8]=f[8]*v,l},ht.multiplyScalarAndAdd=function(l,f,v,S){return l[0]=f[0]+v[0]*S,l[1]=f[1]+v[1]*S,l[2]=f[2]+v[2]*S,l[3]=f[3]+v[3]*S,l[4]=f[4]+v[4]*S,l[5]=f[5]+v[5]*S,l[6]=f[6]+v[6]*S,l[7]=f[7]+v[7]*S,l[8]=f[8]+v[8]*S,l},ht.exactEquals=function(l,f){return l[0]===f[0]&&l[1]===f[1]&&l[2]===f[2]&&l[3]===f[3]&&l[4]===f[4]&&l[5]===f[5]&&l[6]===f[6]&&l[7]===f[7]&&l[8]===f[8]},ht.equals=function(l,f){var v=l[0],S=l[1],D=l[2],x=l[3],P=l[4],I=l[5],M=l[6],C=l[7],k=l[8],V=f[0],U=f[1],q=f[2],$=f[3],H=f[4],K=f[5],Q=f[6],ie=f[7],fe=f[8];return Math.abs(v-V)<=e.EPSILON*Math.max(1,Math.abs(v),Math.abs(V))&&Math.abs(S-U)<=e.EPSILON*Math.max(1,Math.abs(S),Math.abs(U))&&Math.abs(D-q)<=e.EPSILON*Math.max(1,Math.abs(D),Math.abs(q))&&Math.abs(x-$)<=e.EPSILON*Math.max(1,Math.abs(x),Math.abs($))&&Math.abs(P-H)<=e.EPSILON*Math.max(1,Math.abs(P),Math.abs(H))&&Math.abs(I-K)<=e.EPSILON*Math.max(1,Math.abs(I),Math.abs(K))&&Math.abs(M-Q)<=e.EPSILON*Math.max(1,Math.abs(M),Math.abs(Q))&&Math.abs(C-ie)<=e.EPSILON*Math.max(1,Math.abs(C),Math.abs(ie))&&Math.abs(k-fe)<=e.EPSILON*Math.max(1,Math.abs(k),Math.abs(fe))},ht.sub=ht.mul=void 0;var e=function(l,f){if(l&&l.__esModule)return l;if(l===null||r(l)!=="object"&&typeof l!="function")return{default:l};var v=n(void 0);if(v&&v.has(l))return v.get(l);var S={},D=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var x in l)if(x!=="default"&&Object.prototype.hasOwnProperty.call(l,x)){var P=D?Object.getOwnPropertyDescriptor(l,x):null;P&&(P.get||P.set)?Object.defineProperty(S,x,P):S[x]=l[x]}return S.default=l,v&&v.set(l,S),S}(ae());function n(l){if(typeof WeakMap!="function")return null;var f=new WeakMap,v=new WeakMap;return(n=function(S){return S?v:f})(l)}function o(l,f,v){var S=f[0],D=f[1],x=f[2],P=f[3],I=f[4],M=f[5],C=f[6],k=f[7],V=f[8],U=v[0],q=v[1],$=v[2],H=v[3],K=v[4],Q=v[5],ie=v[6],fe=v[7],de=v[8];return l[0]=U*S+q*P+$*C,l[1]=U*D+q*I+$*k,l[2]=U*x+q*M+$*V,l[3]=H*S+K*P+Q*C,l[4]=H*D+K*I+Q*k,l[5]=H*x+K*M+Q*V,l[6]=ie*S+fe*P+de*C,l[7]=ie*D+fe*I+de*k,l[8]=ie*x+fe*M+de*V,l}function u(l,f,v){return l[0]=f[0]-v[0],l[1]=f[1]-v[1],l[2]=f[2]-v[2],l[3]=f[3]-v[3],l[4]=f[4]-v[4],l[5]=f[5]-v[5],l[6]=f[6]-v[6],l[7]=f[7]-v[7],l[8]=f[8]-v[8],l}return ht.mul=o,ht.sub=u,ht}var Vt,pt={};function Gt(){if(Vt)return pt;function r(x){return r=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(P){return typeof P}:function(P){return P&&typeof Symbol=="function"&&P.constructor===Symbol&&P!==Symbol.prototype?"symbol":typeof P},r(x)}Vt=1,Object.defineProperty(pt,"__esModule",{value:!0}),pt.create=function(){var x=new e.ARRAY_TYPE(16);return e.ARRAY_TYPE!=Float32Array&&(x[1]=0,x[2]=0,x[3]=0,x[4]=0,x[6]=0,x[7]=0,x[8]=0,x[9]=0,x[11]=0,x[12]=0,x[13]=0,x[14]=0),x[0]=1,x[5]=1,x[10]=1,x[15]=1,x},pt.clone=function(x){var P=new e.ARRAY_TYPE(16);return P[0]=x[0],P[1]=x[1],P[2]=x[2],P[3]=x[3],P[4]=x[4],P[5]=x[5],P[6]=x[6],P[7]=x[7],P[8]=x[8],P[9]=x[9],P[10]=x[10],P[11]=x[11],P[12]=x[12],P[13]=x[13],P[14]=x[14],P[15]=x[15],P},pt.copy=function(x,P){return x[0]=P[0],x[1]=P[1],x[2]=P[2],x[3]=P[3],x[4]=P[4],x[5]=P[5],x[6]=P[6],x[7]=P[7],x[8]=P[8],x[9]=P[9],x[10]=P[10],x[11]=P[11],x[12]=P[12],x[13]=P[13],x[14]=P[14],x[15]=P[15],x},pt.fromValues=function(x,P,I,M,C,k,V,U,q,$,H,K,Q,ie,fe,de){var ue=new e.ARRAY_TYPE(16);return ue[0]=x,ue[1]=P,ue[2]=I,ue[3]=M,ue[4]=C,ue[5]=k,ue[6]=V,ue[7]=U,ue[8]=q,ue[9]=$,ue[10]=H,ue[11]=K,ue[12]=Q,ue[13]=ie,ue[14]=fe,ue[15]=de,ue},pt.set=function(x,P,I,M,C,k,V,U,q,$,H,K,Q,ie,fe,de,ue){return x[0]=P,x[1]=I,x[2]=M,x[3]=C,x[4]=k,x[5]=V,x[6]=U,x[7]=q,x[8]=$,x[9]=H,x[10]=K,x[11]=Q,x[12]=ie,x[13]=fe,x[14]=de,x[15]=ue,x},pt.identity=o,pt.transpose=function(x,P){if(x===P){var I=P[1],M=P[2],C=P[3],k=P[6],V=P[7],U=P[11];x[1]=P[4],x[2]=P[8],x[3]=P[12],x[4]=I,x[6]=P[9],x[7]=P[13],x[8]=M,x[9]=k,x[11]=P[14],x[12]=C,x[13]=V,x[14]=U}else x[0]=P[0],x[1]=P[4],x[2]=P[8],x[3]=P[12],x[4]=P[1],x[5]=P[5],x[6]=P[9],x[7]=P[13],x[8]=P[2],x[9]=P[6],x[10]=P[10],x[11]=P[14],x[12]=P[3],x[13]=P[7],x[14]=P[11],x[15]=P[15];return x},pt.invert=function(x,P){var I=P[0],M=P[1],C=P[2],k=P[3],V=P[4],U=P[5],q=P[6],$=P[7],H=P[8],K=P[9],Q=P[10],ie=P[11],fe=P[12],de=P[13],ue=P[14],Se=P[15],me=I*U-M*V,Ee=I*q-C*V,ze=I*$-k*V,Ie=M*q-C*U,Re=M*$-k*U,Ve=C*$-k*q,Ue=H*de-K*fe,Fe=H*ue-Q*fe,et=H*Se-ie*fe,dt=K*ue-Q*de,tt=K*Se-ie*de,Mt=Q*Se-ie*ue,wt=me*Mt-Ee*tt+ze*dt+Ie*et-Re*Fe+Ve*Ue;return wt?(x[0]=(U*Mt-q*tt+$*dt)*(wt=1/wt),x[1]=(C*tt-M*Mt-k*dt)*wt,x[2]=(de*Ve-ue*Re+Se*Ie)*wt,x[3]=(Q*Re-K*Ve-ie*Ie)*wt,x[4]=(q*et-V*Mt-$*Fe)*wt,x[5]=(I*Mt-C*et+k*Fe)*wt,x[6]=(ue*ze-fe*Ve-Se*Ee)*wt,x[7]=(H*Ve-Q*ze+ie*Ee)*wt,x[8]=(V*tt-U*et+$*Ue)*wt,x[9]=(M*et-I*tt-k*Ue)*wt,x[10]=(fe*Re-de*ze+Se*me)*wt,x[11]=(K*ze-H*Re-ie*me)*wt,x[12]=(U*Fe-V*dt-q*Ue)*wt,x[13]=(I*dt-M*Fe+C*Ue)*wt,x[14]=(de*Ee-fe*Ie-ue*me)*wt,x[15]=(H*Ie-K*Ee+Q*me)*wt,x):null},pt.adjoint=function(x,P){var I=P[0],M=P[1],C=P[2],k=P[3],V=P[4],U=P[5],q=P[6],$=P[7],H=P[8],K=P[9],Q=P[10],ie=P[11],fe=P[12],de=P[13],ue=P[14],Se=P[15];return x[0]=U*(Q*Se-ie*ue)-K*(q*Se-$*ue)+de*(q*ie-$*Q),x[1]=-(M*(Q*Se-ie*ue)-K*(C*Se-k*ue)+de*(C*ie-k*Q)),x[2]=M*(q*Se-$*ue)-U*(C*Se-k*ue)+de*(C*$-k*q),x[3]=-(M*(q*ie-$*Q)-U*(C*ie-k*Q)+K*(C*$-k*q)),x[4]=-(V*(Q*Se-ie*ue)-H*(q*Se-$*ue)+fe*(q*ie-$*Q)),x[5]=I*(Q*Se-ie*ue)-H*(C*Se-k*ue)+fe*(C*ie-k*Q),x[6]=-(I*(q*Se-$*ue)-V*(C*Se-k*ue)+fe*(C*$-k*q)),x[7]=I*(q*ie-$*Q)-V*(C*ie-k*Q)+H*(C*$-k*q),x[8]=V*(K*Se-ie*de)-H*(U*Se-$*de)+fe*(U*ie-$*K),x[9]=-(I*(K*Se-ie*de)-H*(M*Se-k*de)+fe*(M*ie-k*K)),x[10]=I*(U*Se-$*de)-V*(M*Se-k*de)+fe*(M*$-k*U),x[11]=-(I*(U*ie-$*K)-V*(M*ie-k*K)+H*(M*$-k*U)),x[12]=-(V*(K*ue-Q*de)-H*(U*ue-q*de)+fe*(U*Q-q*K)),x[13]=I*(K*ue-Q*de)-H*(M*ue-C*de)+fe*(M*Q-C*K),x[14]=-(I*(U*ue-q*de)-V*(M*ue-C*de)+fe*(M*q-C*U)),x[15]=I*(U*Q-q*K)-V*(M*Q-C*K)+H*(M*q-C*U),x},pt.determinant=function(x){var P=x[0],I=x[1],M=x[2],C=x[3],k=x[4],V=x[5],U=x[6],q=x[7],$=x[8],H=x[9],K=x[10],Q=x[11],ie=x[12],fe=x[13],de=x[14],ue=x[15];return(P*V-I*k)*(K*ue-Q*de)-(P*U-M*k)*(H*ue-Q*fe)+(P*q-C*k)*(H*de-K*fe)+(I*U-M*V)*($*ue-Q*ie)-(I*q-C*V)*($*de-K*ie)+(M*q-C*U)*($*fe-H*ie)},pt.multiply=u,pt.translate=function(x,P,I){var M,C,k,V,U,q,$,H,K,Q,ie,fe,de=I[0],ue=I[1],Se=I[2];return P===x?(x[12]=P[0]*de+P[4]*ue+P[8]*Se+P[12],x[13]=P[1]*de+P[5]*ue+P[9]*Se+P[13],x[14]=P[2]*de+P[6]*ue+P[10]*Se+P[14],x[15]=P[3]*de+P[7]*ue+P[11]*Se+P[15]):(C=P[1],k=P[2],V=P[3],U=P[4],q=P[5],$=P[6],H=P[7],K=P[8],Q=P[9],ie=P[10],fe=P[11],x[0]=M=P[0],x[1]=C,x[2]=k,x[3]=V,x[4]=U,x[5]=q,x[6]=$,x[7]=H,x[8]=K,x[9]=Q,x[10]=ie,x[11]=fe,x[12]=M*de+U*ue+K*Se+P[12],x[13]=C*de+q*ue+Q*Se+P[13],x[14]=k*de+$*ue+ie*Se+P[14],x[15]=V*de+H*ue+fe*Se+P[15]),x},pt.scale=function(x,P,I){var M=I[0],C=I[1],k=I[2];return x[0]=P[0]*M,x[1]=P[1]*M,x[2]=P[2]*M,x[3]=P[3]*M,x[4]=P[4]*C,x[5]=P[5]*C,x[6]=P[6]*C,x[7]=P[7]*C,x[8]=P[8]*k,x[9]=P[9]*k,x[10]=P[10]*k,x[11]=P[11]*k,x[12]=P[12],x[13]=P[13],x[14]=P[14],x[15]=P[15],x},pt.rotate=function(x,P,I,M){var C,k,V,U,q,$,H,K,Q,ie,fe,de,ue,Se,me,Ee,ze,Ie,Re,Ve,Ue,Fe,et,dt,tt=M[0],Mt=M[1],wt=M[2],At=Math.hypot(tt,Mt,wt);return At<e.EPSILON?null:(tt*=At=1/At,Mt*=At,wt*=At,C=Math.sin(I),k=Math.cos(I),q=P[1],$=P[2],H=P[3],Q=P[5],ie=P[6],fe=P[7],ue=P[9],Se=P[10],me=P[11],Ee=tt*tt*(V=1-k)+k,Re=tt*Mt*V-wt*C,Ve=Mt*Mt*V+k,Ue=wt*Mt*V+tt*C,Fe=tt*wt*V+Mt*C,et=Mt*wt*V-tt*C,dt=wt*wt*V+k,x[0]=(U=P[0])*Ee+(K=P[4])*(ze=Mt*tt*V+wt*C)+(de=P[8])*(Ie=wt*tt*V-Mt*C),x[1]=q*Ee+Q*ze+ue*Ie,x[2]=$*Ee+ie*ze+Se*Ie,x[3]=H*Ee+fe*ze+me*Ie,x[4]=U*Re+K*Ve+de*Ue,x[5]=q*Re+Q*Ve+ue*Ue,x[6]=$*Re+ie*Ve+Se*Ue,x[7]=H*Re+fe*Ve+me*Ue,x[8]=U*Fe+K*et+de*dt,x[9]=q*Fe+Q*et+ue*dt,x[10]=$*Fe+ie*et+Se*dt,x[11]=H*Fe+fe*et+me*dt,P!==x&&(x[12]=P[12],x[13]=P[13],x[14]=P[14],x[15]=P[15]),x)},pt.rotateX=function(x,P,I){var M=Math.sin(I),C=Math.cos(I),k=P[4],V=P[5],U=P[6],q=P[7],$=P[8],H=P[9],K=P[10],Q=P[11];return P!==x&&(x[0]=P[0],x[1]=P[1],x[2]=P[2],x[3]=P[3],x[12]=P[12],x[13]=P[13],x[14]=P[14],x[15]=P[15]),x[4]=k*C+$*M,x[5]=V*C+H*M,x[6]=U*C+K*M,x[7]=q*C+Q*M,x[8]=$*C-k*M,x[9]=H*C-V*M,x[10]=K*C-U*M,x[11]=Q*C-q*M,x},pt.rotateY=function(x,P,I){var M=Math.sin(I),C=Math.cos(I),k=P[0],V=P[1],U=P[2],q=P[3],$=P[8],H=P[9],K=P[10],Q=P[11];return P!==x&&(x[4]=P[4],x[5]=P[5],x[6]=P[6],x[7]=P[7],x[12]=P[12],x[13]=P[13],x[14]=P[14],x[15]=P[15]),x[0]=k*C-$*M,x[1]=V*C-H*M,x[2]=U*C-K*M,x[3]=q*C-Q*M,x[8]=k*M+$*C,x[9]=V*M+H*C,x[10]=U*M+K*C,x[11]=q*M+Q*C,x},pt.rotateZ=function(x,P,I){var M=Math.sin(I),C=Math.cos(I),k=P[0],V=P[1],U=P[2],q=P[3],$=P[4],H=P[5],K=P[6],Q=P[7];return P!==x&&(x[8]=P[8],x[9]=P[9],x[10]=P[10],x[11]=P[11],x[12]=P[12],x[13]=P[13],x[14]=P[14],x[15]=P[15]),x[0]=k*C+$*M,x[1]=V*C+H*M,x[2]=U*C+K*M,x[3]=q*C+Q*M,x[4]=$*C-k*M,x[5]=H*C-V*M,x[6]=K*C-U*M,x[7]=Q*C-q*M,x},pt.fromTranslation=function(x,P){return x[0]=1,x[1]=0,x[2]=0,x[3]=0,x[4]=0,x[5]=1,x[6]=0,x[7]=0,x[8]=0,x[9]=0,x[10]=1,x[11]=0,x[12]=P[0],x[13]=P[1],x[14]=P[2],x[15]=1,x},pt.fromScaling=function(x,P){return x[0]=P[0],x[1]=0,x[2]=0,x[3]=0,x[4]=0,x[5]=P[1],x[6]=0,x[7]=0,x[8]=0,x[9]=0,x[10]=P[2],x[11]=0,x[12]=0,x[13]=0,x[14]=0,x[15]=1,x},pt.fromRotation=function(x,P,I){var M,C,k,V=I[0],U=I[1],q=I[2],$=Math.hypot(V,U,q);return $<e.EPSILON?null:(V*=$=1/$,U*=$,q*=$,M=Math.sin(P),C=Math.cos(P),x[0]=V*V*(k=1-C)+C,x[1]=U*V*k+q*M,x[2]=q*V*k-U*M,x[3]=0,x[4]=V*U*k-q*M,x[5]=U*U*k+C,x[6]=q*U*k+V*M,x[7]=0,x[8]=V*q*k+U*M,x[9]=U*q*k-V*M,x[10]=q*q*k+C,x[11]=0,x[12]=0,x[13]=0,x[14]=0,x[15]=1,x)},pt.fromXRotation=function(x,P){var I=Math.sin(P),M=Math.cos(P);return x[0]=1,x[1]=0,x[2]=0,x[3]=0,x[4]=0,x[5]=M,x[6]=I,x[7]=0,x[8]=0,x[9]=-I,x[10]=M,x[11]=0,x[12]=0,x[13]=0,x[14]=0,x[15]=1,x},pt.fromYRotation=function(x,P){var I=Math.sin(P),M=Math.cos(P);return x[0]=M,x[1]=0,x[2]=-I,x[3]=0,x[4]=0,x[5]=1,x[6]=0,x[7]=0,x[8]=I,x[9]=0,x[10]=M,x[11]=0,x[12]=0,x[13]=0,x[14]=0,x[15]=1,x},pt.fromZRotation=function(x,P){var I=Math.sin(P),M=Math.cos(P);return x[0]=M,x[1]=I,x[2]=0,x[3]=0,x[4]=-I,x[5]=M,x[6]=0,x[7]=0,x[8]=0,x[9]=0,x[10]=1,x[11]=0,x[12]=0,x[13]=0,x[14]=0,x[15]=1,x},pt.fromRotationTranslation=l,pt.fromQuat2=function(x,P){var I=new e.ARRAY_TYPE(3),M=-P[0],C=-P[1],k=-P[2],V=P[3],U=P[4],q=P[5],$=P[6],H=P[7],K=M*M+C*C+k*k+V*V;return K>0?(I[0]=2*(U*V+H*M+q*k-$*C)/K,I[1]=2*(q*V+H*C+$*M-U*k)/K,I[2]=2*($*V+H*k+U*C-q*M)/K):(I[0]=2*(U*V+H*M+q*k-$*C),I[1]=2*(q*V+H*C+$*M-U*k),I[2]=2*($*V+H*k+U*C-q*M)),l(x,P,I),x},pt.getTranslation=function(x,P){return x[0]=P[12],x[1]=P[13],x[2]=P[14],x},pt.getScaling=f,pt.getRotation=function(x,P){var I=new e.ARRAY_TYPE(3);f(I,P);var M=1/I[0],C=1/I[1],k=1/I[2],V=P[0]*M,U=P[1]*C,q=P[2]*k,$=P[4]*M,H=P[5]*C,K=P[6]*k,Q=P[8]*M,ie=P[9]*C,fe=P[10]*k,de=V+H+fe,ue=0;return de>0?(ue=2*Math.sqrt(de+1),x[3]=.25*ue,x[0]=(K-ie)/ue,x[1]=(Q-q)/ue,x[2]=(U-$)/ue):V>H&&V>fe?(ue=2*Math.sqrt(1+V-H-fe),x[3]=(K-ie)/ue,x[0]=.25*ue,x[1]=(U+$)/ue,x[2]=(Q+q)/ue):H>fe?(ue=2*Math.sqrt(1+H-V-fe),x[3]=(Q-q)/ue,x[0]=(U+$)/ue,x[1]=.25*ue,x[2]=(K+ie)/ue):(ue=2*Math.sqrt(1+fe-V-H),x[3]=(U-$)/ue,x[0]=(Q+q)/ue,x[1]=(K+ie)/ue,x[2]=.25*ue),x},pt.fromRotationTranslationScale=function(x,P,I,M){var C=P[0],k=P[1],V=P[2],U=P[3],q=C+C,$=k+k,H=V+V,K=C*q,Q=C*$,ie=C*H,fe=k*$,de=k*H,ue=V*H,Se=U*q,me=U*$,Ee=U*H,ze=M[0],Ie=M[1],Re=M[2];return x[0]=(1-(fe+ue))*ze,x[1]=(Q+Ee)*ze,x[2]=(ie-me)*ze,x[3]=0,x[4]=(Q-Ee)*Ie,x[5]=(1-(K+ue))*Ie,x[6]=(de+Se)*Ie,x[7]=0,x[8]=(ie+me)*Re,x[9]=(de-Se)*Re,x[10]=(1-(K+fe))*Re,x[11]=0,x[12]=I[0],x[13]=I[1],x[14]=I[2],x[15]=1,x},pt.fromRotationTranslationScaleOrigin=function(x,P,I,M,C){var k=P[0],V=P[1],U=P[2],q=P[3],$=k+k,H=V+V,K=U+U,Q=k*$,ie=k*H,fe=k*K,de=V*H,ue=V*K,Se=U*K,me=q*$,Ee=q*H,ze=q*K,Ie=M[0],Re=M[1],Ve=M[2],Ue=C[0],Fe=C[1],et=C[2],dt=(1-(de+Se))*Ie,tt=(ie+ze)*Ie,Mt=(fe-Ee)*Ie,wt=(ie-ze)*Re,At=(1-(Q+Se))*Re,rt=(ue+me)*Re,Ut=(fe+Ee)*Ve,St=(ue-me)*Ve,Nt=(1-(Q+de))*Ve;return x[0]=dt,x[1]=tt,x[2]=Mt,x[3]=0,x[4]=wt,x[5]=At,x[6]=rt,x[7]=0,x[8]=Ut,x[9]=St,x[10]=Nt,x[11]=0,x[12]=I[0]+Ue-(dt*Ue+wt*Fe+Ut*et),x[13]=I[1]+Fe-(tt*Ue+At*Fe+St*et),x[14]=I[2]+et-(Mt*Ue+rt*Fe+Nt*et),x[15]=1,x},pt.fromQuat=function(x,P){var I=P[0],M=P[1],C=P[2],k=P[3],V=I+I,U=M+M,q=C+C,$=I*V,H=M*V,K=M*U,Q=C*V,ie=C*U,fe=C*q,de=k*V,ue=k*U,Se=k*q;return x[0]=1-K-fe,x[1]=H+Se,x[2]=Q-ue,x[3]=0,x[4]=H-Se,x[5]=1-$-fe,x[6]=ie+de,x[7]=0,x[8]=Q+ue,x[9]=ie-de,x[10]=1-$-K,x[11]=0,x[12]=0,x[13]=0,x[14]=0,x[15]=1,x},pt.frustum=function(x,P,I,M,C,k,V){var U=1/(I-P),q=1/(C-M),$=1/(k-V);return x[0]=2*k*U,x[1]=0,x[2]=0,x[3]=0,x[4]=0,x[5]=2*k*q,x[6]=0,x[7]=0,x[8]=(I+P)*U,x[9]=(C+M)*q,x[10]=(V+k)*$,x[11]=-1,x[12]=0,x[13]=0,x[14]=V*k*2*$,x[15]=0,x},pt.perspectiveNO=v,pt.perspectiveZO=function(x,P,I,M,C){var k,V=1/Math.tan(P/2);return x[0]=V/I,x[1]=0,x[2]=0,x[3]=0,x[4]=0,x[5]=V,x[6]=0,x[7]=0,x[8]=0,x[9]=0,x[11]=-1,x[12]=0,x[13]=0,x[15]=0,C!=null&&C!==1/0?(x[10]=C*(k=1/(M-C)),x[14]=C*M*k):(x[10]=-1,x[14]=-M),x},pt.perspectiveFromFieldOfView=function(x,P,I,M){var C=Math.tan(P.upDegrees*Math.PI/180),k=Math.tan(P.downDegrees*Math.PI/180),V=Math.tan(P.leftDegrees*Math.PI/180),U=Math.tan(P.rightDegrees*Math.PI/180),q=2/(V+U),$=2/(C+k);return x[0]=q,x[1]=0,x[2]=0,x[3]=0,x[4]=0,x[5]=$,x[6]=0,x[7]=0,x[8]=-(V-U)*q*.5,x[9]=(C-k)*$*.5,x[10]=M/(I-M),x[11]=-1,x[12]=0,x[13]=0,x[14]=M*I/(I-M),x[15]=0,x},pt.orthoNO=S,pt.orthoZO=function(x,P,I,M,C,k,V){var U=1/(P-I),q=1/(M-C),$=1/(k-V);return x[0]=-2*U,x[1]=0,x[2]=0,x[3]=0,x[4]=0,x[5]=-2*q,x[6]=0,x[7]=0,x[8]=0,x[9]=0,x[10]=$,x[11]=0,x[12]=(P+I)*U,x[13]=(C+M)*q,x[14]=k*$,x[15]=1,x},pt.lookAt=function(x,P,I,M){var C,k,V,U,q,$,H,K,Q,ie,fe=P[0],de=P[1],ue=P[2],Se=M[0],me=M[1],Ee=M[2],ze=I[0],Ie=I[1],Re=I[2];return Math.abs(fe-ze)<e.EPSILON&&Math.abs(de-Ie)<e.EPSILON&&Math.abs(ue-Re)<e.EPSILON?o(x):(H=fe-ze,K=de-Ie,Q=ue-Re,C=me*(Q*=ie=1/Math.hypot(H,K,Q))-Ee*(K*=ie),k=Ee*(H*=ie)-Se*Q,V=Se*K-me*H,(ie=Math.hypot(C,k,V))?(C*=ie=1/ie,k*=ie,V*=ie):(C=0,k=0,V=0),U=K*V-Q*k,q=Q*C-H*V,$=H*k-K*C,(ie=Math.hypot(U,q,$))?(U*=ie=1/ie,q*=ie,$*=ie):(U=0,q=0,$=0),x[0]=C,x[1]=U,x[2]=H,x[3]=0,x[4]=k,x[5]=q,x[6]=K,x[7]=0,x[8]=V,x[9]=$,x[10]=Q,x[11]=0,x[12]=-(C*fe+k*de+V*ue),x[13]=-(U*fe+q*de+$*ue),x[14]=-(H*fe+K*de+Q*ue),x[15]=1,x)},pt.targetTo=function(x,P,I,M){var C=P[0],k=P[1],V=P[2],U=M[0],q=M[1],$=M[2],H=C-I[0],K=k-I[1],Q=V-I[2],ie=H*H+K*K+Q*Q;ie>0&&(H*=ie=1/Math.sqrt(ie),K*=ie,Q*=ie);var fe=q*Q-$*K,de=$*H-U*Q,ue=U*K-q*H;return(ie=fe*fe+de*de+ue*ue)>0&&(fe*=ie=1/Math.sqrt(ie),de*=ie,ue*=ie),x[0]=fe,x[1]=de,x[2]=ue,x[3]=0,x[4]=K*ue-Q*de,x[5]=Q*fe-H*ue,x[6]=H*de-K*fe,x[7]=0,x[8]=H,x[9]=K,x[10]=Q,x[11]=0,x[12]=C,x[13]=k,x[14]=V,x[15]=1,x},pt.str=function(x){return"mat4("+x[0]+", "+x[1]+", "+x[2]+", "+x[3]+", "+x[4]+", "+x[5]+", "+x[6]+", "+x[7]+", "+x[8]+", "+x[9]+", "+x[10]+", "+x[11]+", "+x[12]+", "+x[13]+", "+x[14]+", "+x[15]+")"},pt.frob=function(x){return Math.hypot(x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8],x[9],x[10],x[11],x[12],x[13],x[14],x[15])},pt.add=function(x,P,I){return x[0]=P[0]+I[0],x[1]=P[1]+I[1],x[2]=P[2]+I[2],x[3]=P[3]+I[3],x[4]=P[4]+I[4],x[5]=P[5]+I[5],x[6]=P[6]+I[6],x[7]=P[7]+I[7],x[8]=P[8]+I[8],x[9]=P[9]+I[9],x[10]=P[10]+I[10],x[11]=P[11]+I[11],x[12]=P[12]+I[12],x[13]=P[13]+I[13],x[14]=P[14]+I[14],x[15]=P[15]+I[15],x},pt.subtract=D,pt.multiplyScalar=function(x,P,I){return x[0]=P[0]*I,x[1]=P[1]*I,x[2]=P[2]*I,x[3]=P[3]*I,x[4]=P[4]*I,x[5]=P[5]*I,x[6]=P[6]*I,x[7]=P[7]*I,x[8]=P[8]*I,x[9]=P[9]*I,x[10]=P[10]*I,x[11]=P[11]*I,x[12]=P[12]*I,x[13]=P[13]*I,x[14]=P[14]*I,x[15]=P[15]*I,x},pt.multiplyScalarAndAdd=function(x,P,I,M){return x[0]=P[0]+I[0]*M,x[1]=P[1]+I[1]*M,x[2]=P[2]+I[2]*M,x[3]=P[3]+I[3]*M,x[4]=P[4]+I[4]*M,x[5]=P[5]+I[5]*M,x[6]=P[6]+I[6]*M,x[7]=P[7]+I[7]*M,x[8]=P[8]+I[8]*M,x[9]=P[9]+I[9]*M,x[10]=P[10]+I[10]*M,x[11]=P[11]+I[11]*M,x[12]=P[12]+I[12]*M,x[13]=P[13]+I[13]*M,x[14]=P[14]+I[14]*M,x[15]=P[15]+I[15]*M,x},pt.exactEquals=function(x,P){return x[0]===P[0]&&x[1]===P[1]&&x[2]===P[2]&&x[3]===P[3]&&x[4]===P[4]&&x[5]===P[5]&&x[6]===P[6]&&x[7]===P[7]&&x[8]===P[8]&&x[9]===P[9]&&x[10]===P[10]&&x[11]===P[11]&&x[12]===P[12]&&x[13]===P[13]&&x[14]===P[14]&&x[15]===P[15]},pt.equals=function(x,P){var I=x[0],M=x[1],C=x[2],k=x[3],V=x[4],U=x[5],q=x[6],$=x[7],H=x[8],K=x[9],Q=x[10],ie=x[11],fe=x[12],de=x[13],ue=x[14],Se=x[15],me=P[0],Ee=P[1],ze=P[2],Ie=P[3],Re=P[4],Ve=P[5],Ue=P[6],Fe=P[7],et=P[8],dt=P[9],tt=P[10],Mt=P[11],wt=P[12],At=P[13],rt=P[14],Ut=P[15];return Math.abs(I-me)<=e.EPSILON*Math.max(1,Math.abs(I),Math.abs(me))&&Math.abs(M-Ee)<=e.EPSILON*Math.max(1,Math.abs(M),Math.abs(Ee))&&Math.abs(C-ze)<=e.EPSILON*Math.max(1,Math.abs(C),Math.abs(ze))&&Math.abs(k-Ie)<=e.EPSILON*Math.max(1,Math.abs(k),Math.abs(Ie))&&Math.abs(V-Re)<=e.EPSILON*Math.max(1,Math.abs(V),Math.abs(Re))&&Math.abs(U-Ve)<=e.EPSILON*Math.max(1,Math.abs(U),Math.abs(Ve))&&Math.abs(q-Ue)<=e.EPSILON*Math.max(1,Math.abs(q),Math.abs(Ue))&&Math.abs($-Fe)<=e.EPSILON*Math.max(1,Math.abs($),Math.abs(Fe))&&Math.abs(H-et)<=e.EPSILON*Math.max(1,Math.abs(H),Math.abs(et))&&Math.abs(K-dt)<=e.EPSILON*Math.max(1,Math.abs(K),Math.abs(dt))&&Math.abs(Q-tt)<=e.EPSILON*Math.max(1,Math.abs(Q),Math.abs(tt))&&Math.abs(ie-Mt)<=e.EPSILON*Math.max(1,Math.abs(ie),Math.abs(Mt))&&Math.abs(fe-wt)<=e.EPSILON*Math.max(1,Math.abs(fe),Math.abs(wt))&&Math.abs(de-At)<=e.EPSILON*Math.max(1,Math.abs(de),Math.abs(At))&&Math.abs(ue-rt)<=e.EPSILON*Math.max(1,Math.abs(ue),Math.abs(rt))&&Math.abs(Se-Ut)<=e.EPSILON*Math.max(1,Math.abs(Se),Math.abs(Ut))},pt.sub=pt.mul=pt.ortho=pt.perspective=void 0;var e=function(x,P){if(x&&x.__esModule)return x;if(x===null||r(x)!=="object"&&typeof x!="function")return{default:x};var I=n(void 0);if(I&&I.has(x))return I.get(x);var M={},C=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var k in x)if(k!=="default"&&Object.prototype.hasOwnProperty.call(x,k)){var V=C?Object.getOwnPropertyDescriptor(x,k):null;V&&(V.get||V.set)?Object.defineProperty(M,k,V):M[k]=x[k]}return M.default=x,I&&I.set(x,M),M}(ae());function n(x){if(typeof WeakMap!="function")return null;var P=new WeakMap,I=new WeakMap;return(n=function(M){return M?I:P})(x)}function o(x){return x[0]=1,x[1]=0,x[2]=0,x[3]=0,x[4]=0,x[5]=1,x[6]=0,x[7]=0,x[8]=0,x[9]=0,x[10]=1,x[11]=0,x[12]=0,x[13]=0,x[14]=0,x[15]=1,x}function u(x,P,I){var M=P[0],C=P[1],k=P[2],V=P[3],U=P[4],q=P[5],$=P[6],H=P[7],K=P[8],Q=P[9],ie=P[10],fe=P[11],de=P[12],ue=P[13],Se=P[14],me=P[15],Ee=I[0],ze=I[1],Ie=I[2],Re=I[3];return x[0]=Ee*M+ze*U+Ie*K+Re*de,x[1]=Ee*C+ze*q+Ie*Q+Re*ue,x[2]=Ee*k+ze*$+Ie*ie+Re*Se,x[3]=Ee*V+ze*H+Ie*fe+Re*me,x[4]=(Ee=I[4])*M+(ze=I[5])*U+(Ie=I[6])*K+(Re=I[7])*de,x[5]=Ee*C+ze*q+Ie*Q+Re*ue,x[6]=Ee*k+ze*$+Ie*ie+Re*Se,x[7]=Ee*V+ze*H+Ie*fe+Re*me,x[8]=(Ee=I[8])*M+(ze=I[9])*U+(Ie=I[10])*K+(Re=I[11])*de,x[9]=Ee*C+ze*q+Ie*Q+Re*ue,x[10]=Ee*k+ze*$+Ie*ie+Re*Se,x[11]=Ee*V+ze*H+Ie*fe+Re*me,x[12]=(Ee=I[12])*M+(ze=I[13])*U+(Ie=I[14])*K+(Re=I[15])*de,x[13]=Ee*C+ze*q+Ie*Q+Re*ue,x[14]=Ee*k+ze*$+Ie*ie+Re*Se,x[15]=Ee*V+ze*H+Ie*fe+Re*me,x}function l(x,P,I){var M=P[0],C=P[1],k=P[2],V=P[3],U=M+M,q=C+C,$=k+k,H=M*U,K=M*q,Q=M*$,ie=C*q,fe=C*$,de=k*$,ue=V*U,Se=V*q,me=V*$;return x[0]=1-(ie+de),x[1]=K+me,x[2]=Q-Se,x[3]=0,x[4]=K-me,x[5]=1-(H+de),x[6]=fe+ue,x[7]=0,x[8]=Q+Se,x[9]=fe-ue,x[10]=1-(H+ie),x[11]=0,x[12]=I[0],x[13]=I[1],x[14]=I[2],x[15]=1,x}function f(x,P){var I=P[4],M=P[5],C=P[6],k=P[8],V=P[9],U=P[10];return x[0]=Math.hypot(P[0],P[1],P[2]),x[1]=Math.hypot(I,M,C),x[2]=Math.hypot(k,V,U),x}function v(x,P,I,M,C){var k,V=1/Math.tan(P/2);return x[0]=V/I,x[1]=0,x[2]=0,x[3]=0,x[4]=0,x[5]=V,x[6]=0,x[7]=0,x[8]=0,x[9]=0,x[11]=-1,x[12]=0,x[13]=0,x[15]=0,C!=null&&C!==1/0?(x[10]=(C+M)*(k=1/(M-C)),x[14]=2*C*M*k):(x[10]=-1,x[14]=-2*M),x}function S(x,P,I,M,C,k,V){var U=1/(P-I),q=1/(M-C),$=1/(k-V);return x[0]=-2*U,x[1]=0,x[2]=0,x[3]=0,x[4]=0,x[5]=-2*q,x[6]=0,x[7]=0,x[8]=0,x[9]=0,x[10]=2*$,x[11]=0,x[12]=(P+I)*U,x[13]=(C+M)*q,x[14]=(V+k)*$,x[15]=1,x}function D(x,P,I){return x[0]=P[0]-I[0],x[1]=P[1]-I[1],x[2]=P[2]-I[2],x[3]=P[3]-I[3],x[4]=P[4]-I[4],x[5]=P[5]-I[5],x[6]=P[6]-I[6],x[7]=P[7]-I[7],x[8]=P[8]-I[8],x[9]=P[9]-I[9],x[10]=P[10]-I[10],x[11]=P[11]-I[11],x[12]=P[12]-I[12],x[13]=P[13]-I[13],x[14]=P[14]-I[14],x[15]=P[15]-I[15],x}return pt.perspective=v,pt.ortho=S,pt.mul=u,pt.sub=D,pt}var ui,kt={},Pt={};function Mi(){if(ui)return Pt;function r(C){return r=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(k){return typeof k}:function(k){return k&&typeof Symbol=="function"&&k.constructor===Symbol&&k!==Symbol.prototype?"symbol":typeof k},r(C)}ui=1,Object.defineProperty(Pt,"__esModule",{value:!0}),Pt.create=o,Pt.clone=function(C){var k=new e.ARRAY_TYPE(3);return k[0]=C[0],k[1]=C[1],k[2]=C[2],k},Pt.length=u,Pt.fromValues=function(C,k,V){var U=new e.ARRAY_TYPE(3);return U[0]=C,U[1]=k,U[2]=V,U},Pt.copy=function(C,k){return C[0]=k[0],C[1]=k[1],C[2]=k[2],C},Pt.set=function(C,k,V,U){return C[0]=k,C[1]=V,C[2]=U,C},Pt.add=function(C,k,V){return C[0]=k[0]+V[0],C[1]=k[1]+V[1],C[2]=k[2]+V[2],C},Pt.subtract=l,Pt.multiply=f,Pt.divide=v,Pt.ceil=function(C,k){return C[0]=Math.ceil(k[0]),C[1]=Math.ceil(k[1]),C[2]=Math.ceil(k[2]),C},Pt.floor=function(C,k){return C[0]=Math.floor(k[0]),C[1]=Math.floor(k[1]),C[2]=Math.floor(k[2]),C},Pt.min=function(C,k,V){return C[0]=Math.min(k[0],V[0]),C[1]=Math.min(k[1],V[1]),C[2]=Math.min(k[2],V[2]),C},Pt.max=function(C,k,V){return C[0]=Math.max(k[0],V[0]),C[1]=Math.max(k[1],V[1]),C[2]=Math.max(k[2],V[2]),C},Pt.round=function(C,k){return C[0]=Math.round(k[0]),C[1]=Math.round(k[1]),C[2]=Math.round(k[2]),C},Pt.scale=function(C,k,V){return C[0]=k[0]*V,C[1]=k[1]*V,C[2]=k[2]*V,C},Pt.scaleAndAdd=function(C,k,V,U){return C[0]=k[0]+V[0]*U,C[1]=k[1]+V[1]*U,C[2]=k[2]+V[2]*U,C},Pt.distance=S,Pt.squaredDistance=D,Pt.squaredLength=x,Pt.negate=function(C,k){return C[0]=-k[0],C[1]=-k[1],C[2]=-k[2],C},Pt.inverse=function(C,k){return C[0]=1/k[0],C[1]=1/k[1],C[2]=1/k[2],C},Pt.normalize=function(C,k){var V=k[0],U=k[1],q=k[2],$=V*V+U*U+q*q;return $>0&&($=1/Math.sqrt($)),C[0]=k[0]*$,C[1]=k[1]*$,C[2]=k[2]*$,C},Pt.dot=P,Pt.cross=function(C,k,V){var U=k[0],q=k[1],$=k[2],H=V[0],K=V[1],Q=V[2];return C[0]=q*Q-$*K,C[1]=$*H-U*Q,C[2]=U*K-q*H,C},Pt.lerp=function(C,k,V,U){var q=k[0],$=k[1],H=k[2];return C[0]=q+U*(V[0]-q),C[1]=$+U*(V[1]-$),C[2]=H+U*(V[2]-H),C},Pt.hermite=function(C,k,V,U,q,$){var H=$*$,K=H*(2*$-3)+1,Q=H*($-2)+$,ie=H*($-1),fe=H*(3-2*$);return C[0]=k[0]*K+V[0]*Q+U[0]*ie+q[0]*fe,C[1]=k[1]*K+V[1]*Q+U[1]*ie+q[1]*fe,C[2]=k[2]*K+V[2]*Q+U[2]*ie+q[2]*fe,C},Pt.bezier=function(C,k,V,U,q,$){var H=1-$,K=H*H,Q=$*$,ie=K*H,fe=3*$*K,de=3*Q*H,ue=Q*$;return C[0]=k[0]*ie+V[0]*fe+U[0]*de+q[0]*ue,C[1]=k[1]*ie+V[1]*fe+U[1]*de+q[1]*ue,C[2]=k[2]*ie+V[2]*fe+U[2]*de+q[2]*ue,C},Pt.random=function(C,k){k=k||1;var V=2*e.RANDOM()*Math.PI,U=2*e.RANDOM()-1,q=Math.sqrt(1-U*U)*k;return C[0]=Math.cos(V)*q,C[1]=Math.sin(V)*q,C[2]=U*k,C},Pt.transformMat4=function(C,k,V){var U=k[0],q=k[1],$=k[2],H=V[3]*U+V[7]*q+V[11]*$+V[15];return C[0]=(V[0]*U+V[4]*q+V[8]*$+V[12])/(H=H||1),C[1]=(V[1]*U+V[5]*q+V[9]*$+V[13])/H,C[2]=(V[2]*U+V[6]*q+V[10]*$+V[14])/H,C},Pt.transformMat3=function(C,k,V){var U=k[0],q=k[1],$=k[2];return C[0]=U*V[0]+q*V[3]+$*V[6],C[1]=U*V[1]+q*V[4]+$*V[7],C[2]=U*V[2]+q*V[5]+$*V[8],C},Pt.transformQuat=function(C,k,V){var U=V[0],q=V[1],$=V[2],H=k[0],K=k[1],Q=k[2],ie=q*Q-$*K,fe=$*H-U*Q,de=U*K-q*H,ue=q*de-$*fe,Se=$*ie-U*de,me=U*fe-q*ie,Ee=2*V[3];return fe*=Ee,de*=Ee,Se*=2,me*=2,C[0]=H+(ie*=Ee)+(ue*=2),C[1]=K+fe+Se,C[2]=Q+de+me,C},Pt.rotateX=function(C,k,V,U){var q=[],$=[];return q[0]=k[0]-V[0],q[1]=k[1]-V[1],q[2]=k[2]-V[2],$[0]=q[0],$[1]=q[1]*Math.cos(U)-q[2]*Math.sin(U),$[2]=q[1]*Math.sin(U)+q[2]*Math.cos(U),C[0]=$[0]+V[0],C[1]=$[1]+V[1],C[2]=$[2]+V[2],C},Pt.rotateY=function(C,k,V,U){var q=[],$=[];return q[0]=k[0]-V[0],q[1]=k[1]-V[1],q[2]=k[2]-V[2],$[0]=q[2]*Math.sin(U)+q[0]*Math.cos(U),$[1]=q[1],$[2]=q[2]*Math.cos(U)-q[0]*Math.sin(U),C[0]=$[0]+V[0],C[1]=$[1]+V[1],C[2]=$[2]+V[2],C},Pt.rotateZ=function(C,k,V,U){var q=[],$=[];return q[0]=k[0]-V[0],q[1]=k[1]-V[1],q[2]=k[2]-V[2],$[0]=q[0]*Math.cos(U)-q[1]*Math.sin(U),$[1]=q[0]*Math.sin(U)+q[1]*Math.cos(U),$[2]=q[2],C[0]=$[0]+V[0],C[1]=$[1]+V[1],C[2]=$[2]+V[2],C},Pt.angle=function(C,k){var V=C[0],U=C[1],q=C[2],$=k[0],H=k[1],K=k[2],Q=Math.sqrt(V*V+U*U+q*q)*Math.sqrt($*$+H*H+K*K),ie=Q&&P(C,k)/Q;return Math.acos(Math.min(Math.max(ie,-1),1))},Pt.zero=function(C){return C[0]=0,C[1]=0,C[2]=0,C},Pt.str=function(C){return"vec3("+C[0]+", "+C[1]+", "+C[2]+")"},Pt.exactEquals=function(C,k){return C[0]===k[0]&&C[1]===k[1]&&C[2]===k[2]},Pt.equals=function(C,k){var V=C[0],U=C[1],q=C[2],$=k[0],H=k[1],K=k[2];return Math.abs(V-$)<=e.EPSILON*Math.max(1,Math.abs(V),Math.abs($))&&Math.abs(U-H)<=e.EPSILON*Math.max(1,Math.abs(U),Math.abs(H))&&Math.abs(q-K)<=e.EPSILON*Math.max(1,Math.abs(q),Math.abs(K))},Pt.forEach=Pt.sqrLen=Pt.len=Pt.sqrDist=Pt.dist=Pt.div=Pt.mul=Pt.sub=void 0;var e=function(C,k){if(C&&C.__esModule)return C;if(C===null||r(C)!=="object"&&typeof C!="function")return{default:C};var V=n(void 0);if(V&&V.has(C))return V.get(C);var U={},q=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var $ in C)if($!=="default"&&Object.prototype.hasOwnProperty.call(C,$)){var H=q?Object.getOwnPropertyDescriptor(C,$):null;H&&(H.get||H.set)?Object.defineProperty(U,$,H):U[$]=C[$]}return U.default=C,V&&V.set(C,U),U}(ae());function n(C){if(typeof WeakMap!="function")return null;var k=new WeakMap,V=new WeakMap;return(n=function(U){return U?V:k})(C)}function o(){var C=new e.ARRAY_TYPE(3);return e.ARRAY_TYPE!=Float32Array&&(C[0]=0,C[1]=0,C[2]=0),C}function u(C){return Math.hypot(C[0],C[1],C[2])}function l(C,k,V){return C[0]=k[0]-V[0],C[1]=k[1]-V[1],C[2]=k[2]-V[2],C}function f(C,k,V){return C[0]=k[0]*V[0],C[1]=k[1]*V[1],C[2]=k[2]*V[2],C}function v(C,k,V){return C[0]=k[0]/V[0],C[1]=k[1]/V[1],C[2]=k[2]/V[2],C}function S(C,k){return Math.hypot(k[0]-C[0],k[1]-C[1],k[2]-C[2])}function D(C,k){var V=k[0]-C[0],U=k[1]-C[1],q=k[2]-C[2];return V*V+U*U+q*q}function x(C){var k=C[0],V=C[1],U=C[2];return k*k+V*V+U*U}function P(C,k){return C[0]*k[0]+C[1]*k[1]+C[2]*k[2]}Pt.sub=l,Pt.mul=f,Pt.div=v,Pt.dist=S,Pt.sqrDist=D,Pt.len=u,Pt.sqrLen=x;var I,M=(I=o(),function(C,k,V,U,q,$){var H,K;for(k||(k=3),V||(V=0),K=U?Math.min(U*k+V,C.length):C.length,H=V;H<K;H+=k)I[0]=C[H],I[1]=C[H+1],I[2]=C[H+2],q(I,I,$),C[H]=I[0],C[H+1]=I[1],C[H+2]=I[2];return C});return Pt.forEach=M,Pt}var Pn,hn,Ht={};function Si(){if(Pn)return Ht;function r(M){return r=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(C){return typeof C}:function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},r(M)}Pn=1,Object.defineProperty(Ht,"__esModule",{value:!0}),Ht.create=o,Ht.clone=function(M){var C=new e.ARRAY_TYPE(4);return C[0]=M[0],C[1]=M[1],C[2]=M[2],C[3]=M[3],C},Ht.fromValues=function(M,C,k,V){var U=new e.ARRAY_TYPE(4);return U[0]=M,U[1]=C,U[2]=k,U[3]=V,U},Ht.copy=function(M,C){return M[0]=C[0],M[1]=C[1],M[2]=C[2],M[3]=C[3],M},Ht.set=function(M,C,k,V,U){return M[0]=C,M[1]=k,M[2]=V,M[3]=U,M},Ht.add=function(M,C,k){return M[0]=C[0]+k[0],M[1]=C[1]+k[1],M[2]=C[2]+k[2],M[3]=C[3]+k[3],M},Ht.subtract=u,Ht.multiply=l,Ht.divide=f,Ht.ceil=function(M,C){return M[0]=Math.ceil(C[0]),M[1]=Math.ceil(C[1]),M[2]=Math.ceil(C[2]),M[3]=Math.ceil(C[3]),M},Ht.floor=function(M,C){return M[0]=Math.floor(C[0]),M[1]=Math.floor(C[1]),M[2]=Math.floor(C[2]),M[3]=Math.floor(C[3]),M},Ht.min=function(M,C,k){return M[0]=Math.min(C[0],k[0]),M[1]=Math.min(C[1],k[1]),M[2]=Math.min(C[2],k[2]),M[3]=Math.min(C[3],k[3]),M},Ht.max=function(M,C,k){return M[0]=Math.max(C[0],k[0]),M[1]=Math.max(C[1],k[1]),M[2]=Math.max(C[2],k[2]),M[3]=Math.max(C[3],k[3]),M},Ht.round=function(M,C){return M[0]=Math.round(C[0]),M[1]=Math.round(C[1]),M[2]=Math.round(C[2]),M[3]=Math.round(C[3]),M},Ht.scale=function(M,C,k){return M[0]=C[0]*k,M[1]=C[1]*k,M[2]=C[2]*k,M[3]=C[3]*k,M},Ht.scaleAndAdd=function(M,C,k,V){return M[0]=C[0]+k[0]*V,M[1]=C[1]+k[1]*V,M[2]=C[2]+k[2]*V,M[3]=C[3]+k[3]*V,M},Ht.distance=v,Ht.squaredDistance=S,Ht.length=D,Ht.squaredLength=x,Ht.negate=function(M,C){return M[0]=-C[0],M[1]=-C[1],M[2]=-C[2],M[3]=-C[3],M},Ht.inverse=function(M,C){return M[0]=1/C[0],M[1]=1/C[1],M[2]=1/C[2],M[3]=1/C[3],M},Ht.normalize=function(M,C){var k=C[0],V=C[1],U=C[2],q=C[3],$=k*k+V*V+U*U+q*q;return $>0&&($=1/Math.sqrt($)),M[0]=k*$,M[1]=V*$,M[2]=U*$,M[3]=q*$,M},Ht.dot=function(M,C){return M[0]*C[0]+M[1]*C[1]+M[2]*C[2]+M[3]*C[3]},Ht.cross=function(M,C,k,V){var U=k[0]*V[1]-k[1]*V[0],q=k[0]*V[2]-k[2]*V[0],$=k[0]*V[3]-k[3]*V[0],H=k[1]*V[2]-k[2]*V[1],K=k[1]*V[3]-k[3]*V[1],Q=k[2]*V[3]-k[3]*V[2],ie=C[0],fe=C[1],de=C[2],ue=C[3];return M[0]=fe*Q-de*K+ue*H,M[1]=-ie*Q+de*$-ue*q,M[2]=ie*K-fe*$+ue*U,M[3]=-ie*H+fe*q-de*U,M},Ht.lerp=function(M,C,k,V){var U=C[0],q=C[1],$=C[2],H=C[3];return M[0]=U+V*(k[0]-U),M[1]=q+V*(k[1]-q),M[2]=$+V*(k[2]-$),M[3]=H+V*(k[3]-H),M},Ht.random=function(M,C){var k,V,U,q,$,H;C=C||1;do $=(k=2*e.RANDOM()-1)*k+(V=2*e.RANDOM()-1)*V;while($>=1);do H=(U=2*e.RANDOM()-1)*U+(q=2*e.RANDOM()-1)*q;while(H>=1);var K=Math.sqrt((1-$)/H);return M[0]=C*k,M[1]=C*V,M[2]=C*U*K,M[3]=C*q*K,M},Ht.transformMat4=function(M,C,k){var V=C[0],U=C[1],q=C[2],$=C[3];return M[0]=k[0]*V+k[4]*U+k[8]*q+k[12]*$,M[1]=k[1]*V+k[5]*U+k[9]*q+k[13]*$,M[2]=k[2]*V+k[6]*U+k[10]*q+k[14]*$,M[3]=k[3]*V+k[7]*U+k[11]*q+k[15]*$,M},Ht.transformQuat=function(M,C,k){var V=C[0],U=C[1],q=C[2],$=k[0],H=k[1],K=k[2],Q=k[3],ie=Q*V+H*q-K*U,fe=Q*U+K*V-$*q,de=Q*q+$*U-H*V,ue=-$*V-H*U-K*q;return M[0]=ie*Q+ue*-$+fe*-K-de*-H,M[1]=fe*Q+ue*-H+de*-$-ie*-K,M[2]=de*Q+ue*-K+ie*-H-fe*-$,M[3]=C[3],M},Ht.zero=function(M){return M[0]=0,M[1]=0,M[2]=0,M[3]=0,M},Ht.str=function(M){return"vec4("+M[0]+", "+M[1]+", "+M[2]+", "+M[3]+")"},Ht.exactEquals=function(M,C){return M[0]===C[0]&&M[1]===C[1]&&M[2]===C[2]&&M[3]===C[3]},Ht.equals=function(M,C){var k=M[0],V=M[1],U=M[2],q=M[3],$=C[0],H=C[1],K=C[2],Q=C[3];return Math.abs(k-$)<=e.EPSILON*Math.max(1,Math.abs(k),Math.abs($))&&Math.abs(V-H)<=e.EPSILON*Math.max(1,Math.abs(V),Math.abs(H))&&Math.abs(U-K)<=e.EPSILON*Math.max(1,Math.abs(U),Math.abs(K))&&Math.abs(q-Q)<=e.EPSILON*Math.max(1,Math.abs(q),Math.abs(Q))},Ht.forEach=Ht.sqrLen=Ht.len=Ht.sqrDist=Ht.dist=Ht.div=Ht.mul=Ht.sub=void 0;var e=function(M,C){if(M&&M.__esModule)return M;if(M===null||r(M)!=="object"&&typeof M!="function")return{default:M};var k=n(void 0);if(k&&k.has(M))return k.get(M);var V={},U=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var q in M)if(q!=="default"&&Object.prototype.hasOwnProperty.call(M,q)){var $=U?Object.getOwnPropertyDescriptor(M,q):null;$&&($.get||$.set)?Object.defineProperty(V,q,$):V[q]=M[q]}return V.default=M,k&&k.set(M,V),V}(ae());function n(M){if(typeof WeakMap!="function")return null;var C=new WeakMap,k=new WeakMap;return(n=function(V){return V?k:C})(M)}function o(){var M=new e.ARRAY_TYPE(4);return e.ARRAY_TYPE!=Float32Array&&(M[0]=0,M[1]=0,M[2]=0,M[3]=0),M}function u(M,C,k){return M[0]=C[0]-k[0],M[1]=C[1]-k[1],M[2]=C[2]-k[2],M[3]=C[3]-k[3],M}function l(M,C,k){return M[0]=C[0]*k[0],M[1]=C[1]*k[1],M[2]=C[2]*k[2],M[3]=C[3]*k[3],M}function f(M,C,k){return M[0]=C[0]/k[0],M[1]=C[1]/k[1],M[2]=C[2]/k[2],M[3]=C[3]/k[3],M}function v(M,C){return Math.hypot(C[0]-M[0],C[1]-M[1],C[2]-M[2],C[3]-M[3])}function S(M,C){var k=C[0]-M[0],V=C[1]-M[1],U=C[2]-M[2],q=C[3]-M[3];return k*k+V*V+U*U+q*q}function D(M){return Math.hypot(M[0],M[1],M[2],M[3])}function x(M){var C=M[0],k=M[1],V=M[2],U=M[3];return C*C+k*k+V*V+U*U}Ht.sub=u,Ht.mul=l,Ht.div=f,Ht.dist=v,Ht.sqrDist=S,Ht.len=D,Ht.sqrLen=x;var P,I=(P=o(),function(M,C,k,V,U,q){var $,H;for(C||(C=4),k||(k=0),H=V?Math.min(V*C+k,M.length):M.length,$=k;$<H;$+=C)P[0]=M[$],P[1]=M[$+1],P[2]=M[$+2],P[3]=M[$+3],U(P,P,q),M[$]=P[0],M[$+1]=P[1],M[$+2]=P[2],M[$+3]=P[3];return M});return Ht.forEach=I,Ht}function Qi(){if(hn)return kt;function r(me){return r=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(Ee){return typeof Ee}:function(Ee){return Ee&&typeof Symbol=="function"&&Ee.constructor===Symbol&&Ee!==Symbol.prototype?"symbol":typeof Ee},r(me)}hn=1,Object.defineProperty(kt,"__esModule",{value:!0}),kt.create=v,kt.identity=function(me){return me[0]=0,me[1]=0,me[2]=0,me[3]=1,me},kt.setAxisAngle=S,kt.getAxisAngle=function(me,Ee){var ze=2*Math.acos(Ee[3]),Ie=Math.sin(ze/2);return Ie>e.EPSILON?(me[0]=Ee[0]/Ie,me[1]=Ee[1]/Ie,me[2]=Ee[2]/Ie):(me[0]=1,me[1]=0,me[2]=0),ze},kt.getAngle=function(me,Ee){var ze=k(me,Ee);return Math.acos(2*ze*ze-1)},kt.multiply=D,kt.rotateX=function(me,Ee,ze){ze*=.5;var Ie=Ee[0],Re=Ee[1],Ve=Ee[2],Ue=Ee[3],Fe=Math.sin(ze),et=Math.cos(ze);return me[0]=Ie*et+Ue*Fe,me[1]=Re*et+Ve*Fe,me[2]=Ve*et-Re*Fe,me[3]=Ue*et-Ie*Fe,me},kt.rotateY=function(me,Ee,ze){ze*=.5;var Ie=Ee[0],Re=Ee[1],Ve=Ee[2],Ue=Ee[3],Fe=Math.sin(ze),et=Math.cos(ze);return me[0]=Ie*et-Ve*Fe,me[1]=Re*et+Ue*Fe,me[2]=Ve*et+Ie*Fe,me[3]=Ue*et-Re*Fe,me},kt.rotateZ=function(me,Ee,ze){ze*=.5;var Ie=Ee[0],Re=Ee[1],Ve=Ee[2],Ue=Ee[3],Fe=Math.sin(ze),et=Math.cos(ze);return me[0]=Ie*et+Re*Fe,me[1]=Re*et-Ie*Fe,me[2]=Ve*et+Ue*Fe,me[3]=Ue*et-Ve*Fe,me},kt.calculateW=function(me,Ee){var ze=Ee[0],Ie=Ee[1],Re=Ee[2];return me[0]=ze,me[1]=Ie,me[2]=Re,me[3]=Math.sqrt(Math.abs(1-ze*ze-Ie*Ie-Re*Re)),me},kt.exp=x,kt.ln=P,kt.pow=function(me,Ee,ze){return P(me,Ee),C(me,me,ze),x(me,me),me},kt.slerp=I,kt.random=function(me){var Ee=e.RANDOM(),ze=e.RANDOM(),Ie=e.RANDOM(),Re=Math.sqrt(1-Ee),Ve=Math.sqrt(Ee);return me[0]=Re*Math.sin(2*Math.PI*ze),me[1]=Re*Math.cos(2*Math.PI*ze),me[2]=Ve*Math.sin(2*Math.PI*Ie),me[3]=Ve*Math.cos(2*Math.PI*Ie),me},kt.invert=function(me,Ee){var ze=Ee[0],Ie=Ee[1],Re=Ee[2],Ve=Ee[3],Ue=ze*ze+Ie*Ie+Re*Re+Ve*Ve,Fe=Ue?1/Ue:0;return me[0]=-ze*Fe,me[1]=-Ie*Fe,me[2]=-Re*Fe,me[3]=Ve*Fe,me},kt.conjugate=function(me,Ee){return me[0]=-Ee[0],me[1]=-Ee[1],me[2]=-Ee[2],me[3]=Ee[3],me},kt.fromMat3=M,kt.fromEuler=function(me,Ee,ze,Ie){var Re=.5*Math.PI/180;Ee*=Re,ze*=Re,Ie*=Re;var Ve=Math.sin(Ee),Ue=Math.cos(Ee),Fe=Math.sin(ze),et=Math.cos(ze),dt=Math.sin(Ie),tt=Math.cos(Ie);return me[0]=Ve*et*tt-Ue*Fe*dt,me[1]=Ue*Fe*tt+Ve*et*dt,me[2]=Ue*et*dt-Ve*Fe*tt,me[3]=Ue*et*tt+Ve*Fe*dt,me},kt.str=function(me){return"quat("+me[0]+", "+me[1]+", "+me[2]+", "+me[3]+")"},kt.setAxes=kt.sqlerp=kt.rotationTo=kt.equals=kt.exactEquals=kt.normalize=kt.sqrLen=kt.squaredLength=kt.len=kt.length=kt.lerp=kt.dot=kt.scale=kt.mul=kt.add=kt.set=kt.copy=kt.fromValues=kt.clone=void 0;var e=f(ae()),n=f(gt()),o=f(Mi()),u=f(Si());function l(me){if(typeof WeakMap!="function")return null;var Ee=new WeakMap,ze=new WeakMap;return(l=function(Ie){return Ie?ze:Ee})(me)}function f(me,Ee){if(me&&me.__esModule)return me;if(me===null||r(me)!=="object"&&typeof me!="function")return{default:me};var ze=l(Ee);if(ze&&ze.has(me))return ze.get(me);var Ie={},Re=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var Ve in me)if(Ve!=="default"&&Object.prototype.hasOwnProperty.call(me,Ve)){var Ue=Re?Object.getOwnPropertyDescriptor(me,Ve):null;Ue&&(Ue.get||Ue.set)?Object.defineProperty(Ie,Ve,Ue):Ie[Ve]=me[Ve]}return Ie.default=me,ze&&ze.set(me,Ie),Ie}function v(){var me=new e.ARRAY_TYPE(4);return e.ARRAY_TYPE!=Float32Array&&(me[0]=0,me[1]=0,me[2]=0),me[3]=1,me}function S(me,Ee,ze){ze*=.5;var Ie=Math.sin(ze);return me[0]=Ie*Ee[0],me[1]=Ie*Ee[1],me[2]=Ie*Ee[2],me[3]=Math.cos(ze),me}function D(me,Ee,ze){var Ie=Ee[0],Re=Ee[1],Ve=Ee[2],Ue=Ee[3],Fe=ze[0],et=ze[1],dt=ze[2],tt=ze[3];return me[0]=Ie*tt+Ue*Fe+Re*dt-Ve*et,me[1]=Re*tt+Ue*et+Ve*Fe-Ie*dt,me[2]=Ve*tt+Ue*dt+Ie*et-Re*Fe,me[3]=Ue*tt-Ie*Fe-Re*et-Ve*dt,me}function x(me,Ee){var ze=Ee[0],Ie=Ee[1],Re=Ee[2],Ve=Ee[3],Ue=Math.sqrt(ze*ze+Ie*Ie+Re*Re),Fe=Math.exp(Ve),et=Ue>0?Fe*Math.sin(Ue)/Ue:0;return me[0]=ze*et,me[1]=Ie*et,me[2]=Re*et,me[3]=Fe*Math.cos(Ue),me}function P(me,Ee){var ze=Ee[0],Ie=Ee[1],Re=Ee[2],Ve=Ee[3],Ue=Math.sqrt(ze*ze+Ie*Ie+Re*Re),Fe=Ue>0?Math.atan2(Ue,Ve)/Ue:0;return me[0]=ze*Fe,me[1]=Ie*Fe,me[2]=Re*Fe,me[3]=.5*Math.log(ze*ze+Ie*Ie+Re*Re+Ve*Ve),me}function I(me,Ee,ze,Ie){var Re,Ve,Ue,Fe,et,dt=Ee[0],tt=Ee[1],Mt=Ee[2],wt=Ee[3],At=ze[0],rt=ze[1],Ut=ze[2],St=ze[3];return(Ve=dt*At+tt*rt+Mt*Ut+wt*St)<0&&(Ve=-Ve,At=-At,rt=-rt,Ut=-Ut,St=-St),1-Ve>e.EPSILON?(Re=Math.acos(Ve),Ue=Math.sin(Re),Fe=Math.sin((1-Ie)*Re)/Ue,et=Math.sin(Ie*Re)/Ue):(Fe=1-Ie,et=Ie),me[0]=Fe*dt+et*At,me[1]=Fe*tt+et*rt,me[2]=Fe*Mt+et*Ut,me[3]=Fe*wt+et*St,me}function M(me,Ee){var ze,Ie=Ee[0]+Ee[4]+Ee[8];if(Ie>0)ze=Math.sqrt(Ie+1),me[3]=.5*ze,me[0]=(Ee[5]-Ee[7])*(ze=.5/ze),me[1]=(Ee[6]-Ee[2])*ze,me[2]=(Ee[1]-Ee[3])*ze;else{var Re=0;Ee[4]>Ee[0]&&(Re=1),Ee[8]>Ee[3*Re+Re]&&(Re=2);var Ve=(Re+1)%3,Ue=(Re+2)%3;ze=Math.sqrt(Ee[3*Re+Re]-Ee[3*Ve+Ve]-Ee[3*Ue+Ue]+1),me[Re]=.5*ze,me[3]=(Ee[3*Ve+Ue]-Ee[3*Ue+Ve])*(ze=.5/ze),me[Ve]=(Ee[3*Ve+Re]+Ee[3*Re+Ve])*ze,me[Ue]=(Ee[3*Ue+Re]+Ee[3*Re+Ue])*ze}return me}kt.clone=u.clone,kt.fromValues=u.fromValues,kt.copy=u.copy,kt.set=u.set,kt.add=u.add,kt.mul=D;var C=u.scale;kt.scale=C;var k=u.dot;kt.dot=k,kt.lerp=u.lerp;var V=u.length;kt.length=V,kt.len=V;var U=u.squaredLength;kt.squaredLength=U,kt.sqrLen=U;var q=u.normalize;kt.normalize=q,kt.exactEquals=u.exactEquals,kt.equals=u.equals;var $,H,K,Q=($=o.create(),H=o.fromValues(1,0,0),K=o.fromValues(0,1,0),function(me,Ee,ze){var Ie=o.dot(Ee,ze);return Ie<-.999999?(o.cross($,H,Ee),o.len($)<1e-6&&o.cross($,K,Ee),o.normalize($,$),S(me,$,Math.PI),me):Ie>.999999?(me[0]=0,me[1]=0,me[2]=0,me[3]=1,me):(o.cross($,Ee,ze),me[0]=$[0],me[1]=$[1],me[2]=$[2],me[3]=1+Ie,q(me,me))});kt.rotationTo=Q;var ie,fe,de=(ie=v(),fe=v(),function(me,Ee,ze,Ie,Re,Ve){return I(ie,Ee,Re,Ve),I(fe,ze,Ie,Ve),I(me,ie,fe,2*Ve*(1-Ve)),me});kt.sqlerp=de;var ue,Se=(ue=n.create(),function(me,Ee,ze,Ie){return ue[0]=ze[0],ue[3]=ze[1],ue[6]=ze[2],ue[1]=Ie[0],ue[4]=Ie[1],ue[7]=Ie[2],ue[2]=-Ee[0],ue[5]=-Ee[1],ue[8]=-Ee[2],q(me,M(me,ue))});return kt.setAxes=Se,kt}var fi,jt={};function ni(){if(fi)return jt;function r(I){return r=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(M){return typeof M}:function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},r(I)}fi=1,Object.defineProperty(jt,"__esModule",{value:!0}),jt.create=function(){var I=new e.ARRAY_TYPE(8);return e.ARRAY_TYPE!=Float32Array&&(I[0]=0,I[1]=0,I[2]=0,I[4]=0,I[5]=0,I[6]=0,I[7]=0),I[3]=1,I},jt.clone=function(I){var M=new e.ARRAY_TYPE(8);return M[0]=I[0],M[1]=I[1],M[2]=I[2],M[3]=I[3],M[4]=I[4],M[5]=I[5],M[6]=I[6],M[7]=I[7],M},jt.fromValues=function(I,M,C,k,V,U,q,$){var H=new e.ARRAY_TYPE(8);return H[0]=I,H[1]=M,H[2]=C,H[3]=k,H[4]=V,H[5]=U,H[6]=q,H[7]=$,H},jt.fromRotationTranslationValues=function(I,M,C,k,V,U,q){var $=new e.ARRAY_TYPE(8);$[0]=I,$[1]=M,$[2]=C,$[3]=k;var H=.5*V,K=.5*U,Q=.5*q;return $[4]=H*k+K*C-Q*M,$[5]=K*k+Q*I-H*C,$[6]=Q*k+H*M-K*I,$[7]=-H*I-K*M-Q*C,$},jt.fromRotationTranslation=f,jt.fromTranslation=function(I,M){return I[0]=0,I[1]=0,I[2]=0,I[3]=1,I[4]=.5*M[0],I[5]=.5*M[1],I[6]=.5*M[2],I[7]=0,I},jt.fromRotation=function(I,M){return I[0]=M[0],I[1]=M[1],I[2]=M[2],I[3]=M[3],I[4]=0,I[5]=0,I[6]=0,I[7]=0,I},jt.fromMat4=function(I,M){var C=n.create();o.getRotation(C,M);var k=new e.ARRAY_TYPE(3);return o.getTranslation(k,M),f(I,C,k),I},jt.copy=v,jt.identity=function(I){return I[0]=0,I[1]=0,I[2]=0,I[3]=1,I[4]=0,I[5]=0,I[6]=0,I[7]=0,I},jt.set=function(I,M,C,k,V,U,q,$,H){return I[0]=M,I[1]=C,I[2]=k,I[3]=V,I[4]=U,I[5]=q,I[6]=$,I[7]=H,I},jt.getDual=function(I,M){return I[0]=M[4],I[1]=M[5],I[2]=M[6],I[3]=M[7],I},jt.setDual=function(I,M){return I[4]=M[0],I[5]=M[1],I[6]=M[2],I[7]=M[3],I},jt.getTranslation=function(I,M){var C=M[4],k=M[5],V=M[6],U=M[7],q=-M[0],$=-M[1],H=-M[2],K=M[3];return I[0]=2*(C*K+U*q+k*H-V*$),I[1]=2*(k*K+U*$+V*q-C*H),I[2]=2*(V*K+U*H+C*$-k*q),I},jt.translate=function(I,M,C){var k=M[0],V=M[1],U=M[2],q=M[3],$=.5*C[0],H=.5*C[1],K=.5*C[2],Q=M[4],ie=M[5],fe=M[6],de=M[7];return I[0]=k,I[1]=V,I[2]=U,I[3]=q,I[4]=q*$+V*K-U*H+Q,I[5]=q*H+U*$-k*K+ie,I[6]=q*K+k*H-V*$+fe,I[7]=-k*$-V*H-U*K+de,I},jt.rotateX=function(I,M,C){var k=-M[0],V=-M[1],U=-M[2],q=M[3],$=M[4],H=M[5],K=M[6],Q=M[7],ie=$*q+Q*k+H*U-K*V,fe=H*q+Q*V+K*k-$*U,de=K*q+Q*U+$*V-H*k,ue=Q*q-$*k-H*V-K*U;return n.rotateX(I,M,C),I[4]=ie*(q=I[3])+ue*(k=I[0])+fe*(U=I[2])-de*(V=I[1]),I[5]=fe*q+ue*V+de*k-ie*U,I[6]=de*q+ue*U+ie*V-fe*k,I[7]=ue*q-ie*k-fe*V-de*U,I},jt.rotateY=function(I,M,C){var k=-M[0],V=-M[1],U=-M[2],q=M[3],$=M[4],H=M[5],K=M[6],Q=M[7],ie=$*q+Q*k+H*U-K*V,fe=H*q+Q*V+K*k-$*U,de=K*q+Q*U+$*V-H*k,ue=Q*q-$*k-H*V-K*U;return n.rotateY(I,M,C),I[4]=ie*(q=I[3])+ue*(k=I[0])+fe*(U=I[2])-de*(V=I[1]),I[5]=fe*q+ue*V+de*k-ie*U,I[6]=de*q+ue*U+ie*V-fe*k,I[7]=ue*q-ie*k-fe*V-de*U,I},jt.rotateZ=function(I,M,C){var k=-M[0],V=-M[1],U=-M[2],q=M[3],$=M[4],H=M[5],K=M[6],Q=M[7],ie=$*q+Q*k+H*U-K*V,fe=H*q+Q*V+K*k-$*U,de=K*q+Q*U+$*V-H*k,ue=Q*q-$*k-H*V-K*U;return n.rotateZ(I,M,C),I[4]=ie*(q=I[3])+ue*(k=I[0])+fe*(U=I[2])-de*(V=I[1]),I[5]=fe*q+ue*V+de*k-ie*U,I[6]=de*q+ue*U+ie*V-fe*k,I[7]=ue*q-ie*k-fe*V-de*U,I},jt.rotateByQuatAppend=function(I,M,C){var k=C[0],V=C[1],U=C[2],q=C[3],$=M[0],H=M[1],K=M[2],Q=M[3];return I[0]=$*q+Q*k+H*U-K*V,I[1]=H*q+Q*V+K*k-$*U,I[2]=K*q+Q*U+$*V-H*k,I[3]=Q*q-$*k-H*V-K*U,I[4]=($=M[4])*q+(Q=M[7])*k+(H=M[5])*U-(K=M[6])*V,I[5]=H*q+Q*V+K*k-$*U,I[6]=K*q+Q*U+$*V-H*k,I[7]=Q*q-$*k-H*V-K*U,I},jt.rotateByQuatPrepend=function(I,M,C){var k=M[0],V=M[1],U=M[2],q=M[3],$=C[0],H=C[1],K=C[2],Q=C[3];return I[0]=k*Q+q*$+V*K-U*H,I[1]=V*Q+q*H+U*$-k*K,I[2]=U*Q+q*K+k*H-V*$,I[3]=q*Q-k*$-V*H-U*K,I[4]=k*(Q=C[7])+q*($=C[4])+V*(K=C[6])-U*(H=C[5]),I[5]=V*Q+q*H+U*$-k*K,I[6]=U*Q+q*K+k*H-V*$,I[7]=q*Q-k*$-V*H-U*K,I},jt.rotateAroundAxis=function(I,M,C,k){if(Math.abs(k)<e.EPSILON)return v(I,M);var V=Math.hypot(C[0],C[1],C[2]);k*=.5;var U=Math.sin(k),q=U*C[0]/V,$=U*C[1]/V,H=U*C[2]/V,K=Math.cos(k),Q=M[0],ie=M[1],fe=M[2],de=M[3];I[0]=Q*K+de*q+ie*H-fe*$,I[1]=ie*K+de*$+fe*q-Q*H,I[2]=fe*K+de*H+Q*$-ie*q,I[3]=de*K-Q*q-ie*$-fe*H;var ue=M[4],Se=M[5],me=M[6],Ee=M[7];return I[4]=ue*K+Ee*q+Se*H-me*$,I[5]=Se*K+Ee*$+me*q-ue*H,I[6]=me*K+Ee*H+ue*$-Se*q,I[7]=Ee*K-ue*q-Se*$-me*H,I},jt.add=function(I,M,C){return I[0]=M[0]+C[0],I[1]=M[1]+C[1],I[2]=M[2]+C[2],I[3]=M[3]+C[3],I[4]=M[4]+C[4],I[5]=M[5]+C[5],I[6]=M[6]+C[6],I[7]=M[7]+C[7],I},jt.multiply=S,jt.scale=function(I,M,C){return I[0]=M[0]*C,I[1]=M[1]*C,I[2]=M[2]*C,I[3]=M[3]*C,I[4]=M[4]*C,I[5]=M[5]*C,I[6]=M[6]*C,I[7]=M[7]*C,I},jt.lerp=function(I,M,C,k){var V=1-k;return D(M,C)<0&&(k=-k),I[0]=M[0]*V+C[0]*k,I[1]=M[1]*V+C[1]*k,I[2]=M[2]*V+C[2]*k,I[3]=M[3]*V+C[3]*k,I[4]=M[4]*V+C[4]*k,I[5]=M[5]*V+C[5]*k,I[6]=M[6]*V+C[6]*k,I[7]=M[7]*V+C[7]*k,I},jt.invert=function(I,M){var C=P(M);return I[0]=-M[0]/C,I[1]=-M[1]/C,I[2]=-M[2]/C,I[3]=M[3]/C,I[4]=-M[4]/C,I[5]=-M[5]/C,I[6]=-M[6]/C,I[7]=M[7]/C,I},jt.conjugate=function(I,M){return I[0]=-M[0],I[1]=-M[1],I[2]=-M[2],I[3]=M[3],I[4]=-M[4],I[5]=-M[5],I[6]=-M[6],I[7]=M[7],I},jt.normalize=function(I,M){var C=P(M);if(C>0){C=Math.sqrt(C);var k=M[0]/C,V=M[1]/C,U=M[2]/C,q=M[3]/C,$=M[4],H=M[5],K=M[6],Q=M[7],ie=k*$+V*H+U*K+q*Q;I[0]=k,I[1]=V,I[2]=U,I[3]=q,I[4]=($-k*ie)/C,I[5]=(H-V*ie)/C,I[6]=(K-U*ie)/C,I[7]=(Q-q*ie)/C}return I},jt.str=function(I){return"quat2("+I[0]+", "+I[1]+", "+I[2]+", "+I[3]+", "+I[4]+", "+I[5]+", "+I[6]+", "+I[7]+")"},jt.exactEquals=function(I,M){return I[0]===M[0]&&I[1]===M[1]&&I[2]===M[2]&&I[3]===M[3]&&I[4]===M[4]&&I[5]===M[5]&&I[6]===M[6]&&I[7]===M[7]},jt.equals=function(I,M){var C=I[0],k=I[1],V=I[2],U=I[3],q=I[4],$=I[5],H=I[6],K=I[7],Q=M[0],ie=M[1],fe=M[2],de=M[3],ue=M[4],Se=M[5],me=M[6],Ee=M[7];return Math.abs(C-Q)<=e.EPSILON*Math.max(1,Math.abs(C),Math.abs(Q))&&Math.abs(k-ie)<=e.EPSILON*Math.max(1,Math.abs(k),Math.abs(ie))&&Math.abs(V-fe)<=e.EPSILON*Math.max(1,Math.abs(V),Math.abs(fe))&&Math.abs(U-de)<=e.EPSILON*Math.max(1,Math.abs(U),Math.abs(de))&&Math.abs(q-ue)<=e.EPSILON*Math.max(1,Math.abs(q),Math.abs(ue))&&Math.abs($-Se)<=e.EPSILON*Math.max(1,Math.abs($),Math.abs(Se))&&Math.abs(H-me)<=e.EPSILON*Math.max(1,Math.abs(H),Math.abs(me))&&Math.abs(K-Ee)<=e.EPSILON*Math.max(1,Math.abs(K),Math.abs(Ee))},jt.sqrLen=jt.squaredLength=jt.len=jt.length=jt.dot=jt.mul=jt.setReal=jt.getReal=void 0;var e=l(ae()),n=l(Qi()),o=l(Gt());function u(I){if(typeof WeakMap!="function")return null;var M=new WeakMap,C=new WeakMap;return(u=function(k){return k?C:M})(I)}function l(I,M){if(I&&I.__esModule)return I;if(I===null||r(I)!=="object"&&typeof I!="function")return{default:I};var C=u(M);if(C&&C.has(I))return C.get(I);var k={},V=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var U in I)if(U!=="default"&&Object.prototype.hasOwnProperty.call(I,U)){var q=V?Object.getOwnPropertyDescriptor(I,U):null;q&&(q.get||q.set)?Object.defineProperty(k,U,q):k[U]=I[U]}return k.default=I,C&&C.set(I,k),k}function f(I,M,C){var k=.5*C[0],V=.5*C[1],U=.5*C[2],q=M[0],$=M[1],H=M[2],K=M[3];return I[0]=q,I[1]=$,I[2]=H,I[3]=K,I[4]=k*K+V*H-U*$,I[5]=V*K+U*q-k*H,I[6]=U*K+k*$-V*q,I[7]=-k*q-V*$-U*H,I}function v(I,M){return I[0]=M[0],I[1]=M[1],I[2]=M[2],I[3]=M[3],I[4]=M[4],I[5]=M[5],I[6]=M[6],I[7]=M[7],I}function S(I,M,C){var k=M[0],V=M[1],U=M[2],q=M[3],$=C[4],H=C[5],K=C[6],Q=C[7],ie=M[4],fe=M[5],de=M[6],ue=M[7],Se=C[0],me=C[1],Ee=C[2],ze=C[3];return I[0]=k*ze+q*Se+V*Ee-U*me,I[1]=V*ze+q*me+U*Se-k*Ee,I[2]=U*ze+q*Ee+k*me-V*Se,I[3]=q*ze-k*Se-V*me-U*Ee,I[4]=k*Q+q*$+V*K-U*H+ie*ze+ue*Se+fe*Ee-de*me,I[5]=V*Q+q*H+U*$-k*K+fe*ze+ue*me+de*Se-ie*Ee,I[6]=U*Q+q*K+k*H-V*$+de*ze+ue*Ee+ie*me-fe*Se,I[7]=q*Q-k*$-V*H-U*K+ue*ze-ie*Se-fe*me-de*Ee,I}jt.getReal=n.copy,jt.setReal=n.copy,jt.mul=S;var D=n.dot;jt.dot=D;var x=n.length;jt.length=x,jt.len=x;var P=n.squaredLength;return jt.squaredLength=P,jt.sqrLen=P,jt}var Gi,an,qt={};function ln(){if(Gi)return qt;function r(M){return r=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(C){return typeof C}:function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},r(M)}Gi=1,Object.defineProperty(qt,"__esModule",{value:!0}),qt.create=o,qt.clone=function(M){var C=new e.ARRAY_TYPE(2);return C[0]=M[0],C[1]=M[1],C},qt.fromValues=function(M,C){var k=new e.ARRAY_TYPE(2);return k[0]=M,k[1]=C,k},qt.copy=function(M,C){return M[0]=C[0],M[1]=C[1],M},qt.set=function(M,C,k){return M[0]=C,M[1]=k,M},qt.add=function(M,C,k){return M[0]=C[0]+k[0],M[1]=C[1]+k[1],M},qt.subtract=u,qt.multiply=l,qt.divide=f,qt.ceil=function(M,C){return M[0]=Math.ceil(C[0]),M[1]=Math.ceil(C[1]),M},qt.floor=function(M,C){return M[0]=Math.floor(C[0]),M[1]=Math.floor(C[1]),M},qt.min=function(M,C,k){return M[0]=Math.min(C[0],k[0]),M[1]=Math.min(C[1],k[1]),M},qt.max=function(M,C,k){return M[0]=Math.max(C[0],k[0]),M[1]=Math.max(C[1],k[1]),M},qt.round=function(M,C){return M[0]=Math.round(C[0]),M[1]=Math.round(C[1]),M},qt.scale=function(M,C,k){return M[0]=C[0]*k,M[1]=C[1]*k,M},qt.scaleAndAdd=function(M,C,k,V){return M[0]=C[0]+k[0]*V,M[1]=C[1]+k[1]*V,M},qt.distance=v,qt.squaredDistance=S,qt.length=D,qt.squaredLength=x,qt.negate=function(M,C){return M[0]=-C[0],M[1]=-C[1],M},qt.inverse=function(M,C){return M[0]=1/C[0],M[1]=1/C[1],M},qt.normalize=function(M,C){var k=C[0],V=C[1],U=k*k+V*V;return U>0&&(U=1/Math.sqrt(U)),M[0]=C[0]*U,M[1]=C[1]*U,M},qt.dot=function(M,C){return M[0]*C[0]+M[1]*C[1]},qt.cross=function(M,C,k){var V=C[0]*k[1]-C[1]*k[0];return M[0]=M[1]=0,M[2]=V,M},qt.lerp=function(M,C,k,V){var U=C[0],q=C[1];return M[0]=U+V*(k[0]-U),M[1]=q+V*(k[1]-q),M},qt.random=function(M,C){C=C||1;var k=2*e.RANDOM()*Math.PI;return M[0]=Math.cos(k)*C,M[1]=Math.sin(k)*C,M},qt.transformMat2=function(M,C,k){var V=C[0],U=C[1];return M[0]=k[0]*V+k[2]*U,M[1]=k[1]*V+k[3]*U,M},qt.transformMat2d=function(M,C,k){var V=C[0],U=C[1];return M[0]=k[0]*V+k[2]*U+k[4],M[1]=k[1]*V+k[3]*U+k[5],M},qt.transformMat3=function(M,C,k){var V=C[0],U=C[1];return M[0]=k[0]*V+k[3]*U+k[6],M[1]=k[1]*V+k[4]*U+k[7],M},qt.transformMat4=function(M,C,k){var V=C[0],U=C[1];return M[0]=k[0]*V+k[4]*U+k[12],M[1]=k[1]*V+k[5]*U+k[13],M},qt.rotate=function(M,C,k,V){var U=C[0]-k[0],q=C[1]-k[1],$=Math.sin(V),H=Math.cos(V);return M[0]=U*H-q*$+k[0],M[1]=U*$+q*H+k[1],M},qt.angle=function(M,C){var k=M[0],V=M[1],U=C[0],q=C[1],$=Math.sqrt(k*k+V*V)*Math.sqrt(U*U+q*q);return Math.acos(Math.min(Math.max($&&(k*U+V*q)/$,-1),1))},qt.zero=function(M){return M[0]=0,M[1]=0,M},qt.str=function(M){return"vec2("+M[0]+", "+M[1]+")"},qt.exactEquals=function(M,C){return M[0]===C[0]&&M[1]===C[1]},qt.equals=function(M,C){var k=M[0],V=M[1],U=C[0],q=C[1];return Math.abs(k-U)<=e.EPSILON*Math.max(1,Math.abs(k),Math.abs(U))&&Math.abs(V-q)<=e.EPSILON*Math.max(1,Math.abs(V),Math.abs(q))},qt.forEach=qt.sqrLen=qt.sqrDist=qt.dist=qt.div=qt.mul=qt.sub=qt.len=void 0;var e=function(M,C){if(M&&M.__esModule)return M;if(M===null||r(M)!=="object"&&typeof M!="function")return{default:M};var k=n(void 0);if(k&&k.has(M))return k.get(M);var V={},U=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var q in M)if(q!=="default"&&Object.prototype.hasOwnProperty.call(M,q)){var $=U?Object.getOwnPropertyDescriptor(M,q):null;$&&($.get||$.set)?Object.defineProperty(V,q,$):V[q]=M[q]}return V.default=M,k&&k.set(M,V),V}(ae());function n(M){if(typeof WeakMap!="function")return null;var C=new WeakMap,k=new WeakMap;return(n=function(V){return V?k:C})(M)}function o(){var M=new e.ARRAY_TYPE(2);return e.ARRAY_TYPE!=Float32Array&&(M[0]=0,M[1]=0),M}function u(M,C,k){return M[0]=C[0]-k[0],M[1]=C[1]-k[1],M}function l(M,C,k){return M[0]=C[0]*k[0],M[1]=C[1]*k[1],M}function f(M,C,k){return M[0]=C[0]/k[0],M[1]=C[1]/k[1],M}function v(M,C){return Math.hypot(C[0]-M[0],C[1]-M[1])}function S(M,C){var k=C[0]-M[0],V=C[1]-M[1];return k*k+V*V}function D(M){return Math.hypot(M[0],M[1])}function x(M){var C=M[0],k=M[1];return C*C+k*k}qt.len=D,qt.sub=u,qt.mul=l,qt.div=f,qt.dist=v,qt.sqrDist=S,qt.sqrLen=x;var P,I=(P=o(),function(M,C,k,V,U,q){var $,H;for(C||(C=2),k||(k=0),H=V?Math.min(V*C+k,M.length):M.length,$=k;$<H;$+=C)P[0]=M[$],P[1]=M[$+1],U(P,P,q),M[$]=P[0],M[$+1]=P[1];return M});return qt.forEach=I,qt}function Di(){if(an)return Y;function r(M){return r=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(C){return typeof C}:function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},r(M)}an=1,Object.defineProperty(Y,"__esModule",{value:!0}),Y.vec4=Y.vec3=Y.vec2=Y.quat2=Y.quat=Y.mat4=Y.mat3=Y.mat2d=Y.mat2=Y.glMatrix=void 0;var e=I(ae());Y.glMatrix=e;var n=I(be());Y.mat2=n;var o=I(ot());Y.mat2d=o;var u=I(gt());Y.mat3=u;var l=I(Gt());Y.mat4=l;var f=I(Qi());Y.quat=f;var v=I(ni());Y.quat2=v;var S=I(ln());Y.vec2=S;var D=I(Mi());Y.vec3=D;var x=I(Si());function P(M){if(typeof WeakMap!="function")return null;var C=new WeakMap,k=new WeakMap;return(P=function(V){return V?k:C})(M)}function I(M,C){if(M&&M.__esModule)return M;if(M===null||r(M)!=="object"&&typeof M!="function")return{default:M};var k=P(C);if(k&&k.has(M))return k.get(M);var V={},U=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var q in M)if(q!=="default"&&Object.prototype.hasOwnProperty.call(M,q)){var $=U?Object.getOwnPropertyDescriptor(M,q):null;$&&($.get||$.set)?Object.defineProperty(V,q,$):V[q]=M[q]}return V.default=M,k&&k.set(M,V),V}return Y.vec4=x,Y}var xi,Is,xs,Ls,De=Di(),Vs=function(){if(Is)return xi;function r(e,n,o,u){this.cx=3*e,this.bx=3*(o-e)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*n,this.by=3*(u-n)-this.cy,this.ay=1-this.cy-this.by,this.p1x=e,this.p1y=n,this.p2x=o,this.p2y=u}return Is=1,xi=r,r.prototype={sampleCurveX:function(e){return((this.ax*e+this.bx)*e+this.cx)*e},sampleCurveY:function(e){return((this.ay*e+this.by)*e+this.cy)*e},sampleCurveDerivativeX:function(e){return(3*this.ax*e+2*this.bx)*e+this.cx},solveCurveX:function(e,n){if(n===void 0&&(n=1e-6),e<0)return 0;if(e>1)return 1;for(var o=e,u=0;u<8;u++){var l=this.sampleCurveX(o)-e;if(Math.abs(l)<n)return o;var f=this.sampleCurveDerivativeX(o);if(Math.abs(f)<1e-6)break;o-=l/f}var v=0,S=1;for(o=e,u=0;u<20&&(l=this.sampleCurveX(o),!(Math.abs(l-e)<n));u++)e>l?v=o:S=o,o=.5*(S-v)+v;return o},solve:function(e,n){return this.sampleCurveY(this.solveCurveX(e,n))}},xi}(),Us=O(Vs);function Zr(){if(Ls)return xs;function r(e,n){this.x=e,this.y=n}return Ls=1,xs=r,r.prototype={clone:function(){return new r(this.x,this.y)},add:function(e){return this.clone()._add(e)},sub:function(e){return this.clone()._sub(e)},multByPoint:function(e){return this.clone()._multByPoint(e)},divByPoint:function(e){return this.clone()._divByPoint(e)},mult:function(e){return this.clone()._mult(e)},div:function(e){return this.clone()._div(e)},rotate:function(e){return this.clone()._rotate(e)},rotateAround:function(e,n){return this.clone()._rotateAround(e,n)},matMult:function(e){return this.clone()._matMult(e)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(e){return this.x===e.x&&this.y===e.y},dist:function(e){return Math.sqrt(this.distSqr(e))},distSqr:function(e){var n=e.x-this.x,o=e.y-this.y;return n*n+o*o},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(e){return Math.atan2(this.y-e.y,this.x-e.x)},angleWith:function(e){return this.angleWithSep(e.x,e.y)},angleWithSep:function(e,n){return Math.atan2(this.x*n-this.y*e,this.x*e+this.y*n)},_matMult:function(e){var n=e[2]*this.x+e[3]*this.y;return this.x=e[0]*this.x+e[1]*this.y,this.y=n,this},_add:function(e){return this.x+=e.x,this.y+=e.y,this},_sub:function(e){return this.x-=e.x,this.y-=e.y,this},_mult:function(e){return this.x*=e,this.y*=e,this},_div:function(e){return this.x/=e,this.y/=e,this},_multByPoint:function(e){return this.x*=e.x,this.y*=e.y,this},_divByPoint:function(e){return this.x/=e.x,this.y/=e.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var e=this.y;return this.y=this.x,this.x=-e,this},_rotate:function(e){var n=Math.cos(e),o=Math.sin(e),u=o*this.x+n*this.y;return this.x=n*this.x-o*this.y,this.y=u,this},_rotateAround:function(e,n){var o=Math.cos(e),u=Math.sin(e),l=n.y+u*(this.x-n.x)+o*(this.y-n.y);return this.x=n.x+o*(this.x-n.x)-u*(this.y-n.y),this.y=l,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},r.convert=function(e){return e instanceof r?e:Array.isArray(e)?new r(e[0],e[1]):e},xs}var Et=O(Zr());function $s(r,e){if(Array.isArray(r)){if(!Array.isArray(e)||r.length!==e.length)return!1;for(let n=0;n<r.length;n++)if(!$s(r[n],e[n]))return!1;return!0}if(typeof r=="object"&&r!==null&&e!==null){if(typeof e!="object"||Object.keys(r).length!==Object.keys(e).length)return!1;for(const n in r)if(!$s(r[n],e[n]))return!1;return!0}return r===e}const $n=Math.PI/180,Xs=180/Math.PI;function vi(r){return r*$n}function kn(r){return r*Xs}const Ys=[[0,0],[1,0],[1,1],[0,1]];function Hr(r){if(r<=0)return 0;if(r>=1)return 1;const e=r*r,n=e*r;return 4*(r<.5?n:3*(r-e)+n-.75)}function qr(r,e,n,o){const u=new Us(r,e,n,o);return function(l){return u.solve(l)}}const Wr=qr(.25,.1,.25,1);function si(r,e,n){return Math.min(n,Math.max(e,r))}function ps(r,e,n){return(n=si((n-r)/(e-r),0,1))*n*(3-2*n)}function zn(r,e,n){const o=n-e,u=((r-e)%o+o)%o+e;return u===e?n:u}function Rn(r,e,n){if(!r.length)return n(null,[]);let o=r.length;const u=new Array(r.length);let l=null;r.forEach((f,v)=>{e(f,(S,D)=>{S&&(l=S),u[v]=D,--o==0&&n(l,u)})})}function An(r,...e){for(const n of e)for(const o in n)r[o]=n[o];return r}let js=1;function vo(){return js++}function bo(r){return r<=1?1:Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))}function wo(r,e){r.forEach(n=>{e[n]&&(e[n]=e[n].bind(e))})}function yr(r,e){return r.indexOf(e,r.length-e.length)!==-1}function Pr(r,e,n){const o={};for(const u in r)o[u]=e.call(this,r[u],u,r);return o}function ro(r,e,n){const o={};for(const u in r)e.call(this,r[u],u,r)&&(o[u]=r[u]);return o}function Ks(r){return Array.isArray(r)?r.map(Ks):typeof r=="object"&&r?Pr(r,Ks):r}const Ar={};function mi(r){Ar[r]||(typeof console<"u"&&console.warn(r),Ar[r]=!0)}function On(r,e,n){return(n.y-r.y)*(e.x-r.x)>(e.y-r.y)*(n.x-r.x)}function Un(r){let e=0;for(let n,o,u=0,l=r.length,f=l-1;u<l;f=u++)n=r[u],o=r[f],e+=(o.x-n.x)*(n.y+o.y);return e}function Zi([r,e,n]){const o=vi(e+90),u=vi(n);return{x:r*Math.cos(o)*Math.sin(u),y:r*Math.sin(o)*Math.sin(u),z:r*Math.cos(u),azimuthal:e,polar:n}}function Qn(){return typeof WorkerGlobalScope<"u"&&typeof self<"u"&&self instanceof WorkerGlobalScope}function Fn(r){const e={};if(r.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(n,o,u,l)=>{const f=u||l;return e[o]=!f||f.toLowerCase(),""}),e["max-age"]){const n=parseInt(e["max-age"],10);isNaN(n)?delete e["max-age"]:e["max-age"]=n}return e}let zs=null;function Ds(r,e){return[r[4*e],r[4*e+1],r[4*e+2],r[4*e+3]]}function Go(r,e,n,o){for(;e<n;){const u=e+n>>1;r[u]<o?e=u+1:n=u}return e}function Ke(r,e,n,o){for(;e<n;){const u=e+n>>1;r[u]<=o?e=u+1:n=u}return e}function re(r){return r>0?1/(1.001-r):1+r}function le(r){return r>0?1-1/(1.001-r):-r}const ge={API_URL:"https://api.mapbox.com",get API_URL_REGEX(){return/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i},get API_TILEJSON_REGEX(){return/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/v[0-9]*\/.*\.json.*$)/i},get API_SPRITE_REGEX(){return/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/styles\/v[0-9]*\/)(.*\/sprite.*\..*$)/i},get API_FONTS_REGEX(){return/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/fonts\/v[0-9]*\/)(.*\.pbf.*$)/i},get API_STYLE_REGEX(){return/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/styles\/v[0-9]*\/)(.*$)/i},get API_CDN_URL_REGEX(){return/^((https?:)?\/\/)?api\.mapbox\.c(n|om)(\/mapbox-gl-js\/)(.*$)/i},get EVENTS_URL(){if(!ge.API_URL)return null;try{const r=new URL(ge.API_URL);return r.hostname==="api.mapbox.cn"?"https://events.mapbox.cn/events/v2":r.hostname==="api.mapbox.com"?"https://events.mapbox.com/events/v2":null}catch{return null}},SESSION_PATH:"/map-sessions/v1",FEEDBACK_URL:"https://apps.mapbox.com/feedback",TILE_URL_VERSION:"v4",RASTER_URL_PREFIX:"raster/v1",RASTERARRAYS_URL_PREFIX:"rasterarrays/v1",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,DEFAULT_STYLE:"mapbox://styles/mapbox/standard",MAX_PARALLEL_IMAGE_REQUESTS:16,DRACO_URL:"https://api.mapbox.com/mapbox-gl-js/draco_decoder_gltf_v1.5.6.wasm",MESHOPT_URL:"https://api.mapbox.com/mapbox-gl-js/meshopt_base_v0.20.wasm",MESHOPT_SIMD_URL:"https://api.mapbox.com/mapbox-gl-js/meshopt_simd_v0.20.wasm",GLYPHS_URL:"mapbox://fonts/mapbox/{fontstack}/{range}.pbf",TILES3D_URL_PREFIX:"3dtiles/v1"};function Le(r){return ge.API_URL_REGEX.test(r)}function Ce(r){return ge.API_SPRITE_REGEX.test(r)}let Be,qe,Pe,Ye,Qe,it;function mt(){return Be==null&&(Be=self.OffscreenCanvas&&new OffscreenCanvas(1,1).getContext("2d")&&typeof self.createImageBitmap=="function"),Be}const Ct={now:()=>Ye!==void 0?Ye:performance.now(),setNow(r){Ye=r},restoreNow(){Ye=void 0},frame(r){const e=requestAnimationFrame(r);return{cancel:()=>cancelAnimationFrame(e)}},getImageData(r,e=0){const{width:n,height:o}=r;Qe||(Qe=document.createElement("canvas"));const u=Qe.getContext("2d",{willReadFrequently:!0});if(!u)throw new Error("failed to create canvas 2d context");return(n>Qe.width||o>Qe.height)&&(Qe.width=n,Qe.height=o),u.clearRect(-e,-e,n+2*e,o+2*e),u.drawImage(r,0,0,n,o),u.getImageData(-e,-e,n+2*e,o+2*e)},resolveURL:r=>(qe||(qe=document.createElement("a")),qe.href=r,qe.href),get devicePixelRatio(){return window.devicePixelRatio},get prefersReducedMotion(){return!!window.matchMedia&&(Pe==null&&(Pe=window.matchMedia("(prefers-reduced-motion: reduce)")),Pe.matches)},hasCanvasFingerprintNoise(){if(it!==void 0)return it;if(!mt())return it=!1,!1;const r=new OffscreenCanvas(85,1),e=r.getContext("2d",{willReadFrequently:!0});let n=0;for(let u=0;u<r.width;++u)e.fillStyle=`rgba(${n++},${n++},${n++}, 255)`,e.fillRect(u,0,1,1);const o=e.getImageData(0,0,r.width,r.height);n=0;for(let u=0;u<o.data.length;++u)if(u%4!=3&&n++!==o.data[u])return it=!0,!0;return it=!1,!1}};function It(r,e){const n=r.indexOf("?");if(n<0)return`${r}?${new URLSearchParams(e).toString()}`;const o=new URLSearchParams(r.slice(n));for(const u in e)o.set(u,e[u]);return`${r.slice(0,n)}?${o.toString()}`}function Kt(r,e={persistentParams:[]}){const n=r.indexOf("?");if(n<0)return r;const o=new URLSearchParams,u=new URLSearchParams(r.slice(n));for(const f of e.persistentParams){const v=u.get(f);v&&o.set(f,v)}const l=o.toString();return`${r.slice(0,n)}${l.length>0?`?${l}`:""}`}const di="mapbox-tiles";let li=500,ri=50;const Ki=["language","worldview","jobid"];let Ni,Ei;function $i(){try{return caches}catch{}}function Hi(){const r=$i();r&&Ni==null&&(Ni=r.open(di))}let Xn=1/0;const Gs={supported:!1,testSupport:function(r){!ha&&vs&&(Cr?vl(r):ms=r)}};let ms,vs,ha=!1,Cr=!1;const ua=typeof self<"u"?self:{};function vl(r){const e=r.createTexture();r.bindTexture(r.TEXTURE_2D,e);try{if(r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,vs),r.isContextLost())return;Gs.supported=!0}catch{}r.deleteTexture(e),ha=!0}ua.document&&(vs=ua.document.createElement("img"),vs.onload=function(){ms&&vl(ms),ms=null,Cr=!0},vs.onerror=function(){ha=!0,ms=null},vs.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");const Zo={Unknown:"Unknown",Style:"Style",Source:"Source",Tile:"Tile",Glyphs:"Glyphs",SpriteImage:"SpriteImage",SpriteJSON:"SpriteJSON",Iconset:"Iconset",Image:"Image",Model:"Model"};typeof Object.freeze=="function"&&Object.freeze(Zo);class Ho extends Error{constructor(e,n,o){n===401&&Le(o)&&(e+=": you may have provided an invalid Mapbox access token. See https://docs.mapbox.com/api/overview/#access-tokens-and-token-scopes"),super(e),this.status=n,this.url=o}toString(){return`${this.name}: ${this.message} (${this.status}): ${this.url}`}}const tn=Qn()?()=>self.worker&&self.worker.referrer:()=>(location.protocol==="blob:"?parent:self).location.href,vn=function(r,e){if(!(/^file:/.test(n=r.url)||/^file:/.test(tn())&&!/^\w+:/.test(n))){if(self.fetch&&self.Request&&self.AbortController&&Request.prototype.hasOwnProperty("signal"))return function(o,u){const l=new AbortController,f=new Request(o.url,{method:o.method||"GET",body:o.body,credentials:o.credentials,headers:o.headers,referrer:tn(),referrerPolicy:o.referrerPolicy,signal:l.signal});let v=!1,S=!1;const D=(x=f.url).indexOf("sku=")>0&&Le(x);var x;o.type==="json"&&f.headers.set("Accept","application/json");const P=(M,C,k)=>{if(S)return;if(M&&M.message!=="SecurityError"&&mi(M.toString()),C&&k)return I(C);const V=Date.now();fetch(f).then(U=>{if(U.ok){const q=D?U.clone():null;return I(U,q,V)}return u(new Ho(U.statusText,U.status,o.url))}).catch(U=>{U.name!=="AbortError"&&u(new Error(`${U.message} ${o.url}`))})},I=(M,C,k)=>{(o.type==="arrayBuffer"?M.arrayBuffer():o.type==="json"?M.json():M.text()).then(V=>{S||(C&&k&&function(U,q,$){if(Hi(),Ni==null)return;const H=Fn(q.headers.get("Cache-Control")||"");if(H["no-store"])return;const K={status:q.status,statusText:q.statusText,headers:new Headers};q.headers.forEach((fe,de)=>K.headers.set(de,fe)),H["max-age"]&&K.headers.set("Expires",new Date($+1e3*H["max-age"]).toUTCString());const Q=K.headers.get("Expires");if(!Q||new Date(Q).getTime()-$<42e4)return;let ie=Kt(U.url,{persistentParams:Ki});if(q.status===206){const fe=U.headers.get("Range");if(!fe)return;K.status=200,ie=It(ie,{range:fe})}(function(fe,de){if(Ei===void 0)try{new Response(new ReadableStream),Ei=!0}catch{Ei=!1}Ei?de(fe.body):fe.blob().then(de)})(q,fe=>{const de=new Response((ue=q.status)!==200&&ue!==404&&[101,103,204,205,304].includes(ue)?null:fe,K);var ue;Hi(),Ni!=null&&Ni.then(Se=>Se.put(ie,de)).catch(Se=>mi(Se.message))})}(f,C,k),v=!0,u(null,V,M.headers.get("Cache-Control"),M.headers.get("Expires")))}).catch(V=>{S||u(new Error(V.message))})};return D?function(M,C){if(Hi(),Ni==null)return C(null);Ni.then(k=>{let V=Kt(M.url,{persistentParams:Ki});const U=M.headers.get("Range");U&&(V=It(V,{range:U})),k.match(V).then(q=>{const $=function(H){if(!H)return!1;const K=new Date(H.headers.get("Expires")||0),Q=Fn(H.headers.get("Cache-Control")||"");return K>Date.now()&&!Q["no-cache"]}(q);k.delete(V),$&&k.put(V,q.clone()),C(null,q,$)}).catch(C)}).catch(C)}(f,P):P(null,null),{cancel:()=>{S=!0,v||l.abort()}}}(r,e);if(Qn()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",r,e,void 0,!0)}var n;return function(o,u){const l=new XMLHttpRequest;l.open(o.method||"GET",o.url,!0),o.type==="arrayBuffer"&&(l.responseType="arraybuffer");for(const f in o.headers)l.setRequestHeader(f,o.headers[f]);return o.type==="json"&&(l.responseType="text",l.setRequestHeader("Accept","application/json")),l.withCredentials=o.credentials==="include",l.onerror=()=>{u(new Error(l.statusText))},l.onload=()=>{if((l.status>=200&&l.status<300||l.status===0)&&l.response!==null){let f=l.response;if(o.type==="json")try{f=JSON.parse(l.response)}catch(v){return u(v)}u(null,f,l.getResponseHeader("Cache-Control"),l.getResponseHeader("Expires"))}else u(new Ho(l.statusText,l.status,o.url))},l.send(o.body),{cancel:()=>l.abort()}}(r,e)},oo=function(r,e){return vn(An(r,{type:"arrayBuffer"}),e)};function qo(r){const e=document.createElement("a");return e.href=r,e.protocol===location.protocol&&e.host===location.host}const da="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";let Ba,Vi;Ba=[],Vi=0;const Hn=function(r,e){if(Gs.supported&&(r.headers||(r.headers={}),r.headers.accept="image/webp,*/*"),Vi>=ge.MAX_PARALLEL_IMAGE_REQUESTS){const l={requestParameters:r,callback:e,cancelled:!1,cancel(){this.cancelled=!0}};return Ba.push(l),l}Vi++;let n=!1;const o=()=>{if(!n)for(n=!0,Vi--;Ba.length&&Vi<ge.MAX_PARALLEL_IMAGE_REQUESTS;){const l=Ba.shift(),{requestParameters:f,callback:v,cancelled:S}=l;S||(l.cancel=Hn(f,v).cancel)}},u=oo(r,(l,f,v,S)=>{o(),l?e(l):f&&(self.createImageBitmap?function(D,x){const P=new Blob([new Uint8Array(D)],{type:"image/png"});createImageBitmap(P).then(I=>{x(null,I)}).catch(I=>{x(new Error(`Could not load image because of ${I.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`))})}(f,(D,x)=>e(D,x,v,S)):function(D,x){const P=new Image;P.onload=()=>{x(null,P),URL.revokeObjectURL(P.src),P.onload=null,requestAnimationFrame(()=>{P.src=da})},P.onerror=()=>x(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));const I=new Blob([new Uint8Array(D)],{type:"image/png"});P.src=D.byteLength?URL.createObjectURL(I):da}(f,(D,x)=>e(D,x,v,S)))});return{cancel:()=>{u.cancel(),o()}}};var bl,Zs,es,Ir={exports:{}},sr={exports:{}},Js={exports:{}},Yn=function(){if(es)return Ir.exports;es=1;var r=(bl||(bl=1,sr.exports=function(n,o){var u,l,f,v,S,D,x,P;for(l=n.length-(u=3&n.length),f=o,S=3432918353,D=461845907,P=0;P<l;)x=255&n.charCodeAt(P)|(255&n.charCodeAt(++P))<<8|(255&n.charCodeAt(++P))<<16|(255&n.charCodeAt(++P))<<24,++P,f=27492+(65535&(v=5*(65535&(f=(f^=x=(65535&(x=(x=(65535&x)*S+(((x>>>16)*S&65535)<<16)&4294967295)<<15|x>>>17))*D+(((x>>>16)*D&65535)<<16)&4294967295)<<13|f>>>19))+((5*(f>>>16)&65535)<<16)&4294967295))+((58964+(v>>>16)&65535)<<16);switch(x=0,u){case 3:x^=(255&n.charCodeAt(P+2))<<16;case 2:x^=(255&n.charCodeAt(P+1))<<8;case 1:f^=x=(65535&(x=(x=(65535&(x^=255&n.charCodeAt(P)))*S+(((x>>>16)*S&65535)<<16)&4294967295)<<15|x>>>17))*D+(((x>>>16)*D&65535)<<16)&4294967295}return f^=n.length,f=2246822507*(65535&(f^=f>>>16))+((2246822507*(f>>>16)&65535)<<16)&4294967295,f=3266489909*(65535&(f^=f>>>13))+((3266489909*(f>>>16)&65535)<<16)&4294967295,(f^=f>>>16)>>>0}),sr.exports),e=(Zs||(Zs=1,Js.exports=function(n,o){for(var u,l=n.length,f=o^l,v=0;l>=4;)u=1540483477*(65535&(u=255&n.charCodeAt(v)|(255&n.charCodeAt(++v))<<8|(255&n.charCodeAt(++v))<<16|(255&n.charCodeAt(++v))<<24))+((1540483477*(u>>>16)&65535)<<16),f=1540483477*(65535&f)+((1540483477*(f>>>16)&65535)<<16)^(u=1540483477*(65535&(u^=u>>>24))+((1540483477*(u>>>16)&65535)<<16)),l-=4,++v;switch(l){case 3:f^=(255&n.charCodeAt(v+2))<<16;case 2:f^=(255&n.charCodeAt(v+1))<<8;case 1:f=1540483477*(65535&(f^=255&n.charCodeAt(v)))+((1540483477*(f>>>16)&65535)<<16)}return f=1540483477*(65535&(f^=f>>>13))+((1540483477*(f>>>16)&65535)<<16),(f^=f>>>15)>>>0}),Js.exports);return Ir.exports=r,Ir.exports.murmur3=r,Ir.exports.murmur2=e,Ir.exports}(),$r=O(Yn);class Lr{constructor(e,...n){An(this,n[0]||{}),this.type=e}}class zr extends Lr{constructor(e,n={}){super("error",An({error:e},n))}}function Na(r,e,n){n[r]&&n[r].indexOf(e)!==-1||(n[r]=n[r]||[],n[r].push(e))}function fa(r,e,n){if(n&&n[r]){const o=n[r].indexOf(e);o!==-1&&n[r].splice(o,1)}}class Wo{on(e,n){return this._listeners=this._listeners||{},Na(e,n,this._listeners),this}off(e,n){return fa(e,n,this._listeners),fa(e,n,this._oneTimeListeners),this}once(e,n){return n?(this._oneTimeListeners=this._oneTimeListeners||{},Na(e,n,this._oneTimeListeners),this):new Promise(o=>this.once(e,o))}fire(e,n){const o=typeof e=="string"?new Lr(e,n):e,u=o.type;if(this.listens(u)){o.target=this;const l=this._listeners&&this._listeners[u]?this._listeners[u].slice():[];for(const S of l)S.call(this,o);const f=this._oneTimeListeners&&this._oneTimeListeners[u]?this._oneTimeListeners[u].slice():[];for(const S of f)fa(u,S,this._oneTimeListeners),S.call(this,o);const v=this._eventedParent;v&&(An(o,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),v.fire(o))}else o instanceof zr&&console.error(o.error);return this}listens(e){return!!(this._listeners&&this._listeners[e]&&this._listeners[e].length>0||this._oneTimeListeners&&this._oneTimeListeners[e]&&this._oneTimeListeners[e].length>0||this._eventedParent&&this._eventedParent.listens(e))}setEventedParent(e,n){return this._eventedParent=e,this._eventedParentData=n,this}}var rr,pa={},Va=function(){if(rr)return pa;rr=1;var r={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function e(l){return(l=Math.round(l))<0?0:l>255?255:l}function n(l){return e(l[l.length-1]==="%"?parseFloat(l)/100*255:parseInt(l))}function o(l){return(f=l[l.length-1]==="%"?parseFloat(l)/100:parseFloat(l))<0?0:f>1?1:f;var f}function u(l,f,v){return v<0?v+=1:v>1&&(v-=1),6*v<1?l+(f-l)*v*6:2*v<1?f:3*v<2?l+(f-l)*(2/3-v)*6:l}try{pa.parseCSSColor=function(l){var f,v=l.replace(/ /g,"").toLowerCase();if(v in r)return r[v].slice();if(v[0]==="#")return v.length===4?(f=parseInt(v.substr(1),16))>=0&&f<=4095?[(3840&f)>>4|(3840&f)>>8,240&f|(240&f)>>4,15&f|(15&f)<<4,1]:null:v.length===7&&(f=parseInt(v.substr(1),16))>=0&&f<=16777215?[(16711680&f)>>16,(65280&f)>>8,255&f,1]:null;var S=v.indexOf("("),D=v.indexOf(")");if(S!==-1&&D+1===v.length){var x=v.substr(0,S),P=v.substr(S+1,D-(S+1)).split(","),I=1;switch(x){case"rgba":if(P.length!==4)return null;I=o(P.pop());case"rgb":return P.length!==3?null:[n(P[0]),n(P[1]),n(P[2]),I];case"hsla":if(P.length!==4)return null;I=o(P.pop());case"hsl":if(P.length!==3)return null;var M=(parseFloat(P[0])%360+360)%360/360,C=o(P[1]),k=o(P[2]),V=k<=.5?k*(C+1):k+C-k*C,U=2*k-V;return[e(255*u(U,V,M+1/3)),e(255*u(U,V,M)),e(255*u(U,V,M-1/3)),I];default:return null}}return null}}catch{}return pa}();class ki{constructor(e,n,o,u=1){this.r=e,this.g=n,this.b=o,this.a=u}static parse(e){if(!e)return;if(e instanceof ki)return e;if(typeof e!="string")return;const n=Va.parseCSSColor(e);return n?new ki(n[0]/255*n[3],n[1]/255*n[3],n[2]/255*n[3],n[3]):void 0}toStringPremultipliedAlpha(){const[e,n,o,u]=this.a===0?[0,0,0,0]:[255*this.r/this.a,255*this.g/this.a,255*this.b/this.a,this.a];return`rgba(${Math.round(e)},${Math.round(n)},${Math.round(o)},${u})`}toString(){const[e,n,o,u]=[this.r,this.g,this.b,this.a];return`rgba(${Math.round(255*e)},${Math.round(255*n)},${Math.round(255*o)},${u})`}toRenderColor(e){const{r:n,g:o,b:u,a:l}=this;return new ec(e,n,o,u,l)}clone(){return new ki(this.r,this.g,this.b,this.a)}}class ec{constructor(e,n,o,u,l){if(e){const f=e.image.height,v=f*f;n=l===0?0:n/l*(f-1),o=l===0?0:o/l*(f-1),u=l===0?0:u/l*(f-1);const S=Math.floor(n),D=Math.floor(o),x=Math.floor(u),P=Math.ceil(n),I=Math.ceil(o),M=Math.ceil(u),C=n-S,k=o-D,V=u-x,U=e.image.data,q=4*(S+D*v+x*f),$=4*(S+D*v+M*f),H=4*(S+I*v+x*f),K=4*(S+I*v+M*f),Q=4*(P+D*v+x*f),ie=4*(P+D*v+M*f),fe=4*(P+I*v+x*f),de=4*(P+I*v+M*f);if(q<0||de>=U.length)throw new Error("out of range");this.r=ei(ei(ei(U[q],U[$],V),ei(U[H],U[K],V),k),ei(ei(U[Q],U[ie],V),ei(U[fe],U[de],V),k),C)/255*l,this.g=ei(ei(ei(U[q+1],U[$+1],V),ei(U[H+1],U[K+1],V),k),ei(ei(U[Q+1],U[ie+1],V),ei(U[fe+1],U[de+1],V),k),C)/255*l,this.b=ei(ei(ei(U[q+2],U[$+2],V),ei(U[H+2],U[K+2],V),k),ei(ei(U[Q+2],U[ie+2],V),ei(U[fe+2],U[de+2],V),k),C)/255*l,this.a=l}else this.r=n,this.g=o,this.b=u,this.a=l}toArray(){const{r:e,g:n,b:o,a:u}=this;return u===0?[0,0,0,0]:[255*e/u,255*n/u,255*o/u,u]}toHslaArray(){if(this.a===0)return[0,0,0,0];const{r:e,g:n,b:o,a:u}=this,l=Math.min(Math.max(e/u,0),1),f=Math.min(Math.max(n/u,0),1),v=Math.min(Math.max(o/u,0),1),S=Math.min(l,f,v),D=Math.max(l,f,v),x=(S+D)/2;if(S===D)return[0,0,100*x,u];const P=D-S,I=x>.5?P/(2-D-S):P/(D+S);let M=0;return D===l?M=(f-v)/P+(f<v?6:0):D===f?M=(v-l)/P+2:D===v&&(M=(l-f)/P+4),M*=60,[Math.min(Math.max(M,0),360),Math.min(Math.max(100*I,0),100),Math.min(Math.max(100*x,0),100),u]}toArray01(){const{r:e,g:n,b:o,a:u}=this;return u===0?[0,0,0,0]:[e/u,n/u,o/u,u]}toArray01Scaled(e){const{r:n,g:o,b:u,a:l}=this;return l===0?[0,0,0]:[n/l*e,o/l*e,u/l*e]}toArray01PremultipliedAlpha(){const{r:e,g:n,b:o,a:u}=this;return[e,n,o,u]}toArray01Linear(){const{r:e,g:n,b:o,a:u}=this;return u===0?[0,0,0,0]:[Math.pow(e/u,2.2),Math.pow(n/u,2.2),Math.pow(o/u,2.2),u]}}function ei(r,e,n){return r*(1-n)+e*n}function wl(r,e,n){return r.map((o,u)=>ei(o,e[u],n))}ki.black=new ki(0,0,0,1),ki.white=new ki(1,1,1,1),ki.transparent=new ki(0,0,0,0),ki.red=new ki(1,0,0,1),ki.blue=new ki(0,0,1,1);var Oi=Object.freeze({__proto__:null,array:wl,color:function(r,e,n){return new ki(ei(r.r,e.r,n),ei(r.g,e.g,n),ei(r.b,e.b,n),ei(r.a,e.a,n))},number:ei});function Bi(r,...e){for(const n of e)for(const o in n)r[o]=n[o];return r}class os extends Error{constructor(e,n){super(n),this.message=n,this.key=e}}class Cn{constructor(e,n=[]){this.parent=e,this.bindings={};for(const[o,u]of n)this.bindings[o]=u}concat(e){return new Cn(this,e)}get(e){if(this.bindings[e])return this.bindings[e];if(this.parent)return this.parent.get(e);throw new Error(`${e} not found in scope.`)}has(e){return!!this.bindings[e]||!!this.parent&&this.parent.has(e)}}const ma={kind:"null"},Ot={kind:"number"},Fi={kind:"string"},Li={kind:"boolean"},_s={kind:"color"},To={kind:"object"},Pi={kind:"value"},gs={kind:"collator"},Qs={kind:"formatted"},$o={kind:"resolvedImage"};function Es(r,e){return{kind:"array",itemType:r,N:e}}function un(r){if(r.kind==="array"){const e=un(r.itemType);return typeof r.N=="number"?`array<${e}, ${r.N}>`:r.itemType.kind==="value"?"array":`array<${e}>`}return r.kind}const Jc=[ma,Ot,Fi,Li,_s,Qs,To,Es(Pi),$o];function _a(r,e){if(e.kind==="error")return null;if(r.kind==="array"){if(e.kind==="array"&&(e.N===0&&e.itemType.kind==="value"||!_a(r.itemType,e.itemType))&&(typeof r.N!="number"||r.N===e.N))return null}else{if(r.kind===e.kind)return null;if(r.kind==="value"){for(const n of Jc)if(!_a(n,e))return null}}return`Expected ${un(r)} but found ${un(e)} instead.`}function tc(r,e){return e.some(n=>n.kind===r.kind)}function ga(r,e){return e.some(n=>n==="null"?r===null:n==="array"?Array.isArray(r):n==="object"?r&&!Array.isArray(r)&&typeof r=="object":n===typeof r)}class nn{constructor(e,n,o){this.sensitivity=e?n?"variant":"case":n?"accent":"base",this.locale=o,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(e,n){return this.collator.compare(e,n)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Tl{constructor(e,n,o,u,l){this.text=e.normalize?e.normalize():e,this.image=n,this.scale=o,this.fontStack=u,this.textColor=l}}class Dn{constructor(e){this.sections=e}static fromString(e){return new Dn([new Tl(e,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(e=>e.text.length!==0||e.image&&e.image.namePrimary)}static factory(e){return e instanceof Dn?e:Dn.fromString(e)}toString(){return this.sections.length===0?"":this.sections.map(e=>e.text).join("")}serialize(){const e=["format"];for(const n of this.sections){if(n.image){e.push(["image",n.image.namePrimary]);continue}e.push(n.text);const o={};n.fontStack&&(o["text-font"]=["literal",n.fontStack.split(",")]),n.scale&&(o["font-scale"]=n.scale),n.textColor&&(o["text-color"]=["rgba"].concat(n.textColor.toRenderColor(null).toArray())),e.push(o)}return e}}class or{constructor(e,n){if(this.id=e,this.options=n||{params:{}},this.options.transform){const{a:o,b:u,c:l,d:f,e:v,f:S}=this.options.transform;this.options.transform=new DOMMatrix([o,u,l,f,v,S])}else this.options.transform=new DOMMatrix([1,0,0,1,0,0])}static deserializeId(e){return JSON.parse(e).id}static deserializeFromString(e){const n=JSON.parse(e),{a:o,b:u,c:l,d:f,e:v,f:S}=n.options.transform;return new DOMMatrix([o,u,l,f,v,S]),new or(n.id,n.options)}scaleSelf(e){return this.options.transform=this.options.transform.scale(e),this}serialize(){const e={id:this.id};this.options&&(e.options=this.options);const{a:n,b:o,c:u,d:l,e:f,f:v}=this.options.transform;return e.options.transform={a:n,b:o,c:u,d:l,e:f,f:v},JSON.stringify(e)}}class as{constructor(e){this.namePrimary=e.namePrimary,e.nameSecondary&&(this.nameSecondary=e.nameSecondary),e.optionsPrimary&&(this.optionsPrimary=e.optionsPrimary),e.optionsSecondary&&(this.optionsSecondary=e.optionsSecondary),this.available=e.available}toString(){return this.namePrimary&&this.nameSecondary?`[${this.namePrimary},${this.nameSecondary}]`:this.namePrimary}getPrimary(){return new or(this.namePrimary,{params:this.optionsPrimary&&this.optionsPrimary.params||{}})}getSerializedPrimary(){return this.getPrimary().serialize()}getSecondary(){return this.nameSecondary?new or(this.nameSecondary,{params:this.optionsSecondary&&this.optionsSecondary.params||{}}):null}static from(e){return typeof e=="string"?as.build(e):e}static build(e,n,o,u){return e?new as({namePrimary:e,nameSecondary:n,optionsPrimary:o,optionsSecondary:u,available:!1}):null}}function ya(r,e,n,o){return typeof r=="number"&&r>=0&&r<=255&&typeof e=="number"&&e>=0&&e<=255&&typeof n=="number"&&n>=0&&n<=255?o===void 0||typeof o=="number"&&o>=0&&o<=1?null:`Invalid rgba value [${[r,e,n,o].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof o=="number"?[r,e,n,o]:[r,e,n]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Mo(r){if(r===null||typeof r=="string"||typeof r=="boolean"||typeof r=="number"||r instanceof ki||r instanceof nn||r instanceof Dn||r instanceof as)return!0;if(Array.isArray(r)){for(const e of r)if(!Mo(e))return!1;return!0}if(typeof r=="object"){for(const e in r)if(!Mo(r[e]))return!1;return!0}return!1}function bn(r){if(r===null)return ma;if(typeof r=="string")return Fi;if(typeof r=="boolean")return Li;if(typeof r=="number")return Ot;if(r instanceof ki)return _s;if(r instanceof nn)return gs;if(r instanceof Dn)return Qs;if(r instanceof as)return $o;if(Array.isArray(r)){const e=r.length;let n;for(const o of r){const u=bn(o);if(n){if(n===u)continue;n=Pi;break}n=u}return Es(n||Pi,e)}return To}function Dr(r){const e=typeof r;return r===null?"":e==="string"||e==="number"||e==="boolean"?String(r):r instanceof ki?r.toStringPremultipliedAlpha():r instanceof Dn||r instanceof as?r.toString():JSON.stringify(r)}class kr{constructor(e,n){this.type=e,this.value=n}static parse(e,n){if(e.length!==2)return n.error(`'literal' expression requires exactly one argument, but found ${e.length-1} instead.`);if(!Mo(e[1]))return n.error("invalid value");const o=e[1];let u=bn(o);const l=n.expectedType;return u.kind!=="array"||u.N!==0||!l||l.kind!=="array"||typeof l.N=="number"&&l.N!==0||(u=l),new kr(u,o)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}serialize(){return this.type.kind==="array"||this.type.kind==="object"?["literal",this.value]:this.value instanceof ki?["rgba"].concat(this.value.toRenderColor(null).toArray()):this.value instanceof Dn?this.value.serialize():this.value}}class qn{constructor(e){this.name="ExpressionEvaluationError",this.message=e}toJSON(){return this.message}}const xa={string:Fi,number:Ot,boolean:Li,object:To};class Rr{constructor(e,n){this.type=e,this.args=n}static parse(e,n){if(e.length<2)return n.error("Expected at least one argument.");let o,u=1;const l=e[0];if(l==="array"){let v,S;if(e.length>2){const D=e[1];if(typeof D!="string"||!(D in xa)||D==="object")return n.error('The item type argument of "array" must be one of string, number, boolean',1);v=xa[D],u++}else v=Pi;if(e.length>3){if(e[2]!==null&&(typeof e[2]!="number"||e[2]<0||e[2]!==Math.floor(e[2])))return n.error('The length argument to "array" must be a positive integer literal',2);S=e[2],u++}o=Es(v,S)}else o=xa[l];const f=[];for(;u<e.length;u++){const v=n.parse(e[u],u,Pi);if(!v)return null;f.push(v)}return new Rr(o,f)}evaluate(e){for(let n=0;n<this.args.length;n++){const o=this.args[n].evaluate(e);if(!_a(this.type,bn(o)))return o;if(n===this.args.length-1)throw new qn(`The expression ${JSON.stringify(this.args[n].serialize())} evaluated to ${un(bn(o))} but was expected to be of type ${un(this.type)}.`)}return null}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}serialize(){const e=this.type,n=[e.kind];if(e.kind==="array"){const o=e.itemType;if(o.kind==="string"||o.kind==="number"||o.kind==="boolean"){n.push(o.kind);const u=e.N;(typeof u=="number"||this.args.length>1)&&n.push(u)}}return n.concat(this.args.map(o=>o.serialize()))}}class Ps{constructor(e){this.type=Qs,this.sections=e}static parse(e,n){if(e.length<2)return n.error("Expected at least one argument.");const o=e[1];if(!Array.isArray(o)&&typeof o=="object")return n.error("First argument must be an image or text section.");const u=[];let l=!1;for(let f=1;f<=e.length-1;++f){const v=e[f];if(l&&typeof v=="object"&&!Array.isArray(v)){l=!1;let S=null;if(v["font-scale"]&&(S=n.parseObjectValue(v["font-scale"],f,"font-scale",Ot),!S))return null;let D=null;if(v["text-font"]&&(D=n.parseObjectValue(v["text-font"],f,"text-font",Es(Fi)),!D))return null;let x=null;if(v["text-color"]&&(x=n.parseObjectValue(v["text-color"],f,"text-color",_s),!x))return null;const P=u[u.length-1];P.scale=S,P.font=D,P.textColor=x}else{const S=n.parse(e[f],f,Pi);if(!S)return null;const D=S.type.kind;if(D!=="string"&&D!=="value"&&D!=="null"&&D!=="resolvedImage")return n.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");l=!0,u.push({content:S,scale:null,font:null,textColor:null})}}return new Ps(u)}evaluate(e){return new Dn(this.sections.map(n=>{const o=n.content.evaluate(e);return bn(o)===$o?new Tl("",o,null,null,null):new Tl(Dr(o),null,n.scale?n.scale.evaluate(e):null,n.font?n.font.evaluate(e).join(","):null,n.textColor?n.textColor.evaluate(e):null)}))}eachChild(e){for(const n of this.sections)e(n.content),n.scale&&e(n.scale),n.font&&e(n.font),n.textColor&&e(n.textColor)}outputDefined(){return!1}serialize(){const e=["format"];for(const n of this.sections){e.push(n.content.serialize());const o={};n.scale&&(o["font-scale"]=n.scale.serialize()),n.font&&(o["text-font"]=n.font.serialize()),n.textColor&&(o["text-color"]=n.textColor.serialize()),e.push(o)}return e}}class Ua{constructor(e,n,o,u){this._imageWarnHistory={},this.type=$o,this.inputPrimary=e,this.inputSecondary=n,this.inputPrimaryParams=o,this.inputSecondaryParams=u}static parse(e,n){if(e.length<2)return n.error("Expected two or more arguments.");let o=1;const u=[];function l(){if(o<e.length){const v=n.parse(e[o],o++,Fi);return v?(u.push({image:v,options:void 0}),!0):(n.error(u.length?"Secondary image variant is not a string.":"No image name provided."),!1)}return!0}function f(){if(o<e.length){if((v=e[o])===null||typeof v!="object"||Array.isArray(v))return!0;const S=e[o].params,D=n.concat(o);if(!S)return o++,!0;if(typeof S!="object"||S.constructor!==Object)return D.error('Image options "params" should be an object'),!1;const x={},P=D.concat(void 0,"params");for(const I in S){if(!I)return P.error("Image parameter name should be non-empty"),!1;const M=P.concat(void 0,I).parse(S[I],void 0,_s,void 0,{typeAnnotation:"coerce"});if(!M)return!1;x[I]=M}return u[u.length-1].options=x,o++,!0}var v;return!0}for(let v=0;v<2;v++)if(!l()||!f())return;return new Ua(u[0].image,u[1]?u[1].image:void 0,u[0].options,u[1]?u[1].options:void 0)}evaluateParams(e,n){const o={};if(n){for(const u in n)if(n[u])try{const l=n[u].evaluate(e),f=`Ignoring image parameter "${u}" with semi-transparent color ${l.toString()}`;if(l.a!==1){this._imageWarnHistory[f]||(console.warn(f),this._imageWarnHistory[f]=!0);continue}o[u]=l}catch{continue}if(Object.keys(o).length!==0)return{params:o}}}evaluate(e){const n=as.build(this.inputPrimary.evaluate(e),this.inputSecondary?this.inputSecondary.evaluate(e):void 0,this.inputPrimaryParams?this.evaluateParams(e,this.inputPrimaryParams):void 0,this.inputSecondaryParams?this.evaluateParams(e,this.inputSecondaryParams):void 0);return n&&e.availableImages&&(n.available=e.availableImages.indexOf(n.namePrimary)>-1,n.nameSecondary&&n.available&&e.availableImages&&(n.available=e.availableImages.indexOf(n.nameSecondary)>-1)),n}eachChild(e){if(e(this.inputPrimary),this.inputPrimaryParams)for(const n in this.inputPrimaryParams)this.inputPrimaryParams[n]&&e(this.inputPrimaryParams[n]);if(this.inputSecondary&&(e(this.inputSecondary),this.inputSecondaryParams))for(const n in this.inputSecondaryParams)this.inputSecondaryParams[n]&&e(this.inputSecondaryParams[n])}outputDefined(){return!1}serializeParams(e){const n={};if(e){for(const o in e)e[o]&&(n[o]=e[o].serialize());return{params:n}}}serialize(){const e=["image",this.inputPrimary.serialize()];return this.inputPrimaryParams&&e.push(this.serializeParams(this.inputPrimaryParams)),this.inputSecondary&&(e.push(this.inputSecondary.serialize()),this.inputSecondaryParams&&e.push(this.serializeParams(this.inputSecondaryParams))),e}}function Xo(r){return r instanceof Number?"number":r instanceof String?"string":r instanceof Boolean?"boolean":Array.isArray(r)?"array":r===null?"null":typeof r}const Yo={"to-boolean":Li,"to-color":_s,"to-number":Ot,"to-string":Fi};class ao{constructor(e,n){this.type=e,this.args=n}static parse(e,n){if(e.length<2)return n.error("Expected at least one argument.");const o=e[0],u=[];let l=ma;if(o==="to-array"){if(!Array.isArray(e[1]))return null;const f=e[1].length;if(n.expectedType){if(n.expectedType.kind!=="array")return n.error(`Expected ${n.expectedType.kind} but found array.`);l=Es(n.expectedType.itemType,f)}else{if(!(f>0&&Mo(e[1][0])))return null;l=Es(bn(e[1][0]),f)}for(let v=0;v<f;v++){const S=e[1][v];let D;if(Xo(S)==="array")D=n.parse(S,void 0,l.itemType);else{const x=Xo(S);if(x!==l.itemType.kind)return n.error(`Expected ${l.itemType.kind} but found ${x}.`);D=n.registry.literal.parse(["literal",S===void 0?null:S],n)}if(!D)return null;u.push(D)}}else{if((o==="to-boolean"||o==="to-string")&&e.length!==2)return n.error("Expected one argument.");l=Yo[o];for(let f=1;f<e.length;f++){const v=n.parse(e[f],f,Pi);if(!v)return null;u.push(v)}}return new ao(l,u)}evaluate(e){if(this.type.kind==="boolean")return!!this.args[0].evaluate(e);if(this.type.kind==="color"){let n,o;for(const u of this.args){if(n=u.evaluate(e),o=null,n instanceof ki)return n;if(typeof n=="string"){const l=e.parseColor(n);if(l)return l}else if(Array.isArray(n)&&(o=n.length<3||n.length>4?`Invalid rbga value ${JSON.stringify(n)}: expected an array containing either three or four numeric values.`:ya(n[0],n[1],n[2],n[3]),!o))return new ki(n[0]/255,n[1]/255,n[2]/255,n[3])}throw new qn(o||`Could not parse color from value '${typeof n=="string"?n:String(JSON.stringify(n))}'`)}if(this.type.kind==="number"){let n=null;for(const o of this.args){if(n=o.evaluate(e),n===null)return 0;const u=Number(n);if(!isNaN(u))return u}throw new qn(`Could not convert ${JSON.stringify(n)} to number.`)}return this.type.kind==="formatted"?Dn.fromString(Dr(this.args[0].evaluate(e))):this.type.kind==="resolvedImage"?as.build(Dr(this.args[0].evaluate(e))):this.type.kind==="array"?this.args.map(n=>n.evaluate(e)):Dr(this.args[0].evaluate(e))}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}serialize(){if(this.type.kind==="formatted")return new Ps([{content:this.args[0],scale:null,font:null,textColor:null}]).serialize();if(this.type.kind==="resolvedImage")return new Ua(this.args[0]).serialize();const e=this.type.kind==="array"?[]:[`to-${this.type.kind}`];return this.eachChild(n=>{e.push(n.serialize())}),e}}const Qc=["Unknown","Point","LineString","Polygon"];class ja{constructor(e,n){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null,this.featureTileCoord=null,this.featureDistanceData=null,this.scope=e,this.options=n}id(){return this.feature&&this.feature.id!==void 0?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type=="number"?Qc[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}measureLight(e){return this.globals.brightness||0}distanceFromCenter(){if(this.featureTileCoord&&this.featureDistanceData){const e=this.featureDistanceData.center,n=this.featureDistanceData.scale,{x:o,y:u}=this.featureTileCoord;return this.featureDistanceData.bearing[0]*(o*n-e[0])+this.featureDistanceData.bearing[1]*(u*n-e[1])}return 0}parseColor(e){let n=this._parseColorCache[e];return n||(n=this._parseColorCache[e]=ki.parse(e)),n}getConfig(e){return this.options?this.options.get(e):null}}class ar{constructor(e,n,o,u,l){this.name=e,this.type=n,this._evaluate=o,this.args=u,this._overloadIndex=l}evaluate(e){if(!this._evaluate){const n=ar.definitions[this.name];this._evaluate=Array.isArray(n)?n[2]:n.overloads[this._overloadIndex][1]}return this._evaluate(e,this.args)}eachChild(e){this.args.forEach(e)}outputDefined(){return!1}serialize(){return[this.name].concat(this.args.map(e=>e.serialize()))}static parse(e,n){const o=e[0],u=ar.definitions[o];if(!u)return n.error(`Unknown expression "${o}". If you wanted a literal array, use ["literal", [...]].`,0);const l=Array.isArray(u)?u[0]:u.type,f=Array.isArray(u)?[[u[1],u[2]]]:u.overloads,v=[];let S=null,D=-1;for(const[x,P]of f){if(Array.isArray(x)&&x.length!==e.length-1)continue;v.push(x),D++,S=new Qr(n.registry,n.path,null,n.scope,void 0,n._scope,n.options);const I=[];let M=!1;for(let C=1;C<e.length;C++){const k=e[C],V=Array.isArray(x)?x[C-1]:x.type,U=S.parse(k,1+I.length,V);if(!U){M=!0;break}I.push(U)}if(!M)if(Array.isArray(x)&&x.length!==I.length)S.error(`Expected ${x.length} arguments, but found ${I.length} instead.`);else{for(let C=0;C<I.length;C++){const k=Array.isArray(x)?x[C]:x.type,V=I[C];S.concat(C+1).checkSubtype(k,V.type)}if(S.errors.length===0)return new ar(o,l,P,I,D)}}if(v.length===1)n.errors.push(...S.errors);else{const x=(v.length?v:f.map(([I])=>I)).map(Ml).join(" | "),P=[];for(let I=1;I<e.length;I++){const M=n.parse(e[I],1+P.length);if(!M)return null;P.push(un(M.type))}n.error(`Expected arguments of type ${x}, but found (${P.join(", ")}) instead.`)}return null}static register(e,n){ar.definitions=n;for(const o in n)e[o]=ar}}function Ml(r){return Array.isArray(r)?`(${r.map(un).join(", ")})`:`(${un(r.type)}...)`}class Sl{constructor(e,n,o){this.type=gs,this.locale=o,this.caseSensitive=e,this.diacriticSensitive=n}static parse(e,n){if(e.length!==2)return n.error("Expected one argument.");const o=e[1];if(typeof o!="object"||Array.isArray(o))return n.error("Collator options argument must be an object.");const u=o["case-sensitive"]===void 0?n.parse(!1,1,Li):n.parseObjectValue(o["case-sensitive"],1,"case-sensitive",Li);if(!u)return null;const l=o["diacritic-sensitive"]===void 0?n.parse(!1,1,Li):n.parseObjectValue(o["diacritic-sensitive"],1,"diacritic-sensitive",Li);if(!l)return null;let f=null;return o.locale&&(f=n.parseObjectValue(o.locale,1,"locale",Fi),!f)?null:new Sl(u,l,f)}evaluate(e){return new nn(this.caseSensitive.evaluate(e),this.diacriticSensitive.evaluate(e),this.locale?this.locale.evaluate(e):null)}eachChild(e){e(this.caseSensitive),e(this.diacriticSensitive),this.locale&&e(this.locale)}outputDefined(){return!1}serialize(){const e={};return e["case-sensitive"]=this.caseSensitive.serialize(),e["diacritic-sensitive"]=this.diacriticSensitive.serialize(),this.locale&&(e.locale=this.locale.serialize()),["collator",e]}}function Xh(r,e,n=0,o=r.length-1,u=eh){for(;o>n;){if(o-n>600){const S=o-n+1,D=e-n+1,x=Math.log(S),P=.5*Math.exp(2*x/3),I=.5*Math.sqrt(x*P*(S-P)/S)*(D-S/2<0?-1:1);Xh(r,e,Math.max(n,Math.floor(e-D*P/S+I)),Math.min(o,Math.floor(e+(S-D)*P/S+I)),u)}const l=r[e];let f=n,v=o;for(El(r,n,e),u(r[o],l)>0&&El(r,n,o);f<v;){for(El(r,f,v),f++,v--;u(r[f],l)<0;)f++;for(;u(r[v],l)>0;)v--}u(r[n],l)===0?El(r,n,v):(v++,El(r,v,o)),v<=e&&(n=v+1),e<=v&&(o=v-1)}}function El(r,e,n){const o=r[e];r[e]=r[n],r[n]=o}function eh(r,e){return r<e?-1:r>e?1:0}function Ld(r){let e=0;for(let n,o,u=0,l=r.length,f=l-1;u<l;f=u++)n=r[u],o=r[f],e+=(o.x-n.x)*(n.y+o.y);return e}function Ga(r,e){r[0]=Math.min(r[0],e[0]),r[1]=Math.min(r[1],e[1]),r[2]=Math.max(r[2],e[0]),r[3]=Math.max(r[3],e[1])}function Za(r,e){return!(r[0]<=e[0]||r[2]>=e[2]||r[1]<=e[1]||r[3]>=e[3])}function Pl(r,e,n){const o=r[0]-e[0],u=r[1]-e[1],l=r[0]-n[0],f=r[1]-n[1];return o*f-l*u==0&&o*l<=0&&u*f<=0}function ks(r,e,n=!1){let o=!1;for(let v=0,S=e.length;v<S;v++){const D=e[v];for(let x=0,P=D.length,I=P-1;x<P;I=x++){const M=D[I],C=D[x];if(Pl(r,M,C))return n;(l=M)[1]>(u=r)[1]!=(f=C)[1]>u[1]&&u[0]<(f[0]-l[0])*(u[1]-l[1])/(f[1]-l[1])+l[0]&&(o=!o)}}var u,l,f;return o}function Yh(r,e,n,o){const u=o[0]-n[0],l=o[1]-n[1],f=(r[0]-n[0])*l-u*(r[1]-n[1]),v=(e[0]-n[0])*l-u*(e[1]-n[1]);return f>0&&v<0||f<0&&v>0}function Ko(r,e,n,o){return(u=[o[0]-n[0],o[1]-n[1]])[0]*(l=[e[0]-r[0],e[1]-r[1]])[1]-u[1]*l[0]!=0&&!(!Yh(r,e,n,o)||!Yh(n,o,r,e));var u,l}const ls=8192;function Kh(r,e){const n=(180+r[0])/360,o=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+r[1]*Math.PI/360)))/360,u=Math.pow(2,e.z);return[Math.round(n*u*ls),Math.round(o*u*ls)]}function Jh(r,e){for(let n=0;n<e.length;n++)if(ks(r,e[n]))return!0;return!1}function zd(r,e,n){for(const o of n)for(let u=0,l=o.length,f=l-1;u<l;f=u++)if(Ko(r,e,o[f],o[u]))return!0;return!1}function ic(r,e){for(let n=0;n<r.length;++n)if(!ks(r[n],e))return!1;for(let n=0;n<r.length-1;++n)if(zd(r[n],r[n+1],e))return!1;return!0}function Jo(r,e){for(let n=0;n<e.length;n++)if(ic(r,e[n]))return!0;return!1}function bi(r,e,n){const o=[];for(let u=0;u<r.length;u++){const l=[];for(let f=0;f<r[u].length;f++){const v=Kh(r[u][f],n);Ga(e,v),l.push(v)}o.push(l)}return o}function Wt(r,e,n){const o=[];for(let u=0;u<r.length;u++){const l=bi(r[u],e,n);o.push(l)}return o}function Al(r,e,n,o){if(r[0]<n[0]||r[0]>n[2]){const u=.5*o;let l=r[0]-n[0]>u?-o:n[0]-r[0]>u?o:0;l===0&&(l=r[0]-n[2]>u?-o:n[2]-r[0]>u?o:0),r[0]+=l}Ga(e,r)}function ci(r,e,n,o){const u=Math.pow(2,o.z)*ls,l=[o.x*ls,o.y*ls],f=[];if(!r)return f;for(const v of r)for(const S of v){const D=[S.x+l[0],S.y+l[1]];Al(D,e,n,u),f.push(D)}return f}function lr(r,e,n,o){const u=Math.pow(2,o.z)*ls,l=[o.x*ls,o.y*ls],f=[];if(!r)return f;for(const S of r){const D=[];for(const x of S){const P=[x.x+l[0],x.y+l[1]];Ga(e,P),D.push(P)}f.push(D)}if(e[2]-e[0]<=u/2){(v=e)[0]=v[1]=1/0,v[2]=v[3]=-1/0;for(const S of f)for(const D of S)Al(D,e,n,u)}var v;return f}class cr{constructor(e,n){this.type=Li,this.geojson=e,this.geometries=n}static parse(e,n){if(e.length!==2)return n.error(`'within' expression requires exactly one argument, but found ${e.length-1} instead.`);if(Mo(e[1])){const o=e[1];if(o.type==="FeatureCollection")for(let u=0;u<o.features.length;++u){const l=o.features[u].geometry.type;if(l==="Polygon"||l==="MultiPolygon")return new cr(o,o.features[u].geometry)}else if(o.type==="Feature"){const u=o.geometry.type;if(u==="Polygon"||u==="MultiPolygon")return new cr(o,o.geometry)}else if(o.type==="Polygon"||o.type==="MultiPolygon")return new cr(o,o)}return n.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(e){if(e.geometry()!=null&&e.canonicalID()!=null){if(e.geometryType()==="Point")return function(n,o){const u=[1/0,1/0,-1/0,-1/0],l=[1/0,1/0,-1/0,-1/0],f=n.canonicalID();if(!f)return!1;if(o.type==="Polygon"){const v=bi(o.coordinates,l,f),S=ci(n.geometry(),u,l,f);if(!Za(u,l))return!1;for(const D of S)if(!ks(D,v))return!1}if(o.type==="MultiPolygon"){const v=Wt(o.coordinates,l,f),S=ci(n.geometry(),u,l,f);if(!Za(u,l))return!1;for(const D of S)if(!Jh(D,v))return!1}return!0}(e,this.geometries);if(e.geometryType()==="LineString")return function(n,o){const u=[1/0,1/0,-1/0,-1/0],l=[1/0,1/0,-1/0,-1/0],f=n.canonicalID();if(!f)return!1;if(o.type==="Polygon"){const v=bi(o.coordinates,l,f),S=lr(n.geometry(),u,l,f);if(!Za(u,l))return!1;for(const D of S)if(!ic(D,v))return!1}if(o.type==="MultiPolygon"){const v=Wt(o.coordinates,l,f),S=lr(n.geometry(),u,l,f);if(!Za(u,l))return!1;for(const D of S)if(!Jo(D,v))return!1}return!0}(e,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}serialize(){return["within",this.geojson]}}const ti={kilometers:1,miles:1e3/1609.344,nauticalmiles:1e3/1852,meters:1e3,metres:1e3,yards:1e3/.9144,feet:1e3/.3048,inches:1e3/.0254},Xr=1/298.257223563,nc=Xr*(2-Xr),Yr=Math.PI/180;class Ha{static fromTile(e,n,o){const u=Math.PI*(1-2*(e+.5)/Math.pow(2,n)),l=Math.atan(.5*(Math.exp(u)-Math.exp(-u)))/Yr;return new Ha(l,o)}static get units(){return ti}constructor(e,n){if(e===void 0)throw new Error("No latitude given.");if(n&&!ti[n])throw new Error(`Unknown unit ${n}. Use one of: ${Object.keys(ti).join(", ")}`);const o=6378.137*Yr*(n?ti[n]:1),u=Math.cos(e*Yr),l=1/(1-nc*(1-u*u)),f=Math.sqrt(l);this.kx=o*f*u,this.ky=o*f*l*(1-nc)}distance(e,n){const o=Rs(e[0]-n[0])*this.kx,u=(e[1]-n[1])*this.ky;return Math.sqrt(o*o+u*u)}bearing(e,n){const o=Rs(n[0]-e[0])*this.kx;return Math.atan2(o,(n[1]-e[1])*this.ky)/Yr}destination(e,n,o){const u=o*Yr;return this.offset(e,Math.sin(u)*n,Math.cos(u)*n)}offset(e,n,o){return[e[0]+n/this.kx,e[1]+o/this.ky]}lineDistance(e){let n=0;for(let o=0;o<e.length-1;o++)n+=this.distance(e[o],e[o+1]);return n}area(e){let n=0;for(let o=0;o<e.length;o++){const u=e[o];for(let l=0,f=u.length,v=f-1;l<f;v=l++)n+=Rs(u[l][0]-u[v][0])*(u[l][1]+u[v][1])*(o?-1:1)}return Math.abs(n)/2*this.kx*this.ky}along(e,n){let o=0;if(n<=0)return e[0];for(let u=0;u<e.length-1;u++){const l=e[u],f=e[u+1],v=this.distance(l,f);if(o+=v,o>n)return bs(l,f,(n-(o-v))/v)}return e[e.length-1]}pointToSegmentDistance(e,n,o){let[u,l]=n,f=Rs(o[0]-u)*this.kx,v=(o[1]-l)*this.ky;if(f!==0||v!==0){const S=(Rs(e[0]-u)*this.kx*f+(e[1]-l)*this.ky*v)/(f*f+v*v);S>1?(u=o[0],l=o[1]):S>0&&(u+=f/this.kx*S,l+=v/this.ky*S)}return f=Rs(e[0]-u)*this.kx,v=(e[1]-l)*this.ky,Math.sqrt(f*f+v*v)}pointOnLine(e,n){let o=1/0,u=e[0][0],l=e[0][1],f=0,v=0;for(let S=0;S<e.length-1;S++){let D=e[S][0],x=e[S][1],P=Rs(e[S+1][0]-D)*this.kx,I=(e[S+1][1]-x)*this.ky,M=0;P===0&&I===0||(M=(Rs(n[0]-D)*this.kx*P+(n[1]-x)*this.ky*I)/(P*P+I*I),M>1?(D=e[S+1][0],x=e[S+1][1]):M>0&&(D+=P/this.kx*M,x+=I/this.ky*M)),P=Rs(n[0]-D)*this.kx,I=(n[1]-x)*this.ky;const C=P*P+I*I;C<o&&(o=C,u=D,l=x,f=S,v=M)}return{point:[u,l],index:f,t:Math.max(0,Math.min(1,v))}}lineSlice(e,n,o){let u=this.pointOnLine(o,e),l=this.pointOnLine(o,n);if(u.index>l.index||u.index===l.index&&u.t>l.t){const D=u;u=l,l=D}const f=[u.point],v=u.index+1,S=l.index;!So(o[v],f[0])&&v<=S&&f.push(o[v]);for(let D=v+1;D<=S;D++)f.push(o[D]);return So(o[S],l.point)||f.push(l.point),f}lineSliceAlong(e,n,o){let u=0;const l=[];for(let f=0;f<o.length-1;f++){const v=o[f],S=o[f+1],D=this.distance(v,S);if(u+=D,u>e&&l.length===0&&l.push(bs(v,S,(e-(u-D))/D)),u>=n)return l.push(bs(v,S,(n-(u-D))/D)),l;u>e&&l.push(S)}return l}bufferPoint(e,n){const o=n/this.ky,u=n/this.kx;return[e[0]-u,e[1]-o,e[0]+u,e[1]+o]}bufferBBox(e,n){const o=n/this.ky,u=n/this.kx;return[e[0]-u,e[1]-o,e[2]+u,e[3]+o]}insideBBox(e,n){return Rs(e[0]-n[0])>=0&&Rs(e[0]-n[2])<=0&&e[1]>=n[1]&&e[1]<=n[3]}}function So(r,e){return r[0]===e[0]&&r[1]===e[1]}function bs(r,e,n){const o=Rs(e[0]-r[0]);return[r[0]+o*n,r[1]+(e[1]-r[1])*n]}function Rs(r){for(;r<-180;)r+=360;for(;r>180;)r-=360;return r}class sc{constructor(e=[],n=(o,u)=>o<u?-1:o>u?1:0){if(this.data=e,this.length=this.data.length,this.compare=n,this.length>0)for(let o=(this.length>>1)-1;o>=0;o--)this._down(o)}push(e){this.data.push(e),this._up(this.length++)}pop(){if(this.length===0)return;const e=this.data[0],n=this.data.pop();return--this.length>0&&(this.data[0]=n,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:n,compare:o}=this,u=n[e];for(;e>0;){const l=e-1>>1,f=n[l];if(o(u,f)>=0)break;n[e]=f,e=l}n[e]=u}_down(e){const{data:n,compare:o}=this,u=this.length>>1,l=n[e];for(;e<u;){let f=1+(e<<1);const v=f+1;if(v<this.length&&o(n[v],n[f])<0&&(f=v),o(n[f],l)>=0)break;n[e]=n[f],e=f}n[e]=l}}var Tt=8192;function va(r,e){return e.dist-r.dist}const Eo=100,ys=50;function Qh(r){const e=[1/0,1/0,-1/0,-1/0];if(e.length!==r.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==r[n])return!1;return!0}function Or(r){return r[1]-r[0]+1}function Po(r,e){const n=r[1]>=r[0]&&r[1]<e;return n||console.warn("Distance Expression: Index is out of range"),n}function Kr(r,e){if(r[0]>r[1])return[null,null];const n=Or(r);if(e){if(n===2)return[r,null];const o=Math.floor(n/2);return[[r[0],r[0]+o],[r[0]+o,r[1]]]}{if(n===1)return[r,null];const o=Math.floor(n/2)-1;return[[r[0],r[0]+o],[r[0]+o+1,r[1]]]}}function Qo(r,e){const n=[1/0,1/0,-1/0,-1/0];if(!Po(e,r.length))return n;for(let o=e[0];o<=e[1];++o)Ga(n,r[o]);return n}function hr(r){const e=[1/0,1/0,-1/0,-1/0];for(let n=0;n<r.length;++n)for(let o=0;o<r[n].length;++o)Ga(e,r[n][o]);return e}function Ao(r,e,n){if(Qh(r)||Qh(e))return NaN;let o=0,u=0;return r[2]<e[0]&&(o=e[0]-r[2]),r[0]>e[2]&&(o=r[0]-e[2]),r[1]>e[3]&&(u=r[1]-e[3]),r[3]<e[1]&&(u=e[1]-r[3]),n.distance([0,0],[o,u])}function eu(r){return 360*r-180}function th(r){return 360/Math.PI*Math.atan(Math.exp((180-360*r)*Math.PI/180))-90}function qa(r,e){const n=Math.pow(2,e.z),o=(r.y/Tt+e.y)/n;return[eu((r.x/Tt+e.x)/n),th(o)]}function rc(r,e){const n=[];for(let o=0;o<r.length;++o)n.push(qa(r[o],e));return n}function Cl(r,e,n){const o=n.pointOnLine(e,r).point;return n.distance(r,o)}function ba(r,e,n,o,u){const l=n.slice(o[0],o[1]+1);let f=1/0;for(let v=e[0];v<=e[1];++v)if((f=Math.min(f,Cl(r[v],l,u)))===0)return 0;return f}function wa(r,e,n,o,u){const l=Math.min(u.pointToSegmentDistance(r,n,o),u.pointToSegmentDistance(e,n,o)),f=Math.min(u.pointToSegmentDistance(n,r,e),u.pointToSegmentDistance(o,r,e));return Math.min(l,f)}function Co(r,e,n,o,u){if(!Po(e,r.length)||!Po(o,n.length))return NaN;let l=1/0;for(let f=e[0];f<e[1];++f)for(let v=o[0];v<o[1];++v){if(Ko(r[f],r[f+1],n[v],n[v+1]))return 0;l=Math.min(l,wa(r[f],r[f+1],n[v],n[v+1],u))}return l}function tu(r,e,n,o,u){if(!Po(e,r.length)||!Po(o,n.length))return NaN;let l=1/0;for(let f=e[0];f<=e[1];++f)for(let v=o[0];v<=o[1];++v)if((l=Math.min(l,u.distance(r[f],n[v])))===0)return l;return l}function Dd(r,e,n){if(ks(r,e,!0))return 0;let o=1/0;for(const u of e){const l=u.length;if(l<2)return console.warn("Distance Expression: Invalid polygon!"),NaN;if(u[0]!==u[l-1]&&(o=Math.min(o,n.pointToSegmentDistance(r,u[l-1],u[0])))===0||(o=Math.min(o,Cl(r,u,n)))===0)return o}return o}function Wa(r,e,n,o){if(!Po(e,r.length))return NaN;for(let l=e[0];l<=e[1];++l)if(ks(r[l],n,!0))return 0;let u=1/0;for(let l=e[0];l<e[1];++l)for(const f of n)for(let v=0,S=f.length,D=S-1;v<S;D=v++){if(Ko(r[l],r[l+1],f[D],f[v]))return 0;u=Math.min(u,wa(r[l],r[l+1],f[D],f[v],o))}return u}function ih(r,e){for(const n of r)for(let o=0;o<=n.length-1;++o)if(ks(n[o],e,!0))return!0;return!1}function nh(r,e,n,o=1/0){const u=hr(r),l=hr(e);if(o!==1/0&&Ao(u,l,n)>=o)return o;if(Za(u,l)){if(ih(r,e))return 0}else if(ih(e,r))return 0;let f=o;for(const v of r)for(let S=0,D=v.length,x=D-1;S<D;x=S++)for(const P of e)for(let I=0,M=P.length,C=M-1;I<M;C=I++){if(Ko(v[x],v[S],P[C],P[I]))return 0;f=Math.min(f,wa(v[x],v[S],P[C],P[I],n))}return f}function ur(r,e,n,o,u,l,f){if(l===null||f===null)return;const v=Ao(Qo(o,l),Qo(u,f),n);v<e&&r.push({dist:v,range1:l,range2:f})}function sh(r,e,n,o,u=1/0){let l=Math.min(o.distance(r[0],n[0][0]),u);if(l===0)return l;const f=new sc([{dist:0,range1:[0,r.length-1],range2:[0,0]}],va),v=e?ys:Eo,S=hr(n);for(;f.length;){const D=f.pop();if(D.dist>=l)continue;const x=D.range1;if(Or(x)<=v){if(!Po(x,r.length))return NaN;if(e){const P=Wa(r,x,n,o);if((l=Math.min(l,P))===0)return l}else for(let P=x[0];P<=x[1];++P){const I=Dd(r[P],n,o);if((l=Math.min(l,I))===0)return l}}else{const P=Kr(x,e);if(P[0]!==null){const I=Ao(Qo(r,P[0]),S,o);I<l&&f.push({dist:I,range1:P[0],range2:[0,0]})}if(P[1]!==null){const I=Ao(Qo(r,P[1]),S,o);I<l&&f.push({dist:I,range1:P[1],range2:[0,0]})}}}return l}function rh(r,e,n,o,u,l=1/0){let f=Math.min(l,u.distance(r[0],n[0]));if(f===0)return f;const v=new sc([{dist:0,range1:[0,r.length-1],range2:[0,n.length-1]}],va),S=e?ys:Eo,D=o?ys:Eo;for(;v.length;){const x=v.pop();if(x.dist>=f)continue;const P=x.range1,I=x.range2;if(Or(P)<=S&&Or(I)<=D){if(!Po(P,r.length)||!Po(I,n.length))return NaN;if(e&&o?f=Math.min(f,Co(r,P,n,I,u)):e||o?e&&!o?f=Math.min(f,ba(n,I,r,P,u)):!e&&o&&(f=Math.min(f,ba(r,P,n,I,u))):f=Math.min(f,tu(r,P,n,I,u)),f===0)return f}else{const M=Kr(P,e),C=Kr(I,o);ur(v,f,u,r,n,M[0],C[0]),ur(v,f,u,r,n,M[0],C[1]),ur(v,f,u,r,n,M[1],C[0]),ur(v,f,u,r,n,M[1],C[1])}}return f}function xr(r,e,n,o,u=1/0){let l=u;const f=Qo(r,[0,r.length-1]);for(const v of n)if(!(l!==1/0&&Ao(f,Qo(v,[0,v.length-1]),o)>=l)&&(l=Math.min(l,rh(r,e,v,!0,o,l)),l===0))return l;return l}function ea(r,e,n,o,u=1/0){let l=u;const f=Qo(r,[0,r.length-1]);for(const v of n){if(l!==1/0&&Ao(f,hr(v),o)>=l)continue;const S=sh(r,e,v,o,l);if(isNaN(S))return S;if((l=Math.min(l,S))===0)return l}return l}function oc(r){return r==="Point"||r==="MultiPoint"||r==="LineString"||r==="MultiLineString"||r==="Polygon"||r==="MultiPolygon"}class Jr{constructor(e,n){this.type=Ot,this.geojson=e,this.geometries=n}static parse(e,n){if(e.length!==2)return n.error(`'distance' expression requires either one argument, but found ' ${e.length-1} instead.`);if(Mo(e[1])){const o=e[1];if(o.type==="FeatureCollection"){for(let u=0;u<o.features.length;++u)if(oc(o.features[u].geometry.type))return new Jr(o,o.features[u].geometry)}else if(o.type==="Feature"){if(oc(o.geometry.type))return new Jr(o,o.geometry)}else if(oc(o.type))return new Jr(o,o)}return n.error("'distance' expression needs to be an array with format ['Distance', GeoJSONObj].")}evaluate(e){const n=e.geometry(),o=e.canonicalID();if(n!=null&&o!=null){if(e.geometryType()==="Point")return function(u,l,f){const v=[];for(const D of u)for(const x of D)v.push(qa(x,l));const S=new Ha(v[0][1],"meters");return f.type==="Point"||f.type==="MultiPoint"||f.type==="LineString"?rh(v,!1,f.type==="Point"?[f.coordinates]:f.coordinates,f.type==="LineString",S):f.type==="MultiLineString"?xr(v,!1,f.coordinates,S):f.type==="Polygon"||f.type==="MultiPolygon"?ea(v,!1,f.type==="Polygon"?[f.coordinates]:f.coordinates,S):null}(n,o,this.geometries);if(e.geometryType()==="LineString")return function(u,l,f){const v=[];for(const D of u){const x=[];for(const P of D)x.push(qa(P,l));v.push(x)}const S=new Ha(v[0][0][1],"meters");if(f.type==="Point"||f.type==="MultiPoint"||f.type==="LineString")return xr(f.type==="Point"?[f.coordinates]:f.coordinates,f.type==="LineString",v,S);if(f.type==="MultiLineString"){let D=1/0;for(let x=0;x<f.coordinates.length;x++){const P=xr(f.coordinates[x],!0,v,S,D);if(isNaN(P))return P;if((D=Math.min(D,P))===0)return D}return D}if(f.type==="Polygon"||f.type==="MultiPolygon"){let D=1/0;for(let x=0;x<v.length;x++){const P=ea(v[x],!0,f.type==="Polygon"?[f.coordinates]:f.coordinates,S,D);if(isNaN(P))return P;if((D=Math.min(D,P))===0)return D}return D}return null}(n,o,this.geometries);if(e.geometryType()==="Polygon")return function(u,l,f){const v=[];for(const D of function(x,P){const I=x.length;if(I<=1)return[x];const M=[];let C,k;for(let V=0;V<I;V++){const U=Ld(x[V]);U!==0&&(x[V].area=Math.abs(U),k===void 0&&(k=U<0),k===U<0?(C&&M.push(C),C=[x[V]]):C.push(x[V]))}return C&&M.push(C),M}(u)){const x=[];for(let P=0;P<D.length;++P)x.push(rc(D[P],l));v.push(x)}const S=new Ha(v[0][0][0][1],"meters");if(f.type==="Point"||f.type==="MultiPoint"||f.type==="LineString")return ea(f.type==="Point"?[f.coordinates]:f.coordinates,f.type==="LineString",v,S);if(f.type==="MultiLineString"){let D=1/0;for(let x=0;x<f.coordinates.length;x++){const P=ea(f.coordinates[x],!0,v,S,D);if(isNaN(P))return P;if((D=Math.min(D,P))===0)return D}return D}return f.type==="Polygon"||f.type==="MultiPolygon"?function(D,x,P){let I=1/0;for(const M of D)for(const C of x){const k=nh(M,C,P,I);if(isNaN(k))return k;if((I=Math.min(I,k))===0)return I}return I}(f.type==="Polygon"?[f.coordinates]:f.coordinates,v,S):null}(n,o,this.geometries);console.warn("Distance Expression: currently only evaluates valid Point/LineString/Polygon geometries.")}else console.warn("Distance Expression: requirs valid feature and canonical information.");return null}eachChild(){}outputDefined(){return!0}serialize(){return["distance",this.geojson]}}function ac(r,e){switch(r){case"string":return Dr(e);case"number":return+e;case"boolean":return!!e;case"color":return ki.parse(e);case"formatted":return Dn.fromString(Dr(e));case"resolvedImage":return as.build(Dr(e))}return e}function lc(r,e,n,o){return o!==void 0&&(r=o*Math.round(r/o)),e!==void 0&&r<e&&(r=e),n!==void 0&&r>n&&(r=n),r}class Ta{constructor(e,n,o){this.type=e,this.key=n,this.scope=o}static parse(e,n){let o=n.expectedType;if(o==null&&(o=Pi),e.length<2||e.length>3)return n.error("Invalid number of arguments for 'config' expression.");const u=n.parse(e[1],1);if(!(u instanceof kr))return n.error("Key name of 'config' expression must be a string literal.");if(e.length>=3){const l=n.parse(e[2],2);return l instanceof kr?new Ta(o,Dr(u.value),Dr(l.value)):n.error("Scope of 'config' expression must be a string literal.")}return new Ta(o,Dr(u.value))}evaluate(e){const n=[this.key,this.scope,e.scope].filter(Boolean).join(""),o=e.getConfig(n);if(!o)return null;const{type:u,value:l,values:f,minValue:v,maxValue:S,stepValue:D}=o,x=o.default.evaluate(e);let P=x;if(l){const I=e.scope;e.scope=(I||"").split("").slice(1).join(""),P=l.evaluate(e),e.scope=I}return u&&(P=ac(u,P)),P===void 0||v===void 0&&S===void 0&&D===void 0||(typeof P=="number"?P=lc(P,v,S,D):Array.isArray(P)&&(P=P.map(I=>typeof I=="number"?lc(I,v,S,D):I))),l!==void 0&&P!==void 0&&f&&!f.includes(P)&&(P=x,u&&(P=ac(u,P))),(u&&u!==this.type||P!==void 0&&bn(P)!==this.type)&&(P=ac(this.type.kind,P)),P}eachChild(){}outputDefined(){return!1}serialize(){const e=["config",this.key];return this.scope&&e.concat(this.key),e}}function lo(r){if(r instanceof ar&&(r.name==="get"&&r.args.length===1||r.name==="feature-state"||r.name==="has"&&r.args.length===1||r.name==="properties"||r.name==="geometry-type"||r.name==="id"||/^filter-/.test(r.name))||r instanceof cr||r instanceof Jr)return!1;let e=!0;return r.eachChild(n=>{e&&!lo(n)&&(e=!1)}),e}function Il(r){if(r instanceof ar&&r.name==="feature-state")return!1;let e=!0;return r.eachChild(n=>{e&&!Il(n)&&(e=!1)}),e}function Fr(r){if(r instanceof Ta)return new Set([r.key]);let e=new Set;return r.eachChild(n=>{e=new Set([...e,...Fr(n)])}),e}function co(r,e){if(r instanceof ar&&e.indexOf(r.name)>=0)return!1;let n=!0;return r.eachChild(o=>{n&&!co(o,e)&&(n=!1)}),n}class ta{constructor(e,n){this.type=n.type,this.name=e,this.boundExpression=n}static parse(e,n){if(e.length!==2||typeof e[1]!="string")return n.error("'var' expression requires exactly one string literal argument.");const o=e[1];return n.scope.has(o)?new ta(o,n.scope.get(o)):n.error(`Unknown variable "${o}". Make sure "${o}" has been bound in an enclosing "let" expression before using it.`,1)}evaluate(e){return this.boundExpression.evaluate(e)}eachChild(){}outputDefined(){return!1}serialize(){return["var",this.name]}}class cc{constructor(e,n=[],o,u=new Cn,l=[],f,v){this.registry=e,this.path=n,this.key=n.map(S=>typeof S=="string"?`['${S}']`:`[${S}]`).join(""),this.scope=u,this.errors=l,this.expectedType=o,this._scope=f,this.options=v}parse(e,n,o,u,l={}){return n||o?this.concat(n,null,o,u)._parse(e,l):this._parse(e,l)}parseObjectValue(e,n,o,u,l,f={}){return this.concat(n,o,u,l)._parse(e,f)}_parse(e,n){function o(u,l,f){return f==="assert"?new Rr(l,[u]):f==="coerce"?new ao(l,[u]):u}if(e!==null&&typeof e!="string"&&typeof e!="boolean"&&typeof e!="number"||(e=["literal",e]),Array.isArray(e)){if(e.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');const u=typeof e[0]=="string"?this.registry[e[0]]:void 0;if(u){let l=u.parse(e,this);if(!l)return null;if(this.expectedType){const f=this.expectedType,v=l.type;if(f.kind!=="string"&&f.kind!=="number"&&f.kind!=="boolean"&&f.kind!=="object"&&f.kind!=="array"||v.kind!=="value")if(f.kind!=="color"&&f.kind!=="formatted"&&f.kind!=="resolvedImage"||v.kind!=="value"&&v.kind!=="string"){if(this.checkSubtype(f,v))return null}else l=o(l,f,n.typeAnnotation||"coerce");else l=o(l,f,n.typeAnnotation||"assert")}if(!(l instanceof kr)&&l.type.kind!=="resolvedImage"&&Ll(l)){const f=new ja(this._scope,this.options);try{l=new kr(l.type,l.evaluate(f))}catch(v){return this.error(v.message),null}}return l}return ao.parse(["to-array",e],this)}return this.error(e===void 0?"'undefined' value invalid. Use null instead.":typeof e=="object"?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof e} instead.`)}concat(e,n,o,u){let l=typeof e=="number"?this.path.concat(e):this.path;l=typeof n=="string"?l.concat(n):l;const f=u?this.scope.concat(u):this.scope;return new cc(this.registry,l,o||null,f,this.errors,this._scope,this.options)}error(e,...n){const o=`${this.key}${n.map(u=>`[${u}]`).join("")}`;this.errors.push(new os(o,e))}checkSubtype(e,n){const o=_a(e,n);return o&&this.error(o),o}}var Qr=cc;function Ll(r){if(r instanceof ta)return Ll(r.boundExpression);if(r instanceof ar&&r.name==="error"||r instanceof Sl||r instanceof cr||r instanceof Jr||r instanceof Ta)return!1;const e=r instanceof ao||r instanceof Rr;let n=!0;return r.eachChild(o=>{n=e?n&&Ll(o):n&&o instanceof kr}),!!n&&lo(r)&&co(r,["zoom","heatmap-density","line-progress","raster-value","sky-radial-progress","accumulated","is-supported-script","pitch","distance-from-center","measure-light","raster-particle-speed"])}function ho(r,e){const n=r.length-1;let o,u,l=0,f=n,v=0;for(;l<=f;)if(v=Math.floor((l+f)/2),o=r[v],u=r[v+1],o<=e){if(v===n||e<u)return v;l=v+1}else{if(!(o>e))throw new qn("Input is not a number.");f=v-1}return 0}class Ti{constructor(e,n,o){this.type=e,this.input=n,this.labels=[],this.outputs=[];for(const[u,l]of o)this.labels.push(u),this.outputs.push(l)}static parse(e,n){if(e.length-1<4)return n.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return n.error("Expected an even number of arguments.");const o=n.parse(e[1],1,Ot);if(!o)return null;const u=[];let l=null;n.expectedType&&n.expectedType.kind!=="value"&&(l=n.expectedType);for(let f=1;f<e.length;f+=2){const v=f===1?-1/0:e[f],S=e[f+1],D=f,x=f+1;if(typeof v!="number")return n.error('Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.',D);if(u.length&&u[u.length-1][0]>=v)return n.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',D);const P=n.parse(S,x,l);if(!P)return null;l=l||P.type,u.push([v,P])}return new Ti(l,o,u)}evaluate(e){const n=this.labels,o=this.outputs;if(n.length===1)return o[0].evaluate(e);const u=this.input.evaluate(e);if(u<=n[0])return o[0].evaluate(e);const l=n.length;return u>=n[l-1]?o[l-1].evaluate(e):o[ho(n,u)].evaluate(e)}eachChild(e){e(this.input);for(const n of this.outputs)e(n)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}serialize(){const e=["step",this.input.serialize()];for(let n=0;n<this.labels.length;n++)n>0&&e.push(this.labels[n]),e.push(this.outputs[n].serialize());return e}}const iu=.95047,zl=1.08883,$a=4/29,ia=6/29,oh=3*ia*ia,yn=ia*ia*ia,nu=Math.PI/180,su=180/Math.PI;function hc(r){return r>yn?Math.pow(r,1/3):r/oh+$a}function uc(r){return r>ia?r*r*r:oh*(r-$a)}function dc(r){return 255*(r<=.0031308?12.92*r:1.055*Math.pow(r,1/2.4)-.055)}function ah(r){return(r/=255)<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)}function lh(r){const e=ah(r.r),n=ah(r.g),o=ah(r.b),u=hc((.4124564*e+.3575761*n+.1804375*o)/iu),l=hc((.2126729*e+.7151522*n+.072175*o)/1);return{l:116*l-16,a:500*(u-l),b:200*(l-hc((.0193339*e+.119192*n+.9503041*o)/zl)),alpha:r.a}}function ch(r){let e=(r.l+16)/116,n=isNaN(r.a)?e:e+r.a/500,o=isNaN(r.b)?e:e-r.b/200;return e=1*uc(e),n=iu*uc(n),o=zl*uc(o),new ki(dc(3.2404542*n-1.5371385*e-.4985314*o),dc(-.969266*n+1.8760108*e+.041556*o),dc(.0556434*n-.2040259*e+1.0572252*o),r.alpha)}function kd(r,e,n){const o=e-r;return r+n*(o>180||o<-180?o-360*Math.round(o/360):o)}const p={forward:lh,reverse:ch,interpolate:function(r,e,n){return{l:ei(r.l,e.l,n),a:ei(r.a,e.a,n),b:ei(r.b,e.b,n),alpha:ei(r.alpha,e.alpha,n)}}},A={forward:function(r){const{l:e,a:n,b:o}=lh(r),u=Math.atan2(o,n)*su;return{h:u<0?u+360:u,c:Math.sqrt(n*n+o*o),l:e,alpha:r.a}},reverse:function(r){const e=r.h*nu,n=r.c;return ch({l:r.l,a:Math.cos(e)*n,b:Math.sin(e)*n,alpha:r.alpha})},interpolate:function(r,e,n){return{h:kd(r.h,e.h,n),c:ei(r.c,e.c,n),l:ei(r.l,e.l,n),alpha:ei(r.alpha,e.alpha,n)}}};var B=Object.freeze({__proto__:null,hcl:A,lab:p});class X{constructor(e,n,o,u,l,f){this.type=e,this.operator=n,this.interpolation=o,this.input=u,this.dynamicStops=l,this.labels=[],this.outputs=[];for(const[v,S]of f)this.labels.push(v),this.outputs.push(S)}static interpolationFactor(e,n,o,u){let l=0;if(e.name==="exponential")l=ne(n,e.base,o,u);else if(e.name==="linear")l=ne(n,1,o,u);else if(e.name==="cubic-bezier"){const f=e.controlPoints;l=new Us(f[0],f[1],f[2],f[3]).solve(ne(n,1,o,u))}return l}static parse(e,n){let[o,u,l,...f]=e;if(!Array.isArray(u)||u.length===0)return n.error("Expected an interpolation type expression.",1);if(u[0]==="linear")u={name:"linear"};else if(u[0]==="exponential"){const D=u[1];if(typeof D!="number")return n.error("Exponential interpolation requires a numeric base.",1,1);u={name:"exponential",base:D}}else{if(u[0]!=="cubic-bezier")return n.error(`Unknown interpolation type ${String(u[0])}`,1,0);{const D=u.slice(1);if(D.length!==4||D.some(x=>typeof x!="number"||x<0||x>1))return n.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);u={name:"cubic-bezier",controlPoints:D}}}if(e.length-1<3)return n.error(`Expected at least 3 arguments, but found only ${e.length-1}.`);if(e.length-1>3&&(e.length-1)%2!=0)return n.error("Expected an even number of arguments.");if(l=n.parse(l,2,Ot),!l)return null;const v=[];let S=null;if(o==="interpolate-hcl"||o==="interpolate-lab"?S=_s:n.expectedType&&n.expectedType.kind!=="value"&&(S=n.expectedType),e.length-1==3){const D=n.parse(f[0],3,Pi);return D?new X(S,o,u,l,D,v):null}for(let D=0;D<f.length;D+=2){const x=f[D],P=f[D+1],I=D+3,M=D+4;if(typeof x!="number")return n.error('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.',I);if(v.length&&v[v.length-1][0]>=x)return n.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',I);const C=n.parse(P,M,S);if(!C)return null;S=S||C.type,v.push([x,C])}return S.kind==="number"||S.kind==="color"||S.kind==="array"&&S.itemType.kind==="number"&&typeof S.N=="number"?new X(S,o,u,l,null,v):n.error(`Type ${un(S)} is not interpolatable.`)}evaluate(e){let n=this.labels,o=this.outputs;if(this.dynamicStops){const x=this.dynamicStops.evaluate(e);if(x.length%2!=0)throw new qn("Expected an even number of arguments.");n=[],o=[];for(let P=0;P<x.length;P+=2){const I=x[P],M=new kr(Ot,x[P+1]);if(typeof I!="number")throw new qn('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.');if(n.length&&n[n.length-1]>=I)throw new qn('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.');n.push(I),o.push(M)}if(n.length===0)throw new qn("Expected at least one input/output pair.")}if(n.length===1)return o[0].evaluate(e);const u=this.input.evaluate(e);if(u<=n[0])return o[0].evaluate(e);const l=n.length;if(u>=n[l-1])return o[l-1].evaluate(e);const f=ho(n,u),v=X.interpolationFactor(this.interpolation,u,n[f],n[f+1]),S=o[f].evaluate(e),D=o[f+1].evaluate(e);return this.operator==="interpolate"?Oi[this.type.kind.toLowerCase()](S,D,v):this.operator==="interpolate-hcl"?A.reverse(A.interpolate(A.forward(S),A.forward(D),v)):p.reverse(p.interpolate(p.forward(S),p.forward(D),v))}eachChild(e){e(this.input);for(const n of this.outputs)e(n)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}serialize(){let e;e=this.interpolation.name==="linear"?["linear"]:this.interpolation.name==="exponential"?this.interpolation.base===1?["linear"]:["exponential",this.interpolation.base]:["cubic-bezier"].concat(this.interpolation.controlPoints);const n=[this.operator,e,this.input.serialize()];if(this.dynamicStops)n.push(this.dynamicStops.serialize());else for(let o=0;o<this.labels.length;o++)n.push(this.labels[o],this.outputs[o].serialize());return n}}function ne(r,e,n,o){const u=o-n,l=r-n;return u===0?0:e===1?l/u:(Math.pow(e,l)-1)/(Math.pow(e,u)-1)}class ye{constructor(e,n){this.type=e,this.args=n}static parse(e,n){if(e.length<2)return n.error("Expectected at least one argument.");let o=null;const u=n.expectedType;u&&u.kind!=="value"&&(o=u);const l=[];for(const v of e.slice(1)){const S=n.parse(v,1+l.length,o,void 0,{typeAnnotation:"omit"});if(!S)return null;o=o||S.type,l.push(S)}const f=u&&l.some(v=>_a(u,v.type));return new ye(f?Pi:o,l)}evaluate(e){let n,o=null,u=0;for(const l of this.args){if(u++,o=l.evaluate(e),o&&o instanceof as&&!o.available&&(n||(n=o),o=null,u===this.args.length))return n;if(o!==null)break}return o}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}serialize(){const e=["coalesce"];return this.eachChild(n=>{e.push(n.serialize())}),e}}class We{constructor(e,n){this.type=n.type,this.bindings=[].concat(e),this.result=n}evaluate(e){return this.result.evaluate(e)}eachChild(e){for(const n of this.bindings)e(n[1]);e(this.result)}static parse(e,n){if(e.length<4)return n.error(`Expected at least 3 arguments, but found ${e.length-1} instead.`);const o=[];for(let l=1;l<e.length-1;l+=2){const f=e[l];if(typeof f!="string")return n.error(`Expected string, but found ${typeof f} instead.`,l);if(/[^a-zA-Z0-9_]/.test(f))return n.error("Variable names must contain only alphanumeric characters or '_'.",l);const v=n.parse(e[l+1],l+1);if(!v)return null;o.push([f,v])}const u=n.parse(e[e.length-1],e.length-1,n.expectedType,o);return u?new We(o,u):null}outputDefined(){return this.result.outputDefined()}serialize(){const e=["let"];for(const[n,o]of this.bindings)e.push(n,o.serialize());return e.push(this.result.serialize()),e}}class at{constructor(e,n,o){this.type=e,this.index=n,this.input=o}static parse(e,n){if(e.length!==3)return n.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const o=n.parse(e[1],1,Ot),u=n.parse(e[2],2,Es(n.expectedType||Pi));return o&&u?new at(u.type.itemType,o,u):null}evaluate(e){const n=this.index.evaluate(e),o=this.input.evaluate(e);if(n<0)throw new qn(`Array index out of bounds: ${n} < 0.`);if(n>o.length-1)throw new qn(`Array index out of bounds: ${n} > ${o.length-1}.`);if(n===Math.floor(n))return o[n];const u=Math.floor(n),l=Math.ceil(n),f=o[u],v=o[l];if(typeof f!="number"||typeof v!="number")throw new qn(`Cannot interpolate between non-number values at index ${n}.`);const S=n-u;return f*(1-S)+v*S}eachChild(e){e(this.index),e(this.input)}outputDefined(){return!1}serialize(){return["at",this.index.serialize(),this.input.serialize()]}}class ft{constructor(e,n){this.type=Li,this.needle=e,this.haystack=n}static parse(e,n){if(e.length!==3)return n.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const o=n.parse(e[1],1,Pi),u=n.parse(e[2],2,Pi);return o&&u?tc(o.type,[Li,Fi,Ot,ma,Pi])?new ft(o,u):n.error(`Expected first argument to be of type boolean, string, number or null, but found ${un(o.type)} instead`):null}evaluate(e){const n=this.needle.evaluate(e),o=this.haystack.evaluate(e);if(o==null)return!1;if(!ga(n,["boolean","string","number","null"]))throw new qn(`Expected first argument to be of type boolean, string, number or null, but found ${un(bn(n))} instead.`);if(!ga(o,["string","array"]))throw new qn(`Expected second argument to be of type array or string, but found ${un(bn(o))} instead.`);return o.indexOf(n)>=0}eachChild(e){e(this.needle),e(this.haystack)}outputDefined(){return!0}serialize(){return["in",this.needle.serialize(),this.haystack.serialize()]}}class Rt{constructor(e,n,o){this.type=Ot,this.needle=e,this.haystack=n,this.fromIndex=o}static parse(e,n){if(e.length<=2||e.length>=5)return n.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const o=n.parse(e[1],1,Pi),u=n.parse(e[2],2,Pi);if(!o||!u)return null;if(!tc(o.type,[Li,Fi,Ot,ma,Pi]))return n.error(`Expected first argument to be of type boolean, string, number or null, but found ${un(o.type)} instead`);if(e.length===4){const l=n.parse(e[3],3,Ot);return l?new Rt(o,u,l):null}return new Rt(o,u)}evaluate(e){const n=this.needle.evaluate(e),o=this.haystack.evaluate(e);if(!ga(n,["boolean","string","number","null"]))throw new qn(`Expected first argument to be of type boolean, string, number or null, but found ${un(bn(n))} instead.`);if(!ga(o,["string","array"]))throw new qn(`Expected second argument to be of type array or string, but found ${un(bn(o))} instead.`);if(this.fromIndex){const u=this.fromIndex.evaluate(e);return o.indexOf(n,u)}return o.indexOf(n)}eachChild(e){e(this.needle),e(this.haystack),this.fromIndex&&e(this.fromIndex)}outputDefined(){return!1}serialize(){if(this.fromIndex!=null&&this.fromIndex!==void 0){const e=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),e]}return["index-of",this.needle.serialize(),this.haystack.serialize()]}}class ii{constructor(e,n,o,u,l,f){this.inputType=e,this.type=n,this.input=o,this.cases=u,this.outputs=l,this.otherwise=f}static parse(e,n){if(e.length<5)return n.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if(e.length%2!=1)return n.error("Expected an even number of arguments.");let o,u;n.expectedType&&n.expectedType.kind!=="value"&&(u=n.expectedType);const l={},f=[];for(let D=2;D<e.length-1;D+=2){let x=e[D];const P=e[D+1];Array.isArray(x)||(x=[x]);const I=n.concat(D);if(x.length===0)return I.error("Expected at least one branch label.");for(const C of x){if(typeof C!="number"&&typeof C!="string")return I.error("Branch labels must be numbers or strings.");if(typeof C=="number"&&Math.abs(C)>Number.MAX_SAFE_INTEGER)return I.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof C=="number"&&Math.floor(C)!==C)return I.error("Numeric branch labels must be integer values.");if(o){if(I.checkSubtype(o,bn(C)))return null}else o=bn(C);if(l[String(C)]!==void 0)return I.error("Branch labels must be unique.");l[String(C)]=f.length}const M=n.parse(P,D,u);if(!M)return null;u=u||M.type,f.push(M)}const v=n.parse(e[1],1,Pi);if(!v)return null;const S=n.parse(e[e.length-1],e.length-1,u);return S?v.type.kind!=="value"&&n.concat(1).checkSubtype(o,v.type)?null:new ii(o,u,v,l,f,S):null}evaluate(e){const n=this.input.evaluate(e);return(bn(n)===this.inputType&&this.outputs[this.cases[n]]||this.otherwise).evaluate(e)}eachChild(e){e(this.input),this.outputs.forEach(e),e(this.otherwise)}outputDefined(){return this.outputs.every(e=>e.outputDefined())&&this.otherwise.outputDefined()}serialize(){const e=["match",this.input.serialize()],n=Object.keys(this.cases).sort(),o=[],u={};for(const f of n){const v=u[this.cases[f]];v===void 0?(u[this.cases[f]]=o.length,o.push([this.cases[f],[f]])):o[v][1].push(f)}const l=f=>this.inputType.kind==="number"?Number(f):f;for(const[f,v]of o)e.push(v.length===1?l(v[0]):v.map(l)),e.push(this.outputs[f].serialize());return e.push(this.otherwise.serialize()),e}}class Ci{constructor(e,n,o){this.type=e,this.branches=n,this.otherwise=o}static parse(e,n){if(e.length<4)return n.error(`Expected at least 3 arguments, but found only ${e.length-1}.`);if(e.length%2!=0)return n.error("Expected an odd number of arguments.");let o;n.expectedType&&n.expectedType.kind!=="value"&&(o=n.expectedType);const u=[];for(let f=1;f<e.length-1;f+=2){const v=n.parse(e[f],f,Li);if(!v)return null;const S=n.parse(e[f+1],f+1,o);if(!S)return null;u.push([v,S]),o=o||S.type}const l=n.parse(e[e.length-1],e.length-1,o);return l?new Ci(o,u,l):null}evaluate(e){for(const[n,o]of this.branches)if(n.evaluate(e))return o.evaluate(e);return this.otherwise.evaluate(e)}eachChild(e){for(const[n,o]of this.branches)e(n),e(o);e(this.otherwise)}outputDefined(){return this.branches.every(([e,n])=>n.outputDefined())&&this.otherwise.outputDefined()}serialize(){const e=["case"];return this.eachChild(n=>{e.push(n.serialize())}),e}}class Wi{constructor(e,n,o,u){this.type=e,this.input=n,this.beginIndex=o,this.endIndex=u}static parse(e,n){if(e.length<=2||e.length>=5)return n.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const o=n.parse(e[1],1,Pi),u=n.parse(e[2],2,Ot);if(!o||!u)return null;if(!tc(o.type,[Es(Pi),Fi,Pi]))return n.error(`Expected first argument to be of type array or string, but found ${un(o.type)} instead`);if(e.length===4){const l=n.parse(e[3],3,Ot);return l?new Wi(o.type,o,u,l):null}return new Wi(o.type,o,u)}evaluate(e){const n=this.input.evaluate(e),o=this.beginIndex.evaluate(e);if(!ga(n,["string","array"]))throw new qn(`Expected first argument to be of type array or string, but found ${un(bn(n))} instead.`);if(this.endIndex){const u=this.endIndex.evaluate(e);return n.slice(o,u)}return n.slice(o)}eachChild(e){e(this.input),e(this.beginIndex),this.endIndex&&e(this.endIndex)}outputDefined(){return!1}serialize(){if(this.endIndex!=null&&this.endIndex!==void 0){const e=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),e]}return["slice",this.input.serialize(),this.beginIndex.serialize()]}}function Hs(r,e){return r==="=="||r==="!="?e.kind==="boolean"||e.kind==="string"||e.kind==="number"||e.kind==="null"||e.kind==="value":e.kind==="string"||e.kind==="number"||e.kind==="value"}function ws(r,e,n,o){return o.compare(e,n)===0}function Os(r,e,n){const o=r!=="=="&&r!=="!=";return class Aw{constructor(l,f,v){this.type=Li,this.lhs=l,this.rhs=f,this.collator=v,this.hasUntypedArgument=l.type.kind==="value"||f.type.kind==="value"}static parse(l,f){if(l.length!==3&&l.length!==4)return f.error("Expected two or three arguments.");const v=l[0];let S=f.parse(l[1],1,Pi);if(!S)return null;if(!Hs(v,S.type))return f.concat(1).error(`"${v}" comparisons are not supported for type '${un(S.type)}'.`);let D=f.parse(l[2],2,Pi);if(!D)return null;if(!Hs(v,D.type))return f.concat(2).error(`"${v}" comparisons are not supported for type '${un(D.type)}'.`);if(S.type.kind!==D.type.kind&&S.type.kind!=="value"&&D.type.kind!=="value")return f.error(`Cannot compare types '${un(S.type)}' and '${un(D.type)}'.`);o&&(S.type.kind==="value"&&D.type.kind!=="value"?S=new Rr(D.type,[S]):S.type.kind!=="value"&&D.type.kind==="value"&&(D=new Rr(S.type,[D])));let x=null;if(l.length===4){if(S.type.kind!=="string"&&D.type.kind!=="string"&&S.type.kind!=="value"&&D.type.kind!=="value")return f.error("Cannot use collator to compare non-string types.");if(x=f.parse(l[3],3,gs),!x)return null}return new Aw(S,D,x)}evaluate(l){const f=this.lhs.evaluate(l),v=this.rhs.evaluate(l);if(o&&this.hasUntypedArgument){const S=bn(f),D=bn(v);if(S.kind!==D.kind||S.kind!=="string"&&S.kind!=="number")throw new qn(`Expected arguments for "${r}" to be (string, string) or (number, number), but found (${S.kind}, ${D.kind}) instead.`)}if(this.collator&&!o&&this.hasUntypedArgument){const S=bn(f),D=bn(v);if(S.kind!=="string"||D.kind!=="string")return e(l,f,v)}return this.collator?n(l,f,v,this.collator.evaluate(l)):e(l,f,v)}eachChild(l){l(this.lhs),l(this.rhs),this.collator&&l(this.collator)}outputDefined(){return!0}serialize(){const l=[r];return this.eachChild(f=>{l.push(f.serialize())}),l}}}const dr=Os("==",function(r,e,n){return e===n},ws),Xa=Os("!=",function(r,e,n){return e!==n},function(r,e,n,o){return!ws(0,e,n,o)}),Rd=Os("<",function(r,e,n){return e<n},function(r,e,n,o){return o.compare(e,n)<0}),Od=Os(">",function(r,e,n){return e>n},function(r,e,n,o){return o.compare(e,n)>0}),Fd=Os("<=",function(r,e,n){return e<=n},function(r,e,n,o){return o.compare(e,n)<=0}),ru=Os(">=",function(r,e,n){return e>=n},function(r,e,n,o){return o.compare(e,n)>=0});class Dl{constructor(e,n,o,u,l,f){this.type=Fi,this.number=e,this.locale=n,this.currency=o,this.unit=u,this.minFractionDigits=l,this.maxFractionDigits=f}static parse(e,n){if(e.length!==3)return n.error("Expected two arguments.");const o=n.parse(e[1],1,Ot);if(!o)return null;const u=e[2];if(typeof u!="object"||Array.isArray(u))return n.error("NumberFormat options argument must be an object.");let l=null;if(u.locale&&(l=n.parseObjectValue(u.locale,2,"locale",Fi),!l))return null;let f=null;if(u.currency&&(f=n.parseObjectValue(u.currency,2,"currency",Fi),!f))return null;let v=null;if(u.unit&&(v=n.parseObjectValue(u.unit,2,"unit",Fi),!v))return null;let S=null;if(u["min-fraction-digits"]&&(S=n.parseObjectValue(u["min-fraction-digits"],2,"min-fraction-digits",Ot),!S))return null;let D=null;return u["max-fraction-digits"]&&(D=n.parseObjectValue(u["max-fraction-digits"],2,"max-fraction-digits",Ot),!D)?null:new Dl(o,l,f,v,S,D)}evaluate(e){return new Intl.NumberFormat(this.locale?this.locale.evaluate(e):[],{style:(this.currency?"currency":this.unit&&"unit")||"decimal",currency:this.currency?this.currency.evaluate(e):void 0,unit:this.unit?this.unit.evaluate(e):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(e):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(e):void 0}).format(this.number.evaluate(e))}eachChild(e){e(this.number),this.locale&&e(this.locale),this.currency&&e(this.currency),this.unit&&e(this.unit),this.minFractionDigits&&e(this.minFractionDigits),this.maxFractionDigits&&e(this.maxFractionDigits)}outputDefined(){return!1}serialize(){const e={};return this.locale&&(e.locale=this.locale.serialize()),this.currency&&(e.currency=this.currency.serialize()),this.unit&&(e.unit=this.unit.serialize()),this.minFractionDigits&&(e["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(e["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),e]}}class fc{constructor(e){this.type=Ot,this.input=e}static parse(e,n){if(e.length!==2)return n.error(`Expected 1 argument, but found ${e.length-1} instead.`);const o=n.parse(e[1],1);return o?o.type.kind!=="array"&&o.type.kind!=="string"&&o.type.kind!=="value"?n.error(`Expected argument of type string or array, but found ${un(o.type)} instead.`):new fc(o):null}evaluate(e){const n=this.input.evaluate(e);if(typeof n=="string"||Array.isArray(n))return n.length;throw new qn(`Expected value to be of type string or array, but found ${un(bn(n))} instead.`)}eachChild(e){e(this.input)}outputDefined(){return!1}serialize(){const e=["length"];return this.eachChild(n=>{e.push(n.serialize())}),e}}function ts(r){return function(){r=1831565813+(r|=0)|0;let e=Math.imul(r^r>>>15,1|r);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296}}const Io={"==":dr,"!=":Xa,">":Od,"<":Rd,">=":ru,"<=":Fd,array:Rr,at,boolean:Rr,case:Ci,coalesce:ye,collator:Sl,format:Ps,image:Ua,in:ft,"index-of":Rt,interpolate:X,"interpolate-hcl":X,"interpolate-lab":X,length:fc,let:We,literal:kr,match:ii,number:Rr,"number-format":Dl,object:Rr,slice:Wi,step:Ti,string:Rr,"to-boolean":ao,"to-color":ao,"to-number":ao,"to-string":ao,var:ta,within:cr,distance:Jr,config:Ta};function ou(r,[e,n,o,u]){e=e.evaluate(r),n=n.evaluate(r),o=o.evaluate(r);const l=u?u.evaluate(r):1,f=ya(e,n,o,l);if(f)throw new qn(f);return new ki(e/255*l,n/255*l,o/255*l,l)}function au(r,[e,n,o,u]){e=e.evaluate(r),n=n.evaluate(r),o=o.evaluate(r);const l=u?u.evaluate(r):1,f=function(D,x,P,I){return typeof D=="number"&&D>=0&&D<=360?typeof x=="number"&&x>=0&&x<=100&&typeof P=="number"&&P>=0&&P<=100?I===void 0||typeof I=="number"&&I>=0&&I<=1?null:`Invalid hsla value [${[D,x,P,I].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid hsla value [${(typeof I=="number"?[D,x,P,I]:[D,x,P]).join(", ")}]: 's', and 'l' must be between 0 and 100.`:`Invalid hsla value [${(typeof I=="number"?[D,x,P,I]:[D,x,P]).join(", ")}]: 'h' must be between 0 and 360.`}(e,n,o,l);if(f)throw new qn(f);const v=`hsla(${e}, ${n}%, ${o}%, ${l})`,S=ki.parse(v);if(!S)throw new qn(`Failed to parse HSLA color: ${v}`);return S}function hh(r,e){return r in e}function Ya(r,e){const n=e[r];return n===void 0?null:n}function vr(r){return{type:r}}function uh(r){return{result:"success",value:r}}function Ma(r){return{result:"error",value:r}}function Bd(r,e){return!!r&&!!r.parameters&&r.parameters.indexOf(e)>-1}function pc(r){return r["property-type"]==="data-driven"}function lu(r){return Bd(r.expression,"measure-light")}function Op(r){return Bd(r.expression,"zoom")}function Nd(r){return!!r.expression&&r.expression.interpolated}function cu(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}function Fp(r){return r}function Bp(r,e){const n=e.type==="color",o=r.stops&&typeof r.stops[0][0]=="object",u=o||!(o||r.property!==void 0),l=r.type||(Nd(e)?"exponential":"interval");if(n&&((r=Bi({},r)).stops&&(r.stops=r.stops.map(D=>[D[0],ki.parse(D[1])])),r.default=ki.parse(r.default?r.default:e.default)),r.colorSpace&&r.colorSpace!=="rgb"&&!B[r.colorSpace])throw new Error(`Unknown color space: ${r.colorSpace}`);let f,v,S;if(l==="exponential")f=Vd;else if(l==="interval")f=Np;else if(l==="categorical"){f=X_,v=Object.create(null);for(const D of r.stops)v[D[0]]=D[1];S=typeof r.stops[0][0]}else{if(l!=="identity")throw new Error(`Unknown function type "${l}"`);f=hu}if(o){const D={},x=[];for(let M=0;M<r.stops.length;M++){const C=r.stops[M],k=C[0].zoom;D[k]===void 0&&(D[k]={zoom:k,type:r.type,property:r.property,default:r.default,stops:[]},x.push(k)),D[k].stops.push([C[0].value,C[1]])}const P=[];for(const M of x)P.push([D[M].zoom,Bp(D[M],e)]);const I={name:"linear"};return{kind:"composite",interpolationType:I,interpolationFactor:X.interpolationFactor.bind(void 0,I),zoomStops:P.map(M=>M[0]),evaluate:({zoom:M},C)=>Vd({stops:P,base:r.base},e,M).evaluate(M,C)}}if(u){const D=l==="exponential"?{name:"exponential",base:r.base!==void 0?r.base:1}:null;return{kind:"camera",interpolationType:D,interpolationFactor:X.interpolationFactor.bind(void 0,D),zoomStops:r.stops.map(x=>x[0]),evaluate:({zoom:x})=>f(r,e,x,v,S)}}return{kind:"source",evaluate(D,x){const P=x&&x.properties?x.properties[r.property]:void 0;return P===void 0?dh(r.default,e.default):f(r,e,P,v,S)}}}function dh(r,e,n){return r!==void 0?r:e!==void 0?e:n!==void 0?n:void 0}function X_(r,e,n,o,u){return dh(typeof n===u?o[n]:void 0,r.default,e.default)}function Np(r,e,n){if(Xo(n)!=="number")return dh(r.default,e.default);const o=r.stops.length;if(o===1||n<=r.stops[0][0])return r.stops[0][1];if(n>=r.stops[o-1][0])return r.stops[o-1][1];const u=ho(r.stops.map(l=>l[0]),n);return r.stops[u][1]}function Vd(r,e,n){const o=r.base!==void 0?r.base:1;if(Xo(n)!=="number")return dh(r.default,e.default);const u=r.stops.length;if(u===1||n<=r.stops[0][0])return r.stops[0][1];if(n>=r.stops[u-1][0])return r.stops[u-1][1];const l=ho(r.stops.map(x=>x[0]),n),f=function(x,P,I,M){const C=M-I,k=x-I;return C===0?0:P===1?k/C:(Math.pow(P,k)-1)/(Math.pow(P,C)-1)}(n,o,r.stops[l][0],r.stops[l+1][0]),v=r.stops[l][1],S=r.stops[l+1][1];let D=Oi[e.type]||Fp;if(r.colorSpace&&r.colorSpace!=="rgb"){const x=B[r.colorSpace];D=(P,I)=>x.reverse(x.interpolate(x.forward(P),x.forward(I),f))}return typeof v.evaluate=="function"?{evaluate(...x){const P=v.evaluate.apply(void 0,x),I=S.evaluate.apply(void 0,x);if(P!==void 0&&I!==void 0)return D(P,I,f)}}:D(v,S,f)}function hu(r,e,n){return e.type==="color"?n=ki.parse(n):e.type==="formatted"?n=Dn.fromString(n.toString()):e.type==="resolvedImage"?n=as.build(n.toString()):Xo(n)===e.type||e.type==="enum"&&e.values[n]||(n=void 0),dh(n,r.default,e.default)}ar.register(Io,{error:[{kind:"error"},[Fi],(r,[e])=>{throw new qn(e.evaluate(r))}],typeof:[Fi,[Pi],(r,[e])=>un(bn(e.evaluate(r)))],"to-rgba":[Es(Ot,4),[_s],(r,[e])=>e.evaluate(r).toRenderColor(null).toArray()],"to-hsla":[Es(Ot,4),[_s],(r,[e])=>e.evaluate(r).toRenderColor(null).toHslaArray()],rgb:[_s,[Ot,Ot,Ot],ou],rgba:[_s,[Ot,Ot,Ot,Ot],ou],hsl:[_s,[Ot,Ot,Ot],au],hsla:[_s,[Ot,Ot,Ot,Ot],au],has:{type:Li,overloads:[[[Fi],(r,[e])=>hh(e.evaluate(r),r.properties())],[[Fi,To],(r,[e,n])=>hh(e.evaluate(r),n.evaluate(r))]]},get:{type:Pi,overloads:[[[Fi],(r,[e])=>Ya(e.evaluate(r),r.properties())],[[Fi,To],(r,[e,n])=>Ya(e.evaluate(r),n.evaluate(r))]]},"feature-state":[Pi,[Fi],(r,[e])=>Ya(e.evaluate(r),r.featureState||{})],properties:[To,[],r=>r.properties()],"geometry-type":[Fi,[],r=>r.geometryType()],id:[Pi,[],r=>r.id()],zoom:[Ot,[],r=>r.globals.zoom],pitch:[Ot,[],r=>r.globals.pitch||0],"distance-from-center":[Ot,[],r=>r.distanceFromCenter()],"measure-light":[Ot,[Fi],(r,[e])=>r.measureLight(e.evaluate(r))],"heatmap-density":[Ot,[],r=>r.globals.heatmapDensity||0],"line-progress":[Ot,[],r=>r.globals.lineProgress||0],"raster-value":[Ot,[],r=>r.globals.rasterValue||0],"raster-particle-speed":[Ot,[],r=>r.globals.rasterParticleSpeed||0],"sky-radial-progress":[Ot,[],r=>r.globals.skyRadialProgress||0],accumulated:[Pi,[],r=>r.globals.accumulated===void 0?null:r.globals.accumulated],"+":[Ot,vr(Ot),(r,e)=>{let n=0;for(const o of e)n+=o.evaluate(r);return n}],"*":[Ot,vr(Ot),(r,e)=>{let n=1;for(const o of e)n*=o.evaluate(r);return n}],"-":{type:Ot,overloads:[[[Ot,Ot],(r,[e,n])=>e.evaluate(r)-n.evaluate(r)],[[Ot],(r,[e])=>-e.evaluate(r)]]},"/":[Ot,[Ot,Ot],(r,[e,n])=>e.evaluate(r)/n.evaluate(r)],"%":[Ot,[Ot,Ot],(r,[e,n])=>e.evaluate(r)%n.evaluate(r)],ln2:[Ot,[],()=>Math.LN2],pi:[Ot,[],()=>Math.PI],e:[Ot,[],()=>Math.E],"^":[Ot,[Ot,Ot],(r,[e,n])=>Math.pow(e.evaluate(r),n.evaluate(r))],sqrt:[Ot,[Ot],(r,[e])=>Math.sqrt(e.evaluate(r))],log10:[Ot,[Ot],(r,[e])=>Math.log(e.evaluate(r))/Math.LN10],ln:[Ot,[Ot],(r,[e])=>Math.log(e.evaluate(r))],log2:[Ot,[Ot],(r,[e])=>Math.log(e.evaluate(r))/Math.LN2],sin:[Ot,[Ot],(r,[e])=>Math.sin(e.evaluate(r))],cos:[Ot,[Ot],(r,[e])=>Math.cos(e.evaluate(r))],tan:[Ot,[Ot],(r,[e])=>Math.tan(e.evaluate(r))],asin:[Ot,[Ot],(r,[e])=>Math.asin(e.evaluate(r))],acos:[Ot,[Ot],(r,[e])=>Math.acos(e.evaluate(r))],atan:[Ot,[Ot],(r,[e])=>Math.atan(e.evaluate(r))],min:[Ot,vr(Ot),(r,e)=>Math.min(...e.map(n=>n.evaluate(r)))],max:[Ot,vr(Ot),(r,e)=>Math.max(...e.map(n=>n.evaluate(r)))],abs:[Ot,[Ot],(r,[e])=>Math.abs(e.evaluate(r))],round:[Ot,[Ot],(r,[e])=>{const n=e.evaluate(r);return n<0?-Math.round(-n):Math.round(n)}],floor:[Ot,[Ot],(r,[e])=>Math.floor(e.evaluate(r))],ceil:[Ot,[Ot],(r,[e])=>Math.ceil(e.evaluate(r))],"filter-==":[Li,[Fi,Pi],(r,[e,n])=>r.properties()[e.value]===n.value],"filter-id-==":[Li,[Pi],(r,[e])=>r.id()===e.value],"filter-type-==":[Li,[Fi],(r,[e])=>r.geometryType()===e.value],"filter-<":[Li,[Fi,Pi],(r,[e,n])=>{const o=r.properties()[e.value],u=n.value;return typeof o==typeof u&&o<u}],"filter-id-<":[Li,[Pi],(r,[e])=>{const n=r.id(),o=e.value;return typeof n==typeof o&&n<o}],"filter->":[Li,[Fi,Pi],(r,[e,n])=>{const o=r.properties()[e.value],u=n.value;return typeof o==typeof u&&o>u}],"filter-id->":[Li,[Pi],(r,[e])=>{const n=r.id(),o=e.value;return typeof n==typeof o&&n>o}],"filter-<=":[Li,[Fi,Pi],(r,[e,n])=>{const o=r.properties()[e.value],u=n.value;return typeof o==typeof u&&o<=u}],"filter-id-<=":[Li,[Pi],(r,[e])=>{const n=r.id(),o=e.value;return typeof n==typeof o&&n<=o}],"filter->=":[Li,[Fi,Pi],(r,[e,n])=>{const o=r.properties()[e.value],u=n.value;return typeof o==typeof u&&o>=u}],"filter-id->=":[Li,[Pi],(r,[e])=>{const n=r.id(),o=e.value;return typeof n==typeof o&&n>=o}],"filter-has":[Li,[Pi],(r,[e])=>e.value in r.properties()],"filter-has-id":[Li,[],r=>r.id()!==null&&r.id()!==void 0],"filter-type-in":[Li,[Es(Fi)],(r,[e])=>e.value.indexOf(r.geometryType())>=0],"filter-id-in":[Li,[Es(Pi)],(r,[e])=>e.value.indexOf(r.id())>=0],"filter-in-small":[Li,[Fi,Es(Pi)],(r,[e,n])=>n.value.indexOf(r.properties()[e.value])>=0],"filter-in-large":[Li,[Fi,Es(Pi)],(r,[e,n])=>function(o,u,l,f){for(;l<=f;){const v=l+f>>1;if(u[v]===o)return!0;u[v]>o?f=v-1:l=v+1}return!1}(r.properties()[e.value],n.value,0,n.value.length-1)],all:{type:Li,overloads:[[[Li,Li],(r,[e,n])=>e.evaluate(r)&&n.evaluate(r)],[vr(Li),(r,e)=>{for(const n of e)if(!n.evaluate(r))return!1;return!0}]]},any:{type:Li,overloads:[[[Li,Li],(r,[e,n])=>e.evaluate(r)||n.evaluate(r)],[vr(Li),(r,e)=>{for(const n of e)if(n.evaluate(r))return!0;return!1}]]},"!":[Li,[Li],(r,[e])=>!e.evaluate(r)],"is-supported-script":[Li,[Fi],(r,[e])=>{const n=r.globals&&r.globals.isSupportedScript;return!n||n(e.evaluate(r))}],upcase:[Fi,[Fi],(r,[e])=>e.evaluate(r).toUpperCase()],downcase:[Fi,[Fi],(r,[e])=>e.evaluate(r).toLowerCase()],concat:[Fi,vr(Pi),(r,e)=>e.map(n=>Dr(n.evaluate(r))).join("")],"resolved-locale":[Fi,[gs],(r,[e])=>e.evaluate(r).resolvedLocale()],random:[Ot,[Ot,Ot,Pi],(r,e)=>{const[n,o,u]=e.map(f=>f.evaluate(r));if(n>o||n===o)return n;let l;if(typeof u=="string")l=function(f){let v=0;if(f.length===0)return v;for(let S=0;S<f.length;S++)v=(v<<5)-v+f.charCodeAt(S),v|=0;return v}(u);else{if(typeof u!="number")throw new qn(`Invalid seed input: ${u}`);l=u}return n+ts(l)()*(o-n)}]});class Ud{constructor(e,n,o,u){this.expression=e,this._warningHistory={},this._evaluator=new ja(o,u),this._defaultValue=n?function(l){return l.type==="color"&&(cu(l.default)||Array.isArray(l.default))?new ki(0,0,0,0):l.type==="color"?ki.parse(l.default)||null:l.default===void 0?null:l.default}(n):null,this._enumValues=n&&n.type==="enum"?n.values:null,this.configDependencies=Fr(e)}evaluateWithoutErrorHandling(e,n,o,u,l,f,v,S){return this._evaluator.globals=e,this._evaluator.feature=n,this._evaluator.featureState=o,this._evaluator.canonical=u||null,this._evaluator.availableImages=l||null,this._evaluator.formattedSection=f,this._evaluator.featureTileCoord=v||null,this._evaluator.featureDistanceData=S||null,this.expression.evaluate(this._evaluator)}evaluate(e,n,o,u,l,f,v,S){this._evaluator.globals=e,this._evaluator.feature=n||null,this._evaluator.featureState=o||null,this._evaluator.canonical=u||null,this._evaluator.availableImages=l||null,this._evaluator.formattedSection=f||null,this._evaluator.featureTileCoord=v||null,this._evaluator.featureDistanceData=S||null;try{const D=this.expression.evaluate(this._evaluator);if(D==null||typeof D=="number"&&D!=D)return this._defaultValue;if(this._enumValues&&!(D in this._enumValues))throw new qn(`Expected value to be one of ${Object.keys(this._enumValues).map(x=>JSON.stringify(x)).join(", ")}, but found ${JSON.stringify(D)} instead.`);return D}catch(D){return this._warningHistory[D.message]||(this._warningHistory[D.message]=!0,typeof console<"u"&&console.warn(`Failed to evaluate expression "${JSON.stringify(this.expression.serialize())}". ${D.message}`)),this._defaultValue}}}function uu(r){return Array.isArray(r)&&r.length>0&&typeof r[0]=="string"&&r[0]in Io}function fh(r,e,n,o){const u=new Qr(Io,[],e?function(f){const v={color:_s,string:Fi,number:Ot,enum:Fi,boolean:Li,formatted:Qs,resolvedImage:$o};return f.type==="array"?Es(v[f.value]||Pi,f.length):v[f.type]}(e):void 0,void 0,void 0,n,o),l=u.parse(r,void 0,void 0,void 0,e&&e.type==="string"?{typeAnnotation:"coerce"}:void 0);return l?uh(new Ud(l,e,n,o)):Ma(u.errors)}class jd{constructor(e,n,o,u){this.kind=e,this._styleExpression=n,this.isLightConstant=o,this.isLineProgressConstant=u,this.isStateDependent=e!=="constant"&&!Il(n.expression),this.configDependencies=Fr(n.expression)}evaluateWithoutErrorHandling(e,n,o,u,l,f){return this._styleExpression.evaluateWithoutErrorHandling(e,n,o,u,l,f)}evaluate(e,n,o,u,l,f){return this._styleExpression.evaluate(e,n,o,u,l,f)}}class mc{constructor(e,n,o,u,l,f){this.kind=e,this.zoomStops=o,this._styleExpression=n,this.isStateDependent=e!=="camera"&&!Il(n.expression),this.isLightConstant=l,this.isLineProgressConstant=f,this.configDependencies=Fr(n.expression),this.interpolationType=u}evaluateWithoutErrorHandling(e,n,o,u,l,f){return this._styleExpression.evaluateWithoutErrorHandling(e,n,o,u,l,f)}evaluate(e,n,o,u,l,f){return this._styleExpression.evaluate(e,n,o,u,l,f)}interpolationFactor(e,n,o){return this.interpolationType?X.interpolationFactor(this.interpolationType,e,n,o):0}}function Gd(r,e,n,o){if((r=fh(r,e,n,o)).result==="error")return r;const u=r.value.expression,l=lo(u);if(!l&&!pc(e))return Ma([new os("","data expressions not supported")]);const f=co(u,["zoom","pitch","distance-from-center"]);if(!f&&!Op(e))return Ma([new os("","zoom expressions not supported")]);const v=co(u,["measure-light"]);if(!v&&!lu(e))return Ma([new os("","measure-light expression not supported")]);const S=co(u,["line-progress"]);if(!S&&!function(P){return Bd(P.expression,"line-progress")}(e))return Ma([new os("","line-progress expression not supported")]);const D=e.expression&&e.expression.relaxZoomRestriction,x=fu(u);return x||f||D?x instanceof os?Ma([x]):x instanceof X&&!Nd(e)?Ma([new os("",'"interpolate" expressions cannot be used with this property')]):uh(x?new mc(l&&S?"camera":"composite",r.value,x.labels,x instanceof X?x.interpolation:void 0,v,S):new jd(l&&S?"constant":"source",r.value,v,S)):Ma([new os("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression, or in the properties of atmosphere.')])}class du{constructor(e,n){this._parameters=e,this._specification=n,Bi(this,Bp(this._parameters,this._specification))}static deserialize(e){return new du(e._parameters,e._specification)}static serialize(e){return{_parameters:e._parameters,_specification:e._specification}}}function fu(r){let e=null;if(r instanceof We)e=fu(r.result);else if(r instanceof ye){for(const n of r.args)if(e=fu(n),e)break}else(r instanceof Ti||r instanceof X)&&r.input instanceof ar&&r.input.name==="zoom"&&(e=r);return e instanceof os||r.eachChild(n=>{const o=fu(n);o instanceof os?e=o:e&&o&&e!==o&&(e=new os("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),e}var Zd,Hd,Y_=function(){if(Hd)return Zd;Hd=1,Zd=e;var r=3;function e(n,o,u){var l=this.cells=[];if(n instanceof ArrayBuffer){this.arrayBuffer=n;var f=new Int32Array(this.arrayBuffer);n=f[0],this.d=(o=f[1])+2*(u=f[2]);for(var v=0;v<this.d*this.d;v++){var S=f[r+v],D=f[r+v+1];l.push(S===D?null:f.subarray(S,D))}var x=f[r+l.length+1];this.keys=f.subarray(f[r+l.length],x),this.bboxes=f.subarray(x),this.insert=this._insertReadonly}else{this.d=o+2*u;for(var P=0;P<this.d*this.d;P++)l.push([]);this.keys=[],this.bboxes=[]}this.n=o,this.extent=n,this.padding=u,this.scale=o/n,this.uid=0;var I=u/o*n;this.min=-I,this.max=n+I}return e.prototype.insert=function(n,o,u,l,f){this._forEachCell(o,u,l,f,this._insertCell,this.uid++),this.keys.push(n),this.bboxes.push(o),this.bboxes.push(u),this.bboxes.push(l),this.bboxes.push(f)},e.prototype._insertReadonly=function(){throw"Cannot insert into a GridIndex created from an ArrayBuffer."},e.prototype._insertCell=function(n,o,u,l,f,v){this.cells[f].push(v)},e.prototype.query=function(n,o,u,l,f){var v=this.min,S=this.max;if(n<=v&&o<=v&&S<=u&&S<=l&&!f)return Array.prototype.slice.call(this.keys);var D=[];return this._forEachCell(n,o,u,l,this._queryCell,D,{},f),D},e.prototype._queryCell=function(n,o,u,l,f,v,S,D){var x=this.cells[f];if(x!==null)for(var P=this.keys,I=this.bboxes,M=0;M<x.length;M++){var C=x[M];if(S[C]===void 0){var k=4*C;(D?D(I[k+0],I[k+1],I[k+2],I[k+3]):n<=I[k+2]&&o<=I[k+3]&&u>=I[k+0]&&l>=I[k+1])?(S[C]=!0,v.push(P[C])):S[C]=!1}}},e.prototype._forEachCell=function(n,o,u,l,f,v,S,D){for(var x=this._convertToCellCoord(n),P=this._convertToCellCoord(o),I=this._convertToCellCoord(u),M=this._convertToCellCoord(l),C=x;C<=I;C++)for(var k=P;k<=M;k++){var V=this.d*k+C;if((!D||D(this._convertFromCellCoord(C),this._convertFromCellCoord(k),this._convertFromCellCoord(C+1),this._convertFromCellCoord(k+1)))&&f.call(this,n,o,u,l,V,v,S,D))return}},e.prototype._convertFromCellCoord=function(n){return(n-this.padding)/this.scale},e.prototype._convertToCellCoord=function(n){return Math.max(0,Math.min(this.d-1,Math.floor(n*this.scale)+this.padding))},e.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var n=this.cells,o=r+this.cells.length+1+1,u=0,l=0;l<this.cells.length;l++)u+=this.cells[l].length;var f=new Int32Array(o+u+this.keys.length+this.bboxes.length);f[0]=this.extent,f[1]=this.n,f[2]=this.padding;for(var v=o,S=0;S<n.length;S++){var D=n[S];f[r+S]=v,f.set(D,v),v+=D.length}return f[r+n.length]=v,f.set(this.keys,v),f[r+n.length+1]=v+=this.keys.length,f.set(this.bboxes,v),v+=this.bboxes.length,f.buffer},Zd}(),_c=O(Y_);const ph={};function Ft(r,e,n={}){Object.defineProperty(r,"_classRegistryKey",{value:e,writable:!1}),ph[e]={klass:r,omit:n.omit||[]}}Ft(Object,"Object"),_c.serialize=function(r,e){const n=r.toArrayBuffer();return e&&e.add(n),{buffer:n}},_c.deserialize=function(r){return new _c(r.buffer)},Object.defineProperty(_c,"name",{value:"Grid"}),Ft(_c,"Grid"),typeof DOMMatrix<"u"&&Ft(DOMMatrix,"DOMMatrix"),Ft(ki,"Color"),Ft(Error,"Error"),Ft(Dn,"Formatted"),Ft(Tl,"FormattedSection"),Ft(Ho,"AJAXError"),Ft(as,"ResolvedImage"),Ft(du,"StylePropertyFunction"),Ft(Ud,"StyleExpression",{omit:["_evaluator"]}),Ft(or,"ImageIdWithOptions"),Ft(mc,"ZoomDependentExpression"),Ft(jd,"ZoomConstantExpression"),Ft(ar,"CompoundExpression",{omit:["_evaluate"]});for(const r in Io)ph[Io[r]._classRegistryKey]||Ft(Io[r],`Expression${r}`);function qd(r){return r&&typeof ArrayBuffer<"u"&&(r instanceof ArrayBuffer||r.constructor&&r.constructor.name==="ArrayBuffer")}function Vp(r){return self.ImageBitmap&&r instanceof ImageBitmap}function uo(r,e){if(r==null||typeof r=="boolean"||typeof r=="number"||typeof r=="string"||r instanceof Boolean||r instanceof Number||r instanceof String||r instanceof Date||r instanceof RegExp)return r;if(qd(r)||Vp(r))return e&&e.add(r),r;if(ArrayBuffer.isView(r))return e&&e.add(r.buffer),r;if(r instanceof ImageData)return e&&e.add(r.data.buffer),r;if(Array.isArray(r)){const n=[];for(const o of r)n.push(uo(o,e));return n}if(r instanceof Map){const n={$name:"Map"};for(const[o,u]of r.entries())n[o]=uo(u);return n}if(r instanceof Set){const n={$name:"Set"};let o=0;for(const u of r.values())n[++o]=uo(u);return n}if(typeof r=="object"){const n=r.constructor,o=n._classRegistryKey;if(!o)throw new Error(`Can't serialize object of unregistered class "${o}".`);const u=n.serialize?n.serialize(r,e):{};if(!n.serialize){for(const l in r)r.hasOwnProperty(l)&&(ph[o].omit.indexOf(l)>=0||(u[l]=uo(r[l],e)));r instanceof Error&&(u.message=r.message)}if(u.$name)throw new Error("$name property is reserved for worker serialization logic.");return o!=="Object"&&(u.$name=o),u}throw new Error("can't serialize object of type "+typeof r)}function kl(r){if(r==null||typeof r=="boolean"||typeof r=="number"||typeof r=="string"||r instanceof Boolean||r instanceof Number||r instanceof String||r instanceof Date||r instanceof RegExp||qd(r)||Vp(r)||ArrayBuffer.isView(r)||r instanceof ImageData)return r;if(Array.isArray(r))return r.map(kl);if(typeof r=="object"){const e=r.$name||"Object";if(e==="Map"){const u=new Map;for(const l of Object.keys(r))l!=="$name"&&u.set(l,kl(r[l]));return u}if(e==="Set"){const u=new Set;for(const l of Object.keys(r))l!=="$name"&&u.add(kl(r[l]));return u}const{klass:n}=ph[e];if(!n)throw new Error(`Can't deserialize unregistered class "${e}".`);if(n.deserialize)return n.deserialize(r);const o=Object.create(n.prototype);for(const u of Object.keys(r))u!=="$name"&&(o[u]=kl(r[u]));return o}throw new Error("can't deserialize object of type "+typeof r)}const Zt={"Latin-1 Supplement":r=>r>=128&&r<=255,Arabic:r=>r>=1536&&r<=1791,"Arabic Supplement":r=>r>=1872&&r<=1919,"Arabic Extended-A":r=>r>=2208&&r<=2303,"Hangul Jamo":r=>r>=4352&&r<=4607,"Unified Canadian Aboriginal Syllabics":r=>r>=5120&&r<=5759,Khmer:r=>r>=6016&&r<=6143,"Unified Canadian Aboriginal Syllabics Extended":r=>r>=6320&&r<=6399,"General Punctuation":r=>r>=8192&&r<=8303,"Letterlike Symbols":r=>r>=8448&&r<=8527,"Number Forms":r=>r>=8528&&r<=8591,"Miscellaneous Technical":r=>r>=8960&&r<=9215,"Control Pictures":r=>r>=9216&&r<=9279,"Optical Character Recognition":r=>r>=9280&&r<=9311,"Enclosed Alphanumerics":r=>r>=9312&&r<=9471,"Geometric Shapes":r=>r>=9632&&r<=9727,"Miscellaneous Symbols":r=>r>=9728&&r<=9983,"Miscellaneous Symbols and Arrows":r=>r>=11008&&r<=11263,"CJK Radicals Supplement":r=>r>=11904&&r<=12031,"Kangxi Radicals":r=>r>=12032&&r<=12255,"Ideographic Description Characters":r=>r>=12272&&r<=12287,"CJK Symbols and Punctuation":r=>r>=12288&&r<=12351,Hiragana:r=>r>=12352&&r<=12447,Katakana:r=>r>=12448&&r<=12543,Bopomofo:r=>r>=12544&&r<=12591,"Hangul Compatibility Jamo":r=>r>=12592&&r<=12687,Kanbun:r=>r>=12688&&r<=12703,"Bopomofo Extended":r=>r>=12704&&r<=12735,"CJK Strokes":r=>r>=12736&&r<=12783,"Katakana Phonetic Extensions":r=>r>=12784&&r<=12799,"Enclosed CJK Letters and Months":r=>r>=12800&&r<=13055,"CJK Compatibility":r=>r>=13056&&r<=13311,"CJK Unified Ideographs Extension A":r=>r>=13312&&r<=19903,"Yijing Hexagram Symbols":r=>r>=19904&&r<=19967,"CJK Unified Ideographs":r=>r>=19968&&r<=40959,"Yi Syllables":r=>r>=40960&&r<=42127,"Yi Radicals":r=>r>=42128&&r<=42191,"Hangul Jamo Extended-A":r=>r>=43360&&r<=43391,"Hangul Syllables":r=>r>=44032&&r<=55215,"Hangul Jamo Extended-B":r=>r>=55216&&r<=55295,"Private Use Area":r=>r>=57344&&r<=63743,"CJK Compatibility Ideographs":r=>r>=63744&&r<=64255,"Arabic Presentation Forms-A":r=>r>=64336&&r<=65023,"Vertical Forms":r=>r>=65040&&r<=65055,"CJK Compatibility Forms":r=>r>=65072&&r<=65103,"Small Form Variants":r=>r>=65104&&r<=65135,"Arabic Presentation Forms-B":r=>r>=65136&&r<=65279,"Halfwidth and Fullwidth Forms":r=>r>=65280&&r<=65519,Osage:r=>r>=66736&&r<=66815,"CJK Unified Ideographs Extension B":r=>r>=131072&&r<=173791};function Wd(r){for(const e of r)if(pu(e.charCodeAt(0)))return!0;return!1}function Up(r){for(const e of r)if(!jp(e.charCodeAt(0)))return!1;return!0}function jp(r){return!(Zt.Arabic(r)||Zt["Arabic Supplement"](r)||Zt["Arabic Extended-A"](r)||Zt["Arabic Presentation Forms-A"](r)||Zt["Arabic Presentation Forms-B"](r))}function pu(r){return!(r!==746&&r!==747&&(r<4352||!(Zt["Bopomofo Extended"](r)||Zt.Bopomofo(r)||Zt["CJK Compatibility Forms"](r)&&!(r>=65097&&r<=65103)||Zt["CJK Compatibility Ideographs"](r)||Zt["CJK Compatibility"](r)||Zt["CJK Radicals Supplement"](r)||Zt["CJK Strokes"](r)||!(!Zt["CJK Symbols and Punctuation"](r)||r>=12296&&r<=12305||r>=12308&&r<=12319||r===12336)||Zt["CJK Unified Ideographs Extension A"](r)||Zt["CJK Unified Ideographs"](r)||Zt["Enclosed CJK Letters and Months"](r)||Zt["Hangul Compatibility Jamo"](r)||Zt["Hangul Jamo Extended-A"](r)||Zt["Hangul Jamo Extended-B"](r)||Zt["Hangul Jamo"](r)||Zt["Hangul Syllables"](r)||Zt.Hiragana(r)||Zt["Ideographic Description Characters"](r)||Zt.Kanbun(r)||Zt["Kangxi Radicals"](r)||Zt["Katakana Phonetic Extensions"](r)||Zt.Katakana(r)&&r!==12540||!(!Zt["Halfwidth and Fullwidth Forms"](r)||r===65288||r===65289||r===65293||r>=65306&&r<=65310||r===65339||r===65341||r===65343||r>=65371&&r<=65503||r===65507||r>=65512&&r<=65519)||!(!Zt["Small Form Variants"](r)||r>=65112&&r<=65118||r>=65123&&r<=65126)||Zt["Unified Canadian Aboriginal Syllabics"](r)||Zt["Unified Canadian Aboriginal Syllabics Extended"](r)||Zt["Vertical Forms"](r)||Zt["Yijing Hexagram Symbols"](r)||Zt["Yi Syllables"](r)||Zt["Yi Radicals"](r))))}function $d(r){return!(pu(r)||function(e){return!!(Zt["Latin-1 Supplement"](e)&&(e===167||e===169||e===174||e===177||e===188||e===189||e===190||e===215||e===247)||Zt["General Punctuation"](e)&&(e===8214||e===8224||e===8225||e===8240||e===8241||e===8251||e===8252||e===8258||e===8263||e===8264||e===8265||e===8273)||Zt["Letterlike Symbols"](e)||Zt["Number Forms"](e)||Zt["Miscellaneous Technical"](e)&&(e>=8960&&e<=8967||e>=8972&&e<=8991||e>=8996&&e<=9e3||e===9003||e>=9085&&e<=9114||e>=9150&&e<=9165||e===9167||e>=9169&&e<=9179||e>=9186&&e<=9215)||Zt["Control Pictures"](e)&&e!==9251||Zt["Optical Character Recognition"](e)||Zt["Enclosed Alphanumerics"](e)||Zt["Geometric Shapes"](e)||Zt["Miscellaneous Symbols"](e)&&!(e>=9754&&e<=9759)||Zt["Miscellaneous Symbols and Arrows"](e)&&(e>=11026&&e<=11055||e>=11088&&e<=11097||e>=11192&&e<=11243)||Zt["CJK Symbols and Punctuation"](e)||Zt.Katakana(e)||Zt["Private Use Area"](e)||Zt["CJK Compatibility Forms"](e)||Zt["Small Form Variants"](e)||Zt["Halfwidth and Fullwidth Forms"](e)||e===8734||e===8756||e===8757||e>=9984&&e<=10087||e>=10102&&e<=10131||e===65532||e===65533)}(r))}function mu(r){return r>=1424&&r<=2303||Zt["Arabic Presentation Forms-A"](r)||Zt["Arabic Presentation Forms-B"](r)}function Xd(r,e){return!(!e&&mu(r)||r>=2304&&r<=3583||r>=3840&&r<=4255||Zt.Khmer(r))}function Gp(r){for(const e of r)if(mu(e.charCodeAt(0)))return!0;return!1}const Yd="deferred",na="loading",Kd="loaded";let Jd=null,br="unavailable",Ka=null;const mh=function(r){r&&typeof r=="string"&&r.indexOf("NetworkError")>-1&&(br="error"),Jd&&Jd(r)};function _u(){gc.fire(new Lr("pluginStateChange",{pluginStatus:br,pluginURL:Ka}))}const gc=new Wo,gu=function(){return br},Zp=function(){if(br!==Yd||!Ka)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");br=na,_u(),Ka&&oo({url:Ka},r=>{r?mh(r):(br=Kd,_u())})},fo={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>br===Kd||fo.applyArabicShaping!=null,isLoading:()=>br===na,setState(r){br=r.pluginStatus,Ka=r.pluginURL},isParsed:()=>fo.applyArabicShaping!=null&&fo.processBidirectionalText!=null&&fo.processStyledBidirectionalText!=null,getPluginURL:()=>Ka};class Tn{constructor(e,n){this.zoom=e,n?(this.now=n.now,this.fadeDuration=n.fadeDuration,this.transition=n.transition,this.pitch=n.pitch,this.brightness=n.brightness):(this.now=0,this.fadeDuration=0,this.transition={},this.pitch=0,this.brightness=0)}isSupportedScript(e){return function(n,o){for(const u of n)if(!Xd(u.charCodeAt(0),o))return!1;return!0}(e,fo.isLoaded())}}class yc{constructor(e,n,o,u){this.property=e,this.value=n,this.expression=function(l,f,v,S){if(cu(l))return new du(l,f);if(uu(l)||Array.isArray(l)&&l.length>0){const D=Gd(l,f,v,S);if(D.result==="error")throw new Error(D.value.map(x=>`${x.key}: ${x.message}`).join(", "));return D.value}{let D=l;return typeof l=="string"&&f.type==="color"&&(D=ki.parse(l)),{kind:"constant",configDependencies:new Set,evaluate:()=>D}}}(n===void 0?e.specification.default:n,e.specification,o,u)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}possiblyEvaluate(e,n,o){return this.property.possiblyEvaluate(this,e,n,o)}}class yu{constructor(e,n,o){this.property=e,this.value=new yc(e,void 0,n,o)}transitioned(e,n){return new Rl(this.property,this.value,n,An({},e.transition,this.transition),e.now)}untransitioned(){return new Rl(this.property,this.value,null,{},0)}}class _h{constructor(e,n,o){this._properties=e,this._values=Object.create(e.defaultTransitionablePropertyValues),this._scope=n,this._options=o,this.configDependencies=new Set}getValue(e){return Ks(this._values[e].value.value)}setValue(e,n){this._values.hasOwnProperty(e)||(this._values[e]=new yu(this._values[e].property,this._scope,this._options)),this._values[e].value=new yc(this._values[e].property,n===null?void 0:Ks(n),this._scope,this._options),this._values[e].value.expression.configDependencies&&(this.configDependencies=new Set([...this.configDependencies,...this._values[e].value.expression.configDependencies]))}setTransitionOrValue(e,n){n&&(this._options=n);const o=this._properties.properties;if(e)for(const u in e){const l=e[u];if(yr(u,"-transition")){const f=u.slice(0,-11);o[f]&&this.setTransition(f,l)}else o.hasOwnProperty(u)&&this.setValue(u,l)}}getTransition(e){return Ks(this._values[e].transition)}setTransition(e,n){this._values.hasOwnProperty(e)||(this._values[e]=new yu(this._values[e].property)),this._values[e].transition=Ks(n)||void 0}serialize(){const e={};for(const n of Object.keys(this._values)){const o=this.getValue(n);o!==void 0&&(e[n]=o);const u=this.getTransition(n);u!==void 0&&(e[`${n}-transition`]=u)}return e}transitioned(e,n){const o=new Hp(this._properties);for(const u of Object.keys(this._values))o._values[u]=this._values[u].transitioned(e,n._values[u]);return o}untransitioned(){const e=new Hp(this._properties);for(const n of Object.keys(this._values))e._values[n]=this._values[n].untransitioned();return e}}class Rl{constructor(e,n,o,u,l){const f=u.delay||0,v=u.duration||0;l=l||0,this.property=e,this.value=n,this.begin=l+f,this.end=this.begin+v,e.specification.transition&&(u.delay||u.duration)&&(this.prior=o)}possiblyEvaluate(e,n,o){const u=e.now||0,l=this.value.possiblyEvaluate(e,n,o),f=this.prior;if(f){if(u>this.end)return this.prior=null,l;if(this.value.isDataDriven())return this.prior=null,l;if(u<this.begin)return f.possiblyEvaluate(e,n,o);{const v=(u-this.begin)/(this.end-this.begin);return this.property.interpolate(f.possiblyEvaluate(e,n,o),l,Hr(v))}}return l}}class Hp{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitioningPropertyValues)}possiblyEvaluate(e,n,o){const u=new vc(this._properties);for(const l of Object.keys(this._values))u._values[l]=this._values[l].possiblyEvaluate(e,n,o);return u}hasTransition(){for(const e of Object.keys(this._values))if(this._values[e].prior)return!0;return!1}}class K_{constructor(e,n,o){this._properties=e,this._values=Object.create(e.defaultPropertyValues),this._scope=n,this._options=o,this.configDependencies=new Set}getValue(e){return Ks(this._values[e].value)}setValue(e,n){this._values[e]=new yc(this._values[e].property,n===null?void 0:Ks(n),this._scope,this._options),this._values[e].expression.configDependencies&&(this.configDependencies=new Set([...this.configDependencies,...this._values[e].expression.configDependencies]))}serialize(){const e={};for(const n of Object.keys(this._values)){const o=this.getValue(n);o!==void 0&&(e[n]=o)}return e}possiblyEvaluate(e,n,o){const u=new vc(this._properties);for(const l of Object.keys(this._values))u._values[l]=this._values[l].possiblyEvaluate(e,n,o);return u}}class xc{constructor(e,n,o){this.property=e,this.value=n,this.parameters=o}isConstant(){return this.value.kind==="constant"}constantOr(e){return this.value.kind==="constant"?this.value.value:e}evaluate(e,n,o,u){return this.property.evaluate(this.value,this.parameters,e,n,o,u)}}class vc{constructor(e){this._properties=e,this._values=Object.create(e.defaultPossiblyEvaluatedValues)}get(e){return this._values[e]}}class yt{constructor(e){this.specification=e}possiblyEvaluate(e,n){return e.expression.evaluate(n)}interpolate(e,n,o){const u=Oi[this.specification.type];return u?u(e,n,o):e}}class Dt{constructor(e,n){this.specification=e,this.overrides=n}possiblyEvaluate(e,n,o,u){return new xc(this,e.expression.kind==="constant"||e.expression.kind==="camera"?{kind:"constant",value:e.expression.evaluate(n,null,{},o,u)}:e.expression,n)}interpolate(e,n,o){if(e.value.kind!=="constant"||n.value.kind!=="constant")return e;if(e.value.value===void 0||n.value.value===void 0)return new xc(this,{kind:"constant",value:void 0},e.parameters);const u=Oi[this.specification.type];return u?new xc(this,{kind:"constant",value:u(e.value.value,n.value.value,o)},e.parameters):e}evaluate(e,n,o,u,l,f){return e.kind==="constant"?e.value:e.evaluate(n,o,u,l,f)}}class Ja{constructor(e){this.specification=e}possiblyEvaluate(e,n,o,u){return!!e.expression.evaluate(n,null,{},o,u)}interpolate(){return!1}}class Bn{constructor(e){this.properties=e,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];const n=new Tn(0,{});for(const o in e){const u=e[o];u.specification.overridable&&this.overridableProperties.push(o);const l=this.defaultPropertyValues[o]=new yc(u,void 0),f=this.defaultTransitionablePropertyValues[o]=new yu(u);this.defaultTransitioningPropertyValues[o]=f.untransitioned(),this.defaultPossiblyEvaluatedValues[o]=l.possiblyEvaluate(n)}}}Ft(Dt,"DataDrivenProperty"),Ft(yt,"DataConstantProperty"),Ft(Ja,"ColorRampProperty");var $e=JSON.parse('{"$version":8,"$root":{"version":{"required":true,"type":"enum","values":[8]},"fragment":{"type":"boolean"},"name":{"type":"string"},"metadata":{"type":"*"},"center":{"type":"array","value":"number"},"zoom":{"type":"number"},"bearing":{"type":"number","default":0,"period":360},"pitch":{"type":"number","default":0},"light":{"type":"light"},"lights":{"required":false,"type":"array","value":"light-3d"},"terrain":{"type":"terrain","optional":true},"fog":{"type":"fog"},"snow":{"type":"snow","experimental":true},"rain":{"type":"rain","experimental":true},"camera":{"type":"camera"},"color-theme":{"type":"colorTheme"},"indoor":{"type":"indoor","experimental":true},"imports":{"type":"array","value":"import"},"schema":{"type":"schema"},"sources":{"required":true,"type":"sources"},"sprite":{"type":"string"},"glyphs":{"type":"string","default":"mapbox://fonts/mapbox/{fontstack}/{range}.pbf"},"transition":{"type":"transition"},"projection":{"type":"projection"},"layers":{"required":true,"type":"array","value":"layer"},"models":{"type":"models"},"featuresets":{"experimental":true,"type":"featuresets"}},"featuresets":{"experimental":true,"*":{"type":"featureset"}},"featureset":{"experimental":true,"metadata":{"type":"*"},"selectors":{"type":"array","value":"selector"}},"selector":{"experimental":true,"layer":{"type":"string","required":true},"properties":{"type":"selectorProperty","required":false},"featureNamespace":{"type":"string","required":false}},"selectorProperty":{"experimental":true,"*":{"type":"*"}},"model":{"type":"string","required":true},"import":{"id":{"type":"string","required":true},"url":{"type":"string","required":true},"config":{"type":"config"},"data":{"type":"$root"},"color-theme":{"type":"colorTheme","optional":true}},"config":{"*":{"type":"*"}},"schema":{"*":{"type":"option"}},"option":{"default":{"type":"*","property-type":"data-constant","expression":{},"required":true},"type":{"type":"enum","values":{"string":1,"number":1,"boolean":1,"color":1}},"array":{"type":"boolean"},"minValue":{"type":"number"},"maxValue":{"type":"number"},"stepValue":{"type":"number"},"values":{"type":"array","value":"*"},"metadata":{"type":"*"}},"models":{"*":{"type":"model"}},"light-3d":{"id":{"type":"string","required":true},"properties":{"type":"properties"},"type":{"type":"enum","values":{"ambient":{},"directional":{},"flat":{}}}},"properties":["properties_light_directional","properties_light_ambient","properties_light_flat"],"properties_light_directional":{"direction":{"type":"array","default":[210,30],"minimum":[0,0],"maximum":[360,90],"length":2,"value":"number","property-type":"data-constant","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]}},"color":{"type":"color","property-type":"data-constant","default":"#ffffff","expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"intensity":{"type":"number","property-type":"data-constant","default":0.5,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"cast-shadows":{"type":"boolean","default":false,"property-type":"data-constant"},"shadow-quality":{"type":"number","property-type":"data-constant","default":1,"minimum":0,"maximum":1,"expression":{"parameters":["zoom"]},"experimental":true},"shadow-intensity":{"type":"number","property-type":"data-constant","default":1,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true}},"properties_light_ambient":{"color":{"type":"color","property-type":"data-constant","default":"#ffffff","expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"intensity":{"type":"number","property-type":"data-constant","default":0.5,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true}},"properties_light_flat":{"anchor":{"type":"enum","default":"viewport","values":{"map":1,"viewport":1},"property-type":"data-constant","expression":{"parameters":["zoom"]}},"position":{"type":"array","default":[1.15,210,30],"length":3,"value":"number","property-type":"data-constant","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]}},"color":{"type":"color","property-type":"data-constant","default":"#ffffff","expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"intensity":{"type":"number","property-type":"data-constant","default":0.5,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true}},"sources":{"*":{"type":"source"}},"source":["source_vector","source_raster","source_raster_dem","source_raster_array","source_geojson","source_video","source_image","source_model"],"source_vector":{"type":{"required":true,"type":"enum","values":{"vector":1}},"url":{"type":"string"},"tiles":{"type":"array","value":"string"},"bounds":{"type":"array","value":"number","length":4,"default":[-180,-85.051129,180,85.051129]},"scheme":{"type":"enum","values":{"xyz":1,"tms":1},"default":"xyz"},"minzoom":{"type":"number","default":0},"maxzoom":{"type":"number","default":22},"attribution":{"type":"string"},"promoteId":{"type":"promoteId"},"volatile":{"type":"boolean","default":false},"*":{"type":"*"}},"source_raster":{"type":{"required":true,"type":"enum","values":{"raster":1}},"url":{"type":"string"},"tiles":{"type":"array","value":"string"},"bounds":{"type":"array","value":"number","length":4,"default":[-180,-85.051129,180,85.051129]},"minzoom":{"type":"number","default":0},"maxzoom":{"type":"number","default":22},"tileSize":{"type":"number","default":512},"scheme":{"type":"enum","values":{"xyz":1,"tms":1},"default":"xyz"},"attribution":{"type":"string"},"volatile":{"type":"boolean","default":false},"*":{"type":"*"}},"source_raster_dem":{"type":{"required":true,"type":"enum","values":{"raster-dem":1}},"url":{"type":"string"},"tiles":{"type":"array","value":"string"},"bounds":{"type":"array","value":"number","length":4,"default":[-180,-85.051129,180,85.051129]},"minzoom":{"type":"number","default":0},"maxzoom":{"type":"number","default":22},"tileSize":{"type":"number","default":512},"attribution":{"type":"string"},"encoding":{"type":"enum","values":{"terrarium":1,"mapbox":1},"default":"mapbox"},"volatile":{"type":"boolean","default":false},"*":{"type":"*"}},"source_raster_array":{"experimental":true,"type":{"required":true,"type":"enum","values":{"raster-array":1}},"url":{"type":"string"},"tiles":{"type":"array","value":"string"},"bounds":{"type":"array","value":"number","length":4,"default":[-180,-85.051129,180,85.051129]},"minzoom":{"type":"number","default":0},"maxzoom":{"type":"number","default":22},"tileSize":{"type":"number","default":512},"attribution":{"type":"string"},"rasterLayers":{"type":"*"},"volatile":{"type":"boolean","default":false},"*":{"type":"*"}},"source_geojson":{"type":{"required":true,"type":"enum","values":{"geojson":1}},"data":{"type":"*"},"maxzoom":{"type":"number","default":18},"minzoom":{"type":"number","default":0},"attribution":{"type":"string"},"buffer":{"type":"number","default":128,"maximum":512,"minimum":0},"filter":{"type":"*"},"tolerance":{"type":"number","default":0.375},"cluster":{"type":"boolean","default":false},"clusterRadius":{"type":"number","default":50,"minimum":0},"clusterMaxZoom":{"type":"number"},"clusterMinPoints":{"type":"number"},"clusterProperties":{"type":"*"},"lineMetrics":{"type":"boolean","default":false},"generateId":{"type":"boolean","default":false},"promoteId":{"type":"promoteId"},"dynamic":{"type":"boolean","default":false}},"source_video":{"type":{"required":true,"type":"enum","values":{"video":1}},"urls":{"required":true,"type":"array","value":"string"},"coordinates":{"required":true,"type":"array","length":4,"value":{"type":"array","length":2,"value":"number"}}},"source_image":{"type":{"required":true,"type":"enum","values":{"image":1}},"url":{"required":false,"type":"string"},"coordinates":{"required":true,"type":"array","length":4,"value":{"type":"array","length":2,"value":"number"}}},"source_model":{"type":{"required":true,"type":"enum","values":{"model":1,"batched-model":1}},"maxzoom":{"type":"number","default":18},"minzoom":{"type":"number","default":0},"tiles":{"type":"array","value":"string"}},"layer":{"id":{"type":"string","required":true},"type":{"type":"enum","values":{"fill":{},"line":{},"symbol":{},"circle":{},"heatmap":{},"fill-extrusion":{},"raster":{},"raster-particle":{"experimental":true},"hillshade":{},"model":{"experimental":true},"background":{},"sky":{},"slot":{},"clip":{}},"required":true},"metadata":{"type":"*"},"source":{"type":"string"},"source-layer":{"type":"string"},"slot":{"type":"string"},"minzoom":{"type":"number","minimum":0,"maximum":24},"maxzoom":{"type":"number","minimum":0,"maximum":24},"filter":{"type":"filter"},"layout":{"type":"layout"},"paint":{"type":"paint"}},"layout":["layout_clip","layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_raster-particle","layout_hillshade","layout_background","layout_sky","layout_model"],"layout_background":{"visibility":{"type":"enum","values":{"visible":1,"none":1},"default":"visible","expression":{},"property-type":"constant"}},"layout_sky":{"visibility":{"type":"enum","values":{"visible":1,"none":1},"default":"visible","expression":{},"property-type":"constant"}},"layout_model":{"visibility":{"type":"enum","values":{"visible":1,"none":1},"default":"visible","expression":{},"property-type":"constant"},"model-id":{"type":"string","default":"","property-type":"data-driven","expression":{"parameters":["zoom","feature"]}}},"layout_clip":{"clip-layer-types":{"type":"array","value":"enum","values":{"model":1,"symbol":1},"default":[],"expression":{},"property-type":"data-constant"},"clip-layer-scope":{"type":"array","value":"string","default":[],"expression":{},"property-type":"data-constant"}},"layout_fill":{"fill-sort-key":{"type":"number","expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"visibility":{"type":"enum","values":{"visible":1,"none":1},"default":"visible","expression":{},"property-type":"constant"},"fill-elevation-reference":{"type":"enum","values":{"none":1,"hd-road-base":1,"hd-road-markup":1},"default":"none","experimental":true,"private":true,"expression":{},"property-type":"data-constant"}},"layout_circle":{"circle-sort-key":{"type":"number","expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"visibility":{"type":"enum","values":{"visible":1,"none":1},"default":"visible","expression":{},"property-type":"constant"}},"layout_heatmap":{"visibility":{"type":"enum","values":{"visible":1,"none":1},"default":"visible","expression":{},"property-type":"constant"}},"layout_fill-extrusion":{"visibility":{"type":"enum","values":{"visible":1,"none":1},"default":"visible","expression":{},"property-type":"constant"},"fill-extrusion-edge-radius":{"type":"number","experimental":true,"default":0,"minimum":0,"maximum":1,"expression":{},"property-type":"constant"}},"layout_line":{"line-cap":{"type":"enum","values":{"butt":1,"round":1,"square":1},"default":"butt","expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"line-join":{"type":"enum","values":{"bevel":1,"round":1,"miter":1,"none":1},"default":"miter","expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{"type":"number","default":2,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"line-round-limit":{"type":"number","default":1.05,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"line-sort-key":{"type":"number","expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"line-z-offset":{"type":"number","experimental":true,"default":0,"expression":{"parameters":["zoom","feature","line-progress"]},"property-type":"data-driven"},"line-elevation-reference":{"type":"enum","values":{"none":1,"sea":1,"ground":1,"hd-road-markup":1},"default":"none","experimental":true,"expression":{},"property-type":"data-constant"},"line-cross-slope":{"type":"number","experimental":true,"expression":{},"property-type":"constant"},"visibility":{"type":"enum","values":{"visible":1,"none":1},"default":"visible","expression":{},"property-type":"constant"},"line-width-unit":{"type":"enum","values":{"pixels":1,"meters":1},"default":"pixels","experimental":true,"private":true,"expression":{"parameters":["zoom"]},"property-type":"data-constant"}},"layout_symbol":{"symbol-placement":{"type":"enum","values":{"point":1,"line":1,"line-center":1},"default":"point","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"symbol-spacing":{"type":"number","default":250,"minimum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{"type":"boolean","default":false,"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{"type":"number","expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{"type":"enum","values":{"auto":1,"viewport-y":1,"source":1},"default":"auto","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"symbol-z-elevate":{"type":"boolean","default":false,"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"symbol-elevation-reference":{"type":"enum","values":{"sea":1,"ground":1,"hd-road-markup":1},"default":"ground","experimental":true,"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{"type":"boolean","default":false,"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{"type":"boolean","default":false,"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"icon-optional":{"type":"boolean","default":false,"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{"type":"enum","values":{"map":1,"viewport":1,"auto":1},"default":"auto","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"icon-size":{"type":"number","default":1,"minimum":0,"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-size-scale-range":{"type":"array","value":"number","length":2,"default":[0.8,2],"minimum":0.1,"maximum":10,"experimental":true,"private":true,"expression":{},"property-type":"data-constant"},"icon-text-fit":{"type":"enum","values":{"none":1,"width":1,"height":1,"both":1},"default":"none","expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit-padding":{"type":"array","value":"number","length":4,"default":[0,0,0,0],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-image":{"type":"resolvedImage","tokens":true,"expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{"type":"number","default":0,"period":360,"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{"type":"number","default":2,"minimum":0,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{"type":"boolean","default":false,"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"icon-offset":{"type":"array","value":"number","length":2,"default":[0,0],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{"type":"enum","values":{"center":1,"left":1,"right":1,"top":1,"bottom":1,"top-left":1,"top-right":1,"bottom-left":1,"bottom-right":1},"default":"center","expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{"type":"enum","values":{"map":1,"viewport":1,"auto":1},"default":"auto","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{"type":"enum","values":{"map":1,"viewport":1,"auto":1},"default":"auto","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{"type":"enum","values":{"map":1,"viewport":1,"auto":1},"default":"auto","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"text-field":{"type":"formatted","default":"","tokens":true,"expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-font":{"type":"array","value":"string","default":["Open Sans Regular","Arial Unicode MS Regular"],"expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-size":{"type":"number","default":16,"minimum":0,"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-size-scale-range":{"type":"array","value":"number","length":2,"default":[0.8,2],"minimum":0.1,"maximum":10,"experimental":true,"private":true,"expression":{},"property-type":"data-constant"},"text-max-width":{"type":"number","default":10,"minimum":0,"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{"type":"number","default":1.2,"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-letter-spacing":{"type":"number","default":0,"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-justify":{"type":"enum","values":{"auto":1,"left":1,"center":1,"right":1},"default":"center","expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{"type":"number","default":0,"property-type":"data-driven","expression":{"interpolated":true,"parameters":["zoom","feature"]}},"text-variable-anchor":{"type":"array","value":"enum","values":{"center":1,"left":1,"right":1,"top":1,"bottom":1,"top-left":1,"top-right":1,"bottom-left":1,"bottom-right":1},"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"text-anchor":{"type":"enum","values":{"center":1,"left":1,"right":1,"top":1,"bottom":1,"top-left":1,"top-right":1,"bottom-left":1,"bottom-right":1},"default":"center","expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{"type":"number","default":45,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"text-writing-mode":{"type":"array","value":"enum","values":{"horizontal":1,"vertical":1},"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"text-rotate":{"type":"number","default":0,"period":360,"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-padding":{"type":"number","default":2,"minimum":0,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"text-keep-upright":{"type":"boolean","default":true,"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"text-transform":{"type":"enum","values":{"none":1,"uppercase":1,"lowercase":1},"default":"none","expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-offset":{"type":"array","value":"number","length":2,"default":[0,0],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{"type":"boolean","default":false,"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{"type":"boolean","default":false,"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"text-optional":{"type":"boolean","default":false,"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"visibility":{"type":"enum","values":{"visible":1,"none":1},"default":"visible","expression":{},"property-type":"constant"}},"layout_raster":{"visibility":{"type":"enum","values":{"visible":1,"none":1},"default":"visible","expression":{},"property-type":"constant"}},"layout_raster-particle":{"visibility":{"type":"enum","values":{"visible":1,"none":1},"default":"visible","expression":{},"property-type":"constant"}},"layout_hillshade":{"visibility":{"type":"enum","values":{"visible":1,"none":1},"default":"visible","expression":{},"property-type":"constant"}},"filter":{"type":"array","value":"*"},"filter_symbol":{"type":"boolean","default":false,"property-type":"data-driven","expression":{"parameters":["zoom","feature","pitch","distance-from-center"]}},"filter_fill":{"type":"boolean","default":false,"property-type":"data-driven","expression":{"parameters":["zoom","feature"]}},"filter_hillshade":{"type":"boolean","default":false,"property-type":"data-driven","expression":{"parameters":["zoom","feature"]}},"filter_raster":{"type":"boolean","default":false,"property-type":"data-driven","expression":{"parameters":["zoom","feature"]}},"filter_raster-particle":{"type":"boolean","default":false,"property-type":"data-driven","expression":{"parameters":["zoom","feature"]}},"filter_clip":{"type":"boolean","default":false,"property-type":"data-driven","expression":{"parameters":["zoom","feature"]}},"filter_model":{"type":"boolean","default":false,"property-type":"data-driven","expression":{"parameters":["zoom","feature"]}},"filter_line":{"type":"boolean","default":false,"property-type":"data-driven","expression":{"parameters":["zoom","feature"]}},"filter_circle":{"type":"boolean","default":false,"property-type":"data-driven","expression":{"parameters":["zoom","feature"]}},"filter_fill-extrusion":{"type":"boolean","default":false,"property-type":"data-driven","expression":{"parameters":["zoom","feature"]}},"filter_heatmap":{"type":"boolean","default":false,"property-type":"data-driven","expression":{"parameters":["zoom","feature"]}},"filter_operator":{"type":"enum","values":{"==":1,"!=":1,">":1,">=":1,"<":1,"<=":1,"in":1,"!in":1,"all":1,"any":1,"none":1,"has":1,"!has":1}},"geometry_type":{"type":"enum","values":{"Point":1,"LineString":1,"Polygon":1}},"function":{"expression":{"type":"expression"},"stops":{"type":"array","value":"function_stop"},"base":{"type":"number","default":1,"minimum":0},"property":{"type":"string","default":"$zoom"},"type":{"type":"enum","values":{"identity":1,"exponential":1,"interval":1,"categorical":1},"default":"exponential"},"colorSpace":{"type":"enum","values":{"rgb":1,"lab":1,"hcl":1},"default":"rgb"},"default":{"type":"*","required":false}},"function_stop":{"type":"array","minimum":0,"maximum":24,"value":["number","color"],"length":2},"expression":{"type":"array","value":"*","minimum":1},"fog":{"range":{"type":"array","default":[0.5,10],"minimum":-20,"maximum":20,"length":2,"value":"number","property-type":"data-constant","transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true}},"color":{"type":"color","property-type":"data-constant","default":"#ffffff","expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"high-color":{"type":"color","property-type":"data-constant","default":"#245cdf","expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"space-color":{"type":"color","property-type":"data-constant","default":["interpolate",["linear"],["zoom"],4,"#010b19",7,"#367ab9"],"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"horizon-blend":{"type":"number","property-type":"data-constant","default":["interpolate",["linear"],["zoom"],4,0.2,7,0.1],"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"star-intensity":{"type":"number","property-type":"data-constant","default":["interpolate",["linear"],["zoom"],5,0.35,6,0],"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"vertical-range":{"type":"array","default":[0,0],"minimum":0,"length":2,"value":"number","property-type":"data-constant","transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true}}},"snow":{"density":{"type":"number","property-type":"data-constant","default":["interpolate",["linear"],["zoom"],11,0,13,0.85],"minimum":0,"maximum":1,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"intensity":{"type":"number","property-type":"data-constant","default":1,"minimum":0,"maximum":1,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"color":{"type":"color","property-type":"data-constant","default":"#ffffff","experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"opacity":{"type":"number","property-type":"data-constant","default":1,"minimum":0,"maximum":1,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"vignette":{"type":"number","property-type":"data-constant","default":["interpolate",["linear"],["zoom"],11,0,13,0.3],"minimum":0,"maximum":1,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"vignette-color":{"type":"color","property-type":"data-constant","default":"#ffffff","experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"center-thinning":{"type":"number","property-type":"data-constant","default":0.4,"minimum":0,"maximum":1,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"direction":{"type":"array","default":[0,50],"minimum":0,"maximum":360,"length":2,"value":"number","property-type":"data-constant","transition":true,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true}},"flake-size":{"type":"number","property-type":"data-constant","default":0.71,"minimum":0,"maximum":5,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true}},"rain":{"density":{"type":"number","property-type":"data-constant","default":["interpolate",["linear"],["zoom"],11,0,13,0.5],"minimum":0,"maximum":1,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"intensity":{"type":"number","property-type":"data-constant","default":1,"minimum":0,"maximum":1,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"color":{"type":"color","property-type":"data-constant","default":["interpolate",["linear"],["measure-light","brightness"],0,"#03113d",0.3,"#a8adbc"],"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"opacity":{"type":"number","property-type":"data-constant","default":["interpolate",["linear"],["measure-light","brightness"],0,0.88,1,0.7],"minimum":0,"maximum":1,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"vignette":{"type":"number","property-type":"data-constant","default":["interpolate",["linear"],["zoom"],11,0,13,1],"minimum":0,"maximum":1,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"vignette-color":{"type":"color","property-type":"data-constant","default":["interpolate",["linear"],["measure-light","brightness"],0,"#001736",0.3,"#464646"],"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"center-thinning":{"type":"number","property-type":"data-constant","default":0.57,"minimum":0,"maximum":1,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true},"direction":{"type":"array","default":[0,80],"minimum":0,"maximum":360,"length":2,"value":"number","property-type":"data-constant","transition":true,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true}},"droplet-size":{"type":"array","default":[2.6,18.2],"minimum":0,"maximum":50,"length":2,"value":"number","property-type":"data-constant","transition":true,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true}},"distortion-strength":{"type":"number","property-type":"data-constant","default":0.7,"minimum":0,"maximum":1,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"],"relaxZoomRestriction":true},"transition":true}},"camera":{"camera-projection":{"type":"enum","values":{"perspective":1,"orthographic":1},"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"default":"perspective","property-type":"data-constant"}},"colorTheme":{"data":{"type":"string","property-type":"data-constant","expression":{}}},"indoor":{"floorplanFeaturesetId":{"type":"string","experimental":true,"property-type":"data-constant","expression":{}},"buildingFeaturesetId":{"type":"string","experimental":true,"property-type":"data-constant","expression":{}}},"light":{"anchor":{"type":"enum","default":"viewport","values":{"map":1,"viewport":1},"property-type":"data-constant","expression":{"parameters":["zoom"]}},"position":{"type":"array","default":[1.15,210,30],"length":3,"value":"number","property-type":"data-constant","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]}},"color":{"type":"color","property-type":"data-constant","default":"#ffffff","expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"intensity":{"type":"number","property-type":"data-constant","default":0.5,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true}},"projection":{"name":{"type":"enum","values":{"albers":1,"equalEarth":1,"equirectangular":1,"lambertConformalConic":1,"mercator":1,"naturalEarth":1,"winkelTripel":1,"globe":1},"default":"mercator","required":true},"center":{"type":"array","length":2,"value":"number","property-type":"data-constant","minimum":[-180,-90],"maximum":[180,90]},"parallels":{"type":"array","length":2,"value":"number","property-type":"data-constant","minimum":[-90,-90],"maximum":[90,90]}},"terrain":{"source":{"type":"string","required":true},"exaggeration":{"type":"number","property-type":"data-constant","default":1,"minimum":0,"maximum":1000,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true}},"paint":["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_raster-particle","paint_hillshade","paint_background","paint_sky","paint_model"],"paint_fill":{"fill-antialias":{"type":"boolean","default":true,"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"fill-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"fill-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"fill-outline-color":{"type":"color","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"fill-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{"type":"enum","values":{"map":1,"viewport":1},"default":"map","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"fill-pattern":{"type":"resolvedImage","expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"fill-emissive-strength":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"]},"property-type":"data-constant"},"fill-z-offset":{"type":"number","default":0,"minimum":0,"transition":true,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"fill-extrusion-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{"type":"enum","values":{"map":1,"viewport":1},"default":"map","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{"type":"resolvedImage","expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"fill-extrusion-height":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-height-alignment":{"type":"enum","experimental":true,"values":{"terrain":1,"flat":1},"default":"flat","property-type":"data-constant"},"fill-extrusion-base-alignment":{"type":"enum","experimental":true,"values":{"terrain":1,"flat":1},"default":"terrain","property-type":"data-constant"},"fill-extrusion-vertical-gradient":{"type":"boolean","default":true,"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"fill-extrusion-ambient-occlusion-intensity":{"property-type":"data-constant","type":"number","default":0,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"fill-extrusion-ambient-occlusion-radius":{"property-type":"data-constant","type":"number","default":3,"minimum":0,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"fill-extrusion-ambient-occlusion-wall-radius":{"property-type":"data-constant","type":"number","experimental":true,"default":3,"minimum":0,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"fill-extrusion-ambient-occlusion-ground-radius":{"property-type":"data-constant","type":"number","experimental":true,"default":3,"minimum":0,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"fill-extrusion-ambient-occlusion-ground-attenuation":{"property-type":"data-constant","type":"number","experimental":true,"default":0.69,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]}},"fill-extrusion-flood-light-color":{"property-type":"data-constant","type":"color","experimental":true,"default":"#ffffff","transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"]}},"fill-extrusion-flood-light-intensity":{"property-type":"data-constant","type":"number","experimental":true,"default":0,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"]}},"fill-extrusion-flood-light-wall-radius":{"property-type":"data-driven","type":"number","experimental":true,"default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["feature","feature-state"]}},"fill-extrusion-flood-light-ground-radius":{"property-type":"data-driven","type":"number","experimental":true,"default":0,"transition":true,"expression":{"interpolated":true,"parameters":["feature","feature-state"]}},"fill-extrusion-flood-light-ground-attenuation":{"property-type":"data-constant","type":"number","experimental":true,"default":0.69,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]}},"fill-extrusion-vertical-scale":{"property-type":"data-constant","type":"number","experimental":true,"default":1,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]}},"fill-extrusion-rounded-roof":{"property-type":"data-constant","type":"boolean","default":true,"experimental":true,"expression":{"parameters":["zoom"]}},"fill-extrusion-cutoff-fade-range":{"type":"number","default":0,"minimum":0,"maximum":1,"expression":{},"property-type":"data-constant"},"fill-extrusion-emissive-strength":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light","feature-state"]},"property-type":"data-driven"},"fill-extrusion-line-width":{"type":"number","default":0,"minimum":0,"transition":true,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"fill-extrusion-cast-shadows":{"type":"boolean","default":true,"property-type":"data-constant"}},"paint_line":{"line-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"line-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"line-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{"type":"enum","values":{"map":1,"viewport":1},"default":"map","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"line-width":{"type":"number","default":1,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light","line-progress"]},"property-type":"data-driven"},"line-gap-width":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"line-offset":{"type":"number","default":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"line-blur":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"line-dasharray":{"type":"array","value":"number","minimum":0,"expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"line-pattern":{"type":"resolvedImage","expression":{"parameters":["zoom","feature"]},"property-type":"data-driven"},"line-gradient":{"type":"color","expression":{"interpolated":true,"parameters":["line-progress"]},"property-type":"color-ramp"},"line-trim-offset":{"type":"array","value":"number","length":2,"default":[0,0],"minimum":[0,0],"maximum":[1,1],"property-type":"constant"},"line-trim-fade-range":{"type":"array","value":"number","experimental":true,"length":2,"default":[0,0],"minimum":[0,0],"maximum":[1,1],"expression":{"interpolated":true,"parameters":["zoom","measure-light"]},"property-type":"data-constant"},"line-trim-color":{"type":"color","experimental":true,"default":"transparent","transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"]},"property-type":"data-constant"},"line-emissive-strength":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"]},"property-type":"data-constant"},"line-border-width":{"type":"number","private":true,"default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-border-color":{"type":"color","private":true,"default":"rgba(0, 0, 0, 0)","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-occlusion-opacity":{"type":"number","default":0,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true,"property-type":"data-constant"}},"paint_circle":{"circle-radius":{"type":"number","default":5,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"circle-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"circle-blur":{"type":"number","default":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"circle-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"circle-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{"type":"enum","values":{"map":1,"viewport":1},"default":"map","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{"type":"enum","values":{"map":1,"viewport":1},"default":"map","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{"type":"enum","values":{"map":1,"viewport":1},"default":"viewport","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"circle-stroke-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"circle-stroke-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"circle-emissive-strength":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"]},"property-type":"data-constant"}},"paint_heatmap":{"heatmap-radius":{"type":"number","default":30,"minimum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"heatmap-weight":{"type":"number","default":1,"minimum":0,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"heatmap-intensity":{"type":"number","default":1,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"heatmap-color":{"type":"color","default":["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",0.1,"royalblue",0.3,"cyan",0.5,"lime",0.7,"yellow",1,"red"],"expression":{"interpolated":true,"parameters":["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_symbol":{"icon-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"icon-occlusion-opacity":{"type":"number","minimum":0,"maximum":1,"default":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"icon-emissive-strength":{"type":"number","default":1,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light","feature-state"]},"property-type":"data-driven"},"text-emissive-strength":{"type":"number","default":1,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light","feature-state"]},"property-type":"data-driven"},"icon-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"icon-halo-color":{"type":"color","default":"rgba(0, 0, 0, 0)","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"icon-halo-width":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"icon-halo-blur":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"icon-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{"type":"enum","values":{"map":1,"viewport":1},"default":"map","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"icon-image-cross-fade":{"type":"number","property-type":"data-driven","default":0,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"transition":true},"text-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"text-occlusion-opacity":{"type":"number","minimum":0,"maximum":1,"default":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"text-color":{"type":"color","default":"#000000","transition":true,"overridable":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"text-halo-color":{"type":"color","default":"rgba(0, 0, 0, 0)","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"text-halo-width":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"text-halo-blur":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state","measure-light"]},"property-type":"data-driven"},"text-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{"type":"enum","values":{"map":1,"viewport":1},"default":"map","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"icon-color-saturation":{"type":"number","default":0,"minimum":-1,"maximum":1,"expression":{},"property-type":"data-constant"},"icon-color-contrast":{"type":"number","default":0,"minimum":-1,"maximum":1,"expression":{},"property-type":"data-constant"},"icon-color-brightness-min":{"type":"number","default":0,"minimum":0,"maximum":1,"expression":{},"property-type":"data-constant"},"icon-color-brightness-max":{"type":"number","default":1,"minimum":0,"maximum":1,"expression":{},"property-type":"data-constant"},"symbol-z-offset":{"type":"number","default":0,"minimum":0,"transition":true,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"}},"paint_raster":{"raster-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-color":{"type":"color","expression":{"interpolated":true,"parameters":["raster-value"]},"property-type":"color-ramp"},"raster-color-mix":{"type":"array","default":[0.2126,0.7152,0.0722,0],"length":4,"value":"number","property-type":"data-constant","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]}},"raster-color-range":{"type":"array","length":2,"value":"number","property-type":"data-constant","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]}},"raster-hue-rotate":{"type":"number","default":0,"period":360,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{"type":"number","default":0,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-saturation":{"type":"number","default":0,"minimum":-1,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-contrast":{"type":"number","default":0,"minimum":-1,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-resampling":{"type":"enum","values":{"linear":1,"nearest":1},"default":"linear","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{"type":"number","default":300,"minimum":0,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-emissive-strength":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"]},"property-type":"data-constant"},"raster-array-band":{"type":"string","required":false,"experimental":true,"property-type":"data-constant"},"raster-elevation":{"type":"number","default":0,"minimum":0,"transition":true,"experimental":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_raster-particle":{"raster-particle-array-band":{"type":"string","required":false,"property-type":"data-constant"},"raster-particle-count":{"type":"number","default":512,"minimum":1,"property-type":"data-constant"},"raster-particle-color":{"type":"color","expression":{"interpolated":true,"parameters":["raster-particle-speed"]},"property-type":"color-ramp"},"raster-particle-max-speed":{"type":"number","default":1,"minimum":1,"property-type":"data-constant"},"raster-particle-speed-factor":{"type":"number","default":0.2,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-particle-fade-opacity-factor":{"type":"number","default":0.98,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-particle-reset-rate-factor":{"type":"number","default":0.8,"minimum":0,"maximum":1,"property-type":"data-constant"},"raster-particle-elevation":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_hillshade":{"hillshade-illumination-direction":{"type":"number","default":335,"minimum":0,"maximum":359,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{"type":"enum","values":{"map":1,"viewport":1},"default":"viewport","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{"type":"number","default":0.5,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"]},"property-type":"data-constant"},"hillshade-highlight-color":{"type":"color","default":"#FFFFFF","transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"]},"property-type":"data-constant"},"hillshade-accent-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"]},"property-type":"data-constant"},"hillshade-emissive-strength":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"]},"property-type":"data-constant"}},"paint_background":{"background-pitch-alignment":{"type":"enum","values":{"map":1,"viewport":1},"default":"map","expression":{"parameters":[]},"experimental":true,"property-type":"data-constant"},"background-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"background-pattern":{"type":"resolvedImage","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"background-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"background-emissive-strength":{"type":"number","default":0,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","measure-light"]},"property-type":"data-constant"}},"paint_sky":{"sky-type":{"type":"enum","values":{"gradient":1,"atmosphere":1},"default":"atmosphere","expression":{"parameters":["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun":{"type":"array","value":"number","length":2,"minimum":[0,0],"maximum":[360,180],"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun-intensity":{"type":"number","default":10,"minimum":0,"maximum":100,"property-type":"data-constant"},"sky-gradient-center":{"type":"array","value":"number","default":[0,0],"length":2,"minimum":[0,0],"maximum":[360,180],"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"sky-gradient-radius":{"type":"number","default":90,"minimum":0,"maximum":180,"expression":{"parameters":["zoom"]},"property-type":"data-constant"},"sky-gradient":{"type":"color","default":["interpolate",["linear"],["sky-radial-progress"],0.8,"#87ceeb",1,"white"],"expression":{"interpolated":true,"parameters":["sky-radial-progress"]},"property-type":"color-ramp"},"sky-atmosphere-halo-color":{"type":"color","default":"white","property-type":"data-constant"},"sky-atmosphere-color":{"type":"color","default":"white","property-type":"data-constant"},"sky-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_model":{"model-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["feature","feature-state","zoom"]},"property-type":"data-driven"},"model-rotation":{"type":"array","value":"number","length":3,"default":[0,0,0],"period":360,"property-type":"data-driven","expression":{"interpolated":true,"parameters":["feature","feature-state","zoom"]},"transition":true},"model-scale":{"type":"array","value":"number","length":3,"default":[1,1,1],"property-type":"data-driven","expression":{"interpolated":true,"parameters":["feature","feature-state","zoom"]},"transition":true},"model-translation":{"type":"array","value":"number","length":3,"default":[0,0,0],"property-type":"data-driven","expression":{"interpolated":true,"parameters":["feature","feature-state","zoom"]},"transition":true},"model-color":{"type":"color","default":"#ffffff","property-type":"data-driven","expression":{"interpolated":true,"parameters":["feature","feature-state","measure-light","zoom"]},"transition":true},"model-color-mix-intensity":{"type":"number","property-type":"data-driven","default":0,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["feature","feature-state","measure-light"]},"transition":true},"model-type":{"type":"enum","values":{"common-3d":1,"location-indicator":1},"default":"common-3d","property-type":"data-constant"},"model-cast-shadows":{"type":"boolean","default":true,"property-type":"data-constant"},"model-receive-shadows":{"type":"boolean","default":true,"property-type":"data-constant"},"model-ambient-occlusion-intensity":{"type":"number","default":1,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant","transition":true},"model-emissive-strength":{"type":"number","property-type":"data-driven","default":0,"minimum":0,"maximum":5,"expression":{"interpolated":true,"parameters":["feature","feature-state","measure-light"]},"transition":true},"model-roughness":{"type":"number","default":1,"minimum":0,"maximum":1,"property-type":"data-driven","expression":{"interpolated":true,"parameters":["feature","feature-state"]},"transition":true},"model-height-based-emissive-strength-multiplier":{"type":"array","default":[1,1,1,1,0],"length":5,"value":"number","property-type":"data-driven","expression":{"interpolated":true,"parameters":["feature","feature-state","measure-light"]},"transition":true},"model-cutoff-fade-range":{"type":"number","default":0,"minimum":0,"maximum":1,"expression":{},"property-type":"data-constant"},"model-front-cutoff":{"type":"array","private":true,"value":"number","property-type":"data-constant","expression":{"interpolated":true,"parameters":["zoom"]},"length":3,"default":[0,0,1],"minimum":[0,0,0],"maximum":[1,1,1]}},"transition":{"duration":{"type":"number","default":300,"minimum":0},"delay":{"type":"number","default":0,"minimum":0}},"property-type":{"data-driven":{"type":"property-type"},"color-ramp":{"type":"property-type"},"data-constant":{"type":"property-type"},"constant":{"type":"property-type"}},"promoteId":{"*":{"type":"string"}}}');function qp(r){return r instanceof Number||r instanceof String||r instanceof Boolean?r.valueOf():r}function xu(r){if(Array.isArray(r))return r.map(xu);if(r instanceof Object&&!(r instanceof Number||r instanceof String||r instanceof Boolean)){const e={};for(const n in r)e[n]=xu(r[n]);return e}return qp(r)}function Qd(r){if(r===!0||r===!1)return!0;if(!Array.isArray(r)||r.length===0)return!1;switch(r[0]){case"has":return r.length>=2&&r[1]!=="$id"&&r[1]!=="$type";case"in":return r.length>=3&&(typeof r[1]!="string"||Array.isArray(r[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return r.length!==3||Array.isArray(r[1])||Array.isArray(r[2]);case"any":case"all":for(const e of r.slice(1))if(!Qd(e)&&typeof e!="boolean")return!1;return!0;default:return!0}}function Wp(r,e="",n=null,o="fill"){if(r==null)return{filter:()=>!0,needGeometry:!1,needFeature:!1};Qd(r)||(r=gh(r));const u=r;let l=!0;try{l=function(x){if(!bc(x))return x;let P=xu(x);return Xp(P),P=$p(P),P}(u)}catch{console.warn(`Failed to extract static filter. Filter will continue working, but at higher memory usage and slower framerate.
|
||
This is most likely a bug, please report this via https://github.com/mapbox/mapbox-gl-js/issues/new?assignees=&labels=&template=Bug_report.md
|
||
and paste the contents of this message in the report.
|
||
Thank you!
|
||
Filter Expression:
|
||
${JSON.stringify(u,null,2)}
|
||
`)}let f=null,v=null;if(o!=="background"&&o!=="sky"&&o!=="slot"){v=$e[`filter_${o}`];const x=fh(l,v,e,n);if(x.result==="error")throw new Error(x.value.map(P=>`${P.key}: ${P.message}`).join(", "));f=(P,I,M)=>x.value.evaluate(P,I,{},M)}let S=null,D=null;if(l!==u){const x=fh(u,v,e,n);if(x.result==="error")throw new Error(x.value.map(P=>`${P.key}: ${P.message}`).join(", "));S=(P,I,M,C,k)=>x.value.evaluate(P,I,{},M,void 0,void 0,C,k),D=!lo(x.value.expression)}return{filter:f,dynamicFilter:S||void 0,needGeometry:Ol(l),needFeature:!!D}}function $p(r){if(!Array.isArray(r))return r;const e=function(n){if(J_.has(n[0])){for(let o=1;o<n.length;o++)if(bc(n[o]))return!0}return n}(r);return e===!0?e:e.map(n=>$p(n))}function Xp(r){let e=!1;const n=[];if(r[0]==="case"){for(let o=1;o<r.length-1;o+=2)e=e||bc(r[o]),n.push(r[o+1]);n.push(r[r.length-1])}else if(r[0]==="match"){e=e||bc(r[1]);for(let o=2;o<r.length-1;o+=2)n.push(r[o+1]);n.push(r[r.length-1])}else if(r[0]==="step"){e=e||bc(r[1]);for(let o=1;o<r.length-1;o+=2)n.push(r[o+1])}e&&(r.length=0,r.push("any",...n));for(let o=1;o<r.length;o++)Xp(r[o])}function bc(r){if(!Array.isArray(r))return!1;if((e=r[0])==="pitch"||e==="distance-from-center")return!0;var e;for(let n=1;n<r.length;n++)if(bc(r[n]))return!0;return!1}const J_=new Set(["in","==","!=",">",">=","<","<=","to-boolean"]);function Q_(r,e){return r<e?-1:r>e?1:0}function Ol(r){if(!Array.isArray(r))return!1;if(r[0]==="within"||r[0]==="distance")return!0;for(let e=1;e<r.length;e++)if(Ol(r[e]))return!0;return!1}function gh(r){if(!r)return!0;const e=r[0];return r.length<=1?e!=="any":e==="=="?vu(r[1],r[2],"=="):e==="!="?bu(vu(r[1],r[2],"==")):e==="<"||e===">"||e==="<="||e===">="?vu(r[1],r[2],e):e==="any"?(n=r.slice(1),["any"].concat(n.map(gh))):e==="all"?["all"].concat(r.slice(1).map(gh)):e==="none"?["all"].concat(r.slice(1).map(gh).map(bu)):e==="in"?yh(r[1],r.slice(2)):e==="!in"?bu(yh(r[1],r.slice(2))):e==="has"?Yp(r[1]):e!=="!has"||bu(Yp(r[1]));var n}function vu(r,e,n){switch(r){case"$type":return[`filter-type-${n}`,e];case"$id":return[`filter-id-${n}`,e];default:return[`filter-${n}`,r,e]}}function yh(r,e){if(e.length===0)return!1;switch(r){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some(n=>typeof n!=typeof e[0])?["filter-in-large",r,["literal",e.sort(Q_)]]:["filter-in-small",r,["literal",e]]}}function Yp(r){switch(r){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",r]}}function bu(r){return["!",r]}const Lo="";function zo(r,e){return e?`${r}${Lo}${e}`:r}const Fl="-transition",eg=new Set(["fill","line","background","hillshade","raster"]);class wr extends Wo{constructor(e,n,o,u,l){if(super(),this.id=e.id,this.fqid=zo(this.id,o),this.type=e.type,this.scope=o,this.lut=u,this.options=l,this._featureFilter={filter:()=>!0,needGeometry:!1,needFeature:!1},this._filterCompiled=!1,this.configDependencies=new Set,e.type!=="custom"){if(this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,e.type&&e.type!=="background"&&e.type!=="sky"&&e.type!=="slot"){this.source=e.source,this.sourceLayer=e["source-layer"],this.filter=e.filter;const f=fh(this.filter,$e[`filter_${e.type}`]);f.result!=="error"&&(this.configDependencies=new Set([...this.configDependencies,...f.value.configDependencies]))}if(e.slot&&(this.slot=e.slot),n.layout&&(this._unevaluatedLayout=new K_(n.layout,this.scope,l),this.configDependencies=new Set([...this.configDependencies,...this._unevaluatedLayout.configDependencies])),n.paint){this._transitionablePaint=new _h(n.paint,this.scope,l);for(const f in e.paint)this.setPaintProperty(f,e.paint[f]);for(const f in e.layout)this.setLayoutProperty(f,e.layout[f]);this.configDependencies=new Set([...this.configDependencies,...this._transitionablePaint.configDependencies]),this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new vc(n.paint)}}}onAdd(e){}onRemove(e){}isDraped(e){return!this.is3D()&&eg.has(this.type)}getLayoutProperty(e){return e==="visibility"?this.visibility:this._unevaluatedLayout.getValue(e)}setLayoutProperty(e,n){if(this.type==="custom"&&e==="visibility")return void(this.visibility=n);const o=this._unevaluatedLayout;o._properties.properties[e]&&(o.setValue(e,n),this.configDependencies=new Set([...this.configDependencies,...o.configDependencies]),e==="visibility"&&this.possiblyEvaluateVisibility())}possiblyEvaluateVisibility(){this._unevaluatedLayout._values.visibility&&(this.visibility=this._unevaluatedLayout._values.visibility.possiblyEvaluate({zoom:0}))}getPaintProperty(e){return yr(e,Fl)?this._transitionablePaint.getTransition(e.slice(0,-11)):this._transitionablePaint.getValue(e)}setPaintProperty(e,n){const o=this._transitionablePaint,u=o._properties.properties;if(yr(e,Fl)){const P=e.slice(0,-11);return u[P]&&o.setTransition(P,n||void 0),!1}if(!u[e])return!1;const l=o._values[e],f=l.value.isDataDriven(),v=l.value;o.setValue(e,n),this.configDependencies=new Set([...this.configDependencies,...o.configDependencies]),this._handleSpecialPaintPropertyUpdate(e);const S=o._values[e].value,D=S.isDataDriven(),x=yr(e,"pattern")||e==="line-dasharray";return D||f||x||this._handleOverridablePaintPropertyUpdate(e,v,S)}_handleSpecialPaintPropertyUpdate(e){}getProgramIds(){return null}getDefaultProgramParams(e,n,o){return null}_handleOverridablePaintPropertyUpdate(e,n,o){return!1}isHidden(e){return!!(this.minzoom&&e<this.minzoom)||!!(this.maxzoom&&e>=this.maxzoom)||this.visibility==="none"}updateTransitions(e){this._transitioningPaint=this._transitionablePaint.transitioned(e,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(e,n){this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(e,void 0,n)),this.paint=this._transitioningPaint.possiblyEvaluate(e,void 0,n)}serialize(){return ro({id:this.id,type:this.type,slot:this.slot,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()},(e,n)=>!(e===void 0||n==="layout"&&!Object.keys(e).length||n==="paint"&&!Object.keys(e).length))}is3D(){return!1}isSky(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}hasShadowPass(){return!1}canCastShadows(){return!1}hasLightBeamPass(){return!1}cutoffRange(){return 0}tileCoverLift(){return 0}resize(){}isStateDependent(){for(const e in this.paint._values){const n=this.paint.get(e);if(n instanceof xc&&pc(n.property.specification)&&(n.value.kind==="source"||n.value.kind==="composite")&&n.value.isStateDependent)return!0}return!1}compileFilter(e){this._filterCompiled||(this._featureFilter=Wp(this.filter,this.scope,e),this._filterCompiled=!0)}invalidateCompiledFilter(){this._filterCompiled=!1}dynamicFilter(){return this._featureFilter.dynamicFilter}dynamicFilterNeedsFeature(){return this._featureFilter.needFeature}getLayerRenderingStats(){return this._stats}resetLayerRenderingStats(e){this._stats&&(e.renderPass==="shadow"?this._stats.numRenderedVerticesInShadowPass=0:this._stats.numRenderedVerticesInTransparentPass=0)}queryRadius(e){}queryIntersectsFeature(e,n,o,u,l,f,v,S,D){}}const tg={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class xh{constructor(e,n){this._structArray=e,this._pos1=n*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class wn{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(e,n){return e._trim(),n&&(e.isTransferred=!0,n.add(e.arrayBuffer)),{length:e.length,arrayBuffer:e.arrayBuffer}}static deserialize(e){const n=Object.create(this.prototype);return n.arrayBuffer=e.arrayBuffer,n.length=e.length,n.capacity=e.arrayBuffer.byteLength/n.bytesPerElement,n._refreshViews(),n}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(e){this.reserve(e),this.length=e}reserve(e){if(e>this.capacity){this.capacity=Math.max(e,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const n=this.uint8;this._refreshViews(),n&&this.uint8.set(n)}}_refreshViews(){throw new Error("StructArray#_refreshViews() must be implemented by each concrete StructArray layout")}emplace(...e){throw new Error("StructArray#emplace() must be implemented by each concrete StructArray layout")}emplaceBack(...e){throw new Error("StructArray#emplaceBack() must be implemented by each concrete StructArray layout")}destroy(){this.int8=this.uint8=this.int16=this.uint16=this.int32=this.uint32=this.float32=null,this.arrayBuffer=null}}function qi(r,e=1){let n=0,o=0;return{members:r.map(u=>{const l=tg[u.type].BYTES_PER_ELEMENT,f=n=wu(n,Math.max(e,l)),v=u.components||1;return o=Math.max(o,l),n+=l*v,{name:u.name,type:u.type,components:v,offset:f}}),size:wu(n,Math.max(o,e)),alignment:e}}function wu(r,e){return Math.ceil(r/e)*e}class Do extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,n){const o=this.length;return this.resize(o+1),this.emplace(o,e,n)}emplace(e,n,o){const u=2*e;return this.int16[u+0]=n,this.int16[u+1]=o,e}}Do.prototype.bytesPerElement=4,Ft(Do,"StructArrayLayout2i4");class vh extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,n,o){const u=this.length;return this.resize(u+1),this.emplace(u,e,n,o)}emplace(e,n,o,u){const l=3*e;return this.int16[l+0]=n,this.int16[l+1]=o,this.int16[l+2]=u,e}}vh.prototype.bytesPerElement=6,Ft(vh,"StructArrayLayout3i6");class Qa extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,n,o,u){const l=this.length;return this.resize(l+1),this.emplace(l,e,n,o,u)}emplace(e,n,o,u,l){const f=4*e;return this.int16[f+0]=n,this.int16[f+1]=o,this.int16[f+2]=u,this.int16[f+3]=l,e}}Qa.prototype.bytesPerElement=8,Ft(Qa,"StructArrayLayout4i8");class ef extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l){const f=this.length;return this.resize(f+1),this.emplace(f,e,n,o,u,l)}emplace(e,n,o,u,l,f){const v=5*e;return this.int16[v+0]=n,this.int16[v+1]=o,this.int16[v+2]=u,this.int16[v+3]=l,this.int16[v+4]=f,e}}ef.prototype.bytesPerElement=10,Ft(ef,"StructArrayLayout5i10");class po extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l,f,v){const S=this.length;return this.resize(S+1),this.emplace(S,e,n,o,u,l,f,v)}emplace(e,n,o,u,l,f,v,S){const D=6*e,x=12*e,P=3*e;return this.int16[D+0]=n,this.int16[D+1]=o,this.uint8[x+4]=u,this.uint8[x+5]=l,this.uint8[x+6]=f,this.uint8[x+7]=v,this.float32[P+2]=S,e}}po.prototype.bytesPerElement=12,Ft(po,"StructArrayLayout2i4ub1f12");class el extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,n,o,u){const l=this.length;return this.resize(l+1),this.emplace(l,e,n,o,u)}emplace(e,n,o,u,l){const f=4*e;return this.float32[f+0]=n,this.float32[f+1]=o,this.float32[f+2]=u,this.float32[f+3]=l,e}}el.prototype.bytesPerElement=16,Ft(el,"StructArrayLayout4f16");class Sa extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,n,o){const u=this.length;return this.resize(u+1),this.emplace(u,e,n,o)}emplace(e,n,o,u){const l=3*e;return this.float32[l+0]=n,this.float32[l+1]=o,this.float32[l+2]=u,e}}Sa.prototype.bytesPerElement=12,Ft(Sa,"StructArrayLayout3f12");class tl extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l){const f=this.length;return this.resize(f+1),this.emplace(f,e,n,o,u,l)}emplace(e,n,o,u,l,f){const v=6*e,S=3*e;return this.uint16[v+0]=n,this.uint16[v+1]=o,this.uint16[v+2]=u,this.uint16[v+3]=l,this.float32[S+2]=f,e}}tl.prototype.bytesPerElement=12,Ft(tl,"StructArrayLayout4ui1f12");class Tu extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,n,o,u){const l=this.length;return this.resize(l+1),this.emplace(l,e,n,o,u)}emplace(e,n,o,u,l){const f=4*e;return this.uint16[f+0]=n,this.uint16[f+1]=o,this.uint16[f+2]=u,this.uint16[f+3]=l,e}}Tu.prototype.bytesPerElement=8,Ft(Tu,"StructArrayLayout4ui8");class Mu extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l,f){const v=this.length;return this.resize(v+1),this.emplace(v,e,n,o,u,l,f)}emplace(e,n,o,u,l,f,v){const S=6*e;return this.int16[S+0]=n,this.int16[S+1]=o,this.int16[S+2]=u,this.int16[S+3]=l,this.int16[S+4]=f,this.int16[S+5]=v,e}}Mu.prototype.bytesPerElement=12,Ft(Mu,"StructArrayLayout6i12");class tf extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l,f,v,S,D,x,P,I){const M=this.length;return this.resize(M+1),this.emplace(M,e,n,o,u,l,f,v,S,D,x,P,I)}emplace(e,n,o,u,l,f,v,S,D,x,P,I,M){const C=12*e;return this.int16[C+0]=n,this.int16[C+1]=o,this.int16[C+2]=u,this.int16[C+3]=l,this.uint16[C+4]=f,this.uint16[C+5]=v,this.uint16[C+6]=S,this.uint16[C+7]=D,this.int16[C+8]=x,this.int16[C+9]=P,this.int16[C+10]=I,this.int16[C+11]=M,e}}tf.prototype.bytesPerElement=24,Ft(tf,"StructArrayLayout4i4ui4i24");class nf extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l,f){const v=this.length;return this.resize(v+1),this.emplace(v,e,n,o,u,l,f)}emplace(e,n,o,u,l,f,v){const S=10*e,D=5*e;return this.int16[S+0]=n,this.int16[S+1]=o,this.int16[S+2]=u,this.float32[D+2]=l,this.float32[D+3]=f,this.float32[D+4]=v,e}}nf.prototype.bytesPerElement=20,Ft(nf,"StructArrayLayout3i3f20");class sf extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e){const n=this.length;return this.resize(n+1),this.emplace(n,e)}emplace(e,n){return this.uint32[1*e+0]=n,e}}sf.prototype.bytesPerElement=4,Ft(sf,"StructArrayLayout1ul4");class il extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,n){const o=this.length;return this.resize(o+1),this.emplace(o,e,n)}emplace(e,n,o){const u=2*e;return this.uint16[u+0]=n,this.uint16[u+1]=o,e}}il.prototype.bytesPerElement=4,Ft(il,"StructArrayLayout2ui4");class rf extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l,f,v,S,D,x,P,I,M){const C=this.length;return this.resize(C+1),this.emplace(C,e,n,o,u,l,f,v,S,D,x,P,I,M)}emplace(e,n,o,u,l,f,v,S,D,x,P,I,M,C){const k=20*e,V=10*e;return this.int16[k+0]=n,this.int16[k+1]=o,this.int16[k+2]=u,this.int16[k+3]=l,this.int16[k+4]=f,this.float32[V+3]=v,this.float32[V+4]=S,this.float32[V+5]=D,this.float32[V+6]=x,this.int16[k+14]=P,this.uint32[V+8]=I,this.uint16[k+18]=M,this.uint16[k+19]=C,e}}rf.prototype.bytesPerElement=40,Ft(rf,"StructArrayLayout5i4f1i1ul2ui40");class Su extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l,f,v){const S=this.length;return this.resize(S+1),this.emplace(S,e,n,o,u,l,f,v)}emplace(e,n,o,u,l,f,v,S){const D=8*e;return this.int16[D+0]=n,this.int16[D+1]=o,this.int16[D+2]=u,this.int16[D+4]=l,this.int16[D+5]=f,this.int16[D+6]=v,this.int16[D+7]=S,e}}Su.prototype.bytesPerElement=16,Ft(Su,"StructArrayLayout3i2i2i16");class Eu extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l){const f=this.length;return this.resize(f+1),this.emplace(f,e,n,o,u,l)}emplace(e,n,o,u,l,f){const v=4*e,S=8*e;return this.float32[v+0]=n,this.float32[v+1]=o,this.float32[v+2]=u,this.int16[S+6]=l,this.int16[S+7]=f,e}}Eu.prototype.bytesPerElement=16,Ft(Eu,"StructArrayLayout2f1f2i16");class of extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l,f){const v=this.length;return this.resize(v+1),this.emplace(v,e,n,o,u,l,f)}emplace(e,n,o,u,l,f,v){const S=20*e,D=5*e;return this.uint8[S+0]=n,this.uint8[S+1]=o,this.float32[D+1]=u,this.float32[D+2]=l,this.float32[D+3]=f,this.float32[D+4]=v,e}}of.prototype.bytesPerElement=20,Ft(of,"StructArrayLayout2ub4f20");class qs extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,n,o){const u=this.length;return this.resize(u+1),this.emplace(u,e,n,o)}emplace(e,n,o,u){const l=3*e;return this.uint16[l+0]=n,this.uint16[l+1]=o,this.uint16[l+2]=u,e}}qs.prototype.bytesPerElement=6,Ft(qs,"StructArrayLayout3ui6");class af extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l,f,v,S,D,x,P,I,M,C,k,V,U,q,$,H,K){const Q=this.length;return this.resize(Q+1),this.emplace(Q,e,n,o,u,l,f,v,S,D,x,P,I,M,C,k,V,U,q,$,H,K)}emplace(e,n,o,u,l,f,v,S,D,x,P,I,M,C,k,V,U,q,$,H,K,Q){const ie=30*e,fe=15*e,de=60*e;return this.int16[ie+0]=n,this.int16[ie+1]=o,this.int16[ie+2]=u,this.float32[fe+2]=l,this.float32[fe+3]=f,this.uint16[ie+8]=v,this.uint16[ie+9]=S,this.uint32[fe+5]=D,this.uint32[fe+6]=x,this.uint32[fe+7]=P,this.uint16[ie+16]=I,this.uint16[ie+17]=M,this.uint16[ie+18]=C,this.float32[fe+10]=k,this.float32[fe+11]=V,this.uint8[de+48]=U,this.uint8[de+49]=q,this.uint8[de+50]=$,this.uint32[fe+13]=H,this.int16[ie+28]=K,this.uint8[de+58]=Q,e}}af.prototype.bytesPerElement=60,Ft(af,"StructArrayLayout3i2f2ui3ul3ui2f3ub1ul1i1ub60");class Pu extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l,f,v,S,D,x,P,I,M,C,k,V,U,q,$,H,K,Q,ie,fe,de,ue,Se,me,Ee,ze,Ie,Re){const Ve=this.length;return this.resize(Ve+1),this.emplace(Ve,e,n,o,u,l,f,v,S,D,x,P,I,M,C,k,V,U,q,$,H,K,Q,ie,fe,de,ue,Se,me,Ee,ze,Ie,Re)}emplace(e,n,o,u,l,f,v,S,D,x,P,I,M,C,k,V,U,q,$,H,K,Q,ie,fe,de,ue,Se,me,Ee,ze,Ie,Re,Ve){const Ue=20*e,Fe=40*e,et=80*e;return this.float32[Ue+0]=n,this.float32[Ue+1]=o,this.int16[Fe+4]=u,this.int16[Fe+5]=l,this.int16[Fe+6]=f,this.int16[Fe+7]=v,this.int16[Fe+8]=S,this.int16[Fe+9]=D,this.int16[Fe+10]=x,this.int16[Fe+11]=P,this.int16[Fe+12]=I,this.uint16[Fe+13]=M,this.uint16[Fe+14]=C,this.uint16[Fe+15]=k,this.uint16[Fe+16]=V,this.uint16[Fe+17]=U,this.uint16[Fe+18]=q,this.uint16[Fe+19]=$,this.uint16[Fe+20]=H,this.uint16[Fe+21]=K,this.uint16[Fe+22]=Q,this.uint16[Fe+23]=ie,this.uint16[Fe+24]=fe,this.uint16[Fe+25]=de,this.uint16[Fe+26]=ue,this.uint16[Fe+27]=Se,this.uint32[Ue+14]=me,this.float32[Ue+15]=Ee,this.float32[Ue+16]=ze,this.float32[Ue+17]=Ie,this.float32[Ue+18]=Re,this.uint8[et+76]=Ve,e}}Pu.prototype.bytesPerElement=80,Ft(Pu,"StructArrayLayout2f9i15ui1ul4f1ub80");class wc extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e){const n=this.length;return this.resize(n+1),this.emplace(n,e)}emplace(e,n){return this.float32[1*e+0]=n,e}}wc.prototype.bytesPerElement=4,Ft(wc,"StructArrayLayout1f4");class Br extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l){const f=this.length;return this.resize(f+1),this.emplace(f,e,n,o,u,l)}emplace(e,n,o,u,l,f){const v=5*e;return this.float32[v+0]=n,this.float32[v+1]=o,this.float32[v+2]=u,this.float32[v+3]=l,this.float32[v+4]=f,e}}Br.prototype.bytesPerElement=20,Ft(Br,"StructArrayLayout5f20");class Au extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l,f,v){const S=this.length;return this.resize(S+1),this.emplace(S,e,n,o,u,l,f,v)}emplace(e,n,o,u,l,f,v,S){const D=7*e;return this.float32[D+0]=n,this.float32[D+1]=o,this.float32[D+2]=u,this.float32[D+3]=l,this.float32[D+4]=f,this.float32[D+5]=v,this.float32[D+6]=S,e}}Au.prototype.bytesPerElement=28,Ft(Au,"StructArrayLayout7f28");class lf extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l,f,v,S,D,x,P){const I=this.length;return this.resize(I+1),this.emplace(I,e,n,o,u,l,f,v,S,D,x,P)}emplace(e,n,o,u,l,f,v,S,D,x,P,I){const M=11*e;return this.float32[M+0]=n,this.float32[M+1]=o,this.float32[M+2]=u,this.float32[M+3]=l,this.float32[M+4]=f,this.float32[M+5]=v,this.float32[M+6]=S,this.float32[M+7]=D,this.float32[M+8]=x,this.float32[M+9]=P,this.float32[M+10]=I,e}}lf.prototype.bytesPerElement=44,Ft(lf,"StructArrayLayout11f44");class cf extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l,f,v,S,D){const x=this.length;return this.resize(x+1),this.emplace(x,e,n,o,u,l,f,v,S,D)}emplace(e,n,o,u,l,f,v,S,D,x){const P=9*e;return this.float32[P+0]=n,this.float32[P+1]=o,this.float32[P+2]=u,this.float32[P+3]=l,this.float32[P+4]=f,this.float32[P+5]=v,this.float32[P+6]=S,this.float32[P+7]=D,this.float32[P+8]=x,e}}cf.prototype.bytesPerElement=36,Ft(cf,"StructArrayLayout9f36");class Bl extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,n){const o=this.length;return this.resize(o+1),this.emplace(o,e,n)}emplace(e,n,o){const u=2*e;return this.float32[u+0]=n,this.float32[u+1]=o,e}}Bl.prototype.bytesPerElement=8,Ft(Bl,"StructArrayLayout2f8");class bh extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,n,o,u){const l=this.length;return this.resize(l+1),this.emplace(l,e,n,o,u)}emplace(e,n,o,u,l){const f=6*e;return this.uint32[3*e+0]=n,this.uint16[f+2]=o,this.uint16[f+3]=u,this.uint16[f+4]=l,e}}bh.prototype.bytesPerElement=12,Ft(bh,"StructArrayLayout1ul3ui12");class Cu extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e){const n=this.length;return this.resize(n+1),this.emplace(n,e)}emplace(e,n){return this.uint16[1*e+0]=n,e}}Cu.prototype.bytesPerElement=2,Ft(Cu,"StructArrayLayout1ui2");class hf extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l,f,v,S,D,x,P,I,M,C,k,V){const U=this.length;return this.resize(U+1),this.emplace(U,e,n,o,u,l,f,v,S,D,x,P,I,M,C,k,V)}emplace(e,n,o,u,l,f,v,S,D,x,P,I,M,C,k,V,U){const q=16*e;return this.float32[q+0]=n,this.float32[q+1]=o,this.float32[q+2]=u,this.float32[q+3]=l,this.float32[q+4]=f,this.float32[q+5]=v,this.float32[q+6]=S,this.float32[q+7]=D,this.float32[q+8]=x,this.float32[q+9]=P,this.float32[q+10]=I,this.float32[q+11]=M,this.float32[q+12]=C,this.float32[q+13]=k,this.float32[q+14]=V,this.float32[q+15]=U,e}}hf.prototype.bytesPerElement=64,Ft(hf,"StructArrayLayout16f64");class wh extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,n,o,u,l,f,v){const S=this.length;return this.resize(S+1),this.emplace(S,e,n,o,u,l,f,v)}emplace(e,n,o,u,l,f,v,S){const D=10*e,x=5*e;return this.uint16[D+0]=n,this.uint16[D+1]=o,this.uint16[D+2]=u,this.uint16[D+3]=l,this.float32[x+2]=f,this.float32[x+3]=v,this.float32[x+4]=S,e}}wh.prototype.bytesPerElement=20,Ft(wh,"StructArrayLayout4ui3f20");class uf extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e){const n=this.length;return this.resize(n+1),this.emplace(n,e)}emplace(e,n){return this.int16[1*e+0]=n,e}}uf.prototype.bytesPerElement=2,Ft(uf,"StructArrayLayout1i2");class Iu extends wn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer)}emplaceBack(e){const n=this.length;return this.resize(n+1),this.emplace(n,e)}emplace(e,n){return this.uint8[1*e+0]=n,e}}Iu.prototype.bytesPerElement=1,Ft(Iu,"StructArrayLayout1ub1");class Th extends xh{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.int16[this._pos2+3]}get tileAnchorY(){return this._structArray.int16[this._pos2+4]}get x1(){return this._structArray.float32[this._pos4+3]}get y1(){return this._structArray.float32[this._pos4+4]}get x2(){return this._structArray.float32[this._pos4+5]}get y2(){return this._structArray.float32[this._pos4+6]}get padding(){return this._structArray.int16[this._pos2+14]}get featureIndex(){return this._structArray.uint32[this._pos4+8]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+18]}get bucketIndex(){return this._structArray.uint16[this._pos2+19]}}Th.prototype.size=40;class Kp extends rf{get(e){return new Th(this,e)}}Ft(Kp,"CollisionBoxArray");class Jp extends xh{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.float32[this._pos4+2]}get tileAnchorY(){return this._structArray.float32[this._pos4+3]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+8]}get numGlyphs(){return this._structArray.uint16[this._pos2+9]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+5]}get lineStartIndex(){return this._structArray.uint32[this._pos4+6]}get lineLength(){return this._structArray.uint32[this._pos4+7]}get segment(){return this._structArray.uint16[this._pos2+16]}get lowerSize(){return this._structArray.uint16[this._pos2+17]}get upperSize(){return this._structArray.uint16[this._pos2+18]}get lineOffsetX(){return this._structArray.float32[this._pos4+10]}get lineOffsetY(){return this._structArray.float32[this._pos4+11]}get writingMode(){return this._structArray.uint8[this._pos1+48]}get placedOrientation(){return this._structArray.uint8[this._pos1+49]}set placedOrientation(e){this._structArray.uint8[this._pos1+49]=e}get hidden(){return this._structArray.uint8[this._pos1+50]}set hidden(e){this._structArray.uint8[this._pos1+50]=e}get crossTileID(){return this._structArray.uint32[this._pos4+13]}set crossTileID(e){this._structArray.uint32[this._pos4+13]=e}get associatedIconIndex(){return this._structArray.int16[this._pos2+28]}get flipState(){return this._structArray.uint8[this._pos1+58]}set flipState(e){this._structArray.uint8[this._pos1+58]=e}}Jp.prototype.size=60;class Qp extends af{get(e){return new Jp(this,e)}}Ft(Qp,"PlacedSymbolArray");class em extends xh{get tileAnchorX(){return this._structArray.float32[this._pos4+0]}get tileAnchorY(){return this._structArray.float32[this._pos4+1]}get projectedAnchorX(){return this._structArray.int16[this._pos2+4]}get projectedAnchorY(){return this._structArray.int16[this._pos2+5]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+6]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+7]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+8]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+9]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+10]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+11]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+12]}get key(){return this._structArray.uint16[this._pos2+13]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+14]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+15]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+16]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+17]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+18]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+19]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+20]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+21]}get featureIndex(){return this._structArray.uint16[this._pos2+22]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+23]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+24]}get numIconVertices(){return this._structArray.uint16[this._pos2+25]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+26]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+27]}get crossTileID(){return this._structArray.uint32[this._pos4+14]}set crossTileID(e){this._structArray.uint32[this._pos4+14]=e}get textOffset0(){return this._structArray.float32[this._pos4+15]}get textOffset1(){return this._structArray.float32[this._pos4+16]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+17]}get zOffset(){return this._structArray.float32[this._pos4+18]}set zOffset(e){this._structArray.float32[this._pos4+18]=e}get hasIconTextFit(){return this._structArray.uint8[this._pos1+76]}}em.prototype.size=80;class tm extends Pu{get(e){return new em(this,e)}}Ft(tm,"SymbolInstanceArray");class Mh extends wc{getoffsetX(e){return this.float32[1*e+0]}}Ft(Mh,"GlyphOffsetArray");class Sh extends Do{getx(e){return this.int16[2*e+0]}gety(e){return this.int16[2*e+1]}}Ft(Sh,"SymbolLineVertexArray");class Nr extends xh{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}get layoutVertexArrayOffset(){return this._structArray.uint16[this._pos2+4]}}Nr.prototype.size=12;class Eh extends bh{get(e){return new Nr(this,e)}}Ft(Eh,"FeatureIndexArray");class im extends il{geta_centroid_pos0(e){return this.uint16[2*e+0]}geta_centroid_pos1(e){return this.uint16[2*e+1]}}Ft(im,"FillExtrusionCentroidArray");class nm extends xh{get a_join_normal_inside0(){return this._structArray.int16[this._pos2+0]}get a_join_normal_inside1(){return this._structArray.int16[this._pos2+1]}get a_join_normal_inside2(){return this._structArray.int16[this._pos2+2]}}nm.prototype.size=6;class sm extends vh{get(e){return new nm(this,e)}}Ft(sm,"FillExtrusionWallArray");const ig=qi([{name:"a_pos",components:2,type:"Int16"}],4),df=qi([{name:"a_pos_3",components:3,type:"Int16"},{name:"a_pos_normal_3",components:3,type:"Int16"}]);class Wn{constructor(e=[]){this.segments=e}_prepareSegment(e,n,o,u){let l=this.segments[this.segments.length-1];return e>Wn.MAX_VERTEX_ARRAY_LENGTH&&mi(`Max vertices per segment is ${Wn.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${e}`),(!l||l.vertexLength+e>Wn.MAX_VERTEX_ARRAY_LENGTH||l.sortKey!==u)&&(l={vertexOffset:n,primitiveOffset:o,vertexLength:0,primitiveLength:0},u!==void 0&&(l.sortKey=u),this.segments.push(l)),l}prepareSegment(e,n,o,u){return this._prepareSegment(e,n.length,o.length,u)}get(){return this.segments}destroy(){for(const e of this.segments)for(const n in e.vaos)e.vaos[n].destroy()}static simpleSegment(e,n,o,u){return new Wn([{vertexOffset:e,primitiveOffset:n,vertexLength:o,primitiveLength:u,vaos:{},sortKey:0}])}}function Lu(r,e){return 256*(r=si(Math.floor(r),0,255))+si(Math.floor(e),0,255)}Wn.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Ft(Wn,"SegmentVector");const ng=qi([{name:"a_pattern",components:4,type:"Uint16"},{name:"a_pixel_ratio",components:1,type:"Float32"}]),sg=qi([{name:"a_dash",components:4,type:"Uint16"}]);class Nl{constructor(){this.ids=[],this.uniqueIds=[],this.positions=[],this.indexed=!1}add(e,n,o,u){this.ids.push(rm(e)),this.positions.push(n,o,u)}eachPosition(e,n){const o=rm(e);let u=0,l=this.ids.length-1;for(;u<l;){const f=u+l>>1;this.ids[f]>=o?l=f:u=f+1}for(;this.ids[u]===o;)n(this.positions[3*u],this.positions[3*u+1],this.positions[3*u+2]),u++}static serialize(e,n){const o=new Float64Array(e.ids),u=new Uint32Array(e.positions);return zu(o,u,0,o.length-1),n&&(n.add(o.buffer),n.add(u.buffer)),{ids:o,positions:u}}static deserialize(e){const n=new Nl;let o;n.ids=e.ids,n.positions=e.positions;for(const u of n.ids)u!==o&&n.uniqueIds.push(u),o=u;return n.indexed=!0,n}}function rm(r){const e=+r;return!isNaN(e)&&Number.MIN_SAFE_INTEGER<=e&&e<=Number.MAX_SAFE_INTEGER?e:$r(String(r))}function zu(r,e,n,o){for(;n<o;){const u=r[n+o>>1];let l=n-1,f=o+1;for(;;){do l++;while(r[l]<u);do f--;while(r[f]>u);if(l>=f)break;Ph(r,l,f),Ph(e,3*l,3*f),Ph(e,3*l+1,3*f+1),Ph(e,3*l+2,3*f+2)}f-n<o-f?(zu(r,e,n,f),n=f+1):(zu(r,e,f+1,o),o=f)}}function Ph(r,e,n){const o=r[e];r[e]=r[n],r[n]=o}Ft(Nl,"FeaturePositionMap");class Ea{constructor(e){this.gl=e.gl,this.initialized=!1}fetchUniformLocation(e,n){return this.location||this.initialized||(this.location=this.gl.getUniformLocation(e,n),this.initialized=!0),!!this.location}set(e,n,o){throw new Error("Uniform#set() must be implemented by each concrete Uniform")}}class Tc extends Ea{constructor(e){super(e),this.current=0}set(e,n,o){this.fetchUniformLocation(e,n)&&this.current!==o&&(this.current=o,this.gl.uniform1i(this.location,o))}}class Nn extends Ea{constructor(e){super(e),this.current=0}set(e,n,o){this.fetchUniformLocation(e,n)&&this.current!==o&&(this.current=o,this.gl.uniform1f(this.location,o))}}class ko extends Ea{constructor(e){super(e),this.current=[0,0]}set(e,n,o){this.fetchUniformLocation(e,n)&&(o[0]===this.current[0]&&o[1]===this.current[1]||(this.current=o,this.gl.uniform2f(this.location,o[0],o[1])))}}class ff extends Ea{constructor(e){super(e),this.current=[0,0,0]}set(e,n,o){this.fetchUniformLocation(e,n)&&(o[0]===this.current[0]&&o[1]===this.current[1]&&o[2]===this.current[2]||(this.current=o,this.gl.uniform3f(this.location,o[0],o[1],o[2])))}}class Ah extends Ea{constructor(e){super(e),this.current=[0,0,0,0]}set(e,n,o){this.fetchUniformLocation(e,n)&&(o[0]===this.current[0]&&o[1]===this.current[1]&&o[2]===this.current[2]&&o[3]===this.current[3]||(this.current=o,this.gl.uniform4f(this.location,o[0],o[1],o[2],o[3])))}}class om extends Ea{constructor(e){super(e),this.current=ki.transparent.toRenderColor(null)}set(e,n,o){this.fetchUniformLocation(e,n)&&(o.r===this.current.r&&o.g===this.current.g&&o.b===this.current.b&&o.a===this.current.a||(this.current=o,this.gl.uniform4f(this.location,o.r,o.g,o.b,o.a)))}}const pf=new Float32Array(16);class Ch extends Ea{constructor(e){super(e),this.current=pf}set(e,n,o){if(this.fetchUniformLocation(e,n)){if(o[12]!==this.current[12]||o[0]!==this.current[0])return this.current=o,void this.gl.uniformMatrix4fv(this.location,!1,o);for(let u=1;u<16;u++)if(o[u]!==this.current[u]){this.current=o,this.gl.uniformMatrix4fv(this.location,!1,o);break}}}}const rg=new Float32Array(9),og=new Float32Array(4);class mf extends Ea{constructor(e){super(e),this.current=og}set(e,n,o){if(this.fetchUniformLocation(e,n)){for(let u=0;u<4;u++)if(o[u]!==this.current[u]){this.current=o,this.gl.uniformMatrix2fv(this.location,!1,o);break}}}}function Du(r){return[Lu(255*r.r,255*r.g),Lu(255*r.b,255*r.a)]}class Mc{constructor(e,n,o,u){this.value=e,this.uniformNames=n.map(l=>`u_${l}`),this.type=o,this.context=u}setUniform(e,n,o,u,l){const f=u.constantOr(this.value);n.set(e,l,f instanceof ki?f.toRenderColor(this.ignoreLut?null:this.context.lut):f)}getBinding(e,n){return this.type==="color"?new om(e):new Nn(e)}}class Sc{constructor(e,n){this.uniformNames=n.map(o=>`u_${o}`),this.pattern=null,this.pixelRatio=1}setConstantPatternPositions(e){this.pixelRatio=e.pixelRatio||1,this.pattern=e.tl.concat(e.br)}setUniform(e,n,o,u,l){const f=l==="u_pattern"||l==="u_dash"?this.pattern:l==="u_pixel_ratio"?this.pixelRatio:null;f&&n.set(e,l,f)}getBinding(e,n){return n==="u_pattern"||n==="u_dash"?new Ah(e):new Nn(e)}}class Pa{constructor(e,n,o,u){this.expression=e,this.type=o,this.maxValue=0,this.paintVertexAttributes=n.map(l=>({name:`a_${l}`,type:"Float32",components:o==="color"?2:1,offset:0})),this.paintVertexArray=new u}populatePaintArray(e,n,o,u,l,f,v){const S=this.paintVertexArray.length,D=this.expression.evaluate(new Tn(0,{brightness:f}),n,{},l,u,v);this.paintVertexArray.resize(e),this._setPaintValue(S,e,D,this.context)}updatePaintArray(e,n,o,u,l,f,v){const S=this.expression.evaluate({zoom:0,brightness:v},o,u,void 0,l);this._setPaintValue(e,n,S,this.context)}_setPaintValue(e,n,o,u){if(this.type==="color"){const l=Du(o.toRenderColor(this.ignoreLut?null:u.lut));for(let f=e;f<n;f++)this.paintVertexArray.emplace(f,l[0],l[1])}else{for(let l=e;l<n;l++)this.paintVertexArray.emplace(l,o);this.maxValue=Math.max(this.maxValue,Math.abs(o))}}upload(e){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=e.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent||!this.expression.isLightConstant))}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()}}class Ro{constructor(e,n,o,u,l,f){this.expression=e,this.uniformNames=n.map(v=>`u_${v}_t`),this.type=o,this.useIntegerZoom=u,this.context=l,this.maxValue=0,this.paintVertexAttributes=n.map(v=>({name:`a_${v}`,type:"Float32",components:o==="color"?4:2,offset:0})),this.paintVertexArray=new f}populatePaintArray(e,n,o,u,l,f,v){const S=this.expression.evaluate(new Tn(this.context.zoom,{brightness:f}),n,{},l,u,v),D=this.expression.evaluate(new Tn(this.context.zoom+1,{brightness:f}),n,{},l,u,v),x=this.paintVertexArray.length;this.paintVertexArray.resize(e),this._setPaintValue(x,e,S,D,this.context)}updatePaintArray(e,n,o,u,l,f,v){const S=this.expression.evaluate({zoom:this.context.zoom,brightness:v},o,u,void 0,l),D=this.expression.evaluate({zoom:this.context.zoom+1,brightness:v},o,u,void 0,l);this._setPaintValue(e,n,S,D,this.context)}_setPaintValue(e,n,o,u,l){if(this.type==="color"){const f=Du(o.toRenderColor(this.ignoreLut?null:l.lut)),v=Du(o.toRenderColor(this.ignoreLut?null:l.lut));for(let S=e;S<n;S++)this.paintVertexArray.emplace(S,f[0],f[1],v[0],v[1])}else{for(let f=e;f<n;f++)this.paintVertexArray.emplace(f,o,u);this.maxValue=Math.max(this.maxValue,Math.abs(o),Math.abs(u))}}upload(e){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=e.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent||!this.expression.isLightConstant))}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()}setUniform(e,n,o,u,l){const f=this.useIntegerZoom?Math.floor(o.zoom):o.zoom,v=si(this.expression.interpolationFactor(f,this.context.zoom,this.context.zoom+1),0,1);n.set(e,l,v)}getBinding(e,n){return new Nn(e)}}class nl{constructor(e,n,o,u,l){this.expression=e,this.layerId=l,this.paintVertexAttributes=(o==="array"?sg:ng).members;for(let f=0;f<n.length;++f);this.paintVertexArray=new u}populatePaintArray(e,n,o,u){const l=this.paintVertexArray.length;this.paintVertexArray.resize(e),this._setPaintValues(l,e,n.patterns&&n.patterns[this.layerId],o)}updatePaintArray(e,n,o,u,l,f,v){this._setPaintValues(e,n,o.patterns&&o.patterns[this.layerId],f)}_setPaintValues(e,n,o,u){if(!u||!o)return;const l=u[o];if(!l)return;const{tl:f,br:v,pixelRatio:S}=l;for(let D=e;D<n;D++)this.paintVertexArray.emplace(D,f[0],f[1],v[0],v[1],S)}upload(e){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer=e.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent||!this.expression.isLightConstant))}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()}}class Vl{constructor(e,n,o=()=>!0){this.binders={},this._buffers=[],this.context=n;const u=[];for(const l in e.paint._values){const f=e.paint.get(l),v=e.paint.get(`${l}-use-theme`);if(l.endsWith("-use-theme")||!o(l)||!(f instanceof xc&&pc(f.property.specification)))continue;const S=ku(l,e.type),D=f.value,x=f.property.specification.type,P=!!f.property.useIntegerZoom,I=l==="line-dasharray"||l.endsWith("pattern"),M=l==="line-dasharray"&&e.layout.get("line-cap").value.kind!=="constant";if(D.kind!=="constant"||M)if(D.kind==="source"||M||I){const C=Ih(l,x,"source");this.binders[l]=I?new nl(D,S,x,C,e.id):new Pa(D,S,x,C),u.push(`/a_${l}`)}else{const C=Ih(l,x,"composite");this.binders[l]=new Ro(D,S,x,P,n,C),u.push(`/z_${l}`)}else this.binders[l]=I?new Sc(D.value,S):new Mc(D.value,S,x,n),u.push(`/u_${l}`);v&&(this.binders[l].ignoreLut=v.constantOr("default")==="none",this.binders[l].checkUseTheme=!0)}this.cacheKey=u.sort().join("")}getMaxValue(e){const n=this.binders[e];return n instanceof Pa||n instanceof Ro?n.maxValue:0}populatePaintArrays(e,n,o,u,l,f,v){for(const S in this.binders){const D=this.binders[S];D.context=this.context,(D instanceof Pa||D instanceof Ro||D instanceof nl)&&D.populatePaintArray(e,n,o,u,l,f,v)}}setConstantPatternPositions(e){for(const n in this.binders){const o=this.binders[n];o instanceof Sc&&o.setConstantPatternPositions(e)}}updatePaintArrays(e,n,o,u,l,f,v,S,D){let x=!1;const P=Object.keys(e),I=P.length!==0&&!S,M=I?P:n.uniqueIds;this.context.lut=l.lut;for(const C in this.binders){const k=this.binders[C];if(k.context=this.context,(k instanceof Pa||k instanceof Ro||k instanceof nl)&&(k.expression.isStateDependent===!0||k.expression.isLightConstant===!1)){const V=l.paint.get(C);k.expression=V.value;for(const U of M){const q=e[U.toString()];n.eachPosition(U,($,H,K)=>{const Q=u.feature($);k.updatePaintArray(H,K,Q,q,f,v,D)})}if(!I)for(const U of o.uniqueIds){const q=e[U.toString()];o.eachPosition(U,($,H,K)=>{const Q=u.feature($);k.updatePaintArray(H,K,Q,q,f,v,D)})}x=!0}}return x}defines(){const e=[];for(const n in this.binders){const o=this.binders[n];(o instanceof Mc||o instanceof Sc)&&e.push(...o.uniformNames.map(u=>`#define HAS_UNIFORM_${u}`))}return e}getBinderAttributes(){const e=[];for(const n in this.binders){const o=this.binders[n];if(o instanceof Pa||o instanceof Ro||o instanceof nl)for(let u=0;u<o.paintVertexAttributes.length;u++)e.push(o.paintVertexAttributes[u].name)}return e}getBinderUniforms(){const e=[];for(const n in this.binders){const o=this.binders[n];if(o instanceof Mc||o instanceof Sc||o instanceof Ro)for(const u of o.uniformNames)e.push(u)}return e}getPaintVertexBuffers(){return this._buffers}getUniforms(e){const n=[];for(const o in this.binders){const u=this.binders[o];if(u instanceof Mc||u instanceof Sc||u instanceof Ro)for(const l of u.uniformNames)n.push({name:l,property:o,binding:u.getBinding(e,l)})}return n}setUniforms(e,n,o,u,l){for(const{name:f,property:v,binding:S}of o){if(this.binders[v].checkUseTheme&&this.binders[v]instanceof Mc){const D=u.get(`${v}-use-theme`);D.isConstant()&&(this.binders[v].ignoreLut=D.constantOr("default")==="none")}this.binders[v].setUniform(e,S,l,u.get(v),f)}}updatePaintBuffers(){this._buffers=[];for(const e in this.binders){const n=this.binders[e];(n instanceof Pa||n instanceof Ro||n instanceof nl)&&n.paintVertexBuffer&&this._buffers.push(n.paintVertexBuffer)}}upload(e){for(const n in this.binders){const o=this.binders[n];(o instanceof Pa||o instanceof Ro||o instanceof nl)&&o.upload(e)}this.updatePaintBuffers()}destroy(){for(const e in this.binders){const n=this.binders[e];(n instanceof Pa||n instanceof Ro||n instanceof nl)&&n.destroy()}}}class sl{constructor(e,n,o=()=>!0){this.programConfigurations={};for(const u of e)this.programConfigurations[u.id]=new Vl(u,n,o);this.needsUpload=!1,this._featureMap=new Nl,this._featureMapWithoutIds=new Nl,this._bufferOffset=0,this._idlessCounter=0}populatePaintArrays(e,n,o,u,l,f,v,S){for(const D in this.programConfigurations)this.programConfigurations[D].populatePaintArrays(e,n,u,l,f,v,S);n.id!==void 0?this._featureMap.add(n.id,o,this._bufferOffset,e):(this._featureMapWithoutIds.add(this._idlessCounter,o,this._bufferOffset,e),this._idlessCounter+=1),this._bufferOffset=e,this.needsUpload=!0}updatePaintArrays(e,n,o,u,l,f,v){for(const S of o)this.needsUpload=this.programConfigurations[S.id].updatePaintArrays(e,this._featureMap,this._featureMapWithoutIds,n,S,u,l,f,v||0)||this.needsUpload}get(e){return this.programConfigurations[e]}upload(e){if(this.needsUpload){for(const n in this.programConfigurations)this.programConfigurations[n].upload(e);this.needsUpload=!1}}destroy(){for(const e in this.programConfigurations)this.programConfigurations[e].destroy()}}const ag={"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-occlusion-opacity":["occlusion_opacity"],"icon-occlusion-opacity":["occlusion_opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-emissive-strength":["emissive_strength"],"icon-emissive-strength":["emissive_strength"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"symbol-z-offset":["z_offset"],"line-gap-width":["gapwidth"],"line-pattern":["pattern","pixel_ratio"],"fill-pattern":["pattern","pixel_ratio"],"fill-extrusion-pattern":["pattern","pixel_ratio"],"line-dasharray":["dash"]};function ku(r,e){return ag[r]||[r.replace(`${e}-`,"").replace(/-/g,"_")]}const lg={"line-pattern":{source:tl,composite:tl},"fill-pattern":{source:tl,composite:tl},"fill-extrusion-pattern":{source:tl,composite:tl},"line-dasharray":{source:Tu,composite:Tu}},cg={color:{source:Bl,composite:el},number:{source:wc,composite:Bl}};function Ih(r,e,n){const o=lg[r];return o&&o[n]||cg[e][n]}Ft(Mc,"ConstantBinder"),Ft(Sc,"PatternConstantBinder"),Ft(Pa,"SourceExpressionBinder"),Ft(nl,"PatternCompositeBinder"),Ft(Ro,"CompositeExpressionBinder"),Ft(Vl,"ProgramConfiguration",{omit:["_buffers"]}),Ft(sl,"ProgramConfigurationSet");const fr=Tt/Math.PI/2,Ru=5,am=6,lm=16383,Ul=64,Ou=[Ul,32,16],mo=-fr,_o=fr;function Ec(r,e,n,o=fr){return n=vi(n),[r*Math.sin(n)*o,-e*o,r*Math.cos(n)*o]}function rl(r,e,n){return Ec(Math.cos(vi(r)),Math.sin(vi(r)),e,n)}const Pc=63710088e-1,_f=2*Math.PI*Pc;class Ui{constructor(e,n){if(isNaN(e)||isNaN(n))throw new Error(`Invalid LngLat object: (${e}, ${n})`);if(this.lng=+e,this.lat=+n,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new Ui(zn(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(e){const n=Math.PI/180,o=this.lat*n,u=e.lat*n,l=Math.sin(o)*Math.sin(u)+Math.cos(o)*Math.cos(u)*Math.cos((e.lng-this.lng)*n);return Pc*Math.acos(Math.min(l,1))}toBounds(e=0){const n=360*e/40075017,o=n/Math.cos(Math.PI/180*this.lat);return new ol({lng:this.lng-o,lat:this.lat-n},{lng:this.lng+o,lat:this.lat+n})}toEcef(e){return rl(this.lat,this.lng,fr+e*fr/Pc)}static convert(e){if(e instanceof Ui)return e;if(Array.isArray(e)&&(e.length===2||e.length===3))return new Ui(Number(e[0]),Number(e[1]));if(!Array.isArray(e)&&typeof e=="object"&&e!==null)return new Ui(Number("lng"in e?e.lng:e.lon),Number(e.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]")}}class ol{constructor(e,n){if(e)if(n)this.setSouthWest(e).setNorthEast(n);else if(e.length===4){const o=e;this.setSouthWest([o[0],o[1]]).setNorthEast([o[2],o[3]])}else{const o=e;this.setSouthWest(o[0]).setNorthEast(o[1])}}setNorthEast(e){return this._ne=e instanceof Ui?new Ui(e.lng,e.lat):Ui.convert(e),this}setSouthWest(e){return this._sw=e instanceof Ui?new Ui(e.lng,e.lat):Ui.convert(e),this}extend(e){const n=this._sw,o=this._ne;let u,l;if(e instanceof Ui)u=e,l=e;else{if(!(e instanceof ol))return Array.isArray(e)?e.length===4||e.every(Array.isArray)?this.extend(ol.convert(e)):this.extend(Ui.convert(e)):typeof e=="object"&&e!==null&&e.hasOwnProperty("lat")&&(e.hasOwnProperty("lon")||e.hasOwnProperty("lng"))?this.extend(Ui.convert(e)):this;if(u=e._sw,l=e._ne,!u||!l)return this}return n||o?(n.lng=Math.min(u.lng,n.lng),n.lat=Math.min(u.lat,n.lat),o.lng=Math.max(l.lng,o.lng),o.lat=Math.max(l.lat,o.lat)):(this._sw=new Ui(u.lng,u.lat),this._ne=new Ui(l.lng,l.lat)),this}getCenter(){return new Ui((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new Ui(this.getWest(),this.getNorth())}getSouthEast(){return new Ui(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(e){const{lng:n,lat:o}=Ui.convert(e);let u=this._sw.lng<=n&&n<=this._ne.lng;return this._sw.lng>this._ne.lng&&(u=this._sw.lng>=n&&n>=this._ne.lng),this._sw.lat<=o&&o<=this._ne.lat&&u}static convert(e){if(e)return e instanceof ol?e:new ol(e)}}const hg=0,cm=25.5;function Lh(r){return _f*Math.cos(r*Math.PI/180)}function sa(r){return(180+r)/360}function Aa(r){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+r*Math.PI/360)))/360}function pr(r,e){return r/Lh(e)}function Vr(r){return 360*r-180}function Fs(r){return 360/Math.PI*Math.atan(Math.exp((180-360*r)*Math.PI/180))-90}function hm(r,e){return r*Lh(Fs(e))}const jn=85.051129;function ug(r){return Math.cos(vi(si(r,-jn,jn)))}function c(r,e){const n=si(e,hg,cm),o=Math.pow(2,n);return ug(r)*_f/(512*o)}function t(r){return 1/Math.cos(r*Math.PI/180)}function s(r,e=0){const n=Math.exp(Math.PI*(1-(r.y+e/Tt)/(1<<r.z)*2));return 80150034*n/(n*n+1)/Tt/(1<<r.z)}class h{constructor(e,n,o=0){this.x=+e,this.y=+n,this.z=+o}static fromLngLat(e,n=0){const o=Ui.convert(e);return new h(sa(o.lng),Aa(o.lat),pr(n,o.lat))}toLngLat(){return new Ui(Vr(this.x),Fs(this.y))}toAltitude(){return hm(this.z,this.y)}meterInMercatorCoordinateUnits(){return 1/_f*t(Fs(this.y))}}function _(r,e,n,o,u,l,f,v,S){const D=(e+o)/2,x=(n+u)/2,P=new Et(D,x);v(P),function(I,M,C,k,V,U){const q=C-V,$=k-U;return Math.abs((k-M)*q-(C-I)*$)/Math.hypot(q,$)}(P.x,P.y,l.x,l.y,f.x,f.y)>=S?(_(r,e,n,D,x,l,P,v,S),_(r,D,x,o,u,P,f,v,S)):r.push(f)}function y(r,e,n){let o=r[0],u=o.x,l=o.y;e(o);const f=[o];for(let v=1;v<r.length;v++){const S=r[v],{x:D,y:x}=S;e(S),_(f,u,l,D,x,o,S,e,n),u=D,l=x,o=S}return f}function T(r,e,n,o){if(o(e,n)){const u=e.add(n)._mult(.5);T(r,e,u,o),T(r,u,n,o)}else r.push(n)}function z(r,e){let n=r[0];const o=[n];for(let u=1;u<r.length;u++){const l=r[u];T(o,n,l,e),n=l}return o}const R=Math.pow(2,14)-1,F=-R-1;function N(r,e){const n=Math.round(r.x*e),o=Math.round(r.y*e);return r.x=si(n,F,R),r.y=si(o,F,R),(n<r.x||n>r.x+1||o<r.y||o>r.y+1)&&mi("Geometry exceeds allowed extent, reduce your vector tile buffer size"),r}function G(r,e,n){const o=r.loadGeometry(),u=r.extent,l=Tt/u;if(e&&n&&n.projection.isReprojectedInTileSpace){const f=1<<e.z,{scale:v,x:S,y:D,projection:x}=n,P=I=>{const M=Vr((e.x+I.x/u)/f),C=Fs((e.y+I.y/u)/f),k=x.project(M,C);I.x=(k.x*v-S)*u,I.y=(k.y*v-D)*u};for(let I=0;I<o.length;I++)if(r.type!==1)o[I]=y(o[I],P,1);else{const M=[];for(const C of o[I])C.x<0||C.x>=u||C.y<0||C.y>=u||(P(C),M.push(C));o[I]=M}}for(const f of o)for(const v of f)N(v,l);return o}function Z(r,e){return{type:r.type,id:r.id,properties:r.properties,geometry:e?G(r):[]}}function W(r,e,n,o,u){r.emplaceBack(2*e+(o+1)/2,2*n+(u+1)/2)}function te(r,e,n){r.emplaceBack(e.x,e.y,e.z,n[0]*16384,n[1]*16384,n[2]*16384)}class ee{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(n=>n.fqid),this.index=e.index,this.hasPattern=!1,this.projection=e.projection,this.layoutVertexArray=new Do,this.indexArray=new qs,this.segments=new Wn,this.programConfigurations=new sl(e.layers,{zoom:e.zoom,lut:e.lut}),this.stateDependentLayerIds=this.layers.filter(n=>n.isStateDependent()).map(n=>n.id)}updateFootprints(e,n){}populate(e,n,o,u){const l=this.layers[0],f=[];let v=null;l.type==="circle"&&(v=l.layout.get("circle-sort-key"));for(const{feature:D,id:x,index:P,sourceLayerIndex:I}of e){const M=this.layers[0]._featureFilter.needGeometry,C=Z(D,M);if(!this.layers[0]._featureFilter.filter(new Tn(this.zoom),C,o))continue;const k=v?v.evaluate(C,{},o):void 0,V={id:x,properties:D.properties,type:D.type,sourceLayerIndex:I,index:P,geometry:M?C.geometry:G(D,o,u),patterns:{},sortKey:k};f.push(V)}v&&f.sort((D,x)=>D.sortKey-x.sortKey);let S=null;u.projection.name==="globe"&&(this.globeExtVertexArray=new Mu,S=u.projection);for(const D of f){const{geometry:x,index:P,sourceLayerIndex:I}=D,M=e[P].feature;this.addFeature(D,x,P,n.availableImages,o,S,n.brightness),n.featureIndex.insert(M,x,P,I,this.index)}}update(e,n,o,u,l,f,v){this.programConfigurations.updatePaintArrays(e,n,l,o,u,f,v)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,ig.members),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.globeExtVertexArray&&(this.globeExtVertexBuffer=e.createVertexBuffer(this.globeExtVertexArray,df.members))),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.globeExtVertexBuffer&&this.globeExtVertexBuffer.destroy())}addFeature(e,n,o,u,l,f,v){for(const S of n)for(const D of S){const x=D.x,P=D.y;if(x<0||x>=Tt||P<0||P>=Tt)continue;if(f){const C=f.projectTilePoint(x,P,l),k=f.upVector(l,x,P),V=this.globeExtVertexArray;te(V,C,k),te(V,C,k),te(V,C,k),te(V,C,k)}const I=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,e.sortKey),M=I.vertexLength;W(this.layoutVertexArray,x,P,-1,-1),W(this.layoutVertexArray,x,P,1,-1),W(this.layoutVertexArray,x,P,1,1),W(this.layoutVertexArray,x,P,-1,1),this.indexArray.emplaceBack(M,M+1,M+2),this.indexArray.emplaceBack(M,M+2,M+3),I.vertexLength+=4,I.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,o,{},u,l,v)}}function se(r,e){for(let n=0;n<r.length;n++)if(Ae(e,r[n]))return!0;for(let n=0;n<e.length;n++)if(Ae(r,e[n]))return!0;return!!pe(r,e)}function oe(r,e,n){return!!Ae(r,e)||!!xe(e,r,n)}function he(r,e){if(r.length===1)return ve(e,r[0]);for(let n=0;n<e.length;n++){const o=e[n];for(let u=0;u<o.length;u++)if(Ae(r,o[u]))return!0}for(let n=0;n<r.length;n++)if(ve(e,r[n]))return!0;for(let n=0;n<e.length;n++)if(pe(r,e[n]))return!0;return!1}function _e(r,e,n){if(r.length>1){if(pe(r,e))return!0;for(let o=0;o<e.length;o++)if(xe(e[o],r,n))return!0}for(let o=0;o<r.length;o++)if(xe(r[o],e,n))return!0;return!1}function pe(r,e){if(r.length===0||e.length===0)return!1;for(let n=0;n<r.length-1;n++){const o=r[n],u=r[n+1];for(let l=0;l<e.length-1;l++)if(Me(o,u,e[l],e[l+1]))return!0}return!1}function Me(r,e,n,o){return On(r,n,o)!==On(e,n,o)&&On(r,e,n)!==On(r,e,o)}function xe(r,e,n){const o=n*n;if(e.length===1)return r.distSqr(e[0])<o;for(let u=1;u<e.length;u++)if(we(r,e[u-1],e[u])<o)return!0;return!1}function we(r,e,n){const o=e.distSqr(n);if(o===0)return r.distSqr(e);const u=((r.x-e.x)*(n.x-e.x)+(r.y-e.y)*(n.y-e.y))/o;return r.distSqr(u<0?e:u>1?n:n.sub(e)._mult(u)._add(e))}function ve(r,e){let n,o,u,l=!1;for(let f=0;f<r.length;f++){n=r[f];for(let v=0,S=n.length-1;v<n.length;S=v++)o=n[v],u=n[S],o.y>e.y!=u.y>e.y&&e.x<(u.x-o.x)*(e.y-o.y)/(u.y-o.y)+o.x&&(l=!l)}return l}function Ae(r,e){let n=!1;for(let o=0,u=r.length-1;o<r.length;u=o++){const l=r[o],f=r[u];l.y>e.y!=f.y>e.y&&e.x<(f.x-l.x)*(e.y-l.y)/(f.y-l.y)+l.x&&(n=!n)}return n}function Oe(r,e,n,o,u){for(const f of r)if(e<=f.x&&n<=f.y&&o>=f.x&&u>=f.y)return!0;const l=[new Et(e,n),new Et(e,u),new Et(o,u),new Et(o,n)];if(r.length>2){for(const f of l)if(Ae(r,f))return!0}for(let f=0;f<r.length-1;f++)if(Xe(r[f],r[f+1],l))return!0;return!1}function Xe(r,e,n){const o=n[0],u=n[2];if(r.x<o.x&&e.x<o.x||r.x>u.x&&e.x>u.x||r.y<o.y&&e.y<o.y||r.y>u.y&&e.y>u.y)return!1;const l=On(r,e,n[0]);return l!==On(r,e,n[1])||l!==On(r,e,n[2])||l!==On(r,e,n[3])}function He(r,e,n,o,u,l){let f=e.y-r.y,v=r.x-e.x;if(l=l||0){const S=f*f+v*v;if(S===0)return!0;const D=Math.sqrt(S);f/=D,v/=D}return!((n.x-r.x)*f+(n.y-r.y)*v-l<0||(o.x-r.x)*f+(o.y-r.y)*v-l<0||(u.x-r.x)*f+(u.y-r.y)*v-l<0)}function ke(r,e,n,o,u,l,f){return!(He(r,e,o,u,l,f)||He(e,n,o,u,l,f)||He(n,r,o,u,l,f)||He(o,u,r,e,n,f)||He(u,l,r,e,n,f)||He(l,o,r,e,n,f))}function Ne(r,e,n){const o=e.paint.get(r).value;return o.kind==="constant"?o.value:n.programConfigurations.get(e.id).getMaxValue(r)}function st(r){return Math.sqrt(r[0]*r[0]+r[1]*r[1])}function ut(r,e,n,o,u){if(!e[0]&&!e[1])return r;const l=Et.convert(e)._mult(u);n==="viewport"&&l._rotate(-o);const f=[];for(let v=0;v<r.length;v++)f.push(r[v].sub(l));return f}function xt(r,e,n,o){const u=Et.convert(r)._mult(o);return e==="viewport"&&u._rotate(-n),u}let Ge,lt;Ft(ee,"CircleBucket",{omit:["layers"]});var Je,_t={exports:{}},ct=(Je||(Je=1,function(r,e){(function(n){function o(l,f,v){var S=u(256*l,256*(f=Math.pow(2,v)-f-1),v),D=u(256*(l+1),256*(f+1),v);return S[0]+","+S[1]+","+D[0]+","+D[1]}function u(l,f,v){var S=2*Math.PI*6378137/256/Math.pow(2,v);return[l*S-2*Math.PI*6378137/2,f*S-2*Math.PI*6378137/2]}n.getURL=function(l,f,v,S,D,x){return x=x||{},l+"?"+["bbox="+o(v,S,D),"format="+(x.format||"image/png"),"service="+(x.service||"WMS"),"version="+(x.version||"1.1.1"),"request="+(x.request||"GetMap"),"srs="+(x.srs||"EPSG:3857"),"width="+(x.width||256),"height="+(x.height||256),"layers="+f].join("&")},n.getTileBBox=o,n.getMercCoords=u,Object.defineProperty(n,"__esModule",{value:!0})})(e)}(0,_t.exports)),_t.exports);class nt{constructor(e,n,o){this.z=e,this.x=n,this.y=o,this.key=zt(0,e,e,n,o)}equals(e){return this.z===e.z&&this.x===e.x&&this.y===e.y}url(e,n){const o=ct.getTileBBox(this.x,this.y,this.z),u=function(l,f,v){let S,D="";for(let x=l;x>0;x--)S=1<<x-1,D+=(f&S?1:0)+(v&S?2:0);return D}(this.z,this.x,this.y);return e[(this.x+this.y)%e.length].replace("{prefix}",(this.x%16).toString(16)+(this.y%16).toString(16)).replace(/{z}/g,String(this.z)).replace(/{x}/g,String(this.x)).replace(/{y}/g,String(n==="tms"?Math.pow(2,this.z)-this.y-1:this.y)).replace("{quadkey}",u).replace("{bbox-epsg-3857}",o)}toString(){return`${this.z}/${this.x}/${this.y}`}}class Lt{constructor(e,n){this.wrap=e,this.canonical=n,this.key=zt(e,n.z,n.z,n.x,n.y)}}class bt{constructor(e,n,o,u,l){this.overscaledZ=e,this.wrap=n,this.canonical=new nt(o,+u,+l),this.key=n===0&&e===o?this.canonical.key:zt(n,e,o,u,l)}equals(e){return this.overscaledZ===e.overscaledZ&&this.wrap===e.wrap&&this.canonical.equals(e.canonical)}scaledTo(e){const n=this.canonical.z-e;return e>this.canonical.z?new bt(e,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new bt(e,this.wrap,e,this.canonical.x>>n,this.canonical.y>>n)}calculateScaledKey(e,n=!0){if(this.overscaledZ===e&&n)return this.key;if(e>this.canonical.z)return zt(this.wrap*+n,e,this.canonical.z,this.canonical.x,this.canonical.y);{const o=this.canonical.z-e;return zt(this.wrap*+n,e,e,this.canonical.x>>o,this.canonical.y>>o)}}isChildOf(e){if(e.wrap!==this.wrap)return!1;const n=this.canonical.z-e.canonical.z;return e.overscaledZ===0||e.overscaledZ<this.overscaledZ&&e.canonical.z<this.canonical.z&&e.canonical.x===this.canonical.x>>n&&e.canonical.y===this.canonical.y>>n}children(e){if(this.overscaledZ>=e)return[new bt(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const n=this.canonical.z+1,o=2*this.canonical.x,u=2*this.canonical.y;return[new bt(n,this.wrap,n,o,u),new bt(n,this.wrap,n,o+1,u),new bt(n,this.wrap,n,o,u+1),new bt(n,this.wrap,n,o+1,u+1)]}isLessThan(e){return this.wrap<e.wrap||!(this.wrap>e.wrap)&&(this.overscaledZ<e.overscaledZ||!(this.overscaledZ>e.overscaledZ)&&(this.canonical.x<e.canonical.x||!(this.canonical.x>e.canonical.x)&&this.canonical.y<e.canonical.y))}wrapped(){return new bt(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)}unwrapTo(e){return new bt(this.overscaledZ,e,this.canonical.z,this.canonical.x,this.canonical.y)}overscaleFactor(){return Math.pow(2,this.overscaledZ-this.canonical.z)}toUnwrapped(){return new Lt(this.wrap,this.canonical)}toString(){return`${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`}}function zt(r,e,n,o,u){const l=1<<Math.min(n,22);let f=l*(u%l)+o%l;return r&&n<22&&(f+=l*l*((r<0?-2*r-1:2*r)%(1<<2*(22-n)))),16*(32*f+n)+(e-n)}const Bt=[r=>{let e=r.canonical.x-1,n=r.wrap;return e<0&&(e=(1<<r.canonical.z)-1,n--),new bt(r.overscaledZ,n,r.canonical.z,e,r.canonical.y)},r=>{let e=r.canonical.x+1,n=r.wrap;return e===1<<r.canonical.z&&(e=0,n++),new bt(r.overscaledZ,n,r.canonical.z,e,r.canonical.y)},r=>new bt(r.overscaledZ,r.wrap,r.canonical.z,r.canonical.x,(r.canonical.y===0?1<<r.canonical.z:r.canonical.y)-1),r=>new bt(r.overscaledZ,r.wrap,r.canonical.z,r.canonical.x,r.canonical.y===(1<<r.canonical.z)-1?0:r.canonical.y+1)];Ft(nt,"CanonicalTileID"),Ft(bt,"OverscaledTileID",{omit:["projMatrix","expandedProjMatrix"]});const oi=qi([{type:"Float32",name:"a_globe_pos",components:3},{type:"Float32",name:"a_uv",components:2}]),{members:$t}=oi,Xt=qi([{name:"a_pos_3",components:3,type:"Int16"}]);var ai=qi([{name:"a_pos",type:"Int16",components:2}]);class zi{constructor(e,n){this.pos=e,this.dir=n}intersectsPlane(e,n,o){const u=De.vec3.dot(n,this.dir);if(Math.abs(u)<1e-6)return!1;const l=((e[0]-this.pos[0])*n[0]+(e[1]-this.pos[1])*n[1]+(e[2]-this.pos[2])*n[2])/u;return o[0]=this.pos[0]+this.dir[0]*l,o[1]=this.pos[1]+this.dir[1]*l,o[2]=this.pos[2]+this.dir[2]*l,!0}closestPointOnSphere(e,n,o){if(De.vec3.equals(this.pos,e)||n===0)return o[0]=o[1]=o[2]=0,!1;const[u,l,f]=this.dir,v=this.pos[0]-e[0],S=this.pos[1]-e[1],D=this.pos[2]-e[2],x=u*u+l*l+f*f,P=2*(v*u+S*l+D*f),I=P*P-4*x*(v*v+S*S+D*D-n*n);if(I<0){const M=Math.max(-P/2,0),C=v+u*M,k=S+l*M,V=D+f*M,U=Math.hypot(C,k,V);return o[0]=C*n/U,o[1]=k*n/U,o[2]=V*n/U,!1}{const M=(-P-Math.sqrt(I))/(2*x);if(M<0){const C=Math.hypot(v,S,D);return o[0]=v*n/C,o[1]=S*n/C,o[2]=D*n/C,!1}return o[0]=v+u*M,o[1]=S+l*M,o[2]=D+f*M,!0}}}class wi{constructor(e,n,o,u,l){this.TL=e,this.TR=n,this.BR=o,this.BL=u,this.horizon=l}static fromInvProjectionMatrix(e,n,o){const u=[-1,1,1],l=[1,1,1],f=[1,-1,1],v=[-1,-1,1],S=De.vec3.transformMat4(u,u,e),D=De.vec3.transformMat4(l,l,e),x=De.vec3.transformMat4(f,f,e),P=De.vec3.transformMat4(v,v,e);return new wi(S,D,x,P,n/o)}}function mn(r,e,n){let o=1/0,u=-1/0;const l=[];for(const f of r){De.vec3.sub(l,f,e);const v=De.vec3.dot(l,n);o=Math.min(o,v),u=Math.max(u,v)}return[o,u]}function Mn(r,e){let n=!0;for(let o=0;o<r.planes.length;o++){const u=r.planes[o];let l=0;for(let f=0;f<e.length;f++)l+=De.vec3.dot(u,e[f])+u[3]>=0;if(l===0)return 0;l!==e.length&&(n=!1)}return n?2:1}function Xi(r,e){for(const n of r.projections){const o=mn(e,r.points[0],n.axis);if(n.projection[1]<o[0]||n.projection[0]>o[1])return 0}return 1}function sn(r,e){let n=0;const o=[0,0,0,0];for(let u=0;u<r.length;u++)o[0]=r[u][0],o[1]=r[u][1],o[2]=r[u][2],o[3]=1,De.vec4.dot(o,e)>=0&&n++;return n}class _i{constructor(e,n){this.points=e||new Array(8).fill([0,0,0]),this.planes=n||new Array(6).fill([0,0,0,0]),this.bounds=Jt.fromPoints(this.points),this.projections=[],this.frustumEdges=[De.vec3.sub([],this.points[2],this.points[3]),De.vec3.sub([],this.points[0],this.points[3]),De.vec3.sub([],this.points[4],this.points[0]),De.vec3.sub([],this.points[5],this.points[1]),De.vec3.sub([],this.points[6],this.points[2]),De.vec3.sub([],this.points[7],this.points[3])];for(const o of this.frustumEdges){const u=[0,-o[2],o[1]],l=[o[2],0,-o[0]];this.projections.push({axis:u,projection:mn(this.points,this.points[0],u)}),this.projections.push({axis:l,projection:mn(this.points,this.points[0],l)})}}static fromInvProjectionMatrix(e,n,o,u){const l=Math.pow(2,o),f=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map(D=>{const x=De.vec4.transformMat4([],D,e),P=1/x[3]/n*l;return De.vec4.mul(x,x,[P,P,u?1/x[3]:P,P])}),v=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(D=>{const x=De.vec3.sub([],f[D[0]],f[D[1]]),P=De.vec3.sub([],f[D[2]],f[D[1]]),I=De.vec3.normalize([],De.vec3.cross([],x,P)),M=-De.vec3.dot(I,f[D[1]]);return I.concat(M)}),S=[];for(let D=0;D<f.length;D++)S.push([f[D][0],f[D][1],f[D][2]]);return new _i(S,v)}intersectsPrecise(e,n,o){for(let u=0;u<n.length;u++)if(!sn(e,n[u]))return 0;for(let u=0;u<this.planes.length;u++)if(!sn(e,this.planes[u]))return 0;for(const u of o)for(const l of this.frustumEdges){const f=De.vec3.cross([],u,l),v=De.vec3.length(f);if(v===0)continue;De.vec3.scale(f,f,1/v);const S=mn(this.points,this.points[0],f),D=mn(e,this.points[0],f);if(S[0]>D[1]||D[0]>S[1])return 0}return 1}containsPoint(e){for(const n of this.planes){const o=n[3];if(De.vec3.dot([n[0],n[1],n[2]],e)+o<0)return!1}return!0}}class Jt{static fromPoints(e){const n=[1/0,1/0,1/0],o=[-1/0,-1/0,-1/0];for(const u of e)De.vec3.min(n,n,u),De.vec3.max(o,o,u);return new Jt(n,o)}static fromTileIdAndHeight(e,n,o){const u=1<<e.canonical.z,l=e.canonical.x,f=e.canonical.y;return new Jt([l/u,f/u,n],[(l+1)/u,(f+1)/u,o])}static applyTransform(e,n){const o=e.getCorners();for(let u=0;u<o.length;++u)De.vec3.transformMat4(o[u],o[u],n);return Jt.fromPoints(o)}static applyTransformFast(e,n){const o=[n[12],n[13],n[14]],u=[...o];for(let l=0;l<3;l++)for(let f=0;f<3;f++){const v=n[4*f+l],S=v*e.min[f],D=v*e.max[f];o[l]+=Math.min(S,D),u[l]+=Math.max(S,D)}return new Jt(o,u)}static projectAabbCorners(e,n){const o=e.getCorners();for(let u=0;u<o.length;++u)De.vec3.transformMat4(o[u],o[u],n);return o}constructor(e,n){this.min=e,this.max=n,this.center=De.vec3.scale([],De.vec3.add([],this.min,this.max),.5)}quadrant(e){const n=[e%2==0,e<2],o=De.vec3.clone(this.min),u=De.vec3.clone(this.max);for(let l=0;l<n.length;l++)o[l]=n[l]?this.min[l]:this.center[l],u[l]=n[l]?this.center[l]:this.max[l];return u[2]=this.max[2],new Jt(o,u)}distanceX(e){return Math.max(Math.min(this.max[0],e[0]),this.min[0])-e[0]}distanceY(e){return Math.max(Math.min(this.max[1],e[1]),this.min[1])-e[1]}distanceZ(e){return Math.max(Math.min(this.max[2],e[2]),this.min[2])-e[2]}getCorners(){const e=this.min,n=this.max;return[[e[0],e[1],e[2]],[n[0],e[1],e[2]],[n[0],n[1],e[2]],[e[0],n[1],e[2]],[e[0],e[1],n[2]],[n[0],e[1],n[2]],[n[0],n[1],n[2]],[e[0],n[1],n[2]]]}intersects(e){return this.intersectsAabb(e.bounds)?Mn(e,this.getCorners()):0}intersectsFlat(e){return this.intersectsAabb(e.bounds)?Mn(e,[[this.min[0],this.min[1],0],[this.max[0],this.min[1],0],[this.max[0],this.max[1],0],[this.min[0],this.max[1],0]]):0}intersectsPrecise(e,n){return n||this.intersects(e)?Xi(e,this.getCorners()):0}intersectsPreciseFlat(e,n){return n||this.intersectsFlat(e)?Xi(e,[[this.min[0],this.min[1],0],[this.max[0],this.min[1],0],[this.max[0],this.max[1],0],[this.min[0],this.max[1],0]]):0}intersectsAabb(e){for(let n=0;n<3;++n)if(this.min[n]>e.max[n]||e.min[n]>this.max[n])return!1;return!0}intersectsAabbXY(e){return!(this.min[0]>e.max[0]||e.min[0]>this.max[0]||this.min[1]>e.max[1]||e.min[1]>this.max[1])}encapsulate(e){for(let n=0;n<3;n++)this.min[n]=Math.min(this.min[n],e.min[n]),this.max[n]=Math.max(this.max[n],e.max[n])}encapsulatePoint(e){for(let n=0;n<3;n++)this.min[n]=Math.min(this.min[n],e[n]),this.max[n]=Math.max(this.max[n],e[n])}closestPoint(e){return[Math.max(Math.min(this.max[0],e[0]),this.min[0]),Math.max(Math.min(this.max[1],e[1]),this.min[1]),Math.max(Math.min(this.max[2],e[2]),this.min[2])]}}function ji(r){return r*fr/Pc}Ft(Jt,"Aabb");const Yi=[new Jt([mo,mo,mo],[_o,_o,_o]),new Jt([mo,mo,mo],[0,0,_o]),new Jt([0,mo,mo],[_o,0,_o]),new Jt([mo,0,mo],[0,_o,_o]),new Jt([0,0,mo],[_o,_o,_o])];function In(r,e,n,o=!0){const u=De.vec3.scale([],r._camera.position,r.worldSize),l=[e,n,1,1];De.vec4.transformMat4(l,l,r.pixelMatrixInverse),De.vec4.scale(l,l,1/l[3]);const f=De.vec3.sub([],l,u),v=De.vec3.normalize([],f),S=r.globeMatrix,D=[S[12],S[13],S[14]],x=De.vec3.sub([],D,u),P=De.vec3.length(x),I=De.vec3.normalize([],x),M=r.worldSize/(2*Math.PI),C=De.vec3.dot(I,v),k=Math.asin(M/P);if(k<Math.acos(C)){if(!o)return null;const Se=[],me=[];De.vec3.scale(Se,v,P/C),De.vec3.normalize(me,De.vec3.sub(me,Se,x)),De.vec3.normalize(v,De.vec3.add(v,x,De.vec3.scale(v,me,Math.tan(k)*P)))}const V=[];new zi(u,v).closestPointOnSphere(D,M,V);const U=De.vec3.normalize([],Ds(S,0)),q=De.vec3.normalize([],Ds(S,1)),$=De.vec3.normalize([],Ds(S,2)),H=De.vec3.dot(U,V),K=De.vec3.dot(q,V),Q=De.vec3.dot($,V),ie=kn(Math.asin(-K/M));let fe=kn(Math.atan2(H,Q));fe=r.center.lng+function(Se,me){const Ee=(me-Se+180)%360-180;return Ee<-180?Ee+360:Ee}(r.center.lng,fe);const de=sa(fe),ue=si(Aa(ie),0,1);return new h(de,ue)}class Bs{constructor(e,n,o){this.a=De.vec3.sub([],e,o),this.b=De.vec3.sub([],n,o),this.center=o;const u=De.vec3.normalize([],this.a),l=De.vec3.normalize([],this.b);this.angle=Math.acos(De.vec3.dot(u,l))}}function mr(r,e){if(r.angle===0)return null;let n;return n=r.a[e]===0?1/r.angle*.5*Math.PI:1/r.angle*Math.atan(r.b[e]/r.a[e]/Math.sin(r.angle)-1/Math.tan(r.angle)),n<0||n>1?null:function(o,u,l,f){const v=Math.sin(l);return o*(Math.sin((1-f)*l)/v)+u*(Math.sin(f*l)/v)}(r.a[e],r.b[e],r.angle,si(n,0,1))+r.center[e]}function is(r){if(r.z<=1)return Yi[r.z+2*r.y+r.x];const e=_n(dn(r));return Jt.fromPoints(e)}function As(r,e,n){return De.vec3.scale(r,r,1-n),De.vec3.scaleAndAdd(r,r,e,n)}function er(r,e,n){for(const o of r)De.vec3.transformMat4(o,o,e),De.vec3.scale(o,o,n)}function Gn(r,e,n,o){const u=e/r.worldSize,l=r.globeMatrix;if(n.z<=1){const de=is(n).getCorners();return er(de,l,u),Jt.fromPoints(de)}const f=dn(n,o),v=_n(f,fr+ji(r._tileCoverLift));er(v,l,u);const S=Number.MAX_VALUE,D=[-S,-S,-S],x=[S,S,S];if(f.contains(r.center)){for(const Se of v)De.vec3.min(x,x,Se),De.vec3.max(D,D,Se);D[2]=0;const de=r.point,ue=[de.x*u,de.y*u,0];return De.vec3.min(x,x,ue),De.vec3.max(D,D,ue),new Jt(x,D)}if(r._tileCoverLift>0){for(const de of v)De.vec3.min(x,x,de),De.vec3.max(D,D,de);return new Jt(x,D)}const P=[l[12]*u,l[13]*u,l[14]*u],I=f.getCenter(),M=si(r.center.lat,-jn,jn),C=si(I.lat,-jn,jn),k=sa(r.center.lng),V=Aa(M);let U=k-sa(I.lng);const q=V-Aa(C);U>.5?U-=1:U<-.5&&(U+=1);let $=0;if(Math.abs(U)>Math.abs(q))$=U>=0?1:3;else{$=q>=0?0:2;const de=[l[4]*u,l[5]*u,l[6]*u],ue=-Math.sin(vi(q>=0?f.getSouth():f.getNorth()))*fr;De.vec3.scaleAndAdd(P,P,de,ue)}const H=v[$],K=v[($+1)%4],Q=new Bs(H,K,P),ie=[mr(Q,0)||H[0],mr(Q,1)||H[1],mr(Q,2)||H[2]],fe=_r(r.zoom);if(fe>0){const de=function({x:Se,y:me,z:Ee},ze,Ie,Re,Ve){const Ue=1/(1<<Ee);let Fe=Se*Ue,et=Fe+Ue,dt=me*Ue,tt=dt+Ue,Mt=0;const wt=(Fe+et)/2-Re;return wt>.5?Mt=-1:wt<-.5&&(Mt=1),Fe=((Fe+Mt)*ze-(Re*=ze))*Ie+Re,et=((et+Mt)*ze-Re)*Ie+Re,dt=(dt*ze-(Ve*=ze))*Ie+Ve,tt=(tt*ze-Ve)*Ie+Ve,[[Fe,tt,0],[et,tt,0],[et,dt,0],[Fe,dt,0]]}(n,e,r._pixelsPerMercatorPixel,k,V);for(let Se=0;Se<v.length;Se++)As(v[Se],de[Se],fe);const ue=De.vec3.add([],de[$],de[($+1)%4]);De.vec3.scale(ue,ue,.5),As(ie,ue,fe)}for(const de of v)De.vec3.min(x,x,de),De.vec3.max(D,D,de);return x[2]=Math.min(H[2],K[2]),De.vec3.min(x,x,ie),De.vec3.max(D,D,ie),new Jt(x,D)}function dn({x:r,y:e,z:n},o=!1){const u=1/(1<<n),l=new Ui(Vr(r*u),e===(1<<n)-1&&o?-90:Fs((e+1)*u)),f=new Ui(Vr((r+1)*u),e===0&&o?90:Fs(e*u));return new ol(l,f)}function _n(r,e=fr){const n=vi(r.getNorth()),o=vi(r.getSouth()),u=Math.cos(n),l=Math.cos(o),f=Math.sin(n),v=Math.sin(o),S=r.getWest(),D=r.getEast();return[Ec(l,v,S,e),Ec(l,v,D,e),Ec(u,f,D,e),Ec(u,f,S,e)]}function Ri(r,e,n,o){const u=1<<n.z,l=(r/Tt+n.x)/u;return rl(Fs((e/Tt+n.y)/u),Vr(l),o)}function Zn({min:r,max:e}){return lm/Math.max(e[0]-r[0],e[1]-r[1],e[2]-r[2])}const Ns=new Float64Array(16);function cn(r){const e=Zn(r),n=De.mat4.fromScaling(Ns,[e,e,e]);return De.mat4.translate(n,n,De.vec3.negate([],r.min))}function tr(r){const e=De.mat4.fromTranslation(Ns,r.min),n=1/Zn(r);return De.mat4.scale(e,e,[n,n,n])}function eo(r){const e=Tt/(2*Math.PI);return r/(2*Math.PI)/e}function Ur(r,e){return Tt/(512*Math.pow(2,r))*Zn(is(e))}function Ca(r,e,n,o,u){const l=eo(n),f=[r,e,-n/(2*Math.PI)],v=De.mat4.identity(new Float64Array(16));return De.mat4.translate(v,v,f),De.mat4.scale(v,v,[l,l,l]),De.mat4.rotateX(v,v,vi(-u)),De.mat4.rotateY(v,v,vi(-o)),v}function _r(r){return ps(Ru,am,r)}function Oo(r,e){const n=rl(e.lat,e.lng),o=function(l){const f=rl(l._center.lat,l._center.lng),v=De.vec3.fromValues(0,1,0);let S=De.vec3.cross([],v,f);const D=De.mat4.fromRotation([],-l.angle,f);S=De.vec3.transformMat4(S,S,D),De.mat4.fromRotation(D,-l._pitch,S);const x=De.vec3.normalize([],f);return De.vec3.scale(x,x,ji(l.cameraToCenterDistance/l.pixelsPerMeter)),De.vec3.transformMat4(x,x,D),De.vec3.add([],f,x)}(r),u=De.vec3.subtract([],o,n);return De.vec3.angle(u,n)}function jr(r,e){return Oo(r,e)>Math.PI/2*1.01}const al=vi(85),ra=Math.cos(al),jl=Math.sin(al),zh=De.mat4.create(),Fu=r=>{const e=[];return r.paint.get("circle-pitch-alignment")==="map"&&e.push("PITCH_WITH_MAP"),r.paint.get("circle-pitch-scale")==="map"&&e.push("SCALE_WITH_MAP"),e};function Bu(r,e,n,o,u,l,f,v,S){if(l&&r.queryGeometry.isAboveHorizon)return!1;l&&(S*=r.pixelToTileUnitsFactor);const D=r.tileID.canonical,x=n.projection.upVectorScale(D,n.center.lat,n.worldSize).metersToTile;for(const P of e)for(const I of P){const M=I.add(v),C=u&&n.elevation?n.elevation.exaggeration()*u.getElevationAt(M.x,M.y,!0):0,k=n.projection.projectTilePoint(M.x,M.y,D);if(C>0){const $=n.projection.upVector(D,M.x,M.y);k.x+=$[0]*x*C,k.y+=$[1]*x*C,k.z+=$[2]*x*C}const V=l?M:cP(k.x,k.y,k.z,o),U=l?r.tilespaceRays.map($=>uP($,C)):r.queryGeometry.screenGeometry,q=De.vec4.transformMat4([],[k.x,k.y,k.z,1],o);if(!f&&l?S*=q[3]/n.cameraToCenterDistance:f&&!l&&(S*=n.cameraToCenterDistance/q[3]),l){const $=Fs((I.y/Tt+D.y)/(1<<D.z));S/=n.projection.pixelsPerMeter($,1)/pr(1,$)}if(oe(U,V,S))return!0}return!1}function cP(r,e,n,o){const u=De.vec4.transformMat4([],[r,e,n,1],o);return new Et(u[0]/u[3],u[1]/u[3])}const sv=De.vec3.fromValues(0,0,0),hP=De.vec3.fromValues(0,0,1);function uP(r,e){const n=De.vec3.create();return sv[2]=e,r.intersectsPlane(sv,hP,n),new Et(n[0],n[1])}class rv extends ee{}let ov,av,lv,cv;function hv(r,{width:e,height:n},o,u){if(u){if(u instanceof Uint8ClampedArray)u=new Uint8Array(u.buffer);else if(u.length!==e*n*o)throw new RangeError("mismatched image size")}else u=new Uint8Array(e*n*o);return r.width=e,r.height=n,r.data=u,r}function uv(r,e,n){const{width:o,height:u}=e;o===r.width&&u===r.height||(dg(r,e,{x:0,y:0},{x:0,y:0},{width:Math.min(r.width,o),height:Math.min(r.height,u)},n,null),r.width=o,r.height=u,r.data=e.data)}function dg(r,e,n,o,u,l,f,v){if(u.width===0||u.height===0)return e;if(u.width>r.width||u.height>r.height||n.x>r.width-u.width||n.y>r.height-u.height)throw new RangeError("out of range source coordinates for image copy");if(u.width>e.width||u.height>e.height||o.x>e.width-u.width||o.y>e.height-u.height)throw new RangeError("out of range destination coordinates for image copy");const S=r.data,D=e.data,x=l===4&&v;for(let P=0;P<u.height;P++){const I=((n.y+P)*r.width+n.x)*l,M=((o.y+P)*e.width+o.x)*l;if(x)for(let C=0;C<u.width;C++){const k=I+C*l+3,V=M+C*l;D[V+0]=255,D[V+1]=255,D[V+2]=255,D[V+3]=S[k]}else if(f)for(let C=0;C<u.width;C++){const k=I+C*l,V=M+C*l,U=S[k+3],q=new ki(S[k+0]/255*U,S[k+1]/255*U,S[k+2]/255*U,U).toRenderColor(f).toArray();D[V+0]=q[0],D[V+1]=q[1],D[V+2]=q[2],D[V+3]=q[3]}else for(let C=0;C<u.width*l;C++)D[M+C]=S[I+C]}return e}Ft(rv,"HeatmapBucket",{omit:["layers"]});class Ac{constructor(e,n){hv(this,e,1,n)}resize(e){uv(this,new Ac(e),1)}clone(){return new Ac({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(e,n,o,u,l){dg(e,n,o,u,l,1,null)}}class gr{constructor(e,n){hv(this,e,4,n)}resize(e){uv(this,new gr(e),4)}replace(e,n){n?this.data.set(e):this.data=e instanceof Uint8ClampedArray?new Uint8Array(e.buffer):e}clone(){return new gr({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(e,n,o,u,l,f,v){dg(e,n,o,u,l,4,f,v)}}class dv{constructor(e,n){this.width=e.width,this.height=e.height,this.data=n instanceof Uint8Array?new Float32Array(n.buffer):n}}function gf(r){const e={},n=r.resolution||256,o=r.clips?r.clips.length:1,u=r.image||new gr({width:n,height:o}),l=(f,v,S)=>{e[r.evaluationKey]=S;const D=r.expression.evaluate(e);D&&(u.data[f+v+0]=Math.floor(255*D.r/D.a),u.data[f+v+1]=Math.floor(255*D.g/D.a),u.data[f+v+2]=Math.floor(255*D.b/D.a),u.data[f+v+3]=Math.floor(255*D.a))};if(r.clips)for(let f=0,v=0;f<o;++f,v+=4*n)for(let S=0,D=0;S<n;S++,D+=4){const x=S/(n-1),{start:P,end:I}=r.clips[f];l(v,D,P*(1-x)+I*x)}else for(let f=0,v=0;f<n;f++,v+=4)l(0,v,f/(n-1));return u}Ft(Ac,"AlphaImage"),Ft(gr,"RGBAImage");const dP=qi([{name:"a_pos",components:2,type:"Int16"}],4),{members:fP}=dP;function yf(r,e,n=2){const o=e&&e.length,u=o?e[0]*n:r.length;let l=fv(r,0,u,n,!0);const f=[];if(!l||l.next===l.prev)return f;let v,S,D;if(o&&(l=function(x,P,I,M){const C=[];for(let k=0,V=P.length;k<V;k++){const U=fv(x,P[k]*M,k<V-1?P[k+1]*M:x.length,M,!1);U===U.next&&(U.steiner=!0),C.push(bP(U))}C.sort(yP);for(let k=0;k<C.length;k++)I=xP(C[k],I);return I}(r,e,l,n)),r.length>80*n){v=1/0,S=1/0;let x=-1/0,P=-1/0;for(let I=n;I<u;I+=n){const M=r[I],C=r[I+1];M<v&&(v=M),C<S&&(S=C),M>x&&(x=M),C>P&&(P=C)}D=Math.max(x-v,P-S),D=D!==0?32767/D:0}return xf(l,f,n,v,S,D,0),f}function fv(r,e,n,o,u){let l;if(u===function(f,v,S,D){let x=0;for(let P=v,I=S-D;P<S;P+=D)x+=(f[I]-f[P])*(f[P+1]+f[I+1]),I=P;return x}(r,e,n,o)>0)for(let f=e;f<n;f+=o)l=_v(f/o|0,r[f],r[f+1],l);else for(let f=n-o;f>=e;f-=o)l=_v(f/o|0,r[f],r[f+1],l);return l&&um(l,l.next)&&(bf(l),l=l.next),l}function Dh(r,e){if(!r)return r;e||(e=r);let n,o=r;do if(n=!1,o.steiner||!um(o,o.next)&&Ts(o.prev,o,o.next)!==0)o=o.next;else{if(bf(o),o=e=o.prev,o===o.next)break;n=!0}while(n||o!==e);return e}function xf(r,e,n,o,u,l,f){if(!r)return;!f&&l&&function(S,D,x,P){let I=S;do I.z===0&&(I.z=fg(I.x,I.y,D,x,P)),I.prevZ=I.prev,I.nextZ=I.next,I=I.next;while(I!==S);I.prevZ.nextZ=null,I.prevZ=null,function(M){let C,k=1;do{let V,U=M;M=null;let q=null;for(C=0;U;){C++;let $=U,H=0;for(let Q=0;Q<k&&(H++,$=$.nextZ,$);Q++);let K=k;for(;H>0||K>0&&$;)H!==0&&(K===0||!$||U.z<=$.z)?(V=U,U=U.nextZ,H--):(V=$,$=$.nextZ,K--),q?q.nextZ=V:M=V,V.prevZ=q,q=V;U=$}q.nextZ=null,k*=2}while(C>1)}(I)}(r,o,u,l);let v=r;for(;r.prev!==r.next;){const S=r.prev,D=r.next;if(l?mP(r,o,u,l):pP(r))e.push(S.i,r.i,D.i),bf(r),r=D.next,v=D.next;else if((r=D)===v){f?f===1?xf(r=_P(Dh(r),e),e,n,o,u,l,2):f===2&&gP(r,e,n,o,u,l):xf(Dh(r),e,n,o,u,l,1);break}}}function pP(r){const e=r.prev,n=r,o=r.next;if(Ts(e,n,o)>=0)return!1;const u=e.x,l=n.x,f=o.x,v=e.y,S=n.y,D=o.y,x=u<l?u<f?u:f:l<f?l:f,P=v<S?v<D?v:D:S<D?S:D,I=u>l?u>f?u:f:l>f?l:f,M=v>S?v>D?v:D:S>D?S:D;let C=o.next;for(;C!==e;){if(C.x>=x&&C.x<=I&&C.y>=P&&C.y<=M&&Nu(u,v,l,S,f,D,C.x,C.y)&&Ts(C.prev,C,C.next)>=0)return!1;C=C.next}return!0}function mP(r,e,n,o){const u=r.prev,l=r,f=r.next;if(Ts(u,l,f)>=0)return!1;const v=u.x,S=l.x,D=f.x,x=u.y,P=l.y,I=f.y,M=v<S?v<D?v:D:S<D?S:D,C=x<P?x<I?x:I:P<I?P:I,k=v>S?v>D?v:D:S>D?S:D,V=x>P?x>I?x:I:P>I?P:I,U=fg(M,C,e,n,o),q=fg(k,V,e,n,o);let $=r.prevZ,H=r.nextZ;for(;$&&$.z>=U&&H&&H.z<=q;){if($.x>=M&&$.x<=k&&$.y>=C&&$.y<=V&&$!==u&&$!==f&&Nu(v,x,S,P,D,I,$.x,$.y)&&Ts($.prev,$,$.next)>=0||($=$.prevZ,H.x>=M&&H.x<=k&&H.y>=C&&H.y<=V&&H!==u&&H!==f&&Nu(v,x,S,P,D,I,H.x,H.y)&&Ts(H.prev,H,H.next)>=0))return!1;H=H.nextZ}for(;$&&$.z>=U;){if($.x>=M&&$.x<=k&&$.y>=C&&$.y<=V&&$!==u&&$!==f&&Nu(v,x,S,P,D,I,$.x,$.y)&&Ts($.prev,$,$.next)>=0)return!1;$=$.prevZ}for(;H&&H.z<=q;){if(H.x>=M&&H.x<=k&&H.y>=C&&H.y<=V&&H!==u&&H!==f&&Nu(v,x,S,P,D,I,H.x,H.y)&&Ts(H.prev,H,H.next)>=0)return!1;H=H.nextZ}return!0}function _P(r,e){let n=r;do{const o=n.prev,u=n.next.next;!um(o,u)&&pv(o,n,n.next,u)&&vf(o,u)&&vf(u,o)&&(e.push(o.i,n.i,u.i),bf(n),bf(n.next),n=r=u),n=n.next}while(n!==r);return Dh(n)}function gP(r,e,n,o,u,l){let f=r;do{let v=f.next.next;for(;v!==f.prev;){if(f.i!==v.i&&wP(f,v)){let S=mv(f,v);return f=Dh(f,f.next),S=Dh(S,S.next),xf(f,e,n,o,u,l,0),void xf(S,e,n,o,u,l,0)}v=v.next}f=f.next}while(f!==r)}function yP(r,e){return r.x-e.x}function xP(r,e){const n=function(u,l){let f=l;const v=u.x,S=u.y;let D,x=-1/0;do{if(S<=f.y&&S>=f.next.y&&f.next.y!==f.y){const k=f.x+(S-f.y)*(f.next.x-f.x)/(f.next.y-f.y);if(k<=v&&k>x&&(x=k,D=f.x<f.next.x?f:f.next,k===v))return D}f=f.next}while(f!==l);if(!D)return null;const P=D,I=D.x,M=D.y;let C=1/0;f=D;do{if(v>=f.x&&f.x>=I&&v!==f.x&&Nu(S<M?v:x,S,I,M,S<M?x:v,S,f.x,f.y)){const k=Math.abs(S-f.y)/(v-f.x);vf(f,u)&&(k<C||k===C&&(f.x>D.x||f.x===D.x&&vP(D,f)))&&(D=f,C=k)}f=f.next}while(f!==P);return D}(r,e);if(!n)return e;const o=mv(n,r);return Dh(o,o.next),Dh(n,n.next)}function vP(r,e){return Ts(r.prev,r,e.prev)<0&&Ts(e.next,r,r.next)<0}function fg(r,e,n,o,u){return(r=1431655765&((r=858993459&((r=252645135&((r=16711935&((r=(r-n)*u|0)|r<<8))|r<<4))|r<<2))|r<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-o)*u|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function bP(r){let e=r,n=r;do(e.x<n.x||e.x===n.x&&e.y<n.y)&&(n=e),e=e.next;while(e!==r);return n}function Nu(r,e,n,o,u,l,f,v){return(u-f)*(e-v)>=(r-f)*(l-v)&&(r-f)*(o-v)>=(n-f)*(e-v)&&(n-f)*(l-v)>=(u-f)*(o-v)}function wP(r,e){return r.next.i!==e.i&&r.prev.i!==e.i&&!function(n,o){let u=n;do{if(u.i!==n.i&&u.next.i!==n.i&&u.i!==o.i&&u.next.i!==o.i&&pv(u,u.next,n,o))return!0;u=u.next}while(u!==n);return!1}(r,e)&&(vf(r,e)&&vf(e,r)&&function(n,o){let u=n,l=!1;const f=(n.x+o.x)/2,v=(n.y+o.y)/2;do u.y>v!=u.next.y>v&&u.next.y!==u.y&&f<(u.next.x-u.x)*(v-u.y)/(u.next.y-u.y)+u.x&&(l=!l),u=u.next;while(u!==n);return l}(r,e)&&(Ts(r.prev,r,e.prev)||Ts(r,e.prev,e))||um(r,e)&&Ts(r.prev,r,r.next)>0&&Ts(e.prev,e,e.next)>0)}function Ts(r,e,n){return(e.y-r.y)*(n.x-e.x)-(e.x-r.x)*(n.y-e.y)}function um(r,e){return r.x===e.x&&r.y===e.y}function pv(r,e,n,o){const u=fm(Ts(r,e,n)),l=fm(Ts(r,e,o)),f=fm(Ts(n,o,r)),v=fm(Ts(n,o,e));return u!==l&&f!==v||!(u!==0||!dm(r,n,e))||!(l!==0||!dm(r,o,e))||!(f!==0||!dm(n,r,o))||!(v!==0||!dm(n,e,o))}function dm(r,e,n){return e.x<=Math.max(r.x,n.x)&&e.x>=Math.min(r.x,n.x)&&e.y<=Math.max(r.y,n.y)&&e.y>=Math.min(r.y,n.y)}function fm(r){return r>0?1:r<0?-1:0}function vf(r,e){return Ts(r.prev,r,r.next)<0?Ts(r,e,r.next)>=0&&Ts(r,r.prev,e)>=0:Ts(r,e,r.prev)<0||Ts(r,r.next,e)<0}function mv(r,e){const n=pg(r.i,r.x,r.y),o=pg(e.i,e.x,e.y),u=r.next,l=e.prev;return r.next=e,e.prev=r,n.next=u,u.prev=n,o.next=n,n.prev=o,l.next=o,o.prev=l,o}function _v(r,e,n,o){const u=pg(r,e,n);return o?(u.next=o.next,u.prev=o,o.next.prev=u,o.next=u):(u.prev=u,u.next=u),u}function bf(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ)}function pg(r,e,n){return{i:r,x:e,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function pm(r,e){const n=r.length;if(n<=1)return[r];const o=[];let u,l;for(let f=0;f<n;f++){const v=Un(r[f]);v!==0&&(r[f].area=Math.abs(v),l===void 0&&(l=v<0),l===v<0?(u&&o.push(u),u=[r[f]]):u.push(r[f]))}if(u&&o.push(u),e>1)for(let f=0;f<o.length;f++)o[f].length<=e||(Xh(o[f],e,1,o[f].length-1,TP),o[f]=o[f].slice(0,e));return o}function TP(r,e){return e.area-r.area}function gv(r,e){if(!r)return null;const n=typeof r=="string"?r:r.getPrimary().id;e[n]||(e[n]=[]);const o=as.from(r).getPrimary();return e[n].push(o),o.serialize()}function mg(r,e,n){const o=n.patternDependencies;let u=!1;for(const l of e){const f=l.paint.get(`${r}-pattern`);f.isConstant()||(u=!0),gv(f.constantOr(null),o)&&(u=!0)}return u}function _g(r,e,n,o,u){const l=u.patternDependencies;for(const f of e){const v=f.paint.get(`${r}-pattern`).value;if(v.kind!=="constant"){let S=v.evaluate({zoom:o},n,{},u.availableImages);S=S&&S.name?S.name:S;const D=gv(S,l);D&&(n.patterns[f.id]=D)}}return n}class gg{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(n=>n.fqid),this.index=e.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new Do,this.indexArray=new qs,this.indexArray2=new il,this.programConfigurations=new sl(e.layers,{zoom:e.zoom,lut:e.lut}),this.segments=new Wn,this.segments2=new Wn,this.stateDependentLayerIds=this.layers.filter(n=>n.isStateDependent()).map(n=>n.id),this.projection=e.projection}updateFootprints(e,n){}populate(e,n,o,u){this.hasPattern=mg("fill",this.layers,n);const l=this.layers[0].layout.get("fill-sort-key"),f=[];for(const{feature:v,id:S,index:D,sourceLayerIndex:x}of e){const P=this.layers[0]._featureFilter.needGeometry,I=Z(v,P);if(!this.layers[0]._featureFilter.filter(new Tn(this.zoom),I,o))continue;const M=l?l.evaluate(I,{},o,n.availableImages):void 0,C={id:S,properties:v.properties,type:v.type,sourceLayerIndex:x,index:D,geometry:P?I.geometry:G(v,o,u),patterns:{},sortKey:M};f.push(C)}l&&f.sort((v,S)=>v.sortKey-S.sortKey);for(const v of f){const{geometry:S,index:D,sourceLayerIndex:x}=v;if(this.hasPattern){const P=_g("fill",this.layers,v,this.zoom,n);this.patternFeatures.push(P)}else this.addFeature(v,S,D,o,{},n.availableImages,n.brightness);n.featureIndex.insert(e[D].feature,S,D,x,this.index)}}update(e,n,o,u,l,f,v){this.programConfigurations.updatePaintArrays(e,n,l,o,u,f,v)}addFeatures(e,n,o,u,l,f){for(const v of this.patternFeatures)this.addFeature(v,v.geometry,v.index,n,o,u,f)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,fP),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.indexBuffer2=e.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(e,n,o,u,l,f=[],v){for(const S of pm(n,500)){let D=0;for(const k of S)D+=k.length;const x=this.segments.prepareSegment(D,this.layoutVertexArray,this.indexArray),P=x.vertexLength,I=[],M=[];for(const k of S){if(k.length===0)continue;k!==S[0]&&M.push(I.length/2);const V=this.segments2.prepareSegment(k.length,this.layoutVertexArray,this.indexArray2),U=V.vertexLength;this.layoutVertexArray.emplaceBack(k[0].x,k[0].y),this.indexArray2.emplaceBack(U+k.length-1,U),I.push(k[0].x),I.push(k[0].y);for(let q=1;q<k.length;q++)this.layoutVertexArray.emplaceBack(k[q].x,k[q].y),this.indexArray2.emplaceBack(U+q-1,U+q),I.push(k[q].x),I.push(k[q].y);V.vertexLength+=k.length,V.primitiveLength+=k.length}const C=yf(I,M);for(let k=0;k<C.length;k+=3)this.indexArray.emplaceBack(P+C[k],P+C[k+1],P+C[k+2]);x.vertexLength+=D,x.primitiveLength+=C.length/3}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,o,l,f,u,v)}}let yv,xv,vv,bv;Ft(gg,"FillBucket",{omit:["layers","patternFeatures"]});class yg{constructor(e,n,o,u){if(this.triangleCount=n.length/3,this.min=new Et(0,0),this.max=new Et(0,0),this.xScale=0,this.yScale=0,this.cellsX=0,this.cellsY=0,this.cells=[],this.payload=[],this.triangleCount===0||e.length===0)return;const[l,f]=[e[0].clone(),e[0].clone()];for(let P=1;P<e.length;++P){const I=e[P];l.x=Math.min(l.x,I.x),l.y=Math.min(l.y,I.y),f.x=Math.max(f.x,I.x),f.y=Math.max(f.y,I.y)}if(u){const P=Math.ceil(Math.max(f.x-l.x,f.y-l.y)/u);o=Math.max(o,P)}if(o===0)return;this.min=l,this.max=f;const v=this.max.sub(this.min);v.x=Math.max(v.x,1),v.y=Math.max(v.y,1);const S=Math.max(v.x,v.y)/o;this.cellsX=Math.max(1,Math.ceil(v.x/S)),this.cellsY=Math.max(1,Math.ceil(v.y/S)),this.xScale=1/S,this.yScale=1/S;const D=[];for(let P=0;P<this.triangleCount;P++){const I=e[n[3*P+0]].sub(this.min),M=e[n[3*P+1]].sub(this.min),C=e[n[3*P+2]].sub(this.min),k=ll(Math.floor(Math.min(I.x,M.x,C.x)),this.xScale,this.cellsX),V=ll(Math.floor(Math.max(I.x,M.x,C.x)),this.xScale,this.cellsX),U=ll(Math.floor(Math.min(I.y,M.y,C.y)),this.yScale,this.cellsY),q=ll(Math.floor(Math.max(I.y,M.y,C.y)),this.yScale,this.cellsY),$=new Et(0,0),H=new Et(0,0),K=new Et(0,0),Q=new Et(0,0);for(let ie=U;ie<=q;++ie){$.y=H.y=ie*S,K.y=Q.y=(ie+1)*S;for(let fe=k;fe<=V;++fe)$.x=K.x=fe*S,H.x=Q.x=(fe+1)*S,(ke(I,M,C,$,H,Q)||ke(I,M,C,$,Q,K))&&D.push({cellIdx:ie*this.cellsX+fe,triIdx:P})}}if(D.length===0)return;D.sort((P,I)=>P.cellIdx-I.cellIdx||P.triIdx-I.triIdx);let x=0;for(;x<D.length;){const P=D[x].cellIdx,I={start:this.payload.length,len:0};for(;x<D.length&&D[x].cellIdx===P;)++I.len,this.payload.push(D[x++].triIdx);this.cells[P]=I}}_lazyInitLookup(){this.lookup||(this.lookup=new Uint8Array(Math.ceil(this.triangleCount/8))),this.lookup.fill(0)}queryPoint(e,n){if(this.triangleCount===0||this.cells.length===0||e.x>this.max.x||this.min.x>e.x||e.y>this.max.y||this.min.y>e.y)return;const o=ll(e.x-this.min.x,this.xScale,this.cellsX),u=ll(e.y-this.min.y,this.yScale,this.cellsY),l=this.cells[u*this.cellsX+o];if(l){this._lazyInitLookup();for(let f=0;f<l.len;f++){const v=this.payload[l.start+f],S=Math.floor(v/8),D=1<<v%8;if(!(this.lookup[S]&D)&&(this.lookup[S]|=D,n.push(v),n.length===this.triangleCount))return}}}query(e,n,o){if(this.triangleCount===0||this.cells.length===0||e.x>this.max.x||this.min.x>n.x||e.y>this.max.y||this.min.y>n.y)return;this._lazyInitLookup();const u=ll(e.x-this.min.x,this.xScale,this.cellsX),l=ll(n.x-this.min.x,this.xScale,this.cellsX),f=ll(e.y-this.min.y,this.yScale,this.cellsY),v=ll(n.y-this.min.y,this.yScale,this.cellsY);for(let S=f;S<=v;S++)for(let D=u;D<=l;D++){const x=this.cells[S*this.cellsX+D];if(x)for(let P=0;P<x.len;P++){const I=this.payload[x.start+P],M=Math.floor(I/8),C=1<<I%8;if(!(this.lookup[M]&C)&&(this.lookup[M]|=C,o.push(I),o.length===this.triangleCount))return}}}}function ll(r,e,n){return Math.max(0,Math.min(n-1,Math.floor(r*e)))}Ft(yg,"TriangleGridIndex");class wv{constructor(e){this.zoom=e.zoom,this.layers=e.layers,this.layerIds=this.layers.map(n=>n.fqid),this.index=e.index,this.hasPattern=!1,this.stateDependentLayerIds=this.layers.filter(n=>n.isStateDependent()).map(n=>n.id),this.footprints=[]}updateFootprints(e,n){for(const o of this.footprints)n.push({footprint:o,id:e})}populate(e,n,o,u){const l=[];for(const{feature:f,id:v,index:S,sourceLayerIndex:D}of e){const x=this.layers[0]._featureFilter.needGeometry,P=Z(f,x);if(!this.layers[0]._featureFilter.filter(new Tn(this.zoom),P,o))continue;const I={id:v,properties:f.properties,type:f.type,sourceLayerIndex:D,index:S,geometry:x?P.geometry:G(f,o,u),patterns:{}};l.push(I)}for(const f of l){const{geometry:v,index:S,sourceLayerIndex:D}=f;this.addFeature(f,v,S,o,{},n.availableImages,n.brightness),n.featureIndex.insert(e[S].feature,v,S,D,this.index)}}isEmpty(){return this.footprints.length===0}uploadPending(){return!1}upload(e){}update(e,n,o,u,l,f,v){}destroy(){}addFeature(e,n,o,u,l,f=[],v){for(const S of pm(n,2)){const D=[],x=[],P=[],I=new Et(1/0,1/0),M=new Et(-1/0,-1/0);for(const V of S)if(V.length!==0){V!==S[0]&&P.push(x.length/2);for(let U=0;U<V.length;U++)x.push(V[U].x),x.push(V[U].y),D.push(V[U]),I.x=Math.min(I.x,V[U].x),I.y=Math.min(I.y,V[U].y),M.x=Math.max(M.x,V[U].x),M.y=Math.max(M.y,V[U].y)}const C=yf(x,P),k=new yg(D,C,8,256);this.footprints.push({vertices:D,indices:C,grid:k,min:I,max:M})}}}Ft(wv,"ClipBucket",{omit:["layers"]});const MP=qi([{name:"a_pos_normal_ed",components:4,type:"Int16"}]),SP=qi([{name:"a_pos_end",components:4,type:"Int16"},{name:"a_angular_offset_factor",components:1,type:"Int16"}]),EP=qi([{name:"a_centroid_pos",components:2,type:"Uint16"}]),PP=qi([{name:"a_join_normal_inside",components:3,type:"Int16"}]),AP=qi([{name:"a_hidden_by_landmark",components:1,type:"Uint8"}]),CP=qi([{name:"a_pos_3",components:3,type:"Int16"},{name:"a_pos_normal_3",components:3,type:"Int16"}]),{members:IP}=MP;var xg,Tv,vg,Mv,bg,Sv,Ev,mm={};function Pv(){if(Tv)return xg;Tv=1;var r=Zr();function e(u,l,f,v,S){this.properties={},this.extent=f,this.type=0,this._pbf=u,this._geometry=-1,this._keys=v,this._values=S,u.readFields(n,this,l)}function n(u,l,f){u==1?l.id=f.readVarint():u==2?function(v,S){for(var D=v.readVarint()+v.pos;v.pos<D;){var x=S._keys[v.readVarint()],P=S._values[v.readVarint()];S.properties[x]=P}}(f,l):u==3?l.type=f.readVarint():u==4&&(l._geometry=f.pos)}function o(u){for(var l,f,v=0,S=0,D=u.length,x=D-1;S<D;x=S++)v+=((f=u[x]).x-(l=u[S]).x)*(l.y+f.y);return v}return xg=e,e.types=["Unknown","Point","LineString","Polygon"],e.prototype.loadGeometry=function(){var u=this._pbf;u.pos=this._geometry;for(var l,f=u.readVarint()+u.pos,v=1,S=0,D=0,x=0,P=[];u.pos<f;){if(S<=0){var I=u.readVarint();v=7&I,S=I>>3}if(S--,v===1||v===2)D+=u.readSVarint(),x+=u.readSVarint(),v===1&&(l&&P.push(l),l=[]),l.push(new r(D,x));else{if(v!==7)throw new Error("unknown command "+v);l&&l.push(l[0].clone())}}return l&&P.push(l),P},e.prototype.bbox=function(){var u=this._pbf;u.pos=this._geometry;for(var l=u.readVarint()+u.pos,f=1,v=0,S=0,D=0,x=1/0,P=-1/0,I=1/0,M=-1/0;u.pos<l;){if(v<=0){var C=u.readVarint();f=7&C,v=C>>3}if(v--,f===1||f===2)(S+=u.readSVarint())<x&&(x=S),S>P&&(P=S),(D+=u.readSVarint())<I&&(I=D),D>M&&(M=D);else if(f!==7)throw new Error("unknown command "+f)}return[x,I,P,M]},e.prototype.toGeoJSON=function(u,l,f){var v,S,D=this.extent*Math.pow(2,f),x=this.extent*u,P=this.extent*l,I=this.loadGeometry(),M=e.types[this.type];function C(U){for(var q=0;q<U.length;q++){var $=U[q];U[q]=[360*($.x+x)/D-180,360/Math.PI*Math.atan(Math.exp((180-360*($.y+P)/D)*Math.PI/180))-90]}}switch(this.type){case 1:var k=[];for(v=0;v<I.length;v++)k[v]=I[v][0];C(I=k);break;case 2:for(v=0;v<I.length;v++)C(I[v]);break;case 3:for(I=function(U){var q=U.length;if(q<=1)return[U];for(var $,H,K=[],Q=0;Q<q;Q++){var ie=o(U[Q]);ie!==0&&(H===void 0&&(H=ie<0),H===ie<0?($&&K.push($),$=[U[Q]]):$.push(U[Q]))}return $&&K.push($),K}(I),v=0;v<I.length;v++)for(S=0;S<I[v].length;S++)C(I[v][S])}I.length===1?I=I[0]:M="Multi"+M;var V={type:"Feature",geometry:{type:M,coordinates:I},properties:this.properties};return"id"in this&&(V.id=this.id),V},xg}function Av(){if(Mv)return vg;Mv=1;var r=Pv();function e(o,u){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=o,this._keys=[],this._values=[],this._features=[],o.readFields(n,this,u),this.length=this._features.length}function n(o,u,l){o===15?u.version=l.readVarint():o===1?u.name=l.readString():o===5?u.extent=l.readVarint():o===2?u._features.push(l.pos):o===3?u._keys.push(l.readString()):o===4&&u._values.push(function(f){for(var v=null,S=f.readVarint()+f.pos;f.pos<S;){var D=f.readVarint()>>3;v=D===1?f.readString():D===2?f.readFloat():D===3?f.readDouble():D===4?f.readVarint64():D===5?f.readVarint():D===6?f.readSVarint():D===7?f.readBoolean():null}return v}(l))}return vg=e,e.prototype.feature=function(o){if(o<0||o>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[o];var u=this._pbf.readVarint()+this._pbf.pos;return new r(this._pbf,u,this.extent,this._keys,this._values)},vg}function Cv(){return Ev||(Ev=1,mm.VectorTile=function(){if(Sv)return bg;Sv=1;var r=Av();function e(n,o,u){if(n===3){var l=new r(u,u.readVarint()+u.pos);l.length&&(o[l.name]=l)}}return bg=function(n,o){this.layers=n.readFields(e,{},o)},bg}(),mm.VectorTileFeature=Pv(),mm.VectorTileLayer=Av()),mm}var Vu=Cv();class kh extends Et{constructor(e,n,o){super(e,n),this.z=o}}class Iv extends kh{constructor(e,n,o,u){super(e,n,o),this.w=u}}function _m(r,e,n,o){const u=[],l=o===0?(f,v,S,D,x,P)=>{f.push(new Et(P,S+(P-v)/(D-v)*(x-S)))}:(f,v,S,D,x,P)=>{f.push(new Et(v+(P-S)/(x-S)*(D-v),P))};for(const f of r){const v=[];for(const S of f){if(S.length<=2)continue;const D=[];for(let I=0;I<S.length-1;I++){const M=S[I].x,C=S[I].y,k=S[I+1].x,V=S[I+1].y,U=o===0?M:C,q=o===0?k:V;U<e?q>e&&l(D,M,C,k,V,e):U>n?q<n&&l(D,M,C,k,V,n):D.push(S[I]),q<e&&U>=e&&l(D,M,C,k,V,e),q>n&&U<=n&&l(D,M,C,k,V,n)}let x=S[S.length-1];const P=o===0?x.x:x.y;P>=e&&P<=n&&D.push(x),D.length&&(x=D[D.length-1],D[0].x===x.x&&D[0].y===x.y||D.push(D[0]),v.push(D))}v.length&&u.push(v)}return u}function Lv(r,e,n,o){const u=n==="x"?"y":"x",l=(o-r[n])/(e[n]-r[n]);r[u]=r[u]+(e[u]-r[u])*l,r[n]=o,r.hasOwnProperty("z")&&(r.z=ei(r.z,e.z,l)),r.hasOwnProperty("w")&&(r.w=ei(r.w,e.w,l))}function zv(r,e,n,o){const u=n,l=o;for(const f of["x","y"]){let v=r,S=e;v[f]>=S[f]&&(v=e,S=r),v[f]<u&&S[f]>u&&Lv(v,S,f,u),v[f]<l&&S[f]>l&&Lv(S,v,f,l)}}const gm=Number.MAX_SAFE_INTEGER;function Dv(r,e,n,o){return r.order<e||r.order===gm||!(r.clipMask&n)||function(u,l){return l.length!==0&&l.find(f=>f===u)===void 0}(o,r.clipScope)}function ym(r,e){return r.x-e.x||r.y-e.y}function kv(r,e){return ym(r.min,e.min)===0&&ym(r.max,e.max)===0}function wg(r,e){return!(r.min.x>e.max.x||r.max.x<e.min.x||r.min.y>e.max.y||r.max.y<e.min.y)}function Tg(r,e){if(r.length!==e.length)return!1;for(let n=0;n<r.length;n++)if(r[n].sourceId!==e[n].sourceId||!kv(r[n],e[n])||r[n].order!==e[n].order||r[n].clipMask!==e[n].clipMask||!$s(r[n].clipScope,e[n].clipScope))return!1;return!0}function Rv(r,e,n){const o=1/Tt,u=1/(1<<n.canonical.z),l=(e.x*o+n.canonical.x)*u+n.wrap,f=(e.y*o+n.canonical.y)*u;return{min:new Et((r.x*o+n.canonical.x)*u+n.wrap,(r.y*o+n.canonical.y)*u),max:new Et(l,f)}}function LP(r,e,n){const o=1<<n.canonical.z,u=((e.x-n.wrap)*o-n.canonical.x)*Tt,l=(e.y*o-n.canonical.y)*Tt;return{min:new Et(((r.x-n.wrap)*o-n.canonical.x)*Tt,(r.y*o-n.canonical.y)*Tt),max:new Et(u,l)}}function Ov(r,e,n,o,u,l,f){const v=r.indices,S=r.vertices,D=[];for(let x=o;x<o+u;x+=3){const P=e[n[x+0]+l],I=e[n[x+1]+l],M=e[n[x+2]+l],C=Math.min(P.x,I.x,M.x),k=Math.max(P.x,I.x,M.x),V=Math.min(P.y,I.y,M.y),U=Math.max(P.y,I.y,M.y);D.length=0,r.grid.query(new Et(C,V),new Et(k,U),D);for(let q=0;q<D.length;q++){const $=D[q];if(ke(S[v[3*$+0]],S[v[3*$+1]],S[v[3*$+2]],P,I,M,f))return!0}}return!1}function Fv(r,e,n,o){if(!r||!n)return!1;let u=r.vertices;if(!e.canonical.equals(o.canonical)||e.wrap!==o.wrap){if(n.vertices.length<r.vertices.length)return Fv(n,o,r,e);const l=e.canonical,f=o.canonical,v=Math.pow(2,f.z-l.z);u=r.vertices.map(S=>new Et((S.x+l.x*Tt)*v-f.x*Tt,(S.y+l.y*Tt)*v-f.y*Tt))}return Ov(n,u,r.indices,0,r.indices.length,0,0)}function Bv(r,e,n,o){const u=Math.pow(2,o.z-n.z);return new Et((r+n.x*Tt)*u-o.x*Tt,(e+n.y*Tt)*u-o.y*Tt)}function Nv(r,e){const n=[];e.grid.queryPoint(r,n);const o=e.indices,u=e.vertices;for(let l=0;l<n.length;l++){const f=n[l];if(Ae([u[o[3*f+0]],u[o[3*f+1]],u[o[3*f+2]]],r))return!0}return!1}const Mg=[new Et(0,0),new Et(Tt,0),new Et(Tt,Tt),new Et(0,Tt)];function Vv(r,e){const n=[];let o=[];if(!e||r.length<2)return[r];if(r.length===2)return Xe(r[0],r[1],Mg)?[r]:[];for(let u=0;u<r.length+2;u++){const l=r[u%r.length],f=r[(u+1)%r.length],v=Xe(u===0?r[r.length-1]:r[(u-1)%r.length],l,Mg),S=Xe(l,f,Mg),D=v||S;D&&o.push(l),D&&S||o.length>0&&(o.length>1&&n.push(o),o=[])}return o.length>1&&n.push(o),n}const Sg=Vu.VectorTileFeature.types,zP=["fill-extrusion-base","fill-extrusion-height","fill-extrusion-color","fill-extrusion-pattern","fill-extrusion-flood-light-wall-radius","fill-extrusion-line-width","fill-extrusion-emissive-strength"],DP=["fill-extrusion-flood-light-ground-radius"],kP=Math.pow(2,13),RP=Math.pow(2,15)-1,Uv=new Et(0,1),Cc=2147483648;function wf(r,e,n,o,u,l,f,v){r.emplaceBack((e<<1)+f,(n<<1)+l,(Math.floor(o*kP)<<1)+u,Math.round(v))}function Tf(r,e,n){r.emplaceBack(e.x*Tt,e.y*Tt,n?1:0)}function xm(r,e,n,o,u,l){r.emplaceBack(e.x,e.y,(n.x<<1)+o,(n.y<<1)+u,l)}function Mf(r,e,n){r.emplaceBack(e.x,e.y,e.z,n[0]*16384,n[1]*16384,n[2]*16384)}class jv{constructor(){this.vertexOffset=0,this.vertexCount=0,this.indexOffset=0,this.indexCount=0}}class Gv{constructor(){this.centroidXY=new Et(0,0),this.vertexArrayOffset=0,this.vertexCount=0,this.groundVertexArrayOffset=0,this.groundVertexCount=0,this.flags=0,this.footprintSegIdx=-1,this.footprintSegLen=0,this.polygonSegIdx=-1,this.polygonSegLen=0,this.min=new Et(Number.MAX_VALUE,Number.MAX_VALUE),this.max=new Et(-Number.MAX_VALUE,-Number.MAX_VALUE),this.height=0}span(){return new Et(this.max.x-this.min.x,this.max.y-this.min.y)}}class Zv{constructor(){this.acc=new Et(0,0),this.accCount=0,this.centroidDataIndex=0}startRing(e,n){e.min.x===Number.MAX_VALUE&&(e.min.x=e.max.x=n.x,e.min.y=e.max.y=n.y)}appendEdge(e,n,o){this.accCount++,this.acc._add(n);let u=!!this.borders;n.x<e.min.x?(e.min.x=n.x,u=!0):n.x>e.max.x&&(e.max.x=n.x,u=!0),n.y<e.min.y?(e.min.y=n.y,u=!0):n.y>e.max.y&&(e.max.y=n.y,u=!0),((n.x===0||n.x===Tt)&&n.x===o.x)!=((n.y===0||n.y===Tt)&&n.y===o.y)&&this.processBorderOverlap(n,o),u&&this.checkBorderIntersection(n,o)}checkBorderIntersection(e,n){n.x<0!=e.x<0&&this.addBorderIntersection(0,ei(n.y,e.y,(0-n.x)/(e.x-n.x))),n.x>Tt!=e.x>Tt&&this.addBorderIntersection(1,ei(n.y,e.y,(Tt-n.x)/(e.x-n.x))),n.y<0!=e.y<0&&this.addBorderIntersection(2,ei(n.x,e.x,(0-n.y)/(e.y-n.y))),n.y>Tt!=e.y>Tt&&this.addBorderIntersection(3,ei(n.x,e.x,(Tt-n.y)/(e.y-n.y)))}addBorderIntersection(e,n){this.borders||(this.borders=[[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE]]);const o=this.borders[e];n<o[0]&&(o[0]=n),n>o[1]&&(o[1]=n)}processBorderOverlap(e,n){if(e.x===n.x){if(e.y===n.y)return;const o=e.x===0?0:1;this.addBorderIntersection(o,n.y),this.addBorderIntersection(o,e.y)}else{const o=e.y===0?2:3;this.addBorderIntersection(o,n.x),this.addBorderIntersection(o,e.x)}}centroid(){return this.accCount===0?new Et(0,0):new Et(Math.floor(Math.max(0,this.acc.x)/this.accCount),Math.floor(Math.max(0,this.acc.y)/this.accCount))}intersectsCount(){return this.borders?this.borders.reduce((e,n)=>e+ +(n[0]!==Number.MAX_VALUE),0):0}}function Hv(r,e){const n=r.add(e)._unit(),o=si(r.x*n.x+r.y*n.y,-1,1);var u,l,f;return f=Math.acos(o),Math.min(4,Math.max(-4,Math.tan(f)))/4*RP*((u=r).x*(l=e).y-u.y*l.x<0?-1:1)}const OP=[r=>r.x<0,r=>r.x>Tt,r=>r.y<0,r=>r.y>Tt];function FP(r,e,n,o){const u=[4];if(o===0)return u;n._mult(o);const l=r.sub(n),f=e.sub(n),v=[r,e,l,f];for(let S=0;S<4;S++)for(const D of v)if(OP[S](D)){u.push(S);break}return u}class qv{constructor(e){this.vertexArray=new ef,this.indexArray=new qs,this.programConfigurations=new sl(e.layers,{zoom:e.zoom,lut:e.lut},n=>DP.includes(n)),this._segments=new Wn,this.hiddenByLandmarkVertexArray=new Iu,this._segmentToGroundQuads={},this._segmentToGroundQuads[0]=[],this._segmentToRegionTriCounts={},this._segmentToRegionTriCounts[0]=[0,0,0,0,0],this.regionSegments={},this.regionSegments[4]=new Wn}getDefaultSegment(){return this.regionSegments[4]}hasData(){return this.vertexArray.length!==0}addData(e,n,o,u=!1){const l=e.length;if(l>2){let f=Math.max(0,this._segments.get().length-1);const v=this._segments._prepareSegment(4*l,this.vertexArray.length,2*this._segmentToGroundQuads[f].length);let S;f!==this._segments.get().length-1&&(f++,this._segmentToGroundQuads[f]=[],this._segmentToRegionTriCounts[f]=[0,0,0,0,0]);{const D=e[0],x=e[1];S=Hv(D.sub(e[l-1])._perp()._unit(),x.sub(D)._perp()._unit())}for(let D=0;D<l;D++){const x=D===l-1?0:D+1,P=e[D],I=e[x],M=e[x===l-1?0:x+1],C=I.sub(P)._perp()._unit(),k=Hv(C,M.sub(I)._perp()._unit()),V=S,U=k;if(Eg(P,I,n)||u&&Xv(P,n)&&Xv(I,n)){S=k;continue}const q=v.vertexLength;xm(this.vertexArray,P,I,1,1,V),xm(this.vertexArray,P,I,1,0,V),xm(this.vertexArray,P,I,0,1,U),xm(this.vertexArray,P,I,0,0,U),v.vertexLength+=4;const $=FP(P,I,C,o);for(const H of $)this._segmentToGroundQuads[f].push({id:q,region:H}),this._segmentToRegionTriCounts[f][H]+=2,v.primitiveLength+=2;S=k}}}prepareBorderSegments(){if(!this.hasData())return;const e=this._segments.get(),n=e.length;for(let o=0;o<n;o++)this._segmentToGroundQuads[o].sort((u,l)=>u.region-l.region);for(let o=0;o<n;o++){const u=this._segmentToGroundQuads[o],l=e[o],f=this._segmentToRegionTriCounts[o];f.reduce((S,D)=>S+D,0);let v=0;for(let S=0;S<=4;S++){const D=f[S];if(D!==0){let x=this.regionSegments[S];x||(x=this.regionSegments[S]=new Wn);const P={vertexOffset:l.vertexOffset,primitiveOffset:l.primitiveOffset+v,vertexLength:l.vertexLength,primitiveLength:D};x.get().push(P)}v+=D}for(let S=0;S<u.length;S++){const D=u[S].id;this.indexArray.emplaceBack(D,D+1,D+3),this.indexArray.emplaceBack(D,D+3,D+2)}}this._segmentToGroundQuads=null,this._segmentToRegionTriCounts=null,this._segments.destroy(),this._segments=null}addPaintPropertiesData(e,n,o,u,l,f){this.hasData()&&this.programConfigurations.populatePaintArrays(this.vertexArray.length,e,n,o,u,l,f)}upload(e){this.hasData()&&(this.vertexBuffer=e.createVertexBuffer(this.vertexArray,SP.members),this.indexBuffer=e.createIndexBuffer(this.indexArray))}uploadPaintProperties(e){this.hasData()&&this.programConfigurations.upload(e)}update(e,n,o,u,l,f,v){this.hasData()&&this.programConfigurations.updatePaintArrays(e,n,o,u,l,f,v)}updateHiddenByLandmark(e){if(!this.hasData())return;const n=e.groundVertexCount+e.groundVertexArrayOffset;if(e.groundVertexCount===0)return;const o=e.flags&Cc?1:0;for(let u=e.groundVertexArrayOffset;u<n;++u)this.hiddenByLandmarkVertexArray.emplace(u,o);this._needsHiddenByLandmarkUpdate=!0}uploadHiddenByLandmark(e){this.hasData()&&this._needsHiddenByLandmarkUpdate&&(!this.hiddenByLandmarkVertexBuffer&&this.hiddenByLandmarkVertexArray.length>0?this.hiddenByLandmarkVertexBuffer=e.createVertexBuffer(this.hiddenByLandmarkVertexArray,AP.members,!0):this.hiddenByLandmarkVertexBuffer&&this.hiddenByLandmarkVertexBuffer.updateData(this.hiddenByLandmarkVertexArray),this._needsHiddenByLandmarkUpdate=!1)}destroy(){if(this.vertexBuffer){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.hiddenByLandmarkVertexBuffer&&this.hiddenByLandmarkVertexBuffer.destroy(),this._segments&&this._segments.destroy(),this.programConfigurations.destroy();for(let e=0;e<=4;e++){const n=this.regionSegments[e];n&&n.destroy()}}}}class vm{constructor(e){this.zoom=e.zoom,this.canonical=e.canonical,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(n=>n.fqid),this.index=e.index,this.hasPattern=!1,this.edgeRadius=0,this.projection=e.projection,this.activeReplacements=[],this.replacementUpdateTime=0,this.centroidData=[],this.footprintIndices=new qs,this.footprintVertices=new Do,this.footprintSegments=[],this.layoutVertexArray=new Qa,this.centroidVertexArray=new im,this.wallVertexArray=new sm,this.indexArray=new qs,this.programConfigurations=new sl(e.layers,{zoom:e.zoom,lut:e.lut},n=>zP.includes(n)),this.segments=new Wn,this.stateDependentLayerIds=this.layers.filter(n=>n.isStateDependent()).map(n=>n.id),this.groundEffect=new qv(e),this.maxHeight=0,this.partLookup={},this.triangleSubSegments=[],this.polygonSegments=[]}updateFootprints(e,n){}populate(e,n,o,u){this.features=[],this.hasPattern=mg("fill-extrusion",this.layers,n),this.featuresOnBorder=[],this.borderFeatureIndices=[[],[],[],[]],this.borderDoneWithNeighborZ=[-1,-1,-1,-1],this.selfDEMTileTimestamp=Number.MAX_VALUE,this.borderDEMTileTimestamp=[Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE],this.tileToMeter=s(o),this.edgeRadius=this.layers[0].layout.get("fill-extrusion-edge-radius")/this.tileToMeter,this.wallMode=this.layers[0].paint.get("fill-extrusion-line-width").constantOr(1)!==0;for(const{feature:l,id:f,index:v,sourceLayerIndex:S}of e){const D=this.layers[0]._featureFilter.needGeometry,x=Z(l,D);if(!this.layers[0]._featureFilter.filter(new Tn(this.zoom),x,o))continue;const P={id:f,sourceLayerIndex:S,index:v,geometry:D?x.geometry:G(l,o,u),properties:l.properties,type:l.type,patterns:{}},I=this.layoutVertexArray.length,M=Sg[P.type]==="Polygon";if(this.hasPattern)this.features.push(_g("fill-extrusion",this.layers,P,this.zoom,n));else if(this.wallMode)for(const C of P.geometry)for(const k of Vv(C,M))this.addFeature(P,[k],v,o,{},n.availableImages,u,n.brightness);else this.addFeature(P,P.geometry,v,o,{},n.availableImages,u,n.brightness);n.featureIndex.insert(l,P.geometry,v,S,this.index,I)}this.sortBorders(),this.projection.name==="mercator"&&this.splitToSubtiles(),this.groundEffect.prepareBorderSegments(),this.polygonSegments.length=0}addFeatures(e,n,o,u,l,f){for(const v of this.features){const S=Sg[v.type]==="Polygon",{geometry:D}=v;if(this.wallMode)for(const x of D)for(const P of Vv(x,S))this.addFeature(v,[P],v.index,n,o,u,l,f);else this.addFeature(v,D,v.index,n,o,u,l,f)}this.sortBorders(),this.projection.name==="mercator"&&this.splitToSubtiles()}update(e,n,o,u,l,f,v){this.programConfigurations.updatePaintArrays(e,n,l,o,u,f,v),this.groundEffect.update(e,n,l,o,u,f,v)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload||this.groundEffect.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,IP),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.wallVertexBuffer=e.createVertexBuffer(this.wallVertexArray,PP.members),this.layoutVertexExtArray&&(this.layoutVertexExtBuffer=e.createVertexBuffer(this.layoutVertexExtArray,CP.members,!0)),this.groundEffect.upload(e)),this.groundEffect.uploadPaintProperties(e),this.programConfigurations.upload(e),this.uploaded=!0}uploadCentroid(e){this.groundEffect.uploadHiddenByLandmark(e),this.needsCentroidUpdate&&(!this.centroidVertexBuffer&&this.centroidVertexArray.length>0?this.centroidVertexBuffer=e.createVertexBuffer(this.centroidVertexArray,EP.members,!0):this.centroidVertexBuffer&&this.centroidVertexBuffer.updateData(this.centroidVertexArray),this.needsCentroidUpdate=!1)}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.centroidVertexBuffer&&this.centroidVertexBuffer.destroy(),this.layoutVertexExtBuffer&&this.layoutVertexExtBuffer.destroy(),this.groundEffect.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(e,n,o,u,l,f,v,S){const D=this.layers[0].paint.get("fill-extrusion-flood-light-ground-radius").evaluate(e,{})/this.tileToMeter,x=[new Et(0,0),new Et(Tt,Tt)],P=v.projection,I=P.name==="globe",M=this.wallMode||Sg[e.type]==="Polygon",C=new Zv;C.centroidDataIndex=this.centroidData.length;const k=new Gv,V=this.layers[0].paint.get("fill-extrusion-base").evaluate(e,{},u)<=0,U=this.layers[0].paint.get("fill-extrusion-height").evaluate(e,{},u);let q;if(k.height=U,k.vertexArrayOffset=this.layoutVertexArray.length,k.groundVertexArrayOffset=this.groundEffect.vertexArray.length,I&&!this.layoutVertexExtArray&&(this.layoutVertexExtArray=new Mu),this.wallMode){if(I)return void mi("Non zero fill-extrusion-line-width is not yet supported on globe.");if(n.length!==1)return;q=function(ue){const Se=ue[0].x===ue[ue.length-1].x&&ue[0].y===ue[ue.length-1].y;(function(At){let rt=0;const Ut=At.length;for(let St=0;St<Ut;St++)rt+=(At[(St+1)%Ut].x-At[St].x)*(At[(St+1)%Ut].y+At[St].y);return rt>=0})(ue)||(ue=ue.reverse());const Ee={geometry:[],joinNormals:[],indices:[]},ze=[],Ie=[],Re=[];let Ve=ue.length;for(;Ve>=2&&ue[Ve-1].equals(ue[Ve-2]);)Ve--;if(Ve<(Se?3:2))return Ee;let Ue,Fe,et,dt,tt,Mt=0;for(;Mt<Ve-1&&ue[Mt].equals(ue[Mt+1]);)Mt++;Se&&(Ue=ue[Ve-2],tt=ue[Mt].sub(Ue)._unit()._perp());for(let At=Mt;At<Ve;At++){if(et=At===Ve-1?Se?ue[Mt+1]:void 0:ue[At+1],et&&ue[At].equals(et))continue;tt&&(dt=tt),Ue&&(Fe=Ue),Ue=ue[At],tt=et?et.sub(Ue)._unit()._perp():dt,dt=dt||tt;let rt=dt.add(tt);rt.x===0&&rt.y===0||rt._unit();const Ut=rt.x*tt.x+rt.y*tt.y,St=Ut!==0?1/Ut:1/0,Nt=dt.x*tt.y-dt.y*tt.x>0;let Qt="miter";const pi=2;Qt==="miter"&&St>pi&&(Qt="bevel"),Qt==="bevel"&&(St>100&&(Qt="flipbevel"),St<pi&&(Qt="miter"));const gi=(Ai,yi,Ii,fn)=>{const rn=new Et(Ai.x,Ai.y),hi=new Et(Ai.x,Ai.y);rn.x+=yi.x*fn,rn.y+=yi.y*fn,hi.x-=yi.x*Math.max(Ii,1),hi.y-=yi.y*Math.max(Ii,1),Re.push(yi),ze.push(rn),Ie.push(hi)};if(Qt==="miter")rt._mult(St),gi(Ue,rt,0,0);else if(Qt==="flipbevel")rt=tt.mult(-1),gi(Ue,rt,0,0),gi(Ue,rt.mult(-1),0,0);else{const Ai=-Math.sqrt(St*St-1),yi=Nt?Ai:0,Ii=Nt?0:Ai;Fe&&gi(Ue,dt,yi,Ii),et&&gi(Ue,tt,yi,Ii)}}Ee.geometry=[...ze,...Ie.reverse(),ze[0]],Ee.joinNormals=[...Re,...Re.reverse(),Re[Re.length-1]];const wt=Ee.geometry.length-1;for(let At=0;At<wt/2;At++)if(At+1<wt/2){let rt=At,Ut=At+1,St=wt-1-At,Nt=wt-2-At;rt=rt===0?wt-1:rt-1,Ut=Ut===0?wt-1:Ut-1,St=St===0?wt-1:St-1,Nt=Nt===0?wt-1:Nt-1,Ee.indices.push(St),Ee.indices.push(Ut),Ee.indices.push(rt),Ee.indices.push(St),Ee.indices.push(Nt),Ee.indices.push(Ut)}return Ee}(n[0]),n=[q.geometry]}const $=(ue,Se)=>ue<(Se.length-1)/2||ue===Se.length-1,H=this.wallMode?[n]:pm(n,500);for(let ue=H.length-1;ue>=0;ue--){const Se=H[ue];(Se.length===0||(K=Se[0]).every(me=>me.x<=0)||K.every(me=>me.x>=Tt)||K.every(me=>me.y<=0)||K.every(me=>me.y>=Tt))&&H.splice(ue,1)}var K;let Q;if(I)Q=Qv(H,x,u);else{Q=[];for(const ue of H)Q.push({polygon:ue,bounds:x})}const ie=M?this.edgeRadius:0,fe=ie>0&&this.zoom<17,de=(ue,Se)=>{if(ue.length===0)return!1;const me=ue[ue.length-1];return Se.x===me.x&&Se.y===me.y};for(const{polygon:ue,bounds:Se}of Q){let me=0,Ee=0;for(const Ve of ue)M&&!Ve[0].equals(Ve[Ve.length-1])&&Ve.push(Ve[0]),Ee+=M?Ve.length-1:Ve.length;const ze=this.segments.prepareSegment((M?5:4)*Ee,this.layoutVertexArray,this.indexArray);k.footprintSegIdx<0&&(k.footprintSegIdx=this.footprintSegments.length),k.polygonSegIdx<0&&(k.polygonSegIdx=this.polygonSegments.length);const Ie={triangleArrayOffset:this.indexArray.length,triangleCount:0,triangleSegIdx:this.segments.segments.length-1},Re=new jv;if(Re.vertexOffset=this.footprintVertices.length,Re.indexOffset=3*this.footprintIndices.length,Re.ringIndices=[],M){const Ve=[],Ue=[];me=ze.vertexLength;for(let et=0;et<ue.length;et++){const dt=ue[et];dt.length&&et!==0&&Ue.push(Ve.length/2);const tt=[];let Mt,wt;Mt=dt[1].sub(dt[0])._perp()._unit(),Re.ringIndices.push(dt.length-1);for(let At=1;At<dt.length;At++){const rt=dt[At],Ut=dt[At===dt.length-1?1:At+1],St=rt.clone();if(ie){wt=Ut.sub(rt)._perp()._unit();const Nt=Mt.add(wt)._unit(),Qt=ie*Math.min(4,1/(Mt.x*Nt.x+Mt.y*Nt.y));St.x+=Qt*Nt.x,St.y+=Qt*Nt.y,St.x=Math.round(St.x),St.y=Math.round(St.y),Mt=wt}if(!V||ie!==0&&!fe||de(tt,St)||tt.push(St),wf(this.layoutVertexArray,St.x,St.y,0,0,1,1,0),this.wallMode){const Nt=$(At,dt);Tf(this.wallVertexArray,q.joinNormals[At],!Nt)}ze.vertexLength++,this.footprintVertices.emplaceBack(rt.x,rt.y),Ve.push(rt.x,rt.y),I&&Mf(this.layoutVertexExtArray,P.projectTilePoint(St.x,St.y,u),P.upVector(u,St.x,St.y))}V&&(ie===0||fe)&&(tt.length!==0&&de(tt,tt[0])&&tt.pop(),this.groundEffect.addData(tt,Se,D))}const Fe=this.wallMode?q.indices:yf(Ve,Ue);for(let et=0;et<Fe.length;et+=3)this.footprintIndices.emplaceBack(Re.vertexOffset+Fe[et+0],Re.vertexOffset+Fe[et+1],Re.vertexOffset+Fe[et+2]),this.indexArray.emplaceBack(me+Fe[et],me+Fe[et+2],me+Fe[et+1]),ze.primitiveLength++;Re.indexCount+=Fe.length,Re.vertexCount+=this.footprintVertices.length-Re.vertexOffset}for(let Ve=0;Ve<ue.length;Ve++){const Ue=ue[Ve];C.startRing(k,Ue[0]);let Fe=Ue.length>4&&Yv(Ue[Ue.length-2],Ue[0],Ue[1]),et=ie?BP(Ue[Ue.length-2],Ue[0],Ue[1],ie):0;const dt=[];let tt,Mt,wt;Mt=Ue[1].sub(Ue[0])._perp()._unit();let At=!0;for(let rt=1,Ut=0;rt<Ue.length;rt++){let St=Ue[rt-1],Nt=Ue[rt];const Qt=Ue[rt===Ue.length-1?1:rt+1];if(C.appendEdge(k,Nt,St),Eg(Nt,St,Se)){ie&&(Mt=Qt.sub(Nt)._perp()._unit(),At=!At);continue}const pi=Nt.sub(St)._perp(),gi=pi.x/(Math.abs(pi.x)+Math.abs(pi.y)),Ai=pi.y>0?1:0,yi=St.dist(Nt);if(Ut+yi>32768&&(Ut=0),ie){wt=Qt.sub(Nt)._perp()._unit();let hi=$v(St,Nt,Qt,Wv(Mt,wt),ie);isNaN(hi)&&(hi=0);const on=Nt.sub(St)._unit();St=St.add(on.mult(et))._round(),Nt=Nt.add(on.mult(-hi))._round(),et=hi,Mt=wt,V&&this.zoom>=17&&(de(dt,St)||dt.push(St),de(dt,Nt)||dt.push(Nt))}const Ii=ze.vertexLength,fn=Ue.length>4&&Yv(St,Nt,Qt);let rn=Kv(Ut,Fe,At);if(wf(this.layoutVertexArray,St.x,St.y,gi,Ai,0,0,rn),wf(this.layoutVertexArray,St.x,St.y,gi,Ai,0,1,rn),this.wallMode){const hi=$(rt-1,Ue),on=q.joinNormals[rt-1];Tf(this.wallVertexArray,on,hi),Tf(this.wallVertexArray,on,hi)}if(Ut+=yi,rn=Kv(Ut,fn,!At),Fe=fn,wf(this.layoutVertexArray,Nt.x,Nt.y,gi,Ai,0,0,rn),wf(this.layoutVertexArray,Nt.x,Nt.y,gi,Ai,0,1,rn),this.wallMode){const hi=$(rt,Ue),on=q.joinNormals[rt];Tf(this.wallVertexArray,on,hi),Tf(this.wallVertexArray,on,hi)}if(ze.vertexLength+=4,this.indexArray.emplaceBack(Ii+0,Ii+1,Ii+2),this.indexArray.emplaceBack(Ii+1,Ii+3,Ii+2),ze.primitiveLength+=2,ie){const hi=me+(rt===1?Ue.length-2:rt-2),on=rt===1?me:hi+1;if(this.indexArray.emplaceBack(Ii+1,hi,Ii+3),this.indexArray.emplaceBack(hi,on,Ii+3),ze.primitiveLength+=2,tt===void 0&&(tt=Ii),!Eg(Qt,Ue[rt],Se)){const en=rt===Ue.length-1?tt:ze.vertexLength;this.indexArray.emplaceBack(Ii+2,Ii+3,en),this.indexArray.emplaceBack(Ii+3,en+1,en),this.indexArray.emplaceBack(Ii+3,on,en+1),ze.primitiveLength+=3}At=!At}if(I){const hi=this.layoutVertexExtArray,on=P.projectTilePoint(St.x,St.y,u),en=P.projectTilePoint(Nt.x,Nt.y,u),pn=P.upVector(u,St.x,St.y),hs=P.upVector(u,Nt.x,Nt.y);Mf(hi,on,pn),Mf(hi,on,pn),Mf(hi,en,hs),Mf(hi,en,hs)}}M&&(me+=Ue.length-1),V&&ie&&this.zoom>=17&&(dt.length!==0&&de(dt,dt[0])&&dt.pop(),this.groundEffect.addData(dt,Se,D,ie>0))}this.footprintSegments.push(Re),Ie.triangleCount=this.indexArray.length-Ie.triangleArrayOffset,this.polygonSegments.push(Ie),++k.footprintSegLen,++k.polygonSegLen}if(k.vertexCount=this.layoutVertexArray.length-k.vertexArrayOffset,k.groundVertexCount=this.groundEffect.vertexArray.length-k.groundVertexArrayOffset,k.vertexCount!==0){if(k.centroidXY=C.borders?Uv:this.encodeCentroid(C,k),this.centroidData.push(k),C.borders){this.featuresOnBorder.push(C);const ue=this.featuresOnBorder.length-1;for(let Se=0;Se<C.borders.length;Se++)C.borders[Se][0]!==Number.MAX_VALUE&&this.borderFeatureIndices[Se].push(ue)}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,o,l,f,u,S),this.groundEffect.addPaintPropertiesData(e,o,l,f,u,S),this.maxHeight=Math.max(this.maxHeight,U)}}sortBorders(){for(let e=0;e<this.borderFeatureIndices.length;e++)this.borderFeatureIndices[e].sort((n,o)=>this.featuresOnBorder[n].borders[e][0]-this.featuresOnBorder[o].borders[e][0])}splitToSubtiles(){const e=[];for(let v=0;v<this.centroidData.length;v++){const S=this.centroidData[v],D=+(S.min.y+S.max.y>Tt),x=2*D+(+(S.min.x+S.max.x>Tt)^D);for(let P=0;P<S.polygonSegLen;P++){const I=S.polygonSegIdx+P;e.push({centroidIdx:v,subtile:x,polygonSegmentIdx:I,triangleSegmentIdx:this.polygonSegments[I].triangleSegIdx})}}const n=new qs;e.sort((v,S)=>v.triangleSegmentIdx===S.triangleSegmentIdx?v.subtile-S.subtile:v.triangleSegmentIdx-S.triangleSegmentIdx);let o=0,u=0,l=0;for(const v of e){if(v.triangleSegmentIdx!==o)break;l++}const f=e.length;for(;u!==e.length;){o=e[u].triangleSegmentIdx;let v=0,S=u,D=u;for(let x=S;x<l&&e[x].subtile===v;x++)D++;for(;S!==l;){const x=e[S];v=x.subtile;const P=this.centroidData[x.centroidIdx].min.clone(),I=this.centroidData[x.centroidIdx].max.clone(),M={vertexOffset:this.segments.segments[o].vertexOffset,primitiveOffset:n.length,vertexLength:this.segments.segments[o].vertexLength,primitiveLength:0,sortKey:void 0,vaos:{}};for(let C=S;C<D;C++){const k=e[C],V=this.polygonSegments[k.polygonSegmentIdx],U=this.centroidData[k.centroidIdx].min,q=this.centroidData[k.centroidIdx].max,$=this.indexArray.uint16;for(let H=V.triangleArrayOffset;H<V.triangleArrayOffset+V.triangleCount;H++)n.emplaceBack($[3*H],$[3*H+1],$[3*H+2]);M.primitiveLength+=V.triangleCount,P.x=Math.min(P.x,U.x),P.y=Math.min(P.y,U.y),I.x=Math.max(I.x,q.x),I.y=Math.max(I.y,q.y)}M.primitiveLength>0&&this.triangleSubSegments.push({segment:M,min:P,max:I}),S=D;for(let C=S;C<l&&e[C].subtile===e[S].subtile;C++)D++}u=l;for(let x=u;x<f&&e[x].triangleSegmentIdx===e[u].triangleSegmentIdx;x++)l++}n._trim(),this.indexArray=n}getVisibleSegments(e,n,o){const u=new Wn;if(this.wallMode){for(const k of this.triangleSubSegments)u.segments.push(k.segment);return u}let l=0,f=0;const v=1<<e.canonical.z;if(n){const k=n.getMinMaxForTile(e);k&&(l=k.min,f=k.max)}f+=this.maxHeight;const S=e.toUnwrapped();let D;const x=[S.canonical.x/v+S.wrap,S.canonical.y/v],P=[(S.canonical.x+1)/v+S.wrap,(S.canonical.y+1)/v],I=(k,V,U)=>[k[0]*(1-U[0])+V[0]*U[0],k[1]*(1-U[1])+V[1]*U[1]],M=[],C=[];for(const k of this.triangleSubSegments){M[0]=k.min.x/Tt,M[1]=k.min.y/Tt,C[0]=k.max.x/Tt,C[1]=k.max.y/Tt;const V=I(x,P,M),U=I(x,P,C);if(new Jt([V[0],V[1],l],[U[0],U[1],f]).intersectsPrecise(o)===0){D&&(u.segments.push(D),D=void 0);continue}const q=k.segment;D&&D.vertexOffset!==q.vertexOffset&&(u.segments.push(D),D=void 0),D?(D.vertexLength+=q.vertexLength,D.primitiveLength+=q.primitiveLength):D={vertexOffset:q.vertexOffset,primitiveLength:q.primitiveLength,vertexLength:q.vertexLength,primitiveOffset:q.primitiveOffset,sortKey:void 0,vaos:{}}}return D&&u.segments.push(D),u}encodeCentroid(e,n){const o=e.centroid(),u=n.span(),l=Math.min(7,Math.round(u.x*this.tileToMeter/10)),f=Math.min(7,Math.round(u.y*this.tileToMeter/10));return new Et(si(o.x,1,Tt-1)<<3|l,si(o.y,1,Tt-1)<<3|f)}encodeBorderCentroid(e){if(!e.borders)return new Et(0,0);const n=e.borders,o=Number.MAX_VALUE;if(n[0][0]!==o||n[1][0]!==o){const u=n[0][0]!==o?0:1;return new Et(6|(n[0][0]!==o?0:65528),(n[u][0]+n[u][1])/2<<3|6)}{const u=n[2][0]!==o?2:3;return new Et((n[u][0]+n[u][1])/2<<3|6,6|(n[2][0]!==o?0:65528))}}showCentroid(e){const n=this.centroidData[e.centroidDataIndex];n.flags&=Cc,n.centroidXY.x=0,n.centroidXY.y=0,this.writeCentroidToBuffer(n)}writeCentroidToBuffer(e){this.groundEffect.updateHiddenByLandmark(e);const n=e.vertexArrayOffset,o=e.vertexCount+e.vertexArrayOffset,u=e.flags&Cc?Uv:e.centroidXY,l=this.centroidVertexArray.geta_centroid_pos0(n);if(this.centroidVertexArray.geta_centroid_pos1(n)!==u.y||l!==u.x){for(let f=n;f<o;++f)this.centroidVertexArray.emplace(f,u.x,u.y);this.needsCentroidUpdate=!0}}createCentroidsBuffer(){this.centroidVertexArray.resize(this.layoutVertexArray.length),this.groundEffect.hiddenByLandmarkVertexArray.resize(this.groundEffect.vertexArray.length);for(const e of this.centroidData)this.writeCentroidToBuffer(e)}updateReplacement(e,n,o){if(n.updateTime===this.replacementUpdateTime)return;this.replacementUpdateTime=n.updateTime;const u=n.getReplacementRegionsForTile(e.toUnwrapped());if(Tg(this.activeReplacements,u))return;if(this.activeReplacements=u,this.centroidVertexArray.length===0)this.createCentroidsBuffer();else for(const f of this.centroidData)f.flags&=2147483647;const l=[];for(const f of this.activeReplacements){if(f.order<o)continue;const v=Math.max(1,Math.pow(2,f.footprintTileId.canonical.z-e.canonical.z));for(const S of this.centroidData)if(!(S.flags&Cc||f.min.x>S.max.x||S.min.x>f.max.x||f.min.y>S.max.y||S.min.y>f.max.y))for(let D=0;D<S.footprintSegLen;D++){const x=this.footprintSegments[S.footprintSegIdx+D];if(l.length=0,NP(this.footprintVertices,x.vertexOffset,x.vertexCount,f.footprintTileId.canonical,e.canonical,l),Ov(f.footprint,l,this.footprintIndices.uint16,x.indexOffset,x.indexCount,-x.vertexOffset,-v)){S.flags|=Cc;break}}}for(const f of this.centroidData)this.writeCentroidToBuffer(f);this.borderDoneWithNeighborZ=[-1,-1,-1,-1]}footprintContainsPoint(e,n,o){let u=!1;for(let l=0;l<o.footprintSegLen;l++){const f=this.footprintSegments[o.footprintSegIdx+l];let v=0;for(const S of f.ringIndices){for(let D=v,x=S+v-1;D<S+v;x=D++){const P=this.footprintVertices.int16[2*(D+f.vertexOffset)+0],I=this.footprintVertices.int16[2*(D+f.vertexOffset)+1],M=this.footprintVertices.int16[2*(x+f.vertexOffset)+1];I>n!=M>n&&e<(this.footprintVertices.int16[2*(x+f.vertexOffset)+0]-P)*(n-I)/(M-I)+P&&(u=!u)}v=S}}return u}getHeightAtTileCoord(e,n){let o=Number.NEGATIVE_INFINITY,u=!0;const l=4*(e+Tt)*Tt+(n+Tt);if(this.partLookup.hasOwnProperty(l)){const f=this.partLookup[l];return f?{height:f.height,hidden:!!(f.flags&Cc)}:void 0}for(const f of this.centroidData)e>f.max.x||f.min.x>e||n>f.max.y||f.min.y>n||this.footprintContainsPoint(e,n,f)&&f&&f.height>o&&(o=f.height,this.partLookup[l]=f,u=!!(f.flags&Cc));if(o!==Number.NEGATIVE_INFINITY)return{height:o,hidden:u};this.partLookup[l]=void 0}}function Wv(r,e){const n=r.add(e)._unit();return r.x*n.x+r.y*n.y}function BP(r,e,n,o){const u=e.sub(r)._perp()._unit(),l=n.sub(e)._perp()._unit();return $v(r,e,n,Wv(u,l),o)}function $v(r,e,n,o,u){const l=Math.sqrt(1-o*o);return Math.min(r.dist(e)/3,e.dist(n)/3,u*l/o)}function Eg(r,e,n){return r.x<n[0].x&&e.x<n[0].x||r.x>n[1].x&&e.x>n[1].x||r.y<n[0].y&&e.y<n[0].y||r.y>n[1].y&&e.y>n[1].y}function Xv(r,e){return r.x<e[0].x||r.x>e[1].x||r.y<e[0].y||r.y>e[1].y}function Yv(r,e,n){if(r.x<0||r.x>=Tt||e.x<0||e.x>=Tt||n.x<0||n.x>=Tt)return!1;const o=n.sub(e),u=o.perp(),l=r.sub(e);return(o.x*l.x+o.y*l.y)/Math.sqrt((o.x*o.x+o.y*o.y)*(l.x*l.x+l.y*l.y))>-.866&&u.x*l.x+u.y*l.y<0}function Kv(r,e,n){const o=e?2|r:-3&r;return n?1|o:-2&o}function Jv(){const r=Math.PI/32,e=Math.tan(r),n=Pc;return n*Math.sqrt(1+2*e*e)-n}function Qv(r,e,n){const o=1<<n.z,u=Vr(n.x/o),l=Vr((n.x+1)/o),f=Fs(n.y/o),v=Fs((n.y+1)/o);return function(S,D,x,P,I=0,M){const C=[];if(!S.length||!x||!P)return C;const k=(Q,ie)=>{for(const fe of Q)C.push({polygon:fe,bounds:ie})},V=Math.ceil(Math.log2(x)),U=Math.ceil(Math.log2(P)),q=V-U,$=[];for(let Q=0;Q<Math.abs(q);Q++)$.push(q>0?0:1);for(let Q=0;Q<Math.min(V,U);Q++)$.push(0),$.push(1);let H=S;if(H=_m(H,D[0].y-I,D[1].y+I,1),H=_m(H,D[0].x-I,D[1].x+I,0),!H.length)return C;const K=[];for($.length?K.push({polygons:H,bounds:D,depth:0}):k(H,D);K.length;){const Q=K.pop(),ie=Q.depth,fe=$[ie],de=Q.bounds[0],ue=Q.bounds[1],Se=fe===0?de.x:de.y,me=fe===0?ue.x:ue.y,Ee=M?M(fe,Se,me):.5*(Se+me),ze=_m(Q.polygons,Se-I,Ee+I,fe),Ie=_m(Q.polygons,Ee-I,me+I,fe);if(ze.length){const Re=[de,new Et(fe===0?Ee:ue.x,fe===1?Ee:ue.y)];$.length>ie+1?K.push({polygons:ze,bounds:Re,depth:ie+1}):k(ze,Re)}if(Ie.length){const Re=[new Et(fe===0?Ee:de.x,fe===1?Ee:de.y),ue];$.length>ie+1?K.push({polygons:Ie,bounds:Re,depth:ie+1}):k(Ie,Re)}}return C}(r,e,Math.ceil((l-u)/11.25),Math.ceil((f-v)/11.25),1,(S,D,x)=>{if(S===0)return .5*(D+x);{const P=Fs((n.y+D/Tt)/o);return(Aa(.5*(Fs((n.y+x/Tt)/o)+P))*o-n.y)*Tt}})}function NP(r,e,n,o,u,l){const f=Math.pow(2,o.z-u.z);for(let v=0;v<n;v++){let S=r.int16[2*(v+e)+0],D=r.int16[2*(v+e)+1];S=(S+u.x*Tt)*f-o.x*Tt,D=(D+u.y*Tt)*f-o.y*Tt,l.push(new Et(S,D))}}let e1,t1;function Sf(r,e){return r.x*e.x+r.y*e.y}function i1(r,e){if(r.length===1){let n=0;const o=e[n++];let u;for(;!u||o.equals(u);)if(u=e[n++],!u)return 1/0;for(;n<e.length;n++){const l=e[n],f=r[0],v=u.sub(o),S=l.sub(o),D=f.sub(o),x=Sf(v,v),P=Sf(v,S),I=Sf(S,S),M=Sf(D,v),C=Sf(D,S),k=x*I-P*P,V=(I*M-P*C)/k,U=(x*C-P*M)/k,q=o.z*(1-V-U)+u.z*V+l.z*U;if(isFinite(q))return q}return 1/0}{let n=1/0;for(const o of e)n=Math.min(n,o.z);return n}}function n1(r,e,n,o,u,l,f,v){const S=f*u.getElevationAt(r,e,!0,!0),D=l[0]!==0,x=D?l[1]===0?f*(l[0]/7-450):f*function(P,I,M){const C=Math.floor(I[0]/8),k=Math.floor(I[1]/8),V=10*(I[0]-8*C),U=10*(I[1]-8*k),q=P.getElevationAt(C,k,!0,!0),$=P.getMeterToDEM(M),H=Math.floor(.5*(V*$-1)),K=Math.floor(.5*(U*$-1)),Q=P.tileCoordToPixel(C,k),ie=2*H+1,fe=2*K+1,de=function(Ie,Re,Ve,Ue,Fe){return[Ie.getElevationAtPixel(Re,Ve,!0),Ie.getElevationAtPixel(Re+Fe,Ve,!0),Ie.getElevationAtPixel(Re,Ve+Fe,!0),Ie.getElevationAtPixel(Re+Ue,Ve+Fe,!0)]}(P,Q.x-H,Q.y-K,ie,fe),ue=Math.abs(de[0]-de[1]),Se=Math.abs(de[2]-de[3]),me=Math.abs(de[0]-de[2])+Math.abs(de[1]-de[3]),Ee=Math.min(.25,.5*$*(ue+Se)/ie),ze=Math.min(.25,.5*$*me/fe);return q+Math.max(Ee*V,ze*U)}(u,l,v):S;return{base:S+(n===0?-1:n),top:D?Math.max(x+o,S+n+2):S+o}}Ft(vm,"FillExtrusionBucket",{omit:["layers","features"]}),Ft(Gv,"PartData"),Ft(jv,"FootprintSegment"),Ft(Zv,"BorderCentroidData"),Ft(qv,"GroundEffect");const VP=qi([{name:"a_pos_normal",components:2,type:"Int16"},{name:"a_data",components:4,type:"Uint8"},{name:"a_linesofar",components:1,type:"Float32"}],4),UP=qi([{name:"a_z_offset_width",components:2,type:"Float32"}],4),{members:jP}=VP,GP=qi([{name:"a_packed",components:4,type:"Float32"}]),{members:ZP}=GP,HP=qi([{name:"a_pattern_data",components:3,type:"Float32"}]),{members:qP}=HP;class s1{constructor(e,n){this.width=e,this.height=n,this.nextRow=0,this.image=new Ac({width:e,height:n}),this.positions={},this.uploaded=!1}getDash(e,n){const o=this.getKey(e,n);return this.positions[o]}trim(){const e=this.width,n=this.height=bo(this.nextRow);this.image.resize({width:e,height:n})}getKey(e,n){return e.join(",")+n}getDashRanges(e,n,o){const u=[];let l=e.length%2==1?-e[e.length-1]*o:0,f=e[0]*o,v=!0;u.push({left:l,right:f,isDash:v,zeroLength:e[0]===0});let S=e[0];for(let D=1;D<e.length;D++){v=!v;const x=e[D];l=S*o,S+=x,f=S*o,u.push({left:l,right:f,isDash:v,zeroLength:x===0})}return u}addRoundDash(e,n,o){const u=n/2;for(let l=-o;l<=o;l++){const f=this.width*(this.nextRow+o+l);let v=0,S=e[v];for(let D=0;D<this.width;D++){D/S.right>1&&(S=e[++v]);const x=Math.abs(D-S.left),P=Math.abs(D-S.right),I=Math.min(x,P);let M;const C=l/o*(u+1);if(S.isDash){const k=u-Math.abs(C);M=Math.sqrt(I*I+k*k)}else M=u-Math.sqrt(I*I+C*C);this.image.data[f+D]=Math.max(0,Math.min(255,M+128))}}}addRegularDash(e,n){for(let S=e.length-1;S>=0;--S){const D=e[S],x=e[S+1];D.zeroLength?e.splice(S,1):x&&x.isDash===D.isDash&&(x.left=D.left,e.splice(S,1))}const o=e[0],u=e[e.length-1];o.isDash===u.isDash&&(o.left=u.left-this.width,u.right=o.right+this.width);const l=this.width*this.nextRow;let f=0,v=e[f];for(let S=0;S<this.width;S++){S/v.right>1&&(v=e[++f]);const D=Math.abs(S-v.left),x=Math.abs(S-v.right),P=Math.min(D,x);this.image.data[l+S]=Math.max(0,Math.min(255,(v.isDash?P:-P)+n+128))}}addDash(e,n){const o=this.getKey(e,n);if(this.positions[o])return this.positions[o];const u=n==="round",l=u?7:0,f=2*l+1;if(this.nextRow+f>this.height)return mi("LineAtlas out of space"),null;e.length===0&&e.push(1);let v=0;for(let x=0;x<e.length;x++)e[x]<0&&(mi("Negative value is found in line dasharray, replacing values with 0"),e[x]=0),v+=e[x];if(v!==0){const x=this.width/v,P=this.getDashRanges(e,this.width,x);u?this.addRoundDash(P,x,l):this.addRegularDash(P,n==="square"?.5*x:0)}const S=this.nextRow+l;this.nextRow+=f;const D={tl:[S,l],br:[v,0]};return this.positions[o]=D,D}}Ft(s1,"LineAtlas");const WP=Vu.VectorTileFeature.types,$P=Math.cos(Math.PI/180*37.5),XP=Math.cos(Math.PI/180*5);class Pg{constructor(e){this.evaluationGlobals={zoom:0,lineProgress:void 0},this.zoom=e.zoom,this.evaluationGlobals.zoom=this.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(n=>n.fqid),this.index=e.index,this.projection=e.projection,this.hasPattern=!1,this.hasZOffset=!1,this.hasCrossSlope=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(n=>{this.gradients[n.id]={}}),this.layoutVertexArray=new po,this.layoutVertexArray2=new el,this.patternVertexArray=new Sa,this.indexArray=new qs,this.programConfigurations=new sl(e.layers,{zoom:e.zoom,lut:e.lut}),this.segments=new Wn,this.maxLineLength=0,this.zOffsetVertexArray=new Bl,this.stateDependentLayerIds=this.layers.filter(n=>n.isStateDependent()).map(n=>n.id),this.tessellationStep=e.tessellationStep?e.tessellationStep:Tt/64}updateFootprints(e,n){}populate(e,n,o,u){this.hasPattern=mg("line",this.layers,n);const l=this.layers[0].layout.get("line-sort-key");this.tileToMeter=s(o),this.hasZOffset=!this.layers[0].isDraped();const f=this.layers[0].layout.get("line-elevation-reference");this.hasZOffset&&f==="none"&&mi(`line-elevation-reference: ground is used for the layer ${this.layerIds[0]} because non-zero line-z-offset value was found.`);const v=this.layers[0].layout.get("line-cross-slope");this.hasCrossSlope=this.hasZOffset&&v!==void 0;const S=[];for(const{feature:I,id:M,index:C,sourceLayerIndex:k}of e){const V=this.layers[0]._featureFilter.needGeometry,U=Z(I,V);if(!this.layers[0]._featureFilter.filter(new Tn(this.zoom),U,o))continue;const q=l?l.evaluate(U,{},o):void 0,$={id:M,properties:I.properties,type:I.type,sourceLayerIndex:k,index:C,geometry:V?U.geometry:G(I,o,u),patterns:{},sortKey:q};S.push($)}l&&S.sort((I,M)=>I.sortKey-M.sortKey);const{lineAtlas:D,featureIndex:x}=n,P=this.addConstantDashes(D);for(const I of S){const{geometry:M,index:C,sourceLayerIndex:k}=I;if(P&&this.addFeatureDashes(I,D),this.hasPattern){const V=_g("line",this.layers,I,this.zoom,n);this.patternFeatures.push(V)}else this.addFeature(I,M,C,o,D.positions,n.availableImages,n.brightness);x.insert(e[C].feature,M,C,k,this.index)}}addConstantDashes(e){let n=!1;for(const o of this.layers){const u=o.paint.get("line-dasharray").value,l=o.layout.get("line-cap").value;if(u.kind!=="constant"||l.kind!=="constant")n=!0;else{const f=l.value,v=u.value;if(!v)continue;e.addDash(v,f)}}return n}addFeatureDashes(e,n){const o=this.zoom;for(const u of this.layers){const l=u.paint.get("line-dasharray").value,f=u.layout.get("line-cap").value;if(l.kind==="constant"&&f.kind==="constant")continue;let v,S;if(l.kind==="constant"){if(v=l.value,!v)continue}else v=l.evaluate({zoom:o},e);S=f.kind==="constant"?f.value:f.evaluate({zoom:o},e),n.addDash(v,S),e.patterns[u.id]=n.getKey(v,S)}}update(e,n,o,u,l,f,v){this.programConfigurations.updatePaintArrays(e,n,l,o,u,f,v)}addFeatures(e,n,o,u,l,f){for(const v of this.patternFeatures)this.addFeature(v,v.geometry,v.index,n,o,u,f)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=e.createVertexBuffer(this.layoutVertexArray2,ZP)),this.patternVertexArray.length!==0&&(this.patternVertexBuffer=e.createVertexBuffer(this.patternVertexArray,qP)),!this.zOffsetVertexBuffer&&this.zOffsetVertexArray.length>0&&(this.zOffsetVertexBuffer=e.createVertexBuffer(this.zOffsetVertexArray,UP.members,!0)),this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,jP),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.zOffsetVertexBuffer&&this.zOffsetVertexBuffer.destroy(),this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(e){if(e.properties&&e.properties.hasOwnProperty("mapbox_clip_start")&&e.properties.hasOwnProperty("mapbox_clip_end"))return{start:+e.properties.mapbox_clip_start,end:+e.properties.mapbox_clip_end}}addFeature(e,n,o,u,l,f,v){const S=this.layers[0].layout,D=S.get("line-join").evaluate(e,{}),x=S.get("line-cap").evaluate(e,{}),P=S.get("line-miter-limit"),I=S.get("line-round-limit");this.lineClips=this.lineFeatureClips(e),this.lineFeature=e,this.zOffsetValue=S.get("line-z-offset").value;const M=this.layers[0].paint.get("line-width").value;M.kind!=="constant"&&M.isLineProgressConstant===!1&&(this.variableWidthValue=M);for(const C of n)this.addLine(C,e,u,D,x,P,I);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,o,l,f,u,v)}addLine(e,n,o,u,l,f,v){this.distance=0,this.prevDistance=0,this.scaledDistance=0,this.totalDistance=0,this.totalFeatureLength=0,this.lineSoFar=0,this.currentVertex=void 0;const S=u==="none";if(this.patternJoinNone=this.hasPattern&&S,this.segmentStart=0,this.segmentStartf32=0,this.segmentPoints=[],this.lineClips){this.lineClipsArray.push(this.lineClips);for(let $=0;$<e.length-1;$++)this.totalDistance+=e[$].dist(e[$+1]);this.totalFeatureLength=this.totalDistance/(this.lineClips.end-this.lineClips.start),this.updateScaledDistance(),this.maxLineLength=Math.max(this.maxLineLength,this.totalDistance)}const D=WP[n.type]==="Polygon";let x=e.length;for(;x>=2&&e[x-1].equals(e[x-2]);)x--;let P=0;for(;P<x-1&&e[P].equals(e[P+1]);)P++;if(x<(D?3:2))return;u==="bevel"&&(f=1.05);const I=this.segments.prepareSegment(10*x,this.layoutVertexArray,this.indexArray);let M,C,k,V,U,q;this.e1=this.e2=-1,D&&(M=e[x-2],U=e[P].sub(M)._unit()._perp());for(let $=P;$<x;$++){if(k=$===x-1?D?e[P+1]:void 0:e[$+1],k&&e[$].equals(k))continue;U&&(V=U),M&&(C=M),M=e[$],q=this.evaluateLineProgressFeatures(C?C.dist(M):0),U=k?k.sub(M)._unit()._perp():V,V=V||U;const H=C&&k;let K=H?u:D||S?"butt":l;const Q=V.x*U.x+V.y*U.y;if(S){const ze=function(Ie){if(Ie.patternJoinNone){const Re=Ie.segmentPoints.length/2,Ve=Ie.lineSoFar-Ie.segmentStart;for(let Ue=0;Ue<Re;++Ue){const Fe=Ie.segmentPoints[2*Ue+1],et=Math.round(Ie.segmentPoints[2*Ue])+.5+.25*Fe;Ie.patternVertexArray.emplaceBack(et,Ve,Ie.segmentStart),Ie.patternVertexArray.emplaceBack(et,Ve,Ie.segmentStart)}Ie.segmentPoints.length=0}Ie.e1=Ie.e2=-1};if(H&&Q<XP){this.updateDistance(C,M),this.addCurrentVertex(M,V,1,1,I,q),ze(this),this.addCurrentVertex(M,U,-1,-1,I,q);continue}if(C){if(!k){this.updateDistance(C,M),this.addCurrentVertex(M,V,1,1,I,q),ze(this);continue}K="miter"}}let ie=V.add(U);ie.x===0&&ie.y===0||ie._unit();const fe=ie.x*U.x+ie.y*U.y,de=fe!==0?1/fe:1/0,ue=2*Math.sqrt(2-2*fe),Se=fe<$P&&C&&k,me=V.x*U.y-V.y*U.x>0,Ee=this.overscaling<=16?15*Tt/(512*this.overscaling):0;if(H&&K==="round"){if(de<v)K="miter";else if(de<=2){const ze=Ag(M,-10,Tt+10);K=this.hasZOffset&&(ze||this.hasCrossSlope)?"miter":"fakeround"}}if(K==="miter"&&de>f&&(K="bevel"),K==="bevel"&&(de>2&&(K="flipbevel"),de<f&&(K="miter")),C&&!(K==="miter"&&Se)&&this.updateDistance(C,M),K==="miter")if(Se){const ze=M.dist(C);if(ze>2*Ee){const Re=M.sub(M.sub(C)._mult(Ee/ze)._round());this.updateDistance(C,Re),this.addCurrentVertex(Re,V,0,0,I,q),C=Re}this.updateDistance(C,M),ie._mult(de),this.addCurrentVertex(M,ie,0,0,I,q);const Ie=M.dist(k);if(Ie>2*Ee){const Re=M.add(k.sub(M)._mult(Ee/Ie)._round());this.updateDistance(M,Re),this.addCurrentVertex(Re,U,0,0,I,q),M=Re}}else ie._mult(de),this.addCurrentVertex(M,ie,0,0,I,q);else if(K==="flipbevel"){if(de>100)ie=U.mult(-1);else{const ze=de*V.add(U).mag()/V.sub(U).mag();ie._perp()._mult(ze*(me?-1:1))}this.addCurrentVertex(M,ie,0,0,I,q),this.addCurrentVertex(M,ie.mult(-1),0,0,I,q)}else if(K==="bevel"||K==="fakeround"){q!=null&&C&&this.addCurrentVertex(M,V,-1,-1,I,q);const ze=M.dist(C)<=2*Ee&&K!=="bevel",Ie=ie.mult(me?1:-1);Ie._mult(de);const Re=U.mult(me?-1:1),Ve=V.mult(me?-1:1),Ue=this.evaluateLineProgressFeatures(this.distance);if(q==null&&(this.addHalfVertex(M,Ie.x,Ie.y,!1,!me,0,I,Ue),ze||this.addHalfVertex(M,Ie.x+2*Ve.x,Ie.y+2*Ve.y,!1,me,0,I,Ue)),K==="fakeround"){const Fe=Math.round(180*ue/Math.PI/20);this.addHalfVertex(M,Ve.x,Ve.y,!1,me,0,I,Ue);for(let et=0;et<Fe;et++){let dt=et/Fe;if(dt!==.5){const Mt=dt-.5;dt+=dt*Mt*(dt-1)*((1.0904+Q*(Q*(3.55645-1.43519*Q)-3.2452))*Mt*Mt+(.848013+Q*(.215638*Q-1.06021)))}const tt=Re.sub(Ve)._mult(dt)._add(Ve)._unit();this.addHalfVertex(M,tt.x,tt.y,!1,me,0,I,Ue)}this.addHalfVertex(M,Re.x,Re.y,!1,me,0,I,Ue)}ze||q!=null||this.addHalfVertex(M,Ie.x+2*Re.x,Ie.y+2*Re.y,!1,me,0,I,Ue),q!=null&&k&&this.addCurrentVertex(M,U,1,1,I,q)}else K==="butt"?this.addCurrentVertex(M,ie,0,0,I,q):K==="square"?(C||this.addCurrentVertex(M,ie,-1,-1,I,q),this.addCurrentVertex(M,ie,0,0,I,q),C&&this.addCurrentVertex(M,ie,1,1,I,q)):K==="round"&&(C&&(this.addCurrentVertex(M,V,0,0,I,q),this.addCurrentVertex(M,V,1,1,I,q,!0)),k&&(this.addCurrentVertex(M,U,-1,-1,I,q,!0),this.addCurrentVertex(M,U,0,0,I,q)))}}addVerticesTo(e,n,o,u,l,f,v,S,D,x){const P=(n.w-e.w)/this.tessellationStep|0;let I=0;const M=this.scaledDistance;if(P>1){this.lineSoFar=e.w;const k=(n.x-e.x)/P,V=(n.y-e.y)/P,U=(n.z-e.z)/P,q=(n.w-e.w)/P;for(let $=1;$<P;++$){e.x+=k,e.y+=V,e.z+=U,this.lineSoFar+=q,I+=q;const H=this.evaluateLineProgressFeatures(this.prevDistance+I);this.scaledDistance=(this.prevDistance+I)/this.totalDistance,this.addHalfVertex(e,o,u,x,!1,v,D,H),this.addHalfVertex(e,l,f,x,!0,-S,D,H)}}this.lineSoFar=n.w,this.scaledDistance=M;const C=this.evaluateLineProgressFeatures(this.distance);this.addHalfVertex(n,o,u,x,!1,v,D,C),this.addHalfVertex(n,l,f,x,!0,-S,D,C)}evaluateLineProgressFeatures(e){if(!this.variableWidthValue&&!this.hasZOffset)return null;this.evaluationGlobals.lineProgress=0,this.lineClips?this.evaluationGlobals.lineProgress=Math.min(1,(this.totalFeatureLength*this.lineClips.start+e)/this.totalFeatureLength):mi(`line-progress evaluation for ${this.layerIds[0]} requires enabling 'lineMetrics' for the source.`);let n=0;return this.variableWidthValue&&this.variableWidthValue.kind!=="constant"&&(n=this.variableWidthValue.evaluate(this.evaluationGlobals,this.lineFeature)||0),this.hasZOffset?this.zOffsetValue.kind==="constant"?{zOffset:this.zOffsetValue.value,variableWidth:n}:{zOffset:this.zOffsetValue.evaluate(this.evaluationGlobals,this.lineFeature)||0,variableWidth:n}:{zOffset:0,variableWidth:n}}addCurrentVertex(e,n,o,u,l,f,v=!1){const S=n.x+n.y*o,D=n.y-n.x*o,x=n.y*u-n.x,P=-n.y-n.x*u;if(f!=null){const I=this.hasZOffset,M=-10,C=Tt+10,k=f.zOffset,V=new Iv(e.x,e.y,k,this.lineSoFar),U=!!I&&Ag(e,M,C),q=this.lineSoFar,$=this.distance;if(this.currentVertex)if(U){const H=this.currentVertexIsOutside,K=this.currentVertex,Q=new Iv(e.x,e.y,k,this.lineSoFar);if(zv(K,Q,M,C),!Ag(Q,M,C)){if(H){this.e1=this.e2=-1,this.distance-=K.dist(V),this.lineSoFar=K.w;const ie=this.evaluateLineProgressFeatures(K.w-this.totalFeatureLength*(this.lineClips?this.lineClips.start:0));this.addHalfVertex(K,S,D,v,!1,o,l,ie),this.addHalfVertex(K,x,P,v,!0,-u,l,ie),this.prevDistance=this.distance}this.distance=this.prevDistance+K.dist(Q),this.scaledDistance=this.distance/this.totalDistance,this.addVerticesTo(K,Q,S,D,x,P,o,u,l,v),this.distance=$,this.scaledDistance=this.distance/this.totalDistance}}else{const H=this.currentVertex;if(this.currentVertexIsOutside){zv(H,V,M,C),this.e1=this.e2=-1,this.distance-=H.dist(V),this.scaledDistance=this.distance/this.totalDistance,this.lineSoFar=H.w;const K=this.evaluateLineProgressFeatures(H.w-this.totalFeatureLength*(this.lineClips?this.lineClips.start:0));this.addHalfVertex(H,S,D,v,!1,o,l,K),this.addHalfVertex(H,x,P,v,!0,-u,l,K),this.prevDistance=this.distance,this.distance=$,this.scaledDistance=this.distance/this.totalDistance}this.addVerticesTo(H,V,S,D,x,P,o,u,l,v)}else U||(this.addHalfVertex(e,S,D,v,!1,o,l,f),this.addHalfVertex(e,x,P,v,!0,-u,l,f));this.currentVertex=V,this.currentVertexIsOutside=U,this.lineSoFar=q}else this.addHalfVertex(e,S,D,v,!1,o,l,f),this.addHalfVertex(e,x,P,v,!0,-u,l,f)}addHalfVertex({x:e,y:n},o,u,l,f,v,S,D){this.patternJoinNone&&(this.segmentPoints.length===0&&(this.segmentStart=this.lineSoFar,this.segmentStartf32=Math.fround(this.lineSoFar)),f||this.segmentPoints.push(this.lineSoFar-this.segmentStart,v)),this.layoutVertexArray.emplaceBack((e<<1)+(l?1:0),(n<<1)+(f?1:0),Math.round(63*o)+128,Math.round(63*u)+128,1+(v===0?0:v<0?-1:1),0,this.lineSoFar-this.segmentStartf32),this.lineClips&&this.layoutVertexArray2.emplaceBack(this.scaledDistance,this.lineClipsArray.length,this.lineClips.start,this.lineClips.end);const x=S.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,x),S.primitiveLength++),f?this.e2=x:this.e1=x,D!=null&&this.zOffsetVertexArray.emplaceBack(D.zOffset,D.variableWidth)}updateScaledDistance(){this.lineClips?(this.scaledDistance=this.distance/this.totalDistance,this.lineSoFar=this.totalFeatureLength*this.lineClips.start+this.distance):this.lineSoFar=this.distance}updateDistance(e,n){this.prevDistance=this.distance,this.distance+=e.dist(n),this.updateScaledDistance()}}function Ag(r,e,n){return r.x<e||r.x>n||r.y<e||r.y>n}let r1,o1;function a1(r,e,n){return e*(Tt/(r.tileSize*Math.pow(2,n-r.tileID.overscaledZ)))}Ft(Pg,"LineBucket",{omit:["layers","patternFeatures","currentVertex","currentVertexIsOutside"]});const l1=(r,e,n)=>(1-n)*r+n*e;function c1(r,e){return 1/a1(r,1,e.tileZoom)}function h1(r,e,n,o){return r.translatePosMatrix(o||e.tileID.projMatrix,e,n.paint.get("line-translate"),n.paint.get("line-translate-anchor"))}const u1=r=>{const e=[];d1(r)&&e.push("RENDER_LINE_DASH"),r.paint.get("line-gradient")&&e.push("RENDER_LINE_GRADIENT");const n=r.paint.get("line-trim-offset");n[0]===0&&n[1]===0||e.push("RENDER_LINE_TRIM_OFFSET"),r.paint.get("line-border-width").constantOr(1)!==0&&e.push("RENDER_LINE_BORDER");const o=r.layout.get("line-join").constantOr("miter")==="none",u=!!r.paint.get("line-pattern").constantOr(1);return o&&u&&e.push("LINE_JOIN_NONE"),e};function d1(r){const e=r.paint.get("line-dasharray").value;return e.value||e.kind!=="constant"}let Cg;const f1=()=>Cg||(Cg={layout:r1||(r1=new Bn({"line-cap":new Dt($e.layout_line["line-cap"]),"line-join":new Dt($e.layout_line["line-join"]),"line-miter-limit":new yt($e.layout_line["line-miter-limit"]),"line-round-limit":new yt($e.layout_line["line-round-limit"]),"line-sort-key":new Dt($e.layout_line["line-sort-key"]),"line-z-offset":new Dt($e.layout_line["line-z-offset"]),"line-elevation-reference":new yt($e.layout_line["line-elevation-reference"]),"line-cross-slope":new yt($e.layout_line["line-cross-slope"]),visibility:new yt($e.layout_line.visibility),"line-width-unit":new yt($e.layout_line["line-width-unit"])})),paint:o1||(o1=new Bn({"line-opacity":new Dt($e.paint_line["line-opacity"]),"line-color":new Dt($e.paint_line["line-color"]),"line-translate":new yt($e.paint_line["line-translate"]),"line-translate-anchor":new yt($e.paint_line["line-translate-anchor"]),"line-width":new Dt($e.paint_line["line-width"]),"line-gap-width":new Dt($e.paint_line["line-gap-width"]),"line-offset":new Dt($e.paint_line["line-offset"]),"line-blur":new Dt($e.paint_line["line-blur"]),"line-dasharray":new Dt($e.paint_line["line-dasharray"]),"line-pattern":new Dt($e.paint_line["line-pattern"]),"line-gradient":new Ja($e.paint_line["line-gradient"]),"line-trim-offset":new yt($e.paint_line["line-trim-offset"]),"line-trim-fade-range":new yt($e.paint_line["line-trim-fade-range"]),"line-trim-color":new yt($e.paint_line["line-trim-color"]),"line-emissive-strength":new yt($e.paint_line["line-emissive-strength"]),"line-border-width":new Dt($e.paint_line["line-border-width"]),"line-border-color":new Dt($e.paint_line["line-border-color"]),"line-occlusion-opacity":new yt($e.paint_line["line-occlusion-opacity"]),"line-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"}),"line-gradient-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"}),"line-trim-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"}),"line-border-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"})}))},Cg);class YP extends Dt{possiblyEvaluate(e,n){return n=new Tn(Math.floor(n.zoom),{now:n.now,fadeDuration:n.fadeDuration,transition:n.transition}),super.possiblyEvaluate(e,n)}evaluate(e,n,o,u){return n=An({},n,{zoom:Math.floor(n.zoom)}),super.evaluate(e,n,o,u)}}let Ef;function p1(r,e){return e>0?e+2*r:r}const KP=qi([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_tex_size",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),JP=qi([{name:"a_globe_anchor",components:3,type:"Int16"},{name:"a_globe_normal",components:3,type:"Float32"}],4),QP=qi([{name:"a_projected_pos",components:4,type:"Float32"}],4);qi([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);const eA=qi([{name:"a_auto_z_offset",components:1,type:"Float32"}],4),tA=qi([{name:"a_texb",components:2,type:"Uint16"}]),iA=qi([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_elevation_from_sea",components:2,type:"Float32"}]),nA=qi([{name:"a_size_scale",components:1,type:"Float32"},{name:"a_padding",components:2,type:"Float32"},{name:"a_auto_z_offset",components:1,type:"Float32"}]);qi([{type:"Int16",name:"projectedAnchorX"},{type:"Int16",name:"projectedAnchorY"},{type:"Int16",name:"projectedAnchorZ"},{type:"Int16",name:"tileAnchorX"},{type:"Int16",name:"tileAnchorY"},{type:"Float32",name:"x1"},{type:"Float32",name:"y1"},{type:"Float32",name:"x2"},{type:"Float32",name:"y2"},{type:"Int16",name:"padding"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);const m1=qi([{name:"a_pos",components:3,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),sA=qi([{name:"a_pos_2f",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);qi([{name:"triangle",components:3,type:"Uint16"}]),qi([{type:"Int16",name:"projectedAnchorX"},{type:"Int16",name:"projectedAnchorY"},{type:"Int16",name:"projectedAnchorZ"},{type:"Float32",name:"tileAnchorX"},{type:"Float32",name:"tileAnchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"},{type:"Uint8",name:"flipState"}]),qi([{type:"Float32",name:"tileAnchorX"},{type:"Float32",name:"tileAnchorY"},{type:"Int16",name:"projectedAnchorX"},{type:"Int16",name:"projectedAnchorY"},{type:"Int16",name:"projectedAnchorZ"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",components:2,name:"textOffset"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Float32",name:"zOffset"},{type:"Uint8",name:"hasIconTextFit"}]),qi([{type:"Float32",name:"offsetX"}]),qi([{type:"Int16",name:"x"},{type:"Int16",name:"y"}]);var ir=24;const Ia=128;function bm(r,e,n,o,u){if(r.kind==="camera")return r.maxSize;if(r.kind==="composite"){const l=e.possiblyEvaluate(new Tn(r.maxZoom),n).evaluate(u,{},n),f=e.possiblyEvaluate(new Tn(r.minZoom),n).evaluate(u,{},n);return Math.max(l,f)}return e.possiblyEvaluate(new Tn(o)).evaluate(u,{},n)}function Ig(r,e){const{expression:n}=e;if(n.kind==="constant")return{kind:"constant",layoutSize:n.evaluate(new Tn(r+1))};if(n.kind==="source")return{kind:"source"};{const{zoomStops:o,interpolationType:u}=n;let l=0;for(;l<o.length&&o[l]<=r;)l++;l=Math.max(0,l-1);let f=l;for(;f<o.length&&o[f]<r+1;)f++;f=Math.min(o.length-1,f);const v=o[l],S=o[f];return n.kind==="composite"?{kind:"composite",minZoom:v,maxZoom:S,interpolationType:u}:{kind:"camera",minZoom:v,maxZoom:S,minSize:n.evaluate(new Tn(v)),maxSize:n.evaluate(new Tn(S)),interpolationType:u}}}function wm(r,{uSize:e,uSizeT:n},{lowerSize:o,upperSize:u}){return r.kind==="source"?o/Ia:r.kind==="composite"?ei(o/Ia,u/Ia,n):e}function Uu(r,e,n=1){let o=0,u=0;if(r.kind==="constant")u=r.layoutSize*n;else if(r.kind!=="source"){const{interpolationType:l,minZoom:f,maxZoom:v}=r,S=l?si(X.interpolationFactor(l,e,f,v),0,1):0;r.kind==="camera"?u=ei(r.minSize,r.maxSize,S)*n:o=S*n}return{uSizeT:o,uSize:u}}var rA=Object.freeze({__proto__:null,SIZE_PACK_FACTOR:Ia,evaluateSizeForFeature:wm,evaluateSizeForZoom:Uu,getRasterizedIconSize:bm,getSizeData:Ig});function oA(r,e,n){return r.sections.forEach(o=>{o.text=function(u,l,f){const v=l.layout.get("text-transform").evaluate(f,{});return v==="uppercase"?u=u.toLocaleUpperCase():v==="lowercase"&&(u=u.toLocaleLowerCase()),fo.applyArabicShaping&&(u=fo.applyArabicShaping(u)),u}(o.text,e,n)}),r}const Pf={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂","←":"↑","→":"↓"};function aA(r){return r==="︶"||r==="﹈"||r==="︸"||r==="﹄"||r==="﹂"||r==="︾"||r==="︼"||r==="︺"||r==="︘"||r==="﹀"||r==="︐"||r==="︓"||r==="︔"||r==="`"||r===" ̄"||r==="︑"||r==="︒"}function lA(r){return r==="︵"||r==="﹇"||r==="︷"||r==="﹃"||r==="﹁"||r==="︽"||r==="︻"||r==="︹"||r==="︗"||r==="︿"}var _1,Lg,g1,zg={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */function cA(){return _1||(_1=1,zg.read=function(r,e,n,o,u){var l,f,v=8*u-o-1,S=(1<<v)-1,D=S>>1,x=-7,P=n?u-1:0,I=n?-1:1,M=r[e+P];for(P+=I,l=M&(1<<-x)-1,M>>=-x,x+=v;x>0;l=256*l+r[e+P],P+=I,x-=8);for(f=l&(1<<-x)-1,l>>=-x,x+=o;x>0;f=256*f+r[e+P],P+=I,x-=8);if(l===0)l=1-D;else{if(l===S)return f?NaN:1/0*(M?-1:1);f+=Math.pow(2,o),l-=D}return(M?-1:1)*f*Math.pow(2,l-o)},zg.write=function(r,e,n,o,u,l){var f,v,S,D=8*l-u-1,x=(1<<D)-1,P=x>>1,I=u===23?Math.pow(2,-24)-Math.pow(2,-77):0,M=o?0:l-1,C=o?1:-1,k=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(v=isNaN(e)?1:0,f=x):(f=Math.floor(Math.log(e)/Math.LN2),e*(S=Math.pow(2,-f))<1&&(f--,S*=2),(e+=f+P>=1?I/S:I*Math.pow(2,1-P))*S>=2&&(f++,S/=2),f+P>=x?(v=0,f=x):f+P>=1?(v=(e*S-1)*Math.pow(2,u),f+=P):(v=e*Math.pow(2,P-1)*Math.pow(2,u),f=0));u>=8;r[n+M]=255&v,M+=C,v/=256,u-=8);for(f=f<<u|v,D+=u;D>0;r[n+M]=255&f,M+=C,f/=256,D-=8);r[n+M-C]|=128*k}),zg}function y1(){if(g1)return Lg;g1=1,Lg=e;var r=cA();function e(H){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(H)?H:new Uint8Array(H||0),this.pos=0,this.type=0,this.length=this.buf.length}e.Varint=0,e.Fixed64=1,e.Bytes=2,e.Fixed32=5;var n=4294967296,o=1/n,u=typeof TextDecoder>"u"?null:new TextDecoder("utf8");function l(H){return H.type===e.Bytes?H.readVarint()+H.pos:H.pos+1}function f(H,K,Q){return Q?4294967296*K+(H>>>0):4294967296*(K>>>0)+(H>>>0)}function v(H,K,Q){var ie=K<=16383?1:K<=2097151?2:K<=268435455?3:Math.floor(Math.log(K)/(7*Math.LN2));Q.realloc(ie);for(var fe=Q.pos-1;fe>=H;fe--)Q.buf[fe+ie]=Q.buf[fe]}function S(H,K){for(var Q=0;Q<H.length;Q++)K.writeVarint(H[Q])}function D(H,K){for(var Q=0;Q<H.length;Q++)K.writeSVarint(H[Q])}function x(H,K){for(var Q=0;Q<H.length;Q++)K.writeFloat(H[Q])}function P(H,K){for(var Q=0;Q<H.length;Q++)K.writeDouble(H[Q])}function I(H,K){for(var Q=0;Q<H.length;Q++)K.writeBoolean(H[Q])}function M(H,K){for(var Q=0;Q<H.length;Q++)K.writeFixed32(H[Q])}function C(H,K){for(var Q=0;Q<H.length;Q++)K.writeSFixed32(H[Q])}function k(H,K){for(var Q=0;Q<H.length;Q++)K.writeFixed64(H[Q])}function V(H,K){for(var Q=0;Q<H.length;Q++)K.writeSFixed64(H[Q])}function U(H,K){return(H[K]|H[K+1]<<8|H[K+2]<<16)+16777216*H[K+3]}function q(H,K,Q){H[Q]=K,H[Q+1]=K>>>8,H[Q+2]=K>>>16,H[Q+3]=K>>>24}function $(H,K){return(H[K]|H[K+1]<<8|H[K+2]<<16)+(H[K+3]<<24)}return e.prototype={destroy:function(){this.buf=null},readFields:function(H,K,Q){for(Q=Q||this.length;this.pos<Q;){var ie=this.readVarint(),fe=ie>>3,de=this.pos;this.type=7&ie,H(fe,K,this),this.pos===de&&this.skip(ie)}return K},readMessage:function(H,K){return this.readFields(H,K,this.readVarint()+this.pos)},readFixed32:function(){var H=U(this.buf,this.pos);return this.pos+=4,H},readSFixed32:function(){var H=$(this.buf,this.pos);return this.pos+=4,H},readFixed64:function(){var H=U(this.buf,this.pos)+U(this.buf,this.pos+4)*n;return this.pos+=8,H},readSFixed64:function(){var H=U(this.buf,this.pos)+$(this.buf,this.pos+4)*n;return this.pos+=8,H},readFloat:function(){var H=r.read(this.buf,this.pos,!0,23,4);return this.pos+=4,H},readDouble:function(){var H=r.read(this.buf,this.pos,!0,52,8);return this.pos+=8,H},readVarint:function(H){var K,Q,ie=this.buf;return K=127&(Q=ie[this.pos++]),Q<128?K:(K|=(127&(Q=ie[this.pos++]))<<7,Q<128?K:(K|=(127&(Q=ie[this.pos++]))<<14,Q<128?K:(K|=(127&(Q=ie[this.pos++]))<<21,Q<128?K:function(fe,de,ue){var Se,me,Ee=ue.buf;if(Se=(112&(me=Ee[ue.pos++]))>>4,me<128||(Se|=(127&(me=Ee[ue.pos++]))<<3,me<128)||(Se|=(127&(me=Ee[ue.pos++]))<<10,me<128)||(Se|=(127&(me=Ee[ue.pos++]))<<17,me<128)||(Se|=(127&(me=Ee[ue.pos++]))<<24,me<128)||(Se|=(1&(me=Ee[ue.pos++]))<<31,me<128))return f(fe,Se,de);throw new Error("Expected varint not more than 10 bytes")}(K|=(15&(Q=ie[this.pos]))<<28,H,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var H=this.readVarint();return H%2==1?(H+1)/-2:H/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var H=this.readVarint()+this.pos,K=this.pos;return this.pos=H,H-K>=12&&u?function(Q,ie,fe){return u.decode(Q.subarray(ie,fe))}(this.buf,K,H):function(Q,ie,fe){for(var de="",ue=ie;ue<fe;){var Se,me,Ee,ze=Q[ue],Ie=null,Re=ze>239?4:ze>223?3:ze>191?2:1;if(ue+Re>fe)break;Re===1?ze<128&&(Ie=ze):Re===2?(192&(Se=Q[ue+1]))==128&&(Ie=(31&ze)<<6|63&Se)<=127&&(Ie=null):Re===3?(me=Q[ue+2],(192&(Se=Q[ue+1]))==128&&(192&me)==128&&((Ie=(15&ze)<<12|(63&Se)<<6|63&me)<=2047||Ie>=55296&&Ie<=57343)&&(Ie=null)):Re===4&&(me=Q[ue+2],Ee=Q[ue+3],(192&(Se=Q[ue+1]))==128&&(192&me)==128&&(192&Ee)==128&&((Ie=(15&ze)<<18|(63&Se)<<12|(63&me)<<6|63&Ee)<=65535||Ie>=1114112)&&(Ie=null)),Ie===null?(Ie=65533,Re=1):Ie>65535&&(Ie-=65536,de+=String.fromCharCode(Ie>>>10&1023|55296),Ie=56320|1023&Ie),de+=String.fromCharCode(Ie),ue+=Re}return de}(this.buf,K,H)},readBytes:function(){var H=this.readVarint()+this.pos,K=this.buf.subarray(this.pos,H);return this.pos=H,K},readPackedVarint:function(H,K){if(this.type!==e.Bytes)return H.push(this.readVarint(K));var Q=l(this);for(H=H||[];this.pos<Q;)H.push(this.readVarint(K));return H},readPackedSVarint:function(H){if(this.type!==e.Bytes)return H.push(this.readSVarint());var K=l(this);for(H=H||[];this.pos<K;)H.push(this.readSVarint());return H},readPackedBoolean:function(H){if(this.type!==e.Bytes)return H.push(this.readBoolean());var K=l(this);for(H=H||[];this.pos<K;)H.push(this.readBoolean());return H},readPackedFloat:function(H){if(this.type!==e.Bytes)return H.push(this.readFloat());var K=l(this);for(H=H||[];this.pos<K;)H.push(this.readFloat());return H},readPackedDouble:function(H){if(this.type!==e.Bytes)return H.push(this.readDouble());var K=l(this);for(H=H||[];this.pos<K;)H.push(this.readDouble());return H},readPackedFixed32:function(H){if(this.type!==e.Bytes)return H.push(this.readFixed32());var K=l(this);for(H=H||[];this.pos<K;)H.push(this.readFixed32());return H},readPackedSFixed32:function(H){if(this.type!==e.Bytes)return H.push(this.readSFixed32());var K=l(this);for(H=H||[];this.pos<K;)H.push(this.readSFixed32());return H},readPackedFixed64:function(H){if(this.type!==e.Bytes)return H.push(this.readFixed64());var K=l(this);for(H=H||[];this.pos<K;)H.push(this.readFixed64());return H},readPackedSFixed64:function(H){if(this.type!==e.Bytes)return H.push(this.readSFixed64());var K=l(this);for(H=H||[];this.pos<K;)H.push(this.readSFixed64());return H},skip:function(H){var K=7&H;if(K===e.Varint)for(;this.buf[this.pos++]>127;);else if(K===e.Bytes)this.pos=this.readVarint()+this.pos;else if(K===e.Fixed32)this.pos+=4;else{if(K!==e.Fixed64)throw new Error("Unimplemented type: "+K);this.pos+=8}},writeTag:function(H,K){this.writeVarint(H<<3|K)},realloc:function(H){for(var K=this.length||16;K<this.pos+H;)K*=2;if(K!==this.length){var Q=new Uint8Array(K);Q.set(this.buf),this.buf=Q,this.length=K}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(H){this.realloc(4),q(this.buf,H,this.pos),this.pos+=4},writeSFixed32:function(H){this.realloc(4),q(this.buf,H,this.pos),this.pos+=4},writeFixed64:function(H){this.realloc(8),q(this.buf,-1&H,this.pos),q(this.buf,Math.floor(H*o),this.pos+4),this.pos+=8},writeSFixed64:function(H){this.realloc(8),q(this.buf,-1&H,this.pos),q(this.buf,Math.floor(H*o),this.pos+4),this.pos+=8},writeVarint:function(H){(H=+H||0)>268435455||H<0?function(K,Q){var ie,fe;if(K>=0?(ie=K%4294967296|0,fe=K/4294967296|0):(fe=~(-K/4294967296),4294967295^(ie=~(-K%4294967296))?ie=ie+1|0:(ie=0,fe=fe+1|0)),K>=18446744073709552e3||K<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");Q.realloc(10),function(de,ue,Se){Se.buf[Se.pos++]=127&de|128,de>>>=7,Se.buf[Se.pos++]=127&de|128,de>>>=7,Se.buf[Se.pos++]=127&de|128,de>>>=7,Se.buf[Se.pos++]=127&de|128,Se.buf[Se.pos]=127&(de>>>=7)}(ie,0,Q),function(de,ue){var Se=(7&de)<<4;ue.buf[ue.pos++]|=Se|((de>>>=3)?128:0),de&&(ue.buf[ue.pos++]=127&de|((de>>>=7)?128:0),de&&(ue.buf[ue.pos++]=127&de|((de>>>=7)?128:0),de&&(ue.buf[ue.pos++]=127&de|((de>>>=7)?128:0),de&&(ue.buf[ue.pos++]=127&de|((de>>>=7)?128:0),de&&(ue.buf[ue.pos++]=127&de)))))}(fe,Q)}(H,this):(this.realloc(4),this.buf[this.pos++]=127&H|(H>127?128:0),H<=127||(this.buf[this.pos++]=127&(H>>>=7)|(H>127?128:0),H<=127||(this.buf[this.pos++]=127&(H>>>=7)|(H>127?128:0),H<=127||(this.buf[this.pos++]=H>>>7&127))))},writeSVarint:function(H){this.writeVarint(H<0?2*-H-1:2*H)},writeBoolean:function(H){this.writeVarint(!!H)},writeString:function(H){H=String(H),this.realloc(4*H.length),this.pos++;var K=this.pos;this.pos=function(ie,fe,de){for(var ue,Se,me=0;me<fe.length;me++){if((ue=fe.charCodeAt(me))>55295&&ue<57344){if(!Se){ue>56319||me+1===fe.length?(ie[de++]=239,ie[de++]=191,ie[de++]=189):Se=ue;continue}if(ue<56320){ie[de++]=239,ie[de++]=191,ie[de++]=189,Se=ue;continue}ue=Se-55296<<10|ue-56320|65536,Se=null}else Se&&(ie[de++]=239,ie[de++]=191,ie[de++]=189,Se=null);ue<128?ie[de++]=ue:(ue<2048?ie[de++]=ue>>6|192:(ue<65536?ie[de++]=ue>>12|224:(ie[de++]=ue>>18|240,ie[de++]=ue>>12&63|128),ie[de++]=ue>>6&63|128),ie[de++]=63&ue|128)}return de}(this.buf,H,this.pos);var Q=this.pos-K;Q>=128&&v(K,Q,this),this.pos=K-1,this.writeVarint(Q),this.pos+=Q},writeFloat:function(H){this.realloc(4),r.write(this.buf,H,this.pos,!0,23,4),this.pos+=4},writeDouble:function(H){this.realloc(8),r.write(this.buf,H,this.pos,!0,52,8),this.pos+=8},writeBytes:function(H){var K=H.length;this.writeVarint(K),this.realloc(K);for(var Q=0;Q<K;Q++)this.buf[this.pos++]=H[Q]},writeRawMessage:function(H,K){this.pos++;var Q=this.pos;H(K,this);var ie=this.pos-Q;ie>=128&&v(Q,ie,this),this.pos=Q-1,this.writeVarint(ie),this.pos+=ie},writeMessage:function(H,K,Q){this.writeTag(H,e.Bytes),this.writeRawMessage(K,Q)},writePackedVarint:function(H,K){K.length&&this.writeMessage(H,S,K)},writePackedSVarint:function(H,K){K.length&&this.writeMessage(H,D,K)},writePackedBoolean:function(H,K){K.length&&this.writeMessage(H,I,K)},writePackedFloat:function(H,K){K.length&&this.writeMessage(H,x,K)},writePackedDouble:function(H,K){K.length&&this.writeMessage(H,P,K)},writePackedFixed32:function(H,K){K.length&&this.writeMessage(H,M,K)},writePackedSFixed32:function(H,K){K.length&&this.writeMessage(H,C,K)},writePackedFixed64:function(H,K){K.length&&this.writeMessage(H,k,K)},writePackedSFixed64:function(H,K){K.length&&this.writeMessage(H,V,K)},writeBytesField:function(H,K){this.writeTag(H,e.Bytes),this.writeBytes(K)},writeFixed32Field:function(H,K){this.writeTag(H,e.Fixed32),this.writeFixed32(K)},writeSFixed32Field:function(H,K){this.writeTag(H,e.Fixed32),this.writeSFixed32(K)},writeFixed64Field:function(H,K){this.writeTag(H,e.Fixed64),this.writeFixed64(K)},writeSFixed64Field:function(H,K){this.writeTag(H,e.Fixed64),this.writeSFixed64(K)},writeVarintField:function(H,K){this.writeTag(H,e.Varint),this.writeVarint(K)},writeSVarintField:function(H,K){this.writeTag(H,e.Varint),this.writeSVarint(K)},writeStringField:function(H,K){this.writeTag(H,e.Bytes),this.writeString(K)},writeFloatField:function(H,K){this.writeTag(H,e.Fixed32),this.writeFloat(K)},writeDoubleField:function(H,K){this.writeTag(H,e.Fixed64),this.writeDouble(K)},writeBooleanField:function(H,K){this.writeVarintField(H,!!K)}},Lg}var Tm=O(y1());const Dg=3;function hA(r,e,n){e.glyphs=[],r===1&&n.readMessage(uA,e)}function uA(r,e,n){if(r===3){const{id:o,bitmap:u,width:l,height:f,left:v,top:S,advance:D}=n.readMessage(dA,{});e.glyphs.push({id:o,bitmap:new Ac({width:l+2*Dg,height:f+2*Dg},u),metrics:{width:l,height:f,left:v,top:S,advance:D}})}else r===4?e.ascender=n.readSVarint():r===5&&(e.descender=n.readSVarint())}function dA(r,e,n){r===1?e.id=n.readVarint():r===2?e.bitmap=n.readBytes():r===3?e.width=n.readVarint():r===4?e.height=n.readVarint():r===5?e.left=n.readSVarint():r===6?e.top=n.readSVarint():r===7&&(e.advance=n.readVarint())}const x1=Dg,Fo={horizontal:1,vertical:2,horizontalOnly:3};class Af{constructor(){this.scale=1,this.fontStack="",this.image=null}static forText(e,n){const o=new Af;return o.scale=e||1,o.fontStack=n,o}static forImage(e){const n=new Af;return n.image=e,n}}class ju{constructor(){this.text="",this.sectionIndex=[],this.sections=[],this.imageSectionID=null}static fromFeature(e,n){const o=new ju;for(let u=0;u<e.sections.length;u++){const l=e.sections[u];l.image?o.addImageSection(l):o.addTextSection(l,n)}return o}length(){return this.text.length}getSection(e){return this.sections[this.sectionIndex[e]]}getSections(){return this.sections}getSectionIndex(e){return this.sectionIndex[e]}getCodePoint(e){return this.text.codePointAt(e)}verticalizePunctuation(e){this.text=function(n,o){let u="";for(let l=0;l<n.length;l++){const f=n.charCodeAt(l+1)||null,v=n.charCodeAt(l-1)||null;u+=!o&&(f&&$d(f)&&!Pf[n[l+1]]||v&&$d(v)&&!Pf[n[l-1]])||!Pf[n[l]]?n[l]:Pf[n[l]]}return u}(this.text,e)}trim(){let e=0;for(let o=0;o<this.text.length&&Mm[this.text.charCodeAt(o)];o++)e++;let n=this.text.length;for(let o=this.text.length-1;o>=0&&o>=e&&Mm[this.text.charCodeAt(o)];o--)n--;this.text=this.text.substring(e,n),this.sectionIndex=this.sectionIndex.slice(e,n)}substring(e,n){const o=new ju;return o.text=this.text.substring(e,n),o.sectionIndex=this.sectionIndex.slice(e,n),o.sections=this.sections,o}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((e,n)=>Math.max(e,this.sections[n].scale),0)}addTextSection(e,n){this.text+=e.text,this.sections.push(Af.forText(e.scale,e.fontStack||n));const o=this.sections.length-1;for(let u=0;u<e.text.length;++u)this.sectionIndex.push(o)}addImageSection(e){const n=e.image&&e.image.namePrimary?e.image.getPrimary():null;if(!n)return void mi("Can't add FormattedSection with an empty image.");const o=this.getNextImageSectionCharCode();o?(this.text+=String.fromCodePoint(o),this.sections.push(Af.forImage(n)),this.sectionIndex.push(this.sections.length-1)):mi("Reached maximum number of images 6401")}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function kg(r,e,n,o,u,l,f,v,S,D,x,P,I,M,C){const k=ju.fromFeature(r,u);P===Fo.vertical&&k.verticalizePunctuation(I);let V=[];const U=function(Q,ie,fe,de,ue,Se){if(!Q)return[];const me=[],Ee=function(Ve,Ue,Fe,et,dt,tt){let Mt=0;for(let wt=0;wt<Ve.length();wt++){const At=Ve.getSection(wt);Mt+=v1(Ve.getCodePoint(wt),At,et,dt,Ue,tt)}return Mt/Math.max(1,Math.ceil(Mt/Fe))}(Q,ie,fe,de,ue,Se),ze=Q.text.indexOf("")>=0;let Ie=0;for(let Ve=0;Ve<Q.length();Ve++){const Ue=Q.getSection(Ve),Fe=Q.getCodePoint(Ve);if(Mm[Fe]||(Ie+=v1(Fe,Ue,de,ue,ie,Se)),Ve<Q.length()-1){const et=!((Re=Fe)<11904||!(Zt["Bopomofo Extended"](Re)||Zt.Bopomofo(Re)||Zt["CJK Compatibility Forms"](Re)||Zt["CJK Compatibility Ideographs"](Re)||Zt["CJK Compatibility"](Re)||Zt["CJK Radicals Supplement"](Re)||Zt["CJK Strokes"](Re)||Zt["CJK Symbols and Punctuation"](Re)||Zt["CJK Unified Ideographs Extension A"](Re)||Zt["CJK Unified Ideographs"](Re)||Zt["Enclosed CJK Letters and Months"](Re)||Zt["Halfwidth and Fullwidth Forms"](Re)||Zt.Hiragana(Re)||Zt["Ideographic Description Characters"](Re)||Zt["Kangxi Radicals"](Re)||Zt["Katakana Phonetic Extensions"](Re)||Zt.Katakana(Re)||Zt["Vertical Forms"](Re)||Zt["Yi Radicals"](Re)||Zt["Yi Syllables"](Re)));(fA[Fe]||et||Ue.image)&&me.push(w1(Ve+1,Ie,Ee,me,pA(Fe,Q.getCodePoint(Ve+1),et&&ze),!1))}}var Re;return T1(w1(Q.length(),Ie,Ee,me,0,!0))}(k,D,l,e,o,M),{processBidirectionalText:q,processStyledBidirectionalText:$}=fo;if(q&&k.sections.length===1){const Q=q(k.toString(),U);for(const ie of Q){const fe=new ju;fe.text=ie,fe.sections=k.sections;for(let de=0;de<ie.length;de++)fe.sectionIndex.push(0);V.push(fe)}}else if($){const Q=$(k.text,k.sectionIndex,U);for(const ie of Q){const fe=new ju;fe.text=ie[0],fe.sectionIndex=ie[1],fe.sections=k.sections,V.push(fe)}}else V=function(Q,ie){const fe=[],de=Q.text;let ue=0;for(const Se of ie)fe.push(Q.substring(ue,Se)),ue=Se;return ue<de.length&&fe.push(Q.substring(ue,de.length)),fe}(k,U);const H=[],K={positionedLines:H,text:k.toString(),top:x[1],bottom:x[1],left:x[0],right:x[0],writingMode:P,iconsInText:!1,verticalizable:!1,hasBaseline:!1};return function(Q,ie,fe,de,ue,Se,me,Ee,ze,Ie,Re,Ve){let Ue=0,Fe=0,et=0;const dt=Ee==="right"?1:Ee==="left"?0:.5;let tt=!1;for(const St of ue){const Nt=St.getSections();for(const Qt of Nt){if(Qt.image)continue;const pi=ie[Qt.fontStack];if(pi&&(tt=pi.ascender!==void 0&&pi.descender!==void 0,!tt))break}if(!tt)break}let Mt=0;for(const St of ue){St.trim();const Nt=St.getMaxScale(),Qt=(Nt-1)*ir,pi={positionedGlyphs:[],lineOffset:0};Q.positionedLines[Mt]=pi;const gi=pi.positionedGlyphs;let Ai=0;if(!St.length()){Fe+=Se,++Mt;continue}let yi=0,Ii=0;for(let rn=0;rn<St.length();rn++){const hi=St.getSection(rn),on=St.getSectionIndex(rn),en=St.getCodePoint(rn);let pn=hi.scale,hs=null,us=null,Kn=null,Gr=ir,En=0;const Ln=!(ze===Fo.horizontal||!Re&&!pu(en)||Re&&(Mm[en]||(wt=en,Zt.Arabic(wt)||Zt["Arabic Supplement"](wt)||Zt["Arabic Extended-A"](wt)||Zt["Arabic Presentation Forms-A"](wt)||Zt["Arabic Presentation Forms-B"](wt))));if(hi.image){const Tr=de[hi.image.serialize()];if(!Tr)continue;Kn=hi.image.id,Q.iconsInText=Q.iconsInText||!0,us=Tr.paddedRect;const ds=Tr.displaySize;pn=pn*ir/Ve,hs={width:ds[0],height:ds[1],left:0,top:-x1,advance:Ln?ds[1]:ds[0],localGlyph:!1},En=tt?-hs.height*pn:Nt*ir-17-ds[1]*pn,Gr=hs.advance;const to=(Ln?ds[0]:ds[1])*pn-ir*Nt;to>0&&to>Ai&&(Ai=to)}else{const Tr=fe[hi.fontStack];if(!Tr)continue;Tr[en]&&(us=Tr[en]);const ds=ie[hi.fontStack];if(!ds)continue;const to=ds.glyphs[en];if(!to)continue;if(hs=to.metrics,Gr=en!==8203?ir:0,tt){const Ms=ds.ascender!==void 0?Math.abs(ds.ascender):0,cl=ds.descender!==void 0?Math.abs(ds.descender):0,Rc=(Ms+cl)*pn;yi<Rc&&(yi=Rc,Ii=(Ms-cl)/2*pn),En=-Ms*pn}else En=(Nt-pn)*ir-17}Ln?(Q.verticalizable=!0,gi.push({glyph:en,imageName:Kn,x:Ue,y:Fe+En,vertical:Ln,scale:pn,localGlyph:hs.localGlyph,fontStack:hi.fontStack,sectionIndex:on,metrics:hs,rect:us}),Ue+=Gr*pn+Ie):(gi.push({glyph:en,imageName:Kn,x:Ue,y:Fe+En,vertical:Ln,scale:pn,localGlyph:hs.localGlyph,fontStack:hi.fontStack,sectionIndex:on,metrics:hs,rect:us}),Ue+=hs.advance*pn+Ie)}gi.length!==0&&(et=Math.max(Ue-Ie,et),tt?M1(gi,dt,Ai,Ii,Se*Nt/2):M1(gi,dt,Ai,0,Se/2)),Ue=0;const fn=Se*Nt+Ai;pi.lineOffset=Math.max(Ai,Qt),Fe+=fn,++Mt}var wt;const At=Fe,{horizontalAlign:rt,verticalAlign:Ut}=Rg(me);(function(St,Nt,Qt,pi,gi,Ai){const yi=(Nt-Qt)*gi,Ii=-Ai*pi;for(const fn of St)for(const rn of fn.positionedGlyphs)rn.x+=yi,rn.y+=Ii})(Q.positionedLines,dt,rt,Ut,et,At),Q.top+=-Ut*At,Q.bottom=Q.top+At,Q.left+=-rt*et,Q.right=Q.left+et,Q.hasBaseline=tt}(K,e,n,o,V,f,v,S,P,D,I,C),!function(Q){for(const ie of Q)if(ie.positionedGlyphs.length!==0)return!1;return!0}(H)&&K}const Mm={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},fA={10:!0,32:!0,38:!0,40:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0};function v1(r,e,n,o,u,l){if(e.image){const f=o[e.image.serialize()];return f?f.displaySize[0]*e.scale*ir/l+u:0}{const f=n[e.fontStack],v=f&&f.glyphs[r];return v?v.metrics.advance*e.scale+u:0}}function b1(r,e,n,o){const u=Math.pow(r-e,2);return o?r<e?u/2:2*u:u+Math.abs(n)*n}function pA(r,e,n){let o=0;return r===10&&(o-=1e4),n&&(o+=150),r!==40&&r!==65288||(o+=50),e!==41&&e!==65289||(o+=50),o}function w1(r,e,n,o,u,l){let f=null,v=b1(e,n,u,l);for(const S of o){const D=b1(e-S.x,n,u,l)+S.badness;D<=v&&(f=S,v=D)}return{index:r,x:e,priorBreak:f,badness:v}}function T1(r){return r?T1(r.priorBreak).concat(r.index):[]}function Rg(r){let e=.5,n=.5;switch(r){case"right":case"top-right":case"bottom-right":e=1;break;case"left":case"top-left":case"bottom-left":e=0}switch(r){case"bottom":case"bottom-right":case"bottom-left":n=1;break;case"top":case"top-right":case"top-left":n=0}return{horizontalAlign:e,verticalAlign:n}}function M1(r,e,n,o,u){if(!(e||n||o||u))return;const l=r.length-1,f=r[l],v=(f.x+f.metrics.advance*f.scale)*e;for(let S=0;S<=l;S++)r[S].x-=v,r[S].y+=n+o+u}function mA(r,e,n,o){const{horizontalAlign:u,verticalAlign:l}=Rg(o),f=n[0]-r.displaySize[0]*u,v=n[1]-r.displaySize[1]*l;return{imagePrimary:r,imageSecondary:e,top:v,bottom:v+r.displaySize[1],left:f,right:f+r.displaySize[0]}}function S1(r,e,n,o,u,l){const f=r.imagePrimary;let v;if(f.content){const V=f.content,U=f.pixelRatio||1;v=[V[0]/U,V[1]/U,f.displaySize[0]-V[2]/U,f.displaySize[1]-V[3]/U]}const S=e.left*l,D=e.right*l;let x,P,I,M;n==="width"||n==="both"?(M=u[0]+S-o[3],P=u[0]+D+o[1]):(M=u[0]+(S+D-f.displaySize[0])/2,P=M+f.displaySize[0]);const C=e.top*l,k=e.bottom*l;return n==="height"||n==="both"?(x=u[1]+C-o[0],I=u[1]+k+o[2]):(x=u[1]+(C+k-f.displaySize[1])/2,I=x+f.displaySize[1]),{imagePrimary:f,imageSecondary:void 0,top:x,right:P,bottom:I,left:M,collisionPadding:v}}class Gl extends Et{constructor(e,n,o,u,l){super(e,n),this.angle=u,this.z=o,l!==void 0&&(this.segment=l)}clone(){return new Gl(this.x,this.y,this.z,this.angle,this.segment)}}function E1(r,e,n,o,u){if(e.segment===void 0)return!0;let l=e,f=e.segment+1,v=0;for(;v>-n/2;){if(f--,f<0)return!1;v-=r[f].dist(l),l=r[f]}v+=r[f].dist(r[f+1]),f++;const S=[];let D=0;for(;v<n/2;){const x=r[f],P=r[f+1];if(!P)return!1;let I=r[f-1].angleTo(x)-x.angleTo(P);for(I=Math.abs((I+3*Math.PI)%(2*Math.PI)-Math.PI),S.push({distance:v,angleDelta:I}),D+=I;v-S[0].distance>o;)D-=S.shift().angleDelta;if(D>u)return!1;f++,v+=x.dist(P)}return!0}function P1(r){let e=0;for(let n=0;n<r.length-1;n++)e+=r[n].dist(r[n+1]);return e}function A1(r,e,n){return r?.6*e*n:0}function C1(r,e){return Math.max(r?r.right-r.left:0,e?e.right-e.left:0)}function _A(r,e,n,o,u,l){const f=A1(n,u,l),v=C1(n,o)*l;let S=0;const D=P1(r)/2;for(let x=0;x<r.length-1;x++){const P=r[x],I=r[x+1],M=P.dist(I);if(S+M>D){const C=(D-S)/M,k=ei(P.x,I.x,C),V=ei(P.y,I.y,C),U=new Gl(k,V,0,I.angleTo(P),x);return!f||E1(r,U,v,f,e)?U:void 0}S+=M}}function gA(r,e,n,o,u,l,f,v,S){const D=A1(o,l,f),x=C1(o,u),P=x*f,I=r[0].x===0||r[0].x===S||r[0].y===0||r[0].y===S;return e-P<e/4&&(e=P+e/4),I1(r,I?e/2*v%e:(x/2+2*l)*f*v%e,e,D,n,P,I,!1,S)}function I1(r,e,n,o,u,l,f,v,S){const D=l/2,x=P1(r);let P=0,I=e-n,M=[];for(let C=0;C<r.length-1;C++){const k=r[C],V=r[C+1],U=k.dist(V),q=V.angleTo(k);for(;I+n<P+U;){I+=n;const $=(I-P)/U,H=ei(k.x,V.x,$),K=ei(k.y,V.y,$);if(H>=0&&H<S&&K>=0&&K<S&&I-D>=0&&I+D<=x){const Q=new Gl(H,K,0,q,C);o&&!E1(r,Q,l,o,u)||M.push(Q)}}P+=U}return v||M.length||f||(M=I1(r,P/2,n,o,u,l,f,!0,S)),M}function L1(r,e,n,o,u){const l=[];for(let f=0;f<r.length;f++){const v=r[f];let S;for(let D=0;D<v.length-1;D++){let x=v[D],P=v[D+1];x.x<e&&P.x<e||(x.x<e?x=new Et(e,x.y+(e-x.x)/(P.x-x.x)*(P.y-x.y))._round():P.x<e&&(P=new Et(e,x.y+(e-x.x)/(P.x-x.x)*(P.y-x.y))._round()),x.y<n&&P.y<n||(x.y<n?x=new Et(x.x+(n-x.y)/(P.y-x.y)*(P.x-x.x),n)._round():P.y<n&&(P=new Et(x.x+(n-x.y)/(P.y-x.y)*(P.x-x.x),n)._round()),x.x>=o&&P.x>=o||(x.x>=o?x=new Et(o,x.y+(o-x.x)/(P.x-x.x)*(P.y-x.y))._round():P.x>=o&&(P=new Et(o,x.y+(o-x.x)/(P.x-x.x)*(P.y-x.y))._round()),x.y>=u&&P.y>=u||(x.y>=u?x=new Et(x.x+(u-x.y)/(P.y-x.y)*(P.x-x.x),u)._round():P.y>=u&&(P=new Et(x.x+(u-x.y)/(P.y-x.y)*(P.x-x.x),u)._round()),S&&x.equals(S[S.length-1])||(S=[x],l.push(S)),S.push(P)))))}}return l}function z1(r){let e=0,n=0;for(const f of r)e+=f.w*f.h,n=Math.max(n,f.w);r.sort((f,v)=>v.h-f.h);const o=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),n),h:1/0}];let u=0,l=0;for(const f of r)for(let v=o.length-1;v>=0;v--){const S=o[v];if(!(f.w>S.w||f.h>S.h)){if(f.x=S.x,f.y=S.y,l=Math.max(l,f.y+f.h),u=Math.max(u,f.x+f.w),f.w===S.w&&f.h===S.h){const D=o.pop();v<o.length&&(o[v]=D)}else f.h===S.h?(S.x+=f.w,S.w-=f.w):f.w===S.w?(S.y+=f.h,S.h-=f.h):(o.push({x:S.x+f.w,y:S.y,w:S.w-f.w,h:f.h}),S.y+=f.h,S.h-=f.h);break}}return{w:u,h:l,fill:e/(u*l)||0}}Ft(Gl,"Anchor");const Cf=1;class Og{constructor(e,{pixelRatio:n,version:o,stretchX:u,stretchY:l,content:f},v){this.paddedRect=e,this.pixelRatio=n,this.stretchX=u,this.stretchY=l,this.content=f,this.version=o,this.padding=v}get tl(){return[this.paddedRect.x+this.padding,this.paddedRect.y+this.padding]}get br(){return[this.paddedRect.x+this.paddedRect.w-this.padding,this.paddedRect.y+this.paddedRect.h-this.padding]}get displaySize(){return[(this.paddedRect.w-2*this.padding)/this.pixelRatio,(this.paddedRect.h-2*this.padding)/this.pixelRatio]}}class D1{constructor(e,n,o){const u={},l={};this.haveRenderCallbacks=[];const f=[];this.addImages(e,u,Cf,f),this.addImages(n,l,2,f);const{w:v,h:S}=z1(f),D=new gr({width:v||1,height:S||1});for(const x in e){const P=e[x],I=u[x].paddedRect;gr.copy(P.data,D,{x:0,y:0},{x:I.x+Cf,y:I.y+Cf},P.data,o,P.sdf)}for(const x in n){const P=n[x],I=l[x].paddedRect;let M=l[x].padding;const C=I.x+M,k=I.y+M,V=P.data.width,U=P.data.height;M=M>1?M-1:M,gr.copy(P.data,D,{x:0,y:0},{x:C,y:k},P.data,o),gr.copy(P.data,D,{x:0,y:U-M},{x:C,y:k-M},{width:V,height:M},o),gr.copy(P.data,D,{x:0,y:0},{x:C,y:k+U},{width:V,height:M},o),gr.copy(P.data,D,{x:V-M,y:0},{x:C-M,y:k},{width:M,height:U},o),gr.copy(P.data,D,{x:0,y:0},{x:C+V,y:k},{width:M,height:U},o),gr.copy(P.data,D,{x:V-M,y:U-M},{x:C-M,y:k-M},{width:M,height:M},o),gr.copy(P.data,D,{x:0,y:U-M},{x:C+V,y:k-M},{width:M,height:M},o),gr.copy(P.data,D,{x:0,y:0},{x:C+V,y:k+U},{width:M,height:M},o),gr.copy(P.data,D,{x:V-M,y:0},{x:C-M,y:k+U},{width:M,height:M},o)}this.image=D,this.iconPositions=u,this.patternPositions=l}addImages(e,n,o,u){for(const l in e){const f=e[l],v={x:0,y:0,w:f.data.width+2*o,h:f.data.height+2*o};u.push(v),n[l]=new Og(v,f,o),f.hasRenderCallback&&this.haveRenderCallbacks.push(or.deserializeId(l))}}patchUpdatedImages(e,n,o){this.haveRenderCallbacks=this.haveRenderCallbacks.filter(u=>e.hasImage(u,o)),e.dispatchRenderCallbacks(this.haveRenderCallbacks,o);for(const u in e.getUpdatedImages(o)){for(const l of Object.keys(this.iconPositions))or.deserializeId(l)===u&&this.patchUpdatedImage(this.iconPositions[l],e.getImage(u,o),n);for(const l of Object.keys(this.patternPositions))or.deserializeId(l)===u&&this.patchUpdatedImage(this.patternPositions[l],e.getImage(u,o),n)}}patchUpdatedImage(e,n,o){if(!e||!n||e.version===n.version)return;e.version=n.version;const[u,l]=e.tl;o.update(n.data,{position:{x:u,y:l}})}}Ft(Og,"ImagePosition"),Ft(D1,"ImageAtlas");const If=1e20;function k1(r,e,n,o,u,l,f,v,S){for(let D=e;D<e+o;D++)R1(r,n*l+D,l,u,f,v,S);for(let D=n;D<n+u;D++)R1(r,D*l+e,1,o,f,v,S)}function R1(r,e,n,o,u,l,f){l[0]=0,f[0]=-If,f[1]=If,u[0]=r[e];for(let v=1,S=0,D=0;v<o;v++){u[v]=r[e+v*n];const x=v*v;do{const P=l[S];D=(u[v]-u[P]+x-P*P)/(v-P)/2}while(D<=f[S]&&--S>-1);S++,l[S]=v,f[S]=D,f[S+1]=If}for(let v=0,S=0;v<o;v++){for(;f[S+1]<v;)S++;const D=l[S],x=v-D;r[e+v*n]=u[D]+x*x}}const La=2,Fg={none:0,ideographs:1,all:2};class Gu{constructor(e,n,o){this.requestManager=e,this.localGlyphMode=n,this.localFontFamily=o,this.urls={},this.entries={},this.localGlyphs={200:{},400:{},500:{},900:{}}}setURL(e,n){this.urls[n]=e}getGlyphs(e,n,o){const u=[],l=this.urls[n]||ge.GLYPHS_URL;for(const f in e)for(const v of e[f])u.push({stack:f,id:v});Rn(u,({stack:f,id:v},S)=>{let D=this.entries[f];D||(D=this.entries[f]={glyphs:{},requests:{},ranges:{},ascender:void 0,descender:void 0});let x=D.glyphs[v];if(x!==void 0)return void S(null,{stack:f,id:v,glyph:x});if(x=this._tinySDF(D,f,v),x)return D.glyphs[v]=x,void S(null,{stack:f,id:v,glyph:x});const P=Math.floor(v/256);if(256*P>65535)return mi("glyphs > 65535 not supported"),void S(null,{stack:f,id:v,glyph:x});if(D.ranges[P])return void S(null,{stack:f,id:v,glyph:x});let I=D.requests[P];I||(I=D.requests[P]=[],Gu.loadGlyphRange(f,P,l,this.requestManager,(M,C)=>{if(C){D.ascender=C.ascender,D.descender=C.descender;for(const k in C.glyphs)this._doesCharSupportLocalGlyph(+k)||(D.glyphs[+k]=C.glyphs[+k]);D.ranges[P]=!0}for(const k of I)k(M,C);delete D.requests[P]})),I.push((M,C)=>{M?S(M):C&&S(null,{stack:f,id:v,glyph:C.glyphs[v]||null})})},(f,v)=>{if(f)o(f);else if(v){const S={};for(const{stack:D,id:x,glyph:P}of v)S[D]===void 0&&(S[D]={}),S[D].glyphs===void 0&&(S[D].glyphs={}),S[D].glyphs[x]=P&&{id:P.id,bitmap:P.bitmap.clone(),metrics:P.metrics},S[D].ascender=this.entries[D].ascender,S[D].descender=this.entries[D].descender;o(null,S)}})}_doesCharSupportLocalGlyph(e){return this.localGlyphMode!==Fg.none&&(this.localGlyphMode===Fg.all?!!this.localFontFamily:!!this.localFontFamily&&(Zt["CJK Unified Ideographs"](e)||Zt["Hangul Syllables"](e)||Zt.Hiragana(e)||Zt.Katakana(e)||Zt["CJK Symbols and Punctuation"](e)||Zt["CJK Unified Ideographs Extension A"](e)||Zt["CJK Unified Ideographs Extension B"](e)||Zt.Osage(e)))}_tinySDF(e,n,o){const u=this.localFontFamily;if(!u||!this._doesCharSupportLocalGlyph(o))return;let l=e.tinySDF;if(!l){let k="400";/bold/i.test(n)?k="900":/medium/i.test(n)?k="500":/light/i.test(n)&&(k="200"),l=e.tinySDF=new Gu.TinySDF({fontFamily:u,fontWeight:k,fontSize:24*La,buffer:3*La,radius:8*La}),l.fontWeight=k}if(this.localGlyphs[l.fontWeight][o])return this.localGlyphs[l.fontWeight][o];const f=String.fromCodePoint(o),{data:v,width:S,height:D,glyphWidth:x,glyphHeight:P,glyphLeft:I,glyphTop:M,glyphAdvance:C}=l.draw(f);return this.localGlyphs[l.fontWeight][o]={id:o,bitmap:new Ac({width:S,height:D},v),metrics:{width:x/La,height:P/La,left:I/La,top:M/La-27,advance:C/La,localGlyph:!0}}}}Gu.loadGlyphRange=function(r,e,n,o,u){const l=256*e,f=l+255,v=o.transformRequest(o.normalizeGlyphsURL(n).replace("{fontstack}",r).replace("{range}",`${l}-${f}`),Zo.Glyphs);oo(v,(S,D)=>{if(S)u(S);else if(D){const x={},P=function(I){return new Tm(I).readFields(hA,{})}(D);for(const I of P.glyphs)x[I.id]=I;u(null,{glyphs:x,ascender:P.ascender,descender:P.descender})}})},Gu.TinySDF=class{constructor({fontSize:r=24,buffer:e=3,radius:n=8,cutoff:o=.25,fontFamily:u="sans-serif",fontWeight:l="normal",fontStyle:f="normal"}={}){this.buffer=e,this.cutoff=o,this.radius=n;const v=this.size=r+4*e,S=this._createCanvas(v),D=this.ctx=S.getContext("2d",{willReadFrequently:!0});D.font=`${f} ${l} ${r}px ${u}`,D.textBaseline="alphabetic",D.textAlign="left",D.fillStyle="black",this.gridOuter=new Float64Array(v*v),this.gridInner=new Float64Array(v*v),this.f=new Float64Array(v),this.z=new Float64Array(v+1),this.v=new Uint16Array(v)}_createCanvas(r){const e=document.createElement("canvas");return e.width=e.height=r,e}draw(r){const{width:e,actualBoundingBoxAscent:n,actualBoundingBoxDescent:o,actualBoundingBoxLeft:u,actualBoundingBoxRight:l}=this.ctx.measureText(r),f=Math.ceil(n),v=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(l-u))),S=Math.min(this.size-this.buffer,f+Math.ceil(o)),D=v+2*this.buffer,x=S+2*this.buffer,P=Math.max(D*x,0),I=new Uint8ClampedArray(P),M={data:I,width:D,height:x,glyphWidth:v,glyphHeight:S,glyphTop:f,glyphLeft:0,glyphAdvance:e};if(v===0||S===0)return M;const{ctx:C,buffer:k,gridInner:V,gridOuter:U}=this;C.clearRect(k,k,v,S),C.fillText(r,k,k+f);const q=C.getImageData(k,k,v,S);U.fill(If,0,P),V.fill(0,0,P);for(let $=0;$<S;$++)for(let H=0;H<v;H++){const K=q.data[4*($*v+H)+3]/255;if(K===0)continue;const Q=($+k)*D+H+k;if(K===1)U[Q]=0,V[Q]=If;else{const ie=.5-K;U[Q]=ie>0?ie*ie:0,V[Q]=ie<0?ie*ie:0}}k1(U,0,0,D,x,D,this.f,this.v,this.z),k1(V,k,k,v,S,D,this.f,this.v,this.z);for(let $=0;$<P;$++){const H=Math.sqrt(U[$])-Math.sqrt(V[$]);I[$]=Math.round(255-255*(H/this.radius+this.cutoff))}return M}};const Ic=Cf;function O1(r,e){return r+e[1]-e[0]}function F1(r,e,n,o,u=1){const l=[],f=r.imagePrimary,v=f.pixelRatio,S=f.paddedRect.w-2*Ic,D=f.paddedRect.h-2*Ic,x=(r.right-r.left)*u,P=(r.bottom-r.top)*u,I=f.stretchX||[[0,S]],M=f.stretchY||[[0,D]],C=I.reduce(O1,0),k=M.reduce(O1,0),V=S-C,U=D-k;let q=0,$=C,H=0,K=k,Q=0,ie=V,fe=0,de=U;if(f.content&&o){const Se=f.content;q=Sm(I,0,Se[0]),H=Sm(M,0,Se[1]),$=Sm(I,Se[0],Se[2]),K=Sm(M,Se[1],Se[3]),Q=Se[0]-q,fe=Se[1]-H,ie=Se[2]-Se[0]-$,de=Se[3]-Se[1]-K}const ue=(Se,me,Ee,ze)=>{const Ie=Em(Se.stretch-q,$,x,r.left*u),Re=Pm(Se.fixed-Q,ie,Se.stretch,C),Ve=Em(me.stretch-H,K,P,r.top*u),Ue=Pm(me.fixed-fe,de,me.stretch,k),Fe=Em(Ee.stretch-q,$,x,r.left*u),et=Pm(Ee.fixed-Q,ie,Ee.stretch,C),dt=Em(ze.stretch-H,K,P,r.top*u),tt=Pm(ze.fixed-fe,de,ze.stretch,k),Mt=new Et(Ie,Ve),wt=new Et(Fe,Ve),At=new Et(Fe,dt),rt=new Et(Ie,dt),Ut=new Et(Re/v,Ue/v),St=new Et(et/v,tt/v),Nt=e*Math.PI/180;if(Nt){const Ii=Math.sin(Nt),fn=Math.cos(Nt),rn=[fn,-Ii,Ii,fn];Mt._matMult(rn),wt._matMult(rn),rt._matMult(rn),At._matMult(rn)}const Qt=Se.stretch+Se.fixed,pi=Ee.stretch+Ee.fixed,gi=me.stretch+me.fixed,Ai=ze.stretch+ze.fixed,yi=r.imageSecondary;return{tl:Mt,tr:wt,bl:rt,br:At,texPrimary:{x:f.paddedRect.x+Ic+Qt,y:f.paddedRect.y+Ic+gi,w:pi-Qt,h:Ai-gi},texSecondary:yi?{x:yi.paddedRect.x+Ic+Qt,y:yi.paddedRect.y+Ic+gi,w:pi-Qt,h:Ai-gi}:void 0,writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:Ut,pixelOffsetBR:St,minFontScaleX:ie/v/x,minFontScaleY:de/v/P,isSDF:n}};if(o&&(f.stretchX||f.stretchY)){const Se=B1(I,V,C),me=B1(M,U,k);for(let Ee=0;Ee<Se.length-1;Ee++){const ze=Se[Ee],Ie=Se[Ee+1];for(let Re=0;Re<me.length-1;Re++)l.push(ue(ze,me[Re],Ie,me[Re+1]))}}else l.push(ue({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:S+1},{fixed:0,stretch:D+1}));return l}function Sm(r,e,n){let o=0;for(const u of r)o+=Math.max(e,Math.min(n,u[1]))-Math.max(e,Math.min(n,u[0]));return o}function B1(r,e,n){const o=[{fixed:-Ic,stretch:0}];for(const[u,l]of r){const f=o[o.length-1];o.push({fixed:u-f.stretch,stretch:f.stretch}),o.push({fixed:u-f.stretch,stretch:f.stretch+(l-u)})}return o.push({fixed:e+Ic,stretch:n}),o}function Em(r,e,n,o){return r/e*n+o}function Pm(r,e,n,o){return r-e*n/o}function yA(r,e,n,o){const u=e+r.positionedLines[o].lineOffset;return o===0?n+u/2:n+(u+(e+r.positionedLines[o-1].lineOffset))/2}function xA(r,e=1,n=!1){let o=1/0,u=1/0,l=-1/0,f=-1/0;const v=r[0];for(let M=0;M<v.length;M++){const C=v[M];(!M||C.x<o)&&(o=C.x),(!M||C.y<u)&&(u=C.y),(!M||C.x>l)&&(l=C.x),(!M||C.y>f)&&(f=C.y)}const S=Math.min(l-o,f-u);let D=S/2;const x=new sc([],vA);if(S===0)return new Et(o,u);for(let M=o;M<l;M+=S)for(let C=u;C<f;C+=S)x.push(new Zu(M+D,C+D,D,r));let P=function(M){let C=0,k=0,V=0;const U=M[0];for(let q=0,$=U.length,H=$-1;q<$;H=q++){const K=U[q],Q=U[H],ie=K.x*Q.y-Q.x*K.y;k+=(K.x+Q.x)*ie,V+=(K.y+Q.y)*ie,C+=3*ie}return new Zu(k/C,V/C,0,M)}(r),I=x.length;for(;x.length;){const M=x.pop();(M.d>P.d||!P.d)&&(P=M,n&&console.log("found best %d after %d probes",Math.round(1e4*M.d)/1e4,I)),M.max-P.d<=e||(D=M.h/2,x.push(new Zu(M.p.x-D,M.p.y-D,D,r)),x.push(new Zu(M.p.x+D,M.p.y-D,D,r)),x.push(new Zu(M.p.x-D,M.p.y+D,D,r)),x.push(new Zu(M.p.x+D,M.p.y+D,D,r)),I+=4)}return n&&(console.log(`num probes: ${I}`),console.log(`best distance: ${P.d}`)),P.p}function vA(r,e){return e.max-r.max}class Zu{constructor(e,n,o,u){this.p=new Et(e,n),this.h=o,this.d=function(l,f){let v=!1,S=1/0;for(let D=0;D<f.length;D++){const x=f[D];for(let P=0,I=x.length,M=I-1;P<I;M=P++){const C=x[P],k=x[M];C.y>l.y!=k.y>l.y&&l.x<(k.x-C.x)*(l.y-C.y)/(k.y-C.y)+C.x&&(v=!v),S=Math.min(S,we(l,C,k))}}return(v?1:-1)*Math.sqrt(S)}(this.p,u),this.max=this.d+this.h*Math.SQRT2}}const Bg=Number.POSITIVE_INFINITY,bA=Math.sqrt(2);function N1(r,[e,n]){let o=0,u=0;if(n===Bg){e<0&&(e=0);const l=e/bA;switch(r){case"top-right":case"top-left":u=l-7;break;case"bottom-right":case"bottom-left":u=7-l;break;case"bottom":u=7-e;break;case"top":u=e-7}switch(r){case"top-right":case"bottom-right":o=-l;break;case"top-left":case"bottom-left":o=l;break;case"left":o=e;break;case"right":o=-e}}else{switch(e=Math.abs(e),n=Math.abs(n),r){case"top-right":case"top-left":case"top":u=n-7;break;case"bottom-right":case"bottom-left":case"bottom":u=7-n}switch(r){case"top-right":case"bottom-right":case"right":o=-e;break;case"top-left":case"bottom-left":case"left":o=e}}return[o,u]}function Ng(r){switch(r){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function wA(r,e,n,o,u,l,f,v,S,D,x,P,I,M,C,k){let V=l.textMaxSize.evaluate(e,{},I);V===void 0?V=f*l.textScaleFactor:V*=l.textScaleFactor;const U=r.layers[0].layout,q=U.get("icon-offset").evaluate(e,{},I),$=U1(n.horizontal)||n.vertical,H=M.name==="globe",K=ir,Q=f*l.textScaleFactor/K,ie=r.tilePixelRatio*V/K,fe=(Re=r.overscaling,r.zoom>18&&Re>2&&(Re>>=1),Math.max(Tt/(512*Re),1)*U.get("symbol-spacing")),de=U.get("text-padding")*r.tilePixelRatio,ue=U.get("icon-padding")*r.tilePixelRatio,Se=vi(U.get("text-max-angle")),me=U.get("text-rotation-alignment")==="map"&&U.get("symbol-placement")!=="point",Ee=U.get("icon-rotation-alignment")==="map"&&U.get("symbol-placement")!=="point",ze=U.get("symbol-placement"),Ie=fe/2;var Re;const Ve=U.get("icon-text-fit").evaluate(e,{},I),Ue=U.get("icon-text-fit-padding").evaluate(e,{},I),Fe=Ve!=="none";let et;r.hasAnyIconTextFit===!1&&Fe&&(r.hasAnyIconTextFit=!0),o&&Fe&&(r.allowVerticalPlacement&&n.vertical&&(et=S1(o,n.vertical,Ve,Ue,q,Q)),$&&(o=S1(o,$,Ve,Ue,q,Q)));const dt=(tt,Mt,wt)=>{if(Mt.x<0||Mt.x>=Tt||Mt.y<0||Mt.y>=Tt)return;let At=null;if(H){const{x:rt,y:Ut,z:St}=M.projectTilePoint(Mt.x,Mt.y,wt);At={anchor:new Gl(rt,Ut,St,0,void 0),up:M.upVector(wt,Mt.x,Mt.y)}}(function(rt,Ut,St,Nt,Qt,pi,gi,Ai,yi,Ii,fn,rn,hi,on,en,pn,hs,us,Kn,Gr,En,Ln,Tr,ds,to,Ms,cl,Rc){const Oc=rt.addToLineVertexArray(Ut,Nt);let Zl,Fc,Bc,e_,xw,vw,bw,ww=0,Tw=0,Mw=0,Sw=0,vy=-1,by=-1;const hl={};let Ew=$r("");const Nh=St?St.anchor:Ut,wy=yi.layout.get("icon-text-fit").evaluate(En,{},Ms)!=="none";let Ty=0,My=0;if(yi._unevaluatedLayout.getValue("text-radial-offset")===void 0?[Ty,My]=yi.layout.get("text-offset").evaluate(En,{},Ms).map(No=>No*ir):(Ty=yi.layout.get("text-radial-offset").evaluate(En,{},Ms)*ir,My=Bg),rt.allowVerticalPlacement&&Qt.vertical){const No=Qt.vertical;if(en)vw=Vg(No),Ai&&(bw=Vg(Ai));else{const go=yi.layout.get("text-rotate").evaluate(En,{},Ms)+90;Bc=Am(Ii,Nh,Ut,fn,rn,hi,No,on,go,pn),Ai&&(e_=Am(Ii,Nh,Ut,fn,rn,hi,Ai,us,go))}}if(pi){const No=rt.iconSizeData,go=ds?bm(rt.iconSizeData,rt.layers[0]._unevaluatedLayout._values["icon-size"],Ms,rt.zoom,En):1,td=yi.layout.get("icon-rotate").evaluate(En,{},Ms),Pw=F1(pi,td,Tr,wy,ds?1/go:Ln.iconScaleFactor),Ey=Ai?F1(Ai,td,Tr,wy,Ln.iconScaleFactor):void 0;Fc=Am(Ii,Nh,Ut,fn,rn,hi,pi,us,td,null,ds?Ln.iconScaleFactor*go:1),ww=4*Pw.length;let Vh=null;No.kind==="source"?(Vh=[Ia*yi.layout.get("icon-size").evaluate(En,{},Ms)*Ln.iconScaleFactor],Vh[0]>Lc&&mi(`${rt.layerIds[0]}: Value for "icon-size" is >= ${Lf}. Reduce your "icon-size".`)):No.kind==="composite"&&(Vh=[Ia*Ln.compositeIconSizes[0].evaluate(En,{},Ms)*Ln.iconScaleFactor,Ia*Ln.compositeIconSizes[1].evaluate(En,{},Ms)*Ln.iconScaleFactor],(Vh[0]>Lc||Vh[1]>Lc)&&mi(`${rt.layerIds[0]}: Value for "icon-size" is >= ${Lf}. Reduce your "icon-size".`)),rt.addSymbols(rt.icon,Pw,Vh,Gr,Kn,En,!1,St,Ut,Oc.lineStartIndex,Oc.lineLength,-1,to,Ms,cl,Rc),vy=rt.icon.placedSymbolArray.length-1,Ey&&(Tw=4*Ey.length,rt.addSymbols(rt.icon,Ey,Vh,Gr,Kn,En,Fo.vertical,St,Ut,Oc.lineStartIndex,Oc.lineLength,-1,to,Ms,cl,Rc),by=rt.icon.placedSymbolArray.length-1)}for(const No in Qt.horizontal){const go=Qt.horizontal[No];Zl||(Ew=$r(go.text),en?xw=Vg(go):Zl=Am(Ii,Nh,Ut,fn,rn,hi,go,on,yi.layout.get("text-rotate").evaluate(En,{},Ms),pn));const td=go.positionedLines.length===1;if(Mw+=V1(rt,St,Ut,go,gi,yi,en,En,pn,Oc,Qt.vertical?Fo.horizontal:Fo.horizontalOnly,td?Object.keys(Qt.horizontal):[No],hl,vy,Ln,to,Ms,cl),td)break}Qt.vertical&&(Sw+=V1(rt,St,Ut,Qt.vertical,gi,yi,en,En,pn,Oc,Fo.vertical,["vertical"],hl,by,Ln,to,Ms,cl));let Nc=-1;const Sy=(No,go)=>No?Math.max(No,go):go;Nc=Sy(xw,Nc),Nc=Sy(vw,Nc),Nc=Sy(bw,Nc);const tI=Nc>-1?1:0;rt.glyphOffsetArray.length>=65535&&mi("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),En.sortKey!==void 0&&rt.addToSortKeyRanges(rt.symbolInstances.length,En.sortKey),rt.symbolInstances.emplaceBack(Ut.x,Ut.y,Nh.x,Nh.y,Nh.z,hl.right>=0?hl.right:-1,hl.center>=0?hl.center:-1,hl.left>=0?hl.left:-1,hl.vertical>=0?hl.vertical:-1,vy,by,Ew,Zl!==void 0?Zl:rt.collisionBoxArray.length,Zl!==void 0?Zl+1:rt.collisionBoxArray.length,Bc!==void 0?Bc:rt.collisionBoxArray.length,Bc!==void 0?Bc+1:rt.collisionBoxArray.length,Fc!==void 0?Fc:rt.collisionBoxArray.length,Fc!==void 0?Fc+1:rt.collisionBoxArray.length,e_||rt.collisionBoxArray.length,e_?e_+1:rt.collisionBoxArray.length,fn,Mw,Sw,ww,Tw,tI,0,Ty,My,Nc,0,wy?1:0)})(r,Mt,At,tt,n,o,u,et,r.layers[0],r.collisionBoxArray,e.index,e.sourceLayerIndex,r.index,de,me,S,0,ue,Ee,q,e,l,D,x,P,I,C,k)};if(ze==="line")for(const tt of L1(e.geometry,0,0,Tt,Tt)){const Mt=gA(tt,fe,Se,n.vertical||$,o,K,ie,r.overscaling,Tt);for(const wt of Mt)$&&TA(r,$.text,Ie,wt)||dt(tt,wt,I)}else if(ze==="line-center"){for(const tt of e.geometry)if(tt.length>1){const Mt=_A(tt,Se,n.vertical||$,o,K,ie);Mt&&dt(tt,Mt,I)}}else if(e.type==="Polygon")for(const tt of pm(e.geometry,0)){const Mt=xA(tt,16);dt(tt[0],new Gl(Mt.x,Mt.y,0,0,void 0),I)}else if(e.type==="LineString")for(const tt of e.geometry)dt(tt,new Gl(tt[0].x,tt[0].y,0,0,void 0),I);else if(e.type==="Point")for(const tt of e.geometry)for(const Mt of tt)dt([Mt],new Gl(Mt.x,Mt.y,0,0,void 0),I)}const Lf=255,Lc=Lf*Ia;function V1(r,e,n,o,u,l,f,v,S,D,x,P,I,M,C,k,V,U){const q=function(K,Q,ie,fe,de,ue,Se,me){const Ee=[];if(Q.positionedLines.length===0)return Ee;const ze=fe.layout.get("text-rotate").evaluate(ue,{})*Math.PI/180,Ie=function(et){const dt=et[0],tt=et[1],Mt=dt*tt;return Mt>0?[dt,-tt]:Mt<0?[-dt,tt]:dt===0?[tt,dt]:[tt,-dt]}(ie);let Re=Math.abs(Q.top-Q.bottom);for(const et of Q.positionedLines)Re-=et.lineOffset;const Ve=Q.positionedLines.length,Ue=Re/Ve;let Fe=Q.top-ie[1];for(let et=0;et<Ve;++et){const dt=Q.positionedLines[et];Fe=yA(Q,Ue,Fe,et);for(const tt of dt.positionedGlyphs){if(!tt.rect)continue;const Mt=tt.rect||{};let wt=x1+1,At=!0,rt=1,Ut=0;if(tt.imageName){const Kn=Se[as.build(tt.imageName).getSerializedPrimary()];if(!Kn)continue;if(Kn.sdf){mi("SDF images are not supported in formatted text and will be ignored.");continue}At=!1,rt=Kn.pixelRatio,wt=Cf/rt}const St=(de||me)&&tt.vertical,Nt=tt.metrics.advance*tt.scale/2,Qt=tt.metrics,pi=tt.rect;if(pi===null)continue;me&&Q.verticalizable&&(Ut=tt.imageName?Nt-tt.metrics.width*tt.scale/2:0);const gi=de?[tt.x+Nt,tt.y]:[0,0];let Ai=[0,0],yi=[0,0],Ii=!1;de||(St?(yi=[tt.x+Nt+Ie[0],tt.y+Ie[1]-Ut],Ii=!0):Ai=[tt.x+Nt+ie[0],tt.y+ie[1]-Ut]);const fn=pi.w*tt.scale/(rt*(tt.localGlyph?La:1)),rn=pi.h*tt.scale/(rt*(tt.localGlyph?La:1));let hi,on,en,pn;if(St){const Kn=tt.y-Fe,Gr=new Et(-Nt,Nt-Kn),En=-Math.PI/2,Ln=new Et(...yi);hi=new Et(-Nt+Ai[0],Ai[1]),hi._rotateAround(En,Gr)._add(Ln),hi.x+=-Kn+Nt,hi.y-=(Qt.left-wt)*tt.scale;const Tr=tt.imageName?Qt.advance*tt.scale:ir*tt.scale,ds=String.fromCodePoint(tt.glyph);aA(ds)?hi.x+=(1-wt)*tt.scale:lA(ds)?hi.x+=Tr-Qt.height*tt.scale+(-wt-1)*tt.scale:hi.x+=tt.imageName||Qt.width+2*wt===pi.w&&Qt.height+2*wt===pi.h?(Tr-rn)/2:(Tr-(Qt.height+2*wt)*tt.scale)/2,on=new Et(hi.x,hi.y-fn),en=new Et(hi.x+rn,hi.y),pn=new Et(hi.x+rn,hi.y-fn)}else{const Kn=(Qt.left-wt)*tt.scale-Nt+Ai[0],Gr=(-Qt.top-wt)*tt.scale+Ai[1],En=Kn+fn,Ln=Gr+rn;hi=new Et(Kn,Gr),on=new Et(En,Gr),en=new Et(Kn,Ln),pn=new Et(En,Ln)}if(ze){let Kn;Kn=de?new Et(0,0):Ii?new Et(Ie[0],Ie[1]):new Et(ie[0],ie[1]),hi._rotateAround(ze,Kn),on._rotateAround(ze,Kn),en._rotateAround(ze,Kn),pn._rotateAround(ze,Kn)}const hs=new Et(0,0),us=new Et(0,0);Ee.push({tl:hi,tr:on,bl:en,br:pn,texPrimary:Mt,texSecondary:void 0,writingMode:Q.writingMode,glyphOffset:gi,sectionIndex:tt.sectionIndex,isSDF:At,pixelOffsetTL:hs,pixelOffsetBR:us,minFontScaleX:0,minFontScaleY:0})}}return Ee}(0,o,S,l,f,v,u,r.allowVerticalPlacement),$=r.textSizeData;let H=null;$.kind==="source"?(H=[Ia*l.layout.get("text-size").evaluate(v,{},V)*C.textScaleFactor],H[0]>Lc&&mi(`${r.layerIds[0]}: Value for "text-size" is >= ${Lf}. Reduce your "text-size".`)):$.kind==="composite"&&(H=[Ia*C.compositeTextSizes[0].evaluate(v,{},V)*C.textScaleFactor,Ia*C.compositeTextSizes[1].evaluate(v,{},V)*C.textScaleFactor],(H[0]>Lc||H[1]>Lc)&&mi(`${r.layerIds[0]}: Value for "text-size" is >= ${Lf}. Reduce your "text-size".`)),r.addSymbols(r.text,q,H,S,f,v,x,e,n,D.lineStartIndex,D.lineLength,M,k,V,U,!1);for(const K of P)I[K]=r.text.placedSymbolArray.length-1;return 4*q.length}function U1(r){for(const e in r)return r[e];return null}function Am(r,e,n,o,u,l,f,v,S,D,x=1){let P=f.top/x,I=f.bottom/x,M=f.left/x,C=f.right/x;const k=f.collisionPadding;if(k&&(M-=k[0],P-=k[1],C+=k[2],I+=k[3]),S){const V=new Et(M,P),U=new Et(C,P),q=new Et(M,I),$=new Et(C,I),H=vi(S);let K=new Et(0,0);D&&(K=new Et(D[0],D[1])),V._rotateAround(H,K),U._rotateAround(H,K),q._rotateAround(H,K),$._rotateAround(H,K),M=Math.min(V.x,U.x,q.x,$.x),C=Math.max(V.x,U.x,q.x,$.x),P=Math.min(V.y,U.y,q.y,$.y),I=Math.max(V.y,U.y,q.y,$.y)}return r.emplaceBack(e.x,e.y,e.z,n.x,n.y,M,P,C,I,v,o,u,l),r.length-1}function Vg(r){r.collisionPadding&&(r.top-=r.collisionPadding[1],r.bottom+=r.collisionPadding[3]);const e=r.bottom-r.top;return e>0?Math.max(10,e):null}function TA(r,e,n,o){const u=r.compareText;if(e in u){const l=u[e];for(let f=l.length-1;f>=0;f--)if(o.dist(l[f])<n)return!0}else u[e]=[];return u[e].push(o),!1}function j1(r,e){const n=r.fovAboveCenter,o=r.elevation?r.elevation.getMinElevationBelowMSL()*e:0,u=(r._camera.position[2]*r.worldSize-o)/Math.cos(r._pitch),l=Math.sin(n)*u/Math.sin(Math.max(Math.PI/2-r._pitch-n,.01));let f=Math.sin(r._pitch)*l+u;const v=u*(1/r._horizonShift);return r.elevation&&r.elevation.exaggeration()!==0||(f*=1+Math.max(r.zoom-17,0)),Math.min(1.01*f,v)}function zf(r,e){if(!e.isReprojectedInTileSpace)return{scale:1<<r.z,x:r.x,y:r.y,x2:r.x+1,y2:r.y+1,projection:e};const n=Math.pow(2,-r.z),o=r.x*n,u=(r.x+1)*n,l=r.y*n,f=(r.y+1)*n,v=Vr(o),S=Vr(u),D=Fs(l),x=Fs(f),P=e.project(v,D),I=e.project(S,D),M=e.project(S,x),C=e.project(v,x);let k=Math.min(P.x,I.x,M.x,C.x),V=Math.min(P.y,I.y,M.y,C.y),U=Math.max(P.x,I.x,M.x,C.x),q=Math.max(P.y,I.y,M.y,C.y);const $=n/16;function H(Q,ie,fe,de,ue,Se){const me=(fe+ue)/2,Ee=(de+Se)/2,ze=e.project(Vr(me),Fs(Ee)),Ie=Math.max(0,k-ze.x,V-ze.y,ze.x-U,ze.y-q);k=Math.min(k,ze.x),U=Math.max(U,ze.x),V=Math.min(V,ze.y),q=Math.max(q,ze.y),Ie>$&&(H(Q,ze,fe,de,me,Ee),H(ze,ie,me,Ee,ue,Se))}H(P,I,o,l,u,l),H(I,M,u,l,u,f),H(M,C,u,f,o,f),H(C,P,o,f,o,l),k-=$,V-=$,U+=$,q+=$;const K=1/Math.max(U-k,q-V);return{scale:K,x:k*K,y:V*K,x2:U*K,y2:q*K,projection:e}}function G1(r,{x:e,y:n},o=0){return new Et(((e-o)*r.scale-r.x)*Tt,(n*r.scale-r.y)*Tt)}const MA=De.mat4.identity(new Float32Array(16));class zc{constructor(e){this.spec=e,this.name=e.name,this.wrap=!1,this.requiresDraping=!1,this.supportsWorldCopies=!1,this.supportsTerrain=!1,this.supportsFog=!1,this.supportsFreeCamera=!1,this.zAxisUnit="meters",this.isReprojectedInTileSpace=!0,this.unsupportedLayers=["custom"],this.center=[0,0],this.range=[3.5,7]}project(e,n){return{x:0,y:0,z:0}}unproject(e,n){return new Ui(0,0)}projectTilePoint(e,n,o){return{x:e,y:n,z:0}}locationPoint(e,n,o=!0){return e._coordinatePoint(e.locationCoordinate(n),o)}pixelsPerMeter(e,n){return pr(1,e)*n}pixelSpaceConversion(e,n,o){return 1}farthestPixelDistance(e){return j1(e,e.pixelsPerMeter)}pointCoordinate(e,n,o,u){const l=e.horizonLineFromTop(!1),f=new Et(n,Math.max(l,o));return e.rayIntersectionCoordinate(e.pointRayIntersection(f,u))}pointCoordinate3D(e,n,o){const u=new Et(n,o);if(e.elevation)return e.elevation.pointCoordinate(u);{const l=this.pointCoordinate(e,u.x,u.y,0);return[l.x,l.y,l.z]}}isPointAboveHorizon(e,n){if(e.elevation&&e.elevation.visibleDemTiles.length)return!this.pointCoordinate3D(e,n.x,n.y);const o=e.horizonLineFromTop();return n.y<o}createInversionMatrix(e,n){return MA}createTileMatrix(e,n,o){let u,l,f;const v=o.canonical,S=De.mat4.identity(new Float64Array(16));if(this.isReprojectedInTileSpace){const D=zf(v,this);u=1,l=D.x+o.wrap*D.scale,f=D.y,De.mat4.scale(S,S,[u/D.scale,u/D.scale,e.pixelsPerMeter/n])}else u=n/e.zoomScale(v.z),l=(v.x+Math.pow(2,v.z)*o.wrap)*u,f=v.y*u;return De.mat4.translate(S,S,[l,f,0]),De.mat4.scale(S,S,[u/Tt,u/Tt,1]),S}upVector(e,n,o){return[0,0,1]}upVectorScale(e,n,o){return{metersToTile:1}}}class SA extends zc{constructor(e){super(e),this.range=[4,7],this.center=e.center||[-96,37.5];const[n,o]=this.parallels=e.parallels||[29.5,45.5],u=Math.sin(vi(n));this.n=(u+Math.sin(vi(o)))/2,this.c=1+u*(2*this.n-u),this.r0=Math.sqrt(this.c)/this.n}project(e,n){const{n:o,c:u,r0:l}=this,f=vi(e-this.center[0]),v=vi(n),S=Math.sqrt(u-2*o*Math.sin(v))/o;return{x:S*Math.sin(f*o),y:S*Math.cos(f*o)-l,z:0}}unproject(e,n){const{n:o,c:u,r0:l}=this,f=l+n;let v=Math.atan2(e,Math.abs(f))*Math.sign(f);f*o<0&&(v-=Math.PI*Math.sign(e)*Math.sign(f));const S=vi(this.center[0])*o;v=zn(v,-Math.PI-S,Math.PI-S);const D=si(kn(v/o)+this.center[0],-180,180),x=Math.asin(si((u-(e*e+f*f)*o*o)/(2*o),-1,1)),P=si(kn(x),-jn,jn);return new Ui(D,P)}}const Df=1.340264,kf=-.081106,Rf=893e-6,Of=.003796,Cm=Math.sqrt(3)/2;class EA extends zc{project(e,n){n=n/180*Math.PI,e=e/180*Math.PI;const o=Math.asin(Cm*Math.sin(n)),u=o*o,l=u*u*u;return{x:.5*(e*Math.cos(o)/(Cm*(Df+3*kf*u+l*(7*Rf+9*Of*u)))/Math.PI+.5),y:1-.5*(o*(Df+kf*u+l*(Rf+Of*u))/Math.PI+1),z:0}}unproject(e,n){e=(2*e-.5)*Math.PI;let o=n=(2*(1-n)-1)*Math.PI,u=o*o,l=u*u*u;for(let x,P,I,M=0;M<12&&(P=o*(Df+kf*u+l*(Rf+Of*u))-n,I=Df+3*kf*u+l*(7*Rf+9*Of*u),x=P/I,o=si(o-x,-Math.PI/3,Math.PI/3),u=o*o,l=u*u*u,!(Math.abs(x)<1e-12));++M);const f=Cm*e*(Df+3*kf*u+l*(7*Rf+9*Of*u))/Math.cos(o),v=Math.asin(Math.sin(o)/Cm),S=si(180*f/Math.PI,-180,180),D=si(180*v/Math.PI,-jn,jn);return new Ui(S,D)}}class PA extends zc{constructor(e){super(e),this.wrap=!0,this.supportsWorldCopies=!0}project(e,n){return{x:.5+e/360,y:.5-n/360,z:0}}unproject(e,n){const o=360*(e-.5),u=si(360*(.5-n),-jn,jn);return new Ui(o,u)}}const Hu=Math.PI/2;function Im(r){return Math.tan((Hu+r)/2)}class AA extends zc{constructor(e){super(e),this.center=e.center||[0,30];const[n,o]=this.parallels=e.parallels||[30,30];let u=vi(n),l=vi(o);this.southernCenter=u+l<0,this.southernCenter&&(u=-u,l=-l);const f=Math.cos(u),v=Im(u);this.n=u===l?Math.sin(u):Math.log(f/Math.cos(l))/Math.log(Im(l)/v),this.f=f*Math.pow(Im(u),this.n)/this.n}project(e,n){n=vi(n),this.southernCenter&&(n=-n),e=vi(e-this.center[0]);const o=1e-6,{n:u,f:l}=this;l>0?n<-Hu+o&&(n=-Hu+o):n>Hu-o&&(n=Hu-o);const f=l/Math.pow(Im(n),u);let v=f*Math.sin(u*e),S=l-f*Math.cos(u*e);return v=.5*(v/Math.PI+.5),S=.5*(S/Math.PI+.5),{x:v,y:this.southernCenter?S:1-S,z:0}}unproject(e,n){e=(2*e-.5)*Math.PI,this.southernCenter&&(n=1-n),n=(2*(1-n)-.5)*Math.PI;const{n:o,f:u}=this,l=u-n,f=Math.sign(l),v=Math.sign(o)*Math.sqrt(e*e+l*l);let S=Math.atan2(e,Math.abs(l))*f;l*o<0&&(S-=Math.PI*Math.sign(e)*f);const D=si(kn(S/o)+this.center[0],-180,180),x=si(kn(2*Math.atan(Math.pow(u/v,1/o))-Hu),-jn,jn);return new Ui(D,this.southernCenter?-x:x)}}class Z1 extends zc{constructor(e){super(e),this.wrap=!0,this.supportsWorldCopies=!0,this.supportsTerrain=!0,this.supportsFog=!0,this.supportsFreeCamera=!0,this.isReprojectedInTileSpace=!1,this.unsupportedLayers=[],this.range=null}project(e,n){return{x:sa(e),y:Aa(n),z:0}}unproject(e,n){const o=Vr(e),u=Fs(n);return new Ui(o,u)}}const H1=vi(jn);class CA extends zc{project(e,n){const o=(n=vi(n))*n,u=o*o;return{x:.5*((e=vi(e))*(.8707-.131979*o+u*(u*(.003971*o-.001529*u)-.013791))/Math.PI+.5),y:1-.5*(n*(1.007226+o*(.015085+u*(.028874*o-.044475-.005916*u)))/Math.PI+1),z:0}}unproject(e,n){e=(2*e-.5)*Math.PI;let o=n=(2*(1-n)-1)*Math.PI,u=25,l=0,f=o*o;do{f=o*o;const D=f*f;l=(o*(1.007226+f*(.015085+D*(.028874*f-.044475-.005916*D)))-n)/(1.007226+f*(.045255+D*(.259866*f-.311325-.005916*11*D))),o=si(o-l,-H1,H1)}while(Math.abs(l)>1e-6&&--u>0);f=o*o;const v=si(kn(e/(.8707+f*(f*(f*f*f*(.003971-.001529*f)-.013791)-.131979))),-180,180),S=kn(o);return new Ui(v,S)}}const q1=vi(jn);class IA extends zc{project(e,n){n=vi(n),e=vi(e);const o=Math.cos(n),u=2/Math.PI,l=Math.acos(o*Math.cos(e/2)),f=Math.sin(l)/l,v=.5*(e*u+2*o*Math.sin(e/2)/f)||0,S=.5*(n+Math.sin(n)/f)||0;return{x:.5*(v/Math.PI+.5),y:1-.5*(S/Math.PI+1),z:0}}unproject(e,n){let o=e=(2*e-.5)*Math.PI,u=n=(2*(1-n)-1)*Math.PI,l=25;const f=1e-6;let v=0,S=0;do{const D=Math.cos(u),x=Math.sin(u),P=2*x*D,I=x*x,M=D*D,C=Math.cos(o/2),k=Math.sin(o/2),V=2*C*k,U=k*k,q=1-M*C*C,$=q?1/q:0,H=q?Math.acos(D*C)*Math.sqrt(1/q):0,K=.5*(2*H*D*k+2*o/Math.PI)-e,Q=.5*(H*x+u)-n,ie=.5*$*(M*U+H*D*C*I)+1/Math.PI,fe=$*(V*P/4-H*x*k),de=.125*$*(P*k-H*x*M*V),ue=.5*$*(I*C+H*U*D)+.5,Se=fe*de-ue*ie;v=(Q*fe-K*ue)/Se,S=(K*de-Q*ie)/Se,o=si(o-v,-Math.PI,Math.PI),u=si(u-S,-q1,q1)}while((Math.abs(v)>f||Math.abs(S)>f)&&--l>0);return new Ui(kn(o),kn(u))}}class W1 extends zc{constructor(e){super(e),this.center=e.center||[0,0],this.parallels=e.parallels||[0,0],this.cosPhi=Math.max(.01,Math.cos(vi(this.parallels[0]))),this.scale=1/(2*Math.max(Math.PI*this.cosPhi,1/this.cosPhi)),this.wrap=!0,this.supportsWorldCopies=!0}project(e,n){const{scale:o,cosPhi:u}=this;return{x:vi(e)*u*o+.5,y:-Math.sin(vi(n))/u*o+.5,z:0}}unproject(e,n){const{scale:o,cosPhi:u}=this,l=-(n-.5)/o,f=si(kn((e-.5)/o)/u,-180,180),v=Math.asin(si(l*u,-1,1)),S=si(kn(v),-jn,jn);return new Ui(f,S)}}class LA extends Z1{constructor(e){super(e),this.requiresDraping=!0,this.supportsWorldCopies=!1,this.supportsFog=!0,this.zAxisUnit="pixels",this.unsupportedLayers=["debug"],this.range=[3,5]}projectTilePoint(e,n,o){const u=Ri(e,n,o),l=cn(is(o));return De.vec3.transformMat4(u,u,l),{x:u[0],y:u[1],z:u[2]}}locationPoint(e,n){const o=rl(n.lat,n.lng),u=De.vec3.normalize([],o),l=e.elevation?e.elevation.getAtPointOrZero(e.locationCoordinate(n),e._centerAltitude):e._centerAltitude,f=pr(1,0)*Tt*l;De.vec3.scaleAndAdd(o,o,u,f);const v=De.mat4.identity(new Float64Array(16));return De.mat4.multiply(v,e.pixelMatrix,e.globeMatrix),De.vec3.transformMat4(o,o,v),new Et(o[0],o[1])}pixelsPerMeter(e,n){return pr(1,0)*n}pixelSpaceConversion(e,n,o){const u=pr(1,e)*n,l=ei(pr(1,45)*n,u,o);return this.pixelsPerMeter(e,n)/l}createTileMatrix(e,n,o){const u=tr(is(o.canonical));return De.mat4.multiply(new Float64Array(16),e.globeMatrix,u)}createInversionMatrix(e,n){const{center:o}=e,u=cn(is(n));return De.mat4.rotateY(u,u,vi(o.lng)),De.mat4.rotateX(u,u,vi(o.lat)),De.mat4.scale(u,u,[e._pixelsPerMercatorPixel,e._pixelsPerMercatorPixel,1]),Float32Array.from(u)}pointCoordinate(e,n,o,u){return In(e,n,o,!0)||new h(0,0)}pointCoordinate3D(e,n,o){const u=this.pointCoordinate(e,n,o,0);return[u.x,u.y,u.z]}isPointAboveHorizon(e,n){return!In(e,n.x,n.y,!1)}farthestPixelDistance(e){const n=function(u,l){const f=u.cameraToCenterDistance,v=u._centerAltitude*l,S=u._camera,D=u._camera.forward(),x=De.vec3.add([],De.vec3.scale([],D,-f),[0,0,v]),P=u.worldSize/(2*Math.PI),I=[0,0,-P],M=u.width/u.height,C=Math.tan(u.fovAboveCenter),k=De.vec3.scale([],S.up(),C),V=De.vec3.scale([],S.right(),C*M),U=De.vec3.normalize([],De.vec3.add([],De.vec3.add([],D,k),V)),q=[];let $;if(new zi(x,U).closestPointOnSphere(I,P,q)){const H=De.vec3.add([],q,I),K=De.vec3.sub([],H,x);$=Math.cos(u.fovAboveCenter)*De.vec3.length(K)}else{const H=De.vec3.sub([],x,I),K=De.vec3.sub([],I,x);De.vec3.normalize(K,K);const Q=De.vec3.length(H)-P;$=Math.sqrt(Q*(Q+2*P));const ie=Math.acos($/(P+Q))-Math.acos(De.vec3.dot(D,K));$*=Math.cos(ie)}return 1.01*$}(e,this.pixelsPerMeter(e.center.lat,e.worldSize)),o=_r(e.zoom);if(o>0){const u=j1(e,pr(1,e.center.lat)*e.worldSize),l=e.worldSize/(2*Math.PI),f=Math.max(e.width,e.height)/e.worldSize*Math.PI;return ei(n,u+l*(1-Math.cos(f)),Math.pow(o,10))}return n}upVector(e,n,o){return Ri(n,o,e,1)}upVectorScale(e){return{metersToTile:ji(Zn(is(e)))}}}function $1(r){const e=r.parallels,n=!!e&&Math.abs(e[0]+e[1])<.01;switch(r.name){case"mercator":return new Z1(r);case"equirectangular":return new PA(r);case"naturalEarth":return new CA(r);case"equalEarth":return new EA(r);case"winkelTripel":return new IA(r);case"albers":return n?new W1(r):new SA(r);case"lambertConformalConic":return n?new W1(r):new AA(r);case"globe":return new LA(r)}throw new Error(`Invalid projection name: ${r.name}`)}const zA=Vu.VectorTileFeature.types,DA=[{name:"a_fade_opacity",components:1,type:"Uint8",offset:0}];function Lm(r,e,n,o,u,l,f,v,S,D,x,P,I){const M=v?Math.min(Lc,Math.round(v[0])):0,C=v?Math.min(Lc,Math.round(v[1])):0;r.emplaceBack(e,n,Math.round(32*o),Math.round(32*u),l,f,(M<<1)+(S?1:0),C,16*D,16*x,256*P,256*I)}function zm(r,e,n){r.emplaceBack(e,n)}function Dm(r,e,n,o,u,l,f){r.emplaceBack(e,n,o,u,l,f)}function km(r,e,n,o,u){r.emplaceBack(e,n,o,u),r.emplaceBack(e,n,o,u),r.emplaceBack(e,n,o,u),r.emplaceBack(e,n,o,u)}function kA(r){for(const e of r.sections)if(Gp(e.text))return!0;return!1}class Ug{constructor(e){this.layoutVertexArray=new tf,this.indexArray=new qs,this.programConfigurations=e,this.segments=new Wn,this.dynamicLayoutVertexArray=new el,this.opacityVertexArray=new sf,this.placedSymbolArray=new Qp,this.iconTransitioningVertexArray=new il,this.globeExtVertexArray=new nf,this.zOffsetVertexArray=new wc}isEmpty(){return this.layoutVertexArray.length===0&&this.indexArray.length===0&&this.dynamicLayoutVertexArray.length===0&&this.opacityVertexArray.length===0&&this.iconTransitioningVertexArray.length===0}upload(e,n,o,u,l){this.isEmpty()||(o&&(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,KP.members),this.indexBuffer=e.createIndexBuffer(this.indexArray,n),this.dynamicLayoutVertexBuffer=e.createVertexBuffer(this.dynamicLayoutVertexArray,QP.members,!0),this.opacityVertexBuffer=e.createVertexBuffer(this.opacityVertexArray,DA,!0),this.iconTransitioningVertexArray.length>0&&(this.iconTransitioningVertexBuffer=e.createVertexBuffer(this.iconTransitioningVertexArray,tA.members,!0)),this.globeExtVertexArray.length>0&&(this.globeExtVertexBuffer=e.createVertexBuffer(this.globeExtVertexArray,JP.members,!0)),!this.zOffsetVertexBuffer&&(this.zOffsetVertexArray.length>0||l)&&(this.zOffsetVertexBuffer=e.createVertexBuffer(this.zOffsetVertexArray,eA.members,!0)),this.opacityVertexBuffer.itemSize=1),(o||u)&&this.programConfigurations.upload(e))}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy(),this.iconTransitioningVertexBuffer&&this.iconTransitioningVertexBuffer.destroy(),this.globeExtVertexBuffer&&this.globeExtVertexBuffer.destroy(),this.zOffsetVertexBuffer&&this.zOffsetVertexBuffer.destroy())}}Ft(Ug,"SymbolBuffers");class jg{constructor(e,n,o){this.layoutVertexArray=new e,this.layoutAttributes=n,this.indexArray=new o,this.segments=new Wn,this.collisionVertexArray=new of,this.collisionVertexArrayExt=new el}upload(e){this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=e.createVertexBuffer(this.collisionVertexArray,iA.members,!0),this.collisionVertexBufferExt=e.createVertexBuffer(this.collisionVertexArrayExt,nA.members,!0)}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy(),this.collisionVertexBufferExt.destroy())}}Ft(jg,"CollisionBuffers");class Rm{constructor(e){this.collisionBoxArray=e.collisionBoxArray,this.zoom=e.zoom,this.lut=e.lut,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(f=>f.fqid),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.fullyClipped=!1,this.hasAnyIconTextFit=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=De.mat4.identity([]),this.placementViewportMatrix=De.mat4.identity([]);const n=this.layers[0]._unevaluatedLayout._values;this.textSizeData=Ig(this.zoom,n["text-size"]),this.iconSizeData=Ig(this.zoom,n["icon-size"]);const o=this.layers[0].layout,u=o.get("symbol-sort-key"),l=o.get("symbol-z-order");this.canOverlap=o.get("text-allow-overlap")||o.get("icon-allow-overlap")||o.get("text-ignore-placement")||o.get("icon-ignore-placement"),this.sortFeaturesByKey=l!=="viewport-y"&&u.constantOr(1)!==void 0,this.sortFeaturesByY=(l==="viewport-y"||l==="auto"&&!this.sortFeaturesByKey)&&this.canOverlap,this.writingModes=o.get("text-writing-mode").map(f=>Fo[f]),this.stateDependentLayerIds=this.layers.filter(f=>f.isStateDependent()).map(f=>f.id),this.sourceID=e.sourceID,this.projection=e.projection,this.hasAnyZOffset=!1,this.zOffsetSortDirty=!1,this.zOffsetBuffersNeedUpload=o.get("symbol-z-elevate"),this.activeReplacements=[],this.replacementUpdateTime=0}createArrays(){this.text=new Ug(new sl(this.layers,{zoom:this.zoom,lut:this.lut},e=>e.startsWith("text")||e.startsWith("symbol"))),this.icon=new Ug(new sl(this.layers,{zoom:this.zoom,lut:this.lut},e=>e.startsWith("icon")||e.startsWith("symbol"))),this.glyphOffsetArray=new Mh,this.lineVertexArray=new Sh,this.symbolInstances=new tm}calculateGlyphDependencies(e,n,o,u,l){for(const f of e){const v=f.codePointAt(0);if(v===void 0)break;if(n[v]=!0,u&&l&&v<=65535){const S=Pf[f];S&&(n[S.charCodeAt(0)]=!0)}}}updateFootprints(e,n){}updateReplacement(e,n){if(n.updateTime===this.replacementUpdateTime)return!1;this.replacementUpdateTime=n.updateTime;const o=n.getReplacementRegionsForTile(e.toUnwrapped(),!0);return!Tg(this.activeReplacements,o)&&(this.activeReplacements=o,!0)}populate(e,n,o,u){const l=this.layers[0],f=l.layout,v=this.projection.name==="globe",S=f.get("text-font"),D=f.get("text-field"),x=f.get("icon-image"),[P,I]=f.get("icon-size-scale-range"),M=si(n.scaleFactor||1,P,I),C=(D.value.kind!=="constant"||D.value.value instanceof Dn&&!D.value.value.isEmpty()||D.value.value.toString().length>0)&&(S.value.kind!=="constant"||S.value.value.length>0),k=x.value.kind!=="constant"||!!x.value.value||Object.keys(x.parameters).length>0,V=f.get("symbol-sort-key");if(this.features=[],!C&&!k)return;const U=n.iconDependencies,q=n.glyphDependencies,$=n.availableImages,H=new Tn(this.zoom);for(const{feature:K,id:Q,index:ie,sourceLayerIndex:fe}of e){const de=l._featureFilter.needGeometry,ue=Z(K,de);if(!l._featureFilter.filter(H,ue,o))continue;if(de||(ue.geometry=G(K,o,u)),v&&K.type!==1&&o.z<=5){const Ie=ue.geometry,Re=.98078528056,Ve=(Ue,Fe)=>{const et=Ri(Ue.x,Ue.y,o,1),dt=Ri(Fe.x,Fe.y,o,1);return De.vec3.dot(et,dt)<Re};for(let Ue=0;Ue<Ie.length;Ue++)Ie[Ue]=z(Ie[Ue],Ve)}let Se,me;if(C){const Ie=l.getValueAndResolveTokens("text-field",ue,o,$),Re=Dn.factory(Ie);kA(Re)&&(this.hasRTLText=!0),(!this.hasRTLText||gu()==="unavailable"||this.hasRTLText&&fo.isParsed())&&(Se=oA(Re,l,ue))}if(k){const Ie=l.getValueAndResolveTokens("icon-image",ue,o,$);me=Ie instanceof as?Ie:as.build(Ie)}if(!Se&&!me)continue;const Ee=this.sortFeaturesByKey?V.evaluate(ue,{},o):void 0,ze={id:Q,text:Se,icon:me,index:ie,sourceLayerIndex:fe,geometry:ue.geometry,properties:K.properties,type:zA[K.type],sortKey:Ee};if(this.features.push(ze),me){const Ie=bm(this.iconSizeData,this.layers[0]._unevaluatedLayout._values["icon-size"],o,this.zoom,ze)*M*this.pixelRatio,Re=me.getPrimary().scaleSelf(Ie);if(U[Re.id]=U[Re.id]||[],U[Re.id].push(Re),me.nameSecondary){const Ve=me.getSecondary().scaleSelf(Ie);U[Ve.id]=U[Ve.id]||[],U[Ve.id].push(Ve)}}if(Se){const Ie=S.evaluate(ue,{},o).join(","),Re=f.get("text-rotation-alignment")==="map"&&f.get("symbol-placement")!=="point";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(Fo.vertical)>=0;for(const Ve of Se.sections)if(Ve.image){const Ue=Ve.image.getPrimary().scaleSelf(this.pixelRatio);U[Ue.id]=U[Ue.id]||[],U[Ue.id].push(Ue)}else{const Ue=Wd(Se.toString()),Fe=Ve.fontStack||Ie,et=q[Fe]=q[Fe]||{};this.calculateGlyphDependencies(Ve.text,et,Re,this.allowVerticalPlacement,Ue)}}}f.get("symbol-placement")==="line"&&(this.features=function(K){const Q={},ie={},fe=[];let de=0;function ue(ze){fe.push(K[ze]),de++}function Se(ze,Ie,Re){const Ve=ie[ze];return delete ie[ze],ie[Ie]=Ve,fe[Ve].geometry[0].pop(),fe[Ve].geometry[0]=fe[Ve].geometry[0].concat(Re[0]),Ve}function me(ze,Ie,Re){const Ve=Q[Ie];return delete Q[Ie],Q[ze]=Ve,fe[Ve].geometry[0].shift(),fe[Ve].geometry[0]=Re[0].concat(fe[Ve].geometry[0]),Ve}function Ee(ze,Ie,Re){const Ve=Re?Ie[0][Ie[0].length-1]:Ie[0][0];return`${ze}:${Ve.x}:${Ve.y}`}for(let ze=0;ze<K.length;ze++){const Ie=K[ze],Re=Ie.geometry,Ve=Ie.text?Ie.text.toString():null;if(!Ve){ue(ze);continue}const Ue=Ee(Ve,Re),Fe=Ee(Ve,Re,!0);if(Ue in ie&&Fe in Q&&ie[Ue]!==Q[Fe]){const et=me(Ue,Fe,Re),dt=Se(Ue,Fe,fe[et].geometry);delete Q[Ue],delete ie[Fe],ie[Ee(Ve,fe[dt].geometry,!0)]=dt,fe[et].geometry=null}else Ue in ie?Se(Ue,Fe,Re):Fe in Q?me(Ue,Fe,Re):(ue(ze),Q[Ue]=de-1,ie[Fe]=de-1)}return fe.filter(ze=>ze.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort((K,Q)=>K.sortKey-Q.sortKey)}update(e,n,o,u,l,f,v){this.text.programConfigurations.updatePaintArrays(e,n,l,o,u,f,v),this.icon.programConfigurations.updatePaintArrays(e,n,l,o,u,f,v)}updateZOffset(){const e=(l,f,v)=>{o+=f,o>l.length&&l.resize(o);for(let S=-f;S<0;S++)l.emplace(S+o,v)},n=(l,f,v)=>{u+=f,u>l.length&&l.resize(u);for(let S=-f;S<0;S++)l.emplace(S+u,v)};if(!this.zOffsetBuffersNeedUpload)return;this.zOffsetBuffersNeedUpload=!1;let o=0,u=0;for(let l=0;l<this.symbolInstances.length;l++){const f=this.symbolInstances.get(l),{numHorizontalGlyphVertices:v,numVerticalGlyphVertices:S,numIconVertices:D}=f,x=f.zOffset,P=D>0;if((v>0||S>0)&&(e(this.text.zOffsetVertexArray,v,x),e(this.text.zOffsetVertexArray,S,x)),P){const{placedIconSymbolIndex:I,verticalPlacedIconSymbolIndex:M}=f;I>=0&&n(this.icon.zOffsetVertexArray,D,x),M>=0&&n(this.icon.zOffsetVertexArray,f.numVerticalIconVertices,x)}}this.text.zOffsetVertexBuffer&&this.text.zOffsetVertexBuffer.updateData(this.text.zOffsetVertexArray),this.icon.zOffsetVertexBuffer&&this.icon.zOffsetVertexBuffer.updateData(this.icon.zOffsetVertexArray)}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(e){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(e),this.iconCollisionBox.upload(e)),this.text.upload(e,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload,this.zOffsetBuffersNeedUpload),this.icon.upload(e,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload,this.zOffsetBuffersNeedUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}getProjection(){return this.projectionInstance||(this.projectionInstance=$1(this.projection)),this.projectionInstance}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(e,n){const o=this.lineVertexArray.length;if(e.segment!==void 0)for(const{x:u,y:l}of n)this.lineVertexArray.emplaceBack(u,l);return{lineStartIndex:o,lineLength:this.lineVertexArray.length-o}}addSymbols(e,n,o,u,l,f,v,S,D,x,P,I,M,C,k,V){const U=e.indexArray,q=e.layoutVertexArray,$=e.globeExtVertexArray,H=e.segments.prepareSegment(4*n.length,q,U,this.canOverlap?f.sortKey:void 0),K=this.glyphOffsetArray.length,Q=H.vertexLength,ie=this.allowVerticalPlacement&&v===Fo.vertical?Math.PI/2:0,fe=f.text&&f.text.sections;for(let ue=0;ue<n.length;ue++){const{tl:Se,tr:me,bl:Ee,br:ze,texPrimary:Ie,texSecondary:Re,pixelOffsetTL:Ve,pixelOffsetBR:Ue,minFontScaleX:Fe,minFontScaleY:et,glyphOffset:dt,isSDF:tt,sectionIndex:Mt}=n[ue],wt=H.vertexLength,At=dt[1];if(Lm(q,D.x,D.y,Se.x,At+Se.y,Ie.x,Ie.y,o,tt,Ve.x,Ve.y,Fe,et),Lm(q,D.x,D.y,me.x,At+me.y,Ie.x+Ie.w,Ie.y,o,tt,Ue.x,Ve.y,Fe,et),Lm(q,D.x,D.y,Ee.x,At+Ee.y,Ie.x,Ie.y+Ie.h,o,tt,Ve.x,Ue.y,Fe,et),Lm(q,D.x,D.y,ze.x,At+ze.y,Ie.x+Ie.w,Ie.y+Ie.h,o,tt,Ue.x,Ue.y,Fe,et),S){const{x:rt,y:Ut,z:St}=S.anchor,[Nt,Qt,pi]=S.up;Dm($,rt,Ut,St,Nt,Qt,pi),Dm($,rt,Ut,St,Nt,Qt,pi),Dm($,rt,Ut,St,Nt,Qt,pi),Dm($,rt,Ut,St,Nt,Qt,pi),km(e.dynamicLayoutVertexArray,rt,Ut,St,ie)}else km(e.dynamicLayoutVertexArray,D.x,D.y,D.z,ie);if(V){const rt=Re||Ie;zm(e.iconTransitioningVertexArray,rt.x,rt.y),zm(e.iconTransitioningVertexArray,rt.x+rt.w,rt.y),zm(e.iconTransitioningVertexArray,rt.x,rt.y+rt.h),zm(e.iconTransitioningVertexArray,rt.x+rt.w,rt.y+rt.h)}U.emplaceBack(wt,wt+1,wt+2),U.emplaceBack(wt+1,wt+2,wt+3),H.vertexLength+=4,H.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(dt[0]),ue!==n.length-1&&Mt===n[ue+1].sectionIndex||e.programConfigurations.populatePaintArrays(q.length,f,f.index,{},M,C,k,fe&&fe[Mt])}const de=S?S.anchor:D;e.placedSymbolArray.emplaceBack(de.x,de.y,de.z,D.x,D.y,K,this.glyphOffsetArray.length-K,Q,x,P,D.segment,o?o[0]:0,o?o[1]:0,u[0],u[1],v,0,!1,0,I,0)}_commitLayoutVertex(e,n,o,u,l,f,v){e.emplaceBack(n,o,u,l,f,Math.round(v.x),Math.round(v.y))}_addCollisionDebugVertices(e,n,o,u,l,f,v){const S=o.segments.prepareSegment(4,o.layoutVertexArray,o.indexArray),D=S.vertexLength,x=v.tileAnchorX,P=v.tileAnchorY;for(let M=0;M<4;M++)o.collisionVertexArray.emplaceBack(0,0,0,0,0,0);this._commitDebugCollisionVertexUpdate(o.collisionVertexArrayExt,n,e.padding,v.zOffset),this._commitLayoutVertex(o.layoutVertexArray,u,l,f,x,P,new Et(e.x1,e.y1)),this._commitLayoutVertex(o.layoutVertexArray,u,l,f,x,P,new Et(e.x2,e.y1)),this._commitLayoutVertex(o.layoutVertexArray,u,l,f,x,P,new Et(e.x2,e.y2)),this._commitLayoutVertex(o.layoutVertexArray,u,l,f,x,P,new Et(e.x1,e.y2)),S.vertexLength+=4;const I=o.indexArray;I.emplaceBack(D,D+1),I.emplaceBack(D+1,D+2),I.emplaceBack(D+2,D+3),I.emplaceBack(D+3,D),S.primitiveLength+=4}_addTextDebugCollisionBoxes(e,n,o,u,l,f){for(let v=u;v<l;v++){const S=o.get(v),D=this.getSymbolInstanceTextSize(e,f,n,v);this._addCollisionDebugVertices(S,D,this.textCollisionBox,S.projectedAnchorX,S.projectedAnchorY,S.projectedAnchorZ,f)}}_addIconDebugCollisionBoxes(e,n,o,u,l,f){for(let v=u;v<l;v++){const S=o.get(v),D=this.getSymbolInstanceIconSize(e,n,f.placedIconSymbolIndex);this._addCollisionDebugVertices(S,D,this.iconCollisionBox,S.projectedAnchorX,S.projectedAnchorY,S.projectedAnchorZ,f)}}generateCollisionDebugBuffers(e,n,o){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new jg(Su,m1.members,il),this.iconCollisionBox=new jg(Su,m1.members,il);const u=Uu(this.iconSizeData,e),l=Uu(this.textSizeData,e,o);for(let f=0;f<this.symbolInstances.length;f++){const v=this.symbolInstances.get(f);this._addTextDebugCollisionBoxes(l,e,n,v.textBoxStartIndex,v.textBoxEndIndex,v),this._addTextDebugCollisionBoxes(l,e,n,v.verticalTextBoxStartIndex,v.verticalTextBoxEndIndex,v),this._addIconDebugCollisionBoxes(u,e,n,v.iconBoxStartIndex,v.iconBoxEndIndex,v),this._addIconDebugCollisionBoxes(u,e,n,v.verticalIconBoxStartIndex,v.verticalIconBoxEndIndex,v)}}getSymbolInstanceTextSize(e,n,o,u){const l=this.text.placedSymbolArray.get(n.rightJustifiedTextSymbolIndex>=0?n.rightJustifiedTextSymbolIndex:n.centerJustifiedTextSymbolIndex>=0?n.centerJustifiedTextSymbolIndex:n.leftJustifiedTextSymbolIndex>=0?n.leftJustifiedTextSymbolIndex:n.verticalPlacedTextSymbolIndex>=0?n.verticalPlacedTextSymbolIndex:u),f=wm(this.textSizeData,e,l)/ir;return this.tilePixelRatio*f}getSymbolInstanceIconSize(e,n,o){const u=this.icon.placedSymbolArray.get(o),l=wm(this.iconSizeData,e,u);return this.tilePixelRatio*l}_commitDebugCollisionVertexUpdate(e,n,o,u){e.emplaceBack(n,-o,-o,u),e.emplaceBack(n,o,-o,u),e.emplaceBack(n,o,o,u),e.emplaceBack(n,-o,o,u)}_updateTextDebugCollisionBoxes(e,n,o,u,l,f,v){for(let S=u;S<l;S++){const D=o.get(S),x=this.getSymbolInstanceTextSize(e,f,n,S);this._commitDebugCollisionVertexUpdate(this.textCollisionBox.collisionVertexArrayExt,x,D.padding,f.zOffset)}}_updateIconDebugCollisionBoxes(e,n,o,u,l,f,v){for(let S=u;S<l;S++){const D=o.get(S),x=this.getSymbolInstanceIconSize(e,n,f.placedIconSymbolIndex);this._commitDebugCollisionVertexUpdate(this.iconCollisionBox.collisionVertexArrayExt,x,D.padding,f.zOffset)}}updateCollisionDebugBuffers(e,n,o,u){if(!this.hasDebugData())return;this.hasTextCollisionBoxData()&&this.textCollisionBox.collisionVertexArrayExt.clear(),this.hasIconCollisionBoxData()&&this.iconCollisionBox.collisionVertexArrayExt.clear();const l=Uu(this.iconSizeData,e,u),f=Uu(this.textSizeData,e,o);for(let v=0;v<this.symbolInstances.length;v++){const S=this.symbolInstances.get(v);this._updateTextDebugCollisionBoxes(f,e,n,S.textBoxStartIndex,S.textBoxEndIndex,S,o),this._updateTextDebugCollisionBoxes(f,e,n,S.verticalTextBoxStartIndex,S.verticalTextBoxEndIndex,S,o),this._updateIconDebugCollisionBoxes(l,e,n,S.iconBoxStartIndex,S.iconBoxEndIndex,S,u),this._updateIconDebugCollisionBoxes(l,e,n,S.verticalIconBoxStartIndex,S.verticalIconBoxEndIndex,S,u)}this.hasTextCollisionBoxData()&&this.textCollisionBox.collisionVertexBufferExt&&this.textCollisionBox.collisionVertexBufferExt.updateData(this.textCollisionBox.collisionVertexArrayExt),this.hasIconCollisionBoxData()&&this.iconCollisionBox.collisionVertexBufferExt&&this.iconCollisionBox.collisionVertexBufferExt.updateData(this.iconCollisionBox.collisionVertexArrayExt)}_deserializeCollisionBoxesForSymbol(e,n,o,u,l,f,v,S,D){const x={};if(n<o){const{x1:P,y1:I,x2:M,y2:C,padding:k,projectedAnchorX:V,projectedAnchorY:U,projectedAnchorZ:q,tileAnchorX:$,tileAnchorY:H,featureIndex:K}=e.get(n);x.textBox={x1:P,y1:I,x2:M,y2:C,padding:k,projectedAnchorX:V,projectedAnchorY:U,projectedAnchorZ:q,tileAnchorX:$,tileAnchorY:H},x.textFeatureIndex=K}if(u<l){const{x1:P,y1:I,x2:M,y2:C,padding:k,projectedAnchorX:V,projectedAnchorY:U,projectedAnchorZ:q,tileAnchorX:$,tileAnchorY:H,featureIndex:K}=e.get(u);x.verticalTextBox={x1:P,y1:I,x2:M,y2:C,padding:k,projectedAnchorX:V,projectedAnchorY:U,projectedAnchorZ:q,tileAnchorX:$,tileAnchorY:H},x.verticalTextFeatureIndex=K}if(f<v){const{x1:P,y1:I,x2:M,y2:C,padding:k,projectedAnchorX:V,projectedAnchorY:U,projectedAnchorZ:q,tileAnchorX:$,tileAnchorY:H,featureIndex:K}=e.get(f);x.iconBox={x1:P,y1:I,x2:M,y2:C,padding:k,projectedAnchorX:V,projectedAnchorY:U,projectedAnchorZ:q,tileAnchorX:$,tileAnchorY:H},x.iconFeatureIndex=K}if(S<D){const{x1:P,y1:I,x2:M,y2:C,padding:k,projectedAnchorX:V,projectedAnchorY:U,projectedAnchorZ:q,tileAnchorX:$,tileAnchorY:H,featureIndex:K}=e.get(S);x.verticalIconBox={x1:P,y1:I,x2:M,y2:C,padding:k,projectedAnchorX:V,projectedAnchorY:U,projectedAnchorZ:q,tileAnchorX:$,tileAnchorY:H},x.verticalIconFeatureIndex=K}return x}deserializeCollisionBoxes(e){this.collisionArrays=[];for(let n=0;n<this.symbolInstances.length;n++){const o=this.symbolInstances.get(n);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(e,o.textBoxStartIndex,o.textBoxEndIndex,o.verticalTextBoxStartIndex,o.verticalTextBoxEndIndex,o.iconBoxStartIndex,o.iconBoxEndIndex,o.verticalIconBoxStartIndex,o.verticalIconBoxEndIndex))}}hasTextData(){return this.text.segments.get().length>0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}hasIconTextFit(){return this.hasAnyIconTextFit}addIndicesForPlacedSymbol(e,n){const o=e.placedSymbolArray.get(n),u=o.vertexStartIndex+4*o.numGlyphs;for(let l=o.vertexStartIndex;l<u;l+=4)e.indexArray.emplaceBack(l,l+1,l+2),e.indexArray.emplaceBack(l+1,l+2,l+3)}getSortedSymbolIndexes(e){if(this.sortedAngle===e&&this.symbolInstanceIndexes!==void 0)return this.symbolInstanceIndexes;const n=Math.sin(e),o=Math.cos(e),u=[],l=[],f=[];for(let v=0;v<this.symbolInstances.length;++v){f.push(v);const S=this.symbolInstances.get(v);u.push(0|Math.round(n*S.tileAnchorX+o*S.tileAnchorY)),l.push(S.featureIndex)}return f.sort((v,S)=>u[v]-u[S]||l[S]-l[v]),f}getSortedIndexesByZOffset(){if(!this.zOffsetSortDirty)return this.symbolInstanceIndexesSortedZOffset;if(!this.symbolInstanceIndexesSortedZOffset){this.symbolInstanceIndexesSortedZOffset=[];for(let e=0;e<this.symbolInstances.length;++e)this.symbolInstanceIndexesSortedZOffset.push(e)}return this.zOffsetSortDirty=!1,this.symbolInstanceIndexesSortedZOffset.sort((e,n)=>this.symbolInstances.get(n).zOffset-this.symbolInstances.get(e).zOffset)}addToSortKeyRanges(e,n){const o=this.sortKeyRanges[this.sortKeyRanges.length-1];o&&o.sortKey===n?o.symbolInstanceEnd=e+1:this.sortKeyRanges.push({sortKey:n,symbolInstanceStart:e,symbolInstanceEnd:e+1})}sortFeatures(e){if(this.sortFeaturesByY&&this.sortedAngle!==e&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(e),this.sortedAngle=e,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const n of this.symbolInstanceIndexes){const o=this.symbolInstances.get(n);this.featureSortOrder.push(o.featureIndex);const{rightJustifiedTextSymbolIndex:u,centerJustifiedTextSymbolIndex:l,leftJustifiedTextSymbolIndex:f,verticalPlacedTextSymbolIndex:v,placedIconSymbolIndex:S,verticalPlacedIconSymbolIndex:D}=o;u>=0&&this.addIndicesForPlacedSymbol(this.text,u),l>=0&&l!==u&&this.addIndicesForPlacedSymbol(this.text,l),f>=0&&f!==l&&f!==u&&this.addIndicesForPlacedSymbol(this.text,f),v>=0&&this.addIndicesForPlacedSymbol(this.text,v),S>=0&&this.addIndicesForPlacedSymbol(this.icon,S),D>=0&&this.addIndicesForPlacedSymbol(this.icon,D)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let X1,Y1,Gg;Ft(Rm,"SymbolBucket",{omit:["layers","collisionBoxArray","features","compareText"]}),Rm.addDynamicAttributes=km;class K1{constructor(e){this.type=e.property.overrides?e.property.overrides.runtimeType:ma,this.defaultValue=e}evaluate(e){if(e.formattedSection){const n=this.defaultValue.property.overrides;if(n&&n.hasOverride(e.formattedSection))return n.getOverride(e.formattedSection)}return e.feature&&e.featureState?this.defaultValue.evaluate(e.feature,e.featureState):this.defaultValue.property.specification.default}eachChild(e){this.defaultValue.isConstant()||e(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}Ft(K1,"FormatSectionOverride",{omit:["defaultValue"]});const Zg=()=>Gg||(Gg={layout:X1||(X1=new Bn({"symbol-placement":new yt($e.layout_symbol["symbol-placement"]),"symbol-spacing":new yt($e.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new yt($e.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Dt($e.layout_symbol["symbol-sort-key"]),"symbol-z-order":new yt($e.layout_symbol["symbol-z-order"]),"symbol-z-elevate":new yt($e.layout_symbol["symbol-z-elevate"]),"symbol-elevation-reference":new yt($e.layout_symbol["symbol-elevation-reference"]),"icon-allow-overlap":new yt($e.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new yt($e.layout_symbol["icon-ignore-placement"]),"icon-optional":new yt($e.layout_symbol["icon-optional"]),"icon-rotation-alignment":new yt($e.layout_symbol["icon-rotation-alignment"]),"icon-size":new Dt($e.layout_symbol["icon-size"]),"icon-size-scale-range":new yt($e.layout_symbol["icon-size-scale-range"]),"icon-text-fit":new Dt($e.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Dt($e.layout_symbol["icon-text-fit-padding"]),"icon-image":new Dt($e.layout_symbol["icon-image"]),"icon-rotate":new Dt($e.layout_symbol["icon-rotate"]),"icon-padding":new yt($e.layout_symbol["icon-padding"]),"icon-keep-upright":new yt($e.layout_symbol["icon-keep-upright"]),"icon-offset":new Dt($e.layout_symbol["icon-offset"]),"icon-anchor":new Dt($e.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new yt($e.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new yt($e.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new yt($e.layout_symbol["text-rotation-alignment"]),"text-field":new Dt($e.layout_symbol["text-field"]),"text-font":new Dt($e.layout_symbol["text-font"]),"text-size":new Dt($e.layout_symbol["text-size"]),"text-size-scale-range":new yt($e.layout_symbol["text-size-scale-range"]),"text-max-width":new Dt($e.layout_symbol["text-max-width"]),"text-line-height":new Dt($e.layout_symbol["text-line-height"]),"text-letter-spacing":new Dt($e.layout_symbol["text-letter-spacing"]),"text-justify":new Dt($e.layout_symbol["text-justify"]),"text-radial-offset":new Dt($e.layout_symbol["text-radial-offset"]),"text-variable-anchor":new yt($e.layout_symbol["text-variable-anchor"]),"text-anchor":new Dt($e.layout_symbol["text-anchor"]),"text-max-angle":new yt($e.layout_symbol["text-max-angle"]),"text-writing-mode":new yt($e.layout_symbol["text-writing-mode"]),"text-rotate":new Dt($e.layout_symbol["text-rotate"]),"text-padding":new yt($e.layout_symbol["text-padding"]),"text-keep-upright":new yt($e.layout_symbol["text-keep-upright"]),"text-transform":new Dt($e.layout_symbol["text-transform"]),"text-offset":new Dt($e.layout_symbol["text-offset"]),"text-allow-overlap":new yt($e.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new yt($e.layout_symbol["text-ignore-placement"]),"text-optional":new yt($e.layout_symbol["text-optional"]),visibility:new yt($e.layout_symbol.visibility)})),paint:Y1||(Y1=new Bn({"icon-opacity":new Dt($e.paint_symbol["icon-opacity"]),"icon-occlusion-opacity":new Dt($e.paint_symbol["icon-occlusion-opacity"]),"icon-emissive-strength":new Dt($e.paint_symbol["icon-emissive-strength"]),"text-emissive-strength":new Dt($e.paint_symbol["text-emissive-strength"]),"icon-color":new Dt($e.paint_symbol["icon-color"]),"icon-halo-color":new Dt($e.paint_symbol["icon-halo-color"]),"icon-halo-width":new Dt($e.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Dt($e.paint_symbol["icon-halo-blur"]),"icon-translate":new yt($e.paint_symbol["icon-translate"]),"icon-translate-anchor":new yt($e.paint_symbol["icon-translate-anchor"]),"icon-image-cross-fade":new Dt($e.paint_symbol["icon-image-cross-fade"]),"text-opacity":new Dt($e.paint_symbol["text-opacity"]),"text-occlusion-opacity":new Dt($e.paint_symbol["text-occlusion-opacity"]),"text-color":new Dt($e.paint_symbol["text-color"],{runtimeType:_s,getOverride:r=>r.textColor,hasOverride:r=>!!r.textColor}),"text-halo-color":new Dt($e.paint_symbol["text-halo-color"]),"text-halo-width":new Dt($e.paint_symbol["text-halo-width"]),"text-halo-blur":new Dt($e.paint_symbol["text-halo-blur"]),"text-translate":new yt($e.paint_symbol["text-translate"]),"text-translate-anchor":new yt($e.paint_symbol["text-translate-anchor"]),"icon-color-saturation":new yt($e.paint_symbol["icon-color-saturation"]),"icon-color-contrast":new yt($e.paint_symbol["icon-color-contrast"]),"icon-color-brightness-min":new yt($e.paint_symbol["icon-color-brightness-min"]),"icon-color-brightness-max":new yt($e.paint_symbol["icon-color-brightness-max"]),"symbol-z-offset":new Dt($e.paint_symbol["symbol-z-offset"]),"icon-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"}),"icon-halo-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"}),"text-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"}),"text-halo-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"})}))},Gg);class Om extends wr{constructor(e,n,o,u){super(e,Zg(),n,o,u),this._colorAdjustmentMatrix=De.mat4.identity([]),this.hasInitialOcclusionOpacityProperties=e.paint!==void 0&&("icon-occlusion-opacity"in e.paint||"text-occlusion-opacity"in e.paint)}recalculate(e,n){super.recalculate(e,n),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout._values["icon-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout._values["text-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment"));const o=this.layout.get("text-writing-mode");if(o){const u=[];for(const l of o)u.indexOf(l)<0&&u.push(l);this.layout._values["text-writing-mode"]=u}else this.layout._values["text-writing-mode"]=this.layout.get("symbol-placement")==="point"?["horizontal"]:["horizontal","vertical"];this._setPaintOverrides()}getColorAdjustmentMatrix(e,n,o,u){return this._saturation===e&&this._contrast===n&&this._brightnessMin===o&&this._brightnessMax===u||(this._colorAdjustmentMatrix=function(l,f,v,S){l=le(l),f=re(f);const D=De.mat4.create(),x=l/3,P=1-2*x,I=[P,x,x,0,x,P,x,0,x,x,P,0,0,0,0,1],M=.5-.5*f,C=S-v;return De.mat4.multiply(D,[C,0,0,0,0,C,0,0,0,0,C,0,v,v,v,1],[f,0,0,0,0,f,0,0,0,0,f,0,M,M,M,1]),De.mat4.multiply(D,D,I),D}(e,n,o,u),this._saturation=e,this._contrast=n,this._brightnessMin=o,this._brightnessMax=u),this._colorAdjustmentMatrix}getValueAndResolveTokens(e,n,o,u){const l=this.layout.get(e).evaluate(n,{},o,u),f=this._unevaluatedLayout._values[e];return f.isDataDriven()||uu(f.value)||!l?l:function(v,S){return S.replace(/{([^{}]+)}/g,(D,x)=>x in v?String(v[x]):"")}(n.properties,l)}createBucket(e){return new Rm(e)}queryRadius(){return 0}queryIntersectsFeature(){return!1}_setPaintOverrides(){for(const e of Zg().paint.overridableProperties){if(!Om.hasPaintOverride(this.layout,e))continue;const n=this.paint.get(e),o=new K1(n),u=new Ud(o,n.property.specification,this.scope,this.options);let l=null;l=n.value.kind==="constant"||n.value.kind==="source"?new jd("source",u):new mc("composite",u,n.value.zoomStops,n.value._interpolationType),this.paint._values[e]=new xc(n.property,l,n.parameters)}}_handleOverridablePaintPropertyUpdate(e,n,o){return!(!this.layout||n.isDataDriven()||o.isDataDriven())&&Om.hasPaintOverride(this.layout,e)}static hasPaintOverride(e,n){const o=e.get("text-field"),u=Zg().paint.properties[n];let l=!1;const f=v=>{for(const S of v)if(u.overrides&&u.overrides.hasOverride(S))return void(l=!0)};if(o.value.kind==="constant"&&o.value.value instanceof Dn)f(o.value.value.sections);else if(o.value.kind==="source"){const v=D=>{l||(D instanceof kr&&bn(D.value)===Qs?f(D.value.sections):D instanceof Ps?f(D.sections):D.eachChild(v))},S=o.value;S._styleExpression&&v(S._styleExpression.expression)}return l}getProgramIds(){return["symbol"]}getDefaultProgramParams(e,n,o){return{config:new Vl(this,{zoom:n,lut:o}),overrideFog:!1}}}let J1,Q1,eb,tb;var Hg=qi([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);function qg(r){switch(r){case WebGL2RenderingContext.RGBA8:return WebGL2RenderingContext.RGBA;case WebGL2RenderingContext.DEPTH_COMPONENT16:return WebGL2RenderingContext.DEPTH_COMPONENT;case WebGL2RenderingContext.DEPTH24_STENCIL8:return WebGL2RenderingContext.DEPTH_STENCIL;case WebGL2RenderingContext.R8:case WebGL2RenderingContext.R32F:return WebGL2RenderingContext.RED}}function Wg(r){switch(r){case WebGL2RenderingContext.RGBA8:return WebGL2RenderingContext.UNSIGNED_BYTE;case WebGL2RenderingContext.DEPTH_COMPONENT16:return WebGL2RenderingContext.UNSIGNED_SHORT;case WebGL2RenderingContext.DEPTH24_STENCIL8:return WebGL2RenderingContext.UNSIGNED_INT_24_8;case WebGL2RenderingContext.R8:return WebGL2RenderingContext.UNSIGNED_BYTE;case WebGL2RenderingContext.R32F:return WebGL2RenderingContext.FLOAT}}class $g{constructor(e,n,o,u){this.context=e,this.format=o,this.useMipmap=u&&u.useMipmap,this.texture=e.gl.createTexture(),this.update(n,{premultiply:u&&u.premultiply})}update(e,n){const o=e&&e instanceof HTMLVideoElement&&e.width===0?e.videoWidth:e.width,u=e&&e instanceof HTMLVideoElement&&e.height===0?e.videoHeight:e.height,{context:l}=this,{gl:f}=l,{x:v,y:S}=n&&n.position?n.position:{x:0,y:0},D=v+o,x=S+u;!this.size||this.size[0]===D&&this.size[1]===x||(f.bindTexture(f.TEXTURE_2D,null),f.deleteTexture(this.texture),this.texture=f.createTexture(),this.size=null),f.bindTexture(f.TEXTURE_2D,this.texture),l.pixelStoreUnpackFlipY.set(!1),l.pixelStoreUnpack.set(1),l.pixelStoreUnpackPremultiplyAlpha.set(this.format===f.RGBA8&&(!n||n.premultiply!==!1));const P=e instanceof HTMLImageElement||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement||e instanceof ImageData||ImageBitmap&&e instanceof ImageBitmap;if(!this.size&&D>0&&x>0){const I=this.useMipmap?Math.floor(Math.log2(Math.max(D,x)))+1:1;f.texStorage2D(f.TEXTURE_2D,I,this.format,D,x),this.size=[D,x]}if(this.size)if(P)f.texSubImage2D(f.TEXTURE_2D,0,v,S,qg(this.format),Wg(this.format),e);else{const I=e.data;I&&f.texSubImage2D(f.TEXTURE_2D,0,v,S,o,u,qg(this.format),Wg(this.format),I)}this.useMipmap&&f.generateMipmap(f.TEXTURE_2D)}bind(e,n,o=!1){const{context:u}=this,{gl:l}=u;l.bindTexture(l.TEXTURE_2D,this.texture),e!==this.minFilter&&(l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,e),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,this.useMipmap&&!o?e===l.NEAREST?l.NEAREST_MIPMAP_NEAREST:l.LINEAR_MIPMAP_LINEAR:e),this.minFilter=e),n!==this.wrapS&&(l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,n),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,n),this.wrapS=n)}bindExtraParam(e,n,o,u){const{context:l}=this,{gl:f}=l;f.bindTexture(f.TEXTURE_2D,this.texture),n!==this.magFilter&&(f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MAG_FILTER,n),this.magFilter=n),e!==this.minFilter&&(f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MIN_FILTER,this.useMipmap?e===f.NEAREST?f.NEAREST_MIPMAP_NEAREST:f.LINEAR_MIPMAP_LINEAR:e),this.minFilter=e),o!==this.wrapS&&(f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_S,o),this.wrapS=o),u!==this.wrapT&&(f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_T,u),this.wrapT=u)}destroy(){const{gl:e}=this.context;e.deleteTexture(this.texture),this.texture=null}}class Fm{constructor(e,n){this.context=e,this.texture=n}bind(e,n){const{context:o}=this,{gl:u}=o;u.bindTexture(u.TEXTURE_2D,this.texture),e!==this.minFilter&&(u.texParameteri(u.TEXTURE_2D,u.TEXTURE_MAG_FILTER,e),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_MIN_FILTER,e),this.minFilter=e),n!==this.wrapS&&(u.texParameteri(u.TEXTURE_2D,u.TEXTURE_WRAP_S,n),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_WRAP_T,n),this.wrapS=n)}}function Bm(r,e,n,o,u,l,f,v){const S=[r,e,1,n,o,1,u,l,1],D=[f,v,1],x=De.mat3.adjoint([],S),[P,I,M]=De.vec3.transformMat3(D,D,x);return De.mat3.multiply(S,S,[P,0,0,0,I,0,0,0,M])}function ib(r,e,n,o,u,l,f,v){const S=function(D,x,P,I,M,C,k,V){const U=Bm(0,0,1,0,1,1,0,1),q=Bm(D,x,P,I,M,C,k,V),$=De.mat3.adjoint([],U);return De.mat3.multiply(q,q,$)}(r,e,n,o,u,l,f,v);return[S[2]/S[8]/Tt,S[5]/S[8]/Tt]}function Nm(r){return[r[0],Math.min(Math.max(r[1],-jn),jn)]}class nb extends Wo{constructor(e,n,o,u){super(),this.id=e,this.dispatcher=o,this.coordinates=n.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.onNorthPole=!1,this.onSouthPole=!1,this.setEventedParent(u),this.options=n,this._dirty=!1}load(e,n){if(this._loaded=n||!1,this.fire(new Lr("dataloading",{dataType:"source"})),this.url=this.options.url,!this.url)return e&&(this.coordinates=e),this._loaded=!0,void this._finishLoading();this._imageRequest=Hn(this.map._requestManager.transformRequest(this.url,Zo.Image),(o,u)=>{this._imageRequest=null,this._loaded=!0,o?this.fire(new zr(o)):u&&(this.image=u instanceof HTMLImageElement?Ct.getImageData(u):u,this._dirty=!0,this.width=this.image.width,this.height=this.image.height,e&&(this.coordinates=e),this._finishLoading())})}loaded(){return this._loaded}updateImage(e){return e.url?(this._imageRequest&&e.url!==this.options.url&&(this._imageRequest.cancel(),this._imageRequest=null),this.options.url=e.url,this.load(e.coordinates,this._loaded),this):this}setTexture(e){if(!(e.handle instanceof WebGLTexture))throw new Error("The provided handle is not a WebGLTexture instance");return this.texture=new Fm(this.map.painter.context,e.handle),this.width=e.dimensions[0],this.height=e.dimensions[1],this._dirty=!1,this._loaded=!0,this._finishLoading(),this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new Lr("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(e){this.map=e,this.load()}onRemove(e){this._imageRequest&&(this._imageRequest.cancel(),this._imageRequest=null),!this.texture||this.texture instanceof Fm||this.texture.destroy(),this.boundsBuffer&&(this.boundsBuffer.destroy(),this.elevatedGlobeVertexBuffer&&this.elevatedGlobeVertexBuffer.destroy(),this.elevatedGlobeIndexBuffer&&this.elevatedGlobeIndexBuffer.destroy())}setCoordinates(e){if(this.coordinates=e,this._boundsArray=void 0,this._unsupportedCoords=!1,!e.length)return this;this.onNorthPole=!1,this.onSouthPole=!1;let n=e[0][1],o=e[0][1];for(const l of e)l[1]>o&&(o=l[1]),l[1]<n&&(n=l[1]);const u=(o+n)/2;if(u>jn?this.onNorthPole=!0:u<-jn&&(this.onSouthPole=!0),!this.onNorthPole&&!this.onSouthPole){const l=e.map(h.fromLngLat);this.tileID=function(f){let v=1/0,S=1/0,D=-1/0,x=-1/0;for(const k of f)v=Math.min(v,k.x),S=Math.min(S,k.y),D=Math.max(D,k.x),x=Math.max(x,k.y);const P=Math.max(D-v,x-S),I=Math.max(0,Math.floor(-Math.log(P)/Math.LN2)),M=Math.pow(2,I);let C=Math.floor((v+D)/2*M);return C>1&&(C-=1),new nt(I,C,Math.floor((S+x)/2*M))}(l),this.minzoom=this.maxzoom=this.tileID.z}return this.fire(new Lr("data",{dataType:"source",sourceDataType:"content"})),this}_clear(){this._boundsArray=void 0,this._unsupportedCoords=!1}_prepareData(e){for(const U in this.tiles){const q=this.tiles[U];q.state!=="loaded"&&(q.state="loaded",q.texture=this.texture)}if(this._boundsArray||this.onNorthPole||this.onSouthPole||this._unsupportedCoords)return;const n=zf(new nt(0,0,0),this.map.transform.projection),o=[n.projection.project(this.coordinates[0][0],this.coordinates[0][1]),n.projection.project(this.coordinates[1][0],this.coordinates[1][1]),n.projection.project(this.coordinates[2][0],this.coordinates[2][1]),n.projection.project(this.coordinates[3][0],this.coordinates[3][1])];if(!function(U){const q=U[1].x-U[0].x,$=U[1].y-U[0].y,H=U[2].x-U[1].x,K=U[2].y-U[1].y,Q=U[3].x-U[2].x,ie=U[3].y-U[2].y,fe=U[0].x-U[3].x,de=U[0].y-U[3].y,ue=q*K-H*$,Se=H*ie-Q*K,me=Q*de-fe*ie,Ee=fe*$-q*de;return ue>0&&Se>0&&me>0&&Ee>0||ue<0&&Se<0&&me<0&&Ee<0}(o))return console.warn("Image source coordinates are defining non-convex area in the Mercator projection"),void(this._unsupportedCoords=!0);const u=zf(this.tileID,this.map.transform.projection),[l,f,v,S]=this.coordinates.map(U=>{const q=u.projection.project(U[0],U[1]);return G1(u,q)._round()});this.perspectiveTransform=ib(l.x,l.y,f.x,f.y,v.x,v.y,S.x,S.y);const D=this._boundsArray=new Qa;D.emplaceBack(l.x,l.y,0,0),D.emplaceBack(f.x,f.y,Tt,0),D.emplaceBack(S.x,S.y,0,Tt),D.emplaceBack(v.x,v.y,Tt,Tt),this.boundsBuffer&&(this.boundsBuffer.destroy(),this.elevatedGlobeVertexBuffer&&this.elevatedGlobeVertexBuffer.destroy(),this.elevatedGlobeIndexBuffer&&this.elevatedGlobeIndexBuffer.destroy()),this.boundsBuffer=e.createVertexBuffer(D,Hg.members),this.boundsSegments=Wn.simpleSegment(0,0,4,2);const x=[],P=[Nm((I=this.coordinates)[0]),Nm(I[1]),Nm(I[2]),Nm(I[3])];var I;const[M,C,k,V]=function(U){let q=U[0][0],$=q,H=U[0][1],K=H;for(let Q=1;Q<U.length;Q++)U[Q][0]<q?q=U[Q][0]:U[Q][0]>$&&($=U[Q][0]),U[Q][1]<H?H=U[Q][1]:U[Q][1]>K&&(K=U[Q][1]);return[q,H,$-q,K-H]}(P);{const U=new Qa,[q,$,H,K]=function(Ve){let Ue=Ve[0].x,Fe=Ue,et=Ve[0].y,dt=et;for(let tt=1;tt<Ve.length;tt++)Ve[tt].x<Ue?Ue=Ve[tt].x:Ve[tt].x>Fe&&(Fe=Ve[tt].x),Ve[tt].y<et?et=Ve[tt].y:Ve[tt].y>dt&&(dt=Ve[tt].y);return[Ue,et,Fe-Ue,dt-et]}(o),Q=Ve=>[(Ve.x-q)/H,(Ve.y-$)/K],[ie,fe,de,ue]=o.map(Q),Se=function(Ve,Ue,Fe,et,dt,tt,Mt,wt){const At=Bm(0,0,1,0,1,1,0,1),rt=Bm(Ve,Ue,Fe,et,dt,tt,Mt,wt),Ut=De.mat3.adjoint([],rt);return De.mat3.multiply(At,At,Ut)}(ie[0],ie[1],fe[0],fe[1],de[0],de[1],ue[0],ue[1]);this.elevatedGlobePerspectiveTransform=ib(ie[0],ie[1],fe[0],fe[1],de[0],de[1],ue[0],ue[1]);const me=(Ve,Ue)=>{x.push(Ve.lng);const Fe=Math.round((Ve.lng-M)/k*Tt),et=Math.round((Ve.lat-C)/V*Tt),dt=Q(Ue),tt=De.vec3.transformMat3([],[dt[0],dt[1],1],Se),Mt=Math.round(tt[0]/tt[2]*Tt),wt=Math.round(tt[1]/tt[2]*Tt);U.emplaceBack(Fe,et,Mt,wt)},Ee=o[3].x-o[0].x,ze=o[3].y-o[0].y,Ie=o[2].x-o[1].x,Re=o[2].y-o[1].y;for(let Ve=0;Ve<65;Ve++){const Ue=Ve/64,Fe=[o[0].x+Ue*Ee,o[0].y+Ue*ze],et=[o[1].x+Ue*Ie,o[1].y+Ue*Re],dt=et[0]-Fe[0],tt=et[1]-Fe[1];for(let Mt=0;Mt<65;Mt++){const wt=Mt/64,At={x:Fe[0]+dt*wt,y:Fe[1]+tt*wt,z:0};me(n.projection.unproject(At.x,At.y),At)}}this.elevatedGlobeVertexBuffer=e.createVertexBuffer(U,Hg.members)}{this.maxLongitudeTriangleSize=0;let U=[],q=new qs;const $=(H,K,Q)=>{q.emplaceBack(H,K,Q);const ie=x[H],fe=x[K],de=x[Q],ue=Math.min(Math.min(ie,fe),de),Se=Math.max(Math.max(ie,fe),de)-ue;Se>this.maxLongitudeTriangleSize&&(this.maxLongitudeTriangleSize=Se),U.push(ue+Se/2)};for(let H=0;H<64;H++)for(let K=0;K<64;K++){const Q=65*H+K,ie=Q+1,fe=Q+65,de=fe+1;$(Q,fe,ie),$(ie,fe,de)}[U,q]=function(H,K){const Q=Array.from({length:H.length},(de,ue)=>ue);Q.sort((de,ue)=>H[de]-H[ue]);const ie=[],fe=new qs;for(let de=0;de<Q.length;de++){const ue=Q[de];ie.push(H[ue]);const Se=3*ue,me=Se+1;fe.emplaceBack(K.uint16[Se],K.uint16[me],K.uint16[me+1])}return[ie,fe]}(U,q),this.elevatedGlobeTrianglesCenterLongitudes=U,this.elevatedGlobeIndexBuffer=e.createIndexBuffer(q)}this.elevatedGlobeSegments=Wn.simpleSegment(0,0,4225,8192),this.elevatedGlobeGridMatrix=new Float32Array([0,k/Tt,0,V/Tt,0,0,C,M,0])}prepare(){const e=Object.keys(this.tiles).length!==0;if(this.tileID&&!e)return;const n=this.map.painter.context,o=n.gl;!this._dirty||this.texture instanceof Fm||(this.texture?this.texture.update(this.image):(this.texture=new $g(n,this.image,o.RGBA8),this.texture.bind(o.LINEAR,o.CLAMP_TO_EDGE)),this._dirty=!1),e&&this._prepareData(n)}loadTile(e,n){this.tileID&&this.tileID.equals(e.tileID.canonical)?(this.tiles[String(e.tileID.wrap)]=e,e.buckets={},n(null)):(e.state="errored",n(null))}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}getSegmentsForLongitude(e){const n=this.elevatedGlobeSegments;if(!this.elevatedGlobeTrianglesCenterLongitudes||!n)return null;const o=this.elevatedGlobeTrianglesCenterLongitudes;let u=(l=e+180)+360*Math.round((o[0]-l)/360);var l;const f=new Wn,v=(P,I)=>{f.segments.push({vertexOffset:0,primitiveOffset:P,vertexLength:n.segments[0].vertexLength,primitiveLength:I,sortKey:void 0,vaos:{}})},S=.51*this.maxLongitudeTriangleSize;if(Math.abs(o[0]-u)<=S){const P=Ke(o,0,o.length,u+S);return P===o.length||v(P,Go(o,P+1,o.length,u+360-S)-P),f}u<o[0]&&(u+=360);const D=Go(o,0,o.length,u-S);if(D===o.length)return v(0,o.length),f;v(0,D-0);const x=Ke(o,D+1,o.length,u+S);return x!==o.length&&v(x,o.length-x),f}}const RA=(Math.pow(256,2)-1)/16907520;class sb extends wr{constructor(e,n,o,u){super(e,{layout:eb||(eb=new Bn({visibility:new yt($e.layout_raster.visibility)})),paint:tb||(tb=new Bn({"raster-opacity":new yt($e.paint_raster["raster-opacity"]),"raster-color":new Ja($e.paint_raster["raster-color"]),"raster-color-mix":new yt($e.paint_raster["raster-color-mix"]),"raster-color-range":new yt($e.paint_raster["raster-color-range"]),"raster-hue-rotate":new yt($e.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new yt($e.paint_raster["raster-brightness-min"]),"raster-brightness-max":new yt($e.paint_raster["raster-brightness-max"]),"raster-saturation":new yt($e.paint_raster["raster-saturation"]),"raster-contrast":new yt($e.paint_raster["raster-contrast"]),"raster-resampling":new yt($e.paint_raster["raster-resampling"]),"raster-fade-duration":new yt($e.paint_raster["raster-fade-duration"]),"raster-emissive-strength":new yt($e.paint_raster["raster-emissive-strength"]),"raster-array-band":new yt($e.paint_raster["raster-array-band"]),"raster-elevation":new yt($e.paint_raster["raster-elevation"]),"raster-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"})}))},n,o,u),this.updateColorRamp(),this._curRampRange=[NaN,NaN]}getProgramIds(){return["raster"]}hasColorMap(){return!!this._transitionablePaint._values["raster-color"].value.value}tileCoverLift(){return this.paint.get("raster-elevation")}isDraped(e){return!(e&&e._source instanceof nb&&(e._source.onNorthPole||e._source.onSouthPole))&&this.paint.get("raster-elevation")===0}_handleSpecialPaintPropertyUpdate(e){e!=="raster-color"&&e!=="raster-color-range"||(this._curRampRange=[NaN,NaN],this.updateColorRamp())}updateColorRamp(e){if(!this.hasColorMap()||!this._curRampRange)return;const n=this._transitionablePaint._values["raster-color"].value.expression,[o,u]=e||this._transitionablePaint._values["raster-color-range"].value.expression.evaluate({zoom:0})||[NaN,NaN];isNaN(o)&&isNaN(u)||o===this._curRampRange[0]&&u===this._curRampRange[1]||(this.colorRamp=gf({expression:n,evaluationKey:"rasterValue",image:this.colorRamp,clips:[{start:o,end:u}],resolution:256}),this.colorRampTexture=null,this._curRampRange=[o,u])}}let rb,ob,ab,lb,cb;class hb extends wr{constructor(e,n,o,u){super(e,{layout:rb||(rb=new Bn({visibility:new yt($e["layout_raster-particle"].visibility)})),paint:ob||(ob=new Bn({"raster-particle-array-band":new yt($e["paint_raster-particle"]["raster-particle-array-band"]),"raster-particle-count":new yt($e["paint_raster-particle"]["raster-particle-count"]),"raster-particle-color":new Ja($e["paint_raster-particle"]["raster-particle-color"]),"raster-particle-max-speed":new yt($e["paint_raster-particle"]["raster-particle-max-speed"]),"raster-particle-speed-factor":new yt($e["paint_raster-particle"]["raster-particle-speed-factor"]),"raster-particle-fade-opacity-factor":new yt($e["paint_raster-particle"]["raster-particle-fade-opacity-factor"]),"raster-particle-reset-rate-factor":new yt($e["paint_raster-particle"]["raster-particle-reset-rate-factor"]),"raster-particle-elevation":new yt($e["paint_raster-particle"]["raster-particle-elevation"]),"raster-particle-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"})}))},n,o,u),this._updateColorRamp(),this.lastInvalidatedAt=Ct.now()}onRemove(e){this.colorRampTexture&&this.colorRampTexture.destroy(),this.tileFramebuffer&&this.tileFramebuffer.destroy(),this.particleFramebuffer&&this.particleFramebuffer.destroy()}hasColorMap(){return!!this._transitionablePaint._values["raster-particle-color"].value.value}getProgramIds(){return["rasterParticle"]}hasOffscreenPass(){return this.visibility!=="none"}isDraped(e){return!1}_handleSpecialPaintPropertyUpdate(e){e!=="raster-particle-color"&&e!=="raster-particle-max-speed"||(this._updateColorRamp(),this._invalidateAnimationState()),e==="raster-particle-count"&&this._invalidateAnimationState()}_updateColorRamp(){if(!this.hasColorMap())return;const e=this._transitionablePaint._values["raster-particle-color"].value.expression,n=this._transitionablePaint._values["raster-particle-max-speed"].value.expression.evaluate({zoom:0});this.colorRamp=gf({expression:e,evaluationKey:"rasterParticleSpeed",image:this.colorRamp,clips:[{start:0,end:n}],resolution:256}),this.colorRampTexture=null}_invalidateAnimationState(){this.lastInvalidatedAt=Ct.now()}tileCoverLift(){return this.paint.get("raster-particle-elevation")}}class OA extends wr{constructor(e,n){super(e,{},n,null),this.implementation=e,e.slot&&(this.slot=e.slot)}is3D(){return this.implementation.renderingMode==="3d"}hasOffscreenPass(){return this.implementation.prerender!==void 0}isDraped(e){return this.implementation.renderToTile!==void 0}shouldRedrape(){return!!this.implementation.shouldRerenderTiles&&this.implementation.shouldRerenderTiles()}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){}onAdd(e){this.implementation.onAdd&&this.implementation.onAdd(e,e.painter.context.gl)}onRemove(e){this.implementation.onRemove&&this.implementation.onRemove(e,e.painter.context.gl)}}function Xg(r,e,n){const o=[0,0,1],u=De.quat.identity([]);return De.quat.rotateY(u,u,n?-vi(r)+Math.PI:vi(r)),De.quat.rotateX(u,u,-vi(e)),De.vec3.transformQuat(o,o,u),De.vec3.normalize(o,o)}function ub(r,e){const n=Vm(r.projection,r.zoom,r.width,r.height),o=function(l,f,v,S,D){const x=new Ui(v.lng-180*Dc,v.lat),P=new Ui(v.lng+180*Dc,v.lat),I=l.project(x.lng,x.lat),M=l.project(P.lng,P.lat),C=-Math.atan2(M.y-I.y,M.x-I.x),k=h.fromLngLat(v);k.y=si(k.y,-1+Dc,1-Dc);const V=k.toLngLat(),U=l.project(V.lng,V.lat),q=h.fromLngLat(V);q.x+=Dc;const $=q.toLngLat(),H=l.project($.lng,$.lat),K=fb(H.x-U.x,H.y-U.y,C),Q=h.fromLngLat(V);Q.y+=Dc;const ie=Q.toLngLat(),fe=l.project(ie.lng,ie.lat),de=fb(fe.x-U.x,fe.y-U.y,C),ue=Math.abs(K.x)/Math.abs(de.y),Se=De.mat4.identity([]);De.mat4.rotateZ(Se,Se,-C*(1-(D?0:S)));const me=De.mat4.identity([]);return De.mat4.scale(me,me,[1,1-(1-ue)*S,1]),me[4]=-de.x/de.y*S,De.mat4.rotateZ(me,me,C),De.mat4.multiply(me,Se,me),me}(r.projection,0,r.center,n,e),u=db(r);return De.mat4.scale(o,o,[u,u,1]),o}function db(r){const e=r.projection,n=Vm(r.projection,r.zoom,r.width,r.height),o=Yg(e,r.center),u=Yg(e,Ui.convert(e.center));return Math.pow(2,o*n+(1-n)*u)}function Vm(r,e,n,o,u=1/0){const l=r.range;if(!l)return 0;const f=Math.min(u,Math.max(n,o)),v=Math.log(f/1024)/Math.LN2;return ps(l[0]+v,l[1]+v,e)}const Dc=1/4e4;function Yg(r,e){const n=si(e.lat,-jn,jn),o=new Ui(e.lng-180*Dc,n),u=new Ui(e.lng+180*Dc,n),l=r.project(o.lng,n),f=r.project(u.lng,n),v=h.fromLngLat(o),S=h.fromLngLat(u),D=f.x-l.x,x=f.y-l.y,P=S.x-v.x,I=S.y-v.y,M=Math.sqrt((P*P+I*I)/(D*D+x*x));return Math.log(M)/Math.LN2}function fb(r,e,n){const o=Math.cos(n),u=Math.sin(n);return{x:r*o-e*u,y:r*u+e*o}}function pb(r,e,n){De.mat4.identity(r),De.mat4.rotateZ(r,r,vi(e[2])),De.mat4.rotateX(r,r,vi(e[0])),De.mat4.rotateY(r,r,vi(e[1])),De.mat4.scale(r,r,n),De.mat4.multiply(r,r,[1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1])}function Um(r,e,n,o,u,l,f,v){const S=[n[0]-e[0],n[1]-e[1],0],D=[o[0]-e[0],o[1]-e[1],0];if(De.vec3.length(S)<1e-12||De.vec3.length(D)<1e-12)return De.quat.identity(r);const x=De.vec3.cross([],S,D);De.vec3.normalize(x,x),De.vec3.subtract(D,o,e),S[2]=(l-u)*v,D[2]=(f-u)*v;const P=S;return De.vec3.cross(P,S,D),De.vec3.normalize(P,P),De.quat.rotationTo(r,x,P)}function Kg(r,e,n=!1){const o=_r(e.zoom),u=function(l,f,v){const S=f.worldSize,D=[l[12],l[13],l[14]],x=Fs(D[1]/S),P=Vr(D[0]/S),I=De.mat4.identity([]),M=pr(1,x)*S,C=pr(1,0)*S*c(x,f.zoom),k=1/eo(S);let V=C*k;if(v){const H=Vm(f.projection,f.zoom,f.width,f.height,1024);V=k*f.projection.pixelSpaceConversion(f.center.lat,S,H)}const U=rl(x,P);De.vec3.add(U,U,De.vec3.scale([],De.vec3.normalize([],U),M*V*D[2]));const q=function(H){const K=[H[0],H[1],H[2]];let Q=[0,1,0];const ie=De.vec3.cross([],Q,K);return De.vec3.cross(Q,K,ie),De.vec3.squaredLength(Q)===0&&(Q=[0,1,0],De.vec3.cross(ie,K,Q)),De.vec3.normalize(ie,ie),De.vec3.normalize(Q,Q),De.vec3.normalize(K,K),[ie[0],ie[1],ie[2],0,Q[0],Q[1],Q[2],0,K[0],K[1],K[2],0,H[0],H[1],H[2],1]}(U);De.mat4.scale(I,I,[V,V,V*M]),De.mat4.translate(I,I,[-D[0],-D[1],-D[2]]);const $=De.mat4.multiply([],f.globeMatrix,q);return De.mat4.multiply($,$,I),De.mat4.multiply($,$,l),$}(r,e,n);if(o>0){const l=function(f,v){const S=v.worldSize,D=pr(1,0)*S*c(v.center.lat,v.zoom)/eo(S),x=pr(1,v.center.lat)*S,P=De.mat4.identity([]);return De.mat4.rotateY(P,P,vi(v.center.lng)),De.mat4.rotateX(P,P,vi(v.center.lat)),De.mat4.translate(P,P,[0,0,fr]),De.mat4.scale(P,P,[D,D,D*x]),De.mat4.translate(P,P,[v.point.x-.5*S,v.point.y-.5*S,0]),De.mat4.multiply(P,P,f),De.mat4.multiply(P,v.globeMatrix,P)}(r,e);return function(f,v,S){const D=(C,k,V)=>{const U=De.vec3.length(C),q=De.vec3.length(k),$=As(C,k,V);return De.vec3.scale($,$,1/De.vec3.length($)*ei(U,q,V))},x=D([f[0],f[1],f[2]],[v[0],v[1],v[2]],S),P=D([f[4],f[5],f[6]],[v[4],v[5],v[6]],S),I=D([f[8],f[9],f[10]],[v[8],v[9],v[10]],S),M=As([f[12],f[13],f[14]],[v[12],v[13],v[14]],S);return[x[0],x[1],x[2],0,P[0],P[1],P[2],0,I[0],I[1],I[2],0,M[0],M[1],M[2],1]}(u,l,o)}return u}function mb(r,e,n,o){const u=Jt.projectAabbCorners(o,n);let l=Number.MAX_VALUE,f=-1;for(let D=0;D<u.length;++D){const x=u[D];x[0]=(.5*x[0]+.5)*e.width,x[1]=(.5-.5*x[1])*e.height,x[2]<l&&(f=D,l=x[2])}const v=D=>new Et(u[D][0],u[D][1]);let S;switch(f){case 0:case 6:S=[v(1),v(5),v(4),v(7),v(3),v(2),v(1)];break;case 1:case 7:S=[v(0),v(4),v(5),v(6),v(2),v(3),v(0)];break;case 3:case 5:S=[v(1),v(0),v(4),v(7),v(6),v(2),v(1)];break;default:S=[v(1),v(5),v(6),v(7),v(3),v(0),v(1)]}if(se(r,S))return l}const FA=qi([{name:"a_pos_3f",components:3,type:"Float32"}]),BA=qi([{name:"a_color_3f",components:3,type:"Float32"}]),NA=qi([{name:"a_color_4f",components:4,type:"Float32"}]),VA=qi([{name:"a_uv_2f",components:2,type:"Float32"}]),UA=qi([{name:"a_normal_3f",components:3,type:"Float32"}]),jA=qi([{name:"a_normal_matrix0",components:4,type:"Float32"},{name:"a_normal_matrix1",components:4,type:"Float32"},{name:"a_normal_matrix2",components:4,type:"Float32"},{name:"a_normal_matrix3",components:4,type:"Float32"}]),GA=qi([{name:"a_pbr",components:4,type:"Uint16"},{name:"a_heightBasedEmissiveStrength",components:3,type:"Float32"}]),_b={None:0,Model:1,Symbol:2,FillExtrusion:4,All:7};class jm{constructor(e,n,o,u){this.message=(e?`${e}: `:"")+o,u&&(this.identifier=u),n!=null&&n.__line__&&(this.line=n.__line__)}}function gb(r,e){const n=r.indexOf("://")===-1;try{return new URL(r,n&&e?"http://example.com":void 0),!0}catch{return!1}}class yb{constructor(e,n){this.feature=e,this.instancedDataOffset=n,this.instancedDataCount=0,this.rotation=[0,0,0],this.scale=[1,1,1],this.translation=[0,0,0]}}class xb{constructor(){this.instancedDataArray=new hf,this.instancesEvaluatedElevation=[],this.features=[],this.idToFeaturesIndex={}}}class Jg{constructor(e){this.zoom=e.zoom,this.canonical=e.canonical,this.layers=e.layers,this.layerIds=this.layers.map(n=>n.fqid),this.projection=e.projection,this.index=e.index,this.hasZoomDependentProperties=this.layers[0].isZoomDependent(),this.stateDependentLayerIds=this.layers.filter(n=>n.isStateDependent()).map(n=>n.id),this.hasPattern=!1,this.instancesPerModel={},this.validForExaggeration=0,this.maxVerticalOffset=0,this.maxScale=0,this.maxHeight=0,this.lookupDim=this.zoom>this.canonical.z?256:this.zoom>15?75:100,this.instanceCount=0,this.terrainElevationMin=0,this.terrainElevationMax=0,this.validForDEMTile={id:null,timestamp:0},this.modelUris=[],this.modelsRequested=!1,this.activeReplacements=[],this.replacementUpdateTime=0}updateFootprints(e,n){}populate(e,n,o,u){this.tileToMeter=s(o);const l=this.layers[0]._featureFilter.needGeometry;this.lookup=new Uint8Array(this.lookupDim*this.lookupDim);for(const{feature:f,id:v,index:S,sourceLayerIndex:D}of e){const x=v??(f.properties&&f.properties.hasOwnProperty("id")?f.properties.id:void 0),P=Z(f,l);if(!this.layers[0]._featureFilter.filter(new Tn(this.zoom),P,o))continue;const I={id:x,sourceLayerIndex:D,index:S,geometry:l?P.geometry:G(f,o,u),properties:f.properties,type:f.type,patterns:{}},M=this.addFeature(I,I.geometry,P);M&&n.featureIndex.insert(f,I.geometry,S,D,this.index,this.instancesPerModel[M].instancedDataArray.length,Tt/32)}this.lookup=null}update(e,n,o,u){for(const l in this.instancesPerModel){const f=this.instancesPerModel[l];for(const v in e)f.idToFeaturesIndex.hasOwnProperty(v)&&(this.evaluate(f.features[f.idToFeaturesIndex[v]],e[v],f,!0),this.uploaded=!1)}this.maxHeight=0}updateZoomBasedPaintProperties(){if(!this.hasZoomDependentProperties)return!1;let e=!1;for(const n in this.instancesPerModel){const o=this.instancesPerModel[n];for(const u of o.features){const l=this.layers[0],f=u.feature,v=this.canonical,S=l.paint.get("model-rotation").evaluate(f,{},v),D=l.paint.get("model-scale").evaluate(f,{},v),x=l.paint.get("model-translation").evaluate(f,{},v);De.vec3.exactEquals(u.rotation,S)&&De.vec3.exactEquals(u.scale,D)&&De.vec3.exactEquals(u.translation,x)||(this.evaluate(u,u.featureStates,o,!0),e=!0)}}return e}updateReplacement(e,n,o,u){if(n.updateTime===this.replacementUpdateTime)return!1;this.replacementUpdateTime=n.updateTime;const l=n.getReplacementRegionsForTile(e.toUnwrapped(),!0);if(Tg(this.activeReplacements,l))return!1;this.activeReplacements=l;let f=!1;for(const v in this.instancesPerModel){const S=this.instancesPerModel[v],D=S.instancedDataArray;for(const x of S.features){const P=x.instancedDataOffset,I=x.instancedDataCount;for(let M=0;M<I;M++){const C=16*(M+P);let k=D.float32[C+0];const V=k>Tt;k=V?k-Tt:k;const U=Math.floor(k),q=D.float32[C+1];let $=!1;for(const H of this.activeReplacements)if(!Dv(H,o,_b.Model,u)&&!(H.min.x>U||U>H.max.x||H.min.y>q||q>H.max.y)&&($=Nv(Bv(U,q,e.canonical,H.footprintTileId.canonical),H.footprint),$))break;D.float32[C]=$?k+Tt:k,f=f||$!==V}}}return f}isEmpty(){for(const e in this.instancesPerModel)if(this.instancesPerModel[e].instancedDataArray.length!==0)return!1;return!0}uploadPending(){return!this.uploaded}upload(e){if(!this.uploaded)for(const n in this.instancesPerModel){const o=this.instancesPerModel[n];o.instancedDataArray.length<0||o.instancedDataArray.length===0||(o.instancedDataBuffer?o.instancedDataBuffer.updateData(o.instancedDataArray):o.instancedDataBuffer=e.createVertexBuffer(o.instancedDataArray,jA.members,!0,void 0,this.instanceCount))}this.uploaded=!0}destroy(){for(const n in this.instancesPerModel){const o=this.instancesPerModel[n];o.instancedDataArray.length!==0&&o.instancedDataBuffer&&o.instancedDataBuffer.destroy()}const e=this.layers[0].modelManager;if(e&&this.modelUris)for(const n of this.modelUris)e.removeModel(n,"")}addFeature(e,n,o){const u=this.layers[0],l=u.layout.get("model-id").evaluate(o,{},this.canonical);if(!l)return mi(`modelId is not evaluated for layer ${u.id} and it is not going to get rendered.`),l;gb(l,!1)&&(this.modelUris.includes(l)||this.modelUris.push(l)),this.instancesPerModel[l]||(this.instancesPerModel[l]=new xb);const f=this.instancesPerModel[l],v=f.instancedDataArray,S=new yb(o,v.length);for(const D of n)for(const x of D){if(x.x<0||x.x>=Tt||x.y<0||x.y>=Tt)continue;const P=(this.lookupDim-1)/Tt,I=this.lookupDim*(x.y*P|0)+x.x*P|0;if(this.lookup){if(this.lookup[I]!==0)continue;this.lookup[I]=1}this.instanceCount++;const M=v.length;v.resize(M+1),f.instancesEvaluatedElevation.push(0),v.float32[16*M]=x.x,v.float32[16*M+1]=x.y}return S.instancedDataCount=f.instancedDataArray.length-S.instancedDataOffset,S.instancedDataCount>0&&(e.id&&(f.idToFeaturesIndex[e.id]=f.features.length),f.features.push(S),this.evaluate(S,{},f,!1)),l}getModelUris(){return this.modelUris}evaluate(e,n,o,u){const l=this.layers[0],f=e.feature,v=this.canonical,S=e.rotation=l.paint.get("model-rotation").evaluate(f,n,v),D=e.scale=l.paint.get("model-scale").evaluate(f,n,v),x=e.translation=l.paint.get("model-translation").evaluate(f,n,v),P=l.paint.get("model-color").evaluate(f,n,v);P.a=l.paint.get("model-color-mix-intensity").evaluate(f,n,v);const I=[];this.maxVerticalOffset<x[2]&&(this.maxVerticalOffset=x[2]),this.maxScale=Math.max(Math.max(this.maxScale,D[0]),Math.max(D[1],D[2])),pb(I,S,D);const M=Math.round(100*P.a)+P.b/1.05;for(let C=0;C<e.instancedDataCount;++C){const k=e.instancedDataOffset+C,V=16*k,U=o.instancedDataArray.float32;let q=0;u&&(q=U[V+6]-o.instancesEvaluatedElevation[k]);const $=0|U[V+1];U[V]=(0|U[V])+P.r/1.05,U[V+1]=$+P.g/1.05,U[V+2]=M,U[V+3]=1/(v.z>10?this.tileToMeter:s(v,$)),U[V+4]=x[0],U[V+5]=x[1],U[V+6]=x[2]+q,U[V+7]=I[0],U[V+8]=I[1],U[V+9]=I[2],U[V+10]=I[4],U[V+11]=I[5],U[V+12]=I[6],U[V+13]=I[8],U[V+14]=I[9],U[V+15]=I[10],o.instancesEvaluatedElevation[k]=x[2]}}}let vb,bb;Ft(Jg,"ModelBucket",{omit:["layers"]}),Ft(xb,"PerModelAttributes"),Ft(yb,"ModelFeature");const Rh=64,qu={CoordinateSpaceTile:1,CoordinateSpaceYUp:2,HasMapboxMeshFeatures:4,HasMeshoptCompression:8};function wb(r,e,n,o,u,l,f,v,S,D=!1){const x=n.zoom,P=n.project(o),I=c(o.lat,x),M=1/I;De.mat4.identity(r),De.mat4.translate(r,r,[P.x+f[0]*M,P.y+f[1]*M,f[2]]);let C=1,k=1;const V=n.worldSize;if(D){if(n.projection.name==="mercator"){let H=0;n.elevation&&(H=n.elevation.getAtPointOrZero(new h(P.x/V,P.y/V),0));const K=De.vec4.transformMat4([],[P.x,P.y,H,1],n.projMatrix)[3]/n.cameraToCenterDistance;C=K,k=K*c(n.center.lat,x)}else if(n.projection.name==="globe"){const H=Kg(r,n),K=De.mat4.multiply([],n.projMatrix,H),Q=[0,0,0,1];De.vec4.transformMat4(Q,Q,K);const ie=Q[3]/n.cameraToCenterDistance,fe=_r(x),de=n.projection.pixelsPerMeter(o.lat,V)*c(o.lat,x),ue=n.projection.pixelsPerMeter(n.center.lat,V)*c(n.center.lat,x);C=ie/ei(de,ug(n.center.lat),fe),k=ie*I/de,C*=ue,k*=ue}}else C=M;De.mat4.scale(r,r,[C,C,k]);const U=[...r],q=e.orientation,$=[];if(pb($,[q[0]+u[0],q[1]+u[1],q[2]+u[2]],l),De.mat4.multiply(r,U,$),v&&n.elevation){let H=0;const K=[];if(S&&n.elevation){H=function(fe,de,ue,Se,me){const Ee=de.elevation;if(!Ee)return 0;const ze=Jt.projectAabbCorners(ue,Se),Ie=pr(1,me.lat)*de.worldSize,Re=function(Ut,St){const Nt=[0,0,1],Qt=[{corners:[0,1,3,2],dotProductWithUp:0},{corners:[1,5,2,6],dotProductWithUp:0},{corners:[0,4,1,5],dotProductWithUp:0},{corners:[2,6,3,7],dotProductWithUp:0},{corners:[4,7,5,6],dotProductWithUp:0},{corners:[0,3,4,7],dotProductWithUp:0}];for(const pi of Qt){const gi=Ut[pi.corners[0]],Ai=Ut[pi.corners[1]],yi=Ut[pi.corners[2]],Ii=[Ai[0]-gi[0],Ai[1]-gi[1],St*(Ai[2]-gi[2])],fn=De.vec3.cross(Ii,Ii,[yi[0]-gi[0],yi[1]-gi[1],St*(yi[2]-gi[2])]);De.vec3.normalize(fn,fn),pi.dotProductWithUp=De.vec3.dot(fn,Nt)}return Qt.sort((pi,gi)=>pi.dotProductWithUp-gi.dotProductWithUp),Qt[0].corners}(ze,Ie),Ve=ze[Re[0]],Ue=ze[Re[1]],Fe=ze[Re[2]],et=ze[Re[3]],dt=Ee.getAtPointOrZero(new h(Ve[0]/de.worldSize,Ve[1]/de.worldSize),0),tt=Ee.getAtPointOrZero(new h(Ue[0]/de.worldSize,Ue[1]/de.worldSize),0),Mt=Ee.getAtPointOrZero(new h(Fe[0]/de.worldSize,Fe[1]/de.worldSize),0),wt=Ee.getAtPointOrZero(new h(et[0]/de.worldSize,et[1]/de.worldSize),0),At=(dt+wt)/2,rt=(tt+Mt)/2;return At>rt?tt<Mt?Um(fe,Ue,et,Ve,tt,wt,dt,Ie):Um(fe,Fe,Ve,et,Mt,dt,wt,Ie):dt<wt?Um(fe,Ve,Ue,Fe,dt,tt,Mt,Ie):Um(fe,et,Fe,Ue,wt,Mt,tt,Ie),Math.max(At,rt)}(K,n,e.aabb,r,o);const Q=De.mat4.fromQuat([],K),ie=De.mat4.multiply([],Q,$);De.mat4.multiply(r,U,ie)}else H=n.elevation.getAtPointOrZero(new h(P.x/V,P.y/V),0);H!==0&&(r[14]+=H)}}function Ff(r,e,n=!1){r.uploaded||(r.gfxTexture=new $g(e,r.image,n?e.gl.R8:e.gl.RGBA8,{useMipmap:r.sampler.minFilter>=e.gl.NEAREST_MIPMAP_NEAREST}),r.uploaded=!0,r.image=null)}function ZA(r,e,n){r.indexBuffer=e.createIndexBuffer(r.indexArray,!1,!0),r.vertexBuffer=e.createVertexBuffer(r.vertexArray,FA.members,!1,!0),r.normalArray&&(r.normalBuffer=e.createVertexBuffer(r.normalArray,UA.members,!1,!0)),r.texcoordArray&&(r.texcoordBuffer=e.createVertexBuffer(r.texcoordArray,VA.members,!1,!0)),r.colorArray&&(r.colorBuffer=e.createVertexBuffer(r.colorArray,(r.colorArray.bytesPerElement===12?BA:NA).members,!1,!0)),r.featureArray&&(r.pbrBuffer=e.createVertexBuffer(r.featureArray,GA.members,!0)),r.segments=Wn.simpleSegment(0,0,r.vertexArray.length,r.indexArray.length);const o=r.material;o.pbrMetallicRoughness.baseColorTexture&&Ff(o.pbrMetallicRoughness.baseColorTexture,e),o.pbrMetallicRoughness.metallicRoughnessTexture&&Ff(o.pbrMetallicRoughness.metallicRoughnessTexture,e),o.normalTexture&&Ff(o.normalTexture,e),o.occlusionTexture&&Ff(o.occlusionTexture,e,n),o.emissionTexture&&Ff(o.emissionTexture,e)}function Qg(r,e,n){if(r.meshes)for(const o of r.meshes)ZA(o,e,n);if(r.children)for(const o of r.children)Qg(o,e,n)}function Gm(r){if(r.meshes)for(const e of r.meshes)e.indexArray.destroy(),e.vertexArray.destroy(),e.colorArray&&e.colorArray.destroy(),e.normalArray&&e.normalArray.destroy(),e.texcoordArray&&e.texcoordArray.destroy(),e.featureArray&&e.featureArray.destroy();if(r.children)for(const e of r.children)Gm(e)}function ey(r){if(r.meshes)for(const n of r.meshes)n.vertexBuffer&&(n.vertexBuffer.destroy(),n.indexBuffer.destroy(),n.normalBuffer&&n.normalBuffer.destroy(),n.texcoordBuffer&&n.texcoordBuffer.destroy(),n.colorBuffer&&n.colorBuffer.destroy(),n.pbrBuffer&&n.pbrBuffer.destroy(),n.segments.destroy(),n.material&&((e=n.material).pbrMetallicRoughness.baseColorTexture&&e.pbrMetallicRoughness.baseColorTexture.gfxTexture&&e.pbrMetallicRoughness.baseColorTexture.gfxTexture.destroy(),e.pbrMetallicRoughness.metallicRoughnessTexture&&e.pbrMetallicRoughness.metallicRoughnessTexture.gfxTexture&&e.pbrMetallicRoughness.metallicRoughnessTexture.gfxTexture.destroy(),e.normalTexture&&e.normalTexture.gfxTexture&&e.normalTexture.gfxTexture.destroy(),e.emissionTexture&&e.emissionTexture.gfxTexture&&e.emissionTexture.gfxTexture.destroy(),e.occlusionTexture&&e.occlusionTexture.gfxTexture&&e.occlusionTexture.gfxTexture.destroy()));var e;if(r.children)for(const n of r.children)ey(n)}class Wu{constructor(e,n,o){this._demTile=e,this._dem=this._demTile.dem,this._scale=n,this._offset=o}static create(e,n,o){const u=o||e.findDEMTileFor(n);if(!u||!u.dem)return;const l=u.dem,f=u.tileID,v=1<<n.canonical.z-f.canonical.z;return new Wu(u,l.dim/Tt/v,[(n.canonical.x/v-f.canonical.x)*l.dim,(n.canonical.y/v-f.canonical.y)*l.dim])}tileCoordToPixel(e,n){const o=n*this._scale+this._offset[1],u=Math.floor(e*this._scale+this._offset[0]),l=Math.floor(o);return new Et(u,l)}getElevationAt(e,n,o,u){const l=e*this._scale+this._offset[0],f=n*this._scale+this._offset[1],v=Math.floor(l),S=Math.floor(f),D=this._dem;return u=!!u,o?ei(ei(D.get(v,S,u),D.get(v,S+1,u),f-S),ei(D.get(v+1,S,u),D.get(v+1,S+1,u),f-S),l-v):D.get(v,S,u)}getElevationAtPixel(e,n,o){return this._dem.get(e,n,!!o)}getMeterToDEM(e){return(1<<this._demTile.tileID.canonical.z)*pr(1,e)*this._dem.stride}}const ty=new Float32Array(262144),Oh=new Uint8Array(262144);function Tb(r){let e=0;if(r.meshes)for(const n of r.meshes)e=Math.max(e,n.aabb.max[2]);if(r.children)for(const n of r.children)e=Math.max(e,Tb(n));return e}function Mb(r,e,n){if(r.meshes)for(const o of r.meshes){if(o.aabb.min[0]===1/0)continue;const u=Jt.applyTransform(o.aabb,r.matrix);n.insert(e,u.min[0],u.min[1],u.max[0],u.max[1])}if(r.children)for(const o of r.children)Mb(o,e,n)}const Sb=["","wall","door","roof","window","lamp","logo"];class Eb{constructor(e){this.node=e,this.evaluatedRMEA=[[1,0,0,1],[1,0,0,1],[1,0,0,1],[1,0,0,1],[.4,1,0,1],[1,0,0,1],[1,0,0,1]],this.hiddenByReplacement=!1,this.evaluatedScale=[1,1,1],this.evaluatedColor=[],this.emissionHeightBasedParams=[],this.cameraCollisionOpacity=1,this.feature={type:"Point",id:e.id,geometry:[],properties:{height:Tb(e)}},this.aabb=this._getLocalBounds(),this.state=null}_getLocalBounds(){if(!this.node.meshes)return new Jt([1/0,1/0,1/0],[-1/0,-1/0,-1/0]);if(!this.aabb){let e=0;const n=new Jt([1/0,1/0,1/0],[-1/0,-1/0,-1/0]);for(const o of this.node.meshes)this.node.lightMeshIndex!==e&&(o.transformedAabb=Jt.applyTransformFast(o.aabb,this.node.matrix),n.encapsulate(o.transformedAabb)),e++;this.aabb=n}return this.aabb}}class Zm{constructor(e,n,o,u,l,f,v){this.id=o,this.layers=e,this.layerIds=this.layers.map(S=>S.fqid),this.stateDependentLayerIds=this.layers.filter(S=>S.isStateDependent()).map(S=>S.id),this.modelTraits|=qu.CoordinateSpaceTile,this.uploaded=!1,this.hasPattern=!1,u&&(this.modelTraits|=qu.HasMapboxMeshFeatures),l&&(this.modelTraits|=qu.HasMeshoptCompression),this.zoom=-1,this.terrainExaggeration=1,this.projection={name:"mercator"},this.replacementUpdateTime=0,this.elevationReadFromZ=255,this.brightness=f,this.dirty=!0,this.needsUpload=!1,this.nodesInfo=[];for(const S of n)this.nodesInfo.push(new Eb(S)),Mb(S,v.featureIndexArray.length,v.grid),v.featureIndexArray.emplaceBack(this.nodesInfo.length-1,0,v.bucketLayerIDs.length-1,0);this.states={}}updateFootprints(e,n){for(const o of this.getNodesInfo()){const u=o.node;u.footprint&&n.push({footprint:u.footprint,id:e})}}update(e){const n=Object.keys(e).length!==0;if(n&&!this.stateDependentLayers.length)return;const o=n?this.stateDependentLayers:this.layers;if(!$s(e,this.states))for(const u of o)this.evaluate(u,e);this.states=structuredClone(e)}populate(){console.log("populate 3D model bucket")}uploadPending(){return!this.uploaded||this.needsUpload}upload(e){if(!this.needsUpload)return;const n=this.getNodesInfo();for(const o of n){const u=o.node;this.uploaded?this.updatePbrBuffer(u):Qg(u,e,!0)}for(const o of n)Gm(o.node);this.uploaded=!0,this.needsUpload=!1}updatePbrBuffer(e){let n=!1;if(!e.meshes)return n;for(const o of e.meshes)o.pbrBuffer&&(o.pbrBuffer.updateData(o.featureArray),n=!0);return n}needsReEvaluation(e,n,o){const u=e.transform.projectionOptions,l=e.style.getBrightness(),f=this.brightness!==l;if(!this.uploaded||this.dirty||u.name!==this.projection.name||Bf(o.paint.get("model-color").value,f)||Bf(o.paint.get("model-color-mix-intensity").value,f)||Bf(o.paint.get("model-roughness").value,f)||Bf(o.paint.get("model-emissive-strength").value,f)||Bf(o.paint.get("model-height-based-emissive-strength-multiplier").value,f)){this.projection=u,this.brightness=l;const v=this.getNodesInfo();for(const S of v)S.state=null;return!0}return!1}evaluateScale(e,n){if(e.transform.zoom===this.zoom)return;this.zoom=e.transform.zoom;const o=this.getNodesInfo(),u=this.id.canonical;for(const l of o){const f=l.feature;l.evaluatedScale=n.paint.get("model-scale").evaluate(f,{},u)}}evaluate(e,n){const o=this.getNodesInfo();for(const u of o){if(!u.node.meshes)continue;const l=u.feature,f=n&&n[l.id];if($s(f,u.state))continue;u.state=structuredClone(f);const v=u.node.meshes&&u.node.meshes[0].featureData,S=u.evaluatedColor[2],D=u.evaluatedRMEA[2],x=this.id.canonical;if(u.hasTranslucentParts=!1,v){for(let P=0;P<Sb.length;P++){const I=Sb[P];I.length&&(l.properties.part=I);const M=e.paint.get("model-color").evaluate(l,f,x).toRenderColor(null),C=e.paint.get("model-color-mix-intensity").evaluate(l,f,x);u.evaluatedColor[P]=[M.r,M.g,M.b,C],u.evaluatedRMEA[P][0]=e.paint.get("model-roughness").evaluate(l,f,x),u.evaluatedRMEA[P][2]=e.paint.get("model-emissive-strength").evaluate(l,f,x),u.evaluatedRMEA[P][3]=M.a,u.emissionHeightBasedParams[P]=e.paint.get("model-height-based-emissive-strength-multiplier").evaluate(l,f,x),!u.hasTranslucentParts&&M.a<1&&(u.hasTranslucentParts=!0)}delete l.properties.part,qA(u,S!==u.evaluatedColor[2]||D!==u.evaluatedRMEA[2],this.modelTraits)}else u.evaluatedRMEA[0][2]=e.paint.get("model-emissive-strength").evaluate(l,f,x);u.evaluatedScale=e.paint.get("model-scale").evaluate(l,f,x),this.updatePbrBuffer(u.node)||(this.needsUpload=!0)}this.dirty=!1}elevationUpdate(e,n,o,u){const l=e.findDEMTileFor(o);if(l&&(l.tileID.canonical!==this.terrainTile||n!==this.terrainExaggeration)){if(l.dem&&l.tileID.overscaledZ!==this.elevationReadFromZ){this.elevationReadFromZ=l.tileID.overscaledZ;const f=Wu.create(e,o,l);if(!f)return;this.modelTraits&qu.HasMapboxMeshFeatures&&this.updateDEM(e,f,o,u);for(const v of this.getNodesInfo()){const S=v.node;if(!S.footprint||!S.footprint.vertices||!S.footprint.vertices.length)continue;const D=S.footprint.vertices;let x=f.getElevationAt(D[0].x,D[0].y,!0,!0);for(let P=1;P<D.length;P++)x=Math.min(x,f.getElevationAt(D[P].x,D[P].y,!0,!0));S.elevation=x}}this.terrainTile=l.tileID.canonical,this.terrainExaggeration=n}}updateDEM(e,n,o,u){let l=n._dem._modifiedForSources[u];if(l===void 0&&(n._dem._modifiedForSources[u]=[],l=n._dem._modifiedForSources[u]),l.includes(o.canonical))return;const f=n._dem.dim;l.push(o.canonical);let v=!1;for(const S of this.getNodesInfo()){const D=S.node;if(!D.footprint||!D.footprint.grid)continue;const x=D.footprint.grid,P=n.tileCoordToPixel(x.min.x,x.min.y),I=n.tileCoordToPixel(x.max.x,x.max.y),M=Math.min(Math.min(f-I.y,P.x),Math.min(P.y,f-I.x));if(M<0)continue;const C=si(M,2,5);let k=Math.max(0,P.x-C),V=Math.max(0,P.y-C),U=Math.min(I.x+C,f-1),q=Math.min(I.y+C,f-1);for(let Q=V;Q<=q;++Q)for(let ie=k;ie<=U;++ie)Oh[Q*f+ie]=255;let $=0,H=0;for(let Q=0;Q<x.cellsY;++Q)for(let ie=0;ie<x.cellsX;++ie){if(!x.cells[Q*x.cellsX+ie])continue;const fe=n.tileCoordToPixel(x.min.x+ie/x.xScale,x.min.y+Q/x.yScale),de=n.tileCoordToPixel(x.min.x+(ie+1)/x.xScale,x.min.y+(Q+1)/x.yScale);for(let ue=fe.y;ue<=Math.min(de.y+1,f-1);++ue)for(let Se=fe.x;Se<=Math.min(de.x+1,f-1);++Se)Oh[ue*f+Se]===255&&(Oh[ue*f+Se]=0,$+=n.getElevationAtPixel(Se,ue),H++)}const K=$/H;k=Math.max(1,P.x-C),V=Math.max(1,P.y-C),U=Math.min(I.x+C,f-2),q=Math.min(I.y+C,f-2),v=!0;for(let Q=V;Q<=q;++Q)for(let ie=k;ie<=U;++ie)Oh[Q*f+ie]===0&&(ty[Q*f+ie]=n._dem.set(ie,Q,K));for(let Q=1;Q<C;++Q){k=Math.max(1,P.x-Q),V=Math.max(1,P.y-Q),U=Math.min(I.x+Q,f-2),q=Math.min(I.y+Q,f-2);for(let ie=V;ie<=q;++ie)for(let fe=k;fe<=U;++fe){const de=ie*f+fe;if(Oh[de]===255){let ue=0,Se=0,me=-1,Ee=-1;for(let ze=-1;ze<=1;++ze)for(let Ie=-1;Ie<=1;++Ie){const Re=(ie+ze)*f+fe+Ie;if(Oh[Re]>=Q)continue;const Ve=ty[Re],Ue=Math.abs(Ve);Ue>Se&&(ue=Ve,Se=Ue,me=Ie,Ee=ze)}if(Se>.1){const ze=1-(Q+.5*Math.abs(me*Ee))/C;let Ie=n._dem.get(fe,ie)+ue*ze;const Re=n._dem.get(fe+me,ie+Ee),Ve=n._dem.get(fe-me,ie-Ee,!0);(Ie-Re)*(Ie-Ve)>0&&(Ie=(Re+Ve)/2),ty[de]=n._dem.set(fe,ie,Ie),Oh[de]=Q}}}}}v&&(n._demTile.needsDEMTextureUpload=!0,n._dem._timestamp=Ct.now())}getNodesInfo(){return this.nodesInfo}destroy(){const e=this.getNodesInfo();for(const n of e)Gm(n.node),ey(n.node)}isEmpty(){return!this.nodesInfo.length}updateReplacement(e,n){if(n.updateTime===this.replacementUpdateTime)return;this.replacementUpdateTime=n.updateTime;const o=n.getReplacementRegionsForTile(e.toUnwrapped()),u=this.getNodesInfo();for(let l=0;l<this.nodesInfo.length;l++){const f=u[l].node;u[l].hiddenByReplacement=!!f.footprint&&!o.find(v=>v.footprint===f.footprint)}}getHeightAtTileCoord(e,n){const o=this.getNodesInfo(),u=[],l=[0,0,0],f=De.mat4.identity([]);for(let v=0;v<this.nodesInfo.length;v++){const S=o[v],D=S.node.meshes[0],x=D.transformedAabb;if(e<x.min[0]||n<x.min[1]||e>x.max[0]||n>x.max[1])continue;if(S.node.hidden===!0)return{height:1/0,maxHeight:S.feature.properties.height,hidden:!1,verticalScale:S.evaluatedScale[2]};De.mat4.invert(f,S.node.matrix),l[0]=e,l[1]=n,De.vec3.transformMat4(l,l,f);const P=(l[0]-D.aabb.min[0])/(D.aabb.max[0]-D.aabb.min[0])*Rh|0,I=Math.min(63,(l[1]-D.aabb.min[1])/(D.aabb.max[1]-D.aabb.min[1])*Rh|0)*Rh+Math.min(63,P),M=D.heightmap[I];if(!(M<0&&S.node.footprint))return S.hiddenByReplacement?void 0:{height:M,maxHeight:S.feature.properties.height,hidden:!1,verticalScale:S.evaluatedScale[2]};if(S.node.footprint.grid.query(new Et(e,n),new Et(e,n),u),u.length>0)return{height:void 0,maxHeight:S.feature.properties.height,hidden:S.hiddenByReplacement,verticalScale:S.evaluatedScale[2]}}}}function Bf(r,e){return!r.isLightConstant&&e}function HA(r,e,n,o,u,l,f,v){let S=(61440&e|(61440&e)>>4)>>8,D=(3840&e|(3840&e)>>4)>>4,x=240&e|(240&e)>>4;n[3]>0&&(S=ei(S,255*n[0],n[3]),D=ei(D,255*n[1],n[3]),x=ei(x,255*n[2],n[3]));const P=S<<8|D,I=x<<8|Math.floor(255*o[3]),M=function(Q){const ie=si(Q,0,2);return Math.min(Math.round(.5*ie*255),255)}(o[2])<<8|15*o[0]<<4|15*o[1],C=si(u[0],0,1),k=si(u[1],0,1),V=si(u[2],0,1),U=si(u[3],0,1);let q,$,H,K;if(C!==k&&f!==l&&k!==C){const Q=f-l;$=1/(Q*(k-C)),H=-(l+Q*C)/(Q*(k-C));const ie=si(u[4],-1,1);K=Math.pow(10,ie),q=255*V<<8|255*U}else q=65535,$=0,H=1,K=1;if(r.emplaceBack(P,I,M,q,$,H,K),v){const Q=v.length;v.clear();for(let ie=0;ie<Q;ie++)v.emplaceBack(P,I,M,q,$,H,K)}}function qA(r,e,n){const o=r.node;let u=0;const l=n&qu.HasMeshoptCompression;for(const f of o.meshes){if(o.lights&&o.lightMeshIndex===u||!f.featureData)continue;f.featureArray=new wh,f.featureArray.reserve(f.featureData.length);let v=e;for(const S of f.featureData){const D=l?65535&S:S>>16&65535,x=l?S>>16&65535:65535&S,P=(15&x)<8?15&x:0,I=r.evaluatedRMEA[P],M=r.evaluatedColor[P],C=r.emissionHeightBasedParams[P];let k;if(v&&P===2&&o.lights&&(k=new wh,k.resize(10*o.lights.length)),HA(f.featureArray,D,M,I,C,f.aabb.min[2],f.aabb.max[2],k),k&&v){v=!1;const V=o.meshes[o.lightMeshIndex];V.featureArray=k,V.featureArray._trim()}}f.featureArray._trim(),u++}}function Pb(r,e,n,o){const u=1<<r.z;e.lat=Fs((o/Tt+r.y)/u),e.lng=Vr((n/Tt+r.x)/u)}Ft(Zm,"Tiled3dModelBucket",{omit:["layers"]}),Ft(Eb,"Tiled3dModelFeature");const WA={circle:class extends wr{constructor(r,e,n,o){super(r,{layout:Ge||(Ge=new Bn({"circle-sort-key":new Dt($e.layout_circle["circle-sort-key"]),visibility:new yt($e.layout_circle.visibility)})),paint:lt||(lt=new Bn({"circle-radius":new Dt($e.paint_circle["circle-radius"]),"circle-color":new Dt($e.paint_circle["circle-color"]),"circle-blur":new Dt($e.paint_circle["circle-blur"]),"circle-opacity":new Dt($e.paint_circle["circle-opacity"]),"circle-translate":new yt($e.paint_circle["circle-translate"]),"circle-translate-anchor":new yt($e.paint_circle["circle-translate-anchor"]),"circle-pitch-scale":new yt($e.paint_circle["circle-pitch-scale"]),"circle-pitch-alignment":new yt($e.paint_circle["circle-pitch-alignment"]),"circle-stroke-width":new Dt($e.paint_circle["circle-stroke-width"]),"circle-stroke-color":new Dt($e.paint_circle["circle-stroke-color"]),"circle-stroke-opacity":new Dt($e.paint_circle["circle-stroke-opacity"]),"circle-emissive-strength":new yt($e.paint_circle["circle-emissive-strength"]),"circle-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"}),"circle-stroke-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"})}))},e,n,o)}createBucket(r){return new ee(r)}queryRadius(r){const e=r;return Ne("circle-radius",this,e)+Ne("circle-stroke-width",this,e)+st(this.paint.get("circle-translate"))}queryIntersectsFeature(r,e,n,o,u,l,f,v){const S=xt(this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),l.angle,r.pixelToTileUnitsFactor),D=this.paint.get("circle-radius").evaluate(e,n)+this.paint.get("circle-stroke-width").evaluate(e,n);return Bu(r,o,l,f,v,this.paint.get("circle-pitch-alignment")==="map",this.paint.get("circle-pitch-scale")==="map",S,D)}getProgramIds(){return["circle"]}getDefaultProgramParams(r,e,n){const o=Fu(this);return{config:new Vl(this,{zoom:e,lut:n}),defines:o,overrideFog:!1}}},heatmap:class extends wr{createBucket(r){return new rv(r)}constructor(r,e,n,o){super(r,{layout:ov||(ov=new Bn({visibility:new yt($e.layout_heatmap.visibility)})),paint:av||(av=new Bn({"heatmap-radius":new Dt($e.paint_heatmap["heatmap-radius"]),"heatmap-weight":new Dt($e.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new yt($e.paint_heatmap["heatmap-intensity"]),"heatmap-color":new Ja($e.paint_heatmap["heatmap-color"]),"heatmap-opacity":new yt($e.paint_heatmap["heatmap-opacity"]),"heatmap-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"})}))},e,n,o),this._updateColorRamp()}_handleSpecialPaintPropertyUpdate(r){r==="heatmap-color"&&this._updateColorRamp()}_updateColorRamp(){this.colorRamp=gf({expression:this._transitionablePaint._values["heatmap-color"].value.expression,evaluationKey:"heatmapDensity",image:this.colorRamp}),this.colorRampTexture=null}resize(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null)}queryRadius(r){return Ne("heatmap-radius",this,r)}queryIntersectsFeature(r,e,n,o,u,l,f,v){const S=this.paint.get("heatmap-radius").evaluate(e,n);return Bu(r,o,l,f,v,!0,!0,new Et(0,0),S)}hasOffscreenPass(){return this.paint.get("heatmap-opacity")!==0&&this.visibility!=="none"}getProgramIds(){return["heatmap","heatmapTexture"]}getDefaultProgramParams(r,e,n){return r==="heatmap"?{config:new Vl(this,{zoom:e,lut:n}),overrideFog:!1}:{}}},hillshade:class extends wr{constructor(r,e,n,o){super(r,{layout:lv||(lv=new Bn({visibility:new yt($e.layout_hillshade.visibility)})),paint:cv||(cv=new Bn({"hillshade-illumination-direction":new yt($e.paint_hillshade["hillshade-illumination-direction"]),"hillshade-illumination-anchor":new yt($e.paint_hillshade["hillshade-illumination-anchor"]),"hillshade-exaggeration":new yt($e.paint_hillshade["hillshade-exaggeration"]),"hillshade-shadow-color":new yt($e.paint_hillshade["hillshade-shadow-color"]),"hillshade-highlight-color":new yt($e.paint_hillshade["hillshade-highlight-color"]),"hillshade-accent-color":new yt($e.paint_hillshade["hillshade-accent-color"]),"hillshade-emissive-strength":new yt($e.paint_hillshade["hillshade-emissive-strength"]),"hillshade-shadow-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"}),"hillshade-highlight-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"}),"hillshade-accent-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"})}))},e,n,o)}shouldRedrape(){return this.hasOffscreenPass()&&this.paint.get("hillshade-illumination-anchor")==="viewport"}hasOffscreenPass(){return this.paint.get("hillshade-exaggeration")!==0&&this.visibility!=="none"}getProgramIds(){return["hillshade","hillshadePrepare"]}getDefaultProgramParams(r,e,n){return{overrideFog:!1}}},fill:class extends wr{constructor(r,e,n,o){super(r,{layout:yv||(yv=new Bn({"fill-sort-key":new Dt($e.layout_fill["fill-sort-key"]),visibility:new yt($e.layout_fill.visibility),"fill-elevation-reference":new yt($e.layout_fill["fill-elevation-reference"])})),paint:xv||(xv=new Bn({"fill-antialias":new yt($e.paint_fill["fill-antialias"]),"fill-opacity":new Dt($e.paint_fill["fill-opacity"]),"fill-color":new Dt($e.paint_fill["fill-color"]),"fill-outline-color":new Dt($e.paint_fill["fill-outline-color"]),"fill-translate":new yt($e.paint_fill["fill-translate"]),"fill-translate-anchor":new yt($e.paint_fill["fill-translate-anchor"]),"fill-pattern":new Dt($e.paint_fill["fill-pattern"]),"fill-emissive-strength":new yt($e.paint_fill["fill-emissive-strength"]),"fill-z-offset":new Dt($e.paint_fill["fill-z-offset"]),"fill-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"}),"fill-outline-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"})}))},e,n,o)}getProgramIds(){const r=this.paint.get("fill-pattern"),e=r&&r.constantOr(1),n=[e?"fillPattern":"fill"];return this.paint.get("fill-antialias")&&n.push(e&&!this.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline"),n}getDefaultProgramParams(r,e,n){return{config:new Vl(this,{zoom:e,lut:n}),overrideFog:!1}}recalculate(r,e){super.recalculate(r,e);const n=this.paint._values["fill-outline-color"];n.value.kind==="constant"&&n.value.value===void 0&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"])}createBucket(r){return new gg(r)}queryRadius(){return st(this.paint.get("fill-translate"))}queryIntersectsFeature(r,e,n,o,u,l){return!r.queryGeometry.isAboveHorizon&&he(ut(r.tilespaceGeometry,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),l.angle,r.pixelToTileUnitsFactor),o)}isTileClipped(){return!0}is3D(){return this.paint.get("fill-z-offset").constantOr(1)!==0}},"fill-extrusion":class extends wr{constructor(r,e,n,o){super(r,{layout:e1||(e1=new Bn({visibility:new yt($e["layout_fill-extrusion"].visibility),"fill-extrusion-edge-radius":new yt($e["layout_fill-extrusion"]["fill-extrusion-edge-radius"])})),paint:t1||(t1=new Bn({"fill-extrusion-opacity":new yt($e["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Dt($e["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new yt($e["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new yt($e["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Dt($e["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Dt($e["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Dt($e["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-height-alignment":new yt($e["paint_fill-extrusion"]["fill-extrusion-height-alignment"]),"fill-extrusion-base-alignment":new yt($e["paint_fill-extrusion"]["fill-extrusion-base-alignment"]),"fill-extrusion-vertical-gradient":new yt($e["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"]),"fill-extrusion-ambient-occlusion-intensity":new yt($e["paint_fill-extrusion"]["fill-extrusion-ambient-occlusion-intensity"]),"fill-extrusion-ambient-occlusion-radius":new yt($e["paint_fill-extrusion"]["fill-extrusion-ambient-occlusion-radius"]),"fill-extrusion-ambient-occlusion-wall-radius":new yt($e["paint_fill-extrusion"]["fill-extrusion-ambient-occlusion-wall-radius"]),"fill-extrusion-ambient-occlusion-ground-radius":new yt($e["paint_fill-extrusion"]["fill-extrusion-ambient-occlusion-ground-radius"]),"fill-extrusion-ambient-occlusion-ground-attenuation":new yt($e["paint_fill-extrusion"]["fill-extrusion-ambient-occlusion-ground-attenuation"]),"fill-extrusion-flood-light-color":new yt($e["paint_fill-extrusion"]["fill-extrusion-flood-light-color"]),"fill-extrusion-flood-light-intensity":new yt($e["paint_fill-extrusion"]["fill-extrusion-flood-light-intensity"]),"fill-extrusion-flood-light-wall-radius":new Dt($e["paint_fill-extrusion"]["fill-extrusion-flood-light-wall-radius"]),"fill-extrusion-flood-light-ground-radius":new Dt($e["paint_fill-extrusion"]["fill-extrusion-flood-light-ground-radius"]),"fill-extrusion-flood-light-ground-attenuation":new yt($e["paint_fill-extrusion"]["fill-extrusion-flood-light-ground-attenuation"]),"fill-extrusion-vertical-scale":new yt($e["paint_fill-extrusion"]["fill-extrusion-vertical-scale"]),"fill-extrusion-rounded-roof":new yt($e["paint_fill-extrusion"]["fill-extrusion-rounded-roof"]),"fill-extrusion-cutoff-fade-range":new yt($e["paint_fill-extrusion"]["fill-extrusion-cutoff-fade-range"]),"fill-extrusion-emissive-strength":new Dt($e["paint_fill-extrusion"]["fill-extrusion-emissive-strength"]),"fill-extrusion-line-width":new Dt($e["paint_fill-extrusion"]["fill-extrusion-line-width"]),"fill-extrusion-cast-shadows":new yt($e["paint_fill-extrusion"]["fill-extrusion-cast-shadows"]),"fill-extrusion-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"}),"fill-extrusion-flood-light-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"})}))},e,n,o),this._stats={numRenderedVerticesInShadowPass:0,numRenderedVerticesInTransparentPass:0}}createBucket(r){return new vm(r)}queryRadius(){return st(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}hasShadowPass(){return this.paint.get("fill-extrusion-cast-shadows")}cutoffRange(){return this.paint.get("fill-extrusion-cutoff-fade-range")}canCastShadows(){return!0}getProgramIds(){return[this.paint.get("fill-extrusion-pattern").constantOr(1)?"fillExtrusionPattern":"fillExtrusion"]}queryIntersectsFeature(r,e,n,o,u,l,f,v,S){const D=xt(this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),l.angle,r.pixelToTileUnitsFactor),x=this.paint.get("fill-extrusion-height").evaluate(e,n),P=this.paint.get("fill-extrusion-base").evaluate(e,n),I=[0,0],M=v&&l.elevation,C=l.elevation?l.elevation.exaggeration():1,k=r.tile.getBucket(this);if(M&&k instanceof vm){const H=k.centroidVertexArray,K=S+1;K<H.length&&(I[0]=H.geta_centroid_pos0(K),I[1]=H.geta_centroid_pos1(K))}if(I[0]===0&&I[1]===1)return!1;l.projection.name==="globe"&&(o=Qv([o],[new Et(0,0),new Et(Tt,Tt)],r.tileID.canonical).map(H=>H.polygon).flat());const V=M?v:null,[U,q]=function(H,K,Q,ie,fe,de,ue,Se,me,Ee,ze){return H.projection.name==="globe"?function(Ie,Re,Ve,Ue,Fe,et,dt,tt,Mt,wt,At){const rt=[],Ut=[],St=Ie.projection.upVectorScale(At,Ie.center.lat,Ie.worldSize).metersToTile,Nt=[0,0,0,1],Qt=[0,0,0,1],pi=(Ai,yi,Ii,fn)=>{Ai[0]=yi,Ai[1]=Ii,Ai[2]=fn,Ai[3]=1},gi=Jv();Ve>0&&(Ve+=gi),Ue+=gi;for(const Ai of Re){const yi=[],Ii=[];for(const fn of Ai){const rn=fn.x+Fe.x,hi=fn.y+Fe.y,on=Ie.projection.projectTilePoint(rn,hi,At),en=Ie.projection.upVector(At,fn.x,fn.y);let pn=Ve,hs=Ue;if(dt){const us=n1(rn,hi,Ve,Ue,dt,tt,Mt,wt);pn+=us.base,hs+=us.top}Ve!==0?pi(Nt,on.x+en[0]*St*pn,on.y+en[1]*St*pn,on.z+en[2]*St*pn):pi(Nt,on.x,on.y,on.z),pi(Qt,on.x+en[0]*St*hs,on.y+en[1]*St*hs,on.z+en[2]*St*hs),De.vec3.transformMat4(Nt,Nt,et),De.vec3.transformMat4(Qt,Qt,et),yi.push(new kh(Nt[0],Nt[1],Nt[2])),Ii.push(new kh(Qt[0],Qt[1],Qt[2]))}rt.push(yi),Ut.push(Ii)}return[rt,Ut]}(H,K,Q,ie,fe,de,ue,Se,me,Ee,ze):ue?function(Ie,Re,Ve,Ue,Fe,et,dt,tt,Mt){const wt=[],At=[],rt=[0,0,0,1];for(const Ut of Ie){const St=[],Nt=[];for(const Qt of Ut){const pi=Qt.x+Ue.x,gi=Qt.y+Ue.y,Ai=n1(pi,gi,Re,Ve,et,dt,tt,Mt);rt[0]=pi,rt[1]=gi,rt[2]=Ai.base,rt[3]=1,De.vec4.transformMat4(rt,rt,Fe),rt[3]=Math.max(rt[3],1e-5);const yi=new kh(rt[0]/rt[3],rt[1]/rt[3],rt[2]/rt[3]);rt[0]=pi,rt[1]=gi,rt[2]=Ai.top,rt[3]=1,De.vec4.transformMat4(rt,rt,Fe),rt[3]=Math.max(rt[3],1e-5);const Ii=new kh(rt[0]/rt[3],rt[1]/rt[3],rt[2]/rt[3]);St.push(yi),Nt.push(Ii)}wt.push(St),At.push(Nt)}return[wt,At]}(K,Q,ie,fe,de,ue,Se,me,Ee):function(Ie,Re,Ve,Ue,Fe){const et=[],dt=[],tt=Fe[8]*Re,Mt=Fe[9]*Re,wt=Fe[10]*Re,At=Fe[11]*Re,rt=Fe[8]*Ve,Ut=Fe[9]*Ve,St=Fe[10]*Ve,Nt=Fe[11]*Ve;for(const Qt of Ie){const pi=[],gi=[];for(const Ai of Qt){const yi=Ai.x+Ue.x,Ii=Ai.y+Ue.y,fn=Fe[0]*yi+Fe[4]*Ii+Fe[12],rn=Fe[1]*yi+Fe[5]*Ii+Fe[13],hi=Fe[2]*yi+Fe[6]*Ii+Fe[14],on=Fe[3]*yi+Fe[7]*Ii+Fe[15],en=fn+tt,pn=rn+Mt,hs=hi+wt,us=Math.max(on+At,1e-5),Kn=fn+rt,Gr=rn+Ut,En=hi+St,Ln=Math.max(on+Nt,1e-5);pi.push(new kh(en/us,pn/us,hs/us)),gi.push(new kh(Kn/Ln,Gr/Ln,En/Ln))}et.push(pi),dt.push(gi)}return[et,dt]}(K,Q,ie,fe,de)}(l,o,P,x,D,f,V,I,C,l.center.lat,r.tileID.canonical),$=r.queryGeometry;return function(H,K,Q){let ie=1/0;he(Q,K)&&(ie=i1(Q,K[0]));for(let fe=0;fe<K.length;fe++){const de=K[fe],ue=H[fe];for(let Se=0;Se<de.length-1;Se++){const me=de[Se],Ee=[me,de[Se+1],ue[Se+1],ue[Se],me];se(Q,Ee)&&(ie=Math.min(ie,i1(Q,Ee)))}}return ie!==1/0&&ie}(U,q,$.isPointQuery()?$.screenBounds:$.screenGeometry)}},line:class extends wr{constructor(r,e,n,o){const u=f1();super(r,u,e,n,o),u.layout&&(this.layout=new vc(u.layout)),this.gradientVersion=0}_handleSpecialPaintPropertyUpdate(r){if(r==="line-gradient"){const e=this._transitionablePaint._values["line-gradient"].value.expression;this.stepInterpolant=e._styleExpression&&e._styleExpression.expression instanceof Ti,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}widthExpression(){return this._transitionablePaint._values["line-width"].value.expression}recalculate(r,e){super.recalculate(r,e),this.paint._values["line-floorwidth"]=(()=>{if(Ef)return Ef;const n=f1();return Ef=new YP(n.paint.properties["line-width"].specification),Ef.useIntegerZoom=!0,Ef})().possiblyEvaluate(this._transitioningPaint._values["line-width"].value,r)}createBucket(r){return new Pg(r)}getProgramIds(){return[this.paint.get("line-pattern").constantOr(1)?"linePattern":"line"]}getDefaultProgramParams(r,e,n){const o=u1(this);return{config:new Vl(this,{zoom:e,lut:n}),defines:o,overrideFog:!1}}queryRadius(r){const e=r,n=p1(Ne("line-width",this,e),Ne("line-gap-width",this,e)),o=Ne("line-offset",this,e);return n/2+Math.abs(o)+st(this.paint.get("line-translate"))}queryIntersectsFeature(r,e,n,o,u,l){if(r.queryGeometry.isAboveHorizon)return!1;const f=ut(r.tilespaceGeometry,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),l.angle,r.pixelToTileUnitsFactor),v=r.pixelToTileUnitsFactor/2*p1(this.paint.get("line-width").evaluate(e,n),this.paint.get("line-gap-width").evaluate(e,n)),S=this.paint.get("line-offset").evaluate(e,n);return S&&(o=function(D,x){const P=[],I=new Et(0,0);for(let M=0;M<D.length;M++){const C=D[M],k=[];for(let V=0;V<C.length;V++){const U=C[V],q=C[V+1],$=V===0?I:U.sub(C[V-1])._unit()._perp(),H=V===C.length-1?I:q.sub(U)._unit()._perp(),K=$._add(H)._unit();K._mult(1/(K.x*H.x+K.y*H.y)),k.push(K._mult(x)._add(U))}P.push(k)}return P}(o,S*r.pixelToTileUnitsFactor)),function(D,x,P){for(let I=0;I<x.length;I++){const M=x[I];if(D.length>=3){for(let C=0;C<M.length;C++)if(Ae(D,M[C]))return!0}if(_e(D,M,P))return!0}return!1}(f,o,v)}isTileClipped(){return!0}isDraped(r){const e=this.layout.get("line-z-offset"),n=e.isConstant()&&!e.constantOr(0),o=this.layout.get("line-elevation-reference");return!(o==="sea"||o==="ground")&&(n||o!=="none")}},symbol:Om,background:class extends wr{constructor(r,e,n,o){super(r,{layout:J1||(J1=new Bn({visibility:new yt($e.layout_background.visibility)})),paint:Q1||(Q1=new Bn({"background-pitch-alignment":new yt($e.paint_background["background-pitch-alignment"]),"background-color":new yt($e.paint_background["background-color"]),"background-pattern":new yt($e.paint_background["background-pattern"]),"background-opacity":new yt($e.paint_background["background-opacity"]),"background-emissive-strength":new yt($e.paint_background["background-emissive-strength"]),"background-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"})}))},e,n,o)}getProgramIds(){return[this.paint.get("background-pattern")?"backgroundPattern":"background"]}getDefaultProgramParams(r,e,n){return{overrideFog:!1}}is3D(){return this.paint.get("background-pitch-alignment")==="viewport"}},raster:sb,"raster-particle":hb,sky:class extends wr{constructor(r,e,n,o){super(r,{layout:ab||(ab=new Bn({visibility:new yt($e.layout_sky.visibility)})),paint:lb||(lb=new Bn({"sky-type":new yt($e.paint_sky["sky-type"]),"sky-atmosphere-sun":new yt($e.paint_sky["sky-atmosphere-sun"]),"sky-atmosphere-sun-intensity":new yt($e.paint_sky["sky-atmosphere-sun-intensity"]),"sky-gradient-center":new yt($e.paint_sky["sky-gradient-center"]),"sky-gradient-radius":new yt($e.paint_sky["sky-gradient-radius"]),"sky-gradient":new Ja($e.paint_sky["sky-gradient"]),"sky-atmosphere-halo-color":new yt($e.paint_sky["sky-atmosphere-halo-color"]),"sky-atmosphere-color":new yt($e.paint_sky["sky-atmosphere-color"]),"sky-opacity":new yt($e.paint_sky["sky-opacity"]),"sky-gradient-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"}),"sky-atmosphere-halo-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"}),"sky-atmosphere-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"})}))},e,n,o),this._updateColorRamp()}_handleSpecialPaintPropertyUpdate(r){r==="sky-gradient"?this._updateColorRamp():r!=="sky-atmosphere-sun"&&r!=="sky-atmosphere-halo-color"&&r!=="sky-atmosphere-color"&&r!=="sky-atmosphere-sun-intensity"||(this._skyboxInvalidated=!0)}_updateColorRamp(){this.colorRamp=gf({expression:this._transitionablePaint._values["sky-gradient"].value.expression,evaluationKey:"skyRadialProgress"}),this.colorRampTexture&&(this.colorRampTexture.destroy(),this.colorRampTexture=null)}needsSkyboxCapture(r){if(this._skyboxInvalidated||!this.skyboxTexture||!this.skyboxGeometry)return!0;if(!this.paint.get("sky-atmosphere-sun")){const e=r.style.light.properties.get("position");return this._lightPosition.azimuthal!==e.azimuthal||this._lightPosition.polar!==e.polar}return!1}getCenter(r,e){if(this.paint.get("sky-type")==="atmosphere"){const o=this.paint.get("sky-atmosphere-sun"),u=!o,l=r.style.light,f=l.properties.get("position");return u&&l.properties.get("anchor")==="viewport"&&mi("The sun direction is attached to a light with viewport anchor, lighting may behave unexpectedly."),u?Xg(f.azimuthal,90-f.polar,e):Xg(o[0],90-o[1],e)}const n=this.paint.get("sky-gradient-center");return Xg(n[0],90-n[1],e)}isSky(){return!0}markSkyboxValid(r){this._skyboxInvalidated=!1,this._lightPosition=r.style.light.properties.get("position")}hasOffscreenPass(){return!0}getProgramIds(){const r=this.paint.get("sky-type");return r==="atmosphere"?["skyboxCapture","skybox"]:r==="gradient"?["skyboxGradient"]:null}},slot:class extends wr{constructor(r,e,n,o){super(r,{paint:cb||(cb=new Bn({}))},e,null)}},model:class extends wr{constructor(r,e,n,o){super(r,{layout:vb||(vb=new Bn({visibility:new yt($e.layout_model.visibility),"model-id":new Dt($e.layout_model["model-id"])})),paint:bb||(bb=new Bn({"model-opacity":new Dt($e.paint_model["model-opacity"]),"model-rotation":new Dt($e.paint_model["model-rotation"]),"model-scale":new Dt($e.paint_model["model-scale"]),"model-translation":new Dt($e.paint_model["model-translation"]),"model-color":new Dt($e.paint_model["model-color"]),"model-color-mix-intensity":new Dt($e.paint_model["model-color-mix-intensity"]),"model-type":new yt($e.paint_model["model-type"]),"model-cast-shadows":new yt($e.paint_model["model-cast-shadows"]),"model-receive-shadows":new yt($e.paint_model["model-receive-shadows"]),"model-ambient-occlusion-intensity":new yt($e.paint_model["model-ambient-occlusion-intensity"]),"model-emissive-strength":new Dt($e.paint_model["model-emissive-strength"]),"model-roughness":new Dt($e.paint_model["model-roughness"]),"model-height-based-emissive-strength-multiplier":new Dt($e.paint_model["model-height-based-emissive-strength-multiplier"]),"model-cutoff-fade-range":new yt($e.paint_model["model-cutoff-fade-range"]),"model-front-cutoff":new yt($e.paint_model["model-front-cutoff"]),"model-color-use-theme":new Dt({type:"string",default:"default","property-type":"data-driven"})}))},e,n,o),this._stats={numRenderedVerticesInShadowPass:0,numRenderedVerticesInTransparentPass:0}}createBucket(r){return new Jg(r)}getProgramIds(){return["model"]}is3D(){return!0}hasShadowPass(){return!0}canCastShadows(){return!0}hasLightBeamPass(){return!0}cutoffRange(){return this.paint.get("model-cutoff-fade-range")}queryRadius(r){return r instanceof Zm?Tt-1:0}queryIntersectsFeature(r,e,n,o,u,l){if(!this.modelManager)return!1;const f=this.modelManager,v=r.tile.getBucket(this);if(!(v&&v instanceof Jg))return!1;for(const S in v.instancesPerModel){const D=v.instancesPerModel[S],x=e.id!==void 0?e.id:e.properties&&e.properties.hasOwnProperty("id")?e.properties.id:void 0;if(D.idToFeaturesIndex.hasOwnProperty(x)){const P=D.features[D.idToFeaturesIndex[x]],I=f.getModel(S,this.scope);if(!I)return!1;let M=De.mat4.create();const C=new Ui(0,0),k=v.canonical;let V=Number.MAX_VALUE;for(let U=0;U<P.instancedDataCount;++U){const q=16*(P.instancedDataOffset+U),$=D.instancedDataArray.float32,H=[$[q+4],$[q+5],$[q+6]];Pb(k,C,$[q],0|$[q+1]),wb(M,I,l,C,P.rotation,P.scale,H,!1,!1,!1),l.projection.name==="globe"&&(M=Kg(M,l));const K=De.mat4.multiply([],l.projMatrix,M),Q=r.queryGeometry,ie=mb(Q.isPointQuery()?Q.screenBounds:Q.screenGeometry,l,K,I.aabb);ie!=null&&(V=Math.min(ie,V))}return V!==Number.MAX_VALUE&&V}}return!1}_handleOverridablePaintPropertyUpdate(r,e,n){return!(!this.layout||e.isDataDriven()||n.isDataDriven()||r!=="model-color"&&r!=="model-color-mix-intensity"&&r!=="model-rotation"&&r!=="model-scale"&&r!=="model-translation"&&r!=="model-emissive-strength")}_isPropertyZoomDependent(r){const e=this._transitionablePaint._values[r];return e!=null&&e.value!=null&&e.value.expression!=null&&e.value.expression instanceof mc}isZoomDependent(){return this._isPropertyZoomDependent("model-scale")||this._isPropertyZoomDependent("model-rotation")||this._isPropertyZoomDependent("model-translation")}},clip:class extends wr{constructor(r,e,n,o){super(r,{layout:vv||(vv=new Bn({"clip-layer-types":new yt($e.layout_clip["clip-layer-types"]),"clip-layer-scope":new yt($e.layout_clip["clip-layer-scope"])})),paint:bv||(bv=new Bn({}))},e,n,o)}recalculate(r,e){super.recalculate(r,e)}createBucket(r){return new wv(r)}isTileClipped(){return!0}is3D(){return!0}}};class $A{constructor(e){this._callback=e,this._triggered=!1,typeof MessageChannel<"u"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._callback()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(()=>{this._triggered=!1,this._callback()},0))}remove(){this._channel=void 0,this._callback=()=>{}}}class XA{constructor(){this.tasks={},this.taskQueue=[],wo(["process"],this),this.invoker=new $A(this.process),this.nextId=0}add(e,n){const o=this.nextId++,u=function({type:l,isSymbolTile:f,zoom:v}){return v=v||0,l==="message"?0:l!=="maybePrepare"||f?l!=="parseTile"||f?l==="parseTile"&&f?300-v:l==="maybePrepare"&&f?400-v:500:200-v:100-v}(n);if(u===0){try{e()}finally{}return null}return this.tasks[o]={fn:e,metadata:n,priority:u,id:o},this.taskQueue.push(o),this.invoker.trigger(),{cancel:()=>{delete this.tasks[o]}}}process(){try{if(this.taskQueue=this.taskQueue.filter(o=>!!this.tasks[o]),!this.taskQueue.length)return;const e=this.pick();if(e===null)return;const n=this.tasks[e];if(delete this.tasks[e],this.taskQueue.length&&this.invoker.trigger(),!n)return;n.fn()}finally{}}pick(){let e=null,n=1/0;for(let u=0;u<this.taskQueue.length;u++){const l=this.tasks[this.taskQueue[u]];l.priority<n&&(n=l.priority,e=u)}if(e===null)return null;const o=this.taskQueue[e];return this.taskQueue.splice(e,1),o}remove(){this.invoker.remove()}}class Ab{constructor(e,n,o){this.target=e,this.parent=n,this.mapId=o,this.callbacks={},this.cancelCallbacks={},wo(["receive"],this),this.target.addEventListener("message",this.receive,!1),this.scheduler=new XA}send(e,n,o,u,l=!1,f){const v=Math.round(1e18*Math.random()).toString(36).substring(0,10);o&&(o.metadata=f,this.callbacks[v]=o);const S=new Set;return this.target.postMessage({id:v,type:e,hasCallback:!!o,targetMapId:u,mustQueue:l,sourceMapId:this.mapId,data:uo(n,S)},S),{cancel:()=>{o&&delete this.callbacks[v],this.target.postMessage({id:v,type:"<cancel>",targetMapId:u,sourceMapId:this.mapId})}}}receive(e){const n=e.data,o=n.id;if(o&&(!n.targetMapId||this.mapId===n.targetMapId))if(n.type==="<cancel>"){const u=this.cancelCallbacks[o];delete this.cancelCallbacks[o],u&&u.cancel()}else if(n.mustQueue||Qn()){const u=this.callbacks[o],l=this.scheduler.add(()=>this.processTask(o,n),u&&u.metadata||{type:"message"});l&&(this.cancelCallbacks[o]=l)}else this.processTask(o,n)}processTask(e,n){if(delete this.cancelCallbacks[e],n.type==="<response>"){const o=this.callbacks[e];delete this.callbacks[e],o&&(n.error?o(kl(n.error)):o(null,kl(n.data)))}else{const o=new Set,u=n.hasCallback?(f,v)=>{this.target.postMessage({id:e,type:"<response>",sourceMapId:this.mapId,error:f?uo(f):null,data:uo(v,o)},o)}:()=>{},l=kl(n.data);if(this.parent[n.type])this.parent[n.type](n.sourceMapId,l,u);else if(this.parent.getWorkerSource){const f=n.type.split(".");this.parent.getWorkerSource(n.sourceMapId,f[0],l.source,l.scope)[f[1]](l,u)}else u(new Error(`Could not find function ${n.type}`))}}remove(){this.scheduler.remove(),this.target.removeEventListener("message",this.receive,!1)}}var Nf={workerUrl:"",workerClass:null,workerParams:void 0};const iy="mapboxgl_preloaded_worker_pool";class Fh{constructor(){this.active={}}acquire(e,n=Fh.workerCount){if(!this.workers)for(this.workers=[];this.workers.length<n;)this.workers.push(Nf.workerClass!=null?new Nf.workerClass:new self.Worker(Nf.workerUrl,Nf.workerParams));return this.active[e]=!0,this.workers.slice()}release(e){delete this.active[e],this.workers&&this.numActive()===0&&(this.workers.forEach(n=>{n.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[iy]}numActive(){return Object.keys(this.active).length}}Fh.workerCount=2;class $u{constructor(e,n,o="Worker",u=Fh.workerCount){this.workerPool=e,this.actors=[],this.currentActor=0,this.id=vo();const l=this.workerPool.acquire(this.id,u);for(let f=0;f<l.length;f++){const v=new $u.Actor(l[f],n,this.id);v.name=`${o} ${f}`,this.actors.push(v)}this.ready=!1,this.broadcast("checkIfReady",null,()=>{this.ready=!0})}broadcast(e,n,o){Rn(this.actors,(u,l)=>{u.send(e,n,l)},o=o||function(){})}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(){this.actors.forEach(e=>{e.remove()}),this.actors=[],this.workerPool.release(this.id)}}let Vf,ny;function Hm(){return Vf||(Vf=new Fh),Vf}$u.Actor=Ab;const sy=new ki(0,0,0);var qm=(r=>(r[r.PATH_RULE_UNSPECIFIED=0]="PATH_RULE_UNSPECIFIED",r[r.PATH_RULE_NON_ZERO=1]="PATH_RULE_NON_ZERO",r[r.PATH_RULE_EVEN_ODD=2]="PATH_RULE_EVEN_ODD",r))(qm||{}),Wm=(r=>(r[r.LINE_CAP_UNSPECIFIED=0]="LINE_CAP_UNSPECIFIED",r[r.LINE_CAP_BUTT=1]="LINE_CAP_BUTT",r[r.LINE_CAP_ROUND=2]="LINE_CAP_ROUND",r[r.LINE_CAP_SQUARE=3]="LINE_CAP_SQUARE",r))(Wm||{}),Uf=(r=>(r[r.LINE_JOIN_UNSPECIFIED=0]="LINE_JOIN_UNSPECIFIED",r[r.LINE_JOIN_MITER=1]="LINE_JOIN_MITER",r[r.LINE_JOIN_MITER_CLIP=2]="LINE_JOIN_MITER_CLIP",r[r.LINE_JOIN_ROUND=3]="LINE_JOIN_ROUND",r[r.LINE_JOIN_BEVEL=4]="LINE_JOIN_BEVEL",r))(Uf||{}),Cb=(r=>(r[r.PAINT_ORDER_UNSPECIFIED=0]="PAINT_ORDER_UNSPECIFIED",r[r.PAINT_ORDER_FILL_AND_STROKE=1]="PAINT_ORDER_FILL_AND_STROKE",r[r.PAINT_ORDER_STROKE_AND_FILL=2]="PAINT_ORDER_STROKE_AND_FILL",r))(Cb||{}),Xu=(r=>(r[r.PATH_COMMAND_UNSPECIFIED=0]="PATH_COMMAND_UNSPECIFIED",r[r.PATH_COMMAND_MOVE=1]="PATH_COMMAND_MOVE",r[r.PATH_COMMAND_LINE=2]="PATH_COMMAND_LINE",r[r.PATH_COMMAND_QUAD=3]="PATH_COMMAND_QUAD",r[r.PATH_COMMAND_CUBIC=4]="PATH_COMMAND_CUBIC",r[r.PATH_COMMAND_CLOSE=5]="PATH_COMMAND_CLOSE",r))(Xu||{}),Ib=(r=>(r[r.MASK_TYPE_UNSPECIFIED=0]="MASK_TYPE_UNSPECIFIED",r[r.MASK_TYPE_LUMINANCE=1]="MASK_TYPE_LUMINANCE",r[r.MASK_TYPE_ALPHA=2]="MASK_TYPE_ALPHA",r))(Ib||{});function YA(r,e,n){r===1&&e.icons.push(function(o,u){return function(l){if(l.usvg_tree.height||(l.usvg_tree.height=l.usvg_tree.width),!l.metadata)return l;const{metadata:f}=l;if(f.content_area){const{content_area:v}=f;v.top==null&&(v.top=v.left),v.width==null&&(v.width=l.usvg_tree.width),v.height==null&&(v.height=v.width)}return f.stretch_x&&f.stretch_x.length&&Lb(f,"x"),f.stretch_y&&f.stretch_y.length&&Lb(f,"y"),l}(o.readFields(KA,{name:void 0},u))}(n,n.readVarint()+n.pos))}function Lb(r,e){const n=[],o=r[`stretch_${e}`];let u=null;for(let l=0;l<o.length;l++)u===null?u=n.length===0?o[0]:n[n.length-1][1]+o[l]:(n.push([u,u+o[l]]),u=null);r[`stretch_${e}_areas`]=n}function KA(r,e,n){r===1?e.name=n.readString():r===2?e.metadata=function(o,u){return o.readFields(JA,{stretch_x:null,stretch_y:null,stretch_x_areas:null,stretch_y_areas:null,variables:[]},u)}(n,n.readVarint()+n.pos):r===3&&(e.usvg_tree=function(o,u){return o.readFields(tC,{width:20,children:[],linear_gradients:[],radial_gradients:[],clip_paths:[],masks:[]},u)}(n,n.readVarint()+n.pos),e.data="usvg_tree")}function JA(r,e,n){r===1?e.stretch_x=n.readPackedVarint():r===2?e.stretch_y=n.readPackedVarint():r===3?e.content_area=function(o,u){return o.readFields(QA,{left:0},u)}(n,n.readVarint()+n.pos):r===4&&e.variables.push(function(o,u){return o.readFields(eC,{name:void 0},u)}(n,n.readVarint()+n.pos))}function QA(r,e,n){r===1?e.left=n.readVarint():r===2?e.width=n.readVarint():r===3?e.top=n.readVarint():r===4&&(e.height=n.readVarint())}function eC(r,e,n){r===1?e.name=n.readString():r===2&&(e.rgb_color=Ym(n.readVarint()),e.value="rgb_color")}function tC(r,e,n){r===1?e.width=e.height=n.readVarint():r===2?e.height=n.readVarint():r===3?e.children.push($m(n,n.readVarint()+n.pos)):r===4?e.linear_gradients.push(function(o,u){return o.readFields(lC,{spread_method:1,stops:[],x1:0,y1:0,x2:1,y2:0},u)}(n,n.readVarint()+n.pos)):r===5?e.radial_gradients.push(function(o,u){return o.readFields(hC,{spread_method:1,stops:[],cx:.5,cy:.5,r:.5,fx:.5,fy:.5,fr:0},u)}(n,n.readVarint()+n.pos)):r===7?e.clip_paths.push(function(o,u){return o.readFields(uC,{children:[]},u)}(n,n.readVarint()+n.pos)):r===8&&e.masks.push(function(o,u){const l=o.readFields(dC,{left:0,width:20,mask_type:1,children:[]},u);return l.height==null&&(l.height=l.width),l.top==null&&(l.top=l.left),l}(n,n.readVarint()+n.pos))}function $m(r,e){return r.readFields(iC,{},e)}function iC(r,e,n){r===1?(e.group=function(o,u){return o.readFields(nC,{opacity:255,children:[]},u)}(n,n.readVarint()+n.pos),e.node="group"):r===2&&(e.path=function(o,u){return o.readFields(rC,{paint_order:1,commands:[],step:1,diffs:[],rule:1},u)}(n,n.readVarint()+n.pos),e.node="path")}function nC(r,e,n){r===1?e.transform=Xm(n,n.readVarint()+n.pos):r===2?e.opacity=n.readVarint():r===5?e.clip_path_idx=n.readVarint():r===6?e.mask_idx=n.readVarint():r===7&&e.children.push($m(n,n.readVarint()+n.pos))}function Xm(r,e){return r.readFields(sC,{sx:1,ky:0,kx:0,sy:1,tx:0,ty:0},e)}function sC(r,e,n){r===1?e.sx=n.readFloat():r===2?e.ky=n.readFloat():r===3?e.kx=n.readFloat():r===4?e.sy=n.readFloat():r===5?e.tx=n.readFloat():r===6&&(e.ty=n.readFloat())}function rC(r,e,n){r===1?e.fill=function(o,u){return o.readFields(oC,{rgb_color:sy,paint:"rgb_color",opacity:255},u)}(n,n.readVarint()+n.pos):r===2?e.stroke=function(o,u){return o.readFields(aC,{rgb_color:sy,paint:"rgb_color",dasharray:[],dashoffset:0,miterlimit:4,opacity:255,width:1,linecap:1,linejoin:1},u)}(n,n.readVarint()+n.pos):r===3?e.paint_order=n.readVarint():r===5?n.readPackedVarint(e.commands):r===6?e.step=n.readFloat():r===7?n.readPackedSVarint(e.diffs):r===8&&(e.rule=n.readVarint())}function oC(r,e,n){r===1?(e.rgb_color=Ym(n.readVarint()),e.paint="rgb_color"):r===2?(e.linear_gradient_idx=n.readVarint(),e.paint="linear_gradient_idx"):r===3?(e.radial_gradient_idx=n.readVarint(),e.paint="radial_gradient_idx"):r===5&&(e.opacity=n.readVarint())}function Ym(r){return new ki((r>>16&255)/255,(r>>8&255)/255,(255&r)/255,1)}function aC(r,e,n){r===1?(e.rgb_color=Ym(n.readVarint()),e.paint="rgb_color"):r===2?(e.linear_gradient_idx=n.readVarint(),e.paint="linear_gradient_idx"):r===3?(e.radial_gradient_idx=n.readVarint(),e.paint="radial_gradient_idx"):r===5?n.readPackedFloat(e.dasharray):r===6?e.dashoffset=n.readFloat():r===7?e.miterlimit=n.readFloat():r===8?e.opacity=n.readVarint():r===9?e.width=n.readFloat():r===10?e.linecap=n.readVarint():r===11&&(e.linejoin=n.readVarint())}function lC(r,e,n){r===1?e.transform=Xm(n,n.readVarint()+n.pos):r===2?e.spread_method=n.readVarint():r===3?e.stops.push(zb(n,n.readVarint()+n.pos)):r===4?e.x1=n.readFloat():r===5?e.y1=n.readFloat():r===6?e.x2=n.readFloat():r===7&&(e.y2=n.readFloat())}function zb(r,e){return r.readFields(cC,{offset:0,opacity:255,rgb_color:sy},e)}function cC(r,e,n){r===1?e.offset=n.readFloat():r===2?e.opacity=n.readVarint():r===3&&(e.rgb_color=Ym(n.readVarint()))}function hC(r,e,n){r===1?e.transform=Xm(n,n.readVarint()+n.pos):r===2?e.spread_method=n.readVarint():r===3?e.stops.push(zb(n,n.readVarint()+n.pos)):r===4?e.cx=n.readFloat():r===5?e.cy=n.readFloat():r===6?e.r=n.readFloat():r===7?e.fx=n.readFloat():r===8?e.fy=n.readFloat():r===9&&(e.fr=n.readFloat())}function uC(r,e,n){r===1?e.transform=Xm(n,n.readVarint()+n.pos):r===2?e.clip_path_idx=n.readVarint():r===3&&e.children.push($m(n,n.readVarint()+n.pos))}function dC(r,e,n){r===1?e.left=e.top=n.readFloat():r===2?e.width=e.height=n.readFloat():r===3?e.top=n.readFloat():r===4?e.height=n.readFloat():r===5?e.mask_type=n.readVarint():r===6?e.mask_idx=n.readVarint():r===7&&e.children.push($m(n,n.readVarint()+n.pos))}class fC{static calculate(e,n){const o=new Map,u=new Map;if(Object.keys(e).length===0)return o;n.forEach(l=>{u.set(l.name,l.rgb_color||new ki(0,0,0))});for(const[l,f]of Object.entries(e))u.has(l)?o.set(u.get(l).toStringPremultipliedAlpha(),f):console.warn(`Ignoring unknown image variable "${l}"`);return o}}function Yu(r,e=255,n){const o=e/255,u=r.toStringPremultipliedAlpha(),l=n.has(u)?n.get(u).clone():r.clone();return l.a=o,l.toString()}function ry(r,e){if(!mt()){const n=document.createElement("canvas");return n.width=r,n.height=e,n}return new OffscreenCanvas(r,e)}function pC(r,e){const n=fC.calculate(e.params,r.metadata?r.metadata.variables:[]),o=r.usvg_tree,u=o.width,l=o.height,f=e.transform?e.transform:new DOMMatrix,v=Math.max(1,Math.round(u*f.a)),S=Math.max(1,Math.round(l*f.d)),D=new DOMMatrix([v/u,0,0,S/l,0,0]),x=ry(v,S).getContext("2d");return oy(x,D,o,o,n),x.getImageData(0,0,v,S)}function oy(r,e,n,o,u){for(const l of o.children)Db(r,e,n,l,u)}function Db(r,e,n,o,u){o.group?(r.save(),function(l,f,v,S,D){const x=S.mask_idx!=null?v.masks[S.mask_idx]:null,P=S.clip_path_idx!=null?v.clip_paths[S.clip_path_idx]:null;if(S.transform&&(f=jf(S.transform).preMultiplySelf(f)),!function(C,k,V){return C.opacity!==255||k||V}(S,P!=null,x!=null))return void oy(l,f,v,S,D);const I=ry(l.canvas.width,l.canvas.height),M=I.getContext("2d");P&&Bb(M,f,v,P),oy(M,f,v,S,D),x&&Nb(M,f,v,x,D),l.globalAlpha=S.opacity/255,l.drawImage(I,0,0)}(r,e,n,o.group,u),r.restore()):o.path&&(r.save(),function(l,f,v,S,D){const x=Vb(S);l.setTransform(f),S.paint_order===Cb.PAINT_ORDER_FILL_AND_STROKE?(kb(l,v,S,x,D),Rb(l,v,S,x,D)):(Rb(l,v,S,x,D),kb(l,v,S,x,D))}(r,e,n,o.path,u),r.restore())}function kb(r,e,n,o,u){const l=n.fill;if(!l)return;const f=l.opacity/255;switch(l.paint){case"rgb_color":r.fillStyle=Yu(l.rgb_color,l.opacity,u);break;case"linear_gradient_idx":r.fillStyle=Ob(r,e.linear_gradients[l.linear_gradient_idx],f,u);break;case"radial_gradient_idx":r.fillStyle=Fb(r,e.radial_gradients[l.radial_gradient_idx],f,u)}let v;switch(n.rule){case qm.PATH_RULE_NON_ZERO:v="nonzero";break;case qm.PATH_RULE_EVEN_ODD:v="evenodd"}r.fill(o,v)}function Rb(r,e,n,o,u){const l=n.stroke;if(!l)return;r.lineWidth=l.width,r.miterLimit=l.miterlimit,r.setLineDash(l.dasharray),r.lineDashOffset=l.dashoffset;const f=l.opacity/255;switch(l.paint){case"rgb_color":r.strokeStyle=Yu(l.rgb_color,l.opacity,u);break;case"linear_gradient_idx":r.strokeStyle=Ob(r,e.linear_gradients[l.linear_gradient_idx],f,u);break;case"radial_gradient_idx":r.strokeStyle=Fb(r,e.radial_gradients[l.radial_gradient_idx],f,u)}switch(l.linejoin){case Uf.LINE_JOIN_MITER_CLIP:case Uf.LINE_JOIN_MITER:r.lineJoin="miter";break;case Uf.LINE_JOIN_ROUND:r.lineJoin="round";break;case Uf.LINE_JOIN_BEVEL:r.lineJoin="bevel"}switch(l.linecap){case Wm.LINE_CAP_BUTT:r.lineCap="butt";break;case Wm.LINE_CAP_ROUND:r.lineCap="round";break;case Wm.LINE_CAP_SQUARE:r.lineCap="square"}r.stroke(o)}function Ob(r,e,n,o){if(e.stops.length===1){const I=e.stops[0];return Yu(I.rgb_color,I.opacity*n,o)}const u=jf(e.transform),{x1:l,y1:f,x2:v,y2:S}=e,D=u.transformPoint(new DOMPoint(l,f)),x=u.transformPoint(new DOMPoint(v,S)),P=r.createLinearGradient(D.x,D.y,x.x,x.y);for(const I of e.stops)P.addColorStop(I.offset,Yu(I.rgb_color,I.opacity*n,o));return P}function Fb(r,e,n,o){if(e.stops.length===1){const I=e.stops[0];return Yu(I.rgb_color,I.opacity*n,o)}const u=jf(e.transform),{fx:l,fy:f,cx:v,cy:S}=e,D=u.transformPoint(new DOMPoint(l,f)),x=u.transformPoint(new DOMPoint(v,S)),P=r.createRadialGradient(D.x,D.y,0,x.x,x.y,e.r*((u.a+u.d)/2));for(const I of e.stops)P.addColorStop(I.offset,Yu(I.rgb_color,I.opacity*n,o));return P}function Bb(r,e,n,o){const u=jf(o.transform).preMultiplySelf(e),l=o.clip_path_idx!=null?n.clip_paths[o.clip_path_idx]:null;l&&Bb(r,u,n,l);const f=new Path2D;let v;function S(D,x){if(D.path){const P=D.path;f.addPath(Vb(P),x),P.rule===qm.PATH_RULE_EVEN_ODD&&(v="evenodd")}else if(D.group){const P=D.group.transform?jf(D.group.transform).preMultiplySelf(x):x;for(const I of D.group.children)S(I,P)}}for(const D of o.children)S(D,u);r.clip(f,v)}function Nb(r,e,n,o,u){if(o.children.length===0)return;const l=o.mask_idx!=null?n.masks[o.mask_idx]:null;l&&Nb(r,e,n,l,u);const f=r.canvas.width,v=r.canvas.height,S=ry(f,v),D=S.getContext("2d"),x=o.width,P=o.height,I=o.left,M=o.top,C=new Path2D,k=new Path2D;k.rect(I,M,x,P),C.addPath(k,e),D.clip(C);for(const q of o.children)Db(D,e,n,q,u);const V=D.getImageData(0,0,f,v),U=V.data;if(o.mask_type===Ib.MASK_TYPE_LUMINANCE)for(let q=0;q<U.length;q+=4)U[q+3]=U[q+3]/255*(.2126*U[q]+.7152*U[q+1]+.0722*U[q+2]);D.putImageData(V,0,0),r.globalCompositeOperation="destination-in",r.drawImage(S,0,0)}function jf(r){return r?new DOMMatrix([r.sx,r.ky,r.kx,r.sy,r.tx,r.ty]):new DOMMatrix}function Vb(r){const e=new Path2D,n=r.step;let o=r.diffs[0]*n,u=r.diffs[1]*n;e.moveTo(o,u);for(let l=0,f=2;l<r.commands.length;l++)switch(r.commands[l]){case Xu.PATH_COMMAND_MOVE:o+=r.diffs[f++]*n,u+=r.diffs[f++]*n,e.moveTo(o,u);break;case Xu.PATH_COMMAND_LINE:o+=r.diffs[f++]*n,u+=r.diffs[f++]*n,e.lineTo(o,u);break;case Xu.PATH_COMMAND_QUAD:{const v=o+r.diffs[f++]*n,S=u+r.diffs[f++]*n;o=v+r.diffs[f++]*n,u=S+r.diffs[f++]*n,e.quadraticCurveTo(v,S,o,u);break}case Xu.PATH_COMMAND_CUBIC:{const v=o+r.diffs[f++]*n,S=u+r.diffs[f++]*n,D=v+r.diffs[f++]*n,x=S+r.diffs[f++]*n;o=D+r.diffs[f++]*n,u=x+r.diffs[f++]*n,e.bezierCurveTo(v,S,D,x,o,u);break}case Xu.PATH_COMMAND_CLOSE:e.closePath()}return e}class ay{constructor(e){this.capacity=e,this.cache=new Map}get(e){if(!this.cache.has(e))return;const n=this.cache.get(e);return this.cache.delete(e),this.cache.set(e,n),n}put(e,n){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.capacity&&this.cache.delete(this.cache.keys().next().value),this.cache.set(e,n)}delete(e){this.cache.delete(e)}}class ly{constructor(){this.cacheMap=new Map,this.cacheDependenciesMap=new Map}static _getImage(e){return new gr(e,e.data)}getFromCache(e,n,o){return this.cacheMap.has(o)||this.cacheMap.set(o,new ay(150)),this.cacheMap.get(o).get(zo(e.serialize(),n))}setInCache(e,n,o,u){this.cacheDependenciesMap.has(u)||this.cacheDependenciesMap.set(u,new Map),this.cacheMap.has(u)||this.cacheMap.set(u,new ay(150));const l=this.cacheDependenciesMap.get(u);l.get(zo(e.id,o))||l.set(zo(e.id,o),new Set);const f=this.cacheMap.get(u),v=e.serialize();l.get(zo(e.id,o)).add(v),f.put(zo(e.serialize(),o),n)}removeImagesFromCacheByIds(e,n,o=""){if(!this.cacheMap.has(o)||!this.cacheDependenciesMap.has(o))return;const u=this.cacheMap.get(o),l=this.cacheDependenciesMap.get(o);for(const f of e)if(l.has(zo(f,n))){for(const v of l.get(zo(f,n)))u.delete(v);l.delete(zo(f,n))}}rasterize(e,n,o,u,l=pC){const f=this.getFromCache(e,o,u);if(f)return f.clone();const v=l(n.icon,e.options),S=ly._getImage(v);return this.setInCache(e,S,o,u),S.clone()}}class Ub{constructor(e){this.size=e,this.minimums=[],this.maximums=[],this.leaves=[]}getElevation(e,n){const o=this.toIdx(e,n);return{min:this.minimums[o],max:this.maximums[o]}}isLeaf(e,n){return this.leaves[this.toIdx(e,n)]}toIdx(e,n){return n*this.size+e}}function jb(r,e,n,o){let u=0,l=Number.MAX_VALUE;for(let f=0;f<3;f++)if(Math.abs(o[f])<1e-15){if(n[f]<r[f]||n[f]>e[f])return null}else{const v=1/o[f];let S=(r[f]-n[f])*v,D=(e[f]-n[f])*v;if(S>D){const x=S;S=D,D=x}if(S>u&&(u=S),D<l&&(l=D),u>l)return null}return u}function Gb(r,e,n,o,u,l,f,v,S,D,x){const P=o-r,I=u-e,M=l-n,C=f-r,k=v-e,V=S-n,U=x[1]*V-x[2]*k,q=x[2]*C-x[0]*V,$=x[0]*k-x[1]*C,H=P*U+I*q+M*$;if(Math.abs(H)<1e-15)return null;const K=1/H,Q=D[0]-r,ie=D[1]-e,fe=D[2]-n,de=(Q*U+ie*q+fe*$)*K;if(de<0||de>1)return null;const ue=ie*M-fe*I,Se=fe*P-Q*M,me=Q*I-ie*P,Ee=(x[0]*ue+x[1]*Se+x[2]*me)*K;return Ee<0||de+Ee>1?null:(C*ue+k*Se+V*me)*K}function Zb(r,e,n){return(r-e)/(n-e)}function Hb(r,e,n,o,u,l,f,v,S){const D=1<<n,x=l-o,P=f-u,I=(r+1)/D*x+o,M=(e+0)/D*P+u,C=(e+1)/D*P+u;v[0]=(r+0)/D*x+o,v[1]=M,S[0]=I,S[1]=C}class qb{constructor(e){if(this.maximums=[],this.minimums=[],this.leaves=[],this.childOffsets=[],this.nodeCount=0,this.dem=e,this._siblingOffset=[[0,0],[1,0],[0,1],[1,1]],!this.dem)return;const n=function(l){const f=Math.ceil(Math.log2(l.dim/8)),v=[];let S=Math.ceil(Math.pow(2,f));const D=1/S,x=(M,C,k,V,U)=>{const q=V?1:0,$=(M+1)*k-q,H=C*k,K=(C+1)*k-q;U[0]=M*k,U[1]=H,U[2]=$,U[3]=K};let P=new Ub(S);const I=[];for(let M=0;M<S*S;M++){x(M%S,Math.floor(M/S),D,!1,I);const C=kc(I[0],I[1],l),k=kc(I[2],I[1],l),V=kc(I[2],I[3],l),U=kc(I[0],I[3],l);P.minimums.push(Math.min(C,k,V,U)),P.maximums.push(Math.max(C,k,V,U)),P.leaves.push(1)}for(v.push(P),S/=2;S>=1;S/=2){const M=v[v.length-1];P=new Ub(S);for(let C=0;C<S*S;C++){x(C%S,Math.floor(C/S),2,!0,I);const k=M.getElevation(I[0],I[1]),V=M.getElevation(I[2],I[1]),U=M.getElevation(I[2],I[3]),q=M.getElevation(I[0],I[3]),$=M.isLeaf(I[0],I[1]),H=M.isLeaf(I[2],I[1]),K=M.isLeaf(I[2],I[3]),Q=M.isLeaf(I[0],I[3]),ie=Math.min(k.min,V.min,U.min,q.min),fe=Math.max(k.max,V.max,U.max,q.max),de=$&&H&&K&&Q;P.maximums.push(fe),P.minimums.push(ie),P.leaves.push(fe-ie<=5&&de?1:0)}v.push(P)}return v}(this.dem),o=n.length-1,u=n[o];this._addNode(u.minimums[0],u.maximums[0],u.leaves[0]),this._construct(n,0,0,o,0)}raycastRoot(e,n,o,u,l,f,v=1){return jb([e,n,-100],[o,u,this.maximums[0]*v],l,f)}raycast(e,n,o,u,l,f,v=1){if(!this.nodeCount)return null;const S=this.raycastRoot(e,n,o,u,l,f,v);if(S==null)return null;const D=[],x=[],P=[],I=[],M=[{idx:0,t:S,nodex:0,nodey:0,depth:0}];for(;M.length>0;){const{idx:C,t:k,nodex:V,nodey:U,depth:q}=M.pop();if(this.leaves[C]){Hb(V,U,q,e,n,o,u,P,I);const H=1<<q,K=(V+0)/H,Q=(V+1)/H,ie=(U+0)/H,fe=(U+1)/H,de=kc(K,ie,this.dem)*v,ue=kc(Q,ie,this.dem)*v,Se=kc(Q,fe,this.dem)*v,me=kc(K,fe,this.dem)*v,Ee=Gb(P[0],P[1],de,I[0],P[1],ue,I[0],I[1],Se,l,f),ze=Gb(I[0],I[1],Se,P[0],I[1],me,P[0],P[1],de,l,f),Ie=Math.min(Ee!==null?Ee:Number.MAX_VALUE,ze!==null?ze:Number.MAX_VALUE);if(Ie!==Number.MAX_VALUE)return Ie;{const Re=De.vec3.scaleAndAdd([],l,f,k);if(Wb(de,ue,me,Se,Zb(Re[0],P[0],I[0]),Zb(Re[1],P[1],I[1]))>=Re[2])return k}continue}let $=0;for(let H=0;H<this._siblingOffset.length;H++){Hb((V<<1)+this._siblingOffset[H][0],(U<<1)+this._siblingOffset[H][1],q+1,e,n,o,u,P,I),P[2]=-100,I[2]=this.maximums[this.childOffsets[C]+H]*v;const K=jb(P,I,l,f);if(K!=null){const Q=K;D[H]=Q;let ie=!1;for(let fe=0;fe<$&&!ie;fe++)Q>=D[x[fe]]&&(x.splice(fe,0,H),ie=!0);ie||(x[$]=H),$++}}for(let H=0;H<$;H++){const K=x[H];M.push({idx:this.childOffsets[C]+K,t:D[K],nodex:(V<<1)+this._siblingOffset[K][0],nodey:(U<<1)+this._siblingOffset[K][1],depth:q+1})}}return null}_addNode(e,n,o){return this.minimums.push(e),this.maximums.push(n),this.leaves.push(o),this.childOffsets.push(0),this.nodeCount++}_construct(e,n,o,u,l){if(e[u].isLeaf(n,o)===1)return;this.childOffsets[l]||(this.childOffsets[l]=this.nodeCount);const f=u-1,v=e[f];let S=0,D=0;for(let x=0;x<this._siblingOffset.length;x++){const P=2*n+this._siblingOffset[x][0],I=2*o+this._siblingOffset[x][1],M=v.getElevation(P,I),C=v.isLeaf(P,I),k=this._addNode(M.min,M.max,C);C&&(S|=1<<x),D||(D=k)}for(let x=0;x<this._siblingOffset.length;x++)S&1<<x||this._construct(e,2*n+this._siblingOffset[x][0],2*o+this._siblingOffset[x][1],f,D+x)}}function Wb(r,e,n,o,u,l){return ei(ei(r,n,l),ei(e,o,l),u)}function kc(r,e,n){const o=n.dim,u=si(r*o-.5,0,o-1),l=si(e*o-.5,0,o-1),f=Math.floor(u),v=Math.floor(l),S=Math.min(f+1,o-1),D=Math.min(v+1,o-1);return Wb(n.get(f,v),n.get(S,v),n.get(f,D),n.get(S,D),u-f,l-v)}const mC={mapbox:[6553.6,25.6,.1,1e4],terrarium:[256,1,1/256,32768]};function _C(r,e,n){return(256*r*256+256*e+n)/10-1e4}function gC(r,e,n){return 256*r+e+n/256-32768}class Km{get tree(){return this._tree||this._buildQuadTree(),this._tree}constructor(e,n,o,u=!1){if(this.uid=e,n.height!==n.width)throw new RangeError("DEM tiles must be square");if(o&&o!=="mapbox"&&o!=="terrarium")return void mi(`"${o}" is not a valid encoding type. Valid types include "mapbox" and "terrarium".`);this.stride=n.height;const l=this.dim=n.height-2,f=new Uint32Array(n.data.buffer);if(this.pixels=new Uint8Array(n.data.buffer),this.floatView=new Float32Array(n.data.buffer),this.borderReady=u,this._modifiedForSources={},!u){for(let S=0;S<l;S++)f[this._idx(-1,S)]=f[this._idx(0,S)],f[this._idx(l,S)]=f[this._idx(l-1,S)],f[this._idx(S,-1)]=f[this._idx(S,0)],f[this._idx(S,l)]=f[this._idx(S,l-1)];f[this._idx(-1,-1)]=f[this._idx(0,0)],f[this._idx(l,-1)]=f[this._idx(l-1,0)],f[this._idx(-1,l)]=f[this._idx(0,l-1)],f[this._idx(l,l)]=f[this._idx(l-1,l-1)]}const v=o==="terrarium"?gC:_C;for(let S=0;S<f.length;++S){const D=4*S;this.floatView[S]=v(this.pixels[D],this.pixels[D+1],this.pixels[D+2])}this._timestamp=Ct.now()}_buildQuadTree(){this._tree=new qb(this)}get(e,n,o=!1){o&&(e=si(e,-1,this.dim),n=si(n,-1,this.dim));const u=this._idx(e,n);return this.floatView[u]}set(e,n,o){const u=this._idx(e,n),l=this.floatView[u];return this.floatView[u]=o,o-l}static getUnpackVector(e){return mC[e]}_idx(e,n){if(e<-1||e>=this.dim+1||n<-1||n>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(n+1)*this.stride+(e+1)}static pack(e,n){const o=[0,0,0,0],u=Km.getUnpackVector(n);let l=Math.floor((e+u[3])/u[2]);return o[2]=l%256,l=Math.floor(l/256),o[1]=l%256,l=Math.floor(l/256),o[0]=l,o}getPixels(){return new dv({width:this.stride,height:this.stride},this.pixels)}backfillBorder(e,n,o){if(this.dim!==e.dim)throw new Error("dem dimension mismatch");let u=n*this.dim,l=n*this.dim+this.dim,f=o*this.dim,v=o*this.dim+this.dim;switch(n){case-1:u=l-1;break;case 1:l=u+1}switch(o){case-1:f=v-1;break;case 1:v=f+1}const S=-n*this.dim,D=-o*this.dim;for(let x=f;x<v;x++)for(let P=u;P<l;P++){const I=4*this._idx(P,x),M=4*this._idx(P+S,x+D);this.pixels[I+0]=e.pixels[M+0],this.pixels[I+1]=e.pixels[M+1],this.pixels[I+2]=e.pixels[M+2],this.pixels[I+3]=e.pixels[M+3]}}onDeserialize(){this._tree&&(this._tree.dem=this)}}function yC(r,e,n){r===1?e.headerLength=n.readFixed32():r===2?e.x=n.readVarint():r===3?e.y=n.readVarint():r===4?e.z=n.readVarint():r===5&&e.layers.push(function(o,u){return o.readFields(TC,{version:0,name:"",units:"",tileSize:0,buffer:0,pixelFormat:0,dataIndex:[]},u)}(n,n.readVarint()+n.pos))}function xC(r,e,n){r===1?(e.delta_filter=function(o,u){return o.readFields(vC,{blockSize:0},u)}(n,n.readVarint()+n.pos),e.filter="delta_filter"):r===2?(n.readVarint(),e.filter="zigzag_filter"):r===3?(n.readVarint(),e.filter="bitshuffle_filter"):r===4&&(n.readVarint(),e.filter="byteshuffle_filter")}function vC(r,e,n){r===1&&(e.blockSize=n.readVarint())}function bC(r,e,n){r===1?(n.readVarint(),e.codec="gzip_data"):r===2?(n.readVarint(),e.codec="jpeg_image"):r===3?(n.readVarint(),e.codec="webp_image"):r===4&&(n.readVarint(),e.codec="png_image")}function wC(r,e,n){let o=0,u=0;r===1?e.firstByte=n.readFixed64():r===2?e.lastByte=n.readFixed64():r===3?e.filters.push(function(l,f){return l.readFields(xC,{},f)}(n,n.readVarint()+n.pos)):r===4?e.codec=function(l,f){return l.readFields(bC,{},f)}(n,n.readVarint()+n.pos):r===5?u=n.readFloat():r===6?o=n.readFloat():r===7?e.bands.push(n.readString()):r===8?e.offset=n.readDouble():r===9&&(e.scale=n.readDouble()),e.offset===0&&(e.offset=u),e.scale===0&&(e.scale=o)}function TC(r,e,n){r===1?e.version=n.readVarint():r===2?e.name=n.readString():r===3?e.units=n.readString():r===4?e.tileSize=n.readVarint():r===5?e.buffer=n.readVarint():r===6?e.pixelFormat=n.readVarint():r===7&&e.dataIndex.push(function(o,u){return o.readFields(wC,{firstByte:0,lastByte:0,filters:[],codec:null,offset:0,scale:0,bands:[]},u)}(n,n.readVarint()+n.pos))}function MC(r,e,n){if(r===2)(function(o,u,l){o.readFields(SC,l,u)})(n,n.readVarint()+n.pos,e);else if(r===3)throw new Error("Not implemented")}function SC(r,e,n){if(r===1){let o=0;const u=n.readVarint()+n.pos;for(;n.pos<u;)e[o++]=n.readVarint()}}function EC(r,e){if(e.length!==4)throw new Error(`Expected data of dimension 4 but got ${e.length}.`);let n=e[3];for(let o=2;o>=1;o--){const u=o===1?1:0,l=o===2?1:0;for(let f=0;f<e[0];f++){const v=e[1]*f;for(let S=u;S<e[1];S++){const D=e[2]*(S+v);for(let x=l;x<e[2];x++){const P=e[3]*(x+D);for(let I=0;I<e[3];I++){const M=P+I;r[M]+=r[M-n]}}}}n*=e[o]}return r}function PC(r){for(let e=0,n=r.length;e<n;e++)r[e]=r[e]>>>1^-(1&r[e]);return r}function AC(r,e){switch(e){case"uint32":return r;case"uint16":for(let n=0;n<r.length;n+=2){const o=r[n],u=r[n+1];r[n]=(240&o)>>4|(61440&o)>>8|(240&u)<<4|61440&u,r[n+1]=15&o|(3840&o)>>4|(15&u)<<8|(3840&u)<<4}return r;case"uint8":for(let n=0;n<r.length;n+=4){const o=r[n],u=r[n+1],l=r[n+2],f=r[n+3];r[n+0]=(192&o)>>6|(192&u)>>4|(192&l)>>2|192&f,r[n+1]=(48&o)>>4|(48&u)>>2|48&l|(48&f)<<2,r[n+2]=(12&o)>>2|12&u|(12&l)<<2|(12&f)<<4,r[n+3]=3&o|(3&u)<<2|(3&l)<<4|(3&f)<<6}return r;default:throw new Error(`Invalid pixel format, "${e}"`)}}Ft(Km,"DEMData"),Ft(qb,"DemMinMaxQuadTree",{omit:["dem"]});var Bo=Uint8Array,Gf=Uint16Array,CC=Int32Array,$b=new Bo([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Xb=new Bo([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),IC=new Bo([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Yb=function(r,e){for(var n=new Gf(31),o=0;o<31;++o)n[o]=e+=1<<r[o-1];var u=new CC(n[30]);for(o=1;o<30;++o)for(var l=n[o];l<n[o+1];++l)u[l]=l-n[o]<<5|o;return{b:n,r:u}},Kb=Yb($b,2),Jb=Kb.b,LC=Kb.r;Jb[28]=258,LC[258]=28;for(var zC=Yb(Xb,0).b,Qb=new Gf(32768),cs=0;cs<32768;++cs){var Ku=(43690&cs)>>1|(21845&cs)<<1;Qb[cs]=((65280&(Ku=(61680&(Ku=(52428&Ku)>>2|(13107&Ku)<<2))>>4|(3855&Ku)<<4))>>8|(255&Ku)<<8)>>1}var Zf=function(r,e,n){for(var o=r.length,u=0,l=new Gf(e);u<o;++u)r[u]&&++l[r[u]-1];var f,v=new Gf(e);for(u=1;u<e;++u)v[u]=v[u-1]+l[u-1]<<1;f=new Gf(1<<e);var S=15-e;for(u=0;u<o;++u)if(r[u])for(var D=u<<4|r[u],x=e-r[u],P=v[r[u]-1]++<<x,I=P|(1<<x)-1;P<=I;++P)f[Qb[P]>>S]=D;return f},Hf=new Bo(288);for(cs=0;cs<144;++cs)Hf[cs]=8;for(cs=144;cs<256;++cs)Hf[cs]=9;for(cs=256;cs<280;++cs)Hf[cs]=7;for(cs=280;cs<288;++cs)Hf[cs]=8;var ew=new Bo(32);for(cs=0;cs<32;++cs)ew[cs]=5;var DC=Zf(Hf,9),kC=Zf(ew,5),cy=function(r){for(var e=r[0],n=1;n<r.length;++n)r[n]>e&&(e=r[n]);return e},za=function(r,e,n){var o=e/8|0;return(r[o]|r[o+1]<<8)>>(7&e)&n},hy=function(r,e){var n=e/8|0;return(r[n]|r[n+1]<<8|r[n+2]<<16)>>(7&e)},RC=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Da=function(r,e,n){var o=new Error(e||RC[r]);if(o.code=r,Error.captureStackTrace&&Error.captureStackTrace(o,Da),!n)throw o;return o},OC=new Bo(0),FC=typeof TextDecoder<"u"&&new TextDecoder;try{FC.decode(OC,{stream:!0})}catch{}const BC={gzip_data:"gzip"};class oa extends Error{constructor(e){super(e),this.name="MRTError"}}const NC={0:"uint32",1:"uint32",2:"uint16",3:"uint8"},tw={uint32:1,uint16:2,uint8:4},VC={uint32:Uint32Array,uint16:Uint16Array,uint8:Uint8Array};let uy;class dy{constructor(e=5){this.x=NaN,this.y=NaN,this.z=NaN,this.layers={},this._cacheSize=e}getLayer(e){const n=this.layers[e];if(!n)throw new oa(`Layer '${e}' not found`);return n}getHeaderLength(e){const n=new Uint8Array(e),o=new DataView(e);if(n[0]!==13)throw new oa("File is not a valid MRT.");return o.getUint32(1,!0)}parseHeader(e){const n=new Uint8Array(e),o=this.getHeaderLength(e);if(n.length<o)throw new oa(`Expected header with length >= ${o} but got buffer of length ${n.length}`);const u=function(l,f){return l.readFields(yC,{headerLength:0,x:0,y:0,z:0,layers:[]},void 0)}(new uy(n.subarray(0,o)));if(!isNaN(this.x)&&(this.x!==u.x||this.y!==u.y||this.z!==u.z))throw new oa(`Invalid attempt to parse header ${u.z}/${u.x}/${u.y} for tile ${this.z}/${this.x}/${this.y}`);this.x=u.x,this.y=u.y,this.z=u.z;for(const l of u.layers)this.layers[l.name]=new UC(l,{cacheSize:this._cacheSize});return this}createDecodingTask(e){const n=[],o=this.getLayer(e.layerName);for(let u of e.blockIndices){const l=o.dataIndex[u],f=l.firstByte-e.firstByte,v=l.lastByte-e.firstByte;if(o._blocksInProgress.has(u))continue;const S={layerName:o.name,firstByte:f,lastByte:v,pixelFormat:o.pixelFormat,blockIndex:u,blockShape:[l.bands.length].concat(o.bandShape),buffer:o.buffer,codec:l.codec.codec,filters:l.filters.map(D=>D.filter)};o._blocksInProgress.add(u),n.push(S)}return new iw(n,()=>{n.forEach(u=>o._blocksInProgress.delete(u.blockIndex))},(u,l)=>{if(n.forEach(f=>o._blocksInProgress.delete(f.blockIndex)),u)throw u;l.forEach(f=>{this.getLayer(f.layerName).processDecodedData(f)})})}}class UC{constructor({version:e,name:n,units:o,tileSize:u,pixelFormat:l,buffer:f,dataIndex:v},S){if(this.version=e,this.version!==1)throw new oa(`Cannot parse raster layer encoded with MRT version ${e}`);this.name=n,this.units=o,this.tileSize=u,this.buffer=f,this.pixelFormat=NC[l],this.dataIndex=v,this.bandShape=[u+2*f,u+2*f,tw[this.pixelFormat]],this._decodedBlocks=new ay(S?S.cacheSize:5),this._blocksInProgress=new Set}get dimension(){return tw[this.pixelFormat]}get cacheSize(){return this._decodedBlocks.capacity}getBandList(){return this.dataIndex.map(({bands:e})=>e).flat()}processDecodedData(e){const n=e.blockIndex.toString();this._decodedBlocks.get(n)||this._decodedBlocks.put(n,e.data)}getBlockForBand(e){let n=0;switch(typeof e){case"string":for(const[o,u]of this.dataIndex.entries()){for(const[l,f]of u.bands.entries())if(f===e)return{bandIndex:n+l,blockIndex:o,blockBandIndex:l};n+=u.bands.length}break;case"number":for(const[o,u]of this.dataIndex.entries()){if(e>=n&&e<n+u.bands.length)return{bandIndex:e,blockIndex:o,blockBandIndex:e-n};n+=u.bands.length}break;default:throw new oa(`Invalid band \`${JSON.stringify(e)}\`. Expected string or integer.`)}throw new oa(`Band not found: ${JSON.stringify(e)}`)}getDataRange(e){let n=1/0,o=-1/0;const u=[],l=new Set;for(const f of e){const{blockIndex:v}=this.getBlockForBand(f);if(v<0)throw new oa(`Invalid band: ${JSON.stringify(f)}`);const S=this.dataIndex[v];u.includes(v)||u.push(v),l.add(v),n=Math.min(n,S.firstByte),o=Math.max(o,S.lastByte)}if(l.size>this.cacheSize)throw new oa(`Number of blocks to decode (${l.size}) exceeds cache size (${this.cacheSize}).`);return{layerName:this.name,firstByte:n,lastByte:o,blockIndices:u}}hasBand(e){const{blockIndex:n}=this.getBlockForBand(e);return n>=0}hasDataForBand(e){const{blockIndex:n}=this.getBlockForBand(e);return n>=0&&!!this._decodedBlocks.get(n.toString())}getBandView(e){const{blockIndex:n,blockBandIndex:o}=this.getBlockForBand(e),u=this._decodedBlocks.get(n.toString());if(!u)throw new oa(`Data for band ${JSON.stringify(e)} of layer "${this.name}" not decoded.`);const l=this.dataIndex[n],f=this.bandShape.reduce((D,x)=>D*x,1),v=o*f,S=u.subarray(v,v+f);return{data:S,bytes:new Uint8Array(S.buffer).subarray(S.byteOffset,S.byteOffset+S.byteLength),tileSize:this.tileSize,buffer:this.buffer,pixelFormat:this.pixelFormat,dimension:this.dimension,offset:l.offset,scale:l.scale}}}dy.setPbf=function(r){uy=r};class iw{constructor(e,n,o){this.tasks=e,this._onCancel=n,this._onComplete=o,this._finalized=!1}cancel(){this._finalized||(this._onCancel(),this._finalized=!0)}complete(e,n){this._finalized||(this._onComplete(e,n),this._finalized=!0)}}dy.performDecoding=function(r,e){const n=new Uint8Array(r);return Promise.all(e.tasks.map(o=>{const{layerName:u,firstByte:l,lastByte:f,pixelFormat:v,blockShape:S,blockIndex:D,filters:x,codec:P}=o,I=n.subarray(l,f+1),M=new Uint32Array(S[0]*S[1]*S[2]);let C;if(P!=="gzip_data")throw new oa(`Unhandled codec: ${P}`);return C=function(k,V){if(!globalThis.DecompressionStream&&V==="gzip_data")return Promise.resolve(((H=function(ie){ie[0]==31&&ie[1]==139&&ie[2]==8||Da(6,"invalid gzip data");var fe=ie[3],de=10;4&fe&&(de+=2+(ie[10]|ie[11]<<8));for(var ue=(fe>>3&1)+(fe>>4&1);ue>0;ue-=!ie[de++]);return de+(2&fe)}($=k))+8>$.length&&Da(6,"invalid gzip data"),function(ie,fe,de,ue){var Se=ie.length;if(!Se||fe.f&&!fe.l)return de||new Bo(0);var me=!de,Ee=me||fe.i!=2,ze=fe.i;me&&(de=new Bo(3*Se));var Ie,Re,Ve=function(Zl){var Fc=de.length;if(Zl>Fc){var Bc=new Bo(Math.max(2*Fc,Zl));Bc.set(de),de=Bc}},Ue=fe.f||0,Fe=fe.p||0,et=fe.b||0,dt=fe.l,tt=fe.d,Mt=fe.m,wt=fe.n,At=8*Se;do{if(!dt){Ue=za(ie,Fe,1);var rt=za(ie,Fe+1,3);if(Fe+=3,!rt){var Ut=ie[(hi=4+((Fe+7)/8|0))-4]|ie[hi-3]<<8,St=hi+Ut;if(St>Se){ze&&Da(0);break}Ee&&Ve(et+Ut),de.set(ie.subarray(hi,St),et),fe.b=et+=Ut,fe.p=Fe=8*St,fe.f=Ue;continue}if(rt==1)dt=DC,tt=kC,Mt=9,wt=5;else if(rt==2){var Nt=za(ie,Fe,31)+257,Qt=za(ie,Fe+10,15)+4,pi=Nt+za(ie,Fe+5,31)+1;Fe+=14;for(var gi=new Bo(pi),Ai=new Bo(19),yi=0;yi<Qt;++yi)Ai[IC[yi]]=za(ie,Fe+3*yi,7);Fe+=3*Qt;var Ii=cy(Ai),fn=(1<<Ii)-1,rn=Zf(Ai,Ii);for(yi=0;yi<pi;){var hi,on=rn[za(ie,Fe,fn)];if(Fe+=15&on,(hi=on>>4)<16)gi[yi++]=hi;else{var en=0,pn=0;for(hi==16?(pn=3+za(ie,Fe,3),Fe+=2,en=gi[yi-1]):hi==17?(pn=3+za(ie,Fe,7),Fe+=3):hi==18&&(pn=11+za(ie,Fe,127),Fe+=7);pn--;)gi[yi++]=en}}var hs=gi.subarray(0,Nt),us=gi.subarray(Nt);Mt=cy(hs),wt=cy(us),dt=Zf(hs,Mt),tt=Zf(us,wt)}else Da(1);if(Fe>At){ze&&Da(0);break}}Ee&&Ve(et+131072);for(var Kn=(1<<Mt)-1,Gr=(1<<wt)-1,En=Fe;;En=Fe){var Ln=(en=dt[hy(ie,Fe)&Kn])>>4;if((Fe+=15&en)>At){ze&&Da(0);break}if(en||Da(2),Ln<256)de[et++]=Ln;else{if(Ln==256){En=Fe,dt=null;break}var Tr=Ln-254;Ln>264&&(Tr=za(ie,Fe,(1<<(Ms=$b[yi=Ln-257]))-1)+Jb[yi],Fe+=Ms);var ds=tt[hy(ie,Fe)&Gr],to=ds>>4;if(ds||Da(3),Fe+=15&ds,us=zC[to],to>3){var Ms=Xb[to];us+=hy(ie,Fe)&(1<<Ms)-1,Fe+=Ms}if(Fe>At){ze&&Da(0);break}Ee&&Ve(et+131072);var cl=et+Tr;if(et<us){var Rc=0-us,Oc=Math.min(us,cl);for(Rc+et<0&&Da(3);et<Oc;++et)de[et]=(void 0)[Rc+et]}for(;et<cl;++et)de[et]=de[et-us]}}fe.l=dt,fe.p=En,fe.b=et,fe.f=Ue,dt&&(Ue=1,fe.m=Mt,fe.d=tt,fe.n=wt)}while(!Ue);return et!=de.length&&me?(Ie=de,((Re=et)==null||Re>Ie.length)&&(Re=Ie.length),new Bo(Ie.subarray(0,Re))):de.subarray(0,et)}($.subarray(H,-8),{i:2},new Bo(((U=$)[(q=U.length)-4]|U[q-3]<<8|U[q-2]<<16|U[q-1]<<24)>>>0))));var U,q,$,H;const K=BC[V];if(!K)throw new Error(`Unhandled codec: ${V}`);const Q=new globalThis.DecompressionStream(K);return new Response(new Blob([k]).stream().pipeThrough(Q)).arrayBuffer().then(ie=>new Uint8Array(ie))}(I,P).then(k=>(function(V,U){V.readFields(MC,U)}(new uy(k),M),new VC[v](M.buffer))),C.then(k=>{for(let V=x.length-1;V>=0;V--)switch(x[V]){case"delta_filter":EC(k,S);break;case"zigzag_filter":PC(k);break;case"bitshuffle_filter":AC(k,v);break;default:throw new oa(`Unhandled filter "${x[V]}"`)}return{layerName:u,blockIndex:D,data:k}}).catch(k=>{throw k})}))},Ft(iw,"MRTDecodingBatch",{omit:["_onCancel","_onComplete"]});let qf,fy,ka,Ju,py,Qu=null;function nw(){return Qn()&&self.worker&&self.worker.dracoUrl?self.worker.dracoUrl:fy||ge.DRACO_URL}function sw(){if(Qn()&&self.worker&&self.worker.meshoptUrl)return self.worker.meshoptUrl;if(Ju)return Ju;const r=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]);if(typeof WebAssembly!="object")throw new Error("WebAssembly not supported, cannot instantiate meshoptimizer");return Ju=WebAssembly.validate(r)?ge.MESHOPT_SIMD_URL:ge.MESHOPT_URL,Ju}const Jm={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},jC={5120:"DT_INT8",5121:"DT_UINT8",5122:"DT_INT16",5123:"DT_UINT16",5125:"DT_UINT32",5126:"DT_FLOAT32"},Wf={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16};function rw(r,e,n){const o=n.json.bufferViews.length,u=n.buffers.length;e.bufferView=o,n.json.bufferViews[o]={buffer:u,byteLength:r.byteLength},n.buffers[u]=r}const my="KHR_draco_mesh_compression";function GC(r,e){const n=r.extensions&&r.extensions[my];if(!n)return;const o=new ka.Decoder,u=cw(e,n.bufferView),l=new ka.Mesh;if(!o.DecodeArrayToMesh(u,u.byteLength,l))throw new Error("Failed to decode Draco mesh");const f=e.json.accessors[r.indices],v=Jm[f.componentType],S=f.count*v.BYTES_PER_ELEMENT,D=ka._malloc(S);v===Uint16Array?o.GetTrianglesUInt16Array(l,S,D):o.GetTrianglesUInt32Array(l,S,D),rw(ka.memory.buffer.slice(D,D+S),f,e),ka._free(D);for(const x of Object.keys(n.attributes)){const P=o.GetAttributeByUniqueId(l,n.attributes[x]),I=e.json.accessors[r.attributes[x]],M=jC[I.componentType],C=I.count*Wf[I.type]*Jm[I.componentType].BYTES_PER_ELEMENT,k=ka._malloc(C);o.GetAttributeDataArrayForAllPoints(l,P,ka[M],C,k),rw(ka.memory.buffer.slice(k,k+C),I,e),ka._free(k)}o.destroy(),l.destroy(),delete r.extensions[my]}const Qm="EXT_meshopt_compression";function ZC(r,e){if(!r.extensions||!r.extensions[Qm])return;const n=r.extensions[Qm],o=new Uint8Array(e.buffers[n.buffer],n.byteOffset||0,n.byteLength||0),u=new Uint8Array(n.count*n.byteStride);py.decodeGltfBuffer(u,n.count,n.byteStride,o,n.mode,n.filter),r.buffer=e.buffers.length,r.byteOffset=0,e.buffers[r.buffer]=u.buffer,delete r.extensions[Qm]}const ow=1179937895,aw=new TextDecoder("utf8");function lw(r,e){return new URL(r,e).href}function HC(r,e,n,o){return fetch(lw(r.uri,o)).then(u=>u.arrayBuffer()).then(u=>{e.buffers[n]=u})}function cw(r,e){const n=r.json.bufferViews[e];return new Uint8Array(r.buffers[n.buffer],n.byteOffset||0,n.byteLength)}function qC(r,e,n,o){if(r.uri){const u=lw(r.uri,o);return fetch(u).then(l=>l.blob()).then(l=>createImageBitmap(l)).then(l=>{e.images[n]=l})}if(r.bufferView!==void 0){const u=cw(e,r.bufferView),l=new Blob([u],{type:r.mimeType});return createImageBitmap(l).then(f=>{e.images[n]=f})}}function hw(r,e=0,n){const o={json:null,images:[],buffers:[]};if(new Uint32Array(r,e,1)[0]===ow){const x=new Uint32Array(r,e);let P=2;const I=(x[P++]>>2)-3,M=x[P++]>>2;if(P++,o.json=JSON.parse(aw.decode(x.subarray(P,P+M))),P+=M,P<I){const C=x[P++];P++;const k=e+(P<<2);o.buffers[0]=r.slice(k,k+C)}}else o.json=JSON.parse(aw.decode(new Uint8Array(r,e)));const{buffers:u,images:l,meshes:f,extensionsUsed:v,bufferViews:S}=o.json;let D=Promise.resolve();if(u){const x=[];for(let P=0;P<u.length;P++){const I=u[P];I.uri?x.push(HC(I,o,P,n)):o.buffers[P]||(o.buffers[P]=null)}D=Promise.all(x)}return D.then(()=>{const x=[],P=v&&v.includes(my),I=v&&v.includes(Qm);if(P&&x.push(function(){if(!ka)return qf??(qf=function(M){let C,k=null;function V(){C=new Uint8Array(k.buffer)}function U(){throw new Error("Unexpected Draco error.")}const q={a:{a:U,d:function($,H,K){return C.copyWithin($,H,H+K)},c:function($){const H=C.length,K=Math.max($>>>0,Math.ceil(1.2*H)),Q=Math.ceil((K-H)/65536);try{return k.grow(Q),V(),!0}catch{return!1}},b:U}};return(WebAssembly.instantiateStreaming?WebAssembly.instantiateStreaming(M,q):M.then($=>$.arrayBuffer()).then($=>WebAssembly.instantiate($,q))).then($=>{const{Rb:H,Qb:K,P:Q,T:ie,X:fe,Ja:de,La:ue,Qa:Se,Va:me,Wa:Ee,eb:ze,jb:Ie,f:Re,e:Ve,yb:Ue,zb:Fe,Ab:et,Bb:dt,Db:tt,Gb:Mt}=$.instance.exports;k=Ve;const wt=(()=>{let At=0,rt=0,Ut=0,St=0;return Nt=>{Ut&&(H(St),H(At),rt+=Ut,Ut=At=0),At||(rt+=128,At=K(rt));const Qt=Nt.length+7&-8;let pi=At;Qt>=rt&&(Ut=Qt,pi=St=K(Qt));for(let gi=0;gi<Nt.length;gi++)C[pi+gi]=Nt[gi];return pi}})();return V(),Re(),{memory:Ve,_free:H,_malloc:K,Mesh:class{constructor(){this.ptr=Q()}destroy(){ie(this.ptr)}},Decoder:class{constructor(){this.ptr=de()}destroy(){Ie(this.ptr)}DecodeArrayToMesh(At,rt,Ut){const St=wt(At),Nt=ue(this.ptr,St,rt,Ut.ptr);return!!fe(Nt)}GetAttributeByUniqueId(At,rt){return{ptr:Se(this.ptr,At.ptr,rt)}}GetTrianglesUInt16Array(At,rt,Ut){me(this.ptr,At.ptr,rt,Ut)}GetTrianglesUInt32Array(At,rt,Ut){Ee(this.ptr,At.ptr,rt,Ut)}GetAttributeDataArrayForAllPoints(At,rt,Ut,St,Nt){ze(this.ptr,At.ptr,rt.ptr,Ut,St,Nt)}},DT_INT8:Ue(),DT_UINT8:Fe(),DT_INT16:et(),DT_UINT16:dt(),DT_UINT32:tt(),DT_FLOAT32:Mt()}})}(fetch(nw())),qf.then(M=>{ka=M,qf=void 0}))}()),I&&x.push(function(){if(py)return;const M=function(C){let k;const V=WebAssembly.instantiateStreaming(C,{}).then($=>{k=$.instance,k.exports.__wasm_call_ctors()}),U={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},q={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return{ready:V,supported:!0,decodeGltfBuffer($,H,K,Q,ie,fe){(function(de,ue,Se,me,Ee,ze,Ie){const Re=de.exports.sbrk,Ve=me+3&-4,Ue=Re(Ve*Ee),Fe=Re(ze.length),et=new Uint8Array(de.exports.memory.buffer);et.set(ze,Fe);const dt=ue(Ue,me,Ee,Fe,ze.length);if(dt===0&&Ie&&Ie(Ue,Ve,Ee),Se.set(et.subarray(Ue,Ue+me*Ee)),Re(Ue-Re(0)),dt!==0)throw new Error(`Malformed buffer data: ${dt}`)})(k,k.exports[q[ie]],$,H,K,Q,k.exports[U[fe]])}}}(fetch(sw()));return M.ready.then(()=>{py=M})}()),l)for(let M=0;M<l.length;M++)x.push(qC(l[M],o,M,n));return(x.length?Promise.all(x):Promise.resolve()).then(()=>{if(P&&f)for(const{primitives:M}of f)for(const C of M)GC(C,o);if(I&&f&&S)for(const M of S)ZC(M,o);return o})})}function Bh(r,e){const n=r.json.bufferViews[e.bufferView],o=Jm[e.componentType];return new o(r.buffers[n.buffer],(e.byteOffset||0)+(n.byteOffset||0),e.count*(n.byteStride&&n.byteStride!==Wf[e.type]*o.BYTES_PER_ELEMENT?n.byteStride/o.BYTES_PER_ELEMENT:Wf[e.type]))}function _y(r,e,n,o){const u=Jm[e.componentType],l=function(x){switch(x){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:return 1}}(u),f=r.json.bufferViews[e.bufferView],v=f.byteStride?f.byteStride/u.BYTES_PER_ELEMENT:Wf[e.type],S=n.float32,D=S.length/n.capacity;for(let x=0,P=0;x<e.count*v;x+=v,P+=D)for(let I=0;I<D;I++)S[P+I]=o[x+I]*l;n._trim()}function WC(r,e,n){const o=r.indices,u=r.attributes,l={};l.indexArray=new qs;const f=e.json.accessors[o],v=f.count/3;l.indexArray.reserve(v);const S=Bh(e,f);for(let I=0;I<v;I++)l.indexArray.emplaceBack(S[3*I],S[3*I+1],S[3*I+2]);l.indexArray._trim(),l.vertexArray=new Sa;const D=e.json.accessors[u.POSITION];l.vertexArray.reserve(D.count);const x=Bh(e,D);for(let I=0;I<D.count;I++)l.vertexArray.emplaceBack(x[3*I],x[3*I+1],x[3*I+2]);if(l.vertexArray._trim(),l.aabb=new Jt(D.min,D.max),l.centroid=function(I,M){const C=[0,0,0],k=I.length;if(k>0){for(let V=0;V<k;V++){const U=3*I[V];C[0]+=M[U],C[1]+=M[U+1],C[2]+=M[U+2]}C[0]/=k,C[1]/=k,C[2]/=k}return C}(S,x),u.COLOR_0!==void 0){const I=e.json.accessors[u.COLOR_0],M=Wf[I.type],C=Bh(e,I);l.colorArray=M===3?new Sa:new el,l.colorArray.resize(I.count),_y(e,I,l.colorArray,C)}if(u.NORMAL!==void 0){l.normalArray=new Sa;const I=e.json.accessors[u.NORMAL];l.normalArray.resize(I.count);const M=Bh(e,I);_y(e,I,l.normalArray,M)}if(u.TEXCOORD_0!==void 0&&n.length>0){l.texcoordArray=new Bl;const I=e.json.accessors[u.TEXCOORD_0];l.texcoordArray.resize(I.count);const M=Bh(e,I);_y(e,I,l.texcoordArray,M)}if(u._FEATURE_ID_RGBA4444!==void 0){const I=e.json.accessors[u._FEATURE_ID_RGBA4444];e.json.extensionsUsed&&e.json.extensionsUsed.includes("EXT_meshopt_compression")&&(l.featureData=Bh(e,I))}u._FEATURE_RGBA4444!==void 0&&(l.featureData=new Uint32Array(Bh(e,e.json.accessors[u._FEATURE_RGBA4444]).buffer));const P=r.material;return l.material=function(I,M){const{emissiveFactor:C=[0,0,0],alphaMode:k="OPAQUE",alphaCutoff:V=.5,normalTexture:U,occlusionTexture:q,emissiveTexture:$,doubleSided:H}=I,{baseColorFactor:K=[1,1,1,1],metallicFactor:Q=1,roughnessFactor:ie=1,baseColorTexture:fe,metallicRoughnessTexture:de}=I.pbrMetallicRoughness||{},ue=q?M[q.index]:void 0;if(q&&q.extensions&&q.extensions.KHR_texture_transform&&ue){const Se=q.extensions.KHR_texture_transform;ue.offsetScale=[Se.offset[0],Se.offset[1],Se.scale[0],Se.scale[1]]}return{pbrMetallicRoughness:{baseColorFactor:new ki(...K),metallicFactor:Q,roughnessFactor:ie,baseColorTexture:fe?M[fe.index]:void 0,metallicRoughnessTexture:de?M[de.index]:void 0},doubleSided:H,emissiveFactor:C,alphaMode:k,alphaCutoff:V,normalTexture:U?M[U.index]:void 0,occlusionTexture:ue,emissionTexture:$?M[$.index]:void 0,defined:I.defined===void 0}}(P!==void 0?e.json.materials[P]:{defined:!1},n),l}function uw(r,e,n){const{matrix:o,rotation:u,translation:l,scale:f,mesh:v,extras:S,children:D}=r,x={};if(x.matrix=o||De.mat4.fromRotationTranslationScale([],u||[0,0,0,1],l||[0,0,0],f||[1,1,1]),v!==void 0){x.meshes=n[v];const P=x.anchor=[0,0];for(const I of x.meshes){const{min:M,max:C}=I.aabb;P[0]+=M[0]+C[0],P[1]+=M[1]+C[1]}P[0]=Math.floor(P[0]/x.meshes.length/2),P[1]=Math.floor(P[1]/x.meshes.length/2)}if(S&&(S.id&&(x.id=S.id),S.lights&&(x.lights=function(P){if(!P.length)return[];const I=function(U){const q=atob(U),$=new Uint8Array(q.length);for(let H=0;H<q.length;H++)$[H]=q.codePointAt(H);return $}(P),M=[],C=I.length/24,k=new Uint16Array(I.buffer),V=new Float32Array(I.buffer);for(let U=0;U<C;U++){const q=k[2*U*6]/30,$=k[2*U*6+1]/30,H=k[2*U*6+10]/100,K=V[6*U+1],Q=V[6*U+2],ie=V[6*U+3],fe=V[6*U+4],de=ie-K,ue=fe-Q,Se=Math.hypot(de,ue);M.push({pos:[K+.5*de,Q+.5*ue,$],normal:[ue/Se,-de/Se,0],width:Se,height:q,depth:H,points:[K,Q,ie,fe]})}return M}(S.lights))),D){const P=[];for(const I of D)P.push(uw(e.json.nodes[I],e,n));x.children=P}return x}function $C(r){if(r.vertices.length===0||r.indices.length===0)return null;const e=new yg(r.vertices,r.indices,8,256),[n,o]=[e.min.clone(),e.max.clone()];return{vertices:r.vertices,indices:r.indices,grid:e,min:n,max:o}}function XC(r){if(!r.extras||!r.extras.ground)return null;const e=r.extras.ground;if(!e||!Array.isArray(e)||e.length===0)return null;const n=e[0];if(!n||!Array.isArray(n)||n.length===0)return null;const o=[];for(const f of n){if(!Array.isArray(f)||f.length!==2)continue;const v=f[0],S=f[1];typeof v=="number"&&typeof S=="number"&&o.push(new Et(v,S))}if(o.length<3)return null;o.length>1&&o[o.length-1].equals(o[0])&&o.pop();let u=0;for(let f=0;f<o.length;f++){const v=o[f],S=o[(f+1)%o.length],D=o[(f+2)%o.length];u+=(v.x-S.x)*(D.y-S.y)-(D.x-S.x)*(v.y-S.y)}u>0&&o.reverse();const l=yf(o.flatMap(f=>[f.x,f.y]),[]);return l.length===0?null:{vertices:o,indices:l}}function YC(r,e){const n=[],o=[];let u=0;const l=[];for(const f of r){u=n.length;const v=f.vertexArray.float32,S=f.indexArray.uint16;for(let D=0;D<f.vertexArray.length;D++)l[0]=v[3*D+0],l[1]=v[3*D+1],l[2]=v[3*D+2],De.vec3.transformMat4(l,l,e),n.push(new Et(l[0],l[1]));for(let D=0;D<3*f.indexArray.length;D++)o.push(S[D]+u)}if(o.length%3!=0)return null;for(let f=0;f<o.length;f+=3){const v=n[o[f+0]],S=n[o[f+1]],D=n[o[f+2]];(v.x-S.x)*(D.y-S.y)-(D.x-S.x)*(v.y-S.y)>0&&([o[f+1],o[f+2]]=[o[f+2],o[f+1]])}return{vertices:n,indices:o}}function dw(r){const e=function(S,D){const x=[],P=WebGL2RenderingContext;if(S.json.textures)for(const I of S.json.textures){const M={magFilter:P.LINEAR,minFilter:P.NEAREST,wrapS:P.REPEAT,wrapT:P.REPEAT};I.sampler!==void 0&&Object.assign(M,S.json.samplers[I.sampler]),x.push({image:D[I.source],sampler:M,uploaded:!1})}return x}(r,r.images),n=function(S,D){const x=[];for(const P of S.json.meshes){const I=[];for(const M of P.primitives)I.push(WC(M,S,D));x.push(I)}return x}(r,e),{scenes:o,scene:u,nodes:l}=r.json,f=o?o[u||0].nodes:l,v=[];for(const S of f)v.push(uw(l[S],r,n));return function(S,D,x){const P={},I=new Set;for(let M=0;M<S.length;M++){const C=x[D[M]];if(!C.extras)continue;const k=C.extras["mapbox:footprint:version"],V=C.extras["mapbox:footprint:id"];(k||V)&&I.add(M),k==="1.0.0"&&V&&(P[V]=M)}for(let M=0;M<S.length;M++){if(I.has(M))continue;const C=S[M],k=x[D[M]];if(!k.extras)continue;let V=null;C.id in P&&(V=YC(S[P[C.id]].meshes,C.matrix)),V||(V=XC(k)),V&&(C.footprint=$C(V))}if(I.size>0){const M=Array.from(I.values()).sort((C,k)=>C-k);for(let C=M.length-1;C>=0;C--)S.splice(M[C],1)}}(v,f,r.json.nodes),v}function KC(r){r.heightmap=new Float32Array(4096),r.heightmap.fill(-1);const e=r.vertexArray.float32,n=r.aabb.min[0]-1,o=r.aabb.min[1]-1,u=Rh/(r.aabb.max[0]-n+2),l=Rh/(r.aabb.max[1]-o+2);for(let f=0;f<e.length;f+=3){const v=e[f+2],S=(e[f+0]-n)*u|0,D=(e[f+1]-o)*l|0;v>r.heightmap[D*Rh+S]&&(r.heightmap[D*Rh+S]=v)}}function JC(r,e){const n={};n.indexArray=new qs,n.indexArray.reserve(4*r.length),n.vertexArray=new Sa,n.vertexArray.reserve(10*r.length),n.colorArray=new el,n.vertexArray.reserve(10*r.length);let o=0;for(const f of r){const v=Math.min(10,Math.max(4,1.3*f.height))*e,S=[-f.normal[1],f.normal[0],0],D=Math.min(.29,.1*f.width/f.depth),x=f.width-2*f.depth*e*(D+.01),P=De.vec3.scaleAndAdd([],f.pos,S,x/2),I=De.vec3.scaleAndAdd([],f.pos,S,-x/2),M=[P[0],P[1],P[2]+f.height],C=[I[0],I[1],I[2]+f.height],k=De.vec3.scaleAndAdd([],f.normal,S,D);De.vec3.scale(k,k,v);const V=De.vec3.scaleAndAdd([],f.normal,S,-D);De.vec3.scale(V,V,v),De.vec3.add(k,P,k),De.vec3.add(V,I,V),P[2]+=.1,I[2]+=.1,n.vertexArray.emplaceBack(k[0],k[1],k[2]),n.vertexArray.emplaceBack(V[0],V[1],V[2]),n.vertexArray.emplaceBack(P[0],P[1],P[2]),n.vertexArray.emplaceBack(I[0],I[1],I[2]),n.vertexArray.emplaceBack(M[0],M[1],M[2]),n.vertexArray.emplaceBack(C[0],C[1],C[2]),n.vertexArray.emplaceBack(P[0],P[1],P[2]),n.vertexArray.emplaceBack(I[0],I[1],I[2]),n.vertexArray.emplaceBack(k[0],k[1],k[2]),n.vertexArray.emplaceBack(V[0],V[1],V[2]);const U=x/v/2;n.colorArray.emplaceBack(-U-D,-1,U,.8),n.colorArray.emplaceBack(U+D,-1,U,.8),n.colorArray.emplaceBack(-U,0,U,1.3),n.colorArray.emplaceBack(U,0,U,1.3),n.colorArray.emplaceBack(U+D,-.8,U,.7),n.colorArray.emplaceBack(U+D,-.8,U,.7),n.colorArray.emplaceBack(0,0,U,1.3),n.colorArray.emplaceBack(0,0,U,1.3),n.colorArray.emplaceBack(U+D,-1.2,U,.8),n.colorArray.emplaceBack(U+D,-1.2,U,.8),n.indexArray.emplaceBack(6+o,4+o,8+o),n.indexArray.emplaceBack(7+o,9+o,5+o),n.indexArray.emplaceBack(0+o,1+o,2+o),n.indexArray.emplaceBack(1+o,3+o,2+o),o+=10}const u={defined:!0,emissiveFactor:[0,0,0]},l={};return l.baseColorFactor=ki.white,u.pbrMetallicRoughness=l,n.material=u,n.aabb=new Jt([1/0,1/0,1/0],[-1/0,-1/0,-1/0]),n}class fw{constructor(e){this._stringToNumber={},this._numberToString=[];for(let n=0;n<e.length;n++){const o=e[n];this._stringToNumber[o]=n,this._numberToString[n]=o}}encode(e){return this._stringToNumber[e]}decode(e){return this._numberToString[e]}}const QC=["id","tile","layer","source","sourceLayer","state"];class ed{constructor(e,n,o,u,l){this.type="Feature",this._vectorTileFeature=e,this._z=n,this._x=o,this._y=u,this.properties=e.properties,this.id=l}clone(){const e=new ed(this._vectorTileFeature,this._z,this._x,this._y,this.id);return this.state&&(e.state={...this.state}),this.layer&&(e.layer={...this.layer}),this.source&&(e.source=this.source),this.sourceLayer&&(e.sourceLayer=this.sourceLayer),e}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._x,this._y,this._z).geometry),this._geometry}set geometry(e){this._geometry=e}toJSON(){const e={type:"Feature",state:void 0,geometry:this.geometry,properties:this.properties};for(const n of QC)this[n]!==void 0&&(e[n]=this[n]);return e}}class pw{constructor(e,n){this.tileID=e,this.x=e.canonical.x,this.y=e.canonical.y,this.z=e.canonical.z,this.grid=new _c(Tt,16,0),this.featureIndexArray=new Eh,this.promoteId=n,this.is3DTile=!1,this.serializedLayersCache=new Map}insert(e,n,o,u,l,f=0,v=0){const S=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(o,u,l,f);const D=this.grid;for(let x=0;x<n.length;x++){const P=n[x],I=[1/0,1/0,-1/0,-1/0];for(let M=0;M<P.length;M++){const C=P[M];I[0]=Math.min(I[0],C.x),I[1]=Math.min(I[1],C.y),I[2]=Math.max(I[2],C.x),I[3]=Math.max(I[3],C.y)}v!==0&&(I[0]-=v,I[1]-=v,I[2]+=v,I[3]+=v),I[0]<Tt&&I[1]<Tt&&I[2]>=0&&I[3]>=0&&D.insert(S,I[0],I[1],I[2],I[3])}}loadVTLayers(){if(!this.vtLayers){this.vtLayers=new Vu.VectorTile(new Tm(this.rawTileData)).layers,this.sourceLayerCoder=new fw(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"]),this.vtFeatures={};for(const e in this.vtLayers)this.vtFeatures[e]=[]}return this.vtLayers}query(e,n){const{tilespaceGeometry:o,transform:u,tileTransform:l,pixelPosMatrix:f,availableImages:v}=n;this.loadVTLayers(),this.serializedLayersCache.clear();const S=o.bufferedTilespaceBounds,D=this.grid.query(S.min.x,S.min.y,S.max.x,S.max.y,(M,C,k,V)=>Oe(o.bufferedTilespaceGeometry,M,C,k,V));D.sort(eI);let x=null;u.elevation&&D.length>0&&(x=Wu.create(u.elevation,this.tileID));const P={};let I;for(let M=0;M<D.length;M++){const C=D[M];if(C===I)continue;I=C;const k=this.featureIndexArray.get(C);let V=null;this.is3DTile?this.loadMatchingModelFeature(P,k,e,o,u):this.loadMatchingFeature(P,k,e,v,(U,q,$,H=0)=>(V||(V=G(U,this.tileID.canonical,l)),q.queryIntersectsFeature(o,U,$,V,this.z,u,f,x,H)))}return P}loadMatchingFeature(e,n,o,u,l){const{featureIndex:f,bucketIndex:v,sourceLayerIndex:S,layoutVertexArrayOffset:D}=n,x=this.bucketLayerIDs[v],P=o.layers,I=Object.keys(P);if(I.length&&!function(U,q){for(let $=0;$<U.length;$++)if(q.indexOf(U[$])>=0)return!0;return!1}(I,x))return;const M=o.sourceCache,C=this.sourceLayerCoder.decode(S),k=this.vtLayers[C].feature(f),V=this.getId(k,C);for(let U=0;U<x.length;U++){const q=x[U];if(!P[q])continue;const{styleLayer:$,targets:H}=P[q];let K={};V!==void 0&&(K=M.getFeatureState($.sourceLayer,V));const Q=!l||l(k,$,K,D);if(!Q)continue;const ie=new ed(k,this.z,this.x,this.y,V);ie.tile=this.tileID.canonical,ie.state=K;let fe=this.serializedLayersCache.get(q);fe||(fe=$.serialize(),fe.id=q,this.serializedLayersCache.set(q,fe)),ie.source=fe.source,ie.sourceLayer=fe["source-layer"],ie.layer=An({},fe),ie.layer.paint=mw(fe.paint,$.paint,k,K,u),ie.layer.layout=mw(fe.layout,$.layout,k,K,u);let de=!1;for(const ue of H){this.updateFeatureProperties(ie,ue);const{filter:Se}=ue;if(Se){if(k.properties=ie.properties,Se.needGeometry){const me=Z(k,!0);if(!Se.filter(new Tn(this.tileID.overscaledZ),me,this.tileID.canonical))continue}else if(!Se.filter(new Tn(this.tileID.overscaledZ),k))continue}de=!0,ue.targetId&&this.addFeatureVariant(ie,ue)}de&&this.appendToResult(e,q,f,ie,Q)}}loadMatchingModelFeature(e,n,o,u,l){const f=this.bucketLayerIDs[0][0],v=o.layers;if(!v[f])return;const{styleLayer:S,targets:D}=v[f];if(S.type!=="model")return;const x=u.tile,P=n.featureIndex,I=x.getBucket(S);if(!(I&&I instanceof Zm))return;const M=function(fe,de,ue,Se){const me=fe.getNodesInfo()[de];if(me.hiddenByReplacement||!me.node.meshes)return;let Ee=Number.MAX_VALUE;const ze=me.node,Ie=ue.tile,Re=Se.calculatePosMatrix(Ie.tileID.toUnwrapped(),Se.worldSize),Ve=me.evaluatedScale;let Ue=0;Se.elevation&&ze.elevation&&(Ue=ze.elevation*Se.elevation.exaggeration()),De.mat4.translate(Re,Re,[(ze.anchor?ze.anchor[0]:0)*(Ve[0]-1),(ze.anchor?ze.anchor[1]:0)*(Ve[1]-1),Ue]),De.mat4.scale(Re,Re,Ve);const Fe=ue.queryGeometry,et=Fe.isPointQuery()?Fe.screenBounds:Fe.screenGeometry,dt=function(Mt){const wt=De.mat4.multiply([],Re,Mt.matrix);De.mat4.multiply(wt,Se.expandedFarZProjMatrix,wt);for(let At=0;At<Mt.meshes.length;++At){const rt=Mt.meshes[At];if(At===Mt.lightMeshIndex)continue;const Ut=mb(et,Se,wt,rt.aabb);Ut!=null&&(Ee=Math.min(Ut,Ee))}if(Mt.children)for(const At of Mt.children)dt(At)};if(dt(ze),Ee===Number.MAX_VALUE)return;const tt=new Ui(0,0);return Pb(Ie.tileID.canonical,tt,me.node.anchor[0],me.node.anchor[1]),{intersectionZ:Ee,position:tt,feature:me.feature}}(I,P,u,l);if(!M)return;const{z:C,x:k,y:V}=x.tileID.canonical,{feature:U,intersectionZ:q,position:$}=M;let H={};U.id!==void 0&&(H=o.sourceCache.getFeatureState(S.sourceLayer,U.id));const K=new ed({},C,k,V,U.id);K.tile=this.tileID.canonical,K.state=H,K.properties=U.properties,K.geometry={type:"Point",coordinates:[$.lng,$.lat]};let Q=this.serializedLayersCache.get(f);Q||(Q=S.serialize(),Q.id=f,this.serializedLayersCache.set(f,Q)),K.source=Q.source,K.sourceLayer=Q["source-layer"],K.layer=An({},Q);let ie=!1;for(const fe of D){this.updateFeatureProperties(K,fe);const{filter:de}=fe;if(de){if(U.properties=K.properties,de.needGeometry){if(!de.filter(new Tn(this.tileID.overscaledZ),U,this.tileID.canonical))continue}else if(!de.filter(new Tn(this.tileID.overscaledZ),U))continue}ie=!0,fe.targetId&&this.addFeatureVariant(K,fe)}ie&&this.appendToResult(e,f,P,K,q)}updateFeatureProperties(e,n,o){if(n.properties){const u={};for(const l in n.properties){const f=n.properties[l].evaluate({zoom:this.z},e._vectorTileFeature,e.state,e.tile,o);f!=null&&(u[l]=f)}e.properties=u}}addFeatureVariant(e,n,o){const u={target:n.target,namespace:n.namespace};n.properties&&(u.properties=e.properties),e.variants=e.variants||{},e.variants[n.targetId]=e.variants[n.targetId]||[],e.variants[n.targetId].push(u)}appendToResult(e,n,o,u,l){let f=e[n];f===void 0&&(f=e[n]=[]),f.push({featureIndex:o,feature:u,intersectionZ:l})}lookupSymbolFeatures(e,n,o,u,l){const f={};this.loadVTLayers();for(const v of e)this.loadMatchingFeature(f,{bucketIndex:n,sourceLayerIndex:o,featureIndex:v,layoutVertexArrayOffset:0},u,l);return f}loadFeature(e){const{featureIndex:n,sourceLayerIndex:o}=e;this.loadVTLayers();const u=this.sourceLayerCoder.decode(o),l=this.vtFeatures[u];if(l[n])return l[n];const f=this.vtLayers[u].feature(n);return l[n]=f,f}hasLayer(e){for(const n of this.bucketLayerIDs)for(const o of n)if(e===o)return!0;return!1}getId(e,n){let o=e.id;if(this.promoteId){const u=typeof this.promoteId=="string"?this.promoteId:this.promoteId[n];u!=null&&(o=e.properties[u]),typeof o=="boolean"&&(o=Number(o))}return o}}function mw(r,e,n,o,u){return Pr(r,(l,f)=>{const v=e instanceof vc?e.get(f):null;return v&&v.evaluate?v.evaluate(n,o,u):v})}function eI(r,e){return e-r}Ft(pw,"FeatureIndex",{omit:["rawTileData","sourceLayerCoder"]});const _w=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class gy{static from(e){if(!(e instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");const[n,o]=new Uint8Array(e,0,2);if(n!==219)throw new Error("Data does not appear to be in a KDBush format.");const u=o>>4;if(u!==1)throw new Error(`Got v${u} data when expected v1.`);const l=_w[15&o];if(!l)throw new Error("Unrecognized array type.");const[f]=new Uint16Array(e,2,1),[v]=new Uint32Array(e,4,1);return new gy(v,f,l,e)}constructor(e,n=64,o=Float64Array,u){if(isNaN(e)||e<0)throw new Error(`Unpexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+n,2),65535),this.ArrayType=o,this.IndexArrayType=e<65536?Uint16Array:Uint32Array;const l=_w.indexOf(this.ArrayType),f=2*e*this.ArrayType.BYTES_PER_ELEMENT,v=e*this.IndexArrayType.BYTES_PER_ELEMENT,S=(8-v%8)%8;if(l<0)throw new Error(`Unexpected typed array class: ${o}.`);u&&u instanceof ArrayBuffer?(this.data=u,this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+v+S,2*e),this._pos=2*e,this._finished=!0):(this.data=new ArrayBuffer(8+f+v+S),this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+v+S,2*e),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+l]),new Uint16Array(this.data,2,1)[0]=n,new Uint32Array(this.data,4,1)[0]=e)}add(e,n){const o=this._pos>>1;return this.ids[o]=o,this.coords[this._pos++]=e,this.coords[this._pos++]=n,o}finish(){const e=this._pos>>1;if(e!==this.numItems)throw new Error(`Added ${e} items when expected ${this.numItems}.`);return yy(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(e,n,o,u){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:l,coords:f,nodeSize:v}=this,S=[0,l.length-1,0],D=[];for(;S.length;){const x=S.pop()||0,P=S.pop()||0,I=S.pop()||0;if(P-I<=v){for(let V=I;V<=P;V++){const U=f[2*V],q=f[2*V+1];U>=e&&U<=o&&q>=n&&q<=u&&D.push(l[V])}continue}const M=I+P>>1,C=f[2*M],k=f[2*M+1];C>=e&&C<=o&&k>=n&&k<=u&&D.push(l[M]),(x===0?e<=C:n<=k)&&(S.push(I),S.push(M-1),S.push(1-x)),(x===0?o>=C:u>=k)&&(S.push(M+1),S.push(P),S.push(1-x))}return D}within(e,n,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:u,coords:l,nodeSize:f}=this,v=[0,u.length-1,0],S=[],D=o*o;for(;v.length;){const x=v.pop()||0,P=v.pop()||0,I=v.pop()||0;if(P-I<=f){for(let V=I;V<=P;V++)yw(l[2*V],l[2*V+1],e,n)<=D&&S.push(u[V]);continue}const M=I+P>>1,C=l[2*M],k=l[2*M+1];yw(C,k,e,n)<=D&&S.push(u[M]),(x===0?e-o<=C:n-o<=k)&&(v.push(I),v.push(M-1),v.push(1-x)),(x===0?e+o>=C:n+o>=k)&&(v.push(M+1),v.push(P),v.push(1-x))}return S}}function yy(r,e,n,o,u,l){if(u-o<=n)return;const f=o+u>>1;gw(r,e,f,o,u,l),yy(r,e,n,o,f-1,1-l),yy(r,e,n,f+1,u,1-l)}function gw(r,e,n,o,u,l){for(;u>o;){if(u-o>600){const D=u-o+1,x=n-o+1,P=Math.log(D),I=.5*Math.exp(2*P/3),M=.5*Math.sqrt(P*I*(D-I)/D)*(x-D/2<0?-1:1);gw(r,e,n,Math.max(o,Math.floor(n-x*I/D+M)),Math.min(u,Math.floor(n+(D-x)*I/D+M)),l)}const f=e[2*n+l];let v=o,S=u;for($f(r,e,o,n),e[2*u+l]>f&&$f(r,e,o,u);v<S;){for($f(r,e,v,S),v++,S--;e[2*v+l]<f;)v++;for(;e[2*S+l]>f;)S--}e[2*o+l]===f?$f(r,e,o,S):(S++,$f(r,e,S,u)),S<=n&&(o=S+1),n<=S&&(u=S-1)}}function $f(r,e,n,o){xy(r,n,o),xy(e,2*n,2*o),xy(e,2*n+1,2*o+1)}function xy(r,e,n){const o=r[e];r[e]=r[n],r[n]=o}function yw(r,e,n,o){const u=r-n,l=e-o;return u*u+l*l}i.$=Qd,i.A=as,i.B=2,i.C=z1,i.D=$u,i.E=Wo,i.F=Og,i.G=class extends jm{},i.H=Xo,i.I=ly,i.J=Bi,i.K=qp,i.L=Nd,i.M=pc,i.N=Op,i.O=uu,i.P=Et,i.Q=xu,i.R=Zo,i.S=Gd,i.T=$g,i.U=fh,i.V=jm,i.W=Il,i.X=co,i.Y=lo,i.Z=ar,i._=Va,i.a=function(r){return ge.API_CDN_URL_REGEX.test(r)},i.a$=ed,i.a0=cu,i.a1=lu,i.a2=function(r){const e=r.value;let n=[];if(!e)return n;const o=Xo(e);return o!=="string"?(n=n.concat([new jm(r.key,e,`string expected, "${o}" found`)]),n):(gb(e,!0)||(n=n.concat([new jm(r.key,e,`invalid url "${e}"`)])),n)},i.a3=$e,i.a4=_h,i.a5=Bn,i.a6=yt,i.a7=class{constructor(r){this.specification=r}possiblyEvaluate(r,e){return Zi(r.expression.evaluate(e))}interpolate(r,e,n){return{x:ei(r.x,e.x,n),y:ei(r.y,e.y,n),z:ei(r.z,e.z,n),azimuthal:ei(r.azimuthal,e.azimuthal,n),polar:ei(r.polar,e.polar,n)}}},i.a8=Tn,i.a9=mc,i.aA=Aa,i.aB=class{constructor(r){this.entries={},this.scheduler=r}request(r,e,n,o){const u=this.entries[r]=this.entries[r]||{callbacks:[]};if(u.result){const[l,f]=u.result;return this.scheduler?this.scheduler.add(()=>{o(l,f)},e):o(l,f),()=>{}}return u.callbacks.push(o),u.cancel||(u.cancel=n((l,f)=>{u.result=[l,f];for(const v of u.callbacks)this.scheduler?this.scheduler.add(()=>{v(l,f)},e):v(l,f);setTimeout(()=>delete this.entries[r],3e3)})),()=>{u.result||(u.callbacks=u.callbacks.filter(l=>l!==o),u.callbacks.length||(u.cancel(),delete this.entries[r]))}}},i.aC=zo,i.aD=function(r,e,n){const o=JSON.stringify(r.request);return r.data&&(this.deduped.entries[o]={result:[null,r.data]}),this.deduped.request(o,{type:"parseTile",isSymbolTile:r.isSymbolTile,zoom:r.tileZoom},u=>{const l=oo(r.request,(f,v,S,D)=>{f?u(f):v&&u(null,{vectorTile:n?void 0:new Vu.VectorTile(new Tm(v)),rawData:v,cacheControl:S,expires:D})});return()=>{l.cancel(),u()}},e)},i.aE=function(r){Xn++,Xn>ri&&(r.getActor().send("enforceCacheSizeLimit",li),Xn=0)},i.aF=function(r){return r<=1?1:Math.pow(2,Math.floor(Math.log(r)/Math.LN2))},i.aG=bt,i.aH=sb,i.aI=hb,i.aJ=nb,i.aK=function(r,e){const n=document.createElement("video");n.muted=!0,n.onloadstart=function(){e(null,n)};for(let o=0;o<r.length;o++){const u=document.createElement("source");qo(r[o])||(n.crossOrigin="Anonymous"),u.src=r[o],n.appendChild(u)}return{cancel:()=>{}}},i.aL=Fm,i.aM=function(r){return fetch(r).then(e=>e.arrayBuffer()).then(e=>hw(e,0,r))},i.aN=dw,i.aO=class{constructor(r,e,n,o){this.id=r,this.position=e!=null?new Ui(e[0],e[1]):new Ui(0,0),this.orientation=n??[0,0,0],this.nodes=o,this.uploaded=!1,this.aabb=new Jt([1/0,1/0,1/0],[-1/0,-1/0,-1/0]),this.matrix=[]}_applyTransformations(r,e){if(De.mat4.multiply(r.matrix,e,r.matrix),r.meshes)for(const n of r.meshes){const o=Jt.applyTransformFast(n.aabb,r.matrix);this.aabb.encapsulate(o)}if(r.children)for(const n of r.children)this._applyTransformations(n,r.matrix)}computeBoundsAndApplyParent(){const r=De.mat4.identity([]);for(const e of this.nodes)this._applyTransformations(e,r)}computeModelMatrix(r,e,n,o,u,l,f=!1){wb(this.matrix,this,r.transform,this.position,e,n,o,u,l,f)}upload(r){if(!this.uploaded){for(const e of this.nodes)Qg(e,r);for(const e of this.nodes)Gm(e);this.uploaded=!0}}destroy(){for(const r of this.nodes)ey(r)}},i.aP=wo,i.aQ=zf,i.aR=Vr,i.aS=Fs,i.aT=Qa,i.aU=qs,i.aV=vo,i.aW=Kp,i.aX=Rm,i.aY=function(){fo.isLoading()||fo.isLoaded()||gu()!=="deferred"||Zp()},i.aZ=Wp,i.a_=Z,i.aa=h,i.ab=De,i.ac=ps,i.ad=vc,i.ae=_r,i.af=ei,i.ag=Tt,i.ah=wl,i.ai=vi,i.aj=ki,i.ak=class{constructor(r){this.specification=r}possiblyEvaluate(r,e){return function([n,o]){const u=Zi([1,n,o]);return{x:u.x,y:u.y,z:u.z}}(r.expression.evaluate(e))}interpolate(r,e,n){return{x:ei(r.x,e.x,n),y:ei(r.y,e.y,n),z:ei(r.z,e.z,n)}}},i.al=function(r,e,n=0,o=!0){const u=new Et(n,n),l=r.sub(u),f=e.add(u),v=[l,new Et(f.x,l.y),f,new Et(l.x,f.y)];return o&&v.push(l.clone()),v},i.am=function(r,e){const n=[];for(let o=0;o<r.length;o++){const u=zn(o-1,-1,r.length-1),l=zn(o+1,-1,r.length-1),f=r[o],v=r[l],S=r[u].sub(f).unit(),D=v.sub(f).unit(),x=D.angleWithSep(S.x,S.y),P=S.add(D).unit().mult(-1*e/Math.sin(x/2));n.push(f.add(P))}return n},i.an=G1,i.ao=Oe,i.ap=function(r,e,n=0){return De.vec3.fromValues(((e.x-n)*r.scale-r.x)*Tt,(e.y*r.scale-r.y)*Tt,hm(e.z,e.y))},i.aq=zi,i.ar=a1,i.as=function(r){let e=1/0,n=1/0,o=-1/0,u=-1/0;for(const l of r)e=Math.min(e,l.x),n=Math.min(n,l.y),o=Math.max(o,l.x),u=Math.max(u,l.y);return{min:new Et(e,n),max:new Et(o,u)}},i.at=sa,i.au=Ae,i.av=y,i.aw=si,i.ax=fr,i.ay=function(r,e){const n={};for(let o=0;o<e.length;o++){const u=e[o];u in r&&(n[u]=r[u])}return n},i.az=ol,i.b=function(r){return ge.API_FONTS_REGEX.test(r)},i.b$=Vm,i.b0=Fn,i.b1=Pg,i.b2=gg,i.b3=G,i.b4=Do,i.b5=Cu,i.b6=ai,i.b7=Wn,i.b8=yf,i.b9=Hg,i.bA=Nv,i.bB=Ng,i.bC=N1,i.bD=Rg,i.bE=gy,i.bF=zn,i.bG=Ds,i.bH=pr,i.bI=function(r,e,n){r[4*e+0]=n[0],r[4*e+1]=n[1],r[4*e+2]=n[2],r[4*e+3]=n[3]},i.bJ=Ch,i.bK=ko,i.bL=ff,i.bM=Nn,i.bN=Tc,i.bO=Ui,i.bP=$1,i.bQ=Lt,i.bR=_i,i.bS=db,i.bT=nt,i.bU=Gn,i.bV=function(r,e,n,o,u,l,f,v,S){if(S.name==="globe")return Gn(r,e,new nt(n,o,u),!1);const D=zf({z:n,x:o,y:u},S);return new Jt([(l+D.x/D.scale)*e,e*(D.y/D.scale),f],[(l+D.x2/D.scale)*e,e*(D.y2/D.scale),v])},i.bW=function(r,e,n){let o=0;for(let u=0;u<2;++u)r[u]>0&&(o+=(r[u]-0)*(r[u]-0)),e[u]<0&&(o+=(0-e[u])*(0-e[u]));return o},i.bX=jn,i.bY=am,i.bZ=function(r){const e=De.mat4.identity(new Float64Array(16));De.mat4.multiply(e,r.pixelMatrix,r.globeMatrix);const n=[0,mo,0],o=[0,_o,0];return De.vec3.transformMat4(n,n,e),De.vec3.transformMat4(o,o,e),[n[0]>0&&n[0]<=r.width&&n[1]>0&&n[1]<=r.height&&!jr(r,new Ui(r.center.lat,90)),o[0]>0&&o[0]<=r.width&&o[1]>0&&o[1]<=r.height&&!jr(r,new Ui(r.center.lat,-90))]},i.b_=function(r,e){const{scale:n}=r.tileTransform,o=n*Tt/(r.tileSize*Math.pow(2,e.zoom-r.tileID.overscaledZ+r.tileID.canonical.z));return De.mat2.scale(new Float32Array(4),e.inverseAdjustmentMatrix,[o,o])},i.ba=function(r,e){const n=_r(e.zoom);if(n===0)return is(r);const o=dn(r),u=_n(o),l=sa(o.getWest())*e.worldSize,f=sa(o.getEast())*e.worldSize,v=Aa(o.getNorth())*e.worldSize,S=Aa(o.getSouth())*e.worldSize,D=[l,v,0],x=[f,v,0],P=[l,S,0],I=[f,S,0],M=De.mat4.invert([],e.globeMatrix);return De.vec3.transformMat4(D,D,M),De.vec3.transformMat4(x,x,M),De.vec3.transformMat4(P,P,M),De.vec3.transformMat4(I,I,M),u[0]=As(u[0],P,n),u[1]=As(u[1],I,n),u[2]=As(u[2],x,n),u[3]=As(u[3],D,n),Jt.fromPoints(u)},i.bb=cn,i.bc=Ri,i.bd=As,i.be=vh,i.bf=Xt,i.bg=dy,i.bh=Tm,i.bi=oo,i.bj=function(r){const e=[];for(const n in r)e.push(r[n]);return e},i.bk=function(r,e){const n=[];for(const o in r)o in e||n.push(o);return n},i.bl=Rn,i.bm=["type","source","source-layer","minzoom","maxzoom","filter","layout"],i.bn=$s,i.bo=function(r,e){const{x:n,y:o}=r.point,u=Ca(n,o,r.worldSize/r._pixelsPerMercatorPixel,0,0);return De.mat4.multiply(u,u,tr(is(e)))},i.bp=Uu,i.bq=Fo,i.br=wm,i.bs=function(r,e,n,o,u){const l=5*e+2;r.float32[l+0]=n,r.float32[l+1]=o,r.float32[l+2]=u},i.bt=km,i.bu=L1,i.bv=se,i.bw=ir,i.bx=Dv,i.by=_b,i.bz=Bv,i.c=Ce,i.c$=(r,e,n,o,u,l,f,v)=>{const S=r.transform,D=S.pitch<15?l1(.07,.7,si((14-S.zoom)/5,0,1)):.07,x=n.paint.get("line-trim-color-use-theme").constantOr("default")==="none";return{u_matrix:h1(r,e,n,o),u_texsize:e.imageAtlasTexture?e.imageAtlasTexture.size:[0,0],u_pixels_to_tile_units:S.calculatePixelsToTileUnitsMatrix(e),u_device_pixel_ratio:u,u_width_scale:l,u_floor_width_scale:f,u_image:0,u_tile_units_to_pixels:c1(e,S),u_units_to_pixels:[1/S.pixelsToGLUnits[0],1/S.pixelsToGLUnits[1]],u_alpha_discard_threshold:0,u_trim_offset:v,u_trim_fade_range:n.paint.get("line-trim-fade-range"),u_trim_color:n.paint.get("line-trim-color").toRenderColor(x?null:n.lut).toArray01(),u_emissive_strength:n.paint.get("line-emissive-strength"),u_zbias_factor:D,u_tile_to_meter:s(e.tileID.canonical,0)}},i.c0=ub,i.c1=function(r){const e=ub(r,!0);return De.mat2.invert([],[e[0],e[1],e[4],e[5]])},i.c2=wi,i.c3=function(r){const{x:e,y:n}=r.point,{lng:o,lat:u}=r._center;return Ca(e,n,r.worldSize,o,u)},i.c4=kn,i.c5=zt,i.c6=Ru,i.c7=function(r){const e=Math.round((r+45+360)%360/90)%4;return Ys[e]},i.c8=45,i.c9=Lh,i.cA=class extends Ea{constructor(r){super(r),this.current=rg}set(r,e,n){if(this.fetchUniformLocation(r,e)){for(let o=0;o<9;o++)if(n[o]!==this.current[o]){this.current=n,this.gl.uniformMatrix3fv(this.location,!1,n);break}}}},i.cB=Hr,i.cC=function(r,e,n){const o=_r(n.zoom),u=r.style.map._antialias,l=e.options.extStandardDerivativesForceOff||r.terrain&&r.terrain.exaggeration()>0;return o===0&&!u&&!l},i.cD=function(r){const e=r.pixelsPerMeter,n=e/pr(1,r.center.lat),o=De.mat4.identity(new Float64Array(16));return De.mat4.translate(o,o,[r.point.x,r.point.y,0]),De.mat4.scale(o,o,[n,n,e]),Float32Array.from(o)},i.cE=dn,i.cF=function(r){const e=jn-5;r=si(r,-e,e)/e*90;const n=Math.pow(Math.abs(Math.sin(vi(r))),3);return Math.round(n*(Ou.length-1))},i.cG=function(r,e,n,o){const u=e.getNorth(),l=e.getSouth(),f=e.getWest(),v=e.getEast(),S=1<<r.z,D=v-f,x=u-l,P=D/Ul,I=-x/Ou[n],M=[0,P,0,I,0,0,u,f,0];if(r.z>0){const C=180/o;De.mat3.multiply(M,M,[C/D+1,0,0,0,C/x+1,0,-.5*C/P,.5*C/I,1])}return M[2]=S,M[5]=r.x,M[8]=r.y,M},i.cH=is,i.cI=function(r,e,n){const o=De.mat4.identity(new Float64Array(16)),u=(e/(1<<r)-.5)*Math.PI*2;return De.mat4.rotateY(o,n.globeMatrix,u),Float32Array.from(o)},i.cJ=class{isDataAvailableAtPoint(r){const e=this._source();if(this.isUsingMockSource()||!e||r.y<0||r.y>1)return!1;const n=e.getSource().maxzoom,o=1<<n,u=Math.floor(r.x),l=Math.floor((r.x-u)*o),f=Math.floor(r.y*o),v=this.findDEMTileFor(new bt(n,u,n,l,f));return!(!v||!v.dem)}getAtPointOrZero(r,e=0){return this.getAtPoint(r,e)||0}getAtPoint(r,e,n=!0){if(this.isUsingMockSource())return null;e==null&&(e=null);const o=this._source();if(!o||r.y<0||r.y>1)return e;const u=o.getSource().maxzoom,l=1<<u,f=Math.floor(r.x),v=r.x-f,S=new bt(u,f,u,Math.floor(v*l),Math.floor(r.y*l)),D=this.findDEMTileFor(S);if(!D||!D.dem)return e;const x=D.dem,P=1<<D.tileID.canonical.z,I=(v*P-D.tileID.canonical.x)*x.dim,M=(r.y*P-D.tileID.canonical.y)*x.dim,C=Math.floor(I),k=Math.floor(M);return(n?this.exaggeration():1)*ei(ei(x.get(C,k),x.get(C,k+1),M-k),ei(x.get(C+1,k),x.get(C+1,k+1),M-k),I-C)}getAtTileOffset(r,e,n){const o=1<<r.canonical.z;return this.getAtPointOrZero(new h(r.wrap+(r.canonical.x+e/Tt)/o,(r.canonical.y+n/Tt)/o))}getAtTileOffsetFunc(r,e,n,o){return u=>{const l=this.getAtTileOffset(r,u.x,u.y),f=o.upVector(r.canonical,u.x,u.y),v=o.upVectorScale(r.canonical,e,n).metersToTile;return De.vec3.scale(f,f,l*v),f}}getForTilePoints(r,e,n,o){if(this.isUsingMockSource())return!1;const u=Wu.create(this,r,o);return!!u&&(e.forEach(l=>{l[2]=this.exaggeration()*u.getElevationAt(l[0],l[1],n)}),!0)}getMinMaxForTile(r){if(this.isUsingMockSource())return null;const e=this.findDEMTileFor(r);if(!e||!e.dem)return null;const n=e.dem.tree,o=e.tileID,u=1<<r.canonical.z-o.canonical.z;let l=r.canonical.x/u-o.canonical.x,f=r.canonical.y/u-o.canonical.y,v=0;for(let S=0;S<r.canonical.z-o.canonical.z&&!n.leaves[v];S++){l*=2,f*=2;const D=2*Math.floor(f)+Math.floor(l);v=n.childOffsets[v]+D,l%=1,f%=1}return{min:this.exaggeration()*n.minimums[v],max:this.exaggeration()*n.maximums[v]}}getMinElevationBelowMSL(){throw new Error("Pure virtual method called.")}raycast(r,e,n){throw new Error("Pure virtual method called.")}pointCoordinate(r){throw new Error("Pure virtual method called.")}_source(){throw new Error("Pure virtual method called.")}isUsingMockSource(){throw new Error("Pure virtual method called.")}exaggeration(){throw new Error("Pure virtual method called.")}findDEMTileFor(r){throw new Error("Pure virtual method called.")}get visibleDemTiles(){throw new Error("Getter must be implemented in subclass.")}getMinMaxForVisibleTiles(){const r=this.visibleDemTiles;if(r.length===0)return null;let e=!1,n=Number.MAX_VALUE,o=Number.MIN_VALUE;for(const u of r){const l=this.getMinMaxForTile(u.tileID);l&&(n=Math.min(n,l.min),o=Math.max(o,l.max),e=!0)}return e?{min:n,max:o}:null}},i.cK=dv,i.cL=ji,i.cM=function(r,e){return[Math.pow(r[0],2.2)*e,Math.pow(r[1],2.2)*e,Math.pow(r[2],2.2)*e]},i.cN=Ur,i.cO=le,i.cP=re,i.cQ=256,i.cR=function(r,e){const n=[0,0,0],o=cn(is(e.canonical));return De.vec3.transformMat4(n,n,o),De.vec3.transformMat4(n,n,r),n},i.cS=r=>({u_camera_to_center_distance:new Nn(r),u_extrude_scale:new mf(r),u_device_pixel_ratio:new Nn(r),u_matrix:new Ch(r),u_inv_rot_matrix:new Ch(r),u_merc_center:new ko(r),u_tile_id:new ff(r),u_zoom_transition:new Nn(r),u_up_dir:new ff(r),u_emissive_strength:new Nn(r)}),i.cT=r=>({u_matrix:new Ch(r),u_pixels_to_tile_units:new mf(r),u_device_pixel_ratio:new Nn(r),u_width_scale:new Nn(r),u_floor_width_scale:new Nn(r),u_units_to_pixels:new ko(r),u_dash_image:new Tc(r),u_gradient_image:new Tc(r),u_image_height:new Nn(r),u_texsize:new ko(r),u_tile_units_to_pixels:new Nn(r),u_alpha_discard_threshold:new Nn(r),u_trim_offset:new ko(r),u_trim_fade_range:new ko(r),u_trim_color:new Ah(r),u_emissive_strength:new Nn(r),u_zbias_factor:new Nn(r),u_tile_to_meter:new Nn(r)}),i.cU=r=>({u_matrix:new Ch(r),u_texsize:new ko(r),u_pixels_to_tile_units:new mf(r),u_device_pixel_ratio:new Nn(r),u_width_scale:new Nn(r),u_floor_width_scale:new Nn(r),u_image:new Tc(r),u_units_to_pixels:new ko(r),u_tile_units_to_pixels:new Nn(r),u_alpha_discard_threshold:new Nn(r),u_trim_offset:new ko(r),u_trim_fade_range:new ko(r),u_trim_color:new Ah(r),u_emissive_strength:new Nn(r),u_zbias_factor:new Nn(r),u_tile_to_meter:new Nn(r)}),i.cV=Eu,i.cW=sA,i.cX=rA,i.cY=Fu,i.cZ=(r,e,n,o,u,l)=>{const f=r.transform,v=f.projection.name==="globe";let S;if(l.paint.get("circle-pitch-alignment")==="map")if(v){const x=Ur(f.zoom,e.canonical)*f._pixelsPerMercatorPixel;S=Float32Array.from([x,0,0,x])}else S=f.calculatePixelsToTileUnitsMatrix(n);else S=new Float32Array([f.pixelsToGLUnits[0],0,0,f.pixelsToGLUnits[1]]);const D={u_camera_to_center_distance:r.transform.getCameraToCenterDistance(f.projection),u_matrix:r.translatePosMatrix(e.projMatrix,n,l.paint.get("circle-translate"),l.paint.get("circle-translate-anchor")),u_device_pixel_ratio:Ct.devicePixelRatio,u_extrude_scale:S,u_inv_rot_matrix:zh,u_merc_center:[0,0],u_tile_id:[0,0,0],u_zoom_transition:0,u_up_dir:[0,0,0],u_emissive_strength:l.paint.get("circle-emissive-strength")};if(v){D.u_inv_rot_matrix=o,D.u_merc_center=u,D.u_tile_id=[e.canonical.x,e.canonical.y,1<<e.canonical.z],D.u_zoom_transition=_r(f.zoom);const x=u[0]*Tt,P=u[1]*Tt;D.u_up_dir=f.projection.upVector(new nt(0,0,0),x,P)}return D},i.c_=u1,i.ca=Ah,i.cb=function(r,e,n){const o=Math.sqrt(r*r+e*e+n*n),u=o>0?Math.acos(n/o)*Xs:0;let l=r!==0||e!==0?Math.atan2(-e,-r)*Xs+90:0;return l<0&&(l+=360),[o,l,u]},i.cc=s,i.cd=Jt,i.ce=Zi,i.cf=function(r){return[Math.pow(r[0],1/2.2),Math.pow(r[1],1/2.2),Math.pow(r[2],1/2.2)]},i.cg=function(r,e){return r.readFields(YA,{icons:[]},e)},i.ch=function(r){return r({pluginStatus:br,pluginURL:Ka}),gc.on("pluginStateChange",r),r},i.ci=Hm,i.cj=Gu,i.ck=Fg,i.cl=tn,i.cm=mh,i.cn=Kt,i.co=$r,i.cp=Ks,i.cq=function(r){const e=r.indexOf(Lo);return e>=0?r.slice(0,e):r},i.cr=function(r){return r.indexOf(Lo)>=0},i.cs=function(r){const e=r.indexOf(Lo);return e>=0?r.slice(e+1):""},i.ct=function(r){const e=[],n=r.id;return n===void 0&&e.push({message:`layers.${n}: missing required property "id"`}),r.render===void 0&&e.push({message:`layers.${n}: missing required method "render"`}),r.renderingMode&&r.renderingMode!=="2d"&&r.renderingMode!=="3d"&&e.push({message:`layers.${n}: property "renderingMode" must be either "2d" or "3d"`}),e},i.cu=function(r,e,n,o){return r.type==="custom"?new OA(r,e):new WA[r.type](r,e,n,o)},i.cv=ro,i.cw=class extends ed{constructor(r,e){super(r._vectorTileFeature,r._z,r._x,r._y,r.id),r.state&&(this.state={...r.state}),this.target=e.target,this.namespace=e.namespace,e.properties&&(this.properties=e.properties),this.target&&("featuresetId"in this.target&&!this.target.importId||"layerId"in this.target)&&(this.source=r.source,this.sourceLayer=r.sourceLayer,this.layer=r.layer)}toJSON(){const r=super.toJSON();return r.target=this.target,r.namespace=this.namespace,r}},i.cx=gc,i.cy=vn,i.cz=om,i.d=function(r){return ge.API_TILEJSON_REGEX.test(r)},i.d$=Pr,i.d0=(r,e,n,o,u,l,f,v,S)=>{const D=r.transform,x=D.calculatePixelsToTileUnitsMatrix(e),P=n.paint.get("line-trim-color-use-theme").constantOr("default")==="none",I=D.pitch<15?l1(.07,.7,si((14-D.zoom)/5,0,1)):.07;return{u_matrix:h1(r,e,n,o),u_pixels_to_tile_units:x,u_device_pixel_ratio:l,u_width_scale:f,u_floor_width_scale:v,u_units_to_pixels:[1/D.pixelsToGLUnits[0],1/D.pixelsToGLUnits[1]],u_dash_image:0,u_gradient_image:1,u_image_height:u,u_texsize:d1(n)&&e.lineAtlasTexture?e.lineAtlasTexture.size:[0,0],u_tile_units_to_pixels:c1(e,r.transform),u_alpha_discard_threshold:0,u_trim_offset:S,u_trim_fade_range:n.paint.get("line-trim-fade-range"),u_trim_color:n.paint.get("line-trim-color").toRenderColor(P?null:n.lut).toArray01(),u_emissive_strength:n.paint.get("line-emissive-strength"),u_zbias_factor:I,u_tile_to_meter:s(e.tileID.canonical,0)}},i.d1=bo,i.d2=gf,i.d3=Jv,i.d4=Bt,i.d5=vm,i.d6=Cc,i.d7=450,i.d8=7,i.d9=RA,i.dA=Wr,i.dB=t,i.dC=rl,i.dD=function([r,e,n]){const o=Math.hypot(r,e,n),u=Math.atan2(r,n),l=.5*Math.PI-Math.acos(-e/o);return new Ui(kn(u),kn(l))},i.dE=Yg,i.dF=function(r){const e=r.navigator?r.navigator.userAgent:null;return!!function(n){if(zs==null){const o=n.navigator?n.navigator.userAgent:null;zs=!!n.safari||!(!o||!(/\b(iPad|iPhone|iPod)\b/.test(o)||o.match("Safari")&&!o.match("Chrome")))}return zs}(r)&&e&&(e.match("Version/15.4")||e.match("Version/15.5")||e.match(/CPU (OS|iPhone OS) (15_4|15_5) like Mac OS X/))},i.dG=function(r,e){li=r,ri=e},i.dH=jr,i.dI=Oo,i.dJ=function(r){const e=[0,0,0],n=De.mat4.identity(new Float64Array(16));return De.mat4.multiply(n,r.pixelMatrix,r.globeMatrix),De.vec3.transformMat4(e,e,n),new Et(e[0],e[1])},i.dK=function(r,e,n=!1){if(br===Yd||br===na||br===Kd)throw new Error("setRTLTextPlugin cannot be called multiple times.");Ka=Ct.resolveURL(r),br=Yd,Jd=e,_u(),n||Zp()},i.dL=gu,i.dM=function(){Hm().acquire(iy)},i.dN=function(){const r=Vf;r&&(r.isPreloaded()&&r.numActive()===1?(r.release(iy),Vf=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},i.dO=Fh,i.dP=function(r){const e=$i();if(!e)return;const n=e.delete(di);r&&n.catch(r).then(()=>r())},i.dQ=Nf,i.dR=nw,i.dS=function(r){fy=Ct.resolveURL(r),Qu||(Qu=new $u(Hm(),new Wo)),Qu.broadcast("setDracoUrl",fy)},i.dT=sw,i.dU=function(r){Ju=Ct.resolveURL(r),Qu||(Qu=new $u(Hm(),new Wo)),Qu.broadcast("setMeshoptUrl",Ju)},i.dV=Ft,i.dW=Ac,i.dX=La,i.dY=fw,i.dZ=pw,i.d_=s1,i.da=qi,i.db=uf,i.dc=256,i.dd=tr,i.de=Sa,i.df=Br,i.dg=Au,i.dh=function(r,e,n,o,u){return si((r-e)/(n-e)*(u-o)+o,o,u)},i.di=ts,i.dj=c,i.dk=class{constructor(r,e,n,o){this.context=r,this.format=o,this.size=n,this.texture=r.gl.createTexture();const[u,l,f]=this.size,{gl:v}=r;v.bindTexture(v.TEXTURE_3D,this.texture),r.pixelStoreUnpackFlipY.set(!1),r.pixelStoreUnpack.set(1),r.pixelStoreUnpackPremultiplyAlpha.set(!1),v.texImage3D(v.TEXTURE_3D,0,this.format,u,l,f,0,qg(this.format),Wg(this.format),e.data)}bind(r,e){const{context:n}=this,{gl:o}=n;o.bindTexture(o.TEXTURE_3D,this.texture),r!==this.minFilter&&(o.texParameteri(o.TEXTURE_3D,o.TEXTURE_MAG_FILTER,r),o.texParameteri(o.TEXTURE_3D,o.TEXTURE_MIN_FILTER,r),this.minFilter=r),e!==this.wrapS&&(o.texParameteri(o.TEXTURE_3D,o.TEXTURE_WRAP_S,e),o.texParameteri(o.TEXTURE_3D,o.TEXTURE_WRAP_T,e),this.wrapS=e)}destroy(){const{gl:r}=this.context;r.deleteTexture(this.texture),this.texture=null}},i.dl=Kg,i.dm=[1,1,1],i.dn=Wu,i.dp=qu,i.dq=il,i.dr=Bl,i.ds=Pc,i.dt=cf,i.du=lf,i.dv=class{constructor(){this._updateTime=0,this._sourceIds=[],this._activeRegions=[],this._prevRegions=[],this._globalClipBounds={min:new Et(1/0,1/0),max:new Et(-1/0,-1/0)}}clear(){this._activeRegions.length>0&&++this._updateTime,this._activeRegions=[],this._prevRegions=[]}get updateTime(){return this._updateTime}getReplacementRegionsForTile(r,e=!1){const n=Rv(new Et(0,0),new Et(Tt,Tt),r),o=[];if(e&&!wg(n,this._globalClipBounds))return o;for(const u of this._activeRegions){if(u.hiddenByOverlap||!wg(n,u))continue;const l=LP(u.min,u.max,r);o.push({min:l.min,max:l.max,sourceId:this._sourceIds[u.priority],footprint:u.footprint,footprintTileId:u.tileId,order:u.order,clipMask:u.clipMask,clipScope:u.clipScope})}return o}setSources(r){this._setSources(r.map(e=>({getSourceId:()=>e.cache.id,getFootprints:()=>{const n=[];for(const o of e.cache.getVisibleCoordinates()){const u=e.cache.getTile(o).buckets[e.layer];u&&u.updateFootprints(o.toUnwrapped(),n)}return n},getOrder:()=>e.order,getClipMask:()=>e.clipMask,getClipScope:()=>e.clipScope})))}_addSource(r){const e=r.getFootprints();if(e.length===0)return;const n=r.getOrder(),o=r.getClipMask(),u=r.getClipScope();for(const l of e){if(!l.footprint)continue;const f=Rv(l.footprint.min,l.footprint.max,l.id);this._activeRegions.push({min:f.min,max:f.max,hiddenByOverlap:!1,priority:this._sourceIds.length,tileId:l.id,footprint:l.footprint,order:n,clipMask:o,clipScope:u})}this._sourceIds.push(r.getSourceId())}_computeReplacement(){this._activeRegions.sort((e,n)=>e.priority-n.priority||ym(e.min,n.min)||ym(e.max,n.max)||e.order-n.order||e.clipMask-n.clipMask||function(o,u){const l=(f,v)=>f+v;return o.length-u.length||o.reduce(l,"").localeCompare(u.reduce(l,""))}(e.clipScope,n.clipScope));let r=this._activeRegions.length!==this._prevRegions.length;if(!r){let e=0;for(;!r&&e!==this._activeRegions.length;){const n=this._activeRegions[e],o=this._prevRegions[e];r=n.priority!==o.priority||!kv(n,o)||n.order!==o.order||n.clipMask!==o.clipMask||!$s(n.clipScope,o.clipScope),++e}}if(r){++this._updateTime;for(const n of this._activeRegions)n.order!==gm&&(this._globalClipBounds.min.x=Math.min(this._globalClipBounds.min.x,n.min.x),this._globalClipBounds.min.y=Math.min(this._globalClipBounds.min.y,n.min.y),this._globalClipBounds.max.x=Math.max(this._globalClipBounds.max.x,n.max.x),this._globalClipBounds.max.y=Math.max(this._globalClipBounds.max.y,n.max.y));const e=n=>{const o=this._activeRegions;if(n>=o.length)return n;const u=o[n].priority;for(;n<o.length&&o[n].priority===u;)++n;return n};if(this._sourceIds.length>1){let n=0,o=e(n);for(;n!==o;){let u=n;const l=n;for(;u!==o;){const f=this._activeRegions[u];f.hiddenByOverlap=!1;for(let v=0;v<l;v++){const S=this._activeRegions[v];if(!S.hiddenByOverlap&&f.order===gm&&wg(f,S)&&(f.hiddenByOverlap=Fv(f.footprint,f.tileId,S.footprint,S.tileId),f.hiddenByOverlap))break}++u}n=o,o=e(n)}}}}_setSources(r){[this._prevRegions,this._activeRegions]=[this._activeRegions,[]],this._sourceIds=[];for(let e=r.length-1;e>=0;e--)this._addSource(r[e]);this._computeReplacement()}},i.dw=class{constructor(r){this._createGrid(r),this._createPoles(r)}destroy(){this._poleIndexBuffer.destroy(),this._gridBuffer.destroy(),this._gridIndexBuffer.destroy(),this._poleNorthVertexBuffer.destroy(),this._poleSouthVertexBuffer.destroy();for(const r of this._poleSegments)r.destroy();for(const r of this._gridSegments)r.withSkirts.destroy(),r.withoutSkirts.destroy()}_fillGridMeshWithLods(r,e){const n=new Do,o=new qs,u=[],l=r+1+2,f=e[0]+1,v=e[0]+1+(1+e.length),S=(D,x,P)=>{let I=D===l-1?D-2:D===0?D:D-1;return I+=P?24575:0,[I,x]};for(let D=0;D<l;++D)n.emplaceBack(...S(D,0,!0));for(let D=0;D<f;++D)for(let x=0;x<l;++x)n.emplaceBack(...S(x,D,(x===0||x===l-1)&&!0));for(let D=0;D<e.length;++D){const x=e[D];for(let P=0;P<l;++P)n.emplaceBack(...S(P,x,!0))}for(let D=0;D<e.length;++D){const x=o.length,P=e[D]+1+2,I=new qs;for(let k=0;k<P-1;k++){const V=k===P-2,U=V?l*(v-e.length+D-k):l;for(let q=0;q<l-1;q++){const $=k*l+q;k===0||V||q===0||q===l-2?(I.emplaceBack($+1,$,$+U),I.emplaceBack($+U,$+U+1,$+1)):(o.emplaceBack($+1,$,$+U),o.emplaceBack($+U,$+U+1,$+1))}}const M=Wn.simpleSegment(0,x,n.length,o.length-x);for(let k=0;k<I.uint16.length;k+=3)o.emplaceBack(I.uint16[k],I.uint16[k+1],I.uint16[k+2]);const C=Wn.simpleSegment(0,x,n.length,o.length-x);u.push({withoutSkirts:M,withSkirts:C})}return{vertices:n,indices:o,segments:u}}_createGrid(r){const e=this._fillGridMeshWithLods(Ul,Ou);this._gridSegments=e.segments,this._gridBuffer=r.createVertexBuffer(e.vertices,ai.members),this._gridIndexBuffer=r.createIndexBuffer(e.indices,!0)}_createPoles(r){const e=new qs;for(let f=0;f<=Ul;f++)e.emplaceBack(0,f+1,f+2);this._poleIndexBuffer=r.createIndexBuffer(e,!0);const n=new Br,o=new Br,u=new Br,l=new Br;this._poleSegments=[];for(let f=0,v=0;f<Ru;f++){const S=360/(1<<f);n.emplaceBack(0,-fr,0,.5,0),o.emplaceBack(0,-fr,0,.5,1),u.emplaceBack(0,-fr,0,.5,.5),l.emplaceBack(0,-fr,0,.5,.5);for(let D=0;D<=Ul;D++){let x=D/Ul,P=0;const I=ei(0,S,x),[M,C,k]=Ec(ra,jl,I,fr);n.emplaceBack(M,C,k,x,P),o.emplaceBack(M,C,k,x,1-P);const V=vi(I);x=.5+.5*Math.sin(V),P=.5+.5*Math.cos(V),u.emplaceBack(M,C,k,x,P),l.emplaceBack(M,C,k,x,1-P)}this._poleSegments.push(Wn.simpleSegment(v,0,66,64)),v+=66}this._poleNorthVertexBuffer=r.createVertexBuffer(n,$t,!1),this._poleSouthVertexBuffer=r.createVertexBuffer(o,$t,!1),this._texturedPoleNorthVertexBuffer=r.createVertexBuffer(u,$t,!1),this._texturedPoleSouthVertexBuffer=r.createVertexBuffer(l,$t,!1)}getGridBuffers(r,e){return[this._gridBuffer,this._gridIndexBuffer,e?this._gridSegments[r].withSkirts:this._gridSegments[r].withoutSkirts]}getPoleBuffers(r,e){return[e?this._texturedPoleNorthVertexBuffer:this._poleNorthVertexBuffer,e?this._texturedPoleSouthVertexBuffer:this._poleSouthVertexBuffer,this._poleIndexBuffer,this._poleSegments[r]]}},i.dx=gm,i.dy=qr,i.dz=function(){return!!document.fullscreenElement||!!document.webkitFullscreenElement},i.e=ge,i.e0=or,i.e1=D1,i.e2=function(r,e,n,o,u,l,f,v,S,D,x=1,P,I){r.createArrays(),r.tilePixelRatio=Tt/(512*r.overscaling),r.compareText={},r.iconsNeedLinear=!1;const M=r.layers[0].layout,C=r.layers[0]._unevaluatedLayout._values,k={};k.scaleFactor=x,k.textSizeScaleRange=M.get("text-size-scale-range"),k.iconSizeScaleRange=M.get("icon-size-scale-range");const[V,U]=k.textSizeScaleRange,[q,$]=k.iconSizeScaleRange;if(k.textScaleFactor=si(k.scaleFactor,V,U),k.iconScaleFactor=si(k.scaleFactor,q,$),r.textSizeData.kind==="composite"){const{minZoom:ie,maxZoom:fe}=r.textSizeData;k.compositeTextSizes=[C["text-size"].possiblyEvaluate(new Tn(ie),v),C["text-size"].possiblyEvaluate(new Tn(fe),v)]}if(r.iconSizeData.kind==="composite"){const{minZoom:ie,maxZoom:fe}=r.iconSizeData;k.compositeIconSizes=[C["icon-size"].possiblyEvaluate(new Tn(ie),v),C["icon-size"].possiblyEvaluate(new Tn(fe),v)]}k.layoutTextSize=C["text-size"].possiblyEvaluate(new Tn(S+1),v),k.layoutIconSize=C["icon-size"].possiblyEvaluate(new Tn(S+1),v),k.textMaxSize=C["text-size"].possiblyEvaluate(new Tn(18),v);const H=M.get("text-rotation-alignment")==="map"&&M.get("symbol-placement")!=="point",K=M.get("text-size");let Q=!1;for(const ie of r.features)if(ie.icon&&ie.icon.nameSecondary){Q=!0;break}for(const ie of r.features){const fe=M.get("text-font").evaluate(ie,{},v).join(","),de=K.evaluate(ie,{},v)*k.textScaleFactor,ue=k.layoutTextSize.evaluate(ie,{},v)*k.textScaleFactor,Se=(k.layoutIconSize.evaluate(ie,{},v),{horizontal:{},vertical:void 0}),me=ie.text;let Ee,ze=[0,0];if(me){const Ue=me.toString(),Fe=M.get("text-letter-spacing").evaluate(ie,{},v)*ir,et=M.get("text-line-height").evaluate(ie,{},v)*ir,dt=Up(Ue)?Fe:0,tt=M.get("text-anchor").evaluate(ie,{},v),Mt=M.get("text-variable-anchor");if(!Mt){const St=M.get("text-radial-offset").evaluate(ie,{},v);ze=St?N1(tt,[St*ir,Bg]):M.get("text-offset").evaluate(ie,{},v).map(Nt=>Nt*ir)}let wt=H?"center":M.get("text-justify").evaluate(ie,{},v);const At=M.get("symbol-placement")==="point",rt=At?M.get("text-max-width").evaluate(ie,{},v)*ir:1/0,Ut=St=>{r.allowVerticalPlacement&&Wd(Ue)&&(Se.vertical=kg(me,e,n,u,fe,rt,et,tt,St,dt,ze,Fo.vertical,!0,ue,de))};if(!H&&Mt){const St=wt==="auto"?Mt.map(Qt=>Ng(Qt)):[wt];let Nt=!1;for(let Qt=0;Qt<St.length;Qt++){const pi=St[Qt];if(!Se.horizontal[pi])if(Nt)Se.horizontal[pi]=Se.horizontal[0];else{const gi=kg(me,e,n,u,fe,rt,et,"center",pi,dt,ze,Fo.horizontal,!1,ue,de);gi&&(Se.horizontal[pi]=gi,Nt=gi.positionedLines.length===1)}}Ut("left")}else{if(wt==="auto"&&(wt=Ng(tt)),At||M.get("text-writing-mode").indexOf("horizontal")>=0||!Wd(Ue)){const St=kg(me,e,n,u,fe,rt,et,tt,wt,dt,ze,Fo.horizontal,!1,ue,de);St&&(Se.horizontal[wt]=St)}Ut(At?"left":wt)}}let Ie=!1,Re=!1;if(ie.icon&&ie.icon.namePrimary){const Ue=bm(r.iconSizeData,C["icon-size"],v,r.zoom,ie)*k.iconScaleFactor*P,Fe=ie.icon.getPrimary().scaleSelf(Ue).serialize(),et=o[Fe];et&&(Ee=mA(u[Fe],ie.icon.nameSecondary?u[ie.icon.getSecondary().scaleSelf(Ue).serialize()]:void 0,M.get("icon-offset").evaluate(ie,{},v),M.get("icon-anchor").evaluate(ie,{},v)),Ie=et.sdf,Re=et.usvg,r.sdfIcons===void 0?r.sdfIcons=et.sdf:r.sdfIcons!==et.sdf&&mi("Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer"),(et.pixelRatio!==r.pixelRatio||M.get("icon-rotate").constantOr(1)!==0)&&(r.iconsNeedLinear=!0))}const Ve=U1(Se.horizontal)||Se.vertical;r.iconsInText||(r.iconsInText=!!Ve&&Ve.iconsInText),(Ve||Ee)&&wA(r,ie,Se,Ee,o,k,ue,0,ze,Ie,Re,f,v,D,I,Q)}l&&r.generateCollisionDebugBuffers(S,r.collisionBoxArray,k.textScaleFactor)},i.e3=Vu,i.e4=Km,i.e5=Zr,i.e6=Cv,i.e7=y1,i.e8=O,i.e9=function(r){let e=0;if(new Uint32Array(r,0,1)[0]!==ow){const n=new Uint32Array(r,0,7),[,,o,u,l,f]=n;e=n.byteLength+u+l+f+l,(o!==r.byteLength||e>=r.byteLength)&&mi("Invalid b3dm header information.")}return hw(r,e)},i.ea=function(r,e){const n=dw(r);for(const o of n){for(const u of o.meshes)KC(u);o.lights&&(o.lightMeshIndex=o.meshes.length,o.meshes.push(JC(o.lights,e)))}return n},i.eb=Zm,i.ec=Ab,i.ed=fo,i.ee=function(r){Hi(),Ni!=null&&Ni.then(e=>{e.keys().then(n=>{for(let o=0;o<n.length-r;o++)e.delete(n[o])})})},i.f=function(r){return r.indexOf("mapbox:")===0},i.g=function(r,e){return vn(An(r,{method:"GET"}),e)},i.h=Le,i.i=function(r){return ge.API_STYLE_REGEX.test(r)&&!Ce(r)},i.j=function(r){return decodeURIComponent(atob(r).split("").map(e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)).join(""))},i.k=function(r){return btoa(encodeURIComponent(r).replace(/%([0-9A-F]{2})/g,(e,n)=>String.fromCharCode(+("0x"+n))))},i.l=An,i.m=Gs,i.n=function(r,e){return vn(An(r,{type:"json"}),e)},i.o=Hn,i.p=function(r,e){return vn(An(r,{method:"POST"}),e)},i.q=Ct,i.r=gr,i.s=function(r){try{const e=self[r];return e.setItem("_mapbox_test_",1),e.removeItem("_mapbox_test_"),!0}catch{return!1}},i.t=mt,i.u=function(){return function r(e){return e?(e^Math.random()*(16>>e/4)).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,r)}()},i.v=function(r){return!!r&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(r)},i.w=mi,i.x=function(){return ny||(ny=new Fh),ny},i.y=zr,i.z=Lr}),b(["./shared"],function(i){function O(Ke){const re=Ke?Ke.url.toString():void 0;return re?performance.getEntriesByName(re):[]}function j(Ke){if(typeof Ke=="number"||typeof Ke=="boolean"||typeof Ke=="string"||Ke==null)return JSON.stringify(Ke);if(Array.isArray(Ke)){let le="[";for(const ge of Ke)le+=`${j(ge)},`;return`${le}]`}let re="{";for(const le of Object.keys(Ke).sort())re+=`${le}:${j(Ke[le])},`;return`${re}}`}function Y(Ke){let re="";for(const le of i.bm)re+=`/${j(Ke[le])}`;return re}class J{constructor(re){this.keyCache={},this._layers={},this._layerConfigs={},re&&this.replace(re)}replace(re,le){this._layerConfigs={},this._layers={},this.update(re,[],le)}update(re,le,ge){this._options=ge;for(const Ce of re)this._layerConfigs[Ce.id]=Ce,(this._layers[Ce.id]=i.cu(Ce,this.scope,null,this._options)).compileFilter(ge),this.keyCache[Ce.id]&&delete this.keyCache[Ce.id];for(const Ce of le)delete this.keyCache[Ce],delete this._layerConfigs[Ce],delete this._layers[Ce];this.familiesBySource={};const Le=function(Ce,Be){const qe={};for(let Ye=0;Ye<Ce.length;Ye++){const Qe=Ce[Ye];let it=Be&&Be[Qe.id];!it&&(it=Y(Qe),Qe.type==="line"&&Qe.paint)&&function Ct(It){return typeof It=="string"&&It==="line-progress"||(Array.isArray(It)?It.some(Ct):!(!It||typeof It!="object")&&Object.values(It).some(Ct))}(Qe.paint["line-width"])&&(it+=`/${j(Qe.paint["line-width"])}`),Be&&(Be[Qe.id]=it);let mt=qe[it];mt||(mt=qe[it]=[]),mt.push(Qe)}const Pe=[];for(const Ye in qe)Pe.push(qe[Ye]);return Pe}(i.bj(this._layerConfigs),this.keyCache);for(const Ce of Le){const Be=Ce.map(mt=>this._layers[mt.id]),qe=Be[0];if(qe.visibility==="none")continue;const Pe=qe.source||"";let Ye=this.familiesBySource[Pe];Ye||(Ye=this.familiesBySource[Pe]={});const Qe=qe.sourceLayer||"_geojsonTileLayer";let it=Ye[Qe];it||(it=Ye[Qe]=[]),it.push(Be)}}}const ae=1*i.dX;class ce{constructor(re){const le={},ge=[];for(const qe in re){const Pe=re[qe],Ye=le[qe]={};for(const Qe in Pe.glyphs){const it=Pe.glyphs[+Qe];if(!it||it.bitmap.width===0||it.bitmap.height===0)continue;const mt=it.metrics.localGlyph?ae:1,Ct={x:0,y:0,w:it.bitmap.width+2*mt,h:it.bitmap.height+2*mt};ge.push(Ct),Ye[Qe]=Ct}}const{w:Le,h:Ce}=i.C(ge),Be=new i.dW({width:Le||1,height:Ce||1});for(const qe in re){const Pe=re[qe];for(const Ye in Pe.glyphs){const Qe=Pe.glyphs[+Ye];if(!Qe||Qe.bitmap.width===0||Qe.bitmap.height===0)continue;const it=le[qe][Ye],mt=Qe.metrics.localGlyph?ae:1;i.dW.copy(Qe.bitmap,Be,{x:0,y:0},{x:it.x+mt,y:it.y+mt},Qe.bitmap)}}this.image=Be,this.positions=le}}i.dV(ce,"GlyphAtlas");class Te{constructor(re){this.tileID=new i.aG(re.tileID.overscaledZ,re.tileID.wrap,re.tileID.canonical.z,re.tileID.canonical.x,re.tileID.canonical.y),this.tileZoom=re.tileZoom,this.uid=re.uid,this.zoom=re.zoom,this.lut=re.lut,this.canonical=re.tileID.canonical,this.pixelRatio=re.pixelRatio,this.tileSize=re.tileSize,this.source=re.source,this.scope=re.scope,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=re.showCollisionBoxes,this.collectResourceTiming=!!re.request&&re.request.collectResourceTiming,this.promoteId=re.promoteId,this.isSymbolTile=re.isSymbolTile,this.tileTransform=i.aQ(re.tileID.canonical,re.projection),this.projection=re.projection,this.worldview=re.worldview,this.localizableLayerIds=re.localizableLayerIds,this.brightness=re.brightness,this.extraShadowCaster=!!re.extraShadowCaster,this.tessellationStep=re.tessellationStep,this.scaleFactor=re.scaleFactor}parse(re,le,ge,Le,Ce){this.status="parsing",this.data=re,this.collisionBoxArray=new i.aW;const Be=new i.dY(Object.keys(re.layers).sort()),qe=new i.dZ(this.tileID,this.promoteId);qe.bucketLayerIDs=[];const Pe={},Ye=new i.d_(256,256),Qe={featureIndex:qe,iconDependencies:{},patternDependencies:{},glyphDependencies:{},lineAtlas:Ye,availableImages:ge,brightness:this.brightness,scaleFactor:this.scaleFactor},it=le.familiesBySource[this.source];for(const ri in it){const Ki=re.layers[ri];if(!Ki)continue;let Ni=!1,Ei=!1,$i=!1;for(const Gs of it[ri])Gs[0].type==="symbol"?Ni=!0:Ei=!0,Gs[0].is3D()&&Gs[0].type!=="model"&&($i=!0);if(this.extraShadowCaster&&!$i||this.isSymbolTile===!0&&!Ni||this.isSymbolTile===!1&&!Ei)continue;Ki.version===1&&i.w(`Vector tile source "${this.source}" layer "${ri}" does not use vector tile spec v2 and therefore may have some rendering errors.`);const Hi=Be.encode(ri),Xn=[];for(let Gs=0,ms=0;Gs<Ki.length;Gs++){const vs=Ki.feature(Gs),ha=qe.getId(vs,ri);if(this.localizableLayerIds&&this.localizableLayerIds.has(ri)){const Cr=vs.properties?vs.properties.worldview:null;if(this.worldview&&typeof Cr=="string")if(Cr==="all")vs.properties.$localized=!0;else{if(!Cr.split(",").includes(this.worldview))continue;vs.properties.$localized=!0,vs.properties.worldview=this.worldview}}Xn.push({feature:vs,id:ha,index:ms,sourceLayerIndex:Hi}),ms++}for(const Gs of it[ri]){const ms=Gs[0];(!this.extraShadowCaster||ms.is3D()&&ms.type!=="model")&&(this.isSymbolTile!==void 0&&ms.type==="symbol"!==this.isSymbolTile||ms.minzoom&&this.zoom<Math.floor(ms.minzoom)||ms.maxzoom&&this.zoom>=ms.maxzoom||ms.visibility!=="none"&&(be(Gs,this.zoom,Qe.brightness,ge),(Pe[ms.id]=ms.createBucket({index:qe.bucketLayerIDs.length,layers:Gs,zoom:this.zoom,lut:this.lut,canonical:this.canonical,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:Hi,sourceID:this.source,projection:this.projection.spec,tessellationStep:this.tessellationStep})).populate(Xn,Qe,this.tileID.canonical,this.tileTransform),qe.bucketLayerIDs.push(Gs.map(vs=>i.aC(vs.id,vs.scope)))))}}let mt,Ct,It,Kt;Ye.trim();const di={type:"maybePrepare",isSymbolTile:this.isSymbolTile,zoom:this.zoom},li=()=>{if(mt)return this.status="done",Ce(mt);if(this.extraShadowCaster)this.status="done",Ce(null,{buckets:i.bj(Pe).filter(ri=>!ri.isEmpty()),featureIndex:qe,collisionBoxArray:null,glyphAtlasImage:null,lineAtlas:null,imageAtlas:null,brightness:Qe.brightness,glyphMap:null,iconMap:null,glyphPositions:null});else if(Ct&&It&&Kt){const ri=new ce(Ct),Ki=new i.e1(It,Kt,this.lut);for(const Ni in Pe){const Ei=Pe[Ni];Ei instanceof i.aX?(be(Ei.layers,this.zoom,Qe.brightness,ge),i.e2(Ei,Ct,ri.positions,It,Ki.iconPositions,this.showCollisionBoxes,ge,this.tileID.canonical,this.tileZoom,this.projection,this.scaleFactor,this.pixelRatio,this.brightness)):Ei.hasPattern&&(Ei instanceof i.b1||Ei instanceof i.b2||Ei instanceof i.d5)&&(be(Ei.layers,this.zoom,Qe.brightness,ge),Ei.addFeatures(Qe,this.tileID.canonical,Ki.patternPositions,ge,this.tileTransform,this.brightness))}this.status="done",Ce(null,{buckets:i.bj(Pe).filter(Ni=>!Ni.isEmpty()),featureIndex:qe,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:ri.image,lineAtlas:Ye,imageAtlas:Ki,brightness:Qe.brightness})}};if(!this.extraShadowCaster){const ri=i.d$(Qe.glyphDependencies,Ei=>Object.keys(Ei).map(Number));Object.keys(ri).length?Le.send("getGlyphs",{uid:this.uid,stacks:ri,scope:this.scope},(Ei,$i)=>{mt||(mt=Ei,Ct=$i,li())},void 0,!1,di):Ct={};const Ki=Object.keys(Qe.iconDependencies);Ki.length?Le.send("getImages",{icons:Ki,source:this.source,scope:this.scope,tileID:this.tileID,type:"icons"},(Ei,$i)=>{if(mt)return;mt=Ei;const Hi={};Object.values($i).some(Xn=>Xn.usvg)?this.rasterize(Le,Hi,$i,Qe.iconDependencies,()=>{It=Hi,li()}):(this.fillImageMap(Hi,Qe.iconDependencies,$i),It=Hi,li())},void 0,!1,di):It={};const Ni=Object.keys(Qe.patternDependencies);Ni.length?Le.send("getImages",{icons:Ni,source:this.source,scope:this.scope,tileID:this.tileID,type:"patterns"},(Ei,$i)=>{if(!mt){mt=Ei;const Hi={};Object.values($i).some(Xn=>Xn.usvg)?this.rasterize(Le,Hi,$i,Qe.patternDependencies,()=>{Kt=Hi,li()}):(this.fillImageMap(Hi,Qe.patternDependencies,$i),Kt=Hi,li())}},void 0,!1,di):Kt={}}li()}fillImageMap(re,le,ge){for(const Le in ge){const Ce=le[Le]||[];for(const Be of Ce)ge[Be.id].usvg||(re[Be.serialize()]=ge[Be.id])}}getImageTaskQueue(re,le,ge){const Le={};for(const Ce in le){const Be=ge[Ce]||[];for(const qe of Be){const Pe=qe.serialize();le[qe.id].usvg?Le[Pe]||(Le[Pe]=qe):re[Pe]=le[qe.id]}}return Le}rasterize(re,le,ge,Le,Ce){const Be=this.getImageTaskQueue(le,ge,Le);this.rasterizeTask=re.send("rasterizeImages",{scope:this.scope,imageTasks:Be},(qe,Pe)=>{if(!qe)for(const Ye in Pe){const{id:Qe}=i.e0.deserializeFromString(Ye);le[Ye]=Object.assign({},ge[Qe],{data:Pe[Ye]})}Ce()})}cancelRasterize(){this.rasterizeTask&&this.rasterizeTask.cancel()}}function be(Ke,re,le,ge){const Le=new i.a8(re,{brightness:le});for(const Ce of Ke)Ce.recalculate(Le,ge)}class Ze extends i.E{constructor(re,le,ge,Le,Ce,Be){super(),this.actor=re,this.layerIndex=le,this.availableImages=ge,this.loadVectorData=Ce||i.aD,this.loading={},this.loaded={},this.deduped=new i.aB(re.scheduler),this.isSpriteLoaded=Le,this.scheduler=re.scheduler,this.brightness=Be}loadTile(re,le){const ge=re.uid,Le=re&&re.request,Ce=Le&&Le.collectResourceTiming,Be=this.loading[ge]=new Te(re);Be.abort=this.loadVectorData(re,(qe,Pe)=>{const Ye=!this.loading[ge];if(delete this.loading[ge],Be.cancelRasterize(),Ye||qe||!Pe)return Be.status="done",Ye||(this.loaded[ge]=Be),le(qe);const Qe=Pe.rawData,it={};Pe.expires&&(it.expires=Pe.expires),Pe.cacheControl&&(it.cacheControl=Pe.cacheControl),Be.vectorTile=Pe.vectorTile||new i.e3.VectorTile(new i.bh(Qe));const mt=()=>{Be.parse(Be.vectorTile,this.layerIndex,this.availableImages,this.actor,(Ct,It)=>{if(Ct||!It)return le(Ct);const Kt={};if(Ce){const di=O(Le);di.length>0&&(Kt.resourceTiming=JSON.parse(JSON.stringify(di)))}le(null,i.l({rawTileData:Qe.slice(0)},It,it,Kt))})};this.isSpriteLoaded?mt():this.once("isSpriteLoaded",()=>{this.scheduler?this.scheduler.add(mt,{type:"parseTile",isSymbolTile:re.isSymbolTile,zoom:re.tileZoom}):mt()}),this.loaded=this.loaded||{},this.loaded[ge]=Be})}reloadTile(re,le){const ge=this.loaded,Le=re.uid;if(ge&&ge[Le]){const Ce=ge[Le];Ce.scaleFactor=re.scaleFactor,Ce.showCollisionBoxes=re.showCollisionBoxes,Ce.projection=re.projection,Ce.brightness=re.brightness,Ce.tileTransform=i.aQ(re.tileID.canonical,re.projection),Ce.extraShadowCaster=re.extraShadowCaster,Ce.lut=re.lut;const Be=(qe,Pe)=>{const Ye=Ce.reloadCallback;Ye&&(delete Ce.reloadCallback,Ce.parse(Ce.vectorTile,this.layerIndex,this.availableImages,this.actor,Ye)),le(qe,Pe)};Ce.status==="parsing"?Ce.reloadCallback=Be:Ce.status==="done"&&(Ce.vectorTile?Ce.parse(Ce.vectorTile,this.layerIndex,this.availableImages,this.actor,Be):Be())}else le(null,void 0)}abortTile(re,le){const ge=re.uid,Le=this.loading[ge];Le&&(Le.abort&&Le.abort(),delete this.loading[ge]),le()}removeTile(re,le){const ge=this.loaded,Le=re.uid;ge&&ge[Le]&&delete ge[Le],le()}}class je{loadTile(re,le){const{uid:ge,encoding:Le,rawImageData:Ce,padding:Be}=re,qe=ImageBitmap&&Ce instanceof ImageBitmap?this.getImageData(Ce,Be):Ce;le(null,new i.e4(ge,qe,Le,Be<1))}getImageData(re,le){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(re.width,re.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext("2d",{willReadFrequently:!0})),this.offscreenCanvas.width=re.width,this.offscreenCanvas.height=re.height,this.offscreenCanvasContext.drawImage(re,0,0,re.width,re.height);const ge=this.offscreenCanvasContext.getImageData(-le,-le,re.width+2*le,re.height+2*le);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),ge}}i.bg.setPbf(i.bh);class ot{decodeRasterArray({task:re,buffer:le},ge){i.bg.performDecoding(le,re).then(Le=>{ge(null,Le)},Le=>{ge(Le)})}}const vt=i.e3.VectorTileFeature.prototype.toGeoJSON;class ht{constructor(re){this._feature=re,this.extent=i.ag,this.type=re.type,this.properties=re.tags,"id"in re&&!isNaN(re.id)&&(this.id=parseInt(re.id,10))}loadGeometry(){if(this._feature.type===1){const re=[];for(const le of this._feature.geometry)re.push([new i.P(le[0],le[1])]);return re}{const re=[];for(const le of this._feature.geometry){const ge=[];for(const Le of le)ge.push(new i.P(Le[0],Le[1]));re.push(ge)}return re}}toGeoJSON(re,le,ge){return vt.call(this,re,le,ge)}}class gt{constructor(re){this.layers={_geojsonTileLayer:this},this.name="_geojsonTileLayer",this.extent=i.ag,this.length=re.length,this._features=re}feature(re){return new ht(this._features[re])}}const Vt=64/4096,pt=128;class Gt{constructor(){this.features=new Map}clear(){this.features.clear()}load(re=[],le){for(const ge of re){const Le=ge.id;if(Le==null)continue;let Ce=this.features.get(Le);Ce&&this.updateCache(Ce,le),ge.geometry?(Ce=kt(ge),this.updateCache(Ce,le),this.features.set(Le,Ce)):this.features.delete(Le),this.updateCache(Ce,le)}}updateCache(re,le){for(const{canonical:ge,uid:Le}of Object.values(le)){const{z:Ce,x:Be,y:qe}=ge;ui(re,Math.pow(2,Ce),Be,qe)&&delete le[Le]}}getTile(re,le,ge){const Le=Math.pow(2,re),Ce=[];for(const Be of this.features.values())ui(Be,Le,le,ge)&&Ce.push(hn(Be,Le,le,ge));return{features:Ce}}getFeatures(){return[...this.features.values()]}}function ui({minX:Ke,minY:re,maxX:le,maxY:ge},Le,Ce,Be){return Ke<(Ce+1+Vt)/Le&&re<(Be+1+Vt)/Le&&le>(Ce-Vt)/Le&&ge>(Be-Vt)/Le}function kt(Ke){const{id:re,geometry:le,properties:ge}=Ke;if(!le)return;if(le.type==="GeometryCollection")throw new Error("GeometryCollection not supported in dynamic mode.");const{type:Le,coordinates:Ce}=le,Be={id:re,type:1,geometry:[],tags:ge,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0},qe=Be.geometry;if(Le==="Point")Pt(Ce,qe,Be);else if(Le==="MultiPoint")for(const Pe of Ce)Pt(Pe,qe,Be);else if(Le==="LineString")Be.type=2,Mi(Ce,qe,Be);else if(Le==="MultiLineString")Be.type=2,Pn(Ce,qe,Be);else if(Le==="Polygon")Be.type=3,Pn(Ce,qe,Be,!0);else{if(Le!=="MultiPolygon")throw new Error("Input data is not a valid GeoJSON object.");Be.type=3;for(const Pe of Ce)Pn(Pe,qe,Be,!0)}return Be}function Pt([Ke,re],le,ge){const Le=i.at(Ke);let Ce=i.aA(re);Ce=Ce<0?0:Ce>1?1:Ce,le.push(Le,Ce),ge.minX=Math.min(ge.minX,Le),ge.minY=Math.min(ge.minY,Ce),ge.maxX=Math.max(ge.maxX,Le),ge.maxY=Math.max(ge.maxY,Ce)}function Mi(Ke,re,le,ge=!1,Le=!1){const Ce=[];for(const Be of Ke)Pt(Be,Ce,le);re.push(Ce),ge&&function(Be,qe){let Pe=0;for(let Ye=0,Qe=Be.length,it=Qe-2;Ye<Qe;it=Ye,Ye+=2)Pe+=(Be[Ye]-Be[it])*(Be[Ye+1]+Be[it+1]);if(Pe>0===qe)for(let Ye=0,Qe=Be.length;Ye<Qe/2;Ye+=2){const it=Be[Ye],mt=Be[Ye+1];Be[Ye]=Be[Qe-2-Ye],Be[Ye+1]=Be[Qe-1-Ye],Be[Qe-2-Ye]=it,Be[Qe-1-Ye]=mt}}(Ce,Le)}function Pn(Ke,re,le,ge=!1){for(let Le=0;Le<Ke.length;Le++)Mi(Ke[Le],re,le,ge,Le===0)}function hn(Ke,re,le,ge){const{id:Le,type:Ce,geometry:Be,tags:qe}=Ke,Pe=[];if(Ce===1)(function(Ye,Qe,it,mt,Ct){for(let It=0;It<Ye.length;It+=2){const Kt=Math.round(i.ag*(Ye[It+0]*Qe-it)),di=Math.round(i.ag*(Ye[It+1]*Qe-mt));Ct.push([Kt,di])}})(Be,re,le,ge,Pe);else for(const Ye of Be)Ht(Ye,re,le,ge,Pe);return{id:Le,type:Ce,geometry:Pe,tags:qe}}function Ht(Ke,re,le,ge,Le){const Ce=-pt,Be=i.ag+pt;let qe;for(let Pe=0;Pe<Ke.length-2;Pe+=2){let Ye=Math.round(i.ag*(Ke[Pe+0]*re-le)),Qe=Math.round(i.ag*(Ke[Pe+1]*re-ge)),it=Math.round(i.ag*(Ke[Pe+2]*re-le)),mt=Math.round(i.ag*(Ke[Pe+3]*re-ge));const Ct=it-Ye,It=mt-Qe;Ye<Ce&&it<Ce||(Ye<Ce?(Qe+=Math.round(It*((Ce-Ye)/Ct)),Ye=Ce):it<Ce&&(mt=Qe+Math.round(It*((Ce-Ye)/Ct)),it=Ce),Qe<Ce&&mt<Ce||(Qe<Ce?(Ye+=Math.round(Ct*((Ce-Qe)/It)),Qe=Ce):mt<Ce&&(it=Ye+Math.round(Ct*((Ce-Qe)/It)),mt=Ce),Ye>=Be&&it>=Be||(Ye>=Be?(Qe+=Math.round(It*((Be-Ye)/Ct)),Ye=Be):it>=Be&&(mt=Qe+Math.round(It*((Be-Ye)/Ct)),it=Be),Qe>=Be&&mt>=Be||(Qe>=Be?(Ye+=Math.round(Ct*((Be-Qe)/It)),Qe=Be):mt>=Be&&(it=Ye+Math.round(Ct*((Be-Qe)/It)),mt=Be),qe&&Ye===qe[qe.length-1][0]&&Qe===qe[qe.length-1][1]||(qe=[[Ye,Qe]],Le.push(qe)),qe.push([it,mt])))))}}var Si,Qi,fi,jt={exports:{}},ni=function(){if(fi)return jt.exports;fi=1;var Ke=i.e7(),re=function(){if(Qi)return Si;Qi=1;var Qe=i.e5(),it=i.e6().VectorTileFeature;function mt(It,Kt){this.options=Kt||{},this.features=It,this.length=It.length}function Ct(It,Kt){this.id=typeof It.id=="number"?It.id:void 0,this.type=It.type,this.rawGeometry=It.type===1?[It.geometry]:It.geometry,this.properties=It.tags,this.extent=Kt||4096}return Si=mt,mt.prototype.feature=function(It){return new Ct(this.features[It],this.options.extent)},Ct.prototype.loadGeometry=function(){var It=this.rawGeometry;this.geometry=[];for(var Kt=0;Kt<It.length;Kt++){for(var di=It[Kt],li=[],ri=0;ri<di.length;ri++)li.push(new Qe(di[ri][0],di[ri][1]));this.geometry.push(li)}return this.geometry},Ct.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var It=this.geometry,Kt=1/0,di=-1/0,li=1/0,ri=-1/0,Ki=0;Ki<It.length;Ki++)for(var Ni=It[Ki],Ei=0;Ei<Ni.length;Ei++){var $i=Ni[Ei];Kt=Math.min(Kt,$i.x),di=Math.max(di,$i.x),li=Math.min(li,$i.y),ri=Math.max(ri,$i.y)}return[Kt,li,di,ri]},Ct.prototype.toGeoJSON=it.prototype.toGeoJSON,Si}();function le(Qe){var it=new Ke;return function(mt,Ct){for(var It in mt.layers)Ct.writeMessage(3,ge,mt.layers[It])}(Qe,it),it.finish()}function ge(Qe,it){var mt;it.writeVarintField(15,Qe.version||1),it.writeStringField(1,Qe.name||""),it.writeVarintField(5,Qe.extent||4096);var Ct={keys:[],values:[],keycache:{},valuecache:{}};for(mt=0;mt<Qe.length;mt++)Ct.feature=Qe.feature(mt),it.writeMessage(2,Le,Ct);var It=Ct.keys;for(mt=0;mt<It.length;mt++)it.writeStringField(3,It[mt]);var Kt=Ct.values;for(mt=0;mt<Kt.length;mt++)it.writeMessage(4,Ye,Kt[mt])}function Le(Qe,it){var mt=Qe.feature;mt.id!==void 0&&it.writeVarintField(1,mt.id),it.writeMessage(2,Ce,Qe),it.writeVarintField(3,mt.type),it.writeMessage(4,Pe,mt)}function Ce(Qe,it){var mt=Qe.feature,Ct=Qe.keys,It=Qe.values,Kt=Qe.keycache,di=Qe.valuecache;for(var li in mt.properties){var ri=mt.properties[li],Ki=Kt[li];if(ri!==null){Ki===void 0&&(Ct.push(li),Kt[li]=Ki=Ct.length-1),it.writeVarint(Ki);var Ni=typeof ri;Ni!=="string"&&Ni!=="boolean"&&Ni!=="number"&&(ri=JSON.stringify(ri));var Ei=Ni+":"+ri,$i=di[Ei];$i===void 0&&(It.push(ri),di[Ei]=$i=It.length-1),it.writeVarint($i)}}}function Be(Qe,it){return(it<<3)+(7&Qe)}function qe(Qe){return Qe<<1^Qe>>31}function Pe(Qe,it){for(var mt=Qe.loadGeometry(),Ct=Qe.type,It=0,Kt=0,di=mt.length,li=0;li<di;li++){var ri=mt[li],Ki=1;Ct===1&&(Ki=ri.length),it.writeVarint(Be(1,Ki));for(var Ni=Ct===3?ri.length-1:ri.length,Ei=0;Ei<Ni;Ei++){Ei===1&&Ct!==1&&it.writeVarint(Be(2,Ni-1));var $i=ri[Ei].x-It,Hi=ri[Ei].y-Kt;it.writeVarint(qe($i)),it.writeVarint(qe(Hi)),It+=$i,Kt+=Hi}Ct===3&&it.writeVarint(Be(7,1))}}function Ye(Qe,it){var mt=typeof Qe;mt==="string"?it.writeStringField(1,Qe):mt==="boolean"?it.writeBooleanField(7,Qe):mt==="number"&&(Qe%1!=0?it.writeDoubleField(3,Qe):Qe<0?it.writeSVarintField(6,Qe):it.writeVarintField(5,Qe))}return jt.exports=le,jt.exports.fromVectorTileJs=le,jt.exports.fromGeojsonVt=function(Qe,it){it=it||{};var mt={};for(var Ct in Qe)mt[Ct]=new re(Qe[Ct].features,it),mt[Ct].name=Ct,mt[Ct].version=it.version,mt[Ct].extent=it.extent;return le({layers:mt})},jt.exports.GeoJSONWrapper=re,jt.exports}(),Gi=i.e8(ni);const an={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:Ke=>Ke},qt=Math.fround||(ln=new Float32Array(1),Ke=>(ln[0]=+Ke,ln[0]));var ln;const Di=3,xi=5,Is=6;class xs{constructor(re){this.options=Object.assign(Object.create(an),re),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(re){const{log:le,minZoom:ge,maxZoom:Le}=this.options;le&&console.time("total time");const Ce=`prepare ${re.length} points`;le&&console.time(Ce),this.points=re;const Be=[];for(let Pe=0;Pe<re.length;Pe++){const Ye=re[Pe];if(!Ye.geometry)continue;const[Qe,it]=Ye.geometry.coordinates,mt=qt(Vs(Qe)),Ct=qt(Us(it));Be.push(mt,Ct,1/0,Pe,-1,1),this.options.reduce&&Be.push(0)}let qe=this.trees[Le+1]=this._createTree(Be);le&&console.timeEnd(Ce);for(let Pe=Le;Pe>=ge;Pe--){const Ye=+Date.now();qe=this.trees[Pe]=this._createTree(this._cluster(qe,Pe)),le&&console.log("z%d: %d clusters in %dms",Pe,qe.numItems,+Date.now()-Ye)}return le&&console.timeEnd("total time"),this}getClusters(re,le){let ge=((re[0]+180)%360+360)%360-180;const Le=Math.max(-90,Math.min(90,re[1]));let Ce=re[2]===180?180:((re[2]+180)%360+360)%360-180;const Be=Math.max(-90,Math.min(90,re[3]));if(re[2]-re[0]>=360)ge=-180,Ce=180;else if(ge>Ce){const it=this.getClusters([ge,Le,180,Be],le),mt=this.getClusters([-180,Le,Ce,Be],le);return it.concat(mt)}const qe=this.trees[this._limitZoom(le)],Pe=qe.range(Vs(ge),Us(Be),Vs(Ce),Us(Le)),Ye=qe.data,Qe=[];for(const it of Pe){const mt=this.stride*it;Qe.push(Ye[mt+xi]>1?Ls(Ye,mt,this.clusterProps):this.points[Ye[mt+Di]])}return Qe}getChildren(re){const le=this._getOriginId(re),ge=this._getOriginZoom(re),Le="No cluster with the specified id.",Ce=this.trees[ge];if(!Ce)throw new Error(Le);const Be=Ce.data;if(le*this.stride>=Be.length)throw new Error(Le);const qe=this.options.radius/(this.options.extent*Math.pow(2,ge-1)),Pe=Ce.within(Be[le*this.stride],Be[le*this.stride+1],qe),Ye=[];for(const Qe of Pe){const it=Qe*this.stride;Be[it+4]===re&&Ye.push(Be[it+xi]>1?Ls(Be,it,this.clusterProps):this.points[Be[it+Di]])}if(Ye.length===0)throw new Error(Le);return Ye}getLeaves(re,le,ge){const Le=[];return this._appendLeaves(Le,re,le=le||10,ge=ge||0,0),Le}getTile(re,le,ge){const Le=this.trees[this._limitZoom(re)],Ce=Math.pow(2,re),{extent:Be,radius:qe}=this.options,Pe=qe/Be,Ye=(ge-Pe)/Ce,Qe=(ge+1+Pe)/Ce,it={features:[]};return this._addTileFeatures(Le.range((le-Pe)/Ce,Ye,(le+1+Pe)/Ce,Qe),Le.data,le,ge,Ce,it),le===0&&this._addTileFeatures(Le.range(1-Pe/Ce,Ye,1,Qe),Le.data,Ce,ge,Ce,it),le===Ce-1&&this._addTileFeatures(Le.range(0,Ye,Pe/Ce,Qe),Le.data,-1,ge,Ce,it),it.features.length?it:null}getClusterExpansionZoom(re){let le=this._getOriginZoom(re)-1;for(;le<=this.options.maxZoom;){const ge=this.getChildren(re);if(le++,ge.length!==1)break;re=ge[0].properties.cluster_id}return le}_appendLeaves(re,le,ge,Le,Ce){const Be=this.getChildren(le);for(const qe of Be){const Pe=qe.properties;if(Pe&&Pe.cluster?Ce+Pe.point_count<=Le?Ce+=Pe.point_count:Ce=this._appendLeaves(re,Pe.cluster_id,ge,Le,Ce):Ce<Le?Ce++:re.push(qe),re.length===ge)break}return Ce}_createTree(re){const le=new i.bE(re.length/this.stride|0,this.options.nodeSize,Float32Array);for(let ge=0;ge<re.length;ge+=this.stride)le.add(re[ge],re[ge+1]);return le.finish(),le.data=re,le}_addTileFeatures(re,le,ge,Le,Ce,Be){for(const qe of re){const Pe=qe*this.stride,Ye=le[Pe+xi]>1;let Qe,it,mt;if(Ye)Qe=De(le,Pe,this.clusterProps),it=le[Pe],mt=le[Pe+1];else{const Kt=this.points[le[Pe+Di]];Qe=Kt.properties;const[di,li]=Kt.geometry.coordinates;it=Vs(di),mt=Us(li)}const Ct={type:1,geometry:[[Math.round(this.options.extent*(it*Ce-ge)),Math.round(this.options.extent*(mt*Ce-Le))]],tags:Qe};let It;It=Ye||this.options.generateId?le[Pe+Di]:this.points[le[Pe+Di]].id,It!==void 0&&(Ct.id=It),Be.features.push(Ct)}}_limitZoom(re){return Math.max(this.options.minZoom,Math.min(Math.floor(+re),this.options.maxZoom+1))}_cluster(re,le){const{radius:ge,extent:Le,reduce:Ce,minPoints:Be}=this.options,qe=ge/(Le*Math.pow(2,le)),Pe=re.data,Ye=[],Qe=this.stride;for(let it=0;it<Pe.length;it+=Qe){if(Pe[it+2]<=le)continue;Pe[it+2]=le;const mt=Pe[it],Ct=Pe[it+1],It=re.within(Pe[it],Pe[it+1],qe),Kt=Pe[it+xi];let di=Kt;for(const li of It){const ri=li*Qe;Pe[ri+2]>le&&(di+=Pe[ri+xi])}if(di>Kt&&di>=Be){let li,ri=mt*Kt,Ki=Ct*Kt,Ni=-1;const Ei=(it/Qe<<5)+(le+1)+this.points.length;for(const $i of It){const Hi=$i*Qe;if(Pe[Hi+2]<=le)continue;Pe[Hi+2]=le;const Xn=Pe[Hi+xi];ri+=Pe[Hi]*Xn,Ki+=Pe[Hi+1]*Xn,Pe[Hi+4]=Ei,Ce&&(li||(li=this._map(Pe,it,!0),Ni=this.clusterProps.length,this.clusterProps.push(li)),Ce(li,this._map(Pe,Hi)))}Pe[it+4]=Ei,Ye.push(ri/di,Ki/di,1/0,Ei,-1,di),Ce&&Ye.push(Ni)}else{for(let li=0;li<Qe;li++)Ye.push(Pe[it+li]);if(di>1)for(const li of It){const ri=li*Qe;if(!(Pe[ri+2]<=le)){Pe[ri+2]=le;for(let Ki=0;Ki<Qe;Ki++)Ye.push(Pe[ri+Ki])}}}}return Ye}_getOriginId(re){return re-this.points.length>>5}_getOriginZoom(re){return(re-this.points.length)%32}_map(re,le,ge){if(re[le+xi]>1){const Be=this.clusterProps[re[le+Is]];return ge?Object.assign({},Be):Be}const Le=this.points[re[le+Di]].properties,Ce=this.options.map(Le);return ge&&Ce===Le?Object.assign({},Ce):Ce}}function Ls(Ke,re,le){return{type:"Feature",id:Ke[re+Di],properties:De(Ke,re,le),geometry:{type:"Point",coordinates:[(ge=Ke[re],360*(ge-.5)),Zr(Ke[re+1])]}};var ge}function De(Ke,re,le){const ge=Ke[re+xi],Le=ge>=1e4?`${Math.round(ge/1e3)}k`:ge>=1e3?Math.round(ge/100)/10+"k":ge,Ce=Ke[re+Is],Be=Ce===-1?{}:Object.assign({},le[Ce]);return Object.assign(Be,{cluster:!0,cluster_id:Ke[re+Di],point_count:ge,point_count_abbreviated:Le})}function Vs(Ke){return Ke/360+.5}function Us(Ke){const re=Math.sin(Ke*Math.PI/180),le=.5-.25*Math.log((1+re)/(1-re))/Math.PI;return le<0?0:le>1?1:le}function Zr(Ke){const re=(180-360*Ke)*Math.PI/180;return 360*Math.atan(Math.exp(re))/Math.PI-90}function Et(Ke,re,le,ge){let Le=ge;const Ce=re+(le-re>>1);let Be,qe=le-re;const Pe=Ke[re],Ye=Ke[re+1],Qe=Ke[le],it=Ke[le+1];for(let mt=re+3;mt<le;mt+=3){const Ct=$s(Ke[mt],Ke[mt+1],Pe,Ye,Qe,it);if(Ct>Le)Be=mt,Le=Ct;else if(Ct===Le){const It=Math.abs(mt-Ce);It<qe&&(Be=mt,qe=It)}}Le>ge&&(Be-re>3&&Et(Ke,re,Be,ge),Ke[Be+2]=Le,le-Be>3&&Et(Ke,Be,le,ge))}function $s(Ke,re,le,ge,Le,Ce){let Be=Le-le,qe=Ce-ge;if(Be!==0||qe!==0){const Pe=((Ke-le)*Be+(re-ge)*qe)/(Be*Be+qe*qe);Pe>1?(le=Le,ge=Ce):Pe>0&&(le+=Be*Pe,ge+=qe*Pe)}return Be=Ke-le,qe=re-ge,Be*Be+qe*qe}function $n(Ke,re,le,ge){const Le={id:Ke??null,type:re,geometry:le,tags:ge,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};if(re==="Point"||re==="MultiPoint"||re==="LineString")Xs(Le,le);else if(re==="Polygon")Xs(Le,le[0]);else if(re==="MultiLineString")for(const Ce of le)Xs(Le,Ce);else if(re==="MultiPolygon")for(const Ce of le)Xs(Le,Ce[0]);return Le}function Xs(Ke,re){for(let le=0;le<re.length;le+=3)Ke.minX=Math.min(Ke.minX,re[le]),Ke.minY=Math.min(Ke.minY,re[le+1]),Ke.maxX=Math.max(Ke.maxX,re[le]),Ke.maxY=Math.max(Ke.maxY,re[le+1])}function vi(Ke,re,le,ge){if(!re.geometry)return;const Le=re.geometry.coordinates;if(Le&&Le.length===0)return;const Ce=re.geometry.type,Be=Math.pow(le.tolerance/((1<<le.maxZoom)*le.extent),2);let qe=[],Pe=re.id;if(le.promoteId?Pe=re.properties[le.promoteId]:le.generateId&&(Pe=ge||0),Ce==="Point")kn(Le,qe);else if(Ce==="MultiPoint")for(const Ye of Le)kn(Ye,qe);else if(Ce==="LineString")Ys(Le,qe,Be,!1);else if(Ce==="MultiLineString"){if(le.lineMetrics){for(const Ye of Le)qe=[],Ys(Ye,qe,Be,!1),Ke.push($n(Pe,"LineString",qe,re.properties));return}Hr(Le,qe,Be,!1)}else if(Ce==="Polygon")Hr(Le,qe,Be,!0);else{if(Ce!=="MultiPolygon"){if(Ce==="GeometryCollection"){for(const Ye of re.geometry.geometries)vi(Ke,{id:Pe,geometry:Ye,properties:re.properties},le,ge);return}throw new Error("Input data is not a valid GeoJSON object.")}for(const Ye of Le){const Qe=[];Hr(Ye,Qe,Be,!0),qe.push(Qe)}}Ke.push($n(Pe,Ce,qe,re.properties))}function kn(Ke,re){re.push(qr(Ke[0]),Wr(Ke[1]),0)}function Ys(Ke,re,le,ge){let Le,Ce,Be=0;for(let Pe=0;Pe<Ke.length;Pe++){const Ye=qr(Ke[Pe][0]),Qe=Wr(Ke[Pe][1]);re.push(Ye,Qe,0),Pe>0&&(Be+=ge?(Le*Qe-Ye*Ce)/2:Math.sqrt(Math.pow(Ye-Le,2)+Math.pow(Qe-Ce,2))),Le=Ye,Ce=Qe}const qe=re.length-3;re[2]=1,Et(re,0,qe,le),re[qe+2]=1,re.size=Math.abs(Be),re.start=0,re.end=re.size}function Hr(Ke,re,le,ge){for(let Le=0;Le<Ke.length;Le++){const Ce=[];Ys(Ke[Le],Ce,le,ge),re.push(Ce)}}function qr(Ke){return Ke/360+.5}function Wr(Ke){const re=Math.sin(Ke*Math.PI/180),le=.5-.25*Math.log((1+re)/(1-re))/Math.PI;return le<0?0:le>1?1:le}function si(Ke,re,le,ge,Le,Ce,Be,qe){if(ge/=re,Ce>=(le/=re)&&Be<ge)return Ke;if(Be<le||Ce>=ge)return null;const Pe=[];for(const Ye of Ke){const Qe=Ye.geometry;let it=Ye.type;const mt=Le===0?Ye.minX:Ye.minY,Ct=Le===0?Ye.maxX:Ye.maxY;if(mt>=le&&Ct<ge){Pe.push(Ye);continue}if(Ct<le||mt>=ge)continue;let It=[];if(it==="Point"||it==="MultiPoint")ps(Qe,It,le,ge,Le);else if(it==="LineString")zn(Qe,It,le,ge,Le,!1,qe.lineMetrics);else if(it==="MultiLineString")An(Qe,It,le,ge,Le,!1);else if(it==="Polygon")An(Qe,It,le,ge,Le,!0);else if(it==="MultiPolygon")for(const Kt of Qe){const di=[];An(Kt,di,le,ge,Le,!0),di.length&&It.push(di)}if(It.length){if(qe.lineMetrics&&it==="LineString"){for(const Kt of It)Pe.push($n(Ye.id,it,Kt,Ye.tags));continue}it!=="LineString"&&it!=="MultiLineString"||(It.length===1?(it="LineString",It=It[0]):it="MultiLineString"),it!=="Point"&&it!=="MultiPoint"||(it=It.length===3?"Point":"MultiPoint"),Pe.push($n(Ye.id,it,It,Ye.tags))}}return Pe.length?Pe:null}function ps(Ke,re,le,ge,Le){for(let Ce=0;Ce<Ke.length;Ce+=3){const Be=Ke[Ce+Le];Be>=le&&Be<=ge&&js(re,Ke[Ce],Ke[Ce+1],Ke[Ce+2])}}function zn(Ke,re,le,ge,Le,Ce,Be){let qe=Rn(Ke);const Pe=Le===0?vo:bo;let Ye,Qe,it=Ke.start;for(let di=0;di<Ke.length-3;di+=3){const li=Ke[di],ri=Ke[di+1],Ki=Ke[di+2],Ni=Ke[di+3],Ei=Ke[di+4],$i=Le===0?li:ri,Hi=Le===0?Ni:Ei;let Xn=!1;Be&&(Ye=Math.sqrt(Math.pow(li-Ni,2)+Math.pow(ri-Ei,2))),$i<le?Hi>le&&(Qe=Pe(qe,li,ri,Ni,Ei,le),Be&&(qe.start=it+Ye*Qe)):$i>ge?Hi<ge&&(Qe=Pe(qe,li,ri,Ni,Ei,ge),Be&&(qe.start=it+Ye*Qe)):js(qe,li,ri,Ki),Hi<le&&$i>=le&&(Qe=Pe(qe,li,ri,Ni,Ei,le),Xn=!0),Hi>ge&&$i<=ge&&(Qe=Pe(qe,li,ri,Ni,Ei,ge),Xn=!0),!Ce&&Xn&&(Be&&(qe.end=it+Ye*Qe),re.push(qe),qe=Rn(Ke)),Be&&(it+=Ye)}let mt=Ke.length-3;const Ct=Ke[mt],It=Ke[mt+1],Kt=Le===0?Ct:It;Kt>=le&&Kt<=ge&&js(qe,Ct,It,Ke[mt+2]),mt=qe.length-3,Ce&&mt>=3&&(qe[mt]!==qe[0]||qe[mt+1]!==qe[1])&&js(qe,qe[0],qe[1],qe[2]),qe.length&&re.push(qe)}function Rn(Ke){const re=[];return re.size=Ke.size,re.start=Ke.start,re.end=Ke.end,re}function An(Ke,re,le,ge,Le,Ce){for(const Be of Ke)zn(Be,re,le,ge,Le,Ce,!1)}function js(Ke,re,le,ge){Ke.push(re,le,ge)}function vo(Ke,re,le,ge,Le,Ce){const Be=(Ce-re)/(ge-re);return js(Ke,Ce,le+(Le-le)*Be,1),Be}function bo(Ke,re,le,ge,Le,Ce){const Be=(Ce-le)/(Le-le);return js(Ke,re+(ge-re)*Be,Ce,1),Be}function wo(Ke,re){const le=[];for(let ge=0;ge<Ke.length;ge++){const Le=Ke[ge],Ce=Le.type;let Be;if(Ce==="Point"||Ce==="MultiPoint"||Ce==="LineString")Be=yr(Le.geometry,re);else if(Ce==="MultiLineString"||Ce==="Polygon"){Be=[];for(const qe of Le.geometry)Be.push(yr(qe,re))}else if(Ce==="MultiPolygon"){Be=[];for(const qe of Le.geometry){const Pe=[];for(const Ye of qe)Pe.push(yr(Ye,re));Be.push(Pe)}}le.push($n(Le.id,Ce,Be,Le.tags))}return le}function yr(Ke,re){const le=[];le.size=Ke.size,Ke.start!==void 0&&(le.start=Ke.start,le.end=Ke.end);for(let ge=0;ge<Ke.length;ge+=3)le.push(Ke[ge]+re,Ke[ge+1],Ke[ge+2]);return le}function Pr(Ke,re){if(Ke.transformed)return Ke;const le=1<<Ke.z,ge=Ke.x,Le=Ke.y;for(const Ce of Ke.features){const Be=Ce.geometry,qe=Ce.type;if(Ce.geometry=[],qe===1)for(let Pe=0;Pe<Be.length;Pe+=2)Ce.geometry.push(ro(Be[Pe],Be[Pe+1],re,le,ge,Le));else for(let Pe=0;Pe<Be.length;Pe++){const Ye=[];for(let Qe=0;Qe<Be[Pe].length;Qe+=2)Ye.push(ro(Be[Pe][Qe],Be[Pe][Qe+1],re,le,ge,Le));Ce.geometry.push(Ye)}}return Ke.transformed=!0,Ke}function ro(Ke,re,le,ge,Le,Ce){return[Math.round(le*(Ke*ge-Le)),Math.round(le*(re*ge-Ce))]}function Ks(Ke,re,le,ge,Le){const Ce=re===Le.maxZoom?0:Le.tolerance/((1<<re)*Le.extent),Be={features:[],numPoints:0,numSimplified:0,numFeatures:Ke.length,source:null,x:le,y:ge,z:re,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0};for(const qe of Ke)Ar(Be,qe,Ce,Le);return Be}function Ar(Ke,re,le,ge){const Le=re.geometry,Ce=re.type,Be=[];if(Ke.minX=Math.min(Ke.minX,re.minX),Ke.minY=Math.min(Ke.minY,re.minY),Ke.maxX=Math.max(Ke.maxX,re.maxX),Ke.maxY=Math.max(Ke.maxY,re.maxY),Ce==="Point"||Ce==="MultiPoint")for(let qe=0;qe<Le.length;qe+=3)Be.push(Le[qe],Le[qe+1]),Ke.numPoints++,Ke.numSimplified++;else if(Ce==="LineString")mi(Be,Le,Ke,le,!1,!1);else if(Ce==="MultiLineString"||Ce==="Polygon")for(let qe=0;qe<Le.length;qe++)mi(Be,Le[qe],Ke,le,Ce==="Polygon",qe===0);else if(Ce==="MultiPolygon")for(let qe=0;qe<Le.length;qe++){const Pe=Le[qe];for(let Ye=0;Ye<Pe.length;Ye++)mi(Be,Pe[Ye],Ke,le,!0,Ye===0)}if(Be.length){let qe=re.tags||null;if(Ce==="LineString"&&ge.lineMetrics){qe={};for(const Ye in re.tags)qe[Ye]=re.tags[Ye];qe.mapbox_clip_start=Le.start/Le.size,qe.mapbox_clip_end=Le.end/Le.size}const Pe={geometry:Be,type:Ce==="Polygon"||Ce==="MultiPolygon"?3:Ce==="LineString"||Ce==="MultiLineString"?2:1,tags:qe};re.id!==null&&(Pe.id=re.id),Ke.features.push(Pe)}}function mi(Ke,re,le,ge,Le,Ce){const Be=ge*ge;if(ge>0&&re.size<(Le?Be:ge))return void(le.numPoints+=re.length/3);const qe=[];for(let Pe=0;Pe<re.length;Pe+=3)(ge===0||re[Pe+2]>Be)&&(le.numSimplified++,qe.push(re[Pe],re[Pe+1])),le.numPoints++;Le&&function(Pe,Ye){let Qe=0;for(let it=0,mt=Pe.length,Ct=mt-2;it<mt;Ct=it,it+=2)Qe+=(Pe[it]-Pe[Ct])*(Pe[it+1]+Pe[Ct+1]);if(Qe>0===Ye)for(let it=0,mt=Pe.length;it<mt/2;it+=2){const Ct=Pe[it],It=Pe[it+1];Pe[it]=Pe[mt-2-it],Pe[it+1]=Pe[mt-1-it],Pe[mt-2-it]=Ct,Pe[mt-1-it]=It}}(qe,Ce),Ke.push(qe)}const On={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0};class Un{constructor(re,le){const ge=(le=this.options=function(Ce,Be){for(const qe in Be)Ce[qe]=Be[qe];return Ce}(Object.create(On),le)).debug;if(ge&&console.time("preprocess data"),le.maxZoom<0||le.maxZoom>24)throw new Error("maxZoom should be in the 0-24 range");if(le.promoteId&&le.generateId)throw new Error("promoteId and generateId cannot be used together.");let Le=function(Ce,Be){const qe=[];if(Ce.type==="FeatureCollection")for(let Pe=0;Pe<Ce.features.length;Pe++)vi(qe,Ce.features[Pe],Be,Pe);else vi(qe,Ce.type==="Feature"?Ce:{geometry:Ce},Be);return qe}(re,le);this.tiles={},this.tileCoords=[],ge&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",le.indexMaxZoom,le.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),Le=function(Ce,Be){const qe=Be.buffer/Be.extent;let Pe=Ce;const Ye=si(Ce,1,-1-qe,qe,0,-1,2,Be),Qe=si(Ce,1,1-qe,2+qe,0,-1,2,Be);return(Ye||Qe)&&(Pe=si(Ce,1,-qe,1+qe,0,-1,2,Be)||[],Ye&&(Pe=wo(Ye,1).concat(Pe)),Qe&&(Pe=Pe.concat(wo(Qe,-1)))),Pe}(Le,le),Le.length&&this.splitTile(Le,0,0,0),ge&&(Le.length&&console.log("features: %d, points: %d",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd("generate tiles"),console.log("tiles generated:",this.total,JSON.stringify(this.stats)))}splitTile(re,le,ge,Le,Ce,Be,qe){const Pe=[re,le,ge,Le],Ye=this.options,Qe=Ye.debug;for(;Pe.length;){Le=Pe.pop(),ge=Pe.pop(),le=Pe.pop(),re=Pe.pop();const it=1<<le,mt=Zi(le,ge,Le);let Ct=this.tiles[mt];if(!Ct&&(Qe>1&&console.time("creation"),Ct=this.tiles[mt]=Ks(re,le,ge,Le,Ye),this.tileCoords.push({z:le,x:ge,y:Le}),Qe)){Qe>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",le,ge,Le,Ct.numFeatures,Ct.numPoints,Ct.numSimplified),console.timeEnd("creation"));const Xn=`z${le}`;this.stats[Xn]=(this.stats[Xn]||0)+1,this.total++}if(Ct.source=re,Ce==null){if(le===Ye.indexMaxZoom||Ct.numPoints<=Ye.indexMaxPoints)continue}else{if(le===Ye.maxZoom||le===Ce)continue;if(Ce!=null){const Xn=Ce-le;if(ge!==Be>>Xn||Le!==qe>>Xn)continue}}if(Ct.source=null,re.length===0)continue;Qe>1&&console.time("clipping");const It=.5*Ye.buffer/Ye.extent,Kt=.5-It,di=.5+It,li=1+It;let ri=null,Ki=null,Ni=null,Ei=null,$i=si(re,it,ge-It,ge+di,0,Ct.minX,Ct.maxX,Ye),Hi=si(re,it,ge+Kt,ge+li,0,Ct.minX,Ct.maxX,Ye);re=null,$i&&(ri=si($i,it,Le-It,Le+di,1,Ct.minY,Ct.maxY,Ye),Ki=si($i,it,Le+Kt,Le+li,1,Ct.minY,Ct.maxY,Ye),$i=null),Hi&&(Ni=si(Hi,it,Le-It,Le+di,1,Ct.minY,Ct.maxY,Ye),Ei=si(Hi,it,Le+Kt,Le+li,1,Ct.minY,Ct.maxY,Ye),Hi=null),Qe>1&&console.timeEnd("clipping"),Pe.push(ri||[],le+1,2*ge,2*Le),Pe.push(Ki||[],le+1,2*ge,2*Le+1),Pe.push(Ni||[],le+1,2*ge+1,2*Le),Pe.push(Ei||[],le+1,2*ge+1,2*Le+1)}}getTile(re,le,ge){re=+re,le=+le,ge=+ge;const Le=this.options,{extent:Ce,debug:Be}=Le;if(re<0||re>24)return null;const qe=1<<re,Pe=Zi(re,le=le+qe&qe-1,ge);if(this.tiles[Pe])return Pr(this.tiles[Pe],Ce);Be>1&&console.log("drilling down to z%d-%d-%d",re,le,ge);let Ye,Qe=re,it=le,mt=ge;for(;!Ye&&Qe>0;)Qe--,it>>=1,mt>>=1,Ye=this.tiles[Zi(Qe,it,mt)];return Ye&&Ye.source?(Be>1&&(console.log("found parent tile z%d-%d-%d",Qe,it,mt),console.time("drilling down")),this.splitTile(Ye.source,Qe,it,mt,re,le,ge),Be>1&&console.timeEnd("drilling down"),this.tiles[Pe]?Pr(this.tiles[Pe],Ce):null):null}}function Zi(Ke,re,le){return 32*((1<<Ke)*le+re)+Ke}function Qn(Ke,re){const le=Ke.tileID.canonical;if(!this._geoJSONIndex)return void re(null,null);const ge=this._geoJSONIndex.getTile(le.z,le.x,le.y);if(!ge)return void re(null,null);const Le=new gt(ge.features);let Ce=Gi(Le);Ce.byteOffset===0&&Ce.byteLength===Ce.buffer.byteLength||(Ce=new Uint8Array(Ce)),re(null,{vectorTile:Le,rawData:Ce.buffer})}class Fn extends Ze{constructor(re,le,ge,Le,Ce,Be){super(re,le,ge,Le,Qn,Be),Ce&&(this.loadGeoJSON=Ce),this._dynamicIndex=new Gt}loadData(re,le){const ge=re&&re.request,Le=ge&&ge.collectResourceTiming;this.loadGeoJSON(re,(Ce,Be)=>{if(Ce||!Be)return le(Ce);if(typeof Be!="object")return le(new Error(`Input data given to '${re.source}' is not a valid GeoJSON object.`));{try{if(re.filter){const Pe=i.U(re.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(Pe.result==="error")throw new Error(Pe.value.map(Ye=>`${Ye.key}: ${Ye.message}`).join(", "));Be.features=Be.features.filter(Ye=>Pe.value.evaluate({zoom:0},Ye))}re.dynamic?(Be.type==="Feature"&&(Be={type:"FeatureCollection",features:[Be]}),re.append||(this._dynamicIndex.clear(),this.loaded={}),this._dynamicIndex.load(Be.features,this.loaded),re.cluster&&(Be.features=this._dynamicIndex.getFeatures())):this.loaded={},this._geoJSONIndex=re.cluster?new xs(function({superclusterOptions:Pe,clusterProperties:Ye}){if(!Ye||!Pe)return Pe;const Qe={},it={},mt={accumulated:null,zoom:0},Ct={properties:null},It=Object.keys(Ye);for(const Kt of It){const[di,li]=Ye[Kt],ri=i.U(li),Ki=i.U(typeof di=="string"?[di,["accumulated"],["get",Kt]]:di);Qe[Kt]=ri.value,it[Kt]=Ki.value}return Pe.map=Kt=>{Ct.properties=Kt;const di={};for(const li of It)di[li]=Qe[li].evaluate(mt,Ct);return di},Pe.reduce=(Kt,di)=>{Ct.properties=di;for(const li of It)mt.accumulated=Kt[li],Kt[li]=it[li].evaluate(mt,Ct)},Pe}(re)).load(Be.features):re.dynamic?this._dynamicIndex:function(Pe,Ye){return new Un(Pe,Ye)}(Be,re.geojsonVtOptions)}catch(Pe){return le(Pe)}const qe={};if(Le){const Pe=O(ge);Pe&&(qe.resourceTiming={},qe.resourceTiming[re.source]=JSON.parse(JSON.stringify(Pe)))}le(null,qe)}})}reloadTile(re,le){const ge=this.loaded;return ge&&ge[re.uid]?re.partial?le(null,void 0):super.reloadTile(re,le):this.loadTile(re,le)}loadGeoJSON(re,le){if(re.request)i.n(re.request,le);else{if(typeof re.data!="string")return le(new Error(`Input data given to '${re.source}' is not a valid GeoJSON object.`));try{return le(null,JSON.parse(re.data))}catch{return le(new Error(`Input data given to '${re.source}' is not a valid GeoJSON object.`))}}}getClusterExpansionZoom(re,le){try{le(null,this._geoJSONIndex.getClusterExpansionZoom(re.clusterId))}catch(ge){le(ge)}}getClusterChildren(re,le){try{le(null,this._geoJSONIndex.getChildren(re.clusterId))}catch(ge){le(ge)}}getClusterLeaves(re,le){try{le(null,this._geoJSONIndex.getLeaves(re.clusterId,re.limit,re.offset))}catch(ge){le(ge)}}}class zs{constructor(re,le){this.tileID=new i.aG(re.tileID.overscaledZ,re.tileID.wrap,re.tileID.canonical.z,re.tileID.canonical.x,re.tileID.canonical.y),this.tileZoom=re.tileZoom,this.uid=re.uid,this.zoom=re.zoom,this.canonical=re.tileID.canonical,this.pixelRatio=re.pixelRatio,this.tileSize=re.tileSize,this.source=re.source,this.overscaling=this.tileID.overscaleFactor(),this.projection=re.projection,this.brightness=le}parse(re,le,ge,Le){this.status="parsing";const Ce=new i.aG(ge.tileID.overscaledZ,ge.tileID.wrap,ge.tileID.canonical.z,ge.tileID.canonical.x,ge.tileID.canonical.y),Be=[],qe=le.familiesBySource[ge.source],Pe=new i.dZ(Ce,ge.promoteId);return Pe.bucketLayerIDs=[],Pe.is3DTile=!0,i.e9(re).then(Ye=>{if(!Ye)return Le(new Error("Could not parse tile"));const Qe=i.ea(Ye,1/i.cc(ge.tileID.canonical)),it=Ye.json.extensionsUsed&&Ye.json.extensionsUsed.includes("MAPBOX_mesh_features")||Ye.json.asset.extras&&Ye.json.asset.extras.MAPBOX_mesh_features,mt=Ye.json.extensionsUsed&&Ye.json.extensionsUsed.includes("EXT_meshopt_compression"),Ct=new i.a8(this.zoom,{brightness:this.brightness});for(const It in qe)for(const Kt of qe[It]){const di=Kt[0];Pe.bucketLayerIDs.push(Kt.map(ri=>i.aC(ri.id,ri.scope))),di.recalculate(Ct,[]);const li=new i.eb(Kt,Qe,Ce,it,mt,this.brightness,Pe);it||(li.needsUpload=!0),Be.push(li),li.evaluate(di)}this.status="done",Le(null,{buckets:Be,featureIndex:Pe,collisionBoxArray:null,glyphAtlasImage:null,lineAtlas:null,imageAtlas:null,brightness:null})}).catch(Ye=>Le(new Error(Ye.message)))}}class Ds{constructor(re,le,ge,Le,Ce,Be){this.actor=re,this.layerIndex=le,this.availableImages=ge,this.brightness=Be,this.loading={},this.loaded={}}loadTile(re,le){const ge=re.uid,Le=this.loading[ge]=new zs(re,this.brightness);i.bi(re.request,(Ce,Be)=>{const qe=!this.loading[ge];return delete this.loading[ge],qe||Ce?(Le.status="done",qe||(this.loaded[ge]=Le),le(Ce)):Be&&Be.byteLength!==0?void Le.parse(Be,this.layerIndex,re,(Pe,Ye)=>{Le.status="done",this.loaded=this.loaded||{},this.loaded[ge]=Le,Pe||!Ye?le(Pe):le(null,Ye)}):(Le.status="done",this.loaded[ge]=Le,le())})}reloadTile(re,le){const ge=this.loaded,Le=re.uid;if(ge&&ge[Le]){const Ce=ge[Le];Ce.projection=re.projection,Ce.brightness=re.brightness;const Be=(qe,Pe)=>{Ce.reloadCallback&&(delete Ce.reloadCallback,this.loadTile(re,le)),le(qe,Pe)};Ce.status==="parsing"?Ce.reloadCallback=Be:Ce.status==="done"&&this.loadTile(re,le)}}abortTile(re,le){const ge=re.uid;this.loading[ge]&&delete this.loading[ge],le()}removeTile(re,le){const ge=this.loaded,Le=re.uid;ge&&ge[Le]&&delete ge[Le],le()}}class Go{constructor(re){this.self=re,this.actor=new i.ec(re,this),this.layerIndexes={},this.availableImages={},this.isSpriteLoaded={},this.imageRasterizer=new i.I,this.projections={},this.defaultProjection=i.bP({name:"mercator"}),this.workerSourceTypes={vector:Ze,geojson:Fn,"batched-model":Ds},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(le,ge)=>{if(this.workerSourceTypes[le])throw new Error(`Worker source with name "${le}" already registered.`);this.workerSourceTypes[le]=ge},this.self.registerRTLTextPlugin=le=>{if(i.ed.isParsed())throw new Error("RTL text plugin already registered.");i.ed.applyArabicShaping=le.applyArabicShaping,i.ed.processBidirectionalText=le.processBidirectionalText,i.ed.processStyledBidirectionalText=le.processStyledBidirectionalText}}clearCaches(re,le,ge){delete this.layerIndexes[re],delete this.availableImages[re],delete this.workerSources[re],delete this.demWorkerSources[re],delete this.rasterArrayWorkerSource,ge()}checkIfReady(re,le,ge){ge()}setReferrer(re,le){this.referrer=le}spriteLoaded(re,{scope:le,isLoaded:ge}){if(this.isSpriteLoaded[re]||(this.isSpriteLoaded[re]={}),this.isSpriteLoaded[re][le]=ge,this.workerSources[re]&&this.workerSources[re][le])for(const Le in this.workerSources[re][le]){const Ce=this.workerSources[re][le][Le];for(const Be in Ce){const qe=Ce[Be];qe instanceof Ze&&(qe.isSpriteLoaded=ge,qe.fire(new i.z("isSpriteLoaded")))}}}setImages(re,{scope:le,images:ge},Le){if(this.availableImages[re]||(this.availableImages[re]={}),this.availableImages[re][le]=ge,this.workerSources[re]&&this.workerSources[re][le]){for(const Ce in this.workerSources[re][le]){const Be=this.workerSources[re][le][Ce];for(const qe in Be)Be[qe].availableImages=ge}Le()}else Le()}setProjection(re,le){this.projections[re]=i.bP(le)}setBrightness(re,le,ge){this.brightness=le,ge()}setLayers(re,le,ge){this.getLayerIndex(re,le.scope).replace(le.layers,le.options),ge()}updateLayers(re,le,ge){this.getLayerIndex(re,le.scope).update(le.layers,le.removedIds,le.options),ge()}loadTile(re,le,ge){le.projection=this.projections[re]||this.defaultProjection,this.getWorkerSource(re,le.type,le.source,le.scope).loadTile(le,ge)}loadDEMTile(re,le,ge){this.getDEMWorkerSource(re,le.source,le.scope).loadTile(le,ge)}decodeRasterArray(re,le,ge){this.getRasterArrayWorkerSource().decodeRasterArray(le,ge)}reloadTile(re,le,ge){le.projection=this.projections[re]||this.defaultProjection,this.getWorkerSource(re,le.type,le.source,le.scope).reloadTile(le,ge)}abortTile(re,le,ge){this.getWorkerSource(re,le.type,le.source,le.scope).abortTile(le,ge)}removeTile(re,le,ge){this.getWorkerSource(re,le.type,le.source,le.scope).removeTile(le,ge)}removeSource(re,le,ge){if(!(this.workerSources[re]&&this.workerSources[re][le.scope]&&this.workerSources[re][le.scope][le.type]&&this.workerSources[re][le.scope][le.type][le.source]))return;const Le=this.workerSources[re][le.scope][le.type][le.source];delete this.workerSources[re][le.scope][le.type][le.source],Le.removeSource!==void 0?Le.removeSource(le,ge):ge()}loadWorkerSource(re,le,ge){try{this.self.importScripts(le.url),ge()}catch(Le){ge(Le.toString())}}syncRTLPluginState(re,le,ge){try{i.ed.setState(le);const Le=i.ed.getPluginURL();if(i.ed.isLoaded()&&!i.ed.isParsed()&&Le!=null){this.self.importScripts(Le);const Ce=i.ed.isParsed();ge(Ce?void 0:new Error(`RTL Text Plugin failed to import scripts from ${Le}`),Ce)}}catch(Le){ge(Le.toString())}}setDracoUrl(re,le){this.dracoUrl=le}getAvailableImages(re,le){this.availableImages[re]||(this.availableImages[re]={});let ge=this.availableImages[re][le];return ge||(ge=[]),ge}getLayerIndex(re,le){this.layerIndexes[re]||(this.layerIndexes[re]={});let ge=this.layerIndexes[re][le];return ge||(ge=this.layerIndexes[re][le]=new J,ge.scope=le),ge}getWorkerSource(re,le,ge,Le){return this.workerSources[re]||(this.workerSources[re]={}),this.workerSources[re][Le]||(this.workerSources[re][Le]={}),this.workerSources[re][Le][le]||(this.workerSources[re][Le][le]={}),this.isSpriteLoaded[re]||(this.isSpriteLoaded[re]={}),this.workerSources[re][Le][le][ge]||(this.workerSources[re][Le][le][ge]=new this.workerSourceTypes[le]({send:(Ce,Be,qe,Pe,Ye,Qe)=>{this.actor.send(Ce,Be,qe,re,Ye,Qe)},scheduler:this.actor.scheduler},this.getLayerIndex(re,Le),this.getAvailableImages(re,Le),this.isSpriteLoaded[re][Le],void 0,this.brightness)),this.workerSources[re][Le][le][ge]}rasterizeImages(re,le,ge){const{imageTasks:Le,scope:Ce}=le,Be={};for(const qe in Le){const{image:Pe,imageIdWithOptions:Ye}=Le[qe];Be[qe]=this.imageRasterizer.rasterize(Ye,Pe,Ce,re)}ge(void 0,Be)}removeRasterizedImages(re,le,ge){const{imageIds:Le,scope:Ce}=le;this.imageRasterizer.removeImagesFromCacheByIds(Le,Ce,re),ge()}getDEMWorkerSource(re,le,ge){return this.demWorkerSources[re]||(this.demWorkerSources[re]={}),this.demWorkerSources[re][ge]||(this.demWorkerSources[re][ge]={}),this.demWorkerSources[re][ge][le]||(this.demWorkerSources[re][ge][le]=new je),this.demWorkerSources[re][ge][le]}getRasterArrayWorkerSource(){return this.rasterArrayWorkerSource||(this.rasterArrayWorkerSource=new ot),this.rasterArrayWorkerSource}enforceCacheSizeLimit(re,le){i.ee(le)}getWorkerPerformanceMetrics(re,le,ge){ge(void 0,void 0)}}return typeof WorkerGlobalScope<"u"&&typeof self<"u"&&self instanceof WorkerGlobalScope&&(self.worker=new Go(self)),Go}),b(["./shared"],function(i){var O="3.9.4";const j={create:"create",load:"load",fullLoad:"fullLoad"},Y={mark(c){performance.mark(c)},measure(c,t,s){performance.measure(c,t,s)}};function J(c){const t=c.name.split("?")[0];return i.a(t)&&t.includes("mapbox-gl.js")?"javascript":i.a(t)&&t.includes("mapbox-gl.css")?"css":i.b(t)?"fontRange":i.c(t)?"sprite":i.i(t)?"style":i.d(t)?"tilejson":"other"}var ae,ce={},Te=function(){if(ae)return ce;function c(h){return!t(h)}function t(h){return typeof window>"u"||typeof document>"u"?"not a browser":function(){if(!("Worker"in window&&"Blob"in window&&"URL"in window))return!1;var y,T,z=new Blob([""],{type:"text/javascript"}),R=URL.createObjectURL(z);try{T=new Worker(R),y=!0}catch{y=!1}return T&&T.terminate(),URL.revokeObjectURL(R),y}()?function(){var y=document.createElement("canvas");y.width=y.height=1;var T=y.getContext("2d");if(!T)return!1;var z=T.getImageData(0,0,1,1);return z&&z.width===y.width}()?(s[_=h&&h.failIfMajorPerformanceCaveat]===void 0&&(s[_]=function(y){var T,z=function(R){var F=document.createElement("canvas"),N=Object.create(c.webGLContextAttributes);return N.failIfMajorPerformanceCaveat=R,F.getContext("webgl2",N)}(y);if(!z)return!1;try{T=z.createShader(z.VERTEX_SHADER)}catch{return!1}return!(!T||z.isContextLost())&&(z.shaderSource(T,"void main() {}"),z.compileShader(T),z.getShaderParameter(T,z.COMPILE_STATUS)===!0)}(_)),s[_]?document.documentMode?"insufficient ECMAScript 6 support":void 0:"insufficient WebGL2 support"):"insufficient Canvas/getImageData support":"insufficient worker support";var _}ae=1,ce.supported=c,ce.notSupportedReason=t;var s={};return c.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0},ce}();function be(c,t,s){const h=document.createElement(c);return t!=null&&(h.className=t),s&&s.appendChild(h),h}function Ze(c,t,s){const h=document.createElementNS("http://www.w3.org/2000/svg",c);for(const _ of Object.keys(t))h.setAttributeNS(null,_,String(t[_]));return s&&s.appendChild(h),h}const je=typeof document<"u"?document.documentElement&&document.documentElement.style:null,ot=je&&je.userSelect!==void 0?"userSelect":"WebkitUserSelect";let vt;function ht(){je&&ot&&(vt=je[ot],je[ot]="none")}function gt(){je&&ot&&(je[ot]=vt)}function Vt(c){c.preventDefault(),c.stopPropagation(),window.removeEventListener("click",Vt,!0)}function pt(){window.addEventListener("click",Vt,!0),window.setTimeout(()=>{window.removeEventListener("click",Vt,!0)},0)}function Gt(c,t){const s=c.getBoundingClientRect();return Pt(c,s,t)}function ui(c,t){const s=c.getBoundingClientRect(),h=[];for(let _=0;_<t.length;_++)h.push(Pt(c,s,t[_]));return h}function kt(c){return window.InstallTrigger!==void 0&&c.button===2&&c.ctrlKey&&window.navigator.platform.toUpperCase().indexOf("MAC")>=0?0:c.button}function Pt(c,t,s){const h=c.offsetWidth===t.width?1:c.offsetWidth/t.width;return new i.P((s.clientX-t.left)*h,(s.clientY-t.top)*h)}const Mi="01",Pn="NO_ACCESS_TOKEN";class hn{constructor(t,s,h){this._transformRequestFn=t,this._customAccessToken=s,this._silenceAuthErrors=!!h,this._createSkuToken()}_createSkuToken(){const t=function(){let s="";for(let h=0;h<10;h++)s+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[Math.floor(62*Math.random())];return{token:["1",Mi,s].join(""),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt}_isSkuTokenExpired(){return Date.now()>this._skuTokenExpiresAt}transformRequest(t,s){return this._transformRequestFn&&this._transformRequestFn(t,s)||{url:t}}normalizeStyleURL(t,s){if(!i.f(t))return t;const h=Si(t);return h.params.push(`sdk=js-${O}`),h.path=`/styles/v1${h.path}`,this._makeAPIURL(h,this._customAccessToken||s)}normalizeGlyphsURL(t,s){if(!i.f(t))return t;const h=Si(t);return h.path=`/fonts/v1${h.path}`,this._makeAPIURL(h,this._customAccessToken||s)}normalizeModelURL(t,s){if(!i.f(t))return t;const h=Si(t);return h.path=`/models/v1${h.path}`,this._makeAPIURL(h,this._customAccessToken||s)}normalizeSourceURL(t,s,h,_){if(!i.f(t))return t;const y=Si(t);return y.path=`/v4/${y.authority}.json`,y.params.push("secure"),h&&y.params.push(`language=${h}`),_&&y.params.push(`worldview=${_}`),this._makeAPIURL(y,this._customAccessToken||s)}normalizeIconsetURL(t,s){const h=Si(t);return i.f(t)?(h.path=`/styles/v1${h.path}/iconset.pbf`,this._makeAPIURL(h,this._customAccessToken||s)):Qi(h)}normalizeSpriteURL(t,s,h,_){const y=Si(t);return i.f(t)?(y.path=`/styles/v1${y.path}/sprite${s}${h}`,this._makeAPIURL(y,this._customAccessToken||_)):(y.path+=`${s}${h}`,Qi(y))}normalizeTileURL(t,s,h){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!i.f(t))return t;const _=Si(t);_.path=_.path.replace(/(\.(png|jpg)\d*)(?=$)/,`${s||h&&_.authority!=="raster"&&h===512?"@2x":""}${i.m.supported?".webp":"$1"}`),_.authority==="raster"?_.path=`/${i.e.RASTER_URL_PREFIX}${_.path}`:_.authority==="rasterarrays"?_.path=`/${i.e.RASTERARRAYS_URL_PREFIX}${_.path}`:_.authority==="3dtiles"?_.path=`/${i.e.TILES3D_URL_PREFIX}${_.path}`:(_.path=_.path.replace(/^.+\/v4\//,"/"),_.path=`/${i.e.TILE_URL_VERSION}${_.path}`);const y=this._customAccessToken||function(T){for(const z of T){const R=z.match(/^access_token=(.*)$/);if(R)return R[1]}return null}(_.params)||i.e.ACCESS_TOKEN;return i.e.REQUIRE_ACCESS_TOKEN&&y&&this._skuToken&&_.params.push(`sku=${this._skuToken}`),this._makeAPIURL(_,y)}canonicalizeTileURL(t,s){const h=Si(t);if(!h.path.match(/^(\/v4\/|\/(raster|rasterarrays)\/v1\/)/)||!h.path.match(/\.[\w]+$/))return t;let _="mapbox://";h.path.match(/^\/raster\/v1\//)?_+=`raster/${h.path.replace(`/${i.e.RASTER_URL_PREFIX}/`,"")}`:h.path.match(/^\/rasterarrays\/v1\//)?_+=`rasterarrays/${h.path.replace(`/${i.e.RASTERARRAYS_URL_PREFIX}/`,"")}`:_+=`tiles/${h.path.replace(`/${i.e.TILE_URL_VERSION}/`,"")}`;let y=h.params;return s&&(y=y.filter(T=>!T.match(/^access_token=/))),y.length&&(_+=`?${y.join("&")}`),_}canonicalizeTileset(t,s){const h=!!s&&i.f(s),_=[];for(const y of t.tiles||[])i.h(y)?_.push(this.canonicalizeTileURL(y,h)):_.push(y);return _}_makeAPIURL(t,s){const h="See https://docs.mapbox.com/api/overview/#access-tokens-and-token-scopes",_=Si(i.e.API_URL);if(t.protocol=_.protocol,t.authority=_.authority,t.protocol==="http"){const y=t.params.indexOf("secure");y>=0&&t.params.splice(y,1)}if(_.path!=="/"&&(t.path=`${_.path}${t.path}`),!i.e.REQUIRE_ACCESS_TOKEN)return Qi(t);if(s=s||i.e.ACCESS_TOKEN,!this._silenceAuthErrors){if(!s)throw new Error(`An API access token is required to use Mapbox GL. ${h}`);if(s[0]==="s")throw new Error(`Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). ${h}`)}return t.params=t.params.filter(y=>y.indexOf("access_token")===-1),t.params.push(`access_token=${s||""}`),Qi(t)}}const Ht=/^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/;function Si(c){const t=c.match(Ht);if(!t)throw new Error("Unable to parse URL object");return{protocol:t[1],authority:t[2],path:t[3]||"/",params:t[4]?t[4].split("&"):[]}}function Qi(c){const t=c.params.length?`?${c.params.join("&")}`:"";return`${c.protocol}://${c.authority}${c.path}${t}`}const fi="mapbox.eventData";function jt(c){if(!c)return null;const t=c.split(".");if(!t||t.length!==3)return null;try{return JSON.parse(i.j(t[1]))}catch{return null}}class ni{constructor(t){this.type=t,this.anonId=null,this.eventData={},this.queue=[],this.pendingRequest=null}getStorageKey(t){const s=jt(i.e.ACCESS_TOKEN);let h="";return h=s&&s.u?i.k(s.u):i.e.ACCESS_TOKEN||"",t?`${fi}.${t}:${h}`:`${fi}:${h}`}fetchEventData(){const t=i.s("localStorage"),s=this.getStorageKey(),h=this.getStorageKey("uuid");if(t)try{const _=localStorage.getItem(s);_&&(this.eventData=JSON.parse(_));const y=localStorage.getItem(h);y&&(this.anonId=y)}catch{i.w("Unable to read from LocalStorage")}}saveEventData(){const t=i.s("localStorage"),s=this.getStorageKey(),h=this.getStorageKey("uuid"),_=this.anonId;if(t&&_)try{localStorage.setItem(h,_),Object.keys(this.eventData).length>=1&&localStorage.setItem(s,JSON.stringify(this.eventData))}catch{i.w("Unable to write to LocalStorage")}}processRequests(t){}postEvent(t,s,h,_){if(!i.e.EVENTS_URL)return;const y=Si(i.e.EVENTS_URL);y.params.push(`access_token=${_||i.e.ACCESS_TOKEN||""}`);const T={event:this.type,created:new Date(t).toISOString()},z=s?i.l(T,s):T,R={url:Qi(y),headers:{"Content-Type":"text/plain"},body:JSON.stringify([z])};this.pendingRequest=i.p(R,F=>{this.pendingRequest=null,h(F),this.saveEventData(),this.processRequests(_)})}queueRequest(t,s){this.queue.push(t),this.processRequests(s)}}const Gi=new class extends ni{constructor(c){super("appUserTurnstile"),this._customAccessToken=c}postTurnstileEvent(c,t){i.e.EVENTS_URL&&i.e.ACCESS_TOKEN&&Array.isArray(c)&&c.some(s=>i.f(s)||i.h(s))&&this.queueRequest(Date.now(),t)}processRequests(c){if(this.pendingRequest||this.queue.length===0)return;this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();const t=jt(i.e.ACCESS_TOKEN),s=t?t.u:i.e.ACCESS_TOKEN;let h=s!==this.eventData.tokenU;i.v(this.anonId)||(this.anonId=i.u(),h=!0);const _=this.queue.shift();if(this.eventData.lastSuccess){const y=new Date(this.eventData.lastSuccess),T=new Date(_),z=(_-this.eventData.lastSuccess)/864e5;h=h||z>=1||z<-1||y.getDate()!==T.getDate()}else h=!0;h?this.postEvent(_,{sdkIdentifier:"mapbox-gl-js",sdkVersion:O,skuId:Mi,"enabled.telemetry":!1,userId:this.anonId},y=>{y||(this.eventData.lastSuccess=_,this.eventData.tokenU=s)},c):this.processRequests()}},an=Gi.postTurnstileEvent.bind(Gi),qt=new class extends ni{constructor(){super("map.load"),this.success={},this.skuToken=""}postMapLoadEvent(c,t,s,h){this.skuToken=t,this.errorCb=h,i.e.EVENTS_URL&&(s||i.e.ACCESS_TOKEN?this.queueRequest({id:c,timestamp:Date.now()},s):this.errorCb(new Error(Pn)))}processRequests(c){if(this.pendingRequest||this.queue.length===0)return;const{id:t,timestamp:s}=this.queue.shift();t&&this.success[t]||(this.anonId||this.fetchEventData(),i.v(this.anonId)||(this.anonId=i.u()),this.postEvent(s,{sdkIdentifier:"mapbox-gl-js",sdkVersion:O,skuId:Mi,skuToken:this.skuToken,userId:this.anonId},h=>{h?this.errorCb(h):t&&(this.success[t]=!0)},c))}remove(){this.errorCb=null}},ln=qt.postMapLoadEvent.bind(qt),Di=new class extends ni{constructor(){super("style.load"),this.eventIdPerMapInstanceMap=new Map,this.mapInstanceIdMap=new WeakMap}getMapInstanceId(c){let t=this.mapInstanceIdMap.get(c);return t||(t=i.u(),this.mapInstanceIdMap.set(c,t)),t}getEventId(c){const t=this.eventIdPerMapInstanceMap.get(c)||0;return this.eventIdPerMapInstanceMap.set(c,t+1),t}postStyleLoadEvent(c,t){const{map:s,style:h,importedStyles:_}=t;if(!i.e.EVENTS_URL||!c&&!i.e.ACCESS_TOKEN)return;const y=this.getMapInstanceId(s),T={mapInstanceId:y,eventId:this.getEventId(y),style:h};_.length&&(T.importedStyles=_),this.queueRequest({timestamp:Date.now(),payload:T},c)}processRequests(c){if(this.pendingRequest||this.queue.length===0)return;const{timestamp:t,payload:s}=this.queue.shift();this.postEvent(t,s,()=>{},c)}},xi=Di.postStyleLoadEvent.bind(Di),Is=new class extends ni{constructor(){super("gljs.performance")}postPerformanceEvent(c,t){i.e.EVENTS_URL&&(c||i.e.ACCESS_TOKEN)&&this.queueRequest({timestamp:Date.now(),performanceData:t},c)}processRequests(c){if(this.pendingRequest||this.queue.length===0)return;const{timestamp:t,performanceData:s}=this.queue.shift(),h=function(_){const y=performance.getEntriesByType("resource"),T=performance.getEntriesByType("mark"),z=function(W){const te={};if(W){for(const ee in W)if(ee!=="other")for(const se of W[ee]){const oe=`${ee}ResolveRangeMin`,he=`${ee}ResolveRangeMax`,_e=`${ee}RequestCount`,pe=`${ee}RequestCachedCount`;te[oe]=Math.min(te[oe]||1/0,se.startTime),te[he]=Math.max(te[he]||-1/0,se.responseEnd);const Me=xe=>{te[xe]===void 0&&(te[xe]=0),++te[xe]};se.transferSize!==void 0&&se.transferSize===0&&Me(pe),Me(_e)}}return te}(function(W,te){const ee={};if(W)for(const se of W){const oe=te(se);ee[oe]===void 0&&(ee[oe]=[]),ee[oe].push(se)}return ee}(y,J)),R=window.devicePixelRatio,F=navigator.connection||navigator.mozConnection||navigator.webkitConnection,N=F?F.effectiveType:void 0,G={counters:[],metadata:[],attributes:[]},Z=(W,te,ee)=>{ee!=null&&W.push({name:te,value:ee.toString()})};for(const W in z)Z(G.counters,W,z[W]);if(_.interactionRange[0]!==1/0&&_.interactionRange[1]!==-1/0&&(Z(G.counters,"interactionRangeMin",_.interactionRange[0]),Z(G.counters,"interactionRangeMax",_.interactionRange[1])),T)for(const W of Object.keys(j)){const te=j[W],ee=T.find(se=>se.name===te);ee&&Z(G.counters,te,ee.startTime)}return Z(G.counters,"visibilityHidden",_.visibilityHidden),Z(G.attributes,"style",function(W){if(W)for(const te of W){const ee=te.name.split("?")[0];if(i.i(ee)){const se=ee.split("/").slice(-2);if(se.length===2)return`mapbox://styles/${se[0]}/${se[1]}`}}}(y)),Z(G.attributes,"terrainEnabled",_.terrainEnabled?"true":"false"),Z(G.attributes,"fogEnabled",_.fogEnabled?"true":"false"),Z(G.attributes,"projection",_.projection),Z(G.attributes,"zoom",_.zoom),Z(G.metadata,"devicePixelRatio",R),Z(G.metadata,"connectionEffectiveType",N),Z(G.metadata,"navigatorUserAgent",navigator.userAgent),Z(G.metadata,"screenWidth",window.screen.width),Z(G.metadata,"screenHeight",window.screen.height),Z(G.metadata,"windowWidth",window.innerWidth),Z(G.metadata,"windowHeight",window.innerHeight),Z(G.metadata,"mapWidth",_.width/R),Z(G.metadata,"mapHeight",_.height/R),Z(G.metadata,"webglRenderer",_.renderer),Z(G.metadata,"webglVendor",_.vendor),Z(G.metadata,"sdkVersion",O),Z(G.metadata,"sdkIdentifier","mapbox-gl-js"),G}(s);for(const _ of h.metadata);for(const _ of h.counters);for(const _ of h.attributes);this.postEvent(t,h,()=>{},c)}},xs=Is.postPerformanceEvent.bind(Is),Ls=new class extends ni{constructor(){super("map.auth"),this.success={},this.skuToken=""}getSession(c,t,s,h){if(!i.e.API_URL||!i.e.SESSION_PATH)return;const _=Si(i.e.API_URL+i.e.SESSION_PATH);_.params.push(`sku=${t||""}`),_.params.push(`access_token=${h||i.e.ACCESS_TOKEN||""}`);const y={url:Qi(_),headers:{"Content-Type":"text/plain"}};this.pendingRequest=i.g(y,T=>{this.pendingRequest=null,s(T),this.saveEventData(),this.processRequests(h)})}getSessionAPI(c,t,s,h){this.skuToken=t,this.errorCb=h,i.e.SESSION_PATH&&i.e.API_URL&&(s||i.e.ACCESS_TOKEN?this.queueRequest({id:c,timestamp:Date.now()},s):this.errorCb(new Error(Pn)))}processRequests(c){if(this.pendingRequest||this.queue.length===0)return;const{id:t,timestamp:s}=this.queue.shift();t&&this.success[t]||this.getSession(s,this.skuToken,h=>{h?this.errorCb(h):t&&(this.success[t]=!0)},c)}remove(){this.errorCb=null}},De=Ls.getSessionAPI.bind(Ls),Vs=new Set;function Us(c,t){t?Vs.add(c):Vs.delete(c)}class Zr{constructor(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSourceCaches={},this._updatedPaintProps=new Set,this._updatedImages=new Set}isDirty(){return this._changed}setDirty(){this._changed=!0}getUpdatedSourceCaches(){return this._updatedSourceCaches}updateSourceCache(t,s){this._updatedSourceCaches[t]=s,this.setDirty()}discardSourceCacheUpdate(t){delete this._updatedSourceCaches[t]}updateLayer(t){const s=t.scope;this._updatedLayers[s]=this._updatedLayers[s]||new Set,this._updatedLayers[s].add(t.id),this.setDirty()}removeLayer(t){const s=t.scope;this._removedLayers[s]=this._removedLayers[s]||{},this._updatedLayers[s]=this._updatedLayers[s]||new Set,this._removedLayers[s][t.id]=t,this._updatedLayers[s].delete(t.id),this._updatedPaintProps.delete(t.fqid),this.setDirty()}getRemovedLayer(t){return this._removedLayers[t.scope]?this._removedLayers[t.scope][t.id]:null}discardLayerRemoval(t){this._removedLayers[t.scope]&&delete this._removedLayers[t.scope][t.id]}getLayerUpdatesByScope(){const t={};for(const s in this._updatedLayers)t[s]=t[s]||{},t[s].updatedIds=Array.from(this._updatedLayers[s].values());for(const s in this._removedLayers)t[s]=t[s]||{},t[s].removedIds=Object.keys(this._removedLayers[s]);return t}getUpdatedPaintProperties(){return this._updatedPaintProps}updatePaintProperties(t){this._updatedPaintProps.add(t.fqid),this.setDirty()}getUpdatedImages(){return Array.from(this._updatedImages.values())}updateImage(t){this._updatedImages.add(t),this.setDirty()}resetUpdatedImages(){this._updatedImages.clear()}reset(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSourceCaches={},this._updatedPaintProps.clear(),this._updatedImages.clear()}}function Et(c){const{userImage:t}=c;return!!(t&&t.render&&t.render())&&(c.data.replace(new Uint8Array(t.data.buffer)),!0)}class $s extends i.E{constructor(t){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded={},this.requestors=[],this.patterns={},this.atlasImage={},this.atlasTexture={},this.dirty=!0,this.spriteFormat=t,t!=="raster"&&i.t()&&(this.imageRasterizerDispatcher=new i.D(i.x(),this,"Image Rasterizer Worker",1))}get imageRasterizer(){return this._imageRasterizer||(this._imageRasterizer=new i.I),this._imageRasterizer}createScope(t){this.images[t]={},this.loaded[t]=!1,this.updatedImages[t]={},this.patterns[t]={},this.callbackDispatchedThisFrame[t]={},this.atlasImage[t]=new i.r({width:1,height:1})}isLoaded(){for(const t in this.loaded)if(!this.loaded[t])return!1;return!0}setLoaded(t,s){if(this.loaded[s]!==t&&(this.loaded[s]=t,t)){for(const{ids:h,callback:_}of this.requestors)this._notify(h,s,_);this.requestors=[]}}hasImage(t,s){return!!this.getImage(t,s)}getImage(t,s){return this.images[s][t]}addImage(t,s,h){this._validate(t,h)&&(this.images[s][t]=h)}_validate(t,s){let h=!0;return this._validateStretch(s.stretchX,s.data&&s.data.width)||(this.fire(new i.y(new Error(`Image "${t}" has invalid "stretchX" value`))),h=!1),this._validateStretch(s.stretchY,s.data&&s.data.height)||(this.fire(new i.y(new Error(`Image "${t}" has invalid "stretchY" value`))),h=!1),this._validateContent(s.content,s)||(this.fire(new i.y(new Error(`Image "${t}" has invalid "content" value`))),h=!1),h}_validateStretch(t,s){if(!t)return!0;let h=0;for(const _ of t){if(_[0]<h||_[1]<_[0]||s<_[1])return!1;h=_[1]}return!0}_validateContent(t,s){return t?t.length!==4||!s.usvg&&(t[0]<0||s.data.width<t[0]||t[1]<0||s.data.height<t[1]||t[2]<0||s.data.width<t[2]||t[3]<0||s.data.height<t[3])?!1:!(t[2]<t[0]||t[3]<t[1]):!0}updateImage(t,s,h){h.version=this.images[s][t].version+1,this.images[s][t]=h,this.updatedImages[s][t]=!0,this.removeFromImageRasterizerCache(t,s)}removeFromImageRasterizerCache(t,s){this.spriteFormat!=="raster"&&(i.t()?this.imageRasterizerDispatcher.getActor().send("removeRasterizedImages",{imageIds:[t],scope:s}):this.imageRasterizer.removeImagesFromCacheByIds([t],s))}removeImage(t,s){const h=this.images[s][t];delete this.images[s][t],delete this.patterns[s][t],this.removeFromImageRasterizerCache(t,s),h.userImage&&h.userImage.onRemove&&h.userImage.onRemove()}listImages(t){return Object.keys(this.images[t])}getImages(t,s,h){let _=!0;const y=!!this.loaded[s];if(!y)for(const T of t)this.images[s][T]||(_=!1);y||_?this._notify(t,s,h):this.requestors.push({ids:t,scope:s,callback:h})}rasterizeImages({scope:t,imageTasks:s},h){const _={};for(const y in s){const T=s[y],z=this.getImage(T.id,t);z&&(_[y]={image:z,imageIdWithOptions:T})}i.t()?this.imageRasterizerDispatcher.getActor().send("rasterizeImages",{imageTasks:_,scope:t},h):this.rasterizeImagesInMainThread({imageTasks:_,scope:t},h)}rasterizeImagesInMainThread(t,s){const{imageTasks:h,scope:_}=t,y={};for(const T in h){const{image:z,imageIdWithOptions:R}=h[T];y[T]=this.imageRasterizer.rasterize(R,z,_,"")}s(void 0,y)}getUpdatedImages(t){return this.updatedImages[t]}_notify(t,s,h){const _={};for(const y of t){this.images[s][y]||this.fire(new i.z("styleimagemissing",{id:y}));const T=this.images[s][y];T?_[y]={data:T.usvg?null:T.data.clone(),pixelRatio:T.pixelRatio,sdf:T.sdf,usvg:T.usvg,version:T.version,stretchX:T.stretchX,stretchY:T.stretchY,content:T.content,hasRenderCallback:!!(T.userImage&&T.userImage.render)}:i.w(`Image "${y}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`)}h(null,_)}getPixelSize(t){const{width:s,height:h}=this.atlasImage[t];return{width:s,height:h}}getPattern(t,s,h){const _=this.patterns[s][t],y=this.getImage(t,s);if(!y)return null;if(_&&_.position.version===y.version)return _.position;if(_)_.position.version=y.version;else{y.usvg&&!y.data&&(y.data=this.imageRasterizer.rasterize(i.A.from(t).getPrimary(),y,s,""));const T={w:y.data.width+2*i.B,h:y.data.height+2*i.B,x:0,y:0},z=new i.F(T,y,i.B);this.patterns[s][t]={bin:T,position:z}}return this._updatePatternAtlas(s,h),this.patterns[s][t].position}bind(t,s){const h=t.gl;let _=this.atlasTexture[s];_?this.dirty&&(_.update(this.atlasImage[s]),this.dirty=!1):(_=new i.T(t,this.atlasImage[s],h.RGBA8),this.atlasTexture[s]=_),_.bind(h.LINEAR,h.CLAMP_TO_EDGE)}_updatePatternAtlas(t,s){const h=[];for(const z in this.patterns[t])h.push(this.patterns[t][z].bin);const{w:_,h:y}=i.C(h),T=this.atlasImage[t];T.resize({width:_||1,height:y||1});for(const z in this.patterns[t]){const{bin:R,position:F}=this.patterns[t][z];let N=F.padding;const G=R.x+N,Z=R.y+N,W=this.images[t][z].data,te=W.width,ee=W.height;N=N>1?N-1:N,i.r.copy(W,T,{x:0,y:0},{x:G,y:Z},{width:te,height:ee},s),i.r.copy(W,T,{x:0,y:ee-N},{x:G,y:Z-N},{width:te,height:N},s),i.r.copy(W,T,{x:0,y:0},{x:G,y:Z+ee},{width:te,height:N},s),i.r.copy(W,T,{x:te-N,y:0},{x:G-N,y:Z},{width:N,height:ee},s),i.r.copy(W,T,{x:0,y:0},{x:G+te,y:Z},{width:N,height:ee},s),i.r.copy(W,T,{x:te-N,y:ee-N},{x:G-N,y:Z-N},{width:N,height:N},s),i.r.copy(W,T,{x:0,y:ee-N},{x:G+te,y:Z-N},{width:N,height:N},s),i.r.copy(W,T,{x:0,y:0},{x:G+te,y:Z+ee},{width:N,height:N},s),i.r.copy(W,T,{x:te-N,y:0},{x:G-N,y:Z+ee},{width:N,height:N},s)}this.dirty=!0}beginFrame(){for(const t in this.images)this.callbackDispatchedThisFrame[t]={}}dispatchRenderCallbacks(t,s){for(const h of t){if(this.callbackDispatchedThisFrame[s][h])continue;this.callbackDispatchedThisFrame[s][h]=!0;const _=this.images[s][h];Et(_)&&this.updateImage(h,s,_)}}}function $n(c){const t=c.key,s=c.value,h=c.valueSpec||{},_=c.objectElementValidators||{},y=c.style,T=c.styleSpec;let z=[];const R=i.H(s);if(R!=="object")return[new i.V(t,s,`object expected, ${R} found`)];for(const F in s){const N=F.split(".")[0];let G;_[N]?G=_[N]:h[N]?G=mi:_["*"]?G=_["*"]:h["*"]&&(G=mi),G?z=z.concat(G({key:(t&&`${t}.`)+F,value:s[F],valueSpec:h[N]||h["*"],style:y,styleSpec:T,object:s,objectKey:F},s)):z.push(new i.G(t,s[F],`unknown property "${F}"`))}for(const F in h)_[F]||h[F].required&&h[F].default===void 0&&s[F]===void 0&&z.push(new i.V(t,s,`missing required property "${F}"`));return z}function Xs(c){const t=c.value,s=c.valueSpec,h=c.style,_=c.styleSpec,y=c.key,T=c.arrayElementValidator||mi;if(i.H(t)!=="array")return[new i.V(y,t,`array expected, ${i.H(t)} found`)];if(s.length&&t.length!==s.length)return[new i.V(y,t,`array length ${s.length} expected, length ${t.length} found`)];if(s["min-length"]&&t.length<s["min-length"])return[new i.V(y,t,`array length at least ${s["min-length"]} expected, length ${t.length} found`)];let z={type:s.value,values:s.values,minimum:s.minimum,maximum:s.maximum,function:void 0};_.$version<7&&(z.function=s.function),i.H(s.value)==="object"&&(z=s.value);let R=[];for(let F=0;F<t.length;F++)R=R.concat(T({array:t,arrayIndex:F,value:t[F],valueSpec:z,style:h,styleSpec:_,key:`${y}[${F}]`},!0));return R}function vi(c){const t=c.key,s=c.value,h=c.valueSpec;let _=i.H(s);if(_==="number"&&s!=s&&(_="NaN"),_!=="number")return[new i.V(t,s,`number expected, ${_} found`)];if("minimum"in h){let y=h.minimum;if(i.H(h.minimum)==="array"&&(y=h.minimum[c.arrayIndex]),s<y)return[new i.V(t,s,`${s} is less than the minimum value ${y}`)]}if("maximum"in h){let y=h.maximum;if(i.H(h.maximum)==="array"&&(y=h.maximum[c.arrayIndex]),s>y)return[new i.V(t,s,`${s} is greater than the maximum value ${y}`)]}return[]}function kn(c){const t=c.valueSpec,s=i.K(c.value.type);let h,_,y,T={};const z=s!=="categorical"&&c.value.property===void 0,R=!z,F=i.H(c.value.stops)==="array"&&i.H(c.value.stops[0])==="array"&&i.H(c.value.stops[0][0])==="object",N=$n({key:c.key,value:c.value,valueSpec:c.styleSpec.function,style:c.style,styleSpec:c.styleSpec,objectElementValidators:{stops:function(W){if(s==="identity")return[new i.V(W.key,W.value,'identity function may not have a "stops" property')];let te=[];const ee=W.value;return te=te.concat(Xs({key:W.key,value:ee,valueSpec:W.valueSpec,style:W.style,styleSpec:W.styleSpec,arrayElementValidator:G})),i.H(ee)==="array"&&ee.length===0&&te.push(new i.V(W.key,ee,"array must have at least one stop")),te},default:function(W){return mi({key:W.key,value:W.value,valueSpec:t,style:W.style,styleSpec:W.styleSpec})}}});return s==="identity"&&z&&N.push(new i.V(c.key,c.value,'missing required property "property"')),s==="identity"||c.value.stops||N.push(new i.V(c.key,c.value,'missing required property "stops"')),s==="exponential"&&c.valueSpec.expression&&!i.L(c.valueSpec)&&N.push(new i.V(c.key,c.value,"exponential functions not supported")),c.styleSpec.$version>=8&&(R&&!i.M(c.valueSpec)?N.push(new i.V(c.key,c.value,"property functions not supported")):z&&!i.N(c.valueSpec)&&N.push(new i.V(c.key,c.value,"zoom functions not supported"))),s!=="categorical"&&!F||c.value.property!==void 0||N.push(new i.V(c.key,c.value,'"property" property is required')),N;function G(W){let te=[];const ee=W.value,se=W.key;if(i.H(ee)!=="array")return[new i.V(se,ee,`array expected, ${i.H(ee)} found`)];if(ee.length!==2)return[new i.V(se,ee,`array length 2 expected, length ${ee.length} found`)];if(F){if(i.H(ee[0])!=="object")return[new i.V(se,ee,`object expected, ${i.H(ee[0])} found`)];if(ee[0].zoom===void 0)return[new i.V(se,ee,"object stop key must have zoom")];if(ee[0].value===void 0)return[new i.V(se,ee,"object stop key must have value")];const oe=i.K(ee[0].zoom);if(typeof oe!="number")return[new i.V(se,ee[0].zoom,"stop zoom values must be numbers")];if(y&&y>oe)return[new i.V(se,ee[0].zoom,"stop zoom values must appear in ascending order")];oe!==y&&(y=oe,_=void 0,T={}),te=te.concat($n({key:`${se}[0]`,value:ee[0],valueSpec:{zoom:{}},style:W.style,styleSpec:W.styleSpec,objectElementValidators:{zoom:vi,value:Z}}))}else te=te.concat(Z({key:`${se}[0]`,value:ee[0],valueSpec:{},style:W.style,styleSpec:W.styleSpec},ee));return i.O(i.Q(ee[1]))?te.concat([new i.V(`${se}[1]`,ee[1],"expressions are not allowed in function stops.")]):te.concat(mi({key:`${se}[1]`,value:ee[1],valueSpec:t,style:W.style,styleSpec:W.styleSpec}))}function Z(W,te){const ee=i.H(W.value),se=i.K(W.value),oe=W.value!==null?W.value:te;if(h){if(ee!==h)return[new i.V(W.key,oe,`${ee} stop domain type must match previous stop domain type ${h}`)]}else h=ee;if(ee!=="number"&&ee!=="string"&&ee!=="boolean"&&typeof se!="number"&&typeof se!="string"&&typeof se!="boolean")return[new i.V(W.key,oe,"stop domain value must be a number, string, or boolean")];if(ee!=="number"&&s!=="categorical"){let he=`number expected, ${ee} found`;return i.M(t)&&s===void 0&&(he+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new i.V(W.key,oe,he)]}return s!=="categorical"||ee!=="number"||typeof se=="number"&&isFinite(se)&&Math.floor(se)===se?s!=="categorical"&&ee==="number"&&typeof se=="number"&&typeof _=="number"&&_!==void 0&&se<_?[new i.V(W.key,oe,"stop domain values must appear in ascending order")]:(_=se,s==="categorical"&&se in T?[new i.V(W.key,oe,"stop domain values must be unique")]:(T[se]=!0,[])):[new i.V(W.key,oe,`integer expected, found ${String(se)}`)]}}function Ys(c){const t=(c.expressionContext==="property"?i.S:i.U)(i.Q(c.value),c.valueSpec);if(t.result==="error")return t.value.map(h=>new i.V(`${c.key}${h.key}`,c.value,h.message));const s=t.value.expression||t.value._styleExpression.expression;if(c.expressionContext==="property"&&c.propertyKey==="text-font"&&!s.outputDefined())return[new i.V(c.key,c.value,`Invalid data expression for "${c.propertyKey}". Output values must be contained as literals within the expression.`)];if(c.expressionContext==="property"&&c.propertyType==="layout"&&!i.W(s))return[new i.V(c.key,c.value,'"feature-state" data expressions are not supported with layout properties.')];if(c.expressionContext==="filter")return Hr(s,c);if(c.expressionContext&&c.expressionContext.indexOf("cluster")===0){if(!i.X(s,["zoom","feature-state"]))return[new i.V(c.key,c.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(c.expressionContext==="cluster-initial"&&!i.Y(s))return[new i.V(c.key,c.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function Hr(c,t){const s=new Set(["zoom","feature-state","pitch","distance-from-center"]);if(t.valueSpec&&t.valueSpec.expression)for(const _ of t.valueSpec.expression.parameters)s.delete(_);if(s.size===0)return[];const h=[];return c instanceof i.Z&&s.has(c.name)?[new i.V(t.key,t.value,`["${c.name}"] expression is not supported in a filter for a ${t.object.type} layer with id: ${t.object.id}`)]:(c.eachChild(_=>{h.push(...Hr(_,t))}),h)}function qr(c){const t=c.key,s=c.value,h=c.valueSpec,_=[];return Array.isArray(h.values)?h.values.indexOf(i.K(s))===-1&&_.push(new i.V(t,s,`expected one of [${h.values.join(", ")}], ${JSON.stringify(s)} found`)):Object.keys(h.values).indexOf(i.K(s))===-1&&_.push(new i.V(t,s,`expected one of [${Object.keys(h.values).join(", ")}], ${JSON.stringify(s)} found`)),_}function Wr(c){return i.$(i.Q(c.value))?Ys(i.J({},c,{expressionContext:"filter",valueSpec:c.styleSpec[`filter_${c.layerType||"fill"}`]})):si(c)}function si(c){const t=c.value,s=c.key;if(i.H(t)!=="array")return[new i.V(s,t,`array expected, ${i.H(t)} found`)];const h=c.styleSpec;let _,y=[];if(t.length<1)return[new i.V(s,t,"filter array must have at least 1 element")];switch(y=y.concat(qr({key:`${s}[0]`,value:t[0],valueSpec:h.filter_operator,style:c.style,styleSpec:c.styleSpec})),i.K(t[0])){case"<":case"<=":case">":case">=":t.length>=2&&i.K(t[1])==="$type"&&y.push(new i.V(s,t,`"$type" cannot be use with operator "${t[0]}"`));case"==":case"!=":t.length!==3&&y.push(new i.V(s,t,`filter array for operator "${t[0]}" must have 3 elements`));case"in":case"!in":t.length>=2&&(_=i.H(t[1]),_!=="string"&&y.push(new i.V(`${s}[1]`,t[1],`string expected, ${_} found`)));for(let T=2;T<t.length;T++)_=i.H(t[T]),i.K(t[1])==="$type"?y=y.concat(qr({key:`${s}[${T}]`,value:t[T],valueSpec:h.geometry_type,style:c.style,styleSpec:c.styleSpec})):_!=="string"&&_!=="number"&&_!=="boolean"&&y.push(new i.V(`${s}[${T}]`,t[T],`string, number, or boolean expected, ${_} found`));break;case"any":case"all":case"none":for(let T=1;T<t.length;T++)y=y.concat(si({key:`${s}[${T}]`,value:t[T],style:c.style,styleSpec:c.styleSpec}));break;case"has":case"!has":_=i.H(t[1]),t.length!==2?y.push(new i.V(s,t,`filter array for "${t[0]}" operator must have 2 elements`)):_!=="string"&&y.push(new i.V(`${s}[1]`,t[1],`string expected, ${_} found`))}return y}function ps(c,t){const s=c.key,h=c.style,_=c.layer,y=c.styleSpec,T=c.value,z=c.objectKey,R=y[`${t}_${c.layerType}`];if(!R)return[];const F=z.match(/^(.*)-use-theme$/);if(t==="paint"&&F&&R[F[1]])return mi({key:s,value:T,valueSpec:{type:"string"},style:h,styleSpec:y});const N=z.match(/^(.*)-transition$/);if(t==="paint"&&N&&R[N[1]]&&R[N[1]].transition)return mi({key:s,value:T,valueSpec:y.transition,style:h,styleSpec:y});const G=c.valueSpec||R[z];if(!G)return[new i.G(s,T,`unknown property "${z}"`)];let Z;if(i.H(T)==="string"&&i.M(G)&&!G.tokens&&(Z=/^{([^}]+)}$/.exec(T))){const te=`\`{ "type": "identity", "property": ${Z?JSON.stringify(Z[1]):'"_"'} }\``;return[new i.V(s,T,`"${z}" does not support interpolation syntax
|
||
Use an identity property function instead: ${te}.`)]}const W=[];if(c.layerType==="symbol")z!=="text-field"||!h||h.glyphs||h.imports||W.push(new i.V(s,T,'use of "text-field" requires a style "glyphs" property')),z==="text-font"&&i.a0(i.Q(T))&&i.K(T.type)==="identity"&&W.push(new i.V(s,T,'"text-font" does not support identity functions'));else if(c.layerType==="model"&&t==="paint"&&_&&_.layout&&_.layout.hasOwnProperty("model-id")&&i.M(G)&&(i.a1(G)||i.N(G))){const te=i.S(i.Q(T),G),ee=te.value.expression||te.value._styleExpression.expression;ee&&!i.X(ee,["measure-light"])&&(z==="model-emissive-strength"&&i.Y(ee)&&i.W(ee)||W.push(new i.V(s,T,`${z} does not support measure-light expressions when the model layer source is vector tile or GeoJSON.`)))}return W.concat(mi({key:c.key,value:T,valueSpec:G,style:h,styleSpec:y,expressionContext:"property",propertyType:t,propertyKey:z}))}function zn(c){return ps(c,"paint")}function Rn(c){return ps(c,"layout")}function An(c){let t=[];const s=c.value,h=c.key,_=c.style,y=c.styleSpec;s.type||s.ref||t.push(new i.V(h,s,'either "type" or "ref" is required'));let T=i.K(s.type);const z=i.K(s.ref);if(s.id){const R=i.K(s.id);for(let F=0;F<c.arrayIndex;F++){const N=_.layers[F];i.K(N.id)===R&&t.push(new i.V(h,s.id,`duplicate layer id "${s.id}", previously used at line ${N.id.__line__}`))}}if("ref"in s){let R;["type","source","source-layer","filter","layout"].forEach(F=>{F in s&&t.push(new i.V(h,s[F],`"${F}" is prohibited for ref layers`))}),_.layers.forEach(F=>{i.K(F.id)===z&&(R=F)}),R?R.ref?t.push(new i.V(h,s.ref,"ref cannot reference another ref layer")):T=i.K(R.type):typeof z=="string"&&t.push(new i.V(h,s.ref,`ref layer "${z}" not found`))}else if(T!=="background"&&T!=="sky"&&T!=="slot")if(s.source){const R=_.sources&&_.sources[s.source],F=R&&i.K(R.type);R?F==="vector"&&T==="raster"?t.push(new i.V(h,s.source,`layer "${s.id}" requires a raster source`)):F==="raster"&&T!=="raster"?t.push(new i.V(h,s.source,`layer "${s.id}" requires a vector source`)):F!=="vector"||s["source-layer"]?F==="raster-dem"&&T!=="hillshade"?t.push(new i.V(h,s.source,"raster-dem source can only be used with layer type 'hillshade'.")):F!=="raster-array"||["raster","raster-particle"].includes(T)?T!=="line"||!s.paint||!s.paint["line-gradient"]&&!s.paint["line-trim-offset"]||F==="geojson"&&R.lineMetrics?T==="raster-particle"&&F!=="raster-array"&&t.push(new i.V(h,s.source,`layer "${s.id}" requires a 'raster-array' source.`)):t.push(new i.V(h,s,`layer "${s.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):t.push(new i.V(h,s.source,"raster-array source can only be used with layer type 'raster'.")):t.push(new i.V(h,s,`layer "${s.id}" must specify a "source-layer"`)):t.push(new i.V(h,s.source,`source "${s.source}" not found`))}else t.push(new i.V(h,s,'missing required property "source"'));return t=t.concat($n({key:h,value:s,valueSpec:y.layer,style:c.style,styleSpec:c.styleSpec,objectElementValidators:{"*":()=>[],type:()=>mi({key:`${h}.type`,value:s.type,valueSpec:y.layer.type,style:c.style,styleSpec:c.styleSpec,object:s,objectKey:"type"}),filter:R=>Wr(i.J({layerType:T},R)),layout:R=>$n({layer:s,key:R.key,value:R.value,valueSpec:{},style:R.style,styleSpec:R.styleSpec,objectElementValidators:{"*":F=>Rn(i.J({layerType:T},F))}}),paint:R=>$n({layer:s,key:R.key,value:R.value,valueSpec:{},style:R.style,styleSpec:R.styleSpec,objectElementValidators:{"*":F=>zn(i.J({layerType:T,layer:s},F))}})}})),t}function js(c){const t=c.value,s=c.key,h=i.H(t);return h!=="string"?[new i.V(s,t,`string expected, ${h} found`)]:[]}const vo={promoteId:function({key:c,value:t}){if(i.H(t)==="string")return js({key:c,value:t});{const s=[];for(const h in t)s.push(...js({key:`${c}.${h}`,value:t[h]}));return s}}};function bo(c){const t=c.value,s=c.key,h=c.styleSpec,_=c.style;if(!t.type)return[new i.V(s,t,'"type" is required')];const y=i.K(t.type);let T=[];switch(["vector","raster","raster-dem","raster-array"].includes(y)&&(t.url||t.tiles||T.push(new i.G(s,t,'Either "url" or "tiles" is required.'))),y){case"vector":case"raster":case"raster-dem":case"raster-array":return T=T.concat($n({key:s,value:t,valueSpec:h[`source_${y.replace("-","_")}`],style:c.style,styleSpec:h,objectElementValidators:vo})),T;case"geojson":if(T=$n({key:s,value:t,valueSpec:h.source_geojson,style:_,styleSpec:h,objectElementValidators:vo}),t.cluster)for(const z in t.clusterProperties){const[R,F]=t.clusterProperties[z],N=typeof R=="string"?[R,["accumulated"],["get",z]]:R;T.push(...Ys({key:`${s}.${z}.map`,value:F,expressionContext:"cluster-map"})),T.push(...Ys({key:`${s}.${z}.reduce`,value:N,expressionContext:"cluster-reduce"}))}return T;case"video":return $n({key:s,value:t,valueSpec:h.source_video,style:_,styleSpec:h});case"image":return $n({key:s,value:t,valueSpec:h.source_image,style:_,styleSpec:h});case"canvas":return[new i.V(s,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return qr({key:`${s}.type`,value:t.type,valueSpec:{values:wo(h)},style:_,styleSpec:h})}}function wo(c){return c.source.reduce((t,s)=>{const h=c[s];return h.type.type==="enum"&&(t=t.concat(Object.keys(h.type.values))),t},[])}function yr(c){const t=c.value,s=c.styleSpec,h=s.light,_=c.style;let y=[];const T=i.H(t);if(t===void 0)return y;if(T!=="object")return y=y.concat([new i.V("light",t,`object expected, ${T} found`)]),y;for(const z in t){const R=z.match(/^(.*)-transition$/),F=z.match(/^(.*)-use-theme$/);y=y.concat(F&&h[F[1]]?mi({key:z,value:t[z],valueSpec:{type:"string"},style:_,styleSpec:s}):R&&h[R[1]]&&h[R[1]].transition?mi({key:z,value:t[z],valueSpec:s.transition,style:_,styleSpec:s}):h[z]?mi({key:z,value:t[z],valueSpec:h[z],style:_,styleSpec:s}):[new i.V(z,t[z],`unknown property "${z}"`)])}return y}function Pr(c){const t=c.value;let s=[];if(!t)return s;const h=i.H(t);if(h!=="object")return s=s.concat([new i.V("light-3d",t,`object expected, ${h} found`)]),s;const _=c.styleSpec,y=_["light-3d"],T=c.key,z=c.style,R=c.style.lights;for(const G of["type","id"])if(!(G in t))return s=s.concat([new i.V("light-3d",t,`missing property ${G} on light`)]),s;if(t.type&&R)for(let G=0;G<c.arrayIndex;G++){const Z=i.K(t.type),W=R[G];i.K(W.type)===Z&&s.push(new i.V(T,t.id,`duplicate light type "${t.type}", previously defined at line ${W.id.__line__}`))}const F=`properties_light_${t.type}`;if(!(F in _))return s=s.concat([new i.V("light-3d",t,`Invalid light type ${t.type}`)]),s;const N=_[F];for(const G in t)if(G==="properties"){const Z=t[G],W=i.H(Z);if(W!=="object")return s=s.concat([new i.V("properties",Z,`object expected, ${W} found`)]),s;for(const te in Z)s=s.concat(N[te]?mi({key:te,value:Z[te],valueSpec:N[te],style:z,styleSpec:_}):[new i.G(c.key,Z[te],`unknown property "${te}"`)])}else{const Z=G.match(/^(.*)-transition$/),W=G.match(/^(.*)-use-theme$/);s=s.concat(W&&y[W[1]]?mi({key:G,value:t[G],valueSpec:{type:"string"},style:z,styleSpec:_}):Z&&y[Z[1]]&&y[Z[1]].transition?mi({key:G,value:t[G],valueSpec:_.transition,style:z,styleSpec:_}):y[G]?mi({key:G,value:t[G],valueSpec:y[G],style:z,styleSpec:_}):[new i.G(G,t[G],`unknown property "${G}"`)])}return s}function ro(c){const t=c.value,s=c.key,h=c.style,_=c.styleSpec,y=_.terrain;let T=[];const z=i.H(t);if(t===void 0||z==="null")return T;if(z!=="object")return T=T.concat([new i.V("terrain",t,`object expected, ${z} found`)]),T;for(const R in t){const F=R.match(/^(.*)-transition$/),N=R.match(/^(.*)-use-theme$/);T=T.concat(N&&y[N[1]]?mi({key:R,value:t[R],valueSpec:{type:"string"},style:h,styleSpec:_}):F&&y[F[1]]&&y[F[1]].transition?mi({key:R,value:t[R],valueSpec:_.transition,style:h,styleSpec:_}):y[R]?mi({key:R,value:t[R],valueSpec:y[R],style:h,styleSpec:_}):[new i.G(R,t[R],`unknown property "${R}"`)])}if(t.source){const R=h.sources&&h.sources[t.source],F=R&&i.K(R.type);R?F!=="raster-dem"&&T.push(new i.V(s,t.source,`terrain cannot be used with a source of type ${String(F)}, it only be used with a "raster-dem" source type`)):T.push(new i.V(s,t.source,`source "${t.source}" not found`))}else T.push(new i.V(s,t,'terrain is missing required property "source"'));return T}function Ks(c){const t=c.value,s=c.style,h=c.styleSpec,_=h.fog;let y=[];const T=i.H(t);if(t===void 0)return y;if(T!=="object")return y=y.concat([new i.V("fog",t,`object expected, ${T} found`)]),y;for(const z in t){const R=z.match(/^(.*)-transition$/),F=z.match(/^(.*)-use-theme$/);y=y.concat(F&&_[F[1]]?mi({key:z,value:t[z],valueSpec:{type:"string"},style:s,styleSpec:h}):R&&_[R[1]]&&_[R[1]].transition?mi({key:z,value:t[z],valueSpec:h.transition,style:s,styleSpec:h}):_[z]?mi({key:z,value:t[z],valueSpec:_[z],style:s,styleSpec:h}):[new i.G(z,t[z],`unknown property "${z}"`)])}return y}const Ar={"*":()=>[],array:Xs,boolean:function(c){const t=c.value,s=c.key,h=i.H(t);return h!=="boolean"?[new i.V(s,t,`boolean expected, ${h} found`)]:[]},number:vi,color:function(c){const t=c.key,s=c.value,h=i.H(s);return h!=="string"?[new i.V(t,s,`color expected, ${h} found`)]:i._.parseCSSColor(s)===null?[new i.V(t,s,`color expected, "${s}" found`)]:[]},enum:qr,filter:Wr,function:kn,layer:An,object:$n,source:bo,model:i.a2,light:yr,"light-3d":Pr,terrain:ro,fog:Ks,string:js,formatted:function(c){return js(c).length===0?[]:Ys(c)},resolvedImage:function(c){return js(c).length===0?[]:Ys(c)},projection:function(c){const t=c.value,s=c.styleSpec,h=s.projection,_=c.style;let y=[];const T=i.H(t);if(T==="object")for(const z in t)y=y.concat(mi({key:z,value:t[z],valueSpec:h[z],style:_,styleSpec:s}));else T!=="string"&&(y=y.concat([new i.V("projection",t,`object or string expected, ${T} found`)]));return y},import:function(c){const{value:t,styleSpec:s}=c,{data:h,..._}=t;Object.defineProperty(_,"__line__",{value:t.__line__,enumerable:!1});let y=$n(i.J({},c,{value:_,valueSpec:s.import}));return i.K(_.id)===""&&y.push(new i.V(`${c.key}.id`,_,"import id can't be an empty string")),h&&(y=y.concat(Un(h,s,{key:`${c.key}.data`}))),y}};function mi(c,t=!1){const s=c.value,h=c.valueSpec,_=c.styleSpec;if(h.expression&&i.a0(i.K(s)))return kn(c);if(h.expression&&i.O(i.Q(s)))return Ys(c);if(h.type&&Ar[h.type]){const y=Ar[h.type](c);return t===!0&&y.length>0&&i.H(c.value)==="array"?Ys(c):y}return $n(i.J({},c,{valueSpec:h.type?_[h.type]:h}))}function On(c){const t=c.value,s=c.key,h=js(c);return h.length||(t.indexOf("{fontstack}")===-1&&h.push(new i.V(s,t,'"glyphs" url must include a "{fontstack}" token')),t.indexOf("{range}")===-1&&h.push(new i.V(s,t,'"glyphs" url must include a "{range}" token'))),h}function Un(c,t=i.a3,s={}){return mi({key:s.key||"",value:c,valueSpec:t.$root,styleSpec:t,style:c,objectElementValidators:{glyphs:On,"*":()=>[]}})}function Zi(c,t=i.a3){return qe(Un(c,t))}const Qn=c=>qe(bo(c)),Fn=c=>qe(yr(c)),zs=c=>qe(Pr(c)),Ds=c=>qe(ro(c)),Go=c=>qe(Ks(c)),Ke=c=>qe(function(t){const s=t.value,h=t.style,_=t.styleSpec,y=_.snow;let T=[];const z=i.H(s);if(s===void 0)return T;if(z!=="object")return T=T.concat([new i.V("snow",s,`object expected, ${z} found`)]),T;for(const R in s){const F=R.match(/^(.*)-transition$/);T=T.concat(F&&y[F[1]]&&y[F[1]].transition?mi({key:R,value:s[R],valueSpec:_.transition,style:h,styleSpec:_}):y[R]?mi({key:R,value:s[R],valueSpec:y[R],style:h,styleSpec:_}):[new i.G(R,s[R],`unknown property "${R}"`)])}return T}(c)),re=c=>qe(function(t){const s=t.value,h=t.style,_=t.styleSpec,y=_.rain;let T=[];const z=i.H(s);if(s===void 0)return T;if(z!=="object")return T=T.concat([new i.V("rain",s,`object expected, ${z} found`)]),T;for(const R in s){const F=R.match(/^(.*)-transition$/);T=T.concat(F&&y[F[1]]&&y[F[1]].transition?mi({key:R,value:s[R],valueSpec:_.transition,style:h,styleSpec:_}):y[R]?mi({key:R,value:s[R],valueSpec:y[R],style:h,styleSpec:_}):[new i.G(R,s[R],`unknown property "${R}"`)])}return T}(c)),le=c=>qe(An(c)),ge=c=>qe(Wr(c)),Le=c=>qe(zn(c)),Ce=c=>qe(Rn(c)),Be=c=>qe(i.a2(c));function qe(c){return c.slice().sort((t,s)=>t.line&&s.line?t.line-s.line:0)}function Pe(c,t){let s=!1;if(t&&t.length)for(const h of t)h instanceof i.G?i.w(h.message):(c.fire(new i.y(new Error(h.message))),s=!0);return s}let Ye;class Qe extends i.E{constructor(t,s="flat"){super(),this._transitionable=new i.a4(Ye||(Ye=new i.a5({anchor:new i.a6(i.a3.light.anchor),position:new i.a7(i.a3.light.position),color:new i.a6(i.a3.light.color),intensity:new i.a6(i.a3.light.intensity)}))),this.setLight(t,s),this._transitioning=this._transitionable.untransitioned()}getLight(){return this._transitionable.serialize()}setLight(t,s,h={}){this._validate(Fn,t,h)||(this._transitionable.setTransitionOrValue(t),this.id=s)}updateTransitions(t){this._transitioning=this._transitionable.transitioned(t,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(t){this.properties=this._transitioning.possiblyEvaluate(t)}_validate(t,s,h){return(!h||h.validate!==!1)&&Pe(this,t.call(Zi,i.l({value:s,style:{glyphs:!0,sprite:!0},styleSpec:i.a3})))}}let it=class extends i.E{constructor(c,t,s,h){super(),this.scope=s,this._transitionable=new i.a4(new i.a5({source:new i.a6(i.a3.terrain.source),exaggeration:new i.a6(i.a3.terrain.exaggeration)}),s,h),this._transitionable.setTransitionOrValue(c,h),this._transitioning=this._transitionable.untransitioned(),this.drapeRenderMode=t}get(){return this._transitionable.serialize()}set(c,t){this._transitionable.setTransitionOrValue(c,t)}updateTransitions(c){this._transitioning=this._transitionable.transitioned(c,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(c){this.properties=this._transitioning.possiblyEvaluate(c)}getExaggeration(c){return this._transitioning.possiblyEvaluate(new i.a8(c)).get("exaggeration")}getAttenuationRange(){if(!this.isZoomDependent())return null;const c=this._transitionable._values.exaggeration;if(!c)return null;const t=c.value.expression;if(!t)return null;let s=-1,h=-1,_=1;for(const y of t.zoomStops)_=t.evaluate(new i.a8(y)),_>.01?(s=y,h=-1):h=y;return _<.01&&s>0&&h>s?[s,h]:null}isZoomDependent(){const c=this._transitionable._values.exaggeration;return c!=null&&c.value!=null&&c.value.expression!=null&&c.value.expression instanceof i.a9}};const mt=45,Ct=65,It=.05;function Kt(c,t,s,h){const _=i.ac(mt,Ct,s),[y,T]=di(c,h);let z=1-Math.min(1,Math.exp((t-y)/(T-y)*-6));return z*=z*z,z=Math.min(1,1.00747*z),z*_*c.alpha}function di(c,t){const s=.5/Math.tan(.5*t);return[c.range[0]+s,c.range[1]+s]}function li(c,t,s,h,_){const y=i.ab.vec3.transformMat4([],[t,s,h],_.mercatorFogMatrix);return Kt(c,i.ab.vec3.length(y),_.pitch,_._fov)}function ri(c,t,s,h,_,y,T){const z=[[s,h,0],[_,h,0],[_,y,0],[s,y,0]];let R=Number.MAX_VALUE,F=-Number.MAX_VALUE;for(const N of z){const G=i.ab.vec3.transformMat4([],N,t),Z=i.ab.vec3.length(G);R=Math.min(R,Z),F=Math.max(F,Z)}return[Kt(c,R,T.pitch,T._fov),Kt(c,F,T.pitch,T._fov)]}class Ki extends i.E{constructor(t,s,h,_){super();const y=new i.a5({range:new i.a6(i.a3.fog.range),color:new i.a6(i.a3.fog.color),"color-use-theme":new i.a6({type:"string","property-type":"data-constant",default:"default"}),"high-color":new i.a6(i.a3.fog["high-color"]),"high-color-use-theme":new i.a6({type:"string","property-type":"data-constant",default:"default"}),"space-color":new i.a6(i.a3.fog["space-color"]),"space-color-use-theme":new i.a6({type:"string","property-type":"data-constant",default:"default"}),"horizon-blend":new i.a6(i.a3.fog["horizon-blend"]),"star-intensity":new i.a6(i.a3.fog["star-intensity"]),"vertical-range":new i.a6(i.a3.fog["vertical-range"])});this._transitionable=new i.a4(y,h,new Map(_)),this.set(t,_),this._transitioning=this._transitionable.untransitioned(),this._transform=s,this.properties=new i.ad(y),this.scope=h}get state(){const t=this._transform,s=t.projection.name==="globe",h=i.ae(t.zoom),_=this.properties.get("range"),y=[.5,3];return{range:s?[i.af(y[0],_[0],h),i.af(y[1],_[1],h)]:_,horizonBlend:this.properties.get("horizon-blend"),alpha:this.properties.get("color").a}}get(){return this._transitionable.serialize()}set(t,s,h={}){if(this._validate(Go,t,h))return;const _=i.l({},t);for(const y of Object.keys(i.a3.fog))_[y]===void 0&&(_[y]=i.a3.fog[y].default);this._options=_,this._transitionable.setTransitionOrValue(this._options,s)}getOpacity(t){if(!this._transform.projection.supportsFog)return 0;const s=this.properties&&this.properties.get("color")||1;return(this._transform.projection.name==="globe"?1:i.ac(mt,Ct,t))*s.a}getOpacityAtLatLng(t,s){return this._transform.projection.supportsFog?function(h,_,y){const T=i.aa.fromLngLat(_),z=y.elevation?y.elevation.getAtPointOrZero(T):0;return li(h,T.x,T.y,z,y)}(this.state,t,s):0}getOpacityForTile(t){if(!this._transform.projection.supportsFog)return[1,1];const s=this._transform.calculateFogTileMatrix(t.toUnwrapped());return ri(this.state,s,0,0,i.ag,i.ag,this._transform)}getOpacityForBounds(t,s,h,_,y){return this._transform.projection.supportsFog?ri(this.state,t,s,h,_,y,this._transform):[1,1]}getFovAdjustedRange(t){return this._transform.projection.supportsFog?di(this.state,t):[0,1]}isVisibleOnFrustum(t){if(!this._transform.projection.supportsFog)return!1;const s=[4,5,6,7];for(const h of s){const _=t.points[h];let y;if(_[2]>=0)y=_;else{const T=t.points[h-4];y=i.ah(T,_,T[2]/(T[2]-_[2]))}if(li(this.state,y[0],y[1],0,this._transform)>=It)return!0}return!1}updateConfig(t){this._transitionable.setTransitionOrValue(this._options,new Map(t))}updateTransitions(t){this._transitioning=this._transitionable.transitioned(t,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(t){this.properties=this._transitioning.possiblyEvaluate(t)}_validate(t,s,h){return(!h||h.validate!==!1)&&Pe(this,t.call(Zi,i.l({value:s,style:{glyphs:!0,sprite:!0},styleSpec:i.a3})))}}let Ni,Ei,$i,Hi,Xn=class extends i.E{constructor(c,t,s,h){super();const _=Ni||(Ni=new i.a5({density:new i.a6(i.a3.snow.density),intensity:new i.a6(i.a3.snow.intensity),color:new i.a6(i.a3.snow.color),opacity:new i.a6(i.a3.snow.opacity),vignette:new i.a6(i.a3.snow.vignette),"vignette-color":new i.a6(i.a3.snow["vignette-color"]),"center-thinning":new i.a6(i.a3.snow["center-thinning"]),direction:new i.a6(i.a3.snow.direction),"flake-size":new i.a6(i.a3.snow["flake-size"])}));this._transitionable=new i.a4(_,s,new Map(h)),this.set(c,h),this._transitioning=this._transitionable.untransitioned(),this.properties=new i.ad(_),this.scope=s}get state(){const c=this.properties.get("opacity"),t=this.properties.get("color"),s=this.properties.get("direction"),h=i.ai(s[0]),_=-Math.max(i.ai(s[1]),.01),y=[Math.cos(h)*Math.cos(_),Math.sin(h)*Math.cos(_),Math.sin(_)],T=this.properties.get("vignette"),z=this.properties.get("vignette-color");return z.a=T,{density:this.properties.get("density"),intensity:this.properties.get("intensity"),color:new i.aj(t.r,t.g,t.b,t.a*c),direction:y,centerThinning:this.properties.get("center-thinning"),flakeSize:this.properties.get("flake-size"),vignetteColor:z}}get(){return this._transitionable.serialize()}set(c,t,s={}){if(this._validate(Ke,c,s))return;const h=i.l({},c);for(const _ of Object.keys(i.a3.snow))h[_]===void 0&&(h[_]=i.a3.snow[_].default);this._options=h,this._transitionable.setTransitionOrValue(this._options,t)}updateConfig(c){this._transitionable.setTransitionOrValue(this._options,new Map(c))}updateTransitions(c){this._transitioning=this._transitionable.transitioned(c,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(c){this.properties=this._transitioning.possiblyEvaluate(c)}_validate(c,t,s){return(!s||s.validate!==!1)&&Pe(this,c.call(Zi,i.l({value:t,style:{glyphs:!0,sprite:!0},styleSpec:i.a3})))}},Gs=class extends i.E{constructor(c,t,s,h){super();const _=Ei||(Ei=new i.a5({density:new i.a6(i.a3.rain.density),intensity:new i.a6(i.a3.rain.intensity),color:new i.a6(i.a3.rain.color),opacity:new i.a6(i.a3.rain.opacity),vignette:new i.a6(i.a3.rain.vignette),"vignette-color":new i.a6(i.a3.rain["vignette-color"]),"center-thinning":new i.a6(i.a3.rain["center-thinning"]),direction:new i.a6(i.a3.rain.direction),"droplet-size":new i.a6(i.a3.rain["droplet-size"]),"distortion-strength":new i.a6(i.a3.rain["distortion-strength"])}));this._transitionable=new i.a4(_,s,new Map(h)),this.set(c,h),this._transitioning=this._transitionable.untransitioned(),this.properties=new i.ad(_),this.scope=s}get state(){const c=this.properties.get("opacity"),t=this.properties.get("color"),s=this.properties.get("direction"),h=i.ai(s[0]),_=-Math.max(i.ai(s[1]),.01),y=[Math.cos(h)*Math.cos(_),Math.sin(h)*Math.cos(_),Math.sin(_)],T=this.properties.get("vignette-color");return T.a=this.properties.get("vignette"),{density:this.properties.get("density"),intensity:this.properties.get("intensity"),color:new i.aj(t.r,t.g,t.b,t.a*c),direction:y,centerThinning:this.properties.get("center-thinning"),dropletSize:this.properties.get("droplet-size"),distortionStrength:this.properties.get("distortion-strength"),vignetteColor:T}}get(){return this._transitionable.serialize()}set(c,t,s={}){if(this._validate(re,c,s))return;const h=i.l({},c);for(const _ of Object.keys(i.a3.rain))h[_]===void 0&&(h[_]=i.a3.rain[_].default);this._options=h,this._transitionable.setTransitionOrValue(this._options,t)}updateConfig(c){this._transitionable.setTransitionOrValue(this._options,new Map(c))}updateTransitions(c){this._transitioning=this._transitionable.transitioned(c,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(c){this.properties=this._transitioning.possiblyEvaluate(c)}_validate(c,t,s){return(!s||s.validate!==!1)&&Pe(this,c.call(Zi,i.l({value:t,style:{glyphs:!0,sprite:!0},styleSpec:i.a3})))}};class ms extends i.E{constructor(t,s,h,_){super(),this.scope=h,this._options=t,this.properties=new i.ad(s),this._transitionable=new i.a4(s,h,new Map(_)),this._transitionable.setTransitionOrValue(t.properties),this._transitioning=this._transitionable.untransitioned()}updateConfig(t){this._transitionable.setTransitionOrValue(this._options.properties,new Map(t))}updateTransitions(t){this._transitioning=this._transitionable.transitioned(t,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(t){this.properties=this._transitioning.possiblyEvaluate(t)}get(){return this._options.properties=this._transitionable.serialize(),this._options}set(t,s){this._options=t,this._transitionable.setTransitionOrValue(t.properties,s)}shadowsEnabled(){return!!this.properties&&this.properties.get("cast-shadows")===!0}}class vs{constructor(t,s,h,_){this.screenBounds=t,this.cameraPoint=s,this._screenRaycastCache={},this._cameraRaycastCache={},this.isAboveHorizon=h,this.screenGeometry=this.bufferedScreenGeometry(0),this.screenGeometryMercator=this._bufferedScreenMercator(0,_)}static createFromScreenPoints(t,s){let h,_;if(t instanceof i.P||typeof t[0]=="number"){const y=i.P.convert(t);h=[y],_=s.isPointAboveHorizon(y)}else{const y=i.P.convert(t[0]),T=i.P.convert(t[1]);h=[y,T],_=i.al(y,T).every(z=>s.isPointAboveHorizon(z))}return new vs(h,s.getCameraPoint(),_,s)}isPointQuery(){return this.screenBounds.length===1}bufferedScreenGeometry(t){return i.al(this.screenBounds[0],this.screenBounds.length===1?this.screenBounds[0]:this.screenBounds[1],t)}bufferedCameraGeometry(t){const s=this.screenBounds[0],h=this.screenBounds.length===1?this.screenBounds[0].add(new i.P(1,1)):this.screenBounds[1],_=i.al(s,h,0,!1);return this.cameraPoint.y>h.y&&(this.cameraPoint.x>s.x&&this.cameraPoint.x<h.x?_.splice(3,0,this.cameraPoint):this.cameraPoint.x>=h.x?_[2]=this.cameraPoint:this.cameraPoint.x<=s.x&&(_[3]=this.cameraPoint)),i.am(_,t)}bufferedCameraGeometryGlobe(t){const s=this.screenBounds[0],h=this.screenBounds.length===1?this.screenBounds[0].add(new i.P(1,1)):this.screenBounds[1],_=i.al(s,h,t),y=this.cameraPoint.clone();switch(3*((y.y>s.y)+(y.y>h.y))+((y.x>s.x)+(y.x>h.x))){case 0:_[0]=y,_[4]=y.clone();break;case 1:_.splice(1,0,y);break;case 2:_[1]=y;break;case 3:_.splice(4,0,y);break;case 5:_.splice(2,0,y);break;case 6:_[3]=y;break;case 7:_.splice(3,0,y);break;case 8:_[2]=y}return _}containsTile(t,s,h,_=0){const y=t.queryPadding/s._pixelsPerMercatorPixel+1,T=h?this._bufferedCameraMercator(y,s):this._bufferedScreenMercator(y,s);let z=t.tileID.wrap+(T.unwrapped?_:0);const R=T.polygon.map(se=>i.an(t.tileTransform,se,z));if(!i.ao(R,0,0,i.ag,i.ag))return;z=t.tileID.wrap+(this.screenGeometryMercator.unwrapped?_:0);const F=this.screenGeometryMercator.polygon.map(se=>i.ap(t.tileTransform,se,z)),N=F.map(se=>new i.P(se[0],se[1])),G=s.getFreeCameraOptions().position||new i.aa(0,0,0),Z=i.ap(t.tileTransform,G,z),W=F.map(se=>{const oe=i.ab.vec3.sub(se,se,Z);return i.ab.vec3.normalize(oe,oe),new i.aq(Z,oe)}),te=i.ar(t,1,s.zoom)*s._pixelsPerMercatorPixel;return{queryGeometry:this,tilespaceGeometry:N,tilespaceRays:W,bufferedTilespaceGeometry:R,bufferedTilespaceBounds:(ee=i.as(R),ee.min.x=i.aw(ee.min.x,0,i.ag),ee.min.y=i.aw(ee.min.y,0,i.ag),ee.max.x=i.aw(ee.max.x,0,i.ag),ee.max.y=i.aw(ee.max.y,0,i.ag),ee),tile:t,tileID:t.tileID,pixelToTileUnitsFactor:te};var ee}_bufferedScreenMercator(t,s){const h=ua(t);if(this._screenRaycastCache[h])return this._screenRaycastCache[h];{let _;return _=s.projection.name==="globe"?this._projectAndResample(this.bufferedScreenGeometry(t),s):{polygon:this.bufferedScreenGeometry(t).map(y=>s.pointCoordinate3D(y)),unwrapped:!0},this._screenRaycastCache[h]=_,_}}_bufferedCameraMercator(t,s){const h=ua(t);if(this._cameraRaycastCache[h])return this._cameraRaycastCache[h];{let _;return _=s.projection.name==="globe"?this._projectAndResample(this.bufferedCameraGeometryGlobe(t),s):{polygon:this.bufferedCameraGeometry(t).map(y=>s.pointCoordinate3D(y)),unwrapped:!0},this._cameraRaycastCache[h]=_,_}}_projectAndResample(t,s){const h=function(y,T){const z=i.ab.mat4.multiply([],T.pixelMatrix,T.globeMatrix),R=[0,-i.ax,0,1],F=[0,i.ax,0,1],N=[0,0,0,1];i.ab.vec4.transformMat4(R,R,z),i.ab.vec4.transformMat4(F,F,z),i.ab.vec4.transformMat4(N,N,z);const G=new i.P(R[0]/R[3],R[1]/R[3]),Z=new i.P(F[0]/F[3],F[1]/F[3]),W=i.au(y,G)&&R[3]<N[3],te=i.au(y,Z)&&F[3]<N[3];if(!W&&!te)return null;const ee=function(we,ve,Ae){for(let Oe=1;Oe<we.length;Oe++){const Xe=Cr(ve.pointCoordinate3D(we[Oe-1]).x),He=Cr(ve.pointCoordinate3D(we[Oe]).x);if(Ae<0){if(Xe<He)return{idx:Oe,t:-Xe/(He-1-Xe)}}else if(He<Xe)return{idx:Oe,t:(1-Xe)/(He+1-Xe)}}return null}(y,T,W?-1:1);if(!ee)return null;const{idx:se,t:oe}=ee;let he=se>1?ha(y.slice(0,se),T):[],_e=se<y.length?ha(y.slice(se),T):[];he=he.map(we=>new i.P(Cr(we.x),we.y)),_e=_e.map(we=>new i.P(Cr(we.x),we.y));const pe=[...he];pe.length===0&&pe.push(_e[_e.length-1]);const Me=i.af(pe[pe.length-1].y,(_e.length===0?he[0]:_e[0]).y,oe);let xe;return xe=W?[new i.P(0,Me),new i.P(0,0),new i.P(1,0),new i.P(1,Me)]:[new i.P(1,Me),new i.P(1,1),new i.P(0,1),new i.P(0,Me)],pe.push(...xe),_e.length===0?pe.push(he[0]):pe.push(..._e),{polygon:pe.map(we=>new i.aa(we.x,we.y)),unwrapped:!1}}(t,s);if(h)return h;const _=function(y,T){let z=!1,R=-1/0,F=0;for(let G=0;G<y.length-1;G++)y[G].x>R&&(R=y[G].x,F=G);for(let G=0;G<y.length-1;G++){const Z=(F+G)%(y.length-1),W=y[Z],te=y[Z+1];Math.abs(W.x-te.x)>.5&&(W.x<te.x?(W.x+=1,Z===0&&(y[y.length-1].x+=1)):(te.x+=1,Z+1===y.length-1&&(y[0].x+=1)),z=!0)}const N=i.at(T.center.lng);return z&&N<Math.abs(N-1)&&y.forEach(G=>{G.x-=1}),{polygon:y,unwrapped:z}}(ha(t,s).map(y=>new i.P(Cr(y.x),y.y)),s);return{polygon:_.polygon.map(y=>new i.aa(y.x,y.y)),unwrapped:_.unwrapped}}}function ha(c,t){return i.av(c,s=>{const h=t.pointCoordinate3D(s);s.x=h.x,s.y=h.y},1/256)}function Cr(c){return c<0?1+c%1:c%1}function ua(c){return 100*c|0}function vl(c,t,s,h,_){const y=function(z,R){if(z)return _(z);if(R){if(c.url&&R.tiles&&c.tiles&&delete c.tiles,R.variants){if(!Array.isArray(R.variants))return _(new Error("variants must be an array"));for(const N of R.variants){if(N==null||typeof N!="object"||N.constructor!==Object)return _(new Error("variant must be an object"));if(!Array.isArray(N.capabilities))return _(new Error("capabilities must be an array"));if(N.capabilities.length===1&&N.capabilities[0]==="meshopt"){R=i.l(R,N);break}}}const F=i.ay(i.l({},R,c),["tilejson","tiles","minzoom","maxzoom","attribution","mapbox_logo","bounds","scheme","tileSize","encoding","vector_layers","raster_layers","worldview_options","worldview_default","worldview"]);F.tiles=t.canonicalizeTileset(F,c.url),_(null,F)}},T=function(z,R,F){if(!z)return null;if(!R&&!F)return z;F=F||z.worldview_default;const N=Object.values(z.language||{});if(N.length===0)return null;const G=Object.values(z.worldview||{});if(G.length===0)return null;const Z=N.every(te=>te===R),W=G.every(te=>te===F);return Z&&W?z:R in(z.language_options||{})||F in(z.worldview_options||{})?null:z.language_options&&z.worldview_options?z:null}(c.data,s,h);return T?i.q.frame(()=>y(null,T)):c.url?i.n(t.transformRequest(t.normalizeSourceURL(c.url,null,s,h),i.R.Source),y):i.q.frame(()=>{const{data:z,...R}=c;y(null,R)})}class Zo{constructor(t,s,h){this.bounds=i.az.convert(this.validateBounds(t)),this.minzoom=s||0,this.maxzoom=h||24}validateBounds(t){return Array.isArray(t)&&t.length===4?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]}contains(t){const s=Math.pow(2,t.z),h=Math.floor(i.at(this.bounds.getWest())*s),_=Math.floor(i.aA(this.bounds.getNorth())*s),y=Math.ceil(i.at(this.bounds.getEast())*s),T=Math.ceil(i.aA(this.bounds.getSouth())*s);return t.x>=h&&t.x<y&&t.y>=_&&t.y<T}}class Ho extends i.E{constructor(t,s,h,_){if(super(),this.id=t,this.dispatcher=h,this.type="vector",this.minzoom=0,this.maxzoom=22,this.scheme="xyz",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,i.l(this,i.ay(s,["url","scheme","tileSize","promoteId"])),this._options=i.l({type:"vector"},s),this._collectResourceTiming=!!s.collectResourceTiming,this.tileSize!==512)throw new Error("vector tile sources must have a tileSize of 512");this.setEventedParent(_),this._tileWorkers={},this._deduped=new i.aB}load(t){this._loaded=!1,this.fire(new i.z("dataloading",{dataType:"source"}));const s=Array.isArray(this.map._language)?this.map._language.join():this.map._language,h=this.map.getWorldview();this._tileJSONRequest=vl(this._options,this.map._requestManager,s,h,(_,y)=>{if(this._tileJSONRequest=null,this._loaded=!0,_)s&&console.warn(`Ensure that your requested language string is a valid BCP-47 code or list of codes. Found: ${s}`),h&&console.warn(`Requested worldview strings must be a valid ISO alpha-2 code. Found: ${h}`),this.fire(new i.y(_));else if(y){if(i.l(this,y),this.hasWorldviews=!!y.worldview_options,y.worldview_default&&(this.worldviewDefault=y.worldview_default),y.vector_layers){this.vectorLayers=y.vector_layers,this.vectorLayerIds=[],this.localizableLayerIds=new Set;for(const T of y.vector_layers)this.vectorLayerIds.push(T.id),y.worldview&&y.worldview[T.source]&&this.localizableLayerIds.add(T.id)}y.bounds&&(this.tileBounds=new Zo(y.bounds,this.minzoom,this.maxzoom)),an(y.tiles,this.map._requestManager._customAccessToken),this.fire(new i.z("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new i.z("data",{dataType:"source",sourceDataType:"content"}))}t&&t(_)})}loaded(){return this._loaded}hasTile(t){return!this.tileBounds||this.tileBounds.contains(t.canonical)}onAdd(t){this.map=t,this.load()}reload(){this.cancelTileJSONRequest();const t=i.aC(this.id,this.scope);this.load(()=>this.map.style.clearSource(t))}setTiles(t){return this._options.tiles=t,this.reload(),this}setUrl(t){return this.url=t,this._options.url=t,this.reload(),this}onRemove(t){this.cancelTileJSONRequest()}serialize(){return i.l({},this._options)}loadTile(t,s){const h=t.tileID.canonical.url(this.tiles,this.scheme),_=this.map._requestManager.normalizeTileURL(h),y=this.map._requestManager.transformRequest(_,i.R.Tile),T=this.map.style?this.map.style.getLut(this.scope):null,z=T?{image:T.image.clone()}:null,R={request:y,data:void 0,uid:t.uid,tileID:t.tileID,tileZoom:t.tileZoom,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,lut:z,tileSize:this.tileSize*t.tileID.overscaleFactor(),type:this.type,source:this.id,scope:this.scope,pixelRatio:i.q.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,isSymbolTile:t.isSymbolTile,brightness:this.map.style&&this.map.style.getBrightness()||0,extraShadowCaster:t.isExtraShadowCaster,tessellationStep:this.map._tessellationStep,scaleFactor:this.map.getScaleFactor()};if(this.hasWorldviews&&i.f(h)&&(R.worldview=this.map.getWorldview()||this.worldviewDefault,R.localizableLayerIds=this.localizableLayerIds),R.request.collectResourceTiming=this._collectResourceTiming,t.actor&&t.state!=="expired")t.state==="loading"?t.reloadCallback=s:t.request=t.actor.send("reloadTile",R,F.bind(this));else if(t.actor=this._tileWorkers[_]=this._tileWorkers[_]||this.dispatcher.getActor(),this.dispatcher.ready)t.request=t.actor.send("loadTile",R,F.bind(this),void 0,!0);else{const N=i.aD.call({deduped:this._deduped},R,(G,Z)=>{G||!Z?F.call(this,G):(R.data={cacheControl:Z.cacheControl,expires:Z.expires,rawData:Z.rawData.slice(0)},t.actor&&t.actor.send("loadTile",R,F.bind(this),void 0,!0))},!0);t.request={cancel:N}}function F(N,G){return delete t.request,t.aborted?s(null):N&&N.status!==404?s(N):(G&&G.resourceTiming&&(t.resourceTiming=G.resourceTiming),this.map._refreshExpiredTiles&&G&&t.setExpiryData(G),t.loadVectorData(G,this.map.painter),i.aE(this.dispatcher),s(null),void(t.reloadCallback&&(this.loadTile(t,t.reloadCallback),t.reloadCallback=null)))}}abortTile(t){t.request&&(t.request.cancel(),delete t.request),t.actor&&t.actor.send("abortTile",{uid:t.uid,type:this.type,source:this.id,scope:this.scope})}unloadTile(t,s){t.actor&&t.actor.send("removeTile",{uid:t.uid,type:this.type,source:this.id,scope:this.scope}),t.destroy()}hasTransition(){return!1}afterUpdate(){this._tileWorkers={}}cancelTileJSONRequest(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}}class tn extends i.E{constructor(t,s,h,_){super(),this.id=t,this.dispatcher=h,this.setEventedParent(_),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=i.l({type:"raster"},s),i.l(this,i.ay(s,["url","scheme","tileSize"]))}load(t){this._loaded=!1,this.fire(new i.z("dataloading",{dataType:"source"})),this._tileJSONRequest=vl(this._options,this.map._requestManager,null,null,(s,h)=>{this._tileJSONRequest=null,this._loaded=!0,s?this.fire(new i.y(s)):h&&(i.l(this,h),h.raster_layers&&(this.rasterLayers=h.raster_layers,this.rasterLayerIds=this.rasterLayers.map(_=>_.id)),h.bounds&&(this.tileBounds=new Zo(h.bounds,this.minzoom,this.maxzoom)),an(h.tiles),this.fire(new i.z("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new i.z("data",{dataType:"source",sourceDataType:"content"}))),t&&t(s)})}loaded(){return this._loaded}onAdd(t){this.map=t,this.load()}reload(){this.cancelTileJSONRequest();const t=i.aC(this.id,this.scope);this.load(()=>this.map.style.clearSource(t))}setTiles(t){return this._options.tiles=t,this.reload(),this}setUrl(t){return this.url=t,this._options.url=t,this.reload(),this}onRemove(t){this.cancelTileJSONRequest()}serialize(){return i.l({},this._options)}hasTile(t){return!this.tileBounds||this.tileBounds.contains(t.canonical)}loadTile(t,s){const h=i.q.devicePixelRatio>=2,_=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme),h,this.tileSize);t.request=i.o(this.map._requestManager.transformRequest(_,i.R.Tile),(y,T,z,R)=>(delete t.request,t.aborted?(t.state="unloaded",s(null)):y?(t.state="errored",s(y)):T?(this.map._refreshExpiredTiles&&t.setExpiryData({cacheControl:z,expires:R}),t.setTexture(T,this.map.painter),t.state="loaded",i.aE(this.dispatcher),void s(null)):s(null)))}abortTile(t,s){t.request&&(t.request.cancel(),delete t.request),s&&s()}unloadTile(t,s){t.texture&&t.texture instanceof i.T?(t.destroy(!0),t.texture&&t.texture instanceof i.T&&this.map.painter.saveTileTexture(t.texture)):t.destroy(),s&&s()}hasTransition(){return!1}cancelTileJSONRequest(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}}class vn extends tn{constructor(t,s,h,_){super(t,s,h,_),this.type="raster-array",this.maxzoom=22,this._options=i.l({type:"raster-array"},s)}triggerRepaint(t){const s=this.map.painter._terrain,h=this.map.style.getSourceCache(this.id);s&&s.enabled&&h&&s._clearRenderCacheForTile(h.id,t.tileID),this.map.triggerRepaint()}loadTile(t,s){const h=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme),!1,this.tileSize),_=this.map._requestManager.transformRequest(h,i.R.Tile);t.requestParams=_,t.actor||(t.actor=this.dispatcher.getActor()),t.request=t.fetchHeader(void 0,(y,T,z,R)=>{if(delete t.request,t.aborted)return t.state="unloaded",s(null);if(y)return y.code===20?void 0:(t.state="errored",s(y));this.map._refreshExpiredTiles&&t.setExpiryData({cacheControl:z,expires:R}),t.state="empty",s(null)})}unloadTile(t,s){const h=t.texture;h&&h instanceof i.T?(t.destroy(!0),this.map.painter.saveTileTexture(h)):(t.destroy(),t.flushQueues(),t._isHeaderLoaded=!1,delete t._mrt,delete t.textureDescriptor),t.fbo&&(t.fbo.destroy(),delete t.fbo),delete t.request,delete t.requestParams,delete t.neighboringTiles,t.state="unloaded"}prepareTile(t,s,h){t._isHeaderLoaded&&(t.state!=="empty"&&(t.state="reloading"),t.fetchBand(s,h,(_,y)=>{if(_)return t.state="errored",this.fire(new i.y(_)),void this.triggerRepaint(t);y&&(t.setTexture(y,this.map.painter),t.state="loaded",this.triggerRepaint(t))}))}getInitialBand(t){if(!this.rasterLayers)return 0;const s=this.rasterLayers.find(({id:y})=>y===t),h=s&&s.fields,_=h&&h.bands&&h.bands;return _?_[0]:0}getTextureDescriptor(t,s,h){if(!t)return;const _=s.sourceLayer||this.rasterLayerIds&&this.rasterLayerIds[0];if(!_)return;let y=null;s instanceof i.aH?y=s.paint.get("raster-array-band"):s instanceof i.aI&&(y=s.paint.get("raster-particle-array-band"));const T=y||this.getInitialBand(_);if(T!=null)if(t.textureDescriptor){if(!t.updateNeeded(_,T)||h)return Object.assign({},t.textureDescriptor,{texture:t.texture})}else this.prepareTile(t,_,T)}}const oo={vector:Ho,raster:tn,"raster-dem":class extends tn{constructor(c,t,s,h){super(c,t,s,h),this.type="raster-dem",this.maxzoom=22,this._options=i.l({type:"raster-dem"},t),this.encoding=t.encoding||"mapbox"}loadTile(c,t){const s=this.map._requestManager.normalizeTileURL(c.tileID.canonical.url(this.tiles,this.scheme),!1,this.tileSize);function h(_,y){_&&(c.state="errored",t(_)),y&&(c.dem=y,c.dem.onDeserialize(),c.needsHillshadePrepare=!0,c.needsDEMTextureUpload=!0,c.state="loaded",t(null))}c.request=i.o(this.map._requestManager.transformRequest(s,i.R.Tile),(function(_,y,T,z){if(delete c.request,c.aborted)c.state="unloaded",t(null);else if(_)c.state="errored",t(_);else if(y){this.map._refreshExpiredTiles&&c.setExpiryData({cacheControl:T,expires:z});const R=ImageBitmap&&y instanceof ImageBitmap&&i.t(),F=1-(y.width-i.aF(y.width))/2;F<1||c.neighboringTiles||(c.neighboringTiles=this._getNeighboringTiles(c.tileID));const N=R?y:i.q.getImageData(y,F),G={uid:c.uid,coord:c.tileID,source:this.id,scope:this.scope,rawImageData:N,encoding:this.encoding,padding:F};c.actor&&c.state!=="expired"||(c.actor=this.dispatcher.getActor(),c.actor.send("loadDEMTile",G,h.bind(this),void 0,!0))}}).bind(this))}_getNeighboringTiles(c){const t=c.canonical,s=Math.pow(2,t.z),h=(t.x-1+s)%s,_=t.x===0?c.wrap-1:c.wrap,y=(t.x+1+s)%s,T=t.x+1===s?c.wrap+1:c.wrap,z={};return z[new i.aG(c.overscaledZ,_,t.z,h,t.y).key]={backfilled:!1},z[new i.aG(c.overscaledZ,T,t.z,y,t.y).key]={backfilled:!1},t.y>0&&(z[new i.aG(c.overscaledZ,_,t.z,h,t.y-1).key]={backfilled:!1},z[new i.aG(c.overscaledZ,c.wrap,t.z,t.x,t.y-1).key]={backfilled:!1},z[new i.aG(c.overscaledZ,T,t.z,y,t.y-1).key]={backfilled:!1}),t.y+1<s&&(z[new i.aG(c.overscaledZ,_,t.z,h,t.y+1).key]={backfilled:!1},z[new i.aG(c.overscaledZ,c.wrap,t.z,t.x,t.y+1).key]={backfilled:!1},z[new i.aG(c.overscaledZ,T,t.z,y,t.y+1).key]={backfilled:!1}),z}},"raster-array":vn,geojson:class extends i.E{constructor(c,t,s,h){super(),this.id=c,this.type="geojson",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._loaded=!1,this.actor=s.getActor(),this.setEventedParent(h),this._data=t.data,this._options=i.l({},t),this._collectResourceTiming=t.collectResourceTiming,t.maxzoom!==void 0&&(this.maxzoom=t.maxzoom),t.minzoom!==void 0&&(this.minzoom=t.minzoom),t.type&&(this.type=t.type),t.attribution&&(this.attribution=t.attribution),this.promoteId=t.promoteId;const _=i.ag/this.tileSize;this.workerOptions=i.l({source:this.id,scope:this.scope,cluster:t.cluster||!1,geojsonVtOptions:{buffer:(t.buffer!==void 0?t.buffer:128)*_,tolerance:(t.tolerance!==void 0?t.tolerance:.375)*_,extent:i.ag,maxZoom:this.maxzoom,lineMetrics:t.lineMetrics||!1,generateId:t.generateId||!1},superclusterOptions:{maxZoom:t.clusterMaxZoom!==void 0?t.clusterMaxZoom:this.maxzoom-1,minPoints:Math.max(2,t.clusterMinPoints||2),extent:i.ag,radius:(t.clusterRadius!==void 0?t.clusterRadius:50)*_,log:!1,generateId:t.generateId||!1},clusterProperties:t.clusterProperties,filter:t.filter,dynamic:t.dynamic},t.workerOptions)}onAdd(c){this.map=c,this.setData(this._data)}setData(c){return this._data=c,this._updateWorkerData(),this}updateData(c){if(!this._options.dynamic)return this.fire(new i.y(new Error("Can't call updateData on a GeoJSON source with dynamic set to false.")));if(typeof c!="string"&&(c.type==="Feature"&&(c={type:"FeatureCollection",features:[c]}),c.type!=="FeatureCollection"))return this.fire(new i.y(new Error("Data to update should be a feature or a feature collection.")));if(this._coalesce&&typeof c!="string"&&typeof this._data!="string"&&this._data.type==="FeatureCollection"){const t=new Map;for(const s of this._data.features)t.set(s.id,s);for(const s of c.features)t.set(s.id,s);this._data.features=[...t.values()]}else this._data=c;return this._updateWorkerData(!0),this}getClusterExpansionZoom(c,t){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:c,source:this.id,scope:this.scope},t),this}getClusterChildren(c,t){return this.actor.send("geojson.getClusterChildren",{clusterId:c,source:this.id,scope:this.scope},t),this}getClusterLeaves(c,t,s,h){return this.actor.send("geojson.getClusterLeaves",{source:this.id,scope:this.scope,clusterId:c,limit:t,offset:s},h),this}_updateWorkerData(c=!1){if(this._pendingLoad)return void(this._coalesce=!0);this.fire(new i.z("dataloading",{dataType:"source"})),this._loaded=!1;const t=i.l({append:c},this.workerOptions);t.scope=this.scope;const s=this._data;typeof s=="string"?(t.request=this.map._requestManager.transformRequest(i.q.resolveURL(s),i.R.Source),t.request.collectResourceTiming=this._collectResourceTiming):t.data=JSON.stringify(s),this._pendingLoad=this.actor.send(`${this.type}.loadData`,t,(h,_)=>{if(this._loaded=!0,this._pendingLoad=null,h)this.fire(new i.y(h));else{const y={dataType:"source",sourceDataType:this._metadataFired?"content":"metadata"};this._collectResourceTiming&&_&&_.resourceTiming&&_.resourceTiming[this.id]&&(y.resourceTiming=_.resourceTiming[this.id]),c&&(this._partialReload=!0),this.fire(new i.z("data",y)),this._partialReload=!1,this._metadataFired=!0}this._coalesce&&(this._updateWorkerData(c),this._coalesce=!1)})}loaded(){return this._loaded}loadTile(c,t){const s=c.actor?"reloadTile":"loadTile";c.actor=this.actor;const h=this.map.style?this.map.style.getLut(this.scope):null,_=h?{image:h.image.clone()}:null,y=this._partialReload,T={type:this.type,uid:c.uid,tileID:c.tileID,tileZoom:c.tileZoom,zoom:c.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,lut:_,scope:this.scope,pixelRatio:i.q.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,brightness:this.map.style&&this.map.style.getBrightness()||0,scaleFactor:this.map.getScaleFactor(),partial:y};c.request=this.actor.send(s,T,(z,R)=>y&&!R?(c.state="loaded",t(null)):(delete c.request,c.destroy(),c.aborted?t(null):z?t(z):(c.loadVectorData(R,this.map.painter,s==="reloadTile"),t(null))),void 0,s==="loadTile")}abortTile(c){c.request&&(c.request.cancel(),delete c.request),c.aborted=!0}unloadTile(c,t){this.actor.send("removeTile",{uid:c.uid,type:this.type,source:this.id,scope:this.scope}),c.destroy()}onRemove(c){this._pendingLoad&&this._pendingLoad.cancel()}serialize(){return i.l({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}},video:class extends i.aJ{constructor(c,t,s,h){super(c,t,s,h),this.roundZoom=!0,this.type="video",this.options=t}load(){this._loaded=!1;const c=this.options;this.urls=[];for(const t of c.urls)this.urls.push(this.map._requestManager.transformRequest(t,i.R.Source).url);i.aK(this.urls,(t,s)=>{this._loaded=!0,t?this.fire(new i.y(t)):s&&(this.video=s,this.video.loop=!0,this.video.setAttribute("playsinline",""),this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading())})}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(c){if(this.video){const t=this.video.seekable;c<t.start(0)||c>t.end(0)?this.fire(new i.y(new i.V(`sources.${this.id}`,null,`Playback for this video can be set only between the ${t.start(0)} and ${t.end(0)}-second mark.`))):this.video.currentTime=c}}getVideo(){return this.video}onAdd(c){this.map||(this.map=c,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;const c=this.map.painter.context,t=c.gl;this.texture?this.video.paused||(this.texture.bind(t.LINEAR,t.CLAMP_TO_EDGE),t.texSubImage2D(t.TEXTURE_2D,0,0,0,t.RGBA,t.UNSIGNED_BYTE,this.video)):(this.texture=new i.T(c,this.video,t.RGBA8),this.texture.bind(t.LINEAR,t.CLAMP_TO_EDGE),this.width=this.video.videoWidth,this.height=this.video.videoHeight),this._prepareData(c)}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}},image:i.aJ,model:class extends i.E{constructor(c,t,s,h){super(),this.id=c,this.type="model",this.models=[],this._loaded=!1,this._options=t}load(){const c=[];for(const t in this._options.models){const s=this._options.models[t],h=i.aM(this.map._requestManager.transformRequest(s.uri,i.R.Model).url).then(_=>{if(!_)return;const y=i.aN(_),T=new i.aO(t,s.position,s.orientation,y);T.computeBoundsAndApplyParent(),this.models.push(T)}).catch(_=>{this.fire(new i.y(new Error(`Could not load model ${t} from ${s.uri}: ${_.message}`)))});c.push(h)}return Promise.allSettled(c).then(()=>{this._loaded=!0,this.fire(new i.z("data",{dataType:"source",sourceDataType:"metadata"}))}).catch(t=>{this.fire(new i.y(new Error(`Could not load models: ${t.message}`)))})}onAdd(c){this.map=c,this.load()}hasTransition(){return!1}loaded(){return this._loaded}getModels(){return this.models}loadTile(c,t){}serialize(){return{type:"model"}}},"batched-model":class extends i.E{constructor(c,t,s,h){super(),this.type="batched-model",this.id=c,this.tileSize=512,this._options=t,this.tiles=this._options.tiles,this.maxzoom=t.maxzoom||19,this.minzoom=t.minzoom||0,this.roundZoom=!0,this.usedInConflation=!0,this.dispatcher=s,this.reparseOverscaled=!1,this.scheme="xyz",this._loaded=!1,this.setEventedParent(h)}onAdd(c){this.map=c,this.load()}load(c){this._loaded=!1,this.fire(new i.z("dataloading",{dataType:"source"}));const t=Array.isArray(this.map._language)?this.map._language.join():this.map._language,s=this.map.getWorldview();this._tileJSONRequest=vl(this._options,this.map._requestManager,t,s,(h,_)=>{this._tileJSONRequest=null,this._loaded=!0,h?(t&&console.warn(`Ensure that your requested language string is a valid BCP-47 code or list of codes. Found: ${t}`),s&&s.length!==2&&console.warn(`Requested worldview strings must be a valid ISO alpha-2 code. Found: ${s}`),this.fire(new i.y(h))):_&&(i.l(this,_),_.bounds&&(this.tileBounds=new Zo(_.bounds,this.minzoom,this.maxzoom)),an(_.tiles,this.map._requestManager._customAccessToken),this.fire(new i.z("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new i.z("data",{dataType:"source",sourceDataType:"content"}))),c&&c(h)})}hasTransition(){return!1}hasTile(c){return!this.tileBounds||this.tileBounds.contains(c.canonical)}loaded(){return this._loaded}loadTile(c,t){const s=this.map._requestManager.normalizeTileURL(c.tileID.canonical.url(this.tiles,this.scheme)),h={request:this.map._requestManager.transformRequest(s,i.R.Tile),data:void 0,uid:c.uid,tileID:c.tileID,tileZoom:c.tileZoom,zoom:c.tileID.overscaledZ,tileSize:this.tileSize*c.tileID.overscaleFactor(),type:this.type,source:this.id,scope:this.scope,showCollisionBoxes:this.map.showCollisionBoxes,isSymbolTile:c.isSymbolTile,brightness:this.map.style&&this.map.style.getBrightness()||0,lut:null,maxZoom:null,promoteId:null,pixelRatio:null,scaleFactor:null};if(c.actor&&c.state!=="expired")if(c.state==="loading")c.reloadCallback=t;else{if(c.buckets){const y=Object.values(c.buckets);for(const T of y)T.dirty=!0;return void(c.state="loaded")}c.request=c.actor.send("reloadTile",h,_.bind(this))}else c.actor=this.dispatcher.getActor(),c.request=c.actor.send("loadTile",h,_.bind(this),void 0,!0);function _(y,T){return c.aborted?t(null):y&&y.status!==404?t(y):(this.map._refreshExpiredTiles&&T&&c.setExpiryData(T),c.loadModelData(T,this.map.painter),c.state="loaded",void t(null))}}serialize(){return i.l({},this._options)}},canvas:class extends i.aJ{constructor(c,t,s,h){super(c,t,s,h),t.coordinates?Array.isArray(t.coordinates)&&t.coordinates.length===4&&!t.coordinates.some(_=>!Array.isArray(_)||_.length!==2||_.some(y=>typeof y!="number"))||this.fire(new i.y(new i.V(`sources.${c}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new i.y(new i.V(`sources.${c}`,null,'missing required property "coordinates"'))),t.animate&&typeof t.animate!="boolean"&&this.fire(new i.y(new i.V(`sources.${c}`,null,'optional "animate" property must be a boolean value'))),t.canvas?typeof t.canvas=="string"||t.canvas instanceof HTMLCanvasElement||this.fire(new i.y(new i.V(`sources.${c}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new i.y(new i.V(`sources.${c}`,null,'missing required property "canvas"'))),this.options=t,this.animate=t.animate===void 0||t.animate}load(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new i.y(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())}getCanvas(){return this.canvas}onAdd(c){this.map=c,this.load(),this.canvas&&this.animate&&this.play()}onRemove(c){this.pause()}prepare(){let c=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,c=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,c=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;const t=this.map.painter.context;this.texture?!c&&!this._playing||this.texture instanceof i.aL||this.texture.update(this.canvas,{premultiply:!0}):this.texture=new i.T(t,this.canvas,t.gl.RGBA8,{premultiply:!0}),this._prepareData(t)}serialize(){return{type:"canvas",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const c of[this.canvas.width,this.canvas.height])if(isNaN(c)||c<=0)return!0;return!1}},custom:class extends i.E{constructor(c,t,s,h){super(),this.id=c,this.type="custom",this._dataType="raster",this._dispatcher=s,this._implementation=t,this.setEventedParent(h),this.scheme="xyz",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this._loaded=!1,this.roundZoom=!0,this._implementation||this.fire(new i.y(new Error(`Missing implementation for ${this.id} custom source`))),this._implementation.loadTile||this.fire(new i.y(new Error(`Missing loadTile implementation for ${this.id} custom source`))),this._implementation.bounds&&(this.tileBounds=new Zo(this._implementation.bounds,this.minzoom,this.maxzoom)),t.update=this._update.bind(this),t.clearTiles=this._clearTiles.bind(this),t.coveringTiles=this._coveringTiles.bind(this),i.l(this,i.ay(t,["dataType","scheme","minzoom","maxzoom","tileSize","attribution","minTileCacheSize","maxTileCacheSize"]))}serialize(){return i.ay(this,["type","scheme","minzoom","maxzoom","tileSize","attribution"])}load(){this._loaded=!0,this.fire(new i.z("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new i.z("data",{dataType:"source",sourceDataType:"content"}))}loaded(){return this._loaded}onAdd(c){this.map=c,this._loaded=!1,this.fire(new i.z("dataloading",{dataType:"source"})),this._implementation.onAdd&&this._implementation.onAdd(c),this.load()}onRemove(c){this._implementation.onRemove&&this._implementation.onRemove(c)}hasTile(c){if(this._implementation.hasTile){const{x:t,y:s,z:h}=c.canonical;return this._implementation.hasTile({x:t,y:s,z:h})}return!this.tileBounds||this.tileBounds.contains(c.canonical)}loadTile(c,t){const{x:s,y:h,z:_}=c.tileID.canonical,y=new AbortController;c.request=Promise.resolve(this._implementation.loadTile({x:s,y:h,z:_},{signal:y.signal})).then((function(T){return delete c.request,c.aborted?(c.state="unloaded",t(null)):T===void 0?(c.state="errored",t(null)):T===null?(this.loadTileData(c,{width:this.tileSize,height:this.tileSize,data:null}),c.state="loaded",t(null)):function(z){return z instanceof ImageData||z instanceof HTMLCanvasElement||z instanceof ImageBitmap||z instanceof HTMLImageElement}(T)?(this.loadTileData(c,T),c.state="loaded",void t(null)):(c.state="errored",t(new Error(`Can't infer data type for ${this.id}, only raster data supported at the moment`)))}).bind(this)).catch(T=>{T.code!==20&&(c.state="errored",t(T))}),c.request.cancel=()=>y.abort()}loadTileData(c,t){c.setTexture(t,this.map.painter)}unloadTile(c,t){if(c.texture&&c.texture instanceof i.T?(c.destroy(!0),c.texture&&c.texture instanceof i.T&&this.map.painter.saveTileTexture(c.texture)):c.destroy(),this._implementation.unloadTile){const{x:s,y:h,z:_}=c.tileID.canonical;this._implementation.unloadTile({x:s,y:h,z:_})}t&&t()}abortTile(c,t){c.request&&c.request.cancel&&(c.request.cancel(),delete c.request),t&&t()}hasTransition(){return!1}_coveringTiles(){return this.map.transform.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,roundZoom:this.roundZoom}).map(c=>({x:c.canonical.x,y:c.canonical.y,z:c.canonical.z}))}_clearTiles(){const c=i.aC(this.id,this.scope);this.map.style.clearSource(c)}_update(){this.fire(new i.z("data",{dataType:"source",sourceDataType:"content"}))}}},qo=function(c,t,s,h){const _=new oo[t.type](c,t,s,h);if(_.id!==c)throw new Error(`Expected Source id to be ${c} instead of ${_.id}`);return i.aP(["load","abort","unload","serialize","prepare"],_),_};function da(c,t,s,h,_=!1){const y=t.sourceCache.transform,T=t.sourceCache.tilesIn(c,t.has3DLayers,_);T.sort(Hn);const z=[];for(const R of T){const F=R.tile.queryRenderedFeatures(t,R,s,h,y,_);Object.keys(F).length&&z.push({wrappedTileID:R.tile.tileID.wrapped().key,queryResults:F})}return z.length===0?{}:function(R){const F={},N={};for(const G of R){const Z=G.queryResults,W=G.wrappedTileID,te=N[W]=N[W]||{};for(const ee in Z){const se=Z[ee],oe=te[ee]=te[ee]||{},he=F[ee]=F[ee]||[];for(const _e of se)oe[_e.featureIndex]||(oe[_e.featureIndex]=!0,he.push(_e))}}return F}(z)}function Ba(c,t,s,h,_){const y={},T=h.queryRenderedSymbols(c),z=[];for(const R of Object.keys(T).map(Number))z.push(_[R]);z.sort(Hn);for(const R of z){const F=R.featureIndex.lookupSymbolFeatures(T[R.bucketInstanceId],R.bucketIndex,R.sourceLayerIndex,t,s);for(const N in F){const G=y[N]=y[N]||[],Z=F[N];Z.sort((W,te)=>{const ee=R.featureSortOrder;if(ee){const se=ee.indexOf(W.featureIndex);return ee.indexOf(te.featureIndex)-se}return te.featureIndex-W.featureIndex});for(const W of Z)G.push(W)}}return y}function Vi(c,t){const s=c.getRenderableIds().map(y=>c.getTileByID(y)),h=[],_={};for(let y=0;y<s.length;y++){const T=s[y],z=T.tileID.canonical.key;_[z]||(_[z]=!0,T.querySourceFeatures(h,t))}return h}function Hn(c,t){const s=c.tileID,h=t.tileID;return s.overscaledZ-h.overscaledZ||s.canonical.y-h.canonical.y||s.wrap-h.wrap||s.canonical.x-h.canonical.x}function bl(c,t){const s={};if(!t)return s;for(const h of c){const _=h.layerIds.map(y=>t.getLayer(y)).filter(Boolean);if(_.length!==0){h.layers=_,h.stateDependentLayerIds&&(h.stateDependentLayers=h.stateDependentLayerIds.map(y=>_.filter(T=>T.id===y)[0]));for(const y of _)s[y.fqid]=h}}return s}const Zs=32,es=33,Ir=new Uint16Array(8184);for(let c=0;c<2046;c++){let t=c+2,s=0,h=0,_=0,y=0,T=0,z=0;for(1&t?_=y=T=Zs:s=h=z=Zs;(t>>=1)>1;){const F=s+_>>1,N=h+y>>1;1&t?(_=s,y=h,s=T,h=z):(s=_,h=y,_=T,y=z),T=F,z=N}const R=4*c;Ir[R+0]=s,Ir[R+1]=h,Ir[R+2]=_,Ir[R+3]=y}const sr=new Uint16Array(2178),Js=new Uint8Array(1089),Yn=new Uint16Array(1089);function $r(c){return c===0?-.03125:c===32?.03125:0}const Lr=(()=>({type:2,extent:i.ag,loadGeometry:()=>[[new i.P(0,0),new i.P(i.ag+1,0),new i.P(i.ag+1,i.ag+1),new i.P(0,i.ag+1),new i.P(0,0)]]}))();class zr{constructor(t,s,h,_,y){this.tileID=t,this.uid=i.aV(),this.uses=0,this.tileSize=s,this.tileZoom=h,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.isRaster=y,_&&_.style&&(this._lastUpdatedBrightness=_.style.getBrightness()),this.expiredRequestCount=0,this.state="loading",_&&_.transform&&(this.projection=_.transform.projection)}registerFadeDuration(t){const s=t+this.timeAdded;s<i.q.now()||this.fadeEndTime&&s<this.fadeEndTime||(this.fadeEndTime=s)}wasRequested(){return this.state==="errored"||this.state==="loaded"||this.state==="reloading"}get tileTransform(){return this._tileTransform||(this._tileTransform=i.aQ(this.tileID.canonical,this.projection)),this._tileTransform}loadVectorData(t,s,h){if(this.unloadVectorData(),this.state="loaded",t){t.featureIndex&&(this.latestFeatureIndex=t.featureIndex,t.rawTileData?(this.latestRawTileData=t.rawTileData,this.latestFeatureIndex.rawTileData=t.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=t.collisionBoxArray,this.buckets=bl(t.buckets,s.style),this.hasSymbolBuckets=!1;for(const _ in this.buckets){const y=this.buckets[_];if(y instanceof i.aX){if(this.hasSymbolBuckets=!0,!h)break;y.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const _ in this.buckets){const y=this.buckets[_];if(y instanceof i.aX&&y.hasRTLText){this.hasRTLText=!0,i.aY();break}}this.queryPadding=0;for(const _ in this.buckets){const y=this.buckets[_],T=s.style.getOwnLayer(_);if(!T)continue;const z=T.queryRadius(y);this.queryPadding=Math.max(this.queryPadding,z)}t.imageAtlas&&(this.imageAtlas=t.imageAtlas),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage),t.lineAtlas&&(this.lineAtlas=t.lineAtlas),this._lastUpdatedBrightness=t.brightness}else this.collisionBoxArray=new i.aW}unloadVectorData(){if(this.hasData()){for(const t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlas&&(this.imageAtlas=null),this.lineAtlas&&(this.lineAtlas=null),this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.lineAtlasTexture&&this.lineAtlasTexture.destroy(),this._tileBoundsBuffer&&(this._tileBoundsBuffer.destroy(),this._tileBoundsIndexBuffer.destroy(),this._tileBoundsSegments.destroy(),this._tileBoundsBuffer=null),this._tileDebugBuffer&&(this._tileDebugBuffer.destroy(),this._tileDebugSegments.destroy(),this._tileDebugBuffer=null),this._tileDebugIndexBuffer&&(this._tileDebugIndexBuffer.destroy(),this._tileDebugIndexBuffer=null),this._globeTileDebugBorderBuffer&&(this._globeTileDebugBorderBuffer.destroy(),this._globeTileDebugBorderBuffer=null),this._tileDebugTextBuffer&&(this._tileDebugTextBuffer.destroy(),this._tileDebugTextSegments.destroy(),this._tileDebugTextIndexBuffer.destroy(),this._tileDebugTextBuffer=null),this._globeTileDebugTextBuffer&&(this._globeTileDebugTextBuffer.destroy(),this._globeTileDebugTextBuffer=null),this.latestFeatureIndex=null,this.state="unloaded"}}loadModelData(t,s,h){t&&(t.resourceTiming&&(this.resourceTiming=t.resourceTiming),this.buckets={...this.buckets,...bl(t.buckets,s.style)},t.featureIndex&&(this.latestFeatureIndex=t.featureIndex))}getBucket(t){return this.buckets[t.fqid]}upload(t){for(const _ in this.buckets){const y=this.buckets[_];y.uploadPending()&&y.upload(t)}const s=t.gl,h=this.imageAtlas;if(h&&!h.uploaded){const _=!!Object.keys(h.patternPositions).length;this.imageAtlasTexture=new i.T(t,h.image,s.RGBA8,{useMipmap:_}),this.imageAtlas.uploaded=!0}this.glyphAtlasImage&&(this.glyphAtlasTexture=new i.T(t,this.glyphAtlasImage,s.R8),this.glyphAtlasImage=null),this.lineAtlas&&!this.lineAtlas.uploaded&&(this.lineAtlasTexture=new i.T(t,this.lineAtlas.image,s.R8),this.lineAtlas.uploaded=!0)}prepare(t,s,h){if(this.imageAtlas&&this.imageAtlasTexture&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture,h),!s||!this.latestFeatureIndex||!this.latestFeatureIndex.rawTileData)return;const _=s.style.getBrightness();(this._lastUpdatedBrightness||_)&&(this._lastUpdatedBrightness&&_&&Math.abs(this._lastUpdatedBrightness-_)<.001||(this.updateBuckets(s,this._lastUpdatedBrightness!==_),this._lastUpdatedBrightness=_))}queryRenderedFeatures(t,s,h,_,y,T){if(!this.latestFeatureIndex||!this.latestFeatureIndex.rawTileData&&!this.latestFeatureIndex.is3DTile)return{};const z=function(R,F){const N=i.ab.mat4.fromScaling([],[.5*R.width,.5*-R.height,1]);return i.ab.mat4.translate(N,N,[1,-1,0]),i.ab.mat4.multiply(N,N,R.calculateProjMatrix(F.toUnwrapped())),Float32Array.from(N)}(y,this.tileID);return this.latestFeatureIndex.query(t,{tilespaceGeometry:s,pixelPosMatrix:z,transform:_,availableImages:h,tileTransform:this.tileTransform})}querySourceFeatures(t,s){const h=this.latestFeatureIndex;if(!h||!h.rawTileData)return;const _=h.loadVTLayers(),y=s?s.sourceLayer:"",T=_._geojsonTileLayer||_[y];if(!T)return;const z=i.aZ(s&&s.filter),{z:R,x:F,y:N}=this.tileID.canonical,G={z:R,x:F,y:N};for(let Z=0;Z<T.length;Z++){const W=T.feature(Z);if(z.needGeometry){const se=i.a_(W,!0);if(!z.filter(new i.a8(this.tileID.overscaledZ),se,this.tileID.canonical))continue}else if(!z.filter(new i.a8(this.tileID.overscaledZ),W))continue;const te=h.getId(W,y),ee=new i.a$(W,R,F,N,te);ee.tile=G,t.push(ee)}}hasData(){return this.state==="loaded"||this.state==="reloading"||this.state==="expired"}patternsLoaded(){return!!this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length}setExpiryData(t){const s=this.expirationTime;if(t.cacheControl){const h=i.b0(t.cacheControl);h["max-age"]&&(this.expirationTime=Date.now()+1e3*h["max-age"])}else t.expires&&(this.expirationTime=new Date(t.expires).getTime());if(this.expirationTime){const h=Date.now();let _=!1;if(this.expirationTime>h)_=!1;else if(s)if(this.expirationTime<s)_=!0;else{const y=this.expirationTime-s;y?this.expirationTime=h+Math.max(y,3e4):_=!0}else _=!0;_?(this.expiredRequestCount++,this.state="expired"):this.expiredRequestCount=0}}getExpiryTimeout(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-new Date().getTime(),Math.pow(2,31)-1)}refreshFeatureState(t){this.latestFeatureIndex&&(this.latestFeatureIndex.rawTileData||this.latestFeatureIndex.is3DTile)&&t&&this.updateBuckets(t)}updateBuckets(t,s){if(!this.latestFeatureIndex||!t.style)return;const h=this.latestFeatureIndex.loadVTLayers(),_=t.style.listImages(),y=t.style.getBrightness();for(const T in this.buckets){if(!t.style.hasLayer(T))continue;const z=this.buckets[T],R=z.layers[0],F=R.sourceLayer||"_geojsonTileLayer",N=h[F],G=t.style.getLayerSourceCache(R);let Z={};G&&(Z=G._state.getState(F,void 0));const W=this.imageAtlas&&this.imageAtlas.patternPositions||{},te=Object.keys(Z).length>0&&!s;te&&!z.stateDependentLayers.length&&!s||z.update(Z,N,_,W,te?z.stateDependentLayers:z.layers,s,y),(z instanceof i.b1||z instanceof i.b2)&&t._terrain&&t._terrain.enabled&&G&&z.programConfigurations.needsUpload&&t._terrain._clearRenderCacheForTile(G.id,this.tileID);const ee=t&&t.style&&t.style.getOwnLayer(T);ee&&(this.queryPadding=Math.max(this.queryPadding,ee.queryRadius(z)))}}holdingForFade(){return this.symbolFadeHoldUntil!==void 0}symbolFadeFinished(){return!this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<i.q.now()}clearFadeHold(){this.symbolFadeHoldUntil=void 0}setHoldDuration(t){this.symbolFadeHoldUntil=i.q.now()+t}setTexture(t,s){const h=s.context,_=h.gl;this.texture=this.texture||s.getTileTexture(t.width),this.texture&&this.texture instanceof i.T?this.texture.update(t):(this.texture=new i.T(h,t,_.RGBA8,{useMipmap:!0}),this.texture.bind(_.LINEAR,_.CLAMP_TO_EDGE))}setDependencies(t,s){const h={};for(const _ of s)h[_]=!0;this.dependencies[t]=h}hasDependency(t,s){for(const h of t){const _=this.dependencies[h];if(_){for(const y of s)if(_[y])return!0}}return!1}clearQueryDebugViz(){}_makeDebugTileBoundsBuffers(t,s){if(!s||s.name==="mercator"||this._tileDebugBuffer)return;const h=i.b3(Lr,this.tileID.canonical,this.tileTransform)[0],_=new i.b4,y=new i.b5;for(let T=0;T<h.length;T++){const{x:z,y:R}=h[T];_.emplaceBack(z,R),y.emplaceBack(T)}y.emplaceBack(0),this._tileDebugIndexBuffer=t.createIndexBuffer(y),this._tileDebugBuffer=t.createVertexBuffer(_,i.b6.members),this._tileDebugSegments=i.b7.simpleSegment(0,0,_.length,y.length)}_makeTileBoundsBuffers(t,s){if(this._tileBoundsBuffer||!s||s.name==="mercator")return;const h=i.b3(Lr,this.tileID.canonical,this.tileTransform)[0];let _,y;if(this.isRaster){const T=function(z,R){const F=i.aQ(z,R),N=Math.pow(2,z.z);for(let se=0;se<es;se++)for(let oe=0;oe<es;oe++){const he=i.aR((z.x+(oe+$r(oe))/Zs)/N),_e=i.aS((z.y+(se+$r(se))/Zs)/N),pe=R.project(he,_e),Me=se*es+oe;sr[2*Me+0]=Math.round((pe.x*F.scale-F.x)*i.ag),sr[2*Me+1]=Math.round((pe.y*F.scale-F.y)*i.ag)}Js.fill(0),Yn.fill(0);for(let se=2045;se>=0;se--){const oe=4*se,he=Ir[oe+0],_e=Ir[oe+1],pe=Ir[oe+2],Me=Ir[oe+3],xe=he+pe>>1,we=_e+Me>>1,ve=xe+we-_e,Ae=we+he-xe,Oe=_e*es+he,Xe=Me*es+pe,He=we*es+xe,ke=Math.hypot((sr[2*Oe+0]+sr[2*Xe+0])/2-sr[2*He+0],(sr[2*Oe+1]+sr[2*Xe+1])/2-sr[2*He+1])>=16;Js[He]=Js[He]||(ke?1:0),se<1022&&(Js[He]=Js[He]||Js[(_e+Ae>>1)*es+(he+ve>>1)]||Js[(Me+Ae>>1)*es+(pe+ve>>1)])}const G=new i.aT,Z=new i.aU;let W=0;function te(se,oe){const he=oe*es+se;return Yn[he]===0&&(G.emplaceBack(sr[2*he+0],sr[2*he+1],se*i.ag/Zs,oe*i.ag/Zs),Yn[he]=++W),Yn[he]-1}function ee(se,oe,he,_e,pe,Me){const xe=se+he>>1,we=oe+_e>>1;if(Math.abs(se-pe)+Math.abs(oe-Me)>1&&Js[we*es+xe])ee(pe,Me,se,oe,xe,we),ee(he,_e,pe,Me,xe,we);else{const ve=te(se,oe),Ae=te(he,_e),Oe=te(pe,Me);Z.emplaceBack(ve,Ae,Oe)}}return ee(0,0,Zs,Zs,Zs,0),ee(Zs,Zs,0,0,0,Zs),{vertices:G,indices:Z}}(this.tileID.canonical,s);_=T.vertices,y=T.indices}else{_=new i.aT,y=new i.aU;for(const{x:z,y:R}of h)_.emplaceBack(z,R,0,0);const T=i.b8(_.int16,void 0,4);for(let z=0;z<T.length;z+=3)y.emplaceBack(T[z],T[z+1],T[z+2])}this._tileBoundsBuffer=t.createVertexBuffer(_,i.b9.members),this._tileBoundsIndexBuffer=t.createIndexBuffer(y),this._tileBoundsSegments=i.b7.simpleSegment(0,0,_.length,y.length)}_makeGlobeTileDebugBuffers(t,s){const h=s.projection;if(!h||h.name!=="globe"||s.freezeTileCoverage)return;const _=this.tileID.canonical,y=i.ba(_,s),T=i.bb(y),z=i.ae(s.zoom);let R;z>0&&(R=i.ab.mat4.invert(new Float64Array(16),s.globeMatrix)),this._makeGlobeTileDebugBorderBuffer(t,_,s,T,R,z),this._makeGlobeTileDebugTextBuffer(t,_,s,T,R,z)}_globePoint(t,s,h,_,y,T,z){let R=i.bc(t,s,h);if(T){const F=1<<h.z,N=i.at(_.center.lng),G=i.aA(_.center.lat),Z=(h.x+.5)/F-N;let W=0;Z>.5?W=-1:Z<-.5&&(W=1);let te=(t/i.ag+h.x)/F+W,ee=(s/i.ag+h.y)/F;te=(te-N)*_._pixelsPerMercatorPixel+N,ee=(ee-G)*_._pixelsPerMercatorPixel+G;const se=[te*_.worldSize,ee*_.worldSize,0];i.ab.vec3.transformMat4(se,se,T),R=i.bd(R,se,z)}return i.ab.vec3.transformMat4(R,R,y)}_makeGlobeTileDebugBorderBuffer(t,s,h,_,y,T){const z=new i.b4,R=new i.b5,F=new i.be,N=(Z,W,te,ee,se)=>{const oe=(te-Z)/(se-1),he=(ee-W)/(se-1),_e=z.length;for(let pe=0;pe<se;pe++){const Me=Z+pe*oe,xe=W+pe*he;z.emplaceBack(Me,xe);const we=this._globePoint(Me,xe,s,h,_,y,T);F.emplaceBack(we[0],we[1],we[2]),R.emplaceBack(_e+pe)}},G=i.ag;N(0,0,G,0,16),N(G,0,G,G,16),N(G,G,0,G,16),N(0,G,0,0,16),this._tileDebugIndexBuffer=t.createIndexBuffer(R),this._tileDebugBuffer=t.createVertexBuffer(z,i.b6.members),this._globeTileDebugBorderBuffer=t.createVertexBuffer(F,i.bf.members),this._tileDebugSegments=i.b7.simpleSegment(0,0,z.length,R.length)}_makeGlobeTileDebugTextBuffer(t,s,h,_,y,T){const z=i.ag/4,R=new i.b4,F=new i.aU,N=new i.be,G=25;F.reserve(32),R.reserve(G),N.reserve(G);const Z=(W,te)=>G*W+te;for(let W=0;W<G;W++){const te=W*z;for(let ee=0;ee<G;ee++){const se=ee*z;R.emplaceBack(se,te);const oe=this._globePoint(se,te,s,h,_,y,T);N.emplaceBack(oe[0],oe[1],oe[2])}}for(let W=0;W<4;W++)for(let te=0;te<4;te++){const ee=Z(W,te),se=Z(W,te+1),oe=Z(W+1,te),he=Z(W+1,te+1);F.emplaceBack(ee,se,oe),F.emplaceBack(oe,se,he)}this._tileDebugTextIndexBuffer=t.createIndexBuffer(F),this._tileDebugTextBuffer=t.createVertexBuffer(R,i.b6.members),this._globeTileDebugTextBuffer=t.createVertexBuffer(N,i.bf.members),this._tileDebugTextSegments=i.b7.simpleSegment(0,0,G,32)}destroy(t=!1){for(const s in this.buckets)this.buckets[s].destroy();this.buckets={},this.imageAtlas&&(this.imageAtlas=null),this.lineAtlas&&(this.lineAtlas=null),this.imageAtlasTexture&&(this.imageAtlasTexture.destroy(),delete this.imageAtlasTexture),this.glyphAtlasTexture&&(this.glyphAtlasTexture.destroy(),delete this.glyphAtlasTexture),this.lineAtlasTexture&&(this.lineAtlasTexture.destroy(),delete this.lineAtlasTexture),this._tileBoundsBuffer&&(this._tileBoundsBuffer.destroy(),this._tileBoundsIndexBuffer.destroy(),this._tileBoundsSegments.destroy(),this._tileBoundsBuffer=null),this._tileDebugBuffer&&(this._tileDebugBuffer.destroy(),this._tileDebugSegments.destroy(),this._tileDebugBuffer=null),this._tileDebugIndexBuffer&&(this._tileDebugIndexBuffer.destroy(),this._tileDebugIndexBuffer=null),this._globeTileDebugBorderBuffer&&(this._globeTileDebugBorderBuffer.destroy(),this._globeTileDebugBorderBuffer=null),this._tileDebugTextBuffer&&(this._tileDebugTextBuffer.destroy(),this._tileDebugTextSegments.destroy(),this._tileDebugTextIndexBuffer.destroy(),this._tileDebugTextBuffer=null),this._globeTileDebugTextBuffer&&(this._globeTileDebugTextBuffer.destroy(),this._globeTileDebugTextBuffer=null),!t&&this.texture&&this.texture instanceof i.T&&(this.texture.destroy(),delete this.texture),this.hillshadeFBO&&(this.hillshadeFBO.destroy(),delete this.hillshadeFBO),this.dem&&delete this.dem,this.neighboringTiles&&delete this.neighboringTiles,this.demTexture&&(this.demTexture.destroy(),delete this.demTexture),this.rasterParticleState&&(this.rasterParticleState.destroy(),delete this.rasterParticleState),this.latestFeatureIndex=null,this.state="unloaded"}}i.bg.setPbf(i.bh);class Na extends zr{constructor(t,s,h,_,y){super(t,s,h,_,y),this._workQueue=[],this._fetchQueue=[],this._isHeaderLoaded=!1}setTexture(t,s){const h=s.context,_=h.gl;this.texture=this.texture||s.getTileTexture(t.width),this.texture&&this.texture instanceof i.T?this.texture.update(t,{premultiply:!1}):this.texture=new i.T(h,t,_.RGBA8,{premultiply:!1})}flushQueues(){for(;this._workQueue.length;)this._workQueue.pop()();for(;this._fetchQueue.length;)this._fetchQueue.pop()()}fetchHeader(t=16384,s){const h=this._mrt=new i.bg(30),_=Object.assign({},this.requestParams,{headers:{Range:"bytes=0-"+(t-1)}});return this.entireBuffer=null,this.request=i.bi(_,(y,T,z,R)=>{if(y)s(y);else try{const F=h.getHeaderLength(T);if(F>t)return void(this.request=this.fetchHeader(F,s));h.parseHeader(T),this._isHeaderLoaded=!0;let N=0;for(const G of Object.values(h.layers))N=Math.max(N,G.dataIndex[G.dataIndex.length-1].last_byte);T.byteLength>=N&&(this.entireBuffer=T),s(null,this.entireBuffer||T,z,R)}catch(F){s(F)}}),this.request}fetchBand(t,s,h){const _=this._mrt;if(!this._isHeaderLoaded||!_)return void h(new Error("Tile header is not ready"));const y=this.actor;if(!y)return void h(new Error("Can't fetch tile band without an actor"));let T;const z=(G,Z)=>{T.complete(G,Z),G?h(G):(this.updateTextureDescriptor(t,s),h(null,this.textureDescriptor&&this.textureDescriptor.img))},R=(G,Z)=>{if(G)return h(G);const W=y.send("decodeRasterArray",{buffer:Z,task:T},z,void 0,!0);this._workQueue.push(()=>{W&&W.cancel(),T.cancel()})},F=_.getLayer(t);if(!F)return void h(new Error(`Unknown sourceLayer "${t}"`));if(F.hasDataForBand(s))return this.updateTextureDescriptor(t,s),void h(null,this.textureDescriptor?this.textureDescriptor.img:null);const N=F.getDataRange([s]);if(T=_.createDecodingTask(N),!T||T.tasks.length)if(this.flushQueues(),this.entireBuffer)R(null,this.entireBuffer.slice(N.firstByte,N.lastByte+1));else{const G=Object.assign({},this.requestParams,{headers:{Range:`bytes=${N.firstByte}-${N.lastByte}`}}),Z=i.bi(G,R);this._fetchQueue.push(()=>{Z.cancel(),T.cancel()})}else h(null)}updateNeeded(t,s){return(!this.textureDescriptor||this.textureDescriptor.band!==s||this.textureDescriptor.layer!==t)&&this.state!=="errored"}updateTextureDescriptor(t,s){if(!this._mrt)return;const h=this._mrt.getLayer(t);if(!h||!h.hasBand(s)||!h.hasDataForBand(s))return;const{bytes:_,tileSize:y,buffer:T,offset:z,scale:R}=h.getBandView(s),F=y+2*T,N={data:_,width:F,height:F},G=this.texture;G&&G instanceof i.T&&G.update(N,{premultiply:!1}),this.textureDescriptor={layer:t,band:s,img:N,buffer:T,offset:z,tileSize:y,format:h.pixelFormat,mix:[R,256*R,65536*R,16777216*R]}}}class fa{constructor(t,s){this.max=t,this.onRemove=s,this.reset()}reset(){for(const t in this.data)for(const s of this.data[t])s.timeout&&clearTimeout(s.timeout),this.onRemove(s.value);return this.data={},this.order=[],this}add(t,s,h){const _=t.wrapped().key;this.data[_]===void 0&&(this.data[_]=[]);const y={value:s,timeout:void 0};if(h!==void 0&&(y.timeout=setTimeout(()=>{this.remove(t,y)},h)),this.data[_].push(y),this.order.push(_),this.order.length>this.max){const T=this._getAndRemoveByKey(this.order[0]);T&&this.onRemove(T)}return this}has(t){return t.wrapped().key in this.data}getAndRemove(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null}_getAndRemoveByKey(t){const s=this.data[t].shift();return s.timeout&&clearTimeout(s.timeout),this.data[t].length===0&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),s.value}getByKey(t){const s=this.data[t];return s?s[0].value:null}get(t){return this.has(t)?this.data[t.wrapped().key][0].value:null}remove(t,s){if(!this.has(t))return this;const h=t.wrapped().key,_=s===void 0?0:this.data[h].indexOf(s),y=this.data[h][_];return this.data[h].splice(_,1),y.timeout&&clearTimeout(y.timeout),this.data[h].length===0&&delete this.data[h],this.onRemove(y.value),this.order.splice(this.order.indexOf(h),1),this}setMaxSize(t){for(this.max=t;this.order.length>this.max;){const s=this._getAndRemoveByKey(this.order[0]);s&&this.onRemove(s)}return this}filter(t){const s=[];for(const h in this.data)for(const _ of this.data[h])t(_.value)||s.push(_);for(const h of s)this.remove(h.value.tileID,h)}}class Wo{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(t,s,h){const _=String(s);if(this.stateChanges[t]=this.stateChanges[t]||{},this.stateChanges[t][_]=this.stateChanges[t][_]||{},i.l(this.stateChanges[t][_],h),this.deletedStates[t]===null){this.deletedStates[t]={};for(const y in this.state[t])y!==_&&(this.deletedStates[t][y]=null)}else if(this.deletedStates[t]&&this.deletedStates[t][_]===null){this.deletedStates[t][_]={};for(const y in this.state[t][_])h[y]||(this.deletedStates[t][_][y]=null)}else for(const y in h)this.deletedStates[t]&&this.deletedStates[t][_]&&this.deletedStates[t][_][y]===null&&delete this.deletedStates[t][_][y]}removeFeatureState(t,s,h){if(this.deletedStates[t]===null)return;const _=String(s);if(this.deletedStates[t]=this.deletedStates[t]||{},h&&s!==void 0)this.deletedStates[t][_]!==null&&(this.deletedStates[t][_]=this.deletedStates[t][_]||{},this.deletedStates[t][_][h]=null);else if(s!==void 0)if(this.stateChanges[t]&&this.stateChanges[t][_])for(h in this.deletedStates[t][_]={},this.stateChanges[t][_])this.deletedStates[t][_][h]=null;else this.deletedStates[t][_]=null;else this.deletedStates[t]=null}getState(t,s){const h=this.state[t]||{},_=this.stateChanges[t]||{},y=this.deletedStates[t];if(y===null)return{};if(s!==void 0){const z=String(s),R=i.l({},h[z],_[z]);if(y){const F=y[s];if(F===null)return{};for(const N in F)delete R[N]}return R}const T=i.l({},h,_);if(y)for(const z in y)delete T[z];return T}initializeTileState(t,s){t.refreshFeatureState(s)}coalesceChanges(t,s){const h={};for(const _ in this.stateChanges){this.state[_]=this.state[_]||{};const y={};for(const T in this.stateChanges[_])this.state[_][T]||(this.state[_][T]={}),i.l(this.state[_][T],this.stateChanges[_][T]),y[T]=this.state[_][T];h[_]=y}for(const _ in this.deletedStates){this.state[_]=this.state[_]||{};const y={};if(this.deletedStates[_]===null)for(const T in this.state[_])y[T]={},this.state[_][T]={};else for(const T in this.deletedStates[_]){if(this.deletedStates[_][T]===null)this.state[_][T]={};else if(this.state[_][T])for(const z of Object.keys(this.deletedStates[_][T]))delete this.state[_][T][z];y[T]=this.state[_][T]}h[_]=h[_]||{},i.l(h[_],y)}if(this.stateChanges={},this.deletedStates={},Object.keys(h).length!==0)for(const _ in t)t[_].refreshFeatureState(s)}}class rr extends i.E{constructor(t,s,h){super(),this.id=t,this._onlySymbols=h,s.on("data",_=>{_.dataType==="source"&&_.sourceDataType==="metadata"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&_.dataType==="source"&&_.sourceDataType==="content"&&(this.reload(),this.transform&&this.update(this.transform))}),s.on("error",()=>{this._sourceErrored=!0}),this._source=s,this._tiles={},this._cache=new fa(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._minTileCacheSize=s.minTileCacheSize,this._maxTileCacheSize=s.maxTileCacheSize,this._loadedParentTiles={},this.castsShadows=!1,this.tileCoverLift=0,this._coveredTiles={},this._shadowCasterTiles={},this._state=new Wo,this._isRaster=this._source.type==="raster"||this._source.type==="raster-dem"||this._source.type==="raster-array"||this._source.type==="custom"&&this._source._dataType==="raster"}onAdd(t){this.map=t,this._minTileCacheSize=this._minTileCacheSize===void 0&&t?t._minTileCacheSize:this._minTileCacheSize,this._maxTileCacheSize=this._maxTileCacheSize===void 0&&t?t._maxTileCacheSize:this._maxTileCacheSize}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;for(const t in this._tiles){const s=this._tiles[t];if(s.state!=="loaded"&&s.state!=="errored")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;const t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform)}_loadTile(t,s){return t.isSymbolTile=this._onlySymbols,t.isExtraShadowCaster=this._shadowCasterTiles[t.tileID.key],this._source.loadTile(t,s)}_unloadTile(t){if(this._source.unloadTile)return this._source.unloadTile(t)}_abortTile(t){if(this._source.abortTile)return this._source.abortTile(t)}serialize(){return this._source.serialize()}prepare(t){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(const s in this._tiles){const h=this._tiles[s];h.upload(t),h.prepare(this.map.style.imageManager,this.map?this.map.painter:null,this._source.scope)}}getIds(){return i.bj(this._tiles).map(t=>t.tileID).sort(pa).map(t=>t.key)}getRenderableIds(t,s){const h=[];for(const _ in this._tiles)this._isIdRenderable(+_,t,s)&&h.push(this._tiles[_]);return t?h.sort((_,y)=>{const T=_.tileID,z=y.tileID,R=new i.P(T.canonical.x,T.canonical.y)._rotate(this.transform.angle),F=new i.P(z.canonical.x,z.canonical.y)._rotate(this.transform.angle);return T.overscaledZ-z.overscaledZ||F.y-R.y||F.x-R.x}).map(_=>_.tileID.key):h.map(_=>_.tileID).sort(pa).map(_=>_.key)}hasRenderableParent(t){const s=this.findLoadedParent(t,0);return!!s&&this._isIdRenderable(s.tileID.key)}_isIdRenderable(t,s,h){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(s||!this._tiles[t].holdingForFade())&&(h||!this._shadowCasterTiles[t])}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(const t in this._tiles)this._tiles[t].state!=="errored"&&this._reloadTile(+t,"reloading")}}_reloadTile(t,s){const h=this._tiles[t];h&&(h.state!=="loading"&&(h.state=s),this._loadTile(h,this._tileLoaded.bind(this,h,t,s)))}_tileLoaded(t,s,h,_){if(_)if(t.state="errored",_.status!==404)this._source.fire(new i.y(_,{tile:t}));else{if(this._source.fire(new i.z("data",{dataType:"source",sourceDataType:"error",sourceId:this._source.id,tile:t})),!(t.tileID.key in this._loadedParentTiles))return;if(this._source.type==="raster-dem"&&this.usedForTerrain&&this.map.painter.terrain){const y=this.map.painter.terrain;this.update(this.transform,y.getScaledDemTileSize(),!0),y.resetTileLookupCache(this.id)}else this.update(this.transform)}else t.timeAdded=i.q.now(),h==="expired"&&(t.refreshedUponExpiration=!0),this._setTileReloadTimer(s,t),this._source.type==="raster-dem"&&t.dem&&this._backfillDEM(t),this._state.initializeTileState(t,this.map?this.map.painter:null),this._source.fire(new i.z("data",{dataType:"source",tile:t,coord:t.tileID,sourceCacheId:this.id}))}_backfillDEM(t){const s=this.getRenderableIds();for(let _=0;_<s.length;_++){const y=s[_];if(t.neighboringTiles&&t.neighboringTiles[y]){const T=this.getTileByID(y);h(t,T),h(T,t)}}function h(_,y){if(!_.dem||_.dem.borderReady)return;_.needsHillshadePrepare=!0,_.needsDEMTextureUpload=!0;let T=y.tileID.canonical.x-_.tileID.canonical.x;const z=y.tileID.canonical.y-_.tileID.canonical.y,R=Math.pow(2,_.tileID.canonical.z),F=y.tileID.key;T===0&&z===0||Math.abs(z)>1||(Math.abs(T)>1&&(Math.abs(T+R)===1?T+=R:Math.abs(T-R)===1&&(T-=R)),y.dem&&_.dem&&(_.dem.backfillBorder(y.dem,T,z),_.neighboringTiles&&_.neighboringTiles[F]&&(_.neighboringTiles[F].backfilled=!0)))}}getTile(t){return this.getTileByID(t.key)}getTileByID(t){return this._tiles[t]}_retainLoadedChildren(t,s,h,_){for(const y in this._tiles){let T=this._tiles[y];if(_[y]||!T.hasData()||T.tileID.overscaledZ<=s||T.tileID.overscaledZ>h)continue;let z=T.tileID;for(;T&&T.tileID.overscaledZ>s+1;){const F=T.tileID.scaledTo(T.tileID.overscaledZ-1);T=this._tiles[F.key],T&&T.hasData()&&(z=F)}let R=z;for(;R.overscaledZ>s;)if(R=R.scaledTo(R.overscaledZ-1),t[R.key]){_[z.key]=z;break}}}findLoadedParent(t,s){if(t.key in this._loadedParentTiles){const h=this._loadedParentTiles[t.key];return h&&h.tileID.overscaledZ>=s?h:null}for(let h=t.overscaledZ-1;h>=s;h--){const _=t.scaledTo(h),y=this._getLoadedTile(_);if(y)return y}}_getLoadedTile(t){const s=this._tiles[t.key];return s&&s.hasData()?s:this._cache.getByKey(this._source.reparseOverscaled?t.wrapped().key:t.canonical.key)}updateCacheSize(t,s){s=s||this._source.tileSize;const h=Math.ceil(t.width/s)+1,_=Math.ceil(t.height/s)+1,y=Math.floor(h*_*5),T=typeof this._minTileCacheSize=="number"?Math.max(this._minTileCacheSize,y):y,z=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,T):T;this._cache.setMaxSize(z)}handleWrapJump(t){const s=Math.round((t-(this._prevLng===void 0?t:this._prevLng))/360);if(this._prevLng=t,s){const h={};for(const _ in this._tiles){const y=this._tiles[_];y.tileID=y.tileID.unwrapTo(y.tileID.wrap+s),h[y.tileID.key]=y}this._tiles=h;for(const _ in this._timers)clearTimeout(this._timers[_]),delete this._timers[_];for(const _ in this._tiles)this._setTileReloadTimer(+_,this._tiles[_])}}update(t,s,h,_){if(this.transform=t,!this._sourceLoaded||this._paused||this.transform.freezeTileCoverage||this.usedForTerrain&&!h)return;this.updateCacheSize(t,s),this.transform.projection.name!=="globe"&&this.handleWrapJump(this.transform.center.lng),this._shadowCasterTiles={},this._coveredTiles={};const y=this._source.type==="batched-model";let T,z=this._source.maxzoom;const R=this.map&&this.map.painter?this.map.painter._terrain:null;if(R&&R.sourceCache===this&&R.attenuationRange()){const G=R.attenuationRange()[0],Z=Math.floor(G)-Math.log2(R.getDemUpscale());z>Z&&(z=Z)}if(this.used||this.usedForTerrain){if(this._source.tileID)T=t.getVisibleUnwrappedCoordinates(this._source.tileID).map(G=>new i.aG(G.canonical.z,G.wrap,G.canonical.z,G.canonical.x,G.canonical.y));else if(this.tileCoverLift!==0){const G=t.clone();G.tileCoverLift=this.tileCoverLift,T=G.coveringTiles({tileSize:s||this._source.tileSize,minzoom:this._source.minzoom,maxzoom:z,roundZoom:this._source.roundZoom&&!h,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain,calculateQuadrantVisibility:y}),this._source.minzoom<=1&&t.projection.name==="globe"&&(T.push(new i.aG(1,0,1,0,0)),T.push(new i.aG(1,0,1,1,0)),T.push(new i.aG(1,0,1,0,1)),T.push(new i.aG(1,0,1,1,1)))}else if(T=t.coveringTiles({tileSize:s||this._source.tileSize,minzoom:this._source.minzoom,maxzoom:z,roundZoom:this._source.roundZoom&&!h,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain,calculateQuadrantVisibility:y}),this._source.hasTile){const G=this._source.hasTile.bind(this._source);T=T.filter(Z=>G(Z))}}else T=[];if(T.length>0&&this.castsShadows&&_&&this.transform.projection.name!=="globe"&&!this.usedForTerrain&&!Va(this._source.type)){const G=t.coveringZoomLevel({tileSize:s||this._source.tileSize,roundZoom:this._source.roundZoom&&!h}),Z=Math.min(G,this._source.maxzoom);if(y){const W=t.extendTileCover(T,Z);for(const te of W)T.push(te)}else{const W=t.extendTileCover(T,Z,_);for(const te of W)this._shadowCasterTiles[te.key]=!0,T.push(te)}}const F=this._updateRetainedTiles(T);if(Va(this._source.type)&&T.length!==0){const G={},Z={},W=Object.keys(F);for(const ee of W){const se=F[ee],oe=this._tiles[ee];if(!oe||oe.fadeEndTime&&oe.fadeEndTime<=i.q.now())continue;const he=this.findLoadedParent(se,Math.max(se.overscaledZ-rr.maxOverzooming,this._source.minzoom));he&&(this._addTile(he.tileID),G[he.tileID.key]=he.tileID),Z[ee]=se}const te=T[T.length-1].overscaledZ;for(const ee in this._tiles){const se=this._tiles[ee];if(F[ee]||!se.hasData())continue;let oe=se.tileID;for(;oe.overscaledZ>te;){oe=oe.scaledTo(oe.overscaledZ-1);const he=this._tiles[oe.key];if(he&&he.hasData()&&Z[oe.key]){F[ee]=se.tileID;break}}}for(const ee in G)F[ee]||(this._coveredTiles[ee]=!0,F[ee]=G[ee])}for(const G in F)this._tiles[G].clearFadeHold();const N=i.bk(this._tiles,F);for(const G of N){const Z=this._tiles[G];Z.hasSymbolBuckets&&!Z.holdingForFade()?Z.setHoldDuration(this.map._fadeDuration):Z.hasSymbolBuckets&&!Z.symbolFadeFinished()||this._removeTile(+G)}this._updateLoadedParentTileCache(),this._onlySymbols&&this._source.afterUpdate&&this._source.afterUpdate()}releaseSymbolFadeTiles(){for(const t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(+t)}_updateRetainedTiles(t){const s={};if(t.length===0)return s;const h={},_=t.reduce((F,N)=>Math.min(F,N.overscaledZ),1/0),y=t[0].overscaledZ,T=Math.max(y-rr.maxOverzooming,this._source.minzoom),z=Math.max(y+rr.maxUnderzooming,this._source.minzoom),R={};for(const F of t){const N=this._addTile(F);s[F.key]=F,N.hasData()||_<this._source.maxzoom&&(R[F.key]=F)}this._retainLoadedChildren(R,_,z,s);for(const F of t){let N=this._tiles[F.key];if(N.hasData())continue;if(F.canonical.z>=this._source.maxzoom){const Z=F.children(this._source.maxzoom)[0],W=this.getTile(Z);if(W&&W.hasData()){s[Z.key]=Z;continue}}else{const Z=F.children(this._source.maxzoom);if(s[Z[0].key]&&s[Z[1].key]&&s[Z[2].key]&&s[Z[3].key])continue}let G=N.wasRequested();for(let Z=F.overscaledZ-1;Z>=T;--Z){const W=F.scaledTo(Z);if(h[W.key]||(h[W.key]=!0,N=this.getTile(W),!N&&G&&(N=this._addTile(W)),N&&(s[W.key]=W,G=N.wasRequested(),N.hasData())))break}}return s}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const t in this._tiles){const s=[];let h,_=this._tiles[t].tileID;for(;_.overscaledZ>0;){if(_.key in this._loadedParentTiles){h=this._loadedParentTiles[_.key];break}s.push(_.key);const y=_.scaledTo(_.overscaledZ-1);if(h=this._getLoadedTile(y),h)break;_=y}for(const y of s)this._loadedParentTiles[y]=h}}_addTile(t){let s=this._tiles[t.key];if(s)return s.isExtraShadowCaster!==!0||this._shadowCasterTiles[t.key]||this._reloadTile(t.key,"reloading"),s;s=this._cache.getAndRemove(t),s&&(this._setTileReloadTimer(t.key,s),s.tileID=t,this._state.initializeTileState(s,this.map?this.map.painter:null),this._cacheTimers[t.key]&&(clearTimeout(this._cacheTimers[t.key]),delete this._cacheTimers[t.key],this._setTileReloadTimer(t.key,s)));const h=!!s;if(!h){const _=this.map?this.map.painter:null,y=this._source.tileSize*t.overscaleFactor();s=this._source.type==="raster-array"?new Na(t,y,this.transform.tileZoom,_,this._isRaster):new zr(t,y,this.transform.tileZoom,_,this._isRaster),this._loadTile(s,this._tileLoaded.bind(this,s,t.key,s.state))}return s?(s.uses++,this._tiles[t.key]=s,h||this._source.fire(new i.z("dataloading",{tile:s,coord:s.tileID,dataType:"source"})),s):null}_setTileReloadTimer(t,s){t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);const h=s.getExpiryTimeout();h&&(this._timers[t]=setTimeout(()=>{this._reloadTile(t,"expired"),delete this._timers[t]},h))}_removeTile(t){const s=this._tiles[t];s&&(s.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),s.uses>0||(s.hasData()&&s.state!=="reloading"||s.state==="empty"?this._cache.add(s.tileID,s,s.getExpiryTimeout()):(s.aborted=!0,this._abortTile(s),this._unloadTile(s))))}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const t in this._tiles)this._removeTile(+t);this._source._clear&&this._source._clear(),this._cache.reset(),this.map&&this.usedForTerrain&&this.map.painter.terrain&&this.map.painter.terrain.resetTileLookupCache(this.id)}tilesIn(t,s,h){const _=[],y=this.transform;if(!y)return _;const T=y.projection.name==="globe",z=i.at(y.center.lng);for(const R in this._tiles){const F=this._tiles[R];if(h&&F.clearQueryDebugViz(),F.holdingForFade())continue;let N;if(T){const G=F.tileID.canonical;if(G.z===0){const Z=[Math.abs(i.aw(z,...ki(G,-1))-z),Math.abs(i.aw(z,...ki(G,1))-z)];N=[0,2*Z.indexOf(Math.min(...Z))-1]}else{const Z=[Math.abs(i.aw(z,...ki(G,-1))-z),Math.abs(i.aw(z,...ki(G,0))-z),Math.abs(i.aw(z,...ki(G,1))-z)];N=[Z.indexOf(Math.min(...Z))-1]}}else N=[0];for(const G of N){const Z=t.containsTile(F,y,s,G);Z&&_.push(Z)}}return _}getShadowCasterCoordinates(){return this._getRenderableCoordinates(!1,!0)}getVisibleCoordinates(t){return this._getRenderableCoordinates(t)}_getRenderableCoordinates(t,s){const h=this.getRenderableIds(t,s).map(y=>this._tiles[y].tileID),_=this.transform.projection.name==="globe";for(const y of h)y.projMatrix=this.transform.calculateProjMatrix(y.toUnwrapped()),y.expandedProjMatrix=_?this.transform.calculateProjMatrix(y.toUnwrapped(),!1,!0):y.projMatrix;return h}sortCoordinatesByDistance(t){const s=t.slice(),h=this.transform._camera.position,_=this.transform._camera.forward(),y={};for(const T of s){const z=1/(1<<T.canonical.z);y[T.key]=((T.canonical.x+.5)*z+T.wrap-h[0])*_[0]+((T.canonical.y+.5)*z-h[1])*_[1]-h[2]*_[2]}return s.sort((T,z)=>y[T.key]-y[z.key]),s}hasTransition(){if(this._source.hasTransition())return!0;if(Va(this._source.type))for(const t in this._tiles){const s=this._tiles[t];if(s.fadeEndTime!==void 0&&s.fadeEndTime>=i.q.now())return!0}return!1}setFeatureState(t,s,h){this._state.updateState(t=t||"_geojsonTileLayer",s,h)}removeFeatureState(t,s,h){this._state.removeFeatureState(t=t||"_geojsonTileLayer",s,h)}getFeatureState(t,s){return this._state.getState(t=t||"_geojsonTileLayer",s)}setDependencies(t,s,h){const _=this._tiles[t];_&&_.setDependencies(s,h)}reloadTilesForDependencies(t,s){for(const h in this._tiles)this._tiles[h].hasDependency(t,s)&&this._reloadTile(+h,"reloading");this._cache.filter(h=>!h.hasDependency(t,s))}_preloadTiles(t,s){if(!this._sourceLoaded){const R=()=>{this._sourceLoaded&&(this._source.off("data",R),this._preloadTiles(t,s))};return void this._source.on("data",R)}const h=new Map,_=Array.isArray(t)?t:[t],y=this.map.painter.terrain,T=this.usedForTerrain&&y?y.getScaledDemTileSize():this._source.tileSize;for(const R of _){const F=R.coveringTiles({tileSize:T,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom&&!this.usedForTerrain,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain});for(const N of F)h.set(N.key,N);this.usedForTerrain&&R.updateElevation(!1)}const z=Array.from(h.values());i.bl(z,(R,F)=>{const N=new zr(R,this._source.tileSize*R.overscaleFactor(),this.transform.tileZoom,this.map.painter,this._isRaster);this._loadTile(N,G=>{this._source.type==="raster-dem"&&N.dem&&this._backfillDEM(N),F(G,N)})},s)}}function pa(c,t){const s=Math.abs(2*c.wrap)-+(c.wrap<0),h=Math.abs(2*t.wrap)-+(t.wrap<0);return c.overscaledZ-t.overscaledZ||h-s||t.canonical.y-c.canonical.y||t.canonical.x-c.canonical.x}function Va(c){return c==="raster"||c==="image"||c==="video"||c==="custom"}function ki(c,t){const s=1<<c.z;return[c.x/s+t,(c.x+1)/s+t]}rr.maxOverzooming=10,rr.maxUnderzooming=3;class ec{constructor(t){this.style=t,this.layersGotHidden=!1,this.layers=[]}processLayersChanged(){this.layers=[];const t=!1,s=!1;for(const h in this.style._mergedLayers){const _=this.style._mergedLayers[h];if(_.type==="fill-extrusion")this.layers.push({layer:_,visible:t,visibilityChanged:s});else if(_.type==="model"){const y=this.style.getLayerSource(_);y&&y.type==="batched-model"&&this.layers.push({layer:_,visible:t,visibilityChanged:s})}}}onNewFrame(t){this.layersGotHidden=!1;for(const s of this.layers){const h=s.layer;let _=!1;h.type==="fill-extrusion"?_=!h.isHidden(t)&&h.paint.get("fill-extrusion-opacity")>0:h.type==="model"&&(_=!h.isHidden(t)&&h.paint.get("model-opacity").constantOr(1)>0),this.layersGotHidden=this.layersGotHidden||!_&&s.visible,s.visible=_}}updateZOffset(t,s){this.currentBuildingBuckets=[];for(const _ of this.layers){const y=_.layer,T=this.style.getLayerSourceCache(y);let z=1;y.type==="fill-extrusion"&&(z=_.visible?y.paint.get("fill-extrusion-vertical-scale"):0);let R=T?T.getTile(s):null;if(!R&&T&&s.canonical.z>T.getSource().minzoom){let F=s.scaledTo(Math.min(T.getSource().maxzoom,s.overscaledZ-1));for(;F.overscaledZ>=T.getSource().minzoom&&(R=T.getTile(F),!R&&F.overscaledZ!==0);)F=F.scaledTo(F.overscaledZ-1)}this.currentBuildingBuckets.push({bucket:R?R.getBucket(y):null,tileID:R?R.tileID:s,verticalScale:z})}t.hasAnyZOffset=!1;let h=!1;for(let _=0;_<t.symbolInstances.length;_++){const y=t.symbolInstances.get(_),T=y.zOffset,z=this._getHeightAtTileOffset(s,y.tileAnchorX,y.tileAnchorY);y.zOffset=z!==Number.NEGATIVE_INFINITY?z:T,h||T===y.zOffset||(h=!0),t.hasAnyZOffset||y.zOffset===0||(t.hasAnyZOffset=!0)}h&&(t.zOffsetBuffersNeedUpload=!0,t.zOffsetSortDirty=!0)}_mapCoordToOverlappingTile(t,s,h,_){let y=s,T=h;if(t.canonical.z!==_.canonical.z){const z=_.canonical,R=1/(1<<t.canonical.z-z.z);y=(s+t.canonical.x*i.ag)*R-z.x*i.ag|0,T=(h+t.canonical.y*i.ag)*R-z.y*i.ag|0}return{tileX:y,tileY:T}}_getHeightAtTileOffset(t,s,h){let _,y;for(let T=0;T<this.layers.length;++T){if(this.layers[T].layer.type!=="fill-extrusion")continue;const{bucket:z,tileID:R,verticalScale:F}=this.currentBuildingBuckets[T];if(!z)continue;const{tileX:N,tileY:G}=this._mapCoordToOverlappingTile(t,s,h,R),Z=z.getHeightAtTileCoord(N,G);Z&&Z.height!==void 0&&(Z.hidden?_=Z.height:y=Math.max(Z.height*F,y||0))}if(y!==void 0)return y;for(let T=0;T<this.layers.length;++T){const z=this.layers[T];if(z.layer.type!=="model"||!z.visible)continue;const{bucket:R,tileID:F}=this.currentBuildingBuckets[T];if(!R)continue;const{tileX:N,tileY:G}=this._mapCoordToOverlappingTile(t,s,h,F),Z=R.getHeightAtTileCoord(N,G);if(Z&&!Z.hidden)return Z.height===void 0&&_!==void 0?Math.min(Z.maxHeight,_)*Z.verticalScale:Z.height?Z.height*Z.verticalScale:Number.NEGATIVE_INFINITY}return this.layersGotHidden?0:Number.NEGATIVE_INFINITY}}function ei(c,t){const s={};for(const h in c)h!=="ref"&&(s[h]=c[h]);return i.bm.forEach(h=>{h in t&&(s[h]=t[h])}),s}function wl(c){c=c.slice();const t=Object.create(null);for(let s=0;s<c.length;s++)t[c[s].id]=c[s];for(let s=0;s<c.length;s++)"ref"in c[s]&&(c[s]=ei(c[s],t[c[s].ref]));return c}const Oi={setStyle:"setStyle",addLayer:"addLayer",removeLayer:"removeLayer",setPaintProperty:"setPaintProperty",setLayoutProperty:"setLayoutProperty",setSlot:"setSlot",setFilter:"setFilter",addSource:"addSource",removeSource:"removeSource",setGeoJSONSourceData:"setGeoJSONSourceData",setLayerZoomRange:"setLayerZoomRange",setLayerProperty:"setLayerProperty",setCenter:"setCenter",setZoom:"setZoom",setBearing:"setBearing",setPitch:"setPitch",setSprite:"setSprite",setGlyphs:"setGlyphs",setTransition:"setTransition",setLight:"setLight",setTerrain:"setTerrain",setFog:"setFog",setSnow:"setSnow",setRain:"setRain",setCamera:"setCamera",setLights:"setLights",setProjection:"setProjection",addImport:"addImport",removeImport:"removeImport",updateImport:"updateImport"};function Bi(c,t,s){s.push({command:Oi.addSource,args:[c,t[c]]})}function os(c,t,s){t.push({command:Oi.removeSource,args:[c]}),s[c]=!0}function Cn(c,t,s,h){os(c,s,h),Bi(c,t,s)}function ma(c,t,s){let h;for(h in c[s])if(c[s].hasOwnProperty(h)&&h!=="data"&&!i.bn(c[s][h],t[s][h]))return!1;for(h in t[s])if(t[s].hasOwnProperty(h)&&h!=="data"&&!i.bn(c[s][h],t[s][h]))return!1;return!0}function Ot(c,t,s,h,_,y){let T;for(T in t=t||{},c=c||{})c.hasOwnProperty(T)&&(i.bn(c[T],t[T])||s.push({command:y,args:[h,T,t[T],_]}));for(T in t)t.hasOwnProperty(T)&&!c.hasOwnProperty(T)&&(i.bn(c[T],t[T])||s.push({command:y,args:[h,T,t[T],_]}))}function Fi(c){return c.id}function Li(c,t){return c[t.id]=t,c}class _s{constructor(t,s){this.reset(t,s)}reset(t,s){this.points=t||[],this._distances=[0];for(let h=1;h<this.points.length;h++)this._distances[h]=this._distances[h-1]+this.points[h].dist(this.points[h-1]);this.length=this._distances[this._distances.length-1],this.padding=Math.min(s||0,.5*this.length),this.paddedLength=this.length-2*this.padding}lerp(t){if(this.points.length===1)return this.points[0];t=i.aw(t,0,1);let s=1,h=this._distances[s];const _=t*this.paddedLength+this.padding;for(;h<_&&s<this._distances.length;)h=this._distances[++s];const y=s-1,T=this._distances[y],z=h-T,R=z>0?(_-T)/z:0;return this.points[y].mult(1-R).add(this.points[s].mult(R))}}class To{constructor(t,s,h){const _=this.boxCells=[],y=this.circleCells=[];this.xCellCount=Math.ceil(t/h),this.yCellCount=Math.ceil(s/h);for(let T=0;T<this.xCellCount*this.yCellCount;T++)_.push([]),y.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=t,this.height=s,this.xScale=this.xCellCount/t,this.yScale=this.yCellCount/s,this.boxUid=0,this.circleUid=0}keysLength(){return this.boxKeys.length+this.circleKeys.length}insert(t,s,h,_,y){this._forEachCell(s,h,_,y,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(s),this.bboxes.push(h),this.bboxes.push(_),this.bboxes.push(y)}insertCircle(t,s,h,_){this._forEachCell(s-_,h-_,s+_,h+_,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(s),this.circles.push(h),this.circles.push(_)}_insertBoxCell(t,s,h,_,y,T){this.boxCells[y].push(T)}_insertCircleCell(t,s,h,_,y,T){this.circleCells[y].push(T)}_query(t,s,h,_,y,T){if(h<0||t>this.width||_<0||s>this.height)return!y&&[];const z=[];if(t<=0&&s<=0&&this.width<=h&&this.height<=_){if(y)return!0;for(let R=0;R<this.boxKeys.length;R++)z.push({key:this.boxKeys[R],x1:this.bboxes[4*R],y1:this.bboxes[4*R+1],x2:this.bboxes[4*R+2],y2:this.bboxes[4*R+3]});for(let R=0;R<this.circleKeys.length;R++){const F=this.circles[3*R],N=this.circles[3*R+1],G=this.circles[3*R+2];z.push({key:this.circleKeys[R],x1:F-G,y1:N-G,x2:F+G,y2:N+G})}return T?z.filter(T):z}return this._forEachCell(t,s,h,_,this._queryCell,z,{hitTest:y,seenUids:{box:{},circle:{}}},T),y?z.length>0:z}_queryCircle(t,s,h,_,y){const T=t-h,z=t+h,R=s-h,F=s+h;if(z<0||T>this.width||F<0||R>this.height)return!_&&[];const N=[];return this._forEachCell(T,R,z,F,this._queryCellCircle,N,{hitTest:_,circle:{x:t,y:s,radius:h},seenUids:{box:{},circle:{}}},y),_?N.length>0:N}query(t,s,h,_,y){return this._query(t,s,h,_,!1,y)}hitTest(t,s,h,_,y){return this._query(t,s,h,_,!0,y)}hitTestCircle(t,s,h,_){return this._queryCircle(t,s,h,!0,_)}_queryCell(t,s,h,_,y,T,z,R){const F=z.seenUids,N=this.boxCells[y];if(N!==null){const Z=this.bboxes;for(const W of N)if(!F.box[W]){F.box[W]=!0;const te=4*W;if(t<=Z[te+2]&&s<=Z[te+3]&&h>=Z[te+0]&&_>=Z[te+1]&&(!R||R(this.boxKeys[W]))){if(z.hitTest)return T.push(!0),!0;T.push({key:this.boxKeys[W],x1:Z[te],y1:Z[te+1],x2:Z[te+2],y2:Z[te+3]})}}}const G=this.circleCells[y];if(G!==null){const Z=this.circles;for(const W of G)if(!F.circle[W]){F.circle[W]=!0;const te=3*W;if(this._circleAndRectCollide(Z[te],Z[te+1],Z[te+2],t,s,h,_)&&(!R||R(this.circleKeys[W]))){if(z.hitTest)return T.push(!0),!0;{const ee=Z[te],se=Z[te+1],oe=Z[te+2];T.push({key:this.circleKeys[W],x1:ee-oe,y1:se-oe,x2:ee+oe,y2:se+oe})}}}}}_queryCellCircle(t,s,h,_,y,T,z,R){const F=z.circle,N=z.seenUids,G=this.boxCells[y];if(G!==null){const W=this.bboxes;for(const te of G)if(!N.box[te]){N.box[te]=!0;const ee=4*te;if(this._circleAndRectCollide(F.x,F.y,F.radius,W[ee+0],W[ee+1],W[ee+2],W[ee+3])&&(!R||R(this.boxKeys[te])))return T.push(!0),!0}}const Z=this.circleCells[y];if(Z!==null){const W=this.circles;for(const te of Z)if(!N.circle[te]){N.circle[te]=!0;const ee=3*te;if(this._circlesCollide(W[ee],W[ee+1],W[ee+2],F.x,F.y,F.radius)&&(!R||R(this.circleKeys[te])))return T.push(!0),!0}}}_forEachCell(t,s,h,_,y,T,z,R){const F=this._convertToXCellCoord(t),N=this._convertToYCellCoord(s),G=this._convertToXCellCoord(h),Z=this._convertToYCellCoord(_);for(let W=F;W<=G;W++)for(let te=N;te<=Z;te++)if(y.call(this,t,s,h,_,this.xCellCount*te+W,T,z,R))return}_convertToXCellCoord(t){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(t*this.xScale)))}_convertToYCellCoord(t){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(t*this.yScale)))}_circlesCollide(t,s,h,_,y,T){const z=_-t,R=y-s,F=h+T;return F*F>z*z+R*R}_circleAndRectCollide(t,s,h,_,y,T,z){const R=(T-_)/2,F=Math.abs(t-(_+R));if(F>R+h)return!1;const N=(z-y)/2,G=Math.abs(s-(y+N));if(G>N+h)return!1;if(F<=R||G<=N)return!0;const Z=F-R,W=G-N;return Z*Z+W*W<=h*h}}const Pi={unknown:0,flipRequired:1,flipNotRequired:2},gs=Math.tan(85*Math.PI/180);function Qs(c,t,s,h,_,y,T){const z=i.ab.mat4.create();if(s)if(y.name==="globe"){const R=i.bo(_,t);i.ab.mat4.multiply(z,z,R)}else{const R=i.ab.mat2.invert([],T);z[0]=R[0],z[1]=R[1],z[4]=R[2],z[5]=R[3],h||i.ab.mat4.rotateZ(z,z,_.angle)}else i.ab.mat4.multiply(z,_.labelPlaneMatrix,c);return z}function $o(c,t,s,h,_,y,T){const z=Qs(c,t,s,h,_,y,T);return y.name==="globe"&&s||(z[2]=z[6]=z[10]=z[14]=0),z}function Es(c,t,s,h,_,y,T){if(s){if(y.name==="globe"){const z=Qs(c,t,s,h,_,y,T);return i.ab.mat4.invert(z,z),i.ab.mat4.multiply(z,c,z),z}{const z=i.ab.mat4.clone(c),R=i.ab.mat4.identity([]);return R[0]=T[0],R[1]=T[1],R[4]=T[2],R[5]=T[3],i.ab.mat4.multiply(z,z,R),h||i.ab.mat4.rotateZ(z,z,-_.angle),z}}return _.glCoordMatrix}function un(c,t,s,h){const _=[c,t,s,1];s?i.ab.vec4.transformMat4(_,_,h):Mo(_,_,h);const y=_[3];return _[0]/=y,_[1]/=y,_[2]/=y,_}function Jc(c,t){return Math.min(.5+c/t*.5,1.5)}function _a(c,t){const s=c[0]/c[3],h=c[1]/c[3];return s>=-t[0]&&s<=t[0]&&h>=-t[1]&&h<=t[1]}function tc(c,t,s,h,_,y,T,z,R,F){const N=s.transform,G=h?c.textSizeData:c.iconSizeData,Z=i.bp(G,s.transform.zoom),W=N.projection.name==="globe",te=[256/s.width*2+1,256/s.height*2+1],ee=h?c.text.dynamicLayoutVertexArray:c.icon.dynamicLayoutVertexArray;ee.clear();let se=null;W&&(se=h?c.text.globeExtVertexArray:c.icon.globeExtVertexArray);const oe=c.lineVertexArray,he=h?c.text.placedSymbolArray:c.icon.placedSymbolArray,_e=s.transform.width/s.transform.height;let pe,Me=!1;for(let xe=0;xe<he.length;xe++){const we=he.get(xe),{numGlyphs:ve,writingMode:Ae}=we;if(Ae!==i.bq.vertical||Me||pe===i.bq.horizontal||(Me=!0),pe=Ae,(we.hidden||Ae===i.bq.vertical)&&!Me){ya(ve,ee);continue}Me=!1;const Oe=new i.P(we.tileAnchorX,we.tileAnchorY);let{x:Xe,y:He,z:ke}=N.projection.projectTilePoint(Oe.x,Oe.y,F.canonical);if(R){const[nt,Lt,bt]=R(Oe);Xe+=nt,He+=Lt,ke+=bt}const Ne=[Xe,He,ke,1];if(i.ab.vec4.transformMat4(Ne,Ne,t),!_a(Ne,te)){ya(ve,ee);continue}const st=Ne[3],ut=Jc(s.transform.getCameraToCenterDistance(N.projection),st),xt=i.br(G,Z,we),Ge=T?xt/ut:xt*ut,lt=un(Xe,He,ke,_);if(lt[3]<=0){ya(ve,ee);continue}let Je={};const _t=T?null:R,ct=Tl(we,Ge,!1,z,t,_,y,c.glyphOffsetArray,oe,ee,se,lt,Oe,Je,_e,_t,N.projection,F,T);Me=ct.useVertical,_t&&ct.needsFlipping&&(Je={}),(ct.notEnoughRoom||Me||ct.needsFlipping&&Tl(we,Ge,!0,z,t,_,y,c.glyphOffsetArray,oe,ee,se,lt,Oe,Je,_e,_t,N.projection,F,T).notEnoughRoom)&&ya(ve,ee)}h?(c.text.dynamicLayoutVertexBuffer.updateData(ee),se&&c.text.globeExtVertexBuffer&&c.text.globeExtVertexBuffer.updateData(se)):(c.icon.dynamicLayoutVertexBuffer.updateData(ee),se&&c.icon.globeExtVertexBuffer&&c.icon.globeExtVertexBuffer.updateData(se))}function ga(c,t,s,h,_,y,T,z,R,F,N,G,Z,W,te,ee){const{lineStartIndex:se,glyphStartIndex:oe,segment:he}=z,_e=oe+z.numGlyphs,pe=se+z.lineLength,Me=t.getoffsetX(oe),xe=t.getoffsetX(_e-1),we=as(c*Me,s,h,_,y,T,he,se,pe,R,F,N,G,Z,!0,W,te,ee);if(!we)return null;const ve=as(c*xe,s,h,_,y,T,he,se,pe,R,F,N,G,Z,!0,W,te,ee);return ve?{first:we,last:ve}:null}function nn(c,t,s,h){return c===i.bq.horizontal&&Math.abs(h)>Math.abs(s)?{useVertical:!0}:c===i.bq.vertical?h>0?{needsFlipping:!0}:null:t!==Pi.unknown&&function(_,y){return _===0||Math.abs(y/_)>gs}(s,h)?t===Pi.flipRequired?{needsFlipping:!0}:null:s<0?{needsFlipping:!0}:null}function Tl(c,t,s,h,_,y,T,z,R,F,N,G,Z,W,te,ee,se,oe,he){const _e=t/24,pe=c.lineOffsetX*_e,Me=c.lineOffsetY*_e,{lineStartIndex:xe,glyphStartIndex:we,numGlyphs:ve,segment:Ae,writingMode:Oe,flipState:Xe}=c,He=xe+c.lineLength,ke=Ne=>{if(N){const[Ge,lt,Je]=Ne.up,_t=F.length;i.bs(N,_t+0,Ge,lt,Je),i.bs(N,_t+1,Ge,lt,Je),i.bs(N,_t+2,Ge,lt,Je),i.bs(N,_t+3,Ge,lt,Je)}const[st,ut,xt]=Ne.point;i.bt(F,st,ut,xt,Ne.angle)};if(ve>1){const Ne=ga(_e,z,pe,Me,s,G,Z,c,R,y,W,ee,!1,se,oe,he);if(!Ne)return{notEnoughRoom:!0};if(h&&!s){let[st,ut,xt]=Ne.first.point,[Ge,lt,Je]=Ne.last.point;[st,ut]=un(st,ut,xt,T),[Ge,lt]=un(Ge,lt,Je,T);const _t=nn(Oe,Xe,(Ge-st)*te,lt-ut);if(c.flipState=_t&&_t.needsFlipping?Pi.flipRequired:Pi.flipNotRequired,_t)return _t}ke(Ne.first);for(let st=we+1;st<we+ve-1;st++){const ut=as(_e*z.getoffsetX(st),pe,Me,s,G,Z,Ae,xe,He,R,y,W,ee,!1,!1,se,oe,he);if(!ut)return F.length-=4*(st-we),{notEnoughRoom:!0};ke(ut)}ke(Ne.last)}else{if(h&&!s){const st=un(Z.x,Z.y,0,_),ut=xe+Ae+1,xt=new i.P(R.getx(ut),R.gety(ut)),Ge=un(xt.x,xt.y,0,_),lt=Ge[3]>0?Ge:or(Z,xt,st,1,_,void 0,se,oe.canonical),Je=nn(Oe,Xe,(lt[0]-st[0])*te,lt[1]-st[1]);if(c.flipState=Je&&Je.needsFlipping?Pi.flipRequired:Pi.flipNotRequired,Je)return Je}const Ne=as(_e*z.getoffsetX(we),pe,Me,s,G,Z,Ae,xe,He,R,y,W,ee,!1,!1,se,oe,he);if(!Ne)return{notEnoughRoom:!0};ke(Ne)}return{}}function Dn(c,t,s,h,_){const{x:y,y:T,z}=h.projectTilePoint(c.x,c.y,t);if(!_)return un(y,T,z,s);const[R,F,N]=_(c);return un(y+R,T+F,z+N,s)}function or(c,t,s,h,_,y,T,z){const R=Dn(c.sub(t)._unit()._add(c),z,_,T,y);return i.ab.vec3.sub(R,s,R),i.ab.vec3.normalize(R,R),i.ab.vec3.scaleAndAdd(R,s,R,h)}function as(c,t,s,h,_,y,T,z,R,F,N,G,Z,W,te,ee,se,oe){const he=h?c-t:c+t;let _e=he>0?1:-1,pe=0;h&&(_e*=-1,pe=Math.PI),_e<0&&(pe+=Math.PI);let Me=z+T+(_e>0?0:1)|0,xe=_,we=_,ve=0,Ae=0;const Oe=Math.abs(he),Xe=[],He=[];let ke=y,Ne=ke;const st=()=>or(Ne,ke,we,Oe-ve+1,N,Z,ee,se.canonical);for(;ve+Ae<=Oe;){if(Me+=_e,Me<z||Me>=R)return null;if(we=xe,Ne=ke,Xe.push(we),W&&He.push(Ne),ke=new i.P(F.getx(Me),F.gety(Me)),xe=G[Me],!xe){const Lt=Dn(ke,se.canonical,N,ee,Z);xe=Lt[3]>0?G[Me]=Lt:st()}ve+=Ae,Ae=i.ab.vec3.distance(we,xe)}te&&Z&&(G[Me]&&(xe=st(),Ae=i.ab.vec3.distance(we,xe)),G[Me]=xe);const ut=(Oe-ve)/Ae,xt=ke.sub(Ne)._mult(ut)._add(Ne),Ge=i.ab.vec3.sub([],xe,we),lt=i.ab.vec3.scaleAndAdd([],we,Ge,ut);let Je=[0,0,1],_t=Ge[0],ct=Ge[1];if(oe&&(Je=ee.upVector(se.canonical,xt.x,xt.y),Je[0]!==0||Je[1]!==0||Je[2]!==1)){const Lt=[Je[2],0,-Je[0]],bt=i.ab.vec3.cross([],Je,Lt);i.ab.vec3.normalize(Lt,Lt),i.ab.vec3.normalize(bt,bt),_t=i.ab.vec3.dot(Ge,Lt),ct=i.ab.vec3.dot(Ge,bt)}if(s){const Lt=i.ab.vec3.cross([],Je,Ge);i.ab.vec3.normalize(Lt,Lt),i.ab.vec3.scaleAndAdd(lt,lt,Lt,s*_e)}const nt=pe+Math.atan2(ct,_t);return Xe.push(lt),W&&He.push(xt),{point:lt,angle:nt,path:Xe,tilePath:He,up:Je}}function ya(c,t){const s=t.length,h=s+4*c;t.resize(h),t.float32.fill(-1/0,4*s,4*h)}function Mo(c,t,s){const h=t[0],_=t[1];return c[0]=s[0]*h+s[4]*_+s[12],c[1]=s[1]*h+s[5]*_+s[13],c[3]=s[3]*h+s[7]*_+s[15],c}const bn=100;class Dr{constructor(t,s,h=new To(t.width+200,t.height+200,25),_=new To(t.width+200,t.height+200,25)){this.transform=t,this.grid=h,this.ignoredGrid=_,this.pitchfactor=Math.cos(t._pitch)*t.cameraToCenterDistance,this.screenRightBoundary=t.width+bn,this.screenBottomBoundary=t.height+bn,this.gridRightBoundary=t.width+200,this.gridBottomBoundary=t.height+200,this.fogState=s}placeCollisionBox(t,s,h,_,y,T,z,R){let F=h.projectedAnchorX,N=h.projectedAnchorY,G=h.projectedAnchorZ;const Z=h.elevation,W=h.tileID,te=t.getProjection();if(Z&&W){const[xe,we,ve]=te.upVector(W.canonical,h.tileAnchorX,h.tileAnchorY),Ae=te.upVectorScale(W.canonical,this.transform.center.lat,this.transform.worldSize).metersToTile;F+=xe*Z*Ae,N+=we*Z*Ae,G+=ve*Z*Ae}const ee=this.projectAndGetPerspectiveRatio(z,F,N,G,h.tileID,te.name==="globe"||!!Z||this.transform.pitch>0,te),se=T*ee.perspectiveRatio,oe=(h.x1*s+_.x-h.padding)*se+ee.point.x,he=(h.y1*s+_.y-h.padding)*se+ee.point.y,_e=(h.x2*s+_.x+h.padding)*se+ee.point.x,pe=(h.y2*s+_.y+h.padding)*se+ee.point.y,Me=ee.perspectiveRatio<=.55||ee.occluded;return!this.isInsideGrid(oe,he,_e,pe)||!y&&this.grid.hitTest(oe,he,_e,pe,R)||Me?{box:[],offscreen:!1,occluded:ee.occluded}:{box:[oe,he,_e,pe],offscreen:this.isOffscreen(oe,he,_e,pe),occluded:!1}}placeCollisionCircles(t,s,h,_,y,T,z,R,F,N,G,Z,W,te,ee){const se=[],oe=this.transform.elevation,he=t.getProjection(),_e=oe?oe.getAtTileOffsetFunc(ee,this.transform.center.lat,this.transform.worldSize,he):null,pe=new i.P(h.tileAnchorX,h.tileAnchorY);let{x:Me,y:xe,z:we}=he.projectTilePoint(pe.x,pe.y,ee.canonical);if(_e){const[xt,Ge,lt]=_e(pe);Me+=xt,xe+=Ge,we+=lt}const ve=he.name==="globe",Ae=this.projectAndGetPerspectiveRatio(z,Me,xe,we,ee,ve||!!oe||this.transform.pitch>0,he),{perspectiveRatio:Oe}=Ae,Xe=(G?T/Oe:T*Oe)/i.bw,He=un(Me,xe,we,R),ke=Ae.signedDistanceFromCamera>0?ga(Xe,y,h.lineOffsetX*Xe,h.lineOffsetY*Xe,!1,He,pe,h,_,R,{},oe&&!G?_e:null,G&&!!oe,he,ee,G):null;let Ne=!1,st=!1,ut=!0;if(ke&&!Ae.occluded){const xt=.5*W*Oe+te,Ge=new i.P(-100,-100),lt=new i.P(this.screenRightBoundary,this.screenBottomBoundary),Je=new _s,{first:_t,last:ct}=ke,nt=_t.path.length;let Lt=[];for(let Bt=nt-1;Bt>=1;Bt--)Lt.push(_t.path[Bt]);for(let Bt=1;Bt<ct.path.length;Bt++)Lt.push(ct.path[Bt]);const bt=2.5*xt;F&&(Lt=Lt.map(([Bt,oi,$t],Xt)=>(_e&&!ve&&($t=_e(Xt<nt-1?_t.tilePath[nt-1-Xt]:ct.tilePath[Xt-nt+2])[2]),un(Bt,oi,$t,F))),Lt.some(Bt=>Bt[3]<=0)&&(Lt=[]));let zt=[];if(Lt.length>0){let Bt=1/0,oi=-1/0,$t=1/0,Xt=-1/0;for(const ai of Lt)Bt=Math.min(Bt,ai[0]),$t=Math.min($t,ai[1]),oi=Math.max(oi,ai[0]),Xt=Math.max(Xt,ai[1]);oi>=Ge.x&&Bt<=lt.x&&Xt>=Ge.y&&$t<=lt.y&&(zt=[Lt.map(ai=>new i.P(ai[0],ai[1]))],(Bt<Ge.x||oi>lt.x||$t<Ge.y||Xt>lt.y)&&(zt=i.bu(zt,Ge.x,Ge.y,lt.x,lt.y)))}for(const Bt of zt){Je.reset(Bt,.25*xt);let oi=0;oi=Je.length<=.5*xt?1:Math.ceil(Je.paddedLength/bt)+1;for(let $t=0;$t<oi;$t++){const Xt=$t/Math.max(oi-1,1),ai=Je.lerp(Xt),zi=ai.x+bn,wi=ai.y+bn;se.push(zi,wi,xt,0);const mn=zi-xt,Mn=wi-xt,Xi=zi+xt,sn=wi+xt;if(ut=ut&&this.isOffscreen(mn,Mn,Xi,sn),st=st||this.isInsideGrid(mn,Mn,Xi,sn),!s&&this.grid.hitTestCircle(zi,wi,xt,Z)&&(Ne=!0,!N))return{circles:[],offscreen:!1,collisionDetected:Ne,occluded:!1}}}}return{circles:!N&&Ne||!st?[]:se,offscreen:ut,collisionDetected:Ne,occluded:Ae.occluded}}queryRenderedSymbols(t){if(t.length===0||this.grid.keysLength()===0&&this.ignoredGrid.keysLength()===0)return{};const s=[];let h=1/0,_=1/0,y=-1/0,T=-1/0;for(const N of t){const G=new i.P(N.x+bn,N.y+bn);h=Math.min(h,G.x),_=Math.min(_,G.y),y=Math.max(y,G.x),T=Math.max(T,G.y),s.push(G)}const z=this.grid.query(h,_,y,T).concat(this.ignoredGrid.query(h,_,y,T)),R={},F={};for(const N of z){const G=N.key;if(R[G.bucketInstanceId]===void 0&&(R[G.bucketInstanceId]={}),R[G.bucketInstanceId][G.featureIndex])continue;const Z=[new i.P(N.x1,N.y1),new i.P(N.x2,N.y1),new i.P(N.x2,N.y2),new i.P(N.x1,N.y2)];i.bv(s,Z)&&(R[G.bucketInstanceId][G.featureIndex]=!0,F[G.bucketInstanceId]===void 0&&(F[G.bucketInstanceId]=[]),F[G.bucketInstanceId].push(G.featureIndex))}return F}insertCollisionBox(t,s,h,_,y){(s?this.ignoredGrid:this.grid).insert({bucketInstanceId:h,featureIndex:_,collisionGroupID:y},t[0],t[1],t[2],t[3])}insertCollisionCircles(t,s,h,_,y){const T=s?this.ignoredGrid:this.grid,z={bucketInstanceId:h,featureIndex:_,collisionGroupID:y};for(let R=0;R<t.length;R+=4)T.insertCircle(z,t[R],t[R+1],t[R+2])}projectAndGetPerspectiveRatio(t,s,h,_,y,T,z){const R=[s,h,_,1];let F=!1;_||this.transform.pitch>0?(i.ab.vec4.transformMat4(R,R,t),this.fogState&&y&&z.name!=="globe"&&(F=function(Z,W,te,ee,se,oe){const he=oe.calculateFogTileMatrix(se),_e=[W,te,ee];return i.ab.vec3.transformMat4(_e,_e,he),Kt(Z,i.ab.vec3.length(_e),oe.pitch,oe._fov)}(this.fogState,s,h,_,y.toUnwrapped(),this.transform)>.9)):Mo(R,R,t);const N=R[3];return{point:new i.P((R[0]/N+1)/2*this.transform.width+bn,(-R[1]/N+1)/2*this.transform.height+bn),perspectiveRatio:Math.min(.5+this.transform.getCameraToCenterDistance(z)/N*.5,1.5),signedDistanceFromCamera:N,occluded:T&&R[2]>N||F}}isOffscreen(t,s,h,_){return h<bn||t>=this.screenRightBoundary||_<bn||s>this.screenBottomBoundary}isInsideGrid(t,s,h,_){return h>=0&&t<this.gridRightBoundary&&_>=0&&s<this.gridBottomBoundary}getViewportMatrix(){const t=i.ab.mat4.identity([]);return i.ab.mat4.translate(t,t,[-100,-100,0]),t}}function kr(c,t,s){const h=t.createTileMatrix(c,c.worldSize,s.toUnwrapped());return i.ab.mat4.multiply(new Float32Array(16),c.projMatrix,h)}function qn(c,t,s){if(t.projection.name===s.projection.name)return c.projMatrix;const h=s.clone();return h.setProjection(t.projection),kr(h,t.getProjection(),c)}function xa(c,t,s){return t.name===s.projection.name?c.projMatrix:kr(s,t,c)}class Rr{constructor(t,s,h,_){this.opacity=t?Math.max(0,Math.min(1,t.opacity+(t.placed?s:-s))):_&&h?1:0,this.placed=h}isHidden(){return this.opacity===0&&!this.placed}}class Ps{constructor(t,s,h,_,y,T=!1){this.text=new Rr(t?t.text:null,s,h,y),this.icon=new Rr(t?t.icon:null,s,_,y),this.clipped=T}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class Ua{constructor(t,s,h,_=!1){this.text=t,this.icon=s,this.skipFade=h,this.clipped=_}}class Xo{constructor(){this.invProjMatrix=i.ab.mat4.create(),this.viewportMatrix=i.ab.mat4.create(),this.circles=[]}}class Yo{constructor(t,s,h,_,y){this.bucketInstanceId=t,this.featureIndex=s,this.sourceLayerIndex=h,this.bucketIndex=_,this.tileID=y}}class ao{constructor(t){this.crossSourceCollisions=t,this.maxGroupID=0,this.collisionGroups={}}get(t){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[t]){const s=++this.maxGroupID;this.collisionGroups[t]={ID:s,predicate:h=>h.collisionGroupID===s}}return this.collisionGroups[t]}}function Qc(c,t,s,h,_){const{horizontalAlign:y,verticalAlign:T}=i.bD(c),z=-(y-.5)*t,R=-(T-.5)*s,F=i.bC(c,h);return new i.P(z+F[0]*_,R+F[1]*_)}function ja(c,t,s,h,_){const y=new i.P(c,t);return s&&y._rotate(h?_:-_),y}class ar{constructor(t,s,h,_,y,T){this.transform=t.clone(),this.projection=t.projection.name,this.collisionIndex=new Dr(this.transform,y),this.buildingIndex=T,this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=s,this.retainedQueryData={},this.collisionGroups=new ao(h),this.collisionCircleArrays={},this.prevPlacement=_,_&&(_.prevPlacement=void 0),this.placedOrientations={}}getBucketParts(t,s,h,_,y=1){const T=h.getBucket(s),z=h.latestFeatureIndex;if(!T||!z||s.fqid!==T.layerIds[0])return;const R=T.layers[0].layout,F=T.layers[0].paint,N=h.collisionBoxArray,G=Math.pow(2,this.transform.zoom-h.tileID.overscaledZ),Z=h.tileSize/i.ag,W=h.tileID.toUnwrapped();this.transform.setProjection(T.projection);const te=(ee=h.tileID,se=T.getProjection(),oe=this.transform,se.name===this.projection?oe.calculateProjMatrix(ee.toUnwrapped()):kr(oe,se,ee));var ee,se,oe;const he=R.get("text-pitch-alignment")==="map",_e=R.get("text-rotation-alignment")==="map";s.compileFilter(s.options);const pe=s.dynamicFilter(),Me=s.dynamicFilterNeedsFeature(),xe=this.transform.calculatePixelsToTileUnitsMatrix(h),we=$o(te,h.tileID.canonical,he,_e,this.transform,T.getProjection(),xe);let ve=null;if(he){const xt=Es(te,h.tileID.canonical,he,_e,this.transform,T.getProjection(),xe);ve=i.ab.mat4.multiply([],this.transform.labelPlaneMatrix,xt)}let Ae=null;pe&&h.latestFeatureIndex&&(Ae={unwrappedTileID:W,dynamicFilter:pe,dynamicFilterNeedsFeature:Me}),this.retainedQueryData[T.bucketInstanceId]=new Yo(T.bucketInstanceId,z,T.sourceLayerIndex,T.index,h.tileID);const[Oe,Xe]=T.layers[0].layout.get("text-size-scale-range"),He=i.aw(y,Oe,Xe),[ke,Ne]=R.get("icon-size-scale-range"),st=i.aw(y,ke,Ne),ut={bucket:T,layout:R,paint:F,posMatrix:te,textLabelPlaneMatrix:we,labelToScreenMatrix:ve,clippingData:Ae,scale:G,textPixelRatio:Z,holdingForFade:h.holdingForFade(),collisionBoxArray:N,partiallyEvaluatedTextSize:i.bp(T.textSizeData,this.transform.zoom,He),partiallyEvaluatedIconSize:i.bp(T.iconSizeData,this.transform.zoom,st),collisionGroup:this.collisionGroups.get(T.sourceID),latestFeatureIndex:h.latestFeatureIndex};if(_)for(const xt of T.sortKeyRanges){const{sortKey:Ge,symbolInstanceStart:lt,symbolInstanceEnd:Je}=xt;t.push({sortKey:Ge,symbolInstanceStart:lt,symbolInstanceEnd:Je,parameters:ut})}else t.push({symbolInstanceStart:0,symbolInstanceEnd:T.symbolInstances.length,parameters:ut})}attemptAnchorPlacement(t,s,h,_,y,T,z,R,F,N,G,Z,W,te,ee,se,oe,he){const{textOffset0:_e,textOffset1:pe,crossTileID:Me}=Z,xe=[_e,pe],we=Qc(t,h,_,xe,y),ve=this.collisionIndex.placeCollisionBox(te,y,s,ja(we.x,we.y,T,z,this.transform.angle),G,R,F,N.predicate);if(se){const Ae=te.getSymbolInstanceIconSize(he,this.transform.zoom,Z.placedIconSymbolIndex);if(this.collisionIndex.placeCollisionBox(te,Ae,se,ja(we.x,we.y,T,z,this.transform.angle),G,R,F,N.predicate).box.length===0)return}if(ve.box.length>0){let Ae;return this.prevPlacement&&this.prevPlacement.variableOffsets[Me]&&this.prevPlacement.placements[Me]&&this.prevPlacement.placements[Me].text&&(Ae=this.prevPlacement.variableOffsets[Me].anchor),this.variableOffsets[Me]={textOffset:xe,width:h,height:_,anchor:t,textScale:y,prevAnchor:Ae},this.markUsedJustification(te,t,Z,ee),te.allowVerticalPlacement&&(this.markUsedOrientation(te,ee,Z),this.placedOrientations[Me]=ee),{shift:we,placedGlyphBoxes:ve}}}placeLayerBucketPart(t,s,h,_,y=1){const{bucket:T,layout:z,paint:R,posMatrix:F,textLabelPlaneMatrix:N,labelToScreenMatrix:G,clippingData:Z,textPixelRatio:W,holdingForFade:te,collisionBoxArray:ee,partiallyEvaluatedTextSize:se,partiallyEvaluatedIconSize:oe,collisionGroup:he,latestFeatureIndex:_e}=t.parameters,pe=z.get("text-optional"),Me=z.get("icon-optional"),xe=z.get("text-allow-overlap"),we=z.get("icon-allow-overlap"),ve=z.get("text-rotation-alignment")==="map",Ae=z.get("text-pitch-alignment")==="map",Oe=z.get("symbol-z-elevate"),Xe=R.get("symbol-z-offset"),He=z.get("symbol-elevation-reference")==="sea",[ke,Ne]=z.get("text-size-scale-range"),[st,ut]=z.get("icon-size-scale-range"),xt=i.aw(y,ke,Ne),Ge=i.aw(y,st,ut);this.transform.setProjection(T.projection);let lt=xe&&(we||!T.hasIconData()||Me),Je=we&&(xe||!T.hasTextData()||pe);const _t=!Xe.isConstant();!T.collisionArrays&&ee&&T.deserializeCollisionBoxes(ee),h&&_&&T.updateCollisionDebugBuffers(this.transform.zoom,ee,xt,Ge);const ct=(nt,Lt,bt)=>{const{crossTileID:zt,numVerticalGlyphVertices:Bt}=nt;let oi=null;if(Z&&Z.dynamicFilterNeedsFeature||_t){const dn=this.retainedQueryData[T.bucketInstanceId];oi=_e.loadFeature({featureIndex:nt.featureIndex,bucketIndex:dn.bucketIndex,sourceLayerIndex:dn.sourceLayerIndex,layoutVertexArrayOffset:0})}if(Z&&!(0,Z.dynamicFilter)({zoom:this.transform.zoom,pitch:this.transform.pitch},oi,this.retainedQueryData[T.bucketInstanceId].tileID.canonical,new i.P(nt.tileAnchorX,nt.tileAnchorY),this.transform.calculateDistanceTileData(Z.unwrappedTileID)))return this.placements[zt]=new Ua(!1,!1,!1,!0),void s.add(zt);const $t=Xe.evaluate(oi,{});if(s.has(zt))return;if(te)return void(this.placements[zt]=new Ua(!1,!1,!1));let Xt=!1,ai=!1,zi=!0,wi=!1,mn=!1,Mn=null,Xi={box:null,offscreen:null,occluded:null},sn={box:null,offscreen:null,occluded:null},_i=null,Jt=null,ji=null,Yi=0,In=0,Bs=0;bt.textFeatureIndex?Yi=bt.textFeatureIndex:nt.useRuntimeCollisionCircles&&(Yi=nt.featureIndex),bt.verticalTextFeatureIndex&&(In=bt.verticalTextFeatureIndex);const mr=dn=>{dn.tileID=this.retainedQueryData[T.bucketInstanceId].tileID;const _n=this.transform.elevation;dn.elevation=He?$t:$t+(_n?_n.getAtTileOffset(dn.tileID,dn.tileAnchorX,dn.tileAnchorY):0),dn.elevation+=nt.zOffset},is=bt.textBox;if(is){mr(is);const dn=Ri=>{let Zn=i.bq.horizontal;if(T.allowVerticalPlacement&&!Ri&&this.prevPlacement){const Ns=this.prevPlacement.placedOrientations[zt];Ns&&(this.placedOrientations[zt]=Ns,Zn=Ns,this.markUsedOrientation(T,Zn,nt))}return Zn},_n=(Ri,Zn)=>{if(T.allowVerticalPlacement&&Bt>0&&bt.verticalTextBox){for(const Ns of T.writingModes)if(Ns===i.bq.vertical?(Xi=Zn(),sn=Xi):Xi=Ri(),Xi&&Xi.box&&Xi.box.length)break}else Xi=Ri()};if(z.get("text-variable-anchor")){let Ri=z.get("text-variable-anchor");if(this.prevPlacement&&this.prevPlacement.variableOffsets[zt]){const cn=this.prevPlacement.variableOffsets[zt];Ri.indexOf(cn.anchor)>0&&(Ri=Ri.filter(tr=>tr!==cn.anchor),Ri.unshift(cn.anchor))}const Zn=(cn,tr,eo)=>{const Ur=T.getSymbolInstanceTextSize(se,nt,this.transform.zoom,Lt),Ca=(cn.x2-cn.x1)*Ur+2*cn.padding,_r=(cn.y2-cn.y1)*Ur+2*cn.padding,Oo=nt.hasIconTextFit&&!we?tr:null;Oo&&mr(Oo);let jr={box:[],offscreen:!1,occluded:!1};const al=xe?2*Ri.length:Ri.length;for(let ra=0;ra<al;++ra){const jl=this.attemptAnchorPlacement(Ri[ra%Ri.length],cn,Ca,_r,Ur,ve,Ae,W,F,he,ra>=Ri.length,nt,Lt,T,eo,Oo,se,oe);if(jl&&(jr=jl.placedGlyphBoxes,jr&&jr.box&&jr.box.length)){Xt=!0,Mn=jl.shift;break}}return jr};_n(()=>Zn(is,bt.iconBox,i.bq.horizontal),()=>{const cn=bt.verticalTextBox;return cn&&mr(cn),T.allowVerticalPlacement&&!(Xi&&Xi.box&&Xi.box.length)&&Bt>0&&cn?Zn(cn,bt.verticalIconBox,i.bq.vertical):{box:null,offscreen:null,occluded:null}}),Xi&&(Xt=Xi.box,zi=Xi.offscreen,wi=Xi.occluded);const Ns=dn(!(!Xi||!Xi.box));if(!Xt&&this.prevPlacement){const cn=this.prevPlacement.variableOffsets[zt];cn&&(this.variableOffsets[zt]=cn,this.markUsedJustification(T,cn.anchor,nt,Ns))}}else{const Ri=(Zn,Ns)=>{const cn=T.getSymbolInstanceTextSize(se,nt,this.transform.zoom,Lt,y),tr=this.collisionIndex.placeCollisionBox(T,cn,Zn,new i.P(0,0),xe,W,F,he.predicate);return tr&&tr.box&&tr.box.length&&(this.markUsedOrientation(T,Ns,nt),this.placedOrientations[zt]=Ns),tr};_n(()=>Ri(is,i.bq.horizontal),()=>{const Zn=bt.verticalTextBox;return T.allowVerticalPlacement&&Bt>0&&Zn?(mr(Zn),Ri(Zn,i.bq.vertical)):{box:null,offscreen:null,occluded:null}}),dn(!!(Xi&&Xi.box&&Xi.box.length))}}if(_i=Xi,Xt=_i&&_i.box&&_i.box.length>0,zi=_i&&_i.offscreen,wi=_i&&_i.occluded,nt.useRuntimeCollisionCircles){const dn=T.text.placedSymbolArray.get(nt.centerJustifiedTextSymbolIndex>=0?nt.centerJustifiedTextSymbolIndex:nt.verticalPlacedTextSymbolIndex),_n=i.br(T.textSizeData,se,dn),Ri=z.get("text-padding");Jt=this.collisionIndex.placeCollisionCircles(T,xe,dn,T.lineVertexArray,T.glyphOffsetArray,_n,F,N,G,h,Ae,he.predicate,nt.collisionCircleDiameter*_n/i.bw,Ri,this.retainedQueryData[T.bucketInstanceId].tileID),Xt=xe||Jt.circles.length>0&&!Jt.collisionDetected,zi=zi&&Jt.offscreen,wi=Jt.occluded}if(bt.iconFeatureIndex&&(Bs=bt.iconFeatureIndex),bt.iconBox){const dn=_n=>{mr(_n);const Ri=nt.hasIconTextFit&&Mn?ja(Mn.x,Mn.y,ve,Ae,this.transform.angle):new i.P(0,0),Zn=T.getSymbolInstanceIconSize(oe,this.transform.zoom,nt.placedIconSymbolIndex);return this.collisionIndex.placeCollisionBox(T,Zn,_n,Ri,we,W,F,he.predicate)};sn&&sn.box&&sn.box.length&&bt.verticalIconBox?(ji=dn(bt.verticalIconBox),ai=ji.box.length>0):(ji=dn(bt.iconBox),ai=ji.box.length>0),zi=zi&&ji.offscreen,mn=ji.occluded}const As=pe||nt.numHorizontalGlyphVertices===0&&Bt===0,er=Me||nt.numIconVertices===0;if(As||er?er?As||(ai=ai&&Xt):Xt=ai&&Xt:ai=Xt=ai&&Xt,Xt&&_i&&_i.box&&this.collisionIndex.insertCollisionBox(_i.box,z.get("text-ignore-placement"),T.bucketInstanceId,sn&&sn.box&&In?In:Yi,he.ID),ai&&ji&&this.collisionIndex.insertCollisionBox(ji.box,z.get("icon-ignore-placement"),T.bucketInstanceId,Bs,he.ID),Jt&&(Xt&&this.collisionIndex.insertCollisionCircles(Jt.circles,z.get("text-ignore-placement"),T.bucketInstanceId,Yi,he.ID),h)){const dn=T.bucketInstanceId;let _n=this.collisionCircleArrays[dn];_n===void 0&&(_n=this.collisionCircleArrays[dn]=new Xo);for(let Ri=0;Ri<Jt.circles.length;Ri+=4)_n.circles.push(Jt.circles[Ri+0]),_n.circles.push(Jt.circles[Ri+1]),_n.circles.push(Jt.circles[Ri+2]),_n.circles.push(Jt.collisionDetected?1:0)}const Gn=T.projection.name!=="globe";lt=lt&&(Gn||!wi),Je=Je&&(Gn||!mn),this.placements[zt]=new Ua(Xt||lt,ai||Je,zi||T.justReloaded),s.add(zt)};if(Oe&&this.buildingIndex&&(this.buildingIndex.updateZOffset(T,this.retainedQueryData[T.bucketInstanceId].tileID),T.updateZOffset()),T.sortFeaturesByY){const nt=T.getSortedSymbolIndexes(this.transform.angle);for(let Lt=nt.length-1;Lt>=0;--Lt){const bt=nt[Lt];ct(T.symbolInstances.get(bt),bt,T.collisionArrays[bt])}T.hasAnyZOffset&&i.w(`${T.layerIds[0]} layer symbol-z-elevate: symbols are not sorted by elevation if symbol-z-order is evaluated to viewport-y`)}else if(T.hasAnyZOffset){const nt=T.getSortedIndexesByZOffset();for(let Lt=0;Lt<nt.length;++Lt){const bt=nt[Lt];ct(T.symbolInstances.get(bt),bt,T.collisionArrays[bt])}}else for(let nt=t.symbolInstanceStart;nt<t.symbolInstanceEnd;nt++)ct(T.symbolInstances.get(nt),nt,T.collisionArrays[nt]);if(h&&T.bucketInstanceId in this.collisionCircleArrays){const nt=this.collisionCircleArrays[T.bucketInstanceId];i.ab.mat4.invert(nt.invProjMatrix,F),nt.viewportMatrix=this.collisionIndex.getViewportMatrix()}T.justReloaded=!1}markUsedJustification(t,s,h,_){const{leftJustifiedTextSymbolIndex:y,centerJustifiedTextSymbolIndex:T,rightJustifiedTextSymbolIndex:z,verticalPlacedTextSymbolIndex:R,crossTileID:F}=h,N=i.bB(s),G=_===i.bq.vertical?R:N==="left"?y:N==="center"?T:N==="right"?z:-1;y>=0&&(t.text.placedSymbolArray.get(y).crossTileID=G>=0&&y!==G?0:F),T>=0&&(t.text.placedSymbolArray.get(T).crossTileID=G>=0&&T!==G?0:F),z>=0&&(t.text.placedSymbolArray.get(z).crossTileID=G>=0&&z!==G?0:F),R>=0&&(t.text.placedSymbolArray.get(R).crossTileID=G>=0&&R!==G?0:F)}markUsedOrientation(t,s,h){const _=s===i.bq.horizontal||s===i.bq.horizontalOnly?s:0,y=s===i.bq.vertical?s:0,{leftJustifiedTextSymbolIndex:T,centerJustifiedTextSymbolIndex:z,rightJustifiedTextSymbolIndex:R,verticalPlacedTextSymbolIndex:F}=h,N=t.text.placedSymbolArray;T>=0&&(N.get(T).placedOrientation=_),z>=0&&(N.get(z).placedOrientation=_),R>=0&&(N.get(R).placedOrientation=_),F>=0&&(N.get(F).placedOrientation=y)}commit(t){this.commitTime=t,this.zoomAtLastRecencyCheck=this.transform.zoom;const s=this.prevPlacement;let h=!1;this.prevZoomAdjustment=s?s.zoomAdjustment(this.transform.zoom):0;const _=s?s.symbolFadeChange(t):1,y=s?s.opacities:{},T=s?s.variableOffsets:{},z=s?s.placedOrientations:{};for(const R in this.placements){const F=this.placements[R],N=y[R];N?(this.opacities[R]=new Ps(N,_,F.text,F.icon,null,F.clipped),h=h||F.text!==N.text.placed||F.icon!==N.icon.placed):(this.opacities[R]=new Ps(null,_,F.text,F.icon,F.skipFade,F.clipped),h=h||F.text||F.icon)}for(const R in y){const F=y[R];if(!this.opacities[R]){const N=new Ps(F,_,!1,!1);N.isHidden()||(this.opacities[R]=N,h=h||F.text.placed||F.icon.placed)}}for(const R in T)this.variableOffsets[R]||!this.opacities[R]||this.opacities[R].isHidden()||(this.variableOffsets[R]=T[R]);for(const R in z)this.placedOrientations[R]||!this.opacities[R]||this.opacities[R].isHidden()||(this.placedOrientations[R]=z[R]);h?this.lastPlacementChangeTime=t:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=s?s.lastPlacementChangeTime:t)}updateLayerOpacities(t,s,h,_){const y=new Set;for(const T of s){const z=T.getBucket(t);z&&T.latestFeatureIndex&&t.fqid===z.layerIds[0]&&(this.updateBucketOpacities(z,y,T,T.collisionBoxArray,h,_,T.tileID,t.scope),z.layers[0].layout.get("symbol-z-elevate")&&this.buildingIndex&&(this.buildingIndex.updateZOffset(z,T.tileID),z.updateZOffset()))}}updateBucketOpacities(t,s,h,_,y,T,z,R){t.hasTextData()&&t.text.opacityVertexArray.clear(),t.hasIconData()&&t.icon.opacityVertexArray.clear(),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexArray.clear(),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexArray.clear();const F=t.layers[0].layout,N=t.layers[0].paint,G=!!t.layers[0].dynamicFilter(),Z=new Ps(null,0,!1,!1,!0),W=F.get("text-allow-overlap"),te=F.get("icon-allow-overlap"),ee=F.get("text-variable-anchor"),se=F.get("text-rotation-alignment")==="map",oe=F.get("text-pitch-alignment")==="map",he=N.get("symbol-z-offset"),_e=F.get("symbol-elevation-reference")==="sea",pe=!he.isConstant(),Me=new Ps(null,0,W&&(te||!t.hasIconData()||F.get("icon-optional")),te&&(W||!t.hasTextData()||F.get("text-optional")),!0);!t.collisionArrays&&_&&(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData())&&t.deserializeCollisionBoxes(_);const xe=(ve,Ae,Oe)=>{for(let Xe=0;Xe<Ae/4;Xe++)ve.opacityVertexArray.emplaceBack(Oe)};let we=0;T&&t.updateReplacement(z,T);for(let ve=0;ve<t.symbolInstances.length;ve++){const Ae=t.symbolInstances.get(ve),{numHorizontalGlyphVertices:Oe,numVerticalGlyphVertices:Xe,crossTileID:He,numIconVertices:ke,tileAnchorX:Ne,tileAnchorY:st}=Ae;let ut=null;const xt=this.retainedQueryData[t.bucketInstanceId];pe&&Ae&&xt&&(ut=h.latestFeatureIndex.loadFeature({featureIndex:Ae.featureIndex,bucketIndex:xt.bucketIndex,sourceLayerIndex:xt.sourceLayerIndex,layoutVertexArrayOffset:0}));const Ge=he.evaluate(ut,{}),lt=s.has(He);let Je=this.opacities[He];lt?Je=Z:Je||(Je=Me,this.opacities[He]=Je),s.add(He);const _t=Oe>0||Xe>0,ct=ke>0,nt=this.placedOrientations[He],Lt=nt===i.bq.vertical,bt=nt===i.bq.horizontal||nt===i.bq.horizontalOnly;!_t&&!ct||Je.isHidden()||we++;let zt=!1;if((_t||ct)&&T)for(const Bt of t.activeReplacements){if(i.bx(Bt,y,i.by.Symbol,R)||Bt.min.x>Ne||Ne>Bt.max.x||Bt.min.y>st||st>Bt.max.y)continue;const oi=i.bz(Ne,st,z.canonical,Bt.footprintTileId.canonical);if(zt=i.bA(oi,Bt.footprint),zt)break}if(_t){const Bt=zt?ks:Pl(Je.text);xe(t.text,Oe,Lt?ks:Bt),xe(t.text,Xe,bt?ks:Bt);const oi=Je.text.isHidden(),{leftJustifiedTextSymbolIndex:$t,centerJustifiedTextSymbolIndex:Xt,rightJustifiedTextSymbolIndex:ai,verticalPlacedTextSymbolIndex:zi}=Ae,wi=t.text.placedSymbolArray,mn=oi||Lt?1:0;$t>=0&&(wi.get($t).hidden=mn),Xt>=0&&(wi.get(Xt).hidden=mn),ai>=0&&(wi.get(ai).hidden=mn),zi>=0&&(wi.get(zi).hidden=oi||bt?1:0);const Mn=this.variableOffsets[He];Mn&&this.markUsedJustification(t,Mn.anchor,Ae,nt);const Xi=this.placedOrientations[He];Xi&&(this.markUsedJustification(t,"left",Ae,Xi),this.markUsedOrientation(t,Xi,Ae))}if(ct){const Bt=zt?ks:Pl(Je.icon),{placedIconSymbolIndex:oi,verticalPlacedIconSymbolIndex:$t}=Ae,Xt=t.icon.placedSymbolArray,ai=Je.icon.isHidden()?1:0;oi>=0&&(xe(t.icon,ke,Lt?ks:Bt),Xt.get(oi).hidden=ai),$t>=0&&(xe(t.icon,Ae.numVerticalIconVertices,bt?ks:Bt),Xt.get($t).hidden=ai)}if(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData()){const Bt=t.collisionArrays[ve];if(Bt){let oi=new i.P(0,0),$t=!0;if(Bt.textBox||Bt.verticalTextBox){if(ee){const ai=this.variableOffsets[He];ai?(oi=Qc(ai.anchor,ai.width,ai.height,ai.textOffset,ai.textScale),se&&oi._rotate(oe?this.transform.angle:-this.transform.angle)):$t=!1}G&&($t=!Je.clipped),Bt.textBox&&Ml(t.textCollisionBox.collisionVertexArray,Je.text.placed,!$t||Lt,Ge,_e,oi.x,oi.y),Bt.verticalTextBox&&Ml(t.textCollisionBox.collisionVertexArray,Je.text.placed,!$t||bt,Ge,_e,oi.x,oi.y)}const Xt=$t&&!!(!bt&&Bt.verticalIconBox);Bt.iconBox&&Ml(t.iconCollisionBox.collisionVertexArray,Je.icon.placed,Xt,Ge,_e,Ae.hasIconTextFit?oi.x:0,Ae.hasIconTextFit?oi.y:0),Bt.verticalIconBox&&Ml(t.iconCollisionBox.collisionVertexArray,Je.icon.placed,!Xt,Ge,_e,Ae.hasIconTextFit?oi.x:0,Ae.hasIconTextFit?oi.y:0)}}}if(t.fullyClipped=we===0,t.sortFeatures(this.transform.angle),this.retainedQueryData[t.bucketInstanceId]&&(this.retainedQueryData[t.bucketInstanceId].featureSortOrder=t.featureSortOrder),t.hasTextData()&&t.text.opacityVertexBuffer&&t.text.opacityVertexBuffer.updateData(t.text.opacityVertexArray),t.hasIconData()&&t.icon.opacityVertexBuffer&&t.icon.opacityVertexBuffer.updateData(t.icon.opacityVertexArray),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexBuffer&&t.iconCollisionBox.collisionVertexBuffer.updateData(t.iconCollisionBox.collisionVertexArray),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexBuffer&&t.textCollisionBox.collisionVertexBuffer.updateData(t.textCollisionBox.collisionVertexArray),t.bucketInstanceId in this.collisionCircleArrays){const ve=this.collisionCircleArrays[t.bucketInstanceId];t.placementInvProjMatrix=ve.invProjMatrix,t.placementViewportMatrix=ve.viewportMatrix,t.collisionCircleArray=ve.circles,delete this.collisionCircleArrays[t.bucketInstanceId]}}symbolFadeChange(t){return this.fadeDuration===0?1:(t-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(t){return Math.max(0,(this.transform.zoom-t)/1.5)}hasTransitions(t){return this.stale||t-this.lastPlacementChangeTime<this.fadeDuration}stillRecent(t,s){const h=this.zoomAtLastRecencyCheck===s?1-this.zoomAdjustment(s):1;return this.zoomAtLastRecencyCheck=s,this.commitTime+this.fadeDuration*h>t}setStale(){this.stale=!0}}function Ml(c,t,s,h,_,y,T){c.emplaceBack(t?1:0,s?1:0,y||0,T||0,h,_?1:0),c.emplaceBack(t?1:0,s?1:0,y||0,T||0,h,_?1:0),c.emplaceBack(t?1:0,s?1:0,y||0,T||0,h,_?1:0),c.emplaceBack(t?1:0,s?1:0,y||0,T||0,h,_?1:0)}const Sl=Math.pow(2,25),Xh=Math.pow(2,24),El=Math.pow(2,17),eh=Math.pow(2,16),Ld=Math.pow(2,9),Ga=Math.pow(2,8),Za=Math.pow(2,1);function Pl(c){if(c.opacity===0&&!c.placed)return 0;if(c.opacity===1&&c.placed)return 4294967295;const t=c.placed?1:0,s=Math.floor(127*c.opacity);return s*Sl+t*Xh+s*El+t*eh+s*Ld+t*Ga+s*Za+t}const ks=0;class Yh{constructor(t){this._sortAcrossTiles=t.layout.get("symbol-z-order")!=="viewport-y"&&t.layout.get("symbol-sort-key").constantOr(1)!==void 0,this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs=new Set,this._bucketParts=[]}continuePlacement(t,s,h,_,y,T){const z=this._bucketParts;for(;this._currentTileIndex<t.length;)if(s.getBucketParts(z,_,t[this._currentTileIndex],this._sortAcrossTiles,T),this._currentTileIndex++,y())return!0;for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,z.sort((R,F)=>R.sortKey-F.sortKey));this._currentPartIndex<z.length;){const R=z[this._currentPartIndex];if(s.placeLayerBucketPart(R,this._seenCrossTileIDs,h,R.symbolInstanceStart===0,T),this._currentPartIndex++,y())return!0}return!1}}class Ko{constructor(t,s,h,_,y,T,z,R,F){this.placement=new ar(t,y,T,z,R,F),this._currentPlacementIndex=s.length-1,this._forceFullPlacement=h,this._showCollisionBoxes=_,this._done=!1}isDone(){return this._done}continuePlacement(t,s,h,_,y){const T=i.q.now(),z=()=>{const R=i.q.now()-T;return!this._forceFullPlacement&&R>2};for(;this._currentPlacementIndex>=0;){const R=s[t[this._currentPlacementIndex]],F=this.placement.collisionIndex.transform.zoom;if(R.type==="symbol"&&(!R.minzoom||R.minzoom<=F)&&(!R.maxzoom||R.maxzoom>F)){const N=R,G=N.layout.get("symbol-z-elevate"),Z=N.layout.get("symbol-sort-key").constantOr(1)!==void 0,W=N.layout.get("symbol-z-order"),te=W==="viewport-y"||W==="auto"&&!(W!=="viewport-y"&&Z),ee=N.layout.get("text-allow-overlap")||N.layout.get("icon-allow-overlap")||N.layout.get("text-ignore-placement")||N.layout.get("icon-ignore-placement"),se=te&&ee,oe=this._inProgressLayer=this._inProgressLayer||new Yh(N),he=i.aC(R.source,R.scope);if(oe.continuePlacement(G||se?_[he]:h[he],this.placement,this._showCollisionBoxes,R,z,y))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(t){return this.placement.commit(t),this.placement}}const ls=512/i.ag/2;class Kh{constructor(t,s,h){this.tileID=t,this.bucketInstanceId=h,this.index=new i.bE(s.length,16,Int32Array),this.keys=[],this.crossTileIDs=[];const _=t.canonical.x*i.ag,y=t.canonical.y*i.ag;for(let T=0;T<s.length;T++){const{key:z,crossTileID:R,tileAnchorX:F,tileAnchorY:N}=s.get(T),G=Math.floor((_+F)*ls),Z=Math.floor((y+N)*ls);this.index.add(G,Z),this.keys.push(z),this.crossTileIDs.push(R)}this.index.finish()}findMatches(t,s,h){const _=this.tileID.canonical.z<s.canonical.z?1:Math.pow(2,this.tileID.canonical.z-s.canonical.z),y=ls/Math.pow(2,s.canonical.z-this.tileID.canonical.z),T=s.canonical.x*i.ag,z=s.canonical.y*i.ag;for(let R=0;R<t.length;R++){const F=t.get(R);if(F.crossTileID)continue;const{key:N,tileAnchorX:G,tileAnchorY:Z}=F,W=Math.floor((T+G)*y),te=Math.floor((z+Z)*y),ee=this.index.range(W-_,te-_,W+_,te+_);for(const se of ee){const oe=this.crossTileIDs[se];if(this.keys[se]===N&&!h.has(oe)){h.add(oe),F.crossTileID=oe;break}}}}}class Jh{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class zd{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(t){const s=Math.round((t-this.lng)/360);if(s!==0)for(const h in this.indexes){const _=this.indexes[h],y={};for(const T in _){const z=_[T];z.tileID=z.tileID.unwrapTo(z.tileID.wrap+s),y[z.tileID.key]=z}this.indexes[h]=y}this.lng=t}addBucket(t,s,h){if(this.indexes[t.overscaledZ]&&this.indexes[t.overscaledZ][t.key]){if(this.indexes[t.overscaledZ][t.key].bucketInstanceId===s.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(t.overscaledZ,this.indexes[t.overscaledZ][t.key])}for(let y=0;y<s.symbolInstances.length;y++)s.symbolInstances.get(y).crossTileID=0;this.usedCrossTileIDs[t.overscaledZ]||(this.usedCrossTileIDs[t.overscaledZ]=new Set);const _=this.usedCrossTileIDs[t.overscaledZ];for(const y in this.indexes){const T=this.indexes[y];if(Number(y)>t.overscaledZ)for(const z in T){const R=T[z];R.tileID.isChildOf(t)&&R.findMatches(s.symbolInstances,t,_)}else{const z=T[t.scaledTo(Number(y)).key];z&&z.findMatches(s.symbolInstances,t,_)}}for(let y=0;y<s.symbolInstances.length;y++){const T=s.symbolInstances.get(y);T.crossTileID||(T.crossTileID=h.generate(),_.add(T.crossTileID))}return this.indexes[t.overscaledZ]===void 0&&(this.indexes[t.overscaledZ]={}),this.indexes[t.overscaledZ][t.key]=new Kh(t,s.symbolInstances,s.bucketInstanceId),!0}removeBucketCrossTileIDs(t,s){for(const h of s.crossTileIDs)this.usedCrossTileIDs[t].delete(h)}removeStaleBuckets(t){let s=!1;for(const h in this.indexes){const _=this.indexes[h];for(const y in _)t[_[y].bucketInstanceId]||(this.removeBucketCrossTileIDs(h,_[y]),delete _[y],s=!0)}return s}}class ic{constructor(){this.layerIndexes={},this.crossTileIDs=new Jh,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={}}addLayer(t,s,h,_){let y=this.layerIndexes[t.fqid];y===void 0&&(y=this.layerIndexes[t.fqid]=new zd);let T=!1;const z={};_.name!=="globe"&&y.handleWrapJump(h);for(const R of s){const F=R.getBucket(t);F&&t.fqid===F.layerIds[0]&&(F.bucketInstanceId||(F.bucketInstanceId=++this.maxBucketInstanceId),y.addBucket(R.tileID,F,this.crossTileIDs)&&(T=!0),z[F.bucketInstanceId]=!0)}return y.removeStaleBuckets(z)&&(T=!0),T}pruneUnusedLayers(t){const s={};t.forEach(h=>{s[h]=!0});for(const h in this.layerIndexes)s[h]||delete this.layerIndexes[h]}}const Jo=771;class bi{constructor(t,s,h,_){this.blendFunction=t,this.blendColor=s,this.mask=h,this.blendEquation=_}}bi.Replace=[1,0,1,0],bi.disabled=new bi(bi.Replace,i.aj.transparent,[!1,!1,!1,!1]),bi.unblended=new bi(bi.Replace,i.aj.transparent,[!0,!0,!0,!0]),bi.alphaBlended=new bi([1,Jo,1,Jo],i.aj.transparent,[!0,!0,!0,!0]),bi.alphaBlendedNonPremultiplied=new bi([770,Jo,770,Jo],i.aj.transparent,[!0,!0,!0,!0]),bi.multiply=new bi([774,0,774,0],i.aj.transparent,[!0,!0,!0,!0]);class Wt{constructor(t,s,h){this.func=t,this.mask=s,this.range=h}}Wt.ReadOnly=!1,Wt.ReadWrite=!0,Wt.disabled=new Wt(519,Wt.ReadOnly,[0,1]);const Al=7680;class ci{constructor(t,s,h,_,y,T){this.test=t,this.ref=s,this.mask=h,this.fail=_,this.depthFail=y,this.pass=T}}ci.disabled=new ci({func:519,mask:0},0,0,Al,Al,Al);const lr=1029,cr=2305;class ti{constructor(t,s,h){this.enable=t,this.mode=s,this.frontFace=h}}function Xr(c,t){const s=i.bG(c,3);i.ab.mat4.fromQuat(c,t),i.bI(c,3,s)}function nc(c,t){const s=i.ab.quat.identity([]);return i.ab.quat.rotateZ(s,s,-t),i.ab.quat.rotateX(s,s,-c),s}function Yr(c,t){const s=[c[0],c[1],0],h=[t[0],t[1],0];if(i.ab.vec3.length(s)>=1e-15){const T=i.ab.vec3.normalize([],s);i.ab.vec3.scale(h,T,i.ab.vec3.dot(h,T)),t[0]=h[0],t[1]=h[1]}const _=i.ab.vec3.cross([],t,c);if(i.ab.vec3.len(_)<1e-15)return null;const y=Math.atan2(-_[1],_[0]);return nc(Math.atan2(Math.sqrt(c[0]*c[0]+c[1]*c[1]),-c[2]),y)}ti.disabled=new ti(!1,lr,cr),ti.backCCW=new ti(!0,lr,cr),ti.backCW=new ti(!0,lr,2304),ti.frontCW=new ti(!0,1028,2304),ti.frontCCW=new ti(!0,1028,cr);class Ha{constructor(t,s){this.position=t,this.orientation=s}get position(){return this._position}set position(t){if(t){const s=t instanceof i.aa?t:new i.aa(t[0],t[1],t[2]);this._renderWorldCopies&&(s.x=i.bF(s.x,0,1)),this._position=s}else this._position=null}lookAtPoint(t,s){if(this.orientation=null,!this.position)return;const h=this.position,_=this._elevation?this._elevation.getAtPointOrZero(i.aa.fromLngLat(t)):0,y=i.aa.fromLngLat(t,_),T=[y.x-h.x,y.y-h.y,y.z-h.z];s||(s=[0,0,1]),s[2]=Math.abs(s[2]),this.orientation=Yr(T,s)}setPitchBearing(t,s){this.orientation=nc(i.ai(t),i.ai(-s))}}class So{constructor(t,s){this._transform=i.ab.mat4.identity([]),this.orientation=s,this.position=t}get mercatorPosition(){const t=this.position;return new i.aa(t[0],t[1],t[2])}get position(){const t=i.bG(this._transform,3);return[t[0],t[1],t[2]]}set position(t){var s;t&&i.bI(this._transform,3,[(s=t)[0],s[1],s[2],1])}get orientation(){return this._orientation}set orientation(t){this._orientation=t||i.ab.quat.identity([]),t&&Xr(this._transform,this._orientation)}getPitchBearing(){const t=this.forward(),s=this.right();return{bearing:Math.atan2(-s[1],s[0]),pitch:Math.atan2(Math.sqrt(t[0]*t[0]+t[1]*t[1]),-t[2])}}setPitchBearing(t,s){this._orientation=nc(t,s),Xr(this._transform,this._orientation)}forward(){const t=i.bG(this._transform,2);return[-t[0],-t[1],-t[2]]}up(){const t=i.bG(this._transform,1);return[-t[0],-t[1],-t[2]]}right(){const t=i.bG(this._transform,0);return[t[0],t[1],t[2]]}getCameraToWorld(t,s){const h=new Float64Array(16);return i.ab.mat4.invert(h,this.getWorldToCamera(t,s)),h}getCameraToWorldMercator(){return this._transform}getWorldToCameraPosition(t,s,h){const _=this.position;i.ab.vec3.scale(_,_,-t);const y=new Float64Array(16);return i.ab.mat4.fromScaling(y,[h,h,h]),i.ab.mat4.translate(y,y,_),y[10]*=s,y}getWorldToCamera(t,s){const h=new Float64Array(16),_=new Float64Array(4),y=this.position;return i.ab.quat.conjugate(_,this._orientation),i.ab.vec3.scale(y,y,-t),i.ab.mat4.fromQuat(h,_),i.ab.mat4.translate(h,h,y),h[1]*=-1,h[5]*=-1,h[9]*=-1,h[13]*=-1,h[8]*=s,h[9]*=s,h[10]*=s,h[11]*=s,h}getCameraToClipPerspective(t,s,h,_){const y=new Float64Array(16);return i.ab.mat4.perspective(y,t,s,h,_),y}getCameraToClipOrthographic(t,s,h,_,y,T){const z=new Float64Array(16);return i.ab.mat4.ortho(z,t,s,h,_,y,T),z}getDistanceToElevation(t,s=!1){const h=t===0?0:i.bH(t,s?i.aS(this.position[1]):this.position[1]),_=this.forward();return(h-this.position[2])/_[2]}clone(){return new So([...this.position],[...this.orientation])}}const bs={BaseColor:5,MetallicRoughness:6,Normal:7,Occlusion:8,Emission:9,LUT:10,ShadowMap0:11};class Rs{constructor(t=0,s=0,h=0,_=0){if(isNaN(t)||t<0||isNaN(s)||s<0||isNaN(h)||h<0||isNaN(_)||_<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=t,this.bottom=s,this.left=h,this.right=_}interpolate(t,s,h){return s.top!=null&&t.top!=null&&(this.top=i.af(t.top,s.top,h)),s.bottom!=null&&t.bottom!=null&&(this.bottom=i.af(t.bottom,s.bottom,h)),s.left!=null&&t.left!=null&&(this.left=i.af(t.left,s.left,h)),s.right!=null&&t.right!=null&&(this.right=i.af(t.right,s.right,h)),this}getCenter(t,s){const h=i.aw((this.left+t-this.right)/2,0,t),_=i.aw((this.top+s-this.bottom)/2,0,s);return new i.P(h,_)}equals(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right}clone(){return new Rs(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}const sc=(c,t,s)=>(1-s)*c+s*t,Tt=c=>c*c*c*c*c;class va{constructor(t,s,h,_,y,T,z){this.tileSize=512,this._renderWorldCopies=y===void 0||y,this._minZoom=t||0,this._maxZoom=s||22,this._minPitch=h??0,this._maxPitch=_??60,this.setProjection(T),this.setMaxBounds(z),this.width=0,this.height=0,this._center=new i.bO(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._nearZ=0,this._farZ=0,this._unmodified=!0,this._edgeInsets=new Rs,this._projMatrixCache={},this._alignedProjMatrixCache={},this._fogTileMatrixCache={},this._expandedProjMatrixCache={},this._distanceTileDataCache={},this._camera=new So,this._centerAltitude=0,this._averageElevation=0,this.cameraElevationReference="ground",this._pixelsPerMercatorPixel=1,this.globeRadius=0,this.globeCenterInViewSpace=[0,0,0],this._tileCoverLift=0,this.freezeTileCoverage=!1,this._horizonShift=.1,this._orthographicProjectionAtLowPitch=!1}clone(){const t=new va(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies,this.getProjection());return t._elevation=this._elevation,t._centerAltitude=this._centerAltitude,t._centerAltitudeValidForExaggeration=this._centerAltitudeValidForExaggeration,t.tileSize=this.tileSize,t.mercatorFromTransition=this.mercatorFromTransition,t.width=this.width,t.height=this.height,t.cameraElevationReference=this.cameraElevationReference,t._center=this._center,t._setZoom(this.zoom),t._seaLevelZoom=this._seaLevelZoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._nearZ=this._nearZ,t._farZ=this._farZ,t._averageElevation=this._averageElevation,t._orthographicProjectionAtLowPitch=this._orthographicProjectionAtLowPitch,t._unmodified=this._unmodified,t._edgeInsets=this._edgeInsets.clone(),t._camera=this._camera.clone(),t._calcMatrices(),t.freezeTileCoverage=this.freezeTileCoverage,t.frustumCorners=this.frustumCorners,t}get isOrthographic(){return this.projection.name!=="globe"&&this._orthographicProjectionAtLowPitch&&this.pitch<15}get elevation(){return this._elevation}set elevation(t){this._elevation!==t&&(this._elevation=t,this._updateCameraOnTerrain(),this._calcMatrices())}get depthOcclusionForSymbolsAndCircles(){return this.projection.name!=="globe"&&!this.isOrthographic}updateElevation(t,s=!1){const h=this._elevation&&this._elevation.exaggeration()!==this._centerAltitudeValidForExaggeration;(this._seaLevelZoom==null||h)&&this._updateCameraOnTerrain(),(t||h)&&this._constrainCamera(s),this._calcMatrices()}getProjection(){return i.ay(this.projection,["name","center","parallels"])}setProjection(t){this.projectionOptions=t||{name:"mercator"};const s=this.projection?this.getProjection():void 0;this.projection=i.bP(this.projectionOptions);const h=this.getProjection(),_=!i.bn(s,h);return _&&this._calcMatrices(),this.mercatorFromTransition=!1,_}setOrthographicProjectionAtLowPitch(t){return this._orthographicProjectionAtLowPitch!==t&&(this._orthographicProjectionAtLowPitch=t,this._calcMatrices(),!0)}setMercatorFromTransition(){const t=this.projection.name;this.mercatorFromTransition=!0,this.projectionOptions={name:"mercator"},this.projection=i.bP({name:"mercator"});const s=t!==this.projection.name;return s&&this._calcMatrices(),s}get minZoom(){return this._minZoom}set minZoom(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))}get maxZoom(){return this._maxZoom}set maxZoom(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))}get minPitch(){return this._minPitch}set minPitch(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t))}get maxPitch(){return this._maxPitch}set maxPitch(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t))}get renderWorldCopies(){return this._renderWorldCopies&&this.projection.supportsWorldCopies===!0}set renderWorldCopies(t){t===void 0?t=!0:t===null&&(t=!1),this._renderWorldCopies=t}get worldSize(){return this.tileSize*this.scale}get cameraWorldSizeForFog(){const t=Math.max(this._camera.getDistanceToElevation(this._averageElevation),Number.EPSILON);return this._worldSizeFromZoom(this._zoomFromMercatorZ(t))}get cameraWorldSize(){const t=Math.max(this._camera.getDistanceToElevation(this._averageElevation,!0),Number.EPSILON);return this._worldSizeFromZoom(this._zoomFromMercatorZ(t))}get pixelsPerMeter(){return this.projection.pixelsPerMeter(this.center.lat,this.worldSize)}get cameraPixelsPerMeter(){return i.bH(1,this.center.lat)*this.cameraWorldSizeForFog}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new i.P(this.width,this.height)}get bearing(){return i.bF(this.rotation,-180,180)}set bearing(t){this.rotation=t}get rotation(){return-this.angle/Math.PI*180}set rotation(t){const s=-t*Math.PI/180;this.angle!==s&&(this._unmodified=!1,this.angle=s,this._calcMatrices(),this.rotationMatrix=i.ab.mat2.create(),i.ab.mat2.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(t){const s=i.aw(t,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==s&&(this._unmodified=!1,this._pitch=s,this._calcMatrices())}get aspect(){return this.width/this.height}get fov(){return this._fov/Math.PI*180}get fovX(){return this._fov}get fovY(){const t=1/Math.tan(.5*this.fovX);return 2*Math.atan(1/this.aspect/t)}set fov(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=i.ai(t),this._calcMatrices())}get averageElevation(){return this._averageElevation}set averageElevation(t){this._averageElevation=t,this._calcFogMatrices(),this._distanceTileDataCache={}}get zoom(){return this._zoom}set zoom(t){const s=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==s&&(this._unmodified=!1,this._setZoom(s),this._updateSeaLevelZoom(),this._constrain(),this._calcMatrices())}_setZoom(t){this._zoom=t,this.scale=this.zoomScale(t),this.tileZoom=Math.floor(t),this.zoomFraction=t-this.tileZoom}get tileCoverLift(){return this._tileCoverLift}set tileCoverLift(t){this._tileCoverLift!==t&&(this._tileCoverLift=t)}_updateCameraOnTerrain(){const t=this.elevation?this.elevation.getAtPoint(this.locationCoordinate(this.center),Number.NEGATIVE_INFINITY):Number.NEGATIVE_INFINITY,s=this.elevation&&t===Number.NEGATIVE_INFINITY&&this.elevation.visibleDemTiles.length>0&&this.elevation.exaggeration()>0&&this._centerAltitudeValidForExaggeration;if(!this._elevation||t===Number.NEGATIVE_INFINITY&&(!s||!this._centerAltitude))return this._centerAltitude=0,this._seaLevelZoom=null,void(this._centerAltitudeValidForExaggeration=void 0);const h=this._elevation;s||this._centerAltitude&&this._centerAltitudeValidForExaggeration&&h.exaggeration()&&this._centerAltitudeValidForExaggeration!==h.exaggeration()?(this._centerAltitude=this._centerAltitude/this._centerAltitudeValidForExaggeration*h.exaggeration(),this._centerAltitudeValidForExaggeration=h.exaggeration()):(this._centerAltitude=t||0,this._centerAltitudeValidForExaggeration=h.exaggeration()),this._updateSeaLevelZoom()}_updateSeaLevelZoom(){this._centerAltitudeValidForExaggeration!==void 0&&(this._seaLevelZoom=this._zoomFromMercatorZ((this.pixelsPerMeter*this._centerAltitude+this.cameraToCenterDistance)/this.worldSize))}sampleAverageElevation(){if(!this._elevation)return 0;const t=this._elevation,s=[[.5,.2],[.3,.5],[.5,.5],[.7,.5],[.5,.8]],h=this.horizonLineFromTop();let _=0,y=0;for(let T=0;T<s.length;T++){const z=new i.P(s[T][0]*this.width,h+s[T][1]*(this.height-h)),R=t.pointCoordinate(z);if(!R)continue;const F=1/Math.hypot(R[0]-this._camera.position[0],R[1]-this._camera.position[1]);_+=R[3]*F,y+=F}return y===0?NaN:_/y}get center(){return this._center}set center(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._terrainEnabled()&&(this.cameraElevationReference==="ground"?this._updateCameraOnTerrain():this._updateZoomFromElevation()),this._constrain(),this._calcMatrices())}_updateZoomFromElevation(){if(this._seaLevelZoom==null||!this._elevation)return;const t=this._seaLevelZoom,s=this._elevation.getAtPointOrZero(this.locationCoordinate(this.center)),h=this.pixelsPerMeter/this.worldSize*s,_=this._mercatorZfromZoom(t),y=this._mercatorZfromZoom(this._maxZoom),T=Math.max(_-h,y);this._setZoom(this._zoomFromMercatorZ(T))}get padding(){return this._edgeInsets.toJSON()}set padding(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())}computeZoomRelativeTo(t){const s=this.rayIntersectionCoordinate(this.pointRayIntersection(this.centerPoint,t.toAltitude()));let h;h=t.z<this._camera.position[2]?[s.x,s.y,s.z]:[t.x,t.y,t.z];const _=i.ab.vec3.length(i.ab.vec3.sub([],this._camera.position,h));return i.aw(this._zoomFromMercatorZ(_),this._minZoom,this._maxZoom)}setFreeCameraOptions(t){if(!this.height||!t.position&&!t.orientation)return;this._updateCameraState();let s=!1;if(t.orientation&&!i.ab.quat.exactEquals(t.orientation,this._camera.orientation)&&(s=this._setCameraOrientation(t.orientation)),t.position){const h=[t.position.x,t.position.y,t.position.z];i.ab.vec3.exactEquals(h,this._camera.position)||(this._setCameraPosition(h),s=!0)}s&&(this._updateStateFromCamera(),this.recenterOnTerrain())}getFreeCameraOptions(){this._updateCameraState();const t=this._camera.position,s=new Ha;return s.position=new i.aa(t[0],t[1],t[2]),s.orientation=this._camera.orientation,s._elevation=this.elevation,s._renderWorldCopies=this.renderWorldCopies,s}_setCameraOrientation(t){if(!i.ab.quat.length(t))return!1;i.ab.quat.normalize(t,t);const s=i.ab.vec3.transformQuat([],[0,0,-1],t),h=i.ab.vec3.transformQuat([],[0,-1,0],t);if(h[2]<0)return!1;const _=Yr(s,h);return!!_&&(this._camera.orientation=_,!0)}_setCameraPosition(t){const s=this.zoomScale(this.minZoom)*this.tileSize,h=this.zoomScale(this.maxZoom)*this.tileSize,_=this.cameraToCenterDistance;t[2]=i.aw(t[2],_/h,_/s),this._camera.position=t}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}get fovAboveCenter(){return this._fov*(.5+this.centerOffset.y/this.height)}isPaddingEqual(t){return this._edgeInsets.equals(t)}interpolatePadding(t,s,h){this._unmodified=!1,this._edgeInsets.interpolate(t,s,h),this._constrain(),this._calcMatrices()}coveringZoomLevel(t){const s=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,s)}getVisibleUnwrappedCoordinates(t){const s=[new i.bQ(0,t)];if(this.renderWorldCopies){const h=this.pointCoordinate(new i.P(0,0)),_=this.pointCoordinate(new i.P(this.width,0)),y=this.pointCoordinate(new i.P(this.width,this.height)),T=this.pointCoordinate(new i.P(0,this.height)),z=Math.floor(Math.min(h.x,_.x,y.x,T.x)),R=Math.floor(Math.max(h.x,_.x,y.x,T.x)),F=1;for(let N=z-F;N<=R+F;N++)N!==0&&s.push(new i.bQ(N,t))}return s}isLODDisabled(t){return(!t||this.pitch<=60)&&this._edgeInsets.top<=this._edgeInsets.bottom&&!this._elevation&&!this.projection.isReprojectedInTileSpace}extendTileCover(t,s,h){let _=[];const y=h!==void 0,T=!y;if(T&&this.zoom<s||y&&h[0]===0&&h[1]===0)return _;const z=new Set,R=(N,G,Z,W,te)=>{const ee=i.c5(G,N,Z,W,te);z.has(ee)||(_.push(new i.aG(N,G,Z,W,te)),z.add(ee))};for(let N=0;N<t.length;N++){const G=t[N];if(T&&G.canonical.z!==s)continue;const Z=G.canonical,W=G.overscaledZ,te=G.wrap,ee=1<<Z.z,se=Z.x+1<ee,oe=Z.x>0,he=Z.y+1<ee,_e=Z.y>0,pe=G.wrap-(oe?0:1),Me=G.wrap+(se?0:1),xe=oe?Z.x-1:ee-1,we=se?Z.x+1:0;if(y)h[0]<0?(R(W,Me,Z.z,we,Z.y),h[1]<0&&he&&(R(W,te,Z.z,Z.x,Z.y+1),R(W,Me,Z.z,we,Z.y+1)),h[1]>0&&_e&&(R(W,te,Z.z,Z.x,Z.y-1),R(W,Me,Z.z,we,Z.y-1))):h[0]>0?(R(W,pe,Z.z,xe,Z.y),h[1]<0&&he&&(R(W,te,Z.z,Z.x,Z.y+1),R(W,pe,Z.z,xe,Z.y+1)),h[1]>0&&_e&&(R(W,te,Z.z,Z.x,Z.y-1),R(W,pe,Z.z,xe,Z.y-1))):h[1]<0&&he?R(W,te,Z.z,Z.x,Z.y+1):_e&&R(W,te,Z.z,Z.x,Z.y-1);else{const ve=G.visibleQuadrants;1&ve&&(R(W,pe,Z.z,xe,Z.y),_e&&(R(W,te,Z.z,Z.x,Z.y-1),R(W,pe,Z.z,xe,Z.y-1))),2&ve&&(R(W,Me,Z.z,we,Z.y),_e&&(R(W,te,Z.z,Z.x,Z.y-1),R(W,Me,Z.z,we,Z.y-1))),4&ve&&(R(W,pe,Z.z,xe,Z.y),he&&(R(W,te,Z.z,Z.x,Z.y+1),R(W,pe,Z.z,xe,Z.y+1))),8&ve&&(R(W,Me,Z.z,we,Z.y),he&&(R(W,te,Z.z,Z.x,Z.y+1),R(W,Me,Z.z,we,Z.y+1)))}}const F=[];for(const N of _)_.some(G=>N.isChildOf(G))||F.push(N);if(_=F.filter(N=>!t.some(G=>!!(N.overscaledZ<s&&G.isChildOf(N))||N.equals(G)||N.isChildOf(G))),T){const N=1<<s,G=this.projection.name==="globe"?this._camera.mercatorPosition:this.pointCoordinate(this.getCameraPoint()),Z=[N*G.x,N*G.y],W=4,te=W*W;_=_.filter(ee=>{const se=ee.canonical.x+.5-Z[0],oe=ee.canonical.y+.5-Z[1];return se*se+oe*oe<te})}return _}coveringTiles(t){let s=this.coveringZoomLevel(t);const h=s,_=this.elevation&&this.elevation.exaggeration(),y=_&&!t.isTerrainDEM,T=this.projection.name==="mercator";if(t.minzoom!==void 0&&s<t.minzoom)return[];t.maxzoom!==void 0&&s>t.maxzoom&&(s=t.maxzoom);const z=this.locationCoordinate(this.center),R=this.center.lat,F=1<<s,N=[F*z.x,F*z.y,0],G=this.projection.name==="globe",Z=!G,W=i.bR.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,s,Z),te=G?this._camera.mercatorPosition:this.pointCoordinate(this.getCameraPoint()),ee=F*i.bH(1,this.center.lat),se=this._camera.position[2]/i.bH(1,this.center.lat),oe=[F*te.x,F*te.y,se*(Z?1:ee)],he=G||_,_e=this.cameraToCenterDistance/t.tileSize*(t.roundZoom?1:.502),pe=this.isLODDisabled(!0)?s:0;let Me;if(this._elevation&&t.isTerrainDEM)Me=1e4*this._elevation.exaggeration();else if(this._elevation){const Ge=this._elevation.getMinMaxForVisibleTiles();Me=Ge?Ge.max:this._centerAltitude}else Me=this._centerAltitude;const xe=t.isTerrainDEM?-Me:this._elevation?this._elevation.getMinElevationBelowMSL():0,we=this.projection.isReprojectedInTileSpace?i.bS(this):1,ve=Ge=>{const Je=new i.aa(Ge.x+25e-6,Ge.y,Ge.z),_t=new i.aa(Ge.x,Ge.y+25e-6,Ge.z),ct=Ge.toLngLat(),nt=Je.toLngLat(),Lt=_t.toLngLat(),bt=this.locationCoordinate(ct),zt=this.locationCoordinate(nt),Bt=this.locationCoordinate(Lt),oi=Math.hypot(zt.x-bt.x,zt.y-bt.y),$t=Math.hypot(Bt.x-bt.x,Bt.y-bt.y);return Math.sqrt(oi*$t)*we/25e-6},Ae=Ge=>{const lt=Me,Je=xe;return{aabb:i.bV(this,F,0,0,0,Ge,Je,lt,this.projection),zoom:0,x:0,y:0,minZ:Je,maxZ:lt,wrap:Ge,fullyVisible:!1}},Oe=[];let Xe=[];const He=s,ke=t.reparseOverscaled?h:s,Ne=(se-this._centerAltitude)*ee,st=Ge=>{if(!this._elevation||!Ge.tileID||!T)return;const lt=this._elevation.getMinMaxForTile(Ge.tileID),Je=Ge.aabb;lt?(Je.min[2]=lt.min,Je.max[2]=lt.max,Je.center[2]=(Je.min[2]+Je.max[2])/2):(Ge.shouldSplit=xt(Ge),Ge.shouldSplit||(Je.min[2]=Je.max[2]=Je.center[2]=this._centerAltitude))},ut=(Ge,lt)=>{if(.707*lt<Ge)return 1;const Je=lt/Ge;return Je/(1.4144271570014144+(Math.pow(1.1,Je-1.4144271570014144+1)-1)/(1.1-1)-1)},xt=Ge=>{if(Ge.zoom<pe)return!0;if(Ge.zoom===He)return!1;if(Ge.shouldSplit!=null)return Ge.shouldSplit;const lt=Ge.aabb.distanceX(oe),Je=Ge.aabb.distanceY(oe);let _t=Ne,ct=1;if(G){_t=Ge.aabb.distanceZ(oe);const $t=Math.pow(2,Ge.zoom),Xt=i.aS((Ge.y+1)/$t),ai=i.aS(Ge.y/$t),zi=Math.min(Math.max(R,Xt),ai),wi=i.c9(zi)/i.c9(R);if(ct=zi===R?1/Math.max(1,this._mercatorScaleRatio-.3):Math.min(1,wi/this._mercatorScaleRatio),this.zoom<=i.c6&&Ge.zoom===He-1&&wi>=.9)return!0}else if(y&&(_t=Ge.aabb.distanceZ(oe)*ee),this.projection.isReprojectedInTileSpace&&h<=5){const $t=Math.pow(2,Ge.zoom),Xt=ve(new i.aa((Ge.x+.5)/$t,(Ge.y+.5)/$t));ct=Xt>.85?1:Xt}if(!T){const $t=Math.sqrt(lt*lt+Je*Je+_t*_t);let Xt=(1<<He-Ge.zoom)*_e*ct;return Xt*=ut(Math.max(_t,Ne),$t),$t<Xt}let nt=Number.MAX_VALUE,Lt=0;const bt=Ge.aabb.getCorners(),zt=[];for(const $t of bt){i.ab.vec3.sub(zt,$t,oe),G||(y?zt[2]*=ee:zt[2]=Ne);const Xt=i.ab.vec3.dot(zt,this._camera.forward());Xt<nt&&(nt=Xt,Lt=Math.abs(zt[2]))}let Bt=(1<<He-Ge.zoom)*_e*ct;if(Bt*=ut(Math.max(Lt,Ne),nt),nt<Bt)return!0;const oi=Ge.aabb.closestPoint(N);return oi[0]===N[0]&&oi[1]===N[1]};if(this.renderWorldCopies)for(let Ge=1;Ge<=3;Ge++)Oe.push(Ae(-Ge)),Oe.push(Ae(Ge));for(Oe.push(Ae(0));Oe.length>0;){const Ge=Oe.pop(),lt=Ge.x,Je=Ge.y;let _t=Ge.fullyVisible;const ct=()=>this.projection.name==="globe"&&(Ge.y===0||Ge.y===(1<<Ge.zoom)-1);if(!_t){let nt=he?Ge.aabb.intersects(W):Ge.aabb.intersectsFlat(W);if(nt===0&&ct()){const Lt=new i.bT(Ge.zoom,lt,Je);nt=i.bU(this,F,Lt,!0).intersects(W)}if(nt===0)continue;_t=nt===2}if(Ge.zoom!==He&&xt(Ge))for(let nt=0;nt<4;nt++){const Lt=(lt<<1)+nt%2,bt=(Je<<1)+(nt>>1),zt={aabb:T?Ge.aabb.quadrant(nt):i.bV(this,F,Ge.zoom+1,Lt,bt,Ge.wrap,Ge.minZ,Ge.maxZ,this.projection),zoom:Ge.zoom+1,x:Lt,y:bt,wrap:Ge.wrap,fullyVisible:_t,tileID:void 0,shouldSplit:void 0,minZ:Ge.minZ,maxZ:Ge.maxZ};y&&!G&&(zt.tileID=new i.aG(Ge.zoom+1===He?ke:Ge.zoom+1,Ge.wrap,Ge.zoom+1,Lt,bt),st(zt)),Oe.push(zt)}else{const nt=Ge.zoom===He?ke:Ge.zoom;if(t.minzoom&&t.minzoom>nt)continue;let Lt=0;if(!_t){let oi=he?Ge.aabb.intersectsPrecise(W):Ge.aabb.intersectsPreciseFlat(W);if(oi===0&&ct()){const $t=new i.bT(Ge.zoom,lt,Je);oi=i.bU(this,F,$t,!0).intersectsPrecise(W)}if(oi===0)continue;if(t.calculateQuadrantVisibility)if(W.containsPoint(Ge.aabb.center))Lt=15;else for(let $t=0;$t<4;$t++)Ge.aabb.quadrant($t).intersects(W)!==0&&(Lt|=1<<$t)}const bt=N[0]-(.5+lt+(Ge.wrap<<Ge.zoom))*(1<<s-Ge.zoom),zt=N[1]-.5-Je,Bt=Ge.tileID?Ge.tileID:new i.aG(nt,Ge.wrap,Ge.zoom,lt,Je);t.calculateQuadrantVisibility&&(Bt.visibleQuadrants=Lt),Xe.push({tileID:Bt,distanceSq:bt*bt+zt*zt})}}if(this.fogCullDistSq){const Ge=this.fogCullDistSq,lt=this.horizonLineFromTop();Xe=Xe.filter(Je=>{const _t=[0,0,0,1],ct=[i.ag,i.ag,0,1],nt=this.calculateFogTileMatrix(Je.tileID.toUnwrapped());i.ab.vec4.transformMat4(_t,_t,nt),i.ab.vec4.transformMat4(ct,ct,nt);const Lt=i.ab.vec4.min([],_t,ct),bt=i.ab.vec4.max([],_t,ct),zt=i.bW(Lt,bt);if(zt===0)return!0;let Bt=!1;const oi=this._elevation;if(oi&&zt>Ge&<!==0){const $t=this.calculateProjMatrix(Je.tileID.toUnwrapped());let Xt;t.isTerrainDEM||(Xt=oi.getMinMaxForTile(Je.tileID)),Xt||(Xt={min:xe,max:Me});const ai=i.c7(this.rotation),zi=[ai[0]*i.ag,ai[1]*i.ag,Xt.max];i.ab.vec3.transformMat4(zi,zi,$t),Bt=(1-zi[1])*this.height*.5<lt}return zt<Ge||Bt})}return Xe.sort((Ge,lt)=>Ge.distanceSq-lt.distanceSq).map(Ge=>Ge.tileID)}resize(t,s){this.width=t,this.height=s,this.pixelsToGLUnits=[2/t,-2/s],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(t){return Math.pow(2,t)}scaleZoom(t){return Math.log(t)/Math.LN2}project(t){const s=i.aw(t.lat,-i.bX,i.bX),h=this.projection.project(t.lng,s);return new i.P(h.x*this.worldSize,h.y*this.worldSize)}unproject(t){return this.projection.unproject(t.x/this.worldSize,t.y/this.worldSize)}get point(){return this.project(this.center)}get pointMerc(){return this.point._div(this.worldSize)}get pixelsPerMeterRatio(){return this.pixelsPerMeter/i.bH(1,this.center.lat)/this.worldSize}setLocationAtPoint(t,s){let h,_;const y=this.centerPoint;if(this.projection.name==="globe"){const z=this.worldSize;h=(s.x-y.x)/z,_=(s.y-y.y)/z}else{const z=this.pointCoordinate(s),R=this.pointCoordinate(y);h=z.x-R.x,_=z.y-R.y}const T=this.locationCoordinate(t);this.setLocation(new i.aa(T.x-h,T.y-_))}setLocation(t){this.center=this.coordinateLocation(t),this.projection.wrap&&(this.center=this.center.wrap())}locationPoint(t){return this.projection.locationPoint(this,t)}locationPoint3D(t){return this.projection.locationPoint(this,t,!0)}pointLocation(t){return this.coordinateLocation(this.pointCoordinate(t))}pointLocation3D(t){return this.coordinateLocation(this.pointCoordinate3D(t))}locationCoordinate(t,s){const h=s?i.bH(s,t.lat):void 0,_=this.projection.project(t.lng,t.lat);return new i.aa(_.x,_.y,h)}coordinateLocation(t){return this.projection.unproject(t.x,t.y)}pointRayIntersection(t,s){const h=s??this._centerAltitude,_=[t.x,t.y,0,1],y=[t.x,t.y,1,1];i.ab.vec4.transformMat4(_,_,this.pixelMatrixInverse),i.ab.vec4.transformMat4(y,y,this.pixelMatrixInverse);const T=y[3];i.ab.vec4.scale(_,_,1/_[3]),i.ab.vec4.scale(y,y,1/T);const z=_[2],R=y[2];return{p0:_,p1:y,t:z===R?0:(h-z)/(R-z)}}screenPointToMercatorRay(t){const s=[t.x,t.y,0,1],h=[t.x,t.y,1,1];return i.ab.vec4.transformMat4(s,s,this.pixelMatrixInverse),i.ab.vec4.transformMat4(h,h,this.pixelMatrixInverse),i.ab.vec4.scale(s,s,1/s[3]),i.ab.vec4.scale(h,h,1/h[3]),s[2]=i.bH(s[2],this._center.lat)*this.worldSize,h[2]=i.bH(h[2],this._center.lat)*this.worldSize,i.ab.vec4.scale(s,s,1/this.worldSize),i.ab.vec4.scale(h,h,1/this.worldSize),new i.aq([s[0],s[1],s[2]],i.ab.vec3.normalize([],i.ab.vec3.sub([],h,s)))}rayIntersectionCoordinate(t){const{p0:s,p1:h,t:_}=t,y=i.bH(s[2],this._center.lat),T=i.bH(h[2],this._center.lat);return new i.aa(i.af(s[0],h[0],_)/this.worldSize,i.af(s[1],h[1],_)/this.worldSize,i.af(y,T,_))}pointCoordinate(t,s=this._centerAltitude){return this.projection.pointCoordinate(this,t.x,t.y,s)}pointCoordinate3D(t){if(!this.elevation)return this.pointCoordinate(t);let s=this.projection.pointCoordinate3D(this,t.x,t.y);if(s)return new i.aa(s[0],s[1],s[2]);let h=0,_=this.horizonLineFromTop();if(t.y>_)return this.pointCoordinate(t);const y=.02*_,T=t.clone();for(let z=0;z<10&&_-h>y;z++){T.y=i.af(h,_,.66);const R=this.projection.pointCoordinate3D(this,T.x,T.y);R?(_=T.y,s=R):h=T.y}return s?new i.aa(s[0],s[1],s[2]):this.pointCoordinate(t)}isPointAboveHorizon(t){return this.projection.isPointAboveHorizon(this,t)}isPointOnSurface(t){if(t.y<0||t.y>this.height||t.x<0||t.x>this.width)return!1;if(this.elevation||this.zoom>=i.bY)return!this.isPointAboveHorizon(t);const s=this.pointCoordinate(t);return s.y>=0&&s.y<=1}_coordinatePoint(t,s){const h=s&&this.elevation?this.elevation.getAtPointOrZero(t,this._centerAltitude):this._centerAltitude,_=[t.x*this.worldSize,t.y*this.worldSize,h+t.toAltitude(),1];return i.ab.vec4.transformMat4(_,_,this.pixelMatrix),_[3]>0?new i.P(_[0]/_[3],_[1]/_[3]):new i.P(Number.MAX_VALUE,Number.MAX_VALUE)}_getBoundsNonRectangular(){const{top:t,left:s}=this._edgeInsets,h=this.height-this._edgeInsets.bottom,_=this.width-this._edgeInsets.right,y=this.pointLocation3D(new i.P(s,t)),T=this.pointLocation3D(new i.P(_,t)),z=this.pointLocation3D(new i.P(_,h)),R=this.pointLocation3D(new i.P(s,h));let F=Math.min(y.lng,T.lng,z.lng,R.lng),N=Math.max(y.lng,T.lng,z.lng,R.lng),G=Math.min(y.lat,T.lat,z.lat,R.lat),Z=Math.max(y.lat,T.lat,z.lat,R.lat);const W=Math.pow(2,-this.zoom)/16*270,te=this.projection.name==="globe"?1:4,ee=(se,oe,he,_e,pe)=>{const Me=(se+he)/2,xe=(oe+_e)/2,we=new i.P(Me,xe),{lng:ve,lat:Ae}=this.pointLocation3D(we),Oe=Math.max(0,F-ve,G-Ae,ve-N,Ae-Z);F=Math.min(F,ve),N=Math.max(N,ve),G=Math.min(G,Ae),Z=Math.max(Z,Ae),(pe<te||Oe>W)&&(ee(se,oe,Me,xe,pe+1),ee(Me,xe,he,_e,pe+1))};if(ee(s,t,_,t,1),ee(_,t,_,h,1),ee(_,h,s,h,1),ee(s,h,s,t,1),this.projection.name==="globe"){const[se,oe]=i.bZ(this);se?(Z=90,N=180,F=-180):oe&&(G=-90,N=180,F=-180)}return new i.az(new i.bO(F,G),new i.bO(N,Z))}_getBoundsRectangular(t,s){const{top:h,left:_}=this._edgeInsets,y=this.height-this._edgeInsets.bottom,T=this.width-this._edgeInsets.right,z=new i.P(_,h),R=new i.P(T,h),F=new i.P(T,y),N=new i.P(_,y);let G=this.pointCoordinate(z,t),Z=this.pointCoordinate(R,t);const W=this.pointCoordinate(F,s),te=this.pointCoordinate(N,s),ee=(se,oe)=>(oe.y-se.y)/(oe.x-se.x);return G.y>1&&Z.y>=0?G=new i.aa((1-te.y)/ee(te,G)+te.x,1):G.y<0&&Z.y<=1&&(G=new i.aa(-te.y/ee(te,G)+te.x,0)),Z.y>1&&G.y>=0?Z=new i.aa((1-W.y)/ee(W,Z)+W.x,1):Z.y<0&&G.y<=1&&(Z=new i.aa(-W.y/ee(W,Z)+W.x,0)),new i.az().extend(this.coordinateLocation(G)).extend(this.coordinateLocation(Z)).extend(this.coordinateLocation(te)).extend(this.coordinateLocation(W))}_getBoundsRectangularTerrain(){const t=this.elevation;if(!t.visibleDemTiles.length||t.isUsingMockSource())return this._getBoundsRectangular(0,0);const s=t.visibleDemTiles.reduce((h,_)=>{if(_.dem){const y=_.dem.tree;h.min=Math.min(h.min,y.minimums[0]),h.max=Math.max(h.max,y.maximums[0])}return h},{min:Number.MAX_VALUE,max:0});return this._getBoundsRectangular(s.min*t.exaggeration(),s.max*t.exaggeration())}getBounds(){return this.projection.name==="mercator"||this.projection.name==="equirectangular"?this._terrainEnabled()?this._getBoundsRectangularTerrain():this._getBoundsRectangular(0,0):this._getBoundsNonRectangular()}horizonLineFromTop(t=!0){const s=this.height/2/Math.tan(this._fov/2)/Math.tan(Math.max(this._pitch,.1))-this.centerOffset.y,h=this.height/2-s*(1-this._horizonShift);return t?Math.max(0,h):h}getMaxBounds(){return this.maxBounds}setMaxBounds(t){this.maxBounds=t,this.minLat=-i.bX,this.maxLat=i.bX,this.minLng=-180,this.maxLng=180,t&&(this.minLat=t.getSouth(),this.maxLat=t.getNorth(),this.minLng=t.getWest(),this.maxLng=t.getEast(),this.maxLng<this.minLng&&(this.maxLng+=360)),this.worldMinX=i.at(this.minLng)*this.tileSize,this.worldMaxX=i.at(this.maxLng)*this.tileSize,this.worldMinY=i.aA(this.maxLat)*this.tileSize,this.worldMaxY=i.aA(this.minLat)*this.tileSize,this._constrain()}calculatePosMatrix(t,s){return this.projection.createTileMatrix(this,s,t)}calculateDistanceTileData(t){const s=t.key,h=this._distanceTileDataCache;if(h[s])return h[s];const _=t.canonical,y=1/this.height,T=this.cameraWorldSize,z=T/this.zoomScale(_.z),R=(_.x+Math.pow(2,_.z)*t.wrap)*z,F=_.y*z,N=this.point;N.x*=T/this.worldSize,N.y*=T/this.worldSize;const G=this.angle,Z=Math.sin(-G),W=-Math.cos(-G);return h[s]={bearing:[Z,W],center:[(N.x-R)*y,(N.y-F)*y],scale:z/i.ag*y},h[s]}calculateFogTileMatrix(t){const s=t.key,h=this._fogTileMatrixCache;if(h[s])return h[s];const _=this.projection.createTileMatrix(this,this.cameraWorldSizeForFog,t);return i.ab.mat4.multiply(_,this.worldToFogMatrix,_),h[s]=new Float32Array(_),h[s]}calculateProjMatrix(t,s=!1,h=!1){const _=t.key;let y;if(y=h?this._expandedProjMatrixCache:s?this._alignedProjMatrixCache:this._projMatrixCache,y[_])return y[_];const T=this.calculatePosMatrix(t,this.worldSize);let z;return z=this.projection.isReprojectedInTileSpace?this.mercatorMatrix:h?this.expandedFarZProjMatrix:s?this.alignedProjMatrix:this.projMatrix,i.ab.mat4.multiply(T,z,T),y[_]=new Float32Array(T),y[_]}calculatePixelsToTileUnitsMatrix(t){const s=t.tileID.key,h=this._pixelsToTileUnitsCache;if(h[s])return h[s];const _=i.b_(t,this);return h[s]=_,h[s]}customLayerMatrix(){return this.mercatorMatrix.slice()}globeToMercatorMatrix(){if(this.projection.name==="globe"){const t=1/this.worldSize,s=i.ab.mat4.fromScaling([],[t,t,t]);return i.ab.mat4.multiply(s,s,this.globeMatrix),s}}recenterOnTerrain(){if(!this._elevation||this.projection.name==="globe")return;const t=this._elevation;this._updateCameraState();const s=i.bH(1,this._center.lat)*this.worldSize,h=this._computeCameraPosition(s),_=this._camera.forward(),y=i.bH(1,this._center.lat);h[2]/=y,_[2]/=y,i.ab.vec3.normalize(_,_);const T=t.raycast(h,_,t.exaggeration());if(T){const z=i.ab.vec3.scaleAndAdd([],h,_,T),R=new i.aa(z[0],z[1],i.bH(z[2],i.aS(z[1]))),F=(R.z+i.ab.vec3.length([R.x-h[0],R.y-h[1],R.z-h[2]*y]))*this._pixelsPerMercatorPixel;this._seaLevelZoom=this._zoomFromMercatorZ(F),this._centerAltitude=R.toAltitude(),this._center=this.coordinateLocation(R),this._updateZoomFromElevation(),this._constrain(),this._calcMatrices()}}_constrainCamera(t=!1){if(!this._elevation)return;const s=this._elevation,h=i.bH(1,this._center.lat)*this.worldSize,_=this._computeCameraPosition(h),y=s.getAtPointOrZero(new i.aa(..._)),T=this.pixelsPerMeter/this.worldSize*y,z=this._minimumHeightOverTerrain(),R=_[2]-T;if(R<=z)if(R<0||t){const F=this.locationCoordinate(this._center,this._centerAltitude),N=[_[0],_[1],F.z-_[2]],G=i.ab.vec3.length(N);N[2]-=(z-R)/this._pixelsPerMercatorPixel;const Z=i.ab.vec3.length(N);if(Z===0)return;i.ab.vec3.scale(N,N,G/Z*this._pixelsPerMercatorPixel),this._camera.position=[_[0],_[1],F.z*this._pixelsPerMercatorPixel-N[2]],this._updateStateFromCamera()}else this._isCameraConstrained=!0}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;const t=this.projection.name==="globe"||this.mercatorFromTransition;if(this.projection.isReprojectedInTileSpace||t){const Z=this.center;return Z.lat=i.aw(Z.lat,this.minLat,this.maxLat),(this.maxBounds||!this.renderWorldCopies&&!t)&&(Z.lng=i.aw(Z.lng,this.minLng,this.maxLng)),this.center=Z,void(this._constraining=!1)}const s=this._unmodified,{x:h,y:_}=this.point;let y=0,T=h,z=_;const R=this.width/2,F=this.height/2,N=this.worldMinY*this.scale,G=this.worldMaxY*this.scale;if(_-F<N&&(z=N+F),_+F>G&&(z=G-F),G-N<this.height&&(y=Math.max(y,this.height/(G-N)),z=(G+N)/2),this.maxBounds||!this._renderWorldCopies||!this.projection.wrap){const Z=this.worldMinX*this.scale,W=this.worldMaxX*this.scale,te=this.worldSize/2-(Z+W)/2;T=(h+te+this.worldSize)%this.worldSize-te,T-R<Z&&(T=Z+R),T+R>W&&(T=W-R),W-Z<this.width&&(y=Math.max(y,this.width/(W-Z)),T=(W+Z)/2)}T===h&&z===_||(this.center=this.unproject(new i.P(T,z))),y&&(this.zoom+=this.scaleZoom(y)),this._constrainCamera(),this._unmodified=s,this._constraining=!1}_minZoomForBounds(){let t=Math.max(0,this.scaleZoom(this.height/(this.worldMaxY-this.worldMinY)));return this.maxBounds&&(t=Math.max(t,this.scaleZoom(this.width/(this.worldMaxX-this.worldMinX)))),t}_maxCameraBoundsDistance(){return this._mercatorZfromZoom(this._minZoomForBounds())}_calcMatrices(){if(!this.height)return;const t=this.centerOffset,s=this.projection.name==="globe",h=this.pixelsPerMeter;this.projection.name==="globe"&&(this._mercatorScaleRatio=i.bH(1,this.center.lat)/i.bH(1,i.c8));const _=i.b$(this.projection,this.zoom,this.width,this.height,1024);this._pixelsPerMercatorPixel=this.projection.pixelSpaceConversion(this.center.lat,this.worldSize,_),this.cameraToCenterDistance=.5/Math.tan(.5*this._fov)*this.height*this._pixelsPerMercatorPixel,this._updateCameraState(),this._farZ=this.projection.farthestPixelDistance(this),this._nearZ=this.height/50;const y=this.projection.zAxisUnit==="meters"?h:1,T=this._camera.getWorldToCamera(this.worldSize,y);let z;const R=this._camera.getCameraToClipPerspective(this._fov,this.width/this.height,this._nearZ,this._farZ);if(R[8]=2*-t.x/this.width,R[9]=2*t.y/this.height,this.isOrthographic){let Ae=.5*this.height/Math.tan(this._fov/2)*1*Math.tan(.5*this._fov),Oe=Ae*this.aspect,Xe=-Oe,He=-Ae;Oe-=t.x,Xe-=t.x,Ae+=t.y,He+=t.y,z=this._camera.getCameraToClipOrthographic(Xe,Oe,He,Ae,this._nearZ,this._farZ),((ke,Ne,st,ut)=>{for(let xt=0;xt<16;xt++)ke[xt]=sc(Ne[xt],st[xt],ut)})(z,z,R,Tt(this.pitch>=15?1:this.pitch/15))}else z=R;const F=i.ab.mat4.mul([],R,T);let N=i.ab.mat4.mul([],z,T);if(this.projection.isReprojectedInTileSpace){const Ae=this.locationCoordinate(this.center),Oe=i.ab.mat4.identity([]);i.ab.mat4.translate(Oe,Oe,[Ae.x*this.worldSize,Ae.y*this.worldSize,0]),i.ab.mat4.multiply(Oe,Oe,i.c0(this)),i.ab.mat4.translate(Oe,Oe,[-Ae.x*this.worldSize,-Ae.y*this.worldSize,0]),i.ab.mat4.multiply(N,N,Oe),i.ab.mat4.multiply(F,F,Oe),this.inverseAdjustmentMatrix=i.c1(this)}else this.inverseAdjustmentMatrix=[1,0,0,1];if(this.mercatorMatrix=i.ab.mat4.scale([],N,[this.worldSize,this.worldSize,this.worldSize/y,1]),this.projMatrix=N,this.invProjMatrix=i.ab.mat4.invert(new Float64Array(16),this.projMatrix),s){const Ae=this._camera.getCameraToClipPerspective(this._fov,this.width/this.height,this._nearZ,1/0);Ae[8]=2*-t.x/this.width,Ae[9]=2*t.y/this.height,this.expandedFarZProjMatrix=i.ab.mat4.mul([],Ae,T)}else this.expandedFarZProjMatrix=this.projMatrix;const G=i.ab.mat4.invert([],z);this.frustumCorners=i.c2.fromInvProjectionMatrix(G,this.horizonLineFromTop(),this.height),this.cameraFrustum=i.bR.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,0,!s);const Z=new Float32Array(16);i.ab.mat4.identity(Z),i.ab.mat4.scale(Z,Z,[1,-1,1]),i.ab.mat4.rotateX(Z,Z,this._pitch),i.ab.mat4.rotateZ(Z,Z,this.angle);const W=i.ab.mat4.perspective(new Float32Array(16),this._fov,this.width/this.height,this._nearZ,this._farZ);this.starsProjMatrix=i.ab.mat4.clone(W);const te=(Math.PI/2-this._pitch)*(this.height/this._fov)*this._horizonShift;W[8]=2*-t.x/this.width,W[9]=2*(t.y+te)/this.height,this.skyboxMatrix=i.ab.mat4.multiply(Z,W,Z);const ee=this.point,se=ee.x,oe=ee.y,he=this.width%2/2,_e=this.height%2/2,pe=Math.cos(this.angle),Me=Math.sin(this.angle),xe=se-Math.round(se)+pe*he+Me*_e,we=oe-Math.round(oe)+pe*_e+Me*he,ve=new Float64Array(N);if(i.ab.mat4.translate(ve,ve,[xe>.5?xe-1:xe,we>.5?we-1:we,0]),this.alignedProjMatrix=ve,N=i.ab.mat4.create(),i.ab.mat4.scale(N,N,[this.width/2,-this.height/2,1]),i.ab.mat4.translate(N,N,[1,-1,0]),this.labelPlaneMatrix=N,N=i.ab.mat4.create(),i.ab.mat4.scale(N,N,[1,-1,1]),i.ab.mat4.translate(N,N,[-1,-1,0]),i.ab.mat4.scale(N,N,[2/this.width,2/this.height,1]),this.glCoordMatrix=N,this.pixelMatrix=i.ab.mat4.multiply(new Float64Array(16),this.labelPlaneMatrix,F),this._calcFogMatrices(),this._distanceTileDataCache={},N=i.ab.mat4.invert(new Float64Array(16),this.pixelMatrix),!N)throw new Error("failed to invert matrix");if(this.pixelMatrixInverse=N,this.projection.name==="globe"||this.mercatorFromTransition){this.globeMatrix=i.c3(this);const Ae=[this.globeMatrix[12],this.globeMatrix[13],this.globeMatrix[14]];this.globeCenterInViewSpace=i.ab.vec3.transformMat4(Ae,Ae,T),this.globeRadius=this.worldSize/2/Math.PI-1}else this.globeMatrix=N;this._projMatrixCache={},this._alignedProjMatrixCache={},this._pixelsToTileUnitsCache={},this._expandedProjMatrixCache={}}_calcFogMatrices(){this._fogTileMatrixCache={};const t=this.cameraWorldSizeForFog,s=this.cameraPixelsPerMeter,h=this._camera.position,_=1/this.height/this._pixelsPerMercatorPixel,y=[t,t,s];i.ab.vec3.scale(y,y,_),i.ab.vec3.scale(h,h,-1),i.ab.vec3.multiply(h,h,y);const T=i.ab.mat4.create();i.ab.mat4.translate(T,T,h),i.ab.mat4.scale(T,T,y),this.mercatorFogMatrix=T,this.worldToFogMatrix=this._camera.getWorldToCameraPosition(t,s,_)}_computeCameraPosition(t){const s=(t=t||this.pixelsPerMeter)/this.pixelsPerMeter,h=this._camera.forward(),_=this.point,y=this._mercatorZfromZoom(this._seaLevelZoom?this._seaLevelZoom:this._zoom)*s-t/this.worldSize*this._centerAltitude;return[_.x/this.worldSize-h[0]*y,_.y/this.worldSize-h[1]*y,t/this.worldSize*this._centerAltitude-h[2]*y]}_updateCameraState(){this.height&&(this._camera.setPitchBearing(this._pitch,this.angle),this._camera.position=this._computeCameraPosition())}_translateCameraConstrained(t){const s=this._maxCameraBoundsDistance()*Math.cos(this._pitch),h=this._camera.position[2],_=t[2];let y=1;this.projection.wrap&&(this.center=this.center.wrap()),_>0&&(y=Math.min((s-h)/_,1)),this._camera.position=i.ab.vec3.scaleAndAdd([],this._camera.position,t,y),this._updateStateFromCamera()}_updateStateFromCamera(){const t=this._camera.position,s=this._camera.forward(),{pitch:h,bearing:_}=this._camera.getPitchBearing(),y=i.bH(this._centerAltitude,this.center.lat)*this._pixelsPerMercatorPixel,T=this._mercatorZfromZoom(this._maxZoom)*Math.cos(i.ai(this._maxPitch)),z=Math.max((t[2]-y)/Math.cos(h),T),R=this._zoomFromMercatorZ(z);i.ab.vec3.scaleAndAdd(t,t,s,z),this._pitch=i.aw(h,i.ai(this.minPitch),i.ai(this.maxPitch)),this.angle=i.bF(_,-Math.PI,Math.PI),this._setZoom(i.aw(R,this._minZoom,this._maxZoom)),this._updateSeaLevelZoom(),this._center=this.coordinateLocation(new i.aa(t[0],t[1],t[2])),this._unmodified=!1,this._constrain(),this._calcMatrices()}_worldSizeFromZoom(t){return Math.pow(2,t)*this.tileSize}_mercatorZfromZoom(t){return this.cameraToCenterDistance/this._worldSizeFromZoom(t)}_minimumHeightOverTerrain(){const t=Math.min(this._seaLevelZoom!=null?this._seaLevelZoom:this._zoom,this._maxZoom)+4;return this._mercatorZfromZoom(t)}_zoomFromMercatorZ(t){return this.scaleZoom(this.cameraToCenterDistance/(t*this.tileSize))}zoomFromMercatorZAdjusted(t){let s=0,h=i.bY,_=0,y=1/0;for(;h-s>1e-6&&h>s;){const T=s+.5*(h-s),z=this.tileSize*Math.pow(2,T),R=this.getCameraToCenterDistance(this.projection,T,z),F=this.scaleZoom(R/(t*this.tileSize)),N=Math.abs(T-F);N<y&&(y=N,_=T),T<F?s=T:h=T}return _}_terrainEnabled(){return!(!this._elevation||!this.projection.supportsTerrain&&(i.w("Terrain is not yet supported with alternate projections. Use mercator or globe to enable terrain."),1))}anyCornerOffEdge(t,s){const h=Math.min(t.x,s.x),_=Math.max(t.x,s.x),y=Math.min(t.y,s.y),T=Math.max(t.y,s.y);if(y<this.horizonLineFromTop(!1))return!0;if(this.projection.name!=="mercator")return!1;const z=[new i.P(h,y),new i.P(_,T),new i.P(h,T),new i.P(_,y)],R=this.renderWorldCopies?-3:0,F=this.renderWorldCopies?4:1;for(const N of z){const G=this.pointRayIntersection(N);if(G.t<0)return!0;const Z=this.rayIntersectionCoordinate(G);if(Z.x<R||Z.y<0||Z.x>F||Z.y>1)return!0}return!1}isHorizonVisible(){return this.pitch+i.c4(this.fovAboveCenter)>88||this.anyCornerOffEdge(new i.P(0,0),new i.P(this.width,this.height))}zoomDeltaToMovement(t,s){const h=i.ab.vec3.length(i.ab.vec3.sub([],this._camera.position,t)),_=this._zoomFromMercatorZ(h)+s;return h-this._mercatorZfromZoom(_)}getCameraPoint(){if(this.projection.name==="globe"){const t=function([s,h,_],y){const T=[s,h,_,1];i.ab.vec4.transformMat4(T,T,y);const z=T[3]=Math.max(T[3],1e-6);return T[0]/=z,T[1]/=z,T[2]/=z,T}([this.globeMatrix[12],this.globeMatrix[13],this.globeMatrix[14]],this.pixelMatrix);return new i.P(t[0],t[1])}{const t=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new i.P(0,t))}}getCameraToCenterDistance(t,s=this.zoom,h=this.worldSize){const _=i.b$(t,s,this.width,this.height,1024),y=t.pixelSpaceConversion(this.center.lat,h,_);let T=.5/Math.tan(.5*this._fov)*this.height*y;return this.isOrthographic&&(T=sc(1,T,Tt(this.pitch>=15?1:this.pitch/15))),T}getWorldToCameraMatrix(){const t=this._camera.getWorldToCamera(this.worldSize,this.projection.zAxisUnit==="meters"?this.pixelsPerMeter:1);return this.projection.name==="globe"&&i.ab.mat4.multiply(t,t,this.globeMatrix),t}getFrustum(t){return i.bR.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,t,this.projection.zAxisUnit==="meters")}}const Eo=(c,t)=>{if(t>0&&c.terrain&&i.w("Cutoff is currently disabled on terrain"),t<=0||c.terrain)return{shouldRenderCutoff:!1,uniformValues:{u_cutoff_params:[0,0,0,1]}};const s=c.transform,h=Math.max(Math.abs(s._zoom-(c.minCutoffZoom-1)),1),_=s.isLODDisabled(!1)?i.ac(60,45,s.pitch):i.ac(30,15,s.pitch),y=s._farZ-s._nearZ,T=t*s.height,z=((1-(R=_))*s.cameraToCenterDistance+R*(s._farZ+T))*h;var R;return{shouldRenderCutoff:_<1,uniformValues:{u_cutoff_params:[s._nearZ,s._farZ,(z-s._nearZ)/y,(z-T-s._nearZ)/y]}}},ys={cascadeCount:2,normalOffset:3,shadowMapResolution:2048};class Qh{constructor(t,s){this.aabb=t,this.lastCascade=s}}class Or{add(t,s){const h=this.receivers[t.key];h!==void 0?(h.aabb.min[0]=Math.min(h.aabb.min[0],s.min[0]),h.aabb.min[1]=Math.min(h.aabb.min[1],s.min[1]),h.aabb.min[2]=Math.min(h.aabb.min[2],s.min[2]),h.aabb.max[0]=Math.max(h.aabb.max[0],s.max[0]),h.aabb.max[1]=Math.max(h.aabb.max[1],s.max[1]),h.aabb.max[2]=Math.max(h.aabb.max[2],s.max[2])):this.receivers[t.key]=new Qh(s,null)}clear(){this.receivers={}}get(t){return this.receivers[t.key]}computeRequiredCascades(t,s,h){const _=i.cd.fromPoints(t.points);let y=0;for(const T in this.receivers){const z=this.receivers[T];if(!z||!_.intersectsAabb(z.aabb))continue;z.aabb.min=_.closestPoint(z.aabb.min),z.aabb.max=_.closestPoint(z.aabb.max);const R=z.aabb.getCorners();for(let F=0;F<h.length;F++){let N=!0;for(const G of R){const Z=[G[0]*s,G[1]*s,G[2]];if(i.ab.vec3.transformMat4(Z,Z,h[F].matrix),Z[0]<-1||Z[0]>1||Z[1]<-1||Z[1]>1){N=!1;break}}if(z.lastCascade=F,y=Math.max(y,F),N)break}}return y+1}}class Po{constructor(t){this.painter=t,this._enabled=!1,this._shadowLayerCount=0,this._numCascadesToRender=0,this._cascades=[],this._groundShadowTiles=[],this._receivers=new Or,this._depthMode=new Wt(t.context.gl.LEQUAL,Wt.ReadWrite,[0,1]),this._uniformValues={u_light_matrix_0:new Float32Array(16),u_light_matrix_1:new Float32Array(16),u_shadow_intensity:0,u_fade_range:[0,0],u_shadow_normal_offset:[1,1,1],u_shadow_texel_size:1,u_shadow_map_resolution:1,u_shadow_direction:[0,0,1],u_shadow_bias:[36e-5,.0012,.012],u_shadowmap_0:0,u_shadowmap_1:0},this._forceDisable=!1,this.useNormalOffset=!1,t.tp.registerParameter(this,["Shadows"],"_forceDisable",{label:"forceDisable"},()=>{this.painter.style.map.triggerRepaint()}),t.tp.registerParameter(ys,["Shadows"],"cascadeCount",{min:1,max:2,step:1}),t.tp.registerParameter(ys,["Shadows"],"normalOffset",{min:0,max:10,step:.05}),t.tp.registerParameter(ys,["Shadows"],"shadowMapResolution",{min:32,max:2048,step:32}),t.tp.registerBinding(this,["Shadows"],"_numCascadesToRender",{readonly:!0,label:"numCascadesToRender"})}destroy(){for(const t of this._cascades)t.texture.destroy(),t.framebuffer.destroy();this._cascades=[]}updateShadowParameters(t,s){const h=this.painter;if(this._enabled=!1,this._shadowLayerCount=0,this._receivers.clear(),!s||!s.properties)return;const _=s.properties.get("shadow-intensity");if(!s.shadowsEnabled()||_<=0||(this._shadowLayerCount=h.style.order.reduce((te,ee)=>{const se=h.style._mergedLayers[ee];return te+(se.hasShadowPass()&&!se.isHidden(t.zoom)?1:0)},0),this._enabled=this._shadowLayerCount>0,!this.enabled))return;const y=h.context,T=ys.shadowMapResolution,z=ys.shadowMapResolution;if(this._cascades.length===0||ys.shadowMapResolution!==this._cascades[0].texture.size[0]){this._cascades=[];for(let te=0;te<ys.cascadeCount;++te){const ee=h._shadowMapDebug,se=y.gl,oe=y.createFramebuffer(T,z,ee,"texture"),he=new i.T(y,{width:T,height:z,data:null},se.DEPTH_COMPONENT16);if(oe.depthAttachment.set(he.texture),ee){const _e=new i.T(y,{width:T,height:z,data:null},se.RGBA8);oe.colorAttachment.set(_e.texture)}this._cascades.push({framebuffer:oe,texture:he,matrix:[],far:0,boundingSphereRadius:0,frustum:new i.bR,scale:0})}}this.shadowDirection=Qo(s);let R=0;if(t.elevation){const te=t.elevation,ee=[1e4,-1e4];te.visibleDemTiles.filter(se=>se.dem).forEach(se=>{const oe=se.dem.tree;ee[0]=Math.min(ee[0],oe.minimums[0]),ee[1]=Math.max(ee[1],oe.maximums[0])}),ee[0]!==1e4&&(R=(ee[1]-ee[0])*te.exaggeration())}const F=1.5*t.cameraToCenterDistance,N=3*F,G=new Float64Array(16);for(let te=0;te<this._cascades.length;++te){const ee=this._cascades[te];let se=t.height/50,oe=1;ys.cascadeCount===1?oe=N:te===0?oe=F:(se=F,oe=N);const[he,_e]=Ao(t,this.shadowDirection,se,oe,ys.shadowMapResolution,R);ee.scale=t.scale,ee.matrix=he,ee.boundingSphereRadius=_e,i.ab.mat4.invert(G,ee.matrix),ee.frustum=i.bR.fromInvProjectionMatrix(G,1,0,!0),ee.far=oe}const Z=this._cascades.length-1;this._uniformValues.u_fade_range=[.75*this._cascades[Z].far,this._cascades[Z].far],this._uniformValues.u_shadow_intensity=_,this._uniformValues.u_shadow_direction=[this.shadowDirection[0],this.shadowDirection[1],this.shadowDirection[2]],this._uniformValues.u_shadow_texel_size=1/ys.shadowMapResolution,this._uniformValues.u_shadow_map_resolution=ys.shadowMapResolution,this._uniformValues.u_shadowmap_0=bs.ShadowMap0,this._uniformValues.u_shadowmap_1=bs.ShadowMap0+1,this._groundShadowTiles=h.transform.coveringTiles({tileSize:512,renderWorldCopies:!0});const W=h.transform.elevation;for(const te of this._groundShadowTiles){let ee={min:0,max:0};if(W){const se=W.getMinMaxForTile(te);se&&(ee=se)}this.addShadowReceiver(te.toUnwrapped(),ee.min,ee.max)}}get enabled(){return this._enabled&&!this._forceDisable}set enabled(t){this._enabled=t}drawShadowPass(t,s){if(!this.enabled)return;const h=this.painter,_=h.context;this._numCascadesToRender=this._receivers.computeRequiredCascades(h.transform.getFrustum(0),h.transform.worldSize,this._cascades),_.viewport.set([0,0,ys.shadowMapResolution,ys.shadowMapResolution]);for(let y=0;y<this._numCascadesToRender;++y){h.currentShadowCascade=y,_.bindFramebuffer.set(this._cascades[y].framebuffer.framebuffer),_.clear({color:i.aj.white,depth:1});for(const T of t.order){const z=t._mergedLayers[T];if(!z.hasShadowPass()||z.isHidden(h.transform.zoom))continue;const R=t.getLayerSourceCache(z),F=R?s[R.id]:void 0;(z.type==="model"||F&&F.length)&&h.renderLayer(h,R,z,F)}}h.currentShadowCascade=0}drawGroundShadows(){if(!this.enabled)return;const t=this.painter,s=t.style,h=t.context,_=s.directionalLight,y=s.ambientLight;if(!_||!y)return;const T=[],z=Eo(t,t.longestCutoffRange);z.shouldRenderCutoff&&T.push("RENDER_CUTOFF"),T.push("RENDER_SHADOWS","DEPTH_TEXTURE"),this.useNormalOffset&&T.push("NORMAL_OFFSET");const R=hr(s,_,y),F=new Wt(h.gl.LEQUAL,Wt.ReadOnly,t.depthRangeFor3D);for(const N of this._groundShadowTiles){const G=N.toUnwrapped(),Z=t.isTileAffectedByFog(N),W=t.getOrCreateProgram("groundShadow",{defines:T,overrideFog:Z});this.setupShadows(G,W),t.uploadCommonUniforms(h,W,G,null,z);const te={u_matrix:t.transform.calculateProjMatrix(G),u_ground_shadow_factor:R};W.draw(t,h.gl.TRIANGLES,F,ci.disabled,bi.multiply,ti.disabled,te,"ground_shadow",t.tileExtentBuffer,t.quadTriangleIndexBuffer,t.tileExtentSegments,{},t.transform.zoom,null,null)}}getShadowPassColorMode(){return this.painter._shadowMapDebug?bi.unblended:bi.disabled}getShadowPassDepthMode(){return this._depthMode}getShadowCastingLayerCount(){return this._shadowLayerCount}calculateShadowPassMatrixFromTile(t){const s=this.painter.transform,h=s.calculatePosMatrix(t,s.worldSize);return i.ab.mat4.multiply(h,this._cascades[this.painter.currentShadowCascade].matrix,h),Float32Array.from(h)}calculateShadowPassMatrixFromMatrix(t){return i.ab.mat4.multiply(t,this._cascades[this.painter.currentShadowCascade].matrix,t),Float32Array.from(t)}setupShadows(t,s,h,_=0){if(!this.enabled)return;const y=this.painter.transform,T=this.painter.context,z=T.gl,R=this._uniformValues,F=new Float64Array(16),N=y.calculatePosMatrix(t,y.worldSize);for(let G=0;G<this._cascades.length;G++)i.ab.mat4.multiply(F,this._cascades[G].matrix,N),R[G===0?"u_light_matrix_0":"u_light_matrix_1"]=Float32Array.from(F),T.activeTexture.set(z.TEXTURE0+bs.ShadowMap0+G),this._cascades[G].texture.bind(z.NEAREST,z.CLAMP_TO_EDGE);if(this.useNormalOffset=!!h,this.useNormalOffset){const G=i.cc(t.canonical),Z=2/y.tileSize*i.ag/ys.shadowMapResolution,W=Z*this._cascades[0].boundingSphereRadius,te=Z*this._cascades[this._cascades.length-1].boundingSphereRadius,ee=(h==="vector-tile"?1:3)/Math.pow(2,_-t.canonical.z-(1-y.zoom+Math.floor(y.zoom)));R.u_shadow_normal_offset=[G,W*ee,te*ee],R.u_shadow_bias=[6e-5,.0012,.012]}else R.u_shadow_bias=[36e-5,.0012,.012];s.setShadowUniformValues(T,R)}setupShadowsFromMatrix(t,s,h=!1){if(!this.enabled)return;const _=this.painter.context,y=_.gl,T=this._uniformValues,z=new Float64Array(16);for(let R=0;R<ys.cascadeCount;R++)i.ab.mat4.multiply(z,this._cascades[R].matrix,t),T[R===0?"u_light_matrix_0":"u_light_matrix_1"]=Float32Array.from(z),_.activeTexture.set(y.TEXTURE0+bs.ShadowMap0+R),this._cascades[R].texture.bind(y.NEAREST,y.CLAMP_TO_EDGE);if(this.useNormalOffset=h,h){const R=ys.normalOffset;T.u_shadow_normal_offset=[1,R,R],T.u_shadow_bias=[6e-5,.0012,.012]}else T.u_shadow_bias=[36e-5,.0012,.012];s.setShadowUniformValues(_,T)}getShadowUniformValues(){return this._uniformValues}getCurrentCascadeFrustum(){return this._cascades[this.painter.currentShadowCascade].frustum}computeSimplifiedTileShadowVolume(t,s,h,_){if(_[2]>=0)return{};const y=function(R,F,N){const G=N/(1<<R.canonical.z);return new i.cd([R.canonical.x*G+R.wrap*N,R.canonical.y*G+R.wrap*N,0],[(R.canonical.x+1)*G+R.wrap*N,(R.canonical.y+1)*G+R.wrap*N,F])}(t,s,h).getCorners(),T=s/-_[2];_[0]<0?(i.ab.vec3.add(y[0],y[0],[_[0]*T,0,0]),i.ab.vec3.add(y[3],y[3],[_[0]*T,0,0])):_[0]>0&&(i.ab.vec3.add(y[1],y[1],[_[0]*T,0,0]),i.ab.vec3.add(y[2],y[2],[_[0]*T,0,0])),_[1]<0?(i.ab.vec3.add(y[0],y[0],[0,_[1]*T,0]),i.ab.vec3.add(y[1],y[1],[0,_[1]*T,0])):_[1]>0&&(i.ab.vec3.add(y[2],y[2],[0,_[1]*T,0]),i.ab.vec3.add(y[3],y[3],[0,_[1]*T,0]));const z={};return z.vertices=y,z.planes=[Kr(y[1],y[0],y[4]),Kr(y[2],y[1],y[5]),Kr(y[3],y[2],y[6]),Kr(y[0],y[3],y[7])],z}addShadowReceiver(t,s,h){this._receivers.add(t,i.cd.fromTileIdAndHeight(t,s,h))}getMaxCascadeForTile(t){const s=this._receivers.get(t);return s&&s.lastCascade?s.lastCascade:0}}function Kr(c,t,s){const h=i.ab.vec3.sub([],s,t),_=i.ab.vec3.sub([],c,t),y=i.ab.vec3.cross([],h,_),T=i.ab.vec3.length(y);return T===0?[0,0,1,0]:(i.ab.vec3.scale(y,y,1/T),[y[0],y[1],y[2],-i.ab.vec3.dot(y,t)])}function Qo(c){const t=c.properties.get("direction"),s=i.cb(t.x,t.y,t.z);s[2]=i.aw(s[2],0,75);const h=i.ce([s[0],s[1],s[2]]);return i.ab.vec3.fromValues(h.x,h.y,h.z)}function hr(c,t,s){const h=t.properties.get("color-use-theme")==="none",_=t.properties.get("color"),y=t.properties.get("intensity"),T=t.properties.get("direction"),z=[T.x,T.y,T.z],R=s.properties.get("color-use-theme")==="none",F=s.properties.get("color"),N=s.properties.get("intensity"),G=Math.max(i.ab.vec3.dot([0,0,1],z),0),Z=[0,0,0];i.ab.vec3.scale(Z,F.toRenderColor(R?null:c.getLut(t.scope)).toArray01Linear().slice(0,3),N);const W=[0,0,0];return i.ab.vec3.scale(W,_.toRenderColor(h?null:c.getLut(s.scope)).toArray01Linear().slice(0,3),G*y),i.cf([Z[0]>0?Z[0]/(Z[0]+W[0]):0,Z[1]>0?Z[1]/(Z[1]+W[1]):0,Z[2]>0?Z[2]/(Z[2]+W[2]):0])}function Ao(c,t,s,h,_,y){const T=c.zoom,z=c.scale,R=c.worldSize,F=1/R,N=c.aspect,G=Math.sqrt(1+N*N)*Math.tan(.5*c.fovX),Z=G*G,W=h-s,te=h+s;let ee,se;Z>W/te?(ee=h,se=h*G):(ee=.5*te*(1+Z),se=.5*Math.sqrt(W*W+2*(h*h+s*s)*Z+te*te*Z*Z));const oe=c.projection.pixelsPerMeter(c.center.lat,R),he=c._camera.getCameraToWorldMercator(),_e=[0,0,-ee*F];i.ab.vec3.transformMat4(_e,_e,he);let pe=se*F;const Me=c._edgeInsets;if(!(Me.left===0&&Me.top===0&&Me.right===0&&Me.bottom===0||Me.left===Me.right&&Me.top===Me.bottom)){const _t=c._camera.getWorldToCamera(c.worldSize,c.projection.zAxisUnit==="meters"?oe:1),ct=c._camera.getCameraToClipPerspective(c._fov,c.width/c.height,s,h);ct[8]=2*-c.centerOffset.x/c.width,ct[9]=2*c.centerOffset.y/c.height;const nt=new Float64Array(16);i.ab.mat4.mul(nt,ct,_t);const Lt=new Float64Array(16);i.ab.mat4.invert(Lt,nt);const bt=i.bR.fromInvProjectionMatrix(Lt,R,T,!0);for(const zt of bt.points){const Bt=((xe=zt)[0]/=z,xe[1]/=z,xe[2]=i.bH(xe[2],c._center.lat),xe);pe=Math.max(pe,i.ab.vec3.len(i.ab.vec3.subtract([],_e,Bt)))}}var xe;pe*=_/(_-1);const we=Math.acos(t[2]),ve=Math.atan2(-t[0],-t[1]),Ae=new So;Ae.position=_e,Ae.setPitchBearing(we,ve);const Oe=Ae.getWorldToCamera(R,oe),Xe=pe*R,He=Math.min(c._mercatorZfromZoom(17)*R*-2,-2*Xe),ke=Ae.getCameraToClipOrthographic(-Xe,Xe,-Xe,Xe,He,(Xe+y*oe)/t[2]),Ne=new Float64Array(16);i.ab.mat4.multiply(Ne,ke,Oe);const st=i.ab.vec3.fromValues(Math.floor(1e6*_e[0])/1e6*R,Math.floor(1e6*_e[1])/1e6*R,0),ut=.5*_,xt=[0,0,0];i.ab.vec3.transformMat4(xt,st,Ne),i.ab.vec3.scale(xt,xt,ut);const Ge=[Math.floor(xt[0]),Math.floor(xt[1]),Math.floor(xt[2])],lt=[0,0,0];i.ab.vec3.sub(lt,xt,Ge),i.ab.vec3.scale(lt,lt,-1/ut);const Je=new Float64Array(16);return i.ab.mat4.identity(Je),i.ab.mat4.translate(Je,Je,lt),i.ab.mat4.multiply(Ne,Je,Ne),[Ne,Xe]}class eu extends i.E{constructor(t){super(),this.requestManager=t,this.models={"":{}},this.numModelsLoading={}}loadModel(t,s){return i.aM(this.requestManager.transformRequest(s,i.R.Model).url).then(h=>{if(!h)return;const _=i.aN(h),y=new i.aO(t,void 0,void 0,_);return y.computeBoundsAndApplyParent(),y}).catch(h=>{if(h&&h.status===404)return null;this.fire(new i.y(new Error(`Could not load model ${t} from ${s}: ${h.message}`)))})}load(t,s){this.models[s]||(this.models[s]={});const h=Object.keys(t);this.numModelsLoading[s]=(this.numModelsLoading[s]||0)+h.length;const _=[];for(const y of h)_.push(this.loadModel(y,t[y]));Promise.allSettled(_).then(y=>{for(let T=0;T<y.length;T++){const{status:z,value:R}=y[T];z==="fulfilled"&&R&&(this.models[s][h[T]]={model:R,numReferences:1})}this.numModelsLoading[s]-=h.length,this.fire(new i.z("data",{dataType:"style"}))}).catch(y=>{this.fire(new i.y(new Error(`Could not load models: ${y.message}`)))})}isLoaded(){for(const t in this.numModelsLoading)if(this.numModelsLoading[t]>0)return!1;return!0}hasModel(t,s){return!!this.getModel(t,s)}getModel(t,s){return this.models[s]||(this.models[s]={}),this.models[s][t]?this.models[s][t].model:void 0}addModel(t,s,h){this.models[h]||(this.models[h]={}),this.hasModel(t,h)&&this.models[h][t].numReferences++,this.load({[t]:this.requestManager.normalizeModelURL(s)},h)}addModels(t,s){this.models[s]||(this.models[s]={});const h={};for(const _ in t)this.models[s][_]={},h[_]=this.requestManager.normalizeModelURL(t[_]);this.load(h,s)}addModelsFromBucket(t,s){this.models[s]||(this.models[s]={});const h={};for(const _ of t)this.hasModel(_,s)?this.models[s][_].numReferences++:h[_]=this.requestManager.normalizeModelURL(_);this.load(h,s)}removeModel(t,s){if(this.models[s]&&this.models[s][t]&&(this.models[s][t].numReferences--,this.models[s][t].numReferences===0)){const h=this.models[s][t].model;delete this.models[s][t],h.destroy()}}listModels(t){return this.models[t]||(this.models[t]={}),Object.keys(this.models[t])}upload(t,s){this.models[s]||(this.models[s]={});for(const h in this.models[s])this.models[s][h].model&&this.models[s][h].model.upload(t.context)}}const th=new i.a5({data:new i.a6(i.a3.colorTheme.data)}),qa={"mbx-indoor-active-floorplans":{default:["literal",[]]},"mbx-indoor-underground":{default:["literal",!1]},"mbx-indoor-loaded-levels":{default:["literal",[]]},"mbx-indoor-level-height":{default:["literal",{}]},"mbx-indoor-level-base":{default:["literal",{}]},"mbx-indoor-level-selected":{default:["literal",{}]},"mbx-indoor-level-overlapped":{default:["literal",{}]}};function rc(c){return c=c||{},Object.assign(c,qa)}class Cl extends i.E{constructor(t){super(),this.mergeFloors=!0,this._scope=void 0,this._queryFeatureSetId=void 0,this._buildingEntryFeatureSetId=void 0,this._selectedFloorplan=void 0,this._indoorData=void 0,this._selectedLevel=void 0,this._floorplanStates={},i.aP(["_onLoad","_onMove","_checkFloorplanVisible"],this),this._map=t,this._checkFloorplanVisible(!0),this._map.on("load",this._onLoad),this._map.on("move",this._onMove)}destroy(){this._map.indoor.off("load",this._onLoad),this._map.indoor.off("move",this._onMove),this._map=void 0}_onLoad(){this._map.style.forEachFragmentStyle(t=>{t.stylesheet.indoor&&(this._queryFeatureSetId?this.fire(new i.y(new Error("Multiple indoor map styles detected, simultaneous usage is not allowed currently."))):(this._queryFeatureSetId=t.stylesheet.indoor.floorplanFeaturesetId,this._buildingEntryFeatureSetId=t.stylesheet.indoor.buildingFeaturesetId,this._scope=t.scope))}),this._queryFeatureSetId&&this._buildingEntryFeatureSetId&&this._map.addInteraction("mbx-indoor-buildingclick",{type:"click",target:{featuresetId:this._buildingEntryFeatureSetId,importId:this._scope},handler:t=>(t.feature&&t.feature.properties.floorplan&&this.selectFloorplan(t.feature.properties.floorplan),!0)}),this._checkFloorplanVisible(!0)}_onMove(){this._checkFloorplanVisible(!1)}_checkFloorplanVisible(t){if(!this._queryFeatureSetId||!this._map.isStyleLoaded()||this._map.transform.zoom<13)return;this._indoorData&&!function(T,z){const[R,F]=T,{center:N,radius:G}=z,[Z,W]=N,te=Math.abs(R-Z);return Math.sqrt((te>180?360-te:te)**2+(F-W)**2)<=G}([this._map.getCenter().lng,this._map.getCenter().lat],this._indoorData.circumCircle)&&(this._indoorData=void 0,this._selectedFloorplan=void 0,this._map.setConfigProperty(this._scope,"mbx-indoor-underground",!1),this._map.setConfigProperty(this._scope,"mbx-indoor-active-floorplans",["literal",[]]),this.fire(new i.z("floorplangone")));const s={target:{featuresetId:this._queryFeatureSetId,importId:this._scope}},h=new i.P(this._map.transform.width/2,this._map.transform.height/2),_=[new i.P(0,0),new i.P(this._map.transform.width,this._map.transform.height)],y=this._map.queryRenderedFeatures(t?_:h,s);y.length>0&&(this._selectedFloorplan&&y[0].properties.id===this._selectedFloorplan.properties.id||(this._selectedFloorplan=y[0],this._floorplanSelected(!1)))}_floorplanSelected(t){this._indoorData=JSON.parse(this._selectedFloorplan.properties["indoor-data"]),this._indoorData.id=this._selectedFloorplan.properties.id,this._indoorData.circumCircle=function(y){const[[T,z],[R,F]]=y,N=(R-T+360)%360,G=N>180?360-N:N;return{center:[(T+G/2+360)%360,(z+F)/2],radius:Math.sqrt(G**2+(F-z)**2)/2}}(this._indoorData.extent),this._floorplanStates[this._indoorData.id]||(this._floorplanStates[this._indoorData.id]={});const s=this._floorplanStates[this._indoorData.id].selectedBuilding,h=this._floorplanStates[this._indoorData.id].selectedLevel;let _;if(this._map.setConfigProperty(this._scope,"mbx-indoor-active-floorplans",this._indoorData.floorplanIDs),this._selectedLevel)for(const y of this._indoorData.levels)y.id===this._selectedLevel.id&&(_=y.id);if(this.fire(new i.z("floorplanselected",{buildings:this._indoorData.buildings,levels:this._indoorData.levels,selectedLevelId:_})),s){const y=this._indoorData.buildings.find(T=>T.id===s);this._buildingSelected(y,!1)}else this._indoorData.buildings.length>0&&this._buildingSelected(this._indoorData.buildings[0],!1);if(h){const y=this._indoorData.levels.find(T=>T.id===h);this._updateLevels(y,t)}else t&&this._indoorData["default-levels"].length>0&&this.selectLevel(this._indoorData["default-levels"][0])}_buildingSelected(t,s){s&&t&&t.extent&&this._map.fitBounds(t.extent,{pitch:this._map.getPitch(),bearing:this._map.getBearing()}),this._floorplanStates[this._indoorData.id].selectedBuilding=t?t.id:void 0;const h=this._indoorData.levels.filter(_=>t.levels.includes(_.id));this.fire(new i.z("buildingselected",{buildingId:t.id,levels:h}))}_levelSelected(t){if(t==="overview")this._updateLevels(void 0,!0);else{const s=this._indoorData.levels.find(h=>h.id===t);this._updateLevels(s,!0)}this.fire(new i.z("levelselected",{levelId:t==="overview"?void 0:t}))}_updateLevels(t,s){if(!t)return this._map.setConfigProperty(this._scope,"mbx-indoor-loaded-levels",["literal",[]]),this._map.setConfigProperty(this._scope,"mbx-indoor-underground",!1),this._floorplanStates[this._indoorData.id].selectedLevel=void 0,void(s&&this._indoorData.extent&&this._map.fitBounds(this._indoorData.extent,{pitch:this._map.getPitch(),bearing:this._map.getBearing()}));function h(F){const N=F.indexOf("/floor/");if(N===-1)return F;const G=N+7,Z=F.indexOf("/",G);return Z===-1?F.slice(G):F.slice(G,Z)}this._selectedLevel=t,this._floorplanStates[this._indoorData.id].selectedLevel=t?t.id:void 0;const _=[],y={},T={},z={},R={};for(const F of this._indoorData.levels)if(_.push(F.id),y[F.id]=F.height,T[F.id]=F.base,t){if(this.mergeFloors){const N=h(t.id),G=h(F.id);z[F.id]=G===N?"true":"false"}else z[F.id]=F.id===t.id?"true":"false";R[F.id]=F.base<t.base?"true":"false"}else R[F.id]=!0;if(this._map.setConfigProperty(this._scope,"mbx-indoor-loaded-levels",["literal",_]),this._map.setConfigProperty(this._scope,"mbx-indoor-level-height",["literal",y]),this._map.setConfigProperty(this._scope,"mbx-indoor-level-base",["literal",T]),this._map.setConfigProperty(this._scope,"mbx-indoor-level-selected",["literal",z]),this._map.setConfigProperty(this._scope,"mbx-indoor-level-overlapped",["literal",R]),t&&(this._map.setConfigProperty(this._scope,"mbx-indoor-underground",!!t.isUnderground),s&&t.extent)){const F=this._map.cameraForBounds(t.extent,{pitch:this._map.getPitch(),bearing:this._map.getBearing()}),N=this._map.getZoom(),G=F.zoom?Math.abs(N-F.zoom):0;this._map.fitBounds(t.extent,G>=1?{pitch:this._map.getPitch(),bearing:this._map.getBearing()}:{pitch:this._map.getPitch(),bearing:this._map.getBearing(),zoom:N})}}selectFloorplan(t){const s={target:{featuresetId:this._queryFeatureSetId,importId:this._scope}},h=[new i.P(0,0),new i.P(this._map.transform.width,this._map.transform.height)],_=this._map.queryRenderedFeatures(h,s);if(_.length>0){for(const y of _)if(JSON.parse(y.properties["indoor-data"]).floorplanIDs.includes(t)){this._selectedFloorplan=y,this._floorplanSelected(!0);break}}}selectBuilding(t){const s=this._indoorData.buildings.find(h=>h.id===t);this._buildingSelected(s,!0)}selectLevel(t){this._levelSelected(t)}}function ba(c){if(!c.metadata||!c.metadata.content_area)return;const t=i.q.devicePixelRatio,{left:s,top:h,width:_,height:y}=c.metadata.content_area,T=s*t,z=h*t;return[T,z,T+_*t,z+y*t]}function wa(c){if(c)return c.map(([t,s])=>[t*i.q.devicePixelRatio,s*i.q.devicePixelRatio])}const Co=(c,t)=>Pe(c,t&&t.filter(s=>s.identifier!=="source.canvas")),tu=i.ay(Oi,["addLayer","removeLayer","setLights","setPaintProperty","setLayoutProperty","setSlot","setFilter","addSource","removeSource","setLayerZoomRange","setLight","setTransition","setGeoJSONSourceData","setTerrain","setFog","setSnow","setRain","setProjection","setCamera","addImport","removeImport","updateImport"]),Dd=i.ay(Oi,["setCenter","setZoom","setBearing","setPitch"]),Wa=new Set(["background","sky","slot","custom"]),ih={version:8,layers:[],sources:{}},nh={duration:300,delay:0};class ur extends i.E{constructor(t,s={}){super(),this.map=t,this.scope=s.scope||"",this.globalId=null,this.fragments=[],this.importDepth=s.importDepth||0,this.importsCache=s.importsCache||new Map,this.resolvedImports=s.resolvedImports||new Set,this.transition=i.l({},nh),this._buildingIndex=new ec(this),this.crossTileSymbolIndex=new ic,this._mergedOrder=[],this._drapedFirstOrder=[],this._mergedLayers={},this._mergedSourceCaches={},this._mergedOtherSourceCaches={},this._mergedSymbolSourceCaches={},this._clipLayerPresent=!1,this._has3DLayers=!1,this._hasCircleLayers=!1,this._hasSymbolLayers=!1,this._changes=s.styleChanges||new Zr,this.dispatcher=s.dispatcher?s.dispatcher:new i.D(i.ci(),this),s.imageManager?this.imageManager=s.imageManager:(this.imageManager=new $s(this.map._spriteFormat),this.imageManager.setEventedParent(this)),this.imageManager.createScope(this.scope),this.glyphManager=s.glyphManager?s.glyphManager:new i.cj(t._requestManager,s.localFontFamily?i.ck.all:s.localIdeographFontFamily?i.ck.ideographs:i.ck.none,s.localFontFamily||s.localIdeographFontFamily),s.modelManager?this.modelManager=s.modelManager:(this.modelManager=new eu(t._requestManager),this.modelManager.setEventedParent(this)),this._layers={},this._sourceCaches={},this._otherSourceCaches={},this._symbolSourceCaches={},this._loaded=!1,this._precompileDone=!1,this._shouldPrecompile=!1,this._availableImages=[],this._order=[],this._markersNeedUpdate=!1,this.options=s.configOptions?s.configOptions:new Map,this._configDependentLayers=s.configDependentLayers?s.configDependentLayers:new Set,this._config=s.config,this._styleColorTheme={lut:null,lutLoading:!1,lutLoadingCorrelationID:0,colorTheme:null,colorThemeOverride:s.colorThemeOverride},this._styleColorThemeForScope={},this._initialConfig=s.initialConfig,this.dispatcher.broadcast("setReferrer",i.cl());const h=this;this._rtlTextPluginCallback=ur.registerForPluginStateChange(_=>{h.dispatcher.broadcast("syncRTLPluginState",{pluginStatus:_.pluginStatus,pluginURL:_.pluginURL},(y,T)=>{if(i.cm(y),T&&T.every(z=>z))for(const z in h._sourceCaches){const R=h._sourceCaches[z],F=R.getSource().type;F!=="vector"&&F!=="geojson"||R.reload()}})}),this.on("data",_=>{if(_.dataType!=="source"||_.sourceDataType!=="metadata")return;const y=this.getOwnSource(_.sourceId);if(y&&y.vectorLayerIds)for(const T in this._layers){const z=this._layers[T];z.source===y.id&&this._validateLayer(z)}})}load(t){return t?(typeof t=="string"?this.loadURL(t):this.loadJSON(t),this):this}_getGlobalId(t){if(!t)return null;if(typeof t=="string"){if(i.f(t))return t;const s=i.cn(t);if(!s.startsWith("http"))try{return new URL(s,location.href).toString()}catch{return s}return s}return`json://${i.co(JSON.stringify(t))}`}_diffStyle(t,s,h){this.globalId=this._getGlobalId(t);const _=(y,T)=>{try{T(null,this.setState(y,h))}catch(z){T(z,!1)}};if(typeof t=="string"){const y=this.map._requestManager.normalizeStyleURL(t),T=this.map._requestManager.transformRequest(y,i.R.Style);i.n(T,(z,R)=>{z?this.fire(new i.y(z)):R&&_(R,s)})}else typeof t=="object"&&_(t,s)}loadURL(t,s={}){this.fire(new i.z("dataloading",{dataType:"style"}));const h=typeof s.validate=="boolean"?s.validate:!i.f(t);this.globalId=this._getGlobalId(t),t=this.map._requestManager.normalizeStyleURL(t,s.accessToken),this.resolvedImports.add(t);const _=this.importsCache.get(t);if(_)return this._load(_,h);const y=this.map._requestManager.transformRequest(t,i.R.Style);this._request=i.n(y,(T,z)=>{if(this._request=null,T)this.fire(new i.y(T));else if(z)return this.importsCache.set(t,z),this._load(z,h)})}loadJSON(t,s={}){this.fire(new i.z("dataloading",{dataType:"style"})),this.globalId=this._getGlobalId(t),this._request=i.q.frame(()=>{this._request=null,this._load(t,s.validate!==!1)})}loadEmpty(){this.fire(new i.z("dataloading",{dataType:"style"})),this._load(ih,!1)}_loadImports(t,s,h){if(this.importDepth>=4)return i.w("Style doesn't support nesting deeper than 5"),Promise.resolve();const _=[];for(const y of t){const T=this._createFragmentStyle(y),z=new Promise(N=>{T.once("style.import.load",N),T.once("error",N)}).then(()=>this.mergeAll());if(_.push(z),this.resolvedImports.has(y.url)){T.loadEmpty();continue}const R=y.data||this.importsCache.get(y.url);R?(T.loadJSON(R,{validate:s}),this._isInternalStyle(R)&&(T.globalId=null)):y.url?T.loadURL(y.url,{validate:s}):T.loadEmpty();const F={style:T,id:y.id,config:y.config};if(h){const N=this.fragments.findIndex(({id:G})=>G===h);this.fragments=this.fragments.slice(0,N).concat(F).concat(this.fragments.slice(N))}else this.fragments.push(F)}return Promise.allSettled(_)}getImportGlobalIds(t=this,s=new Set){for(const h of t.fragments)h.style.globalId&&s.add(h.style.globalId),this.getImportGlobalIds(h.style,s);return[...s.values()]}_createFragmentStyle(t){const s=this.scope?i.aC(t.id,this.scope):t.id;let h;const _=this._initialConfig&&this._initialConfig[s];(t.config||_)&&(h=i.l({},t.config,_));const y=new ur(this.map,{scope:s,styleChanges:this._changes,importDepth:this.importDepth+1,importsCache:this.importsCache,resolvedImports:new Set(this.resolvedImports),dispatcher:this.dispatcher,imageManager:this.imageManager,glyphManager:this.glyphManager,modelManager:this.modelManager,config:h,configOptions:this.options,colorThemeOverride:t["color-theme"],configDependentLayers:this._configDependentLayers});return y.setEventedParent(this.map,{style:y}),y}_reloadImports(){this.mergeAll(),this._updateMapProjection(),this.updateConfigDependencies(),this.map._triggerCameraUpdate(this.camera),this.dispatcher.broadcast("setLayers",{layers:this._serializeLayers(this._order),scope:this.scope,options:this.options}),this._shouldPrecompile=this.map._precompilePrograms&&this.isRootStyle()}_isInternalStyle(t){return this.isRootStyle()&&(t.fragment||!!t.schema&&t.fragment!==!1)}_load(t,s){const h=t.indoor?rc(t.schema):t.schema;if(this._isInternalStyle(t)){const T=i.l({},ih,{imports:[{id:"basemap",data:t,url:""}]});return void this._load(T,s)}if(this.updateConfig(this._config,h),s&&Co(this,Zi(t)))return;this._loaded=!0,this.stylesheet=i.cp(t);const _=()=>{for(const F in t.sources)this.addSource(F,t.sources[F],{validate:!1,isInitialLoad:!0});t.sprite?this._loadIconset(t.sprite):(this.imageManager.setLoaded(!0,this.scope),this.dispatcher.broadcast("spriteLoaded",{scope:this.scope,isLoaded:!0})),this.glyphManager.setURL(t.glyphs,this.scope);const T=wl(this.stylesheet.layers);if(this._order=T.map(F=>F.id),this.stylesheet.light&&i.w("The `light` root property is deprecated, prefer using `lights` with `flat` light type instead."),this.stylesheet.lights)if(this.stylesheet.lights.length===1&&this.stylesheet.lights[0].type==="flat"){const F=this.stylesheet.lights[0];this.light=new Qe(F.properties,F.id)}else this.setLights(this.stylesheet.lights);this.light||(this.light=new Qe(this.stylesheet.light)),this._layers={};for(const F of T){const N=i.cu(F,this.scope,this._styleColorTheme.lut,this.options);N.configDependencies.size!==0&&this._configDependentLayers.add(N.fqid),N.setEventedParent(this,{layer:{id:N.id}}),this._layers[N.id]=N;const G=this.getOwnLayerSourceCache(N),Z=!!this.directionalLight&&this.directionalLight.shadowsEnabled();G&&N.canCastShadows()&&Z&&(G.castsShadows=!0)}this.stylesheet.featuresets&&this.setFeaturesetSelectors(this.stylesheet.featuresets),this.stylesheet.models&&this.modelManager.addModels(this.stylesheet.models,this.scope);const z=this.stylesheet.terrain;z&&(this.checkCanvasFingerprintNoise(),this.disableElevatedTerrain||this.terrainSetForDrapingOnly()||this._createTerrain(z,1)),this.stylesheet.fog&&this._createFog(this.stylesheet.fog),this.stylesheet.snow&&this._createSnow(this.stylesheet.snow),this.stylesheet.rain&&this._createRain(this.stylesheet.rain),this.stylesheet.transition&&this.setTransition(this.stylesheet.transition),this.fire(new i.z("data",{dataType:"style"}));const R=this.isRootStyle();t.imports?this._loadImports(t.imports,s).then(()=>{this._reloadImports(),this.fire(new i.z(R?"style.load":"style.import.load"))}):(this._reloadImports(),this.fire(new i.z(R?"style.load":"style.import.load")))};this._styleColorTheme.colorTheme=this.stylesheet["color-theme"];const y=this._styleColorTheme.colorThemeOverride?this._styleColorTheme.colorThemeOverride:this._styleColorTheme.colorTheme;if(y){const T=this._evaluateColorThemeData(y);this._loadColorTheme(T).then(()=>{_()}).catch(z=>{i.w(`Couldn't load color theme from the stylesheet: ${z}`),_()})}else this._styleColorTheme.lut=null,_()}isRootStyle(){return this.importDepth===0}mergeAll(){let t,s,h,_,y,T,z,R,F,N;const G={};this.terrain&&this.terrain.scope!==this.scope&&delete this.terrain,this.forEachFragmentStyle(Z=>{if(Z.stylesheet){if(Z.light!=null&&(t=Z.light),Z.stylesheet.lights)for(const W of Z.stylesheet.lights)W.type==="ambient"&&Z.ambientLight!=null&&(s=Z.ambientLight),W.type==="directional"&&Z.directionalLight!=null&&(h=Z.directionalLight);_=this._prioritizeTerrain(_,Z.terrain,Z.stylesheet.terrain),Z.stylesheet.fog&&Z.fog!=null&&(y=Z.fog),Z.stylesheet.snow&&Z.snow!=null&&(T=Z.snow),Z.stylesheet.rain&&Z.rain!=null&&(z=Z.rain),Z.stylesheet.camera!=null&&(N=Z.stylesheet.camera),Z.stylesheet.projection!=null&&(R=Z.stylesheet.projection),Z.stylesheet.transition!=null&&(F=Z.stylesheet.transition),G[Z.scope]=Z._styleColorTheme}}),this.light=t,this.ambientLight=s,this.directionalLight=h,this.fog=y,this.snow=T,this.rain=z,this._styleColorThemeForScope=G,_===null?delete this.terrain:this.terrain=_,this.camera=N||{"camera-projection":"perspective"},this.projection=R||{name:"mercator"},this.transition=i.l({},nh,F),this.mergeSources(),this.mergeLayers()}forEachFragmentStyle(t){const s=h=>{for(const _ of h.fragments)s(_.style);t(h)};s(this)}_prioritizeTerrain(t,s,h){const _=t&&t.drapeRenderMode===0;return h===null?s&&s.drapeRenderMode===0?s:_?t:null:s!=null&&(!t||_||s&&s.drapeRenderMode===1)?s:t}mergeTerrain(){let t;this.terrain&&this.terrain.scope!==this.scope&&delete this.terrain,this.forEachFragmentStyle(s=>{t=this._prioritizeTerrain(t,s.terrain,s.stylesheet.terrain)}),t===null?delete this.terrain:this.terrain=t}mergeProjection(){let t;this.forEachFragmentStyle(s=>{s.stylesheet.projection!=null&&(t=s.stylesheet.projection)}),this.projection=t||{name:"mercator"}}mergeSources(){const t={},s={},h={};this.forEachFragmentStyle(_=>{for(const y in _._sourceCaches){const T=i.aC(y,_.scope);t[T]=_._sourceCaches[y]}for(const y in _._otherSourceCaches){const T=i.aC(y,_.scope);s[T]=_._otherSourceCaches[y]}for(const y in _._symbolSourceCaches){const T=i.aC(y,_.scope);h[T]=_._symbolSourceCaches[y]}}),this._mergedSourceCaches=t,this._mergedOtherSourceCaches=s,this._mergedSymbolSourceCaches=h}mergeLayers(){const t={},s=[],h={};this._mergedSlots=[],this._has3DLayers=!1,this._hasCircleLayers=!1,this._hasSymbolLayers=!1,this.forEachFragmentStyle(y=>{for(const T of y._order){const z=y._layers[T];if(z.type==="slot"){const R=i.cq(T);if(t[R])continue;t[R]=[]}z.slot&&t[z.slot]?t[z.slot].push(z):s.push(z)}}),this._mergedOrder=[];const _=(y=[])=>{for(const T of y)if(T.type==="slot"){const z=i.cq(T.id);t[z]&&_(t[z]),this._mergedSlots.push(z)}else{const z=i.aC(T.id,T.scope);this._mergedOrder.push(z),h[z]=T,T.is3D()&&(this._has3DLayers=!0),T.type==="circle"&&(this._hasCircleLayers=!0),T.type==="symbol"&&(this._hasSymbolLayers=!0),T.type==="clip"&&(this._clipLayerPresent=!0)}};_(s),this._mergedOrder.sort((y,T)=>{const z=h[y],R=h[T];return z.hasInitialOcclusionOpacityProperties?R.is3D()?1:0:z.is3D()&&R.hasInitialOcclusionOpacityProperties?-1:0}),this._mergedLayers=h,this.updateDrapeFirstLayers(),this._buildingIndex.processLayersChanged()}terrainSetForDrapingOnly(){return!!this.terrain&&this.terrain.drapeRenderMode===0}getCamera(){return this.stylesheet.camera}setCamera(t){return this.stylesheet.camera=i.l({},this.stylesheet.camera,t),this.camera=this.stylesheet.camera,this}_evaluateColorThemeData(t){return t.data?function(s,h,_){const y=i.l({},h);for(const z of Object.keys(i.a3.colorTheme))y[z]===void 0&&(y[z]=i.a3.colorTheme[z].default);const T=new i.a4(th,s,new Map(_));return T.setTransitionOrValue(y,_),T.untransitioned().possiblyEvaluate(new i.a8(0))}(this.scope,t,this.options).get("data"):null}_loadColorTheme(t){this._styleColorTheme.lutLoading=!0,this._styleColorTheme.lutLoadingCorrelationID+=1;const s=this._styleColorTheme.lutLoadingCorrelationID;return new Promise((h,_)=>{const y="data:image/png;base64,";if(!t||t.length===0)return this._styleColorTheme.lut=null,this._styleColorTheme.lutLoading=!1,void h();let T=t;T.startsWith(y)||(T=y+T);const z="mapbox-reserved-lut",R=new Image;R.src=T,R.onerror=()=>{this._styleColorTheme.lutLoading=!1,_(new Error("Failed to load image data"))},R.onload=()=>{if(this._styleColorTheme.lutLoadingCorrelationID!==s)return void h();this._styleColorTheme.lutLoading=!1;const{width:F,height:N,data:G}=i.q.getImageData(R);if(N>32)return void _(new Error("The height of the image must be less than or equal to 32 pixels."));if(F!==N*N)return void _(new Error("The width of the image must be equal to the height squared."));this.getImage(z)&&this.removeImage(z),this.addImage(z,{data:new i.r({width:F,height:N},G),pixelRatio:1,sdf:!1,usvg:!1,version:0});const Z=this.imageManager.getImage(z,this.scope);Z?(this._styleColorTheme.lut={image:Z.data,data:t},h()):_(new Error("Missing LUT image."))}})}getLut(t){const s=this._styleColorThemeForScope[t];return s?s.lut:null}setProjection(t){t?this.stylesheet.projection=t:delete this.stylesheet.projection,this.mergeProjection(),this._updateMapProjection()}applyProjectionUpdate(){this._loaded&&(this.dispatcher.broadcast("setProjection",this.map.transform.projectionOptions),this.map.transform.projection.requiresDraping?(this.getTerrain()||this.stylesheet.terrain)&&!this.disableElevatedTerrain||this.setTerrainForDraping():this.terrainSetForDrapingOnly()&&this.setTerrain(null,0))}_updateMapProjection(){this.isRootStyle()&&(this.map._useExplicitProjection?this.applyProjectionUpdate():this.map._prioritizeAndUpdateProjection(null,this.projection))}_loadSprite(t){this._spriteRequest=function(s,h,_){let y,T,z;const R=i.q.devicePixelRatio>1?"@2x":"";let F=i.n(h.transformRequest(h.normalizeSpriteURL(s,R,".json"),i.R.SpriteJSON),(Z,W)=>{F=null,z||(z=Z,y=W,G())}),N=i.o(h.transformRequest(h.normalizeSpriteURL(s,R,".png"),i.R.SpriteImage),(Z,W)=>{N=null,z||(z=Z,T=W,G())});function G(){if(z)_(z);else if(y&&T){const Z=i.q.getImageData(T),W={};for(const te in y){const{width:ee,height:se,x:oe,y:he,sdf:_e,pixelRatio:pe,stretchX:Me,stretchY:xe,content:we}=y[te],ve=new i.r({width:ee,height:se});i.r.copy(Z,ve,{x:oe,y:he},{x:0,y:0},{width:ee,height:se},null),W[te]={data:ve,pixelRatio:pe,sdf:_e,stretchX:Me,stretchY:xe,content:we,usvg:!1}}_(null,W)}}return{cancel(){F&&(F.cancel(),F=null),N&&(N.cancel(),N=null)}}}(t,this.map._requestManager,(s,h)=>{if(this._spriteRequest=null,s)this.fire(new i.y(s));else if(h)for(const _ in h)this.imageManager.addImage(_,this.scope,h[_]);this.imageManager.setLoaded(!0,this.scope),this._availableImages=this.imageManager.listImages(this.scope),this.dispatcher.broadcast("setImages",{scope:this.scope,images:this._availableImages}),this.dispatcher.broadcast("spriteLoaded",{scope:this.scope,isLoaded:!0}),this.fire(new i.z("data",{dataType:"style"}))})}_loadIconset(t){if(!i.f(t)&&this.map._spriteFormat!=="icon_set"||this.map._spriteFormat==="raster")return void this._loadSprite(t);const s=this.map._spriteFormat==="auto";var h,_;this._spriteRequest=(_=(y,T)=>{if(this._spriteRequest=null,y)s?this._loadSprite(t):this.fire(new i.y(y));else if(T)for(const z in T)this.imageManager.addImage(z,this.scope,T[z]);this.imageManager.setLoaded(!0,this.scope),this._availableImages=this.imageManager.listImages(this.scope),this.dispatcher.broadcast("setImages",{scope:this.scope,images:this._availableImages}),this.dispatcher.broadcast("spriteLoaded",{scope:this.scope,isLoaded:!0}),this.fire(new i.z("data",{dataType:"style"}))},i.bi((h=this.map._requestManager).transformRequest(h.normalizeIconsetURL(t),i.R.Iconset),(y,T)=>{if(y)return void _(y);const z={},R=i.cg(new i.bh(T));for(const F of R.icons){const N={version:1,pixelRatio:i.q.devicePixelRatio,content:ba(F),stretchX:F.metadata?wa(F.metadata.stretch_x_areas):void 0,stretchY:F.metadata?wa(F.metadata.stretch_y_areas):void 0,sdf:!1,usvg:!0,icon:F};z[F.name]=N}_(null,z)}))}_validateLayer(t){const s=this.getOwnSource(t.source);if(!s)return;const h=t.sourceLayer;h&&(s.type==="geojson"||s.vectorLayerIds&&s.vectorLayerIds.indexOf(h)===-1)&&this.fire(new i.y(new Error(`Source layer "${h}" does not exist on source "${s.id}" as specified by style layer "${t.id}"`)))}loaded(){if(!this._loaded||Object.keys(this._changes.getUpdatedSourceCaches()).length)return!1;for(const t in this._sourceCaches)if(!this._sourceCaches[t].loaded())return!1;if(!this.imageManager.isLoaded()||!this.modelManager.isLoaded()||this._styleColorTheme.lutLoading)return!1;for(const{style:t}of this.fragments)if(!t.loaded())return!1;return!0}_serializeImports(){if(this.stylesheet.imports)return this.stylesheet.imports.map((t,s)=>{const h=this.fragments[s];return h&&h.style&&(t.data=h.style.serialize()),t})}_serializeSources(){const t={};for(const s in this._sourceCaches){const h=this._sourceCaches[s].getSource();t[h.id]||(t[h.id]=h.serialize())}return t}_serializeLayers(t){const s=[];for(const h of t){const _=this._layers[h];_&&_.type!=="custom"&&s.push(_.serialize())}return s}hasLightTransitions(){return!(!this.light||!this.light.hasTransition())||!(!this.ambientLight||!this.ambientLight.hasTransition())||!(!this.directionalLight||!this.directionalLight.hasTransition())}hasFogTransition(){return!!this.fog&&this.fog.hasTransition()}hasSnowTransition(){return!!this.snow&&this.snow.hasTransition()}hasRainTransition(){return!!this.rain&&this.rain.hasTransition()}hasTransitions(){if(this.hasLightTransitions()||this.hasFogTransition()||this.hasSnowTransition()||this.hasRainTransition())return!0;for(const t in this._sourceCaches)if(this._sourceCaches[t].hasTransition())return!0;for(const t in this._layers)if(this._layers[t].hasTransition())return!0;return!1}get order(){return this.terrain?this._drapedFirstOrder:this._mergedOrder}_getOrder(t){return t?this.order:this._mergedOrder}isLayerDraped(t){return!!this.terrain&&t.isDraped(this.getLayerSourceCache(t))}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading")}_checkLayer(t){const s=this.getOwnLayer(t);if(s)return s;this.fire(new i.y(new Error(`The layer '${t}' does not exist in the map's style.`)))}_checkSource(t){const s=this.getOwnSource(t);if(s)return s;this.fire(new i.y(new Error(`The source '${t}' does not exist in the map's style.`)))}precompilePrograms(t,s){const h=this.map.painter;if(h)for(let _=t.minzoom||0;_<(t.maxzoom||25.5);_++){const y=t.getProgramIds();if(y)for(const T of y){const z=t.getDefaultProgramParams(T,s.zoom,this._styleColorTheme.lut);z&&(h.style=this,this.fog&&(h._fogVisible=!0,z.overrideFog=!0,h.getOrCreateProgram(T,z)),h._fogVisible=!1,z.overrideFog=!1,h.getOrCreateProgram(T,z),(this.stylesheet.terrain||this.stylesheet.projection&&this.stylesheet.projection.name==="globe")&&(z.overrideRtt=!0,h.getOrCreateProgram(T,z)))}}}update(t){if(!this._loaded)return;this.ambientLight&&this.ambientLight.recalculate(t),this.directionalLight&&this.directionalLight.recalculate(t);const s=this.calculateLightsBrightness();t.brightness=s||0,s!==this._brightness&&(this._brightness=s,this.dispatcher.broadcast("setBrightness",s));const h=this._changes.isDirty();let _=!1;if(this._changes.isDirty()){const T=this._changes.getLayerUpdatesByScope();for(const z in T){const{updatedIds:R,removedIds:F}=T[z];(R||F)&&(this._updateWorkerLayers(z,R,F),_=!0)}this.updateSourceCaches(),this._updateTilesForChangedImages(),this.updateLayers(t),this.light&&this.light.updateTransitions(t),this.ambientLight&&this.ambientLight.updateTransitions(t),this.directionalLight&&this.directionalLight.updateTransitions(t),this.fog&&this.fog.updateTransitions(t),this.snow&&this.snow.updateTransitions(t),this.rain&&this.rain.updateTransitions(t),this._changes.reset()}const y={};for(const T in this._mergedSourceCaches){const z=this._mergedSourceCaches[T];y[T]=z.used,z.used=!1,z.tileCoverLift=0}for(const T of this._mergedOrder){const z=this._mergedLayers[T];if(z.recalculate(t,this._availableImages),!z.isHidden(t.zoom)){const R=this.getLayerSourceCache(z);R&&(R.used=!0,R.tileCoverLift=Math.max(R.tileCoverLift,z.tileCoverLift()))}!this._precompileDone&&this._shouldPrecompile&&("requestIdleCallback"in window?requestIdleCallback(()=>{this.precompilePrograms(z,t)}):this.precompilePrograms(z,t))}this._shouldPrecompile&&(this._precompileDone=!0),this.terrain&&_&&this.mergeLayers();for(const T in y){const z=this._mergedSourceCaches[T];y[T]!==z.used&&z.getSource().fire(new i.z("data",{sourceDataType:"visibility",dataType:"source",sourceId:z.getSource().id}))}this.light&&this.light.recalculate(t),this.terrain&&this.terrain.recalculate(t),this.fog&&this.fog.recalculate(t),this.snow&&this.snow.recalculate(t),this.rain&&this.rain.recalculate(t),this.z=t.zoom,this._markersNeedUpdate&&(this._updateMarkersOpacity(),this._markersNeedUpdate=!1),h&&this.fire(new i.z("data",{dataType:"style"}))}_updateTilesForChangedImages(){const t=this._changes.getUpdatedImages();if(t.length){for(const s in this._sourceCaches)this._sourceCaches[s].reloadTilesForDependencies(["icons","patterns"],t);this._changes.resetUpdatedImages()}}_updateWorkerLayers(t,s,h){const _=this.getFragmentStyle(t);_&&this.dispatcher.broadcast("updateLayers",{layers:s?_._serializeLayers(s):[],scope:t,removedIds:h||[],options:_.options})}setState(t,s){if(this._checkLoaded(),Co(this,Zi(t)))return!1;(t=i.cp(t)).layers=wl(t.layers);const h=function(T,z){if(!T)return[{command:Oi.setStyle,args:[z]}];let R=[];try{if(!i.bn(T.version,z.version))return[{command:Oi.setStyle,args:[z]}];if(i.bn(T.center,z.center)||R.push({command:Oi.setCenter,args:[z.center]}),i.bn(T.zoom,z.zoom)||R.push({command:Oi.setZoom,args:[z.zoom]}),i.bn(T.bearing,z.bearing)||R.push({command:Oi.setBearing,args:[z.bearing]}),i.bn(T.pitch,z.pitch)||R.push({command:Oi.setPitch,args:[z.pitch]}),i.bn(T.sprite,z.sprite)||R.push({command:Oi.setSprite,args:[z.sprite]}),i.bn(T.glyphs,z.glyphs)||R.push({command:Oi.setGlyphs,args:[z.glyphs]}),i.bn(T.imports,z.imports)||function(W=[],te=[],ee){te=te||[];const se=(W=W||[]).map(Fi),oe=te.map(Fi),he=W.reduce(Li,{}),_e=te.reduce(Li,{}),pe=se.slice();let Me,xe,we,ve;for(Me=0,xe=0;Me<se.length;Me++)we=se[Me],_e.hasOwnProperty(we)?xe++:(ee.push({command:Oi.removeImport,args:[we]}),pe.splice(pe.indexOf(we,xe),1));for(Me=0,xe=0;Me<oe.length;Me++)we=oe[oe.length-1-Me],pe[pe.length-1-Me]!==we&&(he.hasOwnProperty(we)?(ee.push({command:Oi.removeImport,args:[we]}),pe.splice(pe.lastIndexOf(we,pe.length-xe),1)):xe++,ve=pe[pe.length-Me],ee.push({command:Oi.addImport,args:[_e[we],ve]}),pe.splice(pe.length-Me,0,we));for(const Ae of te){const Oe=he[Ae.id];Oe&&!i.bn(Oe,Ae)&&ee.push({command:Oi.updateImport,args:[Ae.id,Ae]})}}(T.imports,z.imports,R),i.bn(T.transition,z.transition)||R.push({command:Oi.setTransition,args:[z.transition]}),i.bn(T.light,z.light)||R.push({command:Oi.setLight,args:[z.light]}),i.bn(T.fog,z.fog)||R.push({command:Oi.setFog,args:[z.fog]}),i.bn(T.snow,z.snow)||R.push({command:Oi.setSnow,args:[z.snow]}),i.bn(T.rain,z.rain)||R.push({command:Oi.setRain,args:[z.rain]}),i.bn(T.projection,z.projection)||R.push({command:Oi.setProjection,args:[z.projection]}),i.bn(T.lights,z.lights)||R.push({command:Oi.setLights,args:[z.lights]}),i.bn(T.camera,z.camera)||R.push({command:Oi.setCamera,args:[z.camera]}),!i.bn(T["color-theme"],z["color-theme"]))return[{command:Oi.setStyle,args:[z]}];const F={},N=[];(function(W,te,ee,se){let oe;for(oe in te=te||{},W=W||{})W.hasOwnProperty(oe)&&(te.hasOwnProperty(oe)||os(oe,ee,se));for(oe in te){if(!te.hasOwnProperty(oe))continue;const he=te[oe];W.hasOwnProperty(oe)?i.bn(W[oe],he)||(W[oe].type==="geojson"&&he.type==="geojson"&&ma(W,te,oe)?ee.push({command:Oi.setGeoJSONSourceData,args:[oe,he.data]}):Cn(oe,te,ee,se)):Bi(oe,te,ee)}})(T.sources,z.sources,N,F);const G=[];T.layers&&T.layers.forEach(W=>{W.source&&F[W.source]?R.push({command:Oi.removeLayer,args:[W.id]}):G.push(W)});let Z=T.terrain;Z&&F[Z.source]&&(R.push({command:Oi.setTerrain,args:[void 0]}),Z=void 0),R=R.concat(N),i.bn(Z,z.terrain)||R.push({command:Oi.setTerrain,args:[z.terrain]}),function(W,te,ee){te=te||[];const se=(W=W||[]).map(Fi),oe=te.map(Fi),he=W.reduce(Li,{}),_e=te.reduce(Li,{}),pe=se.slice(),Me=Object.create(null);let xe,we,ve,Ae,Oe,Xe,He;for(xe=0,we=0;xe<se.length;xe++)ve=se[xe],_e.hasOwnProperty(ve)?we++:(ee.push({command:Oi.removeLayer,args:[ve]}),pe.splice(pe.indexOf(ve,we),1));for(xe=0,we=0;xe<oe.length;xe++)ve=oe[oe.length-1-xe],pe[pe.length-1-xe]!==ve&&(he.hasOwnProperty(ve)?(ee.push({command:Oi.removeLayer,args:[ve]}),pe.splice(pe.lastIndexOf(ve,pe.length-we),1)):we++,Xe=pe[pe.length-xe],ee.push({command:Oi.addLayer,args:[_e[ve],Xe]}),pe.splice(pe.length-xe,0,ve),Me[ve]=!0);for(xe=0;xe<oe.length;xe++)if(ve=oe[xe],Ae=he[ve],Oe=_e[ve],!Me[ve]&&!i.bn(Ae,Oe))if(i.bn(Ae.source,Oe.source)&&i.bn(Ae["source-layer"],Oe["source-layer"])&&i.bn(Ae.type,Oe.type)){for(He in Ot(Ae.layout,Oe.layout,ee,ve,null,Oi.setLayoutProperty),Ot(Ae.paint,Oe.paint,ee,ve,null,Oi.setPaintProperty),i.bn(Ae.slot,Oe.slot)||ee.push({command:Oi.setSlot,args:[ve,Oe.slot]}),i.bn(Ae.filter,Oe.filter)||ee.push({command:Oi.setFilter,args:[ve,Oe.filter]}),i.bn(Ae.minzoom,Oe.minzoom)&&i.bn(Ae.maxzoom,Oe.maxzoom)||ee.push({command:Oi.setLayerZoomRange,args:[ve,Oe.minzoom,Oe.maxzoom]}),Ae)Ae.hasOwnProperty(He)&&He!=="layout"&&He!=="paint"&&He!=="filter"&&He!=="metadata"&&He!=="minzoom"&&He!=="maxzoom"&&He!=="slot"&&(He.indexOf("paint.")===0?Ot(Ae[He],Oe[He],ee,ve,He.slice(6),Oi.setPaintProperty):i.bn(Ae[He],Oe[He])||ee.push({command:Oi.setLayerProperty,args:[ve,He,Oe[He]]}));for(He in Oe)Oe.hasOwnProperty(He)&&!Ae.hasOwnProperty(He)&&He!=="layout"&&He!=="paint"&&He!=="filter"&&He!=="metadata"&&He!=="minzoom"&&He!=="maxzoom"&&He!=="slot"&&(He.indexOf("paint.")===0?Ot(Ae[He],Oe[He],ee,ve,He.slice(6),Oi.setPaintProperty):i.bn(Ae[He],Oe[He])||ee.push({command:Oi.setLayerProperty,args:[ve,He,Oe[He]]}))}else ee.push({command:Oi.removeLayer,args:[ve]}),Xe=pe[pe.lastIndexOf(ve)+1],ee.push({command:Oi.addLayer,args:[Oe,Xe]})}(G,z.layers,R)}catch(F){console.warn("Unable to compute style diff:",F),R=[{command:Oi.setStyle,args:[z]}]}return R}(this.serialize(),t).filter(T=>!(T.command in Dd));if(h.length===0)return!1;const _=h.filter(T=>!(T.command in tu));if(_.length>0)throw new Error(`Unimplemented: ${_.map(T=>T.command).join(", ")}.`);const y=[];return h.forEach(T=>{y.push(this[T.command].apply(this,T.args))}),s&&Promise.all(y).then(s),this.stylesheet=t,this.mergeAll(),this.dispatcher.broadcast("setLayers",{layers:this._serializeLayers(this._order),scope:this.scope,options:this.options}),!0}addImage(t,s){return this.getImage(t)?this.fire(new i.y(new Error("An image with this name already exists."))):(this.imageManager.addImage(t,this.scope,s),this._afterImageUpdated(t),this)}updateImage(t,s,h=!1){this.imageManager.updateImage(t,this.scope,s),h&&this._afterImageUpdated(t)}getImage(t){return this.imageManager.getImage(t,this.scope)}removeImage(t){return this.getImage(t)?(this.imageManager.removeImage(t,this.scope),this._afterImageUpdated(t),this):this.fire(new i.y(new Error("No image with this name exists.")))}_afterImageUpdated(t){this._availableImages=this.imageManager.listImages(this.scope),this._changes.updateImage(t),this.dispatcher.broadcast("setImages",{scope:this.scope,images:this._availableImages}),this.fire(new i.z("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this._availableImages.slice()}addModel(t,s,h={}){return this._checkLoaded(),this._validate(Be,`models.${t}`,s,null,h)||(this.modelManager.addModel(t,s,this.scope),this._changes.setDirty()),this}hasModel(t){return this.modelManager.hasModel(t,this.scope)}removeModel(t){return this.hasModel(t)?(this.modelManager.removeModel(t,this.scope),this):this.fire(new i.y(new Error("No model with this ID exists.")))}listModels(){return this._checkLoaded(),this.modelManager.listModels(this.scope)}addSource(t,s,h={}){if(this._checkLoaded(),this.getOwnSource(t)!==void 0)throw new Error(`There is already a source with ID "${t}".`);if(!s.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(s).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(s.type)>=0&&this._validate(Qn,`sources.${t}`,s,null,h))return;this.map&&this.map._collectResourceTiming&&(s.collectResourceTiming=!0);const _=qo(t,s,this.dispatcher,this);_.scope=this.scope,_.setEventedParent(this,()=>({isSourceLoaded:this._isSourceCacheLoaded(_.id),source:_.serialize(),sourceId:_.id}));const y=T=>{const z=(T?"symbol:":"other:")+_.id,R=i.aC(z,this.scope),F=this._sourceCaches[z]=new rr(R,_,T);(T?this._symbolSourceCaches:this._otherSourceCaches)[_.id]=F,F.onAdd(this.map)};y(!1),s.type!=="vector"&&s.type!=="geojson"||y(!0),_.onAdd&&_.onAdd(this.map),h.isInitialLoad||(this.mergeSources(),this._changes.setDirty())}removeSource(t){this._checkLoaded();const s=this.getOwnSource(t);if(!s)throw new Error("There is no source with this ID");for(const _ in this._layers)if(this._layers[_].source===t)return this.fire(new i.y(new Error(`Source "${t}" cannot be removed while layer "${_}" is using it.`)));if(this.terrain&&this.terrain.scope===this.scope&&this.terrain.get().source===t)return this.fire(new i.y(new Error(`Source "${t}" cannot be removed while terrain is using it.`)));const h=this.getOwnSourceCaches(t);for(const _ of h){const y=i.cq(_.id);delete this._sourceCaches[y],this._changes.discardSourceCacheUpdate(_.id),_.fire(new i.z("data",{sourceDataType:"metadata",dataType:"source",sourceId:_.getSource().id})),_.setEventedParent(null),_.clearTiles()}return delete this._otherSourceCaches[t],delete this._symbolSourceCaches[t],this.mergeSources(),s.setEventedParent(null),s.onRemove&&s.onRemove(this.map),this._changes.setDirty(),this}setGeoJSONSourceData(t,s){this._checkLoaded(),this.getOwnSource(t).setData(s),this._changes.setDirty()}getOwnSource(t){const s=this.getOwnSourceCache(t);return s&&s.getSource()}getOwnSources(){const t=[];for(const s in this._otherSourceCaches){const h=this.getOwnSourceCache(s);h&&t.push(h.getSource())}return t}areTilesLoaded(){const t=this._mergedSourceCaches;for(const s in t){const h=t[s]._tiles;for(const _ in h){const y=h[_];if(y.state!=="loaded"&&y.state!=="errored")return!1}}return!0}setLights(t){if(this._checkLoaded(),!t)return delete this.ambientLight,void delete this.directionalLight;const s=this._getTransitionParameters();for(const _ of t){if(this._validate(zs,"lights",_))return;switch(_.type){case"ambient":if(this.ambientLight){const y=this.ambientLight;y.set(_),y.updateTransitions(s)}else this.ambientLight=new ms(_,$i||($i=new i.a5({color:new i.a6(i.a3.properties_light_ambient.color),"color-use-theme":new i.a6({type:"string",default:"default","property-type":"data-constant"}),intensity:new i.a6(i.a3.properties_light_ambient.intensity)})),this.scope,this.options);break;case"directional":if(this.directionalLight){const y=this.directionalLight;y.set(_),y.updateTransitions(s)}else this.directionalLight=new ms(_,Hi||(Hi=new i.a5({direction:new i.ak(i.a3.properties_light_directional.direction),color:new i.a6(i.a3.properties_light_directional.color),"color-use-theme":new i.a6({type:"string",default:"default","property-type":"data-constant"}),intensity:new i.a6(i.a3.properties_light_directional.intensity),"cast-shadows":new i.a6(i.a3.properties_light_directional["cast-shadows"]),"shadow-quality":new i.a6(i.a3.properties_light_directional["shadow-quality"]),"shadow-intensity":new i.a6(i.a3.properties_light_directional["shadow-intensity"])})),this.scope,this.options)}}const h=new i.a8(this.z||0,s);this.ambientLight&&this.ambientLight.recalculate(h),this.directionalLight&&this.directionalLight.recalculate(h),this._brightness=this.calculateLightsBrightness(),this.dispatcher.broadcast("setBrightness",this._brightness)}calculateLightsBrightness(){const t=this.directionalLight,s=this.ambientLight;if(!t||!s)return;const h=Z=>.2126*(Z[0]<=.03928?Z[0]/12.92:Math.pow((Z[0]+.055)/1.055,2.4))+.7152*(Z[1]<=.03928?Z[1]/12.92:Math.pow((Z[1]+.055)/1.055,2.4))+.0722*(Z[2]<=.03928?Z[2]/12.92:Math.pow((Z[2]+.055)/1.055,2.4)),_=t.properties.get("color").toRenderColor(null).toArray01(),y=t.properties.get("intensity"),T=t.properties.get("direction"),z=1-i.cb(T.x,T.y,T.z)[2]/90,R=h(_)*y*z,F=s.properties.get("color").toRenderColor(null).toArray01(),N=s.properties.get("intensity"),G=h(F)*N;return Number(((R+G)/2).toFixed(6))}getBrightness(){return this._brightness}getLights(){if(!this.enable3dLights())return null;const t=[];return this.directionalLight&&t.push(this.directionalLight.get()),this.ambientLight&&t.push(this.ambientLight.get()),t}enable3dLights(){return!!this.ambientLight&&!!this.directionalLight}getFragmentStyle(t){if(!t)return this;if(i.cr(t)){const s=i.cs(t),h=this.fragments.find(({id:y})=>y===s);if(!h)throw new Error(`Style import '${t}' not found`);const _=i.cq(t);return h.style.getFragmentStyle(_)}{const s=this.fragments.find(({id:h})=>h===t);if(!s)throw new Error(`Style import '${t}' not found`);return s.style}}setFeaturesetSelectors(t){if(!t)return;const s={},h=(_,y="")=>`${_}::${y}`;this.featuresetSelectors={};for(const _ in t){const y=this.featuresetSelectors[_]=[];for(const T of t[_].selectors){if(T.featureNamespace){const R=this.getOwnLayer(T.layer);if(!R){i.w(`Layer is undefined for selector: ${T.layer}`);continue}const F=h(R.source,R.sourceLayer);if(F in s&&s[F]!==T.featureNamespace){i.w(`"featureNamespace ${T.featureNamespace} of featureset ${_}'s selector is not associated to the same source, skip this selector`);continue}s[F]=T.featureNamespace}let z;if(T.properties)for(const R in T.properties){const F=i.U(T.properties[R]);F.result==="success"&&(z=z||{},z[R]=F.value)}y.push({layerId:T.layer,namespace:T.featureNamespace,properties:z})}}}getFeaturesetDescriptors(t){const s=this.getFragmentStyle(t);if(!s||!s.stylesheet.featuresets)return[];const h=[];for(const _ in s.stylesheet.featuresets)h.push({featuresetId:_,importId:s.scope?s.scope:void 0});return h}getFeaturesetLayers(t,s){const h=this.getFragmentStyle(s),_=h.stylesheet.featuresets;if(!_||!_[t])return this.fire(new i.y(new Error(`The featureset '${t}' does not exist in the map's style and cannot be queried.`))),[];const y=[];for(const T of _[t].selectors){const z=h.getOwnLayer(T.layer);z&&y.push(z)}return y}getConfigProperty(t,s){const h=this.getFragmentStyle(t);if(!h)return null;const _=i.aC(s,h.scope),y=h.options.get(_),T=y?y.value||y.default:null;return T?T.serialize():null}setConfigProperty(t,s,h){const _=this.getFragmentStyle(t);if(!_)return;const y=_.stylesheet.indoor?rc(_.stylesheet.schema):_.stylesheet.schema;if(!y||!y[s])return;const T=i.U(h);if(T.result!=="success")return void Co(this,T.value);const z=T.value.expression,R=i.aC(s,_.scope),F=_.options.get(R);if(!F)return;let N;const{minValue:G,maxValue:Z,stepValue:W,type:te,values:ee}=y[s],se=i.U(y[s].default);se.result==="success"&&(N=se.value.expression),N?(this.options.set(R,{...F,value:z,default:N,minValue:G,maxValue:Z,stepValue:W,type:te,values:ee}),this.updateConfigDependencies(s)):this.fire(new i.y(new Error(`No schema defined for the config option "${s}" in the "${t}" fragment.`)))}getConfig(t){const s=this.getFragmentStyle(t);if(!s)return null;const h=s.stylesheet.schema;if(!h)return null;const _={};for(const y in h){const T=i.aC(y,s.scope),z=s.options.get(T),R=z?z.value||z.default:null;_[y]=R?R.serialize():null}return _}setConfig(t,s){const h=this.getFragmentStyle(t);h&&(h.updateConfig(s,h.stylesheet.schema),this.updateConfigDependencies())}getSchema(t){const s=this.getFragmentStyle(t);return s?s.stylesheet.schema:null}setSchema(t,s){const h=this.getFragmentStyle(t);h&&(h.stylesheet.schema=s,h.updateConfig(h._config,s),this.updateConfigDependencies())}updateConfig(t,s){if(this._config=t,t||s)if(s)for(const h in s){let _,y;const T=i.U(s[h].default);if(T.result==="success"&&(_=T.value.expression),t&&t[h]!==void 0){const Z=i.U(t[h]);Z.result==="success"&&(y=Z.value.expression)}const{minValue:z,maxValue:R,stepValue:F,type:N,values:G}=s[h];if(_){const Z=i.aC(h,this.scope);this.options.set(Z,{default:_,value:y,minValue:z,maxValue:R,stepValue:F,type:N,values:G})}else this.fire(new i.y(new Error(`No schema defined for config option "${h}".`)))}else this.fire(new i.y(new Error("Attempting to set config for a style without schema.")))}updateConfigDependencies(t){for(const s of this._configDependentLayers){const h=this.getLayer(s);if(h){if(t&&!h.configDependencies.has(t))continue;h.possiblyEvaluateVisibility(),this._updateLayer(h)}}this.ambientLight&&this.ambientLight.updateConfig(this.options),this.directionalLight&&this.directionalLight.updateConfig(this.options),this.fog&&this.fog.updateConfig(this.options),this.snow&&this.snow.updateConfig(this.options),this.rain&&this.rain.updateConfig(this.options),this.forEachFragmentStyle(s=>{const h=s._styleColorTheme.colorThemeOverride?s._styleColorTheme.colorThemeOverride:s._styleColorTheme.colorTheme;if(h){const _=s._evaluateColorThemeData(h);(!s._styleColorTheme.lut&&_!==""||s._styleColorTheme.lut&&_!==s._styleColorTheme.lut.data)&&s.setColorTheme(h)}}),this._changes.setDirty()}addLayer(t,s,h={}){this._checkLoaded();const _=t.id;if(this._layers[_])return void this.fire(new i.y(new Error(`Layer with id "${_}" already exists on this map`)));let y;if(t.type==="custom"){if(Co(this,i.ct(t)))return;y=i.cu(t,this.scope,this._styleColorTheme.lut,this.options)}else{if(typeof t.source=="object"&&(this.addSource(_,t.source),t=i.cp(t),t=i.l(t,{source:_})),this._validate(le,`layers.${_}`,t,{arrayIndex:-1},h))return;y=i.cu(t,this.scope,this._styleColorTheme.lut,this.options),this._validateLayer(y),y.setEventedParent(this,{layer:{id:_}})}y.configDependencies.size!==0&&this._configDependentLayers.add(y.fqid);let T=this._order.length;if(s){const N=this._order.indexOf(s);if(N===-1)return void this.fire(new i.y(new Error(`Layer with id "${s}" does not exist on this map.`)));y.slot===this._layers[s].slot?T=N:i.w(`Layer with id "${s}" has a different slot. Layers can only be rearranged within the same slot.`)}this._order.splice(T,0,_),this._layerOrderChanged=!0,this._layers[_]=y;const z=this.getOwnLayerSourceCache(y),R=!!this.directionalLight&&this.directionalLight.shadowsEnabled();z&&y.canCastShadows()&&R&&(z.castsShadows=!0);const F=this._changes.getRemovedLayer(y);if(F&&y.source&&z&&y.type!=="custom"){this._changes.discardLayerRemoval(y);const N=i.aC(y.source,y.scope);F.type!==y.type?this._changes.updateSourceCache(N,"clear"):(this._changes.updateSourceCache(N,"reload"),z.pause())}this._updateLayer(y),y.onAdd&&y.onAdd(this.map),y.scope=this.scope,this.mergeLayers()}moveLayer(t,s){this._checkLoaded();const h=this._checkLayer(t);if(!h||t===s)return;const _=this._order.indexOf(t);this._order.splice(_,1);let y=this._order.length;if(s){const T=this._order.indexOf(s);if(T===-1)return void this.fire(new i.y(new Error(`Layer with id "${s}" does not exist on this map.`)));h.slot===this._layers[s].slot?y=T:i.w(`Layer with id "${s}" has a different slot. Layers can only be rearranged within the same slot.`)}this._order.splice(y,0,t),this._changes.setDirty(),this._layerOrderChanged=!0,this.mergeLayers()}removeLayer(t){this._checkLoaded();const s=this._checkLayer(t);if(!s)return;s.setEventedParent(null);const h=this._order.indexOf(t);this._order.splice(h,1),delete this._layers[t],this._changes.setDirty(),this._layerOrderChanged=!0,this._configDependentLayers.delete(s.fqid),this._changes.removeLayer(s);const _=this.getOwnLayerSourceCache(s);if(_&&_.castsShadows){let y=!1;for(const T in this._layers)if(this._layers[T].source===s.source&&this._layers[T].canCastShadows()){y=!0;break}_.castsShadows=y}s.onRemove&&s.onRemove(this.map),this.mergeLayers()}getOwnLayer(t){return this._layers[t]}hasLayer(t){return t in this._mergedLayers}hasLayerType(t){for(const s in this._layers)if(this._layers[s].type===t)return!0;return!1}setLayerZoomRange(t,s,h){this._checkLoaded();const _=this._checkLayer(t);_&&(_.minzoom===s&&_.maxzoom===h||(s!=null&&(_.minzoom=s),h!=null&&(_.maxzoom=h),this._updateLayer(_)))}getSlots(){return this._checkLoaded(),this._mergedSlots}setSlot(t,s){this._checkLoaded();const h=this._checkLayer(t);h&&h.slot!==s&&(h.slot=s,this._updateLayer(h))}setFilter(t,s,h={}){this._checkLoaded();const _=this._checkLayer(t);if(_&&!i.bn(_.filter,s))return s==null?(_.filter=void 0,void this._updateLayer(_)):void(this._validate(ge,`layers.${_.id}.filter`,s,{layerType:_.type},h)||(_.filter=i.cp(s),this._updateLayer(_)))}getFilter(t){const s=this._checkLayer(t);if(s)return i.cp(s.filter)}setLayoutProperty(t,s,h,_={}){this._checkLoaded();const y=this._checkLayer(t);if(y&&!i.bn(y.getLayoutProperty(s),h)){if(h!=null&&(!_||_.validate!==!1)&&Co(y,Ce.call(Zi,{key:`layers.${t}.layout.${s}`,layerType:y.type,objectKey:s,value:h,styleSpec:i.a3,style:{glyphs:!0,sprite:!0}})))return;y.setLayoutProperty(s,h),y.configDependencies.size!==0&&this._configDependentLayers.add(y.fqid),this._updateLayer(y)}}getLayoutProperty(t,s){const h=this._checkLayer(t);if(h)return h.getLayoutProperty(s)}setPaintProperty(t,s,h,_={}){this._checkLoaded();const y=this._checkLayer(t);if(!y||i.bn(y.getPaintProperty(s),h)||h!=null&&(!_||_.validate!==!1)&&Co(y,Le.call(Zi,{key:`layers.${t}.paint.${s}`,layerType:y.type,objectKey:s,value:h,styleSpec:i.a3})))return;const T=y.setPaintProperty(s,h);y.configDependencies.size!==0&&this._configDependentLayers.add(y.fqid),T&&this._updateLayer(y),this._changes.updatePaintProperties(y)}getPaintProperty(t,s){const h=this._checkLayer(t);if(h)return h.getPaintProperty(s)}setFeatureState(t,s){if(this._checkLoaded(),"target"in t){if("featuresetId"in t.target){const{featuresetId:R,importId:F}=t.target,N=this.getFragmentStyle(F),G=N.getFeaturesetLayers(R);for(const{source:Z,sourceLayer:W}of G)N.setFeatureState({id:t.id,source:Z,sourceLayer:W},s)}else if("layerId"in t.target){const{layerId:R}=t.target,F=this.getLayer(R);this.setFeatureState({id:t.id,source:F.source,sourceLayer:F.sourceLayer},s)}return}const h=t.source,_=t.sourceLayer,y=this._checkSource(h);if(!y)return;const T=y.type;if(T==="geojson"&&_)return void this.fire(new i.y(new Error("GeoJSON sources cannot have a sourceLayer parameter.")));if(T==="vector"&&!_)return void this.fire(new i.y(new Error("The sourceLayer parameter must be provided for vector source types.")));t.id===void 0&&this.fire(new i.y(new Error("The feature id parameter must be provided.")));const z=this.getOwnSourceCaches(h);for(const R of z)R.setFeatureState(_,t.id,s)}removeFeatureState(t,s){if(this._checkLoaded(),"target"in t){if("featuresetId"in t.target){const{featuresetId:R,importId:F}=t.target,N=this.getFragmentStyle(F),G=N.getFeaturesetLayers(R);for(const{source:Z,sourceLayer:W}of G)N.removeFeatureState({id:t.id,source:Z,sourceLayer:W},s)}else if("layerId"in t.target){const{layerId:R}=t.target,F=this.getLayer(R);this.removeFeatureState({id:t.id,source:F.source,sourceLayer:F.sourceLayer},s)}return}const h=t.source,_=this._checkSource(h);if(!_)return;const y=_.type,T=y==="vector"?t.sourceLayer:void 0;if(y==="vector"&&!T)return void this.fire(new i.y(new Error("The sourceLayer parameter must be provided for vector source types.")));if(s&&typeof t.id!="string"&&typeof t.id!="number")return void this.fire(new i.y(new Error("A feature id is required to remove its specific state property.")));const z=this.getOwnSourceCaches(h);for(const R of z)R.removeFeatureState(T,t.id,s)}getFeatureState(t){if(this._checkLoaded(),"target"in t){let y;if("featuresetId"in t.target){const{featuresetId:T,importId:z}=t.target,R=this.getFragmentStyle(z),F=R.getFeaturesetLayers(T);for(const{source:N,sourceLayer:G}of F){const Z=R.getFeatureState({id:t.id,source:N,sourceLayer:G});if(Z&&!y)y=Z;else if(!i.bn(y,Z))return void this.fire(new i.y(new Error("The same feature id exists in multiple sources in the featureset, but their feature states are not consistent through the sources.")))}}else if("layerId"in t.target){const{layerId:T}=t.target,z=this.getLayer(T);y=this.getFeatureState({id:t.id,source:z.source,sourceLayer:z.sourceLayer})}return y}const s=t.source,h=t.sourceLayer,_=this._checkSource(s);if(_){if(_.type!=="vector"||h)return t.id===void 0&&this.fire(new i.y(new Error("The feature id parameter must be provided."))),this.getOwnSourceCaches(s)[0].getFeatureState(h,t.id);this.fire(new i.y(new Error("The sourceLayer parameter must be provided for vector source types.")))}}setTransition(t){return this.stylesheet.transition=i.l({},this.stylesheet.transition,t),this.transition=this.stylesheet.transition,this}getTransition(){return i.l({},this.stylesheet.transition)}serialize(){this._checkLoaded();const t=this.getTerrain(),s=t&&this.terrain&&this.terrain.scope===this.scope?t:this.stylesheet.terrain;return i.cv({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,fragment:this.stylesheet.fragment,imports:this._serializeImports(),schema:this.stylesheet.schema,camera:this.stylesheet.camera,light:this.stylesheet.light,lights:this.stylesheet.lights,terrain:s,fog:this.stylesheet.fog,snow:this.stylesheet.snow,rain:this.stylesheet.rain,center:this.stylesheet.center,"color-theme":this.stylesheet["color-theme"],zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,projection:this.stylesheet.projection,sources:this._serializeSources(),layers:this._serializeLayers(this._order)},h=>h!==void 0)}_updateFilteredLayers(t){for(const s of Object.values(this._mergedLayers))t(s)&&this._updateLayer(s)}_updateLayer(t){this._changes.updateLayer(t);const s=this.getLayerSourceCache(t),h=i.aC(t.source,t.scope),_=this._changes.getUpdatedSourceCaches();t.source&&!_[h]&&s&&s.getSource().type!=="raster"&&(this._changes.updateSourceCache(h,"reload"),s.pause()),t.invalidateCompiledFilter()}_flattenAndSortRenderedFeatures(t){const s=z=>this._mergedLayers[z].is3D(),h=this.order,_={},y=[];for(let z=h.length-1;z>=0;z--){const R=h[z];if(s(R)){_[R]=z;for(const F of t){const N=F[R];if(N)for(const G of N)y.push(G)}}}y.sort((z,R)=>R.intersectionZ-z.intersectionZ);const T=[];for(let z=h.length-1;z>=0;z--){const R=h[z];if(s(R))for(let F=y.length-1;F>=0;F--){const N=y[F].feature;if(N.layer&&_[N.layer.id]<z)break;T.push(N),y.pop()}else for(const F of t){const N=F[R];if(N)for(const G of N)T.push(G.feature)}}return T}queryRenderedFeatures(t,s,h){let _;s&&!Array.isArray(s)&&s.filter&&(this._validate(ge,"queryRenderedFeatures.filter",s.filter,null,s),_=i.aZ(s.filter));const y={},T=N=>{if(Wa.has(N.type))return;const G=this.getOwnLayerSourceCache(N),Z=y[G.id]=y[G.id]||{sourceCache:G,layers:{},has3DLayers:!1};N.is3D()&&(Z.has3DLayers=!0),Z.layers[N.fqid]=Z.layers[N.fqid]||{styleLayer:N,targets:[]},Z.layers[N.fqid].targets.push({filter:_})};if(s&&s.layers){if(!Array.isArray(s.layers))return this.fire(new i.y(new Error("parameters.layers must be an Array."))),[];for(const N of s.layers){const G=this._layers[N];if(!G)return this.fire(new i.y(new Error(`The layer '${N}' does not exist in the map's style and cannot be queried for features.`))),[];T(G)}}else for(const N in this._layers)T(this._layers[N]);const z=this._queryRenderedFeatures(t,y,h),R=this._flattenAndSortRenderedFeatures(z),F=[];for(const N of R)i.cs(N.layer.id)===this.scope&&F.push(N);return F}queryRenderedFeatureset(t,s,h){let _;s&&!Array.isArray(s)&&s.filter&&(this._validate(ge,"queryRenderedFeatures.filter",s.filter,null,s),_=i.aZ(s.filter));const y="mock",T=[];if(s&&s.target)T.push({...s,targetId:y,filter:_});else{const F=this.getFeaturesetDescriptors();for(const N of F)T.push({targetId:y,filter:_,target:N});for(const{style:N}of this.fragments){const G=N.getFeaturesetDescriptors();for(const Z of G)T.push({targetId:y,filter:_,target:Z})}}const z=this.queryRenderedTargets(t,T,h),R=[];for(const F of z)for(const N of F.variants[y])R.push(new i.cw(F,N));return R}queryRenderedTargets(t,s,h){const _={},y=(z,R,F,N)=>{const G=_[R.id]=_[R.id]||{sourceCache:R,layers:{},has3DLayers:!1};G.layers[z.fqid]=G.layers[z.fqid]||{styleLayer:z,targets:[]},z.is3D()&&(G.has3DLayers=!0),G.layers[z.fqid].targets.push(N?{...F,namespace:N.namespace,properties:N.properties}:F)};for(const z of s)if("featuresetId"in z.target){const{featuresetId:R,importId:F}=z.target,N=this.getFragmentStyle(F),G=N.featuresetSelectors[R];if(!G){this.fire(new i.y(new Error(`The featureset '${R}' does not exist in the map's style and cannot be queried for features.`)));continue}for(const Z of G){const W=N.getOwnLayer(Z.layerId);W&&!Wa.has(W.type)&&y(W,N.getOwnLayerSourceCache(W),z,Z)}}else if("layerId"in z.target){const{layerId:R}=z.target,F=this.getLayer(R);if(!F||Wa.has(F.type))continue;y(F,this.getLayerSourceCache(F),z)}const T=this._queryRenderedFeatures(t,_,h);return this._flattenAndSortRenderedFeatures(T)}_queryRenderedFeatures(t,s,h){const _=[],y=!!this.map._showQueryGeometry,T=vs.createFromScreenPoints(t,h);for(const z in s){const R=da(T,s[z],this._availableImages,h,y);Object.keys(R).length&&_.push(R)}if(this.placement)for(const z in s){if(!s[z].sourceCache._onlySymbols)continue;const R=Ba(T.screenGeometry,s[z],this._availableImages,this.placement.collisionIndex,this.placement.retainedQueryData);Object.keys(R).length&&_.push(R)}return _}querySourceFeatures(t,s){const h=s&&s.filter;h&&this._validate(ge,"querySourceFeatures.filter",h,null,s);let _=[];const y=this.getOwnSourceCaches(t);for(const T of y)_=_.concat(Vi(T,s));return _}addSourceType(t,s,h){return ur.getSourceType(t)?h(new Error(`A source type called "${t}" already exists.`)):(ur.setSourceType(t,s),s.workerSourceURL?void this.dispatcher.broadcast("loadWorkerSource",{name:t,url:s.workerSourceURL},h):h(null,null))}getFlatLight(){return this.light.getLight()}setFlatLight(t,s,h={}){this._checkLoaded();const _=this.light.getLight();let y=!1;for(const z in t)if(!i.bn(t[z],_[z])){y=!0;break}if(!y)return;const T=this._getTransitionParameters();this.light.setLight(t,s,h),this.light.updateTransitions(T)}getTerrain(){return this.terrain&&this.terrain.drapeRenderMode===1?this.terrain.get():null}setTerrainForDraping(){this.setTerrain({source:"",exaggeration:0},0)}checkCanvasFingerprintNoise(){this.disableElevatedTerrain===void 0&&(this.disableElevatedTerrain=i.q.hasCanvasFingerprintNoise(),this.disableElevatedTerrain&&i.w("Terrain and hillshade are disabled because of Canvas2D limitations when fingerprinting protection is enabled (e.g. in private browsing mode)."))}setTerrain(t,s=1){if(this._checkLoaded(),!t)return this.terrainSetForDrapingOnly()||(delete this.terrain,this.map.transform.projection.requiresDraping&&this.setTerrainForDraping()),s===0&&delete this.terrain,t===null?this.stylesheet.terrain=null:delete this.stylesheet.terrain,this._force3DLayerUpdate(),void(this._markersNeedUpdate=!0);this.checkCanvasFingerprintNoise();let h=t;const _=t.source==null;if(s===1){if(this.disableElevatedTerrain)return;if(typeof h.source=="object"){const z="terrain-dem-src";this.addSource(z,h.source),h=i.cp(h),h=i.l(h,{source:z})}const y=i.l({},h),T={};if(this.terrain&&_){y.source=this.terrain.get().source;const z=this.terrain?this.getFragmentStyle(this.terrain.scope):null;z&&(T.style=z.serialize())}if(this._validate(Ds,"terrain",y,T))return}if(!this.terrain||this.terrain.scope!==this.scope&&!_||this.terrain&&s!==this.terrain.drapeRenderMode){if(!h)return;this._createTerrain(h,s),this.fire(new i.z("data",{dataType:"style"}))}else{const y=this.terrain,T=y.get();for(const z of Object.keys(i.a3.terrain))!h.hasOwnProperty(z)&&i.a3.terrain[z].default&&(h[z]=i.a3.terrain[z].default);for(const z in t)if(!i.bn(t[z],T[z])){y.set(t,this.options),this.stylesheet.terrain=t;const R=this._getTransitionParameters({duration:0});y.updateTransitions(R),this.fire(new i.z("data",{dataType:"style"}));break}}this.mergeTerrain(),this.updateDrapeFirstLayers(),this._markersNeedUpdate=!0}_createFog(t){const s=this.fog=new Ki(t,this.map.transform,this.scope,this.options);this.stylesheet.fog=s.get();const h=this._getTransitionParameters({duration:0});s.updateTransitions(h)}_createSnow(t){const s=this.snow=new Xn(t,this.map.transform,this.scope,this.options);this.stylesheet.snow=s.get();const h=this._getTransitionParameters({duration:0});s.updateTransitions(h)}_createRain(t){const s=this.rain=new Gs(t,this.map.transform,this.scope,this.options);this.stylesheet.rain=s.get();const h=this._getTransitionParameters({duration:0});s.updateTransitions(h)}_updateMarkersOpacity(){this.map._markers.length!==0&&this.map._requestDomTask(()=>{for(const t of this.map._markers)t._evaluateOpacity()})}getFog(){return this.fog?this.fog.get():null}setFog(t){if(this._checkLoaded(),!t)return delete this.fog,delete this.stylesheet.fog,void(this._markersNeedUpdate=!0);if(this.fog){const s=this.fog;if(!i.bn(s.get(),t)){s.set(t,this.options),this.stylesheet.fog=s.get();const h=this._getTransitionParameters({duration:0});s.updateTransitions(h)}}else this._createFog(t);this._markersNeedUpdate=!0}getSnow(){return this.snow?this.snow.get():null}setSnow(t){if(this._checkLoaded(),!t)return delete this.snow,void delete this.stylesheet.snow;if(this.snow){const s=this.snow;if(!i.bn(s.get(),t)){s.set(t,this.options),this.stylesheet.snow=s.get();const h=this._getTransitionParameters({duration:0});s.updateTransitions(h)}}else this._createSnow(t);this._markersNeedUpdate=!0}getRain(){return this.rain?this.rain.get():null}setRain(t){if(this._checkLoaded(),!t)return delete this.rain,void delete this.stylesheet.rain;if(this.rain){const s=this.rain;if(!i.bn(s.get(),t)){s.set(t,this.options),this.stylesheet.rain=s.get();const h=this._getTransitionParameters({duration:0});s.updateTransitions(h)}}else this._createRain(t);this._markersNeedUpdate=!0}_reloadColorTheme(){const t=()=>{for(const _ in this._layers)this._layers[_].lut=this._styleColorTheme.lut;for(const _ in this._sourceCaches)this._sourceCaches[_].clearTiles()},s=this._styleColorTheme.colorThemeOverride?this._styleColorTheme.colorThemeOverride:this._styleColorTheme.colorTheme;if(!s)return this._styleColorTheme.lut=null,void t();const h=this._evaluateColorThemeData(s);this._loadColorTheme(h).then(()=>{this.fire(new i.z("colorthemeset")),t()}).catch(_=>{i.w(`Couldn't set color theme: ${_}`)})}setColorTheme(t){this._checkLoaded(),this._styleColorTheme.colorThemeOverride&&i.w("Note: setColorTheme is called on a style with a color-theme override, the passed color-theme won't be visible."),this._styleColorTheme.colorTheme=t,this._reloadColorTheme()}setImportColorTheme(t,s){const h=this.getFragmentStyle(t);h&&(h._styleColorTheme.colorThemeOverride=s,h._reloadColorTheme())}_getTransitionParameters(t){return{now:i.q.now(),transition:i.l(this.transition,t)}}updateDrapeFirstLayers(){if(!this.terrain)return;const t=[],s=[];for(const h of this._mergedOrder)this.isLayerDraped(this._mergedLayers[h])?t.push(h):s.push(h);this._drapedFirstOrder=[],this._drapedFirstOrder.push(...t),this._drapedFirstOrder.push(...s)}_createTerrain(t,s){const h=this.terrain=new it(t,s,this.scope,this.options);s===1&&(this.stylesheet.terrain=t),this.mergeTerrain(),this.updateDrapeFirstLayers(),this._force3DLayerUpdate();const _=this._getTransitionParameters({duration:0});h.updateTransitions(_)}_force3DLayerUpdate(){for(const t in this._layers){const s=this._layers[t];s.type==="fill-extrusion"&&this._updateLayer(s)}}_forceSymbolLayerUpdate(){for(const t in this._layers){const s=this._layers[t];s.type==="symbol"&&this._updateLayer(s)}}_validate(t,s,h,_,y={}){if(y&&y.validate===!1)return!1;const T=i.l({},this.serialize());return Co(this,t.call(Zi,i.l({key:s,style:T,value:h,styleSpec:i.a3},_)))}_remove(){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),i.cx.off("pluginStateChange",this._rtlTextPluginCallback);for(const t in this._mergedLayers)this._mergedLayers[t].setEventedParent(null);for(const t in this._mergedSourceCaches)this._mergedSourceCaches[t].clearTiles(),this._mergedSourceCaches[t].setEventedParent(null);this.setEventedParent(null),delete this.fog,delete this.snow,delete this.rain,delete this.terrain,delete this.ambientLight,delete this.directionalLight,this.isRootStyle()&&(this.imageManager.setEventedParent(null),this.modelManager.setEventedParent(null),this.dispatcher.remove())}clearSource(t){const s=this.getSourceCaches(t);for(const h of s)h.clearTiles()}clearSources(){for(const t in this._mergedSourceCaches)this._mergedSourceCaches[t].clearTiles()}reloadSource(t){const s=this.getSourceCaches(t);for(const h of s)h.resume(),h.reload()}reloadSources(){for(const t of this.getSources())t.reload&&t.reload()}updateSources(t){let s;this.directionalLight&&(s=Qo(this.directionalLight));for(const h in this._mergedSourceCaches)this._mergedSourceCaches[h].update(t,void 0,void 0,s)}_generateCollisionBoxes(){for(const t in this._sourceCaches){const s=this._sourceCaches[t];s.resume(),s.reload()}}_updatePlacement(t,s,h,_,y,T,z=!1){let R=!1,F=!1;const N={},G={};for(const Z of this._mergedOrder){const W=this._mergedLayers[Z];if(W.type!=="symbol")continue;const te=i.aC(W.source,W.scope);let ee=N[te];if(!ee){const oe=this.getLayerSourceCache(W);if(!oe)continue;const he=oe.getRenderableIds(!0).map(_e=>oe.getTileByID(_e));G[te]=he.slice(),ee=N[te]=he.sort((_e,pe)=>pe.tileID.overscaledZ-_e.tileID.overscaledZ||(_e.tileID.isLessThan(pe.tileID)?-1:1))}const se=this.crossTileSymbolIndex.addLayer(W,ee,s.center.lng,s.projection);R=R||se}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._mergedOrder),z=z||this._layerOrderChanged||_===0,this._layerOrderChanged&&this.fire(new i.z("neworder")),(z||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(i.q.now(),s.zoom))&&(this.pauseablePlacement=new Ko(s,this._mergedOrder,z,h,_,y,this.placement,this.fog&&s.projection.supportsFog?this.fog.state:null,this._buildingIndex),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._mergedOrder,this._mergedLayers,N,G,this.map.painter.scaleFactor),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(i.q.now()),F=!0),R&&this.pauseablePlacement.placement.setStale()),F||R){this._buildingIndex.onNewFrame(s.zoom);for(let Z=0;Z<this._mergedOrder.length;Z++){const W=this._mergedLayers[this._mergedOrder[Z]];if(W.type!=="symbol")continue;const te=this.isLayerClipped(W);this.placement.updateLayerOpacities(W,N[i.aC(W.source,W.scope)],Z,te?T:null)}}return{needsRerender:!this.pauseablePlacement.isDone()||this.placement.hasTransitions(i.q.now())}}_releaseSymbolFadeTiles(){for(const t in this._sourceCaches)this._sourceCaches[t].releaseSymbolFadeTiles()}addImport(t,s){this._checkLoaded();const h=this.stylesheet.imports=this.stylesheet.imports||[];if(h.findIndex(({id:y})=>y===t.id)!==-1)return void this.fire(new i.y(new Error(`Import with id '${t.id}' already exists in the map's style.`)));if(!s)return h.push(t),this._loadImports([t],!0);const _=h.findIndex(({id:y})=>y===s);return _===-1&&this.fire(new i.y(new Error(`Import with id "${s}" does not exist on this map.`))),this.stylesheet.imports=h.slice(0,_).concat(t).concat(h.slice(_)),this._loadImports([t],!0,s)}updateImport(t,s){this._checkLoaded();const h=this.stylesheet.imports||[],_=this.getImportIndex(t);return _===-1?this:typeof s=="string"?(this.setImportUrl(t,s),this):(s.url&&s.url!==h[_].url&&this.setImportUrl(t,s.url),i.bn(s.config,h[_].config)||this.setImportConfig(t,s.config),i.bn(s.data,h[_].data)||this.setImportData(t,s.data),this)}moveImport(t,s){this._checkLoaded();let h=this.stylesheet.imports||[];const _=this.getImportIndex(t);if(_===-1)return this;const y=this.getImportIndex(s);if(y===-1)return this;const T=h[_],z=this.fragments[_];return h=h.filter(({id:R})=>R!==t),this.fragments=this.fragments.filter(({id:R})=>R!==t),this.stylesheet.imports=h.slice(0,y).concat(T).concat(h.slice(y)),this.fragments=this.fragments.slice(0,y).concat(z).concat(this.fragments.slice(y)),this.mergeLayers(),this}setImportUrl(t,s){this._checkLoaded();const h=this.stylesheet.imports||[],_=this.getImportIndex(t);if(_===-1)return this;h[_].url=s;const y=this.fragments[_];return y.style=this._createFragmentStyle(h[_]),y.style.on("style.import.load",()=>this.mergeAll()),y.style.loadURL(s),this}setImportData(t,s){this._checkLoaded();const h=this.getImportIndex(t),_=this.stylesheet.imports||[];return h===-1?this:s?(this.fragments[h].style.setState(s),this._reloadImports(),this):(delete _[h].data,this.setImportUrl(t,_[h].url))}setImportConfig(t,s){this._checkLoaded();const h=this.getImportIndex(t),_=this.stylesheet.imports||[];if(h===-1)return this;s?_[h].config=s:delete _[h].config;const y=this.fragments[h],T=y.style.stylesheet&&y.style.stylesheet.schema;return y.config=s,y.style.updateConfig(s,T),this.updateConfigDependencies(),this}removeImport(t){this._checkLoaded();const s=this.stylesheet.imports||[],h=this.getImportIndex(t);h!==-1&&(s.splice(h,1),this.fragments[h].style._remove(),this.fragments.splice(h,1),this._reloadImports())}getImportIndex(t){const s=(this.stylesheet.imports||[]).findIndex(h=>h.id===t);return s===-1&&this.fire(new i.y(new Error(`Import '${t}' does not exist in the map's style and cannot be updated.`))),s}getLayer(t){return this._mergedLayers[t]}getSources(){const t=[];for(const s in this._mergedOtherSourceCaches){const h=this._mergedOtherSourceCaches[s];h&&t.push(h.getSource())}return t}getSource(t,s){const h=this.getSourceCache(t,s);return h&&h.getSource()}getLayerSource(t){const s=this.getLayerSourceCache(t);return s&&s.getSource()}getSourceCache(t,s){const h=i.aC(t,s);return this._mergedOtherSourceCaches[h]}getLayerSourceCache(t){const s=i.aC(t.source,t.scope);return t.type==="symbol"?this._mergedSymbolSourceCaches[s]:this._mergedOtherSourceCaches[s]}getSourceCaches(t){if(t==null)return Object.values(this._mergedSourceCaches);const s=[];return this._mergedOtherSourceCaches[t]&&s.push(this._mergedOtherSourceCaches[t]),this._mergedSymbolSourceCaches[t]&&s.push(this._mergedSymbolSourceCaches[t]),s}updateSourceCaches(){const t=this._changes.getUpdatedSourceCaches();for(const s in t){const h=t[s];h==="reload"?this.reloadSource(s):h==="clear"&&this.clearSource(s)}}updateLayers(t){const s=this._changes.getUpdatedPaintProperties();for(const h of s){const _=this.getLayer(h);_&&_.updateTransitions(t)}}getImages(t,s,h){this.imageManager.getImages(s.icons,s.scope,h),this._updateTilesForChangedImages();const _=y=>{y&&y.setDependencies(s.tileID.key,s.type,s.icons)};_(this._otherSourceCaches[s.source]),_(this._symbolSourceCaches[s.source])}rasterizeImages(t,s,h){this.imageManager.rasterizeImages(s,h)}getGlyphs(t,s,h){this.glyphManager.getGlyphs(s.stacks,s.scope,h)}getResource(t,s,h){return i.cy(s,h)}getOwnSourceCache(t){return this._otherSourceCaches[t]}getOwnLayerSourceCache(t){return t.type==="symbol"?this._symbolSourceCaches[t.source]:this._otherSourceCaches[t.source]}getOwnSourceCaches(t){const s=[];return this._otherSourceCaches[t]&&s.push(this._otherSourceCaches[t]),this._symbolSourceCaches[t]&&s.push(this._symbolSourceCaches[t]),s}_isSourceCacheLoaded(t){const s=this.getOwnSourceCaches(t);return s.length===0?(this.fire(new i.y(new Error(`There is no source with ID '${t}'`))),!1):s.every(h=>h.loaded())}has3DLayers(){return this._has3DLayers}hasSymbolLayers(){return this._hasSymbolLayers}hasCircleLayers(){return this._hasCircleLayers}isLayerClipped(t,s){if(!this._clipLayerPresent&&t.type!=="fill-extrusion")return!1;const h=t.type==="fill-extrusion"&&t.sourceLayer==="building";if(t.is3D()){if(h||s&&s.type==="batched-model"||t.type==="model")return!0}else if(t.type==="symbol")return!0;return!1}_clearWorkerCaches(){this.dispatcher.broadcast("clearCaches")}destroy(){this._clearWorkerCaches(),this.fragments.forEach(t=>{t.style._remove()}),this.terrainSetForDrapingOnly()&&(delete this.terrain,delete this.stylesheet.terrain)}}ur.getSourceType=function(c){return oo[c]},ur.setSourceType=function(c,t){oo[c]=t},ur.registerForPluginStateChange=i.ch;var sh=`
|
||
#define EPSILON 0.0000001
|
||
#define PI 3.141592653589793
|
||
#ifdef RENDER_CUTOFF
|
||
float cutoff_opacity(vec4 cutoff_params,float depth) {float near=cutoff_params.x;float far=cutoff_params.y;float cutoffStart=cutoff_params.z;float cutoffEnd=cutoff_params.w;float linearDepth=(depth-near)/(far-near);return clamp((linearDepth-cutoffStart)/(cutoffEnd-cutoffStart),0.0,1.0);}
|
||
#endif`,rh=`
|
||
out vec4 glFragColor;highp float unpack_depth(highp vec4 rgba_depth)
|
||
{const highp vec4 bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(rgba_depth,bit_shift)*2.0-1.0;}highp vec4 pack_depth(highp float ndc_z) {highp float depth=ndc_z*0.5+0.5;const highp vec4 bit_shift=vec4(255.0*255.0*255.0,255.0*255.0,255.0,1.0);const highp vec4 bit_mask =vec4(0.0,1.0/255.0,1.0/255.0,1.0/255.0);highp vec4 res=fract(depth*bit_shift);res-=res.xxyz*bit_mask;return res;}
|
||
#ifdef INDICATOR_CUTOUT
|
||
uniform vec3 u_indicator_cutout_centers;uniform vec4 u_indicator_cutout_params;
|
||
#endif
|
||
vec4 applyCutout(vec4 color,float height) {
|
||
#ifdef INDICATOR_CUTOUT
|
||
float verticalFadeRange=u_indicator_cutout_centers.z*0.25;float holeMinOpacity=mix(1.0,u_indicator_cutout_params.x,smoothstep(u_indicator_cutout_centers.z,u_indicator_cutout_centers.z+verticalFadeRange,height));float holeRadius=max(u_indicator_cutout_params.y,0.0);float holeAspectRatio=u_indicator_cutout_params.z;float fadeStart=u_indicator_cutout_params.w;float distA=distance(vec2(gl_FragCoord.x,gl_FragCoord.y*holeAspectRatio),vec2(u_indicator_cutout_centers[0],u_indicator_cutout_centers[1]*holeAspectRatio));return color*min(smoothstep(fadeStart,holeRadius,distA)+holeMinOpacity,1.0);
|
||
#else
|
||
return color;
|
||
#endif
|
||
}
|
||
#ifdef DEBUG_WIREFRAME
|
||
#define HANDLE_WIREFRAME_DEBUG \\
|
||
glFragColor=vec4(0.7,0.0,0.0,0.7); \\
|
||
gl_FragDepth=gl_FragCoord.z-0.0001;
|
||
#else
|
||
#define HANDLE_WIREFRAME_DEBUG
|
||
#endif
|
||
#ifdef RENDER_CUTOFF
|
||
uniform highp vec4 u_cutoff_params;in float v_cutoff_opacity;
|
||
#endif
|
||
vec4 textureLodCustom(sampler2D image,highp vec2 pos,highp vec2 lod_coord) {highp vec2 size=vec2(textureSize(image,0));highp vec2 dx=dFdx(lod_coord.xy*size);highp vec2 dy=dFdy(lod_coord.xy*size);highp float delta_max_sqr=max(dot(dx,dx),dot(dy,dy));highp float lod=0.5*log2(delta_max_sqr);return textureLod(image,pos,lod);}vec4 applyLUT(highp sampler3D lut,vec4 col) {vec3 size=vec3(textureSize(lut,0));vec3 uvw=(col.rbg*float(size-1.0)+0.5)/size;return vec4(texture(lut,uvw).rgb,col.a);}vec3 applyLUT(highp sampler3D lut,vec3 col) {return applyLUT(lut,vec4(col,1.0)).rgb;}`,xr=`
|
||
#define EXTENT 8192.0
|
||
#define RAD_TO_DEG 180.0/PI
|
||
#define DEG_TO_RAD PI/180.0
|
||
#define GLOBE_RADIUS EXTENT/PI/2.0
|
||
float wrap(float n,float min,float max) {float d=max-min;float w=mod(mod(n-min,d)+d,d)+min;return (w==min) ? max : w;}
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
vec3 mercator_tile_position(mat4 matrix,vec2 tile_anchor,vec3 tile_id,vec2 mercator_center) {
|
||
#ifndef PROJECTED_POS_ON_VIEWPORT
|
||
float tiles=tile_id.z;vec2 mercator=(tile_anchor/EXTENT+tile_id.xy)/tiles;mercator-=mercator_center;mercator.x=wrap(mercator.x,-0.5,0.5);vec4 mercator_tile=vec4(mercator.xy*EXTENT,EXTENT/(2.0*PI),1.0);mercator_tile=matrix*mercator_tile;return mercator_tile.xyz;
|
||
#else
|
||
return vec3(0.0);
|
||
#endif
|
||
}vec3 mix_globe_mercator(vec3 globe,vec3 mercator,float t) {return mix(globe,mercator,t);}mat3 globe_mercator_surface_vectors(vec3 pos_normal,vec3 up_dir,float zoom_transition) {vec3 normal=zoom_transition==0.0 ? pos_normal : normalize(mix(pos_normal,up_dir,zoom_transition));vec3 xAxis=normalize(vec3(normal.z,0.0,-normal.x));vec3 yAxis=normalize(cross(normal,xAxis));return mat3(xAxis,yAxis,normal);}
|
||
#endif
|
||
vec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(
|
||
unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0
|
||
);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const vec2 units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (units_to_pixels*pos+offset)/pattern_size;}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {return get_pattern_pos(pixel_coord_upper,pixel_coord_lower,pattern_size,vec2(tile_units_to_pixels),pos);}float mercatorXfromLng(float lng) {return (180.0+lng)/360.0;}float mercatorYfromLat(float lat) {return (180.0-(RAD_TO_DEG*log(tan(PI/4.0+lat/2.0*DEG_TO_RAD))))/360.0;}vec3 latLngToECEF(vec2 latLng) {latLng=DEG_TO_RAD*latLng;float cosLat=cos(latLng[0]);float sinLat=sin(latLng[0]);float cosLng=cos(latLng[1]);float sinLng=sin(latLng[1]);float sx=cosLat*sinLng*GLOBE_RADIUS;float sy=-sinLat*GLOBE_RADIUS;float sz=cosLat*cosLng*GLOBE_RADIUS;return vec3(sx,sy,sz);}
|
||
#ifdef RENDER_CUTOFF
|
||
uniform vec4 u_cutoff_params;out float v_cutoff_opacity;
|
||
#endif
|
||
const vec4 AWAY=vec4(-1000.0,-1000.0,-1000.0,1);const float skirtOffset=24575.0;vec3 decomposeToPosAndSkirt(vec2 posWithComposedSkirt)
|
||
{float skirt=float(posWithComposedSkirt.x >=skirtOffset);vec2 pos=posWithComposedSkirt-vec2(skirt*skirtOffset,0.0);return vec3(pos,skirt);}`,ea="in highp vec3 a_pos_3f;uniform lowp mat4 u_matrix;out highp vec3 v_uv;void main() {const mat3 half_neg_pi_around_x=mat3(1.0,0.0, 0.0,0.0,0.0,-1.0,0.0,1.0, 0.0);v_uv=half_neg_pi_around_x*a_pos_3f;vec4 pos=u_matrix*vec4(a_pos_3f,1.0);gl_Position=pos.xyww;}",oc=`
|
||
#define ELEVATION_SCALE 7.0
|
||
#define ELEVATION_OFFSET 450.0
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
uniform vec3 u_tile_tl_up;uniform vec3 u_tile_tr_up;uniform vec3 u_tile_br_up;uniform vec3 u_tile_bl_up;uniform float u_tile_up_scale;vec3 elevationVector(vec2 pos) {vec2 uv=pos/EXTENT;vec3 up=normalize(mix(
|
||
mix(u_tile_tl_up,u_tile_tr_up,uv.xxx),mix(u_tile_bl_up,u_tile_br_up,uv.xxx),uv.yyy));return up*u_tile_up_scale;}
|
||
#else
|
||
vec3 elevationVector(vec2 pos) { return vec3(0,0,1); }
|
||
#endif
|
||
#ifdef TERRAIN
|
||
uniform highp sampler2D u_dem;uniform highp sampler2D u_dem_prev;uniform vec2 u_dem_tl;uniform vec2 u_dem_tl_prev;uniform float u_dem_scale;uniform float u_dem_scale_prev;uniform float u_dem_size;uniform float u_dem_lerp;uniform float u_exaggeration;uniform float u_meter_to_dem;uniform mat4 u_label_plane_matrix_inv;vec4 tileUvToDemSample(vec2 uv,float dem_size,float dem_scale,vec2 dem_tl) {vec2 pos=dem_size*(uv*dem_scale+dem_tl)+1.0;vec2 f=fract(pos);return vec4((pos-f+0.5)/(dem_size+2.0),f);}float currentElevation(vec2 apos) {
|
||
#ifdef TERRAIN_DEM_FLOAT_FORMAT
|
||
vec2 pos=(u_dem_size*(apos/8192.0*u_dem_scale+u_dem_tl)+1.5)/(u_dem_size+2.0);return u_exaggeration*texture(u_dem,pos).r;
|
||
#else
|
||
float dd=1.0/(u_dem_size+2.0);vec4 r=tileUvToDemSample(apos/8192.0,u_dem_size,u_dem_scale,u_dem_tl);vec2 pos=r.xy;vec2 f=r.zw;float tl=texture(u_dem,pos).r;float tr=texture(u_dem,pos+vec2(dd,0)).r;float bl=texture(u_dem,pos+vec2(0,dd)).r;float br=texture(u_dem,pos+vec2(dd,dd)).r;return u_exaggeration*mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);
|
||
#endif
|
||
}float prevElevation(vec2 apos) {
|
||
#ifdef TERRAIN_DEM_FLOAT_FORMAT
|
||
vec2 pos=(u_dem_size*(apos/8192.0*u_dem_scale_prev+u_dem_tl_prev)+1.5)/(u_dem_size+2.0);return u_exaggeration*texture(u_dem_prev,pos).r;
|
||
#else
|
||
float dd=1.0/(u_dem_size+2.0);vec4 r=tileUvToDemSample(apos/8192.0,u_dem_size,u_dem_scale_prev,u_dem_tl_prev);vec2 pos=r.xy;vec2 f=r.zw;float tl=texture(u_dem_prev,pos).r;float tr=texture(u_dem_prev,pos+vec2(dd,0)).r;float bl=texture(u_dem_prev,pos+vec2(0,dd)).r;float br=texture(u_dem_prev,pos+vec2(dd,dd)).r;return u_exaggeration*mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);
|
||
#endif
|
||
}
|
||
#ifdef TERRAIN_VERTEX_MORPHING
|
||
float elevation(vec2 apos) {
|
||
#ifdef ZERO_EXAGGERATION
|
||
return 0.0;
|
||
#endif
|
||
float nextElevation=currentElevation(apos);float prevElevation=prevElevation(apos);return mix(prevElevation,nextElevation,u_dem_lerp);}
|
||
#else
|
||
float elevation(vec2 apos) {
|
||
#ifdef ZERO_EXAGGERATION
|
||
return 0.0;
|
||
#endif
|
||
return currentElevation(apos);}
|
||
#endif
|
||
vec4 fourSample(vec2 pos,vec2 off) {float tl=texture(u_dem,pos).r;float tr=texture(u_dem,pos+vec2(off.x,0.0)).r;float bl=texture(u_dem,pos+vec2(0.0,off.y)).r;float br=texture(u_dem,pos+off).r;return vec4(tl,tr,bl,br);}float flatElevation(vec2 pack) {vec2 apos=floor(pack/8.0);vec2 span=10.0*(pack-apos*8.0);vec2 uvTex=(apos-vec2(1.0,1.0))/8190.0;float size=u_dem_size+2.0;float dd=1.0/size;vec2 pos=u_dem_size*(uvTex*u_dem_scale+u_dem_tl)+1.0;vec2 f=fract(pos);pos=(pos-f+0.5)*dd;vec4 h=fourSample(pos,vec2(dd));float z=mix(mix(h.x,h.y,f.x),mix(h.z,h.w,f.x),f.y);vec2 w=floor(0.5*(span*u_meter_to_dem-1.0));vec2 d=dd*w;h=fourSample(pos-d,2.0*d+vec2(dd));vec4 diff=abs(h.xzxy-h.ywzw);vec2 slope=min(vec2(0.25),u_meter_to_dem*0.5*(diff.xz+diff.yw)/(2.0*w+vec2(1.0)));vec2 fix=slope*span;float base=z+max(fix.x,fix.y);return u_exaggeration*base;}float elevationFromUint16(float word) {return u_exaggeration*(word/ELEVATION_SCALE-ELEVATION_OFFSET);}
|
||
#else
|
||
float elevation(vec2 pos) { return 0.0; }
|
||
#endif
|
||
#ifdef DEPTH_OCCLUSION
|
||
uniform highp sampler2D u_depth;uniform highp vec2 u_depth_size_inv;uniform highp vec2 u_depth_range_unpack;uniform highp float u_occluder_half_size;uniform highp float u_occlusion_depth_offset;
|
||
#ifdef DEPTH_D24
|
||
float unpack_depth(float depth) {return depth*u_depth_range_unpack.x+u_depth_range_unpack.y;}vec4 unpack_depth4(vec4 depth) {return depth*u_depth_range_unpack.x+vec4(u_depth_range_unpack.y);}
|
||
#else
|
||
highp float unpack_depth_rgba(vec4 rgba_depth)
|
||
{const highp vec4 bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(rgba_depth,bit_shift)*2.0-1.0;}
|
||
#endif
|
||
bool isOccluded(vec4 frag) {vec3 coord=frag.xyz/frag.w;
|
||
#ifdef DEPTH_D24
|
||
float depth=unpack_depth(texture(u_depth,(coord.xy+1.0)*0.5).r);
|
||
#else
|
||
float depth=unpack_depth_rgba(texture(u_depth,(coord.xy+1.0)*0.5));
|
||
#endif
|
||
return coord.z+u_occlusion_depth_offset > depth;}highp vec4 getCornerDepths(vec2 coord) {highp vec3 df=vec3(u_occluder_half_size*u_depth_size_inv,0.0);highp vec2 uv=0.5*coord.xy+0.5;
|
||
#ifdef DEPTH_D24
|
||
highp vec4 depth=vec4(
|
||
texture(u_depth,uv-df.xz).r,texture(u_depth,uv+df.xz).r,texture(u_depth,uv-df.zy).r,texture(u_depth,uv+df.zy).r
|
||
);depth=unpack_depth4(depth);
|
||
#else
|
||
highp vec4 depth=vec4(
|
||
unpack_depth_rgba(texture(u_depth,uv-df.xz)),unpack_depth_rgba(texture(u_depth,uv+df.xz)),unpack_depth_rgba(texture(u_depth,uv-df.zy)),unpack_depth_rgba(texture(u_depth,uv+df.zy))
|
||
);
|
||
#endif
|
||
return depth;}highp float occlusionFadeMultiSample(vec4 frag) {highp vec3 coord=frag.xyz/frag.w;highp vec2 uv=0.5*coord.xy+0.5;int NX=3;int NY=4;highp vec2 df=u_occluder_half_size*u_depth_size_inv;highp vec2 oneStep=2.0*u_occluder_half_size*u_depth_size_inv/vec2(NX-1,NY-1);highp float res=0.0;for (int y=0; y < NY;++y) {for (int x=0; x < NX;++x) {
|
||
#ifdef DEPTH_D24
|
||
highp float depth=unpack_depth(texture(u_depth,uv-df+vec2(float(x)*oneStep.x,float(y)*oneStep.y)).r);
|
||
#else
|
||
highp float depth=unpack_depth_rgba(texture(u_depth,uv-df+vec2(float(x)*oneStep.x,float(y)*oneStep.y)));
|
||
#endif
|
||
res+=1.0-clamp(300.0*(coord.z+u_occlusion_depth_offset-depth),0.0,1.0);}}res=clamp(2.0*res/float(NX*NY)-0.5,0.0,1.0);return res;}highp float occlusionFade(vec4 frag) {highp vec3 coord=frag.xyz/frag.w;highp vec4 depth=getCornerDepths(coord.xy);return dot(vec4(0.25),vec4(1.0)-clamp(300.0*(vec4(coord.z+u_occlusion_depth_offset)-depth),0.0,1.0));}
|
||
#else
|
||
bool isOccluded(vec4 frag) { return false; }highp float occlusionFade(vec4 frag) { return 1.0; }highp float occlusionFadeMultiSample(vec4 frag) { return 1.0; }
|
||
#endif//DEPTH_OCCLUSION`,Jr=`#ifdef FOG
|
||
uniform mediump vec4 u_fog_color;uniform mediump vec2 u_fog_range;uniform mediump float u_fog_horizon_blend;uniform mediump mat4 u_fog_matrix;out vec3 v_fog_pos;float fog_range(float depth) {return (depth-u_fog_range[0])/(u_fog_range[1]-u_fog_range[0]);}float fog_horizon_blending(vec3 camera_dir) {float t=max(0.0,camera_dir.z/u_fog_horizon_blend);return u_fog_color.a*exp(-3.0*t*t);}float fog_opacity(float t) {const float decay=6.0;float falloff=1.0-min(1.0,exp(-decay*t));falloff*=falloff*falloff;return u_fog_color.a*min(1.0,1.00747*falloff);}vec3 fog_position(vec3 pos) {return (u_fog_matrix*vec4(pos,1.0)).xyz;}vec3 fog_position(vec2 pos) {return fog_position(vec3(pos,0.0));}float fog(vec3 pos) {float depth=length(pos);float opacity=fog_opacity(fog_range(depth));return opacity*fog_horizon_blending(pos/depth);}
|
||
#endif`,ac=`highp vec3 hash(highp vec2 p) {highp vec3 p3=fract(p.xyx*vec3(443.8975,397.2973,491.1871));p3+=dot(p3,p3.yxz+19.19);return fract((p3.xxy+p3.yzz)*p3.zyx);}vec3 dither(vec3 color,highp vec2 seed) {vec3 rnd=hash(seed)+hash(seed+0.59374)-0.5;return color+rnd/255.0;}
|
||
#ifdef FOG
|
||
uniform mediump vec4 u_fog_color;uniform mediump vec2 u_fog_range;uniform mediump float u_fog_horizon_blend;uniform mediump vec2 u_fog_vertical_limit;uniform mediump float u_fog_temporal_offset;in vec3 v_fog_pos;uniform highp vec3 u_frustum_tl;uniform highp vec3 u_frustum_tr;uniform highp vec3 u_frustum_br;uniform highp vec3 u_frustum_bl;uniform highp vec3 u_globe_pos;uniform highp float u_globe_radius;uniform highp vec2 u_viewport;uniform float u_globe_transition;uniform int u_is_globe;float fog_range(float depth) {return (depth-u_fog_range[0])/(u_fog_range[1]-u_fog_range[0]);}float fog_horizon_blending(vec3 camera_dir) {float t=max(0.0,camera_dir.z/u_fog_horizon_blend);return u_fog_color.a*exp(-3.0*t*t);}float fog_opacity(float t) {const float decay=6.0;float falloff=1.0-min(1.0,exp(-decay*t));falloff*=falloff*falloff;return u_fog_color.a*min(1.0,1.00747*falloff);}float globe_glow_progress() {highp vec2 uv=gl_FragCoord.xy/u_viewport;highp vec3 ray_dir=mix(
|
||
mix(u_frustum_tl,u_frustum_tr,uv.x),mix(u_frustum_bl,u_frustum_br,uv.x),1.0-uv.y);highp vec3 dir=normalize(ray_dir);highp vec3 closest_point=dot(u_globe_pos,dir)*dir;highp float sdf=length(closest_point-u_globe_pos)/u_globe_radius;return sdf+PI*0.5;}float fog_opacity(vec3 pos) {float depth=length(pos);return fog_opacity(fog_range(depth));}vec3 fog_apply(vec3 color,vec3 pos,float opacity_limit) {float depth=length(pos);float opacity;if (u_is_globe==1) {float glow_progress=globe_glow_progress();float t=mix(glow_progress,depth,u_globe_transition);opacity=fog_opacity(fog_range(t));} else {opacity=fog_opacity(fog_range(depth));opacity*=fog_horizon_blending(pos/depth);}return mix(color,u_fog_color.rgb,min(opacity,opacity_limit));}vec3 fog_apply(vec3 color,vec3 pos) {return fog_apply(color,pos,1.0);}vec4 fog_apply_from_vert(vec4 color,float fog_opac) {float alpha=EPSILON+color.a;color.rgb=mix(color.rgb/alpha,u_fog_color.rgb,fog_opac)*alpha;return color;}vec3 fog_apply_sky_gradient(vec3 camera_ray,vec3 sky_color) {float horizon_blend=fog_horizon_blending(normalize(camera_ray));return mix(sky_color,u_fog_color.rgb,horizon_blend);}vec4 fog_apply_premultiplied(vec4 color,vec3 pos) {float alpha=EPSILON+color.a;color.rgb=fog_apply(color.rgb/alpha,pos)*alpha;return color;}vec4 fog_apply_premultiplied(vec4 color,vec3 pos,float heightMeters) {float verticalProgress=(u_fog_vertical_limit.x > 0.0 || u_fog_vertical_limit.y > 0.0) ? smoothstep(u_fog_vertical_limit.x,u_fog_vertical_limit.y,heightMeters) : 0.0;float opacityLimit=1.0-smoothstep(0.9,1.0,fog_opacity(pos));return mix(fog_apply_premultiplied(color,pos),color,min(verticalProgress,opacityLimit));}vec3 fog_dither(vec3 color) {
|
||
#ifdef FOG_DITHERING
|
||
vec2 dither_seed=gl_FragCoord.xy+u_fog_temporal_offset;return dither(color,dither_seed);
|
||
#else
|
||
return color;
|
||
#endif
|
||
}vec4 fog_dither(vec4 color) {return vec4(fog_dither(color.rgb),color.a);}
|
||
#endif`,lc=`#ifdef RASTER_ARRAY
|
||
uniform highp sampler2D u_image0;uniform sampler2D u_image1;const vec4 NODATA=vec4(1);ivec4 _raTexLinearCoord(highp vec2 texCoord,highp vec2 texResolution,out highp vec2 fxy) {texCoord=texCoord*texResolution-0.5;fxy=fract(texCoord);texCoord-=fxy;return ivec4(texCoord.xxyy+vec2(1.5,0.5).xyxy);}vec2 _raTexLinearMix(highp vec2 fxy,highp vec4 colorMix,highp float colorOffset,highp vec4 t00,highp vec4 t10,highp vec4 t01,highp vec4 t11) {vec2 c00=t00==NODATA ? vec2(0) : vec2(colorOffset+dot(t00,colorMix),1);vec2 c10=t10==NODATA ? vec2(0) : vec2(colorOffset+dot(t10,colorMix),1);vec2 c01=t01==NODATA ? vec2(0) : vec2(colorOffset+dot(t01,colorMix),1);vec2 c11=t11==NODATA ? vec2(0) : vec2(colorOffset+dot(t11,colorMix),1);return mix(mix(c01,c11,fxy.x),mix(c00,c10,fxy.x),fxy.y);}vec2 raTexture2D_image0_linear(highp vec2 texCoord,highp vec2 texResolution,highp vec4 colorMix,highp float colorOffset) {vec2 fxy;ivec4 c=_raTexLinearCoord(texCoord,texResolution,fxy);return _raTexLinearMix(fxy,colorMix,colorOffset,texelFetch(u_image0,c.yz,0),texelFetch(u_image0,c.xz,0),texelFetch(u_image0,c.yw,0),texelFetch(u_image0,c.xw,0)
|
||
);}vec2 raTexture2D_image1_linear(highp vec2 texCoord,highp vec2 texResolution,highp vec4 colorMix,highp float colorOffset) {vec2 fxy;ivec4 c=_raTexLinearCoord(texCoord,texResolution,fxy);return _raTexLinearMix(fxy,colorMix,colorOffset,texelFetch(u_image1,c.yz,0),texelFetch(u_image1,c.xz,0),texelFetch(u_image1,c.yw,0),texelFetch(u_image1,c.xw,0)
|
||
);}vec2 raTexture2D_image0_nearest(highp vec2 texCoord,highp vec2 texResolution,highp vec4 colorMix,highp float colorOffset) {vec4 t=texelFetch(u_image0,ivec2(texCoord*texResolution),0);return t==NODATA ? vec2(0) : vec2(colorOffset+dot(t,colorMix),1);}vec2 raTexture2D_image1_nearest(highp vec2 texCoord,highp vec2 texResolution,highp vec4 colorMix,highp float colorOffset) {vec4 t=texelFetch(u_image1,ivec2(texCoord*texResolution),0);return t==NODATA ? vec2(0) : vec2(colorOffset+dot(t,colorMix),1);}
|
||
#endif`,Ta=`#ifdef RASTER_ARRAY
|
||
uniform sampler2D u_velocity;uniform mediump vec2 u_velocity_res;uniform mediump float u_max_speed;const vec4 NO_DATA=vec4(1);const vec2 INVALID_VELOCITY=vec2(-1);uniform highp vec2 u_uv_offset;uniform highp float u_data_offset;uniform highp vec2 u_data_scale;ivec4 rasterArrayLinearCoord(highp vec2 texCoord,highp vec2 texResolution,out highp vec2 fxy) {texCoord=texCoord*texResolution-0.5;fxy=fract(texCoord);texCoord-=fxy;return ivec4(texCoord.xxyy+vec2(1.5,0.5).xyxy);}highp vec2 lookup_velocity(highp vec2 uv) {uv=u_uv_offset.x+u_uv_offset.y*uv;highp vec2 fxy;ivec4 c=rasterArrayLinearCoord(uv,u_velocity_res,fxy);highp vec4 tl=texelFetch(u_velocity,c.yz,0);highp vec4 tr=texelFetch(u_velocity,c.xz,0);highp vec4 bl=texelFetch(u_velocity,c.yw,0);highp vec4 br=texelFetch(u_velocity,c.xw,0);if (tl==NO_DATA) {return INVALID_VELOCITY;}if (tr==NO_DATA) {return INVALID_VELOCITY;}if (bl==NO_DATA) {return INVALID_VELOCITY;}if (br==NO_DATA) {return INVALID_VELOCITY;}highp vec4 t=mix(mix(bl,br,fxy.x),mix(tl,tr,fxy.x),fxy.y);highp vec2 velocity=u_data_offset+vec2(dot(t.rg,u_data_scale),dot(t.ba,u_data_scale));velocity.y=-velocity.y;velocity/=max(u_max_speed,length(velocity));return velocity;}
|
||
#endif
|
||
uniform highp float u_particle_pos_scale;uniform highp vec2 u_particle_pos_offset;highp vec4 pack_pos_to_rgba(highp vec2 p) {highp vec2 v=(p+u_particle_pos_offset)/u_particle_pos_scale;highp vec4 r=vec4(v.x,fract(v.x*255.0),v.y,fract(v.y*255.0));return vec4(r.x-r.y/255.0,r.y,r.z-r.w/255.0,r.w);}highp vec2 unpack_pos_from_rgba(highp vec4 v) {v=floor(v*255.0+0.5)/255.0;highp vec2 p=vec2(v.x+(v.y/255.0),v.z+(v.w/255.0));return u_particle_pos_scale*p-u_particle_pos_offset;}`,lo=`#ifdef RENDER_SHADOWS
|
||
uniform mediump vec3 u_shadow_direction;uniform highp vec3 u_shadow_normal_offset;vec3 shadow_normal_offset(vec3 normal) {float tileInMeters=u_shadow_normal_offset[0];vec3 n=vec3(-normal.xy,tileInMeters*normal.z);float dotScale=min(1.0-dot(normal,u_shadow_direction),1.0)*0.5+0.5;return n*dotScale;}vec3 shadow_normal_offset_model(vec3 normal) {vec3 transformed_normal=vec3(-normal.xy,normal.z);float NDotL=dot(normalize(transformed_normal),u_shadow_direction);float dotScale=min(1.0-NDotL,1.0)*0.5+0.5;return normal*dotScale;}float shadow_normal_offset_multiplier0() {return u_shadow_normal_offset[1];}float shadow_normal_offset_multiplier1() {return u_shadow_normal_offset[2];}
|
||
#endif//RENDER_SHADOWS`,Il=`#ifdef RENDER_SHADOWS
|
||
#ifdef DEPTH_TEXTURE
|
||
uniform highp sampler2D u_shadowmap_0;uniform highp sampler2D u_shadowmap_1;
|
||
#else
|
||
uniform sampler2D u_shadowmap_0;uniform sampler2D u_shadowmap_1;
|
||
#endif
|
||
uniform float u_shadow_intensity;uniform float u_shadow_map_resolution;uniform float u_shadow_texel_size;uniform highp vec3 u_shadow_normal_offset;uniform vec2 u_fade_range;uniform mediump vec3 u_shadow_direction;uniform highp vec3 u_shadow_bias;highp float shadow_sample_1(highp vec2 uv,highp float compare) {highp float shadow_depth;
|
||
#ifdef DEPTH_TEXTURE
|
||
shadow_depth=texture(u_shadowmap_1,uv).r;
|
||
#else
|
||
shadow_depth=unpack_depth(texture(u_shadowmap_1,uv))*0.5+0.5;
|
||
#endif
|
||
return step(shadow_depth,compare);}highp float shadow_sample_0(highp vec2 uv,highp float compare) {highp float shadow_depth;
|
||
#ifdef DEPTH_TEXTURE
|
||
shadow_depth=texture(u_shadowmap_0,uv).r;
|
||
#else
|
||
shadow_depth=unpack_depth(texture(u_shadowmap_0,uv))*0.5+0.5;
|
||
#endif
|
||
return step(shadow_depth,compare);}float shadow_occlusion_1(highp vec4 pos,highp float bias) {highp vec2 uv=pos.xy;return shadow_sample_1(uv,pos.z-bias);}float shadow_occlusion_0(highp vec4 pos,highp float bias) {highp float compare0=pos.z-bias;
|
||
#ifdef TEXTURE_GATHER
|
||
highp vec2 uv=pos.xy;highp vec4 samples=textureGather(u_shadowmap_0,uv,0);lowp vec4 stepSamples=step(samples,vec4(compare0));
|
||
#else
|
||
highp vec2 uv00=pos.xy-vec2(0.5*u_shadow_texel_size);highp vec2 uv10=uv00+vec2(u_shadow_texel_size,0.0);highp vec2 uv01=uv00+vec2(0.0,u_shadow_texel_size);highp vec2 uv11=uv01+vec2(u_shadow_texel_size,0.0);lowp vec4 stepSamples=vec4(
|
||
shadow_sample_0(uv01,compare0),shadow_sample_0(uv11,compare0),shadow_sample_0(uv10,compare0),shadow_sample_0(uv00,compare0)
|
||
);
|
||
#endif
|
||
vec2 f=fract(pos.xy*u_shadow_map_resolution-vec2(0.5));lowp vec2 lerpx=mix(stepSamples.wx,stepSamples.zy,f.xx);return mix(lerpx.x,lerpx.y,f.y);}float shadow_occlusion(highp vec4 light_view_pos0,highp vec4 light_view_pos1,float view_depth,highp float bias) {
|
||
#ifdef SHADOWS_SINGLE_CASCADE
|
||
light_view_pos0.xyz/=light_view_pos0.w;vec2 abs_bounds=abs(light_view_pos0.xy);if (abs_bounds.x >=1.0 || abs_bounds.y >=1.0) {return 0.0;}light_view_pos0.xyz=light_view_pos0.xyz*0.5+0.5;return shadow_occlusion_0(light_view_pos0,bias);
|
||
#else
|
||
light_view_pos0.xyz/=light_view_pos0.w;light_view_pos1.xyz/=light_view_pos1.w;vec4 uv=vec4(light_view_pos0.xy,light_view_pos1.xy);vec4 abs_bounds=abs(uv);if (abs_bounds.x < 1.0 && abs_bounds.y < 1.0) {light_view_pos0.xyz=light_view_pos0.xyz*0.5+0.5;return shadow_occlusion_0(light_view_pos0,bias);}if (abs_bounds.z >=1.0 || abs_bounds.w >=1.0) {return 0.0;}light_view_pos1.xyz=light_view_pos1.xyz*0.5+0.5;float occlusion1=shadow_occlusion_1(light_view_pos1,bias);return mix(occlusion1,0.0,smoothstep(u_fade_range.x,u_fade_range.y,view_depth));
|
||
#endif
|
||
}highp float calculate_shadow_bias(float NDotL) {
|
||
#ifdef NORMAL_OFFSET
|
||
return 0.5*u_shadow_bias.x;
|
||
#else
|
||
return 0.5*(u_shadow_bias.x+clamp(u_shadow_bias.y*tan(acos(NDotL)),0.0,u_shadow_bias.z));
|
||
#endif
|
||
}float shadowed_light_factor_normal(vec3 N,highp vec4 light_view_pos0,highp vec4 light_view_pos1,float view_depth) {float NDotL=dot(N,u_shadow_direction);float bias=calculate_shadow_bias(NDotL);float occlusion=shadow_occlusion(light_view_pos0,light_view_pos1,view_depth,bias);return mix(0.0,(1.0-(u_shadow_intensity*occlusion))*NDotL,step(0.0,NDotL));}float shadowed_light_factor_normal_opacity(vec3 N,highp vec4 light_view_pos0,highp vec4 light_view_pos1,float view_depth,float shadow_opacity) {float NDotL=dot(N,u_shadow_direction);float bias=calculate_shadow_bias(NDotL);float occlusion=shadow_occlusion(light_view_pos0,light_view_pos1,view_depth,bias)*shadow_opacity;return mix(0.0,(1.0-(u_shadow_intensity*occlusion))*NDotL,step(0.0,NDotL));}float shadowed_light_factor_normal_unbiased(vec3 N,highp vec4 light_view_pos0,highp vec4 light_view_pos1,float view_depth) {float NDotL=dot(N,u_shadow_direction);float bias=0.0;float occlusion=shadow_occlusion(light_view_pos0,light_view_pos1,view_depth,bias);return mix(0.0,(1.0-(u_shadow_intensity*occlusion))*NDotL,step(0.0,NDotL));}highp vec2 compute_receiver_plane_depth_bias(highp vec3 pos_dx,highp vec3 pos_dy)
|
||
{highp vec2 biasUV=vec2(
|
||
pos_dy.y*pos_dx.z-pos_dx.y*pos_dy.z,pos_dx.x*pos_dy.z-pos_dy.x*pos_dx.z);biasUV*=1.0/((pos_dx.x*pos_dy.y)-(pos_dx.y*pos_dy.x));return biasUV;}float shadowed_light_factor_plane_bias(highp vec4 light_view_pos0,highp vec4 light_view_pos1,float view_depth) {highp vec3 light_view_pos0_xyz=light_view_pos0.xyz/light_view_pos0.w*0.5+0.5;highp vec3 light_view_pos0_ddx=dFdx(light_view_pos0_xyz);highp vec3 light_view_pos0_ddy=dFdy(light_view_pos0_xyz);highp vec2 plane_depth_bias=compute_receiver_plane_depth_bias(light_view_pos0_ddx,light_view_pos0_ddy);highp float bias=dot(vec2(u_shadow_texel_size,u_shadow_texel_size),plane_depth_bias)+0.0001;float occlusion=shadow_occlusion(light_view_pos0,light_view_pos1,view_depth,bias);return 1.0-(u_shadow_intensity*occlusion);}float shadowed_light_factor(highp vec4 light_view_pos0,highp vec4 light_view_pos1,float view_depth) {float bias=0.0;float occlusion=shadow_occlusion(light_view_pos0,light_view_pos1,view_depth,bias);return 1.0-(u_shadow_intensity*occlusion);}float shadow_occlusion(float ndotl,highp vec4 light_view_pos0,highp vec4 light_view_pos1,float view_depth) {float bias=calculate_shadow_bias(ndotl);return shadow_occlusion(light_view_pos0,light_view_pos1,view_depth,bias);}
|
||
#endif`;const Fr=[];ho(sh,Fr),ho(xr,Fr),ho(rh,Fr);const co={"_prelude_fog.vertex.glsl":Jr,"_prelude_terrain.vertex.glsl":oc,"_prelude_shadow.vertex.glsl":lo,"_prelude_fog.fragment.glsl":ac,"_prelude_shadow.fragment.glsl":Il,"_prelude_lighting.glsl":`
|
||
#ifdef LIGHTING_3D_MODE
|
||
uniform mediump vec3 u_lighting_ambient_color;uniform mediump vec3 u_lighting_directional_dir;uniform mediump vec3 u_lighting_directional_color;uniform mediump vec3 u_ground_radiance;float calculate_ambient_directional_factor(vec3 normal) {float NdotL=dot(normal,u_lighting_directional_dir);const float factor_reduction_max=0.3;float dir_luminance=dot(u_lighting_directional_color,vec3(0.2126,0.7152,0.0722));float directional_factor_min=1.0-factor_reduction_max*min(dir_luminance,1.0);float ambient_directional_factor=mix(directional_factor_min,1.0,min((NdotL+1.0),1.0));const float vertical_factor_min=0.92;float vertical_factor=mix(vertical_factor_min,1.0,normal.z*0.5+0.5);return vertical_factor*ambient_directional_factor;}vec3 linearProduct(vec3 srgbIn,vec3 k) {return srgbIn*pow(k,vec3(1./2.2));}vec3 apply_lighting(vec3 color,vec3 normal,float dir_factor) {float ambient_directional_factor=calculate_ambient_directional_factor(normal);vec3 ambient_contrib=ambient_directional_factor*u_lighting_ambient_color;vec3 directional_contrib=u_lighting_directional_color*dir_factor;return linearProduct(color,ambient_contrib+directional_contrib);}vec4 apply_lighting(vec4 color,vec3 normal,float dir_factor) {return vec4(apply_lighting(color.rgb,normal,dir_factor),color.a);}vec3 apply_lighting(vec3 color,vec3 normal) {float dir_factor=max(dot(normal,u_lighting_directional_dir),0.0);return apply_lighting(color.rgb,normal,dir_factor);}vec4 apply_lighting(vec4 color,vec3 normal) {float dir_factor=max(dot(normal,u_lighting_directional_dir),0.0);return vec4(apply_lighting(color.rgb,normal,dir_factor),color.a);}vec3 apply_lighting_ground(vec3 color) {return color*u_ground_radiance;}vec4 apply_lighting_ground(vec4 color) {return vec4(apply_lighting_ground(color.rgb),color.a);}float calculate_NdotL(vec3 normal) {const float ext=0.70710678118;return (clamp(dot(normal,u_lighting_directional_dir),-ext,1.0)+ext)/(1.0+ext);}vec4 apply_lighting_with_emission_ground(vec4 color,float emissive_strength) {return mix(apply_lighting_ground(color),color,emissive_strength);}vec3 compute_flood_lighting(vec3 flood_light_color,float fully_occluded_factor,float occlusion,vec3 ground_shadow_factor) {vec3 fully_occluded_color=flood_light_color*mix(ground_shadow_factor,vec3(1.0),fully_occluded_factor);float occlusion_ramp=smoothstep(0.0,0.2,1.0-occlusion);return mix(fully_occluded_color,flood_light_color,occlusion_ramp);}vec3 compute_emissive_draped(vec3 unlit_color,float fully_occluded_factor,float occlusion,vec3 ground_shadow_factor) {vec3 fully_occluded_color=unlit_color*mix(ground_shadow_factor,vec3(1.0),fully_occluded_factor);return mix(fully_occluded_color,unlit_color,1.0-occlusion);}
|
||
#endif//LIGHTING_3D_MODE`,"_prelude_raster_array.glsl":lc,"_prelude_raster_particle.glsl":Ta},ta={};Ti("",oc),Ti(ac,Jr),Ti(Il,lo),Ti(lc,""),Ti(Ta,"");const cc=Ti(rh,xr),Qr=sh;var Ll={background:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
uniform vec4 u_color;uniform float u_opacity;
|
||
#ifdef LIGHTING_3D_MODE
|
||
in vec4 v_color;
|
||
#endif
|
||
void main() {vec4 out_color;
|
||
#ifdef LIGHTING_3D_MODE
|
||
out_color=v_color;
|
||
#else
|
||
out_color=u_color;
|
||
#endif
|
||
#ifdef FOG
|
||
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
|
||
#endif
|
||
glFragColor=out_color*u_opacity;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
in vec2 a_pos;uniform mat4 u_matrix;
|
||
#ifdef LIGHTING_3D_MODE
|
||
uniform mediump vec4 u_color;out vec4 v_color;uniform float u_emissive_strength;
|
||
#endif
|
||
void main() {gl_Position=u_matrix*vec4(a_pos,0,1);
|
||
#ifdef LIGHTING_3D_MODE
|
||
v_color=apply_lighting_with_emission_ground(u_color,u_emissive_strength);
|
||
#endif
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(a_pos);
|
||
#endif
|
||
}`),backgroundPattern:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
uniform vec2 u_pattern_tl;uniform vec2 u_pattern_br;uniform vec2 u_texsize;uniform float u_opacity;uniform float u_emissive_strength;uniform sampler2D u_image;in highp vec2 v_pos;void main() {highp vec2 imagecoord=mod(v_pos,1.0);highp vec2 pos=mix(u_pattern_tl/u_texsize,u_pattern_br/u_texsize,imagecoord);vec4 out_color=textureLodCustom(u_image,pos,v_pos);
|
||
#ifdef LIGHTING_3D_MODE
|
||
out_color=apply_lighting_with_emission_ground(out_color,u_emissive_strength);
|
||
#endif
|
||
#ifdef FOG
|
||
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
|
||
#endif
|
||
glFragColor=out_color*u_opacity;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
uniform mat4 u_matrix;uniform vec2 u_pattern_size;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec2 u_pattern_units_to_pixels;in vec2 a_pos;out highp vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_pattern_size,u_pattern_units_to_pixels,a_pos);
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(a_pos);
|
||
#endif
|
||
}`),circle:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
in vec3 v_data;in float v_visibility;
|
||
#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define mediump float radius
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define highp vec4 stroke_color
|
||
#pragma mapbox: define mediump float stroke_width
|
||
#pragma mapbox: define lowp float stroke_opacity
|
||
uniform float u_emissive_strength;void main() {
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize mediump float radius
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize highp vec4 stroke_color
|
||
#pragma mapbox: initialize mediump float stroke_width
|
||
#pragma mapbox: initialize lowp float stroke_opacity
|
||
vec2 extrude=v_data.xy;float blur_positive=blur < 0.0 ? 0.0 : 1.0;lowp float antialiasblur=v_data.z;float extrude_length=length(extrude)+antialiasblur*(1.0-blur_positive);float antialiased_blur=-max(abs(blur),antialiasblur);float opacity_t=smoothstep((1.0-blur_positive)*antialiased_blur,blur_positive*antialiased_blur,extrude_length-1.0)-smoothstep(0.0,antialiasblur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(
|
||
antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width)
|
||
);vec4 out_color=mix(color*opacity,stroke_color*stroke_opacity,color_t);
|
||
#ifdef LIGHTING_3D_MODE
|
||
out_color=apply_lighting_with_emission_ground(out_color,u_emissive_strength);
|
||
#endif
|
||
#ifdef FOG
|
||
out_color=fog_apply_premultiplied(out_color,v_fog_pos);
|
||
#endif
|
||
glFragColor=out_color*(v_visibility*opacity_t);
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
}`,`#include "_prelude_fog.vertex.glsl"
|
||
#include "_prelude_terrain.vertex.glsl"
|
||
#define NUM_VISIBILITY_RINGS 2
|
||
#define INV_SQRT2 0.70710678
|
||
#define ELEVATION_BIAS 0.0001
|
||
#define NUM_SAMPLES_PER_RING 16
|
||
uniform mat4 u_matrix;uniform mat2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;in vec2 a_pos;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
in vec3 a_pos_3;in vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;
|
||
#endif
|
||
out vec3 v_data;out float v_visibility;
|
||
#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define mediump float radius
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define highp vec4 stroke_color
|
||
#pragma mapbox: define mediump float stroke_width
|
||
#pragma mapbox: define lowp float stroke_opacity
|
||
vec2 calc_offset(vec2 extrusion,float radius,float stroke_width, float view_scale) {return extrusion*(radius+stroke_width)*u_extrude_scale*view_scale;}float cantilevered_elevation(vec2 pos,float radius,float stroke_width,float view_scale) {vec2 c1=pos+calc_offset(vec2(-1,-1),radius,stroke_width,view_scale);vec2 c2=pos+calc_offset(vec2(1,-1),radius,stroke_width,view_scale);vec2 c3=pos+calc_offset(vec2(1,1),radius,stroke_width,view_scale);vec2 c4=pos+calc_offset(vec2(-1,1),radius,stroke_width,view_scale);float h1=elevation(c1)+ELEVATION_BIAS;float h2=elevation(c2)+ELEVATION_BIAS;float h3=elevation(c3)+ELEVATION_BIAS;float h4=elevation(c4)+ELEVATION_BIAS;return max(h4,max(h3,max(h1,h2)));}float circle_elevation(vec2 pos) {
|
||
#if defined(TERRAIN)
|
||
return elevation(pos)+ELEVATION_BIAS;
|
||
#else
|
||
return 0.0;
|
||
#endif
|
||
}vec4 project_vertex(vec2 extrusion,vec4 world_center,vec4 projected_center,float radius,float stroke_width, float view_scale,mat3 surface_vectors) {vec2 sample_offset=calc_offset(extrusion,radius,stroke_width,view_scale);
|
||
#ifdef PITCH_WITH_MAP
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
return u_matrix*( world_center+vec4(sample_offset.x*surface_vectors[0]+sample_offset.y*surface_vectors[1],0) );
|
||
#else
|
||
return u_matrix*( world_center+vec4(sample_offset,0,0) );
|
||
#endif
|
||
#else
|
||
return projected_center+vec4(sample_offset,0,0);
|
||
#endif
|
||
}float get_sample_step() {
|
||
#ifdef PITCH_WITH_MAP
|
||
return 2.0*PI/float(NUM_SAMPLES_PER_RING);
|
||
#else
|
||
return PI/float(NUM_SAMPLES_PER_RING);
|
||
#endif
|
||
}void main(void) {
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize mediump float radius
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize highp vec4 stroke_color
|
||
#pragma mapbox: initialize mediump float stroke_width
|
||
#pragma mapbox: initialize lowp float stroke_opacity
|
||
vec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);vec4 world_center;mat3 surface_vectors;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
vec3 pos_normal_3=a_pos_normal_3/16384.0;surface_vectors=globe_mercator_surface_vectors(pos_normal_3,u_up_dir,u_zoom_transition);vec3 surface_extrusion=extrude.x*surface_vectors[0]+extrude.y*surface_vectors[1];vec3 globe_elevation=elevationVector(circle_center)*circle_elevation(circle_center);vec3 globe_pos=a_pos_3+surface_extrusion+globe_elevation;vec3 mercator_elevation=u_up_dir*u_tile_up_scale*circle_elevation(circle_center);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,circle_center,u_tile_id,u_merc_center)+surface_extrusion+mercator_elevation;vec3 pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);world_center=vec4(pos,1);
|
||
#else
|
||
surface_vectors=mat3(1.0);float height=circle_elevation(circle_center);world_center=vec4(circle_center,height,1);
|
||
#endif
|
||
vec4 projected_center=u_matrix*world_center;float view_scale=0.0;
|
||
#ifdef PITCH_WITH_MAP
|
||
#ifdef SCALE_WITH_MAP
|
||
view_scale=1.0;
|
||
#else
|
||
view_scale=projected_center.w/u_camera_to_center_distance;
|
||
#endif
|
||
#else
|
||
#ifdef SCALE_WITH_MAP
|
||
view_scale=u_camera_to_center_distance;
|
||
#else
|
||
view_scale=projected_center.w;
|
||
#endif
|
||
#endif
|
||
gl_Position=project_vertex(extrude,world_center,projected_center,radius,stroke_width,view_scale,surface_vectors);float visibility=0.0;
|
||
#ifdef TERRAIN
|
||
float step=get_sample_step();vec4 occlusion_world_center;vec4 occlusion_projected_center;
|
||
#ifdef PITCH_WITH_MAP
|
||
float cantilevered_height=cantilevered_elevation(circle_center,radius,stroke_width,view_scale);occlusion_world_center=vec4(circle_center,cantilevered_height,1);occlusion_projected_center=u_matrix*occlusion_world_center;
|
||
#else
|
||
occlusion_world_center=world_center;occlusion_projected_center=projected_center;
|
||
#endif
|
||
for(int ring=0; ring < NUM_VISIBILITY_RINGS; ring++) {float scale=(float(ring)+1.0)/float(NUM_VISIBILITY_RINGS);for(int i=0; i < NUM_SAMPLES_PER_RING; i++) {vec2 extrusion=vec2(cos(step*float(i)),-sin(step*float(i)))*scale;vec4 frag_pos=project_vertex(extrusion,occlusion_world_center,occlusion_projected_center,radius,stroke_width,view_scale,surface_vectors);visibility+=float(!isOccluded(frag_pos));}}visibility/=float(NUM_VISIBILITY_RINGS)*float(NUM_SAMPLES_PER_RING);
|
||
#else
|
||
visibility=1.0;
|
||
#endif
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
visibility=1.0;
|
||
#endif
|
||
v_visibility=visibility;lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(world_center.xyz);
|
||
#endif
|
||
}`),clippingMask:Ti("void main() {glFragColor=vec4(1.0);}","in vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),heatmap:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
uniform highp float u_intensity;in vec2 v_extrude;
|
||
#pragma mapbox: define highp float weight
|
||
#define GAUSS_COEF 0.3989422804014327
|
||
void main() {
|
||
#pragma mapbox: initialize highp float weight
|
||
float d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);glFragColor=vec4(val,1.0,1.0,1.0);
|
||
#ifdef FOG
|
||
if (u_is_globe==0) {glFragColor.r*=pow(1.0-fog_opacity(v_fog_pos),2.0);}
|
||
#endif
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_terrain.vertex.glsl"
|
||
#include "_prelude_fog.vertex.glsl"
|
||
uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;in vec2 a_pos;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
in vec3 a_pos_3;in vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;
|
||
#endif
|
||
out vec2 v_extrude;
|
||
#pragma mapbox: define highp float weight
|
||
#pragma mapbox: define mediump float radius
|
||
const highp float ZERO=1.0/255.0/16.0;
|
||
#define GAUSS_COEF 0.3989422804014327
|
||
void main(void) {
|
||
#pragma mapbox: initialize highp float weight
|
||
#pragma mapbox: initialize mediump float radius
|
||
vec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec2 tilePos=floor(a_pos*0.5);vec3 pos;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
vec3 pos_normal_3=a_pos_normal_3/16384.0;mat3 surface_vectors=globe_mercator_surface_vectors(pos_normal_3,u_up_dir,u_zoom_transition);vec3 surface_extrusion=extrude.x*surface_vectors[0]+extrude.y*surface_vectors[1];vec3 globe_elevation=elevationVector(tilePos)*elevation(tilePos);vec3 globe_pos=a_pos_3+surface_extrusion+globe_elevation;vec3 mercator_elevation=u_up_dir*u_tile_up_scale*elevation(tilePos);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,tilePos,u_tile_id,u_merc_center)+surface_extrusion+mercator_elevation;pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);
|
||
#else
|
||
pos=vec3(tilePos+extrude,elevation(tilePos));
|
||
#endif
|
||
gl_Position=u_matrix*vec4(pos,1);
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(pos);
|
||
#endif
|
||
}`),heatmapTexture:Ti(`uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;in vec2 v_pos;void main() {float t=texture(u_image,v_pos).r;vec4 color=texture(u_color_ramp,vec2(t,0.5));glFragColor=color*u_opacity;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(0.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,"in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=vec4(a_pos,0,1);v_pos=a_pos*0.5+0.5;}"),collisionBox:Ti("in float v_placed;in float v_notUsed;void main() {vec4 red =vec4(1.0,0.0,0.0,1.0);vec4 blue=vec4(0.0,0.0,1.0,0.5);glFragColor =mix(red,blue,step(0.5,v_placed))*0.5;glFragColor*=mix(1.0,0.1,step(0.5,v_notUsed));}",`#include "_prelude_terrain.vertex.glsl"
|
||
in vec3 a_pos;in vec2 a_anchor_pos;in vec2 a_extrude;in vec2 a_placed;in vec2 a_shift;in vec2 a_elevation_from_sea;in float a_size_scale;in vec2 a_padding;in float a_auto_z_offset;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;out float v_placed;out float v_notUsed;void main() {float feature_elevation=a_elevation_from_sea.x+a_auto_z_offset;float terrain_elevation=(a_elevation_from_sea.y==1.0 ? 0.0 : elevation(a_anchor_pos));vec4 projectedPoint=u_matrix*vec4(a_pos+elevationVector(a_anchor_pos)*(feature_elevation+terrain_elevation),1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(
|
||
0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,1.5);gl_Position=projectedPoint;gl_Position.xy+=(a_extrude*a_size_scale+a_shift+a_padding)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}`),collisionCircle:Ti("in float v_radius;in vec2 v_extrude;in float v_perspective_ratio;in float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);glFragColor=color*alpha*opacity_t;}",`in vec2 a_pos_2f;in float a_radius;in vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;out float v_radius;out vec2 v_extrude;out float v_perspective_ratio;out float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos_2f;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(
|
||
mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(
|
||
0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}`),debug:Ti("uniform highp vec4 u_color;uniform sampler2D u_overlay;in vec2 v_uv;void main() {vec4 overlay_color=texture(u_overlay,v_uv);glFragColor=mix(u_color,overlay_color,overlay_color.a);}",`#include "_prelude_terrain.vertex.glsl"
|
||
in vec2 a_pos;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
in vec3 a_pos_3;
|
||
#endif
|
||
out vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {float h=elevation(a_pos);v_uv=a_pos/8192.0;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
gl_Position=u_matrix*vec4(a_pos_3+elevationVector(a_pos)*h,1);
|
||
#else
|
||
gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,h,1);
|
||
#endif
|
||
}`),fill:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
#include "_prelude_shadow.fragment.glsl"
|
||
#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define lowp float opacity
|
||
uniform float u_emissive_strength;
|
||
#ifdef RENDER_SHADOWS
|
||
uniform vec3 u_ground_shadow_factor;in highp vec4 v_pos_light_view_0;in highp vec4 v_pos_light_view_1;in highp float v_depth;
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
in highp float v_z_offset;
|
||
#endif
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize lowp float opacity
|
||
vec4 out_color=color;
|
||
#ifdef LIGHTING_3D_MODE
|
||
out_color=apply_lighting_with_emission_ground(out_color,u_emissive_strength);
|
||
#ifdef RENDER_SHADOWS
|
||
float light=shadowed_light_factor(v_pos_light_view_0,v_pos_light_view_1,v_depth);out_color.rgb*=mix(u_ground_shadow_factor,vec3(1.0),light);
|
||
#endif
|
||
#endif
|
||
#ifdef FOG
|
||
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
|
||
#endif
|
||
out_color*=opacity;
|
||
#ifdef INDICATOR_CUTOUT
|
||
out_color=applyCutout(out_color,v_z_offset);
|
||
#endif
|
||
glFragColor=out_color;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
#include "_prelude_shadow.vertex.glsl"
|
||
in vec2 a_pos;
|
||
#ifdef ELEVATED_ROADS
|
||
in float a_road_z_offset;
|
||
#endif
|
||
#ifdef RENDER_SHADOWS
|
||
uniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;out highp vec4 v_pos_light_view_0;out highp vec4 v_pos_light_view_1;out highp float v_depth;
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
out highp float v_z_offset;
|
||
#endif
|
||
uniform mat4 u_matrix;
|
||
#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define highp float z_offset
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize highp float z_offset
|
||
#ifdef ELEVATED_ROADS
|
||
z_offset+=a_road_z_offset;
|
||
#endif
|
||
float hidden=float(opacity==0.0);gl_Position=mix(u_matrix*vec4(a_pos,z_offset,1),AWAY,hidden);
|
||
#ifdef RENDER_SHADOWS
|
||
vec3 shd_pos0=vec3(a_pos,z_offset);vec3 shd_pos1=vec3(a_pos,z_offset);
|
||
#ifdef NORMAL_OFFSET
|
||
vec3 offset=shadow_normal_offset(vec3(0.0,0.0,1.0));shd_pos0+=offset*shadow_normal_offset_multiplier0();shd_pos1+=offset*shadow_normal_offset_multiplier1();
|
||
#endif
|
||
v_pos_light_view_0=u_light_matrix_0*vec4(shd_pos0,1);v_pos_light_view_1=u_light_matrix_1*vec4(shd_pos1,1);v_depth=gl_Position.w;
|
||
#endif
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(a_pos);
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
v_z_offset=z_offset;
|
||
#endif
|
||
}`),fillOutline:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
#include "_prelude_shadow.fragment.glsl"
|
||
in highp vec2 v_pos;uniform float u_emissive_strength;
|
||
#ifdef RENDER_SHADOWS
|
||
uniform vec3 u_ground_shadow_factor;in highp vec4 v_pos_light_view_0;in highp vec4 v_pos_light_view_1;in highp float v_depth;
|
||
#endif
|
||
#pragma mapbox: define highp vec4 outline_color
|
||
#pragma mapbox: define lowp float opacity
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 outline_color
|
||
#pragma mapbox: initialize lowp float opacity
|
||
float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);vec4 out_color=outline_color;
|
||
#ifdef LIGHTING_3D_MODE
|
||
out_color=apply_lighting_with_emission_ground(out_color,u_emissive_strength);
|
||
#ifdef RENDER_SHADOWS
|
||
float light=shadowed_light_factor(v_pos_light_view_0,v_pos_light_view_1,v_depth);out_color.rgb*=mix(u_ground_shadow_factor,vec3(1.0),light);
|
||
#endif
|
||
#endif
|
||
#ifdef FOG
|
||
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
|
||
#endif
|
||
glFragColor=out_color*(alpha*opacity);
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
#include "_prelude_shadow.vertex.glsl"
|
||
in vec2 a_pos;
|
||
#ifdef ELEVATED_ROADS
|
||
in float a_road_z_offset;
|
||
#endif
|
||
#ifdef RENDER_SHADOWS
|
||
uniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;out highp vec4 v_pos_light_view_0;out highp vec4 v_pos_light_view_1;out highp float v_depth;
|
||
#endif
|
||
uniform mat4 u_matrix;uniform vec2 u_world;out highp vec2 v_pos;
|
||
#pragma mapbox: define highp vec4 outline_color
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define highp float z_offset
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 outline_color
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize highp float z_offset
|
||
#ifdef ELEVATED_ROADS
|
||
z_offset+=a_road_z_offset;
|
||
#endif
|
||
float hidden=float(opacity==0.0);gl_Position=mix(u_matrix*vec4(a_pos,z_offset,1),AWAY,hidden);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;
|
||
#ifdef RENDER_SHADOWS
|
||
vec3 shd_pos0=vec3(a_pos,z_offset);vec3 shd_pos1=vec3(a_pos,z_offset);
|
||
#ifdef NORMAL_OFFSET
|
||
vec3 offset=shadow_normal_offset(vec3(0.0,0.0,1.0));shd_pos0+=offset*shadow_normal_offset_multiplier0();shd_pos1+=offset*shadow_normal_offset_multiplier1();
|
||
#endif
|
||
v_pos_light_view_0=u_light_matrix_0*vec4(shd_pos0,1);v_pos_light_view_1=u_light_matrix_1*vec4(shd_pos1,1);v_depth=gl_Position.w;
|
||
#endif
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(a_pos);
|
||
#endif
|
||
}`),fillOutlinePattern:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
#include "_prelude_shadow.fragment.glsl"
|
||
uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_emissive_strength;
|
||
#ifdef RENDER_SHADOWS
|
||
uniform vec3 u_ground_shadow_factor;in highp vec4 v_pos_light_view_0;in highp vec4 v_pos_light_view_1;in highp float v_depth;
|
||
#endif
|
||
in highp vec2 v_pos;in highp vec2 v_pos_world;
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp vec4 pattern
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize mediump vec4 pattern
|
||
vec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;highp vec2 imagecoord=mod(v_pos,1.0);highp vec2 pos=mix(pattern_tl/u_texsize,pattern_br/u_texsize,imagecoord);highp vec2 lod_pos=mix(pattern_tl/u_texsize,pattern_br/u_texsize,v_pos);float dist=length(v_pos_world-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);vec4 out_color=textureLodCustom(u_image,pos,lod_pos);
|
||
#ifdef LIGHTING_3D_MODE
|
||
out_color=apply_lighting_with_emission_ground(out_color,u_emissive_strength);
|
||
#ifdef RENDER_SHADOWS
|
||
float light=shadowed_light_factor(v_pos_light_view_0,v_pos_light_view_1,v_depth);out_color.rgb*=mix(u_ground_shadow_factor,vec3(1.0),light);
|
||
#endif
|
||
#endif
|
||
#ifdef FOG
|
||
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
|
||
#endif
|
||
glFragColor=out_color*(alpha*opacity);
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
#include "_prelude_shadow.vertex.glsl"
|
||
uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_tile_units_to_pixels;in vec2 a_pos;
|
||
#ifdef ELEVATED_ROADS
|
||
in float a_road_z_offset;
|
||
#endif
|
||
#ifdef RENDER_SHADOWS
|
||
uniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;out highp vec4 v_pos_light_view_0;out highp vec4 v_pos_light_view_1;out highp float v_depth;
|
||
#endif
|
||
out highp vec2 v_pos;out highp vec2 v_pos_world;
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp vec4 pattern
|
||
#pragma mapbox: define lowp float pixel_ratio
|
||
#pragma mapbox: define highp float z_offset
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize mediump vec4 pattern
|
||
#pragma mapbox: initialize lowp float pixel_ratio
|
||
#pragma mapbox: initialize highp float z_offset
|
||
vec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;
|
||
#ifdef ELEVATED_ROADS
|
||
z_offset+=a_road_z_offset;
|
||
#endif
|
||
float hidden=float(opacity==0.0);gl_Position=mix(u_matrix*vec4(a_pos,z_offset,1),AWAY,hidden);vec2 display_size=(pattern_br-pattern_tl)/pixel_ratio;v_pos=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,display_size,u_tile_units_to_pixels,a_pos);v_pos_world=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;
|
||
#ifdef RENDER_SHADOWS
|
||
vec3 shd_pos0=vec3(a_pos,z_offset);vec3 shd_pos1=vec3(a_pos,z_offset);
|
||
#ifdef NORMAL_OFFSET
|
||
vec3 offset=shadow_normal_offset(vec3(0.0,0.0,1.0));shd_pos0+=offset*shadow_normal_offset_multiplier0();shd_pos1+=offset*shadow_normal_offset_multiplier1();
|
||
#endif
|
||
v_pos_light_view_0=u_light_matrix_0*vec4(shd_pos0,1);v_pos_light_view_1=u_light_matrix_1*vec4(shd_pos1,1);v_depth=gl_Position.w;
|
||
#endif
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(a_pos);
|
||
#endif
|
||
}`),fillPattern:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
#include "_prelude_shadow.fragment.glsl"
|
||
uniform vec2 u_texsize;uniform sampler2D u_image;in highp vec2 v_pos;uniform float u_emissive_strength;
|
||
#ifdef RENDER_SHADOWS
|
||
uniform vec3 u_ground_shadow_factor;in highp vec4 v_pos_light_view_0;in highp vec4 v_pos_light_view_1;in highp float v_depth;
|
||
#endif
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp vec4 pattern
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize mediump vec4 pattern
|
||
vec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;highp vec2 imagecoord=mod(v_pos,1.0);highp vec2 pos=mix(pattern_tl/u_texsize,pattern_br/u_texsize,imagecoord);highp vec2 lod_pos=mix(pattern_tl/u_texsize,pattern_br/u_texsize,v_pos);vec4 out_color=textureLodCustom(u_image,pos,lod_pos);
|
||
#ifdef LIGHTING_3D_MODE
|
||
out_color=apply_lighting_with_emission_ground(out_color,u_emissive_strength);
|
||
#ifdef RENDER_SHADOWS
|
||
float light=shadowed_light_factor(v_pos_light_view_0,v_pos_light_view_1,v_depth);out_color.rgb*=mix(u_ground_shadow_factor,vec3(1.0),light);
|
||
#endif
|
||
#endif
|
||
#ifdef FOG
|
||
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
|
||
#endif
|
||
glFragColor=out_color*opacity;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
#include "_prelude_shadow.vertex.glsl"
|
||
uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_tile_units_to_pixels;in vec2 a_pos;
|
||
#ifdef ELEVATED_ROADS
|
||
in float a_road_z_offset;
|
||
#endif
|
||
#ifdef RENDER_SHADOWS
|
||
uniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;out highp vec4 v_pos_light_view_0;out highp vec4 v_pos_light_view_1;out highp float v_depth;
|
||
#endif
|
||
out highp vec2 v_pos;
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp vec4 pattern
|
||
#pragma mapbox: define lowp float pixel_ratio
|
||
#pragma mapbox: define highp float z_offset
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize mediump vec4 pattern
|
||
#pragma mapbox: initialize lowp float pixel_ratio
|
||
#pragma mapbox: initialize highp float z_offset
|
||
vec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;vec2 display_size=(pattern_br-pattern_tl)/pixel_ratio;
|
||
#ifdef ELEVATED_ROADS
|
||
z_offset+=a_road_z_offset;
|
||
#endif
|
||
float hidden=float(opacity==0.0);gl_Position=mix(u_matrix*vec4(a_pos,z_offset,1),AWAY,hidden);v_pos=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,display_size,u_tile_units_to_pixels,a_pos);
|
||
#ifdef RENDER_SHADOWS
|
||
vec3 shd_pos0=vec3(a_pos,z_offset);vec3 shd_pos1=vec3(a_pos,z_offset);
|
||
#ifdef NORMAL_OFFSET
|
||
vec3 offset=shadow_normal_offset(vec3(0.0,0.0,1.0));shd_pos0+=offset*shadow_normal_offset_multiplier0();shd_pos1+=offset*shadow_normal_offset_multiplier1();
|
||
#endif
|
||
v_pos_light_view_0=u_light_matrix_0*vec4(shd_pos0,1);v_pos_light_view_1=u_light_matrix_1*vec4(shd_pos1,1);v_depth=gl_Position.w;
|
||
#endif
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(a_pos);
|
||
#endif
|
||
}`),fillExtrusion:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_shadow.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
in vec4 v_color;in vec4 v_flat;
|
||
#ifdef RENDER_SHADOWS
|
||
in highp vec4 v_pos_light_view_0;in highp vec4 v_pos_light_view_1;
|
||
#endif
|
||
uniform lowp float u_opacity;
|
||
#ifdef FAUX_AO
|
||
uniform lowp vec2 u_ao;in vec2 v_ao;
|
||
#endif
|
||
#if defined(ZERO_ROOF_RADIUS) && !defined(LIGHTING_3D_MODE)
|
||
in vec4 v_roof_color;
|
||
#endif
|
||
#if defined(ZERO_ROOF_RADIUS) || defined(RENDER_SHADOWS) || defined(LIGHTING_3D_MODE)
|
||
in highp vec3 v_normal;
|
||
#endif
|
||
uniform vec3 u_flood_light_color;uniform highp float u_vertical_scale;uniform float u_flood_light_intensity;uniform vec3 u_ground_shadow_factor;
|
||
#if defined(LIGHTING_3D_MODE) && defined(FLOOD_LIGHT)
|
||
in float v_flood_radius;in float v_has_floodlight;
|
||
#endif
|
||
in float v_height;
|
||
#pragma mapbox: define highp float emissive_strength
|
||
void main() {
|
||
#pragma mapbox: initialize highp float emissive_strength
|
||
#if defined(ZERO_ROOF_RADIUS) || defined(RENDER_SHADOWS) || defined(LIGHTING_3D_MODE)
|
||
vec3 normal=normalize(v_normal);
|
||
#endif
|
||
float z;vec4 color=v_color;
|
||
#ifdef ZERO_ROOF_RADIUS
|
||
z=float(normal.z > 0.00001);
|
||
#ifdef LIGHTING_3D_MODE
|
||
normal=mix(normal,vec3(0.0,0.0,1.0),z);
|
||
#else
|
||
color=mix(v_color,v_roof_color,z);
|
||
#endif
|
||
#endif
|
||
float h=max(0.0,v_height);float ao_shade=1.0;
|
||
#ifdef FAUX_AO
|
||
float intensity=u_ao[0];float h_floors=h/(u_ao[1]*u_vertical_scale);float y_shade=1.0-0.9*intensity*min(v_ao.y,1.0);ao_shade=(1.0-0.08*intensity)*(y_shade+(1.0-y_shade)*(1.0-pow(1.0-min(h_floors/16.0,1.0),16.0)))+0.08*intensity*min(h_floors/160.0,1.0);float concave=v_ao.x*v_ao.x;
|
||
#ifdef ZERO_ROOF_RADIUS
|
||
concave*=(1.0-z);
|
||
#endif
|
||
float x_shade=mix(1.0,mix(0.6,0.75,min(h_floors/30.0,1.0)),intensity)+0.1*intensity*min(h,1.0);ao_shade*=mix(1.0,x_shade*x_shade*x_shade,concave);
|
||
#ifdef LIGHTING_3D_MODE
|
||
#ifdef FLOOD_LIGHT
|
||
color.rgb*=mix(ao_shade,1.0,v_has_floodlight);
|
||
#else
|
||
color.rgb*=ao_shade;
|
||
#endif
|
||
#else
|
||
color.rgb*=ao_shade;
|
||
#endif
|
||
#endif
|
||
#ifdef LIGHTING_3D_MODE
|
||
float flood_radiance=0.0;
|
||
#ifdef FLOOD_LIGHT
|
||
flood_radiance=(1.0-min(h/v_flood_radius,1.0))*u_flood_light_intensity*v_has_floodlight;
|
||
#endif
|
||
#ifdef RENDER_SHADOWS
|
||
#ifdef FLOOD_LIGHT
|
||
float ndotl_unclamped=dot(normal,u_shadow_direction);float ndotl=max(0.0,ndotl_unclamped);float occlusion=ndotl_unclamped < 0.0 ? 1.0 : shadow_occlusion(ndotl,v_pos_light_view_0,v_pos_light_view_1,1.0/gl_FragCoord.w);vec3 litColor=apply_lighting(color.rgb,normal,(1.0-u_shadow_intensity*occlusion)*ndotl);vec3 floodLitColor=compute_flood_lighting(u_flood_light_color*u_opacity,1.0-u_shadow_intensity,occlusion,u_ground_shadow_factor);color.rgb=mix(litColor,floodLitColor,flood_radiance);
|
||
#else
|
||
float shadowed_lighting_factor;
|
||
#ifdef RENDER_CUTOFF
|
||
shadowed_lighting_factor=shadowed_light_factor_normal_opacity(normal,v_pos_light_view_0,v_pos_light_view_1,1.0/gl_FragCoord.w,v_cutoff_opacity);if (v_cutoff_opacity==0.0) {discard;}
|
||
#else
|
||
shadowed_lighting_factor=shadowed_light_factor_normal(normal,v_pos_light_view_0,v_pos_light_view_1,1.0/gl_FragCoord.w);
|
||
#endif
|
||
color.rgb=apply_lighting(color.rgb,normal,shadowed_lighting_factor);
|
||
#endif
|
||
#else
|
||
color.rgb=apply_lighting(color.rgb,normal);
|
||
#ifdef FLOOD_LIGHT
|
||
color.rgb=mix(color.rgb,u_flood_light_color*u_opacity,flood_radiance);
|
||
#endif
|
||
#endif
|
||
color.rgb=mix(color.rgb,v_flat.rgb,emissive_strength);color*=u_opacity;
|
||
#endif
|
||
#ifdef FOG
|
||
color=fog_dither(fog_apply_premultiplied(color,v_fog_pos,h));
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
color=applyCutout(color,h);
|
||
#endif
|
||
glFragColor=color;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
#include "_prelude_terrain.vertex.glsl"
|
||
#include "_prelude_shadow.vertex.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform float u_edge_radius;uniform float u_width_scale;in vec4 a_pos_normal_ed;in vec2 a_centroid_pos;
|
||
#ifdef RENDER_WALL_MODE
|
||
in vec3 a_join_normal_inside;
|
||
#endif
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
in vec3 a_pos_3;in vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;uniform float u_height_lift;
|
||
#endif
|
||
#ifdef TERRAIN
|
||
uniform int u_height_type;uniform int u_base_type;
|
||
#endif
|
||
uniform highp float u_vertical_scale;out vec4 v_color;out vec4 v_flat;
|
||
#ifdef RENDER_SHADOWS
|
||
uniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;out highp vec4 v_pos_light_view_0;out highp vec4 v_pos_light_view_1;
|
||
#endif
|
||
#if defined(ZERO_ROOF_RADIUS) && !defined(LIGHTING_3D_MODE)
|
||
out vec4 v_roof_color;
|
||
#endif
|
||
#if defined(ZERO_ROOF_RADIUS) || defined(RENDER_SHADOWS) || defined(LIGHTING_3D_MODE)
|
||
out highp vec3 v_normal;
|
||
#endif
|
||
#ifdef FAUX_AO
|
||
uniform lowp vec2 u_ao;out vec2 v_ao;
|
||
#endif
|
||
#if defined(LIGHTING_3D_MODE) && defined(FLOOD_LIGHT)
|
||
out float v_flood_radius;out float v_has_floodlight;
|
||
#endif
|
||
out float v_height;vec3 linearTosRGB(vec3 color) {return pow(color,vec3(1./2.2));}vec3 sRGBToLinear(vec3 srgbIn) {return pow(srgbIn,vec3(2.2));}
|
||
#pragma mapbox: define highp float base
|
||
#pragma mapbox: define highp float height
|
||
#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define highp float flood_light_wall_radius
|
||
#pragma mapbox: define highp float line_width
|
||
#pragma mapbox: define highp float emissive_strength
|
||
void main() {
|
||
#pragma mapbox: initialize highp float base
|
||
#pragma mapbox: initialize highp float height
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize highp float flood_light_wall_radius
|
||
#pragma mapbox: initialize highp float line_width
|
||
#pragma mapbox: initialize highp float emissive_strength
|
||
base*=u_vertical_scale;height*=u_vertical_scale;vec4 pos_nx=floor(a_pos_normal_ed*0.5);vec4 top_up_ny_start=a_pos_normal_ed-2.0*pos_nx;vec3 top_up_ny=top_up_ny_start.xyz;float x_normal=pos_nx.z/8192.0;vec3 normal=top_up_ny.y==1.0 ? vec3(0.0,0.0,1.0) : normalize(vec3(x_normal,(2.0*top_up_ny.z-1.0)*(1.0-abs(x_normal)),0.0));
|
||
#if defined(ZERO_ROOF_RADIUS) || defined(RENDER_SHADOWS) || defined(LIGHTING_3D_MODE)
|
||
v_normal=normal;
|
||
#endif
|
||
base=max(0.0,base);float attr_height=height;height=max(0.0,top_up_ny.y==0.0 && top_up_ny.x==1.0 ? height-u_edge_radius : height);float t=top_up_ny.x;vec2 centroid_pos=vec2(0.0);
|
||
#if defined(HAS_CENTROID) || defined(TERRAIN)
|
||
centroid_pos=a_centroid_pos;
|
||
#endif
|
||
float ele=0.0;float h=0.0;float c_ele=0.0;vec3 pos;
|
||
#ifdef TERRAIN
|
||
bool is_flat_height=centroid_pos.x !=0.0 && u_height_type==1;bool is_flat_base=centroid_pos.x !=0.0 && u_base_type==1;ele=elevation(pos_nx.xy);c_ele=is_flat_height || is_flat_base ? (centroid_pos.y==0.0 ? elevationFromUint16(centroid_pos.x) : flatElevation(centroid_pos)) : ele;float h_height=is_flat_height ? max(c_ele+height,ele+base+2.0) : ele+height;float h_base=is_flat_base ? max(c_ele+base,ele+base) : ele+(base==0.0 ?-5.0 : base);h=t > 0.0 ? max(h_base,h_height) : h_base;pos=vec3(pos_nx.xy,h);
|
||
#else
|
||
h=t > 0.0 ? height : base;pos=vec3(pos_nx.xy,h);
|
||
#endif
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
float lift=float((t+base) > 0.0)*u_height_lift;h+=lift;vec3 globe_normal=normalize(mix(a_pos_normal_3/16384.0,u_up_dir,u_zoom_transition));vec3 globe_pos=a_pos_3+globe_normal*(u_tile_up_scale*h);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,pos.xy,u_tile_id,u_merc_center)+u_up_dir*u_tile_up_scale*pos.z;pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);
|
||
#endif
|
||
float cutoff=1.0;vec3 scaled_pos=pos;
|
||
#ifdef RENDER_CUTOFF
|
||
vec3 centroid_random=vec3(centroid_pos.xy,centroid_pos.x+centroid_pos.y+1.0);vec3 ground_pos=centroid_pos.x==0.0 ? pos.xyz : (centroid_random/8.0);vec4 ground=u_matrix*vec4(ground_pos.xy,ele,1.0);cutoff=cutoff_opacity(u_cutoff_params,ground.z);if (centroid_pos.y !=0.0 && centroid_pos.x !=0.0) {vec3 g=floor(ground_pos);vec3 mod_=centroid_random-g*8.0;float seed=min(1.0,0.1*(min(3.5,max(mod_.x+mod_.y,0.2*attr_height))*0.35+mod_.z));if (cutoff < 0.8-seed) {cutoff=0.0;}}float cutoff_scale=cutoff;v_cutoff_opacity=cutoff;scaled_pos.z=mix(c_ele,h,cutoff_scale);
|
||
#endif
|
||
float hidden=float((centroid_pos.x==0.0 && centroid_pos.y==1.0) || (cutoff==0.0 && centroid_pos.x !=0.0) || (color.a==0.0));
|
||
#ifdef RENDER_WALL_MODE
|
||
vec2 wall_offset=u_width_scale*line_width*(a_join_normal_inside.xy/EXTENT);scaled_pos.xy+=(1.0-a_join_normal_inside.z)*wall_offset*0.5;scaled_pos.xy-=a_join_normal_inside.z*wall_offset*0.5;
|
||
#endif
|
||
gl_Position=mix(u_matrix*vec4(scaled_pos,1),AWAY,hidden);h=h-ele;v_height=h;
|
||
#ifdef RENDER_SHADOWS
|
||
vec3 shd_pos0=pos;vec3 shd_pos1=pos;
|
||
#ifdef NORMAL_OFFSET
|
||
vec3 offset=shadow_normal_offset(normal);shd_pos0+=offset*shadow_normal_offset_multiplier0();shd_pos1+=offset*shadow_normal_offset_multiplier1();
|
||
#endif
|
||
v_pos_light_view_0=u_light_matrix_0*vec4(shd_pos0,1);v_pos_light_view_1=u_light_matrix_1*vec4(shd_pos1,1);
|
||
#endif
|
||
float NdotL=0.0;float colorvalue=0.0;
|
||
#ifndef LIGHTING_3D_MODE
|
||
colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;NdotL=clamp(dot(normal,u_lightpos),0.0,1.0);NdotL=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),NdotL);if (normal.y !=0.0) {float r=0.84;r=mix(0.7,0.98,1.0-u_lightintensity);NdotL*=(
|
||
(1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),r,1.0)));}
|
||
#endif
|
||
#ifdef FAUX_AO
|
||
float concave=pos_nx.w-floor(pos_nx.w*0.5)*2.0;float start=top_up_ny_start.w;float y_ground=1.0-clamp(t+base,0.0,1.0);float top_height=height;
|
||
#ifdef TERRAIN
|
||
top_height=mix(max(c_ele+height,ele+base+2.0),ele+height,float(centroid_pos.x==0.0))-ele;y_ground+=y_ground*5.0/max(3.0,top_height);
|
||
#endif
|
||
v_ao=vec2(mix(concave,-concave,start),y_ground);NdotL*=(1.0+0.05*(1.0-top_up_ny.y)*u_ao[0]);
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
top_height+=u_height_lift;
|
||
#endif
|
||
gl_Position.z-=(0.0000006*(min(top_height,500.)+2.0*min(base,500.0)+60.0*concave+3.0*start))*gl_Position.w;
|
||
#endif
|
||
#ifdef LIGHTING_3D_MODE
|
||
#ifdef FLOOD_LIGHT
|
||
float is_wall=1.0-float(t > 0.0 && top_up_ny.y > 0.0);v_has_floodlight=float(flood_light_wall_radius > 0.0 && is_wall > 0.0);v_flood_radius=flood_light_wall_radius*u_vertical_scale;
|
||
#endif
|
||
v_color=vec4(color.rgb,1.0);float ndotl=calculate_NdotL(normal);v_flat.rgb=sRGBToLinear(color.rgb);v_flat.rgb=v_flat.rgb*(ndotl+(1.0-min(ndotl*57.29,1.0))*emissive_strength);v_flat=vec4(linearTosRGB(v_flat.rgb),1.0);
|
||
#else
|
||
v_color=vec4(0.0,0.0,0.0,1.0);v_color.rgb+=clamp(color.rgb*NdotL*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_color*=u_opacity;
|
||
#endif
|
||
#if defined(ZERO_ROOF_RADIUS) && !defined(LIGHTING_3D_MODE)
|
||
float roofNdotL=clamp(u_lightpos.z,0.0,1.0);roofNdotL=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),roofNdotL);v_roof_color=vec4(0.0,0.0,0.0,1.0);v_roof_color.rgb+=clamp(color.rgb*roofNdotL*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_roof_color*=u_opacity;
|
||
#endif
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(pos);
|
||
#endif
|
||
}`),fillExtrusionDepth:Ti(`in highp float v_depth;void main() {
|
||
#ifndef DEPTH_TEXTURE
|
||
glFragColor=pack_depth(v_depth);
|
||
#endif
|
||
}`,`#include "_prelude_terrain.vertex.glsl"
|
||
uniform mat4 u_matrix;uniform float u_edge_radius;uniform float u_width_scale;uniform float u_vertical_scale;
|
||
#ifdef TERRAIN
|
||
uniform int u_height_type;uniform int u_base_type;
|
||
#endif
|
||
in vec4 a_pos_normal_ed;in vec2 a_centroid_pos;
|
||
#ifdef RENDER_WALL_MODE
|
||
in vec3 a_join_normal_inside;
|
||
#endif
|
||
#pragma mapbox: define highp float base
|
||
#pragma mapbox: define highp float height
|
||
#pragma mapbox: define highp float line_width
|
||
#pragma mapbox: define highp vec4 color
|
||
out highp float v_depth;void main() {
|
||
#pragma mapbox: initialize highp float base
|
||
#pragma mapbox: initialize highp float height
|
||
#pragma mapbox: initialize highp float line_width
|
||
#pragma mapbox: initialize highp vec4 color
|
||
base*=u_vertical_scale;height*=u_vertical_scale;vec3 pos_nx=floor(a_pos_normal_ed.xyz*0.5);mediump vec3 top_up_ny=a_pos_normal_ed.xyz-2.0*pos_nx;base=max(0.0,base);height=max(0.0,top_up_ny.y==0.0 && top_up_ny.x==1.0 ? height-u_edge_radius : height);float t=top_up_ny.x;vec2 centroid_pos=vec2(0.0);
|
||
#if defined(HAS_CENTROID) || defined(TERRAIN)
|
||
centroid_pos=a_centroid_pos;
|
||
#endif
|
||
vec3 pos;
|
||
#ifdef TERRAIN
|
||
bool is_flat_height=centroid_pos.x !=0.0 && u_height_type==1;bool is_flat_base=centroid_pos.x !=0.0 && u_base_type==1;float ele=elevation(pos_nx.xy);float c_ele=is_flat_height || is_flat_base ? (centroid_pos.y==0.0 ? elevationFromUint16(centroid_pos.x) : flatElevation(centroid_pos)) : ele;float h_height=is_flat_height ? max(c_ele+height,ele+base+2.0) : ele+height;float h_base=is_flat_base ? max(c_ele+base,ele+base) : ele+(base==0.0 ?-5.0 : base);float h=t > 0.0 ? max(h_base,h_height) : h_base;pos=vec3(pos_nx.xy,h);
|
||
#else
|
||
pos=vec3(pos_nx.xy,t > 0.0 ? height : base);
|
||
#endif
|
||
#ifdef RENDER_WALL_MODE
|
||
vec2 wall_offset=u_width_scale*line_width*(a_join_normal_inside.xy/EXTENT);pos.xy+=(1.0-a_join_normal_inside.z)*wall_offset*0.5;pos.xy-=a_join_normal_inside.z*wall_offset*0.5;
|
||
#endif
|
||
float hidden=float((centroid_pos.x==0.0 && centroid_pos.y==1.0) || (color.a==0.0));gl_Position=mix(u_matrix*vec4(pos,1),AWAY,hidden);v_depth=gl_Position.z/gl_Position.w;}`),fillExtrusionPattern:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
uniform vec2 u_texsize;uniform sampler2D u_image;
|
||
#ifdef FAUX_AO
|
||
uniform lowp vec2 u_ao;in vec3 v_ao;
|
||
#endif
|
||
#ifdef LIGHTING_3D_MODE
|
||
in vec3 v_normal;
|
||
#endif
|
||
in highp vec2 v_pos;in vec4 v_lighting;uniform lowp float u_opacity;
|
||
#pragma mapbox: define highp float base
|
||
#pragma mapbox: define highp float height
|
||
#pragma mapbox: define mediump vec4 pattern
|
||
#pragma mapbox: define highp float pixel_ratio
|
||
void main() {
|
||
#pragma mapbox: initialize highp float base
|
||
#pragma mapbox: initialize highp float height
|
||
#pragma mapbox: initialize mediump vec4 pattern
|
||
#pragma mapbox: initialize highp float pixel_ratio
|
||
vec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;highp vec2 imagecoord=mod(v_pos,1.0);highp vec2 pos=mix(pattern_tl/u_texsize,pattern_br/u_texsize,imagecoord);highp vec2 lod_pos=mix(pattern_tl/u_texsize,pattern_br/u_texsize,v_pos);vec4 out_color=textureLodCustom(u_image,pos,lod_pos);
|
||
#ifdef LIGHTING_3D_MODE
|
||
out_color=apply_lighting(out_color,normalize(v_normal))*u_opacity;
|
||
#else
|
||
out_color=out_color*v_lighting;
|
||
#endif
|
||
#ifdef FAUX_AO
|
||
float intensity=u_ao[0];float h=max(0.0,v_ao.z);float h_floors=h/u_ao[1];float y_shade=1.0-0.9*intensity*min(v_ao.y,1.0);float shade=(1.0-0.08*intensity)*(y_shade+(1.0-y_shade)*(1.0-pow(1.0-min(h_floors/16.0,1.0),16.0)))+0.08*intensity*min(h_floors/160.0,1.0);float concave=v_ao.x*v_ao.x;float x_shade=mix(1.0,mix(0.6,0.75,min(h_floors/30.0,1.0)),intensity)+0.1*intensity*min(h,1.0);shade*=mix(1.0,x_shade*x_shade*x_shade,concave);out_color.rgb=out_color.rgb*shade;
|
||
#endif
|
||
#ifdef FOG
|
||
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
out_color=applyCutout(out_color,height);
|
||
#endif
|
||
glFragColor=out_color;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
#include "_prelude_terrain.vertex.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform float u_tile_units_to_pixels;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform float u_width_scale;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;in vec4 a_pos_normal_ed;in vec2 a_centroid_pos;
|
||
#ifdef RENDER_WALL_MODE
|
||
in vec3 a_join_normal_inside;
|
||
#endif
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
in vec3 a_pos_3;in vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;uniform float u_height_lift;
|
||
#endif
|
||
#ifdef TERRAIN
|
||
uniform int u_height_type;uniform int u_base_type;
|
||
#endif
|
||
out highp vec2 v_pos;out vec4 v_lighting;
|
||
#ifdef FAUX_AO
|
||
uniform lowp vec2 u_ao;out vec3 v_ao;
|
||
#endif
|
||
#ifdef LIGHTING_3D_MODE
|
||
out vec3 v_normal;
|
||
#endif
|
||
#pragma mapbox: define highp float base
|
||
#pragma mapbox: define highp float height
|
||
#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define mediump vec4 pattern
|
||
#pragma mapbox: define highp float pixel_ratio
|
||
#pragma mapbox: define highp float line_width
|
||
void main() {
|
||
#pragma mapbox: initialize highp float base
|
||
#pragma mapbox: initialize highp float height
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize mediump vec4 pattern
|
||
#pragma mapbox: initialize highp float pixel_ratio
|
||
#pragma mapbox: initialize highp float line_width
|
||
vec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;vec4 pos_nx=floor(a_pos_normal_ed*0.5);mediump vec4 top_up_ny_start=a_pos_normal_ed-2.0*pos_nx;mediump vec3 top_up_ny=top_up_ny_start.xyz;float x_normal=pos_nx.z/8192.0;vec3 normal=top_up_ny.y==1.0 ? vec3(0.0,0.0,1.0) : normalize(vec3(x_normal,(2.0*top_up_ny.z-1.0)*(1.0-abs(x_normal)),0.0));float edgedistance=a_pos_normal_ed.w;vec2 display_size=(pattern_br-pattern_tl)/pixel_ratio;base=max(0.0,base);height=max(0.0,height);float t=top_up_ny.x;float z=t > 0.0 ? height : base;vec2 centroid_pos=vec2(0.0);
|
||
#if defined(HAS_CENTROID) || defined(TERRAIN)
|
||
centroid_pos=a_centroid_pos;
|
||
#endif
|
||
float ele=0.0;float h=z;vec3 p;float c_ele;
|
||
#ifdef TERRAIN
|
||
bool is_flat_height=centroid_pos.x !=0.0 && u_height_type==1;bool is_flat_base=centroid_pos.x !=0.0 && u_base_type==1;ele=elevation(pos_nx.xy);c_ele=is_flat_height || is_flat_base ? (centroid_pos.y==0.0 ? elevationFromUint16(centroid_pos.x) : flatElevation(centroid_pos)) : ele;float h_height=is_flat_height ? max(c_ele+height,ele+base+2.0) : ele+height;float h_base=is_flat_base ? max(c_ele+base,ele+base) : ele+(base==0.0 ?-5.0 : base);h=t > 0.0 ? max(h_base,h_height) : h_base;p=vec3(pos_nx.xy,h);
|
||
#else
|
||
p=vec3(pos_nx.xy,z);
|
||
#endif
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
float lift=float((t+base) > 0.0)*u_height_lift;h+=lift;vec3 globe_normal=normalize(mix(a_pos_normal_3/16384.0,u_up_dir,u_zoom_transition));vec3 globe_pos=a_pos_3+globe_normal*(u_tile_up_scale*(p.z+lift));vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,p.xy,u_tile_id,u_merc_center)+u_up_dir*u_tile_up_scale*p.z;p=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);
|
||
#endif
|
||
#ifdef RENDER_WALL_MODE
|
||
vec2 wall_offset=u_width_scale*line_width*(a_join_normal_inside.xy/EXTENT);p.xy+=(1.0-a_join_normal_inside.z)*wall_offset*0.5;p.xy-=a_join_normal_inside.z*wall_offset*0.5;
|
||
#endif
|
||
float hidden=float((centroid_pos.x==0.0 && centroid_pos.y==1.0) || (color.a==0.0));gl_Position=mix(u_matrix*vec4(p,1),AWAY,hidden);vec2 pos=normal.z==1.0
|
||
? pos_nx.xy
|
||
: vec2(edgedistance,z*u_height_factor);v_pos=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,display_size,u_tile_units_to_pixels,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float NdotL=0.0;
|
||
#ifdef LIGHTING_3D_MODE
|
||
NdotL=calculate_NdotL(normal);
|
||
#else
|
||
NdotL=clamp(dot(normal,u_lightpos),0.0,1.0);NdotL=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),NdotL);
|
||
#endif
|
||
if (normal.y !=0.0) {float r=0.84;
|
||
#ifndef LIGHTING_3D_MODE
|
||
r=mix(0.7,0.98,1.0-u_lightintensity);
|
||
#endif
|
||
NdotL*=(
|
||
(1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),r,1.0)));}
|
||
#ifdef FAUX_AO
|
||
float concave=pos_nx.w-floor(pos_nx.w*0.5)*2.0;float start=top_up_ny_start.w;float y_ground=1.0-clamp(t+base,0.0,1.0);float top_height=height;
|
||
#ifdef TERRAIN
|
||
top_height=mix(max(c_ele+height,ele+base+2.0),ele+height,float(centroid_pos.x==0.0))-ele;y_ground+=y_ground*5.0/max(3.0,top_height);
|
||
#endif
|
||
v_ao=vec3(mix(concave,-concave,start),y_ground,h-ele);NdotL*=(1.0+0.05*(1.0-top_up_ny.y)*u_ao[0]);
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
top_height+=u_height_lift;
|
||
#endif
|
||
gl_Position.z-=(0.0000006*(min(top_height,500.)+2.0*min(base,500.0)+60.0*concave+3.0*start))*gl_Position.w;
|
||
#endif
|
||
#ifdef LIGHTING_3D_MODE
|
||
v_normal=normal;
|
||
#else
|
||
v_lighting.rgb+=clamp(NdotL*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;
|
||
#endif
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(p);
|
||
#endif
|
||
}`),groundShadow:Ti(`#include "_prelude_shadow.fragment.glsl"
|
||
precision highp float;uniform vec3 u_ground_shadow_factor;in vec4 v_pos_light_view_0;in vec4 v_pos_light_view_1;
|
||
#ifdef FOG
|
||
in float v_fog_opacity;
|
||
#endif
|
||
void main() {float light=shadowed_light_factor_plane_bias(v_pos_light_view_0,v_pos_light_view_1,1.0/gl_FragCoord.w);vec3 shadow=mix(u_ground_shadow_factor,vec3(1.0),light);
|
||
#ifdef RENDER_CUTOFF
|
||
shadow=mix(vec3(1.0),shadow,cutoff_opacity(u_cutoff_params,1.0/gl_FragCoord.w));
|
||
#endif
|
||
#ifdef FOG
|
||
shadow=mix(shadow,vec3(1.0),v_fog_opacity);
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
shadow=mix(shadow,vec3(1.0),1.0-applyCutout(vec4(1.0),0.0).r);
|
||
#endif
|
||
glFragColor=vec4(shadow,1.0);}`,`#include "_prelude_fog.vertex.glsl"
|
||
uniform mat4 u_matrix;uniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;in vec2 a_pos;out vec4 v_pos_light_view_0;out vec4 v_pos_light_view_1;
|
||
#ifdef FOG
|
||
out float v_fog_opacity;
|
||
#endif
|
||
void main() {gl_Position=u_matrix*vec4(a_pos,0.0,1.0);v_pos_light_view_0=u_light_matrix_0*vec4(a_pos,0.0,1.0);v_pos_light_view_1=u_light_matrix_1*vec4(a_pos,0.0,1.0);
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(a_pos);v_fog_opacity=fog(v_fog_pos);
|
||
#endif
|
||
}`),fillExtrusionGroundEffect:Ti(`uniform highp float u_ao_pass;uniform highp float u_opacity;uniform highp float u_flood_light_intensity;uniform highp vec3 u_flood_light_color;uniform highp float u_attenuation;uniform sampler2D u_fb;uniform float u_fb_size;
|
||
#ifdef SDF_SUBPASS
|
||
in highp vec2 v_pos;in highp vec4 v_line_segment;in highp float v_flood_light_radius_tile;in highp vec2 v_ao;float line_df(highp vec2 a,highp vec2 b,highp vec2 p) {highp vec2 ba=b-a;highp vec2 pa=p-a;highp float r=clamp(dot(pa,ba)/dot(ba,ba),0.0,1.0);return length(pa-r*ba);}
|
||
#ifdef FOG
|
||
in highp float v_fog;
|
||
#endif
|
||
#endif
|
||
void main() {
|
||
#ifdef CLEAR_SUBPASS
|
||
vec4 color=vec4(1.0);
|
||
#ifdef CLEAR_FROM_TEXTURE
|
||
color=texture(u_fb,gl_FragCoord.xy/vec2(u_fb_size));
|
||
#endif
|
||
glFragColor=color;
|
||
#else
|
||
#ifdef SDF_SUBPASS
|
||
highp float d=line_df(v_line_segment.xy,v_line_segment.zw,v_pos);highp float effect_radius=mix(v_flood_light_radius_tile,v_ao.y,u_ao_pass);d/=effect_radius;d=min(d,1.0);d=1.0-pow(1.0-d,u_attenuation);highp float effect_intensity=mix(u_flood_light_intensity,v_ao.x,u_ao_pass);highp float fog=1.0;
|
||
#ifdef FOG
|
||
fog=v_fog;
|
||
#endif
|
||
#ifdef RENDER_CUTOFF
|
||
fog*=v_cutoff_opacity;
|
||
#endif
|
||
glFragColor=vec4(vec3(0.0),mix(1.0,d,effect_intensity*u_opacity*fog));
|
||
#else
|
||
vec4 color=mix(vec4(u_flood_light_color,1.0),vec4(vec3(0.0),1.0),u_ao_pass);
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
color=vec4(1.0);
|
||
#endif
|
||
glFragColor=color;
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;
|
||
#endif
|
||
}`,`#include "_prelude_fog.vertex.glsl"
|
||
in highp vec4 a_pos_end;in highp float a_angular_offset_factor;in highp float a_hidden_by_landmark;
|
||
#ifdef SDF_SUBPASS
|
||
out highp vec2 v_pos;out highp vec4 v_line_segment;out highp float v_flood_light_radius_tile;out highp vec2 v_ao;
|
||
#ifdef FOG
|
||
out highp float v_fog;
|
||
#endif
|
||
#endif
|
||
uniform highp float u_flood_light_intensity;uniform highp mat4 u_matrix;uniform highp float u_ao_pass;uniform highp float u_meter_to_tile;uniform highp float u_edge_radius;uniform highp float u_dynamic_offset;uniform highp vec2 u_ao;
|
||
#pragma mapbox: define highp float flood_light_ground_radius
|
||
const float TANGENT_CUTOFF=4.0;const float NORM=32767.0;void main() {
|
||
#pragma mapbox: initialize highp float flood_light_ground_radius
|
||
vec2 p=a_pos_end.xy;vec2 q=floor(a_pos_end.zw*0.5);vec2 start_bottom=a_pos_end.zw-q*2.0;float fl_ground_radius=flood_light_ground_radius;fl_ground_radius=abs(flood_light_ground_radius);float direction=flood_light_ground_radius < 0.0 ?-1.0 : 1.0;float flood_radius_tile=fl_ground_radius*u_meter_to_tile;vec2 v=normalize(q-p);float ao_radius=u_ao.y/3.5;float effect_radius=mix(flood_radius_tile,ao_radius,u_ao_pass)+u_edge_radius;float angular_offset_factor=a_angular_offset_factor/NORM*TANGENT_CUTOFF;float angular_offset=direction*angular_offset_factor*effect_radius;float top=1.0-start_bottom.y;float side=(0.5-start_bottom.x)*2.0;vec2 extrusion_parallel=v*side*mix(u_dynamic_offset,angular_offset,top);vec2 perp=vec2(v.y,-v.x);vec2 extrusion_perp=direction*perp*effect_radius*top;vec3 pos=vec3(mix(q,p,start_bottom.x),0.0);pos.xy+=extrusion_parallel+extrusion_perp;
|
||
#ifdef SDF_SUBPASS
|
||
v_pos=pos.xy;v_line_segment=vec4(p,q)+perp.xyxy*u_edge_radius;v_flood_light_radius_tile=flood_radius_tile;v_ao=vec2(u_ao.x,ao_radius);
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(pos);v_fog=1.0-fog(v_fog_pos);
|
||
#endif
|
||
#endif
|
||
float hidden_by_landmark=0.0;
|
||
#ifdef HAS_CENTROID
|
||
hidden_by_landmark=a_hidden_by_landmark;
|
||
#endif
|
||
float isFloodlit=float(fl_ground_radius > 0.0 && u_flood_light_intensity > 0.0);float hidden=mix(1.0-isFloodlit,isFloodlit,u_ao_pass);hidden+=hidden_by_landmark;gl_Position=mix(u_matrix*vec4(pos,1.0),AWAY,float(hidden > 0.0));
|
||
#ifdef RENDER_CUTOFF
|
||
v_cutoff_opacity=cutoff_opacity(u_cutoff_params,gl_Position.z);
|
||
#endif
|
||
}`),hillshadePrepare:Ti(`precision highp float;uniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;float getElevation(vec2 coord) {return texture(u_image,coord).r/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y));float b=getElevation(v_pos+vec2(0,-epsilon.y));float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y));float d=getElevation(v_pos+vec2(-epsilon.x,0));float e=getElevation(v_pos+vec2(epsilon.x,0));float f=getElevation(v_pos+vec2(-epsilon.x,epsilon.y));float g=getElevation(v_pos+vec2(0,epsilon.y));float h=getElevation(v_pos+vec2(epsilon.x,epsilon.y));float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2(
|
||
(c+e+e+h)-(a+d+d+f),(f+g+g+h)-(a+b+b+c)
|
||
)/pow(2.0,exaggeration+(19.2562-u_zoom));glFragColor=clamp(vec4(
|
||
deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);}`,"uniform mat4 u_matrix;uniform vec2 u_dimension;in vec2 a_pos;in vec2 a_texture_pos;out vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),hillshade:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
uniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;uniform float u_emissive_strength;void main() {vec4 pixel=texture(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);glFragColor=accent_color*(1.0-shade_color.a)+shade_color;
|
||
#ifdef LIGHTING_3D_MODE
|
||
glFragColor=apply_lighting_with_emission_ground(glFragColor,u_emissive_strength);
|
||
#endif
|
||
#ifdef FOG
|
||
glFragColor=fog_dither(fog_apply_premultiplied(glFragColor,v_fog_pos));
|
||
#endif
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
uniform mat4 u_matrix;in vec2 a_pos;in vec2 a_texture_pos;out vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(a_pos);
|
||
#endif
|
||
}`),line:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
#include "_prelude_shadow.fragment.glsl"
|
||
uniform lowp float u_device_pixel_ratio;uniform highp float u_width_scale;uniform highp float u_floor_width_scale;uniform float u_alpha_discard_threshold;uniform highp vec2 u_trim_offset;uniform highp vec2 u_trim_fade_range;uniform lowp vec4 u_trim_color;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;in highp vec4 v_uv;
|
||
#ifdef ELEVATED_ROADS
|
||
in highp float v_road_z_offset;
|
||
#endif
|
||
#ifdef RENDER_LINE_DASH
|
||
uniform sampler2D u_dash_image;in vec2 v_tex;
|
||
#endif
|
||
#ifdef RENDER_LINE_GRADIENT
|
||
uniform sampler2D u_gradient_image;
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
in highp float v_z_offset;
|
||
#endif
|
||
#ifdef RENDER_SHADOWS
|
||
uniform vec3 u_ground_shadow_factor;in highp vec4 v_pos_light_view_0;in highp vec4 v_pos_light_view_1;in highp float v_depth;
|
||
#endif
|
||
float luminance(vec3 c) {return (c.r+c.r+c.b+c.g+c.g+c.g)*0.1667;}uniform float u_emissive_strength;
|
||
#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define lowp float floorwidth
|
||
#pragma mapbox: define lowp vec4 dash
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp float border_width
|
||
#pragma mapbox: define lowp vec4 border_color
|
||
float linearstep(float edge0,float edge1,float x) {return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}void main() {
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize lowp float floorwidth
|
||
#pragma mapbox: initialize lowp vec4 dash
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize lowp float border_width
|
||
#pragma mapbox: initialize lowp vec4 border_color
|
||
float dist=length(v_normal)*v_width2.s;float blur2=(u_width_scale*blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);
|
||
#ifdef RENDER_LINE_DASH
|
||
float sdfdist=texture(u_dash_image,v_tex).r;float sdfgamma=1.0/(2.0*u_device_pixel_ratio)/dash.z;float scaled_floorwidth=(floorwidth*u_floor_width_scale);alpha*=linearstep(0.5-sdfgamma/scaled_floorwidth,0.5+sdfgamma/scaled_floorwidth,sdfdist);
|
||
#endif
|
||
highp vec4 out_color;
|
||
#ifdef RENDER_LINE_GRADIENT
|
||
out_color=texture(u_gradient_image,v_uv.xy);
|
||
#else
|
||
out_color=color;
|
||
#endif
|
||
float trim_alpha=1.0;
|
||
#ifdef RENDER_LINE_TRIM_OFFSET
|
||
highp float start=v_uv[2];highp float end=v_uv[3];highp float trim_start=u_trim_offset[0];highp float trim_end=u_trim_offset[1];highp float line_progress=(start+(v_uv.x)*(end-start));if (trim_end > trim_start) {highp float start_transition=max(0.0,min(1.0,(line_progress-trim_start)/max(u_trim_fade_range[0],1.0e-9)));highp float end_transition=max(0.0,min(1.0,(trim_end-line_progress)/max(u_trim_fade_range[1],1.0e-9)));highp float transition_factor=min(start_transition,end_transition);out_color=mix(out_color,u_trim_color,transition_factor);trim_alpha=1.0-transition_factor;}
|
||
#endif
|
||
if (u_alpha_discard_threshold !=0.0) {if (alpha < u_alpha_discard_threshold) {discard;}}
|
||
#ifdef RENDER_LINE_BORDER
|
||
float edgeBlur=((border_width*u_width_scale)+1.0/u_device_pixel_ratio);float alpha2=clamp(min(dist-(v_width2.t-edgeBlur),v_width2.s-dist)/edgeBlur,0.0,1.0);if (alpha2 < 1.) {float smoothAlpha=smoothstep(0.6,1.0,alpha2);if (border_color.a==0.0) {float Y=(out_color.a > 0.01) ? luminance(out_color.rgb/out_color.a) : 1.;float adjustment=(Y > 0.) ? 0.5/Y : 0.45;if (out_color.a > 0.25 && Y < 0.25) {vec3 borderColor=(Y > 0.) ? out_color.rgb : vec3(1,1,1)*out_color.a;out_color.rgb=out_color.rgb+borderColor*(adjustment*(1.0-smoothAlpha));} else {out_color.rgb*=(0.6 +0.4*smoothAlpha);}} else {out_color=mix(border_color*trim_alpha,out_color,smoothAlpha);}}
|
||
#endif
|
||
#ifdef LIGHTING_3D_MODE
|
||
out_color=apply_lighting_with_emission_ground(out_color,u_emissive_strength);
|
||
#ifdef RENDER_SHADOWS
|
||
float light=shadowed_light_factor(v_pos_light_view_0,v_pos_light_view_1,v_depth);
|
||
#ifdef ELEVATED_ROADS
|
||
out_color.rgb*=mix(v_road_z_offset > 0.0 ? u_ground_shadow_factor : vec3(1.0),vec3(1.0),light);
|
||
#else
|
||
out_color.rgb*=mix(u_ground_shadow_factor,vec3(1.0),light);
|
||
#endif
|
||
#endif
|
||
#endif
|
||
#ifdef FOG
|
||
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
|
||
#endif
|
||
out_color*=(alpha*opacity);
|
||
#ifdef INDICATOR_CUTOUT
|
||
out_color=applyCutout(out_color,v_z_offset);
|
||
#endif
|
||
glFragColor=out_color;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
#include "_prelude_shadow.vertex.glsl"
|
||
#include "_prelude_terrain.vertex.glsl"
|
||
#define EXTRUDE_SCALE 0.015873016
|
||
in vec2 a_pos_normal;in vec4 a_data;
|
||
#if defined(ELEVATED) || defined(ELEVATED_ROADS) || defined(VARIABLE_LINE_WIDTH)
|
||
in vec2 a_z_offset_width;
|
||
#endif
|
||
#if defined(RENDER_LINE_GRADIENT) || defined(RENDER_LINE_TRIM_OFFSET)
|
||
in highp vec4 a_packed;
|
||
#endif
|
||
#ifdef RENDER_LINE_DASH
|
||
in float a_linesofar;
|
||
#endif
|
||
uniform mat4 u_matrix;uniform mat2 u_pixels_to_tile_units;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;uniform float u_width_scale;uniform highp float u_floor_width_scale;
|
||
#ifdef ELEVATED
|
||
uniform lowp float u_zbias_factor;uniform lowp float u_tile_to_meter;float sample_elevation(vec2 apos) {
|
||
#ifdef ELEVATION_REFERENCE_SEA
|
||
return 0.0;
|
||
#else
|
||
return elevation(apos);
|
||
#endif
|
||
}
|
||
#endif
|
||
out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec4 v_uv;
|
||
#ifdef ELEVATED_ROADS
|
||
out highp float v_road_z_offset;
|
||
#endif
|
||
#ifdef RENDER_LINE_DASH
|
||
uniform vec2 u_texsize;uniform float u_tile_units_to_pixels;out vec2 v_tex;
|
||
#endif
|
||
#ifdef RENDER_LINE_GRADIENT
|
||
uniform float u_image_height;
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
out highp float v_z_offset;
|
||
#endif
|
||
#ifdef RENDER_SHADOWS
|
||
uniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;out highp vec4 v_pos_light_view_0;out highp vec4 v_pos_light_view_1;out highp float v_depth;
|
||
#endif
|
||
#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define lowp float floorwidth
|
||
#pragma mapbox: define lowp vec4 dash
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define mediump float gapwidth
|
||
#pragma mapbox: define lowp float offset
|
||
#pragma mapbox: define mediump float width
|
||
#pragma mapbox: define lowp float border_width
|
||
#pragma mapbox: define lowp vec4 border_color
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize lowp float floorwidth
|
||
#pragma mapbox: initialize lowp vec4 dash
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize mediump float gapwidth
|
||
#pragma mapbox: initialize lowp float offset
|
||
#pragma mapbox: initialize mediump float width
|
||
#pragma mapbox: initialize lowp float border_width
|
||
#pragma mapbox: initialize lowp vec4 border_color
|
||
float a_z_offset;
|
||
#if defined(ELEVATED) || defined(ELEVATED_ROADS)
|
||
a_z_offset=a_z_offset_width.x;
|
||
#endif
|
||
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth;
|
||
#ifdef VARIABLE_LINE_WIDTH
|
||
halfwidth=(u_width_scale*a_z_offset_width.y)/2.0;
|
||
#else
|
||
halfwidth=(u_width_scale*width)/2.0;
|
||
#endif
|
||
offset=-1.0*offset*u_width_scale;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*EXTRUDE_SCALE;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*EXTRUDE_SCALE*normal.y*mat2(t,-u,u,t);float hidden=float(opacity==0.0);vec2 extrude=dist*u_pixels_to_tile_units;vec4 projected_extrude=u_matrix*vec4(extrude,0.0,0.0);vec2 projected_extrude_xy=projected_extrude.xy;
|
||
#ifdef ELEVATED_ROADS
|
||
v_road_z_offset=a_z_offset;gl_Position=u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,a_z_offset+0.01*step(0.01,a_z_offset),1.0)+projected_extrude;
|
||
#else
|
||
#ifdef ELEVATED
|
||
vec2 offsetTile=offset2*u_pixels_to_tile_units;vec2 offset_pos=pos+offsetTile;float ele=0.0;
|
||
#ifdef CROSS_SLOPE_VERTICAL
|
||
float top=a_pos_normal.y-2.0*floor(a_pos_normal.y*0.5);float line_height=2.0*u_tile_to_meter*outset*top*u_pixels_to_tile_units[1][1]+a_z_offset;ele=sample_elevation(offset_pos)+line_height;projected_extrude=vec4(0);
|
||
#else
|
||
#ifdef CROSS_SLOPE_HORIZONTAL
|
||
float ele0=sample_elevation(offset_pos);float ele1=max(sample_elevation(offset_pos+extrude),sample_elevation(offset_pos+extrude/2.0));float ele2=max(sample_elevation(offset_pos-extrude),sample_elevation(offset_pos-extrude/2.0));float ele_max=max(ele0,max(ele1,ele2));ele=ele_max+a_z_offset;
|
||
#else
|
||
float ele0=sample_elevation(offset_pos);float ele1=max(sample_elevation(offset_pos+extrude),sample_elevation(offset_pos+extrude/2.0));float ele2=max(sample_elevation(offset_pos-extrude),sample_elevation(offset_pos-extrude/2.0));float ele_max=max(ele0,0.5*(ele1+ele2));ele=ele_max-ele0+ele1+a_z_offset;
|
||
#endif
|
||
#endif
|
||
gl_Position=u_matrix*vec4(offset_pos,ele,1.0)+projected_extrude;float z=clamp(gl_Position.z/gl_Position.w,0.5,1.0);float zbias=max(0.00005,(pow(z,0.8)-z)*u_zbias_factor*u_exaggeration);gl_Position.z-=(gl_Position.w*zbias);gl_Position=mix(gl_Position,AWAY,hidden);
|
||
#else
|
||
gl_Position=mix(u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,0.0,1.0)+projected_extrude,AWAY,hidden);
|
||
#endif
|
||
#endif
|
||
#ifdef ELEVATED_ROADS
|
||
#ifdef RENDER_SHADOWS
|
||
vec3 shd_pos=vec3(pos+(offset2+dist)*u_pixels_to_tile_units,a_z_offset);vec3 shd_pos0=shd_pos;vec3 shd_pos1=shd_pos;
|
||
#ifdef NORMAL_OFFSET
|
||
vec3 shd_pos_offset=shadow_normal_offset(vec3(0.0,0.0,1.0));shd_pos0+=shd_pos_offset*shadow_normal_offset_multiplier0();shd_pos1+=shd_pos_offset*shadow_normal_offset_multiplier1();
|
||
#endif
|
||
v_pos_light_view_0=u_light_matrix_0*vec4(shd_pos0,1);v_pos_light_view_1=u_light_matrix_1*vec4(shd_pos1,1);v_depth=gl_Position.w;
|
||
#endif
|
||
#endif
|
||
#ifndef RENDER_TO_TEXTURE
|
||
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude_xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=mix(extrude_length_without_perspective/extrude_length_with_perspective,1.0,step(0.01,blur));
|
||
#else
|
||
v_gamma_scale=1.0;
|
||
#endif
|
||
#if defined(RENDER_LINE_GRADIENT) || defined(RENDER_LINE_TRIM_OFFSET)
|
||
float a_uv_x=a_packed[0];float a_split_index=a_packed[1];highp float a_clip_start=a_packed[2];highp float a_clip_end=a_packed[3];
|
||
#ifdef RENDER_LINE_GRADIENT
|
||
highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec4(a_uv_x,a_split_index*texel_height-half_texel_height,a_clip_start,a_clip_end);
|
||
#else
|
||
v_uv=vec4(a_uv_x,0.0,a_clip_start,a_clip_end);
|
||
#endif
|
||
#endif
|
||
#ifdef RENDER_LINE_DASH
|
||
float scale=dash.z==0.0 ? 0.0 : u_tile_units_to_pixels/dash.z;float height=dash.y;v_tex=vec2(a_linesofar*scale/(floorwidth*u_floor_width_scale),(-normal.y*height+dash.x+0.5)/u_texsize.y);
|
||
#endif
|
||
v_width2=vec2(outset,inset);
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(pos);
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
v_z_offset=a_z_offset;
|
||
#endif
|
||
}`),linePattern:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
#include "_prelude_shadow.fragment.glsl"
|
||
uniform highp float u_device_pixel_ratio;uniform highp float u_width_scale;uniform highp float u_alpha_discard_threshold;uniform highp vec2 u_texsize;uniform highp float u_tile_units_to_pixels;uniform highp vec2 u_trim_offset;uniform highp vec2 u_trim_fade_range;uniform lowp vec4 u_trim_color;uniform sampler2D u_image;in vec2 v_normal;in vec2 v_width2;in highp float v_linesofar;in float v_gamma_scale;in float v_width;
|
||
#ifdef RENDER_LINE_TRIM_OFFSET
|
||
in highp vec4 v_uv;
|
||
#endif
|
||
#ifdef ELEVATED_ROADS
|
||
in highp float v_road_z_offset;
|
||
#endif
|
||
#ifdef LINE_JOIN_NONE
|
||
in vec2 v_pattern_data;
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
in highp float v_z_offset;
|
||
#endif
|
||
#ifdef RENDER_SHADOWS
|
||
uniform vec3 u_ground_shadow_factor;in highp vec4 v_pos_light_view_0;in highp vec4 v_pos_light_view_1;in highp float v_depth;
|
||
#endif
|
||
uniform float u_emissive_strength;
|
||
#pragma mapbox: define mediump vec4 pattern
|
||
#pragma mapbox: define mediump float pixel_ratio
|
||
#pragma mapbox: define mediump float blur
|
||
#pragma mapbox: define mediump float opacity
|
||
void main() {
|
||
#pragma mapbox: initialize mediump vec4 pattern
|
||
#pragma mapbox: initialize mediump float pixel_ratio
|
||
#pragma mapbox: initialize mediump float blur
|
||
#pragma mapbox: initialize mediump float opacity
|
||
vec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;vec2 display_size=(pattern_br-pattern_tl)/pixel_ratio;highp float pattern_size=display_size.x/u_tile_units_to_pixels;float aspect=display_size.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(u_width_scale*blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);highp float pattern_x=v_linesofar/pattern_size*aspect;highp float x=mod(pattern_x,1.0);highp float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;highp vec2 pos=mix(pattern_tl*texel_size-texel_size,pattern_br*texel_size+texel_size,vec2(x,y));highp vec2 lod_pos=mix(pattern_tl*texel_size-texel_size,pattern_br*texel_size+texel_size,vec2(pattern_x,y));vec4 color=textureLodCustom(u_image,pos,lod_pos);
|
||
#ifdef RENDER_LINE_TRIM_OFFSET
|
||
highp float start=v_uv[2];highp float end=v_uv[3];highp float trim_start=u_trim_offset[0];highp float trim_end=u_trim_offset[1];highp float line_progress=(start+(v_uv.x)*(end-start));if (trim_end > trim_start) {highp float start_transition=max(0.0,min(1.0,(line_progress-trim_start)/max(u_trim_fade_range[0],1.0e-9)));highp float end_transition=max(0.0,min(1.0,(trim_end-line_progress)/max(u_trim_fade_range[1],1.0e-9)));highp float transition_factor=min(start_transition,end_transition);color=mix(color,color.a*u_trim_color,transition_factor);}
|
||
#endif
|
||
#ifdef LINE_JOIN_NONE
|
||
highp float pattern_len=pattern_size/aspect;highp float segment_phase=pattern_len-mod(v_linesofar-v_pattern_data.x+pattern_len,pattern_len);highp float visible_start=segment_phase-step(pattern_len*0.5,segment_phase)*pattern_len;highp float visible_end=floor((v_pattern_data.y-segment_phase)/pattern_len)*pattern_len+segment_phase;visible_end+=step(pattern_len*0.5,v_pattern_data.y-visible_end)*pattern_len;if (v_pattern_data.x < visible_start || v_pattern_data.x >=visible_end) {color=vec4(0.0);}
|
||
#endif
|
||
#ifdef LIGHTING_3D_MODE
|
||
color=apply_lighting_with_emission_ground(color,u_emissive_strength);
|
||
#ifdef RENDER_SHADOWS
|
||
float light=shadowed_light_factor(v_pos_light_view_0,v_pos_light_view_1,v_depth);
|
||
#ifdef ELEVATED_ROADS
|
||
color.rgb*=mix(v_road_z_offset > 0.0 ? u_ground_shadow_factor : vec3(1.0),vec3(1.0),light);
|
||
#else
|
||
color.rgb*=mix(u_ground_shadow_factor,vec3(1.0),light);
|
||
#endif
|
||
#endif
|
||
#endif
|
||
#ifdef FOG
|
||
color=fog_dither(fog_apply_premultiplied(color,v_fog_pos));
|
||
#endif
|
||
color*=(alpha*opacity);if (u_alpha_discard_threshold !=0.0) {if (color.a < u_alpha_discard_threshold) {discard;}}
|
||
#ifdef INDICATOR_CUTOUT
|
||
color=applyCutout(color,v_z_offset);
|
||
#endif
|
||
glFragColor=color;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
#include "_prelude_shadow.vertex.glsl"
|
||
#include "_prelude_terrain.vertex.glsl"
|
||
#define scale 0.015873016
|
||
in vec2 a_pos_normal;in vec4 a_data;
|
||
#if defined(ELEVATED) || defined(ELEVATED_ROADS)
|
||
in vec2 a_z_offset_width;
|
||
#endif
|
||
#ifdef RENDER_LINE_TRIM_OFFSET
|
||
in highp vec4 a_packed;
|
||
#endif
|
||
in highp float a_linesofar;
|
||
#ifdef LINE_JOIN_NONE
|
||
in highp vec3 a_pattern_data;out vec2 v_pattern_data;
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
out highp float v_z_offset;
|
||
#endif
|
||
uniform mat4 u_matrix;uniform float u_tile_units_to_pixels;uniform vec2 u_units_to_pixels;uniform mat2 u_pixels_to_tile_units;uniform float u_device_pixel_ratio;uniform float u_width_scale;uniform float u_floor_width_scale;
|
||
#ifdef ELEVATED
|
||
uniform lowp float u_zbias_factor;uniform lowp float u_tile_to_meter;float sample_elevation(vec2 apos) {
|
||
#ifdef ELEVATION_REFERENCE_SEA
|
||
return 0.0;
|
||
#else
|
||
return elevation(apos);
|
||
#endif
|
||
}
|
||
#endif
|
||
out vec2 v_normal;out vec2 v_width2;out highp float v_linesofar;out float v_gamma_scale;out float v_width;
|
||
#ifdef RENDER_LINE_TRIM_OFFSET
|
||
out highp vec4 v_uv;
|
||
#endif
|
||
#ifdef ELEVATED_ROADS
|
||
out highp float v_road_z_offset;
|
||
#endif
|
||
#ifdef RENDER_SHADOWS
|
||
uniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;out highp vec4 v_pos_light_view_0;out highp vec4 v_pos_light_view_1;out highp float v_depth;
|
||
#endif
|
||
#pragma mapbox: define mediump float blur
|
||
#pragma mapbox: define mediump float opacity
|
||
#pragma mapbox: define mediump float offset
|
||
#pragma mapbox: define mediump float gapwidth
|
||
#pragma mapbox: define mediump float width
|
||
#pragma mapbox: define mediump float floorwidth
|
||
#pragma mapbox: define mediump vec4 pattern
|
||
#pragma mapbox: define mediump float pixel_ratio
|
||
void main() {
|
||
#pragma mapbox: initialize mediump float blur
|
||
#pragma mapbox: initialize mediump float opacity
|
||
#pragma mapbox: initialize mediump float offset
|
||
#pragma mapbox: initialize mediump float gapwidth
|
||
#pragma mapbox: initialize mediump float width
|
||
#pragma mapbox: initialize mediump float floorwidth
|
||
#pragma mapbox: initialize mediump vec4 pattern
|
||
#pragma mapbox: initialize mediump float pixel_ratio
|
||
float a_z_offset;
|
||
#if defined(ELEVATED) || defined(ELEVATED_ROADS)
|
||
a_z_offset=a_z_offset_width.x;
|
||
#endif
|
||
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;vec2 pos=floor(a_pos_normal*0.5);vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=(u_width_scale*width)/2.0;offset=-1.0*offset*u_width_scale;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);vec2 dist=outset*a_extrude*scale;float u=0.5*a_direction;float t=1.0-abs(u);vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float hidden=float(opacity==0.0);vec2 extrude=dist*u_pixels_to_tile_units;vec4 projected_extrude=u_matrix*vec4(extrude,0.0,0.0);vec2 projected_extrude_xy=projected_extrude.xy;
|
||
#ifdef ELEVATED_ROADS
|
||
v_road_z_offset=a_z_offset;gl_Position=u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,a_z_offset+0.01*step(0.01,a_z_offset),1.0)+projected_extrude;
|
||
#else
|
||
#ifdef ELEVATED
|
||
vec2 offsetTile=offset2*u_pixels_to_tile_units;vec2 offset_pos=pos+offsetTile;float ele=0.0;
|
||
#ifdef CROSS_SLOPE_VERTICAL
|
||
float top=a_pos_normal.y-2.0*floor(a_pos_normal.y*0.5);float line_height=2.0*u_tile_to_meter*outset*top*u_pixels_to_tile_units[1][1]+a_z_offset;ele=sample_elevation(offset_pos)+line_height;projected_extrude=vec4(0);
|
||
#else
|
||
#ifdef CROSS_SLOPE_HORIZONTAL
|
||
float ele0=sample_elevation(offset_pos);float ele1=max(sample_elevation(offset_pos+extrude),sample_elevation(offset_pos+extrude/2.0));float ele2=max(sample_elevation(offset_pos-extrude),sample_elevation(offset_pos-extrude/2.0));float ele_max=max(ele0,max(ele1,ele2));ele=ele_max+a_z_offset;
|
||
#else
|
||
float ele0=sample_elevation(offset_pos);float ele1=max(sample_elevation(offset_pos+extrude),sample_elevation(offset_pos+extrude/2.0));float ele2=max(sample_elevation(offset_pos-extrude),sample_elevation(offset_pos-extrude/2.0));float ele_max=max(ele0,0.5*(ele1+ele2));ele=ele_max-ele0+ele1+a_z_offset;
|
||
#endif
|
||
#endif
|
||
gl_Position=u_matrix*vec4(offset_pos,ele,1.0)+projected_extrude;float z=clamp(gl_Position.z/gl_Position.w,0.5,1.0);float zbias=max(0.00005,(pow(z,0.8)-z)*u_zbias_factor*u_exaggeration);gl_Position.z-=(gl_Position.w*zbias);gl_Position=mix(gl_Position,AWAY,hidden);
|
||
#else
|
||
gl_Position=mix(u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,0.0,1.0)+projected_extrude,AWAY,hidden);
|
||
#endif
|
||
#endif
|
||
#ifdef ELEVATED_ROADS
|
||
#ifdef RENDER_SHADOWS
|
||
vec3 shd_pos=vec3(pos+(offset2+dist)*u_pixels_to_tile_units,a_z_offset);vec3 shd_pos0=shd_pos;vec3 shd_pos1=shd_pos;
|
||
#ifdef NORMAL_OFFSET
|
||
vec3 shd_pos_offset=shadow_normal_offset(vec3(0.0,0.0,1.0));shd_pos0+=shd_pos_offset*shadow_normal_offset_multiplier0();shd_pos1+=shd_pos_offset*shadow_normal_offset_multiplier1();
|
||
#endif
|
||
v_pos_light_view_0=u_light_matrix_0*vec4(shd_pos0,1);v_pos_light_view_1=u_light_matrix_1*vec4(shd_pos1,1);v_depth=gl_Position.w;
|
||
#endif
|
||
#endif
|
||
#ifndef RENDER_TO_TEXTURE
|
||
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude_xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=mix(extrude_length_without_perspective/extrude_length_with_perspective,1.0,step(0.01,blur));
|
||
#else
|
||
v_gamma_scale=1.0;
|
||
#endif
|
||
#ifdef RENDER_LINE_TRIM_OFFSET
|
||
float a_uv_x=a_packed[0];highp float a_clip_start=a_packed[2];highp float a_clip_end=a_packed[3];v_uv=vec4(a_uv_x,0.0,a_clip_start,a_clip_end);
|
||
#endif
|
||
v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=(floorwidth*u_floor_width_scale);
|
||
#ifdef LINE_JOIN_NONE
|
||
v_width=(floorwidth*u_floor_width_scale)+ANTIALIASING;mediump float pixels_to_tile_units=1.0/u_tile_units_to_pixels;mediump float pixel_ratio_inverse=1.0/pixel_ratio;mediump float aspect=v_width/((pattern.w-pattern.y)*pixel_ratio_inverse);highp float subt_multiple=(pattern.z-pattern.x)*pixel_ratio_inverse*pixels_to_tile_units*aspect*32.0;highp float subt=floor(a_pattern_data.z/subt_multiple)*subt_multiple;float offset_sign=(fract(a_pattern_data.x)-0.5)*4.0;float line_progress_offset=offset_sign*v_width*0.5*pixels_to_tile_units;v_linesofar=(a_pattern_data.z-subt)+a_linesofar+line_progress_offset;v_pattern_data=vec2(a_pattern_data.x+line_progress_offset,a_pattern_data.y);
|
||
#endif
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(pos);
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
v_z_offset=a_z_offset;
|
||
#endif
|
||
}`),raster:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
#include "_prelude_raster_array.glsl"
|
||
uniform float u_fade_t;uniform float u_opacity;uniform highp float u_raster_elevation;uniform highp float u_zoom_transition;in vec2 v_pos0;in vec2 v_pos1;in float v_depth;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
in float v_split_fade;
|
||
#endif
|
||
uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;uniform float u_emissive_strength;
|
||
#ifndef RASTER_ARRAY
|
||
uniform highp sampler2D u_image0;uniform sampler2D u_image1;
|
||
#endif
|
||
#ifdef RASTER_COLOR
|
||
uniform sampler2D u_color_ramp;uniform highp vec4 u_colorization_mix;uniform highp float u_colorization_offset;uniform vec2 u_texture_res;
|
||
#endif
|
||
void main() {vec4 color0,color1,color;vec2 value;
|
||
#ifdef RASTER_COLOR
|
||
#ifdef RASTER_ARRAY
|
||
#ifdef RASTER_ARRAY_LINEAR
|
||
value=mix(
|
||
raTexture2D_image0_linear(v_pos0,u_texture_res,u_colorization_mix,u_colorization_offset),raTexture2D_image1_linear(v_pos1,u_texture_res,u_colorization_mix,u_colorization_offset),u_fade_t
|
||
);
|
||
#else
|
||
value=mix(
|
||
raTexture2D_image0_nearest(v_pos0,u_texture_res,u_colorization_mix,u_colorization_offset),raTexture2D_image1_nearest(v_pos1,u_texture_res,u_colorization_mix,u_colorization_offset),u_fade_t
|
||
);
|
||
#endif
|
||
if (value.y > 0.0) value.x/=value.y;
|
||
#else
|
||
color=mix(texture(u_image0,v_pos0),texture(u_image1,v_pos1),u_fade_t);value=vec2(u_colorization_offset+dot(color.rgb,u_colorization_mix.rgb),color.a);
|
||
#endif
|
||
color=texture(u_color_ramp,vec2(value.x,0.5));if (color.a > 0.0) color.rgb/=color.a;color.a*=value.y;
|
||
#else
|
||
color0=texture(u_image0,v_pos0);color1=texture(u_image1,v_pos1);if (color0.a > 0.0) color0.rgb/=color0.a;if (color1.a > 0.0) color1.rgb/=color1.a;color=mix(color0,color1,u_fade_t);
|
||
#endif
|
||
color.a*=u_opacity;
|
||
#ifdef GLOBE_POLES
|
||
color.a*=1.0-smoothstep(0.0,0.05,u_zoom_transition);
|
||
#endif
|
||
vec3 rgb=color.rgb;rgb=vec3(
|
||
dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);vec3 out_color=mix(u_high_vec,u_low_vec,rgb);
|
||
#ifdef LIGHTING_3D_MODE
|
||
out_color=apply_lighting_with_emission_ground(vec4(out_color,1.0),u_emissive_strength).rgb;
|
||
#endif
|
||
#ifdef FOG
|
||
highp float fog_limit_high_meters=1000000.0;highp float fog_limit_low_meters=600000.0;float fog_limit=1.0-smoothstep(fog_limit_low_meters,fog_limit_high_meters,u_raster_elevation);out_color=fog_dither(fog_apply(out_color,v_fog_pos,fog_limit));
|
||
#endif
|
||
glFragColor=vec4(out_color*color.a,color.a);
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
glFragColor*=mix(1.0,1.0-smoothstep(0.0,0.05,u_zoom_transition),smoothstep(0.8,0.9,v_split_fade));
|
||
#endif
|
||
#ifdef RENDER_CUTOFF
|
||
glFragColor=glFragColor*cutoff_opacity(u_cutoff_params,v_depth);
|
||
#endif
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
uniform mat4 u_matrix;uniform mat4 u_normalize_matrix;uniform mat4 u_globe_matrix;uniform mat4 u_merc_matrix;uniform mat3 u_grid_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform vec2 u_perspective_transform;uniform vec2 u_texture_offset;uniform float u_raster_elevation;uniform float u_zoom_transition;uniform vec2 u_merc_center;
|
||
#define GLOBE_UPSCALE GLOBE_RADIUS/6371008.8
|
||
#ifdef GLOBE_POLES
|
||
in vec3 a_globe_pos;in vec2 a_uv;
|
||
#else
|
||
in vec2 a_pos;in vec2 a_texture_pos;
|
||
#endif
|
||
out vec2 v_pos0;out vec2 v_pos1;out float v_depth;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
out float v_split_fade;
|
||
#endif
|
||
void main() {vec2 uv;
|
||
#ifdef GLOBE_POLES
|
||
vec3 globe_pos=a_globe_pos;globe_pos+=normalize(globe_pos)*u_raster_elevation*GLOBE_UPSCALE;gl_Position=u_matrix*u_globe_matrix*vec4(globe_pos ,1.0);uv=a_uv;
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position((u_normalize_matrix*vec4(a_globe_pos,1.0)).xyz);
|
||
#endif
|
||
#else
|
||
float w=1.0+dot(a_texture_pos,u_perspective_transform);uv=a_texture_pos/8192.0;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
vec3 decomposed_pos_and_skirt=decomposeToPosAndSkirt(a_pos);vec3 latLng=u_grid_matrix*vec3(decomposed_pos_and_skirt.xy,1.0);vec3 globe_pos=latLngToECEF(latLng.xy);globe_pos+=normalize(globe_pos)*u_raster_elevation*GLOBE_UPSCALE;vec4 globe_world_pos=u_globe_matrix*vec4(globe_pos,1.0);vec4 merc_world_pos=vec4(0.0);float mercatorY=mercatorYfromLat(latLng[0]);float mercatorX=mercatorXfromLng(latLng[1]);
|
||
v_split_fade=0.0;if (u_zoom_transition > 0.0) {vec2 merc_pos=vec2(mercatorX,mercatorY);merc_world_pos=vec4(merc_pos,u_raster_elevation,1.0);merc_world_pos.xy-=u_merc_center;merc_world_pos.x=wrap(merc_world_pos.x,-0.5,0.5);merc_world_pos=u_merc_matrix*merc_world_pos;float opposite_merc_center=mod(u_merc_center.x+0.5,1.0);float dist_from_poles=(abs(mercatorY-0.5)*2.0);float range=0.1;v_split_fade=abs(opposite_merc_center-mercatorX);v_split_fade=clamp(1.0-v_split_fade,0.0,1.0);v_split_fade=max(smoothstep(1.0-range,1.0,dist_from_poles),max(smoothstep(1.0-range,1.0,v_split_fade),smoothstep(1.0-range,1.0,1.0-v_split_fade)));}float tiles=u_grid_matrix[0][2];if (tiles > 0.0) {float idx=u_grid_matrix[1][2];float idy=u_grid_matrix[2][2];float uvY=mercatorY*tiles-idy;float uvX=mercatorX*tiles-idx;uv=vec2(uvX,uvY);}vec4 interpolated_pos=vec4(mix(globe_world_pos.xyz,merc_world_pos.xyz,u_zoom_transition)*w,w);gl_Position=u_matrix*interpolated_pos;
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position((u_normalize_matrix*vec4(globe_pos,1.0)).xyz);
|
||
#endif
|
||
#else
|
||
gl_Position=u_matrix*vec4(a_pos*w,u_raster_elevation*w,w);
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(a_pos);
|
||
#endif
|
||
#endif
|
||
#endif
|
||
v_pos0=uv;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;v_pos0=u_texture_offset.x+u_texture_offset.y*v_pos0;v_pos1=u_texture_offset.x+u_texture_offset.y*v_pos1;
|
||
#ifdef RENDER_CUTOFF
|
||
v_depth=gl_Position.z;
|
||
#endif
|
||
}`),rasterParticle:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
uniform float u_fade_t;uniform float u_opacity;uniform highp float u_raster_elevation;in vec2 v_pos0;in vec2 v_pos1;uniform sampler2D u_image0;uniform sampler2D u_image1;void main() {vec4 color0,color1,color;color0=texture(u_image0,v_pos0);color1=texture(u_image1,v_pos1);if (color0.a > 0.0) color0.rgb/=color0.a;if (color1.a > 0.0) color1.rgb/=color1.a;color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 out_color=color.rgb;
|
||
#ifdef LIGHTING_3D_MODE
|
||
out_color=apply_lighting_with_emission_ground(vec4(out_color,1.0),0.0).rgb;
|
||
#endif
|
||
#ifdef FOG
|
||
highp float fog_limit_high_meters=1000000.0;highp float fog_limit_low_meters=600000.0;float fog_limit=1.0-smoothstep(fog_limit_low_meters,fog_limit_high_meters,u_raster_elevation);out_color=fog_dither(fog_apply(out_color,v_fog_pos,fog_limit));
|
||
#endif
|
||
glFragColor=vec4(out_color*color.a,color.a);
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
uniform mat4 u_matrix;uniform mat4 u_normalize_matrix;uniform mat4 u_globe_matrix;uniform mat4 u_merc_matrix;uniform mat3 u_grid_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_raster_elevation;uniform float u_zoom_transition;uniform vec2 u_merc_center;
|
||
#define GLOBE_UPSCALE GLOBE_RADIUS/6371008.8
|
||
in vec2 a_pos;in vec2 a_texture_pos;out vec2 v_pos0;out vec2 v_pos1;void main() {float w=1.0;vec2 uv;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
vec3 decomposed_pos_and_skirt=decomposeToPosAndSkirt(a_pos);vec3 latLng=u_grid_matrix*vec3(decomposed_pos_and_skirt.xy,1.0);float mercatorY=mercatorYfromLat(latLng[0]);float mercatorX=mercatorXfromLng(latLng[1]);float tiles=u_grid_matrix[0][2];float idx=u_grid_matrix[1][2];float idy=u_grid_matrix[2][2];float uvX=mercatorX*tiles-idx;float uvY=mercatorY*tiles-idy;uv=vec2(uvX,uvY);vec3 globe_pos=latLngToECEF(latLng.xy);globe_pos+=normalize(globe_pos)*u_raster_elevation*GLOBE_UPSCALE;vec4 globe_world_pos=u_globe_matrix*vec4(globe_pos,1.0);vec4 merc_world_pos=vec4(0.0);if (u_zoom_transition > 0.0) {vec2 merc_pos=vec2(mercatorX,mercatorY);merc_world_pos=vec4(merc_pos,u_raster_elevation,1.0);merc_world_pos.xy-=u_merc_center;merc_world_pos.x=wrap(merc_world_pos.x,-0.5,0.5);merc_world_pos=u_merc_matrix*merc_world_pos;}vec4 interpolated_pos=vec4(mix(globe_world_pos.xyz,merc_world_pos.xyz,u_zoom_transition)*w,w);gl_Position=u_matrix*interpolated_pos;
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position((u_normalize_matrix*vec4(globe_pos,1.0)).xyz);
|
||
#endif
|
||
#else
|
||
uv=a_texture_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*w,u_raster_elevation*w,w);
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(a_pos);
|
||
#endif
|
||
#endif
|
||
v_pos0=uv;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}`),rasterParticleDraw:Ti("uniform sampler2D u_color_ramp;in float v_particle_speed;void main() {glFragColor=texture(u_color_ramp,vec2(v_particle_speed,0.5));}",`#include "_prelude_raster_particle.glsl"
|
||
in float a_index;uniform sampler2D u_particle_texture;uniform float u_particle_texture_side_len;uniform vec2 u_tile_offset;out float v_particle_speed;void main() {ivec2 pixel_coord=ivec2(
|
||
mod(a_index,u_particle_texture_side_len),a_index/u_particle_texture_side_len);vec4 pixel=texelFetch(u_particle_texture,pixel_coord,0);vec2 pos=unpack_pos_from_rgba(pixel)+u_tile_offset;vec2 tex_coord=fract(pos);vec2 velocity=lookup_velocity(tex_coord);if (velocity==INVALID_VELOCITY) {gl_Position=AWAY;v_particle_speed=0.0;} else {gl_Position=vec4(2.0*pos-1.0,0,1);v_particle_speed=length(velocity);}gl_PointSize=1.0;}`),rasterParticleTexture:Ti("uniform sampler2D u_texture;uniform float u_opacity;in vec2 v_tex_pos;void main() {vec4 color=texture(u_texture,v_tex_pos);glFragColor=vec4(floor(255.0*color*u_opacity)/255.0);}","in vec2 a_pos;out vec2 v_tex_pos;void main() {vec2 uv=0.5*a_pos+vec2(0.5);v_tex_pos=uv;gl_Position=vec4(a_pos,0.0,1.0);}"),rasterParticleUpdate:Ti(`#include "_prelude_raster_particle.glsl"
|
||
uniform sampler2D u_particle_texture;uniform mediump float u_particle_texture_side_len;uniform mediump float u_speed_factor;uniform highp float u_reset_rate;uniform highp float u_rand_seed;in highp vec2 v_tex_coord;vec2 linearstep(vec2 edge0,vec2 edge1,vec2 x) {return clamp((x-edge0)/(edge1-edge0),vec2(0),vec2(1));}const highp vec3 rand_constants=vec3(12.9898,78.233,4375.85453);highp float rand(const highp vec2 co) {highp float t=dot(rand_constants.xy,co);return fract(sin(t)*(rand_constants.z+t));}void main() {ivec2 pixel_coord=ivec2(v_tex_coord*u_particle_texture_side_len);highp vec4 pixel=texelFetch(u_particle_texture,pixel_coord,0);highp vec2 pos=unpack_pos_from_rgba(pixel);highp vec2 velocity=lookup_velocity(clamp(pos,0.0,1.0));highp vec2 dp=velocity==INVALID_VELOCITY ? vec2(0) : velocity*u_speed_factor;pos=pos+dp;highp vec2 seed=(pos+v_tex_coord)*u_rand_seed;highp vec2 random_pos=vec2(rand(seed+1.3),rand(seed+2.1));highp vec2 persist_rate=pow(
|
||
linearstep(vec2(-u_particle_pos_offset),vec2(0),pos)*linearstep(vec2(1.0+u_particle_pos_offset),vec2(1),pos),vec2(4)
|
||
);highp vec2 per_frame_persist=pow(persist_rate,abs(dp)/u_particle_pos_offset);highp float drop_rate=1.0-per_frame_persist.x*per_frame_persist.y;drop_rate=any(greaterThanEqual(abs(pos-0.5),vec2(0.5+u_particle_pos_offset))) ? 1.0 : drop_rate;highp float drop=step(1.0-drop_rate-u_reset_rate,rand(seed));highp vec2 next_pos=mix(pos,random_pos,drop);glFragColor=pack_pos_to_rgba(next_pos);}`,"in vec2 a_pos;out vec2 v_tex_coord;void main() {v_tex_coord=0.5*(a_pos+vec2(1.0));gl_Position=vec4(a_pos,0.0,1.0);}"),symbol:Ti(`#include "_prelude_lighting.glsl"
|
||
#define SDF_PX 8.0
|
||
#define SDF 1.0
|
||
#define ICON 0.0
|
||
uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;uniform bool u_is_halo;uniform lowp float u_scale_factor;
|
||
#ifdef ICON_TRANSITION
|
||
uniform float u_icon_transition;
|
||
#endif
|
||
#ifdef COLOR_ADJUSTMENT
|
||
uniform mat4 u_color_adj_mat;
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
in highp float v_z_offset;
|
||
#endif
|
||
in vec2 v_tex_a;
|
||
#ifdef ICON_TRANSITION
|
||
in vec2 v_tex_b;
|
||
#endif
|
||
in float v_draw_halo;in vec3 v_gamma_scale_size_fade_opacity;
|
||
#ifdef RENDER_TEXT_AND_SYMBOL
|
||
in float is_sdf;in vec2 v_tex_a_icon;
|
||
#endif
|
||
#pragma mapbox: define highp vec4 fill_color
|
||
#pragma mapbox: define highp vec4 halo_color
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp float halo_width
|
||
#pragma mapbox: define lowp float halo_blur
|
||
#pragma mapbox: define lowp float emissive_strength
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 fill_color
|
||
#pragma mapbox: initialize highp vec4 halo_color
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize lowp float halo_width
|
||
#pragma mapbox: initialize lowp float halo_blur
|
||
#pragma mapbox: initialize lowp float emissive_strength
|
||
vec4 out_color;float fade_opacity=v_gamma_scale_size_fade_opacity[2];
|
||
#ifdef RENDER_TEXT_AND_SYMBOL
|
||
if (is_sdf==ICON) {vec2 tex_icon=v_tex_a_icon;lowp float alpha=opacity*fade_opacity;glFragColor=texture(u_texture_icon,tex_icon)*alpha;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
return;}
|
||
#endif
|
||
#ifdef RENDER_SDF
|
||
float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_gamma_scale_size_fade_opacity.x;float size=v_gamma_scale_size_fade_opacity.y;float fontScale=u_is_text ? size/24.0 : size;out_color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;bool draw_halo=v_draw_halo > 0.0;if (draw_halo) {out_color=halo_color;gamma=(halo_blur*u_scale_factor*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width*u_scale_factor/fontScale)/SDF_PX;}lowp float dist=texture(u_texture,v_tex_a).r;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);out_color*=alpha;
|
||
#else
|
||
#ifdef ICON_TRANSITION
|
||
vec4 a=texture(u_texture,v_tex_a)*(1.0-u_icon_transition);vec4 b=texture(u_texture,v_tex_b)*u_icon_transition;out_color=(a+b);
|
||
#else
|
||
out_color=texture(u_texture,v_tex_a);
|
||
#endif
|
||
#ifdef COLOR_ADJUSTMENT
|
||
out_color=u_color_adj_mat*out_color;
|
||
#endif
|
||
#endif
|
||
out_color*=opacity*fade_opacity;
|
||
#ifdef LIGHTING_3D_MODE
|
||
out_color=apply_lighting_with_emission_ground(out_color,emissive_strength);
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
out_color=applyCutout(out_color,v_z_offset);
|
||
#endif
|
||
glFragColor=out_color;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_terrain.vertex.glsl"
|
||
in vec4 a_pos_offset;in vec4 a_tex_size;in vec4 a_pixeloffset;in vec4 a_projected_pos;in float a_fade_opacity;
|
||
#ifdef Z_OFFSET
|
||
in float a_auto_z_offset;
|
||
#endif
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
in vec3 a_globe_anchor;in vec3 a_globe_normal;
|
||
#endif
|
||
#ifdef ICON_TRANSITION
|
||
in vec2 a_texb;
|
||
#endif
|
||
#ifdef OCCLUSION_QUERIES
|
||
in float a_occlusion_query_opacity;
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
out highp float v_z_offset;
|
||
#endif
|
||
uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_elevation_from_sea;uniform bool u_pitch_with_map;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec3 u_up_vector;uniform vec2 u_texsize_icon;uniform bool u_is_halo;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
uniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;
|
||
#endif
|
||
out vec2 v_tex_a;
|
||
#ifdef ICON_TRANSITION
|
||
out vec2 v_tex_b;
|
||
#endif
|
||
out float v_draw_halo;out vec3 v_gamma_scale_size_fade_opacity;
|
||
#ifdef RENDER_TEXT_AND_SYMBOL
|
||
out float is_sdf;out vec2 v_tex_a_icon;
|
||
#endif
|
||
#pragma mapbox: define highp vec4 fill_color
|
||
#pragma mapbox: define highp vec4 halo_color
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp float halo_width
|
||
#pragma mapbox: define lowp float halo_blur
|
||
#pragma mapbox: define lowp float emissive_strength
|
||
#pragma mapbox: define lowp float occlusion_opacity
|
||
#pragma mapbox: define lowp float z_offset
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 fill_color
|
||
#pragma mapbox: initialize highp vec4 halo_color
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize lowp float halo_width
|
||
#pragma mapbox: initialize lowp float halo_blur
|
||
#pragma mapbox: initialize lowp float emissive_strength
|
||
#pragma mapbox: initialize lowp float occlusion_opacity
|
||
#pragma mapbox: initialize lowp float z_offset
|
||
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_min_font_scale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[3];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 tile_anchor=a_pos;float e=u_elevation_from_sea ? z_offset : z_offset+elevation(tile_anchor);
|
||
#ifdef Z_OFFSET
|
||
e+=a_auto_z_offset;
|
||
#endif
|
||
vec3 h=elevationVector(tile_anchor)*e;float globe_occlusion_fade;vec3 world_pos;vec3 mercator_pos;vec3 world_pos_globe;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
mercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);world_pos_globe=a_globe_anchor+h;world_pos=mix_globe_mercator(world_pos_globe,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;
|
||
#else
|
||
world_pos=vec3(tile_anchor,0)+h;globe_occlusion_fade=1.0;
|
||
#endif
|
||
vec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?
|
||
camera_to_anchor_distance/u_camera_to_center_distance :
|
||
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(
|
||
0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float font_scale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetprojected_point;vec2 a;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
vec3 displacement=vec3(a_globe_normal.z,0,-a_globe_normal.x);offsetprojected_point=u_matrix*vec4(a_globe_anchor+displacement,1);vec4 projected_point_globe=u_matrix*vec4(world_pos_globe,1);a=projected_point_globe.xy/projected_point_globe.w;
|
||
#else
|
||
offsetprojected_point=u_matrix*vec4(tile_anchor+vec2(1,0),0,1);a=projected_point.xy/projected_point.w;
|
||
#endif
|
||
vec2 b=offsetprojected_point.xy/offsetprojected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}vec4 projected_pos;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
vec3 proj_pos=mix_globe_mercator(a_projected_pos.xyz+h,mercator_pos,u_zoom_transition);projected_pos=u_label_plane_matrix*vec4(proj_pos,1.0);
|
||
#else
|
||
projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,h.z,1.0);
|
||
#endif
|
||
highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*max(a_min_font_scale,font_scale)+a_pxoffset/16.0);
|
||
#ifdef TERRAIN
|
||
#ifdef PITCH_WITH_MAP_TERRAIN
|
||
vec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);
|
||
#endif
|
||
#endif
|
||
#ifdef Z_OFFSET
|
||
z+=u_pitch_with_map ? a_auto_z_offset+(u_elevation_from_sea ? z_offset : z_offset) : 0.0;
|
||
#else
|
||
z+=u_pitch_with_map ? (u_elevation_from_sea ? z_offset : z_offset) : 0.0;
|
||
#endif
|
||
float occlusion_fade=globe_occlusion_fade;float projection_transition_fade=1.0;
|
||
#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)
|
||
projection_transition_fade=1.0-step(EPSILON,u_zoom_transition);
|
||
#endif
|
||
vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change));float out_fade_opacity=interpolated_fade_opacity*projection_transition_fade;
|
||
#ifdef DEPTH_OCCLUSION
|
||
float depth_occlusion=occlusionFadeMultiSample(projected_point);float depth_occlusion_multplier=mix(occlusion_opacity,1.0,depth_occlusion);out_fade_opacity*=depth_occlusion_multplier;
|
||
#endif
|
||
#ifdef OCCLUSION_QUERIES
|
||
float occludedFadeMultiplier=mix(occlusion_opacity,1.0,a_occlusion_query_opacity);out_fade_opacity*=occludedFadeMultiplier;
|
||
#endif
|
||
float alpha=opacity*out_fade_opacity;float hidden=float(alpha==0.0 || projected_point.w <=0.0 || occlusion_fade==0.0);
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
vec3 xAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,u_up_vector)) : vec3(1,0,0);vec3 yAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,xAxis)) : vec3(0,1,0);gl_Position=mix(u_coord_matrix*vec4(projected_pos.xyz/projected_pos.w+xAxis*offset.x+yAxis*offset.y,1.0),AWAY,hidden);
|
||
#else
|
||
gl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,hidden);
|
||
#endif
|
||
float gamma_scale=gl_Position.w;v_draw_halo=(u_is_halo && float(gl_InstanceID)==0.0) ? 1.0 : 0.0;v_gamma_scale_size_fade_opacity=vec3(gamma_scale,size,out_fade_opacity);v_tex_a=a_tex/u_texsize;
|
||
#ifdef RENDER_TEXT_AND_SYMBOL
|
||
is_sdf=a_size[0]-2.0*a_size_min;v_tex_a_icon=a_tex/u_texsize_icon;
|
||
#endif
|
||
#ifdef ICON_TRANSITION
|
||
v_tex_b=a_texb/u_texsize;
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
v_z_offset=e;
|
||
#endif
|
||
}`),terrainRaster:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_shadow.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
uniform sampler2D u_image0;in vec2 v_pos0;
|
||
#ifdef FOG
|
||
in float v_fog_opacity;
|
||
#endif
|
||
#ifdef RENDER_SHADOWS
|
||
in vec4 v_pos_light_view_0;in vec4 v_pos_light_view_1;
|
||
#endif
|
||
uniform vec3 u_ground_shadow_factor;void main() {vec4 image_color=texture(u_image0,v_pos0);vec4 color;
|
||
#ifdef LIGHTING_3D_MODE
|
||
const vec3 normal=vec3(0.0,0.0,1.0);
|
||
#ifdef RENDER_SHADOWS
|
||
float cutoffOpacity=1.0;
|
||
#ifdef RENDER_CUTOFF
|
||
cutoffOpacity=cutoff_opacity(u_cutoff_params,1.0/gl_FragCoord.w);
|
||
#endif
|
||
#ifdef LIGHTING_3D_ALPHA_EMISSIVENESS
|
||
vec3 unlit_base=image_color.rgb*(1.0-image_color.a);vec3 emissive_base=image_color.rgb*image_color.a;float ndotl=u_shadow_direction.z;float occlusion=ndotl < 0.0 ? 1.0 : shadow_occlusion(v_pos_light_view_0,v_pos_light_view_1,1.0/gl_FragCoord.w,0.0);ndotl=max(0.0,ndotl);vec3 lit=apply_lighting(unlit_base,normal,mix(1.0,(1.0-(u_shadow_intensity*occlusion))*ndotl,cutoffOpacity));vec3 emissive=compute_emissive_draped(emissive_base,1.0-u_shadow_intensity,occlusion,u_ground_shadow_factor);color.rgb=lit+emissive;color.a=1.0;
|
||
#else
|
||
float lighting_factor=shadowed_light_factor_normal_unbiased(normal,v_pos_light_view_0,v_pos_light_view_1,1.0/gl_FragCoord.w);color=apply_lighting(image_color,normal,mix(1.0,lighting_factor,cutoffOpacity));
|
||
#endif
|
||
#else
|
||
float lighting_factor=u_lighting_directional_dir.z;color=apply_lighting(image_color,normal,lighting_factor);
|
||
#ifdef LIGHTING_3D_ALPHA_EMISSIVENESS
|
||
color.rgb=mix(color.rgb,image_color.rgb,image_color.a);color.a=1.0;
|
||
#endif
|
||
#endif
|
||
#else
|
||
color=image_color;
|
||
#endif
|
||
#ifdef FOG
|
||
#ifdef ZERO_EXAGGERATION
|
||
color=fog_dither(fog_apply_premultiplied(color,v_fog_pos));
|
||
#else
|
||
color=fog_dither(fog_apply_from_vert(color,v_fog_opacity));
|
||
#endif
|
||
#endif
|
||
glFragColor=color;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
#include "_prelude_terrain.vertex.glsl"
|
||
uniform mat4 u_matrix;uniform float u_skirt_height;in vec2 a_pos;out vec2 v_pos0;
|
||
#ifdef FOG
|
||
out float v_fog_opacity;
|
||
#endif
|
||
#ifdef RENDER_SHADOWS
|
||
uniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;out vec4 v_pos_light_view_0;out vec4 v_pos_light_view_1;out float v_depth;
|
||
#endif
|
||
void main() {vec3 decomposedPosAndSkirt=decomposeToPosAndSkirt(a_pos);float skirt=decomposedPosAndSkirt.z;vec2 decodedPos=decomposedPosAndSkirt.xy;float elevation=elevation(decodedPos)-skirt*u_skirt_height;v_pos0=decodedPos/8192.0;gl_Position=u_matrix*vec4(decodedPos,elevation,1.0);
|
||
#ifdef FOG
|
||
#ifdef ZERO_EXAGGERATION
|
||
v_fog_pos=fog_position(decodedPos);
|
||
#else
|
||
v_fog_opacity=fog(fog_position(vec3(decodedPos,elevation)));
|
||
#endif
|
||
#endif
|
||
#ifdef RENDER_SHADOWS
|
||
vec3 pos=vec3(decodedPos,elevation);v_pos_light_view_0=u_light_matrix_0*vec4(pos,1.);v_pos_light_view_1=u_light_matrix_1*vec4(pos,1.);
|
||
#endif
|
||
}`),terrainDepth:Ti("precision highp float;in float v_depth;void main() {glFragColor=pack_depth(v_depth);}",`#include "_prelude_terrain.vertex.glsl"
|
||
uniform mat4 u_matrix;in vec2 a_pos;out float v_depth;void main() {float elevation=elevation(a_pos);gl_Position=u_matrix*vec4(a_pos,elevation,1.0);v_depth=gl_Position.z/gl_Position.w;}`),skybox:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
in lowp vec3 v_uv;uniform lowp samplerCube u_cubemap;uniform lowp float u_opacity;uniform highp float u_temporal_offset;uniform highp vec3 u_sun_direction;float sun_disk(highp vec3 ray_direction,highp vec3 sun_direction) {highp float cos_angle=dot(normalize(ray_direction),sun_direction);const highp float cos_sun_angular_diameter=0.99996192306;const highp float smoothstep_delta=1e-5;return smoothstep(
|
||
cos_sun_angular_diameter-smoothstep_delta,cos_sun_angular_diameter+smoothstep_delta,cos_angle);}float map(float value,float start,float end,float new_start,float new_end) {return ((value-start)*(new_end-new_start))/(end-start)+new_start;}void main() {vec3 uv=v_uv;const float y_bias=0.015;uv.y+=y_bias;uv.y=pow(abs(uv.y),1.0/5.0);uv.y=map(uv.y,0.0,1.0,-1.0,1.0);vec3 sky_color=texture(u_cubemap,uv).rgb;
|
||
#ifdef FOG
|
||
sky_color=fog_apply_sky_gradient(v_uv.xzy,sky_color);
|
||
#endif
|
||
sky_color.rgb=dither(sky_color.rgb,gl_FragCoord.xy+u_temporal_offset);sky_color+=0.1*sun_disk(v_uv,u_sun_direction);glFragColor=vec4(sky_color*u_opacity,u_opacity);
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
}`,ea),skyboxGradient:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
in highp vec3 v_uv;uniform lowp sampler2D u_color_ramp;uniform highp vec3 u_center_direction;uniform lowp float u_radius;uniform lowp float u_opacity;uniform highp float u_temporal_offset;void main() {float progress=acos(dot(normalize(v_uv),u_center_direction))/u_radius;vec4 color=texture(u_color_ramp,vec2(progress,0.5));
|
||
#ifdef FOG
|
||
color.rgb=fog_apply_sky_gradient(v_uv.xzy,color.rgb/color.a)*color.a;
|
||
#endif
|
||
color*=u_opacity;color.rgb=dither(color.rgb,gl_FragCoord.xy+u_temporal_offset);glFragColor=color;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
}`,ea),skyboxCapture:Ti(`
|
||
in highp vec3 v_position;uniform highp float u_sun_intensity;uniform highp float u_luminance;uniform lowp vec3 u_sun_direction;uniform highp vec4 u_color_tint_r;uniform highp vec4 u_color_tint_m;precision highp float;
|
||
#define BETA_R vec3(5.5e-6,13.0e-6,22.4e-6)
|
||
#define BETA_M vec3(21e-6,21e-6,21e-6)
|
||
#define MIE_G 0.76
|
||
#define DENSITY_HEIGHT_SCALE_R 8000.0
|
||
#define DENSITY_HEIGHT_SCALE_M 1200.0
|
||
#define PLANET_RADIUS 6360e3
|
||
#define ATMOSPHERE_RADIUS 6420e3
|
||
#define SAMPLE_STEPS 10
|
||
#define DENSITY_STEPS 4
|
||
float ray_sphere_exit(vec3 orig,vec3 dir,float radius) {float a=dot(dir,dir);float b=2.0*dot(dir,orig);float c=dot(orig,orig)-radius*radius;float d=sqrt(b*b-4.0*a*c);return (-b+d)/(2.0*a);}vec3 extinction(vec2 density) {return exp(-vec3(BETA_R*u_color_tint_r.a*density.x+BETA_M*u_color_tint_m.a*density.y));}vec2 local_density(vec3 point) {float height=max(length(point)-PLANET_RADIUS,0.0);float exp_r=exp(-height/DENSITY_HEIGHT_SCALE_R);float exp_m=exp(-height/DENSITY_HEIGHT_SCALE_M);return vec2(exp_r,exp_m);}float phase_ray(float cos_angle) {return (3.0/(16.0*PI))*(1.0+cos_angle*cos_angle);}float phase_mie(float cos_angle) {return (3.0/(8.0*PI))*((1.0-MIE_G*MIE_G)*(1.0+cos_angle*cos_angle))/((2.0+MIE_G*MIE_G)*pow(1.0+MIE_G*MIE_G-2.0*MIE_G*cos_angle,1.5));}vec2 density_to_atmosphere(vec3 point,vec3 light_dir) {float ray_len=ray_sphere_exit(point,light_dir,ATMOSPHERE_RADIUS);float step_len=ray_len/float(DENSITY_STEPS);vec2 density_point_to_atmosphere=vec2(0.0);for (int i=0; i < DENSITY_STEPS;++i) {vec3 point_on_ray=point+light_dir*((float(i)+0.5)*step_len);density_point_to_atmosphere+=local_density(point_on_ray)*step_len;;}return density_point_to_atmosphere;}vec3 atmosphere(vec3 ray_dir,vec3 sun_direction,float sun_intensity) {vec2 density_orig_to_point=vec2(0.0);vec3 scatter_r=vec3(0.0);vec3 scatter_m=vec3(0.0);vec3 origin=vec3(0.0,PLANET_RADIUS,0.0);float ray_len=ray_sphere_exit(origin,ray_dir,ATMOSPHERE_RADIUS);float step_len=ray_len/float(SAMPLE_STEPS);for (int i=0; i < SAMPLE_STEPS;++i) {vec3 point_on_ray=origin+ray_dir*((float(i)+0.5)*step_len);vec2 density=local_density(point_on_ray)*step_len;density_orig_to_point+=density;vec2 density_point_to_atmosphere=density_to_atmosphere(point_on_ray,sun_direction);vec2 density_orig_to_atmosphere=density_orig_to_point+density_point_to_atmosphere;vec3 extinction=extinction(density_orig_to_atmosphere);scatter_r+=density.x*extinction;scatter_m+=density.y*extinction;}float cos_angle=dot(ray_dir,sun_direction);float phase_r=phase_ray(cos_angle);float phase_m=phase_mie(cos_angle);vec3 beta_r=BETA_R*u_color_tint_r.rgb*u_color_tint_r.a;vec3 beta_m=BETA_M*u_color_tint_m.rgb*u_color_tint_m.a;return (scatter_r*phase_r*beta_r+scatter_m*phase_m*beta_m)*sun_intensity;}const float A=0.15;const float B=0.50;const float C=0.10;const float D=0.20;const float E=0.02;const float F=0.30;vec3 uncharted2_tonemap(vec3 x) {return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;}void main() {vec3 ray_direction=v_position;ray_direction.y=pow(ray_direction.y,5.0);const float y_bias=0.015;ray_direction.y+=y_bias;vec3 color=atmosphere(normalize(ray_direction),u_sun_direction,u_sun_intensity);float white_scale=1.0748724675633854;color=uncharted2_tonemap((log2(2.0/pow(u_luminance,4.0)))*color)*white_scale;glFragColor=vec4(color,1.0);}`,"in highp vec3 a_pos_3f;uniform mat3 u_matrix_3f;out highp vec3 v_position;float map(float value,float start,float end,float new_start,float new_end) {return ((value-start)*(new_end-new_start))/(end-start)+new_start;}void main() {vec4 pos=vec4(u_matrix_3f*a_pos_3f,1.0);v_position=pos.xyz;v_position.y*=-1.0;v_position.y=map(v_position.y,-1.0,1.0,0.0,1.0);gl_Position=vec4(a_pos_3f.xy,0.0,1.0);}"),globeRaster:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
uniform sampler2D u_image0;uniform float u_far_z_cutoff;in vec2 v_pos0;
|
||
#ifndef FOG
|
||
uniform highp vec3 u_frustum_tl;uniform highp vec3 u_frustum_tr;uniform highp vec3 u_frustum_br;uniform highp vec3 u_frustum_bl;uniform highp vec3 u_globe_pos;uniform highp float u_globe_radius;uniform vec2 u_viewport;
|
||
#endif
|
||
void main() {vec4 color;
|
||
#ifdef CUSTOM_ANTIALIASING
|
||
vec2 uv=gl_FragCoord.xy/u_viewport;highp vec3 ray_dir=mix(
|
||
mix(u_frustum_tl,u_frustum_tr,uv.x),mix(u_frustum_bl,u_frustum_br,uv.x),1.0-uv.y);vec3 dir=normalize(ray_dir);vec3 closest_point=dot(u_globe_pos,dir)*dir;float norm_dist_from_center=1.0-length(closest_point-u_globe_pos)/u_globe_radius;const float antialias_pixel=2.0;float antialias_factor=antialias_pixel*fwidth(norm_dist_from_center);float antialias=smoothstep(0.0,antialias_factor,norm_dist_from_center);vec4 raster=texture(u_image0,v_pos0);
|
||
#ifdef LIGHTING_3D_MODE
|
||
#ifdef LIGHTING_3D_ALPHA_EMISSIVENESS
|
||
raster=apply_lighting_with_emission_ground(raster,raster.a);color=vec4(raster.rgb*antialias,antialias);
|
||
#else
|
||
raster=apply_lighting_ground(raster);color=vec4(raster.rgb*antialias,raster.a*antialias);
|
||
#endif
|
||
#else
|
||
color=vec4(raster.rgb*antialias,raster.a*antialias);
|
||
#endif
|
||
#else
|
||
color=texture(u_image0,v_pos0);
|
||
#ifdef LIGHTING_3D_MODE
|
||
#ifdef LIGHTING_3D_ALPHA_EMISSIVENESS
|
||
color=apply_lighting_with_emission_ground(color,color.a);color.a=1.0;
|
||
#else
|
||
color=apply_lighting_ground(color);
|
||
#endif
|
||
#endif
|
||
#endif
|
||
#ifdef FOG
|
||
color=fog_dither(fog_apply_premultiplied(color,v_fog_pos));
|
||
#endif
|
||
color*=1.0-step(u_far_z_cutoff,1.0/gl_FragCoord.w);glFragColor=color;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
#include "_prelude_terrain.vertex.glsl"
|
||
uniform mat4 u_proj_matrix;uniform mat4 u_normalize_matrix;uniform mat4 u_globe_matrix;uniform mat4 u_merc_matrix;uniform float u_zoom_transition;uniform vec2 u_merc_center;uniform mat3 u_grid_matrix;uniform float u_skirt_height;
|
||
#ifdef GLOBE_POLES
|
||
in vec3 a_globe_pos;in vec2 a_uv;
|
||
#else
|
||
in vec2 a_pos;
|
||
#endif
|
||
out vec2 v_pos0;void main() {
|
||
#ifdef GLOBE_POLES
|
||
vec3 globe_pos=a_globe_pos;vec2 uv=a_uv;
|
||
#else
|
||
float tiles=u_grid_matrix[0][2];float idx=u_grid_matrix[1][2];float idy=u_grid_matrix[2][2];vec3 decomposed_pos_and_skirt=decomposeToPosAndSkirt(a_pos);vec3 latLng=u_grid_matrix*vec3(decomposed_pos_and_skirt.xy,1.0);float mercatorY=mercatorYfromLat(latLng[0]);float uvY=mercatorY*tiles-idy;float mercatorX=mercatorXfromLng(latLng[1]);float uvX=mercatorX*tiles-idx;vec3 globe_pos=latLngToECEF(latLng.xy);vec2 merc_pos=vec2(mercatorX,mercatorY);vec2 uv=vec2(uvX,uvY);
|
||
#endif
|
||
v_pos0=uv;vec2 tile_pos=uv*EXTENT;vec3 globe_derived_up_vector=normalize(globe_pos)*u_tile_up_scale;
|
||
#ifdef GLOBE_POLES
|
||
vec3 up_vector=globe_derived_up_vector;
|
||
#else
|
||
vec3 up_vector=elevationVector(tile_pos);
|
||
#endif
|
||
float height=elevation(tile_pos);globe_pos+=up_vector*height;
|
||
#ifndef GLOBE_POLES
|
||
globe_pos-=globe_derived_up_vector*u_skirt_height*decomposed_pos_and_skirt.z;
|
||
#endif
|
||
#ifdef GLOBE_POLES
|
||
vec4 interpolated_pos=u_globe_matrix*vec4(globe_pos,1.0);
|
||
#else
|
||
vec4 globe_world_pos=u_globe_matrix*vec4(globe_pos,1.0);vec4 merc_world_pos=vec4(0.0);if (u_zoom_transition > 0.0) {merc_world_pos=vec4(merc_pos,height-u_skirt_height*decomposed_pos_and_skirt.z,1.0);merc_world_pos.xy-=u_merc_center;merc_world_pos.x=wrap(merc_world_pos.x,-0.5,0.5);merc_world_pos=u_merc_matrix*merc_world_pos;}vec4 interpolated_pos=vec4(mix(globe_world_pos.xyz,merc_world_pos.xyz,u_zoom_transition),1.0);
|
||
#endif
|
||
gl_Position=u_proj_matrix*interpolated_pos;
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position((u_normalize_matrix*vec4(globe_pos,1.0)).xyz);
|
||
#endif
|
||
}`),globeAtmosphere:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
uniform float u_transition;uniform highp float u_fadeout_range;uniform highp float u_temporal_offset;uniform vec4 u_color;uniform vec4 u_high_color;uniform vec4 u_space_color;uniform float u_horizon_angle;in highp vec3 v_ray_dir;in highp vec3 v_horizon_dir;void main() {highp vec3 dir=normalize(v_ray_dir);float globe_pos_dot_dir;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
globe_pos_dot_dir=dot(u_globe_pos,dir);highp vec3 closest_point_forward=abs(globe_pos_dot_dir)*dir;float norm_dist_from_center=length(closest_point_forward-u_globe_pos)/u_globe_radius;if (norm_dist_from_center < 0.98) {
|
||
#ifdef ALPHA_PASS
|
||
glFragColor=vec4(0,0,0,0);return;
|
||
#else
|
||
#ifdef NATIVE
|
||
glFragColor=vec4(1,1,1,1);
|
||
#else
|
||
glFragColor=vec4(0,0,0,1);
|
||
#endif
|
||
return;
|
||
#endif
|
||
}
|
||
#endif
|
||
highp vec3 horizon_dir=normalize(v_horizon_dir);float horizon_angle_mercator=dir.y < horizon_dir.y ?
|
||
0.0 : max(acos(clamp(dot(dir,horizon_dir),-1.0,1.0)),0.0);float horizon_angle;
|
||
#ifdef PROJECTION_GLOBE_VIEW
|
||
highp vec3 closest_point=globe_pos_dot_dir*dir;highp float closest_point_to_center=length(closest_point-u_globe_pos);highp float theta=asin(clamp(closest_point_to_center/length(u_globe_pos),-1.0,1.0));horizon_angle=globe_pos_dot_dir < 0.0 ?
|
||
PI-theta-u_horizon_angle : theta-u_horizon_angle;float angle_t=pow(u_transition,10.0);horizon_angle=mix(horizon_angle,horizon_angle_mercator,angle_t);
|
||
#else
|
||
horizon_angle=horizon_angle_mercator;
|
||
#endif
|
||
horizon_angle/=PI;float t=exp(-horizon_angle/u_fadeout_range);float alpha_0=u_color.a;float alpha_1=u_high_color.a;float alpha_2=u_space_color.a;vec3 color_stop_0=u_color.rgb;vec3 color_stop_1=u_high_color.rgb;vec3 color_stop_2=u_space_color.rgb;
|
||
#ifdef ALPHA_PASS
|
||
float a0=mix(alpha_2,1.0,alpha_1);float a1=mix(a0,1.0,alpha_0);float a2=mix(a0,a1,t);float a =mix(alpha_2,a2,t);glFragColor=vec4(1.0,1.0,1.0,a);
|
||
#else
|
||
vec3 c0=mix(color_stop_2,color_stop_1,alpha_1);vec3 c1=mix(c0,color_stop_0,alpha_0);vec3 c2=mix(c0,c1,t);vec3 c=c2;
|
||
#ifndef NATIVE
|
||
c=dither(c,gl_FragCoord.xy+u_temporal_offset);
|
||
#endif
|
||
glFragColor=vec4(c*t,t);
|
||
#endif
|
||
}`,`in vec3 a_pos;in vec2 a_uv;uniform vec3 u_frustum_tl;uniform vec3 u_frustum_tr;uniform vec3 u_frustum_br;uniform vec3 u_frustum_bl;uniform float u_horizon;out highp vec3 v_ray_dir;out highp vec3 v_horizon_dir;void main() {v_ray_dir=mix(
|
||
mix(u_frustum_tl,u_frustum_tr,a_uv.x),mix(u_frustum_bl,u_frustum_br,a_uv.x),a_uv.y);v_horizon_dir=mix(
|
||
mix(u_frustum_tl,u_frustum_bl,u_horizon),mix(u_frustum_tr,u_frustum_br,u_horizon),a_uv.x);gl_Position=vec4(a_pos,1.0);}`),model:Ti(`#include "_prelude_fog.fragment.glsl"
|
||
#include "_prelude_shadow.fragment.glsl"
|
||
#include "_prelude_lighting.glsl"
|
||
uniform float u_opacity;uniform vec3 u_lightcolor;uniform vec3 u_lightpos;uniform float u_lightintensity;uniform vec4 u_baseColorFactor;uniform vec4 u_emissiveFactor;uniform float u_metallicFactor;uniform float u_roughnessFactor;uniform float u_emissive_strength;in highp vec4 v_position_height;in lowp vec4 v_color_mix;
|
||
#ifdef RENDER_SHADOWS
|
||
in highp vec4 v_pos_light_view_0;in highp vec4 v_pos_light_view_1;in float v_depth_shadows;
|
||
#endif
|
||
#ifdef OCCLUSION_TEXTURE_TRANSFORM
|
||
uniform vec4 u_occlusionTextureTransform;
|
||
#endif
|
||
#pragma mapbox: define-attribute highp vec3 normal_3f
|
||
#pragma mapbox: define-attribute highp vec3 color_3f
|
||
#pragma mapbox: define-attribute highp vec4 color_4f
|
||
#pragma mapbox: define-attribute highp vec2 uv_2f
|
||
#pragma mapbox: initialize-attribute highp vec3 normal_3f
|
||
#pragma mapbox: initialize-attribute highp vec3 color_3f
|
||
#pragma mapbox: initialize-attribute highp vec4 color_4f
|
||
#pragma mapbox: initialize-attribute highp vec2 uv_2f
|
||
#ifdef HAS_ATTRIBUTE_a_pbr
|
||
in lowp vec4 v_roughness_metallic_emissive_alpha;in mediump vec4 v_height_based_emission_params;
|
||
#endif
|
||
#ifdef HAS_TEXTURE_u_baseColorTexture
|
||
uniform sampler2D u_baseColorTexture;uniform bool u_baseTextureIsAlpha;uniform bool u_alphaMask;uniform float u_alphaCutoff;
|
||
#endif
|
||
#ifdef HAS_TEXTURE_u_metallicRoughnessTexture
|
||
uniform sampler2D u_metallicRoughnessTexture;
|
||
#endif
|
||
#ifdef HAS_TEXTURE_u_occlusionTexture
|
||
uniform sampler2D u_occlusionTexture;uniform float u_aoIntensity;
|
||
#endif
|
||
#ifdef HAS_TEXTURE_u_normalTexture
|
||
uniform sampler2D u_normalTexture;
|
||
#endif
|
||
#ifdef HAS_TEXTURE_u_emissionTexture
|
||
uniform sampler2D u_emissionTexture;
|
||
#endif
|
||
#ifdef APPLY_LUT_ON_GPU
|
||
uniform highp sampler3D u_lutTexture;
|
||
#endif
|
||
#ifdef TERRAIN_FRAGMENT_OCCLUSION
|
||
in highp float v_depth;uniform highp sampler2D u_depthTexture;uniform highp vec2 u_inv_depth_size;uniform highp vec2 u_depth_range_unpack;
|
||
#ifdef DEPTH_D24
|
||
highp float unpack_depth(highp float depth) {return depth*u_depth_range_unpack.x+u_depth_range_unpack.y;}
|
||
#else
|
||
highp float unpack_depth_rgba(highp vec4 rgba_depth)
|
||
{const highp vec4 bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(rgba_depth,bit_shift)*2.0-1.0;}
|
||
#endif
|
||
bool isOccluded() {highp vec2 coord=gl_FragCoord.xy*u_inv_depth_size;
|
||
#ifdef DEPTH_D24
|
||
highp float depth=unpack_depth(texture(u_depthTexture,coord).r);
|
||
#else
|
||
highp float depth=unpack_depth_rgba(texture(u_depthTexture,coord));
|
||
#endif
|
||
return v_depth > depth+0.0005;}
|
||
#endif
|
||
#define saturate(_x) clamp(_x,0.,1.)
|
||
vec3 linearTosRGB(vec3 color) {return pow(color,vec3(1./2.2));}vec3 sRGBToLinear(vec3 srgbIn) {return pow(srgbIn,vec3(2.2));}float calculate_NdotL(vec3 normal,vec3 lightDir) {const float ext=0.70710678118;return (clamp(dot(normal,lightDir),-ext,1.0)+ext)/(1.0+ext);}vec3 getDiffuseShadedColor(vec3 albedo,vec3 normal,vec3 lightDir,vec3 lightColor)
|
||
{
|
||
#ifdef LIGHTING_3D_MODE
|
||
vec3 transformed_normal=vec3(-normal.xy,normal.z);float lighting_factor;
|
||
#ifdef RENDER_SHADOWS
|
||
lighting_factor=shadowed_light_factor_normal(transformed_normal,v_pos_light_view_0,v_pos_light_view_1,v_depth_shadows);
|
||
#else
|
||
lighting_factor=saturate(dot(transformed_normal,u_lighting_directional_dir));
|
||
#endif
|
||
return apply_lighting(albedo,transformed_normal,lighting_factor);
|
||
#else
|
||
vec3 n=normal;float colorvalue=((albedo.x*0.2126)+(albedo.y*0.7152))+(albedo.z*0.0722);vec3 c=vec3(0.03,0.03,0.03);float directional=clamp(dot(n,vec3(lightDir)),0.0,1.0);directional=mix(1.0-u_lightintensity,max((1.0-colorvalue)+u_lightintensity,1.0),directional);vec3 c3=c+clamp((albedo*directional)*lightColor,mix(vec3(0.0),vec3(0.3),vec3(1.0)-lightColor),vec3(1.0));return c3;
|
||
#endif
|
||
}vec4 getBaseColor() {vec4 albedo=u_baseColorFactor;
|
||
#ifdef HAS_ATTRIBUTE_a_color_3f
|
||
albedo*=vec4(color_3f,1.0);
|
||
#endif
|
||
#ifdef HAS_ATTRIBUTE_a_pbr
|
||
#else
|
||
#ifdef HAS_ATTRIBUTE_a_color_4f
|
||
albedo*=color_4f;
|
||
#endif
|
||
#endif
|
||
#if defined (HAS_TEXTURE_u_baseColorTexture) && defined (HAS_ATTRIBUTE_a_uv_2f)
|
||
vec4 texColor=texture(u_baseColorTexture,uv_2f);if(u_alphaMask) {if (texColor.w < u_alphaCutoff) {discard;}}
|
||
#ifdef UNPREMULT_TEXTURE_IN_SHADER
|
||
if(texColor.w > 0.0) {texColor.rgb/=texColor.w;}texColor.w=1.0;
|
||
#endif
|
||
if(u_baseTextureIsAlpha) {if (texColor.r < 0.5) {discard;}} else {texColor.rgb=sRGBToLinear(texColor.rgb);albedo*=texColor;}
|
||
#endif
|
||
vec4 color=vec4(mix(albedo.rgb,v_color_mix.rgb,v_color_mix.a),albedo.a);
|
||
#ifdef APPLY_LUT_ON_GPU
|
||
color=applyLUT(u_lutTexture,color);
|
||
#endif
|
||
return color;}highp mat3 cotangentFrame(highp vec3 N,highp vec3 p,highp vec2 uv ) {
|
||
#ifdef HAS_TEXTURE_u_normalTexture
|
||
highp vec3 dp1=vec3(dFdx(p.x),dFdx(p.y),dFdx(p.z));highp vec3 dp2=vec3(dFdy(p.x),dFdy(p.y),dFdy(p.z));highp vec2 duv1=vec2(dFdx(uv.x),dFdx(uv.y));highp vec2 duv2=vec2(dFdy(uv.x),dFdy(uv.y));highp vec3 dp2perp=cross( dp2,N );highp vec3 dp1perp=cross( N,dp1 );highp vec3 T=dp2perp*duv1.x+dp1perp*duv2.x;highp vec3 B=dp2perp*duv1.y+dp1perp*duv2.y;highp float lengthT=dot(T,T);highp float lengthB=dot(B,B);highp float maxLength=max(lengthT,lengthB);highp float invmax=inversesqrt( maxLength );highp mat3 res=mat3( T*invmax,B*invmax,N );return res;
|
||
#else
|
||
return mat3(1.0);
|
||
#endif
|
||
}highp vec3 getNormal(){highp vec3 n;
|
||
#ifdef HAS_ATTRIBUTE_a_normal_3f
|
||
n=normalize(normal_3f);
|
||
#else
|
||
highp vec3 fdx=vec3(dFdx(v_position_height.x),dFdx(v_position_height.y),dFdx(v_position_height.z));highp vec3 fdy=vec3(dFdy(v_position_height.x),dFdy(v_position_height.y),dFdy(v_position_height.z));n=normalize(cross(fdx,fdy))*-1.0;
|
||
#endif
|
||
#if defined(HAS_TEXTURE_u_normalTexture) && defined(HAS_ATTRIBUTE_a_uv_2f)
|
||
vec3 nMap=texture( u_normalTexture,uv_2f).xyz;nMap=normalize(2.0*nMap-vec3(1.0));highp vec3 v=normalize(-v_position_height.xyz);highp mat3 TBN=cotangentFrame(n,v,uv_2f);n=normalize(TBN*nMap);
|
||
#endif
|
||
return n;}struct Material {float perceptualRoughness;float alphaRoughness;float metallic;vec3 f90;vec4 baseColor;vec3 diffuseColor;vec3 specularColor;highp vec3 normal;};Material getPBRMaterial() {Material mat;mat.baseColor=getBaseColor();mat.perceptualRoughness=u_roughnessFactor;mat.metallic=u_metallicFactor;
|
||
#ifdef HAS_ATTRIBUTE_a_pbr
|
||
mat.perceptualRoughness=v_roughness_metallic_emissive_alpha.x;mat.metallic=v_roughness_metallic_emissive_alpha.y;mat.baseColor.w*=v_roughness_metallic_emissive_alpha.w;
|
||
#endif
|
||
#if defined(HAS_TEXTURE_u_metallicRoughnessTexture) && defined(HAS_ATTRIBUTE_a_uv_2f)
|
||
vec4 mrSample=texture(u_metallicRoughnessTexture,uv_2f);mat.perceptualRoughness*=mrSample.g;mat.metallic*=mrSample.b;
|
||
#endif
|
||
const float c_minRoughness=0.04;mat.perceptualRoughness=clamp(mat.perceptualRoughness,c_minRoughness,1.0);mat.metallic=saturate(mat.metallic);mat.alphaRoughness=mat.perceptualRoughness*mat.perceptualRoughness;const vec3 f0=vec3(0.04);mat.diffuseColor=mat.baseColor.rgb*(vec3(1.0)-f0);mat.diffuseColor*=1.0-mat.metallic;mat.specularColor=mix(f0,mat.baseColor.rgb,mat.metallic);highp float reflectance=max(max(mat.specularColor.r,mat.specularColor.g),mat.specularColor.b);highp float reflectance90=saturate(reflectance*25.0);mat.f90=vec3(reflectance90);mat.normal=getNormal();return mat;}float V_GGX(float NdotL,float NdotV,float roughness)
|
||
{float a2=roughness*roughness;float GGXV=NdotL*sqrt(NdotV*NdotV*(1.0-a2)+a2);float GGXL=NdotV*sqrt(NdotL*NdotL*(1.0-a2)+a2);return 0.5/(GGXV+GGXL);}float V_GGXFast(float NdotL,float NdotV,float roughness) {float a=roughness;float GGXV=NdotL*(NdotV*(1.0-a)+a);float GGXL=NdotV*(NdotL*(1.0-a)+a);return 0.5/(GGXV+GGXL);}vec3 F_Schlick(vec3 specularColor,vec3 f90,float VdotH)
|
||
{return specularColor+(f90-specularColor)*pow(clamp(1.0-VdotH,0.0,1.0),5.0);}vec3 F_SchlickFast(vec3 specularColor,float VdotH)
|
||
{float x=1.0-VdotH;float x4=x*x*x*x;return specularColor+(1.0-specularColor)*x4*x;}float D_GGX(highp float NdotH,float alphaRoughness)
|
||
{highp float a4=alphaRoughness*alphaRoughness;highp float f=(NdotH*a4-NdotH)*NdotH+1.0;return a4/(PI*f*f);}vec3 diffuseBurley(Material mat,float LdotH,float NdotL,float NdotV)
|
||
{float f90=2.0*LdotH*LdotH*mat.alphaRoughness-0.5;return (mat.diffuseColor/PI)*(1.0+f90*pow((1.0-NdotL),5.0))*(1.0+f90*pow((1.0-NdotV),5.0));}vec3 diffuseLambertian(Material mat)
|
||
{
|
||
#ifdef LIGHTING_3D_MODE
|
||
return mat.diffuseColor;
|
||
#else
|
||
return mat.diffuseColor/PI;
|
||
#endif
|
||
}vec3 EnvBRDFApprox(vec3 specularColor,float roughness,highp float NdotV)
|
||
{vec4 c0=vec4(-1,-0.0275,-0.572,0.022);vec4 c1=vec4(1,0.0425,1.04,-0.04);highp vec4 r=roughness*c0+c1;highp float a004=min(r.x*r.x,exp2(-9.28*NdotV))*r.x+r.y;vec2 AB=vec2(-1.04,1.04)*a004+r.zw;return specularColor*AB.x+AB.y;}vec3 computeIndirectLightContribution(Material mat,float NdotV,vec3 normal)
|
||
{vec3 env_light=vec3(0.65,0.65,0.65);
|
||
#ifdef LIGHTING_3D_MODE
|
||
float ambient_factor=calculate_ambient_directional_factor(normal);env_light=u_lighting_ambient_color*ambient_factor;
|
||
#endif
|
||
vec3 envBRDF=EnvBRDFApprox(mat.specularColor,mat.perceptualRoughness,NdotV);vec3 indirectSpecular= envBRDF*env_light;vec3 indirectDiffuse=mat.diffuseColor*env_light;return indirectSpecular+indirectDiffuse;}vec3 computeLightContribution(Material mat,vec3 lightPosition,vec3 lightColor)
|
||
{highp vec3 n=mat.normal;highp vec3 v=normalize(-v_position_height.xyz);highp vec3 l=normalize(lightPosition);highp vec3 h=normalize(v+l);float NdotV=clamp(abs(dot(n,v)),0.001,1.0);float NdotL=saturate(dot(n,l));highp float NdotH=saturate(dot(n,h));float VdotH=saturate(dot(v,h));vec3 f=F_SchlickFast(mat.specularColor,VdotH);float g=V_GGXFast(NdotL,NdotV,mat.alphaRoughness);float d=D_GGX(NdotH,mat.alphaRoughness);vec3 diffuseTerm=(1.0-f)*diffuseLambertian(mat);vec3 specularTerm=f*g*d;vec3 transformed_normal=vec3(-n.xy,n.z);float lighting_factor;
|
||
#ifdef RENDER_SHADOWS
|
||
lighting_factor=shadowed_light_factor_normal(transformed_normal,v_pos_light_view_0,v_pos_light_view_1,v_depth_shadows);
|
||
#else
|
||
lighting_factor=NdotL;
|
||
#endif
|
||
vec3 directLightColor=(specularTerm+diffuseTerm)*lighting_factor*lightColor;vec3 indirectLightColor=computeIndirectLightContribution(mat,NdotV,transformed_normal);vec3 color=(saturate(directLightColor)+indirectLightColor);float intensityFactor=1.0;
|
||
#if !defined(LIGHTING_3D_MODE)
|
||
const vec3 luminosityFactor=vec3(0.2126,0.7152,0.0722);float luminance=dot(diffuseTerm,luminosityFactor);intensityFactor=mix((1.0-u_lightintensity),max((1.0-luminance+u_lightintensity),1.0),NdotL);
|
||
#endif
|
||
color*=intensityFactor;return color;}void main() {
|
||
#ifdef TERRAIN_FRAGMENT_OCCLUSION
|
||
if (isOccluded()) {discard;}
|
||
#endif
|
||
vec3 lightDir=u_lightpos;vec3 lightColor=u_lightcolor;
|
||
#ifdef LIGHTING_3D_MODE
|
||
lightDir=u_lighting_directional_dir;lightDir.xy=-lightDir.xy;lightColor=u_lighting_directional_color;
|
||
#endif
|
||
vec4 finalColor;
|
||
#ifdef DIFFUSE_SHADED
|
||
vec3 N=getNormal();vec3 baseColor=getBaseColor().rgb;vec3 diffuse=getDiffuseShadedColor(baseColor,N,lightDir,lightColor);
|
||
#ifdef HAS_TEXTURE_u_occlusionTexture
|
||
float ao=(texture(u_occlusionTexture,uv_2f).r-1.0)*u_aoIntensity+1.0;diffuse*=ao;
|
||
#endif
|
||
finalColor=vec4(mix(diffuse,baseColor,u_emissive_strength),1.0)*u_opacity;
|
||
#else
|
||
Material mat=getPBRMaterial();vec3 color=computeLightContribution(mat,lightDir,lightColor);float ao=1.0;
|
||
#if defined (HAS_TEXTURE_u_occlusionTexture) && defined(HAS_ATTRIBUTE_a_uv_2f)
|
||
#ifdef OCCLUSION_TEXTURE_TRANSFORM
|
||
vec2 uv=uv_2f.xy*u_occlusionTextureTransform.zw+u_occlusionTextureTransform.xy;
|
||
#else
|
||
vec2 uv=uv_2f;
|
||
#endif
|
||
ao=(texture(u_occlusionTexture,uv).x-1.0)*u_aoIntensity+1.0;color*=ao;
|
||
#endif
|
||
vec4 emissive=u_emissiveFactor;
|
||
#if defined(HAS_TEXTURE_u_emissionTexture) && defined(HAS_ATTRIBUTE_a_uv_2f)
|
||
emissive.rgb*=sRGBToLinear(texture(u_emissionTexture,uv_2f).rgb);
|
||
#endif
|
||
#ifdef APPLY_LUT_ON_GPU
|
||
float emissiveFactorLength=max(length(u_emissiveFactor.rgb),0.001);emissive.rgb=sRGBToLinear(applyLUT(u_lutTexture,linearTosRGB(emissive.rgb/emissiveFactorLength).rbg))*emissiveFactorLength;
|
||
#endif
|
||
color+=emissive.rgb;float opacity=mat.baseColor.w*u_opacity;
|
||
#ifdef HAS_ATTRIBUTE_a_pbr
|
||
float resEmission=v_roughness_metallic_emissive_alpha.z;resEmission*=v_height_based_emission_params.z+v_height_based_emission_params.w*pow(clamp(v_height_based_emission_params.x,0.0,1.0),v_height_based_emission_params.y);vec3 color_mix=v_color_mix.rgb;
|
||
#ifdef APPLY_LUT_ON_GPU
|
||
color_mix=applyLUT(u_lutTexture,color_mix);
|
||
#endif
|
||
color=mix(color,color_mix,min(1.0,resEmission));
|
||
#ifdef HAS_ATTRIBUTE_a_color_4f
|
||
float distance=length(vec2(1.3*max(0.0,abs(color_4f.x)-color_4f.z),color_4f.y));distance+= mix(0.5,0.0,clamp(resEmission-1.0,0.0,1.0));opacity*=v_roughness_metallic_emissive_alpha.w*saturate(1.0-distance*distance);
|
||
#endif
|
||
#endif
|
||
vec3 unlitColor=mat.baseColor.rgb*ao+emissive.rgb;color=mix(color,unlitColor,u_emissive_strength);color=linearTosRGB(color);color*=opacity;finalColor=vec4(color,opacity);
|
||
#endif
|
||
#ifdef FOG
|
||
finalColor=fog_dither(fog_apply_premultiplied(finalColor,v_fog_pos,v_position_height.w));
|
||
#endif
|
||
#ifdef RENDER_CUTOFF
|
||
finalColor*=v_cutoff_opacity;
|
||
#endif
|
||
#ifdef INDICATOR_CUTOUT
|
||
finalColor=applyCutout(finalColor,v_position_height.w);
|
||
#endif
|
||
glFragColor=finalColor;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
glFragColor=vec4(1.0);
|
||
#endif
|
||
HANDLE_WIREFRAME_DEBUG;}`,`#include "_prelude_fog.vertex.glsl"
|
||
#include "_prelude_shadow.vertex.glsl"
|
||
in vec3 a_pos_3f;
|
||
#pragma mapbox: define-attribute highp vec3 normal_3f
|
||
#pragma mapbox: define-attribute highp vec2 uv_2f
|
||
#pragma mapbox: define-attribute highp vec3 color_3f
|
||
#pragma mapbox: define-attribute highp vec4 color_4f
|
||
#pragma mapbox: define-attribute-vertex-shader-only highp vec4 pbr
|
||
#pragma mapbox: define-attribute-vertex-shader-only highp vec3 heightBasedEmissiveStrength
|
||
uniform mat4 u_matrix;uniform mat4 u_node_matrix;uniform mat4 u_lighting_matrix;uniform vec3 u_camera_pos;uniform vec4 u_color_mix;
|
||
#ifdef INSTANCED_ARRAYS
|
||
in vec4 a_normal_matrix0;in vec4 a_normal_matrix1;in vec4 a_normal_matrix2;in vec4 a_normal_matrix3;
|
||
#else
|
||
uniform highp mat4 u_normal_matrix;
|
||
#endif
|
||
#ifdef RENDER_SHADOWS
|
||
uniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;out highp vec4 v_pos_light_view_0;out highp vec4 v_pos_light_view_1;out float v_depth_shadows;
|
||
#endif
|
||
out vec4 v_position_height;out lowp vec4 v_color_mix;
|
||
#ifdef TERRAIN_FRAGMENT_OCCLUSION
|
||
out highp float v_depth;
|
||
#endif
|
||
#ifdef HAS_ATTRIBUTE_a_pbr
|
||
out lowp vec4 v_roughness_metallic_emissive_alpha;out mediump vec4 v_height_based_emission_params;
|
||
#endif
|
||
vec3 sRGBToLinear(vec3 srgbIn) {return pow(srgbIn,vec3(2.2));}void main() {
|
||
#pragma mapbox: initialize-attribute highp vec3 normal_3f
|
||
#pragma mapbox: initialize-attribute highp vec2 uv_2f
|
||
#pragma mapbox: initialize-attribute highp vec3 color_3f
|
||
#pragma mapbox: initialize-attribute highp vec4 color_4f
|
||
#pragma mapbox: initialize-attribute-custom highp vec4 pbr
|
||
#pragma mapbox: initialize-attribute-custom highp vec3 heightBasedEmissiveStrength
|
||
highp mat4 normal_matrix;
|
||
#ifdef INSTANCED_ARRAYS
|
||
normal_matrix=mat4(a_normal_matrix0,a_normal_matrix1,a_normal_matrix2,a_normal_matrix3);
|
||
#else
|
||
normal_matrix=u_normal_matrix;
|
||
#endif
|
||
vec3 local_pos;mat3 rs;
|
||
#ifdef MODEL_POSITION_ON_GPU
|
||
vec3 pos_color=normal_matrix[0].xyz;vec4 translate=normal_matrix[1];vec3 pos_a=floor(pos_color);vec3 rgb=1.05*(pos_color-pos_a);float hidden=float(pos_a.x > EXTENT);float color_mix=pos_a.z/100.0;v_color_mix=vec4(sRGBToLinear(rgb),color_mix);float meter_to_tile=normal_matrix[0].w;vec4 pos=vec4(pos_a.xy,translate.z,1.0);rs[0].x=normal_matrix[1].w;rs[0].yz=normal_matrix[2].xy;rs[1].xy=normal_matrix[2].zw;rs[1].z=normal_matrix[3].x;rs[2].xyz=normal_matrix[3].yzw;vec4 pos_node=u_lighting_matrix*vec4(a_pos_3f,1.0);vec3 rotated_pos_node=rs*pos_node.xyz;vec3 pos_model_tile=(rotated_pos_node+vec3(translate.xy,0.0))*vec3(meter_to_tile,meter_to_tile,1.0);pos.xyz+=pos_model_tile;local_pos=pos.xyz;gl_Position=mix(u_matrix*pos,AWAY,hidden);pos.z*=meter_to_tile;v_position_height.xyz=pos.xyz-u_camera_pos;
|
||
#else
|
||
local_pos=a_pos_3f;gl_Position=u_matrix*vec4(a_pos_3f,1);v_position_height.xyz=vec3(u_lighting_matrix*vec4(a_pos_3f,1));v_color_mix=vec4(sRGBToLinear(u_color_mix.rgb),u_color_mix.a);
|
||
#endif
|
||
v_position_height.w=a_pos_3f.z;
|
||
#ifdef HAS_ATTRIBUTE_a_pbr
|
||
vec4 albedo_c=decode_color(pbr.xy);vec2 e_r_m=unpack_float(pbr.z);vec2 r_m= unpack_float(e_r_m.y*16.0);r_m.r=r_m.r*16.0;v_color_mix=vec4(albedo_c.rgb,1.0);v_roughness_metallic_emissive_alpha=vec4(vec3(r_m,e_r_m.x)/255.0,albedo_c.a);v_roughness_metallic_emissive_alpha.z*=2.0;float heightBasedRelativeIntepolation=a_pos_3f.z*heightBasedEmissiveStrength.x+heightBasedEmissiveStrength.y;v_height_based_emission_params.x=heightBasedRelativeIntepolation;v_height_based_emission_params.y=heightBasedEmissiveStrength.z;vec2 emissionMultiplierValues=unpack_float(pbr.w)/256.0;v_height_based_emission_params.z=emissionMultiplierValues.x;v_height_based_emission_params.w=emissionMultiplierValues.y-emissionMultiplierValues.x;
|
||
#endif
|
||
#ifdef FOG
|
||
v_fog_pos=fog_position(local_pos);
|
||
#endif
|
||
#ifdef RENDER_CUTOFF
|
||
v_cutoff_opacity=cutoff_opacity(u_cutoff_params,gl_Position.z);
|
||
#endif
|
||
#ifdef TERRAIN_FRAGMENT_OCCLUSION
|
||
v_depth=gl_Position.z/gl_Position.w;
|
||
#endif
|
||
#ifdef HAS_ATTRIBUTE_a_normal_3f
|
||
#ifdef MODEL_POSITION_ON_GPU
|
||
float x_squared_scale=dot(rs[0],rs[0]);float y_squared_scale=dot(rs[1],rs[1]);float z_squared_scale=dot(rs[2],rs[2]);vec3 squared_scale=vec3(x_squared_scale,y_squared_scale,z_squared_scale);normal_3f=rs*((u_lighting_matrix*vec4(normal_3f,0.0)).xyz/squared_scale);normal_3f=normalize(normal_3f);
|
||
#else
|
||
normal_3f=vec3(normal_matrix*vec4(normal_3f,0));
|
||
#endif
|
||
#endif
|
||
#ifdef HAS_ATTRIBUTE_a_pbr
|
||
#ifdef HAS_ATTRIBUTE_a_color_4f
|
||
v_roughness_metallic_emissive_alpha.w=clamp(color_4f.a*v_roughness_metallic_emissive_alpha.w*(v_roughness_metallic_emissive_alpha.z-1.0),0.0,1.0);
|
||
#endif
|
||
#endif
|
||
#ifdef RENDER_SHADOWS
|
||
vec4 shadow_pos=u_node_matrix*vec4(local_pos,1.0);
|
||
#ifdef NORMAL_OFFSET
|
||
#ifdef HAS_ATTRIBUTE_a_normal_3f
|
||
#ifdef MODEL_POSITION_ON_GPU
|
||
vec3 offset=shadow_normal_offset(vec3(-normal_3f.xy,normal_3f.z));shadow_pos.xyz+=offset*shadow_normal_offset_multiplier0();
|
||
#else
|
||
vec3 offset=shadow_normal_offset_model(normal_3f);shadow_pos.xyz+=offset*shadow_normal_offset_multiplier0();
|
||
#endif
|
||
#endif
|
||
#endif
|
||
v_pos_light_view_0=u_light_matrix_0*shadow_pos;v_pos_light_view_1=u_light_matrix_1*shadow_pos;v_depth_shadows=gl_Position.w;
|
||
#endif
|
||
}`),modelDepth:Ti(`in highp float v_depth;void main() {
|
||
#ifndef DEPTH_TEXTURE
|
||
glFragColor=pack_depth(v_depth);
|
||
#endif
|
||
}`,`in vec3 a_pos_3f;uniform mat4 u_matrix;out highp float v_depth;
|
||
#ifdef MODEL_POSITION_ON_GPU
|
||
#ifdef INSTANCED_ARRAYS
|
||
in vec4 a_normal_matrix0;in vec4 a_normal_matrix1;in vec4 a_normal_matrix2;in vec4 a_normal_matrix3;
|
||
#else
|
||
uniform highp mat4 u_instance;
|
||
#endif
|
||
uniform highp mat4 u_node_matrix;
|
||
#endif
|
||
void main() {
|
||
#ifdef MODEL_POSITION_ON_GPU
|
||
highp mat4 instance;
|
||
#ifdef INSTANCED_ARRAYS
|
||
instance=mat4(a_normal_matrix0,a_normal_matrix1,a_normal_matrix2,a_normal_matrix3);
|
||
#else
|
||
instance=u_instance;
|
||
#endif
|
||
vec3 pos_color=instance[0].xyz;vec4 translate=instance[1];vec3 pos_a=floor(pos_color);float hidden=float(pos_a.x > EXTENT);float meter_to_tile=instance[0].w;vec4 pos=vec4(pos_a.xy,translate.z,1.0);mat3 rs;rs[0].x=instance[1].w;rs[0].yz=instance[2].xy;rs[1].xy=instance[2].zw;rs[1].z=instance[3].x;rs[2].xyz=instance[3].yzw;vec4 pos_node=u_node_matrix*vec4(a_pos_3f,1.0);vec3 rotated_pos_node=rs*pos_node.xyz;vec3 pos_model_tile=(rotated_pos_node+vec3(translate.xy,0.0))*vec3(meter_to_tile,meter_to_tile,1.0);pos.xyz+=pos_model_tile;gl_Position=mix(u_matrix*pos,AWAY,hidden);
|
||
#else
|
||
gl_Position=u_matrix*vec4(a_pos_3f,1);
|
||
#endif
|
||
v_depth=gl_Position.z/gl_Position.w;}`),stars:Ti(`in highp vec2 v_uv;in mediump float v_intensity;float shapeCircle(in vec2 uv)
|
||
{float beginFade=0.6;float lengthFromCenter=length(v_uv);return 1.0-clamp((lengthFromCenter-beginFade)/(1.0-beginFade),0.0,1.0);}void main() {float alpha=shapeCircle(v_uv);vec3 color=vec3(1.0,1.0,1.0);alpha*=v_intensity;glFragColor=vec4(color*alpha,alpha);HANDLE_WIREFRAME_DEBUG;}`,`
|
||
in vec3 a_pos_3f;in vec2 a_uv;in float a_size_scale;in float a_fade_opacity;uniform mat4 u_matrix;uniform vec3 u_up;uniform vec3 u_right;uniform float u_intensity_multiplier;out highp vec2 v_uv;out mediump float v_intensity;void main() {v_uv=a_uv;v_intensity=a_fade_opacity*u_intensity_multiplier;vec3 pos=a_pos_3f;pos+=a_uv.x*u_right*a_size_scale;pos+=a_uv.y*u_up*a_size_scale;gl_Position=u_matrix*vec4(pos,1.0);}`),snowParticle:Ti("in highp vec2 uv;in highp float alphaMultiplier;uniform vec4 u_particleColor;uniform vec2 u_simpleShapeParameters;void main() {float t=clamp((length(uv)-u_simpleShapeParameters.x)/(1.0-u_simpleShapeParameters.x),0.0,1.0);float alpha=1.0-pow(t,pow(10.0,u_simpleShapeParameters.y));alpha*=alphaMultiplier;alpha*=u_particleColor.a;vec3 color=u_particleColor.rgb*alpha;glFragColor=vec4(color,alpha) ;HANDLE_WIREFRAME_DEBUG;}",`
|
||
in highp vec3 a_pos_3f;in highp vec2 a_uv;in highp vec4 a_snowParticleData;in highp vec4 a_snowParticleDataHorizontalOscillation;uniform mat4 u_modelview;uniform mat4 u_projection;uniform vec3 u_cam_pos;uniform vec2 u_screenSize;uniform float u_time;uniform float u_boxSize;uniform float u_velocityConeAperture;
|
||
uniform float u_velocity;uniform vec3 u_direction;uniform float u_horizontalOscillationRadius;
|
||
uniform float u_horizontalOscillationRate;
|
||
uniform float u_billboardSize;uniform vec2 u_thinningCenterPos;uniform vec3 u_thinningShape;uniform float u_thinningAffectedRatio;uniform float u_thinningParticleOffset;out highp vec2 uv;out highp float alphaMultiplier;void main() {vec3 pos=a_pos_3f;float halfBoxSize=0.5*u_boxSize;pos.xyz*=halfBoxSize;pos+=u_cam_pos;float velocityConeApertureRad=radians(u_velocityConeAperture*0.5);float coneAnglePichRad=velocityConeApertureRad*a_snowParticleData.z;float coneAngleHeadingRad=a_snowParticleData.w*radians(360.0);vec3 localZ=normalize(u_direction);vec3 localX=normalize(cross(localZ,vec3(1,0,0)));vec3 localY=normalize(cross(localZ,localX));vec3 direction;direction.x=cos(coneAngleHeadingRad)*sin(coneAnglePichRad);direction.y=sin(coneAngleHeadingRad)*sin(coneAnglePichRad);direction.z=cos(coneAnglePichRad);direction=normalize(direction);vec3 simPosLocal=vec3(0,0,0);float velocityScale=(1.0+3.0*a_snowParticleData.y)*u_velocity;simPosLocal+=direction*velocityScale*u_time;float horizontalOscillationRadius=u_horizontalOscillationRadius*a_snowParticleDataHorizontalOscillation.x;float horizontalOscillationAngle=u_horizontalOscillationRate*u_time*(-1.0+2.0*a_snowParticleDataHorizontalOscillation.y);simPosLocal.xy+=horizontalOscillationRadius*vec2(cos(horizontalOscillationAngle),sin(horizontalOscillationAngle));vec3 simPos=localX*simPosLocal.x+
|
||
localY*simPosLocal.y+localZ*simPosLocal.z;pos+=simPos;pos=fract((pos+vec3(halfBoxSize))/vec3(u_boxSize))*u_boxSize-vec3(halfBoxSize);float clipZ=-u_cam_pos.z+pos.z;vec4 posView=u_modelview*vec4(pos,1.0);float size=u_billboardSize;alphaMultiplier=1.0;vec4 posScreen=u_projection*posView;posScreen/=posScreen.w;posScreen.xy=vec2(0.5)+posScreen.xy*0.5;posScreen.xy*=u_screenSize;vec2 thinningCenterPos=u_thinningCenterPos.xy;thinningCenterPos.y=u_screenSize.y-thinningCenterPos.y;float screenDist=length((thinningCenterPos-posScreen.xy)/(0.5*u_screenSize));screenDist+=a_snowParticleData.x*u_thinningParticleOffset;float scaleFactorMode=0.0;float thinningShapeDist=u_thinningShape.x+u_thinningShape.y;if (screenDist < thinningShapeDist) {float thinningFadeRatio=clamp((screenDist-u_thinningShape.x)/u_thinningShape.y,0.0,1.0);thinningFadeRatio=pow(thinningFadeRatio,u_thinningShape.z);if (a_snowParticleData.x < u_thinningAffectedRatio) {scaleFactorMode=1.0-thinningFadeRatio;alphaMultiplier=thinningFadeRatio;}}vec4 posScreen1=u_projection*vec4(posView.x-size,posView.yzw);posScreen1/=posScreen1.w;vec4 posScreen2=u_projection*vec4(posView.x+size,posView.yzw);posScreen2/=posScreen2.w;posScreen1.xy=vec2(0.5)+posScreen1.xy*0.5;posScreen1.xy*=u_screenSize;posScreen2.xy=vec2(0.5)+posScreen2.xy*0.5;posScreen2.xy*=u_screenSize;float screenLength=length(posScreen1.xy-posScreen2.xy);float screenEpsilon=3.0;float scaleFactor=1.0;if (screenLength < screenEpsilon) {scaleFactor=screenEpsilon/max(screenLength,0.01);scaleFactor=mix(scaleFactor,1.0,scaleFactorMode);}float screenEpsilon2=15.0;if (screenLength > screenEpsilon2) {scaleFactor=screenEpsilon2/max(screenLength,0.01);}size*=scaleFactor;vec2 right=size*vec2(1,0);vec2 up=size*vec2(0,1);posView.xy+=right*a_uv.x;posView.xy+=up*a_uv.y;uv=a_uv;gl_Position=u_projection*posView;}`),rainParticle:Ti("in highp vec2 uv;in highp float particleRandomValue;uniform sampler2D u_texScreen;uniform float u_distortionStrength;uniform vec4 u_color;uniform vec2 u_thinningCenterPos;uniform vec3 u_thinningShape;uniform float u_thinningAffectedRatio;uniform float u_thinningParticleOffset;uniform float u_shapeDirectionalPower;uniform float u_mode;void main() {vec2 st=uv*0.5+vec2(0.5);vec2 uvm=uv;uvm.y=-1.0+2.0*pow(st.y,u_shapeDirectionalPower);float shape=clamp(1.0-length(uvm),0.0,1.0);float alpha=abs(shape)*u_color.a;vec2 screenSize=vec2(textureSize(u_texScreen,0));vec2 thinningCenterPos=u_thinningCenterPos.xy;thinningCenterPos.y=screenSize.y-thinningCenterPos.y;float screenDist=length((thinningCenterPos-gl_FragCoord.xy)/(0.5*screenSize));screenDist+=(0.5+0.5*particleRandomValue)*u_thinningParticleOffset;float thinningShapeDist=u_thinningShape.x+u_thinningShape.y;float thinningAlpha=1.0;if (screenDist < thinningShapeDist) {float thinningFadeRatio=clamp((screenDist-u_thinningShape.x)/u_thinningShape.y,0.0,1.0);thinningFadeRatio=pow(thinningFadeRatio,u_thinningShape.z);thinningAlpha*=thinningFadeRatio;}vec2 offsetXY=normalize(uvm)*abs(shape);vec2 stScreen=(gl_FragCoord.xy+offsetXY*u_distortionStrength*thinningAlpha)/screenSize;vec3 colorScreen=texture(u_texScreen,stScreen).rgb;alpha*=thinningAlpha;glFragColor=mix(vec4(colorScreen,1.0),vec4(u_color.rgb*alpha,alpha),u_mode);HANDLE_WIREFRAME_DEBUG;}",`
|
||
in highp vec3 a_pos_3f;in highp vec2 a_uv;in highp vec4 a_rainParticleData;uniform mat4 u_modelview;uniform mat4 u_projection;uniform vec3 u_cam_pos;uniform float u_time;uniform float u_boxSize;uniform float u_velocityConeAperture;
|
||
uniform float u_velocity;
|
||
uniform vec2 u_rainDropletSize;uniform vec3 u_rainDirection;out highp vec2 uv;out highp float particleRandomValue;void main() {vec3 pos=a_pos_3f;float halfBoxSize=0.5*u_boxSize;pos*=halfBoxSize;
|
||
pos+=u_cam_pos;float velocityConeApertureRad=radians(u_velocityConeAperture*0.5);float coneAnglePichRad=velocityConeApertureRad*a_rainParticleData.z;float coneAngleHeadingRad=a_rainParticleData.w*radians(360.0);vec3 localZ=normalize(u_rainDirection);vec3 localX=normalize(cross(localZ,vec3(1,0,0)));vec3 localY=normalize(cross(localZ,localX));vec3 directionLocal;directionLocal.x=cos(coneAngleHeadingRad)*sin(coneAnglePichRad);directionLocal.y=sin(coneAngleHeadingRad)*sin(coneAnglePichRad);directionLocal.z=cos(coneAnglePichRad);directionLocal=normalize(directionLocal);vec3 directionWorld=localX*directionLocal.x+localY*directionLocal.y+localZ*directionLocal.z;float velocityScale=(1.0+3.0*a_rainParticleData.y)*u_velocity;vec3 simPosLocal=vec3(0,0,0);simPosLocal+=directionLocal*velocityScale*u_time;vec3 simPos=localX*simPosLocal.x+
|
||
localY*simPosLocal.y+localZ*simPosLocal.z;pos+=simPos;pos=fract((pos+vec3(halfBoxSize))/vec3(u_boxSize))*u_boxSize-vec3(halfBoxSize);vec4 posView=u_modelview*vec4(pos,1.0);vec3 directionView=normalize((u_modelview*vec4(directionWorld,0.0)).xyz);vec3 side=cross(directionView,normalize(posView.xyz));posView.xyz+=side*a_uv.x*u_rainDropletSize.x;posView.xyz+=directionView*a_uv.y*u_rainDropletSize.y;uv=a_uv;particleRandomValue=a_rainParticleData.x;gl_Position=u_projection*posView;}`),vignette:Ti("uniform vec3 u_vignetteShape;uniform vec4 u_vignetteColor;in vec2 st;void main() {float screenDist=length(st);float alpha=clamp((screenDist-u_vignetteShape.x)/u_vignetteShape.y,0.0,1.0);alpha=pow(alpha,u_vignetteShape.z)*u_vignetteColor.a;vec3 color=u_vignetteColor.rgb;glFragColor=vec4(color*alpha,alpha) ;}","in vec2 a_pos_2f;out vec2 st;void main() {st=a_pos_2f;gl_Position=vec4(a_pos_2f,0,1);}"),occlusion:Ti("uniform vec4 u_color;void main() {glFragColor=u_color;}",`#include "_prelude_terrain.vertex.glsl"
|
||
in highp vec2 a_offset_xy;uniform highp vec3 u_anchorPos;uniform mat4 u_matrix;uniform vec2 u_screenSizePx;uniform vec2 u_occluderSizePx;void main() {vec3 world_pos=u_anchorPos;
|
||
#ifdef TERRAIN
|
||
float e=elevation(world_pos.xy);world_pos.z+=e;
|
||
#endif
|
||
vec4 projected_point=u_matrix*vec4(world_pos,1.0);projected_point.xy+=projected_point.w*a_offset_xy*0.5*u_occluderSizePx/u_screenSizePx;gl_Position=projected_point;}`)};function ho(c,t){const s=c.replace(/\s*\/\/[^\n]*\n/g,`
|
||
`).split(`
|
||
`);for(let h of s)if(h=h.trim(),h[0]==="#"&&h.includes("if")&&!h.includes("endif")){h=h.replace("#","").replace(/ifdef|ifndef|elif|if/g,"").replace(/!|defined|\(|\)|\|\||&&/g,"").replace(/\s+/g," ").trim();const _=h.split(" ");for(const y of _)t.includes(y)||t.push(y)}}function Ti(c,t){const s=/#include\s+"([^"]+)"/g,h=/#pragma mapbox: ([\w\-]+) ([\w]+) ([\w]+) ([\w]+)/g;let _=t.match(/(attribute(\S*)|(^\s*|;)in) (highp |mediump |lowp )?([\w]+) ([\w]+)/gm);_&&(_=_.map(F=>{const N=F.split(" ");return N[N.length-1]}),_=[...new Set(_)]);const y={},T=[],z=[];if(c=c.replace(s,(F,N)=>(z.push(N),"")),(t=t.replace(s,(F,N)=>(T.push(N),""))).includes("flat out"))return void console.error('The usage of "flat" qualifier is disallowed, see: https://bugs.webkit.org/show_bug.cgi?id=268071');let R=[...Fr];ho(c,R),ho(t,R);for(const F of[...T,...z])co[F]||console.error(`Undefined include: ${F}`),ta[F]||(ta[F]=[],ho(co[F],ta[F])),R=[...R,...ta[F]];return{fragmentSource:c=c.replace(h,(F,N,G,Z,W)=>(y[W]=!0,N==="define"?`
|
||
#ifndef HAS_UNIFORM_u_${W}
|
||
in ${G} ${Z} ${W};
|
||
#else
|
||
uniform ${G} ${Z} u_${W};
|
||
#endif
|
||
`:N==="initialize"?`
|
||
#ifdef HAS_UNIFORM_u_${W}
|
||
${G} ${Z} ${W} = u_${W};
|
||
#endif
|
||
`:N==="define-attribute"?`
|
||
#ifdef HAS_ATTRIBUTE_a_${W}
|
||
in ${G} ${Z} ${W};
|
||
#endif
|
||
`:N==="initialize-attribute"?"":void 0)),vertexSource:t=t.replace(h,(F,N,G,Z,W)=>{const te=Z==="float"?"vec2":Z,ee=W.match(/color/)?"color":te;return N==="define-attribute-vertex-shader-only"?`
|
||
#ifdef HAS_ATTRIBUTE_a_${W}
|
||
in ${G} ${Z} a_${W};
|
||
#endif
|
||
`:y[W]?N==="define"?`
|
||
#ifndef HAS_UNIFORM_u_${W}
|
||
uniform lowp float u_${W}_t;
|
||
in ${G} ${te} a_${W};
|
||
out ${G} ${Z} ${W};
|
||
#else
|
||
uniform ${G} ${Z} u_${W};
|
||
#endif
|
||
`:N==="initialize"?ee==="vec4"?`
|
||
#ifndef HAS_UNIFORM_u_${W}
|
||
${W} = a_${W};
|
||
#else
|
||
${G} ${Z} ${W} = u_${W};
|
||
#endif
|
||
`:`
|
||
#ifndef HAS_UNIFORM_u_${W}
|
||
${W} = unpack_mix_${ee}(a_${W}, u_${W}_t);
|
||
#else
|
||
${G} ${Z} ${W} = u_${W};
|
||
#endif
|
||
`:N==="define-attribute"?`
|
||
#ifdef HAS_ATTRIBUTE_a_${W}
|
||
in ${G} ${Z} a_${W};
|
||
out ${G} ${Z} ${W};
|
||
#endif
|
||
`:N==="initialize-attribute"?`
|
||
#ifdef HAS_ATTRIBUTE_a_${W}
|
||
${W} = a_${W};
|
||
#endif
|
||
`:void 0:N==="define"?`
|
||
#ifndef HAS_UNIFORM_u_${W}
|
||
uniform lowp float u_${W}_t;
|
||
in ${G} ${te} a_${W};
|
||
#else
|
||
uniform ${G} ${Z} u_${W};
|
||
#endif
|
||
`:N==="define-instanced"?ee==="mat4"?`
|
||
#ifdef INSTANCED_ARRAYS
|
||
in vec4 a_${W}0;
|
||
in vec4 a_${W}1;
|
||
in vec4 a_${W}2;
|
||
in vec4 a_${W}3;
|
||
#else
|
||
uniform ${G} ${Z} u_${W};
|
||
#endif
|
||
`:`
|
||
#ifdef INSTANCED_ARRAYS
|
||
in ${G} ${te} a_${W};
|
||
#else
|
||
uniform ${G} ${Z} u_${W};
|
||
#endif
|
||
`:N==="initialize-attribute-custom"?`
|
||
#ifdef HAS_ATTRIBUTE_a_${W}
|
||
${G} ${Z} ${W} = a_${W};
|
||
#endif
|
||
`:ee==="vec4"?`
|
||
#ifndef HAS_UNIFORM_u_${W}
|
||
${G} ${Z} ${W} = a_${W};
|
||
#else
|
||
${G} ${Z} ${W} = u_${W};
|
||
#endif
|
||
`:`
|
||
#ifndef HAS_UNIFORM_u_${W}
|
||
${G} ${Z} ${W} = unpack_mix_${ee}(a_${W}, u_${W}_t);
|
||
#else
|
||
${G} ${Z} ${W} = u_${W};
|
||
#endif
|
||
`}),staticAttributes:_,usedDefines:R,vertexIncludes:T,fragmentIncludes:z}}class iu{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffers=[],this.vao=null}bind(t,s,h,_,y,T,z,R){this.context=t;let F=this.boundPaintVertexBuffers.length!==_.length;for(let G=0;!F&&G<_.length;G++)this.boundPaintVertexBuffers[G]!==_[G]&&(F=!0);let N=this.boundDynamicVertexBuffers.length!==z.length;for(let G=0;!N&&G<z.length;G++)this.boundDynamicVertexBuffers[G]!==z[G]&&(N=!0);if(!this.vao||this.boundProgram!==s||this.boundLayoutVertexBuffer!==h||F||N||this.boundIndexBuffer!==y||this.boundVertexOffset!==T)this.freshBind(s,h,_,y,T,z,R);else{t.bindVertexArrayOES.set(this.vao);for(const G of z)G&&(G.bind(),R&&G.instanceCount&&G.setVertexAttribDivisor(t.gl,s,R));y&&y.dynamicDraw&&y.bind()}}freshBind(t,s,h,_,y,T,z){const R=t.numAttributes,F=this.context,N=F.gl;this.vao&&this.destroy(),this.vao=F.gl.createVertexArray(),F.bindVertexArrayOES.set(this.vao),this.boundProgram=t,this.boundLayoutVertexBuffer=s,this.boundPaintVertexBuffers=h,this.boundIndexBuffer=_,this.boundVertexOffset=y,this.boundDynamicVertexBuffers=T,s.enableAttributes(N,t),s.bind(),s.setVertexAttribPointers(N,t,y);for(const G of h)G.enableAttributes(N,t),G.bind(),G.setVertexAttribPointers(N,t,y);for(const G of T)G&&(G.enableAttributes(N,t),G.bind(),G.setVertexAttribPointers(N,t,y),z&&G.instanceCount&&G.setVertexAttribDivisor(N,t,z));_&&_.bind(),F.currentNumAttributes=R}destroy(){this.vao&&(this.context.gl.deleteVertexArray(this.vao),this.vao=null)}}function zl(c,t){const s=Math.pow(2,t.canonical.z),h=t.canonical.y;return[new i.aa(0,h/s).toLngLat().lat,new i.aa(0,(h+1)/s).toLngLat().lat]}function $a(c,t,s,h,_,y,T){const z=c.context,R=z.gl,F=s.hillshadeFBO;if(!F)return;c.prepareDrawTile();const N=c.isTileAffectedByFog(t),G=c.getOrCreateProgram("hillshade",{overrideFog:N});z.activeTexture.set(R.TEXTURE0),R.bindTexture(R.TEXTURE_2D,F.colorAttachment.get());const Z=((se,oe,he,_e)=>{const pe=he.paint.get("hillshade-shadow-color"),Me=he.paint.get("hillshade-shadow-color-use-theme").constantOr("default")==="none",xe=he.paint.get("hillshade-highlight-color"),we=he.paint.get("hillshade-highlight-color-use-theme").constantOr("default")==="none",ve=he.paint.get("hillshade-accent-color"),Ae=he.paint.get("hillshade-accent-color-use-theme").constantOr("default")==="none",Oe=he.paint.get("hillshade-emissive-strength");let Xe=i.ai(he.paint.get("hillshade-illumination-direction"));if(he.paint.get("hillshade-illumination-anchor")==="viewport")Xe-=se.transform.angle;else if(se.style&&se.style.enable3dLights()&&se.style.directionalLight){const ke=se.style.directionalLight.properties.get("direction"),Ne=i.cb(ke.x,ke.y,ke.z);Xe=i.ai(Ne[1])}const He=!se.options.moving;return{u_matrix:_e||se.transform.calculateProjMatrix(oe.tileID.toUnwrapped(),He),u_image:0,u_latrange:zl(0,oe.tileID),u_light:[he.paint.get("hillshade-exaggeration"),Xe],u_shadow:pe.toRenderColor(Me?null:he.lut),u_highlight:xe.toRenderColor(we?null:he.lut),u_emissive_strength:Oe,u_accent:ve.toRenderColor(Ae?null:he.lut)}})(c,s,h,c.terrain?t.projMatrix:null);c.uploadCommonUniforms(z,G,t.toUnwrapped());const{tileBoundsBuffer:W,tileBoundsIndexBuffer:te,tileBoundsSegments:ee}=c.getTileBoundsBuffers(s);G.draw(c,R.TRIANGLES,_,y,T,ti.disabled,Z,h.id,W,te,ee)}function ia(c,t,s){if(!t.needsDEMTextureUpload)return;const h=c.context,_=h.gl;h.pixelStoreUnpackPremultiplyAlpha.set(!1),t.demTexture=t.demTexture||c.getTileTexture(s.stride);const y=s.getPixels();t.demTexture?t.demTexture.update(y,{premultiply:!1}):t.demTexture=new i.T(h,y,_.R32F,{premultiply:!1}),t.needsDEMTextureUpload=!1}function oh(c,t,s){const h=c.context,_=h.gl;if(!t.dem)return;const y=t.dem;if(h.activeTexture.set(_.TEXTURE1),ia(c,t,y),!t.demTexture)return;t.demTexture.bind(_.NEAREST,_.CLAMP_TO_EDGE);const T=y.dim;h.activeTexture.set(_.TEXTURE0);let z=t.hillshadeFBO;if(!z){const Z=new i.T(h,{width:T,height:T,data:null},_.RGBA8);Z.bind(_.LINEAR,_.CLAMP_TO_EDGE),z=t.hillshadeFBO=h.createFramebuffer(T,T,!0,"renderbuffer"),z.colorAttachment.set(Z.texture)}h.bindFramebuffer.set(z.framebuffer),h.viewport.set([0,0,T,T]);const{tileBoundsBuffer:R,tileBoundsIndexBuffer:F,tileBoundsSegments:N}=c.getMercatorTileBoundsBuffers(),G=[];c.linearFloatFilteringSupported()&&G.push("TERRAIN_DEM_FLOAT_FORMAT"),c.getOrCreateProgram("hillshadePrepare",{defines:G}).draw(c,_.TRIANGLES,Wt.disabled,ci.disabled,bi.unblended,ti.disabled,((Z,W)=>{const te=W.stride,ee=i.ab.mat4.create();return i.ab.mat4.ortho(ee,0,i.ag,-i.ag,0,0,1),i.ab.mat4.translate(ee,ee,[0,-i.ag,0]),{u_matrix:ee,u_image:1,u_dimension:[te,te],u_zoom:Z.overscaledZ}})(t.tileID,y),s.id,R,F,N),t.needsHillshadePrepare=!1}class yn{constructor(t){this.gl=t.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1}get(){return this.current}set(t){}getDefault(){return this.default}setDefault(){this.set(this.default)}}class nu extends yn{getDefault(){return i.aj.transparent}set(t){const s=this.current;(t.r!==s.r||t.g!==s.g||t.b!==s.b||t.a!==s.a||this.dirty)&&(this.gl.clearColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1)}}class su extends yn{getDefault(){return 1}set(t){(t!==this.current||this.dirty)&&(this.gl.clearDepth(t),this.current=t,this.dirty=!1)}}class hc extends yn{getDefault(){return 0}set(t){(t!==this.current||this.dirty)&&(this.gl.clearStencil(t),this.current=t,this.dirty=!1)}}class uc extends yn{getDefault(){return[!0,!0,!0,!0]}set(t){const s=this.current;(t[0]!==s[0]||t[1]!==s[1]||t[2]!==s[2]||t[3]!==s[3]||this.dirty)&&(this.gl.colorMask(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1)}}class dc extends yn{getDefault(){return!0}set(t){(t!==this.current||this.dirty)&&(this.gl.depthMask(t),this.current=t,this.dirty=!1)}}class ah extends yn{getDefault(){return 255}set(t){(t!==this.current||this.dirty)&&(this.gl.stencilMask(t),this.current=t,this.dirty=!1)}}class lh extends yn{getDefault(){return{func:this.gl.ALWAYS,ref:0,mask:255}}set(t){const s=this.current;(t.func!==s.func||t.ref!==s.ref||t.mask!==s.mask||this.dirty)&&(this.gl.stencilFunc(t.func,t.ref,t.mask),this.current=t,this.dirty=!1)}}class ch extends yn{getDefault(){const t=this.gl;return[t.KEEP,t.KEEP,t.KEEP]}set(t){const s=this.current;(t[0]!==s[0]||t[1]!==s[1]||t[2]!==s[2]||this.dirty)&&(this.gl.stencilOp(t[0],t[1],t[2]),this.current=t,this.dirty=!1)}}class kd extends yn{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const s=this.gl;t?s.enable(s.STENCIL_TEST):s.disable(s.STENCIL_TEST),this.current=t,this.dirty=!1}}class p extends yn{getDefault(){return[0,1]}set(t){const s=this.current;(t[0]!==s[0]||t[1]!==s[1]||this.dirty)&&(this.gl.depthRange(t[0],t[1]),this.current=t,this.dirty=!1)}}class A extends yn{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const s=this.gl;t?s.enable(s.DEPTH_TEST):s.disable(s.DEPTH_TEST),this.current=t,this.dirty=!1}}class B extends yn{getDefault(){return this.gl.LESS}set(t){(t!==this.current||this.dirty)&&(this.gl.depthFunc(t),this.current=t,this.dirty=!1)}}class X extends yn{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const s=this.gl;t?s.enable(s.BLEND):s.disable(s.BLEND),this.current=t,this.dirty=!1}}class ne extends yn{getDefault(){const t=this.gl;return[t.ONE,t.ZERO,t.ONE,t.ZERO]}set(t){const s=this.current;(t[0]!==s[0]||t[1]!==s[1]||t[2]!==s[2]||t[3]!==s[3]||this.dirty)&&(this.gl.blendFuncSeparate(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1)}}class ye extends yn{getDefault(){return i.aj.transparent}set(t){const s=this.current;(t.r!==s.r||t.g!==s.g||t.b!==s.b||t.a!==s.a||this.dirty)&&(this.gl.blendColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1)}}class We extends yn{getDefault(){return this.gl.FUNC_ADD}set(t){(t!==this.current||this.dirty)&&(this.gl.blendEquationSeparate(t,t),this.current=t,this.dirty=!1)}}class at extends yn{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const s=this.gl;t?s.enable(s.CULL_FACE):s.disable(s.CULL_FACE),this.current=t,this.dirty=!1}}class ft extends yn{getDefault(){return this.gl.BACK}set(t){(t!==this.current||this.dirty)&&(this.gl.cullFace(t),this.current=t,this.dirty=!1)}}class Rt extends yn{getDefault(){return this.gl.CCW}set(t){(t!==this.current||this.dirty)&&(this.gl.frontFace(t),this.current=t,this.dirty=!1)}}let ii=class extends yn{getDefault(){return null}set(c){(c!==this.current||this.dirty)&&(this.gl.useProgram(c),this.current=c,this.dirty=!1)}};class Ci extends yn{getDefault(){return this.gl.TEXTURE0}set(t){(t!==this.current||this.dirty)&&(this.gl.activeTexture(t),this.current=t,this.dirty=!1)}}class Wi extends yn{getDefault(){const t=this.gl;return[0,0,t.drawingBufferWidth,t.drawingBufferHeight]}set(t){const s=this.current;(t[0]!==s[0]||t[1]!==s[1]||t[2]!==s[2]||t[3]!==s[3]||this.dirty)&&(this.gl.viewport(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1)}}class Hs extends yn{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const s=this.gl;s.bindFramebuffer(s.FRAMEBUFFER,t),this.current=t,this.dirty=!1}}class ws extends yn{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const s=this.gl;s.bindRenderbuffer(s.RENDERBUFFER,t),this.current=t,this.dirty=!1}}class Os extends yn{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const s=this.gl;s.bindTexture(s.TEXTURE_2D,t),this.current=t,this.dirty=!1}}class dr extends yn{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const s=this.gl;s.bindBuffer(s.ARRAY_BUFFER,t),this.current=t,this.dirty=!1}}class Xa extends yn{getDefault(){return null}set(t){const s=this.gl;s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,t),this.current=t,this.dirty=!1}}class Rd extends yn{getDefault(){return null}set(t){this.gl&&(t!==this.current||this.dirty)&&(this.gl.bindVertexArray(t),this.current=t,this.dirty=!1)}}class Od extends yn{getDefault(){return 4}set(t){if(t===this.current&&!this.dirty)return;const s=this.gl;s.pixelStorei(s.UNPACK_ALIGNMENT,t),this.current=t,this.dirty=!1}}class Fd extends yn{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const s=this.gl;s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t),this.current=t,this.dirty=!1}}class ru extends yn{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const s=this.gl;s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,t),this.current=t,this.dirty=!1}}class Dl extends yn{constructor(t,s){super(t),this.context=t,this.parent=s}getDefault(){return null}}class fc extends Dl{setDirty(){this.dirty=!0}set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const s=this.gl;s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,t,0),this.current=t,this.dirty=!1}}class ts extends Dl{attachment(){return this.gl.DEPTH_ATTACHMENT}set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const s=this.gl;s.framebufferRenderbuffer(s.FRAMEBUFFER,this.attachment(),s.RENDERBUFFER,t),this.current=t,this.dirty=!1}}class Io extends Dl{attachment(){return this.gl.DEPTH_ATTACHMENT}set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const s=this.gl;s.framebufferTexture2D(s.FRAMEBUFFER,this.attachment(),s.TEXTURE_2D,t,0),this.current=t,this.dirty=!1}}class ou extends ts{attachment(){return this.gl.DEPTH_STENCIL_ATTACHMENT}}const au=(c,t,s)=>({u_matrix:c,u_image0:0,u_skirt_height:t,u_ground_shadow_factor:s}),hh=(c,t,s,h,_,y,T,z,R,F,N,G,Z,W,te,ee)=>({u_proj_matrix:Float32Array.from(c),u_globe_matrix:t,u_normalize_matrix:Float32Array.from(h),u_merc_matrix:s,u_zoom_transition:_,u_merc_center:y,u_image0:0,u_frustum_tl:T,u_frustum_tr:z,u_frustum_br:R,u_frustum_bl:F,u_globe_pos:N,u_globe_radius:G,u_viewport:Z,u_grid_matrix:ee?Float32Array.from(ee):new Float32Array(9),u_skirt_height:W,u_far_z_cutoff:te});function Ya(c,t){return c!=null&&t!=null&&!(!c.hasData()||!t.hasData())&&c.demTexture!=null&&t.demTexture!=null&&c.tileID.key!==t.tileID.key}const vr=new class{constructor(){this.operations={}}newMorphing(c,t,s,h,_){if(c in this.operations){const y=this.operations[c];y.to.tileID.key!==s.tileID.key&&(y.queued=s)}else this.operations[c]={startTime:h,phase:0,duration:_,from:t,to:s,queued:null}}getMorphValuesForProxy(c){if(!(c in this.operations))return null;const t=this.operations[c];return{from:t.from,to:t.to,phase:t.phase}}update(c){for(const t in this.operations){const s=this.operations[t];for(s.phase=(c-s.startTime)/s.duration;s.phase>=1||!this._validOp(s);)if(!this._nextOp(s,c)){delete this.operations[t];break}}}_nextOp(c,t){return!!c.queued&&(c.from=c.to,c.to=c.queued,c.queued=null,c.phase=0,c.startTime=t,!0)}_validOp(c){return c.from.hasData()&&c.to.hasData()}},uh={0:null,1:"TERRAIN_VERTEX_MORPHING"};function Ma(c,t,s){if(t===0)return 0;const h=t<1&&s===514?.25/t:1;return 6*Math.pow(1.5,22-c)*Math.max(t,1)*h}function Bd(c,t){const s=1<<c.z;return!t&&(c.x===0||c.x===s-1)||c.y===0||c.y===s-1}const pc=c=>({u_matrix:c});function lu(c,t,s,h,_){if(_>0){const y=i.q.now(),T=(y-c.timeAdded)/_,z=t?(y-t.timeAdded)/_:-1,R=s.getSource(),F=h.coveringZoomLevel({tileSize:R.tileSize,roundZoom:R.roundZoom}),N=!t||Math.abs(t.tileID.overscaledZ-F)>Math.abs(c.tileID.overscaledZ-F),G=N&&c.refreshedUponExpiration?1:i.aw(N?T:1-z,0,1);return c.refreshedUponExpiration&&T>=1&&(c.refreshedUponExpiration=!1),t?{opacity:1,mix:1-G}:{opacity:G,mix:0}}return{opacity:1,mix:0}}class Op extends rr{constructor(t){const s={type:"raster-dem",maxzoom:t.transform.maxZoom},h=new i.D(i.ci(),null),_=qo("mock-dem",s,h,t.style);super("mock-dem",_,!1),_.setEventedParent(this),this._sourceLoaded=!0}_loadTile(t,s){t.state="loaded",s(null)}}class Nd extends rr{constructor(t){const s=qo("proxy",{type:"geojson",maxzoom:t.transform.maxZoom},new i.D(i.ci(),null),t.style);super("proxy",s,!1),s.setEventedParent(this),this.map=this.getSource().map=t,this.used=this._sourceLoaded=!0,this.renderCache=[],this.renderCachePool=[],this.proxyCachedFBO={}}update(t,s,h){if(t.freezeTileCoverage)return;this.transform=t;const _=t.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}).reduce((y,T)=>{if(y[T.key]="",!this._tiles[T.key]){const z=new zr(T,this._source.tileSize*T.overscaleFactor(),t.tileZoom);z.state="loaded",this._tiles[T.key]=z}return y},{});for(const y in this._tiles)y in _||(this.freeFBO(y),this._tiles[y].unloadVectorData(),delete this._tiles[y])}freeFBO(t){const s=this.proxyCachedFBO[t];if(s!==void 0){const h=Object.values(s);this.renderCachePool.push(...h),delete this.proxyCachedFBO[t]}}deallocRenderCache(){this.renderCache.forEach(t=>t.fb.destroy()),this.renderCache=[],this.renderCachePool=[],this.proxyCachedFBO={}}}class cu extends i.aG{constructor(t,s,h){super(t.overscaledZ,t.wrap,t.canonical.z,t.canonical.x,t.canonical.y),this.proxyTileKey=s,this.projMatrix=h}}class Fp extends i.cJ{constructor(t,s){super(),this._debugParams={sortTilesHiZFirst:!0,disableRenderCache:!1},t.tp.registerParameter(this._debugParams,["Terrain"],"sortTilesHiZFirst",{},()=>{this._style.map.triggerRepaint()}),t.tp.registerParameter(this._debugParams,["Terrain"],"disableRenderCache",{},()=>{this._style.map.triggerRepaint()}),t.tp.registerButton(["Terrain"],"Invalidate Render Cache",()=>{this.invalidateRenderCache=!0,this._style.map.triggerRepaint()}),this.painter=t,this.terrainTileForTile={},this.prevTerrainTileForTile={};const[h,_,y]=function(R){const F=new i.b4,N=new i.aU,G=131;F.reserve(17161),N.reserve(33800);const Z=i.ag/128,W=i.ag+Z/2,te=W+Z;for(let se=-Z;se<te;se+=Z)for(let oe=-Z;oe<te;oe+=Z){const he=oe<0||oe>W||se<0||se>W?24575:0,_e=i.aw(Math.round(oe),0,i.ag),pe=i.aw(Math.round(se),0,i.ag);F.emplaceBack(_e+he,pe)}const ee=(se,oe)=>{const he=oe*G+se;N.emplaceBack(he+1,he,he+G),N.emplaceBack(he+G,he+G+1,he+1)};for(let se=1;se<129;se++)for(let oe=1;oe<129;oe++)ee(oe,se);return[0,129].forEach(se=>{for(let oe=0;oe<130;oe++)ee(oe,se),ee(se,oe)}),[F,N,32768]}(),T=t.context;this.gridBuffer=T.createVertexBuffer(h,i.b6.members),this.gridIndexBuffer=T.createIndexBuffer(_),this.gridSegments=i.b7.simpleSegment(0,0,h.length,_.length),this.gridNoSkirtSegments=i.b7.simpleSegment(0,0,h.length,y),this.proxyCoords=[],this.proxiedCoords={},this._visibleDemTiles=[],this._drapedRenderBatches=[],this._sourceTilesOverlap={},this.proxySourceCache=new Nd(s.map),this.orthoMatrix=i.ab.mat4.create(),i.ab.mat4.ortho(this.orthoMatrix,this.painter.transform.projection.name==="globe"?.015:0,i.ag,0,i.ag,0,1);const z=T.gl;this._overlapStencilMode=new ci({func:z.GEQUAL,mask:255},0,255,z.KEEP,z.KEEP,z.REPLACE),this._previousZoom=t.transform.zoom,this.pool=[],this._findCoveringTileCache={},this._tilesDirty={},this.style=s,this._useVertexMorphing=!0,this._exaggeration=1,this._mockSourceCache=new Op(s.map),this._pendingGroundEffectLayers=[]}set style(t){t.on("data",this._onStyleDataEvent.bind(this)),this._style=t,this._style.map.on("moveend",()=>{this._clearLineLayersFromRenderCache()})}update(t,s,h){if(t&&t.terrain){this._style!==t&&(this.style=t,this._evaluationZoom=void 0);const _=t.terrain.properties,y=t.terrain.drapeRenderMode===0,T=t.terrain.isZoomDependent();this._previousUpdateTimestamp=this.enabled?this._updateTimestamp:void 0,this._updateTimestamp=i.q.now();const z=t.terrain&&t.terrain.scope,R=_.get("source"),F=y?this._mockSourceCache:t.getSourceCache(R,z);if(!F)return void i.w(`Couldn't find terrain source "${R}".`);if(this.sourceCache=F,this._attenuationRange=t.terrain.getAttenuationRange(),this._exaggeration=T?this.calculateExaggeration(s):_.get("exaggeration"),!s.projection.requiresDraping&&T&&this._exaggeration===0)return void this._disable();this.enabled=!0;const N=()=>{this.sourceCache.used&&i.w(`Raster DEM source '${this.sourceCache.id}' is used both for terrain and as layer source.
|
||
This leads to lower resolution of hillshade. For full hillshade resolution but higher memory consumption, define another raster DEM source.`);const G=this.getScaledDemTileSize();this.sourceCache.update(s,G,!0),this.resetTileLookupCache(this.sourceCache.id)};this.sourceCache.usedForTerrain||(this.resetTileLookupCache(this.sourceCache.id),this.sourceCache.usedForTerrain=!0,N(),this._initializing=!0),N(),s.updateElevation(!0,h),this.resetTileLookupCache(this.proxySourceCache.id),this.proxySourceCache.update(s),this._emptyDEMTextureDirty=!0,this._previousZoom=s.zoom}else this._disable()}calculateExaggeration(t){if(this._attenuationRange&&t.zoom>=Math.ceil(this._attenuationRange[1]))return this._style.terrain.getExaggeration(t.zoom);const s=this._previousCameraAltitude,h=t.getFreeCameraOptions().position.z/t.pixelsPerMeter*t.worldSize;this._previousCameraAltitude=h;const _=s!=null?h-s:Number.MAX_VALUE;if(Math.abs(_)<2)return this._exaggeration;const y=t.zoom,T=this._style.terrain;if(!this._previousUpdateTimestamp)return T.getExaggeration(y);let z=y-this._previousZoom;const R=this._previousUpdateTimestamp;let F=y;this._evaluationZoom!=null&&(F=this._evaluationZoom,Math.abs(y-F)>.5&&(z=.5*(y-F+z)),z*_<0&&(F+=z)),this._evaluationZoom=F;const N=T.getExaggeration(F),G=N===T.getExaggeration(Math.max(0,F-.1));if(G&&Math.abs(N-this._exaggeration)<.01)return N;let Z=Math.min(.1,.00375*(this._updateTimestamp-R));return(G||N<.1||Math.abs(z)<1e-4)&&(Z=Math.min(.2,4*Z)),i.af(this._exaggeration,N,Z)}resetTileLookupCache(t){this._findCoveringTileCache[t]={}}attenuationRange(){return this._attenuationRange}getDemUpscale(){return this.proxySourceCache.getSource().tileSize/128}getScaledDemTileSize(){return this.sourceCache.getSource().tileSize/128*this.proxySourceCache.getSource().tileSize}_onStyleDataEvent(t){t.coord&&t.dataType==="source"?this._clearRenderCacheForTile(t.sourceCacheId,t.coord):t.dataType==="style"&&(this.invalidateRenderCache=!0,this._evaluationZoom=void 0,this._previousUpdateTimestamp=void 0,this._previousCameraAltitude=void 0)}_disable(){if(this.enabled&&(this.enabled=!1,this._emptyDEMTextureDirty=!0,this._sharedDepthStencil=void 0,this._evaluationZoom=void 0,this._previousUpdateTimestamp=void 0,this.proxySourceCache.deallocRenderCache(),this._style))for(const t in this._style._mergedSourceCaches)this._style._mergedSourceCaches[t].usedForTerrain=!1}destroy(){this._disable(),this._emptyDEMTexture&&this._emptyDEMTexture.destroy(),this.pool.forEach(t=>t.fb.destroy()),this.pool=[],this.framebufferCopyTexture&&this.framebufferCopyTexture.destroy()}_source(){return this.enabled?this.sourceCache:null}isUsingMockSource(){return this.sourceCache===this._mockSourceCache}exaggeration(){return this.enabled?this._exaggeration:0}get visibleDemTiles(){return this._visibleDemTiles}get drapeBufferSize(){const t=2*this.proxySourceCache.getSource().tileSize;return[t,t]}set useVertexMorphing(t){this._useVertexMorphing=t}updateTileBinding(t){if(!this.enabled)return;this.prevTerrainTileForTile=this.terrainTileForTile;const s=this.proxySourceCache,h=this.painter.transform;this._initializing&&(this._initializing=h._centerAltitude===0&&this.getAtPointOrZero(i.aa.fromLngLat(h.center),-1)===-1,this._emptyDEMTextureDirty=!this._initializing);const _=this.proxyCoords=s.getIds().map(R=>{const F=s.getTileByID(R).tileID;return F.projMatrix=h.calculateProjMatrix(F.toUnwrapped()),F});(function(R,F){const N=F.transform.pointCoordinate(F.transform.getCameraPoint()),G=new i.P(N.x,N.y);R.sort((Z,W)=>{if(W.overscaledZ-Z.overscaledZ)return W.overscaledZ-Z.overscaledZ;const te=new i.P(Z.canonical.x+(1<<Z.canonical.z)*Z.wrap,Z.canonical.y),ee=new i.P(W.canonical.x+(1<<W.canonical.z)*W.wrap,W.canonical.y),se=G.mult(1<<Z.canonical.z);return se.x-=.5,se.y-=.5,se.distSqr(te)-se.distSqr(ee)})})(_,this.painter);const y=this.proxyToSource||{};this.proxyToSource={},_.forEach(R=>{this.proxyToSource[R.key]={}}),this.terrainTileForTile={};const T=this._style._mergedSourceCaches;for(const R in T){const F=T[R];if(!F.used||(F!==this.sourceCache&&this.resetTileLookupCache(F.id),this._setupProxiedCoordsForOrtho(F,t[R],y),F.usedForTerrain))continue;const N=t[R];F.getSource().reparseOverscaled&&this._assignTerrainTiles(N)}this.proxiedCoords[s.id]=_.map(R=>new cu(R,R.key,this.orthoMatrix)),this._assignTerrainTiles(_),this._prepareDEMTextures(),this._setupDrapedRenderBatches(),this._initFBOPool(),this._setupRenderCache(y),this.renderingToTexture=!1;const z={};this._visibleDemTiles=[];for(const R of this.proxyCoords){const F=this.terrainTileForTile[R.key];if(!F)continue;const N=F.tileID.key;N in z||(this._visibleDemTiles.push(F),z[N]=N)}}_assignTerrainTiles(t){this._initializing||t.forEach(s=>{if(this.terrainTileForTile[s.key])return;const h=this._findTileCoveringTileID(s,this.sourceCache);h&&(this.terrainTileForTile[s.key]=h)})}_prepareDEMTextures(){const t=this.painter.context,s=t.gl;for(const h in this.terrainTileForTile){const _=this.terrainTileForTile[h],y=_.dem;!y||_.demTexture&&!_.needsDEMTextureUpload||(t.activeTexture.set(s.TEXTURE1),ia(this.painter,_,y))}}_prepareDemTileUniforms(t,s,h,_){if(!s||s.demTexture==null)return!1;const y=t.tileID.canonical,T=Math.pow(2,s.tileID.canonical.z-y.z),z=_||"";return h[`u_dem_tl${z}`]=[y.x*T%1,y.y*T%1],h[`u_dem_scale${z}`]=T,!0}get emptyDEMTexture(){return!this._emptyDEMTextureDirty&&this._emptyDEMTexture?this._emptyDEMTexture:this._updateEmptyDEMTexture()}_getLoadedAreaMinimum(){if(!this.enabled)return 0;let t=0;const s=this._visibleDemTiles.reduce((h,_)=>{if(!_.dem)return h;const y=_.dem.tree.minimums[0];return y>0&&t++,h+y},0);return t?s/t:0}_updateEmptyDEMTexture(){const t=this.painter.context,s=t.gl;t.activeTexture.set(s.TEXTURE2);const h=this._getLoadedAreaMinimum(),_=new i.cK({width:1,height:1},new Float32Array([h]));this._emptyDEMTextureDirty=!1;let y=this._emptyDEMTexture;return y?y.update(_,{premultiply:!1}):y=this._emptyDEMTexture=new i.T(t,_,s.R32F,{premultiply:!1}),y}setupElevationDraw(t,s,h){const _=this.painter.context,y=_.gl,T={u_dem:2,u_dem_prev:4,u_dem_tl:[0,0],u_dem_tl_prev:[0,0],u_dem_scale:0,u_dem_scale_prev:0,u_dem_size:0,u_dem_lerp:1,u_depth:3,u_depth_size_inv:[0,0],u_depth_range_unpack:[0,1],u_occluder_half_size:16,u_occlusion_depth_offset:-1e-4,u_exaggeration:0};T.u_exaggeration=this.exaggeration();let z=null,R=null,F=1;if(h&&h.morphing&&this._useVertexMorphing){const W=h.morphing.srcDemTile,te=h.morphing.dstDemTile;F=h.morphing.phase,W&&te&&(this._prepareDemTileUniforms(t,W,T,"_prev")&&(R=W),this._prepareDemTileUniforms(t,te,T)&&(z=te))}const N=W=>W&&W.demTexture&&this.painter.linearFloatFilteringSupported()?y.LINEAR:y.NEAREST;let G=null;var Z;if(this.enabled?R&&z?(G=z.demTexture,_.activeTexture.set(y.TEXTURE4),R.demTexture.bind(N(R),y.CLAMP_TO_EDGE),T.u_dem_lerp=F):(z=this.terrainTileForTile[t.tileID.key],G=this._prepareDemTileUniforms(t,z,T)?z.demTexture:this.emptyDEMTexture):G=this.emptyDEMTexture,_.activeTexture.set(y.TEXTURE2),G&&(T.u_dem_size=(Z=G).size[0]===1?1:Z.size[0]-2,G.bind(N(z),y.CLAMP_TO_EDGE)),this.painter.setupDepthForOcclusion(h&&h.useDepthForOcclusion,s,T),h&&h.useMeterToDem&&z){const W=(1<<z.tileID.canonical.z)*i.bH(1,this.painter.transform.center.lat)*this.sourceCache.getSource().tileSize;T.u_meter_to_dem=W}if(h&&h.labelPlaneMatrixInv&&(T.u_label_plane_matrix_inv=h.labelPlaneMatrixInv),s.setTerrainUniformValues(_,T),this.painter.transform.projection.name==="globe"){const W=this.globeUniformValues(this.painter.transform,t.tileID.canonical,h&&h.useDenormalizedUpVectorScale);s.setGlobeUniformValues(_,W)}}globeUniformValues(t,s,h){const _=t.projection;return{u_tile_tl_up:_.upVector(s,0,0),u_tile_tr_up:_.upVector(s,i.ag,0),u_tile_br_up:_.upVector(s,i.ag,i.ag),u_tile_bl_up:_.upVector(s,0,i.ag),u_tile_up_scale:h?i.cL(1):_.upVectorScale(s,t.center.lat,t.worldSize).metersToTile}}renderToBackBuffer(t){const s=this.painter,h=this.painter.context;t.length!==0&&(h.bindFramebuffer.set(null),h.viewport.set([0,0,s.width,s.height]),s.gpuTimingDeferredRenderStart(),this.renderingToTexture=!1,function(_,y,T,z,R){if(_.transform.projection.name==="globe")(function(F,N,G,Z,W){const te=F.context,ee=te.gl;let se,oe;const he=F.transform,_e=i.cC(F,te,he),pe=(ke,Ne)=>{if(oe===Ne)return;const st=[uh[Ne],"PROJECTION_GLOBE_VIEW"];_e&&st.push("CUSTOM_ANTIALIASING");const ut=F.isTileAffectedByFog(ke);se=F.getOrCreateProgram("globeRaster",{defines:st,overrideFog:ut}),oe=Ne},Me=F.colorModeForRenderPass(),xe=new Wt(ee.LEQUAL,Wt.ReadWrite,F.depthRangeFor3D);vr.update(W);const we=i.cD(he),ve=[i.at(he.center.lng),i.aA(he.center.lat)],Ae=F.globeSharedBuffers,Oe=[he.width*i.q.devicePixelRatio,he.height*i.q.devicePixelRatio],Xe=Float32Array.from(he.globeMatrix),He={useDenormalizedUpVectorScale:!0};{const ke=F.transform,Ne=Ma(ke.zoom,N.exaggeration(),N.sourceCache._source.tileSize);oe=-1;const st=ee.TRIANGLES;for(const ut of Z){const xt=G.getTile(ut),Ge=ci.disabled,lt=N.prevTerrainTileForTile[ut.key],Je=N.terrainTileForTile[ut.key];Ya(lt,Je)&&vr.newMorphing(ut.key,lt,Je,W,250),te.activeTexture.set(ee.TEXTURE0),xt.texture&&xt.texture.bind(ee.LINEAR,ee.CLAMP_TO_EDGE);const _t=vr.getMorphValuesForProxy(ut.key),ct=_t?1:0;_t&&i.J(He,{morphing:{srcDemTile:_t.from,dstDemTile:_t.to,phase:i.cB(_t.phase)}});const nt=i.cE(ut.canonical),Lt=i.cF(nt.getCenter().lat),bt=i.cG(ut.canonical,nt,Lt,ke.worldSize/ke._pixelsPerMercatorPixel),zt=i.bb(i.cH(ut.canonical)),Bt=hh(ke.expandedFarZProjMatrix,Xe,we,zt,i.ae(ke.zoom),ve,ke.frustumCorners.TL,ke.frustumCorners.TR,ke.frustumCorners.BR,ke.frustumCorners.BL,ke.globeCenterInViewSpace,ke.globeRadius,Oe,Ne,ke._farZ,bt);if(pe(ut,ct),se&&(N.setupElevationDraw(xt,se,He),F.uploadCommonUniforms(te,se,ut.toUnwrapped()),Ae)){const[oi,$t,Xt]=Ae.getGridBuffers(Lt,Ne!==0);se.draw(F,st,xe,Ge,Me,ti.backCCW,Bt,"globe_raster",oi,$t,Xt)}}}if(Ae&&(F.renderDefaultNorthPole||F.renderDefaultSouthPole)){const ke=["GLOBE_POLES","PROJECTION_GLOBE_VIEW"];_e&&ke.push("CUSTOM_ANTIALIASING"),se=F.getOrCreateProgram("globeRaster",{defines:ke});for(const Ne of Z){const{x:st,y:ut,z:xt}=Ne.canonical,Ge=ut===0,lt=ut===(1<<xt)-1,[Je,_t,ct,nt]=Ae.getPoleBuffers(xt,!1);if(nt&&(Ge||lt)){const Lt=G.getTile(Ne);te.activeTexture.set(ee.TEXTURE0),Lt.texture&&Lt.texture.bind(ee.LINEAR,ee.CLAMP_TO_EDGE);let bt=i.cI(xt,st,he);const zt=i.bb(i.cH(Ne.canonical)),Bt=(oi,$t)=>oi.draw(F,ee.TRIANGLES,xe,ci.disabled,Me,ti.disabled,hh(he.expandedFarZProjMatrix,bt,bt,zt,0,ve,he.frustumCorners.TL,he.frustumCorners.TR,he.frustumCorners.BR,he.frustumCorners.BL,he.globeCenterInViewSpace,he.globeRadius,Oe,0,he._farZ),"globe_pole_raster",$t,ct,nt);N.setupElevationDraw(Lt,se,He),F.uploadCommonUniforms(te,se,Ne.toUnwrapped()),Ge&&F.renderDefaultNorthPole&&Bt(se,Je),lt&&F.renderDefaultSouthPole&&(bt=i.ab.mat4.scale(i.ab.mat4.create(),bt,[1,-1,1]),Bt(se,_t))}}}})(_,y,T,z,R);else{const F=_.context,N=F.gl;let G,Z;const W=_.shadowRenderer,te=Eo(_,_.longestCutoffRange),ee=Me=>{if(Z===Me)return;const xe=[];xe.push(uh[Me]),te.shouldRenderCutoff&&xe.push("RENDER_CUTOFF"),W&&(xe.push("RENDER_SHADOWS","DEPTH_TEXTURE"),W.useNormalOffset&&xe.push("NORMAL_OFFSET")),G=_.getOrCreateProgram("terrainRaster",{defines:xe}),Z=Me},se=_.colorModeForRenderPass(),oe=new Wt(N.LEQUAL,Wt.ReadWrite,_.depthRangeFor3D);vr.update(R);const he=_.transform,_e=Ma(he.zoom,y.exaggeration(),y.sourceCache._source.tileSize);let pe=[0,0,0];if(W){const Me=_.style.directionalLight,xe=_.style.ambientLight;Me&&xe&&(pe=hr(_.style,Me,xe))}{Z=-1;const Me=N.TRIANGLES,[xe,we]=[y.gridIndexBuffer,y.gridSegments];for(const ve of z){const Ae=T.getTile(ve),Oe=ci.disabled,Xe=y.prevTerrainTileForTile[ve.key],He=y.terrainTileForTile[ve.key];Ya(Xe,He)&&vr.newMorphing(ve.key,Xe,He,R,250),F.activeTexture.set(N.TEXTURE0),Ae.texture&&Ae.texture.bind(N.LINEAR,N.CLAMP_TO_EDGE);const ke=vr.getMorphValuesForProxy(ve.key),Ne=ke?1:0;let st;ke&&(st={morphing:{srcDemTile:ke.from,dstDemTile:ke.to,phase:i.cB(ke.phase)}});const ut=au(ve.projMatrix,Bd(ve.canonical,he.renderWorldCopies)?_e/10:_e,pe);if(ee(Ne),!G)continue;y.setupElevationDraw(Ae,G,st);const xt=ve.toUnwrapped();W&&W.setupShadows(xt,G),_.uploadCommonUniforms(F,G,xt,null,te),G.draw(_,Me,oe,Oe,se,ti.backCCW,ut,"terrain_raster",y.gridBuffer,xe,we)}}}}(s,this,this.proxySourceCache,t,this._updateTimestamp),this.renderingToTexture=!0,s.gpuTimingDeferredRenderEnd(),t.splice(0,t.length))}renderBatch(t){if(this._drapedRenderBatches.length===0)return t+1;this.renderingToTexture=!0;const s=this.painter,h=this.painter.context,_=this.proxySourceCache,y=this.proxiedCoords[_.id],T=this._drapedRenderBatches.shift(),z=s.style.order,R=[];let F=0;for(const N of y){const G=_.getTileByID(N.proxyTileKey),Z=_.proxyCachedFBO[N.key]?_.proxyCachedFBO[N.key][t]:void 0,W=Z!==void 0?_.renderCache[Z]:this.pool[F++],te=Z!==void 0;if(G.texture=W.tex,te&&!W.dirty){R.push(G.tileID);continue}let ee;h.bindFramebuffer.set(W.fb.framebuffer),this.renderedToTile=!1,W.dirty&&(h.clear({color:i.aj.transparent,stencil:0}),W.dirty=!1);for(let se=T.start;se<=T.end;++se){const oe=s.style._mergedLayers[z[se]];if(oe.isHidden(s.transform.zoom))continue;const he=s.style.getLayerSourceCache(oe),_e=he?this.proxyToSource[N.key][he.id]:[N];if(!_e)continue;const pe=_e;h.viewport.set([0,0,W.fb.width,W.fb.height]),ee!==(he?he.id:null)&&(this._setupStencil(W,_e,oe,he),ee=he?he.id:null),s.renderLayer(s,he,oe,pe)}if(this._drapedRenderBatches.length===0)for(const se of this._pendingGroundEffectLayers){const oe=s.style._mergedLayers[z[se]];if(oe.isHidden(s.transform.zoom))continue;const he=s.style.getLayerSourceCache(oe),_e=he?this.proxyToSource[N.key][he.id]:[N];if(!_e)continue;const pe=_e;h.viewport.set([0,0,W.fb.width,W.fb.height]),ee!==(he?he.id:null)&&(this._setupStencil(W,_e,oe,he),ee=he?he.id:null),s.renderLayer(s,he,oe,pe)}this.renderedToTile?(W.dirty=!0,R.push(G.tileID)):te||--F,F===5&&(F=0,this.renderToBackBuffer(R))}return this.renderToBackBuffer(R),this.renderingToTexture=!1,h.bindFramebuffer.set(null),h.viewport.set([0,0,s.width,s.height]),T.end+1}postRender(){}isLayerOrderingCorrect(t){const s=t.order.length;let h=-1,_=s;for(let y=0;y<s;++y)this._style.isLayerDraped(t._mergedLayers[t.order[y]])?h=Math.max(h,y):_=Math.min(_,y);return _>h}getMinElevationBelowMSL(){let t=0;return this._visibleDemTiles.filter(s=>s.dem).forEach(s=>{t=Math.min(t,s.dem.tree.minimums[0])}),t===0?t:(t-30)*this._exaggeration}raycast(t,s,h){if(!this._visibleDemTiles)return null;const _=this._visibleDemTiles.filter(y=>y.dem).map(y=>{const T=y.tileID,z=1<<T.overscaledZ,{x:R,y:F}=T.canonical,N=R/z,G=(R+1)/z,Z=F/z,W=(F+1)/z;return{minx:N,miny:Z,maxx:G,maxy:W,t:y.dem.tree.raycastRoot(N,Z,G,W,t,s,h),tile:y}});_.sort((y,T)=>(y.t!==null?y.t:Number.MAX_VALUE)-(T.t!==null?T.t:Number.MAX_VALUE));for(const y of _){if(y.t==null)return null;const T=y.tile.dem.tree.raycast(y.minx,y.miny,y.maxx,y.maxy,t,s,h);if(T!=null)return T}return null}_createFBO(){const t=this.painter.context,s=t.gl,h=this.drapeBufferSize;t.activeTexture.set(s.TEXTURE0);const _=new i.T(t,{width:h[0],height:h[1],data:null},s.RGBA8);_.bind(s.LINEAR,s.CLAMP_TO_EDGE);const y=t.createFramebuffer(h[0],h[1],!0,null);return y.colorAttachment.set(_.texture),y.depthAttachment=new ou(t,y.framebuffer),this._sharedDepthStencil===void 0?(this._sharedDepthStencil=t.createRenderbuffer(t.gl.DEPTH_STENCIL,h[0],h[1]),this._stencilRef=0,y.depthAttachment.set(this._sharedDepthStencil),t.clear({stencil:0})):y.depthAttachment.set(this._sharedDepthStencil),t.extTextureFilterAnisotropic&&s.texParameterf(s.TEXTURE_2D,t.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.extTextureFilterAnisotropicMax),{fb:y,tex:_,dirty:!1}}_initFBOPool(){for(;this.pool.length<Math.min(5,this.proxyCoords.length);)this.pool.push(this._createFBO())}_shouldDisableRenderCache(){if(this._debugParams.disableRenderCache||this._style.hasLightTransitions())return!0;for(const t in this._style._mergedSourceCaches)if(this._style._mergedSourceCaches[t].hasTransition())return!0;return this._style.order.some(t=>{const s=this._style._mergedLayers[t],h=s.isHidden(this.painter.transform.zoom);return s.type==="hillshade"||s.type==="custom"?!h&&s.shouldRedrape():!h&&s.hasTransition()})}_clearLineLayersFromRenderCache(){let t=!1;for(const h of this._style.getSources())if(h instanceof Ho){t=!0;break}if(!t)return;const s={};for(let h=0;h<this._style.order.length;++h){const _=this._style._mergedLayers[this._style.order[h]],y=this._style.getLayerSourceCache(_);if(y&&!s[y.id]&&!_.isHidden(this.painter.transform.zoom)&&_.type==="line"&&_.widthExpression()instanceof i.a9){s[y.id]=!0;for(const T of this.proxyCoords){const z=this.proxyToSource[T.key][y.id];if(z)for(const R of z)this._clearRenderCacheForTile(y.id,R)}}}}_clearRasterLayersFromRenderCache(){let t=!1;for(const h in this._style._mergedSourceCaches)if(this._style._mergedSourceCaches[h]._source instanceof tn){t=!0;break}if(!t)return;const s={};for(let h=0;h<this._style.order.length;++h){const _=this._style._mergedLayers[this._style.order[h]],y=this._style.getLayerSourceCache(_);if(!y||s[y.id]||_.isHidden(this.painter.transform.zoom)||_.type!=="raster")continue;const T=_.paint.get("raster-fade-duration");for(const z of this.proxyCoords){const R=this.proxyToSource[z.key][y.id];if(R)for(const F of R){const N=lu(y.getTile(F),y.findLoadedParent(F,0),y,this.painter.transform,T);(N.opacity!==1||N.mix!==0)&&this._clearRenderCacheForTile(y.id,F)}}}}_setupDrapedRenderBatches(){this._style.updateDrapeFirstLayers();const t=this._style.order,s=t.length;if(s===0)return;const h=[];this._pendingGroundEffectLayers=[];let _,y=0,T=this._style._mergedLayers[t[y]];for(;!this._style.isLayerDraped(T)&&T.isHidden(this.painter.transform.zoom)&&++y<s;)T=this._style._mergedLayers[t[y]];for(;y<s;++y){const z=this._style._mergedLayers[t[y]];z.isHidden(this.painter.transform.zoom)||(this._style.isLayerDraped(z)?_===void 0&&(_=y):(z.type==="fill-extrusion"&&this._pendingGroundEffectLayers.push(y),_!==void 0&&(h.push({start:_,end:y-1}),_=void 0)))}if(_!==void 0&&h.push({start:_,end:y-1}),h.length!==0){const z=h[h.length-1];this._pendingGroundEffectLayers.every(R=>R>z.end)||i.w("fill-extrusion with flood lighting and/or ground ambient occlusion should be moved to be on top of all draped layers.")}this._drapedRenderBatches=h}_setupRenderCache(t){const s=this.proxySourceCache;if(this._shouldDisableRenderCache()||this.invalidateRenderCache){if(this.invalidateRenderCache=!1,s.renderCache.length>s.renderCachePool.length){const T=Object.values(s.proxyCachedFBO);s.proxyCachedFBO={};for(let z=0;z<T.length;++z){const R=Object.values(T[z]);s.renderCachePool.push(...R)}}return}this._clearRasterLayersFromRenderCache();const h=this.proxyCoords,_=this._tilesDirty;for(let T=h.length-1;T>=0;T--){const z=h[T];if(s.getTileByID(z.key),s.proxyCachedFBO[z.key]!==void 0){const R=t[z.key],F=this.proxyToSource[z.key];let N=0;for(const G in F){const Z=F[G],W=R[G];if(!W||W.length!==Z.length||Z.some((te,ee)=>te!==W[ee]||_[G]&&_[G].hasOwnProperty(te.key))){N=-1;break}++N}for(const G in s.proxyCachedFBO[z.key])s.renderCache[s.proxyCachedFBO[z.key][G]].dirty=N<0||N!==Object.values(R).length}}const y=[...this._drapedRenderBatches];y.sort((T,z)=>z.end-z.start-(T.end-T.start));for(const T of y)for(const z of h){if(s.proxyCachedFBO[z.key])continue;let R=s.renderCachePool.pop();R===void 0&&s.renderCache.length<50&&(R=s.renderCache.length,s.renderCache.push(this._createFBO())),R!==void 0&&(s.proxyCachedFBO[z.key]={},s.proxyCachedFBO[z.key][T.start]=R,s.renderCache[R].dirty=!0)}this._tilesDirty={}}_setupStencil(t,s,h,_){if(!_||!this._sourceTilesOverlap[_.id])return void(this._overlapStencilType&&(this._overlapStencilType=!1));const y=this.painter.context,T=y.gl;if(s.length<=1)return void(this._overlapStencilType=!1);let z;if(h.isTileClipped())z=s.length,this._overlapStencilMode.test={func:T.EQUAL,mask:255},this._overlapStencilType="Clip";else{if(!(s[0].overscaledZ>s[s.length-1].overscaledZ))return void(this._overlapStencilType=!1);z=1,this._overlapStencilMode.test={func:T.GREATER,mask:255},this._overlapStencilType="Mask"}this._stencilRef+z>255&&(y.clear({stencil:0}),this._stencilRef=0),this._stencilRef+=z,this._overlapStencilMode.ref=this._stencilRef,h.isTileClipped()&&this._renderTileClippingMasks(s,this._overlapStencilMode.ref)}clipOrMaskOverlapStencilType(){return this._overlapStencilType==="Clip"||this._overlapStencilType==="Mask"}stencilModeForRTTOverlap(t){return this.renderingToTexture&&this._overlapStencilType?(this._overlapStencilType==="Clip"&&(this._overlapStencilMode.ref=this.painter._tileClippingMaskIDs[t.key]),this._overlapStencilMode):ci.disabled}_renderTileClippingMasks(t,s){const h=this.painter,_=this.painter.context,y=_.gl;h._tileClippingMaskIDs={},_.setColorMode(bi.disabled),_.setDepthMode(Wt.disabled);const T=h.getOrCreateProgram("clippingMask");for(const z of t){const R=h._tileClippingMaskIDs[z.key]=--s;T.draw(h,y.TRIANGLES,Wt.disabled,new ci({func:y.ALWAYS,mask:0},R,255,y.KEEP,y.KEEP,y.REPLACE),bi.disabled,ti.disabled,pc(z.projMatrix),"$clipping",h.tileExtentBuffer,h.quadTriangleIndexBuffer,h.tileExtentSegments)}}pointCoordinate(t){const s=this.painter.transform;if(t.x<0||t.x>s.width||t.y<0||t.y>s.height)return null;const h=[t.x,t.y,1,1];i.ab.vec4.transformMat4(h,h,s.pixelMatrixInverse),i.ab.vec4.scale(h,h,1/h[3]),h[0]/=s.worldSize,h[1]/=s.worldSize;const _=s._camera.position,y=i.bH(1,s.center.lat),T=[_[0],_[1],_[2]/y,0],z=i.ab.vec3.subtract([],h.slice(0,3),T);i.ab.vec3.normalize(z,z);const R=this.raycast(T,z,this._exaggeration);return R!==null&&R?(i.ab.vec3.scaleAndAdd(T,T,z,R),T[3]=T[2],T[2]*=y,T):null}_setupProxiedCoordsForOrtho(t,s,h){if(t.getSource()instanceof i.aJ)return this._setupProxiedCoordsForImageSource(t,s,h);this._findCoveringTileCache[t.id]=this._findCoveringTileCache[t.id]||{};const _=this.proxiedCoords[t.id]=[],y=this.proxyCoords;for(let R=0;R<y.length;R++){const F=y[R],N=this._findTileCoveringTileID(F,t);if(N){const G=this._createProxiedId(F,N,h[F.key]&&h[F.key][t.id]);_.push(G),this.proxyToSource[F.key][t.id]=[G]}}let T=!1;const z=new Set;for(let R=0;R<s.length;R++){const F=t.getTile(s[R]);if(!F||!F.hasData())continue;const N=this._findTileCoveringTileID(F.tileID,this.proxySourceCache);if(N&&N.tileID.canonical.z!==F.tileID.canonical.z){const G=this.proxyToSource[N.tileID.key][t.id],Z=this._createProxiedId(N.tileID,F,h[N.tileID.key]&&h[N.tileID.key][t.id]);G?G.splice(G.length-1,0,Z):this.proxyToSource[N.tileID.key][t.id]=[Z];const W=this.proxyToSource[N.tileID.key][t.id];z.has(W)||z.add(W),_.push(Z),T=!0}}if(this._sourceTilesOverlap[t.id]=T,T&&this._debugParams.sortTilesHiZFirst)for(const R of z)R.sort((F,N)=>N.overscaledZ-F.overscaledZ)}_setupProxiedCoordsForImageSource(t,s,h){if(!t.getSource().loaded())return;const _=this.proxiedCoords[t.id]=[],y=this.proxyCoords,T=t.getSource(),z=T.tileID;if(!z)return;const R=new i.P(z.x,z.y)._div(1<<z.z),F=T.coordinates.map(i.aa.fromLngLat).reduce((G,Z)=>(G.min.x=Math.min(G.min.x,Z.x-R.x),G.min.y=Math.min(G.min.y,Z.y-R.y),G.max.x=Math.max(G.max.x,Z.x-R.x),G.max.y=Math.max(G.max.y,Z.y-R.y),G),{min:new i.P(Number.MAX_VALUE,Number.MAX_VALUE),max:new i.P(-Number.MAX_VALUE,-Number.MAX_VALUE)}),N=(G,Z)=>{const W=G.wrap+G.canonical.x/(1<<G.canonical.z),te=G.canonical.y/(1<<G.canonical.z),ee=i.ag/(1<<G.canonical.z),se=Z.wrap+Z.canonical.x/(1<<Z.canonical.z),oe=Z.canonical.y/(1<<Z.canonical.z);return W+ee<se+F.min.x||W>se+F.max.x||te+ee<oe+F.min.y||te>oe+F.max.y};for(let G=0;G<y.length;G++){const Z=y[G];for(let W=0;W<s.length;W++){const te=t.getTile(s[W]);if(!te||!te.hasData()||N(Z,te.tileID))continue;const ee=this._createProxiedId(Z,te,h[Z.key]&&h[Z.key][t.id]),se=this.proxyToSource[Z.key][t.id];se?se.push(ee):this.proxyToSource[Z.key][t.id]=[ee],_.push(ee)}}}_createProxiedId(t,s,h){let _=this.orthoMatrix;if(h){const y=h.find(T=>T.key===s.tileID.key);if(y)return y}if(s.tileID.key!==t.key){const y=t.canonical.z-s.tileID.canonical.z;let T,z,R;_=i.ab.mat4.create();const F=s.tileID.wrap-t.wrap<<t.overscaledZ;y>0?(T=i.ag>>y,z=T*((s.tileID.canonical.x<<y)-t.canonical.x+F),R=T*((s.tileID.canonical.y<<y)-t.canonical.y)):(T=i.ag<<-y,z=i.ag*(s.tileID.canonical.x-(t.canonical.x+F<<-y)),R=i.ag*(s.tileID.canonical.y-(t.canonical.y<<-y))),i.ab.mat4.ortho(_,0,T,0,T,0,1),i.ab.mat4.translate(_,_,[z,R,0])}return new cu(s.tileID,t.key,_)}_findTileCoveringTileID(t,s){let h=s.getTile(t);if(h&&h.hasData())return h;const _=this._findCoveringTileCache[s.id],y=_[t.key];if(h=y?s.getTileByID(y):null,h&&h.hasData()||y===null)return h;let T=h?h.tileID:t,z=T.overscaledZ;const R=s.getSource().minzoom,F=[];if(!y){const G=s.getSource().maxzoom;if(t.canonical.z>=G){const Z=t.canonical.z-G;s.getSource().reparseOverscaled?(z=Math.max(t.canonical.z+2,s.transform.tileZoom),T=new i.aG(z,t.wrap,G,t.canonical.x>>Z,t.canonical.y>>Z)):Z!==0&&(z=G,T=new i.aG(z,t.wrap,G,t.canonical.x>>Z,t.canonical.y>>Z))}T.key!==t.key&&(F.push(T.key),h=s.getTile(T))}const N=G=>{F.forEach(Z=>{_[Z]=G}),F.length=0};for(z-=1;z>=R&&(!h||!h.hasData());z--){h&&N(h.tileID.key);const G=T.calculateScaledKey(z);if(h=s.getTileByID(G),h&&h.hasData())break;const Z=_[G];if(Z===null)break;Z===void 0?F.push(G):h=s.getTileByID(Z)}return N(h?h.tileID.key:null),h&&h.hasData()?h:null}findDEMTileFor(t){return this.enabled?this._findTileCoveringTileID(t,this.sourceCache):null}prepareDrawTile(){this.renderedToTile=!0}_clearRenderCacheForTile(t,s){let h=this._tilesDirty[t];h||(h=this._tilesDirty[t]={}),h[s.key]=!0}}function Bp(c,t,s){const h=function(z,R,F){const N=i.ab.vec3.dot(R,z),G=i.ab.vec3.dot(F,[.2126,.7152,.0722]),Z=(te,ee,se)=>(1-se)*te+se*ee,W=Z(1-.3*Math.min(G,1),1,Math.min(N+1,1));return Z(.92,1,Math.asin(i.aw(R[2],-1,1))/Math.PI+.5)*W}(c,[0,0,1],t),_=[0,0,0];i.ab.vec3.scale(_,s.slice(0,3),h);const y=[0,0,0];i.ab.vec3.scale(y,t.slice(0,3),c[2]);const T=[0,0,0];return i.ab.vec3.add(T,_,y),i.cf(T)}const dh=["fill","fillOutline","fillPattern","line","linePattern","background","backgroundPattern","hillshade","raster"],X_=["stars","rainParticle","snowParticle","fillExtrusion","fillExtrusionGroundEffect","model","symbol"];class Np{static cacheKey(t,s,h,_){let y=`${s}${_?_.cacheKey:""}`;for(const T of h)t.usedDefines.includes(T)&&(y+=`/${T}`);return y}constructor(t,s,h,_,y,T){const z=t.gl;this.program=z.createProgram(),this.configuration=_,this.name=s,this.fixedDefines=[...T];const R=_?_.getBinderAttributes():[],F=(h.staticAttributes||[]).concat(R);let N=_?_.defines():[];N=N.concat(T.map(se=>`#define ${se}`));const G=`#version 300 es
|
||
`;let Z=G+N.concat("precision mediump float;",Qr,cc.fragmentSource).join(`
|
||
`);for(const se of h.fragmentIncludes)Z+=`
|
||
${co[se]}`;Z+=`
|
||
${h.fragmentSource}`;let W=G+N.concat("precision highp float;",Qr,cc.vertexSource).join(`
|
||
`);for(const se of h.vertexIncludes)W+=`
|
||
${co[se]}`;this.forceManualRenderingForInstanceIDShaders=t.forceManualRenderingForInstanceIDShaders&&h.vertexSource.indexOf("gl_InstanceID")!==-1,this.forceManualRenderingForInstanceIDShaders&&(W+=`
|
||
uniform int u_instanceID;
|
||
`),W+=`
|
||
${h.vertexSource}`,this.forceManualRenderingForInstanceIDShaders&&(W=W.replaceAll("gl_InstanceID","u_instanceID"));const te=z.createShader(z.FRAGMENT_SHADER);if(z.isContextLost())return void(this.failedToCreate=!0);z.shaderSource(te,Z),z.compileShader(te),z.attachShader(this.program,te);const ee=z.createShader(z.VERTEX_SHADER);if(z.isContextLost())this.failedToCreate=!0;else{z.shaderSource(ee,W),z.compileShader(ee),z.attachShader(this.program,ee),this.attributes={},this.numAttributes=F.length;for(let se=0;se<this.numAttributes;se++)if(F[se]){const oe=F[se].startsWith("a_")?F[se]:`a_${F[se]}`;z.bindAttribLocation(this.program,se,oe),this.attributes[oe]=se}z.linkProgram(this.program),z.deleteShader(ee),z.deleteShader(te),this.fixedUniforms=y(t),this.binderUniforms=_?_.getUniforms(t):[],this.forceManualRenderingForInstanceIDShaders&&(this.instancingUniforms=(se=>({u_instanceID:new i.bN(se)}))(t)),(T.includes("TERRAIN")||s.indexOf("symbol")!==-1||s.indexOf("circle")!==-1)&&(this.terrainUniforms=(se=>({u_dem:new i.bN(se),u_dem_prev:new i.bN(se),u_dem_tl:new i.bK(se),u_dem_scale:new i.bM(se),u_dem_tl_prev:new i.bK(se),u_dem_scale_prev:new i.bM(se),u_dem_size:new i.bM(se),u_dem_lerp:new i.bM(se),u_exaggeration:new i.bM(se),u_depth:new i.bN(se),u_depth_size_inv:new i.bK(se),u_depth_range_unpack:new i.bK(se),u_occluder_half_size:new i.bM(se),u_occlusion_depth_offset:new i.bM(se),u_meter_to_dem:new i.bM(se),u_label_plane_matrix_inv:new i.bJ(se)}))(t)),T.includes("GLOBE")&&(this.globeUniforms=(se=>({u_tile_tl_up:new i.bL(se),u_tile_tr_up:new i.bL(se),u_tile_br_up:new i.bL(se),u_tile_bl_up:new i.bL(se),u_tile_up_scale:new i.bM(se)}))(t)),T.includes("FOG")&&(this.fogUniforms=(se=>({u_fog_matrix:new i.bJ(se),u_fog_range:new i.bK(se),u_fog_color:new i.ca(se),u_fog_horizon_blend:new i.bM(se),u_fog_vertical_limit:new i.bK(se),u_fog_temporal_offset:new i.bM(se),u_frustum_tl:new i.bL(se),u_frustum_tr:new i.bL(se),u_frustum_br:new i.bL(se),u_frustum_bl:new i.bL(se),u_globe_pos:new i.bL(se),u_globe_radius:new i.bM(se),u_globe_transition:new i.bM(se),u_is_globe:new i.bN(se),u_viewport:new i.bK(se)}))(t)),T.includes("RENDER_CUTOFF")&&(this.cutoffUniforms=(se=>({u_cutoff_params:new i.ca(se)}))(t)),T.includes("LIGHTING_3D_MODE")&&(this.lightsUniforms=(se=>({u_lighting_ambient_color:new i.bL(se),u_lighting_directional_dir:new i.bL(se),u_lighting_directional_color:new i.bL(se),u_ground_radiance:new i.bL(se)}))(t)),T.includes("RENDER_SHADOWS")&&(this.shadowUniforms=(se=>({u_light_matrix_0:new i.bJ(se),u_light_matrix_1:new i.bJ(se),u_fade_range:new i.bK(se),u_shadow_normal_offset:new i.bL(se),u_shadow_intensity:new i.bM(se),u_shadow_texel_size:new i.bM(se),u_shadow_map_resolution:new i.bM(se),u_shadow_direction:new i.bL(se),u_shadow_bias:new i.bL(se),u_shadowmap_0:new i.bN(se),u_shadowmap_1:new i.bN(se)}))(t))}}setTerrainUniformValues(t,s){if(!this.terrainUniforms)return;const h=this.terrainUniforms;if(!this.failedToCreate){t.program.set(this.program);for(const _ in s)h[_]&&h[_].set(this.program,_,s[_])}}setGlobeUniformValues(t,s){if(!this.globeUniforms)return;const h=this.globeUniforms;if(!this.failedToCreate){t.program.set(this.program);for(const _ in s)h[_]&&h[_].set(this.program,_,s[_])}}setFogUniformValues(t,s){if(!this.fogUniforms)return;const h=this.fogUniforms;if(!this.failedToCreate){t.program.set(this.program);for(const _ in s)h[_].set(this.program,_,s[_])}}setCutoffUniformValues(t,s){if(!this.cutoffUniforms)return;const h=this.cutoffUniforms;if(!this.failedToCreate){t.program.set(this.program);for(const _ in s)h[_].set(this.program,_,s[_])}}setLightsUniformValues(t,s){if(!this.lightsUniforms)return;const h=this.lightsUniforms;if(!this.failedToCreate){t.program.set(this.program);for(const _ in s)h[_].set(this.program,_,s[_])}}setShadowUniformValues(t,s){if(this.failedToCreate||!this.shadowUniforms)return;const h=this.shadowUniforms;t.program.set(this.program);for(const _ in s)h[_].set(this.program,_,s[_])}_drawDebugWireframe(t,s,h,_,y,T,z,R,F,N){const G=t.options.wireframe;if(G.terrain===!1&&G.layers2D===!1&&G.layers3D===!1)return;const Z=t.context;if(!(()=>!(!G.terrain||this.name!=="terrainRaster"&&this.name!=="globeRaster")||!(!G.layers2D||t._terrain&&t._terrain.renderingToTexture||!dh.includes(this.name))||!(!G.layers3D||!X_.includes(this.name)))())return;const W=Z.gl,te=t.wireframeDebugCache.getLinesFromTrianglesBuffer(t.frameCounter,y,Z);if(!te)return;const ee=[...this.fixedDefines];ee.push("DEBUG_WIREFRAME");const se=t.getOrCreateProgram(this.name,{config:this.configuration,defines:ee});Z.program.set(se.program);const oe=(pe,Me,xe)=>{if(Me[pe]&&xe[pe])for(const we in Me[pe])xe[pe][we]&&xe[pe][we].set(xe.program,we,Me[pe][we].current)};F&&F.setUniforms(se.program,Z,se.binderUniforms,z,{zoom:R}),oe("fixedUniforms",this,se),oe("terrainUniforms",this,se),oe("globeUniforms",this,se),oe("fogUniforms",this,se),oe("lightsUniforms",this,se),oe("shadowUniforms",this,se),te.bind(),Z.setColorMode(new bi([W.ONE,W.ONE_MINUS_SRC_ALPHA,W.ZERO,W.ONE],i.aj.transparent,[!0,!0,!0,!1])),Z.setDepthMode(new Wt(s.func===W.LESS?W.LEQUAL:s.func,Wt.ReadOnly,s.range)),Z.setStencilMode(ci.disabled);const he=3*T.primitiveLength*2,_e=3*T.primitiveOffset*2*2;if(this.forceManualRenderingForInstanceIDShaders){const pe=N||1;for(let Me=0;Me<pe;++Me)se.instancingUniforms.u_instanceID.set(this.program,"u_instanceID",Me),W.drawElements(W.LINES,he,W.UNSIGNED_SHORT,_e)}else N&&N>1?W.drawElementsInstanced(W.LINES,he,W.UNSIGNED_SHORT,_e,N):W.drawElements(W.LINES,he,W.UNSIGNED_SHORT,_e);y.bind(),Z.program.set(this.program),Z.setDepthMode(s),Z.setStencilMode(h),Z.setColorMode(_)}checkUniforms(t,s,h){if(this.fixedDefines.includes(s)){for(const _ of Object.keys(h))if(!h[_].initialized)throw new Error(`Program '${this.name}', from draw '${t}': uniform ${_} not set but required by ${s} being defined`)}}draw(t,s,h,_,y,T,z,R,F,N,G,Z,W,te,ee,se){const oe=t.context,he=oe.gl;if(this.failedToCreate)return;oe.program.set(this.program),oe.setDepthMode(h),oe.setStencilMode(_),oe.setColorMode(y),oe.setCullFace(T);for(const Me of Object.keys(this.fixedUniforms))this.fixedUniforms[Me].set(this.program,Me,z[Me]);te&&te.setUniforms(this.program,oe,this.binderUniforms,Z,{zoom:W});const _e={[he.POINTS]:1,[he.LINES]:2,[he.TRIANGLES]:3,[he.LINE_STRIP]:1}[s];this.checkUniforms(R,"RENDER_SHADOWS",this.shadowUniforms);const pe=se&&se>0?1:void 0;for(const Me of G.get()){const xe=Me.vaos||(Me.vaos={});if((xe[R]||(xe[R]=new iu)).bind(oe,this,F,te?te.getPaintVertexBuffers():[],N,Me.vertexOffset,ee||[],pe),this.forceManualRenderingForInstanceIDShaders){const we=se||1;for(let ve=0;ve<we;++ve)this.instancingUniforms.u_instanceID.set(this.program,"u_instanceID",ve),N?he.drawElements(s,Me.primitiveLength*_e,he.UNSIGNED_SHORT,Me.primitiveOffset*_e*2):he.drawArrays(s,Me.vertexOffset,Me.vertexLength)}else se&&se>1?he.drawElementsInstanced(s,Me.primitiveLength*_e,he.UNSIGNED_SHORT,Me.primitiveOffset*_e*2,se):N?he.drawElements(s,Me.primitiveLength*_e,he.UNSIGNED_SHORT,Me.primitiveOffset*_e*2):he.drawArrays(s,Me.vertexOffset,Me.vertexLength);s===he.TRIANGLES&&N&&this._drawDebugWireframe(t,h,_,y,N,Me,Z,W,te,se)}}}function Vd(c,t){const s=Math.pow(2,t.tileID.overscaledZ),h=t.tileSize*Math.pow(2,c.transform.tileZoom)/s,_=h*(t.tileID.canonical.x+t.tileID.wrap*s),y=h*t.tileID.canonical.y;return{u_image:0,u_texsize:t.imageAtlasTexture?t.imageAtlasTexture.size:[0,0],u_tile_units_to_pixels:1/i.ar(t,1,c.transform.tileZoom),u_pixel_coord_upper:[_>>16,y>>16],u_pixel_coord_lower:[65535&_,65535&y]}}const hu={terrain:0,flat:1},Ud=i.ab.mat4.create(),uu=(c,t,s,h,_,y,T,z,R,F,N,G,Z,W,te,ee,se,oe)=>{const he=t.style.light,_e=he.properties.get("position"),pe=[_e.x,_e.y,_e.z],Me=i.ab.mat3.create();he.properties.get("anchor")==="viewport"&&(i.ab.mat3.fromRotation(Me,-t.transform.angle),i.ab.vec3.transformMat3(pe,pe,Me));const xe=he.properties.get("color"),we=t.transform,ve={u_matrix:c,u_lightpos:pe,u_lightintensity:he.properties.get("intensity"),u_lightcolor:[xe.r,xe.g,xe.b],u_vertical_gradient:+s,u_opacity:h,u_tile_id:[0,0,0],u_zoom_transition:0,u_inv_rot_matrix:Ud,u_merc_center:[0,0],u_up_dir:[0,0,0],u_height_lift:0,u_height_type:hu[F],u_base_type:hu[N],u_ao:_,u_edge_radius:y,u_width_scale:T,u_flood_light_color:te,u_vertical_scale:ee,u_flood_light_intensity:se,u_ground_shadow_factor:oe};return we.projection.name==="globe"&&(ve.u_tile_id=[z.canonical.x,z.canonical.y,1<<z.canonical.z],ve.u_zoom_transition=G,ve.u_inv_rot_matrix=W,ve.u_merc_center=Z,ve.u_up_dir=we.projection.upVector(new i.bT(0,0,0),Z[0]*i.ag,Z[1]*i.ag),ve.u_height_lift=R),ve},fh=(c,t,s,h,_,y)=>({u_matrix:c,u_edge_radius:t,u_width_scale:s,u_vertical_scale:h,u_height_type:hu[_],u_base_type:hu[y]}),jd=(c,t,s,h,_,y,T,z,R,F,N,G,Z,W,te,ee,se)=>{const oe=uu(c,t,s,h,_,y,T,z,F,N,G,Z,W,te,ee,se,1,[0,0,0]),he={u_height_factor:-Math.pow(2,z.overscaledZ)/R.tileSize/8};return i.l(oe,Vd(t,R),he)},mc=(c,t)=>({u_matrix:c,u_emissive_strength:t}),Gd=(c,t,s,h)=>i.l(mc(c,t),Vd(s,h)),du=(c,t,s)=>({u_matrix:c,u_world:s,u_emissive_strength:t}),fu=(c,t,s,h,_)=>i.l(Gd(c,t,s,h),{u_world:_}),Zd=(c,t,s,h)=>{const _=i.ag/s.tileSize;return{u_matrix:c,u_camera_to_center_distance:t.getCameraToCenterDistance(h),u_extrude_scale:[t.pixelsToGLUnits[0]/_,t.pixelsToGLUnits[1]/_]}},Hd=(c,t,s=1)=>({u_matrix:c,u_color:t.toRenderColor(null),u_overlay:0,u_overlay_scale:s}),Y_=i.ab.mat4.create(),_c=(c,t,s,h,_,y,T)=>{const z=c.transform,R=z.projection.name==="globe",F=R?i.cN(z.zoom,t.canonical)*z._pixelsPerMercatorPixel:i.ar(s,1,y),N={u_matrix:t.projMatrix,u_extrude_scale:F,u_intensity:T,u_inv_rot_matrix:Y_,u_merc_center:[0,0],u_tile_id:[0,0,0],u_zoom_transition:0,u_up_dir:[0,0,0]};if(R){N.u_inv_rot_matrix=h,N.u_merc_center=_,N.u_tile_id=[t.canonical.x,t.canonical.y,1<<t.canonical.z],N.u_zoom_transition=i.ae(z.zoom);const G=_[0]*i.ag,Z=_[1]*i.ag;N.u_up_dir=z.projection.upVector(new i.bT(0,0,0),G,Z)}return N};function ph(c,[t,s,h,_],[y,T]){if(y===T)return[0,0,0,0];const z=255*(c-1)/(c*(T-y));return[t*z,s*z,h*z,_*z]}function Ft(c,t,[s,h]){return s===h?0:.5/c+(t-s)*(c-1)/(c*(h-s))}const qd=(c,t,s,h,_,y,T,z,R,F,N,G,Z,W,te,ee,se,oe,he,_e,pe)=>({u_matrix:c,u_normalize_matrix:t,u_globe_matrix:s,u_merc_matrix:h,u_grid_matrix:_,u_tl_parent:y,u_scale_parent:F,u_fade_t:N.mix,u_opacity:N.opacity*G.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:G.paint.get("raster-brightness-min"),u_brightness_high:G.paint.get("raster-brightness-max"),u_saturation_factor:i.cO(G.paint.get("raster-saturation")),u_contrast_factor:i.cP(G.paint.get("raster-contrast")),u_spin_weights:Vp(G.paint.get("raster-hue-rotate")),u_perspective_transform:Z,u_raster_elevation:W,u_zoom_transition:T,u_merc_center:z,u_cutoff_params:R,u_colorization_mix:ph(i.cQ,ee,oe),u_colorization_offset:Ft(i.cQ,se,oe),u_color_ramp:te,u_texture_offset:[_e/(he+2*_e),he/(he+2*_e)],u_texture_res:[he+2*_e,he+2*_e],u_emissive_strength:pe});function Vp(c){c*=Math.PI/180;const t=Math.sin(c),s=Math.cos(c);return[(2*s+1)/3,(-Math.sqrt(3)*t-s+1)/3,(Math.sqrt(3)*t-s+1)/3]}const uo=.05,kl=(c,t,s,h,_,y,T,z,R,F,N,G)=>({u_matrix:c,u_normalize_matrix:t,u_globe_matrix:s,u_merc_matrix:h,u_grid_matrix:_,u_tl_parent:y,u_scale_parent:F,u_fade_t:N.mix,u_opacity:N.opacity,u_image0:0,u_image1:1,u_raster_elevation:G,u_zoom_transition:T,u_merc_center:z,u_cutoff_params:R}),Zt=(c,t,s,h,_,y,T,z,R,F)=>({u_particle_texture:c,u_particle_texture_side_len:t,u_tile_offset:s,u_velocity:h,u_color_ramp:y,u_velocity_res:_,u_max_speed:T,u_uv_offset:z,u_data_scale:[255*R[0],255*R[1]],u_data_offset:F,u_particle_pos_scale:1.1,u_particle_pos_offset:[uo,uo]}),Wd=(c,t,s,h,_,y,T,z,R,F)=>({u_particle_texture:c,u_particle_texture_side_len:t,u_velocity:s,u_velocity_res:h,u_max_speed:_,u_speed_factor:y,u_reset_rate:T,u_rand_seed:Math.random(),u_uv_offset:z,u_data_scale:[255*R[0],255*R[1]],u_data_offset:F,u_particle_pos_scale:1.1,u_particle_pos_offset:[uo,uo]}),Up=i.ab.mat4.create(),jp=(c,t,s,h,_,y,T,z,R,F,N,G,Z,W,te,ee,se,oe,he,_e,pe,Me)=>{const xe=_.transform,we={u_is_size_zoom_constant:+(c==="constant"||c==="source"),u_is_size_feature_constant:+(c==="constant"||c==="camera"),u_size_t:t?t.uSizeT:0,u_size:t?t.uSize:0,u_camera_to_center_distance:xe.getCameraToCenterDistance(he),u_rotate_symbol:+s,u_aspect_ratio:xe.width/xe.height,u_fade_change:_.options.fadeDuration?_.symbolFadeChange:1,u_matrix:y,u_label_plane_matrix:T,u_coord_matrix:z,u_is_text:+F,u_elevation_from_sea:R?1:0,u_pitch_with_map:+h,u_texsize:N,u_texsize_icon:G,u_texture:0,u_texture_icon:1,u_tile_id:[0,0,0],u_zoom_transition:0,u_inv_rot_matrix:Up,u_merc_center:[0,0],u_camera_forward:[0,0,0],u_ecef_origin:[0,0,0],u_tile_matrix:Up,u_up_vector:[0,-1,0],u_color_adj_mat:_e,u_icon_transition:pe||0,u_gamma_scale:h?_.transform.getCameraToCenterDistance(he)*Math.cos(_.terrain?0:_.transform._pitch):1,u_device_pixel_ratio:i.q.devicePixelRatio,u_is_halo:+Z,u_scale_factor:Me||1};return he.name==="globe"&&(we.u_tile_id=[W.canonical.x,W.canonical.y,1<<W.canonical.z],we.u_zoom_transition=te,we.u_inv_rot_matrix=se,we.u_merc_center=ee,we.u_camera_forward=xe._camera.forward(),we.u_ecef_origin=i.cR(xe.globeMatrix,W.toUnwrapped()),we.u_tile_matrix=Float32Array.from(xe.globeMatrix),we.u_up_vector=oe),we},pu=(c,t,s,h)=>({u_matrix:c,u_emissive_strength:t,u_opacity:s,u_color:h}),$d=(c,t,s,h,_,y,T,z,R)=>i.l(function(F,N,G,Z,W,te){const{width:ee,height:se}=Z.imageManager.getPixelSize(N),oe=Math.pow(2,te.tileID.overscaledZ),he=te.tileSize*Math.pow(2,Z.transform.tileZoom)/oe,_e=he*(te.tileID.canonical.x+te.tileID.wrap*oe),pe=he*te.tileID.canonical.y;return{u_image:0,u_pattern_tl:G.tl,u_pattern_br:G.br,u_texsize:[ee,se],u_pattern_size:G.displaySize,u_pattern_units_to_pixels:W?[Z.transform.width,-1*Z.transform.height]:[1/i.ar(te,1,Z.transform.tileZoom),1/i.ar(te,1,Z.transform.tileZoom)],u_pixel_coord_upper:[_e>>16,pe>>16],u_pixel_coord_lower:[65535&_e,65535&pe]}}(0,y,T,h,z,R),{u_matrix:c,u_emissive_strength:t,u_opacity:s}),mu=new Float32Array(i.ab.mat4.identity([])),Xd=(c,t,s,h,_,y,T,z,R,F,N,G,Z,W=[0,0,0],te)=>{const ee=_.style.light,se=ee.properties.get("position"),oe=[-se.x,-se.y,se.z],he=i.ab.mat3.create();ee.properties.get("anchor")==="viewport"&&(i.ab.mat3.fromRotation(he,-_.transform.angle),i.ab.vec3.transformMat3(oe,oe,he));const _e=N.alphaMode==="MASK",pe=ee.properties.get("color").toRenderColor(null),Me=Z.paint.get("model-ambient-occlusion-intensity"),xe=Z.paint.get("model-color").constantOr(i.aj.white).toRenderColor(null),we=Z.paint.get("model-color-mix-intensity").constantOr(0);return{u_matrix:c,u_lighting_matrix:t,u_normal_matrix:s,u_node_matrix:h||mu,u_lightpos:oe,u_lightintensity:ee.properties.get("intensity"),u_lightcolor:[pe.r,pe.g,pe.b],u_camera_pos:W,u_opacity:y,u_baseTextureIsAlpha:0,u_alphaMask:+_e,u_alphaCutoff:N.alphaCutoff,u_baseColorFactor:[T.r,T.g,T.b,T.a],u_emissiveFactor:[z[0],z[1],z[2],1],u_metallicFactor:R,u_roughnessFactor:F,u_baseColorTexture:bs.BaseColor,u_metallicRoughnessTexture:bs.MetallicRoughness,u_normalTexture:bs.Normal,u_occlusionTexture:bs.Occlusion,u_emissionTexture:bs.Emission,u_lutTexture:bs.LUT,u_color_mix:[xe.r,xe.g,xe.b,we],u_aoIntensity:Me,u_emissive_strength:G,u_occlusionTextureTransform:te||[0,0,0,0]}},Gp=(c,t=mu,s=mu)=>({u_matrix:c,u_instance:t,u_node_matrix:s}),Yd={fillExtrusion:c=>({u_matrix:new i.bJ(c),u_lightpos:new i.bL(c),u_lightintensity:new i.bM(c),u_lightcolor:new i.bL(c),u_vertical_gradient:new i.bM(c),u_opacity:new i.bM(c),u_edge_radius:new i.bM(c),u_width_scale:new i.bM(c),u_ao:new i.bK(c),u_height_type:new i.bN(c),u_base_type:new i.bN(c),u_tile_id:new i.bL(c),u_zoom_transition:new i.bM(c),u_inv_rot_matrix:new i.bJ(c),u_merc_center:new i.bK(c),u_up_dir:new i.bL(c),u_height_lift:new i.bM(c),u_flood_light_color:new i.bL(c),u_vertical_scale:new i.bM(c),u_flood_light_intensity:new i.bM(c),u_ground_shadow_factor:new i.bL(c)}),fillExtrusionDepth:c=>({u_matrix:new i.bJ(c),u_edge_radius:new i.bM(c),u_width_scale:new i.bM(c),u_vertical_scale:new i.bM(c),u_height_type:new i.bN(c),u_base_type:new i.bN(c)}),fillExtrusionPattern:c=>({u_matrix:new i.bJ(c),u_lightpos:new i.bL(c),u_lightintensity:new i.bM(c),u_lightcolor:new i.bL(c),u_vertical_gradient:new i.bM(c),u_height_factor:new i.bM(c),u_edge_radius:new i.bM(c),u_width_scale:new i.bM(c),u_ao:new i.bK(c),u_height_type:new i.bN(c),u_base_type:new i.bN(c),u_tile_id:new i.bL(c),u_zoom_transition:new i.bM(c),u_inv_rot_matrix:new i.bJ(c),u_merc_center:new i.bK(c),u_up_dir:new i.bL(c),u_height_lift:new i.bM(c),u_image:new i.bN(c),u_texsize:new i.bK(c),u_pixel_coord_upper:new i.bK(c),u_pixel_coord_lower:new i.bK(c),u_tile_units_to_pixels:new i.bM(c),u_opacity:new i.bM(c)}),fillExtrusionGroundEffect:c=>({u_matrix:new i.bJ(c),u_opacity:new i.bM(c),u_ao_pass:new i.bM(c),u_meter_to_tile:new i.bM(c),u_ao:new i.bK(c),u_flood_light_intensity:new i.bM(c),u_flood_light_color:new i.bL(c),u_attenuation:new i.bM(c),u_edge_radius:new i.bM(c),u_fb:new i.bN(c),u_fb_size:new i.bM(c),u_dynamic_offset:new i.bM(c)}),fill:c=>({u_matrix:new i.bJ(c),u_emissive_strength:new i.bM(c)}),fillPattern:c=>({u_matrix:new i.bJ(c),u_emissive_strength:new i.bM(c),u_image:new i.bN(c),u_texsize:new i.bK(c),u_pixel_coord_upper:new i.bK(c),u_pixel_coord_lower:new i.bK(c),u_tile_units_to_pixels:new i.bM(c)}),fillOutline:c=>({u_matrix:new i.bJ(c),u_emissive_strength:new i.bM(c),u_world:new i.bK(c)}),fillOutlinePattern:c=>({u_matrix:new i.bJ(c),u_emissive_strength:new i.bM(c),u_world:new i.bK(c),u_image:new i.bN(c),u_texsize:new i.bK(c),u_pixel_coord_upper:new i.bK(c),u_pixel_coord_lower:new i.bK(c),u_tile_units_to_pixels:new i.bM(c)}),circle:i.cS,collisionBox:c=>({u_matrix:new i.bJ(c),u_camera_to_center_distance:new i.bM(c),u_extrude_scale:new i.bK(c)}),collisionCircle:c=>({u_matrix:new i.bJ(c),u_inv_matrix:new i.bJ(c),u_camera_to_center_distance:new i.bM(c),u_viewport_size:new i.bK(c)}),debug:c=>({u_color:new i.cz(c),u_matrix:new i.bJ(c),u_overlay:new i.bN(c),u_overlay_scale:new i.bM(c)}),clippingMask:c=>({u_matrix:new i.bJ(c)}),heatmap:c=>({u_extrude_scale:new i.bM(c),u_intensity:new i.bM(c),u_matrix:new i.bJ(c),u_inv_rot_matrix:new i.bJ(c),u_merc_center:new i.bK(c),u_tile_id:new i.bL(c),u_zoom_transition:new i.bM(c),u_up_dir:new i.bL(c)}),heatmapTexture:c=>({u_image:new i.bN(c),u_color_ramp:new i.bN(c),u_opacity:new i.bM(c)}),hillshade:c=>({u_matrix:new i.bJ(c),u_image:new i.bN(c),u_latrange:new i.bK(c),u_light:new i.bK(c),u_shadow:new i.cz(c),u_highlight:new i.cz(c),u_emissive_strength:new i.bM(c),u_accent:new i.cz(c)}),hillshadePrepare:c=>({u_matrix:new i.bJ(c),u_image:new i.bN(c),u_dimension:new i.bK(c),u_zoom:new i.bM(c)}),line:i.cT,linePattern:i.cU,raster:c=>({u_matrix:new i.bJ(c),u_normalize_matrix:new i.bJ(c),u_globe_matrix:new i.bJ(c),u_merc_matrix:new i.bJ(c),u_grid_matrix:new i.cA(c),u_tl_parent:new i.bK(c),u_scale_parent:new i.bM(c),u_fade_t:new i.bM(c),u_opacity:new i.bM(c),u_image0:new i.bN(c),u_image1:new i.bN(c),u_brightness_low:new i.bM(c),u_brightness_high:new i.bM(c),u_saturation_factor:new i.bM(c),u_contrast_factor:new i.bM(c),u_spin_weights:new i.bL(c),u_perspective_transform:new i.bK(c),u_raster_elevation:new i.bM(c),u_zoom_transition:new i.bM(c),u_merc_center:new i.bK(c),u_cutoff_params:new i.ca(c),u_colorization_mix:new i.ca(c),u_colorization_offset:new i.bM(c),u_color_ramp:new i.bN(c),u_texture_offset:new i.bK(c),u_texture_res:new i.bK(c),u_emissive_strength:new i.bM(c)}),rasterParticle:c=>({u_matrix:new i.bJ(c),u_normalize_matrix:new i.bJ(c),u_globe_matrix:new i.bJ(c),u_merc_matrix:new i.bJ(c),u_grid_matrix:new i.cA(c),u_tl_parent:new i.bK(c),u_scale_parent:new i.bM(c),u_fade_t:new i.bM(c),u_opacity:new i.bM(c),u_image0:new i.bN(c),u_image1:new i.bN(c),u_raster_elevation:new i.bM(c),u_zoom_transition:new i.bM(c),u_merc_center:new i.bK(c),u_cutoff_params:new i.ca(c)}),rasterParticleTexture:c=>({u_texture:new i.bN(c),u_opacity:new i.bM(c)}),rasterParticleDraw:c=>({u_particle_texture:new i.bN(c),u_particle_texture_side_len:new i.bM(c),u_tile_offset:new i.bK(c),u_velocity:new i.bN(c),u_color_ramp:new i.bN(c),u_velocity_res:new i.bK(c),u_max_speed:new i.bM(c),u_uv_offset:new i.bK(c),u_data_scale:new i.bK(c),u_data_offset:new i.bM(c),u_particle_pos_scale:new i.bM(c),u_particle_pos_offset:new i.bK(c)}),rasterParticleUpdate:c=>({u_particle_texture:new i.bN(c),u_particle_texture_side_len:new i.bM(c),u_velocity:new i.bN(c),u_velocity_res:new i.bK(c),u_max_speed:new i.bM(c),u_speed_factor:new i.bM(c),u_reset_rate:new i.bM(c),u_rand_seed:new i.bM(c),u_uv_offset:new i.bK(c),u_data_scale:new i.bK(c),u_data_offset:new i.bM(c),u_particle_pos_scale:new i.bM(c),u_particle_pos_offset:new i.bK(c)}),symbol:c=>({u_is_size_zoom_constant:new i.bN(c),u_is_size_feature_constant:new i.bN(c),u_size_t:new i.bM(c),u_size:new i.bM(c),u_camera_to_center_distance:new i.bM(c),u_rotate_symbol:new i.bN(c),u_aspect_ratio:new i.bM(c),u_fade_change:new i.bM(c),u_matrix:new i.bJ(c),u_label_plane_matrix:new i.bJ(c),u_coord_matrix:new i.bJ(c),u_is_text:new i.bN(c),u_elevation_from_sea:new i.bN(c),u_pitch_with_map:new i.bN(c),u_texsize:new i.bK(c),u_texsize_icon:new i.bK(c),u_texture:new i.bN(c),u_texture_icon:new i.bN(c),u_gamma_scale:new i.bM(c),u_device_pixel_ratio:new i.bM(c),u_tile_id:new i.bL(c),u_zoom_transition:new i.bM(c),u_inv_rot_matrix:new i.bJ(c),u_merc_center:new i.bK(c),u_camera_forward:new i.bL(c),u_tile_matrix:new i.bJ(c),u_up_vector:new i.bL(c),u_ecef_origin:new i.bL(c),u_is_halo:new i.bN(c),u_icon_transition:new i.bM(c),u_color_adj_mat:new i.bJ(c),u_scale_factor:new i.bM(c)}),background:c=>({u_matrix:new i.bJ(c),u_emissive_strength:new i.bM(c),u_opacity:new i.bM(c),u_color:new i.cz(c)}),backgroundPattern:c=>({u_matrix:new i.bJ(c),u_emissive_strength:new i.bM(c),u_opacity:new i.bM(c),u_image:new i.bN(c),u_pattern_tl:new i.bK(c),u_pattern_br:new i.bK(c),u_texsize:new i.bK(c),u_pattern_size:new i.bK(c),u_pixel_coord_upper:new i.bK(c),u_pixel_coord_lower:new i.bK(c),u_pattern_units_to_pixels:new i.bK(c)}),terrainRaster:c=>({u_matrix:new i.bJ(c),u_image0:new i.bN(c),u_skirt_height:new i.bM(c),u_ground_shadow_factor:new i.bL(c)}),skybox:c=>({u_matrix:new i.bJ(c),u_sun_direction:new i.bL(c),u_cubemap:new i.bN(c),u_opacity:new i.bM(c),u_temporal_offset:new i.bM(c)}),skyboxGradient:c=>({u_matrix:new i.bJ(c),u_color_ramp:new i.bN(c),u_center_direction:new i.bL(c),u_radius:new i.bM(c),u_opacity:new i.bM(c),u_temporal_offset:new i.bM(c)}),skyboxCapture:c=>({u_matrix_3f:new i.cA(c),u_sun_direction:new i.bL(c),u_sun_intensity:new i.bM(c),u_color_tint_r:new i.ca(c),u_color_tint_m:new i.ca(c),u_luminance:new i.bM(c)}),globeRaster:c=>({u_proj_matrix:new i.bJ(c),u_globe_matrix:new i.bJ(c),u_normalize_matrix:new i.bJ(c),u_merc_matrix:new i.bJ(c),u_zoom_transition:new i.bM(c),u_merc_center:new i.bK(c),u_image0:new i.bN(c),u_grid_matrix:new i.cA(c),u_skirt_height:new i.bM(c),u_far_z_cutoff:new i.bM(c),u_frustum_tl:new i.bL(c),u_frustum_tr:new i.bL(c),u_frustum_br:new i.bL(c),u_frustum_bl:new i.bL(c),u_globe_pos:new i.bL(c),u_globe_radius:new i.bM(c),u_viewport:new i.bK(c)}),globeAtmosphere:c=>({u_frustum_tl:new i.bL(c),u_frustum_tr:new i.bL(c),u_frustum_br:new i.bL(c),u_frustum_bl:new i.bL(c),u_horizon:new i.bM(c),u_transition:new i.bM(c),u_fadeout_range:new i.bM(c),u_color:new i.ca(c),u_high_color:new i.ca(c),u_space_color:new i.ca(c),u_temporal_offset:new i.bM(c),u_horizon_angle:new i.bM(c)}),model:c=>({u_matrix:new i.bJ(c),u_lighting_matrix:new i.bJ(c),u_normal_matrix:new i.bJ(c),u_node_matrix:new i.bJ(c),u_lightpos:new i.bL(c),u_lightintensity:new i.bM(c),u_lightcolor:new i.bL(c),u_camera_pos:new i.bL(c),u_opacity:new i.bM(c),u_baseColorFactor:new i.ca(c),u_emissiveFactor:new i.ca(c),u_metallicFactor:new i.bM(c),u_roughnessFactor:new i.bM(c),u_baseTextureIsAlpha:new i.bN(c),u_alphaMask:new i.bN(c),u_alphaCutoff:new i.bM(c),u_baseColorTexture:new i.bN(c),u_metallicRoughnessTexture:new i.bN(c),u_normalTexture:new i.bN(c),u_occlusionTexture:new i.bN(c),u_emissionTexture:new i.bN(c),u_lutTexture:new i.bN(c),u_color_mix:new i.ca(c),u_aoIntensity:new i.bM(c),u_emissive_strength:new i.bM(c),u_occlusionTextureTransform:new i.ca(c)}),modelDepth:c=>({u_matrix:new i.bJ(c),u_instance:new i.bJ(c),u_node_matrix:new i.bJ(c)}),groundShadow:c=>({u_matrix:new i.bJ(c),u_ground_shadow_factor:new i.bL(c)}),stars:c=>({u_matrix:new i.bJ(c),u_up:new i.bL(c),u_right:new i.bL(c),u_intensity_multiplier:new i.bM(c)}),snowParticle:c=>({u_modelview:new i.bJ(c),u_projection:new i.bJ(c),u_time:new i.bM(c),u_cam_pos:new i.bL(c),u_velocityConeAperture:new i.bM(c),u_velocity:new i.bM(c),u_horizontalOscillationRadius:new i.bM(c),u_horizontalOscillationRate:new i.bM(c),u_boxSize:new i.bM(c),u_billboardSize:new i.bM(c),u_simpleShapeParameters:new i.bK(c),u_screenSize:new i.bK(c),u_thinningCenterPos:new i.bK(c),u_thinningShape:new i.bL(c),u_thinningAffectedRatio:new i.bM(c),u_thinningParticleOffset:new i.bM(c),u_particleColor:new i.ca(c),u_direction:new i.bL(c)}),rainParticle:c=>({u_modelview:new i.bJ(c),u_projection:new i.bJ(c),u_time:new i.bM(c),u_cam_pos:new i.bL(c),u_texScreen:new i.bN(c),u_velocityConeAperture:new i.bM(c),u_velocity:new i.bM(c),u_boxSize:new i.bM(c),u_rainDropletSize:new i.bK(c),u_distortionStrength:new i.bM(c),u_rainDirection:new i.bL(c),u_color:new i.ca(c),u_screenSize:new i.bK(c),u_thinningCenterPos:new i.bK(c),u_thinningShape:new i.bL(c),u_thinningAffectedRatio:new i.bM(c),u_thinningParticleOffset:new i.bM(c),u_shapeDirectionalPower:new i.bM(c),u_shapeNormalPower:new i.bM(c),u_mode:new i.bM(c)}),vignette:c=>({u_vignetteShape:new i.bL(c),u_vignetteColor:new i.ca(c)}),occlusion:c=>({u_matrix:new i.bJ(c),u_anchorPos:new i.bL(c),u_screenSizePx:new i.bK(c),u_occluderSizePx:new i.bK(c),u_color:new i.ca(c)})};class na{constructor(t,s,h,_){this.id=na.uniqueIdxCounter,na.uniqueIdxCounter++,this.context=t;const y=t.gl;this.buffer=y.createBuffer(),this.dynamicDraw=!!h,this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),y.bufferData(y.ELEMENT_ARRAY_BUFFER,s.arrayBuffer,this.dynamicDraw?y.DYNAMIC_DRAW:y.STATIC_DRAW),this.dynamicDraw||_||s.destroy()}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(t){this.id=na.uniqueIdxCounter,na.uniqueIdxCounter++;const s=this.context.gl;this.context.unbindVAO(),this.bind(),s.bufferSubData(s.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}na.uniqueIdxCounter=0;const Kd={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class Jd{constructor(t,s,h,_,y,T){this.length=s.length,this.attributes=h,this.itemSize=s.bytesPerElement,this.dynamicDraw=_,this.instanceCount=T,this.context=t;const z=t.gl;this.buffer=z.createBuffer(),t.bindVertexBuffer.set(this.buffer),z.bufferData(z.ARRAY_BUFFER,s.arrayBuffer,this.dynamicDraw?z.DYNAMIC_DRAW:z.STATIC_DRAW),this.dynamicDraw||y||s.destroy()}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(t){const s=this.context.gl;this.bind(),s.bufferSubData(s.ARRAY_BUFFER,0,t.arrayBuffer)}enableAttributes(t,s){for(let h=0;h<this.attributes.length;h++){const _=s.attributes[this.attributes[h].name];_!==void 0&&t.enableVertexAttribArray(_)}}setVertexAttribPointers(t,s,h){for(let _=0;_<this.attributes.length;_++){const y=this.attributes[_],T=s.attributes[y.name];T!==void 0&&t.vertexAttribPointer(T,y.components,t[Kd[y.type]],!1,this.itemSize,y.offset+this.itemSize*(h||0))}}setVertexAttribDivisor(t,s,h){for(let _=0;_<this.attributes.length;_++){const y=s.attributes[this.attributes[_].name];y!==void 0&&this.instanceCount&&this.instanceCount>0&&t.vertexAttribDivisor(y,h)}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}class br{constructor(t,s,h,_,y){this.context=t,this.width=s,this.height=h;const T=this.framebuffer=t.gl.createFramebuffer();_&&(this.colorAttachment=new fc(t,T)),y&&(this.depthAttachmentType=y,this.depthAttachment=y==="renderbuffer"?new ts(t,T):new Io(t,T))}destroy(){const t=this.context.gl;if(this.colorAttachment){const s=this.colorAttachment.get();s&&t.deleteTexture(s)}if(this.depthAttachment&&this.depthAttachmentType)if(this.depthAttachmentType==="renderbuffer"){const s=this.depthAttachment.get();s&&t.deleteRenderbuffer(s)}else{const s=this.depthAttachment.get();s&&t.deleteTexture(s)}t.deleteFramebuffer(this.framebuffer)}}class Ka{constructor(t,s){this.gl=t,this.clearColor=new nu(this),this.clearDepth=new su(this),this.clearStencil=new hc(this),this.colorMask=new uc(this),this.depthMask=new dc(this),this.stencilMask=new ah(this),this.stencilFunc=new lh(this),this.stencilOp=new ch(this),this.stencilTest=new kd(this),this.depthRange=new p(this),this.depthTest=new A(this),this.depthFunc=new B(this),this.blend=new X(this),this.blendFunc=new ne(this),this.blendColor=new ye(this),this.blendEquation=new We(this),this.cullFace=new at(this),this.cullFaceSide=new ft(this),this.frontFace=new Rt(this),this.program=new ii(this),this.activeTexture=new Ci(this),this.viewport=new Wi(this),this.bindFramebuffer=new Hs(this),this.bindRenderbuffer=new ws(this),this.bindTexture=new Os(this),this.bindVertexBuffer=new dr(this),this.bindElementBuffer=new Xa(this),this.bindVertexArrayOES=new Rd(this),this.pixelStoreUnpack=new Od(this),this.pixelStoreUnpackPremultiplyAlpha=new Fd(this),this.pixelStoreUnpackFlipY=new ru(this),this.options=s?{...s}:{},this.options.extTextureFilterAnisotropicForceOff||(this.extTextureFilterAnisotropic=t.getExtension("EXT_texture_filter_anisotropic")||t.getExtension("MOZ_EXT_texture_filter_anisotropic")||t.getExtension("WEBKIT_EXT_texture_filter_anisotropic"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=t.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT))),this.extDebugRendererInfo=t.getExtension("WEBGL_debug_renderer_info"),this.extDebugRendererInfo&&(this.renderer=t.getParameter(this.extDebugRendererInfo.UNMASKED_RENDERER_WEBGL),this.vendor=t.getParameter(this.extDebugRendererInfo.UNMASKED_VENDOR_WEBGL)),this.forceManualRenderingForInstanceIDShaders=s&&!!s.forceManualRenderingForInstanceIDShaders||this.renderer&&this.renderer.indexOf("PowerVR")!==-1,this.options.extTextureFloatLinearForceOff||(this.extTextureFloatLinear=t.getExtension("OES_texture_float_linear")),this.extRenderToTextureHalfFloat=t.getExtension("EXT_color_buffer_half_float"),this.extTimerQuery=t.getExtension("EXT_disjoint_timer_query_webgl2"),this.maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE),this.maxPointSize=t.getParameter(t.ALIASED_POINT_SIZE_RANGE)[1]}setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault()}setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.bindVertexArrayOES.dirty=!0,this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0}createIndexBuffer(t,s,h){return new na(this,t,s,h)}createVertexBuffer(t,s,h,_,y){return new Jd(this,t,s,h,_,y)}createRenderbuffer(t,s,h){const _=this.gl,y=_.createRenderbuffer();return this.bindRenderbuffer.set(y),_.renderbufferStorage(_.RENDERBUFFER,t,s,h),this.bindRenderbuffer.set(null),y}createFramebuffer(t,s,h,_){return new br(this,t,s,h,_)}clear({color:t,depth:s,stencil:h,colorMask:_}){const y=this.gl;let T=0;t&&(T|=y.COLOR_BUFFER_BIT,this.clearColor.set(t),this.colorMask.set(_||[!0,!0,!0,!0])),s!==void 0&&(T|=y.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(s),this.depthMask.set(!0)),h!==void 0&&(T|=y.STENCIL_BUFFER_BIT,this.clearStencil.set(h),this.stencilMask.set(255)),y.clear(T)}setCullFace(t){t.enable===!1?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(t.mode),this.frontFace.set(t.frontFace))}setDepthMode(t){t.func!==this.gl.ALWAYS||t.mask?(this.depthTest.set(!0),this.depthFunc.set(t.func),this.depthMask.set(t.mask),this.depthRange.set(t.range)):this.depthTest.set(!1)}setStencilMode(t){t.test.func!==this.gl.ALWAYS||t.mask?(this.stencilTest.set(!0),this.stencilMask.set(t.mask),this.stencilOp.set([t.fail,t.depthFail,t.pass]),this.stencilFunc.set({func:t.test.func,ref:t.ref,mask:t.test.mask})):this.stencilTest.set(!1)}setColorMode(t){i.bn(t.blendFunction,bi.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(t.blendFunction),this.blendColor.set(t.blendColor),t.blendEquation?this.blendEquation.set(t.blendEquation):this.blendEquation.setDefault()),this.colorMask.set(t.mask)}unbindVAO(){this.bindVertexArrayOES.set(null)}}let mh;function _u(c,t,s,h,_,y,T){const z=c.context,R=z.gl,F=c.transform,N=c.getOrCreateProgram("collisionBox"),G=[];let Z=0,W=0;for(let pe=0;pe<h.length;pe++){const Me=h[pe],xe=t.getTile(Me),we=xe.getBucket(s);if(!we)continue;const ve=qn(Me,we,F);let Ae=ve;_[0]===0&&_[1]===0||(Ae=c.translatePosMatrix(ve,xe,_,y));const Oe=T?we.textCollisionBox:we.iconCollisionBox,Xe=we.collisionCircleArray;if(Xe.length>0){const He=i.ab.mat4.create(),ke=Ae;i.ab.mat4.mul(He,we.placementInvProjMatrix,F.glCoordMatrix),i.ab.mat4.mul(He,He,we.placementViewportMatrix),G.push({circleArray:Xe,circleOffset:W,transform:ke,invTransform:He,projection:we.getProjection()}),Z+=Xe.length/4,W=Z}Oe&&(c.terrain&&c.terrain.setupElevationDraw(xe,N),N.draw(c,R.LINES,Wt.disabled,ci.disabled,c.colorModeForRenderPass(),ti.disabled,Zd(Ae,F,xe,we.getProjection()),s.id,Oe.layoutVertexBuffer,Oe.indexBuffer,Oe.segments,null,F.zoom,null,[Oe.collisionVertexBuffer,Oe.collisionVertexBufferExt]))}if(!T||!G.length)return;const te=c.getOrCreateProgram("collisionCircle"),ee=new i.cV;ee.resize(4*Z),ee._trim();let se=0;for(const pe of G)for(let Me=0;Me<pe.circleArray.length/4;Me++){const xe=4*Me,we=pe.circleArray[xe+0],ve=pe.circleArray[xe+1],Ae=pe.circleArray[xe+2],Oe=pe.circleArray[xe+3];ee.emplace(se++,we,ve,Ae,Oe,0),ee.emplace(se++,we,ve,Ae,Oe,1),ee.emplace(se++,we,ve,Ae,Oe,2),ee.emplace(se++,we,ve,Ae,Oe,3)}(!mh||mh.length<2*Z)&&(mh=function(pe){const Me=2*pe,xe=new i.aU;xe.resize(Me),xe._trim();for(let we=0;we<Me;we++){const ve=6*we;xe.uint16[ve+0]=4*we+0,xe.uint16[ve+1]=4*we+1,xe.uint16[ve+2]=4*we+2,xe.uint16[ve+3]=4*we+2,xe.uint16[ve+4]=4*we+3,xe.uint16[ve+5]=4*we+0}return xe}(Z));const oe=z.createIndexBuffer(mh,!0),he=z.createVertexBuffer(ee,i.cW.members,!0);for(const pe of G){const Me={u_matrix:pe.transform,u_inv_matrix:pe.invTransform,u_camera_to_center_distance:(_e=F).getCameraToCenterDistance(pe.projection),u_viewport_size:[_e.width,_e.height]};te.draw(c,R.TRIANGLES,Wt.disabled,ci.disabled,c.colorModeForRenderPass(),ti.disabled,Me,s.id,he,oe,i.b7.simpleSegment(0,2*pe.circleOffset,pe.circleArray.length,pe.circleArray.length/2),null,F.zoom)}var _e;he.destroy(),oe.destroy()}const gc=i.ab.mat4.create();function gu(c){const t=c._camera.getWorldToCamera(c.worldSize,1),s=i.ab.mat4.multiply([],t,c.globeMatrix);i.ab.mat4.invert(s,s);const h=[0,0,0],_=[0,1,0,0];return i.ab.vec4.transformMat4(_,_,s),h[0]=_[0],h[1]=_[1],h[2]=_[2],i.ab.vec3.normalize(h,h),h}function Zp({width:c,height:t,anchor:s,textOffset:h,textScale:_},y){const{horizontalAlign:T,verticalAlign:z}=i.bD(s),R=-(T-.5)*c,F=-(z-.5)*t,N=i.bC(s,h);return new i.P((R/_+N[0])*y,(F/_+N[1])*y)}function fo(c,t,s,h,_,y,T,z,R,F,N){const G=c.text.placedSymbolArray,Z=c.text.dynamicLayoutVertexArray,W=c.icon.dynamicLayoutVertexArray,te={},ee=c.getProjection(),se=xa(z,ee,y),oe=y.elevation,he=ee.upVectorScale(z.canonical,y.center.lat,y.worldSize).metersToTile;Z.clear();for(let _e=0;_e<G.length;_e++){const pe=G.get(_e),{tileAnchorX:Me,tileAnchorY:xe,numGlyphs:we}=pe,ve=pe.hidden||!pe.crossTileID||c.allowVerticalPlacement&&!pe.placedOrientation?null:h[pe.crossTileID];if(ve){let Ae=0,Oe=0,Xe=0;if(oe){const Je=oe?oe.getAtTileOffset(z,Me,xe):0,[_t,ct,nt]=ee.upVector(z.canonical,Me,xe);Ae=Je*_t*he,Oe=Je*ct*he,Xe=Je*nt*he}let[He,ke,Ne,st]=un(pe.projectedAnchorX+Ae,pe.projectedAnchorY+Oe,pe.projectedAnchorZ+Xe,s?se:T);const ut=Jc(y.getCameraToCenterDistance(ee),st);let xt=_.evaluateSizeForFeature(c.textSizeData,F,pe)*ut/i.bw;s&&(xt*=c.tilePixelRatio/R);const Ge=Zp(ve,xt);s?({x:He,y:ke,z:Ne}=ee.projectTilePoint(Me+Ge.x,xe+Ge.y,z.canonical),[He,ke,Ne]=un(He+Ae,ke+Oe,Ne+Xe,T)):(t&&Ge._rotate(-y.angle),He+=Ge.x,ke+=Ge.y,Ne=0);const lt=c.allowVerticalPlacement&&pe.placedOrientation===i.bq.vertical?Math.PI/2:0;for(let Je=0;Je<we;Je++)i.bt(Z,He,ke,Ne,lt);N&&pe.associatedIconIndex>=0&&(te[pe.associatedIconIndex]={x:He,y:ke,z:Ne,angle:lt})}else ya(we,Z)}if(N){W.clear();const _e=c.icon.placedSymbolArray;for(let pe=0;pe<_e.length;pe++){const Me=_e.get(pe),{numGlyphs:xe}=Me,we=te[pe];if(Me.hidden||!we)ya(xe,W);else{const{x:ve,y:Ae,z:Oe,angle:Xe}=we;for(let He=0;He<xe;He++)i.bt(W,ve,Ae,Oe,Xe)}}c.icon.dynamicLayoutVertexBuffer.updateData(W)}c.text.dynamicLayoutVertexBuffer.updateData(Z)}function Tn(c,t,s,h,_,y,T={}){const z=s.paint.get("icon-translate"),R=s.paint.get("text-translate"),F=s.paint.get("icon-translate-anchor"),N=s.paint.get("text-translate-anchor"),G=s.layout.get("icon-rotation-alignment"),Z=s.layout.get("text-rotation-alignment"),W=s.layout.get("icon-pitch-alignment"),te=s.layout.get("text-pitch-alignment"),ee=s.layout.get("icon-keep-upright"),se=s.layout.get("text-keep-upright"),oe=s.paint.get("icon-color-saturation"),he=s.paint.get("icon-color-contrast"),_e=s.paint.get("icon-color-brightness-min"),pe=s.paint.get("icon-color-brightness-max"),Me=s.layout.get("symbol-elevation-reference")==="sea",xe=c.context,we=xe.gl,ve=c.transform,Ae=G==="map",Oe=Z==="map",Xe=W==="map",He=te==="map",ke=s.layout.get("symbol-sort-key").constantOr(1)!==void 0;let Ne=!1;const st=c.depthModeForSublayer(0,Wt.ReadOnly),ut=[i.at(ve.center.lng),i.aA(ve.center.lat)],xt=s.layout.get("text-variable-anchor"),Ge=ve.projection.name==="globe",lt=[],Je=[0,-1,0];for(const _t of h){const ct=t.getTile(_t),nt=ct.getBucket(s);if(!nt||nt.projection.name==="mercator"&&Ge||nt.fullyClipped)continue;const Lt=nt.projection.name==="globe",bt=Lt?i.ae(ve.zoom):0,zt=xa(_t,nt.getProjection(),ve),Bt=ve.calculatePixelsToTileUnitsMatrix(ct),oi=xt&&nt.hasTextData(),$t=nt.hasIconTextFit()&&oi&&nt.hasIconData(),Xt=nt.getProjection().createInversionMatrix(ve,_t.canonical),ai=ji=>{ve.depthOcclusionForSymbolsAndCircles&&(s.hasInitialOcclusionOpacityProperties||c.terrain)&&(ji.push("DEPTH_D24"),ji.push("DEPTH_OCCLUSION"))},zi=()=>{const ji=Ae&&s.layout.get("symbol-placement")!=="point",Yi=[];ai(Yi);const In=ji||$t,Bs=s.paint.get("icon-image-cross-fade").constantOr(0);c.terrainRenderModeElevated()&&Xe&&Yi.push("PITCH_WITH_MAP_TERRAIN"),Lt&&(Yi.push("PROJECTION_GLOBE_VIEW"),In&&Yi.push("PROJECTED_POS_ON_VIEWPORT")),Bs>0&&Yi.push("ICON_TRANSITION"),nt.icon.zOffsetVertexBuffer&&Yi.push("Z_OFFSET"),oe===0&&he===0&&_e===0&&pe===1||Yi.push("COLOR_ADJUSTMENT"),nt.sdfIcons&&Yi.push("RENDER_SDF");const mr=nt.icon.programConfigurations.get(s.id),is=c.getOrCreateProgram("symbol",{config:mr,defines:Yi}),As=ct.imageAtlasTexture?ct.imageAtlasTexture.size:[0,0],er=nt.iconSizeData,Gn=i.bp(er,ve.zoom),dn=Xe||ve.pitch!==0,_n=Qs(zt,ct.tileID.canonical,Xe,Ae,ve,nt.getProjection(),Bt),Ri=Es(zt,ct.tileID.canonical,Xe,Ae,ve,nt.getProjection(),Bt),Zn=c.translatePosMatrix(Ri,ct,z,F,!0),Ns=c.translatePosMatrix(zt,ct,z,F),cn=In?gc:_n,tr=Ae&&!Xe&&!ji;let eo=Je;!Ge&&!ve.mercatorFromTransition||Ae||(eo=gu(ve));const Ur=Lt?eo:Je,Ca=s.getColorAdjustmentMatrix(oe,he,_e,pe),_r=jp(er.kind,Gn,tr,Xe,c,Ns,cn,Zn,Me,!1,As,[0,0],!0,_t,bt,ut,Xt,Ur,nt.getProjection(),Ca,Bs),Oo=ct.imageAtlasTexture?ct.imageAtlasTexture:null,jr=s.layout.get("icon-size").constantOr(0)!==1||nt.iconsNeedLinear,al=nt.sdfIcons||c.options.rotating||c.options.zooming||jr||dn?we.LINEAR:we.NEAREST,ra=nt.sdfIcons&&s.paint.get("icon-halo-width").constantOr(1)!==0,jl=c.terrain&&Xe&&ji?i.ab.mat4.invert(i.ab.mat4.create(),_n):gc;if(ji&&nt.icon){const zh=ve.elevation,Fu=zh?zh.getAtTileOffsetFunc(_t,ve.center.lat,ve.worldSize,nt.getProjection()):null,Bu=$o(zt,ct.tileID.canonical,Xe,Ae,ve,nt.getProjection(),Bt);tc(nt,zt,c,!1,Bu,Ri,Xe,ee,Fu,_t)}return{program:is,buffers:nt.icon,uniformValues:_r,atlasTexture:Oo,atlasTextureIcon:null,atlasInterpolation:al,atlasInterpolationIcon:null,isSDF:nt.sdfIcons,hasHalo:ra,tile:ct,labelPlaneMatrixInv:jl}},wi=()=>{const ji=Oe&&s.layout.get("symbol-placement")!=="point",Yi=[],In=ji||xt||$t;c.terrainRenderModeElevated()&&He&&Yi.push("PITCH_WITH_MAP_TERRAIN"),Lt&&(Yi.push("PROJECTION_GLOBE_VIEW"),In&&Yi.push("PROJECTED_POS_ON_VIEWPORT")),nt.text.zOffsetVertexBuffer&&Yi.push("Z_OFFSET"),nt.iconsInText&&Yi.push("RENDER_TEXT_AND_SYMBOL"),Yi.push("RENDER_SDF"),ai(Yi);const Bs=nt.text.programConfigurations.get(s.id),mr=c.getOrCreateProgram("symbol",{config:Bs,defines:Yi});let is,As=[0,0],er=null;const Gn=nt.textSizeData;nt.iconsInText&&(As=ct.imageAtlasTexture?ct.imageAtlasTexture.size:[0,0],er=ct.imageAtlasTexture?ct.imageAtlasTexture:null,is=He||ve.pitch!==0||c.options.rotating||c.options.zooming||Gn.kind==="composite"||Gn.kind==="camera"?we.LINEAR:we.NEAREST);const dn=ct.glyphAtlasTexture?ct.glyphAtlasTexture.size:[0,0],_n=s.layout.get("text-size-scale-range"),Ri=i.aw(c.scaleFactor,_n[0],_n[1]),Zn=i.bp(Gn,ve.zoom,Ri),Ns=Qs(zt,ct.tileID.canonical,He,Oe,ve,nt.getProjection(),Bt),cn=Es(zt,ct.tileID.canonical,He,Oe,ve,nt.getProjection(),Bt),tr=c.translatePosMatrix(cn,ct,R,N,!0),eo=c.translatePosMatrix(zt,ct,R,N),Ur=In?gc:Ns,Ca=Oe&&!He&&!ji;let _r=Je;!Ge&&!ve.mercatorFromTransition||Oe||(_r=gu(ve));const Oo=jp(Gn.kind,Zn,Ca,He,c,eo,Ur,tr,Me,!0,dn,As,!0,_t,bt,ut,Xt,Lt?_r:Je,nt.getProjection(),null,null,Ri),jr=ct.glyphAtlasTexture?ct.glyphAtlasTexture:null,al=we.LINEAR,ra=s.paint.get("text-halo-width").constantOr(1)!==0,jl=c.terrain&&He&&ji?i.ab.mat4.invert(i.ab.mat4.create(),Ns):gc;if(ji&&nt.text){const zh=ve.elevation,Fu=zh?zh.getAtTileOffsetFunc(_t,ve.center.lat,ve.worldSize,nt.getProjection()):null,Bu=$o(zt,ct.tileID.canonical,He,Oe,ve,nt.getProjection(),Bt);tc(nt,zt,c,!0,Bu,cn,He,se,Fu,_t)}return{program:mr,buffers:nt.text,uniformValues:Oo,atlasTexture:jr,atlasTextureIcon:er,atlasInterpolation:al,atlasInterpolationIcon:is,isSDF:!0,hasHalo:ra,tile:ct,labelPlaneMatrixInv:jl}},mn=nt.icon.segments.get().length,Mn=nt.text.segments.get().length,Xi=mn&&!T.onlyText?zi():null,sn=Mn&&!T.onlyIcons?wi():null,_i=s.paint.get("icon-opacity").constantOr(1),Jt=s.paint.get("text-opacity").constantOr(1);if(ke&&nt.canOverlap){Ne=!0;const ji=_i&&!T.onlyText?nt.icon.segments.get():[],Yi=Jt&&!T.onlyIcons?nt.text.segments.get():[];for(const In of ji)lt.push({segments:new i.b7([In]),sortKey:In.sortKey,state:Xi});for(const In of Yi)lt.push({segments:new i.b7([In]),sortKey:In.sortKey,state:sn})}else T.onlyText||lt.push({segments:_i?nt.icon.segments:new i.b7([]),sortKey:0,state:Xi}),T.onlyIcons||lt.push({segments:Jt?nt.text.segments:new i.b7([]),sortKey:0,state:sn})}Ne&<.sort((_t,ct)=>_t.sortKey-ct.sortKey);for(const _t of lt){const ct=_t.state;if(ct)if(c.terrain?c.terrain.setupElevationDraw(ct.tile,ct.program,{useDepthForOcclusion:ve.depthOcclusionForSymbolsAndCircles,labelPlaneMatrixInv:ct.labelPlaneMatrixInv}):c.setupDepthForOcclusion(ve.depthOcclusionForSymbolsAndCircles,ct.program),xe.activeTexture.set(we.TEXTURE0),ct.atlasTexture&&ct.atlasTexture.bind(ct.atlasInterpolation,we.CLAMP_TO_EDGE,!0),ct.atlasTextureIcon&&(xe.activeTexture.set(we.TEXTURE1),ct.atlasTextureIcon&&ct.atlasTextureIcon.bind(ct.atlasInterpolationIcon,we.CLAMP_TO_EDGE,!0)),c.uploadCommonLightUniforms(c.context,ct.program),ct.hasHalo){const nt=ct.uniformValues;nt.u_is_halo=1,yc(ct.buffers,_t.segments,s,c,ct.program,st,_,y,nt,2),nt.u_is_halo=0}else{if(ct.isSDF){const nt=ct.uniformValues;ct.hasHalo&&(nt.u_is_halo=1,yc(ct.buffers,_t.segments,s,c,ct.program,st,_,y,nt,1)),nt.u_is_halo=0}yc(ct.buffers,_t.segments,s,c,ct.program,st,_,y,ct.uniformValues,1)}}}function yc(c,t,s,h,_,y,T,z,R,F){const N=[c.dynamicLayoutVertexBuffer,c.opacityVertexBuffer,c.iconTransitioningVertexBuffer,c.globeExtVertexBuffer,c.zOffsetVertexBuffer];_.draw(h,h.context.gl.TRIANGLES,y,T,z,ti.disabled,R,s.id,c.layoutVertexBuffer,c.indexBuffer,t,s.paint,h.transform.zoom,c.programConfigurations.get(s.id),N,F)}function yu(c,t,s,h,_,y,T){const z=c.context.gl,R=s.paint.get("fill-pattern"),F=s.is3D(),N=F?c.stencilModeFor3D():ci.disabled,G=R&&R.constantOr(1);let Z,W,te,ee,se;T?(W=G&&!s.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",Z=z.LINES):(W=G?"fillPattern":"fill",Z=z.TRIANGLES);for(const oe of h){const he=t.getTile(oe);if(G&&!he.patternsLoaded())continue;const _e=he.getBucket(s);if(!_e)continue;c.prepareDrawTile();const pe=_e.programConfigurations.get(s.id),Me=c.isTileAffectedByFog(oe),xe=c.getOrCreateProgram(W,{config:pe,overrideFog:Me});G&&(c.context.activeTexture.set(z.TEXTURE0),he.imageAtlasTexture&&he.imageAtlasTexture.bind(z.LINEAR,z.CLAMP_TO_EDGE),pe.updatePaintBuffers());const we=R.constantOr(null);if(we&&he.imageAtlas){const Oe=he.imageAtlas,Xe=i.A.from(we),He=Oe.patternPositions[Xe.getSerializedPrimary()];He&&pe.setConstantPatternPositions(He)}const ve=c.translatePosMatrix(oe.projMatrix,he,s.paint.get("fill-translate"),s.paint.get("fill-translate-anchor")),Ae=s.paint.get("fill-emissive-strength");if(T){ee=_e.indexBuffer2,se=_e.segments2;const Oe=c.terrain&&c.terrain.renderingToTexture?c.terrain.drapeBufferSize:[z.drawingBufferWidth,z.drawingBufferHeight];te=W==="fillOutlinePattern"&&G?fu(ve,Ae,c,he,Oe):du(ve,Ae,Oe)}else ee=_e.indexBuffer,se=_e.segments,te=G?Gd(ve,Ae,c,he):mc(ve,Ae);c.uploadCommonUniforms(c.context,xe,oe.toUnwrapped()),xe.draw(c,Z,_,F?N:c.stencilModeForClipping(oe),y,ti.disabled,te,s.id,_e.layoutVertexBuffer,ee,se,s.paint,c.transform.zoom,pe,void 0)}}function _h(c,t,s,h,_,y,T,z){s.resetLayerRenderingStats(c);const R=c.context,F=R.gl,N=c.transform,G=s.paint.get("fill-extrusion-pattern"),Z=G.constantOr(1),W=s.paint.get("fill-extrusion-opacity"),te=c.style.enable3dLights(),ee=s.paint.get(te&&!Z?"fill-extrusion-ambient-occlusion-wall-radius":"fill-extrusion-ambient-occlusion-radius"),se=[s.paint.get("fill-extrusion-ambient-occlusion-intensity"),ee],oe=s.layout.get("fill-extrusion-edge-radius"),he=oe>0&&!s.paint.get("fill-extrusion-rounded-roof"),_e=he?0:oe,pe=N.projection.name==="globe"?i.d3():0,Me=N.projection.name==="globe",xe=Me?i.ae(N.zoom):0,we=[i.at(N.center.lng),i.aA(N.center.lat)],ve=s.paint.get("fill-extrusion-flood-light-color-use-theme").constantOr("default")==="none",Ae=s.paint.get("fill-extrusion-flood-light-color").toRenderColor(ve?null:s.lut).toArray01().slice(0,3),Oe=s.paint.get("fill-extrusion-flood-light-intensity"),Xe=s.paint.get("fill-extrusion-vertical-scale"),He=s.paint.get("fill-extrusion-line-width").constantOr(1)!==0,ke=s.paint.get("fill-extrusion-height-alignment"),Ne=s.paint.get("fill-extrusion-base-alignment"),st=Eo(c,s.paint.get("fill-extrusion-cutoff-fade-range")),ut=[];let xt;Me&&ut.push("PROJECTION_GLOBE_VIEW"),se[0]>0&&ut.push("FAUX_AO"),he&&ut.push("ZERO_ROOF_RADIUS"),z&&ut.push("HAS_CENTROID"),Oe>0&&ut.push("FLOOD_LIGHT"),st.shouldRenderCutoff&&ut.push("RENDER_CUTOFF"),He&&ut.push("RENDER_WALL_MODE");const Ge=c.renderPass==="shadow",lt=c.shadowRenderer,Je=Ge&&!!lt;c.shadowRenderer&&(c.shadowRenderer.useNormalOffset=!0);let _t=[0,0,0];if(lt){const Lt=c.style.directionalLight,bt=c.style.ambientLight;Lt&&bt&&(_t=hr(c.style,Lt,bt)),Ge||(ut.push("RENDER_SHADOWS","DEPTH_TEXTURE"),lt.useNormalOffset&&ut.push("NORMAL_OFFSET")),xt=ut.concat(["SHADOWS_SINGLE_CASCADE"])}const ct=Je?"fillExtrusionDepth":Z?"fillExtrusionPattern":"fillExtrusion",nt=s.getLayerRenderingStats();for(const Lt of h){const bt=t.getTile(Lt),zt=bt.getBucket(s);if(!zt||zt.projection.name!==N.projection.name)continue;let Bt=!1;lt&&(Bt=lt.getMaxCascadeForTile(Lt.toUnwrapped())===0);const oi=c.isTileAffectedByFog(Lt),$t=zt.programConfigurations.get(s.id),Xt=c.getOrCreateProgram(ct,{config:$t,defines:Bt?xt:ut,overrideFog:oi});if(c.terrain&&c.terrain.setupElevationDraw(bt,Xt,{useMeterToDem:!0}),!zt.centroidVertexBuffer){const sn=Xt.attributes.a_centroid_pos;sn!==void 0&&F.vertexAttrib2f(sn,0,0)}!Ge&<&<.setupShadows(bt.tileID.toUnwrapped(),Xt,"vector-tile",bt.tileID.overscaledZ),Z&&(c.context.activeTexture.set(F.TEXTURE0),bt.imageAtlasTexture&&bt.imageAtlasTexture.bind(F.LINEAR,F.CLAMP_TO_EDGE),$t.updatePaintBuffers());const ai=G.constantOr(null);if(ai&&bt.imageAtlas){const sn=bt.imageAtlas,_i=i.A.from(ai),Jt=sn.patternPositions[_i.getSerializedPrimary()];Jt&&$t.setConstantPatternPositions(Jt)}const zi=s.paint.get("fill-extrusion-vertical-gradient"),wi=1/zt.tileToMeter;let mn;if(Ge&<){if(yt(bt.tileID,zt,c))continue;const sn=lt.calculateShadowPassMatrixFromTile(bt.tileID.toUnwrapped());mn=fh(sn,_e,wi,Xe,ke,Ne)}else{const sn=c.translatePosMatrix(Lt.expandedProjMatrix,bt,s.paint.get("fill-extrusion-translate"),s.paint.get("fill-extrusion-translate-anchor")),_i=N.projection.createInversionMatrix(N,Lt.canonical);mn=Z?jd(sn,c,zi,W,se,_e,wi,Lt,bt,pe,ke,Ne,xe,we,_i,Ae,Xe):uu(sn,c,zi,W,se,_e,wi,Lt,pe,ke,Ne,xe,we,_i,Ae,Xe,Oe,_t)}c.uploadCommonUniforms(R,Xt,Lt.toUnwrapped(),null,st);let Mn=zt.segments;if(N.projection.name==="mercator"&&!Ge&&(Mn=zt.getVisibleSegments(bt.tileID,c.terrain,c.transform.getFrustum(0)),!Mn.get().length))continue;if(nt)if(Ge)for(const sn of Mn.get())nt.numRenderedVerticesInShadowPass+=sn.primitiveLength;else for(const sn of Mn.get())nt.numRenderedVerticesInTransparentPass+=sn.primitiveLength;const Xi=[];(c.terrain||z)&&Xi.push(zt.centroidVertexBuffer),Me&&Xi.push(zt.layoutVertexExtBuffer),He&&Xi.push(zt.wallVertexBuffer),Xt.draw(c,R.gl.TRIANGLES,_,y,T,ti.backCCW,mn,s.id,zt.layoutVertexBuffer,zt.indexBuffer,Mn,s.paint,c.transform.zoom,$t,Xi)}c.shadowRenderer&&(c.shadowRenderer.useNormalOffset=!1)}function Rl(c,t,s,h,_,y,T,z,R,F,N,G,Z,W,te,ee,se,oe,he){const _e=c.context,pe=_e.gl,Me=c.transform,xe=c.transform.zoom,we=[],ve=Eo(c,s.paint.get("fill-extrusion-cutoff-fade-range"));F==="clear"?(we.push("CLEAR_SUBPASS"),he&&(we.push("CLEAR_FROM_TEXTURE"),_e.activeTexture.set(pe.TEXTURE0),he.bind(pe.LINEAR,pe.CLAMP_TO_EDGE))):F==="sdf"&&we.push("SDF_SUBPASS"),se&&we.push("HAS_CENTROID"),ve.shouldRenderCutoff&&we.push("RENDER_CUTOFF");const Ae=s.layout.get("fill-extrusion-edge-radius"),Oe=(Xe,He,ke,Ne,st)=>{const ut=He.programConfigurations.get(s.id),xt=c.isTileAffectedByFog(Xe),Ge=c.getOrCreateProgram("fillExtrusionGroundEffect",{config:ut,defines:we,overrideFog:xt}),lt=((_t,ct,nt,Lt,bt,zt,Bt,oi,$t,Xt,ai)=>({u_matrix:ct,u_opacity:nt,u_ao_pass:Lt?1:0,u_meter_to_tile:bt,u_ao:zt,u_flood_light_intensity:Bt,u_flood_light_color:oi,u_attenuation:$t,u_edge_radius:Xt,u_fb:0,u_fb_size:ai,u_dynamic_offset:1}))(0,Ne,N,R,st,[G,Z*st],W,te,ee,xe>=17?0:Ae*st,he?he.size[0]:0),Je=[];se&&Je.push(He.hiddenByLandmarkVertexBuffer),c.uploadCommonUniforms(_e,Ge,Xe.toUnwrapped(),null,ve),Ge.draw(c,_e.gl.TRIANGLES,_,y,T,z,lt,s.id,He.vertexBuffer,He.indexBuffer,ke,s.paint,xe,ut,Je)};for(const Xe of h){const He=t.getTile(Xe),ke=He.getBucket(s);if(!ke||ke.projection.name!==Me.projection.name||!ke.groundEffect||ke.groundEffect&&!ke.groundEffect.hasData())continue;const Ne=ke.groundEffect,st=1/ke.tileToMeter;{const ut=c.translatePosMatrix(Xe.projMatrix,He,s.paint.get("fill-extrusion-translate"),s.paint.get("fill-extrusion-translate-anchor")),xt=Ne.getDefaultSegment();Oe(Xe,Ne,xt,ut,st)}if(oe)for(let ut=0;ut<4;ut++){const xt=i.d4[ut](Xe),Ge=t.getTile(xt);if(!Ge)continue;const lt=Ge.getBucket(s);if(!lt||lt.projection.name!==Me.projection.name||!lt.groundEffect||lt.groundEffect&&!lt.groundEffect.hasData())continue;const Je=lt.groundEffect;let _t,ct;ut===0?(_t=[-i.ag,0,0],ct=1):ut===1?(_t=[i.ag,0,0],ct=0):ut===2?(_t=[0,-i.ag,0],ct=3):(_t=[0,i.ag,0],ct=2);const nt=Je.regionSegments[ct];if(!nt)continue;const Lt=new Float32Array(16);i.ab.mat4.translate(Lt,Xe.projMatrix,_t),Oe(Xe,Je,nt,c.translatePosMatrix(Lt,He,s.paint.get("fill-extrusion-translate"),s.paint.get("fill-extrusion-translate-anchor")),st)}}}function Hp(c,t,s,h,_,y,T){h.centroidVertexArray.length===0&&h.createCentroidsBuffer();const z=y?y.findDEMTileFor(s):null;if(!(z&&z.dem||T))return;y&&z&&z.dem&&h.selfDEMTileTimestamp!==z.dem._timestamp&&(h.borderDoneWithNeighborZ=[-1,-1,-1,-1],h.selfDEMTileTimestamp=z.dem._timestamp);const R=oe=>new i.P(Math.ceil((oe+i.d7)*i.d8),0),F=oe=>{const he=t.getSource().minzoom,_e=Me=>{const xe=t.getTileByID(Me);if(xe&&xe.hasData())return xe.getBucket(_)},pe=[0,-1,1];for(const Me of pe){if(oe.overscaledZ+Me<he)continue;const xe=_e(oe.calculateScaledKey(oe.overscaledZ+Me));if(xe)return xe}},N=[0,0,0],G=(oe,he)=>(N[0]=Math.min(oe.min.y,he.min.y),N[1]=Math.max(oe.max.y,he.max.y),N[2]=i.ag-he.min.x>oe.max.x?he.min.x-i.ag:oe.max.x,N),Z=(oe,he)=>(N[0]=Math.min(oe.min.x,he.min.x),N[1]=Math.max(oe.max.x,he.max.x),N[2]=i.ag-he.min.y>oe.max.y?he.min.y-i.ag:oe.max.y,N),W=[(oe,he)=>G(oe,he),(oe,he)=>G(he,oe),(oe,he)=>Z(oe,he),(oe,he)=>Z(he,oe)],te=(oe,he,_e,pe,Me,xe,we)=>{if(!y)return 0;const ve=[[xe?_e:oe,xe?oe:_e,0],[xe?_e:he,xe?he:_e,0]],Ae=we<0?i.ag+we:we,Oe=[xe?Ae:(oe+he)/2,xe?(oe+he)/2:Ae,0];return _e===0&&we<0||_e!==0&&we>0?y.getForTilePoints(Me,[Oe],!0,pe):ve.push(Oe),y.getForTilePoints(s,ve,!0,z),Math.max(ve[0][2],ve[1][2],Oe[2])/y.exaggeration()};for(let oe=0;oe<4;oe++){const he=h.borderFeatureIndices[oe];if(he.length===0)continue;const _e=i.d4[oe](s),pe=F(_e);if(!(pe&&pe instanceof i.d5))continue;const Me=y?y.findDEMTileFor(_e):null;if(!(Me&&Me.dem||T)||(y&&Me&&Me.dem&&h.borderDEMTileTimestamp[oe]!==Me.dem._timestamp&&(h.borderDoneWithNeighborZ[oe]=-1,h.borderDEMTileTimestamp[oe]=Me.dem._timestamp),h.borderDoneWithNeighborZ[oe]===pe.canonical.z))continue;pe.centroidVertexArray.length===0&&pe.createCentroidsBuffer();const xe=(oe<2?1:5)-oe,we=pe.borderDoneWithNeighborZ[xe]!==h.canonical.z,ve=pe.borderFeatureIndices[xe];let Ae=0;if(h.canonical.z!==pe.canonical.z){for(const Oe of he)h.showCentroid(h.featuresOnBorder[Oe]);if(we)for(const Oe of ve)pe.showCentroid(pe.featuresOnBorder[Oe]);h.borderDoneWithNeighborZ[oe]=pe.canonical.z,pe.borderDoneWithNeighborZ[xe]=h.canonical.z}for(const Oe of he){const Xe=h.featuresOnBorder[Oe],He=h.centroidData[Xe.centroidDataIndex],ke=Xe.borders[oe];let Ne;for(;Ae<ve.length;){Ne=pe.featuresOnBorder[ve[Ae]];const st=Ne.borders[xe];if(st[1]>ke[0]+3||st[0]>ke[0]-3)break;pe.showCentroid(Ne),Ae++}if(Ne&&Ae<ve.length){const st=Ae;let ut=0;for(;!(Ne.borders[xe][0]>ke[1]-3)&&(ut++,++Ae!==ve.length);)Ne=pe.featuresOnBorder[ve[Ae]];Ne=pe.featuresOnBorder[ve[st]];let xt=!1;if(ut>=1){const Je=Ne.borders[xe];Math.abs(ke[0]-Je[0])<3&&Math.abs(ke[1]-Je[1])<3&&(ut=1,xt=!0,Ae=st+1)}else if(ut===0){h.showCentroid(Xe);continue}const Ge=pe.centroidData[Ne.centroidDataIndex];T&&xt&&(((ee=He).flags|(se=Ge).flags)&i.d6?(ee.flags|=i.d6,se.flags|=i.d6):(ee.flags&=~i.d6,se.flags&=~i.d6));const lt=Xe.intersectsCount()>1||Ne.intersectsCount()>1;if(ut>1)Ae=st,He.centroidXY=Ge.centroidXY=new i.P(0,0);else if(Me&&Me.dem&&!lt){const Je=W[oe](He,Ge),_t=oe%2?i.ag-1:0,ct=te(Je[0],Math.min(i.ag-1,Je[1]),_t,Me,_e,oe<2,Je[2]);He.centroidXY=Ge.centroidXY=R(ct)}else lt?He.centroidXY=Ge.centroidXY=new i.P(0,0):(He.centroidXY=h.encodeBorderCentroid(Xe),Ge.centroidXY=pe.encodeBorderCentroid(Ne));h.writeCentroidToBuffer(He),pe.writeCentroidToBuffer(Ge)}else h.showCentroid(Xe)}h.borderDoneWithNeighborZ[oe]=pe.canonical.z,pe.borderDoneWithNeighborZ[xe]=h.canonical.z}var ee,se;(h.needsCentroidUpdate||!h.centroidVertexBuffer&&h.centroidVertexArray.length!==0)&&h.uploadCentroid(c)}const K_=[1,0,0],xc=[0,1,0],vc=[0,0,1];function yt(c,t,s){const h=s.transform,_=s.shadowRenderer;if(!_)return!0;const y=c.toUnwrapped(),T=h.tileSize*_._cascades[s.currentShadowCascade].scale;let z=t.maxHeight;if(h.elevation){const ee=h.elevation.getMinMaxForTile(c);ee&&(z+=ee.max)}const R=[..._.shadowDirection];R[2]=-R[2];const F=_.computeSimplifiedTileShadowVolume(y,z,T,R);if(!F)return!1;const N=[K_,xc,vc,R,[R[0],0,R[2]],[0,R[1],R[2]]],G=h.projection.name==="globe",Z=h.scaleZoom(T),W=i.bR.fromInvProjectionMatrix(h.invProjMatrix,h.worldSize,Z,!G),te=_.getCurrentCascadeFrustum();return W.intersectsPrecise(F.vertices,F.planes,N)===0||te.intersectsPrecise(F.vertices,F.planes,N)===0}function Dt(c){return[c[0]*i.d9,c[1]*i.d9,c[2]*i.d9,0]}function Ja(c,t,s,h,_,y,T,z,R){const F=h.getSource(),N=s.globeSharedBuffers;if(!N)return;let G,Z,W;if(t&&(G=h.getTile(t)),F instanceof i.aJ?(Z=F.texture,W=i.cI(0,0,s.transform)):G&&t&&(Z=G.texture,W=i.cI(t.canonical.z,t.canonical.x,s.transform)),!Z||!W)return;c||(W=i.ab.mat4.scale(i.ab.mat4.create(),W,[1,-1,1]));const te=s.context,ee=te.gl,se=_.paint.get("raster-resampling")==="nearest"?ee.NEAREST:ee.LINEAR,oe=s.colorModeForDrapableLayerRenderPass(y),he=T.defines;he.push("GLOBE_POLES");const _e=new Wt(ee.LEQUAL,Wt.ReadWrite,s.depthRangeFor3D),pe=Float32Array.from(s.transform.expandedFarZProjMatrix),Me=Float32Array.from(i.bb(i.cH(new i.bT(0,0,0))));s.terrain&&s.terrain.prepareDrawTile(),te.activeTexture.set(ee.TEXTURE0),Z.bind(se,ee.CLAMP_TO_EDGE),te.activeTexture.set(ee.TEXTURE1),Z.bind(se,ee.CLAMP_TO_EDGE),Z.useMipmap&&te.extTextureFilterAnisotropic&&s.transform.pitch>20&&ee.texParameterf(ee.TEXTURE_2D,te.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,te.extTextureFilterAnisotropicMax);const[xe,we,ve,Ae]=t?N.getPoleBuffers(t.canonical.z,!1):N.getPoleBuffers(0,!0),Oe=_.paint.get("raster-elevation");let Xe;c?(Xe=xe,s.renderDefaultNorthPole=Oe!==0):(Xe=we,s.renderDefaultSouthPole=Oe!==0);const He=Dt(T.mix),ke=((st,ut,xt,Ge,lt,Je,_t,ct,nt,Lt,bt,zt,Bt)=>qd(st,ut,xt,new Float32Array(16),new Float32Array(9),[0,0],Ge,[0,0],[0,0,0,0],1,{opacity:1,mix:0},Je,[0,0],ct,2,Lt,bt,zt,1,0,Bt))(pe,Me,W,i.ae(s.transform.zoom),0,_,0,Oe,0,He,T.offset,T.range,y),Ne=s.getOrCreateProgram("raster",{defines:he});s.uploadCommonUniforms(te,Ne,null),Ne.draw(s,ee.TRIANGLES,_e,R,oe,z,ke,_.id,Xe,ve,Ae)}function Bn(c){const t=c._nearZ,s=c.projection.farthestPixelDistance(c),h=s-t,_=.2*c.height,y=t+_;return[t,s,(y-_-t)/h,(y-t)/h]}function $e(c,t,s,h){if(c)return t instanceof vn&&c instanceof Na?t.getTextureDescriptor(c,s,!0):{texture:c.texture,mix:Dt(h.mix),offset:h.offset,buffer:0,tileSize:1}}var qp=i.da([{name:"a_index",type:"Int16",components:1}]);class xu{constructor(t,s,h,_){const y={width:h[0],height:h[1],data:null},T=t.gl;this.targetColorTexture=new i.T(t,y,T.RGBA8,{useMipmap:!1}),this.backgroundColorTexture=new i.T(t,y,T.RGBA8,{useMipmap:!1}),this.context=t,this.updateParticleTexture(s,_),this.lastInvalidatedAt=0}updateParticleTexture(t,s){if(this.particleTextureDimension===s.width)return;(this.particleTexture0||this.particleTexture1||this.particleIndexBuffer||this.particleSegment)&&(this.particleTexture0.destroy(),this.particleTexture1.destroy(),this.particleIndexBuffer.destroy(),this.particleSegment.destroy());const h=this.context.gl,_=s.width*s.height;this.particleTexture0=new i.T(this.context,s,h.RGBA8,{premultiply:!1,useMipmap:!1}),this.particleTexture1=new i.T(this.context,s,h.RGBA8,{premultiply:!1,useMipmap:!1});const y=new i.db;y.reserve(_);for(let T=0;T<_;T++)y.emplaceBack(T);this.particleIndexBuffer=this.context.createVertexBuffer(y,qp.members,!0),this.particleSegment=i.b7.simpleSegment(0,0,this.particleIndexBuffer.length,0),this.particleTextureDimension=s.width}update(t){return!(this.lastInvalidatedAt<t&&(this.lastInvalidatedAt=i.q.now(),1))}destroy(){this.targetColorTexture.destroy(),this.backgroundColorTexture.destroy(),this.particleIndexBuffer.destroy(),this.particleTexture0.destroy(),this.particleTexture1.destroy(),this.particleSegment.destroy()}}function Qd(c,t,s){if(!c)return null;const h=t.getTextureDescriptor(c,s,!0);if(!h)return null;let{texture:_,mix:y,offset:T,tileSize:z,buffer:R,format:F}=h;if(!_||!F)return null;let N=!1;return F==="uint32"&&(N=!0,y[3]=0,y=ph(i.dc,y,[0,s.paint.get("raster-particle-max-speed")]),T=Ft(i.dc,T,[0,s.paint.get("raster-particle-max-speed")])),{texture:_,textureOffset:[R/(z+2*R),z/(z+2*R)],tileSize:z,scalarData:N,scale:y,offset:T,defines:["RASTER_ARRAY",{uint8:"DATA_FORMAT_UINT8",uint16:"DATA_FORMAT_UINT16",uint32:"DATA_FORMAT_UINT32"}[F]]}}function Wp(c){const t=c._nearZ,s=c.projection.farthestPixelDistance(c),h=s-t,_=.2*c.height,y=t+_;return[t,s,(y-_-t)/h,(y-t)/h]}const $p=new i.aj(1,0,0,1),Xp=new i.aj(0,1,0,1),bc=new i.aj(0,0,1,1),J_=new i.aj(1,0,1,1),Q_=new i.aj(0,1,1,1);function Ol(c,t,s,h,_,y,T){const z=c.context,R=c.transform,F=z.gl,N=R.projection.name==="globe",G=N?["PROJECTION_GLOBE_VIEW"]:[];let Z=i.ab.mat4.clone(s.projMatrix);if(N&&i.ae(R.zoom)>0){const He=i.ba(s.canonical,R),ke=i.dd(He);Z=i.ab.mat4.multiply(new Float32Array(16),R.globeMatrix,ke),i.ab.mat4.multiply(Z,R.projMatrix,Z)}const W=i.ab.mat4.create();W[12]+=2*_/(i.q.devicePixelRatio*R.width),W[13]+=2*y/(i.q.devicePixelRatio*R.height),i.ab.mat4.multiply(Z,W,Z);const te=c.getOrCreateProgram("debug",{defines:G}),ee=t.getTileByID(s.key);c.terrain&&c.terrain.setupElevationDraw(ee,te);const se=Wt.disabled,oe=ci.disabled,he=c.colorModeForRenderPass(),_e="$debug";z.activeTexture.set(F.TEXTURE0),c.emptyTexture.bind(F.LINEAR,F.CLAMP_TO_EDGE),N?ee._makeGlobeTileDebugBuffers(c.context,R):ee._makeDebugTileBoundsBuffers(c.context,R.projection);const pe=ee._tileDebugBuffer||c.debugBuffer,Me=ee._tileDebugIndexBuffer||c.debugIndexBuffer,xe=ee._tileDebugSegments||c.debugSegments;if(te.draw(c,F.LINE_STRIP,se,oe,he,ti.disabled,Hd(Z,h),_e,pe,Me,xe,null,null,null,[ee._globeTileDebugBorderBuffer]),T){const He=ee.latestRawTileData,ke=Math.floor((He&&He.byteLength||0)/1024);let Ne=s.canonical.toString();s.overscaledZ!==s.canonical.z&&(Ne+=` => ${s.overscaledZ}`),Ne+=` ${ee.state}`,Ne+=` ${ke}kb`,function(st,ut){st.initDebugOverlayCanvas();const xt=st.debugOverlayCanvas,Ge=st.context.gl,lt=st.debugOverlayCanvas.getContext("2d");lt.clearRect(0,0,xt.width,xt.height),lt.shadowColor="white",lt.shadowBlur=2,lt.lineWidth=1.5,lt.strokeStyle="white",lt.textBaseline="top",lt.font="bold 36px Open Sans, sans-serif",lt.fillText(ut,5,5),lt.strokeText(ut,5,5),st.debugOverlayTexture.update(xt),st.debugOverlayTexture.bind(Ge.LINEAR,Ge.CLAMP_TO_EDGE)}(c,Ne)}const we=t.getTile(s).tileSize,ve=512/Math.min(we,512)*(s.overscaledZ/R.zoom)*.5,Ae=ee._tileDebugTextBuffer||c.debugBuffer,Oe=ee._tileDebugTextIndexBuffer||c.quadTriangleIndexBuffer,Xe=ee._tileDebugTextSegments||c.debugSegments;te.draw(c,F.TRIANGLES,se,oe,bi.alphaBlended,ti.disabled,Hd(Z,i.aj.transparent,ve),_e,Ae,Oe,Xe,null,null,null,[ee._globeTileDebugTextBuffer])}function gh(c,t,s,h){yh(c,0,t+s/2,c.transform.width,s,h)}function vu(c,t,s,h){yh(c,t-s/2,0,s,c.transform.height,h)}function yh(c,t,s,h,_,y){const T=c.context,z=T.gl;z.enable(z.SCISSOR_TEST),z.scissor(t*i.q.devicePixelRatio,s*i.q.devicePixelRatio,h*i.q.devicePixelRatio,_*i.q.devicePixelRatio),T.clear({color:y}),z.disable(z.SCISSOR_TEST)}const Yp=i.da([{name:"a_pos_3f",components:3,type:"Float32"}]),{members:bu}=Yp;function Lo(c,t,s,h){c.emplaceBack(t,s,h)}class zo{constructor(t){this.vertexArray=new i.de,this.indices=new i.aU,Lo(this.vertexArray,-1,-1,1),Lo(this.vertexArray,1,-1,1),Lo(this.vertexArray,-1,1,1),Lo(this.vertexArray,1,1,1),Lo(this.vertexArray,-1,-1,-1),Lo(this.vertexArray,1,-1,-1),Lo(this.vertexArray,-1,1,-1),Lo(this.vertexArray,1,1,-1),this.indices.emplaceBack(5,1,3),this.indices.emplaceBack(3,7,5),this.indices.emplaceBack(6,2,0),this.indices.emplaceBack(0,4,6),this.indices.emplaceBack(2,6,7),this.indices.emplaceBack(7,3,2),this.indices.emplaceBack(5,4,0),this.indices.emplaceBack(0,1,5),this.indices.emplaceBack(0,2,3),this.indices.emplaceBack(3,1,0),this.indices.emplaceBack(7,6,4),this.indices.emplaceBack(4,5,7),this.vertexBuffer=t.createVertexBuffer(this.vertexArray,bu),this.indexBuffer=t.createIndexBuffer(this.indices),this.segment=i.b7.simpleSegment(0,0,36,12)}}function Fl(c,t,s,h,_,y){const T=c.context.gl,z=t.paint.get("sky-atmosphere-color"),R=t.paint.get("sky-atmosphere-halo-color"),F=t.paint.get("sky-atmosphere-sun-intensity"),N=((G,Z,W,te,ee)=>({u_matrix_3f:G,u_sun_direction:Z,u_sun_intensity:W,u_color_tint_r:[te.r,te.g,te.b,te.a],u_color_tint_m:[ee.r,ee.g,ee.b,ee.a],u_luminance:5e-5}))(i.ab.mat3.fromMat4(i.ab.mat3.create(),h),_,F,z,R);T.framebufferTexture2D(T.FRAMEBUFFER,T.COLOR_ATTACHMENT0,T.TEXTURE_CUBE_MAP_POSITIVE_X+y,t.skyboxTexture,0),s.draw(c,T.TRIANGLES,Wt.disabled,ci.disabled,bi.unblended,ti.frontCW,N,"skyboxCapture",t.skyboxGeometry.vertexBuffer,t.skyboxGeometry.indexBuffer,t.skyboxGeometry.segment)}const eg=i.da([{type:"Float32",name:"a_pos",components:3},{type:"Float32",name:"a_uv",components:2}]);class wr{constructor(t){const s=new i.df;s.emplaceBack(-1,1,1,0,0),s.emplaceBack(1,1,1,1,0),s.emplaceBack(1,-1,1,1,1),s.emplaceBack(-1,-1,1,0,1);const h=new i.aU;h.emplaceBack(0,1,2),h.emplaceBack(2,3,0),this.vertexBuffer=t.createVertexBuffer(s,eg.members),this.indexBuffer=t.createIndexBuffer(h),this.segments=i.b7.simpleSegment(0,0,4,2)}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy()}}const tg=i.da([{type:"Float32",name:"a_pos_3f",components:3},{type:"Float32",name:"a_uv",components:2},{type:"Float32",name:"a_size_scale",components:1},{type:"Float32",name:"a_fade_opacity",components:1}]);class xh{constructor(){this.starsCount=16e3,this.sizeMultiplier=.15,this.sizeRange=100,this.intensityRange=200}}class wn{constructor(t){this.colorModeAlphaBlendedWriteRGB=new bi([1,Jo,1,Jo],i.aj.transparent,[!0,!0,!0,!1]),this.colorModeWriteAlpha=new bi([1,0,1,0],i.aj.transparent,[!1,!1,!1,!0]),this.params=new xh,this.updateNeeded=!0,t.tp.registerParameter(this.params,["Stars"],"starsCount",{min:100,max:16e3,step:1},()=>{this.updateNeeded=!0}),t.tp.registerParameter(this.params,["Stars"],"sizeMultiplier",{min:.01,max:2,step:.01}),t.tp.registerParameter(this.params,["Stars"],"sizeRange",{min:0,max:200,step:1},()=>{this.updateNeeded=!0}),t.tp.registerParameter(this.params,["Stars"],"intensityRange",{min:0,max:200,step:1},()=>{this.updateNeeded=!0})}update(t){const s=t.context;if(!this.atmosphereBuffer||this.updateNeeded){this.updateNeeded=!1,this.atmosphereBuffer=new wr(s);const h=this.params.sizeRange,_=this.params.intensityRange,y=function(N){const G=i.di(30),Z=[];for(let W=0;W<N;++W){const te=2*Math.PI*G(),ee=Math.acos(1-2*G())-.5*Math.PI;Z.push(i.ab.vec3.fromValues(Math.cos(ee)*Math.cos(te),Math.cos(ee)*Math.sin(te),Math.sin(ee)))}return Z}(this.params.starsCount),T=i.di(300),z=new i.dg,R=new i.aU;let F=0;for(let N=0;N<y.length;++N){const G=i.ab.vec3.scale([],y[N],200),Z=Math.max(0,1+.01*h*(1*T()-.5)),W=Math.max(0,1+.01*_*(1*T()-.5));z.emplaceBack(G[0],G[1],G[2],-1,-1,Z,W),z.emplaceBack(G[0],G[1],G[2],1,-1,Z,W),z.emplaceBack(G[0],G[1],G[2],1,1,Z,W),z.emplaceBack(G[0],G[1],G[2],-1,1,Z,W),R.emplaceBack(F+0,F+1,F+2),R.emplaceBack(F+0,F+2,F+3),F+=4}this.starsVx=s.createVertexBuffer(z,tg.members),this.starsIdx=s.createIndexBuffer(R),this.starsSegments=i.b7.simpleSegment(0,0,z.length,R.length)}}destroy(){this.atmosphereBuffer&&this.atmosphereBuffer.destroy(),this.starsVx&&this.starsVx.destroy(),this.starsIdx&&this.starsIdx.destroy()}drawAtmosphereGlow(t,s){const h=t.context,_=h.gl,y=t.transform,T=new Wt(_.LEQUAL,Wt.ReadOnly,[0,1]),z=i.ae(y.zoom),R=t.style.getLut(s.scope),F=s.properties.get("color-use-theme")==="none",N=s.properties.get("color").toRenderColor(F?null:R).toArray01(),G=s.properties.get("high-color-use-theme")==="none",Z=s.properties.get("high-color").toRenderColor(G?null:R).toArray01(),W=s.properties.get("space-color-use-theme")==="none",te=s.properties.get("space-color").toRenderColor(W?null:R).toArray01PremultipliedAlpha(),ee=5e-4,se=i.dh(s.properties.get("horizon-blend"),0,1,ee,.25),oe=i.cC(t,h,y)&&se===ee?y.worldSize/(2*Math.PI*1.025)-1:y.globeRadius,he=t.frameCounter/1e3%1,_e=i.ab.vec3.length(y.globeCenterInViewSpace),pe=Math.sqrt(Math.pow(_e,2)-Math.pow(oe,2)),Me=Math.acos(pe/_e),xe=we=>{const ve=y.projection.name==="globe"?["PROJECTION_GLOBE_VIEW","FOG"]:["FOG"];we&&ve.push("ALPHA_PASS");const Ae=t.getOrCreateProgram("globeAtmosphere",{defines:ve}),Oe=((He,ke,Ne,st,ut,xt,Ge,lt,Je,_t,ct,nt)=>({u_frustum_tl:He,u_frustum_tr:ke,u_frustum_br:Ne,u_frustum_bl:st,u_horizon:ut,u_transition:xt,u_fadeout_range:Ge,u_color:lt,u_high_color:Je,u_space_color:_t,u_temporal_offset:ct,u_horizon_angle:nt}))(y.frustumCorners.TL,y.frustumCorners.TR,y.frustumCorners.BR,y.frustumCorners.BL,y.frustumCorners.horizon,z,se,N,Z,te,he,Me);t.uploadCommonUniforms(h,Ae);const Xe=this.atmosphereBuffer;Xe&&Ae.draw(t,_.TRIANGLES,T,ci.disabled,we?this.colorModeWriteAlpha:this.colorModeAlphaBlendedWriteRGB,ti.backCW,Oe,we?"atmosphere_glow_alpha":"atmosphere_glow",Xe.vertexBuffer,Xe.indexBuffer,Xe.segments)};xe(!1),xe(!0)}drawStars(t,s){const h=i.aw(s.properties.get("star-intensity"),0,1);if(h===0)return;const _=t.context,y=_.gl,T=t.transform,z=t.getOrCreateProgram("stars"),R=i.ab.quat.identity([]);i.ab.quat.rotateX(R,R,-T._pitch),i.ab.quat.rotateZ(R,R,-T.angle),i.ab.quat.rotateX(R,R,i.ai(T._center.lat)),i.ab.quat.rotateY(R,R,-i.ai(T._center.lng));const F=i.ab.mat4.fromQuat(new Float32Array(16),R),N=i.ab.mat4.multiply([],T.starsProjMatrix,F),G=i.ab.mat3.fromMat4([],F),Z=i.ab.mat3.invert([],G),W=[0,1,0];i.ab.vec3.transformMat3(W,W,Z),i.ab.vec3.scale(W,W,this.params.sizeMultiplier);const te=[1,0,0];i.ab.vec3.transformMat3(te,te,Z),i.ab.vec3.scale(te,te,this.params.sizeMultiplier);const ee=(se=W,oe=te,he=h,{u_matrix:Float32Array.from(N),u_up:se,u_right:oe,u_intensity_multiplier:he});var se,oe,he;t.uploadCommonUniforms(_,z),this.starsVx&&this.starsIdx&&z.draw(t,y.TRIANGLES,Wt.disabled,ci.disabled,this.colorModeAlphaBlendedWriteRGB,ti.disabled,ee,"atmosphere_stars",this.starsVx,this.starsIdx,this.starsSegments)}}function qi(c,t){const s=[...c],h=t.cameraWorldSizeForFog/t.worldSize,_=i.ab.mat4.identity([]);return i.ab.mat4.scale(_,_,[h,h,1]),i.ab.mat4.multiply(s,_,s),i.ab.mat4.multiply(s,t.worldToFogMatrix,s),s}function wu(c,t,s,h,_){const y=s.material,T=h.context,{baseColorTexture:z,metallicRoughnessTexture:R}=y.pbrMetallicRoughness,{normalTexture:F,occlusionTexture:N,emissionTexture:G}=y;function Z(te,ee,se){if(te&&(c.push(ee),T.activeTexture.set(T.gl.TEXTURE0+se),te.gfxTexture)){const{minFilter:oe,magFilter:he,wrapS:_e,wrapT:pe}=te.sampler;te.gfxTexture.bindExtraParam(oe,he,_e,pe)}}Z(z,"HAS_TEXTURE_u_baseColorTexture",bs.BaseColor),Z(R,"HAS_TEXTURE_u_metallicRoughnessTexture",bs.MetallicRoughness),Z(F,"HAS_TEXTURE_u_normalTexture",bs.Normal),Z(N,"HAS_TEXTURE_u_occlusionTexture",bs.Occlusion),Z(G,"HAS_TEXTURE_u_emissionTexture",bs.Emission),_&&(_.texture||(_.texture=new i.dk(h.context,_.image,[_.image.height,_.image.height,_.image.height],T.gl.RGBA8)),T.activeTexture.set(T.gl.TEXTURE0+bs.LUT),_.texture&&_.texture.bind(T.gl.LINEAR,T.gl.CLAMP_TO_EDGE),c.push("APPLY_LUT_ON_GPU")),s.texcoordBuffer&&(c.push("HAS_ATTRIBUTE_a_uv_2f"),t.push(s.texcoordBuffer)),s.colorBuffer&&(c.push(s.colorBuffer.itemSize===12?"HAS_ATTRIBUTE_a_color_3f":"HAS_ATTRIBUTE_a_color_4f"),t.push(s.colorBuffer)),s.normalBuffer&&(c.push("HAS_ATTRIBUTE_a_normal_3f"),t.push(s.normalBuffer)),s.pbrBuffer&&(c.push("HAS_ATTRIBUTE_a_pbr"),c.push("HAS_ATTRIBUTE_a_heightBasedEmissiveStrength"),t.push(s.pbrBuffer)),y.alphaMode!=="OPAQUE"&&y.alphaMode!=="MASK"||c.push("UNPREMULT_TEXTURE_IN_SHADER"),y.defined||c.push("DIFFUSE_SHADED"),c.push("USE_STANDARD_DERIVATIVES");const W=h.shadowRenderer;W&&(c.push("RENDER_SHADOWS","DEPTH_TEXTURE"),W.useNormalOffset&&c.push("NORMAL_OFFSET"))}function Do(c,t,s,h,_,y){const T=s.paint.get("model-opacity").constantOr(1),z=t.context,R=new Wt(t.context.gl.LEQUAL,Wt.ReadWrite,t.depthRangeFor3D),F=t.transform,N=c.mesh,G=N.material,Z=G.pbrMetallicRoughness,W=t.style.fog;let te;te=t.transform.projection.zAxisUnit==="pixels"?[...c.nodeModelMatrix]:i.ab.mat4.multiply([],h.zScaleMatrix,c.nodeModelMatrix),i.ab.mat4.multiply(te,h.negCameraPosMatrix,te);const ee=i.ab.mat4.invert([],te);i.ab.mat4.transpose(ee,ee);const se=s.paint.get("model-color-use-theme").constantOr("default")==="none",oe=s.paint.get("model-emissive-strength").constantOr(0),he=Xd(new Float32Array(c.worldViewProjection),new Float32Array(te),new Float32Array(ee),null,t,T,Z.baseColorFactor.toRenderColor(null),G.emissiveFactor,Z.metallicFactor,Z.roughnessFactor,G,oe,s),_e={defines:[]},pe=[],Me=t.shadowRenderer;Me&&(Me.useNormalOffset=!1),wu(_e.defines,pe,N,t,se?null:s.lut);let xe=null;if(W){const Ae=qi(c.nodeModelMatrix,t.transform);if(xe=new Float32Array(Ae),F.projection.name!=="globe"){const Oe=N.aabb.min,Xe=N.aabb.max,[He,ke]=W.getOpacityForBounds(Ae,Oe[0],Oe[1],Xe[0],Xe[1]);_e.overrideFog=He>=It||ke>=It}}const we=Eo(t,s.paint.get("model-cutoff-fade-range"));we.shouldRenderCutoff&&_e.defines.push("RENDER_CUTOFF");const ve=t.getOrCreateProgram("model",_e);t.uploadCommonUniforms(z,ve,null,xe,we),t.renderPass!=="shadow"&&Me&&Me.setupShadowsFromMatrix(c.nodeModelMatrix,ve),ve.draw(t,z.gl.TRIANGLES,R,_,y,N.material.doubleSided?ti.disabled:ti.backCCW,he,s.id,N.vertexBuffer,N.indexBuffer,N.segments,s.paint,t.transform.zoom,void 0,pe)}function vh(c,t,s,h,_,y,T){let z;z=c.projection.name==="globe"?i.dl(s,c):[...s],i.ab.mat4.multiply(z,z,t.matrix);const R=i.ab.mat4.multiply([],h,z);if(t.meshes)for(const F of t.meshes){if(F.material.alphaMode!=="BLEND"){T.push({mesh:F,depth:0,modelIndex:_,worldViewProjection:R,nodeModelMatrix:z});continue}const N=i.ab.vec3.transformMat4([],F.centroid,R);N[2]>0&&y.push({mesh:F,depth:N[2],modelIndex:_,worldViewProjection:R,nodeModelMatrix:z})}if(t.children)for(const F of t.children)vh(c,F,s,h,_,y,T)}function Qa(c,t,s,h){const _=s.shadowRenderer;if(!_)return;const y=_.getShadowPassDepthMode(),T=_.getShadowPassColorMode(),z=_.calculateShadowPassMatrixFromMatrix(t),R=Gp(z);s.getOrCreateProgram("modelDepth",{defines:s._shadowMapDebug?[]:["DEPTH_TEXTURE"]}).draw(s,s.context.gl.TRIANGLES,y,ci.disabled,T,ti.backCCW,R,h.id,c.vertexBuffer,c.indexBuffer,c.segments,h.paint,s.transform.zoom,void 0,void 0)}function ef(c,t,s){const h=t.updateZoomBasedPaintProperties(),_=function(y,T,z){let R,F,N,G=y.terrain?y.terrain.exaggeration():0;if(y.terrain&&G>0){const Z=y.terrain,W=Z.findDEMTileFor(z);W&&W.dem?R=i.dn.create(Z,z,W):G=0}if(G===0&&(T.terrainElevationMin=0,T.terrainElevationMax=0),G===T.validForExaggeration&&(G===0||R&&R._demTile&&R._demTile.tileID===T.validForDEMTile.id&&R._dem._timestamp===T.validForDEMTile.timestamp))return!1;for(const Z in T.instancesPerModel){const W=T.instancesPerModel[Z];for(let te=0;te<W.instancedDataArray.length;++te){const ee=(R?G*R.getElevationAt(0|W.instancedDataArray.float32[16*te],0|W.instancedDataArray.float32[16*te+1],!0,!0):0)+W.instancesEvaluatedElevation[te];W.instancedDataArray.float32[16*te+6]=ee,F=F?Math.min(T.terrainElevationMin,ee):ee,N=N?Math.max(T.terrainElevationMax,ee):ee}}return T.terrainElevationMin=F||0,T.terrainElevationMax=N||0,T.validForExaggeration=G,T.validForDEMTile=R&&R._demTile?{id:R._demTile.tileID,timestamp:R._dem._timestamp}:{id:void 0,timestamp:0},!0}(c,t,s);(h||_)&&(t.uploaded=!1,t.upload(c.context))}const po={shadowUniformsInitialized:!1,useSingleShadowCascade:!1,tileMatrix:new Float64Array(16),shadowTileMatrix:new Float32Array(16),aabb:new i.cd([0,0,0],[i.ag,i.ag,0])};function el(c,t){const s=1<<c.canonical.z,h=t.getFreeCameraOptions().position,_=t.elevation,y=c.canonical.x/s,T=(c.canonical.x+1)/s,z=c.canonical.y/s,R=(c.canonical.y+1)/s;let F=t._centerAltitude;if(_){const W=_.getMinMaxForTile(c);W&&W.max>F&&(F=W.max)}const N=i.aw(h.x,y,T)-h.x,G=i.aw(h.y,z,R)-h.y,Z=i.bH(F,t.center.lat)-h.z;return t._zoomFromMercatorZ(Math.sqrt(N*N+G*G+Z*Z))}function Sa(c,t,s,h,_,y,T){const z=c.context,R=c.renderPass==="shadow",F=c.shadowRenderer,N=R&&F?F.getShadowPassDepthMode():new Wt(z.gl.LEQUAL,Wt.ReadWrite,c.depthRangeFor3D),G=c.isTileAffectedByFog(y);if(s.meshes)for(const Z of s.meshes){const W=["MODEL_POSITION_ON_GPU"],te=[];let ee,se,oe;h.instancedDataArray.length>20&&W.push("INSTANCED_ARRAYS");const he=Eo(c,t.paint.get("model-cutoff-fade-range"));if(he.shouldRenderCutoff&&W.push("RENDER_CUTOFF"),R&&F)ee=c.getOrCreateProgram("modelDepth",{defines:W}),se=Gp(T.shadowTileMatrix,T.shadowTileMatrix,Float32Array.from(s.matrix)),oe=F.getShadowPassColorMode();else{wu(W,te,Z,c,t.paint.get("model-color-use-theme").constantOr("default")==="none"?null:t.lut),ee=c.getOrCreateProgram("model",{defines:W,overrideFog:G});const pe=Z.material,Me=pe.pbrMetallicRoughness,xe=t.paint.get("model-opacity").constantOr(1),we=t.paint.get("model-emissive-strength").constantOr(0);se=Xd(y.expandedProjMatrix,Float32Array.from(s.matrix),new Float32Array(16),null,c,xe,Me.baseColorFactor.toRenderColor(null),pe.emissiveFactor,Me.metallicFactor,Me.roughnessFactor,pe,we,t,_),F&&(T.shadowUniformsInitialized?ee.setShadowUniformValues(z,F.getShadowUniformValues()):(F.setupShadows(y.toUnwrapped(),ee,"model-tile",y.overscaledZ),T.shadowUniformsInitialized=!0)),oe=he.shouldRenderCutoff||xe<1||pe.alphaMode!=="OPAQUE"?bi.alphaBlended:bi.unblended}c.uploadCommonUniforms(z,ee,y.toUnwrapped(),null,he);const _e=Z.material.doubleSided?ti.disabled:ti.backCCW;if(h.instancedDataArray.length>20)te.push(h.instancedDataBuffer),ee.draw(c,z.gl.TRIANGLES,N,ci.disabled,oe,_e,se,t.id,Z.vertexBuffer,Z.indexBuffer,Z.segments,t.paint,c.transform.zoom,void 0,te,h.instancedDataArray.length);else{const pe=R?"u_instance":"u_normal_matrix";for(let Me=0;Me<h.instancedDataArray.length;++Me)se[pe]=new Float32Array(h.instancedDataArray.arrayBuffer,64*Me,16),ee.draw(c,z.gl.TRIANGLES,N,ci.disabled,oe,_e,se,t.id,Z.vertexBuffer,Z.indexBuffer,Z.segments,t.paint,c.transform.zoom,void 0,te)}}if(s.children)for(const Z of s.children)Sa(c,t,Z,h,_,y,T)}const tl=[1,-1,1];function Tu(c,t,s,h){if(!s.modelManager)return!0;const _=s.modelManager;if(!s.shadowRenderer)return!0;const y=s.shadowRenderer,T=t.aabb;let z=!0,R=c.maxHeight;if(R===0){let N=0;for(const G in c.instancesPerModel){const Z=_.getModel(G,h);Z?N=Math.max(N,Math.max(Math.max(Z.aabb.max[0],Z.aabb.max[1]),Z.aabb.max[2])):z=!1}R=c.maxScale*N*1.41+c.maxVerticalOffset,z&&(c.maxHeight=R)}T.max[2]=R,T.min[2]+=c.terrainElevationMin,T.max[2]+=c.terrainElevationMax,i.ab.vec3.transformMat4(T.min,T.min,t.tileMatrix),i.ab.vec3.transformMat4(T.max,T.max,t.tileMatrix);const F=T.intersects(y.getCurrentCascadeFrustum());return s.currentShadowCascade===0&&(c.isInsideFirstShadowMapFrustum=F===2),F===0}function Mu(c,t){const s=c.uniformValues.u_cutoff_params[0],h=c.uniformValues.u_cutoff_params[1],_=c.uniformValues.u_cutoff_params[2],y=c.uniformValues.u_cutoff_params[3];return h===s||y===_?1:i.aw(((t-s)/(h-s)-_)/(y-_),0,1)}function tf(c,t,s,h){if(t.pitch<20)return 1;const _=t.getWorldToCameraMatrix();i.ab.mat4.multiply(_,_,c);const y=i.ab.vec4.fromValues(s.min[0],s.min[1],s.min[2],1);let T=i.ab.vec4.transformMat4(i.ab.vec4.create(),y,_),z=T,R=T;y[1]=s.max[1],T=i.ab.vec4.transformMat4(i.ab.vec4.create(),y,_),z=T[1]<z[1]?T:z,R=T[1]>R[1]?T:R,y[0]=s.max[0],T=i.ab.vec4.transformMat4(i.ab.vec4.create(),y,_),z=T[1]<z[1]?T:z,R=T[1]>R[1]?T:R,y[1]=s.min[1],T=i.ab.vec4.transformMat4(i.ab.vec4.create(),y,_),z=T[1]<z[1]?T:z,R=T[1]>R[1]?T:R;const F=i.aw(h[0],0,1),N=100*t.pixelsPerMeter*i.aw(h[1],0,1),G=i.aw(h[2],0,1),Z=i.ab.vec4.lerp(i.ab.vec4.create(),z,R,F),W=Math.tan(.5*t.fovX),te=-Z[2]*W;if(N===0)return Z[1]<-Math.abs(te)?G:1;const ee=(-Math.abs(te)-Z[1])/N,se=(he,_e,pe)=>(1-pe)*he+pe*_e,oe=i.aw(se(1,G,ee),G,1);return se(1,oe,i.aw((t.pitch-20)/20,0,1))}class nf{}class sf{constructor(){this._storage=new Map}getLinesFromTrianglesBuffer(t,s,h){{const G=this._storage.get(s.id);if(G)return G.lastUsedFrameIdx=t,G.buf}const _=h.gl,y=_.getBufferParameter(_.ELEMENT_ARRAY_BUFFER,_.BUFFER_SIZE),T=new ArrayBuffer(y),z=new Int16Array(T);_.getBufferSubData(_.ELEMENT_ARRAY_BUFFER,0,new Int16Array(T));const R=new i.dq;for(let G=0;G<y/2;G+=3){const Z=z[G],W=z[G+1],te=z[G+2];R.emplaceBack(Z,W),R.emplaceBack(W,te),R.emplaceBack(te,Z)}const F=h.bindVertexArrayOES.current,N=new nf;return N.buf=new na(h,R),N.lastUsedFrameIdx=t,this._storage.set(s.id,N),h.bindVertexArrayOES.set(F),N.buf}update(t){for(const[s,h]of this._storage)t-h.lastUsedFrameIdx>30&&(h.buf.destroy(),this._storage.delete(s))}destroy(){for(const[t,s]of this._storage)s.buf.destroy(),this._storage.delete(t)}}class il{constructor(t){this.occluderSize=30,this.depthOffset=-1e-4,t.registerParameter(this,["Occlusion"],"occluderSize",{min:1,max:100,step:1}),t.registerParameter(this,["Occlusion"],"depthOffset",{min:-.05,max:0,step:1e-5})}}const rf=i.da([{type:"Float32",name:"a_pos_3f",components:3},{type:"Float32",name:"a_uv",components:2},{type:"Float32",name:"a_rainParticleData",components:4}]);class Su{registerParameter(){}registerButton(){}registerBinding(){}refreshUI(){}}class Eu{constructor(t,s){this.revealStart=11,this.revealRange=2,t.registerParameter(this,[...s,"Reveal"],"revealStart",{min:0,max:17,step:.05}),t.registerParameter(this,[...s,"Reveal"],"revealRange",{min:.1,max:5.1,step:.05})}}const of=i.da([{type:"Float32",name:"a_pos_2f",components:2}]);class qs{destroy(){this.vignetteVx&&this.vignetteVx.destroy(),this.vignetteIdx&&this.vignetteIdx.destroy()}draw(t,s){const h=t.getOrCreateProgram("vignette");if(!this.vignetteVx||!this.vignetteIdx){const T=new i.dr,z=new i.aU;T.emplaceBack(-1,-1),T.emplaceBack(1,-1),T.emplaceBack(1,1),T.emplaceBack(-1,1),z.emplaceBack(0,1,2),z.emplaceBack(0,2,3),this.vignetteVx=t.context.createVertexBuffer(T,of.members),this.vignetteIdx=t.context.createIndexBuffer(z)}const _=i.b7.simpleSegment(0,0,4,6);if(this.vignetteVx&&this.vignetteIdx){t.uploadCommonUniforms(t.context,h);const T={u_vignetteShape:(y={vignetteShape:[s.start,s.range,Math.pow(10,s.fadePower)],vignetteColor:[s.color.r,s.color.g,s.color.b,s.color.a*s.strength]}).vignetteShape,u_vignetteColor:y.vignetteColor};h.draw(t,t.context.gl.TRIANGLES,Wt.disabled,ci.disabled,bi.alphaBlended,ti.disabled,T,"vignette",this.vignetteVx,this.vignetteIdx,_,{})}var y}}class af{constructor(){this._accumulatedOffsetX=0,this._accumulatedOffsetY=0,this._accumulatedElevation=0}update(t,s){const h=t.getFreeCameraOptions().position,_=h.toAltitude(),y=h.toLngLat(),T=i.ai(y.lng),z=i.ai(y.lat),R=t.pixelsPerMeter/s,F=T*i.ds,N=i.ds*Math.log(Math.tan(Math.PI/4+z/2));if(this._offsetXPrev===void 0)this._offsetXPrev=0,this._offsetYPrev=0,this._elevationPrev=0,this._accumulatedOffsetX=0,this._accumulatedOffsetY=0,this._accumulatedElevation=0;else{const G=-this._offsetYPrev+N,Z=-this._elevationPrev+_;this._accumulatedOffsetX+=(-this._offsetXPrev+F)*R,this._accumulatedOffsetY+=G*R,this._accumulatedElevation+=Z*R,this._offsetXPrev=F,this._offsetYPrev=N,this._elevationPrev=_}}getPosition(){return[this._accumulatedOffsetX,this._accumulatedOffsetY,this._accumulatedElevation]}}function Pu(c,t){return[-(c[0]-Math.floor(c[0]/t)*t),-(c[1]-Math.floor(c[1]/t)*t),-(c[2]-Math.floor(c[2]/t)*t)]}function wc(c){const t=i.di(1323123451230),s=[];for(let h=0;h<c;++h){const _=2*t()-1,y=2*t()-1,T=2*t()-1;s.push(i.ab.vec3.fromValues(_,y,T))}return s}function Br(c,t,s,h,_){const y=i.aw((_-s)/(h-s),0,1);return(1-y)*c+y*t}class Au{constructor(t){this._movement=new af,this._accumulatedTimeFromStart=0,this._prevTime=Date.now()/1e3,this._vignette=new qs,this._ppmScaleFactor=t}destroy(){this.particlesVx&&this.particlesVx.destroy(),this.particlesIdx&&this.particlesIdx.destroy(),this._vignette&&this._vignette.destroy()}updateOnRender(t,s){const h=t.transform;this._movement.update(h,this._ppmScaleFactor);const _=h.starsProjMatrix,y=i.ab.quat.identity([]);i.ab.quat.rotateX(y,y,i.ai(90)-h._pitch),i.ab.quat.rotateZ(y,y,-h.angle);const T=i.ab.mat4.fromQuat(new Float32Array(16),y),z=i.ab.mat4.fromValues(1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1),R=i.ab.mat4.transpose([],z),F=i.ab.mat4.multiply([],R,T),N=Date.now()/1e3;return this._accumulatedTimeFromStart+=(N-this._prevTime)*s,this._prevTime=N,{projectionMatrix:_,modelviewMatrix:F}}}class lf extends Au{constructor(t){super(4.25),this._params={overrideStyleParameters:!1,intensity:.5,timeFactor:1,velocityConeAperture:0,velocity:300,boxSize:2500,dropletSizeX:1,dropletSizeYScale:10,distortionStrength:70,screenThinning:{intensity:.57,start:.46,range:1.17,fadePower:.17,affectedRatio:1,particleOffset:-.2},color:{r:.66,g:.68,b:.74,a:.7},direction:{x:-50,y:-35},shapeDirPower:2,shapeNormalPower:1},this._revealParams=new Eu(t.tp,["Precipitation","Rain"]),this._vignetteParams={strength:1,start:.7,range:1,fadePower:.4,color:{r:.27,g:.27,b:.27,a:1}},this.particlesCount=16e3}update(t){const s=t.context;if(!this.particlesVx){const h=wc(this.particlesCount),_=new i.dt,y=new i.aU;let T=0;const z=i.di(1323123451230);for(let R=0;R<h.length;++R){const F=h[R],N=[2*z()-1,z(),z(),z()];_.emplaceBack(F[0],F[1],F[2],-1,-1,...N),_.emplaceBack(F[0],F[1],F[2],1,-1,...N),_.emplaceBack(F[0],F[1],F[2],1,1,...N),_.emplaceBack(F[0],F[1],F[2],-1,1,...N),y.emplaceBack(T+0,T+1,T+2),y.emplaceBack(T+0,T+2,T+3),T+=4}this.particlesVx=s.createVertexBuffer(_,rf.members),this.particlesIdx=s.createIndexBuffer(y)}}draw(t){if(!this._params.overrideStyleParameters&&!t.style.rain)return;const s=this._params.overrideStyleParameters?this._revealParams:{revealStart:0,revealRange:.01},h=t.transform.zoom;if(s.revealStart>h)return;const _=Br(0,1,s.revealStart,s.revealStart+s.revealRange,h);if(!this.particlesVx||!this.particlesIdx)return;const y=structuredClone(this._params);let T=[-y.direction.x,y.direction.y,-100];i.ab.vec3.normalize(T,T);const z=structuredClone(this._vignetteParams);z.strength*=_,y.overrideStyleParameters||(y.intensity=t.style.rain.state.density,y.timeFactor=t.style.rain.state.intensity,y.color=structuredClone(t.style.rain.state.color),T=structuredClone(t.style.rain.state.direction),y.screenThinning.intensity=t.style.rain.state.centerThinning,y.dropletSizeX=t.style.rain.state.dropletSize[0],y.dropletSizeYScale=t.style.rain.state.dropletSize[1]/t.style.rain.state.dropletSize[0],y.distortionStrength=100*t.style.rain.state.distortionStrength,z.strength=1,z.color=structuredClone(t.style.rain.state.vignetteColor));const R=this.updateOnRender(t,y.timeFactor),F=t.context,N=F.gl,G=t.transform;this.screenTexture&&this.screenTexture.size[0]===t.width&&this.screenTexture.size[1]===t.height||(this.screenTexture=new i.T(F,{width:t.width,height:t.height,data:null},N.RGBA8)),y.distortionStrength>0&&(F.activeTexture.set(N.TEXTURE0),this.screenTexture.bind(N.LINEAR,N.CLAMP_TO_EDGE),N.copyTexSubImage2D(N.TEXTURE_2D,0,0,0,0,0,t.width,t.height));const Z=t.getOrCreateProgram("rainParticle");t.uploadCommonUniforms(F,Z),F.activeTexture.set(N.TEXTURE0),this.screenTexture.bind(N.LINEAR,N.CLAMP_TO_EDGE);const W=[y.color.r,y.color.g,y.color.b,y.color.a],te=(ee,se)=>{const oe=Pu(this._movement.getPosition(),ee),he=y.dropletSizeX,_e=y.dropletSizeX*y.dropletSizeYScale,pe=t.width/2,Me=t.height/2,xe=Br(0,y.screenThinning.start,0,1,y.screenThinning.intensity),we=Br(.001,y.screenThinning.range,0,1,y.screenThinning.intensity),ve=Br(0,y.screenThinning.particleOffset,0,1,y.screenThinning.intensity),Ae=(Oe={modelview:R.modelviewMatrix,projection:R.projectionMatrix,time:this._accumulatedTimeFromStart,camPos:oe,velocityConeAperture:y.velocityConeAperture,velocity:y.velocity,boxSize:ee,rainDropletSize:[he,_e],distortionStrength:y.distortionStrength,rainDirection:T,color:W,screenSize:[G.width,G.height],thinningCenterPos:[pe,Me],thinningShape:[xe,we,Math.pow(10,y.screenThinning.fadePower)],thinningAffectedRatio:y.screenThinning.affectedRatio,thinningParticleOffset:ve,shapeDirectionalPower:y.shapeDirPower,shapeNormalPower:y.shapeNormalPower,mode:se?0:1},{u_modelview:Float32Array.from(Oe.modelview),u_projection:Float32Array.from(Oe.projection),u_time:Oe.time,u_cam_pos:Oe.camPos,u_texScreen:0,u_velocityConeAperture:Oe.velocityConeAperture,u_velocity:Oe.velocity,u_boxSize:Oe.boxSize,u_rainDropletSize:Oe.rainDropletSize,u_distortionStrength:Oe.distortionStrength,u_rainDirection:Oe.rainDirection,u_color:Oe.color,u_screenSize:Oe.screenSize,u_thinningCenterPos:Oe.thinningCenterPos,u_thinningShape:Oe.thinningShape,u_thinningAffectedRatio:Oe.thinningAffectedRatio,u_thinningParticleOffset:Oe.thinningParticleOffset,u_shapeDirectionalPower:Oe.shapeDirectionalPower,u_shapeNormalPower:Oe.shapeNormalPower,u_mode:Oe.mode});var Oe;const Xe=Math.round(_*y.intensity*this.particlesCount),He=i.b7.simpleSegment(0,0,4*Xe,2*Xe);Z.draw(t,N.TRIANGLES,Wt.disabled,ci.disabled,bi.alphaBlended,ti.disabled,Ae,"rain_particles",this.particlesVx,this.particlesIdx,He,{})};y.distortionStrength>0&&te(y.boxSize,!0),te(y.boxSize,!1),this._vignette.draw(t,z)}}const cf=i.da([{type:"Float32",name:"a_pos_3f",components:3},{type:"Float32",name:"a_uv",components:2},{type:"Float32",name:"a_snowParticleData",components:4},{type:"Float32",name:"a_snowParticleDataHorizontalOscillation",components:2}]);class Bl extends Au{constructor(t){super(2.25),this._params={overrideStyleParameters:!1,intensity:.85,timeFactor:.75,velocityConeAperture:70,velocity:40,horizontalOscillationRadius:4,horizontalOscillationRate:1.5,boxSize:2e3,billboardSize:2,shapeFadeStart:.27,shapeFadePower:.21,screenThinning:{intensity:.4,start:.15,range:1.4,fadePower:.24,affectedRatio:1,particleOffset:-.2},color:{r:1,g:1,b:1,a:1},direction:{x:-50,y:-35}},this._revealParams=new Eu(t.tp,["Precipitation","Snow"]),this._vignetteParams={strength:.3,start:.78,range:.46,fadePower:.2,color:{r:1,g:1,b:1,a:1}},this.particlesCount=16e3}update(t){const s=t.context;if(!this.particlesVx){const h=wc(this.particlesCount),_=new i.du,y=new i.aU;let T=0;const z=i.di(1323123451230);for(let R=0;R<h.length;++R){const F=h[R],N=z(),G=z(),Z=z(),W=[R/h.length,N,G,Z],te=[z(),z()];_.emplaceBack(F[0],F[1],F[2],-1,-1,...W,...te),_.emplaceBack(F[0],F[1],F[2],1,-1,...W,...te),_.emplaceBack(F[0],F[1],F[2],1,1,...W,...te),_.emplaceBack(F[0],F[1],F[2],-1,1,...W,...te),y.emplaceBack(T+0,T+1,T+2),y.emplaceBack(T+0,T+2,T+3),T+=4}this.particlesVx=s.createVertexBuffer(_,cf.members),this.particlesIdx=s.createIndexBuffer(y)}}draw(t){if(!this._params.overrideStyleParameters&&!t.style.snow)return;const s=structuredClone(this._params);let h=[-s.direction.x,s.direction.y,-100];i.ab.vec3.normalize(h,h);const _=structuredClone(this._vignetteParams),y=s.overrideStyleParameters?this._revealParams:{revealStart:0,revealRange:.01},T=t.transform.zoom;if(y.revealStart>T)return;const z=Br(0,1,y.revealStart,y.revealStart+y.revealRange,T);_.strength*=z,s.overrideStyleParameters||(s.intensity=t.style.snow.state.density,s.timeFactor=t.style.snow.state.intensity,s.color=structuredClone(t.style.snow.state.color),h=structuredClone(t.style.snow.state.direction),s.screenThinning.intensity=t.style.snow.state.centerThinning,s.billboardSize=2.79*t.style.snow.state.flakeSize,_.strength=1,_.color=structuredClone(t.style.snow.state.vignetteColor));const R=this.updateOnRender(t,s.timeFactor);if(!this.particlesVx||!this.particlesIdx)return;const F=t.context,N=F.gl,G=t.transform,Z=t.getOrCreateProgram("snowParticle");t.uploadCommonUniforms(F,Z),((W,te,ee)=>{const se=Pu(this._movement.getPosition(),W),oe=G.width/2,he=G.height/2,_e=Br(0,ee.screenThinning.start,0,1,ee.screenThinning.intensity),pe=Br(.001,ee.screenThinning.range,0,1,ee.screenThinning.intensity),Me=Br(0,ee.screenThinning.particleOffset,0,1,ee.screenThinning.intensity),xe=(we={modelview:R.modelviewMatrix,projection:R.projectionMatrix,time:this._accumulatedTimeFromStart,camPos:se,velocityConeAperture:ee.velocityConeAperture,velocity:ee.velocity,horizontalOscillationRadius:ee.horizontalOscillationRadius,horizontalOscillationRate:ee.horizontalOscillationRate,boxSize:W,billboardSize:1*ee.billboardSize,simpleShapeParameters:[ee.shapeFadeStart,ee.shapeFadePower],screenSize:[G.width,G.height],thinningCenterPos:[oe,he],thinningShape:[_e,pe,Math.pow(10,ee.screenThinning.fadePower)],thinningAffectedRatio:ee.screenThinning.affectedRatio,thinningParticleOffset:Me,color:[ee.color.r,ee.color.g,ee.color.b,ee.color.a],direction:h},{u_modelview:Float32Array.from(we.modelview),u_projection:Float32Array.from(we.projection),u_time:we.time,u_cam_pos:we.camPos,u_velocityConeAperture:we.velocityConeAperture,u_velocity:we.velocity,u_horizontalOscillationRadius:we.horizontalOscillationRadius,u_horizontalOscillationRate:we.horizontalOscillationRate,u_boxSize:we.boxSize,u_billboardSize:we.billboardSize,u_simpleShapeParameters:we.simpleShapeParameters,u_screenSize:we.screenSize,u_thinningCenterPos:we.thinningCenterPos,u_thinningShape:we.thinningShape,u_thinningAffectedRatio:we.thinningAffectedRatio,u_thinningParticleOffset:we.thinningParticleOffset,u_particleColor:we.color,u_direction:we.direction});var we;const ve=Math.round(z*ee.intensity*this.particlesCount),Ae=i.b7.simpleSegment(0,0,4*ve,2*ve);this.particlesVx&&this.particlesIdx&&Z.draw(t,N.TRIANGLES,Wt.disabled,ci.disabled,bi.alphaBlended,ti.disabled,xe,"snow_particles",this.particlesVx,this.particlesIdx,Ae,{})})(s.boxSize,0,s),this._vignette.draw(t,_)}}const bh={symbol:function(c,t,s,h,_){if(c.renderPass!=="translucent")return;const y=ci.disabled,T=c.colorModeForRenderPass(),z=s.layout.get("text-variable-anchor"),R=s.layout.get("text-size-scale-range"),F=i.aw(c.scaleFactor,R[0],R[1]);z&&function(Z,W,te,ee,se,oe,he,_e){const pe=W.transform,Me=se==="map",xe=oe==="map";for(const we of Z){const ve=ee.getTile(we),Ae=ve.getBucket(te);if(!Ae||!Ae.text||!Ae.text.segments.get().length)continue;const Oe=i.bp(Ae.textSizeData,pe.zoom,_e),Xe=xa(we,Ae.getProjection(),pe),He=pe.calculatePixelsToTileUnitsMatrix(ve),ke=Qs(Xe,ve.tileID.canonical,xe,Me,pe,Ae.getProjection(),He),Ne=Ae.hasIconTextFit()&&Ae.hasIconData();if(Oe){const st=Math.pow(2,pe.zoom-ve.tileID.overscaledZ);fo(Ae,Me,xe,he,i.cX,pe,ke,we,st,Oe,Ne)}}}(h,c,s,t,s.layout.get("text-rotation-alignment"),s.layout.get("text-pitch-alignment"),_,F);const N=s.paint.get("icon-opacity").constantOr(1)!==0,G=s.paint.get("text-opacity").constantOr(1)!==0;s.layout.get("symbol-sort-key").constantOr(1)!==void 0&&(N||G)?Tn(c,t,s,h,y,T):(N&&Tn(c,t,s,h,y,T,{onlyIcons:!0}),G&&Tn(c,t,s,h,y,T,{onlyText:!0})),t.map.showCollisionBoxes&&(_u(c,t,s,h,s.paint.get("text-translate"),s.paint.get("text-translate-anchor"),!0),_u(c,t,s,h,s.paint.get("icon-translate"),s.paint.get("icon-translate-anchor"),!1))},circle:function(c,t,s,h){if(c.renderPass!=="translucent")return;const _=s.paint.get("circle-opacity"),y=s.paint.get("circle-stroke-width"),T=s.paint.get("circle-stroke-opacity"),z=s.layout.get("circle-sort-key").constantOr(1)!==void 0,R=s.paint.get("circle-emissive-strength");if(_.constantOr(1)===0&&(y.constantOr(1)===0||T.constantOr(1)===0))return;const F=c.context,N=F.gl,G=c.transform,Z=c.depthModeForSublayer(0,Wt.ReadOnly),W=ci.disabled,te=c.colorModeForDrapableLayerRenderPass(R),ee=G.projection.name==="globe",se=[i.at(G.center.lng),i.aA(G.center.lat)],oe=[];for(let _e=0;_e<h.length;_e++){const pe=h[_e],Me=t.getTile(pe),xe=Me.getBucket(s);if(!xe||xe.projection.name!==G.projection.name)continue;const we=xe.programConfigurations.get(s.id),ve=i.cY(s),Ae=c.isTileAffectedByFog(pe);ee&&ve.push("PROJECTION_GLOBE_VIEW"),ve.push("DEPTH_D24"),c.terrain&&G.depthOcclusionForSymbolsAndCircles&&ve.push("DEPTH_OCCLUSION");const Oe=c.getOrCreateProgram("circle",{config:we,defines:ve,overrideFog:Ae}),Xe=xe.layoutVertexBuffer,He=xe.globeExtVertexBuffer,ke=xe.indexBuffer,Ne=G.projection.createInversionMatrix(G,pe.canonical),st={programConfiguration:we,program:Oe,layoutVertexBuffer:Xe,globeExtVertexBuffer:He,indexBuffer:ke,uniformValues:i.cZ(c,pe,Me,Ne,se,s),tile:Me};if(z){const ut=xe.segments.get();for(const xt of ut)oe.push({segments:new i.b7([xt]),sortKey:xt.sortKey,state:st})}else oe.push({segments:xe.segments,sortKey:0,state:st})}z&&oe.sort((_e,pe)=>_e.sortKey-pe.sortKey);const he={useDepthForOcclusion:G.depthOcclusionForSymbolsAndCircles};for(const _e of oe){const{programConfiguration:pe,program:Me,layoutVertexBuffer:xe,globeExtVertexBuffer:we,indexBuffer:ve,uniformValues:Ae,tile:Oe}=_e.state,Xe=_e.segments;c.terrain&&c.terrain.setupElevationDraw(Oe,Me,he),c.uploadCommonUniforms(F,Me,Oe.tileID.toUnwrapped()),Me.draw(c,N.TRIANGLES,Z,W,te,ti.disabled,Ae,s.id,xe,ve,Xe,s.paint,G.zoom,pe,[we])}},heatmap:function(c,t,s,h){if(s.paint.get("heatmap-opacity")!==0)if(c.renderPass==="offscreen"){const _=c.context,y=_.gl,T=ci.disabled,z=new bi([y.ONE,y.ONE,y.ONE,y.ONE],i.aj.transparent,[!0,!0,!0,!0]);(function(W,te,ee,se){const oe=W.gl,he=te.width*se,_e=te.height*se;W.activeTexture.set(oe.TEXTURE1),W.viewport.set([0,0,he,_e]);let pe=ee.heatmapFbo;if(!pe||pe&&(pe.width!==he||pe.height!==_e)){pe&&pe.destroy();const Me=oe.createTexture();oe.bindTexture(oe.TEXTURE_2D,Me),oe.texParameteri(oe.TEXTURE_2D,oe.TEXTURE_WRAP_S,oe.CLAMP_TO_EDGE),oe.texParameteri(oe.TEXTURE_2D,oe.TEXTURE_WRAP_T,oe.CLAMP_TO_EDGE),oe.texParameteri(oe.TEXTURE_2D,oe.TEXTURE_MIN_FILTER,oe.LINEAR),oe.texParameteri(oe.TEXTURE_2D,oe.TEXTURE_MAG_FILTER,oe.LINEAR),pe=ee.heatmapFbo=W.createFramebuffer(he,_e,!0,null),function(xe,we,ve,Ae,Oe,Xe){const He=xe.gl;He.texImage2D(He.TEXTURE_2D,0,xe.extRenderToTextureHalfFloat?He.RGBA16F:He.RGBA,Oe,Xe,0,He.RGBA,xe.extRenderToTextureHalfFloat?He.HALF_FLOAT:He.UNSIGNED_BYTE,null),Ae.colorAttachment.set(ve)}(W,0,Me,pe,he,_e)}else oe.bindTexture(oe.TEXTURE_2D,pe.colorAttachment.get()),W.bindFramebuffer.set(pe.framebuffer)})(_,c,s,c.transform.projection.name==="globe"?.5:.25),_.clear({color:i.aj.transparent});const R=c.transform,F=R.projection.name==="globe",N=F?["PROJECTION_GLOBE_VIEW"]:[],G=F?ti.frontCCW:ti.disabled,Z=[i.at(R.center.lng),i.aA(R.center.lat)];for(let W=0;W<h.length;W++){const te=h[W];if(t.hasRenderableParent(te))continue;const ee=t.getTile(te),se=ee.getBucket(s);if(!se||se.projection.name!==R.projection.name)continue;const oe=c.isTileAffectedByFog(te),he=se.programConfigurations.get(s.id),_e=c.getOrCreateProgram("heatmap",{config:he,defines:N,overrideFog:oe}),{zoom:pe}=c.transform;c.terrain&&c.terrain.setupElevationDraw(ee,_e),c.uploadCommonUniforms(_,_e,te.toUnwrapped());const Me=R.projection.createInversionMatrix(R,te.canonical);_e.draw(c,y.TRIANGLES,Wt.disabled,T,z,G,_c(c,te,ee,Me,Z,pe,s.paint.get("heatmap-intensity")),s.id,se.layoutVertexBuffer,se.indexBuffer,se.segments,s.paint,c.transform.zoom,he,F?[se.globeExtVertexBuffer]:null)}_.viewport.set([0,0,c.width,c.height])}else c.renderPass==="translucent"&&(c.context.setColorMode(c.colorModeForRenderPass()),function(_,y){const T=_.context,z=T.gl,R=y.heatmapFbo;if(!R)return;T.activeTexture.set(z.TEXTURE0),z.bindTexture(z.TEXTURE_2D,R.colorAttachment.get()),T.activeTexture.set(z.TEXTURE1);let F=y.colorRampTexture;F||(F=y.colorRampTexture=new i.T(T,y.colorRamp,z.RGBA8)),F.bind(z.LINEAR,z.CLAMP_TO_EDGE),_.getOrCreateProgram("heatmapTexture").draw(_,z.TRIANGLES,Wt.disabled,ci.disabled,_.colorModeForRenderPass(),ti.disabled,((N,G,Z,W)=>({u_image:0,u_color_ramp:1,u_opacity:G.paint.get("heatmap-opacity")}))(0,y),y.id,_.viewportBuffer,_.quadTriangleIndexBuffer,_.viewportSegments,y.paint,_.transform.zoom)}(c,s))},line:function(c,t,s,h){if(c.renderPass!=="translucent")return;const _=s.paint.get("line-opacity"),y=s.paint.get("line-width");if(_.constantOr(1)===0||y.constantOr(1)===0)return;const T=s.paint.get("line-emissive-strength"),z=s.paint.get("line-occlusion-opacity"),R=s.layout.get("line-elevation-reference"),F=s.layout.get("line-width-unit")==="meters",N=R==="sea",G=c.context,Z=G.gl,W=!s.isDraped();if(W&&c.transform.projection.name==="globe")return;const te=s.layout.get("line-cross-slope"),ee=te!==void 0,se=te<1,oe=W?new Wt(c.depthOcclusion?Z.GREATER:Z.LEQUAL,Wt.ReadOnly,c.depthRangeFor3D):c.depthModeForSublayer(0,Wt.ReadOnly),he=c.colorModeForDrapableLayerRenderPass(T),_e=c.terrain&&c.terrain.renderingToTexture,pe=_e?1:i.q.devicePixelRatio,Me=s.paint.get("line-dasharray"),xe=Me.constantOr(1),we=s.layout.get("line-cap"),ve=Me.constantOr(null),Ae=we.constantOr(null),Oe=s.paint.get("line-pattern"),Xe=Oe.constantOr(1),He=Oe.constantOr(null),ke=s.paint.get("line-opacity").constantOr(1);let Ne=!Xe&&ke!==1||c.depthOcclusion&&z>0&&z<1;const st=s.paint.get("line-gradient"),ut=Xe?"linePattern":"line",xt=i.c_(s);let Ge;if(_e&&c.terrain&&c.terrain.clipOrMaskOverlapStencilType()&&(Ne=!1),z!==0&&c.depthOcclusion){const Je=s.paint._values["line-opacity"];Je&&Je.value&&Je.value.kind==="constant"?Ge=Je.value:i.w(`Occlusion opacity for layer ${s.id} is supported only when line-opacity isn't data-driven.`)}if(W&&(c.forceTerrainMode=!0),!W&&z!==0&&c.terrain&&!_e)return void i.w(`Occlusion opacity for layer ${s.id} is supported on terrain only if the layer has line-z-offset enabled.`);const lt=Ne&&W?c.stencilModeFor3D():ci.disabled;W&&(xt.push("ELEVATED"),ee&&xt.push(se?"CROSS_SLOPE_HORIZONTAL":"CROSS_SLOPE_VERTICAL"),N&&xt.push("ELEVATION_REFERENCE_SEA")),y.value.kind!=="constant"&&y.value.isLineProgressConstant===!1&&xt.push("VARIABLE_LINE_WIDTH");for(const Je of h){const _t=t.getTile(Je);if(Xe&&!_t.patternsLoaded())continue;const ct=_t.getBucket(s);if(!ct)continue;c.prepareDrawTile();const nt=ct.programConfigurations.get(s.id),Lt=c.isTileAffectedByFog(Je),bt=c.getOrCreateProgram(ut,{config:nt,defines:xt,overrideFog:Lt,overrideRtt:!W&&void 0});if(He&&_t.imageAtlas){const wi=i.A.from(He),mn=_t.imageAtlas.patternPositions[wi.getSerializedPrimary()];mn&&nt.setConstantPatternPositions(mn)}if(!Xe&&ve&&Ae&&_t.lineAtlas){const wi=_t.lineAtlas.getDash(ve,Ae);wi&&nt.setConstantPatternPositions(wi)}let[zt,Bt]=s.paint.get("line-trim-offset");(Ae==="round"||Ae==="square")&&zt!==Bt&&(zt===0&&(zt-=1),Bt===1&&(Bt+=1));const oi=_e?Je.projMatrix:null,$t=F?1/ct.tileToMeter/i.ar(_t,1,c.transform.zoom):1,Xt=F?1/ct.tileToMeter/i.ar(_t,1,Math.floor(c.transform.zoom)):1,ai=Xe?i.c$(c,_t,s,oi,pe,$t,Xt,[zt,Bt]):i.d0(c,_t,s,oi,ct.lineClipsArray.length,pe,$t,Xt,[zt,Bt]);if(st){const wi=ct.gradients[s.id];let mn=wi.texture;if(s.gradientVersion!==wi.version){let Mn=256;if(s.stepInterpolant){const Xi=t.getSource().maxzoom,sn=Je.canonical.z===Xi?Math.ceil(1<<c.transform.maxZoom-Je.canonical.z):1;Mn=i.aw(i.d1(ct.maxLineLength/i.ag*1024*sn),256,G.maxTextureSize)}wi.gradient=i.d2({expression:s.gradientExpression(),evaluationKey:"lineProgress",resolution:Mn,image:wi.gradient||void 0,clips:ct.lineClipsArray}),wi.texture?wi.texture.update(wi.gradient):wi.texture=new i.T(G,wi.gradient,Z.RGBA8),wi.version=s.gradientVersion,mn=wi.texture}G.activeTexture.set(Z.TEXTURE1),mn.bind(s.stepInterpolant?Z.NEAREST:Z.LINEAR,Z.CLAMP_TO_EDGE)}xe&&(G.activeTexture.set(Z.TEXTURE0),_t.lineAtlasTexture&&_t.lineAtlasTexture.bind(Z.LINEAR,Z.REPEAT),nt.updatePaintBuffers()),Xe&&(G.activeTexture.set(Z.TEXTURE0),_t.imageAtlasTexture&&_t.imageAtlasTexture.bind(Z.LINEAR,Z.CLAMP_TO_EDGE),nt.updatePaintBuffers()),W&&!N&&c.terrain.setupElevationDraw(_t,bt),c.uploadCommonUniforms(G,bt,Je.toUnwrapped());const zi=wi=>{Ge!=null&&(Ge.value=ke*z),bt.draw(c,Z.TRIANGLES,oe,wi,he,ti.disabled,ai,s.id,ct.layoutVertexBuffer,ct.indexBuffer,ct.segments,s.paint,c.transform.zoom,nt,[ct.layoutVertexBuffer2,ct.patternVertexBuffer,ct.zOffsetVertexBuffer]),Ge!=null&&(Ge.value=ke)};if(Ne&&!W){const wi=c.stencilModeForClipping(Je).ref;wi===0&&_e&&G.clear({stencil:0});const mn={func:Z.EQUAL,mask:255};ai.u_alpha_discard_threshold=.8,zi(new ci(mn,wi,255,Z.KEEP,Z.KEEP,Z.INVERT)),ai.u_alpha_discard_threshold=0,zi(new ci(mn,wi,255,Z.KEEP,Z.KEEP,Z.KEEP))}else Ne&&W&&(ai.u_alpha_discard_threshold=.001),zi(W?lt:c.stencilModeForClipping(Je))}W&&(c.forceTerrainMode=!1),Ne&&(c.resetStencilClippingMasks(),_e&&G.clear({stencil:0})),z===0||c.depthOcclusion||_e||c.layersWithOcclusionOpacity.push(c.currentLayer)},fill:function(c,t,s,h){const _=s.paint.get("fill-color"),y=s.paint.get("fill-opacity"),T=s.is3D(),z=new Wt(c.context.gl.LEQUAL,Wt.ReadWrite,c.depthRangeFor3D);if(y.constantOr(1)===0)return;const R=s.paint.get("fill-emissive-strength"),F=c.colorModeForDrapableLayerRenderPass(R),N=s.paint.get("fill-pattern"),G=c.opaquePassEnabledForLayer()&&!N.constantOr(1)&&_.constantOr(i.aj.transparent).a===1&&y.constantOr(0)===1?"opaque":"translucent";if(c.renderPass===G){const Z=T?z:c.depthModeForSublayer(1,c.renderPass==="opaque"?Wt.ReadWrite:Wt.ReadOnly);yu(c,t,s,h,Z,F,!1)}if(!T&&c.renderPass==="translucent"&&s.paint.get("fill-antialias")){const Z=T?z:c.depthModeForSublayer(s.getPaintProperty("fill-outline-color")?2:0,Wt.ReadOnly);yu(c,t,s,h,Z,F,!0)}},"fill-extrusion":function(c,t,s,h){const _=s.paint.get("fill-extrusion-opacity"),y=c.context,T=y.gl,z=c.terrain,R=z&&z.renderingToTexture;if(_===0)return;const F=c.conflationActive&&c.style.isLayerClipped(s,t.getSource()),N=c.style.order.indexOf(s.fqid);if(F&&function(G,Z,W,te,ee){for(const se of te){const oe=Z.getTile(se).getBucket(W);oe&&(oe.updateReplacement(se,G.replacementSource,ee),oe.uploadCentroid(G.context))}}(c,t,s,h,N),z||F)for(const G of h){const Z=t.getTile(G).getBucket(s);Z&&Hp(c.context,t,G,Z,s,z,F)}if(c.renderPass==="shadow"&&c.shadowRenderer){const G=c.shadowRenderer;if(z&&_<.65&&s._transitionablePaint._values["fill-extrusion-opacity"].value.expression instanceof i.a9)return;const Z=G.getShadowPassDepthMode(),W=G.getShadowPassColorMode();_h(c,t,s,h,Z,ci.disabled,W,F)}else if(c.renderPass==="translucent"){const G=!s.paint.get("fill-extrusion-pattern").constantOr(1),Z=s.paint.get("fill-extrusion-color").constantOr(i.aj.white);if(!R&&Z.a!==0){const W=new Wt(c.context.gl.LEQUAL,Wt.ReadWrite,c.depthRangeFor3D);_===1&&G?_h(c,t,s,h,W,ci.disabled,bi.unblended,F):(_h(c,t,s,h,W,ci.disabled,bi.disabled,F),_h(c,t,s,h,W,c.stencilModeFor3D(),c.colorModeForRenderPass(),F),c.resetStencilClippingMasks())}if(c.style.enable3dLights()&&G&&(!z&&c.transform.projection.name!=="globe"||R)){const W=s.paint.get("fill-extrusion-opacity"),te=s.paint.get("fill-extrusion-ambient-occlusion-intensity"),ee=s.paint.get("fill-extrusion-ambient-occlusion-ground-radius"),se=s.paint.get("fill-extrusion-flood-light-intensity"),oe=s.paint.get("fill-extrusion-flood-light-color-use-theme").constantOr("default")==="none",he=s.paint.get("fill-extrusion-flood-light-color").toRenderColor(oe?null:s.lut).toArray01().slice(0,3),_e=te>0&&ee>0,pe=se>0,Me=(we,ve,Ae)=>(1-Ae)*we+Ae*ve,xe=we=>{const ve=c.depthModeForSublayer(1,Wt.ReadOnly,T.LEQUAL,!0),Ae=s.paint.get(we?"fill-extrusion-ambient-occlusion-ground-attenuation":"fill-extrusion-flood-light-ground-attenuation"),Oe=Me(.1,3,Ae),Xe=c._showOverdrawInspector;if(!Xe){const He=new ci({func:T.ALWAYS,mask:255},255,255,T.KEEP,T.KEEP,T.REPLACE),ke=new bi([T.ONE,T.ONE,T.ONE,T.ONE],i.aj.transparent,[!1,!1,!1,!0],T.MIN);Rl(c,t,s,h,ve,He,ke,ti.disabled,we,"sdf",W,te,ee,se,he,Oe,F,!1)}{const He=Xe?ci.disabled:new ci({func:T.EQUAL,mask:255},255,255,T.KEEP,T.DECR,T.DECR),ke=Xe?c.colorModeForRenderPass():new bi([T.ONE_MINUS_DST_ALPHA,T.DST_ALPHA,T.ONE,T.ONE],i.aj.transparent,[!0,!0,!0,!0]);Rl(c,t,s,h,ve,He,ke,ti.disabled,we,"color",W,te,ee,se,he,Oe,F,!1)}};if(R){const we=(ve,Ae,Oe)=>{const Xe=c.depthModeForSublayer(1,Wt.ReadOnly,T.LEQUAL,!1),He=s.paint.get(ve?"fill-extrusion-ambient-occlusion-ground-attenuation":"fill-extrusion-flood-light-ground-attenuation"),ke=Me(.1,3,He);{const Ne=new bi([T.ONE,T.ONE,T.ONE,T.ONE],i.aj.transparent,[!1,!1,!1,!0]);Rl(c,t,s,h,Xe,ci.disabled,Ne,ti.disabled,ve,"clear",W,te,ee,se,he,ke,F,Ae)}{const Ne=new ci({func:T.ALWAYS,mask:255},255,255,T.KEEP,T.KEEP,T.REPLACE),st=new bi([T.ONE,T.ONE,T.ONE,T.ONE],i.aj.transparent,[!1,!1,!1,!0],T.MIN);Rl(c,t,s,h,Xe,Ne,st,ti.disabled,ve,"sdf",W,te,ee,se,he,ke,F,Ae)}{const Ne=ve?T.ZERO:T.ONE_MINUS_DST_ALPHA,st=new ci({func:T.EQUAL,mask:255},255,255,T.KEEP,T.DECR,T.DECR),ut=new bi([Ne,T.DST_ALPHA,T.ONE_MINUS_DST_ALPHA,T.ZERO],i.aj.transparent,[!0,!0,!0,!0]);Rl(c,t,s,h,Xe,st,ut,ti.disabled,ve,"color",W,te,ee,se,he,ke,F,Ae)}{const Ne=new bi([T.ONE,T.ONE,T.ONE,ve?T.ZERO:T.ONE],i.aj.transparent,[!1,!1,!1,!0],ve?T.FUNC_ADD:T.MAX);Rl(c,t,s,h,Xe,ci.disabled,Ne,ti.disabled,ve,"clear",W,te,ee,se,he,ke,F,Ae,Oe)}};if(_e||pe){let ve;if(c.prepareDrawTile(),z){const Ae=z.drapeBufferSize[0],Oe=z.drapeBufferSize[1];ve=z.framebufferCopyTexture,ve&&(!ve||ve.size[0]===Ae&&ve.size[1]===Oe)||(ve&&ve.destroy(),ve=z.framebufferCopyTexture=new i.T(y,new i.r({width:Ae,height:Oe}),T.RGBA8)),ve.bind(T.LINEAR,T.CLAMP_TO_EDGE),T.copyTexSubImage2D(T.TEXTURE_2D,0,0,0,0,0,Ae,Oe)}_e&&we(!0,!1,ve),pe&&we(!1,!0,ve)}}else _e&&xe(!0),pe&&xe(!1),(_e||pe)&&c.resetStencilClippingMasks()}}},hillshade:function(c,t,s,h){if(c.renderPass!=="offscreen"&&c.renderPass!=="translucent"||c.style.disableElevatedTerrain)return;const _=c.context,y=c.terrain&&c.terrain.renderingToTexture,[T,z]=c.renderPass!=="translucent"||y?[{},h]:c.stencilConfigForOverlap(h);for(const R of z){const F=t.getTile(R);if(F.needsHillshadePrepare&&c.renderPass==="offscreen")oh(c,F,s);else if(c.renderPass==="translucent"){const N=c.depthModeForSublayer(0,Wt.ReadOnly),G=s.paint.get("hillshade-emissive-strength"),Z=c.colorModeForDrapableLayerRenderPass(G),W=y&&c.terrain?c.terrain.stencilModeForRTTOverlap(R):T[R.overscaledZ];$a(c,R,F,s,N,W,Z)}}_.viewport.set([0,0,c.width,c.height]),c.resetStencilClippingMasks()},raster:function(c,t,s,h,_,y){if(c.renderPass!=="translucent"||s.paint.get("raster-opacity")===0)return;const T=c.transform.projection.name==="globe",z=s.paint.get("raster-elevation")!==0,R=z&&T;if(c.renderElevatedRasterBackface&&!R)return;const F=c.context,N=F.gl,G=t.getSource(),Z=function(xe,we,ve,Ae){const Oe=we.paint.get("raster-color"),Xe=xe.type==="raster-array",He=[],ke=we.paint.get("raster-resampling"),Ne=we.paint.get("raster-color-mix");let st=we.paint.get("raster-color-range");const ut=[Ne[0],Ne[1],Ne[2],0],xt=Ne[3];let Ge=ke==="nearest"?Ae.NEAREST:Ae.LINEAR;if(Xe&&(He.push("RASTER_ARRAY"),Oe||He.push("RASTER_COLOR"),ke==="linear"&&He.push("RASTER_ARRAY_LINEAR"),Ge=Ae.NEAREST,!st&&xe.rasterLayers)){const lt=xe.rasterLayers.find(({id:Je})=>Je===we.sourceLayer);lt&<.fields&<.fields.range&&(st=lt.fields.range)}if(st=st||[0,1],Oe){He.push("RASTER_COLOR"),ve.activeTexture.set(Ae.TEXTURE2),we.updateColorRamp(st);let lt=we.colorRampTexture;lt||(lt=we.colorRampTexture=new i.T(ve,we.colorRamp,Ae.RGBA8)),lt.bind(Ae.LINEAR,Ae.CLAMP_TO_EDGE)}return{mix:ut,range:st,offset:xt,defines:He,resampling:Ge}}(G,s,F,N);if(G instanceof i.aJ&&!h.length&&!T)return;const W=s.paint.get("raster-emissive-strength"),te=c.colorModeForDrapableLayerRenderPass(W),ee=c.terrain&&c.terrain.renderingToTexture,se=!c.options.moving,oe=s.paint.get("raster-resampling")==="nearest"?N.NEAREST:N.LINEAR;if(G instanceof i.aJ&&!h.length&&(G.onNorthPole||G.onSouthPole)){const xe=z?c.stencilModeFor3D():ci.disabled;return void Ja(!!G.onNorthPole,null,c,t,s,W,Z,ti.disabled,xe)}if(!h.length)return;const[he,_e]=G instanceof i.aJ||ee?[{},h]:c.stencilConfigForOverlap(h),pe=_e[_e.length-1].overscaledZ;R&&Z.defines.push("PROJECTION_GLOBE_VIEW"),z&&Z.defines.push("RENDER_CUTOFF");const Me=(xe,we,ve)=>{for(const Ae of xe){const Oe=Ae.toUnwrapped(),Xe=t.getTile(Ae);if(ee&&(!Xe||!Xe.hasData()))continue;F.activeTexture.set(N.TEXTURE0);const He=$e(Xe,G,s,Z);if(!He||!He.texture)continue;const{texture:ke,mix:Ne,offset:st,tileSize:ut,buffer:xt}=He;let Ge,lt;ee?(Ge=Wt.disabled,lt=Ae.projMatrix):z?(Ge=new Wt(N.LEQUAL,Wt.ReadWrite,c.depthRangeFor3D),lt=T?Float32Array.from(c.transform.expandedFarZProjMatrix):c.transform.calculateProjMatrix(Oe,se)):(Ge=c.depthModeForSublayer(Ae.overscaledZ-pe,s.paint.get("raster-opacity")===1?Wt.ReadWrite:Wt.ReadOnly,N.LESS),lt=c.transform.calculateProjMatrix(Oe,se));const Je=c.terrain&&ee?c.terrain.stencilModeForRTTOverlap(Ae):he[Ae.overscaledZ],_t=y?0:s.paint.get("raster-fade-duration");Xe.registerFadeDuration(_t);const ct=t.findLoadedParent(Ae,0),nt=lu(Xe,ct,t,c.transform,_t);let Lt,bt;c.terrain&&c.terrain.prepareDrawTile(),F.activeTexture.set(N.TEXTURE0),ke.bind(oe,N.CLAMP_TO_EDGE),F.activeTexture.set(N.TEXTURE1),ct?(ct.texture&&ct.texture.bind(oe,N.CLAMP_TO_EDGE),Lt=Math.pow(2,ct.tileID.overscaledZ-Xe.tileID.overscaledZ),bt=[Xe.tileID.canonical.x*Lt%1,Xe.tileID.canonical.y*Lt%1]):ke.bind(oe,N.CLAMP_TO_EDGE),ke.useMipmap&&F.extTextureFilterAnisotropic&&c.transform.pitch>20&&N.texParameterf(N.TEXTURE_2D,F.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,F.extTextureFilterAnisotropicMax);const zt=c.transform;let Bt;const oi=z?Bn(zt):[0,0,0,0];let $t,Xt,ai,zi,wi,mn=0;if(R&&G instanceof i.aJ&&G.coordinates.length>3)$t=Float32Array.from(i.bb(i.cH(new i.bT(0,0,0)))),Xt=Float32Array.from(zt.globeMatrix),ai=Float32Array.from(i.cD(zt)),zi=[i.at(zt.center.lng),i.aA(zt.center.lat)],Bt=G.elevatedGlobePerspectiveTransform,wi=G.elevatedGlobeGridMatrix||new Float32Array(9);else if(R){const _i=i.cE(Ae.canonical);mn=i.cF(_i.getCenter().lat),$t=Float32Array.from(i.bb(i.cH(Ae.canonical))),Xt=Float32Array.from(zt.globeMatrix),ai=Float32Array.from(i.cD(zt)),zi=[i.at(zt.center.lng),i.aA(zt.center.lat)],Bt=[0,0],wi=Float32Array.from(i.cG(Ae.canonical,_i,mn,zt.worldSize/zt._pixelsPerMercatorPixel))}else Bt=G instanceof i.aJ?G.perspectiveTransform:[0,0],$t=new Float32Array(16),Xt=new Float32Array(9),ai=new Float32Array(16),zi=[0,0],wi=new Float32Array(9);const Mn=qd(lt,$t,Xt,ai,wi,bt||[0,0],i.ae(c.transform.zoom),zi,oi,Lt||1,nt,s,Bt,z?s.paint.get("raster-elevation"):0,2,Ne,st,Z.range,ut,xt,W),Xi=c.isTileAffectedByFog(Ae),sn=c.getOrCreateProgram("raster",{defines:Z.defines,overrideFog:Xi});if(c.uploadCommonUniforms(F,sn,Oe),G instanceof i.aJ){const _i=G.elevatedGlobeVertexBuffer,Jt=G.elevatedGlobeIndexBuffer;if(ee||!T)G.boundsBuffer&&G.boundsSegments&&sn.draw(c,N.TRIANGLES,Ge,ci.disabled,te,ti.disabled,Mn,s.id,G.boundsBuffer,c.quadTriangleIndexBuffer,G.boundsSegments);else if(_i&&Jt){const ji=zt.zoom<=i.c6?G.elevatedGlobeSegments:G.getSegmentsForLongitude(zt.center.lng);ji&&sn.draw(c,N.TRIANGLES,Ge,ci.disabled,te,we,Mn,s.id,_i,Jt,ji)}}else if(R){Ge=new Wt(N.LEQUAL,Wt.ReadOnly,c.depthRangeFor3D);const _i=c.globeSharedBuffers;if(_i){const[Jt,ji,Yi]=_i.getGridBuffers(mn,!1);sn.draw(c,N.TRIANGLES,Ge,ve||Je,c.colorModeForRenderPass(),we,Mn,s.id,Jt,ji,Yi)}}else{const{tileBoundsBuffer:_i,tileBoundsIndexBuffer:Jt,tileBoundsSegments:ji}=c.getTileBoundsBuffers(Xe);sn.draw(c,N.TRIANGLES,Ge,Je,te,ti.disabled,Mn,s.id,_i,Jt,ji)}}if(!(G instanceof i.aJ)&&R)for(const Ae of xe){const Oe=Ae.canonical.y===(1<<Ae.canonical.z)-1;Ae.canonical.y===0&&Ja(!0,Ae,c,t,s,W,Z,we,ve||ci.disabled),Oe&&Ja(!1,Ae,c,t,s,W,Z,we===ti.frontCW?ti.backCW:ti.frontCW,ve||ci.disabled)}};R?Me(_e,c.renderElevatedRasterBackface?ti.backCW:ti.frontCW,c.stencilModeFor3D()):Me(_e,ti.disabled,void 0),c.resetStencilClippingMasks()},"raster-particle":function(c,t,s,h,_,y){c.renderPass==="offscreen"&&function(T,z,R,F){if(!F.length)return;const N=T.context,G=N.gl,Z=z.getSource();if(!(Z instanceof vn))return;const W=Math.ceil(Math.sqrt(R.paint.get("raster-particle-count")));let te=R.particlePositionRGBAImage;if(!te||te.width!==W){const _e=function(pe){const Me=pe*pe,xe=new Uint8Array(4*Me),we=function(Ae){return Ae|=0,Ae=Math.imul(2747636419^Ae,2654435769),Ae=Math.imul(Ae^Ae>>>16,2654435769),((Ae=Math.imul(Ae^Ae>>>16,2654435769))>>>0)/4294967296},ve=1/1.1;for(let Ae=0;Ae<Me;Ae++){const Oe=ve*(we(2*Ae+0)+uo),Xe=ve*(we(2*Ae+1)+uo),He=255*Oe%1,ke=255*Xe%1,Ne=He,st=Xe-ke/255,ut=ke;xe[4*Ae+0]=255*(Oe-He/255),xe[4*Ae+1]=255*Ne,xe[4*Ae+2]=255*st,xe[4*Ae+3]=255*ut}return xe}(W);te=R.particlePositionRGBAImage=new i.r({width:W,height:W},_e)}let ee=R.particleFramebuffer;ee?ee.width!==W&&(ee.destroy(),ee=R.particleFramebuffer=N.createFramebuffer(W,W,!0,null)):ee=R.particleFramebuffer=N.createFramebuffer(W,W,!0,null);const se=[];for(const _e of F){const pe=z.getTile(_e);if(!(pe instanceof Na))continue;const Me=Qd(pe,Z,R);if(!Me)continue;const xe=[pe.tileSize,pe.tileSize];let we=R.tileFramebuffer;we||(we=R.tileFramebuffer=N.createFramebuffer(xe[0],xe[1],!0,null));let ve=pe.rasterParticleState;ve||(ve=pe.rasterParticleState=new xu(N,_e,xe,te));const Ae=ve.update(R.lastInvalidatedAt);ve.particleTextureDimension!==W&&ve.updateParticleTexture(_e,te);const Oe=ve.targetColorTexture;ve.targetColorTexture=ve.backgroundColorTexture,ve.backgroundColorTexture=Oe;const Xe=ve.particleTexture0;ve.particleTexture0=ve.particleTexture1,ve.particleTexture1=Xe,se.push([_e,Me,ve,Ae])}if(se.length===0)return;const oe=i.q.now(),he=R.previousDrawTimestamp?.001*(oe-R.previousDrawTimestamp):.0167;if(R.previousDrawTimestamp=oe,R.hasColorMap()){N.activeTexture.set(G.TEXTURE0+2);let _e=R.colorRampTexture;_e||(_e=R.colorRampTexture=new i.T(N,R.colorRamp,G.RGBA8)),_e.bind(G.LINEAR,G.CLAMP_TO_EDGE)}N.bindFramebuffer.set(R.tileFramebuffer.framebuffer),function(_e,pe,Me){const xe=_e.context,we=xe.gl,ve=pe.tileFramebuffer;xe.activeTexture.set(we.TEXTURE0);const Ae={u_texture:0,u_opacity:1.05*(Xe=pe.paint.get("raster-particle-fade-opacity-factor"))/(Xe+.05)},Oe=_e.getOrCreateProgram("rasterParticleTexture",{defines:[],overrideFog:!1});var Xe;for(const He of Me){const[,,ke,Ne]=He;ve.colorAttachment.set(ke.targetColorTexture.texture),xe.viewport.set([0,0,ve.width,ve.height]),xe.clear({color:i.aj.transparent}),Ne&&(ke.backgroundColorTexture.bind(we.NEAREST,we.CLAMP_TO_EDGE),Oe.draw(_e,we.TRIANGLES,Wt.disabled,ci.disabled,bi.alphaBlended,ti.disabled,Ae,pe.id,_e.viewportBuffer,_e.quadTriangleIndexBuffer,_e.viewportSegments))}}(T,R,se),function(_e,pe,Me,xe){const we=_e.context,ve=we.gl,Ae=Me.tileFramebuffer,Oe=_e.transform.projection.name==="globe",Xe=Me.paint.get("raster-particle-max-speed");for(const He of xe){const[ke,Ne,st]=He;we.activeTexture.set(ve.TEXTURE0+0),Ne.texture.bind(ve.LINEAR,ve.CLAMP_TO_EDGE),Ae.colorAttachment.set(st.targetColorTexture.texture);const ut=_e.getOrCreateProgram("rasterParticleDraw",{defines:Ne.defines,overrideFog:!1});we.activeTexture.set(ve.TEXTURE0+1);const xt=Ne.scalarData?[]:[0,1,2,3].map(Je=>i.d4[Je](ke));xt.push(ke);const Ge=ke.canonical.x,lt=ke.canonical.y;for(const Je of xt){const _t=pe.getTile(Oe?Je.wrapped():Je);if(!_t)continue;const ct=_t.rasterParticleState;if(!ct)continue;const nt=Je.canonical.x+(1<<Je.canonical.z)*(Je.wrap-ke.wrap),Lt=Je.canonical.y;ct.particleTexture0.bind(ve.NEAREST,ve.CLAMP_TO_EDGE);const bt=Zt(1,ct.particleTexture0.size[0],[nt-Ge,Lt-lt],0,Ne.texture.size,2,Xe,Ne.textureOffset,Ne.scale,Ne.offset);ut.draw(_e,ve.POINTS,Wt.disabled,ci.disabled,bi.alphaBlended,ti.disabled,bt,Me.id,ct.particleIndexBuffer,void 0,ct.particleSegment)}}}(T,z,R,se),N.bindFramebuffer.set(R.particleFramebuffer.framebuffer),function(_e,pe,Me,xe){const we=_e.context,ve=we.gl,Ae=pe.paint.get("raster-particle-max-speed"),Oe=xe*pe.paint.get("raster-particle-speed-factor")*.15,Xe=function(ke){return Math.pow(ke,6)}(.01+1*pe.paint.get("raster-particle-reset-rate-factor")),He=pe.particleFramebuffer;we.viewport.set([0,0,He.width,He.height]);for(const ke of Me){const[,Ne,st]=ke;we.activeTexture.set(ve.TEXTURE0+0),Ne.texture.bind(ve.LINEAR,ve.CLAMP_TO_EDGE),we.activeTexture.set(ve.TEXTURE0+1);const ut=st.particleTexture0;ut.bind(ve.NEAREST,ve.CLAMP_TO_EDGE);const xt=Wd(1,ut.size[0],0,Ne.texture.size,Ae,Oe,Xe,Ne.textureOffset,Ne.scale,Ne.offset);He.colorAttachment.set(st.particleTexture1.texture),we.clear({color:i.aj.transparent}),_e.getOrCreateProgram("rasterParticleUpdate",{defines:Ne.defines}).draw(_e,ve.TRIANGLES,Wt.disabled,ci.disabled,bi.unblended,ti.disabled,xt,pe.id,_e.viewportBuffer,_e.quadTriangleIndexBuffer,_e.viewportSegments)}}(T,R,se,he)}(c,t,s,h),c.renderPass==="translucent"&&(function(T,z,R,F,N){const G=T.context,Z=G.gl,W=z.getSource().tileSize,te=5*(1-i.ac(i.bY,i.bY+1,T.transform.zoom))*W+R.paint.get("raster-particle-elevation"),ee=!T.options.moving,se=T.transform.projection.name==="globe";if(!F.length)return;const[oe,he]=T.stencilConfigForOverlap(F),_e=[];se&&_e.push("PROJECTION_GLOBE_VIEW");const pe=T.stencilModeFor3D();for(const Me of he){const xe=Me.toUnwrapped(),we=z.getTile(Me);if(!we.rasterParticleState)continue;const ve=we.rasterParticleState,Ae=100;we.registerFadeDuration(Ae);const Oe=z.findLoadedParent(Me,0),Xe=lu(we,Oe,z,T.transform,Ae);let He,ke;T.terrain&&T.terrain.prepareDrawTile(),G.activeTexture.set(Z.TEXTURE0),ve.targetColorTexture.bind(Z.LINEAR,Z.CLAMP_TO_EDGE),G.activeTexture.set(Z.TEXTURE1),Oe&&Oe.rasterParticleState?(Oe.rasterParticleState.targetColorTexture.bind(Z.LINEAR,Z.CLAMP_TO_EDGE),He=Math.pow(2,Oe.tileID.overscaledZ-we.tileID.overscaledZ),ke=[we.tileID.canonical.x*He%1,we.tileID.canonical.y*He%1]):ve.targetColorTexture.bind(Z.LINEAR,Z.CLAMP_TO_EDGE);const Ne=se?Float32Array.from(T.transform.expandedFarZProjMatrix):T.transform.calculateProjMatrix(xe,ee),st=T.transform,ut=Wp(st),xt=i.cE(Me.canonical),Ge=i.cF(xt.getCenter().lat);let lt,Je,_t,ct,nt;se?(lt=Float32Array.from(i.bb(i.cH(Me.canonical))),Je=Float32Array.from(st.globeMatrix),_t=Float32Array.from(i.cD(st)),ct=[i.at(st.center.lng),i.aA(st.center.lat)],nt=Float32Array.from(i.cG(Me.canonical,xt,Ge,st.worldSize/st._pixelsPerMercatorPixel))):(lt=new Float32Array(16),Je=new Float32Array(9),_t=new Float32Array(16),ct=[0,0],nt=new Float32Array(9));const Lt=kl(Ne,lt,Je,_t,nt,ke||[0,0],i.ae(T.transform.zoom),ct,ut,He||1,Xe,te),bt=T.isTileAffectedByFog(Me),zt=T.getOrCreateProgram("rasterParticle",{defines:_e,overrideFog:bt});if(T.uploadCommonUniforms(G,zt,xe),se){const Bt=new Wt(Z.LEQUAL,Wt.ReadOnly,T.depthRangeFor3D),oi=0,$t=T.globeSharedBuffers;if($t){const[Xt,ai,zi]=$t.getGridBuffers(Ge,oi!==0);zt.draw(T,Z.TRIANGLES,Bt,pe,bi.alphaBlended,T.renderElevatedRasterBackface?ti.frontCCW:ti.backCCW,Lt,R.id,Xt,ai,zi)}}else{const Bt=T.depthModeForSublayer(0,Wt.ReadOnly),oi=oe[Me.overscaledZ],{tileBoundsBuffer:$t,tileBoundsIndexBuffer:Xt,tileBoundsSegments:ai}=T.getTileBoundsBuffers(we);zt.draw(T,Z.TRIANGLES,Bt,oi,bi.alphaBlended,ti.disabled,Lt,R.id,$t,Xt,ai)}}T.resetStencilClippingMasks()}(c,t,s,h),c.style.map.triggerRepaint())},background:function(c,t,s,h){const _=s.paint.get("background-color"),y=s.paint.get("background-color-use-theme").constantOr("default")==="none",T=s.paint.get("background-opacity"),z=s.paint.get("background-emissive-strength"),R=s.paint.get("background-pitch-alignment")==="viewport";if(T===0)return;const F=c.context,N=F.gl,G=c.transform,Z=G.tileSize,W=s.paint.get("background-pattern");let te;if(W!==void 0&&(W===null||(te=c.imageManager.getPattern(W.toString(),s.scope,c.style.getLut(s.scope)),!te)))return;const ee=!W&&_.a===1&&T===1&&c.opaquePassEnabledForLayer()?"opaque":"translucent";if(c.renderPass!==ee)return;const se=ci.disabled,oe=c.depthModeForSublayer(0,ee==="opaque"?Wt.ReadWrite:Wt.ReadOnly),he=c.colorModeForDrapableLayerRenderPass(z),_e=W?"backgroundPattern":"background";let pe,Me=h;if(Me||(pe=c.getBackgroundTiles(),Me=Object.values(pe).map(xe=>xe.tileID)),W&&(F.activeTexture.set(N.TEXTURE0),c.imageManager.bind(c.context,s.scope)),R){const xe=c.getOrCreateProgram(_e,{overrideFog:!1,overrideRtt:!0}),we=new Float32Array(i.ab.mat4.identity([])),ve=new i.aG(0,0,0,0,0),Ae=W?$d(we,z,T,c,0,s.scope,te,R,{tileID:ve,tileSize:Z}):pu(we,z,T,_.toRenderColor(y?null:s.lut));xe.draw(c,N.TRIANGLES,oe,se,he,ti.disabled,Ae,s.id,c.viewportBuffer,c.quadTriangleIndexBuffer,c.viewportSegments)}else for(const xe of Me){const we=c.isTileAffectedByFog(xe),ve=c.getOrCreateProgram(_e,{overrideFog:we}),Ae=xe.toUnwrapped(),Oe=h?xe.projMatrix:c.transform.calculateProjMatrix(Ae);c.prepareDrawTile();const Xe=t?t.getTile(xe):pe?pe[xe.key]:new zr(xe,Z,G.zoom,c),He=W?$d(Oe,z,T,c,0,s.scope,te,R,{tileID:xe,tileSize:Z}):pu(Oe,z,T,_.toRenderColor(y?null:s.lut));c.uploadCommonUniforms(F,ve,Ae);const{tileBoundsBuffer:ke,tileBoundsIndexBuffer:Ne,tileBoundsSegments:st}=c.getTileBoundsBuffers(Xe);ve.draw(c,N.TRIANGLES,oe,se,he,ti.disabled,He,s.id,ke,Ne,st)}},sky:function(c,t,s){const h=c._atmosphere?i.ae(c.transform.zoom):1,_=s.paint.get("sky-opacity")*h;if(_===0)return;const y=c.context,T=s.paint.get("sky-type"),z=new Wt(y.gl.LEQUAL,Wt.ReadOnly,[0,1]),R=c.frameCounter/1e3%1;T==="atmosphere"?c.renderPass==="offscreen"?s.needsSkyboxCapture(c)&&(function(F,N,G,Z){const W=F.context,te=W.gl;let ee=N.skyboxFbo;if(!ee){ee=N.skyboxFbo=W.createFramebuffer(32,32,!0,null),N.skyboxGeometry=new zo(W),N.skyboxTexture=W.gl.createTexture(),te.bindTexture(te.TEXTURE_CUBE_MAP,N.skyboxTexture),te.texParameteri(te.TEXTURE_CUBE_MAP,te.TEXTURE_WRAP_S,te.CLAMP_TO_EDGE),te.texParameteri(te.TEXTURE_CUBE_MAP,te.TEXTURE_WRAP_T,te.CLAMP_TO_EDGE),te.texParameteri(te.TEXTURE_CUBE_MAP,te.TEXTURE_MIN_FILTER,te.LINEAR),te.texParameteri(te.TEXTURE_CUBE_MAP,te.TEXTURE_MAG_FILTER,te.LINEAR);for(let _e=0;_e<6;++_e)te.texImage2D(te.TEXTURE_CUBE_MAP_POSITIVE_X+_e,0,te.RGBA,32,32,0,te.RGBA,te.UNSIGNED_BYTE,null)}W.bindFramebuffer.set(ee.framebuffer),W.viewport.set([0,0,32,32]);const se=N.getCenter(F,!0),oe=F.getOrCreateProgram("skyboxCapture"),he=new Float64Array(16);i.ab.mat4.identity(he),i.ab.mat4.rotateY(he,he,.5*-Math.PI),Fl(F,N,oe,he,se,0),i.ab.mat4.identity(he),i.ab.mat4.rotateY(he,he,.5*Math.PI),Fl(F,N,oe,he,se,1),i.ab.mat4.identity(he),i.ab.mat4.rotateX(he,he,.5*-Math.PI),Fl(F,N,oe,he,se,2),i.ab.mat4.identity(he),i.ab.mat4.rotateX(he,he,.5*Math.PI),Fl(F,N,oe,he,se,3),i.ab.mat4.identity(he),Fl(F,N,oe,he,se,4),i.ab.mat4.identity(he),i.ab.mat4.rotateY(he,he,Math.PI),Fl(F,N,oe,he,se,5),W.viewport.set([0,0,F.width,F.height])}(c,s),s.markSkyboxValid(c)):c.renderPass==="sky"&&function(F,N,G,Z,W){const te=F.context,ee=te.gl,se=F.transform,oe=F.getOrCreateProgram("skybox");te.activeTexture.set(ee.TEXTURE0),ee.bindTexture(ee.TEXTURE_CUBE_MAP,N.skyboxTexture);const he=((_e,pe,Me,xe,we)=>({u_matrix:_e,u_sun_direction:pe,u_cubemap:0,u_opacity:xe,u_temporal_offset:we}))(se.skyboxMatrix,N.getCenter(F,!1),0,Z,W);F.uploadCommonUniforms(te,oe),oe.draw(F,ee.TRIANGLES,G,ci.disabled,F.colorModeForRenderPass(),ti.backCW,he,"skybox",N.skyboxGeometry.vertexBuffer,N.skyboxGeometry.indexBuffer,N.skyboxGeometry.segment)}(c,s,z,_,R):T==="gradient"&&c.renderPass==="sky"&&function(F,N,G,Z,W){const te=F.context,ee=te.gl,se=F.transform,oe=F.getOrCreateProgram("skyboxGradient");N.skyboxGeometry||(N.skyboxGeometry=new zo(te)),te.activeTexture.set(ee.TEXTURE0);let he=N.colorRampTexture;he||(he=N.colorRampTexture=new i.T(te,N.colorRamp,ee.RGBA8)),he.bind(ee.LINEAR,ee.CLAMP_TO_EDGE);const _e=((pe,Me,xe,we,ve)=>({u_matrix:pe,u_color_ramp:0,u_center_direction:Me,u_radius:i.ai(xe),u_opacity:we,u_temporal_offset:ve}))(se.skyboxMatrix,N.getCenter(F,!1),N.paint.get("sky-gradient-radius"),Z,W);F.uploadCommonUniforms(te,oe),oe.draw(F,ee.TRIANGLES,G,ci.disabled,F.colorModeForRenderPass(),ti.backCW,_e,"skyboxGradient",N.skyboxGeometry.vertexBuffer,N.skyboxGeometry.indexBuffer,N.skyboxGeometry.segment)}(c,s,z,_,R)},debug:function(c,t,s,h,_,y){for(let T=0;T<s.length;T++)if(_){const F=new i.aj(h.r*.8,h.g*.8,h.b*.8,1);Ol(c,t,s[T],h,-1,-1,y),Ol(c,t,s[T],h,-1,1,y),Ol(c,t,s[T],h,1,1,y),Ol(c,t,s[T],h,1,-1,y),Ol(c,t,s[T],F,0,0,y)}else Ol(c,t,s[T],h,0,0,y)},custom:function(c,t,s,h){const _=c.context,y=s.implementation;if(!c.transform.projection.unsupportedLayers||!c.transform.projection.unsupportedLayers.includes("custom")||c.terrain&&(c.terrain.renderingToTexture||c.renderPass==="offscreen")&&s.isDraped(t)){if(c.renderPass==="offscreen"){const T=y.prerender;if(T){if(c.setCustomLayerDefaults(),_.setColorMode(c.colorModeForRenderPass()),c.transform.projection.name==="globe"){const z=c.transform.pointMerc;T.call(y,_.gl,c.transform.customLayerMatrix(),c.transform.getProjection(),c.transform.globeToMercatorMatrix(),i.ae(c.transform.zoom),[z.x,z.y],c.transform.pixelsPerMeterRatio)}else T.call(y,_.gl,c.transform.customLayerMatrix());_.setDirty(),c.setBaseState()}}else if(c.renderPass==="translucent"){if(c.terrain&&c.terrain.renderingToTexture){const z=y.renderToTile;if(z){const R=h[0].canonical,F=new i.aa(R.x+h[0].wrap*(1<<R.z),R.y,R.z);_.setDepthMode(Wt.disabled),_.setStencilMode(ci.disabled),_.setColorMode(c.colorModeForRenderPass()),c.setCustomLayerDefaults(),z.call(y,_.gl,F),_.setDirty(),c.setBaseState()}return}c.setCustomLayerDefaults(),_.setColorMode(c.colorModeForRenderPass()),_.setStencilMode(ci.disabled);const T=y.renderingMode==="3d"?new Wt(c.context.gl.LEQUAL,Wt.ReadWrite,c.depthRangeFor3D):c.depthModeForSublayer(0,Wt.ReadOnly);if(_.setDepthMode(T),c.transform.projection.name==="globe"){const z=c.transform.pointMerc;y.render(_.gl,c.transform.customLayerMatrix(),c.transform.getProjection(),c.transform.globeToMercatorMatrix(),i.ae(c.transform.zoom),[z.x,z.y],c.transform.pixelsPerMeterRatio)}else y.render(_.gl,c.transform.customLayerMatrix());_.setDirty(),c.setBaseState(),_.bindFramebuffer.set(null)}}else i.w("Custom layers are not yet supported with this projection. Use mercator or globe to enable usage of custom layers.")},model:function(c,t,s,h){if(c.renderPass==="opaque")return;const _=s.paint.get("model-opacity").constantOr(1);if(_===0)return;const y=s.paint.get("model-cast-shadows");if(c.renderPass==="shadow"&&(!y||c.terrain&&_<.65&&s._transitionablePaint._values["model-opacity"].value.expression instanceof i.a9))return;const T=c.shadowRenderer,z=s.paint.get("model-receive-shadows");T&&(T.useNormalOffset=!0,z||(T.enabled=!1));const R=()=>{T&&(T.useNormalOffset=!0,z||(T.enabled=!0))},F=t.getSource();if(c.renderPass==="light-beam"&&F.type!=="batched-model")return;if(F.type==="vector"||F.type==="geojson")return function(oe,he,_e,pe,Me){const xe=oe.transform;if(xe.projection.name!=="mercator")return void i.w(`Drawing 3D models for ${xe.projection.name} projection is not yet implemented`);const we=xe.getFreeCameraOptions().position;if(!oe.modelManager)return;const ve=oe.modelManager;_e.modelManager=ve;const Ae=oe.shadowRenderer;if(!_e._unevaluatedLayout._values.hasOwnProperty("model-id"))return;const Oe=_e._unevaluatedLayout._values["model-id"],Xe={..._e.layout.get("model-id").parameters},He=oe.style.order.indexOf(_e.fqid);for(const ke of pe){const Ne=he.getTile(ke).getBucket(_e);if(!Ne||Ne.projection.name!==xe.projection.name)continue;const st=Ne.getModelUris();st&&!Ne.modelsRequested&&(ve.addModelsFromBucket(st,Me),Ne.modelsRequested=!0);const ut=el(ke,xe);Xe.zoom=ut;const xt=Oe.possiblyEvaluate(Xe);if(ef(oe,Ne,ke),po.shadowUniformsInitialized=!1,po.useSingleShadowCascade=!!Ae&&Ae.getMaxCascadeForTile(ke.toUnwrapped())===0,oe.renderPass==="shadow"&&Ae){if(oe.currentShadowCascade===1&&Ne.isInsideFirstShadowMapFrustum)continue;const Je=xe.calculatePosMatrix(ke.toUnwrapped(),xe.worldSize);if(po.tileMatrix.set(Je),po.shadowTileMatrix=Float32Array.from(Ae.calculateShadowPassMatrixFromMatrix(Je)),po.aabb.min.fill(0),po.aabb.max[0]=po.aabb.max[1]=i.ag,po.aabb.max[2]=0,Tu(Ne,po,oe,_e.scope))continue}const Ge=1<<ke.canonical.z,lt=[((we.x-ke.wrap)*Ge-ke.canonical.x)*i.ag,(we.y*Ge-ke.canonical.y)*i.ag,we.z*Ge*i.ag];oe.conflationActive&&Object.keys(Ne.instancesPerModel).length>0&&oe.style.isLayerClipped(_e,he.getSource())&&Ne.updateReplacement(ke,oe.replacementSource,He,Me)&&(Ne.uploaded=!1,Ne.upload(oe.context));for(let Je in Ne.instancesPerModel){const _t=Ne.instancesPerModel[Je];_t.features.length>0&&(Je=xt.evaluate(_t.features[0].feature,{}));const ct=ve.getModel(Je,Me);if(ct&&ct.uploaded)for(const nt of ct.nodes)Sa(oe,_e,nt,_t,lt,ke,po)}}}(c,t,s,h,F.type==="vector"?s.scope:""),void R();if(!F.loaded())return;if(F.type==="batched-model")return function(oe,he,_e,pe){_e.resetLayerRenderingStats(oe);const Me=oe.context,xe=oe.transform,we=oe.style.fog,ve=oe.shadowRenderer;if(xe.projection.name!=="mercator")return void i.w(`Drawing 3D landmark models for ${xe.projection.name} projection is not yet implemented`);const Ae=oe.transform.getFreeCameraOptions().position,Oe=i.ab.vec3.scale([],[Ae.x,Ae.y,Ae.z],oe.transform.worldSize),Xe=i.ab.vec3.negate([],Oe),He=i.ab.mat4.identity([]),ke=i.dj(xe.center.lat,xe.zoom),Ne=i.ab.mat4.fromScaling([],[1,1,1/ke]);i.ab.mat4.translate(He,He,Xe);const st=_e.paint.get("model-opacity").constantOr(1),ut=new Wt(Me.gl.LEQUAL,Wt.ReadWrite,oe.depthRangeFor3D),xt=new Wt(Me.gl.LEQUAL,Wt.ReadOnly,oe.depthRangeFor3D),Ge=new i.cd([1/0,1/0,1/0],[-1/0,-1/0,-1/0]),lt=oe.renderPass==="shadow",Je=lt&&ve?ve.getCurrentCascadeFrustum():xe.getFrustum(xe.scaleZoom(xe.worldSize)),_t=_e.paint.get("model-front-cutoff"),ct=_t[2]<1,nt=Eo(oe,_e.paint.get("model-cutoff-fade-range")),Lt=_e.getLayerRenderingStats();(function(bt,zt,Bt,oi){const $t=bt.terrain?bt.terrain.exaggeration():0,Xt=bt.transform.zoom;for(const ai of oi){const zi=zt.getTile(ai).getBucket(Bt);zi&&(bt.conflationActive&&zi.updateReplacement(ai,bt.replacementSource),zi.evaluateScale(bt,Bt),bt.terrain&&$t>0&&zi.elevationUpdate(bt.terrain,$t,ai,Bt.source),zi.needsReEvaluation(bt,Xt,Bt)&&zi.evaluate(Bt))}})(oe,he,_e,pe),function(){let bt,zt,Bt;ct?(bt=pe.length-1,zt=-1,Bt=-1):(bt=0,zt=pe.length,Bt=1);const oi=new Float64Array(16),$t=i.ab.vec3.create(),Xt=new i.P(0,0);for(let ai=bt;ai!==zt;ai+=Bt){const zi=pe[ai],wi=he.getTile(zi).getBucket(_e);if(!wi||!wi.uploaded)continue;let mn=!1;ve&&(mn=ve.getMaxCascadeForTile(zi.toUnwrapped())===0);const Mn=xe.calculatePosMatrix(zi.toUnwrapped(),xe.worldSize),Xi=wi.modelTraits;!lt&&ct&&(i.ab.mat4.invert(oi,Mn),i.ab.vec3.transformMat4($t,Oe,oi),Xt.x=$t[0],Xt.y=$t[1]);const sn=[];for(const _i of wi.getNodesInfo()){if(_i.hiddenByReplacement||!_i.node.meshes)continue;const Jt=_i.node;let ji=0;oe.terrain&&Jt.elevation&&(ji=Jt.elevation*oe.terrain.exaggeration());const Yi=(()=>{const Ri=_i.aabb;return Ge.min=[...Ri.min],Ge.max=[...Ri.max],Ge.min[2]+=ji,Ge.max[2]+=ji,i.ab.vec3.transformMat4(Ge.min,Ge.min,Mn),i.ab.vec3.transformMat4(Ge.max,Ge.max,Mn),Ge})(),In=_i.evaluatedScale;if(In[0]<=1&&In[1]<=1&&In[2]<=1&&Yi.intersects(Je)===0)continue;if(!lt&&ct){const Ri=.16666666666666666;_i.cameraCollisionOpacity=Oe[0]>Yi.min[0]&&Oe[0]<Yi.max[0]&&Oe[1]>Yi.min[1]&&Oe[1]<Yi.max[1]&&Oe[2]*ke<Yi.max[2]&&Jt.footprint&&i.bA(Xt,Jt.footprint)?Math.max(_i.cameraCollisionOpacity-Ri,0):Math.min(1,_i.cameraCollisionOpacity+Ri)}const Bs=[...Mn],mr=Jt.anchor?Jt.anchor[0]:0,is=Jt.anchor?Jt.anchor[1]:0;i.ab.mat4.translate(Bs,Bs,[mr*(In[0]-1),is*(In[1]-1),ji]),i.ab.vec3.exactEquals(In,i.dm)||i.ab.mat4.scale(Bs,Bs,In);const As=i.ab.mat4.multiply([],Bs,Jt.matrix),er=i.ab.mat4.multiply([],xe.expandedFarZProjMatrix,As),Gn=i.ab.mat4.multiply([],xe.expandedFarZProjMatrix,Bs),dn=i.ab.vec4.transformMat4([],[mr,is,ji,1],er)[2];Jt.hidden=!1;let _n=st;lt||(ct&&(_n*=_i.cameraCollisionOpacity,_n*=tf(Bs,xe,_i.aabb,_t)),_n*=Mu(nt,dn)),_n!==0?sn.push({nodeInfo:_i,depth:dn,opacity:_n,wvpForNode:er,wvpForTile:Gn,nodeModelMatrix:As,tileModelMatrix:Bs}):Jt.hidden=!0}lt||sn.sort((_i,Jt)=>!ct||_i.opacity===1&&Jt.opacity===1?_i.depth<Jt.depth?-1:1:_i.opacity===1?-1:Jt.opacity===1?1:_i.depth>Jt.depth?-1:1);for(const _i of sn){const Jt=_i.nodeInfo,ji=Jt.node;let Yi=i.ab.mat4.multiply([],Ne,_i.tileModelMatrix);i.ab.mat4.multiply(Yi,He,Yi);const In=i.ab.mat4.invert([],Yi);i.ab.mat4.transpose(In,In),i.ab.mat4.scale(In,In,tl),Yi=i.ab.mat4.multiply(Yi,Yi,ji.matrix);const Bs=oe.renderPass==="light-beam",mr=_e.paint.get("model-color-use-theme").constantOr("default")==="none",is=Xi&i.dp.HasMapboxMeshFeatures,As=is?0:Jt.evaluatedRMEA[0][2];for(let er=0;er<ji.meshes.length;++er){const Gn=ji.meshes[er],dn=er===ji.lightMeshIndex;let _n=_i.wvpForNode;if(dn){if(!Bs&&!oe.terrain&&oe.shadowRenderer){oe.currentLayer<oe.firstLightBeamLayer&&(oe.firstLightBeamLayer=oe.currentLayer);continue}_n=_i.wvpForTile}else if(Bs)continue;const Ri={defines:[]},Zn=[];if(!lt&&ve&&(ve.useNormalOffset=!!Gn.normalBuffer),wu(Ri.defines,Zn,Gn,oe,mr?null:_e.lut),is||Ri.defines.push("DIFFUSE_SHADED"),mn&&Ri.defines.push("SHADOWS_SINGLE_CASCADE"),Lt&&(lt?Lt.numRenderedVerticesInShadowPass+=Gn.vertexArray.length:Lt.numRenderedVerticesInTransparentPass+=Gn.vertexArray.length),lt){Qa(Gn,_i.nodeModelMatrix,oe,_e);continue}let Ns=null;if(we){const _r=qi(_i.nodeModelMatrix,oe.transform);if(Ns=new Float32Array(_r),xe.projection.name!=="globe"){const Oo=Gn.aabb.min,jr=Gn.aabb.max,[al,ra]=we.getOpacityForBounds(_r,Oo[0],Oo[1],jr[0],jr[1]);Ri.overrideFog=al>=It||ra>=It}}const cn=Gn.material;let tr;cn.occlusionTexture&&cn.occlusionTexture.offsetScale&&(tr=cn.occlusionTexture.offsetScale,Ri.defines.push("OCCLUSION_TEXTURE_TRANSFORM"));const eo=oe.getOrCreateProgram("model",Ri);!lt&&ve&&ve.setupShadowsFromMatrix(_i.tileModelMatrix,eo,ve.useNormalOffset),oe.uploadCommonUniforms(Me,eo,null,Ns);const Ur=cn.pbrMetallicRoughness;Ur.metallicFactor=.9,Ur.roughnessFactor=.5;const Ca=Xd(new Float32Array(_n),new Float32Array(Yi),new Float32Array(In),new Float32Array(ji.matrix),oe,_i.opacity,Ur.baseColorFactor.toRenderColor(null),cn.emissiveFactor,Ur.metallicFactor,Ur.roughnessFactor,cn,As,_e,[0,0,0],tr);!dn&&(Jt.hasTranslucentParts||_i.opacity<1)&&eo.draw(oe,Me.gl.TRIANGLES,ut,ci.disabled,bi.disabled,ti.backCCW,Ca,_e.id,Gn.vertexBuffer,Gn.indexBuffer,Gn.segments,_e.paint,oe.transform.zoom,void 0,Zn),eo.draw(oe,Me.gl.TRIANGLES,dn?xt:ut,ci.disabled,dn||_i.opacity<1||Jt.hasTranslucentParts?bi.alphaBlended:bi.unblended,ti.backCCW,Ca,_e.id,Gn.vertexBuffer,Gn.indexBuffer,Gn.segments,_e.paint,oe.transform.zoom,void 0,Zn)}}}}()}(c,t,s,h),void R();if(F.type!=="model")return;const N=F.getModels(),G=[],Z=c.transform.getFreeCameraOptions().position,W=i.ab.vec3.scale([],[Z.x,Z.y,Z.z],c.transform.worldSize);i.ab.vec3.negate(W,W);const te=[],ee=[];let se=0;for(const oe of N){const he=s.paint.get("model-rotation").constantOr(null),_e=s.paint.get("model-scale").constantOr(null),pe=s.paint.get("model-translation").constantOr(null);oe.computeModelMatrix(c,he,_e,pe,!0,!0,!1);const Me=i.ab.mat4.identity([]),xe=i.dj(oe.position.lat,c.transform.zoom),we=i.ab.mat4.fromScaling([],[1,1,1/xe]);i.ab.mat4.translate(Me,Me,W),G.push({zScaleMatrix:we,negCameraPosMatrix:Me});for(const ve of oe.nodes)vh(c.transform,ve,oe.matrix,c.transform.expandedFarZProjMatrix,se,te,ee);se++}if(te.sort((oe,he)=>he.depth-oe.depth),c.renderPass!=="shadow"){if(_===1)for(const oe of ee)Do(oe,c,s,G[oe.modelIndex],ci.disabled,c.colorModeForRenderPass());else{for(const oe of ee)Do(oe,c,s,G[oe.modelIndex],ci.disabled,bi.disabled);for(const oe of ee)Do(oe,c,s,G[oe.modelIndex],c.stencilModeFor3D(),c.colorModeForRenderPass());c.resetStencilClippingMasks()}for(const oe of te)Do(oe,c,s,G[oe.modelIndex],ci.disabled,c.colorModeForRenderPass());R()}else{for(const oe of ee)Qa(oe.mesh,oe.nodeModelMatrix,c,s);for(const oe of te)Qa(oe.mesh,oe.nodeModelMatrix,c,s);R()}}},Cu={model:function(c,t,s){const h=t.getSource();if(!h.loaded())return;if(h.type==="vector"||h.type==="geojson")return void(s.modelManager&&s.modelManager.upload(s,h.type==="vector"?c.scope:""));if(h.type==="batched-model"||h.type!=="model")return;const _=h.getModels();for(const y of _)y.upload(s.context)},raster:function(c,t,s){const h=t.getSource();if(!(h instanceof vn&&h.loaded()))return;const _=c.sourceLayer||h.rasterLayerIds&&h.rasterLayerIds[0];if(!_)return;const y=c.paint.get("raster-array-band")||h.getInitialBand(_);if(y==null)return;const T=t.getIds().map(z=>t.getTileByID(z));for(const z of T)z.updateNeeded(_,y)&&h.prepareTile(z,_,y)},"raster-particle":function(c,t,s){const h=t.getSource();if(!(h instanceof vn&&h.loaded()))return;const _=c.sourceLayer||h.rasterLayerIds&&h.rasterLayerIds[0];if(!_)return;const y=c.paint.get("raster-particle-array-band")||h.getInitialBand(_);if(y==null)return;const T=t.getIds().map(z=>t.getTileByID(z));for(const z of T)z.updateNeeded(_,y)&&h.prepareTile(z,_,y)}};class hf{constructor(t,s,h,_,y){this.context=new Ka(t,s),this.transform=h,this._tileTextures={},this.frameCopies=[],this.loadTimeStamps=[],this.tp=y,this._timeStamp=i.q.now(),this._averageFPS=0,this._fpsHistory=[],this._dt=0,this._debugParams={forceEnablePrecipitation:!1,showTerrainProxyTiles:!1,fpsWindow:30,continousRedraw:!1,enabledLayers:{}};const T=["fill","line","symbol","circle","heatmap","fill-extrusion","raster","raster-particle","hillshade","model","background","sky"];for(const R of T)this._debugParams.enabledLayers[R]=!0;y.registerParameter(this._debugParams,["Terrain"],"showTerrainProxyTiles",{},()=>{this.style.map.triggerRepaint()}),y.registerParameter(this._debugParams,["Precipitation"],"forceEnablePrecipitation"),y.registerParameter(this._debugParams,["FPS"],"fpsWindow",{min:1,max:100,step:1}),y.registerBinding(this._debugParams,["FPS"],"continousRedraw",{readonly:!0,label:"continuous redraw"}),y.registerBinding(this,["FPS"],"_averageFPS",{readonly:!0,label:"value"}),y.registerBinding(this,["FPS"],"_averageFPS",{readonly:!0,label:"graph",view:"graph",min:0,max:200});for(const R of T)y.registerParameter(this._debugParams.enabledLayers,["Debug","Layers"],R);this.occlusionParams=new il(y),this.setup(),this.numSublayers=rr.maxUnderzooming+rr.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.deferredRenderGpuTimeQueries=[],this.gpuTimers={},this.frameCounter=0,this._backgroundTiles={},this.conflationActive=!1,this.replacementSource=new i.dv,this.longestCutoffRange=0,this.minCutoffZoom=0,this._fogVisible=!1,this._cachedTileFogOpacities={},this._shadowRenderer=new Po(this),this._wireframeDebugCache=new sf,this.renderDefaultNorthPole=!0,this.renderDefaultSouthPole=!0,this.layersWithOcclusionOpacity=[];const z=new i.r({width:1,height:1},Uint8Array.of(0,0,0,0));this.emptyDepthTexture=new i.T(this.context,z,t.RGBA8),this._clippingActiveLastFrame=!1,this.scaleFactor=_}updateTerrain(t,s){const h=!!t&&!!t.terrain&&this.transform.projection.supportsTerrain;if(!(h||this._terrain&&this._terrain.enabled))return;this._terrain||(this._terrain=new Fp(this,t));const _=this._terrain;this.transform.elevation=h?_:null,_.update(t,this.transform,s),this.transform.elevation&&!_.enabled&&(this.transform.elevation=null)}_updateFog(t){const s=t.fog;if(!s||this.transform.projection.name==="globe"||s.getOpacity(this.transform.pitch)<1||s.properties.get("horizon-blend")<.03)return void(this.transform.fogCullDistSq=null);const[h,_]=s.getFovAdjustedRange(this.transform._fov);if(h>_)return void(this.transform.fogCullDistSq=null);const y=h+.78*(_-h);this.transform.fogCullDistSq=y*y}get terrain(){return this.transform._terrainEnabled()&&this._terrain&&this._terrain.enabled||this._forceTerrainMode?this._terrain:null}get forceTerrainMode(){return this._forceTerrainMode}set forceTerrainMode(t){t&&!this._terrain&&(this._terrain=new Fp(this,this.style)),this._forceTerrainMode=t}get shadowRenderer(){return this._shadowRenderer&&this._shadowRenderer.enabled?this._shadowRenderer:null}get wireframeDebugCache(){return this._wireframeDebugCache}resize(t,s){if(this.width=t*i.q.devicePixelRatio,this.height=s*i.q.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const h of this.style.order)this.style._mergedLayers[h].resize()}setup(){const t=this.context,s=new i.b4;s.emplaceBack(0,0),s.emplaceBack(i.ag,0),s.emplaceBack(0,i.ag),s.emplaceBack(i.ag,i.ag),this.tileExtentBuffer=t.createVertexBuffer(s,i.b6.members),this.tileExtentSegments=i.b7.simpleSegment(0,0,4,2);const h=new i.b4;h.emplaceBack(0,0),h.emplaceBack(i.ag,0),h.emplaceBack(0,i.ag),h.emplaceBack(i.ag,i.ag),this.debugBuffer=t.createVertexBuffer(h,i.b6.members),this.debugSegments=i.b7.simpleSegment(0,0,4,5);const _=new i.b4;_.emplaceBack(-1,-1),_.emplaceBack(1,-1),_.emplaceBack(-1,1),_.emplaceBack(1,1),this.viewportBuffer=t.createVertexBuffer(_,i.b6.members),this.viewportSegments=i.b7.simpleSegment(0,0,4,2);const y=new i.aT;y.emplaceBack(0,0,0,0),y.emplaceBack(i.ag,0,i.ag,0),y.emplaceBack(0,i.ag,0,i.ag),y.emplaceBack(i.ag,i.ag,i.ag,i.ag),this.mercatorBoundsBuffer=t.createVertexBuffer(y,i.b9.members),this.mercatorBoundsSegments=i.b7.simpleSegment(0,0,4,2);const T=new i.aU;T.emplaceBack(0,1,2),T.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=t.createIndexBuffer(T);const z=new i.b5;for(const F of[0,1,3,2,0])z.emplaceBack(F);this.debugIndexBuffer=t.createIndexBuffer(z),this.emptyTexture=new i.T(t,new i.r({width:1,height:1},Uint8Array.of(0,0,0,0)),t.gl.RGBA8),this.identityMat=i.ab.mat4.create();const R=this.context.gl;this.stencilClearMode=new ci({func:R.ALWAYS,mask:0},0,255,R.ZERO,R.ZERO,R.ZERO),this.loadTimeStamps.push(performance.now())}getMercatorTileBoundsBuffers(){return{tileBoundsBuffer:this.mercatorBoundsBuffer,tileBoundsIndexBuffer:this.quadTriangleIndexBuffer,tileBoundsSegments:this.mercatorBoundsSegments}}getTileBoundsBuffers(t){return t._makeTileBoundsBuffers(this.context,this.transform.projection),t._tileBoundsBuffer?{tileBoundsBuffer:t._tileBoundsBuffer,tileBoundsIndexBuffer:t._tileBoundsIndexBuffer,tileBoundsSegments:t._tileBoundsSegments}:this.getMercatorTileBoundsBuffers()}clearStencil(){const t=this.context.gl;this.nextStencilID=1,this.currentStencilSource=void 0,this._tileClippingMaskIDs={},this.getOrCreateProgram("clippingMask").draw(this,t.TRIANGLES,Wt.disabled,this.stencilClearMode,bi.disabled,ti.disabled,pc(this.identityMat),"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}resetStencilClippingMasks(){this.terrain||(this.currentStencilSource=void 0,this._tileClippingMaskIDs={})}_renderTileClippingMasks(t,s,h){if(!s||this.currentStencilSource===s.id||!t.isTileClipped()||!h||h.length===0)return;if(this._tileClippingMaskIDs&&!this.terrain){let z=!1;for(const R of h)if(this._tileClippingMaskIDs[R.key]===void 0){z=!0;break}if(!z)return}this.currentStencilSource=s.id;const _=this.context,y=_.gl;this.nextStencilID+h.length>256&&this.clearStencil(),_.setColorMode(bi.disabled),_.setDepthMode(Wt.disabled);const T=this.getOrCreateProgram("clippingMask");this._tileClippingMaskIDs={};for(const z of h){const R=s.getTile(z),F=this._tileClippingMaskIDs[z.key]=this.nextStencilID++,{tileBoundsBuffer:N,tileBoundsIndexBuffer:G,tileBoundsSegments:Z}=this.getTileBoundsBuffers(R);T.draw(this,y.TRIANGLES,Wt.disabled,new ci({func:y.ALWAYS,mask:0},F,255,y.KEEP,y.KEEP,y.REPLACE),bi.disabled,ti.disabled,pc(z.projMatrix),"$clipping",N,G,Z)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const t=this.nextStencilID++,s=this.context.gl;return new ci({func:s.NOTEQUAL,mask:255},t,255,s.KEEP,s.KEEP,s.REPLACE)}stencilModeForClipping(t){if(this.terrain)return this.terrain.stencilModeForRTTOverlap(t);const s=this.context.gl;return new ci({func:s.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,s.KEEP,s.KEEP,s.REPLACE)}stencilConfigForOverlap(t){const s=this.context.gl,h=t.sort((T,z)=>z.overscaledZ-T.overscaledZ),_=h[h.length-1].overscaledZ,y=h[0].overscaledZ-_+1;if(y>1){this.currentStencilSource=void 0,this.nextStencilID+y>256&&this.clearStencil();const T={};for(let z=0;z<y;z++)T[z+_]=new ci({func:s.GEQUAL,mask:255},z+this.nextStencilID,255,s.KEEP,s.KEEP,s.REPLACE);return this.nextStencilID+=y,[T,h]}return[{[_]:ci.disabled},h]}colorModeForRenderPass(){const t=this.context.gl;return this._showOverdrawInspector?new bi([t.CONSTANT_COLOR,t.ONE,t.CONSTANT_COLOR,t.ONE],new i.aj(.125,.125,.125,0),[!0,!0,!0,!0]):this.renderPass==="opaque"?bi.unblended:bi.alphaBlended}colorModeForDrapableLayerRenderPass(t){const s=this.context.gl;return(()=>this.style&&this.style.enable3dLights()&&this.terrain&&this.terrain.renderingToTexture)()&&this.renderPass==="translucent"?new bi([s.ONE,s.ONE_MINUS_SRC_ALPHA,s.CONSTANT_ALPHA,s.ONE_MINUS_SRC_ALPHA],new i.aj(0,0,0,t===void 0?0:t),[!0,!0,!0,!0]):this.colorModeForRenderPass()}depthModeForSublayer(t,s,h,_=!1){if(this.depthOcclusion)return new Wt(this.context.gl.GREATER,Wt.ReadOnly,this.depthRangeFor3D);if(!this.opaquePassEnabledForLayer()&&!_)return Wt.disabled;const y=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon;return new Wt(h||this.context.gl.LEQUAL,s,[y,y])}opaquePassEnabledForLayer(){return this.currentLayer<this.opaquePassCutoff}blitDepth(){const t=this.context.gl,s=Math.ceil(this.width),h=Math.ceil(this.height),_=this.context.bindFramebuffer.get(),y=t.getParameter(t.TEXTURE_BINDING_2D);this.depthFBO&&this.depthFBO.width===s&&this.depthFBO.height===h||(this.depthFBO&&(this.depthFBO.destroy(),this.depthFBO=void 0,this.depthTexture=void 0),s!==0&&h!==0&&(this.depthFBO=new br(this.context,s,h,!1,"texture"),this.depthTexture=new i.T(this.context,{width:s,height:h,data:null},t.DEPTH24_STENCIL8),this.depthFBO.depthAttachment.set(this.depthTexture.texture))),this.context.bindFramebuffer.set(_),t.bindTexture(t.TEXTURE_2D,y),this.depthFBO&&(t.bindFramebuffer(t.READ_FRAMEBUFFER,null),t.bindFramebuffer(t.DRAW_FRAMEBUFFER,this.depthFBO.framebuffer),t.blitFramebuffer(0,0,s,h,0,0,s,h,t.DEPTH_BUFFER_BIT,t.NEAREST),t.bindFramebuffer(t.FRAMEBUFFER,this.context.bindFramebuffer.current))}updateAverageFPS(){this._fpsHistory.push(this._dt===0?0:1e3/this._dt),this._fpsHistory.length>this._debugParams.fpsWindow&&this._fpsHistory.splice(0,this._fpsHistory.length-this._debugParams.fpsWindow),this._averageFPS=Math.round(this._fpsHistory.reduce((t,s)=>t+s/this._fpsHistory.length,0))}render(t,s){const h=i.q.now();this._dt=h-this._timeStamp,this._timeStamp=h,this._wireframeDebugCache.update(this.frameCounter),this._debugParams.continousRedraw=t.map.repaint,this.style=t,this.options=s;const _=this.style._mergedLayers,y=this.style._getOrder(!(!this.terrain||!this.terrain.enabled)).filter(ke=>{const Ne=_[ke];return!(Ne.type in this._debugParams.enabledLayers)||this._debugParams.enabledLayers[Ne.type]});let T=!1,z=!1;for(const ke of y){const Ne=_[ke];Ne.type==="circle"&&(T=!0),Ne.type==="symbol"&&(Ne.hasInitialOcclusionOpacityProperties?z=!0:T=!0)}const R=y.map(ke=>_[ke]),F=this.style._mergedSourceCaches;this.imageManager=t.imageManager,this.modelManager=t.modelManager,this.symbolFadeChange=t.placement.symbolFadeChange(i.q.now()),this.imageManager.beginFrame();let N=0,G=!1;for(const ke in F){const Ne=F[ke];Ne.used&&(Ne.prepare(this.context),Ne.getSource().usedInConflation&&++N)}let Z=!1;for(const ke of R)ke.isHidden(this.transform.zoom)||(ke.type==="clip"&&(Z=!0),this.prepareLayer(ke));const W={},te={},ee={},se={},oe={};for(const ke in F){const Ne=F[ke];W[ke]=Ne.getVisibleCoordinates(),te[ke]=W[ke].slice().reverse(),ee[ke]=Ne.getVisibleCoordinates(!0).reverse(),se[ke]=Ne.getShadowCasterCoordinates(),oe[ke]=Ne.sortCoordinatesByDistance(W[ke])}const he=ke=>{const Ne=this.style.getLayerSourceCache(ke);return Ne&&Ne.used?Ne.getSource():null};if(N||Z||this._clippingActiveLastFrame){const ke=[],Ne=[];let st=0;for(const ut of R)this.isSourceForClippingOrConflation(ut,he(ut))&&(ke.push(ut),Ne.push(st)),st++;if(ke&&(Z||ke.length>1)||this._clippingActiveLastFrame){Z=!1;const ut=[];for(let xt=0;xt<ke.length;xt++){const Ge=ke[xt],lt=Ne[xt],Je=this.style.getLayerSourceCache(Ge);if(!Je||!Je.used||!Je.getSource().usedInConflation&&Ge.type!=="clip")continue;let _t=i.dx,ct=i.by.None;const nt=[];let Lt=!0;if(Ge.type==="clip"){_t=lt;for(const bt of Ge.layout.get("clip-layer-types"))ct|=bt==="model"?i.by.Model:bt==="symbol"?i.by.Symbol:i.by.FillExtrusion;for(const bt of Ge.layout.get("clip-layer-scope"))nt.push(bt);Ge.isHidden(this.transform.zoom)?Lt=!1:Z=!0}Lt&&ut.push({layer:Ge.fqid,cache:Je,order:_t,clipMask:ct,clipScope:nt})}this.replacementSource.setSources(ut),G=!0}}this._clippingActiveLastFrame=Z,G||this.replacementSource.clear(),this.conflationActive=G,this.minCutoffZoom=0,this.longestCutoffRange=0,this.opaquePassCutoff=1/0,this._lastOcclusionLayer=-1,this.layersWithOcclusionOpacity=[];for(let ke=0;ke<R.length;ke++){const Ne=R[ke],st=Ne.cutoffRange();if(this.longestCutoffRange=Math.max(st,this.longestCutoffRange),st>0){const ut=he(Ne);ut&&(this.minCutoffZoom=Math.max(ut.minzoom,this.minCutoffZoom)),Ne.minzoom&&(this.minCutoffZoom=Math.max(Ne.minzoom,this.minCutoffZoom))}Ne.is3D()&&(this.opaquePassCutoff===1/0&&(this.opaquePassCutoff=ke),this._lastOcclusionLayer=ke)}const _e=this.style&&this.style.fog;_e?(this._fogVisible=_e.getOpacity(this.transform.pitch)!==0,this._fogVisible&&this.transform.projection.name!=="globe"&&(this._fogVisible=_e.isVisibleOnFrustum(this.transform.cameraFrustum))):this._fogVisible=!1,this._cachedTileFogOpacities={},this.terrain&&(this.terrain.updateTileBinding(ee),this.opaquePassCutoff=0);const pe=this._shadowRenderer;if(pe){pe.updateShadowParameters(this.transform,this.style.directionalLight);for(const ke in F)for(const Ne of W[ke]){let st={min:0,max:0};this.terrain&&(st=this.terrain.getMinMaxForTile(Ne)||st),pe.addShadowReceiver(Ne.toUnwrapped(),st.min,st.max)}}this.transform.projection.name!=="globe"||this.globeSharedBuffers||(this.globeSharedBuffers=new i.dw(this.context)),this.style.fog&&this.transform.projection.supportsFog?(this._atmosphere||(this._atmosphere=new wn(this)),this._atmosphere.update(this)):this._atmosphere&&(this._atmosphere.destroy(),this._atmosphere=void 0);const Me=this._debugParams.forceEnablePrecipitation||!(!this.style||!this.style.snow),xe=this._debugParams.forceEnablePrecipitation||!(!this.style||!this.style.rain);if(Me&&!this._snow&&(this._snow=new Bl(this)),!Me&&this._snow&&(this._snow.destroy(),delete this._snow),xe&&!this._rain&&(this._rain=new lf(this)),!xe&&this._rain&&(this._rain.destroy(),delete this._rain),this._snow&&this._snow.update(this),this._rain&&this._rain.update(this),!Vs.has(this.context.gl))return;this.renderPass="offscreen";for(const ke of R){const Ne=t.getLayerSourceCache(ke);if(!ke.hasOffscreenPass()||ke.isHidden(this.transform.zoom))continue;const st=Ne?te[Ne.id]:void 0;(ke.type==="custom"||ke.type==="raster"||ke.type==="raster-particle"||ke.isSky()||st&&st.length)&&this.renderLayer(this,Ne,ke,st)}this.depthRangeFor3D=[0,1-(R.length+2)*this.numSublayers*this.depthEpsilon],this._shadowRenderer&&(this.renderPass="shadow",this._shadowRenderer.drawShadowPass(this.style,se)),this.context.bindFramebuffer.set(null),this.context.viewport.set([0,0,this.width,this.height]);const we=this.transform.projection.name==="globe"||this.transform.isHorizonVisible(),ve=(()=>{if(s.showOverdrawInspector)return i.aj.black;const ke=this.style.fog;if(ke&&this.transform.projection.supportsFog){const Ne=this.style.getLut(ke.scope);if(!we){const st=ke.properties.get("color-use-theme")==="none",ut=ke.properties.get("color").toRenderColor(st?null:Ne).toArray01();return new i.aj(...ut)}if(we){const st=ke.properties.get("space-color-use-theme")==="none",ut=ke.properties.get("space-color").toRenderColor(st?null:Ne).toArray01();return new i.aj(...ut)}}return i.aj.transparent})();if(this.context.clear({color:ve,depth:1}),this.clearStencil(),this._showOverdrawInspector=s.showOverdrawInspector,this.renderPass="opaque",this.style.fog&&this.transform.projection.supportsFog&&this._atmosphere&&!this._showOverdrawInspector&&we&&this._atmosphere.drawStars(this,this.style.fog),!this.terrain)for(this.currentLayer=y.length-1;this.currentLayer>=0;this.currentLayer--){const ke=R[this.currentLayer],Ne=t.getLayerSourceCache(ke);if(ke.isSky())continue;const st=Ne?(ke.is3D()?oe:te)[Ne.id]:void 0;this._renderTileClippingMasks(ke,Ne,st),this.renderLayer(this,Ne,ke,st)}if(this.style.fog&&this.transform.projection.supportsFog&&this._atmosphere&&!this._showOverdrawInspector&&we&&this._atmosphere.drawAtmosphereGlow(this,this.style.fog),this.renderPass="sky",(!this._atmosphere||i.ae(this.transform.zoom)>0)&&(this.transform.projection.name==="globe"||this.transform.isHorizonVisible()))for(this.currentLayer=0;this.currentLayer<y.length;this.currentLayer++){const ke=R[this.currentLayer],Ne=t.getLayerSourceCache(ke);ke.isSky()&&this.renderLayer(this,Ne,ke,Ne?te[Ne.id]:void 0)}function Ae(ke,Ne){let st;return Ne&&(st=(ke.type==="symbol"?ee:ke.is3D()?oe:te)[Ne.id]),st}if(this.renderPass="translucent",this.transform.projection.name==="globe"){for(this.renderElevatedRasterBackface=!0,this.currentLayer=0;this.currentLayer<y.length;){const ke=R[this.currentLayer];if(ke.type==="raster"||ke.type==="raster-particle"){const Ne=t.getLayerSourceCache(ke);this.renderLayer(this,Ne,ke,Ae(ke,Ne))}++this.currentLayer}this.renderElevatedRasterBackface=!1}this.currentLayer=0,this.firstLightBeamLayer=Number.MAX_SAFE_INTEGER;let Oe=0;pe&&(Oe=pe.getShadowCastingLayerCount());let Xe=!1,He=-1;for(let ke=0;ke<y.length;++ke){const Ne=R[ke];Ne.isHidden(this.transform.zoom)||Ne.is3D()&&(He=ke)}for(z&&He===-1&&(T=!0);this.currentLayer<y.length;){const ke=R[this.currentLayer],Ne=t.getLayerSourceCache(ke);if(ke.isSky())++this.currentLayer;else if(this.terrain&&this.style.isLayerDraped(ke)){if(ke.isHidden(this.transform.zoom)){++this.currentLayer;continue}this.currentLayer=this.terrain.renderBatch(this.currentLayer),this._lastOcclusionLayer=Math.max(this.currentLayer,this._lastOcclusionLayer)}else{if(T&&!Xe&&this.terrain&&!this.transform.isOrthographic&&(Xe=!0,this.blitDepth()),z&&He!==-1&&this.currentLayer===He+1&&!this.transform.isOrthographic&&this.blitDepth(),ke.is3D()||this.terrain||this._renderTileClippingMasks(ke,Ne,Ne?W[Ne.id]:void 0),this.renderLayer(this,Ne,ke,Ae(ke,Ne)),!this.terrain&&pe&&Oe>0&&ke.hasShadowPass()&&--Oe==0&&(pe.drawGroundShadows(),this.firstLightBeamLayer<=this.currentLayer)){const st=this.currentLayer;for(this.renderPass="light-beam",this.currentLayer=this.firstLightBeamLayer;this.currentLayer<=st;this.currentLayer++){const ut=R[this.currentLayer];if(!ut.hasLightBeamPass())continue;const xt=t.getLayerSourceCache(ut);this.renderLayer(this,xt,ut,xt?te[xt.id]:void 0)}this.currentLayer=st,this.renderPass="translucent"}if(this.currentLayer>=this._lastOcclusionLayer&&this.layersWithOcclusionOpacity.length>0){const st=this.currentLayer;this.depthOcclusion=!0;for(const ut of this.layersWithOcclusionOpacity){this.currentLayer=ut;const xt=R[this.currentLayer],Ge=t.getLayerSourceCache(xt),lt=Ge?te[Ge.id]:void 0;xt.is3D()||this.terrain||this._renderTileClippingMasks(xt,Ge,Ge?W[Ge.id]:void 0),this.renderLayer(this,Ge,xt,lt)}this.depthOcclusion=!1,this.currentLayer=st,this.renderPass="translucent",this.layersWithOcclusionOpacity=[]}++this.currentLayer}}if(this.terrain&&this.terrain.postRender(),this._snow&&this._snow.draw(this),this._rain&&this._rain.draw(this),this.options.showTileBoundaries||this.options.showQueryGeometry||this.options.showTileAABBs){let ke=null;R.forEach(Ne=>{const st=t.getLayerSourceCache(Ne);st&&!Ne.isHidden(this.transform.zoom)&&st.getVisibleCoordinates().length&&(!ke||ke.getSource().maxzoom<st.getSource().maxzoom)&&(ke=st)}),ke&&this.options.showTileBoundaries&&bh.debug(this,ke,ke.getVisibleCoordinates(),i.aj.red,!1,this.options.showParseStatus)}this.terrain&&this._debugParams.showTerrainProxyTiles&&bh.debug(this,this.terrain.proxySourceCache,this.terrain.proxyCoords,new i.aj(1,.8,.1,1),!0,this.options.showParseStatus),this.options.showPadding&&function(ke){const Ne=ke.transform.padding;gh(ke,ke.transform.height-(Ne.top||0),3,$p),gh(ke,Ne.bottom||0,3,Xp),vu(ke,Ne.left||0,3,bc),vu(ke,ke.transform.width-(Ne.right||0),3,J_);const st=ke.transform.centerPoint;(function(ut,xt,Ge,lt){yh(ut,xt-1,Ge-10,2,20,lt),yh(ut,xt-10,Ge-1,20,2,lt)})(ke,st.x,ke.transform.height-st.y,Q_)}(this),this.context.setDefault(),this.frameCounter=(this.frameCounter+1)%Number.MAX_SAFE_INTEGER,this.tileLoaded&&this.options.speedIndexTiming&&(this.loadTimeStamps.push(performance.now()),this.saveCanvasCopy()),G||(this.conflationActive=!1)}prepareLayer(t){this.gpuTimingStart(t);const{unsupportedLayers:s}=this.transform.projection,h=!s||!s.includes(t.type);if(Cu[t.type]&&(h||this.terrain&&t.type==="custom")){const _=this.style.getLayerSourceCache(t);Cu[t.type](t,_,this)}this.gpuTimingEnd()}renderLayer(t,s,h,_){h.isHidden(this.transform.zoom)||(h.type==="background"||h.type==="sky"||h.type==="custom"||h.type==="model"||h.type==="raster"||h.type==="raster-particle"||_&&_.length)&&(this.id=h.id,this.gpuTimingStart(h),t.transform.projection.unsupportedLayers&&t.transform.projection.unsupportedLayers.includes(h.type)&&(!t.terrain||h.type!=="custom")||h.type==="clip"||bh[h.type](t,s,h,_,this.style.placement.variableOffsets,this.options.isInitialLoad),this.gpuTimingEnd())}gpuTimingStart(t){if(!this.options.gpuTiming)return;const s=this.context.extTimerQuery,h=this.context.gl;let _=this.gpuTimers[t.id];_||(_=this.gpuTimers[t.id]={calls:0,cpuTime:0,query:h.createQuery()}),_.calls++,h.beginQuery(s.TIME_ELAPSED_EXT,_.query)}gpuTimingDeferredRenderStart(){if(this.options.gpuTimingDeferredRender){const t=this.context.extTimerQuery,s=this.context.gl,h=s.createQuery();this.deferredRenderGpuTimeQueries.push(h),s.beginQuery(t.TIME_ELAPSED_EXT,h)}}gpuTimingDeferredRenderEnd(){this.options.gpuTimingDeferredRender&&this.context.gl.endQuery(this.context.extTimerQuery.TIME_ELAPSED_EXT)}gpuTimingEnd(){this.options.gpuTiming&&this.context.gl.endQuery(this.context.extTimerQuery.TIME_ELAPSED_EXT)}collectGpuTimers(){const t=this.gpuTimers;return this.gpuTimers={},t}collectDeferredRenderGpuQueries(){const t=this.deferredRenderGpuTimeQueries;return this.deferredRenderGpuTimeQueries=[],t}queryGpuTimers(t){const s={};for(const h in t){const _=t[h],y=this.context.extTimerQuery,T=y.getQueryParameter(_.query,this.context.gl.QUERY_RESULT)/1e6;y.deleteQueryEXT(_.query),s[h]=T}return s}queryGpuTimeDeferredRender(t){if(!this.options.gpuTimingDeferredRender)return 0;const s=this.context.gl;let h=0;for(const _ of t)h+=s.getQueryParameter(_,s.QUERY_RESULT)/1e6,s.deleteQuery(_);return h}translatePosMatrix(t,s,h,_,y){if(!h[0]&&!h[1])return t;const T=y?_==="map"?this.transform.angle:0:_==="viewport"?-this.transform.angle:0;if(T){const F=Math.sin(T),N=Math.cos(T);h=[h[0]*N-h[1]*F,h[0]*F+h[1]*N]}const z=[y?h[0]:i.ar(s,h[0],this.transform.zoom),y?h[1]:i.ar(s,h[1],this.transform.zoom),0],R=new Float32Array(16);return i.ab.mat4.translate(R,t,z),R}saveTileTexture(t){const s=t.size[0],h=this._tileTextures[s];h?h.push(t):this._tileTextures[s]=[t]}getTileTexture(t){const s=this._tileTextures[t];return s&&s.length>0?s.pop():null}terrainRenderModeElevated(){return this.style&&!!this.style.getTerrain()&&!!this.terrain&&!this.terrain.renderingToTexture||this.forceTerrainMode}linearFloatFilteringSupported(){return this.context.extTextureFloatLinear!=null}currentGlobalDefines(t,s,h){const _=h===void 0?this.terrain&&this.terrain.renderingToTexture:h,y=[];return this.style&&this.style.enable3dLights()&&(t==="globeRaster"||t==="terrainRaster"?(y.push("LIGHTING_3D_MODE"),y.push("LIGHTING_3D_ALPHA_EMISSIVENESS")):_||y.push("LIGHTING_3D_MODE")),this.renderPass==="shadow"&&(this._shadowMapDebug||y.push("DEPTH_TEXTURE")),this.terrainRenderModeElevated()&&(y.push("TERRAIN"),this.linearFloatFilteringSupported()&&y.push("TERRAIN_DEM_FLOAT_FORMAT")),this.transform.projection.name==="globe"&&y.push("GLOBE"),!this._fogVisible||_||s!==void 0&&!s||y.push("FOG","FOG_DITHERING"),_&&y.push("RENDER_TO_TEXTURE"),this._showOverdrawInspector&&y.push("OVERDRAW_INSPECTOR"),y}getOrCreateProgram(t,s){this.cache=this.cache||{};const h=s&&s.defines||[],_=s&&s.config,y=this.currentGlobalDefines(t,s&&s.overrideFog,s&&s.overrideRtt).concat(h),T=Np.cacheKey(Ll[t],t,y,_);return this.cache[T]||(this.cache[T]=new Np(this.context,t,Ll[t],_,Yd[t],y)),this.cache[T]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.frontFace.setDefault(),this.context.cullFaceSide.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){const t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new i.T(this.context,this.debugOverlayCanvas,this.context.gl.RGBA8))}destroy(){this._terrain&&this._terrain.destroy(),this._atmosphere&&(this._atmosphere.destroy(),this._atmosphere=void 0),this.globeSharedBuffers&&this.globeSharedBuffers.destroy(),this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy(),this._wireframeDebugCache.destroy(),this.depthFBO&&(this.depthFBO.destroy(),this.depthFBO=void 0,this.depthTexture=void 0),this.emptyDepthTexture&&this.emptyDepthTexture.destroy()}prepareDrawTile(){this.terrain&&this.terrain.prepareDrawTile()}uploadCommonLightUniforms(t,s){if(this.style.enable3dLights()){const h=this.style.directionalLight,_=this.style.ambientLight;if(h&&_){const y=((T,z,R)=>{const F=T.properties.get("direction"),N=T.properties.get("color-use-theme")==="none",G=T.properties.get("color").toRenderColor(N?null:R.getLut(T.scope)).toArray01(),Z=T.properties.get("intensity"),W=z.properties.get("color-use-theme")==="none",te=z.properties.get("color").toRenderColor(W?null:R.getLut(z.scope)).toArray01(),ee=z.properties.get("intensity"),se=[F.x,F.y,F.z],oe=i.cM(te,ee),he=i.cM(G,Z);return{u_lighting_ambient_color:oe,u_lighting_directional_dir:se,u_lighting_directional_color:he,u_ground_radiance:Bp(se,he,oe)}})(h,_,this.style);s.setLightsUniformValues(t,y)}}}uploadCommonUniforms(t,s,h,_,y){if(this.uploadCommonLightUniforms(t,s),this.terrain&&this.terrain.renderingToTexture)return;const T=this.style.fog;if(T){const z=T.getOpacity(this.transform.pitch),R=((F,N,G,Z,W,te,ee,se,oe,he,_e,pe)=>{const Me=F.transform,xe=N.properties.get("color-use-theme")==="none",we=N.properties.get("color").toRenderColor(xe?null:F.style.getLut(N.scope)).toArray01();we[3]=Z;const ve=F.frameCounter/1e3%1,[Ae,Oe]=N.properties.get("vertical-range");return{u_fog_matrix:G?Me.calculateFogTileMatrix(G):pe||F.identityMat,u_fog_range:N.getFovAdjustedRange(Me._fov),u_fog_color:we,u_fog_horizon_blend:N.properties.get("horizon-blend"),u_fog_vertical_limit:[Math.min(Ae,Oe),Oe],u_fog_temporal_offset:ve,u_frustum_tl:W,u_frustum_tr:te,u_frustum_br:ee,u_frustum_bl:se,u_globe_pos:oe,u_globe_radius:he,u_viewport:_e,u_globe_transition:i.ae(Me.zoom),u_is_globe:+(Me.projection.name==="globe")}})(this,T,h,z,this.transform.frustumCorners.TL,this.transform.frustumCorners.TR,this.transform.frustumCorners.BR,this.transform.frustumCorners.BL,this.transform.globeCenterInViewSpace,this.transform.globeRadius,[this.transform.width*i.q.devicePixelRatio,this.transform.height*i.q.devicePixelRatio],_);s.setFogUniformValues(t,R)}y&&s.setCutoffUniformValues(t,y.uniformValues)}setTileLoadedFlag(t){this.tileLoaded=t}saveCanvasCopy(){const t=this.canvasCopy();t&&(this.frameCopies.push(t),this.tileLoaded=!1)}canvasCopy(){const t=this.context.gl,s=t.createTexture();return t.bindTexture(t.TEXTURE_2D,s),t.copyTexImage2D(t.TEXTURE_2D,0,t.RGBA,0,0,t.drawingBufferWidth,t.drawingBufferHeight,0),s}getCanvasCopiesAndTimestamps(){return{canvasCopies:this.frameCopies,timeStamps:this.loadTimeStamps}}averageElevationNeedsEasing(){if(!this.transform._elevation)return!1;const t=this.style&&this.style.fog;return!!t&&t.getOpacity(this.transform.pitch)!==0}getBackgroundTiles(){const t=this._backgroundTiles,s=this._backgroundTiles={},h=this.transform.coveringTiles({tileSize:512});for(const _ of h)s[_.key]=t[_.key]||new zr(_,512,this.transform.tileZoom,this);return s}clearBackgroundTiles(){this._backgroundTiles={}}isSourceForClippingOrConflation(t,s){return!(!t.is3D()||t.type!=="clip"&&(t.minzoom&&t.minzoom>this.transform.zoom||(this.style._clipLayerPresent||t.sourceLayer!=="building")&&(!s||s.type!=="batched-model")))}isTileAffectedByFog(t){if(!this.style||!this.style.fog)return!1;if(this.transform.projection.name==="globe")return!0;let s=this._cachedTileFogOpacities[t.key];return s||(this._cachedTileFogOpacities[t.key]=s=this.style.fog.getOpacityForTile(t)),s[0]>=It||s[1]>=It}setupDepthForOcclusion(t,s,h){const _=this.context,y=_.gl,T=!!h;var z;h||(h={u_dem:2,u_dem_prev:4,u_dem_tl:[0,0],u_dem_tl_prev:[0,0],u_dem_scale:0,u_dem_scale_prev:0,u_dem_size:0,u_dem_lerp:1,u_depth:3,u_depth_size_inv:[0,0],u_depth_range_unpack:[0,1],u_occluder_half_size:16,u_occlusion_depth_offset:-1e-4,u_exaggeration:0}),_.activeTexture.set(y.TEXTURE3),t&&this.depthFBO&&this.depthTexture?(this.depthTexture.bind(y.NEAREST,y.CLAMP_TO_EDGE),h.u_depth_size_inv=[1/this.depthFBO.width,1/this.depthFBO.height],h.u_depth_range_unpack=[2/((z=this.depthRangeFor3D)[1]-z[0]),-1-2*z[0]/(z[1]-z[0])],h.u_occluder_half_size=.5*this.occlusionParams.occluderSize,h.u_occlusion_depth_offset=this.occlusionParams.depthOffset):this.emptyDepthTexture.bind(y.NEAREST,y.CLAMP_TO_EDGE),_.activeTexture.set(y.TEXTURE0),T||s.setTerrainUniformValues(_,h)}}function wh(c,t){let s=!1,h=null;const _=()=>{h=null,s&&(c(),h=setTimeout(_,t),s=!1)};return()=>(s=!0,h||_(),h)}class uf{constructor(t){this._hashName=t&&encodeURIComponent(t),i.aP(["_getCurrentHash","_onHashChange","_updateHash"],this),this._updateHash=wh(this._updateHashUnthrottled.bind(this),300)}addTo(t){return this._map=t,window.addEventListener("hashchange",this._onHashChange,!1),t.on("moveend",this._updateHash),this}remove(){return this._map?(this._map.off("moveend",this._updateHash),window.removeEventListener("hashchange",this._onHashChange,!1),clearTimeout(this._updateHash()),this._map=void 0,this):this}getHashString(){const t=this._map;if(!t)return"";const s=Iu(t);if(this._hashName){const h=this._hashName;let _=!1;const y=location.hash.slice(1).split("&").map(T=>{const z=T.split("=")[0];return z===h?(_=!0,`${z}=${s}`):T}).filter(T=>T);return _||y.push(`${h}=${s}`),`#${y.join("&")}`}return`#${s}`}_getCurrentHash(){const t=location.hash.replace("#","");if(this._hashName){let s;return t.split("&").map(h=>h.split("=")).forEach(h=>{h[0]===this._hashName&&(s=h)}),(s&&s[1]||"").split("/")}return t.split("/")}_onHashChange(){const t=this._map;if(!t)return!1;const s=this._getCurrentHash();if(s.length>=3&&!s.some(h=>isNaN(h))){const h=t.dragRotate.isEnabled()&&t.touchZoomRotate.isEnabled()?+(s[3]||0):t.getBearing();return t.jumpTo({center:[+s[2],+s[1]],zoom:+s[0],bearing:h,pitch:+(s[4]||0)}),!0}return!1}_updateHashUnthrottled(){history.replaceState(history.state,"",location.href.replace(/(#.+)?$/,this.getHashString()))}}function Iu(c,t){const s=c.getCenter(),h=Math.round(100*c.getZoom())/100,_=Math.ceil((h*Math.LN2+Math.log(512/360/.5))/Math.LN10),y=Math.pow(10,_),T=Math.round(s.lng*y)/y,z=Math.round(s.lat*y)/y,R=c.getBearing(),F=c.getPitch();let N=t?`/${T}/${z}/${h}`:`${h}/${z}/${T}`;return(R||F)&&(N+="/"+Math.round(10*R)/10),F&&(N+=`/${Math.round(F)}`),N}const Th={linearity:.3,easing:i.dy(0,0,.3,1)},Kp=i.l({deceleration:2500,maxSpeed:1400},Th),Jp=i.l({deceleration:20,maxSpeed:1400},Th),Qp=i.l({deceleration:1e3,maxSpeed:360},Th),em=i.l({deceleration:1e3,maxSpeed:90},Th);class tm{constructor(t){this._map=t,this.clear()}clear(){this._inertiaBuffer=[]}record(t){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:i.q.now(),settings:t})}_drainInertiaBuffer(){const t=this._inertiaBuffer,s=i.q.now();for(;t.length>0&&s-t[0].time>160;)t.shift()}_onMoveEnd(t){if(this._map._prefersReducedMotion()||(this._drainInertiaBuffer(),this._inertiaBuffer.length<2))return;const s={zoom:0,bearing:0,pitch:0,pan:new i.P(0,0),pinchAround:void 0,around:void 0};for(const{settings:y}of this._inertiaBuffer)s.zoom+=y.zoomDelta||0,s.bearing+=y.bearingDelta||0,s.pitch+=y.pitchDelta||0,y.panDelta&&s.pan._add(y.panDelta),y.around&&(s.around=y.around),y.pinchAround&&(s.pinchAround=y.pinchAround);const h=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,_={};if(s.pan.mag()){const y=Sh(s.pan.mag(),h,i.l({},Kp,t||{}));_.offset=s.pan.mult(y.amount/s.pan.mag()),_.center=this._map.transform.center,Mh(_,y)}if(s.zoom){const y=Sh(s.zoom,h,Jp);_.zoom=this._map.transform.zoom+y.amount,Mh(_,y)}if(s.bearing){const y=Sh(s.bearing,h,Qp);_.bearing=this._map.transform.bearing+i.aw(y.amount,-179,179),Mh(_,y)}if(s.pitch){const y=Sh(s.pitch,h,em);_.pitch=this._map.transform.pitch+y.amount,Mh(_,y)}if(_.zoom||_.bearing){const y=s.pinchAround===void 0?s.around:s.pinchAround;_.around=y?this._map.unproject(y):this._map.getCenter()}return this.clear(),_.noMoveStart=!0,_}}function Mh(c,t){(!c.duration||c.duration<t.duration)&&(c.duration=t.duration,c.easing=t.easing)}function Sh(c,t,s){const{maxSpeed:h,linearity:_,deceleration:y}=s,T=i.aw(c*_/(t/1e3),-h,h),z=Math.abs(T)/(y*_);return{easing:s.easing,duration:1e3*z,amount:T*(z/2)}}class Nr extends i.z{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,s,h,_={}){const y=Gt(s.getCanvasContainer(),h),T=s.unproject(y);super(t,i.l({point:y,lngLat:T,originalEvent:h},_)),this._defaultPrevented=!1,this.target=s}}class Eh extends i.z{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,s,h){const _=t==="touchend"?h.changedTouches:h.touches,y=ui(s.getCanvasContainer(),_),T=y.map(R=>s.unproject(R)),z=y.reduce((R,F,N,G)=>R.add(F.div(G.length)),new i.P(0,0));super(t,{points:y,point:z,lngLats:T,lngLat:s.unproject(z),originalEvent:h}),this._defaultPrevented=!1}}class im extends i.z{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,s){super("wheel",{originalEvent:s}),this._defaultPrevented=!1}}class nm{constructor(t,s){this._map=t,this._clickTolerance=s.clickTolerance}reset(){this._mousedownPos=void 0}wheel(t){return this._firePreventable(new im(this._map,t))}mousedown(t,s){return this._mousedownPos=s,this._firePreventable(new Nr(t.type,this._map,t))}mouseup(t){this._map.fire(new Nr(t.type,this._map,t))}preclick(t){const s=i.l({},t);s.type="preclick",this._map.fire(new Nr(s.type,this._map,s))}click(t,s){this._mousedownPos&&this._mousedownPos.dist(s)>=this._clickTolerance||(this.preclick(t),this._map.fire(new Nr(t.type,this._map,t)))}dblclick(t){return this._firePreventable(new Nr(t.type,this._map,t))}mouseover(t){this._map.fire(new Nr(t.type,this._map,t))}mouseout(t){this._map.fire(new Nr(t.type,this._map,t))}touchstart(t){return this._firePreventable(new Eh(t.type,this._map,t))}touchmove(t){this._map.fire(new Eh(t.type,this._map,t))}touchend(t){this._map.fire(new Eh(t.type,this._map,t))}touchcancel(t){this._map.fire(new Eh(t.type,this._map,t))}_firePreventable(t){if(this._map.fire(t),t.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class sm{constructor(t){this._map=t}reset(){this._delayContextMenu=!1,this._contextMenuEvent=void 0}mousemove(t){this._map.fire(new Nr(t.type,this._map,t))}mousedown(){this._delayContextMenu=!0}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Nr("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(t){this._delayContextMenu?this._contextMenuEvent=t:this._map.fire(new Nr(t.type,this._map,t)),this._map.listens("contextmenu")&&t.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class ig{constructor(t,s){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=s.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(t,s){this.isEnabled()&&t.shiftKey&&t.button===0&&(ht(),this._startPos=this._lastPos=s,this._active=!0)}mousemoveWindow(t,s){if(!this._active)return;const h=s,_=this._startPos,y=this._lastPos;if(!_||!y||y.equals(h)||!this._box&&h.dist(_)<this._clickTolerance)return;this._lastPos=h,this._box||(this._box=be("div","mapboxgl-boxzoom",this._container),this._container.classList.add("mapboxgl-crosshair"),this._fireEvent("boxzoomstart",t));const T=Math.min(_.x,h.x),z=Math.max(_.x,h.x),R=Math.min(_.y,h.y),F=Math.max(_.y,h.y);this._map._requestDomTask(()=>{this._box&&(this._box.style.transform=`translate(${T}px,${R}px)`,this._box.style.width=z-T+"px",this._box.style.height=F-R+"px")})}mouseupWindow(t,s){if(!this._active)return;const h=this._startPos,_=s;if(h&&t.button===0){if(this.reset(),pt(),h.x!==_.x||h.y!==_.y)return this._map.fire(new i.z("boxzoomend",{originalEvent:t})),{cameraAnimation:y=>y.fitScreenCoordinates(h,_,this._map.getBearing(),{linear:!1})};this._fireEvent("boxzoomcancel",t)}}keydown(t){this._active&&t.keyCode===27&&(this.reset(),this._fireEvent("boxzoomcancel",t))}blur(){this.reset()}reset(){this._active=!1,this._container.classList.remove("mapboxgl-crosshair"),this._box&&(this._box.remove(),this._box=null),gt(),delete this._startPos,delete this._lastPos}_fireEvent(t,s){return this._map.fire(new i.z(t,{originalEvent:s}))}}function df(c,t){const s={};for(let h=0;h<c.length;h++)s[c[h].identifier]=t[h];return s}class Wn{constructor(t){this.reset(),this.numTouches=t.numTouches}reset(){this.centroid=void 0,this.startTime=0,this.touches={},this.aborted=!1}touchstart(t,s,h){(this.centroid||h.length>this.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===0&&(this.startTime=t.timeStamp),h.length===this.numTouches&&(this.centroid=function(_){const y=new i.P(0,0);for(const T of _)y._add(T);return y.div(_.length)}(s),this.touches=df(h,s)))}touchmove(t,s,h){if(this.aborted||!this.centroid)return;const _=df(h,s);for(const y in this.touches){const T=_[y];(!T||T.dist(this.touches[y])>30)&&(this.aborted=!0)}}touchend(t,s,h){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),h.length===0){const _=!this.aborted&&this.centroid;if(this.reset(),_)return _}}}class Lu{constructor(t){this.singleTap=new Wn(t),this.numTaps=t.numTaps,this.reset()}reset(){this.lastTime=1/0,this.lastTap=void 0,this.count=0,this.singleTap.reset()}touchstart(t,s,h){this.singleTap.touchstart(t,s,h)}touchmove(t,s,h){this.singleTap.touchmove(t,s,h)}touchend(t,s,h){const _=this.singleTap.touchend(t,s,h);if(_){const y=t.timeStamp-this.lastTime<500,T=!this.lastTap||this.lastTap.dist(_)<30;if(y&&T||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=_,this.count===this.numTaps)return this.reset(),_}}}class ng{constructor(){this._zoomIn=new Lu({numTouches:1,numTaps:2}),this._zoomOut=new Lu({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(t,s,h){this._zoomIn.touchstart(t,s,h),this._zoomOut.touchstart(t,s,h)}touchmove(t,s,h){this._zoomIn.touchmove(t,s,h),this._zoomOut.touchmove(t,s,h)}touchend(t,s,h){const _=this._zoomIn.touchend(t,s,h),y=this._zoomOut.touchend(t,s,h);return _?(this._active=!0,t.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:T=>T.easeTo({duration:300,zoom:T.getZoom()+1,around:T.unproject(_)},{originalEvent:t})}):y?(this._active=!0,t.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:T=>T.easeTo({duration:300,zoom:T.getZoom()-1,around:T.unproject(y)},{originalEvent:t})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}const sg={0:1,2:2};class Nl{constructor(t){this.reset(),this._clickTolerance=t.clickTolerance||1}blur(){this.reset()}reset(){this._active=!1,this._moved=!1,this._lastPoint=void 0,this._eventButton=void 0}_correctButton(t,s){return!1}_move(t,s){return{}}mousedown(t,s){if(this._lastPoint)return;const h=kt(t);this._correctButton(t,h)&&(this._lastPoint=s,this._eventButton=h)}mousemoveWindow(t,s){const h=this._lastPoint;if(h){if(t.preventDefault(),this._eventButton!=null&&function(_,y){const T=sg[y];return _.buttons===void 0||(_.buttons&T)!==T}(t,this._eventButton))this.reset();else if(this._moved||!(s.dist(h)<this._clickTolerance))return this._moved=!0,this._lastPoint=s,this._move(h,s)}}mouseupWindow(t){this._lastPoint&&kt(t)===this._eventButton&&(this._moved&&pt(),this.reset())}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class rm extends Nl{mousedown(t,s){super.mousedown(t,s),this._lastPoint&&(this._active=!0)}_correctButton(t,s){return s===0&&!t.ctrlKey}_move(t,s){return{around:s,panDelta:s.sub(t)}}}class zu extends Nl{_correctButton(t,s){return s===0&&t.ctrlKey||s===2}_move(t,s){const h=.8*(s.x-t.x);if(h)return this._active=!0,{bearingDelta:h}}contextmenu(t){t.preventDefault()}}class Ph extends Nl{_correctButton(t,s){return s===0&&t.ctrlKey||s===2}_move(t,s){const h=-.5*(s.y-t.y);if(h)return this._active=!0,{pitchDelta:h}}contextmenu(t){t.preventDefault()}}class Ea{constructor(t,s){this._map=t,this._el=t.getCanvasContainer(),this._minTouches=1,this._clickTolerance=s.clickTolerance||1,this.reset(),i.aP(["_addTouchPanBlocker","_showTouchPanBlockerAlert"],this)}reset(){this._active=!1,this._touches={},this._sum=new i.P(0,0)}touchstart(t,s,h){return this._calculateTransform(t,s,h)}touchmove(t,s,h){if(this._active&&!(h.length<this._minTouches)){if(this._map._cooperativeGestures&&!this._map.isMoving()){if(h.length===1&&!i.dz())return void this._showTouchPanBlockerAlert();this._alertContainer.style.visibility!=="hidden"&&(this._alertContainer.style.visibility="hidden",clearTimeout(this._alertTimer))}return t.cancelable&&t.preventDefault(),this._calculateTransform(t,s,h)}}touchend(t,s,h){this._calculateTransform(t,s,h),this._active&&h.length<this._minTouches&&this.reset()}touchcancel(){this.reset()}_calculateTransform(t,s,h){h.length>0&&(this._active=!0);const _=df(h,s),y=new i.P(0,0),T=new i.P(0,0);let z=0;for(const F in _){const N=_[F],G=this._touches[F];G&&(y._add(N),T._add(N.sub(G)),z++,_[F]=N)}if(this._touches=_,z<this._minTouches||!T.mag())return;const R=T.div(z);return this._sum._add(R),this._sum.mag()<this._clickTolerance?void 0:{around:y.div(z),panDelta:R}}enable(){this._enabled=!0,this._map._cooperativeGestures&&(this._addTouchPanBlocker(),this._el.classList.add("mapboxgl-touch-pan-blocker-override","mapboxgl-scrollable-page"))}disable(){this._enabled=!1,this._map._cooperativeGestures&&(clearTimeout(this._alertTimer),this._alertContainer.remove(),this._el.classList.remove("mapboxgl-touch-pan-blocker-override","mapboxgl-scrollable-page")),this.reset()}isEnabled(){return!!this._enabled}isActive(){return!!this._active}_addTouchPanBlocker(){this._map&&!this._alertContainer&&(this._alertContainer=be("div","mapboxgl-touch-pan-blocker",this._map._container),this._alertContainer.textContent=this._map._getUIString("TouchPanBlocker.Message"),this._alertContainer.style.fontSize=`${Math.max(10,Math.min(24,Math.floor(.05*this._el.clientWidth)))}px`)}_showTouchPanBlockerAlert(){this._alertContainer.style.visibility="visible",this._alertContainer.classList.add("mapboxgl-touch-pan-blocker-show"),this._alertContainer.setAttribute("role","alert"),clearTimeout(this._alertTimer),this._alertTimer=window.setTimeout(()=>{this._alertContainer.classList.remove("mapboxgl-touch-pan-blocker-show"),this._alertContainer.removeAttribute("role")},500)}}class Tc{constructor(){this.reset()}reset(){this._active=!1,this._firstTwoTouches=void 0}_start(t){}_move(t,s,h){return{}}touchstart(t,s,h){this._firstTwoTouches||h.length<2||(this._firstTwoTouches=[h[0].identifier,h[1].identifier],this._start([s[0],s[1]]))}touchmove(t,s,h){const _=this._firstTwoTouches;if(!_)return;t.preventDefault();const[y,T]=_,z=Nn(h,s,y),R=Nn(h,s,T);if(!z||!R)return;const F=this._aroundCenter?null:z.add(R).div(2);return this._move([z,R],F,t)}touchend(t,s,h){if(!this._firstTwoTouches)return;const[_,y]=this._firstTwoTouches,T=Nn(h,s,_),z=Nn(h,s,y);T&&z||(this._active&&pt(),this.reset())}touchcancel(){this.reset()}enable(t){this._enabled=!0,this._aroundCenter=!!t&&t.around==="center"}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}function Nn(c,t,s){for(let h=0;h<c.length;h++)if(c[h].identifier===s)return t[h]}function ko(c,t){return Math.log(c/t)/Math.LN2}class ff extends Tc{reset(){super.reset(),this._distance=0,this._startDistance=0}_start(t){this._startDistance=this._distance=t[0].dist(t[1])}_move(t,s){const h=this._distance;if(this._distance=t[0].dist(t[1]),this._active||!(Math.abs(ko(this._distance,this._startDistance))<.1))return this._active=!0,{zoomDelta:ko(this._distance,h),pinchAround:s}}}function Ah(c,t){return 180*c.angleWith(t)/Math.PI}class om extends Tc{reset(){super.reset(),this._minDiameter=0,this._startVector=void 0,this._vector=void 0}_start(t){this._startVector=this._vector=t[0].sub(t[1]),this._minDiameter=t[0].dist(t[1])}_move(t,s){const h=this._vector;if(this._vector=t[0].sub(t[1]),h&&(this._active||!this._isBelowThreshold(this._vector)))return this._active=!0,{bearingDelta:Ah(this._vector,h),pinchAround:s}}_isBelowThreshold(t){this._minDiameter=Math.min(this._minDiameter,t.mag());const s=25/(Math.PI*this._minDiameter)*360,h=this._startVector;if(!h)return!1;const _=Ah(t,h);return Math.abs(_)<s}}function pf(c){return Math.abs(c.y)>Math.abs(c.x)}class Ch extends Tc{constructor(t){super(),this._map=t}reset(){super.reset(),this._valid=void 0,this._firstMove=void 0,this._lastPoints=void 0}_start(t){this._lastPoints=t,pf(t[0].sub(t[1]))&&(this._valid=!1)}_move(t,s,h){const _=this._lastPoints;if(!_)return;const y=t[0].sub(_[0]),T=t[1].sub(_[1]);return this._map._cooperativeGestures&&!i.dz()&&h.touches.length<3||(this._valid=this.gestureBeginsVertically(y,T,h.timeStamp),!this._valid)?void 0:(this._lastPoints=t,this._active=!0,{pitchDelta:(y.y+T.y)/2*-.5})}gestureBeginsVertically(t,s,h){if(this._valid!==void 0)return this._valid;const _=t.mag()>=2,y=s.mag()>=2;if(!_&&!y)return;if(!_||!y)return this._firstMove==null&&(this._firstMove=h),h-this._firstMove<100&&void 0;const T=t.y>0==s.y>0;return pf(t)&&pf(s)&&T}}const rg={panStep:100,bearingStep:15,pitchStep:10};class og{constructor(){const t=rg;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep,this._rotationDisabled=!1}blur(){this.reset()}reset(){this._active=!1}keydown(t){if(t.altKey||t.ctrlKey||t.metaKey)return;let s=0,h=0,_=0,y=0,T=0;switch(t.keyCode){case 61:case 107:case 171:case 187:s=1;break;case 189:case 109:case 173:s=-1;break;case 37:t.shiftKey?h=-1:(t.preventDefault(),y=-1);break;case 39:t.shiftKey?h=1:(t.preventDefault(),y=1);break;case 38:t.shiftKey?_=1:(t.preventDefault(),T=-1);break;case 40:t.shiftKey?_=-1:(t.preventDefault(),T=1);break;default:return}return this._rotationDisabled&&(h=0,_=0),{cameraAnimation:z=>{const R=z.getZoom();z.easeTo({duration:300,easeId:"keyboardHandler",easing:mf,zoom:s?Math.round(R)+s*(t.shiftKey?2:1):R,bearing:z.getBearing()+h*this._bearingStep,pitch:z.getPitch()+_*this._pitchStep,offset:[-y*this._panStep,-T*this._panStep],center:z.getCenter()},{originalEvent:t})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function mf(c){return c*(2-c)}const Du=4.000244140625,Mc=1/450;class Sc{constructor(t,s){this._map=t,this._el=t.getCanvasContainer(),this._handler=s,this._delta=0,this._lastDelta=0,this._defaultZoomRate=.01,this._wheelZoomRate=Mc,i.aP(["_onTimeout","_addScrollZoomBlocker","_showBlockerAlert"],this)}setZoomRate(t){this._defaultZoomRate=t}setWheelZoomRate(t){this._wheelZoomRate=t}isEnabled(){return!!this._enabled}isActive(){return this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!t&&t.around==="center",this._map._cooperativeGestures&&this._addScrollZoomBlocker())}disable(){this.isEnabled()&&(this._enabled=!1,this._map._cooperativeGestures&&(clearTimeout(this._alertTimer),this._alertContainer.remove()))}wheel(t){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!(t.ctrlKey||t.metaKey||this.isZooming()||i.dz()))return void this._showBlockerAlert();this._alertContainer.style.visibility!=="hidden"&&(this._alertContainer.style.visibility="hidden",clearTimeout(this._alertTimer))}let s=t.deltaMode===WheelEvent.DOM_DELTA_LINE?40*t.deltaY:t.deltaY;const h=i.q.now(),_=h-(this._lastWheelEventTime||0);this._lastWheelEventTime=h,s!==0&&s%Du==0?this._type="wheel":s!==0&&Math.abs(s)<4?this._type="trackpad":_>400?(this._type=null,this._lastValue=s,this._timeout=window.setTimeout(this._onTimeout,40,t)):this._type||(this._type=Math.abs(_*s)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,s+=this._lastValue)),t.shiftKey&&s&&(s/=4),this._type&&(this._lastWheelEvent=t,this._delta-=s,this._active||this._start(t)),t.preventDefault()}_onTimeout(t){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(t)}_start(t){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const s=Gt(this._el,t);this._aroundPoint=this._aroundCenter?this._map.transform.centerPoint:s,this._aroundCoord=this._map.transform.pointCoordinate3D(this._aroundPoint),this._targetZoom=void 0,this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;const t=this._map.transform;this._type==="wheel"&&t.projection.wrap&&(t._center.lng>=180||t._center.lng<=-180)&&(this._prevEase=null,this._easing=null,this._lastWheelEvent=null,this._lastWheelEventTime=0);const s=()=>t._terrainEnabled()&&this._aroundCoord?t.computeZoomRelativeTo(this._aroundCoord):t.zoom;if(this._delta!==0){const F=this._type==="wheel"&&Math.abs(this._delta)>Du?this._wheelZoomRate:this._defaultZoomRate;let N=2/(1+Math.exp(-Math.abs(this._delta*F)));this._delta<0&&N!==0&&(N=1/N);const G=s(),Z=Math.pow(2,G),W=typeof this._targetZoom=="number"?t.zoomScale(this._targetZoom):Z;this._targetZoom=Math.min(t.maxZoom,Math.max(t.minZoom,t.scaleZoom(W*N))),this._type==="wheel"&&(this._startZoom=G,this._easing=this._smoothOutEasing(200)),this._lastDelta=this._delta,this._delta=0}const h=typeof this._targetZoom=="number"?this._targetZoom:s(),_=this._startZoom,y=this._easing;let T,z=!1;if(this._type==="wheel"&&_&&y){const F=Math.min((i.q.now()-this._lastWheelEventTime)/200,1),N=y(F);T=i.af(_,h,N),F<1?this._frameId||(this._frameId=!0):z=!0}else T=h,z=!0;this._active=!0,z&&(this._active=!1,this._finishTimeout=window.setTimeout(()=>{this._zooming=!1,this._handler._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200));let R=T-s();return R*this._lastDelta<0&&(R=0),{noInertia:!0,needsRenderFrame:!z,zoomDelta:R,around:this._aroundPoint,aroundCoord:this._aroundCoord,originalEvent:this._lastWheelEvent}}_smoothOutEasing(t){let s=i.dA;if(this._prevEase){const h=this._prevEase,_=(i.q.now()-h.start)/h.duration,y=h.easing(_+.01)-h.easing(_),T=.27/Math.sqrt(y*y+1e-4)*.01,z=Math.sqrt(.0729-T*T);s=i.dy(T,z,.25,1)}return this._prevEase={start:i.q.now(),duration:t,easing:s},s}blur(){this.reset()}reset(){this._active=!1}_addScrollZoomBlocker(){this._map&&!this._alertContainer&&(this._alertContainer=be("div","mapboxgl-scroll-zoom-blocker",this._map._container),this._alertContainer.textContent=/(Mac|iPad)/i.test(navigator.userAgent)?this._map._getUIString("ScrollZoomBlocker.CmdMessage"):this._map._getUIString("ScrollZoomBlocker.CtrlMessage"),this._alertContainer.style.fontSize=`${Math.max(10,Math.min(24,Math.floor(.05*this._el.clientWidth)))}px`)}_showBlockerAlert(){this._alertContainer.style.visibility="visible",this._alertContainer.classList.add("mapboxgl-scroll-zoom-blocker-show"),this._alertContainer.setAttribute("role","alert"),clearTimeout(this._alertTimer),this._alertTimer=window.setTimeout(()=>{this._alertContainer.classList.remove("mapboxgl-scroll-zoom-blocker-show"),this._alertContainer.removeAttribute("role")},200)}}class Pa{constructor(t,s){this._clickZoom=t,this._tapZoom=s}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class Ro{constructor(){this.reset()}reset(){this._active=!1}blur(){this.reset()}dblclick(t,s){return t.preventDefault(),{cameraAnimation:h=>{h.easeTo({duration:300,zoom:h.getZoom()+(t.shiftKey?-1:1),around:h.unproject(s)},{originalEvent:t})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class nl{constructor(){this._tap=new Lu({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,this._swipePoint=void 0,this._swipeTouch=0,this._tapTime=0,this._tap.reset()}touchstart(t,s,h){this._swipePoint||(this._tapTime&&t.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?h.length>0&&(this._swipePoint=s[0],this._swipeTouch=h[0].identifier):this._tap.touchstart(t,s,h))}touchmove(t,s,h){if(this._tapTime){if(this._swipePoint){if(h[0].identifier!==this._swipeTouch)return;const _=s[0],y=_.y-this._swipePoint.y;return this._swipePoint=_,t.preventDefault(),this._active=!0,{zoomDelta:y/128}}}else this._tap.touchmove(t,s,h)}touchend(t,s,h){this._tapTime?this._swipePoint&&h.length===0&&this.reset():this._tap.touchend(t,s,h)&&(this._tapTime=t.timeStamp)}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Vl{constructor(t,s,h){this._el=t,this._mousePan=s,this._touchPan=h}enable(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class sl{constructor(t,s,h){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=s,this._mousePitch=h}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class ag{constructor(t,s,h,_){this._el=t,this._touchZoom=s,this._touchRotate=h,this._tapDragZoom=_,this._rotationDisabled=!1,this._enabled=!0}enable(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add("mapboxgl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}const ku=c=>c.zoom||c.drag||c.pitch||c.rotate;class lg extends i.z{}class cg{constructor(){this.constants=[1,1,.01],this.radius=0}setup(t,s){const h=i.ab.vec3.sub([],s,t);this.radius=i.ab.vec3.length(h[2]<0?i.ab.vec3.div([],h,this.constants):[h[0],h[1],0])}projectRay(t){i.ab.vec3.div(t,t,this.constants),i.ab.vec3.normalize(t,t),i.ab.vec3.mul(t,t,this.constants);const s=i.ab.vec3.scale([],t,this.radius);if(s[2]>0){const h=i.ab.vec3.scale([],[0,0,1],i.ab.vec3.dot(s,[0,0,1])),_=i.ab.vec3.scale([],i.ab.vec3.normalize([],[s[0],s[1],0]),this.radius),y=i.ab.vec3.add([],s,i.ab.vec3.scale([],i.ab.vec3.sub([],i.ab.vec3.add([],_,h),s),2));s[0]=y[0],s[1]=y[1]}return s}}function Ih(c){return c.panDelta&&c.panDelta.mag()||c.zoomDelta||c.bearingDelta||c.pitchDelta}class fr{constructor(t,s){this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new tm(t),this._bearingSnap=s.bearingSnap,this._previousActiveHandlers={},this._trackingEllipsoid=new cg,this._dragOrigin=null,this._eventsInProgress={},this._addDefaultHandlers(s),i.aP(["handleEvent","handleWindowEvent"],this);const h=this._el;this._listeners=[[h,"touchstart",{passive:!0}],[h,"touchmove",{passive:!1}],[h,"touchend",void 0],[h,"touchcancel",void 0],[h,"mousedown",void 0],[h,"mousemove",void 0],[h,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[h,"mouseover",void 0],[h,"mouseout",void 0],[h,"dblclick",void 0],[h,"click",void 0],[h,"keydown",{capture:!1}],[h,"keyup",void 0],[h,"wheel",{passive:!1}],[h,"contextmenu",void 0],[window,"blur",void 0]];for(const[_,y,T]of this._listeners){const z=_===document?this.handleWindowEvent:this.handleEvent;_.addEventListener(y,z,T)}}destroy(){for(const[t,s,h]of this._listeners){const _=t===document?this.handleWindowEvent:this.handleEvent;t.removeEventListener(s,_,h)}}_addDefaultHandlers(t){const s=this._map,h=s.getCanvasContainer();this._add("mapEvent",new nm(s,t));const _=s.boxZoom=new ig(s,t);this._add("boxZoom",_);const y=new ng,T=new Ro;s.doubleClickZoom=new Pa(T,y),this._add("tapZoom",y),this._add("clickZoom",T);const z=new nl;this._add("tapDragZoom",z);const R=s.touchPitch=new Ch(s);this._add("touchPitch",R);const F=new zu(t),N=new Ph(t);s.dragRotate=new sl(t,F,N),this._add("mouseRotate",F,["mousePitch"]),this._add("mousePitch",N,["mouseRotate"]);const G=new rm(t),Z=new Ea(s,t);s.dragPan=new Vl(h,G,Z),this._add("mousePan",G),this._add("touchPan",Z,["touchZoom","touchRotate"]);const W=new om,te=new ff;s.touchZoomRotate=new ag(h,te,W,z),this._add("touchRotate",W,["touchPan","touchZoom"]),this._add("touchZoom",te,["touchPan","touchRotate"]),this._add("blockableMapEvent",new sm(s));const ee=s.scrollZoom=new Sc(s,this);this._add("scrollZoom",ee,["mousePan"]);const se=s.keyboard=new og;this._add("keyboard",se);for(const oe of["boxZoom","doubleClickZoom","tapDragZoom","touchPitch","dragRotate","dragPan","touchZoomRotate","scrollZoom","keyboard"])t.interactive&&t[oe]&&s[oe].enable(t[oe])}_add(t,s,h){this._handlers.push({handlerName:t,handler:s,allowed:h}),this._handlersById[t]=s}stop(t){if(!this._updatingCamera){for(const{handler:s}of this._handlers)s.reset();this._inertia.clear(),this._fireEvents({},{},t),this._changes=[],this._originalZoom=void 0}}isActive(){for(const{handler:t}of this._handlers)if(t.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!ku(this._eventsInProgress)||this.isZooming()}_isDragging(){return!!this._eventsInProgress.drag}_blockedByActive(t,s,h){for(const _ in t)if(_!==h&&(!s||s.indexOf(_)<0))return!0;return!1}handleWindowEvent(t){this.handleEvent(t,`${t.type}Window`)}_getMapTouches(t){const s=[];for(const h of t)this._el.contains(h.target)&&s.push(h);return s}handleEvent(t,s){this._updatingCamera=!0;const h=t.type==="renderFrame",_=h?void 0:t,y={needsRenderFrame:!1},T={},z={},R=t.touches?this._getMapTouches(t.touches):void 0,F=R?ui(this._el,R):h?void 0:Gt(this._el,t);for(const{handlerName:Z,handler:W,allowed:te}of this._handlers){if(!W.isEnabled())continue;let ee;this._blockedByActive(z,te,Z)?W.reset():W[s||t.type]&&(ee=W[s||t.type](t,F,R),this.mergeHandlerResult(y,T,ee,Z,_),ee&&ee.needsRenderFrame&&this._triggerRenderFrame()),(ee||W.isActive())&&(z[Z]=W)}const N={};for(const Z in this._previousActiveHandlers)z[Z]||(N[Z]=_);this._previousActiveHandlers=z,(Object.keys(N).length||Ih(y))&&(this._changes.push([y,T,N]),this._triggerRenderFrame()),(Object.keys(z).length||Ih(y))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:G}=y;G&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],G(this._map))}mergeHandlerResult(t,s,h,_,y){if(!h)return;i.l(t,h);const T={handlerName:_,originalEvent:h.originalEvent||y};h.zoomDelta!==void 0&&(s.zoom=T),h.panDelta!==void 0&&(s.drag=T),h.pitchDelta!==void 0&&(s.pitch=T),h.bearingDelta!==void 0&&(s.rotate=T)}_applyChanges(){const t={},s={},h={};for(const[_,y,T]of this._changes)_.panDelta&&(t.panDelta=(t.panDelta||new i.P(0,0))._add(_.panDelta)),_.zoomDelta&&(t.zoomDelta=(t.zoomDelta||0)+_.zoomDelta),_.bearingDelta&&(t.bearingDelta=(t.bearingDelta||0)+_.bearingDelta),_.pitchDelta&&(t.pitchDelta=(t.pitchDelta||0)+_.pitchDelta),_.around!==void 0&&(t.around=_.around),_.aroundCoord!==void 0&&(t.aroundCoord=_.aroundCoord),_.pinchAround!==void 0&&(t.pinchAround=_.pinchAround),_.noInertia&&(t.noInertia=_.noInertia),i.l(s,y),i.l(h,T);this._updateMapTransform(t,s,h),this._changes=[]}_updateMapTransform(t,s,h){const _=this._map,y=_.transform,T=he=>[he.x,he.y,he.z];if((he=>{const _e=this._eventsInProgress.drag;return _e&&!this._handlersById[_e.handlerName].isActive()})()&&!Ih(t)){const he=y.zoom;y.cameraElevationReference="sea",this._originalZoom!=null&&y._orthographicProjectionAtLowPitch&&y.projection.name!=="globe"&&y.pitch===0?(y.cameraElevationReference="ground",y.zoom=this._originalZoom):(y.recenterOnTerrain(),y.cameraElevationReference="ground"),he!==y.zoom&&this._map._update(!0)}if(y._isCameraConstrained&&_._stop(!0),!Ih(t))return void this._fireEvents(s,h,!0);let{panDelta:z,zoomDelta:R,bearingDelta:F,pitchDelta:N,around:G,aroundCoord:Z,pinchAround:W}=t;y._isCameraConstrained&&(R>0&&(R=0),y._isCameraConstrained=!1),W!==void 0&&(G=W),(R||(he=>s[he]&&!this._eventsInProgress[he])("drag"))&&G&&(this._dragOrigin=T(y.pointCoordinate3D(G)),this._originalZoom=y.zoom,this._trackingEllipsoid.setup(y._camera.position,this._dragOrigin)),y.cameraElevationReference="sea",_._stop(!0),G=G||_.transform.centerPoint,F&&(y.bearing+=F),N&&(y.pitch+=N),y._updateCameraState();const te=[0,0,0];if(z)if(y.projection.name==="mercator"){const he=this._trackingEllipsoid.projectRay(y.screenPointToMercatorRay(G).dir),_e=this._trackingEllipsoid.projectRay(y.screenPointToMercatorRay(G.sub(z)).dir);te[0]=_e[0]-he[0],te[1]=_e[1]-he[1]}else{const he=y.pointCoordinate(G);if(y.projection.name==="globe"){z=z.rotate(-y.angle);const _e=y._pixelsPerMercatorPixel/y.worldSize;te[0]=-z.x*i.dB(i.aS(he.y))*_e,te[1]=-z.y*i.dB(y.center.lat)*_e}else{const _e=y.pointCoordinate(G.sub(z));he&&_e&&(te[0]=_e.x-he.x,te[1]=_e.y-he.y)}}const ee=y.zoom,se=[0,0,0];if(R){const he=T(Z||y.pointCoordinate3D(G)),_e={dir:i.ab.vec3.normalize([],i.ab.vec3.sub([],he,y._camera.position))};if(_e.dir[2]<0){const pe=y.zoomDeltaToMovement(he,R);i.ab.vec3.scale(se,_e.dir,pe)}}const oe=i.ab.vec3.add(te,te,se);y._translateCameraConstrained(oe),R&&Math.abs(y.zoom-ee)>1e-4&&y.recenterOnTerrain(),y.cameraElevationReference="ground",this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(s,h,!0)}_fireEvents(t,s,h){const _=ku(this._eventsInProgress),y=ku(t),T={};for(const N in t){const{originalEvent:G}=t[N];this._eventsInProgress[N]||(T[`${N}start`]=G),this._eventsInProgress[N]=t[N]}!_&&y&&this._fireEvent("movestart",y.originalEvent);for(const N in T)this._fireEvent(N,T[N]);y&&this._fireEvent("move",y.originalEvent);for(const N in t){const{originalEvent:G}=t[N];this._fireEvent(N,G)}const z={};let R;for(const N in this._eventsInProgress){const{handlerName:G,originalEvent:Z}=this._eventsInProgress[N];this._handlersById[G].isActive()||(delete this._eventsInProgress[N],R=s[G]||Z,z[`${N}end`]=R)}for(const N in z)this._fireEvent(N,z[N]);const F=ku(this._eventsInProgress);if(h&&(_||y)&&!F){this._updatingCamera=!0;const N=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),G=Z=>Z!==0&&-this._bearingSnap<Z&&Z<this._bearingSnap;N?(G(N.bearing||this._map.getBearing())&&(N.bearing=0),this._map.easeTo(N,{originalEvent:R})):(this._map.fire(new i.z("moveend",{originalEvent:R})),G(this._map.getBearing())&&this._map.resetNorth()),this._updatingCamera=!1}}_fireEvent(t,s){this._map.fire(new i.z(t,s?{originalEvent:s}:{}))}_requestFrame(){return this._map.triggerRepaint(),this._map._renderTaskQueue.add(t=>{this._frameId=void 0,this.handleEvent(new lg("renderFrame",{timeStamp:t})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}const Ru="map.setFreeCameraOptions(...) and map.getFreeCameraOptions() are not yet supported for non-mercator projections.";class am extends i.E{constructor(t,s){super(),this._moving=!1,this._zooming=!1,this.transform=t,this._bearingSnap=s.bearingSnap,this._respectPrefersReducedMotion=s.respectPrefersReducedMotion!==!1,i.aP(["_renderFrameCallback"],this)}getCenter(){return new i.bO(this.transform.center.lng,this.transform.center.lat)}setCenter(t,s){return this.jumpTo({center:t},s)}panBy(t,s,h){return t=i.P.convert(t).mult(-1),this.panTo(this.transform.center,i.l({offset:t},s),h)}panTo(t,s,h){return this.easeTo(i.l({center:t},s),h)}getZoom(){return this.transform.zoom}setZoom(t,s){return this.jumpTo({zoom:t},s),this}zoomTo(t,s,h){return this.easeTo(i.l({zoom:t},s),h)}zoomIn(t,s){return this.zoomTo(this.getZoom()+1,t,s),this}zoomOut(t,s){return this.zoomTo(this.getZoom()-1,t,s),this}getBearing(){return this.transform.bearing}setBearing(t,s){return this.jumpTo({bearing:t},s),this}getPadding(){return this.transform.padding}setPadding(t,s){return this.jumpTo({padding:t},s),this}rotateTo(t,s,h){return this.easeTo(i.l({bearing:t},s),h)}resetNorth(t,s){return this.rotateTo(0,i.l({duration:1e3},t),s),this}resetNorthPitch(t,s){return this.easeTo(i.l({bearing:0,pitch:0,duration:1e3},t),s),this}snapToNorth(t,s){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(t,s):this}getPitch(){return this.transform.pitch}setPitch(t,s){return this.jumpTo({pitch:t},s),this}cameraForBounds(t,s){t=i.az.convert(t);const h=s&&s.bearing||0,_=s&&s.pitch||0,y=t.getNorthWest(),T=t.getSouthEast();return this._cameraForBounds(this.transform,y,T,h,_,s)}_extendPadding(t){const s={top:0,right:0,bottom:0,left:0};return t==null?i.l({},s,this.transform.padding):typeof t=="number"?{top:t,bottom:t,right:t,left:t}:i.l({},s,t)}_extendCameraOptions(t){return(t=i.l({offset:[0,0],maxZoom:this.transform.maxZoom},t)).padding=this._extendPadding(t.padding),t}_minimumAABBFrustumDistance(t,s){const h=s.max[0]-s.min[0],_=s.max[1]-s.min[1];return h/_>t.aspect?h/(2*Math.tan(.5*t.fovX)*t.aspect):_/(2*Math.tan(.5*t.fovY)*t.aspect)}_cameraForBoundsOnGlobe(t,s,h,_,y,T){const z=t.clone(),R=this._extendCameraOptions(T);z.bearing=_,z.pitch=y;const F=i.bO.convert(s),N=i.bO.convert(h),G=.5*(F.lat+N.lat),Z=.5*(F.lng+N.lng),W=i.dC(G,Z),te=i.ab.vec3.normalize([],W),ee=i.ab.vec3.normalize([],i.ab.vec3.cross([],te,[0,1,0])),se=i.ab.vec3.cross([],ee,te),oe=[ee[0],ee[1],ee[2],0,se[0],se[1],se[2],0,te[0],te[1],te[2],0,0,0,0,1],he=[W,i.dC(F.lat,F.lng),i.dC(N.lat,F.lng),i.dC(N.lat,N.lng),i.dC(F.lat,N.lng),i.dC(G,F.lng),i.dC(G,N.lng),i.dC(F.lat,Z),i.dC(N.lat,Z)];let _e=i.cd.fromPoints(he.map(Je=>[i.ab.vec3.dot(ee,Je),i.ab.vec3.dot(se,Je),i.ab.vec3.dot(te,Je)]));const pe=i.ab.vec3.transformMat4([],_e.center,oe);i.ab.vec3.squaredLength(pe)===0&&i.ab.vec3.set(pe,0,0,1),i.ab.vec3.normalize(pe,pe),i.ab.vec3.scale(pe,pe,i.ax),z.center=i.dD(pe);const Me=z.getWorldToCameraMatrix(),xe=i.ab.mat4.invert(new Float64Array(16),Me);_e=i.cd.applyTransform(_e,i.ab.mat4.multiply([],Me,oe));const we=this._extendAABB(_e,z,R,_);if(!we)return void i.w("Map cannot fit within canvas with the given bounds, padding, and/or offset.");_e=we,i.ab.vec3.transformMat4(pe,pe,Me);const ve=.5*(_e.max[2]-_e.min[2]),Ae=this._minimumAABBFrustumDistance(z,_e),Oe=i.ab.vec3.scale([],[0,0,1],ve),Xe=i.ab.vec3.add(Oe,pe,Oe),He=Ae+(z.pitch===0?0:i.ab.vec3.distance(pe,Xe)),ke=z.globeCenterInViewSpace,Ne=i.ab.vec3.sub([],pe,[ke[0],ke[1],ke[2]]);i.ab.vec3.normalize(Ne,Ne),i.ab.vec3.scale(Ne,Ne,He);const st=i.ab.vec3.add([],pe,Ne);i.ab.vec3.transformMat4(st,st,xe);const ut=i.ds/i.ax,xt=i.ab.vec3.length(st),Ge=i.bH(Math.max(xt*ut-i.ds,Number.EPSILON),0),lt=Math.min(z.zoomFromMercatorZAdjusted(Ge),R.maxZoom);return lt>.5*(i.c6+i.bY)?(z.setProjection({name:"mercator"}),z.zoom=lt,this._cameraForBounds(z,s,h,_,y,T)):{center:z.center,zoom:lt,bearing:_,pitch:y}}_extendAABB(t,s,h,_){const y=.5*((h.padding.left||0)+(h.padding.right||0)),T=.5*((h.padding.top||0)+(h.padding.bottom||0)),z=T,R=y,F=y,N=T,G=s.width-(R+F),Z=s.height-(z+N),W=i.ab.vec3.sub([],t.max,t.min),te=Math.min(G/W[0],Z/W[1]),ee=Math.min(s.scaleZoom(s.scale*te),h.maxZoom);if(isNaN(ee))return null;const se=s.scale/s.zoomScale(ee),oe=new i.cd([t.min[0]-R*se,t.min[1]-N*se,t.min[2]],[t.max[0]+F*se,t.max[1]+z*se,t.max[2]]),he=(typeof h.offset.x=="number"&&typeof h.offset.y=="number"?new i.P(h.offset.x,h.offset.y):i.P.convert(h.offset)).rotate(-i.ai(_));return oe.center[0]-=he.x*se,oe.center[1]+=he.y*se,oe}queryTerrainElevation(t,s){const h=this.transform.elevation;return h?(s=i.l({},{exaggerated:!0},s),h.getAtPoint(i.aa.fromLngLat(t),null,s.exaggerated)):null}_cameraForBounds(t,s,h,_,y,T){if(t.projection.name==="globe")return this._cameraForBoundsOnGlobe(t,s,h,_,y,T);const z=t.clone(),R=this._extendCameraOptions(T);z.bearing=_,z.pitch=y;const F=i.bO.convert(s),N=i.bO.convert(h),G=new i.bO(F.lng,N.lat),Z=new i.bO(N.lng,F.lat),W=z.project(F),te=z.project(N),ee=this.queryTerrainElevation(F),se=this.queryTerrainElevation(N),oe=this.queryTerrainElevation(G),he=this.queryTerrainElevation(Z),_e=[[W.x,W.y,Math.min(ee||0,se||0,oe||0,he||0)],[te.x,te.y,Math.max(ee||0,se||0,oe||0,he||0)]];let pe=i.cd.fromPoints(_e);const Me=z.getWorldToCameraMatrix(),xe=i.ab.mat4.invert(new Float64Array(16),Me);pe=i.cd.applyTransform(pe,Me);const we=this._extendAABB(pe,z,R,_);if(!we)return void i.w("Map cannot fit within canvas with the given bounds, padding, and/or offset.");pe=we;const ve=.5*i.ab.vec3.sub([],pe.max,pe.min)[2],Ae=this._minimumAABBFrustumDistance(z,pe),Oe=[0,0,1,0];i.ab.vec4.transformMat4(Oe,Oe,Me),i.ab.vec4.normalize(Oe,Oe);const Xe=i.ab.vec3.scale([],Oe,Ae+ve),He=i.ab.vec3.add([],pe.center,Xe);i.ab.vec3.transformMat4(pe.center,pe.center,xe),i.ab.vec3.transformMat4(He,He,xe);const ke=z.unproject(new i.P(pe.center[0],pe.center[1])),Ne=i.dE(z.projection,ke),st=Math.pow(2,Ne),ut=Math.min(z._zoomFromMercatorZ(He[2]*z.pixelsPerMeter*st/z.worldSize),R.maxZoom);return z.mercatorFromTransition&&ut<.5*(i.c6+i.bY)?(z.setProjection({name:"globe"}),z.zoom=ut,this._cameraForBounds(z,s,h,_,y,T)):{center:ke,zoom:ut,bearing:_,pitch:y}}fitBounds(t,s,h){const _=this.cameraForBounds(t,s);return this._fitInternal(_,s,h)}fitScreenCoordinates(t,s,h,_,y){const T=i.P.convert(t),z=i.P.convert(s),R=new i.P(Math.min(T.x,z.x),Math.min(T.y,z.y)),F=new i.P(Math.max(T.x,z.x),Math.max(T.y,z.y));if(this.transform.projection.name==="mercator"&&this.transform.anyCornerOffEdge(T,z))return this;const N=this.transform.pointLocation3D(R),G=this.transform.pointLocation3D(F),Z=this.transform.pointLocation3D(new i.P(R.x,F.y)),W=this.transform.pointLocation3D(new i.P(F.x,R.y)),te=[Math.min(N.lng,G.lng,Z.lng,W.lng),Math.min(N.lat,G.lat,Z.lat,W.lat)],ee=[Math.max(N.lng,G.lng,Z.lng,W.lng),Math.max(N.lat,G.lat,Z.lat,W.lat)],se=_&&_.pitch?_.pitch:this.getPitch(),oe=this._cameraForBounds(this.transform,te,ee,h,se,_);return this._fitInternal(oe,_,y)}_fitInternal(t,s,h){return t?(s=i.l(t,s)).linear?this.easeTo(s,h):this.flyTo(s,h):this}jumpTo(t,s){this.stop();const h=t.preloadOnly?this.transform.clone():this.transform;let _=!1,y=!1,T=!1;"zoom"in t&&h.zoom!==+t.zoom&&(_=!0,h.zoom=+t.zoom),t.center!==void 0&&(h.center=i.bO.convert(t.center)),"bearing"in t&&h.bearing!==+t.bearing&&(y=!0,h.bearing=+t.bearing),"pitch"in t&&h.pitch!==+t.pitch&&(T=!0,h.pitch=+t.pitch);const z=typeof t.padding=="number"?this._extendPadding(t.padding):t.padding;if(t.padding!=null&&!h.isPaddingEqual(z))if(t.retainPadding===!1){const R=h.clone();R.padding=z,h.setLocationAtPoint(h.center,R.centerPoint)}else h.padding=z;return t.preloadOnly?(this._preloadTiles(h),this):(this.fire(new i.z("movestart",s)).fire(new i.z("move",s)),_&&this.fire(new i.z("zoomstart",s)).fire(new i.z("zoom",s)).fire(new i.z("zoomend",s)),y&&this.fire(new i.z("rotatestart",s)).fire(new i.z("rotate",s)).fire(new i.z("rotateend",s)),T&&this.fire(new i.z("pitchstart",s)).fire(new i.z("pitch",s)).fire(new i.z("pitchend",s)),this.fire(new i.z("moveend",s)))}getFreeCameraOptions(){return this.transform.projection.supportsFreeCamera||i.w(Ru),this.transform.getFreeCameraOptions()}setFreeCameraOptions(t,s){const h=this.transform;if(!h.projection.supportsFreeCamera)return i.w(Ru),this;this.stop();const _=h.zoom,y=h.pitch,T=h.bearing;h.setFreeCameraOptions(t);const z=_!==h.zoom,R=y!==h.pitch,F=T!==h.bearing;return this.fire(new i.z("movestart",s)).fire(new i.z("move",s)),z&&this.fire(new i.z("zoomstart",s)).fire(new i.z("zoom",s)).fire(new i.z("zoomend",s)),F&&this.fire(new i.z("rotatestart",s)).fire(new i.z("rotate",s)).fire(new i.z("rotateend",s)),R&&this.fire(new i.z("pitchstart",s)).fire(new i.z("pitch",s)).fire(new i.z("pitchend",s)),this.fire(new i.z("moveend",s)),this}easeTo(t,s){this._stop(!1,t.easeId),((t=i.l({offset:[0,0],duration:500,easing:i.dA},t)).animate===!1||this._prefersReducedMotion(t))&&(t.duration=0);const h=this.transform,_=this.getZoom(),y=this.getBearing(),T=this.getPitch(),z=this.getPadding(),R="zoom"in t?+t.zoom:_,F="bearing"in t?this._normalizeBearing(t.bearing,y):y,N="pitch"in t?+t.pitch:T,G=this._extendPadding(t.padding),Z=i.P.convert(t.offset);let W,te,ee;if(h.projection.name==="globe"){const Oe=i.aa.fromLngLat(h.center),Xe=Z.rotate(-h.angle);Oe.x+=Xe.x/h.worldSize,Oe.y+=Xe.y/h.worldSize;const He=Oe.toLngLat(),ke=i.bO.convert(t.center||He);this._normalizeCenter(ke),W=h.centerPoint.add(Xe),te=new i.P(Oe.x,Oe.y).mult(h.worldSize),ee=new i.P(i.at(ke.lng),i.aA(ke.lat)).mult(h.worldSize).sub(te)}else{W=h.centerPoint.add(Z);const Oe=h.pointLocation(W),Xe=i.bO.convert(t.center||Oe);this._normalizeCenter(Xe),te=h.project(Oe),ee=h.project(Xe).sub(te)}const se=h.zoomScale(R-_);let oe,he;t.around&&(oe=i.bO.convert(t.around),he=h.locationPoint(oe));const _e=this._zooming||R!==_,pe=this._rotating||y!==F,Me=this._pitching||N!==T,xe=!h.isPaddingEqual(G),we=t.retainPadding===!1?h.clone():h,ve=Oe=>Xe=>{if(_e&&(Oe.zoom=i.af(_,R,Xe)),pe&&(Oe.bearing=i.af(y,F,Xe)),Me&&(Oe.pitch=i.af(T,N,Xe)),xe&&(we.interpolatePadding(z,G,Xe),W=we.centerPoint.add(Z)),oe)Oe.setLocationAtPoint(oe,he);else{const He=Oe.zoomScale(Oe.zoom-_),ke=R>_?Math.min(2,se):Math.max(.5,se),Ne=Math.pow(ke,1-Xe),st=Oe.unproject(te.add(ee.mult(Xe*Ne)).mult(He));Oe.setLocationAtPoint(Oe.renderWorldCopies?st.wrap():st,W)}return t.preloadOnly||this._fireMoveEvents(s),Oe};if(t.preloadOnly){const Oe=this._emulate(ve,t.duration,h);return this._preloadTiles(Oe),this}const Ae={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching};return this._zooming=_e,this._rotating=pe,this._pitching=Me,this._padding=xe,this._easeId=t.easeId,this._prepareEase(s,t.noMoveStart,Ae),this._ease(ve(h),Oe=>{h.cameraElevationReference==="sea"&&h.recenterOnTerrain(),this._afterEase(s,Oe)},t),this}_prepareEase(t,s,h={}){this._moving=!0,this.transform.cameraElevationReference="sea",this.transform._orthographicProjectionAtLowPitch&&this.transform.pitch===0&&this.transform.projection.name!=="globe"&&(this.transform.cameraElevationReference="ground"),s||h.moving||this.fire(new i.z("movestart",t)),this._zooming&&!h.zooming&&this.fire(new i.z("zoomstart",t)),this._rotating&&!h.rotating&&this.fire(new i.z("rotatestart",t)),this._pitching&&!h.pitching&&this.fire(new i.z("pitchstart",t))}_fireMoveEvents(t){this.fire(new i.z("move",t)),this._zooming&&this.fire(new i.z("zoom",t)),this._rotating&&this.fire(new i.z("rotate",t)),this._pitching&&this.fire(new i.z("pitch",t))}_afterEase(t,s){if(this._easeId&&s&&this._easeId===s)return;this._easeId=void 0,this.transform.cameraElevationReference="ground";const h=this._zooming,_=this._rotating,y=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,h&&this.fire(new i.z("zoomend",t)),_&&this.fire(new i.z("rotateend",t)),y&&this.fire(new i.z("pitchend",t)),this.fire(new i.z("moveend",t))}flyTo(t,s){if(this._prefersReducedMotion(t)){const Je=i.ay(t,["center","zoom","bearing","pitch","around","padding","retainPadding"]);return this.jumpTo(Je,s)}this.stop(),t=i.l({offset:[0,0],speed:1.2,curve:1.42,easing:i.dA},t);const h=this.transform,_=this.getZoom(),y=this.getBearing(),T=this.getPitch(),z=this.getPadding(),R="zoom"in t?i.aw(+t.zoom,h.minZoom,h.maxZoom):_,F="bearing"in t?this._normalizeBearing(t.bearing,y):y,N="pitch"in t?+t.pitch:T,G=this._extendPadding(t.padding),Z=h.zoomScale(R-_),W=i.P.convert(t.offset);let te=h.centerPoint.add(W);const ee=h.pointLocation(te),se=i.bO.convert(t.center||ee);this._normalizeCenter(se);const oe=h.project(ee),he=h.project(se).sub(oe);let _e=t.curve;const pe=Math.max(h.width,h.height),Me=pe/Z,xe=he.mag();if("minZoom"in t){const Je=i.aw(Math.min(t.minZoom,_,R),h.minZoom,h.maxZoom),_t=pe/h.zoomScale(Je-_);_e=Math.sqrt(_t/xe*2)}const we=_e*_e;function ve(Je){const _t=(Me*Me-pe*pe+(Je?-1:1)*we*we*xe*xe)/(2*(Je?Me:pe)*we*xe);return Math.log(Math.sqrt(_t*_t+1)-_t)}function Ae(Je){return(Math.exp(Je)-Math.exp(-Je))/2}function Oe(Je){return(Math.exp(Je)+Math.exp(-Je))/2}const Xe=ve(0);let He=function(Je){return Oe(Xe)/Oe(Xe+_e*Je)},ke=function(Je){return pe*((Oe(Xe)*(Ae(_t=Xe+_e*Je)/Oe(_t))-Ae(Xe))/we)/xe;var _t},Ne=(ve(1)-Xe)/_e;if(Math.abs(xe)<1e-6||!isFinite(Ne)){if(Math.abs(pe-Me)<1e-6)return this.easeTo(t,s);const Je=Me<pe?-1:1;Ne=Math.abs(Math.log(Me/pe))/_e,ke=function(){return 0},He=function(_t){return Math.exp(Je*_e*_t)}}t.duration="duration"in t?+t.duration:1e3*Ne/("screenSpeed"in t?+t.screenSpeed/_e:+t.speed),t.maxDuration&&t.duration>t.maxDuration&&(t.duration=0);const st=y!==F,ut=N!==T,xt=!h.isPaddingEqual(G),Ge=t.retainPadding===!1?h.clone():h,lt=Je=>_t=>{const ct=_t*Ne,nt=1/He(ct);Je.zoom=_t===1?R:_+Je.scaleZoom(nt),st&&(Je.bearing=i.af(y,F,_t)),ut&&(Je.pitch=i.af(T,N,_t)),xt&&(Ge.interpolatePadding(z,G,_t),te=Ge.centerPoint.add(W));const Lt=_t===1?se:Je.unproject(oe.add(he.mult(ke(ct))).mult(nt));return Je.setLocationAtPoint(Je.renderWorldCopies?Lt.wrap():Lt,te),Je._updateCameraOnTerrain(),t.preloadOnly||this._fireMoveEvents(s),Je};if(t.preloadOnly){const Je=this._emulate(lt,t.duration,h);return this._preloadTiles(Je),this}return this._zooming=!0,this._rotating=st,this._pitching=ut,this._padding=xt,this._prepareEase(s,!1),this._ease(lt(h),()=>this._afterEase(s),t),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_requestRenderFrame(t){}_cancelRenderFrame(t){}_stop(t,s){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),this._easeFrameId=void 0,this._onEaseFrame=void 0),this._onEaseEnd){const h=this._onEaseEnd;this._onEaseEnd=void 0,h.call(this,s)}if(!t){const h=this.handlers;h&&h.stop(!1)}return this}_ease(t,s,h){h.animate===!1||h.duration===0?(t(1),s()):(this._easeStart=i.q.now(),this._easeOptions=h,this._onEaseFrame=t,this._onEaseEnd=s,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_renderFrameCallback(){const t=Math.min((i.q.now()-this._easeStart)/this._easeOptions.duration,1),s=this._onEaseFrame;s&&s(this._easeOptions.easing(t)),t<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()}_normalizeBearing(t,s){t=i.bF(t,-180,180);const h=Math.abs(t-s);return Math.abs(t-360-s)<h&&(t-=360),Math.abs(t+360-s)<h&&(t+=360),t}_normalizeCenter(t){const s=this.transform;if(s.maxBounds||s.projection.name!=="globe"&&!s.renderWorldCopies)return;const h=t.lng-s.center.lng;t.lng+=h>180?-360:h<-180?360:0}_prefersReducedMotion(t){return this._respectPrefersReducedMotion&&i.q.prefersReducedMotion&&!(t&&t.essential)}_emulate(t,s,h){const _=Math.ceil(15*s/1e3),y=[],T=t(h.clone());for(let z=0;z<=_;z++){const R=T(z/_);y.push(R.clone())}return y}_preloadTiles(t,s){}}class lm{constructor(t={}){this.options=t,i.aP(["_toggleAttribution","_updateEditLink","_updateData","_updateCompact"],this)}getDefaultPosition(){return"bottom-right"}onAdd(t){const s=this.options&&this.options.compact,h=t._getUIString("AttributionControl.ToggleAttribution");this._map=t,this._container=be("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._compactButton=be("button","mapboxgl-ctrl-attrib-button",this._container),this._compactButton.type="button",this._compactButton.addEventListener("click",this._toggleAttribution),this._compactButton.setAttribute("aria-label",h);const _=be("span","mapboxgl-ctrl-icon",this._compactButton);return _.setAttribute("aria-hidden","true"),_.setAttribute("title",h),this._innerContainer=be("div","mapboxgl-ctrl-attrib-inner",this._container),s&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),s===void 0&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container}onRemove(){this._container.remove(),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0,this._attribHTML=void 0}_toggleAttribution(){this._container.classList.contains("mapboxgl-compact-show")?(this._container.classList.remove("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-expanded","false")):(this._container.classList.add("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-expanded","true"))}_updateEditLink(){let t=this._editLink;t||(t=this._editLink=this._container.querySelector(".mapbox-improve-map"));const s=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:this._map._requestManager._customAccessToken||i.e.ACCESS_TOKEN}];if(t){const h=s.reduce((_,y,T)=>(y.value&&(_+=`${y.key}=${y.value}${T<s.length-1?"&":""}`),_),"?");t.href=`${i.e.FEEDBACK_URL}/${h}#${Iu(this._map,!0)}`,t.rel="noopener nofollow"}}_updateData(t){!t||t.sourceDataType!=="metadata"&&t.sourceDataType!=="visibility"&&t.dataType!=="style"||(this._updateAttributions(),this._updateEditLink())}_updateAttributions(){if(!this._map.style)return;let t=[];if(this._map.style.stylesheet){const _=this._map.style.stylesheet;this.styleOwner=_.owner,this.styleId=_.id}const s=this._map.style._mergedSourceCaches;for(const _ in s){const y=s[_];if(y.used){const T=y.getSource();T.attribution&&t.indexOf(T.attribution)<0&&t.push(T.attribution)}}t.sort((_,y)=>_.length-y.length),t=t.filter((_,y)=>{for(let T=y+1;T<t.length;T++)if(t[T].indexOf(_)>=0)return!1;return!0}),this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?t=[...this.options.customAttribution,...t]:t.unshift(this.options.customAttribution));const h=t.join(" | ");h!==this._attribHTML&&(this._attribHTML=h,t.length?(this._innerContainer.innerHTML=h,this._container.classList.remove("mapboxgl-attrib-empty")):this._container.classList.add("mapboxgl-attrib-empty"),this._editLink=null)}_updateCompact(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact","mapboxgl-compact-show")}}class Ul{constructor(){i.aP(["_updateLogo","_updateCompact"],this)}onAdd(t){this._map=t,this._container=be("div","mapboxgl-ctrl");const s=be("a","mapboxgl-ctrl-logo");return s.target="_blank",s.rel="noopener nofollow",s.href="https://www.mapbox.com/",s.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),s.setAttribute("rel","noopener nofollow"),this._container.appendChild(s),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){this._container.remove(),this._map.off("sourcedata",this._updateLogo),this._map.off("resize",this._updateCompact)}getDefaultPosition(){return"bottom-left"}_updateLogo(t){t&&t.sourceDataType!=="metadata"||(this._container.style.display=this._logoRequired()?"block":"none")}_logoRequired(){if(!this._map.style)return!0;const t=this._map.style._sourceCaches;if(Object.entries(t).length===0)return!0;for(const s in t){const h=t[s].getSource();if(h.hasOwnProperty("mapbox_logo")&&!h.mapbox_logo)return!1}return!0}_updateCompact(){const t=this._container.children;if(t.length){const s=t[0];this._map.getCanvasContainer().offsetWidth<250?s.classList.add("mapboxgl-compact"):s.classList.remove("mapboxgl-compact")}}}class Ou{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(t){const s=++this._id;return this._queue.push({callback:t,id:s,cancelled:!1}),s}remove(t){const s=this._currentlyRunning,h=s?this._queue.concat(s):this._queue;for(const _ of h)if(_.id===t)return void(_.cancelled=!0)}run(t=0){const s=this._currentlyRunning=this._queue;this._queue=[];for(const h of s)if(!h.cancelled&&(h.callback(t),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}class mo{constructor(t){this.jumpTo(t)}getValue(t){if(t<=this._startTime)return this._start;if(t>=this._endTime)return this._end;const s=i.cB((t-this._startTime)/(this._endTime-this._startTime));return this._start*(1-s)+this._end*s}isEasing(t){return t>=this._startTime&&t<=this._endTime}jumpTo(t){this._startTime=-1/0,this._endTime=-1/0,this._start=t,this._end=t}easeTo(t,s,h){this._start=this.getValue(s),this._end=t,this._startTime=s,this._endTime=s+h}}const _o={"AttributionControl.ToggleAttribution":"Toggle attribution","FullscreenControl.Enter":"Enter fullscreen","FullscreenControl.Exit":"Exit fullscreen","GeolocateControl.FindMyLocation":"Find my location","GeolocateControl.LocationNotAvailable":"Location not available","LogoControl.Title":"Mapbox homepage","Map.Title":"Map","NavigationControl.ResetBearing":"Reset bearing to north","NavigationControl.ZoomIn":"Zoom in","NavigationControl.ZoomOut":"Zoom out","ScrollZoomBlocker.CtrlMessage":"Use ctrl + scroll to zoom the map","ScrollZoomBlocker.CmdMessage":"Use ⌘ + scroll to zoom the map","TouchPanBlocker.Message":"Use two fingers to move the map"},Ec=["mouseenter","mouseover","mouseleave","mouseout"];class rl extends i.z{constructor(t,s,h,_){const{point:y,lngLat:T,originalEvent:z,target:R}=t;super(t.type,{point:y,lngLat:T,originalEvent:z,target:R}),this.preventDefault=()=>{t.preventDefault()},this.id=s,this.interaction=h,this.feature=_}}class Pc{constructor(t){this.map=t,this.interactionsByType=new Map,this.typeById=new Map,this.filters=new Map,this.delegatedHandlers=new Map,this.handleType=this.handleType.bind(this)}add(t,s){if(this.typeById.has(t))throw new Error(`Interaction id "${t}" already exists.`);const{type:h,filter:_}=s;_&&this.filters.set(t,i.aZ(_));const y=this.interactionsByType.get(h)||new Map;if(y.size===0){if(Ec.includes(h)){const{mousemove:T,mouseout:z}=this._createDelegatedHandlers(t,s);this.map.on("mousemove",T),this.map.on("mouseout",z),this.delegatedHandlers.set(t,{mousemove:T,mouseout:z})}else this.map.on(h,this.handleType);this.interactionsByType.set(h,y)}y.set(t,s),this.typeById.set(t,h)}get(t){const s=this.typeById.get(t);if(!s)return;const h=this.interactionsByType.get(s);return h?h.get(t):void 0}remove(t){const s=this.typeById.get(t);if(!s)return;this.typeById.delete(t),this.filters.delete(t);const h=this.interactionsByType.get(s);if(h){if(h.delete(t),this.delegatedHandlers.has(t)){const{mousemove:_,mouseout:y}=this.delegatedHandlers.get(t);this.map.off("mousemove",_),this.map.off("mouseout",y),this.delegatedHandlers.delete(t)}h.size===0&&this.map.off(s,this.handleType)}}queryTargets(t,s){const h=[];for(const[_,y]of s)y.target&&h.push({targetId:_,target:y.target,filter:this.filters.get(_)});return this.map.style.queryRenderedTargets(t,h,this.map.transform)}handleType(t,s){const h=this.interactionsByType.get(t.type),_=Array.from(h).reverse();s=s||this.queryTargets(t.point,_);let y=!1;for(const T of s){for(const[z,R]of _){if(!R.target)continue;const F=T.variants?T.variants[z]:null;if(F){for(const N of F){const G=new i.cw(T,N);if(R.handler(new rl(t,z,R,G))!==!1){y=!0;break}}if(y)break}}if(y)break}if(!y)for(const[T,z]of _){const{handler:R,target:F}=z;if(!F&&R(new rl(t,T,z,null))!==!1)break}}_createDelegatedHandlers(t,s){switch(s.type){case"mouseenter":case"mouseover":{let h=!1,_=new Set;return{mousemove:y=>{const T=this.queryTargets(y.point,[[t,s]]),z=new Set;if(!T.length)return h=!1,void _.clear();const R=[];for(const F of T)_.has(F.id)||(z.add(F.id),R.push(F));h&&!R.length||(h=!0,_=z,y.type=s.type,this.handleType(y,R))},mouseout:()=>{h=!1,_.clear()}}}case"mouseleave":case"mouseout":{let h=[];return{mousemove:_=>{const y=this.queryTargets(_.point,[[t,s]]);if(!y.length)return _.type=s.type,this.handleType(_,h),void(h=y);const T=[],z=new Set(y.map(R=>R.id));for(const R of h)z.has(R.id)||T.push(R);T.length&&(_.type=s.type,this.handleType(_,T)),h=y},mouseout:_=>{h.length&&(_.type=s.type,this.handleType(_,h),h=[])}}}}}}function _f(c,t){if(Array.isArray(c)&&Array.isArray(t)){const s=new Set(c),h=new Set(t);return s.size===h.size&&c.every(_=>h.has(_))}return i.bn(c,t)}const Ui={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:85,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:!1,performanceMetricsCollection:!0,bearingSnap:7,clickTolerance:3,pitchWithRotate:!0,hash:!1,attributionControl:!0,antialias:!1,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,minTileCacheSize:null,maxTileCacheSize:null,localIdeographFontFamily:"sans-serif",localFontFamily:null,transformRequest:null,accessToken:null,fadeDuration:300,respectPrefersReducedMotion:!0,crossSourceCollisions:!0,collectResourceTiming:!1,testMode:!1,precompilePrograms:!0,scaleFactor:1,spriteFormat:"auto"},ol={showCompass:!0,showZoom:!0,visualizePitch:!1};class hg{constructor(t,s,h=!1){this._clickTolerance=10,this.element=s,this.mouseRotate=new zu({clickTolerance:t.dragRotate._mouseRotate._clickTolerance}),this.map=t,h&&(this.mousePitch=new Ph({clickTolerance:t.dragRotate._mousePitch._clickTolerance})),i.aP(["mousedown","mousemove","mouseup","touchstart","touchmove","touchend","reset"],this),s.addEventListener("mousedown",this.mousedown),s.addEventListener("touchstart",this.touchstart,{passive:!1}),s.addEventListener("touchmove",this.touchmove),s.addEventListener("touchend",this.touchend),s.addEventListener("touchcancel",this.reset)}down(t,s){this.mouseRotate.mousedown(t,s),this.mousePitch&&this.mousePitch.mousedown(t,s),ht()}move(t,s){const h=this.map,_=this.mouseRotate.mousemoveWindow(t,s),y=_&&_.bearingDelta;if(y&&h.setBearing(h.getBearing()+y),this.mousePitch){const T=this.mousePitch.mousemoveWindow(t,s),z=T&&T.pitchDelta;z&&h.setPitch(h.getPitch()+z)}}off(){const t=this.element;t.removeEventListener("mousedown",this.mousedown),t.removeEventListener("touchstart",this.touchstart,{passive:!1}),t.removeEventListener("touchmove",this.touchmove),t.removeEventListener("touchend",this.touchend),t.removeEventListener("touchcancel",this.reset),this.offTemp()}offTemp(){gt(),window.removeEventListener("mousemove",this.mousemove),window.removeEventListener("mouseup",this.mouseup)}mousedown(t){this.down(i.l({},t,{ctrlKey:!0,preventDefault:()=>t.preventDefault()}),Gt(this.element,t)),window.addEventListener("mousemove",this.mousemove),window.addEventListener("mouseup",this.mouseup)}mousemove(t){this.move(t,Gt(this.element,t))}mouseup(t){this.mouseRotate.mouseupWindow(t),this.mousePitch&&this.mousePitch.mouseupWindow(t),this.offTemp()}touchstart(t){t.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=ui(this.element,t.targetTouches)[0],this.down({type:"mousedown",button:0,ctrlKey:!0,preventDefault:()=>t.preventDefault()},this._startPos))}touchmove(t){t.targetTouches.length!==1?this.reset():(this._lastPos=ui(this.element,t.targetTouches)[0],this.move({preventDefault:()=>t.preventDefault()},this._lastPos))}touchend(t){t.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)<this._clickTolerance&&this.element.click(),this.reset()}reset(){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()}}function cm(c,t,s){if(c=new i.bO(c.lng,c.lat),t){const h=new i.bO(c.lng-360,c.lat),_=new i.bO(c.lng+360,c.lat),y=360*Math.ceil(Math.abs(c.lng-s.center.lng)/360),T=s.locationPoint(c).distSqr(t),z=t.x<0||t.y<0||t.x>s.width||t.y>s.height;s.locationPoint(h).distSqr(t)<T&&(z||Math.abs(h.lng-s.center.lng)<y)?c=h:s.locationPoint(_).distSqr(t)<T&&(z||Math.abs(_.lng-s.center.lng)<y)&&(c=_)}for(;Math.abs(c.lng-s.center.lng)>180;){const h=s.locationPoint(c);if(h.x>=0&&h.y>=0&&h.x<=s.width&&h.y<=s.height)break;c.lng>s.center.lng?c.lng-=360:c.lng+=360}return c}const Lh={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};class sa extends i.E{constructor(t,s){if(super(),(t instanceof HTMLElement||s)&&(t=i.l({element:t},s)),i.aP(["_update","_onMove","_onUp","_addDragHandler","_onMapClick","_onKeyPress","_clearFadeTimer"],this),this._anchor=t&&t.anchor||"center",this._color=t&&t.color||"#3FB1CE",this._scale=t&&t.scale||1,this._draggable=t&&t.draggable||!1,this._clickTolerance=t&&t.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=t&&t.rotation||0,this._rotationAlignment=t&&t.rotationAlignment||"auto",this._pitchAlignment=t&&t.pitchAlignment&&t.pitchAlignment||"auto",this._updateMoving=()=>this._update(!0),this._occludedOpacity=t&&t.occludedOpacity||.2,t&&t.element)this._element=t.element,this._offset=i.P.convert(t&&t.offset||[0,0]);else{this._defaultMarker=!0,this._element=be("div");const y=41,T=27,z=Ze("svg",{display:"block",height:y*this._scale+"px",width:T*this._scale+"px",viewBox:`0 0 ${T} ${y}`},this._element),R=Ze("radialGradient",{id:"shadowGradient"},Ze("defs",{},z));Ze("stop",{offset:"10%","stop-opacity":.4},R),Ze("stop",{offset:"100%","stop-opacity":.05},R),Ze("ellipse",{cx:13.5,cy:34.8,rx:10.5,ry:5.25,fill:"url(#shadowGradient)"},z),Ze("path",{fill:this._color,d:"M27,13.5C27,19.07 20.25,27 14.75,34.5C14.02,35.5 12.98,35.5 12.25,34.5C6.75,27 0,19.22 0,13.5C0,6.04 6.04,0 13.5,0C20.96,0 27,6.04 27,13.5Z"},z),Ze("path",{opacity:.25,d:"M13.5,0C6.04,0 0,6.04 0,13.5C0,19.22 6.75,27 12.25,34.5C13,35.52 14.02,35.5 14.75,34.5C20.25,27 27,19.07 27,13.5C27,6.04 20.96,0 13.5,0ZM13.5,1C20.42,1 26,6.58 26,13.5C26,15.9 24.5,19.18 22.22,22.74C19.95,26.3 16.71,30.14 13.94,33.91C13.74,34.18 13.61,34.32 13.5,34.44C13.39,34.32 13.26,34.18 13.06,33.91C10.28,30.13 7.41,26.31 5.02,22.77C2.62,19.23 1,15.95 1,13.5C1,6.58 6.58,1 13.5,1Z"},z),Ze("circle",{fill:"white",cx:13.5,cy:13.5,r:5.5},z),this._offset=i.P.convert(t&&t.offset||[0,-14])}this._element.hasAttribute("aria-label")||this._element.setAttribute("aria-label","Map marker"),this._element.hasAttribute("role")||this._element.setAttribute("role","img"),this._element.classList.add("mapboxgl-marker"),this._element.addEventListener("dragstart",y=>{y.preventDefault()}),this._element.addEventListener("mousedown",y=>{y.preventDefault()});const h=this._element.classList;for(const y in Lh)h.remove(`mapboxgl-marker-anchor-${y}`);h.add(`mapboxgl-marker-anchor-${this._anchor}`);const _=t&&t.className?t.className.trim().split(/\s+/):[];h.add(..._),this._popup=null}addTo(t){return t===this._map||(this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._element),t.on("move",this._updateMoving),t.on("moveend",this._update),t.on("remove",this._clearFadeTimer),t._addMarker(this),this.setDraggable(this._draggable),this._update(),t.on("click",this._onMapClick)),this}remove(){const t=this._map;return t&&(t.off("click",this._onMapClick),t.off("move",this._updateMoving),t.off("moveend",this._update),t.off("mousedown",this._addDragHandler),t.off("touchstart",this._addDragHandler),t.off("mouseup",this._onUp),t.off("touchend",this._onUp),t.off("mousemove",this._onMove),t.off("touchmove",this._onMove),t.off("remove",this._clearFadeTimer),t._removeMarker(this),this._map=void 0),this._clearFadeTimer(),this._element.remove(),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(t){return this._lngLat=i.bO.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(!0),this}getElement(){return this._element}setPopup(t){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeAttribute("role"),this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),t){if(!("offset"in t.options)){const _=Math.sqrt(Math.pow(13.5,2)/2);t.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[_,-1*(38.1-13.5+_)],"bottom-right":[-_,-1*(38.1-13.5+_)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=t,t._marker=this,this._lngLat&&this._popup.setLngLat(this._lngLat),this._element.setAttribute("role","button"),this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress),this._element.setAttribute("aria-expanded","false")}return this}_onKeyPress(t){const s=t.code,h=t.charCode||t.keyCode;s!=="Space"&&s!=="Enter"&&h!==32&&h!==13||this.togglePopup()}_onMapClick(t){const s=t.originalEvent.target,h=this._element;this._popup&&(s===h||h.contains(s))&&this.togglePopup()}getPopup(){return this._popup}togglePopup(){const t=this._popup;return t?(t.isOpen()?(t.remove(),this._element.setAttribute("aria-expanded","false")):this._map&&(t.addTo(this._map),this._element.setAttribute("aria-expanded","true")),this):this}_behindTerrain(){const t=this._map,s=this._pos;if(!t||!s)return!1;const h=t.unproject(s),_=t.getFreeCameraOptions();if(!_.position)return!1;const y=_.position.toLngLat();return y.distanceTo(h)<.9*y.distanceTo(this._lngLat)}_evaluateOpacity(){const t=this._map;if(!t)return;const s=this._pos;if(!s||s.x<0||s.x>t.transform.width||s.y<0||s.y>t.transform.height)return void this._clearFadeTimer();const h=t.unproject(s);let _;t._showingGlobe()&&i.dH(t.transform,this._lngLat)?_=0:(_=1-t._queryFogOpacity(h),t.transform._terrainEnabled()&&t.getTerrain()&&this._behindTerrain()&&(_*=this._occludedOpacity)),this._element.style.opacity=`${_}`,this._element.style.pointerEvents=_>0?"auto":"none",this._popup&&this._popup._setOpacity(_),this._fadeTimer=null}_clearFadeTimer(){this._fadeTimer&&(clearTimeout(this._fadeTimer),this._fadeTimer=null)}_updateDOM(){const t=this._pos;if(!t||!this._map)return;const s=this._offset.mult(this._scale);this._element.style.transform=`
|
||
translate(${t.x}px,${t.y}px)
|
||
${Lh[this._anchor]}
|
||
${this._calculateXYTransform()} ${this._calculateZTransform()}
|
||
translate(${s.x}px,${s.y}px)
|
||
`}_calculateXYTransform(){const t=this._pos,s=this._map,h=this.getPitchAlignment();if(!s||!t||h!=="map")return"";if(!s._showingGlobe()){const R=s.getPitch();return R?`rotateX(${R}deg)`:""}const _=i.c4(i.dI(s.transform,this._lngLat)),y=t.sub(i.dJ(s.transform)),T=Math.abs(y.x)+Math.abs(y.y);if(T===0)return"";const z=_/T;return`rotateX(${-y.y*z}deg) rotateY(${y.x*z}deg)`}_calculateZTransform(){const t=this._pos,s=this._map;if(!s||!t)return"";let h=0;const _=this.getRotationAlignment();if(_==="map")if(s._showingGlobe()){const y=s.project(new i.bO(this._lngLat.lng,this._lngLat.lat+.001)),T=s.project(new i.bO(this._lngLat.lng,this._lngLat.lat-.001)).sub(y);h=i.c4(Math.atan2(T.y,T.x))-90}else h=-s.getBearing();else if(_==="horizon"){const y=i.ac(4,6,s.getZoom()),T=i.dJ(s.transform);T.y+=y*s.transform.height;const z=t.sub(T),R=i.c4(Math.atan2(z.y,z.x));h=(R>90?R-270:R+90)*(1-y)}return h+=this._rotation,h?`rotateZ(${h}deg)`:""}_update(t){cancelAnimationFrame(this._updateFrameId);const s=this._map;s&&(s.transform.renderWorldCopies&&(this._lngLat=cm(this._lngLat,this._pos,s.transform)),this._pos=s.project(this._lngLat),t===!0?this._updateFrameId=requestAnimationFrame(()=>{this._element&&this._pos&&this._anchor&&(this._pos=this._pos.round(),this._updateDOM())}):this._pos=this._pos.round(),s._requestDomTask(()=>{this._map&&(this._element&&this._pos&&this._anchor&&this._updateDOM(),(s._showingGlobe()||s.getTerrain()||s.getFog())&&!this._fadeTimer&&(this._fadeTimer=window.setTimeout(this._evaluateOpacity.bind(this),60)))}))}getOffset(){return this._offset}setOffset(t){return this._offset=i.P.convert(t),this._update(),this}addClassName(t){return this._element.classList.add(t),this}removeClassName(t){return this._element.classList.remove(t),this}toggleClassName(t){return this._element.classList.toggle(t)}_onMove(t){const s=this._map;if(!s)return;const h=this._pointerdownPos,_=this._positionDelta;if(h&&_){if(!this._isDragging){const y=this._clickTolerance||s._clickTolerance;if(t.point.dist(h)<y)return;this._isDragging=!0}this._pos=t.point.sub(_),this._lngLat=s.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new i.z("dragstart"))),this.fire(new i.z("drag"))}}_onUp(){this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1;const t=this._map;t&&(t.off("mousemove",this._onMove),t.off("touchmove",this._onMove)),this._state==="active"&&this.fire(new i.z("dragend")),this._state="inactive"}_addDragHandler(t){const s=this._map,h=this._pos;s&&h&&this._element.contains(t.originalEvent.target)&&(t.preventDefault(),this._positionDelta=t.point.sub(h),this._pointerdownPos=t.point,this._state="pending",s.on("mousemove",this._onMove),s.on("touchmove",this._onMove),s.once("mouseup",this._onUp),s.once("touchend",this._onUp))}setDraggable(t){this._draggable=!!t;const s=this._map;return s&&(t?(s.on("mousedown",this._addDragHandler),s.on("touchstart",this._addDragHandler)):(s.off("mousedown",this._addDragHandler),s.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(t){return this._rotation=t||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(t){return this._rotationAlignment=t||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment==="auto"||this._rotationAlignment==="horizon"&&this._map&&!this._map._showingGlobe()?"viewport":this._rotationAlignment}setPitchAlignment(t){return this._pitchAlignment=t||"auto",this._update(),this}getPitchAlignment(){return this._pitchAlignment==="auto"?this.getRotationAlignment():this._pitchAlignment}setOccludedOpacity(t){return this._occludedOpacity=t||.2,this._update(),this}getOccludedOpacity(){return this._occludedOpacity}}const Aa={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0,showUserHeading:!1},pr={maxWidth:100,unit:"metric"},Vr={kilometer:"km",meter:"m",mile:"mi",foot:"ft","nautical-mile":"nm"},Fs={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},hm=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function jn(c=new i.P(0,0),t="bottom"){if(typeof c=="number"){const s=Math.round(Math.sqrt(.5*Math.pow(c,2)));switch(t){case"top":return new i.P(0,c);case"top-left":return new i.P(s,s);case"top-right":return new i.P(-s,s);case"bottom":return new i.P(0,-c);case"bottom-left":return new i.P(s,-s);case"bottom-right":return new i.P(-s,-s);case"left":return new i.P(c,0);case"right":return new i.P(-c,0)}return new i.P(0,0)}return c instanceof i.P||Array.isArray(c)?i.P.convert(c):i.P.convert(c[t]||[0,0])}return{version:O,supported:Te.supported,setRTLTextPlugin:i.dK,getRTLTextPluginStatus:i.dL,Map:class extends am{constructor(c){Y.mark(j.create);const t=c;if((c=i.l({},Ui,c)).minZoom!=null&&c.maxZoom!=null&&c.minZoom>c.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(c.minPitch!=null&&c.maxPitch!=null&&c.minPitch>c.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(c.minPitch!=null&&c.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(c.maxPitch!=null&&c.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(c.antialias&&i.dF(window)&&(c.antialias=!1,i.w("Antialiasing is disabled for this WebGL context to avoid browser bug: https://github.com/mapbox/mapbox-gl-js/issues/11609")),super(new va(c.minZoom,c.maxZoom,c.minPitch,c.maxPitch,c.renderWorldCopies),c),this._repaint=!!c.repaint,this._interactive=c.interactive,this._minTileCacheSize=c.minTileCacheSize,this._maxTileCacheSize=c.maxTileCacheSize,this._failIfMajorPerformanceCaveat=c.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=c.preserveDrawingBuffer,this._antialias=c.antialias,this._trackResize=c.trackResize,this._bearingSnap=c.bearingSnap,this._refreshExpiredTiles=c.refreshExpiredTiles,this._fadeDuration=c.fadeDuration,this._isInitialLoad=!0,this._crossSourceCollisions=c.crossSourceCollisions,this._collectResourceTiming=c.collectResourceTiming,this._language=this._parseLanguage(c.language),this._worldview=c.worldview,this._renderTaskQueue=new Ou,this._domRenderTaskQueue=new Ou,this._controls=[],this._markers=[],this._popups=[],this._mapId=i.aV(),this._locale=i.l({},_o,c.locale),this._clickTolerance=c.clickTolerance,this._cooperativeGestures=c.cooperativeGestures,this._performanceMetricsCollection=c.performanceMetricsCollection,this._tessellationStep=c.tessellationStep,this._containerWidth=0,this._containerHeight=0,this._showParseStatus=!0,this._precompilePrograms=c.precompilePrograms,this._scaleFactorChanged=!1,this._averageElevationLastSampledAt=-1/0,this._averageElevationExaggeration=0,this._averageElevation=new mo(0),this._interactionRange=[1/0,-1/0],this._visibilityHidden=0,this._useExplicitProjection=!1,this._frameId=0,this._scaleFactor=c.scaleFactor,this._requestManager=new hn(c.transformRequest,c.accessToken,c.testMode),this._silenceAuthErrors=!!c.testMode,this._contextCreateOptions=c.contextCreateOptions?{...c.contextCreateOptions}:{},typeof c.container=="string"){const s=document.getElementById(c.container);if(!s)throw new Error(`Container '${c.container.toString()}' not found.`);this._container=s}else{if(!(c.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=c.container}if(this._container.childNodes.length>0&&i.w("The map container element should be empty, otherwise the map's interactivity will be negatively impacted. If you want to display a message when WebGL is not supported, use the Mapbox GL Supported plugin instead."),c.maxBounds&&this.setMaxBounds(c.maxBounds),this._spriteFormat=c.spriteFormat,i.aP(["_onWindowOnline","_onWindowResize","_onVisibilityChange","_onMapScroll","_contextLost","_contextRestored"],this),this._setupContainer(),this._tp||(this._tp=new Su),this._tp.registerParameter(this,["Debug"],"showOverdrawInspector"),this._tp.registerParameter(this,["Debug"],"showTileBoundaries"),this._tp.registerParameter(this,["Debug"],"showParseStatus"),this._tp.registerParameter(this,["Debug"],"repaint"),this._tp.registerParameter(this,["Debug"],"showTileAABBs"),this._tp.registerParameter(this,["Debug"],"showPadding"),this._tp.registerParameter(this,["Debug"],"showCollisionBoxes",{noSave:!0}),this._tp.registerParameter(this.transform,["Debug"],"freezeTileCoverage",{noSave:!0},()=>{this._update()}),this._tp.registerParameter(this,["Debug","Wireframe"],"showTerrainWireframe"),this._tp.registerParameter(this,["Debug","Wireframe"],"showLayers2DWireframe"),this._tp.registerParameter(this,["Debug","Wireframe"],"showLayers3DWireframe"),this._tp.registerParameter(this,["Scaling"],"_scaleFactor",{min:.1,max:10,step:.1},()=>{this.setScaleFactor(this._scaleFactor)}),this._setupPainter(),this.painter===void 0)throw new Error("Failed to initialize WebGL.");if(this.on("move",()=>this._update(!1)),this.on("moveend",()=>this._update(!1)),this.on("zoom",()=>this._update(!0)),this._fullscreenchangeEvent="onfullscreenchange"in document?"fullscreenchange":"webkitfullscreenchange",window.addEventListener("online",this._onWindowOnline,!1),window.addEventListener("resize",this._onWindowResize,!1),window.addEventListener("orientationchange",this._onWindowResize,!1),window.addEventListener(this._fullscreenchangeEvent,this._onWindowResize,!1),window.addEventListener("visibilitychange",this._onVisibilityChange,!1),this.handlers=new fr(this,c),this._localFontFamily=c.localFontFamily,this._localIdeographFontFamily=c.localIdeographFontFamily,(c.style||!c.testMode)&&this.setStyle(c.style||i.e.DEFAULT_STYLE,{config:c.config,localFontFamily:this._localFontFamily,localIdeographFontFamily:this._localIdeographFontFamily}),c.projection&&this.setProjection(c.projection),this.indoor=new Cl(this),c.hash&&(this._hash=new uf(typeof c.hash=="string"&&c.hash||void 0).addTo(this)),!this._hash||!this._hash._onHashChange()){t.center==null&&t.zoom==null||(this.transform._unmodified=!1),this.jumpTo({center:c.center,zoom:c.zoom,bearing:c.bearing,pitch:c.pitch});const s=c.bounds;s&&(this.resize(),this.fitBounds(s,i.l({},c.fitBoundsOptions,{duration:0})))}this.resize(),c.attributionControl&&this.addControl(new lm({customAttribution:c.customAttribution})),this._logoControl=new Ul,this.addControl(this._logoControl,c.logoPosition),this.on("style.load",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet),this._postStyleLoadEvent()}),this.on("data",s=>{this._update(s.dataType==="style"),this.fire(new i.z(`${s.dataType}data`,s))}),this.on("dataloading",s=>{this.fire(new i.z(`${s.dataType}dataloading`,s))}),this._interactions=new Pc(this)}_getMapId(){return this._mapId}addControl(c,t){if(t===void 0&&(t=c.getDefaultPosition?c.getDefaultPosition():"top-right"),!c||!c.onAdd)return this.fire(new i.y(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));const s=c.onAdd(this);this._controls.push(c);const h=this._controlPositions[t];return t.indexOf("bottom")!==-1?h.insertBefore(s,h.firstChild):h.appendChild(s),this}removeControl(c){if(!c||!c.onRemove)return this.fire(new i.y(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));const t=this._controls.indexOf(c);return t>-1&&this._controls.splice(t,1),c.onRemove(this),this}hasControl(c){return this._controls.indexOf(c)>-1}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}resize(c){if(this._updateContainerDimensions(),this._containerWidth===this.transform.width&&this._containerHeight===this.transform.height)return this;this._resizeCanvas(this._containerWidth,this._containerHeight),this.transform.resize(this._containerWidth,this._containerHeight),this.painter.resize(Math.ceil(this._containerWidth),Math.ceil(this._containerHeight));const t=!this._moving;return t&&this.fire(new i.z("movestart",c)).fire(new i.z("move",c)),this.fire(new i.z("resize",c)),t&&this.fire(new i.z("moveend",c)),this}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()||null}setMaxBounds(c){return this.transform.setMaxBounds(i.az.convert(c)),this._update()}setMinZoom(c){if((c=c??-2)>=-2&&c<=this.transform.maxZoom)return this.transform.minZoom=c,this._update(),this.getZoom()<c?this.setZoom(c):this.fire(new i.z("zoomstart")).fire(new i.z("zoom")).fire(new i.z("zoomend")),this;throw new Error("minZoom must be between -2 and the current maxZoom, inclusive")}getMinZoom(){return this.transform.minZoom}setMaxZoom(c){if((c=c??22)>=this.transform.minZoom)return this.transform.maxZoom=c,this._update(),this.getZoom()>c?this.setZoom(c):this.fire(new i.z("zoomstart")).fire(new i.z("zoom")).fire(new i.z("zoomend")),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(c){if((c=c??0)<0)throw new Error("minPitch must be greater than or equal to 0");if(c>=0&&c<=this.transform.maxPitch)return this.transform.minPitch=c,this._update(),this.getPitch()<c?this.setPitch(c):this.fire(new i.z("pitchstart")).fire(new i.z("pitch")).fire(new i.z("pitchend")),this;throw new Error("minPitch must be between 0 and the current maxPitch, inclusive")}getMinPitch(){return this.transform.minPitch}setMaxPitch(c){if((c=c??85)>85)throw new Error("maxPitch must be less than or equal to 85");if(c>=this.transform.minPitch)return this.transform.maxPitch=c,this._update(),this.getPitch()>c?this.setPitch(c):this.fire(new i.z("pitchstart")).fire(new i.z("pitch")).fire(new i.z("pitchend")),this;throw new Error("maxPitch must be greater than or equal to minPitch")}getMaxPitch(){return this.transform.maxPitch}getScaleFactor(){return this._scaleFactor}setScaleFactor(c){return this._scaleFactor=c,this.painter.scaleFactor=c,this._tp.refreshUI(),this._scaleFactorChanged=!0,this.style._updateFilteredLayers(t=>t.type==="symbol"),this._update(!0),this}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(c){return this.transform.renderWorldCopies=c,this.transform.renderWorldCopies||this._forceMarkerAndPopupUpdate(!0),this._update()}getLanguage(){return this._language}_parseLanguage(c){return c==="auto"?navigator.language:Array.isArray(c)?c.length===0?void 0:c.map(t=>t==="auto"?navigator.language:t):c}setLanguage(c){const t=this._parseLanguage(c);if(!this.style||t===this._language)return this;this._language=t,this.style.reloadSources();for(const s of this._controls)s._setLanguage&&s._setLanguage(this._language);return this}getWorldview(){return this._worldview}setWorldview(c){return this.style&&c!==this._worldview?(this._worldview=c,this.style.reloadSources(),this):this}getProjection(){return this.transform.mercatorFromTransition?{name:"globe",center:[0,0]}:this.transform.getProjection()}_showingGlobe(){return this.transform.projection.name==="globe"}setProjection(c){return this._lazyInitEmptyStyle(),c?typeof c=="string"&&(c={name:c}):c=null,this._useExplicitProjection=!!c,this._prioritizeAndUpdateProjection(c,this.style.projection)}_updateProjectionTransition(){if(this.getProjection().name!=="globe")return;const c=this.transform,t=c.projection.name;let s;t==="globe"&&c.zoom>=i.bY?(c.setMercatorFromTransition(),s=!0):t==="mercator"&&c.zoom<i.bY&&(c.setProjection({name:"globe"}),s=!0),s&&(this.style.applyProjectionUpdate(),this.style._forceSymbolLayerUpdate())}_prioritizeAndUpdateProjection(c,t){return this._updateProjection(c||t||{name:"mercator"})}_updateProjection(c){let t;return t=c.name==="globe"&&this.transform.zoom>=i.bY?this.transform.setMercatorFromTransition():this.transform.setProjection(c),this.style.applyProjectionUpdate(),t&&(this.painter.clearBackgroundTiles(),this.style.clearSources(),this._update(!0),this._forceMarkerAndPopupUpdate(!0)),this}project(c){return this.transform.locationPoint3D(i.bO.convert(c))}unproject(c){return this.transform.pointLocation3D(i.P.convert(c))}isMoving(){return this._moving||this.handlers&&this.handlers.isMoving()||!1}isZooming(){return this._zooming||this.handlers&&this.handlers.isZooming()||!1}isRotating(){return this._rotating||this.handlers&&this.handlers.isRotating()||!1}_isDragging(){return this.handlers&&this.handlers._isDragging()||!1}_createDelegatedListener(c,t,s){const h=_=>{let y=[];if(Array.isArray(t)){const T=t.filter(z=>this.getLayer(z));y=T.length?this.queryRenderedFeatures(_,{layers:T}):[]}else y=this.queryRenderedFeatures(_,{target:t});return y};if(c==="mouseenter"||c==="mouseover"){let _=!1;return{listener:s,targets:t,delegates:{mousemove:T=>{const z=h(T.point);z.length?_||(_=!0,s.call(this,new Nr(c,this,T.originalEvent,{features:z}))):_=!1},mouseout:()=>{_=!1}}}}if(c==="mouseleave"||c==="mouseout"){let _=!1;return{listener:s,targets:t,delegates:{mousemove:z=>{h(z.point).length?_=!0:_&&(_=!1,s.call(this,new Nr(c,this,z.originalEvent)))},mouseout:z=>{_&&(_=!1,s.call(this,new Nr(c,this,z.originalEvent)))}}}}{const _=y=>{const T=h(y.point);T.length&&(y.features=T,s.call(this,y),delete y.features)};return{listener:s,targets:t,delegates:{[c]:_}}}}on(c,t,s){if(typeof t=="function"||s===void 0)return super.on(c,t);if(typeof t=="string"&&(t=[t]),!this._areTargetsValid(t))return this;const h=this._createDelegatedListener(c,t,s);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[c]=this._delegatedListeners[c]||[],this._delegatedListeners[c].push(h);for(const _ in h.delegates)this.on(_,h.delegates[_]);return this}once(c,t,s){if(typeof t=="function"||s===void 0)return super.once(c,t);if(typeof t=="string"&&(t=[t]),!this._areTargetsValid(t))return this;const h=this._createDelegatedListener(c,t,s);for(const _ in h.delegates)this.once(_,h.delegates[_]);return this}off(c,t,s){if(typeof t=="function"||s===void 0)return super.off(c,t);if(typeof t=="string"&&(t=[t]),!this._areTargetsValid(t))return this;const h=this._delegatedListeners?this._delegatedListeners[c]:void 0;return h&&(_=>{for(let y=0;y<_.length;y++){const T=_[y];if(T.listener===s&&_f(T.targets,t)){for(const z in T.delegates)this.off(z,T.delegates[z]);return _.splice(y,1),this}}})(h),this}queryRenderedFeatures(c,t){if(!this.style)return[];if(c===void 0||c instanceof i.P||Array.isArray(c)||t!==void 0||(t=c,c=void 0),c=c||[[0,0],[this.transform.width,this.transform.height]],!t){const y=this.style.queryRenderedFeatures(c,void 0,this.transform),T=this.style.queryRenderedFeatureset(c,void 0,this.transform);return y.concat(T)}let s=!0;if(t.target&&(s=this._isTargetValid(t.target),s&&!t.layers))return this.style.queryRenderedFeatureset(c,t,this.transform);let h=!0;if(t.layers&&Array.isArray(t.layers)){for(const y of t.layers)if(!this._isValidId(y)){h=!1;break}if(h&&!t.target)return this.style.queryRenderedFeatures(c,t,this.transform)}let _=[];return h&&(_=_.concat(this.style.queryRenderedFeatures(c,t,this.transform))),s&&(_=_.concat(this.style.queryRenderedFeatureset(c,t,this.transform))),_}querySourceFeatures(c,t){return!c||typeof c=="string"&&!this._isValidId(c)?[]:this.style.querySourceFeatures(c,t)}isPointOnSurface(c){const{name:t}=this.transform.projection;return t!=="globe"&&t!=="mercator"&&i.w(`${t} projection does not support isPointOnSurface, this API may behave unexpectedly.`),this.transform.isPointOnSurface(i.P.convert(c))}addInteraction(c,t){return this._interactions.add(c,t),this}removeInteraction(c){return this._interactions.remove(c),this}setStyle(c,t){return t=i.l({},{localIdeographFontFamily:this._localIdeographFontFamily,localFontFamily:this._localFontFamily},t),this.style&&c&&t.diff!==!1&&t.localFontFamily===this._localFontFamily&&t.localIdeographFontFamily===this._localIdeographFontFamily&&!t.config?(this.style._diffStyle(c,(s,h)=>{s?(i.w(`Unable to perform style diff: ${String(s.message||s.error||s)}. Rebuilding the style from scratch.`),this._updateStyle(c,t)):h&&this._update(!0)},()=>{this._postStyleLoadEvent()}),this):(this._localIdeographFontFamily=t.localIdeographFontFamily,this._localFontFamily=t.localFontFamily,this._updateStyle(c,t))}_getUIString(c){const t=this._locale[c];if(t==null)throw new Error(`Missing UI string '${c}'`);return t}_updateStyle(c,t){if(this.style&&(this.style.setEventedParent(null),this.style._remove(),this.style=void 0),c){const s=i.l({},t);t&&t.config&&(s.initialConfig=t.config,delete s.config),this.style=new ur(this,s).load(c),this.style.setEventedParent(this,{style:this.style})}return this._updateTerrain(),this}_lazyInitEmptyStyle(){this.style||(this.style=new ur(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():(i.w("There is no style added to the map."),!1)}_isValidId(c){return c==null?(this.fire(new i.y(new Error("IDs can't be empty."))),!1):!i.cr(c)||(this.fire(new i.y(new Error(`IDs can't contain special symbols: "${c}".`))),!1)}_isTargetValid(c){return"featuresetId"in c?this._isValidId("importId"in c?c.importId:c.featuresetId):"layerId"in c&&this._isValidId(c.layerId)}_areTargetsValid(c){if(Array.isArray(c)){for(const t of c)if(!this._isValidId(t))return!1;return!0}return this._isTargetValid(c)}addSource(c,t){return this._isValidId(c)?(this._lazyInitEmptyStyle(),this.style.addSource(c,t),this._update(!0)):this}isSourceLoaded(c){return!!this._isValidId(c)&&!!this.style&&this.style._isSourceCacheLoaded(c)}areTilesLoaded(){return this.style.areTilesLoaded()}addSourceType(c,t,s){this._lazyInitEmptyStyle(),this.style.addSourceType(c,t,s)}removeSource(c){return this._isValidId(c)?(this.style.removeSource(c),this._updateTerrain(),this._update(!0)):this}getSource(c){return this._isValidId(c)?this.style.getOwnSource(c):null}addImage(c,t,{pixelRatio:s=1,sdf:h=!1,stretchX:_,stretchY:y,content:T}={}){if(this._lazyInitEmptyStyle(),t instanceof HTMLImageElement||ImageBitmap&&t instanceof ImageBitmap){const{width:z,height:R,data:F}=i.q.getImageData(t);this.style.addImage(c,{data:new i.r({width:z,height:R},F),pixelRatio:s,stretchX:_,stretchY:y,content:T,sdf:h,version:0,usvg:!1})}else if(t.width===void 0||t.height===void 0)this.fire(new i.y(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));else{const{width:z,height:R}=t,F=t;this.style.addImage(c,{data:new i.r({width:z,height:R},new Uint8Array(F.data)),pixelRatio:s,stretchX:_,stretchY:y,content:T,sdf:h,usvg:!1,version:0,userImage:F}),F.onAdd&&F.onAdd(this,c)}}updateImage(c,t){this._lazyInitEmptyStyle();const s=this.style.getImage(c);if(!s)return void this.fire(new i.y(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));const h=t instanceof HTMLImageElement||ImageBitmap&&t instanceof ImageBitmap?i.q.getImageData(t):t,{width:_,height:y,data:T}=h;if(_===void 0||y===void 0)return void this.fire(new i.y(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));if(_!==(s.usvg?s.icon.usvg_tree.width:s.data.width)||y!==(s.usvg?s.icon.usvg_tree.height:s.data.height))return void this.fire(new i.y(new Error(`The width and height of the updated image (${_}, ${y})
|
||
must be that same as the previous version of the image
|
||
(${s.data.width}, ${s.data.height})`)));const z=!(t instanceof HTMLImageElement||ImageBitmap&&t instanceof ImageBitmap);let R=!1;s.usvg?(s.data=new i.r({width:_,height:y},new Uint8Array(T)),s.usvg=!1,s.icon=void 0,R=!0):s.data.replace(T,z),this.style.updateImage(c,s,R)}hasImage(c){return c?!!this.style&&!!this.style.getImage(c):(this.fire(new i.y(new Error("Missing required image id"))),!1)}removeImage(c){this.style.removeImage(c)}loadImage(c,t){i.o(this._requestManager.transformRequest(c,i.R.Image),(s,h)=>{t(s,h instanceof HTMLImageElement?i.q.getImageData(h):h)})}listImages(){return this.style.listImages()}addModel(c,t){this._lazyInitEmptyStyle(),this.style.addModel(c,t)}hasModel(c){return c?this.style.hasModel(c):(this.fire(new i.y(new Error("Missing required model id"))),!1)}removeModel(c){this.style.removeModel(c)}listModels(){return this.style.listModels()}addLayer(c,t){return this._isValidId(c.id)?(this._lazyInitEmptyStyle(),this.style.addLayer(c,t),this._update(!0)):this}getSlot(c){const t=this.getLayer(c);return t&&t.slot||null}setSlot(c,t){return this.style.setSlot(c,t),this.style.mergeLayers(),this._update(!0)}addImport(c,t){return this.style.addImport(c,t),this}updateImport(c,t){return typeof t!="string"&&t.id!==c?(this.removeImport(c),this.addImport(t)):(this.style.updateImport(c,t),this._update(!0))}removeImport(c){return this.style.removeImport(c),this}moveImport(c,t){return this.style.moveImport(c,t),this._update(!0)}moveLayer(c,t){return this._isValidId(c)?(this.style.moveLayer(c,t),this._update(!0)):this}removeLayer(c){return this._isValidId(c)?(this.style.removeLayer(c),this._update(!0)):this}getLayer(c){if(!this._isValidId(c))return null;const t=this.style.getOwnLayer(c);return t?t.type==="custom"?t.implementation:t.serialize():void 0}getSlots(){return this.style.getSlots()}setLayerZoomRange(c,t,s){return this._isValidId(c)?(this.style.setLayerZoomRange(c,t,s),this._update(!0)):this}setFilter(c,t,s={}){return this._isValidId(c)?(this.style.setFilter(c,t,s),this._update(!0)):this}getFilter(c){return this._isValidId(c)?this.style.getFilter(c):null}setPaintProperty(c,t,s,h={}){return this._isValidId(c)?(this.style.setPaintProperty(c,t,s,h),this._update(!0)):this}getPaintProperty(c,t){return this._isValidId(c)?this.style.getPaintProperty(c,t):null}setLayoutProperty(c,t,s,h={}){return this._isValidId(c)?(this.style.setLayoutProperty(c,t,s,h),this._update(!0)):this}getLayoutProperty(c,t){return this._isValidId(c)?this.style.getLayoutProperty(c,t):null}getSchema(c){return this.style.getSchema(c)}setSchema(c,t){return this.style.setSchema(c,t),this._update(!0)}getConfig(c){return this.style.getConfig(c)}setConfig(c,t){return this.style.setConfig(c,t),this._update(!0)}getConfigProperty(c,t){return this.style.getConfigProperty(c,t)}setConfigProperty(c,t,s){return this.style.setConfigProperty(c,t,s),this._update(!0)}getFeaturesetDescriptors(c){return this.style.getFeaturesetDescriptors(c)}setLights(c){if(this._lazyInitEmptyStyle(),c&&c.length===1&&c[0].type==="flat"){const t=c[0];t.properties?this.style.setFlatLight(t.properties,t.id,{}):this.style.setFlatLight({},"flat")}else this.style.setLights(c),this.painter.terrain&&(this.painter.terrain.invalidateRenderCache=!0);return this._update(!0)}getLights(){const c=this.style.getLights()||[];return c.length===0&&c.push({id:this.style.light.id,type:"flat",properties:this.style.getFlatLight()}),c}setLight(c,t={}){return console.log("The `map.setLight` function is deprecated, prefer using `map.setLights` with `flat` light type instead."),this.setLights([{id:"flat",type:"flat",properties:c}])}getLight(){return console.log("The `map.getLight` function is deprecated, prefer using `map.getLights` instead."),this.style.getFlatLight()}setTerrain(c){return this._lazyInitEmptyStyle(),!c&&this.transform.projection.requiresDraping?this.style.setTerrainForDraping():this.style.setTerrain(c),this._averageElevationLastSampledAt=-1/0,this._update(!0)}getTerrain(){return this.style?this.style.getTerrain():null}setFog(c){return this._lazyInitEmptyStyle(),this.style.setFog(c),this._update(!0)}getFog(){return this.style?this.style.getFog():null}setSnow(c){return this._lazyInitEmptyStyle(),this.style.setSnow(c),this._update(!0)}getSnow(){return this.style?this.style.getSnow():null}setRain(c){return this._lazyInitEmptyStyle(),this.style.setRain(c),this._update(!0)}getRain(){return this.style?this.style.getRain():null}setColorTheme(c){return this._lazyInitEmptyStyle(),this.style.setColorTheme(c),this._update(!0)}setImportColorTheme(c,t){return this._lazyInitEmptyStyle(),this.style.setImportColorTheme(c,t),this._update(!0)}setCamera(c){return this.style.setCamera(c),this._triggerCameraUpdate(c)}_triggerCameraUpdate(c){return this._update(this.transform.setOrthographicProjectionAtLowPitch(c["camera-projection"]==="orthographic"))}getCamera(){return this.style.camera}_queryFogOpacity(c){return this.style&&this.style.fog?this.style.fog.getOpacityAtLatLng(i.bO.convert(c),this.transform):0}setFeatureState(c,t){return c.source&&!this._isValidId(c.source)?this:(this.style.setFeatureState(c,t),this._update())}removeFeatureState(c,t){return c.source&&!this._isValidId(c.source)?this:(this.style.removeFeatureState(c,t),this._update())}getFeatureState(c){return c.source&&!this._isValidId(c.source)?null:this.style.getFeatureState(c)}_updateContainerDimensions(){if(!this._container)return;const c=this._container.getBoundingClientRect().width||400,t=this._container.getBoundingClientRect().height||300;let s,h,_,y=this._container;for(;y&&(!h||!_);){const T=window.getComputedStyle(y).transform;T&&T!=="none"&&(s=T.match(/matrix.*\((.+)\)/)[1].split(", "),s[0]&&s[0]!=="0"&&s[0]!=="1"&&(h=s[0]),s[3]&&s[3]!=="0"&&s[3]!=="1"&&(_=s[3])),y=y.parentElement}this._containerWidth=h?Math.abs(c/h):c,this._containerHeight=_?Math.abs(t/_):t}_detectMissingCSS(){window.getComputedStyle(this._missingCSSCanary).getPropertyValue("background-color")!=="rgb(250, 128, 114)"&&i.w("This page appears to be missing CSS declarations for Mapbox GL JS, which may cause the map to display incorrectly. Please ensure your page includes mapbox-gl.css, as described in https://www.mapbox.com/mapbox-gl-js/api/.")}_setupContainer(){const c=this._container;c.classList.add("mapboxgl-map"),(this._missingCSSCanary=be("div","mapboxgl-canary",c)).style.visibility="hidden",this._detectMissingCSS();const t=this._canvasContainer=be("div","mapboxgl-canvas-container",c);this._canvas=be("canvas","mapboxgl-canvas",t),this._interactive&&(t.classList.add("mapboxgl-interactive"),this._canvas.setAttribute("tabindex","0")),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region"),this._updateContainerDimensions(),this._resizeCanvas(this._containerWidth,this._containerHeight);const s=this._controlContainer=be("div","mapboxgl-control-container",c),h=this._controlPositions={};["top-left","top","top-right","right","bottom-right","bottom","bottom-left","left"].forEach(_=>{h[_]=be("div",`mapboxgl-ctrl-${_}`,s)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(c,t){const s=i.q.devicePixelRatio||1;this._canvas.width=s*Math.ceil(c),this._canvas.height=s*Math.ceil(t),this._canvas.style.width=`${c}px`,this._canvas.style.height=`${t}px`}_addMarker(c){this._markers.push(c)}_removeMarker(c){const t=this._markers.indexOf(c);t!==-1&&this._markers.splice(t,1)}_addPopup(c){this._popups.push(c)}_removePopup(c){const t=this._popups.indexOf(c);t!==-1&&this._popups.splice(t,1)}_setupPainter(){const c=i.l({},Te.supported.webGLContextAttributes,{failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1}),t=this._canvas.getContext("webgl2",c);t?(Us(t,!0),this.painter=new hf(t,this._contextCreateOptions,this.transform,this._scaleFactor,this._tp),this.on("data",s=>{s.dataType==="source"&&this.painter.setTileLoadedFlag(!0)}),i.m.testSupport(t)):this.fire(new i.y(new Error("Failed to initialize WebGL")))}_contextLost(c){c.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new i.z("webglcontextlost",{originalEvent:c}))}_contextRestored(c){this._setupPainter(),this.resize(),this._update(),this.fire(new i.z("webglcontextrestored",{originalEvent:c}))}_onMapScroll(c){if(c.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1}idle(){return!this.isMoving()&&this.loaded()}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}frameReady(){return this.loaded()&&!this._placementDirty}_update(c){return this.style?(this._styleDirty=this._styleDirty||c,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(c){return this._update(),this._renderTaskQueue.add(c)}_cancelRenderFrame(c){this._renderTaskQueue.remove(c)}_requestDomTask(c){!this.loaded()||this.loaded()&&!this.isMoving()?c():this._domRenderTaskQueue.add(c)}_render(c){let t;this.fire(new i.z("renderstart")),++this._frameId;const s=this.painter.context.extTimerQuery,h=i.q.now(),_=this.painter.context.gl;if(this.listens("gpu-timing-frame")&&(t=_.createQuery(),_.beginQuery(s.TIME_ELAPSED_EXT,t)),this.painter.context.setDirty(),this.painter.setBaseState(),(this.isMoving()||this.isRotating()||this.isZooming())&&(this._interactionRange[0]=Math.min(this._interactionRange[0],performance.now()),this._interactionRange[1]=Math.max(this._interactionRange[1],performance.now())),this._renderTaskQueue.run(c),this._domRenderTaskQueue.run(c),this._removed)return;this._updateProjectionTransition();const y=this._isInitialLoad?0:this._fadeDuration;if(this.style&&this._styleDirty){this._styleDirty=!1;const F=this.transform.zoom,N=this.transform.pitch,G=i.q.now(),Z=new i.a8(F,{now:G,fadeDuration:y,pitch:N,transition:this.style.transition});this.style.update(Z)}this.style&&this.style.hasFogTransition()&&(this.style._markersNeedUpdate=!0,this._sourcesDirty=!0);let T=!1;this.style&&this._sourcesDirty?(this._sourcesDirty=!1,this.painter._updateFog(this.style),this._updateTerrain(),T=this._updateAverageElevation(h),this.style.updateSources(this.transform),this._forceMarkerAndPopupUpdate()):T=this._updateAverageElevation(h);const z=this.style&&this.style._updatePlacement(this.painter,this.painter.transform,this.showCollisionBoxes,y,this._crossSourceCollisions,this.painter.replacementSource,this._scaleFactorChanged);if(this._scaleFactorChanged&&(this._scaleFactorChanged=!1),z&&(this._placementDirty=z.needsRerender),this.style&&this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showParseStatus:this.showParseStatus,wireframe:{terrain:this.showTerrainWireframe,layers2D:this.showLayers2DWireframe,layers3D:this.showLayers3DWireframe},showOverdrawInspector:this._showOverdrawInspector,showQueryGeometry:!!this._showQueryGeometry,showTileAABBs:this.showTileAABBs,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:y,isInitialLoad:this._isInitialLoad,showPadding:this.showPadding,gpuTiming:!!this.listens("gpu-timing-layer"),gpuTimingDeferredRender:!!this.listens("gpu-timing-deferred-render"),speedIndexTiming:this.speedIndexTiming}),this.fire(new i.z("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,Y.mark(j.load),this.fire(new i.z("load"))),this.style&&this.style.hasTransitions()&&(this._styleDirty=!0),this.style&&(this.style.snow||this.style.rain)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles(),t){const F=i.q.now()-h;_.endQuery(s.TIME_ELAPSED_EXT),setTimeout(()=>{const N=_.getQueryParameter(t,_.QUERY_RESULT)/1e6;_.deleteQuery(t),this.fire(new i.z("gpu-timing-frame",{cpuTime:F,gpuTime:N}))},50)}if(this.listens("gpu-timing-layer")){const F=this.painter.collectGpuTimers();setTimeout(()=>{const N=this.painter.queryGpuTimers(F);this.fire(new i.z("gpu-timing-layer",{layerTimes:N}))},50)}if(this.listens("gpu-timing-deferred-render")){const F=this.painter.collectDeferredRenderGpuQueries();setTimeout(()=>{const N=this.painter.queryGpuTimeDeferredRender(F);this.fire(new i.z("gpu-timing-deferred-render",{gpuTime:N}))},50)}const R=this._sourcesDirty||this._styleDirty||this._placementDirty||T;if(R||this._repaint)this.triggerRepaint();else{const F=this.idle();if(F&&(T=this._updateAverageElevation(h,!0)),T)this.triggerRepaint();else if(this._triggerFrame(!1),F&&(this.fire(new i.z("idle")),this._isInitialLoad=!1,this.speedIndexTiming)){const N=this._calculateSpeedIndex();this.fire(new i.z("speedindexcompleted",{speedIndex:N})),this.speedIndexTiming=!1}}!this._loaded||this._fullyLoaded||R||(this._fullyLoaded=!0,Y.mark(j.fullLoad),this._performanceMetricsCollection&&xs(this._requestManager._customAccessToken,{width:this.painter.width,height:this.painter.height,interactionRange:this._interactionRange,visibilityHidden:this._visibilityHidden,terrainEnabled:!!this.painter.style.getTerrain(),fogEnabled:!!this.painter.style.getFog(),projection:this.getProjection().name,zoom:this.transform.zoom,renderer:this.painter.context.renderer,vendor:this.painter.context.vendor}),this._authenticate())}_forceMarkerAndPopupUpdate(c){for(const t of this._markers)c&&!this.getRenderWorldCopies()&&(t._lngLat=t._lngLat.wrap()),t._update();for(const t of this._popups)!c||this.getRenderWorldCopies()||t._trackPointer||(t._lngLat=t._lngLat.wrap()),t._update()}_updateAverageElevation(c,t=!1){const s=_=>(this.transform.averageElevation=_,this._update(!1),!0);if(!this.painter.averageElevationNeedsEasing())return this.transform.averageElevation!==0&&s(0);const h=this.transform.elevation&&this.transform.elevation.exaggeration()!==this._averageElevationExaggeration;if(h||(t||c-this._averageElevationLastSampledAt>500)&&!this._averageElevation.isEasing(c)){const _=this.transform.averageElevation;let y=this.transform.sampleAverageElevation();this.transform.elevation!=null&&(this._averageElevationExaggeration=this.transform.elevation.exaggeration()),isNaN(y)?y=0:this._averageElevationLastSampledAt=c;const T=Math.abs(_-y);if(T>1){if(this._isInitialLoad||h)return this._averageElevation.jumpTo(y),s(y);this._averageElevation.easeTo(y,c,300)}else if(T>1e-4)return this._averageElevation.jumpTo(y),s(y)}return!!this._averageElevation.isEasing(c)&&s(this._averageElevation.getValue(c))}_authenticate(){De(this._getMapId(),this._requestManager._skuToken,this._requestManager._customAccessToken,c=>{if(c&&(c.message===Pn||c.status===401)){const t=this.painter.context.gl;Us(t,!1),this._logoControl instanceof Ul&&this._logoControl._updateLogo(),t&&t.clear(t.DEPTH_BUFFER_BIT|t.COLOR_BUFFER_BIT|t.STENCIL_BUFFER_BIT),this._silenceAuthErrors||this.fire(new i.y(new Error("A valid Mapbox access token is required to use Mapbox GL JS. To create an account or a new access token, visit https://account.mapbox.com/")))}}),ln(this._getMapId(),this._requestManager._skuToken,this._requestManager._customAccessToken,()=>{})}_postStyleLoadEvent(){this.style.globalId&&xi(this._requestManager._customAccessToken,{map:this,skuToken:this._requestManager._skuToken,style:this.style.globalId,importedStyles:this.style.getImportGlobalIds()})}_updateTerrain(){const c=this._isDragging();this.painter.updateTerrain(this.style,c)}_calculateSpeedIndex(){const c=this.painter.canvasCopy(),t=this.painter.getCanvasCopiesAndTimestamps();t.timeStamps.push(performance.now());const s=this.painter.context.gl,h=s.createFramebuffer();function _(y){s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,y,0);const T=new Uint8Array(s.drawingBufferWidth*s.drawingBufferHeight*4);return s.readPixels(0,0,s.drawingBufferWidth,s.drawingBufferHeight,s.RGBA,s.UNSIGNED_BYTE,T),T}return s.bindFramebuffer(s.FRAMEBUFFER,h),this._canvasPixelComparison(_(c),t.canvasCopies.map(_),t.timeStamps)}_canvasPixelComparison(c,t,s){let h=s[1]-s[0];const _=c.length/4;for(let y=0;y<t.length;y++){const T=t[y];let z=0;for(let R=0;R<T.length;R+=4)T[R]===c[R]&&T[R+1]===c[R+1]&&T[R+2]===c[R+2]&&T[R+3]===c[R+3]&&(z+=1);h+=(s[y+2]-s[y+1])*(1-z/_)}return h}remove(){this._hash&&this._hash.remove();for(const t of this._controls)t.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this._domRenderTaskQueue.clear(),this.style&&this.style.destroy(),this.indoor.destroy(),this.painter.destroy(),this.handlers&&this.handlers.destroy(),this.handlers=void 0,this.setStyle(null),window.removeEventListener("resize",this._onWindowResize,!1),window.removeEventListener("orientationchange",this._onWindowResize,!1),window.removeEventListener(this._fullscreenchangeEvent,this._onWindowResize,!1),window.removeEventListener("online",this._onWindowOnline,!1),window.removeEventListener("visibilitychange",this._onVisibilityChange,!1);const c=this.painter.context.gl.getExtension("WEBGL_lose_context");c&&c.loseContext(),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvasContainer.remove(),this._controlContainer.remove(),this._missingCSSCanary.remove(),this._canvas=void 0,this._canvasContainer=void 0,this._controlContainer=void 0,this._missingCSSCanary=void 0,this._container.classList.remove("mapboxgl-map"),this._container.removeEventListener("scroll",this._onMapScroll,!1),Vs.delete(this.painter.context.gl),Ls.remove(),qt.remove(),this._removed=!0,this.fire(new i.z("remove"))}triggerRepaint(){this._triggerFrame(!0)}_triggerFrame(c){this._renderNextFrame=this._renderNextFrame||c,this.style&&!this._frame&&(this._frame=i.q.frame(t=>{const s=!!this._renderNextFrame;this._frame=null,this._renderNextFrame=null,s&&this._render(t)}))}_preloadTiles(c){const t=this.style?this.style.getSourceCaches():[];return i.bl(t,(s,h)=>s._preloadTiles(c,h),()=>{this.triggerRepaint()}),this}_onWindowOnline(){this._update()}_onWindowResize(c){this._trackResize&&this.resize({originalEvent:c})._update()}_onVisibilityChange(){document.visibilityState==="hidden"&&this._visibilityHidden++}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(c){this._showTileBoundaries!==c&&(this._showTileBoundaries=c,this._tp.refreshUI(),this._update())}get showParseStatus(){return!!this._showParseStatus}set showParseStatus(c){this._showParseStatus!==c&&(this._showParseStatus=c,this._tp.refreshUI(),this._update())}get showTerrainWireframe(){return!!this._showTerrainWireframe}set showTerrainWireframe(c){this._showTerrainWireframe!==c&&(this._showTerrainWireframe=c,this._tp.refreshUI(),this._update())}get showLayers2DWireframe(){return!!this._showLayers2DWireframe}set showLayers2DWireframe(c){this._showLayers2DWireframe!==c&&(this._showLayers2DWireframe=c,this._tp.refreshUI(),this._update())}get showLayers3DWireframe(){return!!this._showLayers3DWireframe}set showLayers3DWireframe(c){this._showLayers3DWireframe!==c&&(this._showLayers3DWireframe=c,this._tp.refreshUI(),this._update())}get speedIndexTiming(){return!!this._speedIndexTiming}set speedIndexTiming(c){this._speedIndexTiming!==c&&(this._speedIndexTiming=c,this._update())}get showPadding(){return!!this._showPadding}set showPadding(c){this._showPadding!==c&&(this._showPadding=c,this._tp.refreshUI(),this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(c){this._showCollisionBoxes!==c&&(this._showCollisionBoxes=c,this._tp.refreshUI(),c?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(c){this._showOverdrawInspector!==c&&(this._showOverdrawInspector=c,this._tp.refreshUI(),this._update())}get repaint(){return!!this._repaint}set repaint(c){this._repaint!==c&&(this._repaint=c,this._tp.refreshUI(),this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(c){this._vertices=c,this._update()}get showTileAABBs(){return!!this._showTileAABBs}set showTileAABBs(c){this._showTileAABBs!==c&&(this._showTileAABBs=c,this._tp.refreshUI(),c&&this._update())}_setCacheLimits(c,t){i.dG(c,t)}get version(){return O}},NavigationControl:class{constructor(c={}){this.options=i.l({},ol,c),this._container=be("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._container.addEventListener("contextmenu",t=>t.preventDefault()),this.options.showZoom&&(i.aP(["_setButtonTitle","_updateZoomButtons"],this),this._zoomInButton=this._createButton("mapboxgl-ctrl-zoom-in",t=>{this._map&&this._map.zoomIn({},{originalEvent:t})}),be("span","mapboxgl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("mapboxgl-ctrl-zoom-out",t=>{this._map&&this._map.zoomOut({},{originalEvent:t})}),be("span","mapboxgl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(i.aP(["_rotateCompassArrow"],this),this._compass=this._createButton("mapboxgl-ctrl-compass",t=>{const s=this._map;s&&(this.options.visualizePitch?s.resetNorthPitch({},{originalEvent:t}):s.resetNorth({},{originalEvent:t}))}),this._compassIcon=be("span","mapboxgl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}_updateZoomButtons(){const c=this._map;if(!c)return;const t=c.getZoom(),s=t===c.getMaxZoom(),h=t===c.getMinZoom();this._zoomInButton.disabled=s,this._zoomOutButton.disabled=h,this._zoomInButton.setAttribute("aria-disabled",s.toString()),this._zoomOutButton.setAttribute("aria-disabled",h.toString())}_rotateCompassArrow(){const c=this._map;if(!c)return;const t=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(c.transform.pitch*(Math.PI/180)),.5)}) rotateX(${c.transform.pitch}deg) rotateZ(${c.transform.angle*(180/Math.PI)}deg)`:`rotate(${c.transform.angle*(180/Math.PI)}deg)`;c._requestDomTask(()=>{this._compassIcon&&(this._compassIcon.style.transform=t)})}onAdd(c){return this._map=c,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),c.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&c.on("pitch",this._rotateCompassArrow),c.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new hg(c,this._compass,this.options.visualizePitch)),this._container}onRemove(){const c=this._map;c&&(this._container.remove(),this.options.showZoom&&c.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&c.off("pitch",this._rotateCompassArrow),c.off("rotate",this._rotateCompassArrow),this._handler&&this._handler.off(),this._handler=void 0),this._map=void 0)}_createButton(c,t){const s=be("button",c,this._container);return s.type="button",s.addEventListener("click",t),s}_setButtonTitle(c,t){if(!this._map)return;const s=this._map._getUIString(`NavigationControl.${t}`);c.setAttribute("aria-label",s),c.firstElementChild&&c.firstElementChild.setAttribute("title",s)}},GeolocateControl:class extends i.E{constructor(c={}){super();const t=navigator.geolocation;this.options=i.l({geolocation:t},Aa,c),i.aP(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker","_updateMarkerRotation","_onDeviceOrientation"],this),this._updateMarkerRotationThrottled=wh(this._updateMarkerRotation,20),this._numberOfWatches=0}onAdd(c){return this._map=c,this._container=be("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkGeolocationSupport(this._setupUI),this._container}onRemove(){this._geolocationWatchID!==void 0&&(this.options.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),this._container.remove(),this._map.off("zoom",this._onZoom),this._map=void 0,this._numberOfWatches=0,this._noTimeout=!1}_checkGeolocationSupport(c){const t=(s=!!this.options.geolocation)=>{this._supportsGeolocation=s,c(s)};this._supportsGeolocation!==void 0?c(this._supportsGeolocation):navigator.permissions!==void 0?navigator.permissions.query({name:"geolocation"}).then(s=>t(s.state!=="denied")).catch(()=>t()):t()}_isOutOfMapMaxBounds(c){const t=this._map.getMaxBounds(),s=c.coords;return!!t&&(s.longitude<t.getWest()||s.longitude>t.getEast()||s.latitude<t.getSouth()||s.latitude>t.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting")}}_onSuccess(c){if(this._map){if(this._isOutOfMapMaxBounds(c))return this._setErrorState(),this.fire(new i.z("outofmaxbounds",c)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=c,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background")}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(c),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(c),this.options.showUserLocation&&this._userLocationDotMarker.removeClassName("mapboxgl-user-location-dot-stale"),this.fire(new i.z("geolocate",c)),this._finish()}}_updateCamera(c){const t=new i.bO(c.coords.longitude,c.coords.latitude),s=c.coords.accuracy,h=this._map.getBearing(),_=i.l({bearing:h},this.options.fitBoundsOptions);this._map.fitBounds(t.toBounds(s),_,{geolocateSource:!0})}_updateMarker(c){if(c){const t=new i.bO(c.coords.longitude,c.coords.latitude);this._accuracyCircleMarker.setLngLat(t).addTo(this._map),this._userLocationDotMarker.setLngLat(t).addTo(this._map),this._accuracy=c.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()}_updateCircleRadius(){const c=this._map.transform,t=i.bH(1,c._center.lat)*c.worldSize,s=Math.ceil(2*this._accuracy*t);this._circleElement.style.width=`${s}px`,this._circleElement.style.height=`${s}px`}_onZoom(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}_updateMarkerRotation(){this._userLocationDotMarker&&typeof this._heading=="number"?(this._userLocationDotMarker.setRotation(this._heading),this._userLocationDotMarker.addClassName("mapboxgl-user-location-show-heading")):(this._userLocationDotMarker.removeClassName("mapboxgl-user-location-show-heading"),this._userLocationDotMarker.setRotation(0))}_onError(c){if(this._map){if(this.options.trackUserLocation)if(c.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;const t=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.setAttribute("aria-label",t),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute("title",t),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(c.code===3&&this._noTimeout)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._userLocationDotMarker.addClassName("mapboxgl-user-location-dot-stale"),this.fire(new i.z("error",c)),this._finish()}}_finish(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0}_setupUI(c){if(this._map!==void 0){if(this._container.addEventListener("contextmenu",t=>t.preventDefault()),this._geolocateButton=be("button","mapboxgl-ctrl-geolocate",this._container),be("span","mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",c===!1){i.w("Geolocation support is not available so the GeolocateControl will be disabled.");const t=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.setAttribute("aria-label",t),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute("title",t)}else{const t=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.setAttribute("aria-label",t),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute("title",t)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=be("div","mapboxgl-user-location"),this._dotElement.appendChild(be("div","mapboxgl-user-location-dot")),this._dotElement.appendChild(be("div","mapboxgl-user-location-heading")),this._userLocationDotMarker=new sa({element:this._dotElement,rotationAlignment:"map",pitchAlignment:"map"}),this._circleElement=be("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new sa({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",t=>{t.geolocateSource||this._watchState!=="ACTIVE_LOCK"||t.originalEvent&&t.originalEvent.type==="resize"||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this.fire(new i.z("trackuserlocationend")))})}}_onDeviceOrientation(c){this._userLocationDotMarker&&(c.webkitCompassHeading?this._heading=c.webkitCompassHeading:c.absolute===!0&&(this._heading=-1*c.alpha),this._updateMarkerRotationThrottled())}trigger(){if(!this._setup)return i.w("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new i.z("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":this._numberOfWatches--,this._noTimeout=!1,this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire(new i.z("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new i.z("trackuserlocationstart"))}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error")}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let c;this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),this._numberOfWatches++,this._numberOfWatches>1?(c={maximumAge:6e5,timeout:0},this._noTimeout=!0):(c=this.options.positionOptions,this._noTimeout=!1),this._geolocationWatchID=this.options.geolocation.watchPosition(this._onSuccess,this._onError,c),this.options.showUserHeading&&this._addDeviceOrientationListener()}}else this.options.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=window.setTimeout(this._finish,1e4);return!0}_addDeviceOrientationListener(){const c=()=>{"ondeviceorientationabsolute"in window?window.addEventListener("deviceorientationabsolute",this._onDeviceOrientation):window.addEventListener("deviceorientation",this._onDeviceOrientation)};typeof DeviceMotionEvent<"u"&&typeof DeviceMotionEvent.requestPermission=="function"?DeviceOrientationEvent.requestPermission().then(t=>{t==="granted"&&c()}).catch(console.error):c()}_clearWatch(){this.options.geolocation.clearWatch(this._geolocationWatchID),window.removeEventListener("deviceorientation",this._onDeviceOrientation),window.removeEventListener("deviceorientationabsolute",this._onDeviceOrientation),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},AttributionControl:lm,ScaleControl:class{constructor(c={}){this.options=i.l({},pr,c),this._isNumberFormatSupported=function(){try{return new Intl.NumberFormat("en",{style:"unit",unitDisplay:"short",unit:"meter"}),!0}catch{return!1}}(),i.aP(["_update","_setScale","setUnit"],this)}getDefaultPosition(){return"bottom-left"}_update(){const c=this.options.maxWidth||100,t=this._map,s=t._containerHeight/2,h=t._containerWidth/2-c/2,_=t.unproject([h,s]),y=t.unproject([h+c,s]),T=_.distanceTo(y);if(this.options.unit==="imperial"){const z=3.2808*T;z>5280?this._setScale(c,z/5280,"mile"):this._setScale(c,z,"foot")}else this.options.unit==="nautical"?this._setScale(c,T/1852,"nautical-mile"):T>=1e3?this._setScale(c,T/1e3,"kilometer"):this._setScale(c,T,"meter")}_setScale(c,t,s){this._map._requestDomTask(()=>{const h=function(y){const T=Math.pow(10,`${Math.floor(y)}`.length-1);let z=y/T;return z=z>=10?10:z>=5?5:z>=3?3:z>=2?2:z>=1?1:function(R){const F=Math.pow(10,Math.ceil(-Math.log(R)/Math.LN10));return Math.round(R*F)/F}(z),T*z}(t),_=h/t;this._container.innerHTML=this._isNumberFormatSupported&&s!=="nautical-mile"?new Intl.NumberFormat(this._language,{style:"unit",unitDisplay:"short",unit:s}).format(h):`${h} ${Vr[s]}`,this._container.style.width=c*_+"px"})}onAdd(c){return this._map=c,this._language=c.getLanguage(),this._container=be("div","mapboxgl-ctrl mapboxgl-ctrl-scale",c.getContainer()),this._container.dir="auto",this._map.on("move",this._update),this._update(),this._container}onRemove(){this._container.remove(),this._map.off("move",this._update),this._map=void 0}_setLanguage(c){this._language=c,this._update()}setUnit(c){this.options.unit=c,this._update()}},FullscreenControl:class{constructor(c={}){this._fullscreen=!1,c&&c.container&&(c.container instanceof HTMLElement?this._container=c.container:i.w("Full screen control 'container' must be a DOM element.")),i.aP(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onwebkitfullscreenchange"in document&&(this._fullscreenchange="webkitfullscreenchange")}onAdd(c){return this._map=c,this._container||(this._container=this._map.getContainer()),this._controlContainer=be("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",i.w("This device does not support fullscreen mode.")),this._controlContainer}onRemove(){this._controlContainer.remove(),this._map=null,document.removeEventListener(this._fullscreenchange,this._changeIcon)}_checkFullscreenSupport(){return!(!document.fullscreenEnabled&&!document.webkitFullscreenEnabled)}_setupUI(){const c=this._fullscreenButton=be("button","mapboxgl-ctrl-fullscreen",this._controlContainer);be("span","mapboxgl-ctrl-icon",c).setAttribute("aria-hidden","true"),c.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),document.addEventListener(this._fullscreenchange,this._changeIcon)}_updateTitle(){const c=this._getTitle();this._fullscreenButton.setAttribute("aria-label",c),this._fullscreenButton.firstElementChild&&this._fullscreenButton.firstElementChild.setAttribute("title",c)}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_changeIcon(){(document.fullscreenElement||document.webkitFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())}_onClickFullscreen(){this._isFullscreen()?document.exitFullscreen?document.exitFullscreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()}},Popup:class extends i.E{constructor(c){super(),this.options=i.l(Object.create(Fs),c),i.aP(["_update","_onClose","remove","_onMouseEvent"],this),this._classList=new Set(c&&c.className?c.className.trim().split(/\s+/):[])}addTo(c){return this._map&&this.remove(),this._map=c,this.options.closeOnClick&&c.on("preclick",this._onClose),this.options.closeOnMove&&c.on("move",this._onClose),c.on("remove",this.remove),this._update(),c._addPopup(this),this._focusFirstElement(),this._trackPointer?(c.on("mousemove",this._onMouseEvent),c.on("mouseup",this._onMouseEvent),c._canvasContainer.classList.add("mapboxgl-track-pointer")):c.on("move",this._update),this.fire(new i.z("open")),this}isOpen(){return!!this._map}remove(){this._content&&this._content.remove(),this._container&&(this._container.remove(),this._container=void 0);const c=this._map;return c&&(c.off("move",this._update),c.off("move",this._onClose),c.off("preclick",this._onClose),c.off("click",this._onClose),c.off("remove",this.remove),c.off("mousemove",this._onMouseEvent),c.off("mouseup",this._onMouseEvent),c.off("drag",this._onMouseEvent),c._canvasContainer&&c._canvasContainer.classList.remove("mapboxgl-track-pointer"),c._removePopup(this),this._map=void 0),this.fire(new i.z("close")),this}getLngLat(){return this._lngLat}setLngLat(c){this._lngLat=i.bO.convert(c),this._pos=null,this._trackPointer=!1,this._update();const t=this._map;return t&&(t.on("move",this._update),t.off("mousemove",this._onMouseEvent),t._canvasContainer.classList.remove("mapboxgl-track-pointer")),this}trackPointer(){this._trackPointer=!0,this._pos=null,this._update();const c=this._map;return c&&(c.off("move",this._update),c.on("mousemove",this._onMouseEvent),c.on("drag",this._onMouseEvent),c._canvasContainer.classList.add("mapboxgl-track-pointer")),this}getElement(){return this._container}setText(c){return this.setDOMContent(document.createTextNode(c))}setHTML(c){const t=document.createDocumentFragment(),s=document.createElement("body");let h;for(s.innerHTML=c;h=s.firstChild,h;)t.appendChild(h);return this.setDOMContent(t)}getMaxWidth(){return this._container&&this._container.style.maxWidth}setMaxWidth(c){return this.options.maxWidth=c,this._update(),this}setDOMContent(c){let t=this._content;if(t)for(;t.hasChildNodes();)t.firstChild&&t.removeChild(t.firstChild);else t=this._content=be("div","mapboxgl-popup-content",this._container||void 0);if(t.appendChild(c),this.options.closeButton){const s=this._closeButton=be("button","mapboxgl-popup-close-button",t);s.type="button",s.setAttribute("aria-label","Close popup"),s.setAttribute("aria-hidden","true"),s.innerHTML="×",s.addEventListener("click",this._onClose)}return this._update(),this._focusFirstElement(),this}addClassName(c){return this._classList.add(c),this._updateClassList(),this}removeClassName(c){return this._classList.delete(c),this._updateClassList(),this}setOffset(c){return this.options.offset=c,this._update(),this}toggleClassName(c){let t;return this._classList.delete(c)?t=!1:(this._classList.add(c),t=!0),this._updateClassList(),t}_onMouseEvent(c){this._update(c.point)}_getAnchor(c){if(this.options.anchor)return this.options.anchor;const t=this._map,s=this._container,h=this._pos;if(!t||!s||!h)return"bottom";const _=s.offsetWidth,y=s.offsetHeight,T=h.x<_/2,z=h.x>t.transform.width-_/2;if(h.y+c<y)return T?"top-left":z?"top-right":"top";if(h.y>t.transform.height-y){if(T)return"bottom-left";if(z)return"bottom-right"}return T?"left":z?"right":"bottom"}_updateClassList(){const c=this._container;if(!c)return;const t=[...this._classList];t.push("mapboxgl-popup"),this._anchor&&t.push(`mapboxgl-popup-anchor-${this._anchor}`),this._trackPointer&&t.push("mapboxgl-popup-track-pointer"),c.className=t.join(" ")}_update(c){const t=this._map,s=this._content;if(!t||!this._lngLat&&!this._trackPointer||!s)return;let h=this._container;if(h||(h=this._container=be("div","mapboxgl-popup",t.getContainer()),this._tip=be("div","mapboxgl-popup-tip",h),h.appendChild(s)),this.options.maxWidth&&h.style.maxWidth!==this.options.maxWidth&&(h.style.maxWidth=this.options.maxWidth),t.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=cm(this._lngLat,this._pos,t.transform)),!this._trackPointer||c){const _=this._pos=this._trackPointer&&c instanceof i.P?c:t.project(this._lngLat),y=jn(this.options.offset),T=this._anchor=this._getAnchor(y.y),z=jn(this.options.offset,T),R=_.add(z).round();t._requestDomTask(()=>{this._container&&T&&(this._container.style.transform=`${Lh[T]} translate(${R.x}px,${R.y}px)`)})}if(!this._marker&&t._showingGlobe()){const _=i.dH(t.transform,this._lngLat)?0:1;this._setOpacity(_)}this._updateClassList()}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const c=this._container.querySelector(hm);c&&c.focus()}_onClose(){this.remove()}_setOpacity(c){this._container&&(this._container.style.opacity=`${c}`),this._content&&(this._content.style.pointerEvents=c?"auto":"none")}},Marker:sa,Style:ur,LngLat:i.bO,LngLatBounds:i.az,Point:i.P,MercatorCoordinate:i.aa,FreeCameraOptions:Ha,Evented:i.E,config:i.e,prewarm:i.dM,clearPrewarmedResources:i.dN,get accessToken(){return i.e.ACCESS_TOKEN},set accessToken(c){i.e.ACCESS_TOKEN=c},get baseApiUrl(){return i.e.API_URL},set baseApiUrl(c){i.e.API_URL=c},get workerCount(){return i.dO.workerCount},set workerCount(c){i.dO.workerCount=c},get maxParallelImageRequests(){return i.e.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(c){i.e.MAX_PARALLEL_IMAGE_REQUESTS=c},clearStorage(c){i.dP(c)},get workerUrl(){return i.dQ.workerUrl},set workerUrl(c){i.dQ.workerUrl=c},get workerClass(){return i.dQ.workerClass},set workerClass(c){i.dQ.workerClass=c},get workerParams(){return i.dQ.workerParams},set workerParams(c){i.dQ.workerParams=c},get dracoUrl(){return i.dR()},set dracoUrl(c){i.dS(c)},get meshoptUrl(){return i.dT()},set meshoptUrl(c){i.dU(c)},setNow:i.q.setNow,restoreNow:i.q.restoreNow}});var E=w;return E})})(Yx);var NE=Yx.exports;const Ql=Hx(NE);var so=63710088e-1,Kx={centimeters:so*100,centimetres:so*100,degrees:so/111325,feet:so*3.28084,inches:so*39.37,kilometers:so/1e3,kilometres:so/1e3,meters:so,metres:so,miles:so/1609.344,millimeters:so*1e3,millimetres:so*1e3,nauticalmiles:so/1852,radians:1,yards:so*1.0936};function kp(m,a,d){d===void 0&&(d={});var g={type:"Feature"};return(d.id===0||d.id)&&(g.id=d.id),d.bbox&&(g.bbox=d.bbox),g.properties=a||{},g.geometry=m,g}function W_(m,a,d){if(d===void 0&&(d={}),!m)throw new Error("coordinates is required");if(!Array.isArray(m))throw new Error("coordinates must be an Array");if(m.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!Jx(m[0])||!Jx(m[1]))throw new Error("coordinates must contain numbers");var g={type:"Point",coordinates:m};return kp(g,a,d)}function Cd(m,a,d){if(d===void 0&&(d={}),m.length<2)throw new Error("coordinates must be an array of two or more positions");var g={type:"LineString",coordinates:m};return kp(g,a,d)}function VE(m,a){a===void 0&&(a="kilometers");var d=Kx[a];if(!d)throw new Error(a+" units is invalid");return m*d}function UE(m,a){a===void 0&&(a="kilometers");var d=Kx[a];if(!d)throw new Error(a+" units is invalid");return m/d}function $_(m){var a=m%(2*Math.PI);return a*180/Math.PI}function ca(m){var a=m%360;return a*Math.PI/180}function Jx(m){return!isNaN(m)&&m!==null&&!Array.isArray(m)}function Qx(m,a,d){if(m!==null)for(var g,w,b,E,i,O,j,Y=0,J=0,ae,ce=m.type,Te=ce==="FeatureCollection",be=ce==="Feature",Ze=Te?m.features.length:1,je=0;je<Ze;je++){j=Te?m.features[je].geometry:be?m.geometry:m,ae=j?j.type==="GeometryCollection":!1,i=ae?j.geometries.length:1;for(var ot=0;ot<i;ot++){var vt=0,ht=0;if(E=ae?j.geometries[ot]:j,E!==null){O=E.coordinates;var gt=E.type;switch(Y=d&&(gt==="Polygon"||gt==="MultiPolygon")?1:0,gt){case null:break;case"Point":if(a(O,J,je,vt,ht)===!1)return!1;J++,vt++;break;case"LineString":case"MultiPoint":for(g=0;g<O.length;g++){if(a(O[g],J,je,vt,ht)===!1)return!1;J++,gt==="MultiPoint"&&vt++}gt==="LineString"&&vt++;break;case"Polygon":case"MultiLineString":for(g=0;g<O.length;g++){for(w=0;w<O[g].length-Y;w++){if(a(O[g][w],J,je,vt,ht)===!1)return!1;J++}gt==="MultiLineString"&&vt++,gt==="Polygon"&&ht++}gt==="Polygon"&&vt++;break;case"MultiPolygon":for(g=0;g<O.length;g++){for(ht=0,w=0;w<O[g].length;w++){for(b=0;b<O[g][w].length-Y;b++){if(a(O[g][w][b],J,je,vt,ht)===!1)return!1;J++}ht++}vt++}break;case"GeometryCollection":for(g=0;g<E.geometries.length;g++)if(Qx(E.geometries[g],a,d)===!1)return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function jE(m,a){var d,g,w,b,E,i,O,j,Y,J,ae=0,ce=m.type==="FeatureCollection",Te=m.type==="Feature",be=ce?m.features.length:1;for(d=0;d<be;d++){for(i=ce?m.features[d].geometry:Te?m.geometry:m,j=ce?m.features[d].properties:Te?m.properties:{},Y=ce?m.features[d].bbox:Te?m.bbox:void 0,J=ce?m.features[d].id:Te?m.id:void 0,O=i?i.type==="GeometryCollection":!1,E=O?i.geometries.length:1,w=0;w<E;w++){if(b=O?i.geometries[w]:i,b===null){if(a(null,ae,j,Y,J)===!1)return!1;continue}switch(b.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":{if(a(b,ae,j,Y,J)===!1)return!1;break}case"GeometryCollection":{for(g=0;g<b.geometries.length;g++)if(a(b.geometries[g],ae,j,Y,J)===!1)return!1;break}default:throw new Error("Unknown Geometry Type")}}ae++}}function GE(m,a){jE(m,function(d,g,w,b,E){var i=d===null?null:d.type;switch(i){case null:case"Point":case"LineString":case"Polygon":return a(kp(d,w,{bbox:b,id:E}),g,0)===!1?!1:void 0}var O;switch(i){case"MultiPoint":O="Point";break;case"MultiLineString":O="LineString";break;case"MultiPolygon":O="Polygon";break}for(var j=0;j<d.coordinates.length;j++){var Y=d.coordinates[j],J={type:O,coordinates:Y};if(a(kp(J,w),g,j)===!1)return!1}})}function ZE(m,a){GE(m,function(d,g,w){var b=0;if(d.geometry){var E=d.geometry.type;if(!(E==="Point"||E==="MultiPoint")){var i,O=0,j=0,Y=0;if(Qx(d,function(J,ae,ce,Te,be){if(i===void 0||g>O||Te>j||be>Y){i=J,O=g,j=Te,Y=be,b=0;return}var Ze=Cd([i,J],d.properties);if(a(Ze,g,w,be,b)===!1)return!1;b++,i=J})===!1)return!1}}})}function HE(m,a,d){var g=d,w=!1;return ZE(m,function(b,E,i,O,j){w===!1&&d===void 0?g=b:g=a(g,b,E,i,O,j),w=!0}),g}function Id(m){if(!m)throw new Error("coord is required");if(!Array.isArray(m)){if(m.type==="Feature"&&m.geometry!==null&&m.geometry.type==="Point")return m.geometry.coordinates;if(m.type==="Point")return m.coordinates}if(Array.isArray(m)&&m.length>=2&&!Array.isArray(m[0])&&!Array.isArray(m[1]))return m;throw new Error("coord must be GeoJSON Point or an Array of numbers")}function qE(m){return m.type==="Feature"?m.geometry:m}function ev(m,a,d){d===void 0&&(d={});var g=Id(m),w=Id(a),b=ca(w[1]-g[1]),E=ca(w[0]-g[0]),i=ca(g[1]),O=ca(w[1]),j=Math.pow(Math.sin(b/2),2)+Math.pow(Math.sin(E/2),2)*Math.cos(i)*Math.cos(O);return VE(2*Math.atan2(Math.sqrt(j),Math.sqrt(1-j)),d.units)}function WE(m,a,d,g){g===void 0&&(g={});var w=Id(m),b=ca(w[0]),E=ca(w[1]),i=ca(d),O=UE(a,g.units),j=Math.asin(Math.sin(E)*Math.cos(O)+Math.cos(E)*Math.sin(O)*Math.cos(i)),Y=b+Math.atan2(Math.sin(i)*Math.sin(O)*Math.cos(E),Math.cos(O)-Math.sin(E)*Math.sin(j)),J=$_(Y),ae=$_(j);return W_([J,ae],g.properties)}function tv(m,a,d){if(d===void 0&&(d={}),d.final===!0)return $E(m,a);var g=Id(m),w=Id(a),b=ca(g[0]),E=ca(w[0]),i=ca(g[1]),O=ca(w[1]),j=Math.sin(E-b)*Math.cos(O),Y=Math.cos(i)*Math.sin(O)-Math.sin(i)*Math.cos(O)*Math.cos(E-b);return $_(Math.atan2(j,Y))}function $E(m,a){var d=tv(a,m);return d=(d+180)%360,d}function iv(m,a,d){d===void 0&&(d={});for(var g=qE(m),w=g.coordinates,b=0,E=0;E<w.length&&!(a>=b&&E===w.length-1);E++)if(b>=a){var i=a-b;if(i){var O=tv(w[E],w[E-1])-180,j=WE(w[E],i,O,d);return j}else return W_(w[E])}else b+=ev(w[E],w[E+1],d);return W_(w[w.length-1])}function nv(m,a){return a===void 0&&(a={}),HE(m,function(d,g){var w=g.geometry.coordinates;return d+ev(w[0],w[1],a)},0)}const lI="",cI="";class XE{constructor(){this.start=0,this.animationDuration=8e4,this.cameraAltitude=1e3,this.targetRoute=[],this.cameraRoute=[],this.iconDefault="/wp-content/plugins/wp-gpx-maps/img/map-play-svgrepo-com.svg",this.iconStop="/wp-content/plugins/wp-gpx-maps/img/stop-svgrepo-com.svg",this.routeDistance=0,this.cameraRouteDistance=0,this.isPlaying=!1}onAdd(a){return this.map=a,this.container=document.createElement("div"),this.container.className="mapboxgl-ctrl mapboxgl-ctrl-group mapboxgl-wp-gpx-maps",this.container.innerHTML=`<button style='background-image: url(${this.iconDefault});'> </div>`,this.container.onclick=()=>{this.isPlaying==!1?(this.isPlaying=!0,this._playAnimation()):this.isPlaying=!1},this.container}_animationFrame(a){if(this.isPlaying==!1){this.start=0;return}this.start||(this.start=a);const d=(a-this.start)/this.animationDuration;d>1&&setTimeout(()=>{this.start=0},1500);const g=iv(Cd(this.targetRoute),this.routeDistance*d).geometry.coordinates,w=iv(Cd(this.cameraRoute),this.cameraRouteDistance*d).geometry.coordinates,b=this.map.getFreeCameraOptions();b.position=Ql.MercatorCoordinate.fromLngLat({lng:w[0],lat:w[1]},this.cameraAltitude),b.lookAtPoint({lng:g[0],lat:g[1]}),this.map.setFreeCameraOptions(b),window.requestAnimationFrame(E=>this._animationFrame(E))}_stopAnimation(){}_playAnimation(){this.cameraRouteDistance=nv(Cd(this.cameraRoute)),this.routeDistance=nv(Cd(this.targetRoute)),window.requestAnimationFrame(a=>this._animationFrame(a))}onRemove(a){this.container.remove()}}class YE{constructor(){this.Bounds=[],this.EventSelectChart=null,this.CurrentLocationMarker=null,this.animationControl=null,this.animateLineOptions={SpeedFactor:30,Animation:null,StartTime:0,Progress:0,ResetTime:!1}}init(a,d,g,w,b){this.otherParams=b,this.map=new Ql.Map({container:a,style:"mapbox://styles/mapbox/streets-v11",accessToken:"pk.eyJ1Ijoic2VjdXJjdWJlbWF4IiwiYSI6ImNsbW94MzRodjE4YjEya3BuM3liZXl6MXYifQ.db3c6nnAcFwFm5jD2NCg6w",center:[0,0],zoom:1,scrollZoom:g}),this.animationControl=new XE,this.map.addControl(new Ql.NavigationControl),this.map.addControl(new Ql.FullscreenControl),this.map.addControl(new BE,"top-left"),this.map.addControl(this.animationControl),this.map.on("style.load",async()=>{b.MapBoxFog&&this.map.setFog({range:[-1,2],"horizon-blend":.3,color:"white","high-color":"#add8e6","space-color":"#d8f2ff","star-intensity":0}),b.MapBox3dTerrain&&(this.map.addSource("mapbox-dem",{type:"raster-dem",url:"mapbox://mapbox.mapbox-terrain-dem-v1",tileSize:512,maxzoom:14}),this.map.setTerrain({source:"mapbox-dem",exaggeration:1.5}))})}_addMarker(a,d,g){const w=document.createElement("div"),b=32,E=32;return w.className="marker",w.style.backgroundImage=`url(${d})`,w.style.width=`${b}px`,w.style.height=`${E}px`,w.style.backgroundSize="100%",w.addEventListener("click",i=>{g==null||g.call(this,i)}),new Ql.Marker(w).setLngLat([a[1],a[0]]).addTo(this.map)}AppPolylines(a,d,g,w,b){this.Bounds=a.filter(E=>E!=null),this.map.on("style.load",async()=>{const E=Lp.Utils.DividePolylinesPoints(a),i=this.Bounds.map(O=>[O[1],O[0]]);if(this.animationControl.cameraRoute=i,this.animationControl.targetRoute=i,this.map.addSource("route",{type:"geojson",data:{type:"FeatureCollection",features:E.map((O,j)=>({type:"Feature",properties:{color:j<d.length?d[j]:d[d.length-1]},geometry:{type:"LineString",coordinates:O.map(Y=>[Y[1],Y[0]])}}))}}),this.map.addLayer({id:"route",type:"line",source:"route",layout:{"line-join":"round","line-cap":"round"},paint:{"line-color":["get","color"],"line-width":3}}),(g==""||g==null)&&(g="https://maps.google.com/mapfiles/kml/pal4/icon25.png"),this.CurrentLocationMarker=this._addMarker(a[0],g,O=>{}),w!=""){let O=a[0];O!=null&&this._addMarker(O,w,null)}if(b!=""&&a[a.length-1]!=null){let O=a[a.length-1];O!=null&&this._addMarker(O,b,null)}this.CenterMap(),this.otherParams.MapBoxAnimateOnLoading=="1"&&(this.animateLineOptions.StartTime=performance.now(),this.animateLine())})}AddWaypoints(a,d){}MoveMarkerToPosition(a,d){var g;(g=this.CurrentLocationMarker)==null||g.setLngLat([a[1],a[0]])}SetCurrentGPSPosition(a,d,g){}CenterMap(){var a;try{if(this.Bounds&&this.Bounds.length>0){let d={minLat:Number.POSITIVE_INFINITY,maxLat:Number.NEGATIVE_INFINITY,minLng:Number.POSITIVE_INFINITY,maxLng:Number.NEGATIVE_INFINITY};this.Bounds.forEach(b=>{if(!Array.isArray(b)||b.length!==2)throw new Error("Each coordinate must be an array with [latitude, longitude].");const[E,i]=b;d.minLat=Math.min(d.minLat,E),d.maxLat=Math.max(d.maxLat,E),d.minLng=Math.min(d.minLng,i),d.maxLng=Math.max(d.maxLng,i)});const g=new Ql.LngLat(d.minLng,d.minLat),w=new Ql.LngLat(d.maxLng,d.maxLat);(a=this.map)==null||a.fitBounds(new Ql.LngLatBounds(g,w),{padding:30,animate:!1})}}catch(d){console.log(d)}}AddPhotos(a){for(const w of a){let b=this._addMarker([w.lat,w.lng],w.thumbnail,E=>{let i=`a[data-image-id='${w.image_id}']`,O=document.querySelector(i);O==null||O.click()});b._element.classList.add("wp-gpx-maps-photo-marker"),b._element.style.width="40px",b._element.style.height="40px"}}animateLine(a=null){if(a==null){var d=this.map.getSource("route")._data;this.animateLineOptions.ruteJeoJson=d,this.animateLineOptions.ruteCoordinates=d.features[0].geometry.coordinates,d.features[0].geometry.coordinates=[]}if(this.animateLineOptions.ResetTime?(this.animateLineOptions.sta=performance.now()-this.animateLineOptions.Progress,this.animateLineOptions.ResetTime=!1):this.animateLineOptions.Progress=a-this.animateLineOptions.StartTime,this.animateLineOptions.Progress<0&&(this.animateLineOptions.Progress=0),this.animateLineOptions.Progress>this.animateLineOptions.SpeedFactor*360){this.animateLineOptions.startTime=a;return}else{let g=this.animateLineOptions.ruteCoordinates.length,w=Math.floor(g*this.animateLineOptions.Progress/(this.animateLineOptions.SpeedFactor*360));this.animateLineOptions.ruteJeoJson.features[0].geometry.coordinates=this.animateLineOptions.ruteCoordinates.slice(0,w),this.map.getSource("route").setData(this.animateLineOptions.ruteJeoJson)}this.animateLineOptions.animation=requestAnimationFrame(g=>this.animateLine(g))}}const KE="1",JE="2",QE="3",eP="4",tP="5",iP="6",nP="5",sP="4",rP="3",oP="2",aP="1";class lP{constructor(a){this.map=null,this.myChart=null,this.params=a,this.init()}init(){var vo,bo,wo,yr,Pr,ro,Ks,Ar,mi;let{targetId:a,mapType:d,mapData:g,graphDist:w,graphEle:b,graphSpeed:E,graphHr:i,graphAtemp:O,graphCad:j,graphGrade:Y,waypoints:J,unit:ae,unitspeed:ce,color1:Te,color2:be,color3:Ze,color4:je,color5:ot,color6:vt,color7:ht,chartFrom1:gt,chartTo1:Vt,chartFrom2:pt,chartTo2:Gt,startIcon:ui,waypointIcon:kt,endIcon:Pt,currentIcon:Mi,zoomOnScrollWheel:Pn,langs:hn,pluginUrl:Ht,usegpsposition:Si,currentpositioncon:Qi,TFApiKey:fi}=this.params;var jt=[],ni={suf:"",dec:0},Gi={suf:"",dec:0},an={suf:"",dec:0},qt={suf:"%",dec:1},ln={suf:"",dec:0},Di={suf:"",dec:0},xi=document.getElementById("wpgpxmaps_"+a),Is=document.getElementById("map_"+a),xs=document.getElementById("chart_"+a);if(document.getElementById("report_"+a),document.getElementById("wpgpxmaps_"+a+"_osm_footer"),Is==null)return;let Ls=this;this.params.MapBoxApiKey&&this.params.MapBoxApiKey.length>20?this.map=new YE:this.map=new FE,this.map.init(Is,d,Pn=="true",fi,this.params),this.map.EventSelectChart=function(On){var Go,Ke;if(Ls.myChart){for(var Un=On[0],Zi=On[1],Qn=Ls.getClosestIndex(g,Un,Zi),Fn=[],zs=Ls.myChart._metasets.length,Ds=0;Ds<zs;Ds++)Fn.push(Ls.myChart._metasets[Ds].data[Qn]);if(Fn.length>0){let re=(Go=Ls.myChart.tooltip)==null?void 0:Go.getActiveElements();(re==null||re.length==0)&&((Ke=Ls.myChart.tooltip)==null||Ke.setActiveElements([{datasetIndex:0,index:Qn}],{x:Fn[0].x,y:Fn[0].y})),Ls.myChart.tooltip.setActiveElements(Fn),Ls.myChart.draw()}}},Si=="true"&&navigator.geolocation&&navigator.geolocation.watchPosition(function(On){On.coords.accuracy/2;var Un=[On.coords.latitude,On.coords.longitude];this.map.SetCurrentGPSPosition([Un[0],Un[1]],Qi,hn)},function(On){},{enableHighAccuracy:!1,timeout:5e3,maximumAge:0}),J!=null&&J.length>0&&this.map.AddWaypoints(J,kt);let De=document.getElementById("ngimages_"+a);De==null||De.setAttribute("style","display:block;position:absolute;left:-50000px");var Vs=De==null?void 0:De.querySelectorAll("span");if(Vs&&Vs.length>0){for(var Us=[],Zr=0;Zr<Vs.length;Zr++){var Et=Vs[Zr],$s=Et.children[0],$n=[Number(Et.getAttribute("lat")),Number(Et.getAttribute("lon"))];this.map.Bounds.push($n),Us.push({lat:$n[0],lng:$n[1],name:$s.children[0].getAttribute("alt"),image_id:$s.getAttribute("data-image-id"),url:$s.getAttribute("href"),thumbnail:$s.children[0].getAttribute("src")})}Us.length>0&&this.map.AddPhotos(Us)}g&&this.map.AppPolylines(g,Te,Mi,ui,Pt);var Xs=this.map;let vi=null,kn=xi==null?void 0:xi.parentElement;for(;kn!=null;){if(kn.classList.contains("wordpress-post-tabs")&&kn.classList.contains("tab-pane")){vi=kn;break}kn=kn.parentElement}if(vi){var Ys=function(On){setTimeout(function(Un){var Zi;(Zi=Xs.map)==null||Zi.invalidateSize(),Xs.CenterMap()},300)};(vo=document.querySelector(".wpsm_nav-tabs a"))==null||vo.addEventListener("click",Ys,!1),(bo=vi.querySelector("div > ul > li > a"))==null||bo.addEventListener("click",Ys,!1)}var Hr=xs==null?void 0:xs.style.height;if(w&&(b||E||i||O||j)&&Hr!="0px"){w.length,KE==ae?(Gi={suf:"mi",dec:1},an={suf:"ft",dec:0}):JE==ae?(Gi={suf:"km",dec:1},an={suf:"m",dec:2}):QE==ae?(Gi={suf:"NM",dec:1},an={suf:"m",dec:0}):eP==ae?(Gi={suf:"mi",dec:1},an={suf:"m",dec:0}):tP==ae?(Gi={suf:"NM",dec:1},an={suf:"ft",dec:0}):(Gi={suf:"m",dec:0},an={suf:"m",dec:0});var qr=1111.1,Wr=qr.toLocaleString(),si=Wr.length;Wr.substring(si-2,si-1),Wr.substring(1,2),yl.register(...kE);var ps={type:"line",data:{datasets:[]},options:{animation:{},hover:{},interaction:{intersect:!1,mode:"index"},scales:{xAxe:{type:"linear",min:0,max:w[w.length-1],ticks:{callback:function(Un,Zi,Qn){return parseFloat(Un+"").toFixed(Gi.dec)+Gi.suf}}}},plugins:{tooltip:{position:"average",mode:"index",intersect:!1,callbacks:{title:function(Un){var Zi=jt[0].label_x,Qn=Un[0].element.x,Fn=Zi.dec,zs=Zi.suf;return Qn.toFixed(Fn)+zs},label:function(Un){var Zi=Un.label||"",Qn=jt[Un.datasetIndex].label_y,Fn=Qn.dec,zs=Qn.suf,Ds=Un.element.y;return Zi&&(Zi+=": "),Zi+=Ds.toFixed(Fn)+zs,Zi},footer:function(Un){var Zi=Un[0].dataIndex,Qn=Lp.Utils.GetItemFromArray(g,Zi);Qn&&Xs.MoveMarkerToPosition(Qn,!1)}}}}}};let On=1;if(b&&b.length>0){var zn=this.mergeArrayForChart(w,b);let Un,Zi;gt!=""?Un=parseFloat(gt):Un=zn.Min,Vt!=""?Zi=parseFloat(Vt):Zi=zn.Max;var Rn="yaxis"+On++,An={type:"linear",max:Zi,min:Un,ticks:{callback(Qn,Fn,zs){return parseFloat(Qn+"").toFixed(an.dec)+an.suf}}};((wo=ps.options)==null?void 0:wo.scales)[Rn]=An,jt.push({label_x:Gi,label_y:an}),ps.data.datasets.push(this.wpgpxmapsGetDataset(hn.altitude,zn.Items,be,Rn))}if(E&&E.length>0){iP==ce?ni={suf:"min/100m",dec:2}:nP==ce?ni={suf:"knots",dec:2}:sP==ce?ni={suf:"min/mi",dec:2}:rP==ce?ni={suf:"min/km",dec:2}:oP==ce?ni={suf:"mi/h",dec:0}:aP==ce?ni={suf:"km/h",dec:0}:ni={suf:"m/s",dec:0};var zn=this.mergeArrayForChart(w,E);let Zi={type:"linear",ticks:{callback(Fn,zs,Ds){return parseFloat(Fn+"").toFixed(ni.dec)+ni.suf}},position:"right"};pt!=""?Zi.min=parseFloat(pt):Zi.min=zn.Min,Gt!=""?Zi.max=parseFloat(Gt):Zi.max=zn.Max,jt.push({label_x:jt[0].label_x,label_y:ni});var Rn="yaxis"+On++;((yr=ps.options)==null?void 0:yr.scales)[Rn]=Zi,ps.data.datasets.push(this.wpgpxmapsGetDataset(hn.speed,zn.Items,Ze,Rn))}if(i&&i.length>0){var zn=this.mergeArrayForChart(w,i),An={type:"linear",ticks:{callback(Fn,zs,Ds){return parseFloat(Fn+"").toFixed(ln.dec)+ln.suf}},position:"right"},Rn="yaxis"+On++;((Pr=ps.options)==null?void 0:Pr.scales)[Rn]=An,ps.data.datasets.push(this.wpgpxmapsGetDataset(hn.heartRate,zn.Items,je,Rn)),jt.push({label_x:jt[0].label_x,label_y:ln})}if(O&&O.length>0){var zn=this.mergeArrayForChart(w,O),An={type:"linear",ticks:{callback(Fn,zs,Ds){return parseFloat(Fn+"").toFixed(1)+"°C"}},position:"right"},Rn="yaxis"+On++;((ro=ps.options)==null?void 0:ro.scales)[Rn]=An,ps.data.datasets.push(this.wpgpxmapsGetDataset(hn.atemp,zn.Items,ht,Rn)),jt.push({label_x:jt[0].label_x,label_y:{suf:"°C",dec:1}})}if(j&&j.length>0){var zn=this.mergeArrayForChart(w,j,!0),An={type:"linear",ticks:{callback(Fn,zs,Ds){return parseFloat(Fn+"").toFixed(Di.dec)+Di.suf}},position:"right"},Rn="yaxis"+On++;((Ks=ps.options)==null?void 0:Ks.scales)[Rn]=An,ps.data.datasets.push(this.wpgpxmapsGetDataset(hn.cadence,zn.Items,ot,Rn)),jt.push({label_x:jt[0].label_x,label_y:Di})}if(Y&&Y.length>0){var zn=this.mergeArrayForChart(w,Y),An={type:"linear",ticks:{callback:function(Fn,zs,Ds){return parseFloat(Fn+"").toFixed(qt.dec)+qt.suf}},position:"right"};jt.push({label_x:jt[0].label_x,label_y:qt});var Rn="yaxis"+On++;((Ar=ps.options)==null?void 0:Ar.scales)[Rn]=An,ps.data.datasets.push(this.wpgpxmapsGetDataset(hn.grade,zn.Items,vt,Rn))}var js=(mi=document.getElementById("myChart_"+a))==null?void 0:mi.getContext("2d");js&&(this.myChart=new yl(js,ps))}else xs==null||xs.style.setProperty("display","none");return this}mergeArrayForChart(a,d,g){const w=a.length,b=new Array(w);let E=1e4,i=-1e4;for(let O=0;O<w;O++)if(a[O]!=null){let j=d[O];g===!0&&j===0&&(j=null),b[O]={x:a[O],y:j},j>i&&(i=j),j<E&&(E=j)}return{Items:b,Min:E,Max:i}}wpgpxmapsGetDataset(a,d,g,w){return{label:a,data:d,borderColor:g,backgroundColor:this.hexToRgbA(g,.3),pointRadius:0,borderWidth:1,pointHoverRadius:1,yAxisID:w}}hexToRgbA(a,d){let g;if(/^#([A-Fa-f0-9]{3}){1,2}$/.test(a))return g=a.substring(1).split(""),g.length==3&&(g=[g[0],g[0],g[1],g[1],g[2],g[2]]),g="0x"+g.join(""),"rgba("+[g>>16&255,g>>8&255,g&255].join(",")+","+d+")";throw new Error("Bad Hex")}getItemFromArray(a,d){try{return a[d]}catch{return[0,0]}}getClosestIndex(a,d,g){let w=1e4,b=0;for(let E=0;E<a.length;E++){if(a[E]===null)continue;const i=this.wpgpxmapsDist(a[E][0],a[E][1],d,g);i<w&&(b=E,w=i)}return b}getClosestImage(a,d,g){let w=1e4,b;const E=document.getElementById("ngimages_"+g);if(E==null)return;const i=E.getElementsByTagName("span");for(let O=0;O<i.length;O++){let j=i[O].getAttribute("lat"),Y=i[O].getAttribute("lon");if(j==null||Y==null)return;j=j.replace(",","."),Y=Y.replace(",",".");const J=this.wpgpxmapsDist(parseFloat(j),parseFloat(Y),a,d);J<w&&(b=i[O],w=J)}return b}isNumeric(a){return/^-{0,1}\d*\.{0,1}\d+$/.test(a)}wpgpxmapsDist(a,d,g,w){const b=g-a,E=w-d;return Math.sqrt(b*b+E*E)}}Vo.WPGPXMaps=lP,Object.defineProperty(Vo,Symbol.toStringTag,{value:"Module"})});
|
||
//# sourceMappingURL=WP-GPX-Maps.umd.js.map
|