/* MapLibre GL JS is licensed under the 3-Clause BSD License. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v2.4.0/LICENSE.txt */ /* https://github.com/acalcutt/maplibre-gl-js/tree/2.x_ie_compat */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? (module.exports = factory()) : typeof define === 'function' && define.amd ? define(factory) : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self), (global.maplibregl = factory())); })(this, function () { 'use strict'; /* eslint-disable */ var shared, worker, maplibregl; // define gets called three times: one for each chunk. we rely on the order // they're imported to know which is which function define(_, chunk) { if (!shared) { shared = chunk; } else if (!worker) { worker = chunk; } else { var workerBundleString = 'var sharedChunk = {}; (' + shared + ')(sharedChunk); (' + worker + ')(sharedChunk);'; var sharedChunk = {}; shared(sharedChunk); maplibregl = chunk(sharedChunk); if (typeof window !== 'undefined') { maplibregl.workerUrl = window.URL.createObjectURL( new Blob([workerBundleString], { type: 'text/javascript' }), ); } } } define(['exports'], function (t) { 'use strict'; var e = r; function r(t, e, r, n) { (this.cx = 3 * t), (this.bx = 3 * (r - t) - this.cx), (this.ax = 1 - this.cx - this.bx), (this.cy = 3 * e), (this.by = 3 * (n - e) - this.cy), (this.ay = 1 - this.cy - this.by), (this.p1x = t), (this.p1y = e), (this.p2x = r), (this.p2y = n); } function n(t, r, n, i) { var a = new e(t, r, n, i); return function (t) { return a.solve(t); }; } r.prototype = { sampleCurveX: function (t) { return ((this.ax * t + this.bx) * t + this.cx) * t; }, sampleCurveY: function (t) { return ((this.ay * t + this.by) * t + this.cy) * t; }, sampleCurveDerivativeX: function (t) { return (3 * this.ax * t + 2 * this.bx) * t + this.cx; }, solveCurveX: function (t, e) { if ((void 0 === e && (e = 1e-6), t < 0)) return 0; if (t > 1) return 1; for (var r = t, n = 0; n < 8; n++) { var i = this.sampleCurveX(r) - t; if (Math.abs(i) < e) return r; var a = this.sampleCurveDerivativeX(r); if (Math.abs(a) < 1e-6) break; r -= i / a; } var o = 0, s = 1; for ( r = t, n = 0; n < 20 && ((i = this.sampleCurveX(r)), !(Math.abs(i - t) < e)); n++ ) t > i ? (o = r) : (s = r), (r = 0.5 * (s - o) + o); return r; }, solve: function (t, e) { return this.sampleCurveY(this.solveCurveX(t, e)); }, }; var i = n(0.25, 0.1, 0.25, 1); function a(t, e, r) { return Math.min(r, Math.max(e, t)); } function o(t, e, r) { var n = r - e, i = ((((t - e) % n) + n) % n) + e; return i === e ? r : i; } function s(t) { for (var e = [], r = arguments.length - 1; r-- > 0; ) e[r] = arguments[r + 1]; for (var n = 0, i = e; n < i.length; n += 1) { var a = i[n]; for (var o in a) t[o] = a[o]; } return t; } var u = 1; function l(t, e) { t.forEach(function (t) { e[t] && (e[t] = e[t].bind(e)); }); } function p(t, e) { return -1 !== t.indexOf(e, t.length - e.length); } function c(t, e, r) { var n = {}; for (var i in t) n[i] = e.call(r || this, t[i], i, t); return n; } function h(t, e, r) { var n = {}; for (var i in t) e.call(r || this, t[i], i, t) && (n[i] = t[i]); return n; } function f(t) { return Array.isArray(t) ? t.map(f) : 'object' == typeof t && t ? c(t, f) : t; } var y = {}; function d(t) { y[t] || ('undefined' != typeof console && console.warn(t), (y[t] = !0)); } function m(t, e, r) { return (r.y - t.y) * (e.x - t.x) > (e.y - t.y) * (r.x - t.x); } function v(t) { for ( var e = 0, r = 0, n = t.length, i = n - 1, a = void 0, o = void 0; r < n; i = r++ ) e += ((o = t[i]).x - (a = t[r]).x) * (a.y + o.y); return e; } function g() { return ( 'undefined' != typeof WorkerGlobalScope && 'undefined' != typeof self && self instanceof WorkerGlobalScope ); } function x(t) { var e = {}; if ( (t.replace( /(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g, function (t, r, n, i) { var a = n || i; return (e[r] = !a || a.toLowerCase()), ''; }, ), e['max-age']) ) { var r = parseInt(e['max-age'], 10); isNaN(r) ? delete e['max-age'] : (e['max-age'] = r); } return e; } var b = null; function w(t) { if (null == b) { var e = t.navigator ? t.navigator.userAgent : null; b = !!t.safari || !( !e || !( /\b(iPad|iPhone|iPod)\b/.test(e) || (e.match('Safari') && !e.match('Chrome')) ) ); } return b; } function _(t) { return 'undefined' != typeof ImageBitmap && t instanceof ImageBitmap; } var A, k, S = { now: 'undefined' != typeof performance && performance && performance.now ? performance.now.bind(performance) : Date.now.bind(Date), frame: function (t) { var e = requestAnimationFrame(t); return { cancel: function () { return cancelAnimationFrame(e); }, }; }, getImageData: function (t, e) { void 0 === e && (e = 0); var r = window.document.createElement('canvas'), n = r.getContext('2d'); if (!n) throw new Error('failed to create canvas 2d context'); return ( (r.width = t.width), (r.height = t.height), n.drawImage(t, 0, 0, t.width, t.height), n.getImageData(-e, -e, t.width + 2 * e, t.height + 2 * e) ); }, resolveURL: function (t) { return A || (A = document.createElement('a')), (A.href = t), A.href; }, hardwareConcurrency: ('undefined' != typeof navigator && navigator.hardwareConcurrency) || 4, get prefersReducedMotion() { return ( !!matchMedia && (null == k && (k = matchMedia('(prefers-reduced-motion: reduce)')), k.matches) ); }, }, I = M; function M(t, e) { (this.x = t), (this.y = e); } function z(t) { var e = this.constructor; return this.then( function (r) { return e.resolve(t()).then(function () { return r; }); }, function (r) { return e.resolve(t()).then(function () { return e.reject(r); }); }, ); } function P(t) { return new this(function (e, r) { if (!t || void 0 === t.length) return r( new TypeError( typeof t + ' ' + t + ' is not iterable(cannot read property Symbol(Symbol.iterator))', ), ); var n = Array.prototype.slice.call(t); if (0 === n.length) return e([]); var i = n.length; function a(t, r) { if (r && ('object' == typeof r || 'function' == typeof r)) { var o = r.then; if ('function' == typeof o) return void o.call( r, function (e) { a(t, e); }, function (r) { (n[t] = { status: 'rejected', reason: r }), 0 == --i && e(n); }, ); } (n[t] = { status: 'fulfilled', value: r }), 0 == --i && e(n); } for (var o = 0; o < n.length; o++) a(o, n[o]); }); } (M.prototype = { clone: function () { return new M(this.x, this.y); }, add: function (t) { return this.clone()._add(t); }, sub: function (t) { return this.clone()._sub(t); }, multByPoint: function (t) { return this.clone()._multByPoint(t); }, divByPoint: function (t) { return this.clone()._divByPoint(t); }, mult: function (t) { return this.clone()._mult(t); }, div: function (t) { return this.clone()._div(t); }, rotate: function (t) { return this.clone()._rotate(t); }, rotateAround: function (t, e) { return this.clone()._rotateAround(t, e); }, matMult: function (t) { return this.clone()._matMult(t); }, 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 (t) { return this.x === t.x && this.y === t.y; }, dist: function (t) { return Math.sqrt(this.distSqr(t)); }, distSqr: function (t) { var e = t.x - this.x, r = t.y - this.y; return e * e + r * r; }, angle: function () { return Math.atan2(this.y, this.x); }, angleTo: function (t) { return Math.atan2(this.y - t.y, this.x - t.x); }, angleWith: function (t) { return this.angleWithSep(t.x, t.y); }, angleWithSep: function (t, e) { return Math.atan2(this.x * e - this.y * t, this.x * t + this.y * e); }, _matMult: function (t) { var e = t[2] * this.x + t[3] * this.y; return (this.x = t[0] * this.x + t[1] * this.y), (this.y = e), this; }, _add: function (t) { return (this.x += t.x), (this.y += t.y), this; }, _sub: function (t) { return (this.x -= t.x), (this.y -= t.y), this; }, _mult: function (t) { return (this.x *= t), (this.y *= t), this; }, _div: function (t) { return (this.x /= t), (this.y /= t), this; }, _multByPoint: function (t) { return (this.x *= t.x), (this.y *= t.y), this; }, _divByPoint: function (t) { return (this.x /= t.x), (this.y /= t.y), this; }, _unit: function () { return this._div(this.mag()), this; }, _perp: function () { var t = this.y; return (this.y = this.x), (this.x = -t), this; }, _rotate: function (t) { var e = Math.cos(t), r = Math.sin(t), n = r * this.x + e * this.y; return (this.x = e * this.x - r * this.y), (this.y = n), this; }, _rotateAround: function (t, e) { var r = Math.cos(t), n = Math.sin(t), i = e.y + n * (this.x - e.x) + r * (this.y - e.y); return ( (this.x = e.x + r * (this.x - e.x) - n * (this.y - e.y)), (this.y = i), this ); }, _round: function () { return ( (this.x = Math.round(this.x)), (this.y = Math.round(this.y)), this ); }, }), (M.convert = function (t) { return t instanceof M ? t : Array.isArray(t) ? new M(t[0], t[1]) : t; }); var B = setTimeout, C = 'undefined' != typeof setImmediate ? setImmediate : null; function E(t) { return Boolean(t && void 0 !== t.length); } function V() {} function T(t) { if (!(this instanceof T)) throw new TypeError('Promises must be constructed via new'); if ('function' != typeof t) throw new TypeError('not a function'); (this._state = 0), (this._handled = !1), (this._value = void 0), (this._deferreds = []), R(t, this); } function F(t, e) { for (; 3 === t._state; ) t = t._value; 0 !== t._state ? ((t._handled = !0), T._immediateFn(function () { var r = 1 === t._state ? e.onFulfilled : e.onRejected; if (null !== r) { var n; try { n = r(t._value); } catch (t) { return void L(e.promise, t); } O(e.promise, n); } else (1 === t._state ? O : L)(e.promise, t._value); })) : t._deferreds.push(e); } function O(t, e) { try { if (e === t) throw new TypeError('A promise cannot be resolved with itself.'); if (e && ('object' == typeof e || 'function' == typeof e)) { var r = e.then; if (e instanceof T) return (t._state = 3), (t._value = e), void D(t); if ('function' == typeof r) return void R( ((n = r), (i = e), function () { n.apply(i, arguments); }), t, ); } (t._state = 1), (t._value = e), D(t); } catch (e) { L(t, e); } var n, i; } function L(t, e) { (t._state = 2), (t._value = e), D(t); } function D(t) { 2 === t._state && 0 === t._deferreds.length && T._immediateFn(function () { t._handled || T._unhandledRejectionFn(t._value); }); for (var e = 0, r = t._deferreds.length; e < r; e++) F(t, t._deferreds[e]); t._deferreds = null; } function j(t, e, r) { (this.onFulfilled = 'function' == typeof t ? t : null), (this.onRejected = 'function' == typeof e ? e : null), (this.promise = r); } function R(t, e) { var r = !1; try { t( function (t) { r || ((r = !0), O(e, t)); }, function (t) { r || ((r = !0), L(e, t)); }, ); } catch (t) { if (r) return; (r = !0), L(e, t); } } (T.prototype.catch = function (t) { return this.then(null, t); }), (T.prototype.then = function (t, e) { var r = new this.constructor(V); return F(this, new j(t, e, r)), r; }), (T.prototype.finally = z), (T.all = function (t) { return new T(function (e, r) { if (!E(t)) return r(new TypeError('Promise.all accepts an array')); var n = Array.prototype.slice.call(t); if (0 === n.length) return e([]); var i = n.length; function a(t, o) { try { if (o && ('object' == typeof o || 'function' == typeof o)) { var s = o.then; if ('function' == typeof s) return void s.call( o, function (e) { a(t, e); }, r, ); } (n[t] = o), 0 == --i && e(n); } catch (t) { r(t); } } for (var o = 0; o < n.length; o++) a(o, n[o]); }); }), (T.allSettled = P), (T.resolve = function (t) { return t && 'object' == typeof t && t.constructor === T ? t : new T(function (e) { e(t); }); }), (T.reject = function (t) { return new T(function (e, r) { r(t); }); }), (T.race = function (t) { return new T(function (e, r) { if (!E(t)) return r(new TypeError('Promise.race accepts an array')); for (var n = 0, i = t.length; n < i; n++) T.resolve(t[n]).then(e, r); }); }), (T._immediateFn = ('function' == typeof C && function (t) { C(t); }) || function (t) { B(t, 0); }), (T._unhandledRejectionFn = function (t) { 'undefined' != typeof console && console && console.warn('Possible Unhandled Promise Rejection:', t); }); var U, q = (function () { if ('undefined' != typeof self) return self; if ('undefined' != typeof window) return window; if ('undefined' != typeof global) return global; throw new Error('unable to locate global object'); })(); 'function' != typeof q.Promise ? (q.Promise = T) : (q.Promise.prototype.finally || (q.Promise.prototype.finally = z), q.Promise.allSettled || (q.Promise.allSettled = P)), self.fetch || (self.fetch = function (t, e) { return ( (e = e || {}), new Promise(function (r, n) { var i = new XMLHttpRequest(), a = [], o = [], s = {}, u = function () { return { ok: 2 == ((i.status / 100) | 0), statusText: i.statusText, status: i.status, url: i.responseURL, text: function () { return Promise.resolve(i.responseText); }, json: function () { return Promise.resolve(i.responseText).then(JSON.parse); }, blob: function () { return Promise.resolve(new Blob([i.response])); }, clone: u, headers: { keys: function () { return a; }, entries: function () { return o; }, get: function (t) { return s[t.toLowerCase()]; }, has: function (t) { return t.toLowerCase() in s; }, }, }; }; for (var l in (i.open(e.method || 'get', t, !0), (i.onload = function () { i .getAllResponseHeaders() .replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm, function (t, e, r) { a.push((e = e.toLowerCase())), o.push([e, r]), (s[e] = s[e] ? s[e] + ',' + r : r); }), r(u()); }), (i.onerror = n), (i.withCredentials = 'include' == e.credentials), e.headers)) i.setRequestHeader(l, e.headers[l]); i.send(e.body || null); }) ); }), (U = function () { function t(t, e) { if (!(t instanceof e)) throw new TypeError('Cannot call a class as a function'); } function e(t, e) { for (var r = 0; r < e.length; r++) { var n = e[r]; (n.enumerable = n.enumerable || !1), (n.configurable = !0), 'value' in n && (n.writable = !0), Object.defineProperty(t, n.key, n); } } function r(t, r, n) { return r && e(t.prototype, r), n && e(t, n), t; } function n(t) { return ( (n = Object.setPrototypeOf ? Object.getPrototypeOf : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }), n(t) ); } function i(t, e) { return ( (i = Object.setPrototypeOf || function (t, e) { return (t.__proto__ = e), t; }), i(t, e) ); } function a(t) { if (void 0 === t) throw new ReferenceError( "this hasn't been initialised - super() hasn't been called", ); return t; } function o(t, e) { return !e || ('object' != typeof e && 'function' != typeof e) ? a(t) : e; } function s(t, e, r) { return ( (s = 'undefined' != typeof Reflect && Reflect.get ? Reflect.get : function (t, e, r) { var i = (function (t, e) { for ( ; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = n(t)); ); return t; })(t, e); if (i) { var a = Object.getOwnPropertyDescriptor(i, e); return a.get ? a.get.call(r) : a.value; } }), s(t, e, r || t) ); } var u = (function () { function e() { t(this, e), Object.defineProperty(this, 'listeners', { value: {}, writable: !0, configurable: !0, }); } return ( r(e, [ { key: 'addEventListener', value: function (t, e, r) { t in this.listeners || (this.listeners[t] = []), this.listeners[t].push({ callback: e, options: r }); }, }, { key: 'removeEventListener', value: function (t, e) { if (t in this.listeners) for ( var r = this.listeners[t], n = 0, i = r.length; n < i; n++ ) if (r[n].callback === e) return void r.splice(n, 1); }, }, { key: 'dispatchEvent', value: function (t) { if (t.type in this.listeners) { for ( var e = this.listeners[t.type].slice(), r = 0, n = e.length; r < n; r++ ) { var i = e[r]; try { i.callback.call(this, t); } catch (t) { Promise.resolve().then(function () { throw t; }); } i.options && i.options.once && this.removeEventListener(t.type, i.callback); } return !t.defaultPrevented; } }, }, ]), e ); })(), l = (function (e) { !(function (t, e) { if ('function' != typeof e && null !== e) throw new TypeError( 'Super expression must either be null or a function', ); (t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 }, })), e && i(t, e); })(h, e); var l, p, c = ((l = h), (p = (function () { if ('undefined' == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ('function' == typeof Proxy) return !0; try { return ( Boolean.prototype.valueOf.call( Reflect.construct(Boolean, [], function () {}), ), !0 ); } catch (t) { return !1; } })()), function () { var t, e = n(l); if (p) { var r = n(this).constructor; t = Reflect.construct(e, arguments, r); } else t = e.apply(this, arguments); return o(this, t); }); function h() { var e; return ( t(this, h), (e = c.call(this)).listeners || u.call(a(e)), Object.defineProperty(a(e), 'aborted', { value: !1, writable: !0, configurable: !0, }), Object.defineProperty(a(e), 'onabort', { value: null, writable: !0, configurable: !0, }), e ); } return ( r(h, [ { key: 'toString', value: function () { return '[object AbortSignal]'; }, }, { key: 'dispatchEvent', value: function (t) { 'abort' === t.type && ((this.aborted = !0), 'function' == typeof this.onabort && this.onabort.call(this, t)), s(n(h.prototype), 'dispatchEvent', this).call(this, t); }, }, ]), h ); })(u), p = (function () { function e() { t(this, e), Object.defineProperty(this, 'signal', { value: new l(), writable: !0, configurable: !0, }); } return ( r(e, [ { key: 'abort', value: function () { var t; try { t = new Event('abort'); } catch (e) { 'undefined' != typeof document ? document.createEvent ? (t = document.createEvent('Event')).initEvent( 'abort', !1, !1, ) : ((t = document.createEventObject()).type = 'abort') : (t = { type: 'abort', bubbles: !1, cancelable: !1 }); } this.signal.dispatchEvent(t); }, }, { key: 'toString', value: function () { return '[object AbortController]'; }, }, ]), e ); })(); function c(t) { return t.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL ? (console.log( '__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill', ), !0) : ('function' == typeof t.Request && !t.Request.prototype.hasOwnProperty('signal')) || !t.AbortController; } 'undefined' != typeof Symbol && Symbol.toStringTag && ((p.prototype[Symbol.toStringTag] = 'AbortController'), (l.prototype[Symbol.toStringTag] = 'AbortSignal')), (function (t) { if (c(t)) if (t.fetch) { var e = (function (t) { 'function' == typeof t && (t = { fetch: t }); var e = t.fetch, r = t.Request, n = void 0 === r ? e.Request : r, i = t.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL, a = void 0 !== i && i; if ( !c({ fetch: e, Request: n, AbortController: t.AbortController, __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL: a, }) ) return { fetch: e, Request: o }; var o = n; ((o && !o.prototype.hasOwnProperty('signal')) || a) && ((o = function (t, e) { var r; e && e.signal && ((r = e.signal), delete e.signal); var i = new n(t, e); return ( r && Object.defineProperty(i, 'signal', { writable: !1, enumerable: !1, configurable: !0, value: r, }), i ); }).prototype = n.prototype); var s = e; return { fetch: function (t, e) { var r = o && o.prototype.isPrototypeOf(t) ? t.signal : e ? e.signal : void 0; if (r) { var n; try { n = new DOMException('Aborted', 'AbortError'); } catch (t) { (n = new Error('Aborted')).name = 'AbortError'; } if (r.aborted) return Promise.reject(n); var i = new Promise(function (t, e) { r.addEventListener( 'abort', function () { return e(n); }, { once: !0 }, ); }); return ( e && e.signal && delete e.signal, Promise.race([i, s(t, e)]) ); } return s(t, e); }, Request: o, }; })(t), r = e.Request; (t.fetch = e.fetch), (t.Request = r), Object.defineProperty(t, 'AbortController', { writable: !0, enumerable: !1, configurable: !0, value: p, }), Object.defineProperty(t, 'AbortSignal', { writable: !0, enumerable: !1, configurable: !0, value: l, }); } else console.warn( 'fetch() is not available, cannot install abortcontroller-polyfill', ); })('undefined' != typeof self ? self : global); }), 'function' == typeof define && define.amd ? define(U) : U(); var N, Z, K = { MAX_PARALLEL_IMAGE_REQUESTS: 16, REGISTERED_PROTOCOLS: {} }, G = 'mapbox-tiles', J = 500, X = 50; function Y() { 'undefined' == typeof caches || N || (N = caches.open(G)); } var H, W, $ = 1 / 0, Q = { supported: !1, testSupport: function (t) { !tt && W && (et ? rt(t) : (H = t)); }, }, tt = !1, et = !1; function rt(t) { var e = t.createTexture(); t.bindTexture(t.TEXTURE_2D, e); try { if ( (t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, t.RGBA, t.UNSIGNED_BYTE, W), t.isContextLost()) ) return; Q.supported = !0; } catch (t) {} t.deleteTexture(e), (tt = !0); } 'undefined' != typeof document && (((W = document.createElement('img')).onload = function () { H && rt(H), (H = null), (et = !0); }), (W.onerror = function () { (tt = !0), (H = null); }), (W.src = 'data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=')); var nt = { Unknown: 'Unknown', Style: 'Style', Source: 'Source', Tile: 'Tile', Glyphs: 'Glyphs', SpriteImage: 'SpriteImage', SpriteJSON: 'SpriteJSON', Image: 'Image', }; 'function' == typeof Object.freeze && Object.freeze(nt); var it = (function (t) { function e(e, r, n, i) { t.call(this, 'AJAXError: ' + r + ' (' + e + '): ' + n), (this.status = e), (this.statusText = r), (this.url = n), (this.body = i); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Error), at = g() ? function () { return self.worker && self.worker.referrer; } : function () { return ( 'blob:' === window.location.protocol ? window.parent : window ).location.href; }; function ot(t, e) { var r = new AbortController(), n = new Request(t.url, { method: t.method || 'GET', body: t.body, credentials: t.credentials, headers: t.headers, referrer: at(), signal: r.signal, }), i = !1, a = !1; 'json' === t.type && n.headers.set('Accept', 'application/json'); return ( (function (r, o, s) { if (!a) { var u = Date.now(); fetch(n) .then(function (r) { return r.ok ? (function (r, o, s) { ('arrayBuffer' === t.type ? r.arrayBuffer() : 'json' === t.type ? r.json() : r.text() ) .then(function (t) { a || (o && s && (function (t, e, r) { if ((Y(), N)) { var n = { status: e.status, statusText: e.statusText, headers: new Headers(), }; e.headers.forEach(function (t, e) { return n.headers.set(e, t); }); var i = x( e.headers.get('Cache-Control') || '', ); i['no-store'] || (i['max-age'] && n.headers.set( 'Expires', new Date( r + 1e3 * i['max-age'], ).toUTCString(), ), new Date( n.headers.get('Expires'), ).getTime() - r < 42e4 || (function (t, e) { if (void 0 === Z) try { new Response(new ReadableStream()), (Z = !0); } catch (t) { Z = !1; } Z ? e(t.body) : t.blob().then(e); })(e, function (e) { var r = new Response(e, n); Y(), N && N.then(function (e) { return e.put( (i = (n = t.url).indexOf('?')) < 0 ? n : n.slice(0, i), r, ); var n, i; }).catch(function (t) { return d(t.message); }); })); } })(n, o, s), (i = !0), e( null, t, r.headers.get('Cache-Control'), r.headers.get('Expires'), )); }) .catch(function (t) { a || e(new Error(t.message)); }); })(r, null, u) : r.blob().then(function (n) { return e(new it(r.status, r.statusText, t.url, n)); }); }) .catch(function (t) { 20 !== t.code && e(new Error(t.message)); }); } })(), { cancel: function () { (a = !0), i || r.abort(); }, } ); } var st, ut, lt = function (t, e) { if (/:\/\//.test(t.url) && !/^https?:|^file:/.test(t.url)) { if (g() && self.worker && self.worker.actor) return self.worker.actor.send('getResource', t, e); if (!g()) { var r = t.url.substring(0, t.url.indexOf('://')); return (K.REGISTERED_PROTOCOLS[r] || ot)(t, e); } } if ( !( /^file:/.test((n = t.url)) || (/^file:/.test(at()) && !/^\w+:/.test(n)) ) ) { if ( fetch && Request && AbortController && Object.prototype.hasOwnProperty.call(Request.prototype, 'signal') ) return ot(t, e); if (g() && self.worker && self.worker.actor) return self.worker.actor.send('getResource', t, e, void 0, !0); } var n; return (function (t, e) { var r = new XMLHttpRequest(); for (var n in (r.open(t.method || 'GET', t.url, !0), 'arrayBuffer' === t.type && (r.responseType = 'arraybuffer'), t.headers)) r.setRequestHeader(n, t.headers[n]); return ( 'json' === t.type && ((r.responseType = 'text'), r.setRequestHeader('Accept', 'application/json')), (r.withCredentials = 'include' === t.credentials), (r.onerror = function () { e(new Error(r.statusText)); }), (r.onload = function () { if ( ((r.status >= 200 && r.status < 300) || 0 === r.status) && null !== r.response ) { var n = r.response; if ('json' === t.type) try { n = JSON.parse(r.response); } catch (t) { return e(t); } e( null, n, r.getResponseHeader('Cache-Control'), r.getResponseHeader('Expires'), ); } else { var i = new Blob([r.response], { type: r.getResponseHeader('Content-Type'), }); e(new it(r.status, r.statusText, t.url, i)); } }), r.send(t.body), { cancel: function () { return r.abort(); }, } ); })(t, e); }, pt = function (t, e) { return lt(s(t, { type: 'arrayBuffer' }), e); }, ct = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII='; (st = []), (ut = 0); var ht = function (t, e) { if ( (Q.supported && (t.headers || (t.headers = {}), (t.headers.accept = 'image/webp,*/*')), ut >= K.MAX_PARALLEL_IMAGE_REQUESTS) ) { var r = { requestParameters: t, callback: e, cancelled: !1, cancel: function () { this.cancelled = !0; }, }; return st.push(r), r; } ut++; var n = !1, i = function () { if (!n) for ( n = !0, ut--; st.length && ut < K.MAX_PARALLEL_IMAGE_REQUESTS; ) { var t = st.shift(); t.cancelled || (t.cancel = ht(t.requestParameters, t.callback).cancel); } }, a = pt(t, function (t, r, n, a) { i(), t ? e(t) : r && (function (t, e) { 'function' == typeof createImageBitmap ? (function (t, e) { var r = new Blob([new Uint8Array(t)], { type: 'image/png', }); createImageBitmap(r) .then(function (t) { e(null, t); }) .catch(function (t) { e( new Error( 'Could not load image because of ' + t.message + '. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.', ), ); }); })(t, e) : (function (t, e) { var r = new Image(); (r.onload = function () { e(null, r), URL.revokeObjectURL(r.src), (r.onload = null), window.requestAnimationFrame(function () { r.src = ct; }); }), (r.onerror = function () { return e( 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.', ), ); }); var n = new Blob([new Uint8Array(t)], { type: 'image/png', }); r.src = t.byteLength ? URL.createObjectURL(n) : ct; })(t, e); })(r, function (t, r) { null != t ? e(t) : null != r && e(null, r, { cacheControl: n, expires: a }); }); }); return { cancel: function () { a.cancel(), i(); }, }; }; function ft(t, e, r) { (r[t] && -1 !== r[t].indexOf(e)) || ((r[t] = r[t] || []), r[t].push(e)); } function yt(t, e, r) { if (r && r[t]) { var n = r[t].indexOf(e); -1 !== n && r[t].splice(n, 1); } } var dt = function (t, e) { void 0 === e && (e = {}), s(this, e), (this.type = t); }, mt = (function (t) { function e(e, r) { void 0 === r && (r = {}), t.call(this, 'error', s({ error: e }, r)); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(dt), vt = function () {}; (vt.prototype.on = function (t, e) { return ( (this._listeners = this._listeners || {}), ft(t, e, this._listeners), this ); }), (vt.prototype.off = function (t, e) { return ( yt(t, e, this._listeners), yt(t, e, this._oneTimeListeners), this ); }), (vt.prototype.once = function (t, e) { return ( (this._oneTimeListeners = this._oneTimeListeners || {}), ft(t, e, this._oneTimeListeners), this ); }), (vt.prototype.fire = function (t, e) { 'string' == typeof t && (t = new dt(t, e || {})); var r = t.type; if (this.listens(r)) { t.target = this; for ( var n = 0, i = this._listeners && this._listeners[r] ? this._listeners[r].slice() : []; n < i.length; n += 1 ) i[n].call(this, t); for ( var a = 0, o = this._oneTimeListeners && this._oneTimeListeners[r] ? this._oneTimeListeners[r].slice() : []; a < o.length; a += 1 ) { var u = o[a]; yt(r, u, this._oneTimeListeners), u.call(this, t); } var l = this._eventedParent; l && (s( t, 'function' == typeof this._eventedParentData ? this._eventedParentData() : this._eventedParentData, ), l.fire(t)); } else t instanceof mt && console.error(t.error); return this; }), (vt.prototype.listens = function (t) { return ( (this._listeners && this._listeners[t] && this._listeners[t].length > 0) || (this._oneTimeListeners && this._oneTimeListeners[t] && this._oneTimeListeners[t].length > 0) || (this._eventedParent && this._eventedParent.listens(t)) ); }), (vt.prototype.setEventedParent = function (t, e) { return (this._eventedParent = t), (this._eventedParentData = e), this; }); var gt = { $version: 8, $root: { version: { required: !0, type: 'enum', values: [8] }, name: { type: 'string' }, metadata: { type: '*' }, center: { type: 'array', value: 'number' }, zoom: { type: 'number' }, bearing: { type: 'number', default: 0, period: 360, units: 'degrees', }, pitch: { type: 'number', default: 0, units: 'degrees' }, light: { type: 'light' }, terrain: { type: 'terrain' }, sources: { required: !0, type: 'sources' }, sprite: { type: 'string' }, glyphs: { type: 'string' }, transition: { type: 'transition' }, layers: { required: !0, type: 'array', value: 'layer' }, }, sources: { '*': { type: 'source' } }, source: [ 'source_vector', 'source_raster', 'source_raster_dem', 'source_geojson', 'source_video', 'source_image', ], source_vector: { type: { required: !0, type: 'enum', values: { vector: {} } }, 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: {}, tms: {} }, default: 'xyz', }, minzoom: { type: 'number', default: 0 }, maxzoom: { type: 'number', default: 22 }, attribution: { type: 'string' }, promoteId: { type: 'promoteId' }, volatile: { type: 'boolean', default: !1 }, '*': { type: '*' }, }, source_raster: { type: { required: !0, type: 'enum', values: { raster: {} } }, 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, units: 'pixels' }, scheme: { type: 'enum', values: { xyz: {}, tms: {} }, default: 'xyz', }, attribution: { type: 'string' }, volatile: { type: 'boolean', default: !1 }, '*': { type: '*' }, }, source_raster_dem: { type: { required: !0, type: 'enum', values: { 'raster-dem': {} } }, 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, units: 'pixels' }, attribution: { type: 'string' }, encoding: { type: 'enum', values: { terrarium: {}, mapbox: {} }, default: 'mapbox', }, volatile: { type: 'boolean', default: !1 }, '*': { type: '*' }, }, source_geojson: { type: { required: !0, type: 'enum', values: { geojson: {} } }, data: { type: '*' }, maxzoom: { type: 'number', default: 18 }, attribution: { type: 'string' }, buffer: { type: 'number', default: 128, maximum: 512, minimum: 0 }, filter: { type: '*' }, tolerance: { type: 'number', default: 0.375 }, cluster: { type: 'boolean', default: !1 }, clusterRadius: { type: 'number', default: 50, minimum: 0 }, clusterMaxZoom: { type: 'number' }, clusterMinPoints: { type: 'number' }, clusterProperties: { type: '*' }, lineMetrics: { type: 'boolean', default: !1 }, generateId: { type: 'boolean', default: !1 }, promoteId: { type: 'promoteId' }, }, source_video: { type: { required: !0, type: 'enum', values: { video: {} } }, urls: { required: !0, type: 'array', value: 'string' }, coordinates: { required: !0, type: 'array', length: 4, value: { type: 'array', length: 2, value: 'number' }, }, }, source_image: { type: { required: !0, type: 'enum', values: { image: {} } }, url: { required: !0, type: 'string' }, coordinates: { required: !0, type: 'array', length: 4, value: { type: 'array', length: 2, value: 'number' }, }, }, layer: { id: { type: 'string', required: !0 }, type: { type: 'enum', values: { fill: {}, line: {}, symbol: {}, circle: {}, heatmap: {}, 'fill-extrusion': {}, raster: {}, hillshade: {}, background: {}, }, required: !0, }, metadata: { type: '*' }, source: { type: 'string' }, 'source-layer': { 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_fill', 'layout_line', 'layout_circle', 'layout_heatmap', 'layout_fill-extrusion', 'layout_symbol', 'layout_raster', 'layout_hillshade', 'layout_background', ], layout_background: { visibility: { type: 'enum', values: { visible: {}, none: {} }, default: 'visible', 'property-type': 'constant', }, }, layout_fill: { 'fill-sort-key': { type: 'number', expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, visibility: { type: 'enum', values: { visible: {}, none: {} }, default: 'visible', 'property-type': 'constant', }, }, layout_circle: { 'circle-sort-key': { type: 'number', expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, visibility: { type: 'enum', values: { visible: {}, none: {} }, default: 'visible', 'property-type': 'constant', }, }, layout_heatmap: { visibility: { type: 'enum', values: { visible: {}, none: {} }, default: 'visible', 'property-type': 'constant', }, }, 'layout_fill-extrusion': { visibility: { type: 'enum', values: { visible: {}, none: {} }, default: 'visible', 'property-type': 'constant', }, }, layout_line: { 'line-cap': { type: 'enum', values: { butt: {}, round: {}, square: {} }, default: 'butt', expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'line-join': { type: 'enum', values: { bevel: {}, round: {}, miter: {} }, default: 'miter', expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'line-miter-limit': { type: 'number', default: 2, requires: [{ 'line-join': 'miter' }], expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'line-round-limit': { type: 'number', default: 1.05, requires: [{ 'line-join': 'round' }], expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'line-sort-key': { type: 'number', expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, visibility: { type: 'enum', values: { visible: {}, none: {} }, default: 'visible', 'property-type': 'constant', }, }, layout_symbol: { 'symbol-placement': { type: 'enum', values: { point: {}, line: {}, 'line-center': {} }, default: 'point', expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'symbol-spacing': { type: 'number', default: 250, minimum: 1, units: 'pixels', requires: [{ 'symbol-placement': 'line' }], expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'symbol-avoid-edges': { type: 'boolean', default: !1, expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'symbol-sort-key': { type: 'number', expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'symbol-z-order': { type: 'enum', values: { auto: {}, 'viewport-y': {}, source: {} }, default: 'auto', expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'icon-allow-overlap': { type: 'boolean', default: !1, requires: ['icon-image', { '!': 'icon-overlap' }], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'icon-overlap': { type: 'enum', values: { never: {}, always: {}, cooperative: {} }, requires: ['icon-image'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'icon-ignore-placement': { type: 'boolean', default: !1, requires: ['icon-image'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'icon-optional': { type: 'boolean', default: !1, requires: ['icon-image', 'text-field'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'icon-rotation-alignment': { type: 'enum', values: { map: {}, viewport: {}, auto: {} }, default: 'auto', requires: ['icon-image'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'icon-size': { type: 'number', default: 1, minimum: 0, units: 'factor of the original icon size', requires: ['icon-image'], expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'icon-text-fit': { type: 'enum', values: { none: {}, width: {}, height: {}, both: {} }, default: 'none', requires: ['icon-image', 'text-field'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'icon-text-fit-padding': { type: 'array', value: 'number', length: 4, default: [0, 0, 0, 0], units: 'pixels', requires: [ 'icon-image', 'text-field', { 'icon-text-fit': ['both', 'width', 'height'] }, ], expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'icon-image': { type: 'resolvedImage', tokens: !0, expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'icon-rotate': { type: 'number', default: 0, period: 360, units: 'degrees', requires: ['icon-image'], expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'icon-padding': { type: 'padding', default: [2], units: 'pixels', requires: ['icon-image'], expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'icon-keep-upright': { type: 'boolean', default: !1, requires: [ 'icon-image', { 'icon-rotation-alignment': 'map' }, { 'symbol-placement': ['line', 'line-center'] }, ], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'icon-offset': { type: 'array', value: 'number', length: 2, default: [0, 0], requires: ['icon-image'], expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'icon-anchor': { type: 'enum', values: { center: {}, left: {}, right: {}, top: {}, bottom: {}, 'top-left': {}, 'top-right': {}, 'bottom-left': {}, 'bottom-right': {}, }, default: 'center', requires: ['icon-image'], expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'icon-pitch-alignment': { type: 'enum', values: { map: {}, viewport: {}, auto: {} }, default: 'auto', requires: ['icon-image'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'text-pitch-alignment': { type: 'enum', values: { map: {}, viewport: {}, auto: {} }, default: 'auto', requires: ['text-field'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'text-rotation-alignment': { type: 'enum', values: { map: {}, viewport: {}, 'viewport-glyph': {}, auto: {} }, default: 'auto', requires: ['text-field'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'text-field': { type: 'formatted', default: '', tokens: !0, expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'text-font': { type: 'array', value: 'string', default: ['Open Sans Regular', 'Arial Unicode MS Regular'], requires: ['text-field'], expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'text-size': { type: 'number', default: 16, minimum: 0, units: 'pixels', requires: ['text-field'], expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'text-max-width': { type: 'number', default: 10, minimum: 0, units: 'ems', requires: ['text-field'], expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'text-line-height': { type: 'number', default: 1.2, units: 'ems', requires: ['text-field'], expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'text-letter-spacing': { type: 'number', default: 0, units: 'ems', requires: ['text-field'], expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'text-justify': { type: 'enum', values: { auto: {}, left: {}, center: {}, right: {} }, default: 'center', requires: ['text-field'], expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'text-radial-offset': { type: 'number', units: 'ems', default: 0, requires: ['text-field'], 'property-type': 'data-driven', expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, }, 'text-variable-anchor': { type: 'array', value: 'enum', values: { center: {}, left: {}, right: {}, top: {}, bottom: {}, 'top-left': {}, 'top-right': {}, 'bottom-left': {}, 'bottom-right': {}, }, requires: ['text-field', { 'symbol-placement': ['point'] }], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'text-anchor': { type: 'enum', values: { center: {}, left: {}, right: {}, top: {}, bottom: {}, 'top-left': {}, 'top-right': {}, 'bottom-left': {}, 'bottom-right': {}, }, default: 'center', requires: ['text-field', { '!': 'text-variable-anchor' }], expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'text-max-angle': { type: 'number', default: 45, units: 'degrees', requires: [ 'text-field', { 'symbol-placement': ['line', 'line-center'] }, ], expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'text-writing-mode': { type: 'array', value: 'enum', values: { horizontal: {}, vertical: {} }, requires: ['text-field', { 'symbol-placement': ['point'] }], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'text-rotate': { type: 'number', default: 0, period: 360, units: 'degrees', requires: ['text-field'], expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'text-padding': { type: 'number', default: 2, minimum: 0, units: 'pixels', requires: ['text-field'], expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'text-keep-upright': { type: 'boolean', default: !0, requires: [ 'text-field', { 'text-rotation-alignment': 'map' }, { 'symbol-placement': ['line', 'line-center'] }, ], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'text-transform': { type: 'enum', values: { none: {}, uppercase: {}, lowercase: {} }, default: 'none', requires: ['text-field'], expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'text-offset': { type: 'array', value: 'number', units: 'ems', length: 2, default: [0, 0], requires: ['text-field', { '!': 'text-radial-offset' }], expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, 'property-type': 'data-driven', }, 'text-allow-overlap': { type: 'boolean', default: !1, requires: ['text-field', { '!': 'text-overlap' }], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'text-overlap': { type: 'enum', values: { never: {}, always: {}, cooperative: {} }, requires: ['text-field'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'text-ignore-placement': { type: 'boolean', default: !1, requires: ['text-field'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'text-optional': { type: 'boolean', default: !1, requires: ['text-field', 'icon-image'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, visibility: { type: 'enum', values: { visible: {}, none: {} }, default: 'visible', 'property-type': 'constant', }, }, layout_raster: { visibility: { type: 'enum', values: { visible: {}, none: {} }, default: 'visible', 'property-type': 'constant', }, }, layout_hillshade: { visibility: { type: 'enum', values: { visible: {}, none: {} }, default: 'visible', 'property-type': 'constant', }, }, filter: { type: 'array', value: '*' }, filter_operator: { type: 'enum', values: { '==': {}, '!=': {}, '>': {}, '>=': {}, '<': {}, '<=': {}, in: {}, '!in': {}, all: {}, any: {}, none: {}, has: {}, '!has': {}, within: {}, }, }, geometry_type: { type: 'enum', values: { Point: {}, LineString: {}, Polygon: {} }, }, 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: {}, exponential: {}, interval: {}, categorical: {}, }, default: 'exponential', }, colorSpace: { type: 'enum', values: { rgb: {}, lab: {}, hcl: {} }, default: 'rgb', }, default: { type: '*', required: !1 }, }, function_stop: { type: 'array', minimum: 0, maximum: 24, value: ['number', 'color'], length: 2, }, expression: { type: 'array', value: '*', minimum: 1 }, light: { anchor: { type: 'enum', default: 'viewport', values: { map: {}, viewport: {} }, 'property-type': 'data-constant', transition: !1, expression: { interpolated: !1, parameters: ['zoom'] }, }, position: { type: 'array', default: [1.15, 210, 30], length: 3, value: 'number', 'property-type': 'data-constant', transition: !0, expression: { interpolated: !0, parameters: ['zoom'] }, }, color: { type: 'color', 'property-type': 'data-constant', default: '#ffffff', expression: { interpolated: !0, parameters: ['zoom'] }, transition: !0, }, intensity: { type: 'number', 'property-type': 'data-constant', default: 0.5, minimum: 0, maximum: 1, expression: { interpolated: !0, parameters: ['zoom'] }, transition: !0, }, }, terrain: { source: { type: 'string', required: !0 }, exaggeration: { type: 'number', minimum: 0, default: 1 }, elevationOffset: { type: 'number', default: 450 }, }, paint: [ 'paint_fill', 'paint_line', 'paint_circle', 'paint_heatmap', 'paint_fill-extrusion', 'paint_symbol', 'paint_raster', 'paint_hillshade', 'paint_background', ], paint_fill: { 'fill-antialias': { type: 'boolean', default: !0, expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'fill-opacity': { type: 'number', default: 1, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'fill-color': { type: 'color', default: '#000000', transition: !0, requires: [{ '!': 'fill-pattern' }], expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'fill-outline-color': { type: 'color', transition: !0, requires: [{ '!': 'fill-pattern' }, { 'fill-antialias': !0 }], expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'fill-translate': { type: 'array', value: 'number', length: 2, default: [0, 0], transition: !0, units: 'pixels', expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'fill-translate-anchor': { type: 'enum', values: { map: {}, viewport: {} }, default: 'map', requires: ['fill-translate'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'fill-pattern': { type: 'resolvedImage', transition: !0, expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, 'property-type': 'cross-faded-data-driven', }, }, 'paint_fill-extrusion': { 'fill-extrusion-opacity': { type: 'number', default: 1, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'fill-extrusion-color': { type: 'color', default: '#000000', transition: !0, requires: [{ '!': 'fill-extrusion-pattern' }], expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'fill-extrusion-translate': { type: 'array', value: 'number', length: 2, default: [0, 0], transition: !0, units: 'pixels', expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'fill-extrusion-translate-anchor': { type: 'enum', values: { map: {}, viewport: {} }, default: 'map', requires: ['fill-extrusion-translate'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'fill-extrusion-pattern': { type: 'resolvedImage', transition: !0, expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, 'property-type': 'cross-faded-data-driven', }, 'fill-extrusion-height': { type: 'number', default: 0, minimum: 0, units: 'meters', transition: !0, expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'fill-extrusion-base': { type: 'number', default: 0, minimum: 0, units: 'meters', transition: !0, requires: ['fill-extrusion-height'], expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'fill-extrusion-vertical-gradient': { type: 'boolean', default: !0, transition: !1, expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, }, paint_line: { 'line-opacity': { type: 'number', default: 1, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'line-color': { type: 'color', default: '#000000', transition: !0, requires: [{ '!': 'line-pattern' }], expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'line-translate': { type: 'array', value: 'number', length: 2, default: [0, 0], transition: !0, units: 'pixels', expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'line-translate-anchor': { type: 'enum', values: { map: {}, viewport: {} }, default: 'map', requires: ['line-translate'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'line-width': { type: 'number', default: 1, minimum: 0, transition: !0, units: 'pixels', expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'line-gap-width': { type: 'number', default: 0, minimum: 0, transition: !0, units: 'pixels', expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'line-offset': { type: 'number', default: 0, transition: !0, units: 'pixels', expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'line-blur': { type: 'number', default: 0, minimum: 0, transition: !0, units: 'pixels', expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'line-dasharray': { type: 'array', value: 'number', minimum: 0, transition: !0, units: 'line widths', requires: [{ '!': 'line-pattern' }], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'cross-faded', }, 'line-pattern': { type: 'resolvedImage', transition: !0, expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, 'property-type': 'cross-faded-data-driven', }, 'line-gradient': { type: 'color', transition: !1, requires: [ { '!': 'line-dasharray' }, { '!': 'line-pattern' }, { source: 'geojson', has: { lineMetrics: !0 } }, ], expression: { interpolated: !0, parameters: ['line-progress'] }, 'property-type': 'color-ramp', }, }, paint_circle: { 'circle-radius': { type: 'number', default: 5, minimum: 0, transition: !0, units: 'pixels', expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'circle-color': { type: 'color', default: '#000000', transition: !0, expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'circle-blur': { type: 'number', default: 0, transition: !0, expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'circle-opacity': { type: 'number', default: 1, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'circle-translate': { type: 'array', value: 'number', length: 2, default: [0, 0], transition: !0, units: 'pixels', expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'circle-translate-anchor': { type: 'enum', values: { map: {}, viewport: {} }, default: 'map', requires: ['circle-translate'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'circle-pitch-scale': { type: 'enum', values: { map: {}, viewport: {} }, default: 'map', expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'circle-pitch-alignment': { type: 'enum', values: { map: {}, viewport: {} }, default: 'viewport', expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'circle-stroke-width': { type: 'number', default: 0, minimum: 0, transition: !0, units: 'pixels', expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'circle-stroke-color': { type: 'color', default: '#000000', transition: !0, expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'circle-stroke-opacity': { type: 'number', default: 1, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, }, paint_heatmap: { 'heatmap-radius': { type: 'number', default: 30, minimum: 1, transition: !0, units: 'pixels', expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'heatmap-weight': { type: 'number', default: 1, minimum: 0, transition: !1, expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'heatmap-intensity': { type: 'number', default: 1, minimum: 0, transition: !0, expression: { interpolated: !0, 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', ], transition: !1, expression: { interpolated: !0, parameters: ['heatmap-density'] }, 'property-type': 'color-ramp', }, 'heatmap-opacity': { type: 'number', default: 1, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, }, paint_symbol: { 'icon-opacity': { type: 'number', default: 1, minimum: 0, maximum: 1, transition: !0, requires: ['icon-image'], expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'icon-color': { type: 'color', default: '#000000', transition: !0, requires: ['icon-image'], expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'icon-halo-color': { type: 'color', default: 'rgba(0, 0, 0, 0)', transition: !0, requires: ['icon-image'], expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'icon-halo-width': { type: 'number', default: 0, minimum: 0, transition: !0, units: 'pixels', requires: ['icon-image'], expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'icon-halo-blur': { type: 'number', default: 0, minimum: 0, transition: !0, units: 'pixels', requires: ['icon-image'], expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'icon-translate': { type: 'array', value: 'number', length: 2, default: [0, 0], transition: !0, units: 'pixels', requires: ['icon-image'], expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'icon-translate-anchor': { type: 'enum', values: { map: {}, viewport: {} }, default: 'map', requires: ['icon-image', 'icon-translate'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'text-opacity': { type: 'number', default: 1, minimum: 0, maximum: 1, transition: !0, requires: ['text-field'], expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'text-color': { type: 'color', default: '#000000', transition: !0, overridable: !0, requires: ['text-field'], expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'text-halo-color': { type: 'color', default: 'rgba(0, 0, 0, 0)', transition: !0, requires: ['text-field'], expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'text-halo-width': { type: 'number', default: 0, minimum: 0, transition: !0, units: 'pixels', requires: ['text-field'], expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'text-halo-blur': { type: 'number', default: 0, minimum: 0, transition: !0, units: 'pixels', requires: ['text-field'], expression: { interpolated: !0, parameters: ['zoom', 'feature', 'feature-state'], }, 'property-type': 'data-driven', }, 'text-translate': { type: 'array', value: 'number', length: 2, default: [0, 0], transition: !0, units: 'pixels', requires: ['text-field'], expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'text-translate-anchor': { type: 'enum', values: { map: {}, viewport: {} }, default: 'map', requires: ['text-field', 'text-translate'], expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, }, paint_raster: { 'raster-opacity': { type: 'number', default: 1, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'raster-hue-rotate': { type: 'number', default: 0, period: 360, transition: !0, units: 'degrees', expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'raster-brightness-min': { type: 'number', default: 0, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'raster-brightness-max': { type: 'number', default: 1, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'raster-saturation': { type: 'number', default: 0, minimum: -1, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'raster-contrast': { type: 'number', default: 0, minimum: -1, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'raster-resampling': { type: 'enum', values: { linear: {}, nearest: {} }, default: 'linear', expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'raster-fade-duration': { type: 'number', default: 300, minimum: 0, transition: !1, units: 'milliseconds', expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, }, paint_hillshade: { 'hillshade-illumination-direction': { type: 'number', default: 335, minimum: 0, maximum: 359, transition: !1, expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'hillshade-illumination-anchor': { type: 'enum', values: { map: {}, viewport: {} }, default: 'viewport', expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'hillshade-exaggeration': { type: 'number', default: 0.5, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'hillshade-shadow-color': { type: 'color', default: '#000000', transition: !0, expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'hillshade-highlight-color': { type: 'color', default: '#FFFFFF', transition: !0, expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'hillshade-accent-color': { type: 'color', default: '#000000', transition: !0, expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, }, paint_background: { 'background-color': { type: 'color', default: '#000000', transition: !0, requires: [{ '!': 'background-pattern' }], expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, 'background-pattern': { type: 'resolvedImage', transition: !0, expression: { interpolated: !1, parameters: ['zoom'] }, 'property-type': 'cross-faded', }, 'background-opacity': { type: 'number', default: 1, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ['zoom'] }, 'property-type': 'data-constant', }, }, transition: { duration: { type: 'number', default: 300, minimum: 0, units: 'milliseconds', }, delay: { type: 'number', default: 0, minimum: 0, units: 'milliseconds', }, }, 'property-type': { 'data-driven': { type: 'property-type' }, 'cross-faded': { type: 'property-type' }, 'cross-faded-data-driven': { type: 'property-type' }, 'color-ramp': { type: 'property-type' }, 'data-constant': { type: 'property-type' }, constant: { type: 'property-type' }, }, promoteId: { '*': { type: 'string' } }, }, xt = function (t, e, r, n) { (this.message = (t ? t + ': ' : '') + r), n && (this.identifier = n), null != e && e.__line__ && (this.line = e.__line__); }; function bt(t) { var e = t.value; return e ? [new xt(t.key, e, 'constants have been deprecated as of v8')] : []; } function wt(t) { for (var e = [], r = arguments.length - 1; r-- > 0; ) e[r] = arguments[r + 1]; for (var n = 0, i = e; n < i.length; n += 1) { var a = i[n]; for (var o in a) t[o] = a[o]; } return t; } function _t(t) { return t instanceof Number || t instanceof String || t instanceof Boolean ? t.valueOf() : t; } function At(t) { if (Array.isArray(t)) return t.map(At); if ( t instanceof Object && !(t instanceof Number || t instanceof String || t instanceof Boolean) ) { var e = {}; for (var r in t) e[r] = At(t[r]); return e; } return _t(t); } var kt = (function (t) { function e(e, r) { t.call(this, r), (this.message = r), (this.key = e); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Error), St = function (t, e) { void 0 === e && (e = []), (this.parent = t), (this.bindings = {}); for (var r = 0, n = e; r < n.length; r += 1) { var i = n[r]; this.bindings[i[0]] = i[1]; } }; (St.prototype.concat = function (t) { return new St(this, t); }), (St.prototype.get = function (t) { if (this.bindings[t]) return this.bindings[t]; if (this.parent) return this.parent.get(t); throw new Error(t + ' not found in scope.'); }), (St.prototype.has = function (t) { return !!this.bindings[t] || (!!this.parent && this.parent.has(t)); }); var It = { kind: 'null' }, Mt = { kind: 'number' }, zt = { kind: 'string' }, Pt = { kind: 'boolean' }, Bt = { kind: 'color' }, Ct = { kind: 'object' }, Et = { kind: 'value' }, Vt = { kind: 'collator' }, Tt = { kind: 'formatted' }, Ft = { kind: 'padding' }, Ot = { kind: 'resolvedImage' }; function Lt(t, e) { return { kind: 'array', itemType: t, N: e }; } function Dt(t) { if ('array' === t.kind) { var e = Dt(t.itemType); return 'number' == typeof t.N ? 'array<' + e + ', ' + t.N + '>' : 'value' === t.itemType.kind ? 'array' : 'array<' + e + '>'; } return t.kind; } var jt = [It, Mt, zt, Pt, Bt, Tt, Ct, Lt(Et), Ft, Ot]; function Rt(t, e) { if ('error' === e.kind) return null; if ('array' === t.kind) { if ( 'array' === e.kind && ((0 === e.N && 'value' === e.itemType.kind) || !Rt(t.itemType, e.itemType)) && ('number' != typeof t.N || t.N === e.N) ) return null; } else { if (t.kind === e.kind) return null; if ('value' === t.kind) for (var r = 0, n = jt; r < n.length; r += 1) if (!Rt(n[r], e)) return null; } return 'Expected ' + Dt(t) + ' but found ' + Dt(e) + ' instead.'; } function Ut(t, e) { return e.some(function (e) { return e.kind === t.kind; }); } function qt(t, e) { return e.some(function (e) { return 'null' === e ? null === t : 'array' === e ? Array.isArray(t) : 'object' === e ? t && !Array.isArray(t) && 'object' == typeof t : e === typeof t; }); } var Nt, Zt = { 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 Kt(t) { return (t = Math.round(t)) < 0 ? 0 : t > 255 ? 255 : t; } function Gt(t) { return Kt( '%' === t[t.length - 1] ? (parseFloat(t) / 100) * 255 : parseInt(t), ); } function Jt(t) { return (e = '%' === t[t.length - 1] ? parseFloat(t) / 100 : parseFloat(t)) < 0 ? 0 : e > 1 ? 1 : e; var e; } function Xt(t, e, r) { return ( r < 0 ? (r += 1) : r > 1 && (r -= 1), 6 * r < 1 ? t + (e - t) * r * 6 : 2 * r < 1 ? e : 3 * r < 2 ? t + (e - t) * (2 / 3 - r) * 6 : t ); } try { Nt = {}.parseCSSColor = function (t) { var e, r = t.replace(/ /g, '').toLowerCase(); if (r in Zt) return Zt[r].slice(); if ('#' === r[0]) return 4 === r.length ? (e = parseInt(r.substr(1), 16)) >= 0 && e <= 4095 ? [ ((3840 & e) >> 4) | ((3840 & e) >> 8), (240 & e) | ((240 & e) >> 4), (15 & e) | ((15 & e) << 4), 1, ] : null : 7 === r.length && (e = parseInt(r.substr(1), 16)) >= 0 && e <= 16777215 ? [(16711680 & e) >> 16, (65280 & e) >> 8, 255 & e, 1] : null; var n = r.indexOf('('), i = r.indexOf(')'); if (-1 !== n && i + 1 === r.length) { var a = r.substr(0, n), o = r.substr(n + 1, i - (n + 1)).split(','), s = 1; switch (a) { case 'rgba': if (4 !== o.length) return null; s = Jt(o.pop()); case 'rgb': return 3 !== o.length ? null : [Gt(o[0]), Gt(o[1]), Gt(o[2]), s]; case 'hsla': if (4 !== o.length) return null; s = Jt(o.pop()); case 'hsl': if (3 !== o.length) return null; var u = (((parseFloat(o[0]) % 360) + 360) % 360) / 360, l = Jt(o[1]), p = Jt(o[2]), c = p <= 0.5 ? p * (l + 1) : p + l - p * l, h = 2 * p - c; return [ Kt(255 * Xt(h, c, u + 1 / 3)), Kt(255 * Xt(h, c, u)), Kt(255 * Xt(h, c, u - 1 / 3)), s, ]; default: return null; } } return null; }; } catch (t) {} var Yt = function (t, e, r, n) { void 0 === n && (n = 1), (this.r = t), (this.g = e), (this.b = r), (this.a = n); }; (Yt.parse = function (t) { if (t) { if (t instanceof Yt) return t; if ('string' == typeof t) { var e = Nt(t); if (e) return new Yt( (e[0] / 255) * e[3], (e[1] / 255) * e[3], (e[2] / 255) * e[3], e[3], ); } } }), (Yt.prototype.toString = function () { var t = this.toArray(), e = t[1], r = t[2], n = t[3]; return ( 'rgba(' + Math.round(t[0]) + ',' + Math.round(e) + ',' + Math.round(r) + ',' + n + ')' ); }), (Yt.prototype.toArray = function () { var t = this, e = t.a; return 0 === e ? [0, 0, 0, 0] : [(255 * t.r) / e, (255 * t.g) / e, (255 * t.b) / e, e]; }), (Yt.black = new Yt(0, 0, 0, 1)), (Yt.white = new Yt(1, 1, 1, 1)), (Yt.transparent = new Yt(0, 0, 0, 0)), (Yt.red = new Yt(1, 0, 0, 1)); var Ht = function (t, e, r) { (this.sensitivity = t ? (e ? 'variant' : 'case') : e ? 'accent' : 'base'), (this.locale = r), (this.collator = new Intl.Collator(this.locale ? this.locale : [], { sensitivity: this.sensitivity, usage: 'search', })); }; (Ht.prototype.compare = function (t, e) { return this.collator.compare(t, e); }), (Ht.prototype.resolvedLocale = function () { return new Intl.Collator( this.locale ? this.locale : [], ).resolvedOptions().locale; }); var Wt = function (t, e, r, n, i) { (this.text = t), (this.image = e), (this.scale = r), (this.fontStack = n), (this.textColor = i); }, $t = function (t) { this.sections = t; }; ($t.fromString = function (t) { return new $t([new Wt(t, null, null, null, null)]); }), ($t.prototype.isEmpty = function () { return ( 0 === this.sections.length || !this.sections.some(function (t) { return ( 0 !== t.text.length || (t.image && 0 !== t.image.name.length) ); }) ); }), ($t.factory = function (t) { return t instanceof $t ? t : $t.fromString(t); }), ($t.prototype.toString = function () { return 0 === this.sections.length ? '' : this.sections .map(function (t) { return t.text; }) .join(''); }); var Qt = function (t) { this.values = t.slice(); }; (Qt.parse = function (t) { if (t instanceof Qt) return t; if ('number' == typeof t) return new Qt([t, t, t, t]); if (Array.isArray(t) && !(t.length < 1 || t.length > 4)) { for (var e = 0, r = t; e < r.length; e += 1) if ('number' != typeof r[e]) return; switch (t.length) { case 1: t = [t[0], t[0], t[0], t[0]]; break; case 2: t = [t[0], t[1], t[0], t[1]]; break; case 3: t = [t[0], t[1], t[2], t[1]]; } return new Qt(t); } }), (Qt.prototype.toString = function () { return JSON.stringify(this.values); }); var te = function (t) { (this.name = t.name), (this.available = t.available); }; function ee(t, e, r, n) { return 'number' == typeof t && t >= 0 && t <= 255 && 'number' == typeof e && e >= 0 && e <= 255 && 'number' == typeof r && r >= 0 && r <= 255 ? void 0 === n || ('number' == typeof n && n >= 0 && n <= 1) ? null : 'Invalid rgba value [' + [t, e, r, n].join(', ') + "]: 'a' must be between 0 and 1." : 'Invalid rgba value [' + ('number' == typeof n ? [t, e, r, n] : [t, e, r]).join(', ') + "]: 'r', 'g', and 'b' must be between 0 and 255."; } function re(t) { if (null === t) return !0; if ('string' == typeof t) return !0; if ('boolean' == typeof t) return !0; if ('number' == typeof t) return !0; if (t instanceof Yt) return !0; if (t instanceof Ht) return !0; if (t instanceof $t) return !0; if (t instanceof Qt) return !0; if (t instanceof te) return !0; if (Array.isArray(t)) { for (var e = 0, r = t; e < r.length; e += 1) if (!re(r[e])) return !1; return !0; } if ('object' == typeof t) { for (var n in t) if (!re(t[n])) return !1; return !0; } return !1; } function ne(t) { if (null === t) return It; if ('string' == typeof t) return zt; if ('boolean' == typeof t) return Pt; if ('number' == typeof t) return Mt; if (t instanceof Yt) return Bt; if (t instanceof Ht) return Vt; if (t instanceof $t) return Tt; if (t instanceof Qt) return Ft; if (t instanceof te) return Ot; if (Array.isArray(t)) { for (var e, r = t.length, n = 0, i = t; n < i.length; n += 1) { var a = ne(i[n]); if (e) { if (e === a) continue; e = Et; break; } e = a; } return Lt(e || Et, r); } return Ct; } function ie(t) { var e = typeof t; return null === t ? '' : 'string' === e || 'number' === e || 'boolean' === e ? String(t) : t instanceof Yt || t instanceof $t || t instanceof Qt || t instanceof te ? t.toString() : JSON.stringify(t); } (te.prototype.toString = function () { return this.name; }), (te.fromString = function (t) { return t ? new te({ name: t, available: !1 }) : null; }); var ae = function (t, e) { (this.type = t), (this.value = e); }; (ae.parse = function (t, e) { if (2 !== t.length) return e.error( "'literal' expression requires exactly one argument, but found " + (t.length - 1) + ' instead.', ); if (!re(t[1])) return e.error('invalid value'); var r = t[1], n = ne(r), i = e.expectedType; return ( 'array' !== n.kind || 0 !== n.N || !i || 'array' !== i.kind || ('number' == typeof i.N && 0 !== i.N) || (n = i), new ae(n, r) ); }), (ae.prototype.evaluate = function () { return this.value; }), (ae.prototype.eachChild = function () {}), (ae.prototype.outputDefined = function () { return !0; }); var oe = function (t) { (this.name = 'ExpressionEvaluationError'), (this.message = t); }; oe.prototype.toJSON = function () { return this.message; }; var se = { string: zt, number: Mt, boolean: Pt, object: Ct }, ue = function (t, e) { (this.type = t), (this.args = e); }; (ue.parse = function (t, e) { if (t.length < 2) return e.error('Expected at least one argument.'); var r, n = 1, i = t[0]; if ('array' === i) { var a, o; if (t.length > 2) { var s = t[1]; if ('string' != typeof s || !(s in se) || 'object' === s) return e.error( 'The item type argument of "array" must be one of string, number, boolean', 1, ); (a = se[s]), n++; } else a = Et; if (t.length > 3) { if ( null !== t[2] && ('number' != typeof t[2] || t[2] < 0 || t[2] !== Math.floor(t[2])) ) return e.error( 'The length argument to "array" must be a positive integer literal', 2, ); (o = t[2]), n++; } r = Lt(a, o); } else { if (!se[i]) throw new Error("Types doesn't contain name = " + i); r = se[i]; } for (var u = []; n < t.length; n++) { var l = e.parse(t[n], n, Et); if (!l) return null; u.push(l); } return new ue(r, u); }), (ue.prototype.evaluate = function (t) { for (var e = 0; e < this.args.length; e++) { var r = this.args[e].evaluate(t); if (!Rt(this.type, ne(r))) return r; if (e === this.args.length - 1) throw new oe( 'Expected value to be of type ' + Dt(this.type) + ', but found ' + Dt(ne(r)) + ' instead.', ); } throw new Error(); }), (ue.prototype.eachChild = function (t) { this.args.forEach(t); }), (ue.prototype.outputDefined = function () { return this.args.every(function (t) { return t.outputDefined(); }); }); var le = { 'to-boolean': Pt, 'to-color': Bt, 'to-number': Mt, 'to-string': zt, }, pe = function (t, e) { (this.type = t), (this.args = e); }; (pe.parse = function (t, e) { if (t.length < 2) return e.error('Expected at least one argument.'); var r = t[0]; if (!le[r]) throw new Error( "Can't parse " + r + ' as it is not part of the known types', ); if (('to-boolean' === r || 'to-string' === r) && 2 !== t.length) return e.error('Expected one argument.'); for (var n = le[r], i = [], a = 1; a < t.length; a++) { var o = e.parse(t[a], a, Et); if (!o) return null; i.push(o); } return new pe(n, i); }), (pe.prototype.evaluate = function (t) { if ('boolean' === this.type.kind) return Boolean(this.args[0].evaluate(t)); if ('color' === this.type.kind) { for (var e, r, n = 0, i = this.args; n < i.length; n += 1) { if (((r = null), (e = i[n].evaluate(t)) instanceof Yt)) return e; if ('string' == typeof e) { var a = t.parseColor(e); if (a) return a; } else if ( Array.isArray(e) && !(r = e.length < 3 || e.length > 4 ? 'Invalid rbga value ' + JSON.stringify(e) + ': expected an array containing either three or four numeric values.' : ee(e[0], e[1], e[2], e[3])) ) return new Yt(e[0] / 255, e[1] / 255, e[2] / 255, e[3]); } throw new oe( r || "Could not parse color from value '" + ('string' == typeof e ? e : JSON.stringify(e)) + "'", ); } if ('padding' === this.type.kind) { for (var o, s = 0, u = this.args; s < u.length; s += 1) { o = u[s].evaluate(t); var l = Qt.parse(o); if (l) return l; } throw new oe( "Could not parse padding from value '" + ('string' == typeof o ? o : JSON.stringify(o)) + "'", ); } if ('number' === this.type.kind) { for (var p = null, c = 0, h = this.args; c < h.length; c += 1) { if (null === (p = h[c].evaluate(t))) return 0; var f = Number(p); if (!isNaN(f)) return f; } throw new oe( 'Could not convert ' + JSON.stringify(p) + ' to number.', ); } return 'formatted' === this.type.kind ? $t.fromString(ie(this.args[0].evaluate(t))) : 'resolvedImage' === this.type.kind ? te.fromString(ie(this.args[0].evaluate(t))) : ie(this.args[0].evaluate(t)); }), (pe.prototype.eachChild = function (t) { this.args.forEach(t); }), (pe.prototype.outputDefined = function () { return this.args.every(function (t) { return t.outputDefined(); }); }); var ce = ['Unknown', 'Point', 'LineString', 'Polygon'], he = function () { (this.globals = null), (this.feature = null), (this.featureState = null), (this.formattedSection = null), (this._parseColorCache = {}), (this.availableImages = null), (this.canonical = null); }; (he.prototype.id = function () { return this.feature && 'id' in this.feature ? this.feature.id : null; }), (he.prototype.geometryType = function () { return this.feature ? 'number' == typeof this.feature.type ? ce[this.feature.type] : this.feature.type : null; }), (he.prototype.geometry = function () { return this.feature && 'geometry' in this.feature ? this.feature.geometry : null; }), (he.prototype.canonicalID = function () { return this.canonical; }), (he.prototype.properties = function () { return (this.feature && this.feature.properties) || {}; }), (he.prototype.parseColor = function (t) { var e = this._parseColorCache[t]; return e || (e = this._parseColorCache[t] = Yt.parse(t)), e; }); var fe = function (t, e, r, n) { (this.name = t), (this.type = e), (this._evaluate = r), (this.args = n); }; (fe.prototype.evaluate = function (t) { return this._evaluate(t, this.args); }), (fe.prototype.eachChild = function (t) { this.args.forEach(t); }), (fe.prototype.outputDefined = function () { return !1; }), (fe.parse = function (t, e) { var r, n = t[0], i = fe.definitions[n]; if (!i) return e.error( 'Unknown expression "' + n + '". If you wanted a literal array, use ["literal", [...]].', 0, ); for ( var a = Array.isArray(i) ? i[0] : i.type, o = Array.isArray(i) ? [[i[1], i[2]]] : i.overloads, s = o.filter(function (e) { var r = e[0]; return !Array.isArray(r) || r.length === t.length - 1; }), u = null, l = 0, p = s; l < p.length; l += 1 ) { var c = p[l], h = c[0], f = c[1]; u = new Oe(e.registry, e.path, null, e.scope); for (var y = [], d = !1, m = 1; m < t.length; m++) { var v = t[m], g = Array.isArray(h) ? h[m - 1] : h.type, x = u.parse(v, 1 + y.length, g); if (!x) { d = !0; break; } y.push(x); } if (!d) if (Array.isArray(h) && h.length !== y.length) u.error( 'Expected ' + h.length + ' arguments, but found ' + y.length + ' instead.', ); else { for (var b = 0; b < y.length; b++) { var w = Array.isArray(h) ? h[b] : h.type, _ = y[b]; u.concat(b + 1).checkSubtype(w, _.type); } if (0 === u.errors.length) return new fe(n, a, f, y); } } if (1 === s.length) (r = e.errors).push.apply(r, u.errors); else { for ( var A = (s.length ? s : o) .map(function (t) { var e; return ( (e = t[0]), Array.isArray(e) ? '(' + e.map(Dt).join(', ') + ')' : '(' + Dt(e.type) + '...)' ); }) .join(' | '), k = [], S = 1; S < t.length; S++ ) { var I = e.parse(t[S], 1 + k.length); if (!I) return null; k.push(Dt(I.type)); } e.error( 'Expected arguments of type ' + A + ', but found (' + k.join(', ') + ') instead.', ); } return null; }), (fe.register = function (t, e) { for (var r in ((fe.definitions = e), e)) t[r] = fe; }); var ye = function (t, e, r) { (this.type = Vt), (this.locale = r), (this.caseSensitive = t), (this.diacriticSensitive = e); }; (ye.parse = function (t, e) { if (2 !== t.length) return e.error('Expected one argument.'); var r = t[1]; if ('object' != typeof r || Array.isArray(r)) return e.error('Collator options argument must be an object.'); var n = e.parse( void 0 !== r['case-sensitive'] && r['case-sensitive'], 1, Pt, ); if (!n) return null; var i = e.parse( void 0 !== r['diacritic-sensitive'] && r['diacritic-sensitive'], 1, Pt, ); if (!i) return null; var a = null; return r.locale && !(a = e.parse(r.locale, 1, zt)) ? null : new ye(n, i, a); }), (ye.prototype.evaluate = function (t) { return new Ht( this.caseSensitive.evaluate(t), this.diacriticSensitive.evaluate(t), this.locale ? this.locale.evaluate(t) : null, ); }), (ye.prototype.eachChild = function (t) { t(this.caseSensitive), t(this.diacriticSensitive), this.locale && t(this.locale); }), (ye.prototype.outputDefined = function () { return !1; }); var de = 8192; function me(t, e) { (t[0] = Math.min(t[0], e[0])), (t[1] = Math.min(t[1], e[1])), (t[2] = Math.max(t[2], e[0])), (t[3] = Math.max(t[3], e[1])); } function ve(t, e) { return !(t[0] <= e[0] || t[2] >= e[2] || t[1] <= e[1] || t[3] >= e[3]); } function ge(t, e) { var r = (180 + t[0]) / 360, n = (180 - (180 / Math.PI) * Math.log(Math.tan(Math.PI / 4 + (t[1] * Math.PI) / 360))) / 360, i = Math.pow(2, e.z); return [Math.round(r * i * de), Math.round(n * i * de)]; } function xe(t, e, r) { return ( e[1] > t[1] != r[1] > t[1] && t[0] < ((r[0] - e[0]) * (t[1] - e[1])) / (r[1] - e[1]) + e[0] ); } function be(t, e) { for (var r, n, i, a, o, s, u, l = !1, p = 0, c = e.length; p < c; p++) for (var h = e[p], f = 0, y = h.length; f < y - 1; f++) { if ( (a = (r = t)[0] - (n = h[f])[0]) * (u = r[1] - (i = h[f + 1])[1]) - (s = r[0] - i[0]) * (o = r[1] - n[1]) == 0 && a * s <= 0 && o * u <= 0 ) return !1; xe(t, h[f], h[f + 1]) && (l = !l); } return l; } function we(t, e) { for (var r = 0; r < e.length; r++) if (be(t, e[r])) return !0; return !1; } function _e(t, e, r, n) { var i = n[0] - r[0], a = n[1] - r[1], o = (t[0] - r[0]) * a - i * (t[1] - r[1]), s = (e[0] - r[0]) * a - i * (e[1] - r[1]); return (o > 0 && s < 0) || (o < 0 && s > 0); } function Ae(t, e, r) { for (var n = 0, i = r; n < i.length; n += 1) for (var a = i[n], o = 0; o < a.length - 1; ++o) if ( 0 != (c = [(p = a[o + 1])[0] - (l = a[o])[0], p[1] - l[1]])[0] * (h = [(u = e)[0] - (s = t)[0], u[1] - s[1]])[1] - c[1] * h[0] && _e(s, u, l, p) && _e(l, p, s, u) ) return !0; var s, u, l, p, c, h; return !1; } function ke(t, e) { for (var r = 0; r < t.length; ++r) if (!be(t[r], e)) return !1; for (var n = 0; n < t.length - 1; ++n) if (Ae(t[n], t[n + 1], e)) return !1; return !0; } function Se(t, e) { for (var r = 0; r < e.length; r++) if (ke(t, e[r])) return !0; return !1; } function Ie(t, e, r) { for (var n = [], i = 0; i < t.length; i++) { for (var a = [], o = 0; o < t[i].length; o++) { var s = ge(t[i][o], r); me(e, s), a.push(s); } n.push(a); } return n; } function Me(t, e, r) { for (var n = [], i = 0; i < t.length; i++) { var a = Ie(t[i], e, r); n.push(a); } return n; } function ze(t, e, r, n) { if (t[0] < r[0] || t[0] > r[2]) { var i = 0.5 * n, a = t[0] - r[0] > i ? -n : r[0] - t[0] > i ? n : 0; 0 === a && (a = t[0] - r[2] > i ? -n : r[2] - t[0] > i ? n : 0), (t[0] += a); } me(e, t); } function Pe(t, e, r, n) { for ( var i = Math.pow(2, n.z) * de, a = [n.x * de, n.y * de], o = [], s = 0, u = t; s < u.length; s += 1 ) for (var l = 0, p = u[s]; l < p.length; l += 1) { var c = p[l], h = [c.x + a[0], c.y + a[1]]; ze(h, e, r, i), o.push(h); } return o; } function Be(t, e, r, n) { for ( var i, a = Math.pow(2, n.z) * de, o = [n.x * de, n.y * de], s = [], u = 0, l = t; u < l.length; u += 1 ) { for (var p = [], c = 0, h = l[u]; c < h.length; c += 1) { var f = h[c], y = [f.x + o[0], f.y + o[1]]; me(e, y), p.push(y); } s.push(p); } if (e[2] - e[0] <= a / 2) { ((i = e)[0] = i[1] = 1 / 0), (i[2] = i[3] = -1 / 0); for (var d = 0, m = s; d < m.length; d += 1) for (var v = 0, g = m[d]; v < g.length; v += 1) ze(g[v], e, r, a); } return s; } var Ce = function (t, e) { (this.type = Pt), (this.geojson = t), (this.geometries = e); }; function Ee(t) { if (t instanceof fe) { if ('get' === t.name && 1 === t.args.length) return !1; if ('feature-state' === t.name) return !1; if ('has' === t.name && 1 === t.args.length) return !1; if ( 'properties' === t.name || 'geometry-type' === t.name || 'id' === t.name ) return !1; if (/^filter-/.test(t.name)) return !1; } if (t instanceof Ce) return !1; var e = !0; return ( t.eachChild(function (t) { e && !Ee(t) && (e = !1); }), e ); } function Ve(t) { if (t instanceof fe && 'feature-state' === t.name) return !1; var e = !0; return ( t.eachChild(function (t) { e && !Ve(t) && (e = !1); }), e ); } function Te(t, e) { if (t instanceof fe && e.indexOf(t.name) >= 0) return !1; var r = !0; return ( t.eachChild(function (t) { r && !Te(t, e) && (r = !1); }), r ); } (Ce.parse = function (t, e) { if (2 !== t.length) return e.error( "'within' expression requires exactly one argument, but found " + (t.length - 1) + ' instead.', ); if (re(t[1])) { var r = t[1]; if ('FeatureCollection' === r.type) for (var n = 0; n < r.features.length; ++n) { var i = r.features[n].geometry.type; if ('Polygon' === i || 'MultiPolygon' === i) return new Ce(r, r.features[n].geometry); } else if ('Feature' === r.type) { var a = r.geometry.type; if ('Polygon' === a || 'MultiPolygon' === a) return new Ce(r, r.geometry); } else if ('Polygon' === r.type || 'MultiPolygon' === r.type) return new Ce(r, r); } return e.error( "'within' expression requires valid geojson object that contains polygon geometry type.", ); }), (Ce.prototype.evaluate = function (t) { if (null != t.geometry() && null != t.canonicalID()) { if ('Point' === t.geometryType()) return (function (t, e) { var r = [1 / 0, 1 / 0, -1 / 0, -1 / 0], n = [1 / 0, 1 / 0, -1 / 0, -1 / 0], i = t.canonicalID(); if ('Polygon' === e.type) { var a = Ie(e.coordinates, n, i), o = Pe(t.geometry(), r, n, i); if (!ve(r, n)) return !1; for (var s = 0, u = o; s < u.length; s += 1) if (!be(u[s], a)) return !1; } if ('MultiPolygon' === e.type) { var l = Me(e.coordinates, n, i), p = Pe(t.geometry(), r, n, i); if (!ve(r, n)) return !1; for (var c = 0, h = p; c < h.length; c += 1) if (!we(h[c], l)) return !1; } return !0; })(t, this.geometries); if ('LineString' === t.geometryType()) return (function (t, e) { var r = [1 / 0, 1 / 0, -1 / 0, -1 / 0], n = [1 / 0, 1 / 0, -1 / 0, -1 / 0], i = t.canonicalID(); if ('Polygon' === e.type) { var a = Ie(e.coordinates, n, i), o = Be(t.geometry(), r, n, i); if (!ve(r, n)) return !1; for (var s = 0, u = o; s < u.length; s += 1) if (!ke(u[s], a)) return !1; } if ('MultiPolygon' === e.type) { var l = Me(e.coordinates, n, i), p = Be(t.geometry(), r, n, i); if (!ve(r, n)) return !1; for (var c = 0, h = p; c < h.length; c += 1) if (!Se(h[c], l)) return !1; } return !0; })(t, this.geometries); } return !1; }), (Ce.prototype.eachChild = function () {}), (Ce.prototype.outputDefined = function () { return !0; }); var Fe = function (t, e) { (this.type = e.type), (this.name = t), (this.boundExpression = e); }; (Fe.parse = function (t, e) { if (2 !== t.length || 'string' != typeof t[1]) return e.error( "'var' expression requires exactly one string literal argument.", ); var r = t[1]; return e.scope.has(r) ? new Fe(r, e.scope.get(r)) : e.error( 'Unknown variable "' + r + '". Make sure "' + r + '" has been bound in an enclosing "let" expression before using it.', 1, ); }), (Fe.prototype.evaluate = function (t) { return this.boundExpression.evaluate(t); }), (Fe.prototype.eachChild = function () {}), (Fe.prototype.outputDefined = function () { return !1; }); var Oe = function (t, e, r, n, i) { void 0 === e && (e = []), void 0 === n && (n = new St()), void 0 === i && (i = []), (this.registry = t), (this.path = e), (this.key = e .map(function (t) { return '[' + t + ']'; }) .join('')), (this.scope = n), (this.errors = i), (this.expectedType = r); }; function Le(t) { if (t instanceof Fe) return Le(t.boundExpression); if (t instanceof fe && 'error' === t.name) return !1; if (t instanceof ye) return !1; if (t instanceof Ce) return !1; var e = t instanceof pe || t instanceof ue, r = !0; return ( t.eachChild(function (t) { r = e ? r && Le(t) : r && t instanceof ae; }), !!r && Ee(t) && Te(t, [ 'zoom', 'heatmap-density', 'line-progress', 'accumulated', 'is-supported-script', ]) ); } function De(t, e) { for (var r, n = t.length - 1, i = 0, a = n, o = 0; i <= a; ) if ((r = t[(o = Math.floor((i + a) / 2))]) <= e) { if (o === n || e < t[o + 1]) return o; i = o + 1; } else { if (!(r > e)) throw new oe('Input is not a number.'); a = o - 1; } return 0; } (Oe.prototype.parse = function (t, e, r, n, i) { return ( void 0 === i && (i = {}), e ? this.concat(e, r, n)._parse(t, i) : this._parse(t, i) ); }), (Oe.prototype._parse = function (t, e) { function r(t, e, r) { return 'assert' === r ? new ue(e, [t]) : 'coerce' === r ? new pe(e, [t]) : t; } if ( ((null !== t && 'string' != typeof t && 'boolean' != typeof t && 'number' != typeof t) || (t = ['literal', t]), Array.isArray(t)) ) { if (0 === t.length) return this.error( 'Expected an array with at least one element. If you wanted a literal array, use ["literal", []].', ); var n = t[0]; if ('string' != typeof n) return ( this.error( 'Expression name must be a string, but found ' + typeof n + ' instead. If you wanted a literal array, use ["literal", [...]].', 0, ), null ); var i = this.registry[n]; if (i) { var a = i.parse(t, this); if (!a) return null; if (this.expectedType) { var o = this.expectedType, s = a.type; if ( ('string' !== o.kind && 'number' !== o.kind && 'boolean' !== o.kind && 'object' !== o.kind && 'array' !== o.kind) || 'value' !== s.kind ) if ( ('color' !== o.kind && 'formatted' !== o.kind && 'resolvedImage' !== o.kind) || ('value' !== s.kind && 'string' !== s.kind) ) if ( 'padding' !== o.kind || ('value' !== s.kind && 'number' !== s.kind && 'array' !== s.kind) ) { if (this.checkSubtype(o, s)) return null; } else a = r(a, o, e.typeAnnotation || 'coerce'); else a = r(a, o, e.typeAnnotation || 'coerce'); else a = r(a, o, e.typeAnnotation || 'assert'); } if ( !(a instanceof ae) && 'resolvedImage' !== a.type.kind && Le(a) ) { var u = new he(); try { a = new ae(a.type, a.evaluate(u)); } catch (t) { return this.error(t.message), null; } } return a; } return this.error( 'Unknown expression "' + n + '". If you wanted a literal array, use ["literal", [...]].', 0, ); } return this.error( void 0 === t ? "'undefined' value invalid. Use null instead." : 'object' == typeof t ? 'Bare objects invalid. Use ["literal", {...}] instead.' : 'Expected an array, but found ' + typeof t + ' instead.', ); }), (Oe.prototype.concat = function (t, e, r) { var n = 'number' == typeof t ? this.path.concat(t) : this.path, i = r ? this.scope.concat(r) : this.scope; return new Oe(this.registry, n, e || null, i, this.errors); }), (Oe.prototype.error = function (t) { for (var e = [], r = arguments.length - 1; r-- > 0; ) e[r] = arguments[r + 1]; var n = '' + this.key + e .map(function (t) { return '[' + t + ']'; }) .join(''); this.errors.push(new kt(n, t)); }), (Oe.prototype.checkSubtype = function (t, e) { var r = Rt(t, e); return r && this.error(r), r; }); var je = function (t, e, r) { (this.type = t), (this.input = e), (this.labels = []), (this.outputs = []); for (var n = 0, i = r; n < i.length; n += 1) { var a = i[n], o = a[1]; this.labels.push(a[0]), this.outputs.push(o); } }; function Re(t, e, r) { return t * (1 - r) + e * r; } (je.parse = function (t, e) { if (t.length - 1 < 4) return e.error( 'Expected at least 4 arguments, but found only ' + (t.length - 1) + '.', ); if ((t.length - 1) % 2 != 0) return e.error('Expected an even number of arguments.'); var r = e.parse(t[1], 1, Mt); if (!r) return null; var n = [], i = null; e.expectedType && 'value' !== e.expectedType.kind && (i = e.expectedType); for (var a = 1; a < t.length; a += 2) { var o = 1 === a ? -1 / 0 : t[a], s = t[a + 1], u = a, l = a + 1; if ('number' != typeof o) return e.error( 'Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.', u, ); if (n.length && n[n.length - 1][0] >= o) return e.error( 'Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.', u, ); var p = e.parse(s, l, i); if (!p) return null; (i = i || p.type), n.push([o, p]); } return new je(i, r, n); }), (je.prototype.evaluate = function (t) { var e = this.labels, r = this.outputs; if (1 === e.length) return r[0].evaluate(t); var n = this.input.evaluate(t); if (n <= e[0]) return r[0].evaluate(t); var i = e.length; return n >= e[i - 1] ? r[i - 1].evaluate(t) : r[De(e, n)].evaluate(t); }), (je.prototype.eachChild = function (t) { t(this.input); for (var e = 0, r = this.outputs; e < r.length; e += 1) t(r[e]); }), (je.prototype.outputDefined = function () { return this.outputs.every(function (t) { return t.outputDefined(); }); }); var Ue = Object.freeze({ __proto__: null, number: Re, color: function (t, e, r) { return new Yt( Re(t.r, e.r, r), Re(t.g, e.g, r), Re(t.b, e.b, r), Re(t.a, e.a, r), ); }, array: function (t, e, r) { return t.map(function (t, n) { return Re(t, e[n], r); }); }, padding: function (t, e, r) { var n = t.values, i = e.values; return new Qt([ Re(n[0], i[0], r), Re(n[1], i[1], r), Re(n[2], i[2], r), Re(n[3], i[3], r), ]); }, }), qe = 0.95047, Ne = 1.08883, Ze = 4 / 29, Ke = 6 / 29, Ge = 3 * Ke * Ke, Je = Math.PI / 180, Xe = 180 / Math.PI; function Ye(t) { return t > 0.008856451679035631 ? Math.pow(t, 1 / 3) : t / Ge + Ze; } function He(t) { return t > Ke ? t * t * t : Ge * (t - Ze); } function We(t) { return ( 255 * (t <= 0.0031308 ? 12.92 * t : 1.055 * Math.pow(t, 1 / 2.4) - 0.055) ); } function $e(t) { return (t /= 255) <= 0.04045 ? t / 12.92 : Math.pow((t + 0.055) / 1.055, 2.4); } function Qe(t) { var e = $e(t.r), r = $e(t.g), n = $e(t.b), i = Ye((0.4124564 * e + 0.3575761 * r + 0.1804375 * n) / qe), a = Ye((0.2126729 * e + 0.7151522 * r + 0.072175 * n) / 1); return { l: 116 * a - 16, a: 500 * (i - a), b: 200 * (a - Ye((0.0193339 * e + 0.119192 * r + 0.9503041 * n) / Ne)), alpha: t.a, }; } function tr(t) { var e = (t.l + 16) / 116, r = isNaN(t.a) ? e : e + t.a / 500, n = isNaN(t.b) ? e : e - t.b / 200; return ( (e = 1 * He(e)), (r = qe * He(r)), (n = Ne * He(n)), new Yt( We(3.2404542 * r - 1.5371385 * e - 0.4985314 * n), We(-0.969266 * r + 1.8760108 * e + 0.041556 * n), We(0.0556434 * r - 0.2040259 * e + 1.0572252 * n), t.alpha, ) ); } function er(t, e, r) { var n = e - t; return t + r * (n > 180 || n < -180 ? n - 360 * Math.round(n / 360) : n); } var rr = { forward: Qe, reverse: tr, interpolate: function (t, e, r) { return { l: Re(t.l, e.l, r), a: Re(t.a, e.a, r), b: Re(t.b, e.b, r), alpha: Re(t.alpha, e.alpha, r), }; }, }, nr = { forward: function (t) { var e = Qe(t), r = e.l, n = e.a, i = e.b, a = Math.atan2(i, n) * Xe; return { h: a < 0 ? a + 360 : a, c: Math.sqrt(n * n + i * i), l: r, alpha: t.a, }; }, reverse: function (t) { var e = t.h * Je, r = t.c; return tr({ l: t.l, a: Math.cos(e) * r, b: Math.sin(e) * r, alpha: t.alpha, }); }, interpolate: function (t, e, r) { return { h: er(t.h, e.h, r), c: Re(t.c, e.c, r), l: Re(t.l, e.l, r), alpha: Re(t.alpha, e.alpha, r), }; }, }, ir = Object.freeze({ __proto__: null, lab: rr, hcl: nr }), ar = function (t, e, r, n, i) { (this.type = t), (this.operator = e), (this.interpolation = r), (this.input = n), (this.labels = []), (this.outputs = []); for (var a = 0, o = i; a < o.length; a += 1) { var s = o[a], u = s[1]; this.labels.push(s[0]), this.outputs.push(u); } }; function or(t, e, r, n) { var i = n - r, a = t - r; return 0 === i ? 0 : 1 === e ? a / i : (Math.pow(e, a) - 1) / (Math.pow(e, i) - 1); } (ar.interpolationFactor = function (t, r, n, i) { var a = 0; if ('exponential' === t.name) a = or(r, t.base, n, i); else if ('linear' === t.name) a = or(r, 1, n, i); else if ('cubic-bezier' === t.name) { var o = t.controlPoints; a = new e(o[0], o[1], o[2], o[3]).solve(or(r, 1, n, i)); } return a; }), (ar.parse = function (t, e) { var r = t[0], n = t[1], i = t[2], a = t.slice(3); if (!Array.isArray(n) || 0 === n.length) return e.error('Expected an interpolation type expression.', 1); if ('linear' === n[0]) n = { name: 'linear' }; else if ('exponential' === n[0]) { var o = n[1]; if ('number' != typeof o) return e.error( 'Exponential interpolation requires a numeric base.', 1, 1, ); n = { name: 'exponential', base: o }; } else { if ('cubic-bezier' !== n[0]) return e.error('Unknown interpolation type ' + String(n[0]), 1, 0); var s = n.slice(1); if ( 4 !== s.length || s.some(function (t) { return 'number' != typeof t || t < 0 || t > 1; }) ) return e.error( 'Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1, ); n = { name: 'cubic-bezier', controlPoints: s }; } if (t.length - 1 < 4) return e.error( 'Expected at least 4 arguments, but found only ' + (t.length - 1) + '.', ); if ((t.length - 1) % 2 != 0) return e.error('Expected an even number of arguments.'); if (!(i = e.parse(i, 2, Mt))) return null; var u = [], l = null; 'interpolate-hcl' === r || 'interpolate-lab' === r ? (l = Bt) : e.expectedType && 'value' !== e.expectedType.kind && (l = e.expectedType); for (var p = 0; p < a.length; p += 2) { var c = a[p], h = a[p + 1], f = p + 3, y = p + 4; if ('number' != typeof c) return e.error( 'Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.', f, ); if (u.length && u[u.length - 1][0] >= c) return e.error( 'Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.', f, ); var d = e.parse(h, y, l); if (!d) return null; (l = l || d.type), u.push([c, d]); } return 'number' === l.kind || 'color' === l.kind || 'padding' === l.kind || ('array' === l.kind && 'number' === l.itemType.kind && 'number' == typeof l.N) ? new ar(l, r, n, i, u) : e.error('Type ' + Dt(l) + ' is not interpolatable.'); }), (ar.prototype.evaluate = function (t) { var e = this.labels, r = this.outputs; if (1 === e.length) return r[0].evaluate(t); var n = this.input.evaluate(t); if (n <= e[0]) return r[0].evaluate(t); var i = e.length; if (n >= e[i - 1]) return r[i - 1].evaluate(t); var a = De(e, n), o = ar.interpolationFactor(this.interpolation, n, e[a], e[a + 1]), s = r[a].evaluate(t), u = r[a + 1].evaluate(t); return 'interpolate' === this.operator ? Ue[this.type.kind.toLowerCase()](s, u, o) : 'interpolate-hcl' === this.operator ? nr.reverse(nr.interpolate(nr.forward(s), nr.forward(u), o)) : rr.reverse(rr.interpolate(rr.forward(s), rr.forward(u), o)); }), (ar.prototype.eachChild = function (t) { t(this.input); for (var e = 0, r = this.outputs; e < r.length; e += 1) t(r[e]); }), (ar.prototype.outputDefined = function () { return this.outputs.every(function (t) { return t.outputDefined(); }); }); var sr = function (t, e) { (this.type = t), (this.args = e); }; (sr.parse = function (t, e) { if (t.length < 2) return e.error('Expectected at least one argument.'); var r = null, n = e.expectedType; n && 'value' !== n.kind && (r = n); for (var i = [], a = 0, o = t.slice(1); a < o.length; a += 1) { var s = e.parse(o[a], 1 + i.length, r, void 0, { typeAnnotation: 'omit', }); if (!s) return null; (r = r || s.type), i.push(s); } if (!r) throw new Error('No output type'); var u = n && i.some(function (t) { return Rt(n, t.type); }); return new sr(u ? Et : r, i); }), (sr.prototype.evaluate = function (t) { for ( var e, r = null, n = 0, i = 0, a = this.args; i < a.length && (n++, (r = a[i].evaluate(t)) && r instanceof te && !r.available && (e || (e = r.name), (r = null), n === this.args.length && (r = e)), null === r); i += 1 ); return r; }), (sr.prototype.eachChild = function (t) { this.args.forEach(t); }), (sr.prototype.outputDefined = function () { return this.args.every(function (t) { return t.outputDefined(); }); }); var ur = function (t, e) { (this.type = e.type), (this.bindings = [].concat(t)), (this.result = e); }; (ur.prototype.evaluate = function (t) { return this.result.evaluate(t); }), (ur.prototype.eachChild = function (t) { for (var e = 0, r = this.bindings; e < r.length; e += 1) t(r[e][1]); t(this.result); }), (ur.parse = function (t, e) { if (t.length < 4) return e.error( 'Expected at least 3 arguments, but found ' + (t.length - 1) + ' instead.', ); for (var r = [], n = 1; n < t.length - 1; n += 2) { var i = t[n]; if ('string' != typeof i) return e.error( 'Expected string, but found ' + typeof i + ' instead.', n, ); if (/[^a-zA-Z0-9_]/.test(i)) return e.error( "Variable names must contain only alphanumeric characters or '_'.", n, ); var a = e.parse(t[n + 1], n + 1); if (!a) return null; r.push([i, a]); } var o = e.parse(t[t.length - 1], t.length - 1, e.expectedType, r); return o ? new ur(r, o) : null; }), (ur.prototype.outputDefined = function () { return this.result.outputDefined(); }); var lr = function (t, e, r) { (this.type = t), (this.index = e), (this.input = r); }; (lr.parse = function (t, e) { if (3 !== t.length) return e.error( 'Expected 2 arguments, but found ' + (t.length - 1) + ' instead.', ); var r = e.parse(t[1], 1, Mt), n = e.parse(t[2], 2, Lt(e.expectedType || Et)); return r && n ? new lr(n.type.itemType, r, n) : null; }), (lr.prototype.evaluate = function (t) { var e = this.index.evaluate(t), r = this.input.evaluate(t); if (e < 0) throw new oe('Array index out of bounds: ' + e + ' < 0.'); if (e >= r.length) throw new oe( 'Array index out of bounds: ' + e + ' > ' + (r.length - 1) + '.', ); if (e !== Math.floor(e)) throw new oe( 'Array index must be an integer, but found ' + e + ' instead.', ); return r[e]; }), (lr.prototype.eachChild = function (t) { t(this.index), t(this.input); }), (lr.prototype.outputDefined = function () { return !1; }); var pr = function (t, e) { (this.type = Pt), (this.needle = t), (this.haystack = e); }; (pr.parse = function (t, e) { if (3 !== t.length) return e.error( 'Expected 2 arguments, but found ' + (t.length - 1) + ' instead.', ); var r = e.parse(t[1], 1, Et), n = e.parse(t[2], 2, Et); return r && n ? Ut(r.type, [Pt, zt, Mt, It, Et]) ? new pr(r, n) : e.error( 'Expected first argument to be of type boolean, string, number or null, but found ' + Dt(r.type) + ' instead', ) : null; }), (pr.prototype.evaluate = function (t) { var e = this.needle.evaluate(t), r = this.haystack.evaluate(t); if (!r) return !1; if (!qt(e, ['boolean', 'string', 'number', 'null'])) throw new oe( 'Expected first argument to be of type boolean, string, number or null, but found ' + Dt(ne(e)) + ' instead.', ); if (!qt(r, ['string', 'array'])) throw new oe( 'Expected second argument to be of type array or string, but found ' + Dt(ne(r)) + ' instead.', ); return r.indexOf(e) >= 0; }), (pr.prototype.eachChild = function (t) { t(this.needle), t(this.haystack); }), (pr.prototype.outputDefined = function () { return !0; }); var cr = function (t, e, r) { (this.type = Mt), (this.needle = t), (this.haystack = e), (this.fromIndex = r); }; (cr.parse = function (t, e) { if (t.length <= 2 || t.length >= 5) return e.error( 'Expected 3 or 4 arguments, but found ' + (t.length - 1) + ' instead.', ); var r = e.parse(t[1], 1, Et), n = e.parse(t[2], 2, Et); if (!r || !n) return null; if (!Ut(r.type, [Pt, zt, Mt, It, Et])) return e.error( 'Expected first argument to be of type boolean, string, number or null, but found ' + Dt(r.type) + ' instead', ); if (4 === t.length) { var i = e.parse(t[3], 3, Mt); return i ? new cr(r, n, i) : null; } return new cr(r, n); }), (cr.prototype.evaluate = function (t) { var e = this.needle.evaluate(t), r = this.haystack.evaluate(t); if (!qt(e, ['boolean', 'string', 'number', 'null'])) throw new oe( 'Expected first argument to be of type boolean, string, number or null, but found ' + Dt(ne(e)) + ' instead.', ); if (!qt(r, ['string', 'array'])) throw new oe( 'Expected second argument to be of type array or string, but found ' + Dt(ne(r)) + ' instead.', ); if (this.fromIndex) { var n = this.fromIndex.evaluate(t); return r.indexOf(e, n); } return r.indexOf(e); }), (cr.prototype.eachChild = function (t) { t(this.needle), t(this.haystack), this.fromIndex && t(this.fromIndex); }), (cr.prototype.outputDefined = function () { return !1; }); var hr = function (t, e, r, n, i, a) { (this.inputType = t), (this.type = e), (this.input = r), (this.cases = n), (this.outputs = i), (this.otherwise = a); }; (hr.parse = function (t, e) { if (t.length < 5) return e.error( 'Expected at least 4 arguments, but found only ' + (t.length - 1) + '.', ); if (t.length % 2 != 1) return e.error('Expected an even number of arguments.'); var r, n; e.expectedType && 'value' !== e.expectedType.kind && (n = e.expectedType); for (var i = {}, a = [], o = 2; o < t.length - 1; o += 2) { var s = t[o], u = t[o + 1]; Array.isArray(s) || (s = [s]); var l = e.concat(o); if (0 === s.length) return l.error('Expected at least one branch label.'); for (var p = 0, c = s; p < c.length; p += 1) { var h = c[p]; if ('number' != typeof h && 'string' != typeof h) return l.error('Branch labels must be numbers or strings.'); if ('number' == typeof h && Math.abs(h) > Number.MAX_SAFE_INTEGER) return l.error( 'Branch labels must be integers no larger than ' + Number.MAX_SAFE_INTEGER + '.', ); if ('number' == typeof h && Math.floor(h) !== h) return l.error('Numeric branch labels must be integer values.'); if (r) { if (l.checkSubtype(r, ne(h))) return null; } else r = ne(h); if (void 0 !== i[String(h)]) return l.error('Branch labels must be unique.'); i[String(h)] = a.length; } var f = e.parse(u, o, n); if (!f) return null; (n = n || f.type), a.push(f); } var y = e.parse(t[1], 1, Et); if (!y) return null; var d = e.parse(t[t.length - 1], t.length - 1, n); return d ? 'value' !== y.type.kind && e.concat(1).checkSubtype(r, y.type) ? null : new hr(r, n, y, i, a, d) : null; }), (hr.prototype.evaluate = function (t) { var e = this.input.evaluate(t); return ( (ne(e) === this.inputType && this.outputs[this.cases[e]]) || this.otherwise ).evaluate(t); }), (hr.prototype.eachChild = function (t) { t(this.input), this.outputs.forEach(t), t(this.otherwise); }), (hr.prototype.outputDefined = function () { return ( this.outputs.every(function (t) { return t.outputDefined(); }) && this.otherwise.outputDefined() ); }); var fr = function (t, e, r) { (this.type = t), (this.branches = e), (this.otherwise = r); }; (fr.parse = function (t, e) { if (t.length < 4) return e.error( 'Expected at least 3 arguments, but found only ' + (t.length - 1) + '.', ); if (t.length % 2 != 0) return e.error('Expected an odd number of arguments.'); var r; e.expectedType && 'value' !== e.expectedType.kind && (r = e.expectedType); for (var n = [], i = 1; i < t.length - 1; i += 2) { var a = e.parse(t[i], i, Pt); if (!a) return null; var o = e.parse(t[i + 1], i + 1, r); if (!o) return null; n.push([a, o]), (r = r || o.type); } var s = e.parse(t[t.length - 1], t.length - 1, r); if (!s) return null; if (!r) throw new Error("Can't infer output type"); return new fr(r, n, s); }), (fr.prototype.evaluate = function (t) { for (var e = 0, r = this.branches; e < r.length; e += 1) { var n = r[e], i = n[1]; if (n[0].evaluate(t)) return i.evaluate(t); } return this.otherwise.evaluate(t); }), (fr.prototype.eachChild = function (t) { for (var e = 0, r = this.branches; e < r.length; e += 1) { var n = r[e], i = n[1]; t(n[0]), t(i); } t(this.otherwise); }), (fr.prototype.outputDefined = function () { return ( this.branches.every(function (t) { return t[1].outputDefined(); }) && this.otherwise.outputDefined() ); }); var yr = function (t, e, r, n) { (this.type = t), (this.input = e), (this.beginIndex = r), (this.endIndex = n); }; function dr(t, e) { return '==' === t || '!=' === t ? 'boolean' === e.kind || 'string' === e.kind || 'number' === e.kind || 'null' === e.kind || 'value' === e.kind : 'string' === e.kind || 'number' === e.kind || 'value' === e.kind; } function mr(t, e, r, n) { return 0 === n.compare(e, r); } function vr(t, e, r) { var n = '==' !== t && '!=' !== t; return (function () { function i(t, e, r) { (this.type = Pt), (this.lhs = t), (this.rhs = e), (this.collator = r), (this.hasUntypedArgument = 'value' === t.type.kind || 'value' === e.type.kind); } return ( (i.parse = function (t, e) { if (3 !== t.length && 4 !== t.length) return e.error('Expected two or three arguments.'); var r = t[0], a = e.parse(t[1], 1, Et); if (!a) return null; if (!dr(r, a.type)) return e .concat(1) .error( '"' + r + '" comparisons are not supported for type \'' + Dt(a.type) + "'.", ); var o = e.parse(t[2], 2, Et); if (!o) return null; if (!dr(r, o.type)) return e .concat(2) .error( '"' + r + '" comparisons are not supported for type \'' + Dt(o.type) + "'.", ); if ( a.type.kind !== o.type.kind && 'value' !== a.type.kind && 'value' !== o.type.kind ) return e.error( "Cannot compare types '" + Dt(a.type) + "' and '" + Dt(o.type) + "'.", ); n && ('value' === a.type.kind && 'value' !== o.type.kind ? (a = new ue(o.type, [a])) : 'value' !== a.type.kind && 'value' === o.type.kind && (o = new ue(a.type, [o]))); var s = null; if (4 === t.length) { if ( 'string' !== a.type.kind && 'string' !== o.type.kind && 'value' !== a.type.kind && 'value' !== o.type.kind ) return e.error( 'Cannot use collator to compare non-string types.', ); if (!(s = e.parse(t[3], 3, Vt))) return null; } return new i(a, o, s); }), (i.prototype.evaluate = function (i) { var a = this.lhs.evaluate(i), o = this.rhs.evaluate(i); if (n && this.hasUntypedArgument) { var s = ne(a), u = ne(o); if ( s.kind !== u.kind || ('string' !== s.kind && 'number' !== s.kind) ) throw new oe( 'Expected arguments for "' + t + '" to be (string, string) or (number, number), but found (' + s.kind + ', ' + u.kind + ') instead.', ); } if (this.collator && !n && this.hasUntypedArgument) { var l = ne(a), p = ne(o); if ('string' !== l.kind || 'string' !== p.kind) return e(i, a, o); } return this.collator ? r(i, a, o, this.collator.evaluate(i)) : e(i, a, o); }), (i.prototype.eachChild = function (t) { t(this.lhs), t(this.rhs), this.collator && t(this.collator); }), (i.prototype.outputDefined = function () { return !0; }), i ); })(); } (yr.parse = function (t, e) { if (t.length <= 2 || t.length >= 5) return e.error( 'Expected 3 or 4 arguments, but found ' + (t.length - 1) + ' instead.', ); var r = e.parse(t[1], 1, Et), n = e.parse(t[2], 2, Mt); if (!r || !n) return null; if (!Ut(r.type, [Lt(Et), zt, Et])) return e.error( 'Expected first argument to be of type array or string, but found ' + Dt(r.type) + ' instead', ); if (4 === t.length) { var i = e.parse(t[3], 3, Mt); return i ? new yr(r.type, r, n, i) : null; } return new yr(r.type, r, n); }), (yr.prototype.evaluate = function (t) { var e = this.input.evaluate(t), r = this.beginIndex.evaluate(t); if (!qt(e, ['string', 'array'])) throw new oe( 'Expected first argument to be of type array or string, but found ' + Dt(ne(e)) + ' instead.', ); if (this.endIndex) { var n = this.endIndex.evaluate(t); return e.slice(r, n); } return e.slice(r); }), (yr.prototype.eachChild = function (t) { t(this.input), t(this.beginIndex), this.endIndex && t(this.endIndex); }), (yr.prototype.outputDefined = function () { return !1; }); var gr = vr( '==', function (t, e, r) { return e === r; }, mr, ), xr = vr( '!=', function (t, e, r) { return e !== r; }, function (t, e, r, n) { return !mr(0, e, r, n); }, ), br = vr( '<', function (t, e, r) { return e < r; }, function (t, e, r, n) { return n.compare(e, r) < 0; }, ), wr = vr( '>', function (t, e, r) { return e > r; }, function (t, e, r, n) { return n.compare(e, r) > 0; }, ), _r = vr( '<=', function (t, e, r) { return e <= r; }, function (t, e, r, n) { return n.compare(e, r) <= 0; }, ), Ar = vr( '>=', function (t, e, r) { return e >= r; }, function (t, e, r, n) { return n.compare(e, r) >= 0; }, ), kr = function (t, e, r, n, i) { (this.type = zt), (this.number = t), (this.locale = e), (this.currency = r), (this.minFractionDigits = n), (this.maxFractionDigits = i); }; (kr.parse = function (t, e) { if (3 !== t.length) return e.error('Expected two arguments.'); var r = e.parse(t[1], 1, Mt); if (!r) return null; var n = t[2]; if ('object' != typeof n || Array.isArray(n)) return e.error('NumberFormat options argument must be an object.'); var i = null; if (n.locale && !(i = e.parse(n.locale, 1, zt))) return null; var a = null; if (n.currency && !(a = e.parse(n.currency, 1, zt))) return null; var o = null; if ( n['min-fraction-digits'] && !(o = e.parse(n['min-fraction-digits'], 1, Mt)) ) return null; var s = null; return n['max-fraction-digits'] && !(s = e.parse(n['max-fraction-digits'], 1, Mt)) ? null : new kr(r, i, a, o, s); }), (kr.prototype.evaluate = function (t) { return new Intl.NumberFormat( this.locale ? this.locale.evaluate(t) : [], { style: this.currency ? 'currency' : 'decimal', currency: this.currency ? this.currency.evaluate(t) : void 0, minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(t) : void 0, maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(t) : void 0, }, ).format(this.number.evaluate(t)); }), (kr.prototype.eachChild = function (t) { t(this.number), this.locale && t(this.locale), this.currency && t(this.currency), this.minFractionDigits && t(this.minFractionDigits), this.maxFractionDigits && t(this.maxFractionDigits); }), (kr.prototype.outputDefined = function () { return !1; }); var Sr = function (t) { (this.type = Tt), (this.sections = t); }; (Sr.parse = function (t, e) { if (t.length < 2) return e.error('Expected at least one argument.'); var r = t[1]; if (!Array.isArray(r) && 'object' == typeof r) return e.error('First argument must be an image or text section.'); for (var n = [], i = !1, a = 1; a <= t.length - 1; ++a) { var o = t[a]; if (i && 'object' == typeof o && !Array.isArray(o)) { i = !1; var s = null; if (o['font-scale'] && !(s = e.parse(o['font-scale'], 1, Mt))) return null; var u = null; if (o['text-font'] && !(u = e.parse(o['text-font'], 1, Lt(zt)))) return null; var l = null; if (o['text-color'] && !(l = e.parse(o['text-color'], 1, Bt))) return null; var p = n[n.length - 1]; (p.scale = s), (p.font = u), (p.textColor = l); } else { var c = e.parse(t[a], 1, Et); if (!c) return null; var h = c.type.kind; if ( 'string' !== h && 'value' !== h && 'null' !== h && 'resolvedImage' !== h ) return e.error( "Formatted text type must be 'string', 'value', 'image' or 'null'.", ); (i = !0), n.push({ content: c, scale: null, font: null, textColor: null }); } } return new Sr(n); }), (Sr.prototype.evaluate = function (t) { return new $t( this.sections.map(function (e) { var r = e.content.evaluate(t); return ne(r) === Ot ? new Wt('', r, null, null, null) : new Wt( ie(r), null, e.scale ? e.scale.evaluate(t) : null, e.font ? e.font.evaluate(t).join(',') : null, e.textColor ? e.textColor.evaluate(t) : null, ); }), ); }), (Sr.prototype.eachChild = function (t) { for (var e = 0, r = this.sections; e < r.length; e += 1) { var n = r[e]; t(n.content), n.scale && t(n.scale), n.font && t(n.font), n.textColor && t(n.textColor); } }), (Sr.prototype.outputDefined = function () { return !1; }); var Ir = function (t) { (this.type = Ot), (this.input = t); }; (Ir.parse = function (t, e) { if (2 !== t.length) return e.error('Expected two arguments.'); var r = e.parse(t[1], 1, zt); return r ? new Ir(r) : e.error('No image name provided.'); }), (Ir.prototype.evaluate = function (t) { var e = this.input.evaluate(t), r = te.fromString(e); return ( r && t.availableImages && (r.available = t.availableImages.indexOf(e) > -1), r ); }), (Ir.prototype.eachChild = function (t) { t(this.input); }), (Ir.prototype.outputDefined = function () { return !1; }); var Mr = function (t) { (this.type = Mt), (this.input = t); }; (Mr.parse = function (t, e) { if (2 !== t.length) return e.error( 'Expected 1 argument, but found ' + (t.length - 1) + ' instead.', ); var r = e.parse(t[1], 1); return r ? 'array' !== r.type.kind && 'string' !== r.type.kind && 'value' !== r.type.kind ? e.error( 'Expected argument of type string or array, but found ' + Dt(r.type) + ' instead.', ) : new Mr(r) : null; }), (Mr.prototype.evaluate = function (t) { var e = this.input.evaluate(t); if ('string' == typeof e) return e.length; if (Array.isArray(e)) return e.length; throw new oe( 'Expected value to be of type string or array, but found ' + Dt(ne(e)) + ' instead.', ); }), (Mr.prototype.eachChild = function (t) { t(this.input); }), (Mr.prototype.outputDefined = function () { return !1; }); var zr = { '==': gr, '!=': xr, '>': wr, '<': br, '>=': Ar, '<=': _r, array: ue, at: lr, boolean: ue, case: fr, coalesce: sr, collator: ye, format: Sr, image: Ir, in: pr, 'index-of': cr, interpolate: ar, 'interpolate-hcl': ar, 'interpolate-lab': ar, length: Mr, let: ur, literal: ae, match: hr, number: ue, 'number-format': kr, object: ue, slice: yr, step: je, string: ue, 'to-boolean': pe, 'to-color': pe, 'to-number': pe, 'to-string': pe, var: Fe, within: Ce, }; function Pr(t, e) { var r = e[0], n = e[1], i = e[2], a = e[3]; (r = r.evaluate(t)), (n = n.evaluate(t)), (i = i.evaluate(t)); var o = a ? a.evaluate(t) : 1, s = ee(r, n, i, o); if (s) throw new oe(s); return new Yt((r / 255) * o, (n / 255) * o, (i / 255) * o, o); } function Br(t, e) { return t in e; } function Cr(t, e) { var r = e[t]; return void 0 === r ? null : r; } function Er(t) { return { type: t }; } function Vr(t) { return { result: 'success', value: t }; } function Tr(t) { return { result: 'error', value: t }; } function Fr(t) { return ( 'data-driven' === t['property-type'] || 'cross-faded-data-driven' === t['property-type'] ); } function Or(t) { return !!t.expression && t.expression.parameters.indexOf('zoom') > -1; } function Lr(t) { return !!t.expression && t.expression.interpolated; } function Dr(t) { return t instanceof Number ? 'number' : t instanceof String ? 'string' : t instanceof Boolean ? 'boolean' : Array.isArray(t) ? 'array' : null === t ? 'null' : typeof t; } function jr(t) { return 'object' == typeof t && null !== t && !Array.isArray(t); } function Rr(t) { return t; } function Ur(t, e) { var r, n, i, a = 'color' === e.type, o = t.stops && 'object' == typeof t.stops[0][0], s = o || !(o || void 0 !== t.property), u = t.type || (Lr(e) ? 'exponential' : 'interval'); if (a || 'padding' === e.type) { var l = a ? Yt.parse : Qt.parse; (t = wt({}, t)).stops && (t.stops = t.stops.map(function (t) { return [t[0], l(t[1])]; })), (t.default = l(t.default ? t.default : e.default)); } if (t.colorSpace && 'rgb' !== t.colorSpace && !ir[t.colorSpace]) throw new Error('Unknown color space: ' + t.colorSpace); if ('exponential' === u) r = Kr; else if ('interval' === u) r = Zr; else if ('categorical' === u) { (r = Nr), (n = Object.create(null)); for (var p = 0, c = t.stops; p < c.length; p += 1) { var h = c[p]; n[h[0]] = h[1]; } i = typeof t.stops[0][0]; } else { if ('identity' !== u) throw new Error('Unknown function type "' + u + '"'); r = Gr; } if (o) { for (var f = {}, y = [], d = 0; d < t.stops.length; d++) { var m = t.stops[d], v = m[0].zoom; void 0 === f[v] && ((f[v] = { zoom: v, type: t.type, property: t.property, default: t.default, stops: [], }), y.push(v)), f[v].stops.push([m[0].value, m[1]]); } for (var g = [], x = 0, b = y; x < b.length; x += 1) { var w = b[x]; g.push([f[w].zoom, Ur(f[w], e)]); } var _ = { name: 'linear' }; return { kind: 'composite', interpolationType: _, interpolationFactor: ar.interpolationFactor.bind(void 0, _), zoomStops: g.map(function (t) { return t[0]; }), evaluate: function (r, n) { var i = r.zoom; return Kr({ stops: g, base: t.base }, e, i).evaluate(i, n); }, }; } if (s) { var A = 'exponential' === u ? { name: 'exponential', base: void 0 !== t.base ? t.base : 1 } : null; return { kind: 'camera', interpolationType: A, interpolationFactor: ar.interpolationFactor.bind(void 0, A), zoomStops: t.stops.map(function (t) { return t[0]; }), evaluate: function (a) { return r(t, e, a.zoom, n, i); }, }; } return { kind: 'source', evaluate: function (a, o) { var s = o && o.properties ? o.properties[t.property] : void 0; return void 0 === s ? qr(t.default, e.default) : r(t, e, s, n, i); }, }; } function qr(t, e, r) { return void 0 !== t ? t : void 0 !== e ? e : void 0 !== r ? r : void 0; } function Nr(t, e, r, n, i) { return qr(typeof r === i ? n[r] : void 0, t.default, e.default); } function Zr(t, e, r) { if ('number' !== Dr(r)) return qr(t.default, e.default); var n = t.stops.length; if (1 === n) return t.stops[0][1]; if (r <= t.stops[0][0]) return t.stops[0][1]; if (r >= t.stops[n - 1][0]) return t.stops[n - 1][1]; var i = De( t.stops.map(function (t) { return t[0]; }), r, ); return t.stops[i][1]; } function Kr(t, e, r) { var n = void 0 !== t.base ? t.base : 1; if ('number' !== Dr(r)) return qr(t.default, e.default); var i = t.stops.length; if (1 === i) return t.stops[0][1]; if (r <= t.stops[0][0]) return t.stops[0][1]; if (r >= t.stops[i - 1][0]) return t.stops[i - 1][1]; var a = De( t.stops.map(function (t) { return t[0]; }), r, ), o = (function (t, e, r, n) { var i = n - r, a = t - r; return 0 === i ? 0 : 1 === e ? a / i : (Math.pow(e, a) - 1) / (Math.pow(e, i) - 1); })(r, n, t.stops[a][0], t.stops[a + 1][0]), s = t.stops[a][1], u = t.stops[a + 1][1], l = Ue[e.type] || Rr; if (t.colorSpace && 'rgb' !== t.colorSpace) { var p = ir[t.colorSpace]; l = function (t, e) { return p.reverse(p.interpolate(p.forward(t), p.forward(e), o)); }; } return 'function' == typeof s.evaluate ? { evaluate: function () { for (var t = [], e = arguments.length; e--; ) t[e] = arguments[e]; var r = s.evaluate.apply(void 0, t), n = u.evaluate.apply(void 0, t); if (void 0 !== r && void 0 !== n) return l(r, n, o); }, } : l(s, u, o); } function Gr(t, e, r) { switch (e.type) { case 'color': r = Yt.parse(r); break; case 'formatted': r = $t.fromString(r.toString()); break; case 'resolvedImage': r = te.fromString(r.toString()); break; case 'padding': r = Qt.parse(r); break; default: Dr(r) === e.type || ('enum' === e.type && e.values[r]) || (r = void 0); } return qr(r, t.default, e.default); } fe.register(zr, { error: [ { kind: 'error' }, [zt], function (t, e) { throw new oe(e[0].evaluate(t)); }, ], typeof: [ zt, [Et], function (t, e) { return Dt(ne(e[0].evaluate(t))); }, ], 'to-rgba': [ Lt(Mt, 4), [Bt], function (t, e) { return e[0].evaluate(t).toArray(); }, ], rgb: [Bt, [Mt, Mt, Mt], Pr], rgba: [Bt, [Mt, Mt, Mt, Mt], Pr], has: { type: Pt, overloads: [ [ [zt], function (t, e) { return Br(e[0].evaluate(t), t.properties()); }, ], [ [zt, Ct], function (t, e) { var r = e[1]; return Br(e[0].evaluate(t), r.evaluate(t)); }, ], ], }, get: { type: Et, overloads: [ [ [zt], function (t, e) { return Cr(e[0].evaluate(t), t.properties()); }, ], [ [zt, Ct], function (t, e) { var r = e[1]; return Cr(e[0].evaluate(t), r.evaluate(t)); }, ], ], }, 'feature-state': [ Et, [zt], function (t, e) { return Cr(e[0].evaluate(t), t.featureState || {}); }, ], properties: [ Ct, [], function (t) { return t.properties(); }, ], 'geometry-type': [ zt, [], function (t) { return t.geometryType(); }, ], id: [ Et, [], function (t) { return t.id(); }, ], zoom: [ Mt, [], function (t) { return t.globals.zoom; }, ], 'heatmap-density': [ Mt, [], function (t) { return t.globals.heatmapDensity || 0; }, ], 'line-progress': [ Mt, [], function (t) { return t.globals.lineProgress || 0; }, ], accumulated: [ Et, [], function (t) { return void 0 === t.globals.accumulated ? null : t.globals.accumulated; }, ], '+': [ Mt, Er(Mt), function (t, e) { for (var r = 0, n = 0, i = e; n < i.length; n += 1) r += i[n].evaluate(t); return r; }, ], '*': [ Mt, Er(Mt), function (t, e) { for (var r = 1, n = 0, i = e; n < i.length; n += 1) r *= i[n].evaluate(t); return r; }, ], '-': { type: Mt, overloads: [ [ [Mt, Mt], function (t, e) { var r = e[1]; return e[0].evaluate(t) - r.evaluate(t); }, ], [ [Mt], function (t, e) { return -e[0].evaluate(t); }, ], ], }, '/': [ Mt, [Mt, Mt], function (t, e) { var r = e[1]; return e[0].evaluate(t) / r.evaluate(t); }, ], '%': [ Mt, [Mt, Mt], function (t, e) { var r = e[1]; return e[0].evaluate(t) % r.evaluate(t); }, ], ln2: [ Mt, [], function () { return Math.LN2; }, ], pi: [ Mt, [], function () { return Math.PI; }, ], e: [ Mt, [], function () { return Math.E; }, ], '^': [ Mt, [Mt, Mt], function (t, e) { var r = e[1]; return Math.pow(e[0].evaluate(t), r.evaluate(t)); }, ], sqrt: [ Mt, [Mt], function (t, e) { return Math.sqrt(e[0].evaluate(t)); }, ], log10: [ Mt, [Mt], function (t, e) { return Math.log(e[0].evaluate(t)) / Math.LN10; }, ], ln: [ Mt, [Mt], function (t, e) { return Math.log(e[0].evaluate(t)); }, ], log2: [ Mt, [Mt], function (t, e) { return Math.log(e[0].evaluate(t)) / Math.LN2; }, ], sin: [ Mt, [Mt], function (t, e) { return Math.sin(e[0].evaluate(t)); }, ], cos: [ Mt, [Mt], function (t, e) { return Math.cos(e[0].evaluate(t)); }, ], tan: [ Mt, [Mt], function (t, e) { return Math.tan(e[0].evaluate(t)); }, ], asin: [ Mt, [Mt], function (t, e) { return Math.asin(e[0].evaluate(t)); }, ], acos: [ Mt, [Mt], function (t, e) { return Math.acos(e[0].evaluate(t)); }, ], atan: [ Mt, [Mt], function (t, e) { return Math.atan(e[0].evaluate(t)); }, ], min: [ Mt, Er(Mt), function (t, e) { return Math.min.apply( Math, e.map(function (e) { return e.evaluate(t); }), ); }, ], max: [ Mt, Er(Mt), function (t, e) { return Math.max.apply( Math, e.map(function (e) { return e.evaluate(t); }), ); }, ], abs: [ Mt, [Mt], function (t, e) { return Math.abs(e[0].evaluate(t)); }, ], round: [ Mt, [Mt], function (t, e) { var r = e[0].evaluate(t); return r < 0 ? -Math.round(-r) : Math.round(r); }, ], floor: [ Mt, [Mt], function (t, e) { return Math.floor(e[0].evaluate(t)); }, ], ceil: [ Mt, [Mt], function (t, e) { return Math.ceil(e[0].evaluate(t)); }, ], 'filter-==': [ Pt, [zt, Et], function (t, e) { var r = e[0], n = e[1]; return t.properties()[r.value] === n.value; }, ], 'filter-id-==': [ Pt, [Et], function (t, e) { var r = e[0]; return t.id() === r.value; }, ], 'filter-type-==': [ Pt, [zt], function (t, e) { var r = e[0]; return t.geometryType() === r.value; }, ], 'filter-<': [ Pt, [zt, Et], function (t, e) { var r = e[0], n = e[1], i = t.properties()[r.value], a = n.value; return typeof i == typeof a && i < a; }, ], 'filter-id-<': [ Pt, [Et], function (t, e) { var r = e[0], n = t.id(), i = r.value; return typeof n == typeof i && n < i; }, ], 'filter->': [ Pt, [zt, Et], function (t, e) { var r = e[0], n = e[1], i = t.properties()[r.value], a = n.value; return typeof i == typeof a && i > a; }, ], 'filter-id->': [ Pt, [Et], function (t, e) { var r = e[0], n = t.id(), i = r.value; return typeof n == typeof i && n > i; }, ], 'filter-<=': [ Pt, [zt, Et], function (t, e) { var r = e[0], n = e[1], i = t.properties()[r.value], a = n.value; return typeof i == typeof a && i <= a; }, ], 'filter-id-<=': [ Pt, [Et], function (t, e) { var r = e[0], n = t.id(), i = r.value; return typeof n == typeof i && n <= i; }, ], 'filter->=': [ Pt, [zt, Et], function (t, e) { var r = e[0], n = e[1], i = t.properties()[r.value], a = n.value; return typeof i == typeof a && i >= a; }, ], 'filter-id->=': [ Pt, [Et], function (t, e) { var r = e[0], n = t.id(), i = r.value; return typeof n == typeof i && n >= i; }, ], 'filter-has': [ Pt, [Et], function (t, e) { return e[0].value in t.properties(); }, ], 'filter-has-id': [ Pt, [], function (t) { return null !== t.id() && void 0 !== t.id(); }, ], 'filter-type-in': [ Pt, [Lt(zt)], function (t, e) { return e[0].value.indexOf(t.geometryType()) >= 0; }, ], 'filter-id-in': [ Pt, [Lt(Et)], function (t, e) { return e[0].value.indexOf(t.id()) >= 0; }, ], 'filter-in-small': [ Pt, [zt, Lt(Et)], function (t, e) { var r = e[0]; return e[1].value.indexOf(t.properties()[r.value]) >= 0; }, ], 'filter-in-large': [ Pt, [zt, Lt(Et)], function (t, e) { var r = e[0], n = e[1]; return (function (t, e, r, n) { for (; r <= n; ) { var i = (r + n) >> 1; if (e[i] === t) return !0; e[i] > t ? (n = i - 1) : (r = i + 1); } return !1; })(t.properties()[r.value], n.value, 0, n.value.length - 1); }, ], all: { type: Pt, overloads: [ [ [Pt, Pt], function (t, e) { var r = e[1]; return e[0].evaluate(t) && r.evaluate(t); }, ], [ Er(Pt), function (t, e) { for (var r = 0, n = e; r < n.length; r += 1) if (!n[r].evaluate(t)) return !1; return !0; }, ], ], }, any: { type: Pt, overloads: [ [ [Pt, Pt], function (t, e) { var r = e[1]; return e[0].evaluate(t) || r.evaluate(t); }, ], [ Er(Pt), function (t, e) { for (var r = 0, n = e; r < n.length; r += 1) if (n[r].evaluate(t)) return !0; return !1; }, ], ], }, '!': [ Pt, [Pt], function (t, e) { return !e[0].evaluate(t); }, ], 'is-supported-script': [ Pt, [zt], function (t, e) { var r = t.globals && t.globals.isSupportedScript; return !r || r(e[0].evaluate(t)); }, ], upcase: [ zt, [zt], function (t, e) { return e[0].evaluate(t).toUpperCase(); }, ], downcase: [ zt, [zt], function (t, e) { return e[0].evaluate(t).toLowerCase(); }, ], concat: [ zt, Er(Et), function (t, e) { return e .map(function (e) { return ie(e.evaluate(t)); }) .join(''); }, ], 'resolved-locale': [ zt, [Vt], function (t, e) { return e[0].evaluate(t).resolvedLocale(); }, ], }); var Jr = function (t, e) { (this.expression = t), (this._warningHistory = {}), (this._evaluator = new he()), (this._defaultValue = e ? (function (t) { return 'color' === t.type && jr(t.default) ? new Yt(0, 0, 0, 0) : 'color' === t.type ? Yt.parse(t.default) || null : 'padding' === t.type ? Qt.parse(t.default) || null : void 0 === t.default ? null : t.default; })(e) : null), (this._enumValues = e && 'enum' === e.type ? e.values : null); }; function Xr(t) { return ( Array.isArray(t) && t.length > 0 && 'string' == typeof t[0] && t[0] in zr ); } function Yr(t, e) { var r = new Oe( zr, [], e ? (function (t) { var e = { color: Bt, string: zt, number: Mt, enum: zt, boolean: Pt, formatted: Tt, padding: Ft, resolvedImage: Ot, }; return 'array' === t.type ? Lt(e[t.value] || Et, t.length) : e[t.type]; })(e) : void 0, ), n = r.parse( t, void 0, void 0, void 0, e && 'string' === e.type ? { typeAnnotation: 'coerce' } : void 0, ); return n ? Vr(new Jr(n, e)) : Tr(r.errors); } (Jr.prototype.evaluateWithoutErrorHandling = function (t, e, r, n, i, a) { return ( (this._evaluator.globals = t), (this._evaluator.feature = e), (this._evaluator.featureState = r), (this._evaluator.canonical = n), (this._evaluator.availableImages = i || null), (this._evaluator.formattedSection = a), this.expression.evaluate(this._evaluator) ); }), (Jr.prototype.evaluate = function (t, e, r, n, i, a) { (this._evaluator.globals = t), (this._evaluator.feature = e || null), (this._evaluator.featureState = r || null), (this._evaluator.canonical = n), (this._evaluator.availableImages = i || null), (this._evaluator.formattedSection = a || null); try { var o = this.expression.evaluate(this._evaluator); if (null == o || ('number' == typeof o && o != o)) return this._defaultValue; if (this._enumValues && !(o in this._enumValues)) throw new oe( 'Expected value to be one of ' + Object.keys(this._enumValues) .map(function (t) { return JSON.stringify(t); }) .join(', ') + ', but found ' + JSON.stringify(o) + ' instead.', ); return o; } catch (t) { return ( this._warningHistory[t.message] || ((this._warningHistory[t.message] = !0), 'undefined' != typeof console && console.warn(t.message)), this._defaultValue ); } }); var Hr = function (t, e) { (this.kind = t), (this._styleExpression = e), (this.isStateDependent = 'constant' !== t && !Ve(e.expression)); }; (Hr.prototype.evaluateWithoutErrorHandling = function (t, e, r, n, i, a) { return this._styleExpression.evaluateWithoutErrorHandling( t, e, r, n, i, a, ); }), (Hr.prototype.evaluate = function (t, e, r, n, i, a) { return this._styleExpression.evaluate(t, e, r, n, i, a); }); var Wr = function (t, e, r, n) { (this.kind = t), (this.zoomStops = r), (this._styleExpression = e), (this.isStateDependent = 'camera' !== t && !Ve(e.expression)), (this.interpolationType = n); }; function $r(t, e) { var r = Yr(t, e); if ('error' === r.result) return r; var n = r.value.expression, i = Ee(n); if (!i && !Fr(e)) return Tr([new kt('', 'data expressions not supported')]); var a = Te(n, ['zoom']); if (!a && !Or(e)) return Tr([new kt('', 'zoom expressions not supported')]); var o = tn(n); return o || a ? o instanceof kt ? Tr([o]) : o instanceof ar && !Lr(e) ? Tr([ new kt( '', '"interpolate" expressions cannot be used with this property', ), ]) : Vr( o ? new Wr( i ? 'camera' : 'composite', r.value, o.labels, o instanceof ar ? o.interpolation : void 0, ) : new Hr(i ? 'constant' : 'source', r.value), ) : Tr([ new kt( '', '"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.', ), ]); } (Wr.prototype.evaluateWithoutErrorHandling = function (t, e, r, n, i, a) { return this._styleExpression.evaluateWithoutErrorHandling( t, e, r, n, i, a, ); }), (Wr.prototype.evaluate = function (t, e, r, n, i, a) { return this._styleExpression.evaluate(t, e, r, n, i, a); }), (Wr.prototype.interpolationFactor = function (t, e, r) { return this.interpolationType ? ar.interpolationFactor(this.interpolationType, t, e, r) : 0; }); var Qr = function (t, e) { (this._parameters = t), (this._specification = e), wt(this, Ur(this._parameters, this._specification)); }; function tn(t) { var e = null; if (t instanceof ur) e = tn(t.result); else if (t instanceof sr) for (var r = 0, n = t.args; r < n.length && !(e = tn(n[r])); r += 1); else (t instanceof je || t instanceof ar) && t.input instanceof fe && 'zoom' === t.input.name && (e = t); return ( e instanceof kt || t.eachChild(function (t) { var r = tn(t); r instanceof kt ? (e = r) : !e && r ? (e = new kt( '', '"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.', )) : e && r && e !== r && (e = new kt( '', 'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.', )); }), e ); } function en(t) { var e = t.key, r = t.value, n = t.valueSpec || {}, i = t.objectElementValidators || {}, a = t.style, o = t.styleSpec, s = [], u = Dr(r); if ('object' !== u) return [new xt(e, r, 'object expected, ' + u + ' found')]; for (var l in r) { var p = l.split('.')[0], c = n[p] || n['*'], h = void 0; if (i[p]) h = i[p]; else if (n[p]) h = Bn; else if (i['*']) h = i['*']; else { if (!n['*']) { s.push(new xt(e, r[l], 'unknown property "' + l + '"')); continue; } h = Bn; } s = s.concat( h( { key: (e ? e + '.' : e) + l, value: r[l], valueSpec: c, style: a, styleSpec: o, object: r, objectKey: l, }, r, ), ); } for (var f in n) i[f] || (n[f].required && void 0 === n[f].default && void 0 === r[f] && s.push(new xt(e, r, 'missing required property "' + f + '"'))); return s; } function rn(t) { var e = t.value, r = t.valueSpec, n = t.style, i = t.styleSpec, a = t.key, o = t.arrayElementValidator || Bn; if ('array' !== Dr(e)) return [new xt(a, e, 'array expected, ' + Dr(e) + ' found')]; if (r.length && e.length !== r.length) return [ new xt( a, e, 'array length ' + r.length + ' expected, length ' + e.length + ' found', ), ]; if (r['min-length'] && e.length < r['min-length']) return [ new xt( a, e, 'array length at least ' + r['min-length'] + ' expected, length ' + e.length + ' found', ), ]; var s = { type: r.value, values: r.values }; i.$version < 7 && (s.function = r.function), 'object' === Dr(r.value) && (s = r.value); for (var u = [], l = 0; l < e.length; l++) u = u.concat( o({ array: e, arrayIndex: l, value: e[l], valueSpec: s, style: n, styleSpec: i, key: a + '[' + l + ']', }), ); return u; } function nn(t) { var e = t.key, r = t.value, n = t.valueSpec, i = Dr(r); return ( 'number' === i && r != r && (i = 'NaN'), 'number' !== i ? [new xt(e, r, 'number expected, ' + i + ' found')] : 'minimum' in n && r < n.minimum ? [new xt(e, r, r + ' is less than the minimum value ' + n.minimum)] : 'maximum' in n && r > n.maximum ? [ new xt( e, r, r + ' is greater than the maximum value ' + n.maximum, ), ] : [] ); } function an(t) { var e, r, n, i = t.valueSpec, a = _t(t.value.type), o = {}, s = 'categorical' !== a && void 0 === t.value.property, u = !s, l = 'array' === Dr(t.value.stops) && 'array' === Dr(t.value.stops[0]) && 'object' === Dr(t.value.stops[0][0]), p = en({ key: t.key, value: t.value, valueSpec: t.styleSpec.function, style: t.style, styleSpec: t.styleSpec, objectElementValidators: { stops: function (t) { if ('identity' === a) return [ new xt( t.key, t.value, 'identity function may not have a "stops" property', ), ]; var e = [], r = t.value; return ( (e = e.concat( rn({ key: t.key, value: r, valueSpec: t.valueSpec, style: t.style, styleSpec: t.styleSpec, arrayElementValidator: c, }), )), 'array' === Dr(r) && 0 === r.length && e.push(new xt(t.key, r, 'array must have at least one stop')), e ); }, default: function (t) { return Bn({ key: t.key, value: t.value, valueSpec: i, style: t.style, styleSpec: t.styleSpec, }); }, }, }); return ( 'identity' === a && s && p.push( new xt(t.key, t.value, 'missing required property "property"'), ), 'identity' === a || t.value.stops || p.push(new xt(t.key, t.value, 'missing required property "stops"')), 'exponential' === a && t.valueSpec.expression && !Lr(t.valueSpec) && p.push(new xt(t.key, t.value, 'exponential functions not supported')), t.styleSpec.$version >= 8 && (u && !Fr(t.valueSpec) ? p.push(new xt(t.key, t.value, 'property functions not supported')) : s && !Or(t.valueSpec) && p.push(new xt(t.key, t.value, 'zoom functions not supported'))), ('categorical' !== a && !l) || void 0 !== t.value.property || p.push(new xt(t.key, t.value, '"property" property is required')), p ); function c(t) { var e = [], a = t.value, s = t.key; if ('array' !== Dr(a)) return [new xt(s, a, 'array expected, ' + Dr(a) + ' found')]; if (2 !== a.length) return [ new xt( s, a, 'array length 2 expected, length ' + a.length + ' found', ), ]; if (l) { if ('object' !== Dr(a[0])) return [new xt(s, a, 'object expected, ' + Dr(a[0]) + ' found')]; if (void 0 === a[0].zoom) return [new xt(s, a, 'object stop key must have zoom')]; if (void 0 === a[0].value) return [new xt(s, a, 'object stop key must have value')]; if (n && n > _t(a[0].zoom)) return [ new xt( s, a[0].zoom, 'stop zoom values must appear in ascending order', ), ]; _t(a[0].zoom) !== n && ((n = _t(a[0].zoom)), (r = void 0), (o = {})), (e = e.concat( en({ key: s + '[0]', value: a[0], valueSpec: { zoom: {} }, style: t.style, styleSpec: t.styleSpec, objectElementValidators: { zoom: nn, value: h }, }), )); } else e = e.concat(h({ key: s + '[0]', value: a[0], valueSpec: {}, style: t.style, styleSpec: t.styleSpec }, a)); return Xr(At(a[1])) ? e.concat([ new xt( s + '[1]', a[1], 'expressions are not allowed in function stops.', ), ]) : e.concat( Bn({ key: s + '[1]', value: a[1], valueSpec: i, style: t.style, styleSpec: t.styleSpec, }), ); } function h(t, n) { var s = Dr(t.value), u = _t(t.value), l = null !== t.value ? t.value : n; if (e) { if (s !== e) return [ new xt( t.key, l, s + ' stop domain type must match previous stop domain type ' + e, ), ]; } else e = s; if ('number' !== s && 'string' !== s && 'boolean' !== s) return [ new xt( t.key, l, 'stop domain value must be a number, string, or boolean', ), ]; if ('number' !== s && 'categorical' !== a) { var p = 'number expected, ' + s + ' found'; return ( Fr(i) && void 0 === a && (p += '\nIf you intended to use a categorical function, specify `"type": "categorical"`.'), [new xt(t.key, l, p)] ); } return 'categorical' !== a || 'number' !== s || (isFinite(u) && Math.floor(u) === u) ? 'categorical' !== a && 'number' === s && void 0 !== r && u < r ? [ new xt( t.key, l, 'stop domain values must appear in ascending order', ), ] : ((r = u), 'categorical' === a && u in o ? [new xt(t.key, l, 'stop domain values must be unique')] : ((o[u] = !0), [])) : [new xt(t.key, l, 'integer expected, found ' + u)]; } } function on(t) { var e = ('property' === t.expressionContext ? $r : Yr)( At(t.value), t.valueSpec, ); if ('error' === e.result) return e.value.map(function (e) { return new xt('' + t.key + e.key, t.value, e.message); }); var r = e.value.expression || e.value._styleExpression.expression; if ( 'property' === t.expressionContext && 'text-font' === t.propertyKey && !r.outputDefined() ) return [ new xt( t.key, t.value, 'Invalid data expression for "' + t.propertyKey + '". Output values must be contained as literals within the expression.', ), ]; if ( 'property' === t.expressionContext && 'layout' === t.propertyType && !Ve(r) ) return [ new xt( t.key, t.value, '"feature-state" data expressions are not supported with layout properties.', ), ]; if ('filter' === t.expressionContext && !Ve(r)) return [ new xt( t.key, t.value, '"feature-state" data expressions are not supported with filters.', ), ]; if (t.expressionContext && 0 === t.expressionContext.indexOf('cluster')) { if (!Te(r, ['zoom', 'feature-state'])) return [ new xt( t.key, t.value, '"zoom" and "feature-state" expressions are not supported with cluster properties.', ), ]; if ('cluster-initial' === t.expressionContext && !Ee(r)) return [ new xt( t.key, t.value, 'Feature data expressions are not supported with initial expression part of cluster properties.', ), ]; } return []; } function sn(t) { var e = t.key, r = t.value, n = t.valueSpec, i = []; return ( Array.isArray(n.values) ? -1 === n.values.indexOf(_t(r)) && i.push( new xt( e, r, 'expected one of [' + n.values.join(', ') + '], ' + JSON.stringify(r) + ' found', ), ) : -1 === Object.keys(n.values).indexOf(_t(r)) && i.push( new xt( e, r, 'expected one of [' + Object.keys(n.values).join(', ') + '], ' + JSON.stringify(r) + ' found', ), ), i ); } function un(t) { if (!0 === t || !1 === t) return !0; if (!Array.isArray(t) || 0 === t.length) return !1; switch (t[0]) { case 'has': return t.length >= 2 && '$id' !== t[1] && '$type' !== t[1]; case 'in': return ( t.length >= 3 && ('string' != typeof t[1] || Array.isArray(t[2])) ); case '!in': case '!has': case 'none': return !1; case '==': case '!=': case '>': case '>=': case '<': case '<=': return 3 !== t.length || Array.isArray(t[1]) || Array.isArray(t[2]); case 'any': case 'all': for (var e = 0, r = t.slice(1); e < r.length; e += 1) { var n = r[e]; if (!un(n) && 'boolean' != typeof n) return !1; } return !0; default: return !0; } } (Qr.deserialize = function (t) { return new Qr(t._parameters, t._specification); }), (Qr.serialize = function (t) { return { _parameters: t._parameters, _specification: t._specification }; }); var ln = { type: 'boolean', default: !1, transition: !1, 'property-type': 'data-driven', expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, }; function pn(t) { if (null == t) return { filter: function () { return !0; }, needGeometry: !1, }; un(t) || (t = fn(t)); var e = Yr(t, ln); if ('error' === e.result) throw new Error( e.value .map(function (t) { return t.key + ': ' + t.message; }) .join(', '), ); return { filter: function (t, r, n) { return e.value.evaluate(t, r, {}, n); }, needGeometry: hn(t), }; } function cn(t, e) { return t < e ? -1 : t > e ? 1 : 0; } function hn(t) { if (!Array.isArray(t)) return !1; if ('within' === t[0]) return !0; for (var e = 1; e < t.length; e++) if (hn(t[e])) return !0; return !1; } function fn(t) { if (!t) return !0; var e, r = t[0]; return t.length <= 1 ? 'any' !== r : '==' === r ? yn(t[1], t[2], '==') : '!=' === r ? vn(yn(t[1], t[2], '==')) : '<' === r || '>' === r || '<=' === r || '>=' === r ? yn(t[1], t[2], r) : 'any' === r ? ((e = t.slice(1)), ['any'].concat(e.map(fn))) : 'all' === r ? ['all'].concat(t.slice(1).map(fn)) : 'none' === r ? ['all'].concat(t.slice(1).map(fn).map(vn)) : 'in' === r ? dn(t[1], t.slice(2)) : '!in' === r ? vn(dn(t[1], t.slice(2))) : 'has' === r ? mn(t[1]) : '!has' === r ? vn(mn(t[1])) : 'within' !== r || t; } function yn(t, e, r) { switch (t) { case '$type': return ['filter-type-' + r, e]; case '$id': return ['filter-id-' + r, e]; default: return ['filter-' + r, t, e]; } } function dn(t, e) { if (0 === e.length) return !1; switch (t) { case '$type': return ['filter-type-in', ['literal', e]]; case '$id': return ['filter-id-in', ['literal', e]]; default: return e.length > 200 && !e.some(function (t) { return typeof t != typeof e[0]; }) ? ['filter-in-large', t, ['literal', e.sort(cn)]] : ['filter-in-small', t, ['literal', e]]; } } function mn(t) { switch (t) { case '$type': return !0; case '$id': return ['filter-has-id']; default: return ['filter-has', t]; } } function vn(t) { return ['!', t]; } function gn(t) { return un(At(t.value)) ? on( wt({}, t, { expressionContext: 'filter', valueSpec: { value: 'boolean' }, }), ) : xn(t); } function xn(t) { var e = t.value, r = t.key; if ('array' !== Dr(e)) return [new xt(r, e, 'array expected, ' + Dr(e) + ' found')]; var n, i = t.styleSpec, a = []; if (e.length < 1) return [new xt(r, e, 'filter array must have at least 1 element')]; switch ( ((a = a.concat( sn({ key: r + '[0]', value: e[0], valueSpec: i.filter_operator, style: t.style, styleSpec: t.styleSpec, }), )), _t(e[0])) ) { case '<': case '<=': case '>': case '>=': e.length >= 2 && '$type' === _t(e[1]) && a.push( new xt( r, e, '"$type" cannot be use with operator "' + e[0] + '"', ), ); case '==': case '!=': 3 !== e.length && a.push( new xt( r, e, 'filter array for operator "' + e[0] + '" must have 3 elements', ), ); case 'in': case '!in': e.length >= 2 && 'string' !== (n = Dr(e[1])) && a.push(new xt(r + '[1]', e[1], 'string expected, ' + n + ' found')); for (var o = 2; o < e.length; o++) (n = Dr(e[o])), '$type' === _t(e[1]) ? (a = a.concat( sn({ key: r + '[' + o + ']', value: e[o], valueSpec: i.geometry_type, style: t.style, styleSpec: t.styleSpec, }), )) : 'string' !== n && 'number' !== n && 'boolean' !== n && a.push( new xt( r + '[' + o + ']', e[o], 'string, number, or boolean expected, ' + n + ' found', ), ); break; case 'any': case 'all': case 'none': for (var s = 1; s < e.length; s++) a = a.concat( xn({ key: r + '[' + s + ']', value: e[s], style: t.style, styleSpec: t.styleSpec, }), ); break; case 'has': case '!has': (n = Dr(e[1])), 2 !== e.length ? a.push( new xt( r, e, 'filter array for "' + e[0] + '" operator must have 2 elements', ), ) : 'string' !== n && a.push( new xt(r + '[1]', e[1], 'string expected, ' + n + ' found'), ); break; case 'within': (n = Dr(e[1])), 2 !== e.length ? a.push( new xt( r, e, 'filter array for "' + e[0] + '" operator must have 2 elements', ), ) : 'object' !== n && a.push( new xt(r + '[1]', e[1], 'object expected, ' + n + ' found'), ); } return a; } function bn(t, e) { var r = t.key, n = t.style, i = t.styleSpec, a = t.value, o = t.objectKey, s = i[e + '_' + t.layerType]; if (!s) return []; var u = o.match(/^(.*)-transition$/); if ('paint' === e && u && s[u[1]] && s[u[1]].transition) return Bn({ key: r, value: a, valueSpec: i.transition, style: n, styleSpec: i, }); var l, p = t.valueSpec || s[o]; if (!p) return [new xt(r, a, 'unknown property "' + o + '"')]; if ( 'string' === Dr(a) && Fr(p) && !p.tokens && (l = /^{([^}]+)}$/.exec(a)) ) return [ new xt( r, a, '"' + o + '" does not support interpolation syntax\nUse an identity property function instead: `{ "type": "identity", "property": ' + JSON.stringify(l[1]) + ' }`.', ), ]; var c = []; return ( 'symbol' === t.layerType && ('text-field' === o && n && !n.glyphs && c.push( new xt( r, a, 'use of "text-field" requires a style "glyphs" property', ), ), 'text-font' === o && jr(At(a)) && 'identity' === _t(a.type) && c.push( new xt(r, a, '"text-font" does not support identity functions'), )), c.concat( Bn({ key: t.key, value: a, valueSpec: p, style: n, styleSpec: i, expressionContext: 'property', propertyType: e, propertyKey: o, }), ) ); } function wn(t) { return bn(t, 'paint'); } function _n(t) { return bn(t, 'layout'); } function An(t) { var e = [], r = t.value, n = t.key, i = t.style, a = t.styleSpec; r.type || r.ref || e.push(new xt(n, r, 'either "type" or "ref" is required')); var o, s = _t(r.type), u = _t(r.ref); if (r.id) for (var l = _t(r.id), p = 0; p < t.arrayIndex; p++) { var c = i.layers[p]; _t(c.id) === l && e.push( new xt( n, r.id, 'duplicate layer id "' + r.id + '", previously used at line ' + c.id.__line__, ), ); } if ('ref' in r) ['type', 'source', 'source-layer', 'filter', 'layout'].forEach( function (t) { t in r && e.push( new xt(n, r[t], '"' + t + '" is prohibited for ref layers'), ); }, ), i.layers.forEach(function (t) { _t(t.id) === u && (o = t); }), o ? o.ref ? e.push( new xt(n, r.ref, 'ref cannot reference another ref layer'), ) : (s = _t(o.type)) : e.push(new xt(n, r.ref, 'ref layer "' + u + '" not found')); else if ('background' !== s) if (r.source) { var h = i.sources && i.sources[r.source], f = h && _t(h.type); h ? 'vector' === f && 'raster' === s ? e.push( new xt( n, r.source, 'layer "' + r.id + '" requires a raster source', ), ) : 'raster' === f && 'raster' !== s ? e.push( new xt( n, r.source, 'layer "' + r.id + '" requires a vector source', ), ) : 'vector' !== f || r['source-layer'] ? 'raster-dem' === f && 'hillshade' !== s ? e.push( new xt( n, r.source, "raster-dem source can only be used with layer type 'hillshade'.", ), ) : 'line' !== s || !r.paint || !r.paint['line-gradient'] || ('geojson' === f && h.lineMetrics) || e.push( new xt( n, r, 'layer "' + r.id + '" specifies a line-gradient, which requires a GeoJSON source with `lineMetrics` enabled.', ), ) : e.push( new xt( n, r, 'layer "' + r.id + '" must specify a "source-layer"', ), ) : e.push( new xt(n, r.source, 'source "' + r.source + '" not found'), ); } else e.push(new xt(n, r, 'missing required property "source"')); return ( (e = e.concat( en({ key: n, value: r, valueSpec: a.layer, style: t.style, styleSpec: t.styleSpec, objectElementValidators: { '*': function () { return []; }, type: function () { return Bn({ key: n + '.type', value: r.type, valueSpec: a.layer.type, style: t.style, styleSpec: t.styleSpec, object: r, objectKey: 'type', }); }, filter: gn, layout: function (t) { return en({ layer: r, key: t.key, value: t.value, style: t.style, styleSpec: t.styleSpec, objectElementValidators: { '*': function (t) { return _n(wt({ layerType: s }, t)); }, }, }); }, paint: function (t) { return en({ layer: r, key: t.key, value: t.value, style: t.style, styleSpec: t.styleSpec, objectElementValidators: { '*': function (t) { return wn(wt({ layerType: s }, t)); }, }, }); }, }, }), )), e ); } function kn(t) { var e = t.value, r = t.key, n = Dr(e); return 'string' !== n ? [new xt(r, e, 'string expected, ' + n + ' found')] : []; } var Sn = { promoteId: function (t) { var e = t.key, r = t.value; if ('string' === Dr(r)) return kn({ key: e, value: r }); var n = []; for (var i in r) n.push.apply(n, kn({ key: e + '.' + i, value: r[i] })); return n; }, }; function In(t) { var e = t.value, r = t.key, n = t.styleSpec, i = t.style; if (!e.type) return [new xt(r, e, '"type" is required')]; var a, o = _t(e.type); switch (o) { case 'vector': case 'raster': case 'raster-dem': return en({ key: r, value: e, valueSpec: n['source_' + o.replace('-', '_')], style: t.style, styleSpec: n, objectElementValidators: Sn, }); case 'geojson': if ( ((a = en({ key: r, value: e, valueSpec: n.source_geojson, style: i, styleSpec: n, objectElementValidators: Sn, })), e.cluster) ) for (var s in e.clusterProperties) { var u = e.clusterProperties[s], l = u[0], p = 'string' == typeof l ? [l, ['accumulated'], ['get', s]] : l; a.push.apply( a, on({ key: r + '.' + s + '.map', value: u[1], expressionContext: 'cluster-map', }), ), a.push.apply( a, on({ key: r + '.' + s + '.reduce', value: p, expressionContext: 'cluster-reduce', }), ); } return a; case 'video': return en({ key: r, value: e, valueSpec: n.source_video, style: i, styleSpec: n, }); case 'image': return en({ key: r, value: e, valueSpec: n.source_image, style: i, styleSpec: n, }); case 'canvas': return [ new xt( r, null, 'Please use runtime APIs to add canvas sources, rather than including them in stylesheets.', 'source.canvas', ), ]; default: return sn({ key: r + '.type', value: e.type, valueSpec: { values: [ 'vector', 'raster', 'raster-dem', 'geojson', 'video', 'image', ], }, style: i, styleSpec: n, }); } } function Mn(t) { var e = t.value, r = t.styleSpec, n = r.light, i = t.style, a = [], o = Dr(e); if (void 0 === e) return a; if ('object' !== o) return a.concat([ new xt('light', e, 'object expected, ' + o + ' found'), ]); for (var s in e) { var u = s.match(/^(.*)-transition$/); a = a.concat( u && n[u[1]] && n[u[1]].transition ? Bn({ key: s, value: e[s], valueSpec: r.transition, style: i, styleSpec: r, }) : n[s] ? Bn({ key: s, value: e[s], valueSpec: n[s], style: i, styleSpec: r, }) : [new xt(s, e[s], 'unknown property "' + s + '"')], ); } return a; } function zn(t) { var e = t.value, r = t.styleSpec, n = r.terrain, i = t.style, a = [], o = Dr(e); if (void 0 === e) return a; if ('object' !== o) return a.concat([ new xt('terrain', e, 'object expected, ' + o + ' found'), ]); for (var s in e) a = a.concat( n[s] ? Bn({ key: s, value: e[s], valueSpec: n[s], style: i, styleSpec: r, }) : [new xt(s, e[s], 'unknown property "' + s + '"')], ); return a; } var Pn = { '*': function () { return []; }, array: rn, boolean: function (t) { var e = t.value, r = t.key, n = Dr(e); return 'boolean' !== n ? [new xt(r, e, 'boolean expected, ' + n + ' found')] : []; }, number: nn, color: function (t) { var e = t.key, r = t.value, n = Dr(r); return 'string' !== n ? [new xt(e, r, 'color expected, ' + n + ' found')] : null === Nt(r) ? [new xt(e, r, 'color expected, "' + r + '" found')] : []; }, constants: bt, enum: sn, filter: gn, function: an, layer: An, object: en, source: In, light: Mn, terrain: zn, string: kn, formatted: function (t) { return 0 === kn(t).length ? [] : on(t); }, resolvedImage: function (t) { return 0 === kn(t).length ? [] : on(t); }, padding: function (t) { var e = t.key, r = t.value; if ('array' === Dr(r)) { if (r.length < 1 || r.length > 4) return [ new xt( e, r, 'padding requires 1 to 4 values; ' + r.length + ' values found', ), ]; for (var n = { type: 'number' }, i = [], a = 0; a < r.length; a++) i = i.concat( Bn({ key: e + '[' + a + ']', value: r[a], valueSpec: n }), ); return i; } return nn({ key: e, value: r, valueSpec: {} }); }, }; function Bn(t) { var e = t.value, r = t.valueSpec, n = t.styleSpec; return r.expression && jr(_t(e)) ? an(t) : r.expression && Xr(At(e)) ? on(t) : r.type && Pn[r.type] ? Pn[r.type](t) : en(wt({}, t, { valueSpec: r.type ? n[r.type] : r })); } function Cn(t) { var e = t.value, r = t.key, n = kn(t); return ( n.length || (-1 === e.indexOf('{fontstack}') && n.push( new xt(r, e, '"glyphs" url must include a "{fontstack}" token'), ), -1 === e.indexOf('{range}') && n.push( new xt(r, e, '"glyphs" url must include a "{range}" token'), )), n ); } function En(t, e) { void 0 === e && (e = gt); var r = []; return ( (r = r.concat( Bn({ key: '', value: t, valueSpec: e.$root, styleSpec: e, style: t, objectElementValidators: { glyphs: Cn, '*': function () { return []; }, }, }), )), t.constants && (r = r.concat( bt({ key: 'constants', value: t.constants, style: t, styleSpec: e, }), )), Vn(r) ); } function Vn(t) { return [].concat(t).sort(function (t, e) { return t.line - e.line; }); } function Tn(t) { return function () { for (var e = [], r = arguments.length; r--; ) e[r] = arguments[r]; return Vn(t.apply(this, e)); }; } (En.source = Tn(In)), (En.light = Tn(Mn)), (En.terrain = Tn(zn)), (En.layer = Tn(An)), (En.filter = Tn(gn)), (En.paintProperty = Tn(wn)), (En.layoutProperty = Tn(_n)); var Fn = En, On = Fn.light, Ln = Fn.paintProperty, Dn = Fn.layoutProperty; function jn(t, e) { var r = !1; if (e && e.length) for (var n = 0, i = e; n < i.length; n += 1) t.fire(new mt(new Error(i[n].message))), (r = !0); return r; } var Rn = function (t, e, r) { var n = (this.cells = []); if (t instanceof ArrayBuffer) { this.arrayBuffer = t; var i = new Int32Array(this.arrayBuffer); (t = i[0]), (this.d = (e = i[1]) + 2 * (r = i[2])); for (var a = 0; a < this.d * this.d; a++) { var o = i[3 + a], s = i[3 + a + 1]; n.push(o === s ? null : i.subarray(o, s)); } var u = i[3 + n.length + 1]; (this.keys = i.subarray(i[3 + n.length], u)), (this.bboxes = i.subarray(u)), (this.insert = this._insertReadonly); } else { this.d = e + 2 * r; for (var l = 0; l < this.d * this.d; l++) n.push([]); (this.keys = []), (this.bboxes = []); } (this.n = e), (this.extent = t), (this.padding = r), (this.scale = e / t), (this.uid = 0); var p = (r / e) * t; (this.min = -p), (this.max = t + p); }; (Rn.prototype.insert = function (t, e, r, n, i) { this._forEachCell( e, r, n, i, this._insertCell, this.uid++, void 0, void 0, ), this.keys.push(t), this.bboxes.push(e), this.bboxes.push(r), this.bboxes.push(n), this.bboxes.push(i); }), (Rn.prototype._insertReadonly = function () { throw new Error( 'Cannot insert into a GridIndex created from an ArrayBuffer.', ); }), (Rn.prototype._insertCell = function (t, e, r, n, i, a) { this.cells[i].push(a); }), (Rn.prototype.query = function (t, e, r, n, i) { var a = this.min, o = this.max; if (t <= a && e <= a && o <= r && o <= n && !i) return Array.prototype.slice.call(this.keys); var s = []; return this._forEachCell(t, e, r, n, this._queryCell, s, {}, i), s; }), (Rn.prototype._queryCell = function (t, e, r, n, i, a, o, s) { var u = this.cells[i]; if (null !== u) for (var l = this.keys, p = this.bboxes, c = 0; c < u.length; c++) { var h = u[c]; if (void 0 === o[h]) { var f = 4 * h; ( s ? s(p[f + 0], p[f + 1], p[f + 2], p[f + 3]) : t <= p[f + 2] && e <= p[f + 3] && r >= p[f + 0] && n >= p[f + 1] ) ? ((o[h] = !0), a.push(l[h])) : (o[h] = !1); } } }), (Rn.prototype._forEachCell = function (t, e, r, n, i, a, o, s) { for ( var u = this._convertToCellCoord(t), l = this._convertToCellCoord(e), p = this._convertToCellCoord(r), c = this._convertToCellCoord(n), h = u; h <= p; h++ ) for (var f = l; f <= c; f++) { var y = this.d * f + h; if ( (!s || s( this._convertFromCellCoord(h), this._convertFromCellCoord(f), this._convertFromCellCoord(h + 1), this._convertFromCellCoord(f + 1), )) && i.call(this, t, e, r, n, y, a, o, s) ) return; } }), (Rn.prototype._convertFromCellCoord = function (t) { return (t - this.padding) / this.scale; }), (Rn.prototype._convertToCellCoord = function (t) { return Math.max( 0, Math.min(this.d - 1, Math.floor(t * this.scale) + this.padding), ); }), (Rn.prototype.toArrayBuffer = function () { if (this.arrayBuffer) return this.arrayBuffer; for ( var t = this.cells, e = 3 + this.cells.length + 1 + 1, r = 0, n = 0; n < this.cells.length; n++ ) r += this.cells[n].length; var i = new Int32Array(e + r + this.keys.length + this.bboxes.length); (i[0] = this.extent), (i[1] = this.n), (i[2] = this.padding); for (var a = e, o = 0; o < t.length; o++) { var s = t[o]; (i[3 + o] = a), i.set(s, a), (a += s.length); } return ( (i[3 + t.length] = a), i.set(this.keys, a), (i[3 + t.length + 1] = a += this.keys.length), i.set(this.bboxes, a), (a += this.bboxes.length), i.buffer ); }), (Rn.serialize = function (t, e) { var r = t.toArrayBuffer(); return e && e.push(r), { buffer: r }; }), (Rn.deserialize = function (t) { return new Rn(t.buffer); }); var Un = {}; function qn(t, e, r) { if ((void 0 === r && (r = {}), Un[t])) throw new Error(t + ' is already registered.'); Object.defineProperty(e, '_classRegistryKey', { value: t, writeable: !1, }), (Un[t] = { klass: e, omit: r.omit || [], shallow: r.shallow || [] }); } for (var Nn in (qn('Object', Object), qn('TransferableGridIndex', Rn), qn('Color', Yt), qn('Error', Error), qn('AJAXError', it), qn('ResolvedImage', te), qn('StylePropertyFunction', Qr), qn('StyleExpression', Jr, { omit: ['_evaluator'] }), qn('ZoomDependentExpression', Wr), qn('ZoomConstantExpression', Hr), qn('CompoundExpression', fe, { omit: ['_evaluate'] }), zr)) zr[Nn]._classRegistryKey || qn('Expression_' + Nn, zr[Nn]); function Zn(t) { return ( t && 'undefined' != typeof ArrayBuffer && (t instanceof ArrayBuffer || (t.constructor && 'ArrayBuffer' === t.constructor.name)) ); } function Kn(t, e) { if ( null == t || 'boolean' == typeof t || 'number' == typeof t || 'string' == typeof t || t instanceof Boolean || t instanceof Number || t instanceof String || t instanceof Date || t instanceof RegExp || t instanceof Blob ) return t; if (Zn(t)) return e && e.push(t), t; if (_(t)) return e && e.push(t), t; if (ArrayBuffer.isView(t)) { var r = t; return e && e.push(r.buffer), r; } if (t instanceof ImageData) return e && e.push(t.data.buffer), t; if (Array.isArray(t)) { for (var n = [], i = 0, a = t; i < a.length; i += 1) n.push(Kn(a[i], e)); return n; } if ('object' == typeof t) { var o = t.constructor, s = o._classRegistryKey; if (!s) throw new Error("can't serialize object of unregistered class"); if (!Un[s]) throw new Error(s + ' is not registered.'); var u = o.serialize ? o.serialize(t, e) : {}; if (o.serialize) { if (e && u === e[e.length - 1]) throw new Error( "statically serialized object won't survive transfer of $name property", ); } else { for (var l in t) if (t.hasOwnProperty(l) && !(Un[s].omit.indexOf(l) >= 0)) { var p = t[l]; u[l] = Un[s].shallow.indexOf(l) >= 0 ? p : Kn(p, e); } t instanceof Error && (u.message = t.message); } if (u.$name) throw new Error( '$name property is reserved for worker serialization logic.', ); return 'Object' !== s && (u.$name = s), u; } throw new Error("can't serialize object of type " + typeof t); } function Gn(t) { if ( null == t || 'boolean' == typeof t || 'number' == typeof t || 'string' == typeof t || t instanceof Boolean || t instanceof Number || t instanceof String || t instanceof Date || t instanceof RegExp || t instanceof Blob || Zn(t) || _(t) || ArrayBuffer.isView(t) || t instanceof ImageData ) return t; if (Array.isArray(t)) return t.map(Gn); if ('object' == typeof t) { var e = t.$name || 'Object'; if (!Un[e]) throw new Error("can't deserialize unregistered class " + e); var r = Un[e].klass; if (!r) throw new Error("can't deserialize unregistered class " + e); if (r.deserialize) return r.deserialize(t); for ( var n = Object.create(r.prototype), i = 0, a = Object.keys(t); i < a.length; i += 1 ) { var o = a[i]; if ('$name' !== o) { var s = t[o]; n[o] = Un[e].shallow.indexOf(o) >= 0 ? s : Gn(s); } } return n; } throw new Error("can't deserialize object of type " + typeof t); } var Jn = function () { this.first = !0; }; Jn.prototype.update = function (t, e) { var r = Math.floor(t); return this.first ? ((this.first = !1), (this.lastIntegerZoom = r), (this.lastIntegerZoomTime = 0), (this.lastZoom = t), (this.lastFloorZoom = r), !0) : (this.lastFloorZoom > r ? ((this.lastIntegerZoom = r + 1), (this.lastIntegerZoomTime = e)) : this.lastFloorZoom < r && ((this.lastIntegerZoom = r), (this.lastIntegerZoomTime = e)), t !== this.lastZoom && ((this.lastZoom = t), (this.lastFloorZoom = r), !0)); }; var Xn = { 'Latin-1 Supplement': function (t) { return t >= 128 && t <= 255; }, Arabic: function (t) { return t >= 1536 && t <= 1791; }, 'Arabic Supplement': function (t) { return t >= 1872 && t <= 1919; }, 'Arabic Extended-A': function (t) { return t >= 2208 && t <= 2303; }, 'Hangul Jamo': function (t) { return t >= 4352 && t <= 4607; }, 'Unified Canadian Aboriginal Syllabics': function (t) { return t >= 5120 && t <= 5759; }, Khmer: function (t) { return t >= 6016 && t <= 6143; }, 'Unified Canadian Aboriginal Syllabics Extended': function (t) { return t >= 6320 && t <= 6399; }, 'General Punctuation': function (t) { return t >= 8192 && t <= 8303; }, 'Letterlike Symbols': function (t) { return t >= 8448 && t <= 8527; }, 'Number Forms': function (t) { return t >= 8528 && t <= 8591; }, 'Miscellaneous Technical': function (t) { return t >= 8960 && t <= 9215; }, 'Control Pictures': function (t) { return t >= 9216 && t <= 9279; }, 'Optical Character Recognition': function (t) { return t >= 9280 && t <= 9311; }, 'Enclosed Alphanumerics': function (t) { return t >= 9312 && t <= 9471; }, 'Geometric Shapes': function (t) { return t >= 9632 && t <= 9727; }, 'Miscellaneous Symbols': function (t) { return t >= 9728 && t <= 9983; }, 'Miscellaneous Symbols and Arrows': function (t) { return t >= 11008 && t <= 11263; }, 'CJK Radicals Supplement': function (t) { return t >= 11904 && t <= 12031; }, 'Kangxi Radicals': function (t) { return t >= 12032 && t <= 12255; }, 'Ideographic Description Characters': function (t) { return t >= 12272 && t <= 12287; }, 'CJK Symbols and Punctuation': function (t) { return t >= 12288 && t <= 12351; }, Hiragana: function (t) { return t >= 12352 && t <= 12447; }, Katakana: function (t) { return t >= 12448 && t <= 12543; }, Bopomofo: function (t) { return t >= 12544 && t <= 12591; }, 'Hangul Compatibility Jamo': function (t) { return t >= 12592 && t <= 12687; }, Kanbun: function (t) { return t >= 12688 && t <= 12703; }, 'Bopomofo Extended': function (t) { return t >= 12704 && t <= 12735; }, 'CJK Strokes': function (t) { return t >= 12736 && t <= 12783; }, 'Katakana Phonetic Extensions': function (t) { return t >= 12784 && t <= 12799; }, 'Enclosed CJK Letters and Months': function (t) { return t >= 12800 && t <= 13055; }, 'CJK Compatibility': function (t) { return t >= 13056 && t <= 13311; }, 'CJK Unified Ideographs Extension A': function (t) { return t >= 13312 && t <= 19903; }, 'Yijing Hexagram Symbols': function (t) { return t >= 19904 && t <= 19967; }, 'CJK Unified Ideographs': function (t) { return t >= 19968 && t <= 40959; }, 'Yi Syllables': function (t) { return t >= 40960 && t <= 42127; }, 'Yi Radicals': function (t) { return t >= 42128 && t <= 42191; }, 'Hangul Jamo Extended-A': function (t) { return t >= 43360 && t <= 43391; }, 'Hangul Syllables': function (t) { return t >= 44032 && t <= 55215; }, 'Hangul Jamo Extended-B': function (t) { return t >= 55216 && t <= 55295; }, 'Private Use Area': function (t) { return t >= 57344 && t <= 63743; }, 'CJK Compatibility Ideographs': function (t) { return t >= 63744 && t <= 64255; }, 'Arabic Presentation Forms-A': function (t) { return t >= 64336 && t <= 65023; }, 'Vertical Forms': function (t) { return t >= 65040 && t <= 65055; }, 'CJK Compatibility Forms': function (t) { return t >= 65072 && t <= 65103; }, 'Small Form Variants': function (t) { return t >= 65104 && t <= 65135; }, 'Arabic Presentation Forms-B': function (t) { return t >= 65136 && t <= 65279; }, 'Halfwidth and Fullwidth Forms': function (t) { return t >= 65280 && t <= 65519; }, }; function Yn(t) { for (var e = 0, r = t; e < r.length; e += 1) if (Hn(r[e].charCodeAt(0))) return !0; return !1; } function Hn(t) { return !( 746 !== t && 747 !== t && (t < 4352 || !( Xn['Bopomofo Extended'](t) || Xn.Bopomofo(t) || (Xn['CJK Compatibility Forms'](t) && !(t >= 65097 && t <= 65103)) || Xn['CJK Compatibility Ideographs'](t) || Xn['CJK Compatibility'](t) || Xn['CJK Radicals Supplement'](t) || Xn['CJK Strokes'](t) || !( !Xn['CJK Symbols and Punctuation'](t) || (t >= 12296 && t <= 12305) || (t >= 12308 && t <= 12319) || 12336 === t ) || Xn['CJK Unified Ideographs Extension A'](t) || Xn['CJK Unified Ideographs'](t) || Xn['Enclosed CJK Letters and Months'](t) || Xn['Hangul Compatibility Jamo'](t) || Xn['Hangul Jamo Extended-A'](t) || Xn['Hangul Jamo Extended-B'](t) || Xn['Hangul Jamo'](t) || Xn['Hangul Syllables'](t) || Xn.Hiragana(t) || Xn['Ideographic Description Characters'](t) || Xn.Kanbun(t) || Xn['Kangxi Radicals'](t) || Xn['Katakana Phonetic Extensions'](t) || (Xn.Katakana(t) && 12540 !== t) || !( !Xn['Halfwidth and Fullwidth Forms'](t) || 65288 === t || 65289 === t || 65293 === t || (t >= 65306 && t <= 65310) || 65339 === t || 65341 === t || 65343 === t || (t >= 65371 && t <= 65503) || 65507 === t || (t >= 65512 && t <= 65519) ) || !( !Xn['Small Form Variants'](t) || (t >= 65112 && t <= 65118) || (t >= 65123 && t <= 65126) ) || Xn['Unified Canadian Aboriginal Syllabics'](t) || Xn['Unified Canadian Aboriginal Syllabics Extended'](t) || Xn['Vertical Forms'](t) || Xn['Yijing Hexagram Symbols'](t) || Xn['Yi Syllables'](t) || Xn['Yi Radicals'](t) )) ); } function Wn(t) { return !( Hn(t) || (function (t) { return !!( (Xn['Latin-1 Supplement'](t) && (167 === t || 169 === t || 174 === t || 177 === t || 188 === t || 189 === t || 190 === t || 215 === t || 247 === t)) || (Xn['General Punctuation'](t) && (8214 === t || 8224 === t || 8225 === t || 8240 === t || 8241 === t || 8251 === t || 8252 === t || 8258 === t || 8263 === t || 8264 === t || 8265 === t || 8273 === t)) || Xn['Letterlike Symbols'](t) || Xn['Number Forms'](t) || (Xn['Miscellaneous Technical'](t) && ((t >= 8960 && t <= 8967) || (t >= 8972 && t <= 8991) || (t >= 8996 && t <= 9e3) || 9003 === t || (t >= 9085 && t <= 9114) || (t >= 9150 && t <= 9165) || 9167 === t || (t >= 9169 && t <= 9179) || (t >= 9186 && t <= 9215))) || (Xn['Control Pictures'](t) && 9251 !== t) || Xn['Optical Character Recognition'](t) || Xn['Enclosed Alphanumerics'](t) || Xn['Geometric Shapes'](t) || (Xn['Miscellaneous Symbols'](t) && !(t >= 9754 && t <= 9759)) || (Xn['Miscellaneous Symbols and Arrows'](t) && ((t >= 11026 && t <= 11055) || (t >= 11088 && t <= 11097) || (t >= 11192 && t <= 11243))) || Xn['CJK Symbols and Punctuation'](t) || Xn.Katakana(t) || Xn['Private Use Area'](t) || Xn['CJK Compatibility Forms'](t) || Xn['Small Form Variants'](t) || Xn['Halfwidth and Fullwidth Forms'](t) || 8734 === t || 8756 === t || 8757 === t || (t >= 9984 && t <= 10087) || (t >= 10102 && t <= 10131) || 65532 === t || 65533 === t ); })(t) ); } function $n(t) { return ( (t >= 1424 && t <= 2303) || Xn['Arabic Presentation Forms-A'](t) || Xn['Arabic Presentation Forms-B'](t) ); } function Qn(t, e) { return !( (!e && $n(t)) || (t >= 2304 && t <= 3583) || (t >= 3840 && t <= 4255) || Xn.Khmer(t) ); } function ti(t) { for (var e = 0, r = t; e < r.length; e += 1) if ($n(r[e].charCodeAt(0))) return !0; return !1; } var ei = 'deferred', ri = 'loading', ni = 'loaded', ii = null, ai = 'unavailable', oi = null, si = function (t) { t && 'string' == typeof t && t.indexOf('NetworkError') > -1 && (ai = 'error'), ii && ii(t); }; function ui() { li.fire(new dt('pluginStateChange', { pluginStatus: ai, pluginURL: oi })); } var li = new vt(), pi = function () { return ai; }, ci = function () { if (ai !== ei || !oi) throw new Error( 'rtl-text-plugin cannot be downloaded unless a pluginURL is specified', ); (ai = ri), ui(), oi && pt({ url: oi }, function (t) { t ? si(t) : ((ai = ni), ui()); }); }, hi = { applyArabicShaping: null, processBidirectionalText: null, processStyledBidirectionalText: null, isLoaded: function () { return ai === ni || null != hi.applyArabicShaping; }, isLoading: function () { return ai === ri; }, setState: function (t) { if (!g()) throw new Error( 'Cannot set the state of the rtl-text-plugin when not in the web-worker context', ); (ai = t.pluginStatus), (oi = t.pluginURL); }, isParsed: function () { if (!g()) throw new Error( 'rtl-text-plugin is only parsed on the worker-threads', ); return ( null != hi.applyArabicShaping && null != hi.processBidirectionalText && null != hi.processStyledBidirectionalText ); }, getPluginURL: function () { if (!g()) throw new Error( 'rtl-text-plugin url can only be queried from the worker threads', ); return oi; }, }, fi = function (t, e) { (this.zoom = t), e ? ((this.now = e.now), (this.fadeDuration = e.fadeDuration), (this.zoomHistory = e.zoomHistory), (this.transition = e.transition)) : ((this.now = 0), (this.fadeDuration = 0), (this.zoomHistory = new Jn()), (this.transition = {})); }; (fi.prototype.isSupportedScript = function (t) { return (function (t, e) { for (var r = 0, n = t; r < n.length; r += 1) if (!Qn(n[r].charCodeAt(0), e)) return !1; return !0; })(t, hi.isLoaded()); }), (fi.prototype.crossFadingFactor = function () { return 0 === this.fadeDuration ? 1 : Math.min( (this.now - this.zoomHistory.lastIntegerZoomTime) / this.fadeDuration, 1, ); }), (fi.prototype.getCrossfadeParameters = function () { var t = this.zoom, e = t - Math.floor(t), r = this.crossFadingFactor(); return t > this.zoomHistory.lastIntegerZoom ? { fromScale: 2, toScale: 1, t: e + (1 - e) * r } : { fromScale: 0.5, toScale: 1, t: 1 - (1 - r) * e }; }); var yi = function (t, e) { (this.property = t), (this.value = e), (this.expression = (function (t, e) { if (jr(t)) return new Qr(t, e); if (Xr(t)) { var r = $r(t, e); if ('error' === r.result) throw new Error( r.value .map(function (t) { return t.key + ': ' + t.message; }) .join(', '), ); return r.value; } var n = t; return ( 'color' === e.type && 'string' == typeof t ? (n = Yt.parse(t)) : 'padding' !== e.type || ('number' != typeof t && !Array.isArray(t)) || (n = Qt.parse(t)), { kind: 'constant', evaluate: function () { return n; }, } ); })(void 0 === e ? t.specification.default : e, t.specification)); }; (yi.prototype.isDataDriven = function () { return ( 'source' === this.expression.kind || 'composite' === this.expression.kind ); }), (yi.prototype.possiblyEvaluate = function (t, e, r) { return this.property.possiblyEvaluate(this, t, e, r); }); var di = function (t) { (this.property = t), (this.value = new yi(t, void 0)); }; (di.prototype.transitioned = function (t, e) { return new vi( this.property, this.value, e, s({}, t.transition, this.transition), t.now, ); }), (di.prototype.untransitioned = function () { return new vi(this.property, this.value, null, {}, 0); }); var mi = function (t) { (this._properties = t), (this._values = Object.create(t.defaultTransitionablePropertyValues)); }; (mi.prototype.getValue = function (t) { return f(this._values[t].value.value); }), (mi.prototype.setValue = function (t, e) { Object.prototype.hasOwnProperty.call(this._values, t) || (this._values[t] = new di(this._values[t].property)), (this._values[t].value = new yi( this._values[t].property, null === e ? void 0 : f(e), )); }), (mi.prototype.getTransition = function (t) { return f(this._values[t].transition); }), (mi.prototype.setTransition = function (t, e) { Object.prototype.hasOwnProperty.call(this._values, t) || (this._values[t] = new di(this._values[t].property)), (this._values[t].transition = f(e) || void 0); }), (mi.prototype.serialize = function () { for ( var t = {}, e = 0, r = Object.keys(this._values); e < r.length; e += 1 ) { var n = r[e], i = this.getValue(n); void 0 !== i && (t[n] = i); var a = this.getTransition(n); void 0 !== a && (t[n + '-transition'] = a); } return t; }), (mi.prototype.transitioned = function (t, e) { for ( var r = new gi(this._properties), n = 0, i = Object.keys(this._values); n < i.length; n += 1 ) { var a = i[n]; r._values[a] = this._values[a].transitioned(t, e._values[a]); } return r; }), (mi.prototype.untransitioned = function () { for ( var t = new gi(this._properties), e = 0, r = Object.keys(this._values); e < r.length; e += 1 ) { var n = r[e]; t._values[n] = this._values[n].untransitioned(); } return t; }); var vi = function (t, e, r, n, i) { (this.property = t), (this.value = e), (this.begin = i + n.delay || 0), (this.end = this.begin + n.duration || 0), t.specification.transition && (n.delay || n.duration) && (this.prior = r); }; vi.prototype.possiblyEvaluate = function (t, e, r) { var n = t.now || 0, i = this.value.possiblyEvaluate(t, e, r), a = this.prior; if (a) { if (n > this.end) return (this.prior = null), i; if (this.value.isDataDriven()) return (this.prior = null), i; if (n < this.begin) return a.possiblyEvaluate(t, e, r); var o = (n - this.begin) / (this.end - this.begin); return this.property.interpolate( a.possiblyEvaluate(t, e, r), i, (function (t) { if (t <= 0) return 0; if (t >= 1) return 1; var e = t * t, r = e * t; return 4 * (t < 0.5 ? r : 3 * (t - e) + r - 0.75); })(o), ); } return i; }; var gi = function (t) { (this._properties = t), (this._values = Object.create(t.defaultTransitioningPropertyValues)); }; (gi.prototype.possiblyEvaluate = function (t, e, r) { for ( var n = new wi(this._properties), i = 0, a = Object.keys(this._values); i < a.length; i += 1 ) { var o = a[i]; n._values[o] = this._values[o].possiblyEvaluate(t, e, r); } return n; }), (gi.prototype.hasTransition = function () { for (var t = 0, e = Object.keys(this._values); t < e.length; t += 1) if (this._values[e[t]].prior) return !0; return !1; }); var xi = function (t) { (this._properties = t), (this._values = Object.create(t.defaultPropertyValues)); }; (xi.prototype.getValue = function (t) { return f(this._values[t].value); }), (xi.prototype.setValue = function (t, e) { this._values[t] = new yi( this._values[t].property, null === e ? void 0 : f(e), ); }), (xi.prototype.serialize = function () { for ( var t = {}, e = 0, r = Object.keys(this._values); e < r.length; e += 1 ) { var n = r[e], i = this.getValue(n); void 0 !== i && (t[n] = i); } return t; }), (xi.prototype.possiblyEvaluate = function (t, e, r) { for ( var n = new wi(this._properties), i = 0, a = Object.keys(this._values); i < a.length; i += 1 ) { var o = a[i]; n._values[o] = this._values[o].possiblyEvaluate(t, e, r); } return n; }); var bi = function (t, e, r) { (this.property = t), (this.value = e), (this.parameters = r); }; (bi.prototype.isConstant = function () { return 'constant' === this.value.kind; }), (bi.prototype.constantOr = function (t) { return 'constant' === this.value.kind ? this.value.value : t; }), (bi.prototype.evaluate = function (t, e, r, n) { return this.property.evaluate(this.value, this.parameters, t, e, r, n); }); var wi = function (t) { (this._properties = t), (this._values = Object.create(t.defaultPossiblyEvaluatedValues)); }; wi.prototype.get = function (t) { return this._values[t]; }; var _i = function (t) { this.specification = t; }; (_i.prototype.possiblyEvaluate = function (t, e) { if (t.isDataDriven()) throw new Error('Value should not be data driven'); return t.expression.evaluate(e); }), (_i.prototype.interpolate = function (t, e, r) { var n = Ue[this.specification.type]; return n ? n(t, e, r) : t; }); var Ai = function (t, e) { (this.specification = t), (this.overrides = e); }; (Ai.prototype.possiblyEvaluate = function (t, e, r, n) { return new bi( this, 'constant' === t.expression.kind || 'camera' === t.expression.kind ? { kind: 'constant', value: t.expression.evaluate(e, null, {}, r, n), } : t.expression, e, ); }), (Ai.prototype.interpolate = function (t, e, r) { if ('constant' !== t.value.kind || 'constant' !== e.value.kind) return t; if (void 0 === t.value.value || void 0 === e.value.value) return new bi( this, { kind: 'constant', value: void 0 }, t.parameters, ); var n = Ue[this.specification.type]; return n ? new bi( this, { kind: 'constant', value: n(t.value.value, e.value.value, r) }, t.parameters, ) : t; }), (Ai.prototype.evaluate = function (t, e, r, n, i, a) { return 'constant' === t.kind ? t.value : t.evaluate(e, r, n, i, a); }); var ki = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.possiblyEvaluate = function (t, e, r, n) { if (void 0 === t.value) return new bi(this, { kind: 'constant', value: void 0 }, e); if ('constant' === t.expression.kind) { var i = t.expression.evaluate(e, null, {}, r, n), a = 'resolvedImage' === t.property.specification.type && 'string' != typeof i ? i.name : i, o = this._calculate(a, a, a, e); return new bi(this, { kind: 'constant', value: o }, e); } if ('camera' === t.expression.kind) { var s = this._calculate( t.expression.evaluate({ zoom: e.zoom - 1 }), t.expression.evaluate({ zoom: e.zoom }), t.expression.evaluate({ zoom: e.zoom + 1 }), e, ); return new bi(this, { kind: 'constant', value: s }, e); } return new bi(this, t.expression, e); }), (e.prototype.evaluate = function (t, e, r, n, i, a) { if ('source' === t.kind) { var o = t.evaluate(e, r, n, i, a); return this._calculate(o, o, o, e); } return 'composite' === t.kind ? this._calculate( t.evaluate({ zoom: Math.floor(e.zoom) - 1 }, r, n), t.evaluate({ zoom: Math.floor(e.zoom) }, r, n), t.evaluate({ zoom: Math.floor(e.zoom) + 1 }, r, n), e, ) : t.value; }), (e.prototype._calculate = function (t, e, r, n) { return n.zoom > n.zoomHistory.lastIntegerZoom ? { from: t, to: e } : { from: r, to: e }; }), (e.prototype.interpolate = function (t) { return t; }), e ); })(Ai), Si = function (t) { this.specification = t; }; (Si.prototype.possiblyEvaluate = function (t, e, r, n) { if (void 0 !== t.value) { if ('constant' === t.expression.kind) { var i = t.expression.evaluate(e, null, {}, r, n); return this._calculate(i, i, i, e); } return this._calculate( t.expression.evaluate(new fi(Math.floor(e.zoom - 1), e)), t.expression.evaluate(new fi(Math.floor(e.zoom), e)), t.expression.evaluate(new fi(Math.floor(e.zoom + 1), e)), e, ); } }), (Si.prototype._calculate = function (t, e, r, n) { return n.zoom > n.zoomHistory.lastIntegerZoom ? { from: t, to: e } : { from: r, to: e }; }), (Si.prototype.interpolate = function (t) { return t; }); var Ii = function (t) { this.specification = t; }; (Ii.prototype.possiblyEvaluate = function (t, e, r, n) { return !!t.expression.evaluate(e, null, {}, r, n); }), (Ii.prototype.interpolate = function () { return !1; }); var Mi = function (t) { for (var e in ((this.properties = t), (this.defaultPropertyValues = {}), (this.defaultTransitionablePropertyValues = {}), (this.defaultTransitioningPropertyValues = {}), (this.defaultPossiblyEvaluatedValues = {}), (this.overridableProperties = []), t)) { var r = t[e]; r.specification.overridable && this.overridableProperties.push(e); var n = (this.defaultPropertyValues[e] = new yi(r, void 0)), i = (this.defaultTransitionablePropertyValues[e] = new di(r)); (this.defaultTransitioningPropertyValues[e] = i.untransitioned()), (this.defaultPossiblyEvaluatedValues[e] = n.possiblyEvaluate({})); } }; qn('DataDrivenProperty', Ai), qn('DataConstantProperty', _i), qn('CrossFadedDataDrivenProperty', ki), qn('CrossFadedProperty', Si), qn('ColorRampProperty', Ii); var zi = '-transition', Pi = (function (t) { function e(e, r) { if ( (t.call(this), (this.id = e.id), (this.type = e.type), (this._featureFilter = { filter: function () { return !0; }, needGeometry: !1, }), 'custom' !== e.type && ((this.metadata = e.metadata), (this.minzoom = e.minzoom), (this.maxzoom = e.maxzoom), 'background' !== e.type && ((this.source = e.source), (this.sourceLayer = e['source-layer']), (this.filter = e.filter)), r.layout && (this._unevaluatedLayout = new xi(r.layout)), r.paint)) ) { for (var n in ((this._transitionablePaint = new mi(r.paint)), e.paint)) this.setPaintProperty(n, e.paint[n], { validate: !1 }); for (var i in e.layout) this.setLayoutProperty(i, e.layout[i], { validate: !1 }); (this._transitioningPaint = this._transitionablePaint.untransitioned()), (this.paint = new wi(r.paint)); } } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getCrossfadeParameters = function () { return this._crossfadeParameters; }), (e.prototype.getLayoutProperty = function (t) { return 'visibility' === t ? this.visibility : this._unevaluatedLayout.getValue(t); }), (e.prototype.setLayoutProperty = function (t, e, r) { void 0 === r && (r = {}), (null != e && this._validate( Dn, 'layers.' + this.id + '.layout.' + t, t, e, r, )) || ('visibility' !== t ? this._unevaluatedLayout.setValue(t, e) : (this.visibility = e)); }), (e.prototype.getPaintProperty = function (t) { return p(t, zi) ? this._transitionablePaint.getTransition(t.slice(0, -zi.length)) : this._transitionablePaint.getValue(t); }), (e.prototype.setPaintProperty = function (t, e, r) { if ( (void 0 === r && (r = {}), null != e && this._validate( Ln, 'layers.' + this.id + '.paint.' + t, t, e, r, )) ) return !1; if (p(t, zi)) return ( this._transitionablePaint.setTransition( t.slice(0, -zi.length), e || void 0, ), !1 ); var n = this._transitionablePaint._values[t], i = 'cross-faded-data-driven' === n.property.specification['property-type'], a = n.value.isDataDriven(), o = n.value; this._transitionablePaint.setValue(t, e), this._handleSpecialPaintPropertyUpdate(t); var s = this._transitionablePaint._values[t].value; return ( s.isDataDriven() || a || i || this._handleOverridablePaintPropertyUpdate(t, o, s) ); }), (e.prototype._handleSpecialPaintPropertyUpdate = function (t) {}), (e.prototype._handleOverridablePaintPropertyUpdate = function ( t, e, r, ) { return !1; }), (e.prototype.isHidden = function (t) { return ( !!(this.minzoom && t < this.minzoom) || !!(this.maxzoom && t >= this.maxzoom) || 'none' === this.visibility ); }), (e.prototype.updateTransitions = function (t) { this._transitioningPaint = this._transitionablePaint.transitioned( t, this._transitioningPaint, ); }), (e.prototype.hasTransition = function () { return this._transitioningPaint.hasTransition(); }), (e.prototype.recalculate = function (t, e) { t.getCrossfadeParameters && (this._crossfadeParameters = t.getCrossfadeParameters()), this._unevaluatedLayout && (this.layout = this._unevaluatedLayout.possiblyEvaluate( t, void 0, e, )), (this.paint = this._transitioningPaint.possiblyEvaluate( t, void 0, e, )); }), (e.prototype.serialize = function () { var t = { id: this.id, type: this.type, 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(), }; return ( this.visibility && ((t.layout = t.layout || {}), (t.layout.visibility = this.visibility)), h(t, function (t, e) { return !( void 0 === t || ('layout' === e && !Object.keys(t).length) || ('paint' === e && !Object.keys(t).length) ); }) ); }), (e.prototype._validate = function (t, e, r, n, i) { return ( void 0 === i && (i = {}), (!i || !1 !== i.validate) && jn( this, t.call(Fn, { key: e, layerType: this.type, objectKey: r, value: n, styleSpec: gt, style: { glyphs: !0, sprite: !0 }, }), ) ); }), (e.prototype.is3D = function () { return !1; }), (e.prototype.isTileClipped = function () { return !1; }), (e.prototype.hasOffscreenPass = function () { return !1; }), (e.prototype.resize = function () {}), (e.prototype.isStateDependent = function () { for (var t in this.paint._values) { var e = this.paint.get(t); if ( e instanceof bi && Fr(e.property.specification) && ('source' === e.value.kind || 'composite' === e.value.kind) && e.value.isStateDependent ) return !0; } return !1; }), e ); })(vt), Bi = { Int8: Int8Array, Uint8: Uint8Array, Int16: Int16Array, Uint16: Uint16Array, Int32: Int32Array, Uint32: Uint32Array, Float32: Float32Array, }, Ci = function (t, e) { (this._structArray = t), (this._pos1 = e * this.size), (this._pos2 = this._pos1 / 2), (this._pos4 = this._pos1 / 4), (this._pos8 = this._pos1 / 8); }, Ei = function () { (this.isTransferred = !1), (this.capacity = -1), this.resize(0); }; function Vi(t, e) { void 0 === e && (e = 1); var r = 0, n = 0; return { members: t.map(function (t) { var i = Bi[t.type].BYTES_PER_ELEMENT, a = (r = Ti(r, Math.max(e, i))), o = t.components || 1; return ( (n = Math.max(n, i)), (r += i * o), { name: t.name, type: t.type, components: o, offset: a } ); }), size: Ti(r, Math.max(n, e)), alignment: e, }; } function Ti(t, e) { return Math.ceil(t / e) * e; } (Ei.serialize = function (t, e) { return ( t._trim(), e && ((t.isTransferred = !0), e.push(t.arrayBuffer)), { length: t.length, arrayBuffer: t.arrayBuffer } ); }), (Ei.deserialize = function (t) { var e = Object.create(this.prototype); return ( (e.arrayBuffer = t.arrayBuffer), (e.length = t.length), (e.capacity = t.arrayBuffer.byteLength / e.bytesPerElement), e._refreshViews(), e ); }), (Ei.prototype._trim = function () { this.length !== this.capacity && ((this.capacity = this.length), (this.arrayBuffer = this.arrayBuffer.slice( 0, this.length * this.bytesPerElement, )), this._refreshViews()); }), (Ei.prototype.clear = function () { this.length = 0; }), (Ei.prototype.resize = function (t) { this.reserve(t), (this.length = t); }), (Ei.prototype.reserve = function (t) { if (t > this.capacity) { (this.capacity = Math.max(t, Math.floor(5 * this.capacity), 128)), (this.arrayBuffer = new ArrayBuffer( this.capacity * this.bytesPerElement, )); var e = this.uint8; this._refreshViews(), e && this.uint8.set(e); } }), (Ei.prototype._refreshViews = function () { throw new Error( '_refreshViews() must be implemented by each concrete StructArray layout', ); }); var Fi = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.int16 = new Int16Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e) { var r = this.length; return this.resize(r + 1), this.emplace(r, t, e); }), (e.prototype.emplace = function (t, e, r) { var n = 2 * t; return (this.int16[n + 0] = e), (this.int16[n + 1] = r), t; }), e ); })(Ei); (Fi.prototype.bytesPerElement = 4), qn('StructArrayLayout2i4', Fi); var Oi = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.int16 = new Int16Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e, r, n) { var i = this.length; return this.resize(i + 1), this.emplace(i, t, e, r, n); }), (e.prototype.emplace = function (t, e, r, n, i) { var a = 4 * t; return ( (this.int16[a + 0] = e), (this.int16[a + 1] = r), (this.int16[a + 2] = n), (this.int16[a + 3] = i), t ); }), e ); })(Ei); (Oi.prototype.bytesPerElement = 8), qn('StructArrayLayout4i8', Oi); var Li = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.int16 = new Int16Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e, r, n, i, a) { var o = this.length; return this.resize(o + 1), this.emplace(o, t, e, r, n, i, a); }), (e.prototype.emplace = function (t, e, r, n, i, a, o) { var s = 6 * t; return ( (this.int16[s + 0] = e), (this.int16[s + 1] = r), (this.int16[s + 2] = n), (this.int16[s + 3] = i), (this.int16[s + 4] = a), (this.int16[s + 5] = o), t ); }), e ); })(Ei); (Li.prototype.bytesPerElement = 12), qn('StructArrayLayout2i4i12', Li); var Di = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.int16 = new Int16Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e, r, n, i, a) { var o = this.length; return this.resize(o + 1), this.emplace(o, t, e, r, n, i, a); }), (e.prototype.emplace = function (t, e, r, n, i, a, o) { var s = 4 * t, u = 8 * t; return ( (this.int16[s + 0] = e), (this.int16[s + 1] = r), (this.uint8[u + 4] = n), (this.uint8[u + 5] = i), (this.uint8[u + 6] = a), (this.uint8[u + 7] = o), t ); }), e ); })(Ei); (Di.prototype.bytesPerElement = 8), qn('StructArrayLayout2i4ub8', Di); var ji = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.float32 = new Float32Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e) { var r = this.length; return this.resize(r + 1), this.emplace(r, t, e); }), (e.prototype.emplace = function (t, e, r) { var n = 2 * t; return (this.float32[n + 0] = e), (this.float32[n + 1] = r), t; }), e ); })(Ei); (ji.prototype.bytesPerElement = 8), qn('StructArrayLayout2f8', ji); var Ri = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.uint16 = new Uint16Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e, r, n, i, a, o, s, u, l) { var p = this.length; return ( this.resize(p + 1), this.emplace(p, t, e, r, n, i, a, o, s, u, l) ); }), (e.prototype.emplace = function (t, e, r, n, i, a, o, s, u, l, p) { var c = 10 * t; return ( (this.uint16[c + 0] = e), (this.uint16[c + 1] = r), (this.uint16[c + 2] = n), (this.uint16[c + 3] = i), (this.uint16[c + 4] = a), (this.uint16[c + 5] = o), (this.uint16[c + 6] = s), (this.uint16[c + 7] = u), (this.uint16[c + 8] = l), (this.uint16[c + 9] = p), t ); }), e ); })(Ei); (Ri.prototype.bytesPerElement = 20), qn('StructArrayLayout10ui20', Ri); var Ui = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.int16 = new Int16Array(this.arrayBuffer)), (this.uint16 = new Uint16Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function ( t, e, r, n, i, a, o, s, u, l, p, c, ) { var h = this.length; return ( this.resize(h + 1), this.emplace(h, t, e, r, n, i, a, o, s, u, l, p, c) ); }), (e.prototype.emplace = function ( t, e, r, n, i, a, o, s, u, l, p, c, h, ) { var f = 12 * t; return ( (this.int16[f + 0] = e), (this.int16[f + 1] = r), (this.int16[f + 2] = n), (this.int16[f + 3] = i), (this.uint16[f + 4] = a), (this.uint16[f + 5] = o), (this.uint16[f + 6] = s), (this.uint16[f + 7] = u), (this.int16[f + 8] = l), (this.int16[f + 9] = p), (this.int16[f + 10] = c), (this.int16[f + 11] = h), t ); }), e ); })(Ei); (Ui.prototype.bytesPerElement = 24), qn('StructArrayLayout4i4ui4i24', Ui); var qi = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.float32 = new Float32Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e, r) { var n = this.length; return this.resize(n + 1), this.emplace(n, t, e, r); }), (e.prototype.emplace = function (t, e, r, n) { var i = 3 * t; return ( (this.float32[i + 0] = e), (this.float32[i + 1] = r), (this.float32[i + 2] = n), t ); }), e ); })(Ei); (qi.prototype.bytesPerElement = 12), qn('StructArrayLayout3f12', qi); var Ni = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.uint32 = new Uint32Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t) { var e = this.length; return this.resize(e + 1), this.emplace(e, t); }), (e.prototype.emplace = function (t, e) { return (this.uint32[1 * t + 0] = e), t; }), e ); })(Ei); (Ni.prototype.bytesPerElement = 4), qn('StructArrayLayout1ul4', Ni); var Zi = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.int16 = new Int16Array(this.arrayBuffer)), (this.uint32 = new Uint32Array(this.arrayBuffer)), (this.uint16 = new Uint16Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e, r, n, i, a, o, s, u) { var l = this.length; return this.resize(l + 1), this.emplace(l, t, e, r, n, i, a, o, s, u); }), (e.prototype.emplace = function (t, e, r, n, i, a, o, s, u, l) { var p = 10 * t, c = 5 * t; return ( (this.int16[p + 0] = e), (this.int16[p + 1] = r), (this.int16[p + 2] = n), (this.int16[p + 3] = i), (this.int16[p + 4] = a), (this.int16[p + 5] = o), (this.uint32[c + 3] = s), (this.uint16[p + 8] = u), (this.uint16[p + 9] = l), t ); }), e ); })(Ei); (Zi.prototype.bytesPerElement = 20), qn('StructArrayLayout6i1ul2ui20', Zi); var Ki = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.int16 = new Int16Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e, r, n, i, a) { var o = this.length; return this.resize(o + 1), this.emplace(o, t, e, r, n, i, a); }), (e.prototype.emplace = function (t, e, r, n, i, a, o) { var s = 6 * t; return ( (this.int16[s + 0] = e), (this.int16[s + 1] = r), (this.int16[s + 2] = n), (this.int16[s + 3] = i), (this.int16[s + 4] = a), (this.int16[s + 5] = o), t ); }), e ); })(Ei); (Ki.prototype.bytesPerElement = 12), qn('StructArrayLayout2i2i2i12', Ki); var Gi = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.float32 = new Float32Array(this.arrayBuffer)), (this.int16 = new Int16Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e, r, n, i) { var a = this.length; return this.resize(a + 1), this.emplace(a, t, e, r, n, i); }), (e.prototype.emplace = function (t, e, r, n, i, a) { var o = 4 * t, s = 8 * t; return ( (this.float32[o + 0] = e), (this.float32[o + 1] = r), (this.float32[o + 2] = n), (this.int16[s + 6] = i), (this.int16[s + 7] = a), t ); }), e ); })(Ei); (Gi.prototype.bytesPerElement = 16), qn('StructArrayLayout2f1f2i16', Gi); var Ji = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.float32 = new Float32Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e, r, n) { var i = this.length; return this.resize(i + 1), this.emplace(i, t, e, r, n); }), (e.prototype.emplace = function (t, e, r, n, i) { var a = 12 * t, o = 3 * t; return ( (this.uint8[a + 0] = e), (this.uint8[a + 1] = r), (this.float32[o + 1] = n), (this.float32[o + 2] = i), t ); }), e ); })(Ei); (Ji.prototype.bytesPerElement = 12), qn('StructArrayLayout2ub2f12', Ji); var Xi = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.uint16 = new Uint16Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e, r) { var n = this.length; return this.resize(n + 1), this.emplace(n, t, e, r); }), (e.prototype.emplace = function (t, e, r, n) { var i = 3 * t; return ( (this.uint16[i + 0] = e), (this.uint16[i + 1] = r), (this.uint16[i + 2] = n), t ); }), e ); })(Ei); (Xi.prototype.bytesPerElement = 6), qn('StructArrayLayout3ui6', Xi); var Yi = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.int16 = new Int16Array(this.arrayBuffer)), (this.uint16 = new Uint16Array(this.arrayBuffer)), (this.uint32 = new Uint32Array(this.arrayBuffer)), (this.float32 = new Float32Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function ( t, e, r, n, i, a, o, s, u, l, p, c, h, f, y, d, m, ) { var v = this.length; return ( this.resize(v + 1), this.emplace(v, t, e, r, n, i, a, o, s, u, l, p, c, h, f, y, d, m) ); }), (e.prototype.emplace = function ( t, e, r, n, i, a, o, s, u, l, p, c, h, f, y, d, m, v, ) { var g = 24 * t, x = 12 * t, b = 48 * t; return ( (this.int16[g + 0] = e), (this.int16[g + 1] = r), (this.uint16[g + 2] = n), (this.uint16[g + 3] = i), (this.uint32[x + 2] = a), (this.uint32[x + 3] = o), (this.uint32[x + 4] = s), (this.uint16[g + 10] = u), (this.uint16[g + 11] = l), (this.uint16[g + 12] = p), (this.float32[x + 7] = c), (this.float32[x + 8] = h), (this.uint8[b + 36] = f), (this.uint8[b + 37] = y), (this.uint8[b + 38] = d), (this.uint32[x + 10] = m), (this.int16[g + 22] = v), t ); }), e ); })(Ei); (Yi.prototype.bytesPerElement = 48), qn('StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48', Yi); var Hi = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.int16 = new Int16Array(this.arrayBuffer)), (this.uint16 = new Uint16Array(this.arrayBuffer)), (this.uint32 = new Uint32Array(this.arrayBuffer)), (this.float32 = new Float32Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function ( t, e, r, n, i, a, o, s, u, l, p, c, h, f, y, d, m, v, g, x, b, w, _, A, k, S, I, M, ) { var z = this.length; return ( this.resize(z + 1), this.emplace( z, t, e, r, n, i, a, o, s, u, l, p, c, h, f, y, d, m, v, g, x, b, w, _, A, k, S, I, M, ) ); }), (e.prototype.emplace = function ( t, e, r, n, i, a, o, s, u, l, p, c, h, f, y, d, m, v, g, x, b, w, _, A, k, S, I, M, z, ) { var P = 34 * t, B = 17 * t; return ( (this.int16[P + 0] = e), (this.int16[P + 1] = r), (this.int16[P + 2] = n), (this.int16[P + 3] = i), (this.int16[P + 4] = a), (this.int16[P + 5] = o), (this.int16[P + 6] = s), (this.int16[P + 7] = u), (this.uint16[P + 8] = l), (this.uint16[P + 9] = p), (this.uint16[P + 10] = c), (this.uint16[P + 11] = h), (this.uint16[P + 12] = f), (this.uint16[P + 13] = y), (this.uint16[P + 14] = d), (this.uint16[P + 15] = m), (this.uint16[P + 16] = v), (this.uint16[P + 17] = g), (this.uint16[P + 18] = x), (this.uint16[P + 19] = b), (this.uint16[P + 20] = w), (this.uint16[P + 21] = _), (this.uint16[P + 22] = A), (this.uint32[B + 12] = k), (this.float32[B + 13] = S), (this.float32[B + 14] = I), (this.float32[B + 15] = M), (this.float32[B + 16] = z), t ); }), e ); })(Ei); (Hi.prototype.bytesPerElement = 68), qn('StructArrayLayout8i15ui1ul4f68', Hi); var Wi = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.float32 = new Float32Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t) { var e = this.length; return this.resize(e + 1), this.emplace(e, t); }), (e.prototype.emplace = function (t, e) { return (this.float32[1 * t + 0] = e), t; }), e ); })(Ei); (Wi.prototype.bytesPerElement = 4), qn('StructArrayLayout1f4', Wi); var $i = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.int16 = new Int16Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e, r) { var n = this.length; return this.resize(n + 1), this.emplace(n, t, e, r); }), (e.prototype.emplace = function (t, e, r, n) { var i = 3 * t; return ( (this.int16[i + 0] = e), (this.int16[i + 1] = r), (this.int16[i + 2] = n), t ); }), e ); })(Ei); ($i.prototype.bytesPerElement = 6), qn('StructArrayLayout3i6', $i); var Qi = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.uint32 = new Uint32Array(this.arrayBuffer)), (this.uint16 = new Uint16Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e, r) { var n = this.length; return this.resize(n + 1), this.emplace(n, t, e, r); }), (e.prototype.emplace = function (t, e, r, n) { var i = 4 * t; return ( (this.uint32[2 * t + 0] = e), (this.uint16[i + 2] = r), (this.uint16[i + 3] = n), t ); }), e ); })(Ei); (Qi.prototype.bytesPerElement = 8), qn('StructArrayLayout1ul2ui8', Qi); var ta = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.uint16 = new Uint16Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e) { var r = this.length; return this.resize(r + 1), this.emplace(r, t, e); }), (e.prototype.emplace = function (t, e, r) { var n = 2 * t; return (this.uint16[n + 0] = e), (this.uint16[n + 1] = r), t; }), e ); })(Ei); (ta.prototype.bytesPerElement = 4), qn('StructArrayLayout2ui4', ta); var ea = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.uint16 = new Uint16Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t) { var e = this.length; return this.resize(e + 1), this.emplace(e, t); }), (e.prototype.emplace = function (t, e) { return (this.uint16[1 * t + 0] = e), t; }), e ); })(Ei); (ea.prototype.bytesPerElement = 2), qn('StructArrayLayout1ui2', ea); var ra = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._refreshViews = function () { (this.uint8 = new Uint8Array(this.arrayBuffer)), (this.float32 = new Float32Array(this.arrayBuffer)); }), (e.prototype.emplaceBack = function (t, e, r, n) { var i = this.length; return this.resize(i + 1), this.emplace(i, t, e, r, n); }), (e.prototype.emplace = function (t, e, r, n, i) { var a = 4 * t; return ( (this.float32[a + 0] = e), (this.float32[a + 1] = r), (this.float32[a + 2] = n), (this.float32[a + 3] = i), t ); }), e ); })(Ei); (ra.prototype.bytesPerElement = 16), qn('StructArrayLayout4f16', ra); var na = (function (t) { function e() { t.apply(this, arguments); } t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e); var r = { anchorPointX: { configurable: !0 }, anchorPointY: { configurable: !0 }, x1: { configurable: !0 }, y1: { configurable: !0 }, x2: { configurable: !0 }, y2: { configurable: !0 }, featureIndex: { configurable: !0 }, sourceLayerIndex: { configurable: !0 }, bucketIndex: { configurable: !0 }, anchorPoint: { configurable: !0 }, }; return ( (r.anchorPointX.get = function () { return this._structArray.int16[this._pos2 + 0]; }), (r.anchorPointY.get = function () { return this._structArray.int16[this._pos2 + 1]; }), (r.x1.get = function () { return this._structArray.int16[this._pos2 + 2]; }), (r.y1.get = function () { return this._structArray.int16[this._pos2 + 3]; }), (r.x2.get = function () { return this._structArray.int16[this._pos2 + 4]; }), (r.y2.get = function () { return this._structArray.int16[this._pos2 + 5]; }), (r.featureIndex.get = function () { return this._structArray.uint32[this._pos4 + 3]; }), (r.sourceLayerIndex.get = function () { return this._structArray.uint16[this._pos2 + 8]; }), (r.bucketIndex.get = function () { return this._structArray.uint16[this._pos2 + 9]; }), (r.anchorPoint.get = function () { return new I(this.anchorPointX, this.anchorPointY); }), Object.defineProperties(e.prototype, r), e ); })(Ci); na.prototype.size = 20; var ia = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.get = function (t) { return new na(this, t); }), e ); })(Zi); qn('CollisionBoxArray', ia); var aa = (function (t) { function e() { t.apply(this, arguments); } t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e); var r = { anchorX: { configurable: !0 }, anchorY: { configurable: !0 }, glyphStartIndex: { configurable: !0 }, numGlyphs: { configurable: !0 }, vertexStartIndex: { configurable: !0 }, lineStartIndex: { configurable: !0 }, lineLength: { configurable: !0 }, segment: { configurable: !0 }, lowerSize: { configurable: !0 }, upperSize: { configurable: !0 }, lineOffsetX: { configurable: !0 }, lineOffsetY: { configurable: !0 }, writingMode: { configurable: !0 }, placedOrientation: { configurable: !0 }, hidden: { configurable: !0 }, crossTileID: { configurable: !0 }, associatedIconIndex: { configurable: !0 }, }; return ( (r.anchorX.get = function () { return this._structArray.int16[this._pos2 + 0]; }), (r.anchorY.get = function () { return this._structArray.int16[this._pos2 + 1]; }), (r.glyphStartIndex.get = function () { return this._structArray.uint16[this._pos2 + 2]; }), (r.numGlyphs.get = function () { return this._structArray.uint16[this._pos2 + 3]; }), (r.vertexStartIndex.get = function () { return this._structArray.uint32[this._pos4 + 2]; }), (r.lineStartIndex.get = function () { return this._structArray.uint32[this._pos4 + 3]; }), (r.lineLength.get = function () { return this._structArray.uint32[this._pos4 + 4]; }), (r.segment.get = function () { return this._structArray.uint16[this._pos2 + 10]; }), (r.lowerSize.get = function () { return this._structArray.uint16[this._pos2 + 11]; }), (r.upperSize.get = function () { return this._structArray.uint16[this._pos2 + 12]; }), (r.lineOffsetX.get = function () { return this._structArray.float32[this._pos4 + 7]; }), (r.lineOffsetY.get = function () { return this._structArray.float32[this._pos4 + 8]; }), (r.writingMode.get = function () { return this._structArray.uint8[this._pos1 + 36]; }), (r.placedOrientation.get = function () { return this._structArray.uint8[this._pos1 + 37]; }), (r.placedOrientation.set = function (t) { this._structArray.uint8[this._pos1 + 37] = t; }), (r.hidden.get = function () { return this._structArray.uint8[this._pos1 + 38]; }), (r.hidden.set = function (t) { this._structArray.uint8[this._pos1 + 38] = t; }), (r.crossTileID.get = function () { return this._structArray.uint32[this._pos4 + 10]; }), (r.crossTileID.set = function (t) { this._structArray.uint32[this._pos4 + 10] = t; }), (r.associatedIconIndex.get = function () { return this._structArray.int16[this._pos2 + 22]; }), Object.defineProperties(e.prototype, r), e ); })(Ci); aa.prototype.size = 48; var oa = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.get = function (t) { return new aa(this, t); }), e ); })(Yi); qn('PlacedSymbolArray', oa); var sa = (function (t) { function e() { t.apply(this, arguments); } t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e); var r = { anchorX: { configurable: !0 }, anchorY: { configurable: !0 }, rightJustifiedTextSymbolIndex: { configurable: !0 }, centerJustifiedTextSymbolIndex: { configurable: !0 }, leftJustifiedTextSymbolIndex: { configurable: !0 }, verticalPlacedTextSymbolIndex: { configurable: !0 }, placedIconSymbolIndex: { configurable: !0 }, verticalPlacedIconSymbolIndex: { configurable: !0 }, key: { configurable: !0 }, textBoxStartIndex: { configurable: !0 }, textBoxEndIndex: { configurable: !0 }, verticalTextBoxStartIndex: { configurable: !0 }, verticalTextBoxEndIndex: { configurable: !0 }, iconBoxStartIndex: { configurable: !0 }, iconBoxEndIndex: { configurable: !0 }, verticalIconBoxStartIndex: { configurable: !0 }, verticalIconBoxEndIndex: { configurable: !0 }, featureIndex: { configurable: !0 }, numHorizontalGlyphVertices: { configurable: !0 }, numVerticalGlyphVertices: { configurable: !0 }, numIconVertices: { configurable: !0 }, numVerticalIconVertices: { configurable: !0 }, useRuntimeCollisionCircles: { configurable: !0 }, crossTileID: { configurable: !0 }, textBoxScale: { configurable: !0 }, textOffset0: { configurable: !0 }, textOffset1: { configurable: !0 }, collisionCircleDiameter: { configurable: !0 }, }; return ( (r.anchorX.get = function () { return this._structArray.int16[this._pos2 + 0]; }), (r.anchorY.get = function () { return this._structArray.int16[this._pos2 + 1]; }), (r.rightJustifiedTextSymbolIndex.get = function () { return this._structArray.int16[this._pos2 + 2]; }), (r.centerJustifiedTextSymbolIndex.get = function () { return this._structArray.int16[this._pos2 + 3]; }), (r.leftJustifiedTextSymbolIndex.get = function () { return this._structArray.int16[this._pos2 + 4]; }), (r.verticalPlacedTextSymbolIndex.get = function () { return this._structArray.int16[this._pos2 + 5]; }), (r.placedIconSymbolIndex.get = function () { return this._structArray.int16[this._pos2 + 6]; }), (r.verticalPlacedIconSymbolIndex.get = function () { return this._structArray.int16[this._pos2 + 7]; }), (r.key.get = function () { return this._structArray.uint16[this._pos2 + 8]; }), (r.textBoxStartIndex.get = function () { return this._structArray.uint16[this._pos2 + 9]; }), (r.textBoxEndIndex.get = function () { return this._structArray.uint16[this._pos2 + 10]; }), (r.verticalTextBoxStartIndex.get = function () { return this._structArray.uint16[this._pos2 + 11]; }), (r.verticalTextBoxEndIndex.get = function () { return this._structArray.uint16[this._pos2 + 12]; }), (r.iconBoxStartIndex.get = function () { return this._structArray.uint16[this._pos2 + 13]; }), (r.iconBoxEndIndex.get = function () { return this._structArray.uint16[this._pos2 + 14]; }), (r.verticalIconBoxStartIndex.get = function () { return this._structArray.uint16[this._pos2 + 15]; }), (r.verticalIconBoxEndIndex.get = function () { return this._structArray.uint16[this._pos2 + 16]; }), (r.featureIndex.get = function () { return this._structArray.uint16[this._pos2 + 17]; }), (r.numHorizontalGlyphVertices.get = function () { return this._structArray.uint16[this._pos2 + 18]; }), (r.numVerticalGlyphVertices.get = function () { return this._structArray.uint16[this._pos2 + 19]; }), (r.numIconVertices.get = function () { return this._structArray.uint16[this._pos2 + 20]; }), (r.numVerticalIconVertices.get = function () { return this._structArray.uint16[this._pos2 + 21]; }), (r.useRuntimeCollisionCircles.get = function () { return this._structArray.uint16[this._pos2 + 22]; }), (r.crossTileID.get = function () { return this._structArray.uint32[this._pos4 + 12]; }), (r.crossTileID.set = function (t) { this._structArray.uint32[this._pos4 + 12] = t; }), (r.textBoxScale.get = function () { return this._structArray.float32[this._pos4 + 13]; }), (r.textOffset0.get = function () { return this._structArray.float32[this._pos4 + 14]; }), (r.textOffset1.get = function () { return this._structArray.float32[this._pos4 + 15]; }), (r.collisionCircleDiameter.get = function () { return this._structArray.float32[this._pos4 + 16]; }), Object.defineProperties(e.prototype, r), e ); })(Ci); sa.prototype.size = 68; var ua = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.get = function (t) { return new sa(this, t); }), e ); })(Hi); qn('SymbolInstanceArray', ua); var la = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getoffsetX = function (t) { return this.float32[1 * t + 0]; }), e ); })(Wi); qn('GlyphOffsetArray', la); var pa = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getx = function (t) { return this.int16[3 * t + 0]; }), (e.prototype.gety = function (t) { return this.int16[3 * t + 1]; }), (e.prototype.gettileUnitDistanceFromAnchor = function (t) { return this.int16[3 * t + 2]; }), e ); })($i); qn('SymbolLineVertexArray', pa); var ca = (function (t) { function e() { t.apply(this, arguments); } t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e); var r = { featureIndex: { configurable: !0 }, sourceLayerIndex: { configurable: !0 }, bucketIndex: { configurable: !0 }, }; return ( (r.featureIndex.get = function () { return this._structArray.uint32[this._pos4 + 0]; }), (r.sourceLayerIndex.get = function () { return this._structArray.uint16[this._pos2 + 2]; }), (r.bucketIndex.get = function () { return this._structArray.uint16[this._pos2 + 3]; }), Object.defineProperties(e.prototype, r), e ); })(Ci); ca.prototype.size = 8; var ha = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.get = function (t) { return new ca(this, t); }), e ); })(Qi); qn('FeatureIndexArray', ha); var fa = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Fi), ya = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Oi), da = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Fi), ma = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Fi), va = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Li), ga = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Di), xa = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(ji), ba = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Ri), wa = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Ui), _a = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(qi), Aa = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Ni), ka = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Ki), Sa = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Gi), Ia = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Ji), Ma = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Xi), za = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Xi), Pa = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(ta), Ba = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(ea), Ca = Vi([{ name: 'a_pos', components: 2, type: 'Int16' }], 4).members, Ea = function (t) { void 0 === t && (t = []), (this.segments = t); }; function Va(t, e) { return 256 * (t = a(Math.floor(t), 0, 255)) + a(Math.floor(e), 0, 255); } (Ea.prototype.prepareSegment = function (t, e, r, n) { var i = this.segments[this.segments.length - 1]; return ( t > Ea.MAX_VERTEX_ARRAY_LENGTH && d( 'Max vertices per segment is ' + Ea.MAX_VERTEX_ARRAY_LENGTH + ': bucket requested ' + t, ), (!i || i.vertexLength + t > Ea.MAX_VERTEX_ARRAY_LENGTH || i.sortKey !== n) && ((i = { vertexOffset: e.length, primitiveOffset: r.length, vertexLength: 0, primitiveLength: 0, }), void 0 !== n && (i.sortKey = n), this.segments.push(i)), i ); }), (Ea.prototype.get = function () { return this.segments; }), (Ea.prototype.destroy = function () { for (var t = 0, e = this.segments; t < e.length; t += 1) { var r = e[t]; for (var n in r.vaos) r.vaos[n].destroy(); } }), (Ea.simpleSegment = function (t, e, r, n) { return new Ea([ { vertexOffset: t, primitiveOffset: e, vertexLength: r, primitiveLength: n, vaos: {}, sortKey: 0, }, ]); }), (Ea.MAX_VERTEX_ARRAY_LENGTH = Math.pow(2, 16) - 1), qn('SegmentVector', Ea); var Ta = Vi([ { name: 'a_pattern_from', components: 4, type: 'Uint16' }, { name: 'a_pattern_to', components: 4, type: 'Uint16' }, { name: 'a_pixel_ratio_from', components: 1, type: 'Uint16' }, { name: 'a_pixel_ratio_to', components: 1, type: 'Uint16' }, ]), Fa = { exports: {} }, Oa = { exports: {} }; Oa.exports = function (t, e) { var r, n, i, a, o, s, u, l; for ( n = t.length - (r = 3 & t.length), i = e, o = 3432918353, s = 461845907, l = 0; l < n; ) (u = (255 & t.charCodeAt(l)) | ((255 & t.charCodeAt(++l)) << 8) | ((255 & t.charCodeAt(++l)) << 16) | ((255 & t.charCodeAt(++l)) << 24)), ++l, (i = 27492 + (65535 & (a = (5 * (65535 & (i = ((i ^= u = ((65535 & (u = ((u = ((65535 & u) * o + ((((u >>> 16) * o) & 65535) << 16)) & 4294967295) << 15) | (u >>> 17))) * s + ((((u >>> 16) * s) & 65535) << 16)) & 4294967295) << 13) | (i >>> 19))) + (((5 * (i >>> 16)) & 65535) << 16)) & 4294967295)) + (((58964 + (a >>> 16)) & 65535) << 16)); switch (((u = 0), r)) { case 3: u ^= (255 & t.charCodeAt(l + 2)) << 16; case 2: u ^= (255 & t.charCodeAt(l + 1)) << 8; case 1: i ^= u = ((65535 & (u = ((u = ((65535 & (u ^= 255 & t.charCodeAt(l))) * o + ((((u >>> 16) * o) & 65535) << 16)) & 4294967295) << 15) | (u >>> 17))) * s + ((((u >>> 16) * s) & 65535) << 16)) & 4294967295; } return ( (i ^= t.length), (i = (2246822507 * (65535 & (i ^= i >>> 16)) + (((2246822507 * (i >>> 16)) & 65535) << 16)) & 4294967295), (i = (3266489909 * (65535 & (i ^= i >>> 13)) + (((3266489909 * (i >>> 16)) & 65535) << 16)) & 4294967295), (i ^= i >>> 16) >>> 0 ); }; var La = { exports: {} }; La.exports = function (t, e) { for (var r, n = t.length, i = e ^ n, a = 0; n >= 4; ) (r = 1540483477 * (65535 & (r = (255 & t.charCodeAt(a)) | ((255 & t.charCodeAt(++a)) << 8) | ((255 & t.charCodeAt(++a)) << 16) | ((255 & t.charCodeAt(++a)) << 24))) + (((1540483477 * (r >>> 16)) & 65535) << 16)), (i = (1540483477 * (65535 & i) + (((1540483477 * (i >>> 16)) & 65535) << 16)) ^ (r = 1540483477 * (65535 & (r ^= r >>> 24)) + (((1540483477 * (r >>> 16)) & 65535) << 16))), (n -= 4), ++a; switch (n) { case 3: i ^= (255 & t.charCodeAt(a + 2)) << 16; case 2: i ^= (255 & t.charCodeAt(a + 1)) << 8; case 1: i = 1540483477 * (65535 & (i ^= 255 & t.charCodeAt(a))) + (((1540483477 * (i >>> 16)) & 65535) << 16); } return ( (i = 1540483477 * (65535 & (i ^= i >>> 13)) + (((1540483477 * (i >>> 16)) & 65535) << 16)), (i ^= i >>> 15) >>> 0 ); }; var Da = Oa.exports, ja = La.exports; (Fa.exports = Da), (Fa.exports.murmur3 = Da), (Fa.exports.murmur2 = ja); var Ra = function () { (this.ids = []), (this.positions = []), (this.indexed = !1); }; function Ua(t) { var e = +t; return !isNaN(e) && e <= Number.MAX_SAFE_INTEGER ? e : Fa.exports(String(t)); } function qa(t, e, r, n) { for (; r < n; ) { for (var i = t[(r + n) >> 1], a = r - 1, o = n + 1; ; ) { do { a++; } while (t[a] < i); do { o--; } while (t[o] > i); if (a >= o) break; Na(t, a, o), Na(e, 3 * a, 3 * o), Na(e, 3 * a + 1, 3 * o + 1), Na(e, 3 * a + 2, 3 * o + 2); } o - r < n - o ? (qa(t, e, r, o), (r = o + 1)) : (qa(t, e, o + 1, n), (n = o)); } } function Na(t, e, r) { var n = t[e]; (t[e] = t[r]), (t[r] = n); } (Ra.prototype.add = function (t, e, r, n) { this.ids.push(Ua(t)), this.positions.push(e, r, n); }), (Ra.prototype.getPositions = function (t) { if (!this.indexed) throw new Error( 'Trying to get index, but feature positions are not indexed', ); for (var e = Ua(t), r = 0, n = this.ids.length - 1; r < n; ) { var i = (r + n) >> 1; this.ids[i] >= e ? (n = i) : (r = i + 1); } for (var a = []; this.ids[r] === e; ) a.push({ index: this.positions[3 * r], start: this.positions[3 * r + 1], end: this.positions[3 * r + 2], }), r++; return a; }), (Ra.serialize = function (t, e) { var r = new Float64Array(t.ids), n = new Uint32Array(t.positions); return ( qa(r, n, 0, r.length - 1), e && e.push(r.buffer, n.buffer), { ids: r, positions: n } ); }), (Ra.deserialize = function (t) { var e = new Ra(); return ( (e.ids = t.ids), (e.positions = t.positions), (e.indexed = !0), e ); }), qn('FeaturePositionMap', Ra); var Za = function (t, e) { (this.gl = t.gl), (this.location = e); }, Ka = (function (t) { function e(e, r) { t.call(this, e, r), (this.current = 0); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.set = function (t) { this.current !== t && ((this.current = t), this.gl.uniform1i(this.location, t)); }), e ); })(Za), Ga = (function (t) { function e(e, r) { t.call(this, e, r), (this.current = 0); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.set = function (t) { this.current !== t && ((this.current = t), this.gl.uniform1f(this.location, t)); }), e ); })(Za), Ja = (function (t) { function e(e, r) { t.call(this, e, r), (this.current = [0, 0]); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.set = function (t) { (t[0] === this.current[0] && t[1] === this.current[1]) || ((this.current = t), this.gl.uniform2f(this.location, t[0], t[1])); }), e ); })(Za), Xa = (function (t) { function e(e, r) { t.call(this, e, r), (this.current = [0, 0, 0]); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.set = function (t) { (t[0] === this.current[0] && t[1] === this.current[1] && t[2] === this.current[2]) || ((this.current = t), this.gl.uniform3f(this.location, t[0], t[1], t[2])); }), e ); })(Za), Ya = (function (t) { function e(e, r) { t.call(this, e, r), (this.current = [0, 0, 0, 0]); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.set = function (t) { (t[0] === this.current[0] && t[1] === this.current[1] && t[2] === this.current[2] && t[3] === this.current[3]) || ((this.current = t), this.gl.uniform4f(this.location, t[0], t[1], t[2], t[3])); }), e ); })(Za), Ha = (function (t) { function e(e, r) { t.call(this, e, r), (this.current = Yt.transparent); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.set = function (t) { (t.r === this.current.r && t.g === this.current.g && t.b === this.current.b && t.a === this.current.a) || ((this.current = t), this.gl.uniform4f(this.location, t.r, t.g, t.b, t.a)); }), e ); })(Za), Wa = new Float32Array(16), $a = (function (t) { function e(e, r) { t.call(this, e, r), (this.current = Wa); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.set = function (t) { if (t[12] !== this.current[12] || t[0] !== this.current[0]) return ( (this.current = t), void this.gl.uniformMatrix4fv(this.location, !1, t) ); for (var e = 1; e < 16; e++) if (t[e] !== this.current[e]) { (this.current = t), this.gl.uniformMatrix4fv(this.location, !1, t); break; } }), e ); })(Za); function Qa(t) { return [Va(255 * t.r, 255 * t.g), Va(255 * t.b, 255 * t.a)]; } var to = function (t, e, r) { (this.value = t), (this.uniformNames = e.map(function (t) { return 'u_' + t; })), (this.type = r); }; (to.prototype.setUniform = function (t, e, r) { t.set(r.constantOr(this.value)); }), (to.prototype.getBinding = function (t, e, r) { return 'color' === this.type ? new Ha(t, e) : new Ga(t, e); }); var eo = function (t, e) { (this.uniformNames = e.map(function (t) { return 'u_' + t; })), (this.patternFrom = null), (this.patternTo = null), (this.pixelRatioFrom = 1), (this.pixelRatioTo = 1); }; (eo.prototype.setConstantPatternPositions = function (t, e) { (this.pixelRatioFrom = e.pixelRatio), (this.pixelRatioTo = t.pixelRatio), (this.patternFrom = e.tlbr), (this.patternTo = t.tlbr); }), (eo.prototype.setUniform = function (t, e, r, n) { var i = 'u_pattern_to' === n ? this.patternTo : 'u_pattern_from' === n ? this.patternFrom : 'u_pixel_ratio_to' === n ? this.pixelRatioTo : 'u_pixel_ratio_from' === n ? this.pixelRatioFrom : null; i && t.set(i); }), (eo.prototype.getBinding = function (t, e, r) { return 'u_pattern' === r.substr(0, 9) ? new Ya(t, e) : new Ga(t, e); }); var ro = function (t, e, r, n) { (this.expression = t), (this.type = r), (this.maxValue = 0), (this.paintVertexAttributes = e.map(function (t) { return { name: 'a_' + t, type: 'Float32', components: 'color' === r ? 2 : 1, offset: 0, }; })), (this.paintVertexArray = new n()); }; (ro.prototype.populatePaintArray = function (t, e, r, n, i) { var a = this.paintVertexArray.length, o = this.expression.evaluate(new fi(0), e, {}, n, [], i); this.paintVertexArray.resize(t), this._setPaintValue(a, t, o); }), (ro.prototype.updatePaintArray = function (t, e, r, n) { var i = this.expression.evaluate({ zoom: 0 }, r, n); this._setPaintValue(t, e, i); }), (ro.prototype._setPaintValue = function (t, e, r) { if ('color' === this.type) for (var n = Qa(r), i = t; i < e; i++) this.paintVertexArray.emplace(i, n[0], n[1]); else { for (var a = t; a < e; a++) this.paintVertexArray.emplace(a, r); this.maxValue = Math.max(this.maxValue, Math.abs(r)); } }), (ro.prototype.upload = function (t) { this.paintVertexArray && this.paintVertexArray.arrayBuffer && (this.paintVertexBuffer && this.paintVertexBuffer.buffer ? this.paintVertexBuffer.updateData(this.paintVertexArray) : (this.paintVertexBuffer = t.createVertexBuffer( this.paintVertexArray, this.paintVertexAttributes, this.expression.isStateDependent, ))); }), (ro.prototype.destroy = function () { this.paintVertexBuffer && this.paintVertexBuffer.destroy(); }); var no = function (t, e, r, n, i, a) { (this.expression = t), (this.uniformNames = e.map(function (t) { return 'u_' + t + '_t'; })), (this.type = r), (this.useIntegerZoom = n), (this.zoom = i), (this.maxValue = 0), (this.paintVertexAttributes = e.map(function (t) { return { name: 'a_' + t, type: 'Float32', components: 'color' === r ? 4 : 2, offset: 0, }; })), (this.paintVertexArray = new a()); }; (no.prototype.populatePaintArray = function (t, e, r, n, i) { var a = this.expression.evaluate(new fi(this.zoom), e, {}, n, [], i), o = this.expression.evaluate(new fi(this.zoom + 1), e, {}, n, [], i), s = this.paintVertexArray.length; this.paintVertexArray.resize(t), this._setPaintValue(s, t, a, o); }), (no.prototype.updatePaintArray = function (t, e, r, n) { var i = this.expression.evaluate({ zoom: this.zoom }, r, n), a = this.expression.evaluate({ zoom: this.zoom + 1 }, r, n); this._setPaintValue(t, e, i, a); }), (no.prototype._setPaintValue = function (t, e, r, n) { if ('color' === this.type) for (var i = Qa(r), a = Qa(n), o = t; o < e; o++) this.paintVertexArray.emplace(o, i[0], i[1], a[0], a[1]); else { for (var s = t; s < e; s++) this.paintVertexArray.emplace(s, r, n); this.maxValue = Math.max(this.maxValue, Math.abs(r), Math.abs(n)); } }), (no.prototype.upload = function (t) { this.paintVertexArray && this.paintVertexArray.arrayBuffer && (this.paintVertexBuffer && this.paintVertexBuffer.buffer ? this.paintVertexBuffer.updateData(this.paintVertexArray) : (this.paintVertexBuffer = t.createVertexBuffer( this.paintVertexArray, this.paintVertexAttributes, this.expression.isStateDependent, ))); }), (no.prototype.destroy = function () { this.paintVertexBuffer && this.paintVertexBuffer.destroy(); }), (no.prototype.setUniform = function (t, e) { var r = this.useIntegerZoom ? Math.floor(e.zoom) : e.zoom, n = a( this.expression.interpolationFactor(r, this.zoom, this.zoom + 1), 0, 1, ); t.set(n); }), (no.prototype.getBinding = function (t, e, r) { return new Ga(t, e); }); var io = function (t, e, r, n, i, a) { (this.expression = t), (this.type = e), (this.useIntegerZoom = r), (this.zoom = n), (this.layerId = a), (this.zoomInPaintVertexArray = new i()), (this.zoomOutPaintVertexArray = new i()); }; (io.prototype.populatePaintArray = function (t, e, r) { var n = this.zoomInPaintVertexArray.length; this.zoomInPaintVertexArray.resize(t), this.zoomOutPaintVertexArray.resize(t), this._setPaintValues(n, t, e.patterns && e.patterns[this.layerId], r); }), (io.prototype.updatePaintArray = function (t, e, r, n, i) { this._setPaintValues(t, e, r.patterns && r.patterns[this.layerId], i); }), (io.prototype._setPaintValues = function (t, e, r, n) { if (n && r) { var i = n[r.min], a = n[r.mid], o = n[r.max]; if (i && a && o) for (var s = t; s < e; s++) this.zoomInPaintVertexArray.emplace( s, a.tl[0], a.tl[1], a.br[0], a.br[1], i.tl[0], i.tl[1], i.br[0], i.br[1], a.pixelRatio, i.pixelRatio, ), this.zoomOutPaintVertexArray.emplace( s, a.tl[0], a.tl[1], a.br[0], a.br[1], o.tl[0], o.tl[1], o.br[0], o.br[1], a.pixelRatio, o.pixelRatio, ); } }), (io.prototype.upload = function (t) { this.zoomInPaintVertexArray && this.zoomInPaintVertexArray.arrayBuffer && this.zoomOutPaintVertexArray && this.zoomOutPaintVertexArray.arrayBuffer && ((this.zoomInPaintVertexBuffer = t.createVertexBuffer( this.zoomInPaintVertexArray, Ta.members, this.expression.isStateDependent, )), (this.zoomOutPaintVertexBuffer = t.createVertexBuffer( this.zoomOutPaintVertexArray, Ta.members, this.expression.isStateDependent, ))); }), (io.prototype.destroy = function () { this.zoomOutPaintVertexBuffer && this.zoomOutPaintVertexBuffer.destroy(), this.zoomInPaintVertexBuffer && this.zoomInPaintVertexBuffer.destroy(); }); var ao = function (t, e, r) { (this.binders = {}), (this._buffers = []); var n = []; for (var i in t.paint._values) if (r(i)) { var a = t.paint.get(i); if (a instanceof bi && Fr(a.property.specification)) { var o = so(i, t.type), s = a.value, u = a.property.specification.type, l = a.property.useIntegerZoom, p = a.property.specification['property-type'], c = 'cross-faded' === p || 'cross-faded-data-driven' === p; if ('constant' === s.kind) (this.binders[i] = c ? new eo(s.value, o) : new to(s.value, o, u)), n.push('/u_' + i); else if ('source' === s.kind || c) { var h = uo(i, u, 'source'); (this.binders[i] = c ? new io(s, u, l, e, h, t.id) : new ro(s, o, u, h)), n.push('/a_' + i); } else { var f = uo(i, u, 'composite'); (this.binders[i] = new no(s, o, u, l, e, f)), n.push('/z_' + i); } } } this.cacheKey = n.sort().join(''); }; (ao.prototype.getMaxValue = function (t) { var e = this.binders[t]; return e instanceof ro || e instanceof no ? e.maxValue : 0; }), (ao.prototype.populatePaintArrays = function (t, e, r, n, i) { for (var a in this.binders) { var o = this.binders[a]; (o instanceof ro || o instanceof no || o instanceof io) && o.populatePaintArray(t, e, r, n, i); } }), (ao.prototype.setConstantPatternPositions = function (t, e) { for (var r in this.binders) { var n = this.binders[r]; n instanceof eo && n.setConstantPatternPositions(t, e); } }), (ao.prototype.updatePaintArrays = function (t, e, r, n, i) { var a = !1; for (var o in t) for (var s = 0, u = e.getPositions(o); s < u.length; s += 1) { var l = u[s], p = r.feature(l.index); for (var c in this.binders) { var h = this.binders[c]; if ( (h instanceof ro || h instanceof no || h instanceof io) && !0 === h.expression.isStateDependent ) { var f = n.paint.get(c); (h.expression = f.value), h.updatePaintArray(l.start, l.end, p, t[o], i), (a = !0); } } } return a; }), (ao.prototype.defines = function () { var t = []; for (var e in this.binders) { var r = this.binders[e]; (r instanceof to || r instanceof eo) && t.push.apply( t, r.uniformNames.map(function (t) { return '#define HAS_UNIFORM_' + t; }), ); } return t; }), (ao.prototype.getBinderAttributes = function () { var t = []; for (var e in this.binders) { var r = this.binders[e]; if (r instanceof ro || r instanceof no) for (var n = 0; n < r.paintVertexAttributes.length; n++) t.push(r.paintVertexAttributes[n].name); else if (r instanceof io) for (var i = 0; i < Ta.members.length; i++) t.push(Ta.members[i].name); } return t; }), (ao.prototype.getBinderUniforms = function () { var t = []; for (var e in this.binders) { var r = this.binders[e]; if (r instanceof to || r instanceof eo || r instanceof no) for (var n = 0, i = r.uniformNames; n < i.length; n += 1) t.push(i[n]); } return t; }), (ao.prototype.getPaintVertexBuffers = function () { return this._buffers; }), (ao.prototype.getUniforms = function (t, e) { var r = []; for (var n in this.binders) { var i = this.binders[n]; if (i instanceof to || i instanceof eo || i instanceof no) for (var a = 0, o = i.uniformNames; a < o.length; a += 1) { var s = o[a]; if (e[s]) { var u = i.getBinding(t, e[s], s); r.push({ name: s, property: n, binding: u }); } } } return r; }), (ao.prototype.setUniforms = function (t, e, r, n) { for (var i = 0, a = e; i < a.length; i += 1) { var o = a[i], s = o.name, u = o.property; this.binders[u].setUniform(o.binding, n, r.get(u), s); } }), (ao.prototype.updatePaintBuffers = function (t) { for (var e in ((this._buffers = []), this.binders)) { var r = this.binders[e]; if (t && r instanceof io) { var n = 2 === t.fromScale ? r.zoomInPaintVertexBuffer : r.zoomOutPaintVertexBuffer; n && this._buffers.push(n); } else (r instanceof ro || r instanceof no) && r.paintVertexBuffer && this._buffers.push(r.paintVertexBuffer); } }), (ao.prototype.upload = function (t) { for (var e in this.binders) { var r = this.binders[e]; (r instanceof ro || r instanceof no || r instanceof io) && r.upload(t); } this.updatePaintBuffers(); }), (ao.prototype.destroy = function () { for (var t in this.binders) { var e = this.binders[t]; (e instanceof ro || e instanceof no || e instanceof io) && e.destroy(); } }); var oo = function (t, e, r) { void 0 === r && (r = function () { return !0; }), (this.programConfigurations = {}); for (var n = 0, i = t; n < i.length; n += 1) { var a = i[n]; this.programConfigurations[a.id] = new ao(a, e, r); } (this.needsUpload = !1), (this._featureMap = new Ra()), (this._bufferOffset = 0); }; function so(t, e) { return ( { 'text-opacity': ['opacity'], 'icon-opacity': ['opacity'], 'text-color': ['fill_color'], 'icon-color': ['fill_color'], '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'], 'line-gap-width': ['gapwidth'], 'line-pattern': [ 'pattern_to', 'pattern_from', 'pixel_ratio_to', 'pixel_ratio_from', ], 'fill-pattern': [ 'pattern_to', 'pattern_from', 'pixel_ratio_to', 'pixel_ratio_from', ], 'fill-extrusion-pattern': [ 'pattern_to', 'pattern_from', 'pixel_ratio_to', 'pixel_ratio_from', ], }[t] || [t.replace(e + '-', '').replace(/-/g, '_')] ); } function uo(t, e, r) { var n = { color: { source: ji, composite: ra }, number: { source: Wi, composite: ji }, }, i = (function (t) { return { 'line-pattern': { source: ba, composite: ba }, 'fill-pattern': { source: ba, composite: ba }, 'fill-extrusion-pattern': { source: ba, composite: ba }, }[t]; })(t); return (i && i[r]) || n[e][r]; } (oo.prototype.populatePaintArrays = function (t, e, r, n, i, a) { for (var o in this.programConfigurations) this.programConfigurations[o].populatePaintArrays(t, e, n, i, a); void 0 !== e.id && this._featureMap.add(e.id, r, this._bufferOffset, t), (this._bufferOffset = t), (this.needsUpload = !0); }), (oo.prototype.updatePaintArrays = function (t, e, r, n) { for (var i = 0, a = r; i < a.length; i += 1) { var o = a[i]; this.needsUpload = this.programConfigurations[o.id].updatePaintArrays( t, this._featureMap, e, o, n, ) || this.needsUpload; } }), (oo.prototype.get = function (t) { return this.programConfigurations[t]; }), (oo.prototype.upload = function (t) { if (this.needsUpload) { for (var e in this.programConfigurations) this.programConfigurations[e].upload(t); this.needsUpload = !1; } }), (oo.prototype.destroy = function () { for (var t in this.programConfigurations) this.programConfigurations[t].destroy(); }), qn('ConstantBinder', to), qn('CrossFadedConstantBinder', eo), qn('SourceExpressionBinder', ro), qn('CrossFadedCompositeBinder', io), qn('CompositeExpressionBinder', no), qn('ProgramConfiguration', ao, { omit: ['_buffers'] }), qn('ProgramConfigurationSet', oo); var lo = 8192, po = Math.pow(2, 14) - 1, co = -po - 1; function ho(t) { for ( var e = lo / t.extent, r = t.loadGeometry(), n = 0; n < r.length; n++ ) for (var i = r[n], o = 0; o < i.length; o++) { var s = i[o], u = Math.round(s.x * e), l = Math.round(s.y * e); (s.x = a(u, co, po)), (s.y = a(l, co, po)), (u < s.x || u > s.x + 1 || l < s.y || l > s.y + 1) && d( 'Geometry exceeds allowed extent, reduce your vector tile buffer size', ); } return r; } function fo(t, e) { return { type: t.type, id: t.id, properties: t.properties, geometry: e ? ho(t) : [], }; } function yo(t, e, r, n, i) { t.emplaceBack(2 * e + (n + 1) / 2, 2 * r + (i + 1) / 2); } var mo = function (t) { (this.zoom = t.zoom), (this.overscaling = t.overscaling), (this.layers = t.layers), (this.layerIds = this.layers.map(function (t) { return t.id; })), (this.index = t.index), (this.hasPattern = !1), (this.layoutVertexArray = new da()), (this.indexArray = new za()), (this.segments = new Ea()), (this.programConfigurations = new oo(t.layers, t.zoom)), (this.stateDependentLayerIds = this.layers .filter(function (t) { return t.isStateDependent(); }) .map(function (t) { return t.id; })); }; function vo(t, e) { for (var r = 0; r < t.length; r++) if (Io(e, t[r])) return !0; for (var n = 0; n < e.length; n++) if (Io(t, e[n])) return !0; return !!wo(t, e); } function go(t, e, r) { return !!Io(t, e) || !!Ao(e, t, r); } function xo(t, e) { if (1 === t.length) return So(e, t[0]); for (var r = 0; r < e.length; r++) for (var n = e[r], i = 0; i < n.length; i++) if (Io(t, n[i])) return !0; for (var a = 0; a < t.length; a++) if (So(e, t[a])) return !0; for (var o = 0; o < e.length; o++) if (wo(t, e[o])) return !0; return !1; } function bo(t, e, r) { if (t.length > 1) { if (wo(t, e)) return !0; for (var n = 0; n < e.length; n++) if (Ao(e[n], t, r)) return !0; } for (var i = 0; i < t.length; i++) if (Ao(t[i], e, r)) return !0; return !1; } function wo(t, e) { if (0 === t.length || 0 === e.length) return !1; for (var r = 0; r < t.length - 1; r++) for (var n = t[r], i = t[r + 1], a = 0; a < e.length - 1; a++) if (_o(n, i, e[a], e[a + 1])) return !0; return !1; } function _o(t, e, r, n) { return m(t, r, n) !== m(e, r, n) && m(t, e, r) !== m(t, e, n); } function Ao(t, e, r) { var n = r * r; if (1 === e.length) return t.distSqr(e[0]) < n; for (var i = 1; i < e.length; i++) if (ko(t, e[i - 1], e[i]) < n) return !0; return !1; } function ko(t, e, r) { var n = e.distSqr(r); if (0 === n) return t.distSqr(e); var i = ((t.x - e.x) * (r.x - e.x) + (t.y - e.y) * (r.y - e.y)) / n; return t.distSqr(i < 0 ? e : i > 1 ? r : r.sub(e)._mult(i)._add(e)); } function So(t, e) { for (var r, n, i, a = !1, o = 0; o < t.length; o++) for (var s = 0, u = (r = t[o]).length - 1; s < r.length; u = s++) (n = r[s]).y > e.y != (i = r[u]).y > e.y && e.x < ((i.x - n.x) * (e.y - n.y)) / (i.y - n.y) + n.x && (a = !a); return a; } function Io(t, e) { for (var r = !1, n = 0, i = t.length - 1; n < t.length; i = n++) { var a = t[n], o = t[i]; a.y > e.y != o.y > e.y && e.x < ((o.x - a.x) * (e.y - a.y)) / (o.y - a.y) + a.x && (r = !r); } return r; } function Mo(t, e, r) { var n = r[0], i = r[2]; if ( (t.x < n.x && e.x < n.x) || (t.x > i.x && e.x > i.x) || (t.y < n.y && e.y < n.y) || (t.y > i.y && e.y > i.y) ) return !1; var a = m(t, e, r[0]); return a !== m(t, e, r[1]) || a !== m(t, e, r[2]) || a !== m(t, e, r[3]); } function zo(t, e, r) { var n = e.paint.get(t).value; return 'constant' === n.kind ? n.value : r.programConfigurations.get(e.id).getMaxValue(t); } function Po(t) { return Math.sqrt(t[0] * t[0] + t[1] * t[1]); } function Bo(t, e, r, n, i) { if (!e[0] && !e[1]) return t; var a = I.convert(e)._mult(i); 'viewport' === r && a._rotate(-n); for (var o = [], s = 0; s < t.length; s++) o.push(t[s].sub(a)); return o; } (mo.prototype.populate = function (t, e, r) { var n = this.layers[0], i = [], a = null, o = !1; 'circle' === n.type && (o = !(a = n.layout.get('circle-sort-key')).isConstant()); for (var s = 0, u = t; s < u.length; s += 1) { var l = u[s], p = l.feature, c = l.id, h = l.index, f = l.sourceLayerIndex, y = this.layers[0]._featureFilter.needGeometry, d = fo(p, y); if (this.layers[0]._featureFilter.filter(new fi(this.zoom), d, r)) { var m = o ? a.evaluate(d, {}, r) : void 0, v = { id: c, properties: p.properties, type: p.type, sourceLayerIndex: f, index: h, geometry: y ? d.geometry : ho(p), patterns: {}, sortKey: m, }; i.push(v); } } o && i.sort(function (t, e) { return t.sortKey - e.sortKey; }); for (var g = 0, x = i; g < x.length; g += 1) { var b = x[g], w = b.geometry, _ = b.index, A = b.sourceLayerIndex, k = t[_].feature; this.addFeature(b, w, _, r), e.featureIndex.insert(k, w, _, A, this.index); } }), (mo.prototype.update = function (t, e, r) { this.stateDependentLayers.length && this.programConfigurations.updatePaintArrays( t, e, this.stateDependentLayers, r, ); }), (mo.prototype.isEmpty = function () { return 0 === this.layoutVertexArray.length; }), (mo.prototype.uploadPending = function () { return !this.uploaded || this.programConfigurations.needsUpload; }), (mo.prototype.upload = function (t) { this.uploaded || ((this.layoutVertexBuffer = t.createVertexBuffer( this.layoutVertexArray, Ca, )), (this.indexBuffer = t.createIndexBuffer(this.indexArray))), this.programConfigurations.upload(t), (this.uploaded = !0); }), (mo.prototype.destroy = function () { this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.programConfigurations.destroy(), this.segments.destroy()); }), (mo.prototype.addFeature = function (t, e, r, n) { for (var i = 0, a = e; i < a.length; i += 1) for (var o = 0, s = a[i]; o < s.length; o += 1) { var u = s[o], l = u.x, p = u.y; if (!(l < 0 || l >= lo || p < 0 || p >= lo)) { var c = this.segments.prepareSegment( 4, this.layoutVertexArray, this.indexArray, t.sortKey, ), h = c.vertexLength; yo(this.layoutVertexArray, l, p, -1, -1), yo(this.layoutVertexArray, l, p, 1, -1), yo(this.layoutVertexArray, l, p, 1, 1), yo(this.layoutVertexArray, l, p, -1, 1), this.indexArray.emplaceBack(h, h + 1, h + 2), this.indexArray.emplaceBack(h, h + 3, h + 2), (c.vertexLength += 4), (c.primitiveLength += 2); } } this.programConfigurations.populatePaintArrays( this.layoutVertexArray.length, t, r, {}, n, ); }), qn('CircleBucket', mo, { omit: ['layers'] }); var Co = new Mi({ 'circle-sort-key': new Ai(gt.layout_circle['circle-sort-key']), }), Eo = { paint: new Mi({ 'circle-radius': new Ai(gt.paint_circle['circle-radius']), 'circle-color': new Ai(gt.paint_circle['circle-color']), 'circle-blur': new Ai(gt.paint_circle['circle-blur']), 'circle-opacity': new Ai(gt.paint_circle['circle-opacity']), 'circle-translate': new _i(gt.paint_circle['circle-translate']), 'circle-translate-anchor': new _i( gt.paint_circle['circle-translate-anchor'], ), 'circle-pitch-scale': new _i(gt.paint_circle['circle-pitch-scale']), 'circle-pitch-alignment': new _i( gt.paint_circle['circle-pitch-alignment'], ), 'circle-stroke-width': new Ai(gt.paint_circle['circle-stroke-width']), 'circle-stroke-color': new Ai(gt.paint_circle['circle-stroke-color']), 'circle-stroke-opacity': new Ai( gt.paint_circle['circle-stroke-opacity'], ), }), layout: Co, }, Vo = 1e-6, To = 'undefined' != typeof Float32Array ? Float32Array : Array; function Fo() { var t = new To(9); return ( To != Float32Array && ((t[1] = 0), (t[2] = 0), (t[3] = 0), (t[5] = 0), (t[6] = 0), (t[7] = 0)), (t[0] = 1), (t[4] = 1), (t[8] = 1), t ); } function Oo(t) { return ( (t[0] = 1), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), (t[5] = 1), (t[6] = 0), (t[7] = 0), (t[8] = 0), (t[9] = 0), (t[10] = 1), (t[11] = 0), (t[12] = 0), (t[13] = 0), (t[14] = 0), (t[15] = 1), t ); } function Lo(t, e, r) { var n = e[0], i = e[1], a = e[2], o = e[3], s = e[4], u = e[5], l = e[6], p = e[7], c = e[8], h = e[9], f = e[10], y = e[11], d = e[12], m = e[13], v = e[14], g = e[15], x = r[0], b = r[1], w = r[2], _ = r[3]; return ( (t[0] = x * n + b * s + w * c + _ * d), (t[1] = x * i + b * u + w * h + _ * m), (t[2] = x * a + b * l + w * f + _ * v), (t[3] = x * o + b * p + w * y + _ * g), (t[4] = (x = r[4]) * n + (b = r[5]) * s + (w = r[6]) * c + (_ = r[7]) * d), (t[5] = x * i + b * u + w * h + _ * m), (t[6] = x * a + b * l + w * f + _ * v), (t[7] = x * o + b * p + w * y + _ * g), (t[8] = (x = r[8]) * n + (b = r[9]) * s + (w = r[10]) * c + (_ = r[11]) * d), (t[9] = x * i + b * u + w * h + _ * m), (t[10] = x * a + b * l + w * f + _ * v), (t[11] = x * o + b * p + w * y + _ * g), (t[12] = (x = r[12]) * n + (b = r[13]) * s + (w = r[14]) * c + (_ = r[15]) * d), (t[13] = x * i + b * u + w * h + _ * m), (t[14] = x * a + b * l + w * f + _ * v), (t[15] = x * o + b * p + w * y + _ * g), t ); } Math.hypot || (Math.hypot = function () { for (var t = arguments, e = 0, r = arguments.length; r--; ) e += t[r] * t[r]; return Math.sqrt(e); }); var Do, jo = Lo; function Ro() { var t = new To(3); return To != Float32Array && ((t[0] = 0), (t[1] = 0), (t[2] = 0)), t; } function Uo(t, e, r) { var n = new To(3); return (n[0] = t), (n[1] = e), (n[2] = r), n; } function qo(t, e, r) { var n = e[0], i = e[1], a = e[2], o = e[3]; return ( (t[0] = r[0] * n + r[4] * i + r[8] * a + r[12] * o), (t[1] = r[1] * n + r[5] * i + r[9] * a + r[13] * o), (t[2] = r[2] * n + r[6] * i + r[10] * a + r[14] * o), (t[3] = r[3] * n + r[7] * i + r[11] * a + r[15] * o), t ); } function No() { var t = new To(4); return ( To != Float32Array && ((t[0] = 0), (t[1] = 0), (t[2] = 0)), (t[3] = 1), t ); } Ro(), (Do = new To(4)), To != Float32Array && ((Do[0] = 0), (Do[1] = 0), (Do[2] = 0), (Do[3] = 0)), Ro(), Uo(1, 0, 0), Uo(0, 1, 0), No(), No(), Fo(), (function () { var t; (t = new To(2)), To != Float32Array && ((t[0] = 0), (t[1] = 0)); })(); var Zo = (function (t) { function e(e) { t.call(this, e, Eo); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.createBucket = function (t) { return new mo(t); }), (e.prototype.queryRadius = function (t) { var e = t; return ( zo('circle-radius', this, e) + zo('circle-stroke-width', this, e) + Po(this.paint.get('circle-translate')) ); }), (e.prototype.queryIntersectsFeature = function ( t, e, r, n, i, a, o, s, ) { for ( var u = Bo( t, this.paint.get('circle-translate'), this.paint.get('circle-translate-anchor'), a.angle, o, ), l = this.paint.get('circle-radius').evaluate(e, r) + this.paint.get('circle-stroke-width').evaluate(e, r), p = 'map' === this.paint.get('circle-pitch-alignment'), c = p ? u : (function (t, e) { return t.map(function (t) { return Ko(t, e); }); })(u, s), h = p ? l * o : l, f = 0, y = n; f < y.length; f += 1 ) for (var d = 0, m = y[f]; d < m.length; d += 1) { var v = m[d], g = p ? v : Ko(v, s), x = h, b = qo([], [v.x, v.y, 0, 1], s); if ( ('viewport' === this.paint.get('circle-pitch-scale') && 'map' === this.paint.get('circle-pitch-alignment') ? (x *= b[3] / a.cameraToCenterDistance) : 'map' === this.paint.get('circle-pitch-scale') && 'viewport' === this.paint.get('circle-pitch-alignment') && (x *= a.cameraToCenterDistance / b[3]), go(c, g, x)) ) return !0; } return !1; }), e ); })(Pi); function Ko(t, e) { var r = qo([], [t.x, t.y, 0, 1], e); return new I(r[0] / r[3], r[1] / r[3]); } var Go = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(mo); qn('HeatmapBucket', Go, { omit: ['layers'] }); var Jo = { paint: new Mi({ 'heatmap-radius': new Ai(gt.paint_heatmap['heatmap-radius']), 'heatmap-weight': new Ai(gt.paint_heatmap['heatmap-weight']), 'heatmap-intensity': new _i(gt.paint_heatmap['heatmap-intensity']), 'heatmap-color': new Ii(gt.paint_heatmap['heatmap-color']), 'heatmap-opacity': new _i(gt.paint_heatmap['heatmap-opacity']), }), }; function Xo(t, e, r, n) { var i = e.width, a = e.height; if (n) { if (n instanceof Uint8ClampedArray) n = new Uint8Array(n.buffer); else if (n.length !== i * a * r) throw new RangeError( 'mismatched image size. expected: ' + n.length + ' but got: ' + i * a * r, ); } else n = new Uint8Array(i * a * r); return (t.width = i), (t.height = a), (t.data = n), t; } function Yo(t, e, r) { var n = e.width, i = e.height; if (n !== t.width || i !== t.height) { var a = Xo({}, { width: n, height: i }, r); Ho( t, a, { x: 0, y: 0 }, { x: 0, y: 0 }, { width: Math.min(t.width, n), height: Math.min(t.height, i) }, r, ), (t.width = n), (t.height = i), (t.data = a.data); } } function Ho(t, e, r, n, i, a) { if (0 === i.width || 0 === i.height) return e; if ( i.width > t.width || i.height > t.height || r.x > t.width - i.width || r.y > t.height - i.height ) throw new RangeError('out of range source coordinates for image copy'); if ( i.width > e.width || i.height > e.height || n.x > e.width - i.width || n.y > e.height - i.height ) throw new RangeError( 'out of range destination coordinates for image copy', ); var o = t.data, s = e.data; if (o === s) throw new Error('srcData equals dstData, so image is already copied'); for (var u = 0; u < i.height; u++) for ( var l = ((r.y + u) * t.width + r.x) * a, p = ((n.y + u) * e.width + n.x) * a, c = 0; c < i.width * a; c++ ) s[p + c] = o[l + c]; return e; } var Wo = function (t, e) { Xo(this, t, 1, e); }; (Wo.prototype.resize = function (t) { Yo(this, t, 1); }), (Wo.prototype.clone = function () { return new Wo( { width: this.width, height: this.height }, new Uint8Array(this.data), ); }), (Wo.copy = function (t, e, r, n, i) { Ho(t, e, r, n, i, 1); }); var $o = function (t, e) { Xo(this, t, 4, e); }; function Qo(t) { var e = {}, r = t.resolution || 256, n = t.clips ? t.clips.length : 1, i = t.image || new $o({ width: r, height: n }); if ((Math.log(r) / Math.LN2) % 1 != 0) throw new Error('width is not a power of 2 - ' + r); var a = function (r, n, a) { e[t.evaluationKey] = a; var o = t.expression.evaluate(e); (i.data[r + n + 0] = Math.floor((255 * o.r) / o.a)), (i.data[r + n + 1] = Math.floor((255 * o.g) / o.a)), (i.data[r + n + 2] = Math.floor((255 * o.b) / o.a)), (i.data[r + n + 3] = Math.floor(255 * o.a)); }; if (t.clips) for (var o = 0, s = 0; o < n; ++o, s += 4 * r) for (var u = 0, l = 0; u < r; u++, l += 4) { var p = u / (r - 1), c = t.clips[o]; a(s, l, c.start * (1 - p) + c.end * p); } else for (var h = 0, f = 0; h < r; h++, f += 4) a(0, f, h / (r - 1)); return i; } ($o.prototype.resize = function (t) { Yo(this, t, 4); }), ($o.prototype.replace = function (t, e) { e ? this.data.set(t) : (this.data = t instanceof Uint8ClampedArray ? new Uint8Array(t.buffer) : t); }), ($o.prototype.clone = function () { return new $o( { width: this.width, height: this.height }, new Uint8Array(this.data), ); }), ($o.copy = function (t, e, r, n, i) { Ho(t, e, r, n, i, 4); }), qn('AlphaImage', Wo), qn('RGBAImage', $o); var ts = (function (t) { function e(e) { t.call(this, e, Jo), this._updateColorRamp(); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.createBucket = function (t) { return new Go(t); }), (e.prototype._handleSpecialPaintPropertyUpdate = function (t) { 'heatmap-color' === t && this._updateColorRamp(); }), (e.prototype._updateColorRamp = function () { (this.colorRamp = Qo({ expression: this._transitionablePaint._values['heatmap-color'].value .expression, evaluationKey: 'heatmapDensity', image: this.colorRamp, })), (this.colorRampTexture = null); }), (e.prototype.resize = function () { this.heatmapFbo && (this.heatmapFbo.destroy(), (this.heatmapFbo = null)); }), (e.prototype.queryRadius = function () { return 0; }), (e.prototype.queryIntersectsFeature = function () { return !1; }), (e.prototype.hasOffscreenPass = function () { return ( 0 !== this.paint.get('heatmap-opacity') && 'none' !== this.visibility ); }), e ); })(Pi), es = { paint: new Mi({ 'hillshade-illumination-direction': new _i( gt.paint_hillshade['hillshade-illumination-direction'], ), 'hillshade-illumination-anchor': new _i( gt.paint_hillshade['hillshade-illumination-anchor'], ), 'hillshade-exaggeration': new _i( gt.paint_hillshade['hillshade-exaggeration'], ), 'hillshade-shadow-color': new _i( gt.paint_hillshade['hillshade-shadow-color'], ), 'hillshade-highlight-color': new _i( gt.paint_hillshade['hillshade-highlight-color'], ), 'hillshade-accent-color': new _i( gt.paint_hillshade['hillshade-accent-color'], ), }), }, rs = (function (t) { function e(e) { t.call(this, e, es); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.hasOffscreenPass = function () { return ( 0 !== this.paint.get('hillshade-exaggeration') && 'none' !== this.visibility ); }), e ); })(Pi), ns = Vi([{ name: 'a_pos', components: 2, type: 'Int16' }], 4).members, is = { exports: {} }; function as(t, e, r) { r = r || 2; var n, i, a, o, s, u, l, p = e && e.length, c = p ? e[0] * r : t.length, h = os(t, 0, c, r, !0), f = []; if (!h || h.next === h.prev) return f; if ( (p && (h = (function (t, e, r, n) { var i, a, o, s = []; for (i = 0, a = e.length; i < a; i++) (o = os( t, e[i] * n, i < a - 1 ? e[i + 1] * n : t.length, n, !1, )) === o.next && (o.steiner = !0), s.push(vs(o)); for (s.sort(fs), i = 0; i < s.length; i++) r = ys(s[i], r); return r; })(t, e, h, r)), t.length > 80 * r) ) { (n = a = t[0]), (i = o = t[1]); for (var y = r; y < c; y += r) (s = t[y]) < n && (n = s), (u = t[y + 1]) < i && (i = u), s > a && (a = s), u > o && (o = u); l = 0 !== (l = Math.max(a - n, o - i)) ? 32767 / l : 0; } return us(h, f, r, n, i, l, 0), f; } function os(t, e, r, n, i) { var a, o; if (i === Bs(t, e, r, n) > 0) for (a = e; a < r; a += n) o = Ms(a, t[a], t[a + 1], o); else for (a = r - n; a >= e; a -= n) o = Ms(a, t[a], t[a + 1], o); return o && ws(o, o.next) && (zs(o), (o = o.next)), o; } function ss(t, e) { if (!t) return t; e || (e = t); var r, n = t; do { if ( ((r = !1), n.steiner || (!ws(n, n.next) && 0 !== bs(n.prev, n, n.next))) ) n = n.next; else { if ((zs(n), (n = e = n.prev) === n.next)) break; r = !0; } } while (r || n !== e); return e; } function us(t, e, r, n, i, a, o) { if (t) { !o && a && (function (t, e, r, n) { var i = t; do { 0 === i.z && (i.z = ms(i.x, i.y, e, r, n)), (i.prevZ = i.prev), (i.nextZ = i.next), (i = i.next); } while (i !== t); (i.prevZ.nextZ = null), (i.prevZ = null), (function (t) { var e, r, n, i, a, o, s, u, l = 1; do { for (r = t, t = null, a = null, o = 0; r; ) { for ( o++, n = r, s = 0, e = 0; e < l && (s++, (n = n.nextZ)); e++ ); for (u = l; s > 0 || (u > 0 && n); ) 0 !== s && (0 === u || !n || r.z <= n.z) ? ((i = r), (r = r.nextZ), s--) : ((i = n), (n = n.nextZ), u--), a ? (a.nextZ = i) : (t = i), (i.prevZ = a), (a = i); r = n; } (a.nextZ = null), (l *= 2); } while (o > 1); })(i); })(t, n, i, a); for (var s, u, l = t; t.prev !== t.next; ) if (((s = t.prev), (u = t.next), a ? ps(t, n, i, a) : ls(t))) e.push((s.i / r) | 0), e.push((t.i / r) | 0), e.push((u.i / r) | 0), zs(t), (t = u.next), (l = u.next); else if ((t = u) === l) { o ? 1 === o ? us((t = cs(ss(t), e, r)), e, r, n, i, a, 2) : 2 === o && hs(t, e, r, n, i, a) : us(ss(t), e, r, n, i, a, 1); break; } } } function ls(t) { var e = t.prev, r = t, n = t.next; if (bs(e, r, n) >= 0) return !1; for ( var i = e.x, a = r.x, o = n.x, s = e.y, u = r.y, l = n.y, p = i < a ? (i < o ? i : o) : a < o ? a : o, c = s < u ? (s < l ? s : l) : u < l ? u : l, h = i > a ? (i > o ? i : o) : a > o ? a : o, f = s > u ? (s > l ? s : l) : u > l ? u : l, y = n.next; y !== e; ) { if ( y.x >= p && y.x <= h && y.y >= c && y.y <= f && gs(i, s, a, u, o, l, y.x, y.y) && bs(y.prev, y, y.next) >= 0 ) return !1; y = y.next; } return !0; } function ps(t, e, r, n) { var i = t.prev, a = t, o = t.next; if (bs(i, a, o) >= 0) return !1; for ( var s = i.x, u = a.x, l = o.x, p = i.y, c = a.y, h = o.y, f = s < u ? (s < l ? s : l) : u < l ? u : l, y = p < c ? (p < h ? p : h) : c < h ? c : h, d = s > u ? (s > l ? s : l) : u > l ? u : l, m = p > c ? (p > h ? p : h) : c > h ? c : h, v = ms(f, y, e, r, n), g = ms(d, m, e, r, n), x = t.prevZ, b = t.nextZ; x && x.z >= v && b && b.z <= g; ) { if ( x.x >= f && x.x <= d && x.y >= y && x.y <= m && x !== i && x !== o && gs(s, p, u, c, l, h, x.x, x.y) && bs(x.prev, x, x.next) >= 0 ) return !1; if ( ((x = x.prevZ), b.x >= f && b.x <= d && b.y >= y && b.y <= m && b !== i && b !== o && gs(s, p, u, c, l, h, b.x, b.y) && bs(b.prev, b, b.next) >= 0) ) return !1; b = b.nextZ; } for (; x && x.z >= v; ) { if ( x.x >= f && x.x <= d && x.y >= y && x.y <= m && x !== i && x !== o && gs(s, p, u, c, l, h, x.x, x.y) && bs(x.prev, x, x.next) >= 0 ) return !1; x = x.prevZ; } for (; b && b.z <= g; ) { if ( b.x >= f && b.x <= d && b.y >= y && b.y <= m && b !== i && b !== o && gs(s, p, u, c, l, h, b.x, b.y) && bs(b.prev, b, b.next) >= 0 ) return !1; b = b.nextZ; } return !0; } function cs(t, e, r) { var n = t; do { var i = n.prev, a = n.next.next; !ws(i, a) && _s(i, n, n.next, a) && Ss(i, a) && Ss(a, i) && (e.push((i.i / r) | 0), e.push((n.i / r) | 0), e.push((a.i / r) | 0), zs(n), zs(n.next), (n = t = a)), (n = n.next); } while (n !== t); return ss(n); } function hs(t, e, r, n, i, a) { var o = t; do { for (var s = o.next.next; s !== o.prev; ) { if (o.i !== s.i && xs(o, s)) { var u = Is(o, s); return ( (o = ss(o, o.next)), (u = ss(u, u.next)), us(o, e, r, n, i, a, 0), void us(u, e, r, n, i, a, 0) ); } s = s.next; } o = o.next; } while (o !== t); } function fs(t, e) { return t.x - e.x; } function ys(t, e) { var r = (function (t, e) { var r, n = e, i = t.x, a = t.y, o = -1 / 0; do { if (a <= n.y && a >= n.next.y && n.next.y !== n.y) { var s = n.x + ((a - n.y) * (n.next.x - n.x)) / (n.next.y - n.y); if ( s <= i && s > o && ((o = s), (r = n.x < n.next.x ? n : n.next), s === i) ) return r; } n = n.next; } while (n !== e); if (!r) return null; var u, l = r, p = r.x, c = r.y, h = 1 / 0; n = r; do { i >= n.x && n.x >= p && i !== n.x && gs(a < c ? i : o, a, p, c, a < c ? o : i, a, n.x, n.y) && ((u = Math.abs(a - n.y) / (i - n.x)), Ss(n, t) && (u < h || (u === h && (n.x > r.x || (n.x === r.x && ds(r, n))))) && ((r = n), (h = u))), (n = n.next); } while (n !== l); return r; })(t, e); if (!r) return e; var n = Is(r, t); return ss(n, n.next), ss(r, r.next); } function ds(t, e) { return bs(t.prev, t, e.prev) < 0 && bs(e.next, t, t.next) < 0; } function ms(t, e, r, n, i) { return ( (t = 1431655765 & ((t = 858993459 & ((t = 252645135 & ((t = 16711935 & ((t = ((t - r) * i) | 0) | (t << 8))) | (t << 4))) | (t << 2))) | (t << 1))) | ((e = 1431655765 & ((e = 858993459 & ((e = 252645135 & ((e = 16711935 & ((e = ((e - n) * i) | 0) | (e << 8))) | (e << 4))) | (e << 2))) | (e << 1))) << 1) ); } function vs(t) { var e = t, r = t; do { (e.x < r.x || (e.x === r.x && e.y < r.y)) && (r = e), (e = e.next); } while (e !== t); return r; } function gs(t, e, r, n, i, a, o, s) { return ( (i - o) * (e - s) >= (t - o) * (a - s) && (t - o) * (n - s) >= (r - o) * (e - s) && (r - o) * (a - s) >= (i - o) * (n - s) ); } function xs(t, e) { return ( t.next.i !== e.i && t.prev.i !== e.i && !(function (t, e) { var r = t; do { if ( r.i !== t.i && r.next.i !== t.i && r.i !== e.i && r.next.i !== e.i && _s(r, r.next, t, e) ) return !0; r = r.next; } while (r !== t); return !1; })(t, e) && ((Ss(t, e) && Ss(e, t) && (function (t, e) { var r = t, n = !1, i = (t.x + e.x) / 2, a = (t.y + e.y) / 2; do { r.y > a != r.next.y > a && r.next.y !== r.y && i < ((r.next.x - r.x) * (a - r.y)) / (r.next.y - r.y) + r.x && (n = !n), (r = r.next); } while (r !== t); return n; })(t, e) && (bs(t.prev, t, e.prev) || bs(t, e.prev, e))) || (ws(t, e) && bs(t.prev, t, t.next) > 0 && bs(e.prev, e, e.next) > 0)) ); } function bs(t, e, r) { return (e.y - t.y) * (r.x - e.x) - (e.x - t.x) * (r.y - e.y); } function ws(t, e) { return t.x === e.x && t.y === e.y; } function _s(t, e, r, n) { var i = ks(bs(t, e, r)), a = ks(bs(t, e, n)), o = ks(bs(r, n, t)), s = ks(bs(r, n, e)); return ( (i !== a && o !== s) || !(0 !== i || !As(t, r, e)) || !(0 !== a || !As(t, n, e)) || !(0 !== o || !As(r, t, n)) || !(0 !== s || !As(r, e, n)) ); } function As(t, e, r) { return ( e.x <= Math.max(t.x, r.x) && e.x >= Math.min(t.x, r.x) && e.y <= Math.max(t.y, r.y) && e.y >= Math.min(t.y, r.y) ); } function ks(t) { return t > 0 ? 1 : t < 0 ? -1 : 0; } function Ss(t, e) { return bs(t.prev, t, t.next) < 0 ? bs(t, e, t.next) >= 0 && bs(t, t.prev, e) >= 0 : bs(t, e, t.prev) < 0 || bs(t, t.next, e) < 0; } function Is(t, e) { var r = new Ps(t.i, t.x, t.y), n = new Ps(e.i, e.x, e.y), i = t.next, a = e.prev; return ( (t.next = e), (e.prev = t), (r.next = i), (i.prev = r), (n.next = r), (r.prev = n), (a.next = n), (n.prev = a), n ); } function Ms(t, e, r, n) { var i = new Ps(t, e, r); return ( n ? ((i.next = n.next), (i.prev = n), (n.next.prev = i), (n.next = i)) : ((i.prev = i), (i.next = i)), i ); } function zs(t) { (t.next.prev = t.prev), (t.prev.next = t.next), t.prevZ && (t.prevZ.nextZ = t.nextZ), t.nextZ && (t.nextZ.prevZ = t.prevZ); } function Ps(t, e, r) { (this.i = t), (this.x = e), (this.y = r), (this.prev = null), (this.next = null), (this.z = 0), (this.prevZ = null), (this.nextZ = null), (this.steiner = !1); } function Bs(t, e, r, n) { for (var i = 0, a = e, o = r - n; a < r; a += n) (i += (t[o] - t[a]) * (t[a + 1] + t[o + 1])), (o = a); return i; } function Cs(t, e, r, n, i) { Es(t, e, r || 0, n || t.length - 1, i || Ts); } function Es(t, e, r, n, i) { for (; n > r; ) { if (n - r > 600) { var a = n - r + 1, o = e - r + 1, s = Math.log(a), u = 0.5 * Math.exp((2 * s) / 3), l = 0.5 * Math.sqrt((s * u * (a - u)) / a) * (o - a / 2 < 0 ? -1 : 1); Es( t, e, Math.max(r, Math.floor(e - (o * u) / a + l)), Math.min(n, Math.floor(e + ((a - o) * u) / a + l)), i, ); } var p = t[e], c = r, h = n; for (Vs(t, r, e), i(t[n], p) > 0 && Vs(t, r, n); c < h; ) { for (Vs(t, c, h), c++, h--; i(t[c], p) < 0; ) c++; for (; i(t[h], p) > 0; ) h--; } 0 === i(t[r], p) ? Vs(t, r, h) : Vs(t, ++h, n), h <= e && (r = h + 1), e <= h && (n = h - 1); } } function Vs(t, e, r) { var n = t[e]; (t[e] = t[r]), (t[r] = n); } function Ts(t, e) { return t < e ? -1 : t > e ? 1 : 0; } function Fs(t, e) { var r = t.length; if (r <= 1) return [t]; for (var n, i, a = [], o = 0; o < r; o++) { var s = v(t[o]); 0 !== s && ((t[o].area = Math.abs(s)), void 0 === i && (i = s < 0), i === s < 0 ? (n && a.push(n), (n = [t[o]])) : n.push(t[o])); } if ((n && a.push(n), e > 1)) for (var u = 0; u < a.length; u++) a[u].length <= e || (Cs(a[u], e, 1, a[u].length - 1, Os), (a[u] = a[u].slice(0, e))); return a; } function Os(t, e) { return e.area - t.area; } function Ls(t, e, r) { for ( var n = r.patternDependencies, i = !1, a = 0, o = e; a < o.length; a += 1 ) { var s = o[a].paint.get(t + '-pattern'); s.isConstant() || (i = !0); var u = s.constantOr(null); u && ((i = !0), (n[u.to] = !0), (n[u.from] = !0)); } return i; } function Ds(t, e, r, n, i) { for (var a = i.patternDependencies, o = 0, s = e; o < s.length; o += 1) { var u = s[o], l = u.paint.get(t + '-pattern').value; if ('constant' !== l.kind) { var p = l.evaluate({ zoom: n - 1 }, r, {}, i.availableImages), c = l.evaluate({ zoom: n }, r, {}, i.availableImages), h = l.evaluate({ zoom: n + 1 }, r, {}, i.availableImages); (c = c && c.name ? c.name : c), (h = h && h.name ? h.name : h), (a[(p = p && p.name ? p.name : p)] = !0), (a[c] = !0), (a[h] = !0), (r.patterns[u.id] = { min: p, mid: c, max: h }); } } return r; } (is.exports = as), (is.exports.default = as), (as.deviation = function (t, e, r, n) { var i = e && e.length, a = Math.abs(Bs(t, 0, i ? e[0] * r : t.length, r)); if (i) for (var o = 0, s = e.length; o < s; o++) a -= Math.abs( Bs(t, e[o] * r, o < s - 1 ? e[o + 1] * r : t.length, r), ); var u = 0; for (o = 0; o < n.length; o += 3) { var l = n[o] * r, p = n[o + 1] * r, c = n[o + 2] * r; u += Math.abs( (t[l] - t[c]) * (t[p + 1] - t[l + 1]) - (t[l] - t[p]) * (t[c + 1] - t[l + 1]), ); } return 0 === a && 0 === u ? 0 : Math.abs((u - a) / a); }), (as.flatten = function (t) { for ( var e = t[0][0].length, r = { vertices: [], holes: [], dimensions: e }, n = 0, i = 0; i < t.length; i++ ) { for (var a = 0; a < t[i].length; a++) for (var o = 0; o < e; o++) r.vertices.push(t[i][a][o]); i > 0 && r.holes.push((n += t[i - 1].length)); } return r; }); var js = function (t) { (this.zoom = t.zoom), (this.overscaling = t.overscaling), (this.layers = t.layers), (this.layerIds = this.layers.map(function (t) { return t.id; })), (this.index = t.index), (this.hasPattern = !1), (this.patternFeatures = []), (this.layoutVertexArray = new ma()), (this.indexArray = new za()), (this.indexArray2 = new Pa()), (this.programConfigurations = new oo(t.layers, t.zoom)), (this.segments = new Ea()), (this.segments2 = new Ea()), (this.stateDependentLayerIds = this.layers .filter(function (t) { return t.isStateDependent(); }) .map(function (t) { return t.id; })); }; (js.prototype.populate = function (t, e, r) { this.hasPattern = Ls('fill', this.layers, e); for ( var n = this.layers[0].layout.get('fill-sort-key'), i = !n.isConstant(), a = [], o = 0, s = t; o < s.length; o += 1 ) { var u = s[o], l = u.feature, p = u.id, c = u.index, h = u.sourceLayerIndex, f = this.layers[0]._featureFilter.needGeometry, y = fo(l, f); if (this.layers[0]._featureFilter.filter(new fi(this.zoom), y, r)) { var d = i ? n.evaluate(y, {}, r, e.availableImages) : void 0, m = { id: p, properties: l.properties, type: l.type, sourceLayerIndex: h, index: c, geometry: f ? y.geometry : ho(l), patterns: {}, sortKey: d, }; a.push(m); } } i && a.sort(function (t, e) { return t.sortKey - e.sortKey; }); for (var v = 0, g = a; v < g.length; v += 1) { var x = g[v], b = x.geometry, w = x.index, _ = x.sourceLayerIndex; if (this.hasPattern) { var A = Ds('fill', this.layers, x, this.zoom, e); this.patternFeatures.push(A); } else this.addFeature(x, b, w, r, {}); e.featureIndex.insert(t[w].feature, b, w, _, this.index); } }), (js.prototype.update = function (t, e, r) { this.stateDependentLayers.length && this.programConfigurations.updatePaintArrays( t, e, this.stateDependentLayers, r, ); }), (js.prototype.addFeatures = function (t, e, r) { for (var n = 0, i = this.patternFeatures; n < i.length; n += 1) { var a = i[n]; this.addFeature(a, a.geometry, a.index, e, r); } }), (js.prototype.isEmpty = function () { return 0 === this.layoutVertexArray.length; }), (js.prototype.uploadPending = function () { return !this.uploaded || this.programConfigurations.needsUpload; }), (js.prototype.upload = function (t) { this.uploaded || ((this.layoutVertexBuffer = t.createVertexBuffer( this.layoutVertexArray, ns, )), (this.indexBuffer = t.createIndexBuffer(this.indexArray)), (this.indexBuffer2 = t.createIndexBuffer(this.indexArray2))), this.programConfigurations.upload(t), (this.uploaded = !0); }), (js.prototype.destroy = function () { this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.indexBuffer2.destroy(), this.programConfigurations.destroy(), this.segments.destroy(), this.segments2.destroy()); }), (js.prototype.addFeature = function (t, e, r, n, i) { for (var a = 0, o = Fs(e, 500); a < o.length; a += 1) { for (var s = o[a], u = 0, l = 0, p = s; l < p.length; l += 1) u += p[l].length; for ( var c = this.segments.prepareSegment( u, this.layoutVertexArray, this.indexArray, ), h = c.vertexLength, f = [], y = [], d = 0, m = s; d < m.length; d += 1 ) { var v = m[d]; if (0 !== v.length) { v !== s[0] && y.push(f.length / 2); var g = this.segments2.prepareSegment( v.length, this.layoutVertexArray, this.indexArray2, ), x = g.vertexLength; this.layoutVertexArray.emplaceBack(v[0].x, v[0].y), this.indexArray2.emplaceBack(x + v.length - 1, x), f.push(v[0].x), f.push(v[0].y); for (var b = 1; b < v.length; b++) this.layoutVertexArray.emplaceBack(v[b].x, v[b].y), this.indexArray2.emplaceBack(x + b - 1, x + b), f.push(v[b].x), f.push(v[b].y); (g.vertexLength += v.length), (g.primitiveLength += v.length); } } for (var w = is.exports(f, y), _ = 0; _ < w.length; _ += 3) this.indexArray.emplaceBack(h + w[_], h + w[_ + 1], h + w[_ + 2]); (c.vertexLength += u), (c.primitiveLength += w.length / 3); } this.programConfigurations.populatePaintArrays( this.layoutVertexArray.length, t, r, i, n, ); }), qn('FillBucket', js, { omit: ['layers', 'patternFeatures'] }); var Rs = new Mi({ 'fill-sort-key': new Ai(gt.layout_fill['fill-sort-key']), }), Us = { paint: new Mi({ 'fill-antialias': new _i(gt.paint_fill['fill-antialias']), 'fill-opacity': new Ai(gt.paint_fill['fill-opacity']), 'fill-color': new Ai(gt.paint_fill['fill-color']), 'fill-outline-color': new Ai(gt.paint_fill['fill-outline-color']), 'fill-translate': new _i(gt.paint_fill['fill-translate']), 'fill-translate-anchor': new _i( gt.paint_fill['fill-translate-anchor'], ), 'fill-pattern': new ki(gt.paint_fill['fill-pattern']), }), layout: Rs, }, qs = (function (t) { function e(e) { t.call(this, e, Us); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.recalculate = function (e, r) { t.prototype.recalculate.call(this, e, r); var n = this.paint._values['fill-outline-color']; 'constant' === n.value.kind && void 0 === n.value.value && (this.paint._values['fill-outline-color'] = this.paint._values['fill-color']); }), (e.prototype.createBucket = function (t) { return new js(t); }), (e.prototype.queryRadius = function () { return Po(this.paint.get('fill-translate')); }), (e.prototype.queryIntersectsFeature = function (t, e, r, n, i, a, o) { return xo( Bo( t, this.paint.get('fill-translate'), this.paint.get('fill-translate-anchor'), a.angle, o, ), n, ); }), (e.prototype.isTileClipped = function () { return !0; }), e ); })(Pi), Ns = Vi( [ { name: 'a_pos', components: 2, type: 'Int16' }, { name: 'a_normal_ed', components: 4, type: 'Int16' }, ], 4, ), Zs = Vi([{ name: 'a_centroid', components: 2, type: 'Int16' }], 4), Ks = Ns.members, Gs = {}, Js = I, Xs = Ys; function Ys(t, e, r, n, i) { (this.properties = {}), (this.extent = r), (this.type = 0), (this._pbf = t), (this._geometry = -1), (this._keys = n), (this._values = i), t.readFields(Hs, this, e); } function Hs(t, e, r) { 1 == t ? (e.id = r.readVarint()) : 2 == t ? (function (t, e) { for (var r = t.readVarint() + t.pos; t.pos < r; ) { var n = e._keys[t.readVarint()], i = e._values[t.readVarint()]; e.properties[n] = i; } })(r, e) : 3 == t ? (e.type = r.readVarint()) : 4 == t && (e._geometry = r.pos); } function Ws(t) { for (var e, r, n = 0, i = 0, a = t.length, o = a - 1; i < a; o = i++) n += ((r = t[o]).x - (e = t[i]).x) * (e.y + r.y); return n; } (Ys.types = ['Unknown', 'Point', 'LineString', 'Polygon']), (Ys.prototype.loadGeometry = function () { var t = this._pbf; t.pos = this._geometry; for ( var e, r = t.readVarint() + t.pos, n = 1, i = 0, a = 0, o = 0, s = []; t.pos < r; ) { if (i <= 0) { var u = t.readVarint(); (n = 7 & u), (i = u >> 3); } if ((i--, 1 === n || 2 === n)) (a += t.readSVarint()), (o += t.readSVarint()), 1 === n && (e && s.push(e), (e = [])), e.push(new Js(a, o)); else { if (7 !== n) throw new Error('unknown command ' + n); e && e.push(e[0].clone()); } } return e && s.push(e), s; }), (Ys.prototype.bbox = function () { var t = this._pbf; t.pos = this._geometry; for ( var e = t.readVarint() + t.pos, r = 1, n = 0, i = 0, a = 0, o = 1 / 0, s = -1 / 0, u = 1 / 0, l = -1 / 0; t.pos < e; ) { if (n <= 0) { var p = t.readVarint(); (r = 7 & p), (n = p >> 3); } if ((n--, 1 === r || 2 === r)) (i += t.readSVarint()) < o && (o = i), i > s && (s = i), (a += t.readSVarint()) < u && (u = a), a > l && (l = a); else if (7 !== r) throw new Error('unknown command ' + r); } return [o, u, s, l]; }), (Ys.prototype.toGeoJSON = function (t, e, r) { var n, i, a = this.extent * Math.pow(2, r), o = this.extent * t, s = this.extent * e, u = this.loadGeometry(), l = Ys.types[this.type]; function p(t) { for (var e = 0; e < t.length; e++) { var r = t[e]; t[e] = [ (360 * (r.x + o)) / a - 180, (360 / Math.PI) * Math.atan( Math.exp(((180 - (360 * (r.y + s)) / a) * Math.PI) / 180), ) - 90, ]; } } switch (this.type) { case 1: var c = []; for (n = 0; n < u.length; n++) c[n] = u[n][0]; p((u = c)); break; case 2: for (n = 0; n < u.length; n++) p(u[n]); break; case 3: for ( u = (function (t) { var e = t.length; if (e <= 1) return [t]; for (var r, n, i = [], a = 0; a < e; a++) { var o = Ws(t[a]); 0 !== o && (void 0 === n && (n = o < 0), n === o < 0 ? (r && i.push(r), (r = [t[a]])) : r.push(t[a])); } return r && i.push(r), i; })(u), n = 0; n < u.length; n++ ) for (i = 0; i < u[n].length; i++) p(u[n][i]); } 1 === u.length ? (u = u[0]) : (l = 'Multi' + l); var h = { type: 'Feature', geometry: { type: l, coordinates: u }, properties: this.properties, }; return 'id' in this && (h.id = this.id), h; }); var $s = Xs, Qs = tu; function tu(t, e) { (this.version = 1), (this.name = null), (this.extent = 4096), (this.length = 0), (this._pbf = t), (this._keys = []), (this._values = []), (this._features = []), t.readFields(eu, this, e), (this.length = this._features.length); } function eu(t, e, r) { 15 === t ? (e.version = r.readVarint()) : 1 === t ? (e.name = r.readString()) : 5 === t ? (e.extent = r.readVarint()) : 2 === t ? e._features.push(r.pos) : 3 === t ? e._keys.push(r.readString()) : 4 === t && e._values.push( (function (t) { for (var e = null, r = t.readVarint() + t.pos; t.pos < r; ) { var n = t.readVarint() >> 3; e = 1 === n ? t.readString() : 2 === n ? t.readFloat() : 3 === n ? t.readDouble() : 4 === n ? t.readVarint64() : 5 === n ? t.readVarint() : 6 === n ? t.readSVarint() : 7 === n ? t.readBoolean() : null; } return e; })(r), ); } tu.prototype.feature = function (t) { if (t < 0 || t >= this._features.length) throw new Error('feature index out of bounds'); this._pbf.pos = this._features[t]; var e = this._pbf.readVarint() + this._pbf.pos; return new $s(this._pbf, e, this.extent, this._keys, this._values); }; var ru = Qs; function nu(t, e, r) { if (3 === t) { var n = new ru(r, r.readVarint() + r.pos); n.length && (e[n.name] = n); } } (Gs.VectorTile = function (t, e) { this.layers = t.readFields(nu, {}, e); }), (Gs.VectorTileFeature = Xs), (Gs.VectorTileLayer = Qs); var iu = Gs.VectorTileFeature.types, au = Math.pow(2, 13); function ou(t, e, r, n, i, a, o, s) { t.emplaceBack( e, r, 2 * Math.floor(n * au) + o, i * au * 2, a * au * 2, Math.round(s), ); } var su = function (t) { (this.zoom = t.zoom), (this.overscaling = t.overscaling), (this.layers = t.layers), (this.layerIds = this.layers.map(function (t) { return t.id; })), (this.index = t.index), (this.hasPattern = !1), (this.layoutVertexArray = new va()), (this.centroidVertexArray = new fa()), (this.indexArray = new za()), (this.programConfigurations = new oo(t.layers, t.zoom)), (this.segments = new Ea()), (this.stateDependentLayerIds = this.layers .filter(function (t) { return t.isStateDependent(); }) .map(function (t) { return t.id; })); }; function uu(t, e) { return ( (t.x === e.x && (t.x < 0 || t.x > lo)) || (t.y === e.y && (t.y < 0 || t.y > lo)) ); } (su.prototype.populate = function (t, e, r) { (this.features = []), (this.hasPattern = Ls('fill-extrusion', this.layers, e)); for (var n = 0, i = t; n < i.length; n += 1) { var a = i[n], o = a.feature, s = a.id, u = a.index, l = a.sourceLayerIndex, p = this.layers[0]._featureFilter.needGeometry, c = fo(o, p); if (this.layers[0]._featureFilter.filter(new fi(this.zoom), c, r)) { var h = { id: s, sourceLayerIndex: l, index: u, geometry: p ? c.geometry : ho(o), properties: o.properties, type: o.type, patterns: {}, }; this.hasPattern ? this.features.push( Ds('fill-extrusion', this.layers, h, this.zoom, e), ) : this.addFeature(h, h.geometry, u, r, {}), e.featureIndex.insert(o, h.geometry, u, l, this.index, !0); } } }), (su.prototype.addFeatures = function (t, e, r) { for (var n = 0, i = this.features; n < i.length; n += 1) { var a = i[n]; this.addFeature(a, a.geometry, a.index, e, r); } }), (su.prototype.update = function (t, e, r) { this.stateDependentLayers.length && this.programConfigurations.updatePaintArrays( t, e, this.stateDependentLayers, r, ); }), (su.prototype.isEmpty = function () { return ( 0 === this.layoutVertexArray.length && 0 === this.centroidVertexArray.length ); }), (su.prototype.uploadPending = function () { return !this.uploaded || this.programConfigurations.needsUpload; }), (su.prototype.upload = function (t) { this.uploaded || ((this.layoutVertexBuffer = t.createVertexBuffer( this.layoutVertexArray, Ks, )), (this.centroidVertexBuffer = t.createVertexBuffer( this.centroidVertexArray, Zs.members, !0, )), (this.indexBuffer = t.createIndexBuffer(this.indexArray))), this.programConfigurations.upload(t), (this.uploaded = !0); }), (su.prototype.destroy = function () { this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.programConfigurations.destroy(), this.segments.destroy(), this.centroidVertexBuffer.destroy()); }), (su.prototype.addFeature = function (t, e, r, n, i) { for ( var a = { x: 0, y: 0, vertexCount: 0 }, o = 0, s = Fs(e, 500); o < s.length; o += 1 ) { for (var u = s[o], l = 0, p = 0, c = u; p < c.length; p += 1) l += c[p].length; for ( var h = this.segments.prepareSegment( 4, this.layoutVertexArray, this.indexArray, ), f = 0, y = u; f < y.length; f += 1 ) { var d = y[f]; if ( 0 !== d.length && !( (V = d).every(function (t) { return t.x < 0; }) || V.every(function (t) { return t.x > lo; }) || V.every(function (t) { return t.y < 0; }) || V.every(function (t) { return t.y > lo; }) ) ) for (var m = 0, v = 0; v < d.length; v++) { var g = d[v]; if (v >= 1) { var x = d[v - 1]; if (!uu(g, x)) { h.vertexLength + 4 > Ea.MAX_VERTEX_ARRAY_LENGTH && (h = this.segments.prepareSegment( 4, this.layoutVertexArray, this.indexArray, )); var b = g.sub(x)._perp()._unit(), w = x.dist(g); m + w > 32768 && (m = 0), ou(this.layoutVertexArray, g.x, g.y, b.x, b.y, 0, 0, m), ou(this.layoutVertexArray, g.x, g.y, b.x, b.y, 0, 1, m), (a.x += 2 * g.x), (a.y += 2 * g.y), (a.vertexCount += 2), ou( this.layoutVertexArray, x.x, x.y, b.x, b.y, 0, 0, (m += w), ), ou(this.layoutVertexArray, x.x, x.y, b.x, b.y, 0, 1, m), (a.x += 2 * x.x), (a.y += 2 * x.y), (a.vertexCount += 2); var _ = h.vertexLength; this.indexArray.emplaceBack(_, _ + 2, _ + 1), this.indexArray.emplaceBack(_ + 1, _ + 2, _ + 3), (h.vertexLength += 4), (h.primitiveLength += 2); } } } } if ( (h.vertexLength + l > Ea.MAX_VERTEX_ARRAY_LENGTH && (h = this.segments.prepareSegment( l, this.layoutVertexArray, this.indexArray, )), 'Polygon' === iu[t.type]) ) { for ( var A = [], k = [], S = h.vertexLength, I = 0, M = u; I < M.length; I += 1 ) { var z = M[I]; if (0 !== z.length) { z !== u[0] && k.push(A.length / 2); for (var P = 0; P < z.length; P++) { var B = z[P]; ou(this.layoutVertexArray, B.x, B.y, 0, 0, 1, 1, 0), (a.x += B.x), (a.y += B.y), (a.vertexCount += 1), A.push(B.x), A.push(B.y); } } } for (var C = is.exports(A, k), E = 0; E < C.length; E += 3) this.indexArray.emplaceBack(S + C[E], S + C[E + 2], S + C[E + 1]); (h.primitiveLength += C.length / 3), (h.vertexLength += l); } } for (var V, T = 0; T < a.vertexCount; T++) this.centroidVertexArray.emplaceBack( Math.floor(a.x / a.vertexCount), Math.floor(a.y / a.vertexCount), ); this.programConfigurations.populatePaintArrays( this.layoutVertexArray.length, t, r, i, n, ); }), qn('FillExtrusionBucket', su, { omit: ['layers', 'features'] }); var lu = { paint: new Mi({ 'fill-extrusion-opacity': new _i( gt['paint_fill-extrusion']['fill-extrusion-opacity'], ), 'fill-extrusion-color': new Ai( gt['paint_fill-extrusion']['fill-extrusion-color'], ), 'fill-extrusion-translate': new _i( gt['paint_fill-extrusion']['fill-extrusion-translate'], ), 'fill-extrusion-translate-anchor': new _i( gt['paint_fill-extrusion']['fill-extrusion-translate-anchor'], ), 'fill-extrusion-pattern': new ki( gt['paint_fill-extrusion']['fill-extrusion-pattern'], ), 'fill-extrusion-height': new Ai( gt['paint_fill-extrusion']['fill-extrusion-height'], ), 'fill-extrusion-base': new Ai( gt['paint_fill-extrusion']['fill-extrusion-base'], ), 'fill-extrusion-vertical-gradient': new _i( gt['paint_fill-extrusion']['fill-extrusion-vertical-gradient'], ), }), }, pu = (function (t) { function e(e) { t.call(this, e, lu); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.createBucket = function (t) { return new su(t); }), (e.prototype.queryRadius = function () { return Po(this.paint.get('fill-extrusion-translate')); }), (e.prototype.is3D = function () { return !0; }), (e.prototype.queryIntersectsFeature = function ( t, e, r, n, i, a, o, s, ) { var u = Bo( t, this.paint.get('fill-extrusion-translate'), this.paint.get('fill-extrusion-translate-anchor'), a.angle, o, ), l = this.paint.get('fill-extrusion-height').evaluate(e, r), p = this.paint.get('fill-extrusion-base').evaluate(e, r), c = (function (t, e, r, n) { for (var i = [], a = 0, o = t; a < o.length; a += 1) { var s = o[a], u = [s.x, s.y, 0, 1]; qo(u, u, e), i.push(new I(u[0] / u[3], u[1] / u[3])); } return i; })(u, s), h = (function (t, e, r, n) { for ( var i = [], a = [], o = n[8] * e, s = n[9] * e, u = n[10] * e, l = n[11] * e, p = n[8] * r, c = n[9] * r, h = n[10] * r, f = n[11] * r, y = 0, d = t; y < d.length; y += 1 ) { for ( var m = [], v = [], g = 0, x = d[y]; g < x.length; g += 1 ) { var b = x[g], w = b.x, _ = b.y, A = n[0] * w + n[4] * _ + n[12], k = n[1] * w + n[5] * _ + n[13], S = n[2] * w + n[6] * _ + n[14], M = n[3] * w + n[7] * _ + n[15], z = S + u, P = M + l, B = A + p, C = k + c, E = S + h, V = M + f, T = new I((A + o) / P, (k + s) / P); (T.z = z / P), m.push(T); var F = new I(B / V, C / V); (F.z = E / V), v.push(F); } i.push(m), a.push(v); } return [i, a]; })(n, p, l, s); return (function (t, e, r) { var n = 1 / 0; xo(r, e) && (n = hu(r, e[0])); for (var i = 0; i < e.length; i++) for (var a = e[i], o = t[i], s = 0; s < a.length - 1; s++) { var u = a[s], l = [u, a[s + 1], o[s + 1], o[s], u]; vo(r, l) && (n = Math.min(n, hu(r, l))); } return n !== 1 / 0 && n; })(h[0], h[1], c); }), e ); })(Pi); function cu(t, e) { return t.x * e.x + t.y * e.y; } function hu(t, e) { if (1 === t.length) { for (var r, n = 0, i = e[n++]; !r || i.equals(r); ) if (!(r = e[n++])) return 1 / 0; for (; n < e.length; n++) { var a = e[n], o = t[0], s = r.sub(i), u = a.sub(i), l = o.sub(i), p = cu(s, s), c = cu(s, u), h = cu(u, u), f = cu(l, s), y = cu(l, u), d = p * h - c * c, m = (h * f - c * y) / d, v = (p * y - c * f) / d, g = i.z * (1 - m - v) + r.z * m + a.z * v; if (isFinite(g)) return g; } return 1 / 0; } for (var x = 1 / 0, b = 0, w = e; b < w.length; b += 1) x = Math.min(x, w[b].z); return x; } var fu = Vi( [ { name: 'a_pos_normal', components: 2, type: 'Int16' }, { name: 'a_data', components: 4, type: 'Uint8' }, ], 4, ).members, yu = Vi([ { name: 'a_uv_x', components: 1, type: 'Float32' }, { name: 'a_split_index', components: 1, type: 'Float32' }, ]).members, du = Gs.VectorTileFeature.types, mu = Math.cos((Math.PI / 180) * 37.5), vu = Math.pow(2, 14) / 0.5, gu = function (t) { var e = this; (this.zoom = t.zoom), (this.overscaling = t.overscaling), (this.layers = t.layers), (this.layerIds = this.layers.map(function (t) { return t.id; })), (this.index = t.index), (this.hasPattern = !1), (this.patternFeatures = []), (this.lineClipsArray = []), (this.gradients = {}), this.layers.forEach(function (t) { e.gradients[t.id] = {}; }), (this.layoutVertexArray = new ga()), (this.layoutVertexArray2 = new xa()), (this.indexArray = new za()), (this.programConfigurations = new oo(t.layers, t.zoom)), (this.segments = new Ea()), (this.maxLineLength = 0), (this.stateDependentLayerIds = this.layers .filter(function (t) { return t.isStateDependent(); }) .map(function (t) { return t.id; })); }; (gu.prototype.populate = function (t, e, r) { this.hasPattern = Ls('line', this.layers, e); for ( var n = this.layers[0].layout.get('line-sort-key'), i = !n.isConstant(), a = [], o = 0, s = t; o < s.length; o += 1 ) { var u = s[o], l = u.feature, p = u.id, c = u.index, h = u.sourceLayerIndex, f = this.layers[0]._featureFilter.needGeometry, y = fo(l, f); if (this.layers[0]._featureFilter.filter(new fi(this.zoom), y, r)) { var d = i ? n.evaluate(y, {}, r) : void 0, m = { id: p, properties: l.properties, type: l.type, sourceLayerIndex: h, index: c, geometry: f ? y.geometry : ho(l), patterns: {}, sortKey: d, }; a.push(m); } } i && a.sort(function (t, e) { return t.sortKey - e.sortKey; }); for (var v = 0, g = a; v < g.length; v += 1) { var x = g[v], b = x.geometry, w = x.index, _ = x.sourceLayerIndex; if (this.hasPattern) { var A = Ds('line', this.layers, x, this.zoom, e); this.patternFeatures.push(A); } else this.addFeature(x, b, w, r, {}); e.featureIndex.insert(t[w].feature, b, w, _, this.index); } }), (gu.prototype.update = function (t, e, r) { this.stateDependentLayers.length && this.programConfigurations.updatePaintArrays( t, e, this.stateDependentLayers, r, ); }), (gu.prototype.addFeatures = function (t, e, r) { for (var n = 0, i = this.patternFeatures; n < i.length; n += 1) { var a = i[n]; this.addFeature(a, a.geometry, a.index, e, r); } }), (gu.prototype.isEmpty = function () { return 0 === this.layoutVertexArray.length; }), (gu.prototype.uploadPending = function () { return !this.uploaded || this.programConfigurations.needsUpload; }), (gu.prototype.upload = function (t) { this.uploaded || (0 !== this.layoutVertexArray2.length && (this.layoutVertexBuffer2 = t.createVertexBuffer( this.layoutVertexArray2, yu, )), (this.layoutVertexBuffer = t.createVertexBuffer( this.layoutVertexArray, fu, )), (this.indexBuffer = t.createIndexBuffer(this.indexArray))), this.programConfigurations.upload(t), (this.uploaded = !0); }), (gu.prototype.destroy = function () { this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.programConfigurations.destroy(), this.segments.destroy()); }), (gu.prototype.lineFeatureClips = function (t) { if ( t.properties && Object.prototype.hasOwnProperty.call( t.properties, 'mapbox_clip_start', ) && Object.prototype.hasOwnProperty.call(t.properties, 'mapbox_clip_end') ) return { start: +t.properties.mapbox_clip_start, end: +t.properties.mapbox_clip_end, }; }), (gu.prototype.addFeature = function (t, e, r, n, i) { var a = this.layers[0].layout, o = a.get('line-join').evaluate(t, {}), s = a.get('line-cap'), u = a.get('line-miter-limit'), l = a.get('line-round-limit'); this.lineClips = this.lineFeatureClips(t); for (var p = 0, c = e; p < c.length; p += 1) this.addLine(c[p], t, o, s, u, l); this.programConfigurations.populatePaintArrays( this.layoutVertexArray.length, t, r, i, n, ); }), (gu.prototype.addLine = function (t, e, r, n, i, a) { if ( ((this.distance = 0), (this.scaledDistance = 0), (this.totalDistance = 0), this.lineClips) ) { this.lineClipsArray.push(this.lineClips); for (var o = 0; o < t.length - 1; o++) this.totalDistance += t[o].dist(t[o + 1]); this.updateScaledDistance(), (this.maxLineLength = Math.max( this.maxLineLength, this.totalDistance, )); } for ( var s = 'Polygon' === du[e.type], u = t.length; u >= 2 && t[u - 1].equals(t[u - 2]); ) u--; for (var l = 0; l < u - 1 && t[l].equals(t[l + 1]); ) l++; if (!(u < (s ? 3 : 2))) { 'bevel' === r && (i = 1.05); var p, c, h, f, y, d = this.overscaling <= 16 ? 122880 / (512 * this.overscaling) : 0, m = this.segments.prepareSegment( 10 * u, this.layoutVertexArray, this.indexArray, ); (this.e1 = this.e2 = -1), s && (y = t[l] .sub((p = t[u - 2])) ._unit() ._perp()); for (var v = l; v < u; v++) if ( !(h = v === u - 1 ? (s ? t[l + 1] : void 0) : t[v + 1]) || !t[v].equals(h) ) { y && (f = y), p && (c = p), (p = t[v]), (y = h ? h.sub(p)._unit()._perp() : f); var g = (f = f || y).add(y); (0 === g.x && 0 === g.y) || g._unit(); var x = f.x * y.x + f.y * y.y, b = g.x * y.x + g.y * y.y, w = 0 !== b ? 1 / b : 1 / 0, _ = 2 * Math.sqrt(2 - 2 * b), A = b < mu && c && h, k = f.x * y.y - f.y * y.x > 0; if (A && v > l) { var S = p.dist(c); if (S > 2 * d) { var I = p.sub( p .sub(c) ._mult(d / S) ._round(), ); this.updateDistance(c, I), this.addCurrentVertex(I, f, 0, 0, m), (c = I); } } var M = c && h, z = M ? r : s ? 'butt' : n; if ( (M && 'round' === z && (w < a ? (z = 'miter') : w <= 2 && (z = 'fakeround')), 'miter' === z && w > i && (z = 'bevel'), 'bevel' === z && (w > 2 && (z = 'flipbevel'), w < i && (z = 'miter')), c && this.updateDistance(c, p), 'miter' === z) ) g._mult(w), this.addCurrentVertex(p, g, 0, 0, m); else if ('flipbevel' === z) { if (w > 100) g = y.mult(-1); else { var P = (w * f.add(y).mag()) / f.sub(y).mag(); g._perp()._mult(P * (k ? -1 : 1)); } this.addCurrentVertex(p, g, 0, 0, m), this.addCurrentVertex(p, g.mult(-1), 0, 0, m); } else if ('bevel' === z || 'fakeround' === z) { var B = -Math.sqrt(w * w - 1), C = k ? B : 0, E = k ? 0 : B; if ( (c && this.addCurrentVertex(p, f, C, E, m), 'fakeround' === z) ) for ( var V = Math.round((180 * _) / Math.PI / 20), T = 1; T < V; T++ ) { var F = T / V; if (0.5 !== F) { var O = F - 0.5; F += F * O * (F - 1) * ((1.0904 + x * (x * (3.55645 - 1.43519 * x) - 3.2452)) * O * O + (0.848013 + x * (0.215638 * x - 1.06021))); } var L = y .sub(f) ._mult(F) ._add(f) ._unit() ._mult(k ? -1 : 1); this.addHalfVertex(p, L.x, L.y, !1, k, 0, m); } h && this.addCurrentVertex(p, y, -C, -E, m); } else if ('butt' === z) this.addCurrentVertex(p, g, 0, 0, m); else if ('square' === z) { var D = c ? 1 : -1; this.addCurrentVertex(p, g, D, D, m); } else 'round' === z && (c && (this.addCurrentVertex(p, f, 0, 0, m), this.addCurrentVertex(p, f, 1, 1, m, !0)), h && (this.addCurrentVertex(p, y, -1, -1, m, !0), this.addCurrentVertex(p, y, 0, 0, m))); if (A && v < u - 1) { var j = p.dist(h); if (j > 2 * d) { var R = p.add( h .sub(p) ._mult(d / j) ._round(), ); this.updateDistance(p, R), this.addCurrentVertex(R, y, 0, 0, m), (p = R); } } } } }), (gu.prototype.addCurrentVertex = function (t, e, r, n, i, a) { void 0 === a && (a = !1); var o = e.y * n - e.x, s = -e.y - e.x * n; this.addHalfVertex(t, e.x + e.y * r, e.y - e.x * r, a, !1, r, i), this.addHalfVertex(t, o, s, a, !0, -n, i), this.distance > vu / 2 && 0 === this.totalDistance && ((this.distance = 0), this.addCurrentVertex(t, e, r, n, i, a)); }), (gu.prototype.addHalfVertex = function (t, e, r, n, i, a, o) { var s = 0.5 * (this.lineClips ? this.scaledDistance * (vu - 1) : this.scaledDistance); this.layoutVertexArray.emplaceBack( (t.x << 1) + (n ? 1 : 0), (t.y << 1) + (i ? 1 : 0), Math.round(63 * e) + 128, Math.round(63 * r) + 128, (1 + (0 === a ? 0 : a < 0 ? -1 : 1)) | ((63 & s) << 2), s >> 6, ), this.lineClips && this.layoutVertexArray2.emplaceBack( (this.scaledDistance - this.lineClips.start) / (this.lineClips.end - this.lineClips.start), this.lineClipsArray.length, ); var u = o.vertexLength++; this.e1 >= 0 && this.e2 >= 0 && (this.indexArray.emplaceBack(this.e1, this.e2, u), o.primitiveLength++), i ? (this.e2 = u) : (this.e1 = u); }), (gu.prototype.updateScaledDistance = function () { this.scaledDistance = this.lineClips ? this.lineClips.start + ((this.lineClips.end - this.lineClips.start) * this.distance) / this.totalDistance : this.distance; }), (gu.prototype.updateDistance = function (t, e) { (this.distance += t.dist(e)), this.updateScaledDistance(); }), qn('LineBucket', gu, { omit: ['layers', 'patternFeatures'] }); var xu = new Mi({ 'line-cap': new _i(gt.layout_line['line-cap']), 'line-join': new Ai(gt.layout_line['line-join']), 'line-miter-limit': new _i(gt.layout_line['line-miter-limit']), 'line-round-limit': new _i(gt.layout_line['line-round-limit']), 'line-sort-key': new Ai(gt.layout_line['line-sort-key']), }), bu = { paint: new Mi({ 'line-opacity': new Ai(gt.paint_line['line-opacity']), 'line-color': new Ai(gt.paint_line['line-color']), 'line-translate': new _i(gt.paint_line['line-translate']), 'line-translate-anchor': new _i( gt.paint_line['line-translate-anchor'], ), 'line-width': new Ai(gt.paint_line['line-width']), 'line-gap-width': new Ai(gt.paint_line['line-gap-width']), 'line-offset': new Ai(gt.paint_line['line-offset']), 'line-blur': new Ai(gt.paint_line['line-blur']), 'line-dasharray': new Si(gt.paint_line['line-dasharray']), 'line-pattern': new ki(gt.paint_line['line-pattern']), 'line-gradient': new Ii(gt.paint_line['line-gradient']), }), layout: xu, }, wu = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.possiblyEvaluate = function (e, r) { return ( (r = new fi(Math.floor(r.zoom), { now: r.now, fadeDuration: r.fadeDuration, zoomHistory: r.zoomHistory, transition: r.transition, })), t.prototype.possiblyEvaluate.call(this, e, r) ); }), (e.prototype.evaluate = function (e, r, n, i) { return ( (r = s({}, r, { zoom: Math.floor(r.zoom) })), t.prototype.evaluate.call(this, e, r, n, i) ); }), e ); })(Ai), _u = new wu(bu.paint.properties['line-width'].specification); _u.useIntegerZoom = !0; var Au = (function (t) { function e(e) { t.call(this, e, bu), (this.gradientVersion = 0); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._handleSpecialPaintPropertyUpdate = function (t) { 'line-gradient' === t && ((this.stepInterpolant = this._transitionablePaint._values['line-gradient'].value .expression._styleExpression.expression instanceof je), (this.gradientVersion = (this.gradientVersion + 1) % Number.MAX_SAFE_INTEGER)); }), (e.prototype.gradientExpression = function () { return this._transitionablePaint._values['line-gradient'].value .expression; }), (e.prototype.recalculate = function (e, r) { t.prototype.recalculate.call(this, e, r), (this.paint._values['line-floorwidth'] = _u.possiblyEvaluate( this._transitioningPaint._values['line-width'].value, e, )); }), (e.prototype.createBucket = function (t) { return new gu(t); }), (e.prototype.queryRadius = function (t) { var e = t, r = ku(zo('line-width', this, e), zo('line-gap-width', this, e)), n = zo('line-offset', this, e); return r / 2 + Math.abs(n) + Po(this.paint.get('line-translate')); }), (e.prototype.queryIntersectsFeature = function (t, e, r, n, i, a, o) { var s = Bo( t, this.paint.get('line-translate'), this.paint.get('line-translate-anchor'), a.angle, o, ), u = (o / 2) * ku( this.paint.get('line-width').evaluate(e, r), this.paint.get('line-gap-width').evaluate(e, r), ), l = this.paint.get('line-offset').evaluate(e, r); return ( l && (n = (function (t, e) { for (var r = [], n = 0; n < t.length; n++) { for (var i = t[n], a = [], o = 0; o < i.length; o++) { var s = i[o - 1], u = i[o], l = i[o + 1], p = 0 === o ? new I(0, 0) : u.sub(s)._unit()._perp(), c = o === i.length - 1 ? new I(0, 0) : l.sub(u)._unit()._perp(), h = p._add(c)._unit(), f = h.x * c.x + h.y * c.y; 0 !== f && h._mult(1 / f), a.push(h._mult(e)._add(u)); } r.push(a); } return r; })(n, l * o)), (function (t, e, r) { for (var n = 0; n < e.length; n++) { var i = e[n]; if (t.length >= 3) for (var a = 0; a < i.length; a++) if (Io(t, i[a])) return !0; if (bo(t, i, r)) return !0; } return !1; })(s, n, u) ); }), (e.prototype.isTileClipped = function () { return !0; }), e ); })(Pi); function ku(t, e) { return e > 0 ? e + 2 * t : t; } var Su = Vi( [ { name: 'a_pos_offset', components: 4, type: 'Int16' }, { name: 'a_data', components: 4, type: 'Uint16' }, { name: 'a_pixeloffset', components: 4, type: 'Int16' }, ], 4, ), Iu = Vi([{ name: 'a_projected_pos', components: 3, type: 'Float32' }], 4); Vi([{ name: 'a_fade_opacity', components: 1, type: 'Uint32' }], 4); var Mu = Vi([ { name: 'a_placed', components: 2, type: 'Uint8' }, { name: 'a_shift', components: 2, type: 'Float32' }, ]); Vi([ { type: 'Int16', name: 'anchorPointX' }, { type: 'Int16', name: 'anchorPointY' }, { type: 'Int16', name: 'x1' }, { type: 'Int16', name: 'y1' }, { type: 'Int16', name: 'x2' }, { type: 'Int16', name: 'y2' }, { type: 'Uint32', name: 'featureIndex' }, { type: 'Uint16', name: 'sourceLayerIndex' }, { type: 'Uint16', name: 'bucketIndex' }, ]); var zu = Vi( [ { name: 'a_pos', components: 2, type: 'Int16' }, { name: 'a_anchor_pos', components: 2, type: 'Int16' }, { name: 'a_extrude', components: 2, type: 'Int16' }, ], 4, ), Pu = Vi( [ { name: 'a_pos', components: 2, type: 'Float32' }, { name: 'a_radius', components: 1, type: 'Float32' }, { name: 'a_flags', components: 2, type: 'Int16' }, ], 4, ); function Bu(t, e, r) { return ( t.sections.forEach(function (t) { t.text = (function (t, e, r) { var n = e.layout.get('text-transform').evaluate(r, {}); return ( 'uppercase' === n ? (t = t.toLocaleUpperCase()) : 'lowercase' === n && (t = t.toLocaleLowerCase()), hi.applyArabicShaping && (t = hi.applyArabicShaping(t)), t ); })(t.text, e, r); }), t ); } Vi([{ name: 'triangle', components: 3, type: 'Uint16' }]), Vi([ { type: 'Int16', name: 'anchorX' }, { type: 'Int16', name: 'anchorY' }, { 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' }, ]), Vi([ { type: 'Int16', name: 'anchorX' }, { type: 'Int16', name: 'anchorY' }, { 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', name: 'textBoxScale' }, { type: 'Float32', components: 2, name: 'textOffset' }, { type: 'Float32', name: 'collisionCircleDiameter' }, ]), Vi([{ type: 'Float32', name: 'offsetX' }]), Vi([ { type: 'Int16', name: 'x' }, { type: 'Int16', name: 'y' }, { type: 'Int16', name: 'tileUnitDistanceFromAnchor' }, ]); var Cu = { '!': '︕', '#': '#', $: '$', '%': '%', '&': '&', '(': '︵', ')': '︶', '*': '*', '+': '+', ',': '︐', '-': '︲', '.': '・', '/': '/', ':': '︓', ';': '︔', '<': '︿', '=': '=', '>': '﹀', '?': '︖', '@': '@', '[': '﹇', '\\': '\', ']': '﹈', '^': '^', _: '︳', '`': '`', '{': '︷', '|': '―', '}': '︸', '~': '~', '¢': '¢', '£': '£', '¥': '¥', '¦': '¦', '¬': '¬', '¯': ' ̄', '–': '︲', '—': '︱', '‘': '﹃', '’': '﹄', '“': '﹁', '”': '﹂', '…': '︙', '‧': '・', '₩': '₩', '、': '︑', '。': '︒', '〈': '︿', '〉': '﹀', '《': '︽', '》': '︾', '「': '﹁', '」': '﹂', '『': '﹃', '』': '﹄', '【': '︻', '】': '︼', '〔': '︹', '〕': '︺', '〖': '︗', '〗': '︘', '!': '︕', '(': '︵', ')': '︶', ',': '︐', '-': '︲', '.': '・', ':': '︓', ';': '︔', '<': '︿', '>': '﹀', '?': '︖', '[': '﹇', ']': '﹈', '_': '︳', '{': '︷', '|': '―', '}': '︸', '⦅': '︵', '⦆': '︶', '。': '︒', '「': '﹁', '」': '﹂', }, Eu = 24, Vu = Ou, Tu = function (t, e, r, n, i) { var a, o, s = 8 * i - n - 1, u = (1 << s) - 1, l = u >> 1, p = -7, c = r ? i - 1 : 0, h = r ? -1 : 1, f = t[e + c]; for ( c += h, a = f & ((1 << -p) - 1), f >>= -p, p += s; p > 0; a = 256 * a + t[e + c], c += h, p -= 8 ); for ( o = a & ((1 << -p) - 1), a >>= -p, p += n; p > 0; o = 256 * o + t[e + c], c += h, p -= 8 ); if (0 === a) a = 1 - l; else { if (a === u) return o ? NaN : (1 / 0) * (f ? -1 : 1); (o += Math.pow(2, n)), (a -= l); } return (f ? -1 : 1) * o * Math.pow(2, a - n); }, Fu = function (t, e, r, n, i, a) { var o, s, u, l = 8 * a - i - 1, p = (1 << l) - 1, c = p >> 1, h = 23 === i ? Math.pow(2, -24) - Math.pow(2, -77) : 0, f = n ? 0 : a - 1, y = n ? 1 : -1, d = e < 0 || (0 === e && 1 / e < 0) ? 1 : 0; for ( e = Math.abs(e), isNaN(e) || e === 1 / 0 ? ((s = isNaN(e) ? 1 : 0), (o = p)) : ((o = Math.floor(Math.log(e) / Math.LN2)), e * (u = Math.pow(2, -o)) < 1 && (o--, (u *= 2)), (e += o + c >= 1 ? h / u : h * Math.pow(2, 1 - c)) * u >= 2 && (o++, (u /= 2)), o + c >= p ? ((s = 0), (o = p)) : o + c >= 1 ? ((s = (e * u - 1) * Math.pow(2, i)), (o += c)) : ((s = e * Math.pow(2, c - 1) * Math.pow(2, i)), (o = 0))); i >= 8; t[r + f] = 255 & s, f += y, s /= 256, i -= 8 ); for ( o = (o << i) | s, l += i; l > 0; t[r + f] = 255 & o, f += y, o /= 256, l -= 8 ); t[r + f - y] |= 128 * d; }; function Ou(t) { (this.buf = ArrayBuffer.isView && ArrayBuffer.isView(t) ? t : new Uint8Array(t || 0)), (this.pos = 0), (this.type = 0), (this.length = this.buf.length); } (Ou.Varint = 0), (Ou.Fixed64 = 1), (Ou.Bytes = 2), (Ou.Fixed32 = 5); var Lu = 4294967296, Du = 1 / Lu, ju = 'undefined' == typeof TextDecoder ? null : new TextDecoder('utf8'); function Ru(t) { return t.type === Ou.Bytes ? t.readVarint() + t.pos : t.pos + 1; } function Uu(t, e, r) { return r ? 4294967296 * e + (t >>> 0) : 4294967296 * (e >>> 0) + (t >>> 0); } function qu(t, e, r) { var n = e <= 16383 ? 1 : e <= 2097151 ? 2 : e <= 268435455 ? 3 : Math.floor(Math.log(e) / (7 * Math.LN2)); r.realloc(n); for (var i = r.pos - 1; i >= t; i--) r.buf[i + n] = r.buf[i]; } function Nu(t, e) { for (var r = 0; r < t.length; r++) e.writeVarint(t[r]); } function Zu(t, e) { for (var r = 0; r < t.length; r++) e.writeSVarint(t[r]); } function Ku(t, e) { for (var r = 0; r < t.length; r++) e.writeFloat(t[r]); } function Gu(t, e) { for (var r = 0; r < t.length; r++) e.writeDouble(t[r]); } function Ju(t, e) { for (var r = 0; r < t.length; r++) e.writeBoolean(t[r]); } function Xu(t, e) { for (var r = 0; r < t.length; r++) e.writeFixed32(t[r]); } function Yu(t, e) { for (var r = 0; r < t.length; r++) e.writeSFixed32(t[r]); } function Hu(t, e) { for (var r = 0; r < t.length; r++) e.writeFixed64(t[r]); } function Wu(t, e) { for (var r = 0; r < t.length; r++) e.writeSFixed64(t[r]); } function $u(t, e) { return (t[e] | (t[e + 1] << 8) | (t[e + 2] << 16)) + 16777216 * t[e + 3]; } function Qu(t, e, r) { (t[r] = e), (t[r + 1] = e >>> 8), (t[r + 2] = e >>> 16), (t[r + 3] = e >>> 24); } function tl(t, e) { return (t[e] | (t[e + 1] << 8) | (t[e + 2] << 16)) + (t[e + 3] << 24); } function el(t, e, r) { 1 === t && r.readMessage(rl, e); } function rl(t, e, r) { if (3 === t) { var n = r.readMessage(nl, {}), i = n.width, a = n.height, o = n.left, s = n.top, u = n.advance; e.push({ id: n.id, bitmap: new Wo({ width: i + 6, height: a + 6 }, n.bitmap), metrics: { width: i, height: a, left: o, top: s, advance: u }, }); } } function nl(t, e, r) { 1 === t ? (e.id = r.readVarint()) : 2 === t ? (e.bitmap = r.readBytes()) : 3 === t ? (e.width = r.readVarint()) : 4 === t ? (e.height = r.readVarint()) : 5 === t ? (e.left = r.readSVarint()) : 6 === t ? (e.top = r.readSVarint()) : 7 === t && (e.advance = r.readVarint()); } function il(t) { for (var e = 0, r = 0, n = 0, i = t; n < i.length; n += 1) { var a = i[n]; (e += a.w * a.h), (r = Math.max(r, a.w)); } t.sort(function (t, e) { return e.h - t.h; }); for ( var o = [ { x: 0, y: 0, w: Math.max(Math.ceil(Math.sqrt(e / 0.95)), r), h: 1 / 0, }, ], s = 0, u = 0, l = 0, p = t; l < p.length; l += 1 ) for (var c = p[l], h = o.length - 1; h >= 0; h--) { var f = o[h]; if (!(c.w > f.w || c.h > f.h)) { if ( ((c.x = f.x), (c.y = f.y), (u = Math.max(u, c.y + c.h)), (s = Math.max(s, c.x + c.w)), c.w === f.w && c.h === f.h) ) { var y = o.pop(); h < o.length && (o[h] = y); } else c.h === f.h ? ((f.x += c.w), (f.w -= c.w)) : c.w === f.w ? ((f.y += c.h), (f.h -= c.h)) : (o.push({ x: f.x + c.w, y: f.y, w: f.w - c.w, h: c.h }), (f.y += c.h), (f.h -= c.h)); break; } } return { w: s, h: u, fill: e / (s * u) || 0 }; } Ou.prototype = { destroy: function () { this.buf = null; }, readFields: function (t, e, r) { for (r = r || this.length; this.pos < r; ) { var n = this.readVarint(), i = n >> 3, a = this.pos; (this.type = 7 & n), t(i, e, this), this.pos === a && this.skip(n); } return e; }, readMessage: function (t, e) { return this.readFields(t, e, this.readVarint() + this.pos); }, readFixed32: function () { var t = $u(this.buf, this.pos); return (this.pos += 4), t; }, readSFixed32: function () { var t = tl(this.buf, this.pos); return (this.pos += 4), t; }, readFixed64: function () { var t = $u(this.buf, this.pos) + $u(this.buf, this.pos + 4) * Lu; return (this.pos += 8), t; }, readSFixed64: function () { var t = $u(this.buf, this.pos) + tl(this.buf, this.pos + 4) * Lu; return (this.pos += 8), t; }, readFloat: function () { var t = Tu(this.buf, this.pos, !0, 23, 4); return (this.pos += 4), t; }, readDouble: function () { var t = Tu(this.buf, this.pos, !0, 52, 8); return (this.pos += 8), t; }, readVarint: function (t) { var e, r, n = this.buf; return ( (e = 127 & (r = n[this.pos++])), r < 128 ? e : ((e |= (127 & (r = n[this.pos++])) << 7), r < 128 ? e : ((e |= (127 & (r = n[this.pos++])) << 14), r < 128 ? e : ((e |= (127 & (r = n[this.pos++])) << 21), r < 128 ? e : (function (t, e, r) { var n, i, a = r.buf; if (((n = (112 & (i = a[r.pos++])) >> 4), i < 128)) return Uu(t, n, e); if (((n |= (127 & (i = a[r.pos++])) << 3), i < 128)) return Uu(t, n, e); if ( ((n |= (127 & (i = a[r.pos++])) << 10), i < 128) ) return Uu(t, n, e); if ( ((n |= (127 & (i = a[r.pos++])) << 17), i < 128) ) return Uu(t, n, e); if ( ((n |= (127 & (i = a[r.pos++])) << 24), i < 128) ) return Uu(t, n, e); if (((n |= (1 & (i = a[r.pos++])) << 31), i < 128)) return Uu(t, n, e); throw new Error( 'Expected varint not more than 10 bytes', ); })((e |= (15 & (r = n[this.pos])) << 28), t, this)))) ); }, readVarint64: function () { return this.readVarint(!0); }, readSVarint: function () { var t = this.readVarint(); return t % 2 == 1 ? (t + 1) / -2 : t / 2; }, readBoolean: function () { return Boolean(this.readVarint()); }, readString: function () { var t = this.readVarint() + this.pos, e = this.pos; return ( (this.pos = t), t - e >= 12 && ju ? (function (t, e, r) { return ju.decode(t.subarray(e, r)); })(this.buf, e, t) : (function (t, e, r) { for (var n = '', i = e; i < r; ) { var a, o, s, u = t[i], l = null, p = u > 239 ? 4 : u > 223 ? 3 : u > 191 ? 2 : 1; if (i + p > r) break; 1 === p ? u < 128 && (l = u) : 2 === p ? 128 == (192 & (a = t[i + 1])) && (l = ((31 & u) << 6) | (63 & a)) <= 127 && (l = null) : 3 === p ? ((o = t[i + 2]), 128 == (192 & (a = t[i + 1])) && 128 == (192 & o) && ((l = ((15 & u) << 12) | ((63 & a) << 6) | (63 & o)) <= 2047 || (l >= 55296 && l <= 57343)) && (l = null)) : 4 === p && ((o = t[i + 2]), (s = t[i + 3]), 128 == (192 & (a = t[i + 1])) && 128 == (192 & o) && 128 == (192 & s) && ((l = ((15 & u) << 18) | ((63 & a) << 12) | ((63 & o) << 6) | (63 & s)) <= 65535 || l >= 1114112) && (l = null)), null === l ? ((l = 65533), (p = 1)) : l > 65535 && ((l -= 65536), (n += String.fromCharCode(((l >>> 10) & 1023) | 55296)), (l = 56320 | (1023 & l))), (n += String.fromCharCode(l)), (i += p); } return n; })(this.buf, e, t) ); }, readBytes: function () { var t = this.readVarint() + this.pos, e = this.buf.subarray(this.pos, t); return (this.pos = t), e; }, readPackedVarint: function (t, e) { if (this.type !== Ou.Bytes) return t.push(this.readVarint(e)); var r = Ru(this); for (t = t || []; this.pos < r; ) t.push(this.readVarint(e)); return t; }, readPackedSVarint: function (t) { if (this.type !== Ou.Bytes) return t.push(this.readSVarint()); var e = Ru(this); for (t = t || []; this.pos < e; ) t.push(this.readSVarint()); return t; }, readPackedBoolean: function (t) { if (this.type !== Ou.Bytes) return t.push(this.readBoolean()); var e = Ru(this); for (t = t || []; this.pos < e; ) t.push(this.readBoolean()); return t; }, readPackedFloat: function (t) { if (this.type !== Ou.Bytes) return t.push(this.readFloat()); var e = Ru(this); for (t = t || []; this.pos < e; ) t.push(this.readFloat()); return t; }, readPackedDouble: function (t) { if (this.type !== Ou.Bytes) return t.push(this.readDouble()); var e = Ru(this); for (t = t || []; this.pos < e; ) t.push(this.readDouble()); return t; }, readPackedFixed32: function (t) { if (this.type !== Ou.Bytes) return t.push(this.readFixed32()); var e = Ru(this); for (t = t || []; this.pos < e; ) t.push(this.readFixed32()); return t; }, readPackedSFixed32: function (t) { if (this.type !== Ou.Bytes) return t.push(this.readSFixed32()); var e = Ru(this); for (t = t || []; this.pos < e; ) t.push(this.readSFixed32()); return t; }, readPackedFixed64: function (t) { if (this.type !== Ou.Bytes) return t.push(this.readFixed64()); var e = Ru(this); for (t = t || []; this.pos < e; ) t.push(this.readFixed64()); return t; }, readPackedSFixed64: function (t) { if (this.type !== Ou.Bytes) return t.push(this.readSFixed64()); var e = Ru(this); for (t = t || []; this.pos < e; ) t.push(this.readSFixed64()); return t; }, skip: function (t) { var e = 7 & t; if (e === Ou.Varint) for (; this.buf[this.pos++] > 127; ); else if (e === Ou.Bytes) this.pos = this.readVarint() + this.pos; else if (e === Ou.Fixed32) this.pos += 4; else { if (e !== Ou.Fixed64) throw new Error('Unimplemented type: ' + e); this.pos += 8; } }, writeTag: function (t, e) { this.writeVarint((t << 3) | e); }, realloc: function (t) { for (var e = this.length || 16; e < this.pos + t; ) e *= 2; if (e !== this.length) { var r = new Uint8Array(e); r.set(this.buf), (this.buf = r), (this.length = e); } }, finish: function () { return ( (this.length = this.pos), (this.pos = 0), this.buf.subarray(0, this.length) ); }, writeFixed32: function (t) { this.realloc(4), Qu(this.buf, t, this.pos), (this.pos += 4); }, writeSFixed32: function (t) { this.realloc(4), Qu(this.buf, t, this.pos), (this.pos += 4); }, writeFixed64: function (t) { this.realloc(8), Qu(this.buf, -1 & t, this.pos), Qu(this.buf, Math.floor(t * Du), this.pos + 4), (this.pos += 8); }, writeSFixed64: function (t) { this.realloc(8), Qu(this.buf, -1 & t, this.pos), Qu(this.buf, Math.floor(t * Du), this.pos + 4), (this.pos += 8); }, writeVarint: function (t) { (t = +t || 0) > 268435455 || t < 0 ? (function (t, e) { var r, n; if ( (t >= 0 ? ((r = t % 4294967296 | 0), (n = (t / 4294967296) | 0)) : ((n = ~(-t / 4294967296)), 4294967295 ^ (r = ~(-t % 4294967296)) ? (r = (r + 1) | 0) : ((r = 0), (n = (n + 1) | 0))), t >= 0x10000000000000000 || t < -0x10000000000000000) ) throw new Error("Given varint doesn't fit into 10 bytes"); e.realloc(10), (function (t, e, r) { (r.buf[r.pos++] = (127 & t) | 128), (t >>>= 7), (r.buf[r.pos++] = (127 & t) | 128), (t >>>= 7), (r.buf[r.pos++] = (127 & t) | 128), (t >>>= 7), (r.buf[r.pos++] = (127 & t) | 128), (r.buf[r.pos] = 127 & (t >>>= 7)); })(r, 0, e), (function (t, e) { var r = (7 & t) << 4; (e.buf[e.pos++] |= r | ((t >>>= 3) ? 128 : 0)), t && ((e.buf[e.pos++] = (127 & t) | ((t >>>= 7) ? 128 : 0)), t && ((e.buf[e.pos++] = (127 & t) | ((t >>>= 7) ? 128 : 0)), t && ((e.buf[e.pos++] = (127 & t) | ((t >>>= 7) ? 128 : 0)), t && ((e.buf[e.pos++] = (127 & t) | ((t >>>= 7) ? 128 : 0)), t && (e.buf[e.pos++] = 127 & t))))); })(n, e); })(t, this) : (this.realloc(4), (this.buf[this.pos++] = (127 & t) | (t > 127 ? 128 : 0)), t <= 127 || ((this.buf[this.pos++] = (127 & (t >>>= 7)) | (t > 127 ? 128 : 0)), t <= 127 || ((this.buf[this.pos++] = (127 & (t >>>= 7)) | (t > 127 ? 128 : 0)), t <= 127 || (this.buf[this.pos++] = (t >>> 7) & 127)))); }, writeSVarint: function (t) { this.writeVarint(t < 0 ? 2 * -t - 1 : 2 * t); }, writeBoolean: function (t) { this.writeVarint(Boolean(t)); }, writeString: function (t) { (t = String(t)), this.realloc(4 * t.length), this.pos++; var e = this.pos; this.pos = (function (t, e, r) { for (var n, i, a = 0; a < e.length; a++) { if ((n = e.charCodeAt(a)) > 55295 && n < 57344) { if (!i) { n > 56319 || a + 1 === e.length ? ((t[r++] = 239), (t[r++] = 191), (t[r++] = 189)) : (i = n); continue; } if (n < 56320) { (t[r++] = 239), (t[r++] = 191), (t[r++] = 189), (i = n); continue; } (n = ((i - 55296) << 10) | (n - 56320) | 65536), (i = null); } else i && ((t[r++] = 239), (t[r++] = 191), (t[r++] = 189), (i = null)); n < 128 ? (t[r++] = n) : (n < 2048 ? (t[r++] = (n >> 6) | 192) : (n < 65536 ? (t[r++] = (n >> 12) | 224) : ((t[r++] = (n >> 18) | 240), (t[r++] = ((n >> 12) & 63) | 128)), (t[r++] = ((n >> 6) & 63) | 128)), (t[r++] = (63 & n) | 128)); } return r; })(this.buf, t, this.pos); var r = this.pos - e; r >= 128 && qu(e, r, this), (this.pos = e - 1), this.writeVarint(r), (this.pos += r); }, writeFloat: function (t) { this.realloc(4), Fu(this.buf, t, this.pos, !0, 23, 4), (this.pos += 4); }, writeDouble: function (t) { this.realloc(8), Fu(this.buf, t, this.pos, !0, 52, 8), (this.pos += 8); }, writeBytes: function (t) { var e = t.length; this.writeVarint(e), this.realloc(e); for (var r = 0; r < e; r++) this.buf[this.pos++] = t[r]; }, writeRawMessage: function (t, e) { this.pos++; var r = this.pos; t(e, this); var n = this.pos - r; n >= 128 && qu(r, n, this), (this.pos = r - 1), this.writeVarint(n), (this.pos += n); }, writeMessage: function (t, e, r) { this.writeTag(t, Ou.Bytes), this.writeRawMessage(e, r); }, writePackedVarint: function (t, e) { e.length && this.writeMessage(t, Nu, e); }, writePackedSVarint: function (t, e) { e.length && this.writeMessage(t, Zu, e); }, writePackedBoolean: function (t, e) { e.length && this.writeMessage(t, Ju, e); }, writePackedFloat: function (t, e) { e.length && this.writeMessage(t, Ku, e); }, writePackedDouble: function (t, e) { e.length && this.writeMessage(t, Gu, e); }, writePackedFixed32: function (t, e) { e.length && this.writeMessage(t, Xu, e); }, writePackedSFixed32: function (t, e) { e.length && this.writeMessage(t, Yu, e); }, writePackedFixed64: function (t, e) { e.length && this.writeMessage(t, Hu, e); }, writePackedSFixed64: function (t, e) { e.length && this.writeMessage(t, Wu, e); }, writeBytesField: function (t, e) { this.writeTag(t, Ou.Bytes), this.writeBytes(e); }, writeFixed32Field: function (t, e) { this.writeTag(t, Ou.Fixed32), this.writeFixed32(e); }, writeSFixed32Field: function (t, e) { this.writeTag(t, Ou.Fixed32), this.writeSFixed32(e); }, writeFixed64Field: function (t, e) { this.writeTag(t, Ou.Fixed64), this.writeFixed64(e); }, writeSFixed64Field: function (t, e) { this.writeTag(t, Ou.Fixed64), this.writeSFixed64(e); }, writeVarintField: function (t, e) { this.writeTag(t, Ou.Varint), this.writeVarint(e); }, writeSVarintField: function (t, e) { this.writeTag(t, Ou.Varint), this.writeSVarint(e); }, writeStringField: function (t, e) { this.writeTag(t, Ou.Bytes), this.writeString(e); }, writeFloatField: function (t, e) { this.writeTag(t, Ou.Fixed32), this.writeFloat(e); }, writeDoubleField: function (t, e) { this.writeTag(t, Ou.Fixed64), this.writeDouble(e); }, writeBooleanField: function (t, e) { this.writeVarintField(t, Boolean(e)); }, }; var al = function (t, e) { var r = e.pixelRatio, n = e.version, i = e.stretchX, a = e.stretchY, o = e.content; (this.paddedRect = t), (this.pixelRatio = r), (this.stretchX = i), (this.stretchY = a), (this.content = o), (this.version = n); }, ol = { tl: { configurable: !0 }, br: { configurable: !0 }, tlbr: { configurable: !0 }, displaySize: { configurable: !0 }, }; (ol.tl.get = function () { return [this.paddedRect.x + 1, this.paddedRect.y + 1]; }), (ol.br.get = function () { return [ this.paddedRect.x + this.paddedRect.w - 1, this.paddedRect.y + this.paddedRect.h - 1, ]; }), (ol.tlbr.get = function () { return this.tl.concat(this.br); }), (ol.displaySize.get = function () { return [ (this.paddedRect.w - 2) / this.pixelRatio, (this.paddedRect.h - 2) / this.pixelRatio, ]; }), Object.defineProperties(al.prototype, ol); var sl, ul = function (t, e) { var r = {}, n = {}; this.haveRenderCallbacks = []; var i = []; this.addImages(t, r, i), this.addImages(e, n, i); var a = il(i), o = new $o({ width: a.w || 1, height: a.h || 1 }); for (var s in t) { var u = t[s], l = r[s].paddedRect; $o.copy( u.data, o, { x: 0, y: 0 }, { x: l.x + 1, y: l.y + 1 }, u.data, ); } for (var p in e) { var c = e[p], h = n[p].paddedRect, f = h.x + 1, y = h.y + 1, d = c.data.width, m = c.data.height; $o.copy(c.data, o, { x: 0, y: 0 }, { x: f, y: y }, c.data), $o.copy( c.data, o, { x: 0, y: m - 1 }, { x: f, y: y - 1 }, { width: d, height: 1 }, ), $o.copy( c.data, o, { x: 0, y: 0 }, { x: f, y: y + m }, { width: d, height: 1 }, ), $o.copy( c.data, o, { x: d - 1, y: 0 }, { x: f - 1, y: y }, { width: 1, height: m }, ), $o.copy( c.data, o, { x: 0, y: 0 }, { x: f + d, y: y }, { width: 1, height: m }, ); } (this.image = o), (this.iconPositions = r), (this.patternPositions = n); }; (ul.prototype.addImages = function (t, e, r) { for (var n in t) { var i = t[n], a = { x: 0, y: 0, w: i.data.width + 2, h: i.data.height + 2 }; r.push(a), (e[n] = new al(a, i)), i.hasRenderCallback && this.haveRenderCallbacks.push(n); } }), (ul.prototype.patchUpdatedImages = function (t, e) { for (var r in (t.dispatchRenderCallbacks(this.haveRenderCallbacks), t.updatedImages)) this.patchUpdatedImage(this.iconPositions[r], t.getImage(r), e), this.patchUpdatedImage(this.patternPositions[r], t.getImage(r), e); }), (ul.prototype.patchUpdatedImage = function (t, e, r) { if (t && e && t.version !== e.version) { t.version = e.version; var n = t.tl; r.update(e.data, void 0, { x: n[0], y: n[1] }); } }), qn('ImagePosition', al), qn('ImageAtlas', ul), (t.WritingMode = void 0), ((sl = t.WritingMode || (t.WritingMode = {}))[(sl.none = 0)] = 'none'), (sl[(sl.horizontal = 1)] = 'horizontal'), (sl[(sl.vertical = 2)] = 'vertical'), (sl[(sl.horizontalOnly = 3)] = 'horizontalOnly'); var ll = -17, pl = function () { (this.scale = 1), (this.fontStack = ''), (this.imageName = null); }; (pl.forText = function (t, e) { var r = new pl(); return (r.scale = t || 1), (r.fontStack = e), r; }), (pl.forImage = function (t) { var e = new pl(); return (e.imageName = t), e; }); var cl = function () { (this.text = ''), (this.sectionIndex = []), (this.sections = []), (this.imageSectionID = null); }; function hl(e, r, n, i, a, o, s, u, l, p, c, h, f, y, d, m) { var v, g = cl.fromFeature(e, a); h === t.WritingMode.vertical && g.verticalizePunctuation(); var x = hi.processBidirectionalText, b = hi.processStyledBidirectionalText; if (x && 1 === g.sections.length) { v = []; for ( var w = 0, _ = x(g.toString(), bl(g, p, o, r, i, y, d)); w < _.length; w += 1 ) { var A = _[w], k = new cl(); (k.text = A), (k.sections = g.sections); for (var S = 0; S < A.length; S++) k.sectionIndex.push(0); v.push(k); } } else if (b) { v = []; for ( var I = 0, M = b(g.text, g.sectionIndex, bl(g, p, o, r, i, y, d)); I < M.length; I += 1 ) { var z = M[I], P = new cl(); (P.text = z[0]), (P.sectionIndex = z[1]), (P.sections = g.sections), v.push(P); } } else v = (function (t, e) { for ( var r = [], n = t.text, i = 0, a = 0, o = e; a < o.length; a += 1 ) { var s = o[a]; r.push(t.substring(i, s)), (i = s); } return i < n.length && r.push(t.substring(i, n.length)), r; })(g, bl(g, p, o, r, i, y, d)); var B = [], C = { positionedLines: B, text: g.toString(), top: c[1], bottom: c[1], left: c[0], right: c[0], writingMode: h, iconsInText: !1, verticalizable: !1, }; return ( (function (e, r, n, i, a, o, s, u, l, p, c, h) { for ( var f = 0, y = ll, d = 0, m = 0, v = 'right' === u ? 1 : 'left' === u ? 0 : 0.5, g = 0, x = 0, b = a; x < b.length; x += 1 ) { var w = b[x]; w.trim(); var _ = w.getMaxScale(), A = (_ - 1) * Eu, k = { positionedGlyphs: [], lineOffset: 0 }; e.positionedLines[g] = k; var S = k.positionedGlyphs, I = 0; if (w.length()) { for (var M = 0; M < w.length(); M++) { var z = w.getSection(M), P = w.getSectionIndex(M), B = w.getCharCode(M), C = 0, E = null, V = null, T = null, F = Eu, O = !( l === t.WritingMode.horizontal || (!c && !Hn(B)) || (c && (fl[B] || ((K = B), Xn.Arabic(K) || Xn['Arabic Supplement'](K) || Xn['Arabic Extended-A'](K) || Xn['Arabic Presentation Forms-A'](K) || Xn['Arabic Presentation Forms-B'](K)))) ); if (z.imageName) { var L = i[z.imageName]; if (!L) continue; (T = z.imageName), (e.iconsInText = e.iconsInText || !0), (V = L.paddedRect); var D = L.displaySize; (z.scale = (z.scale * Eu) / h), (C = A + (Eu - D[1] * z.scale)), (F = (E = { width: D[0], height: D[1], left: 1, top: -3, advance: O ? D[1] : D[0], }).advance); var j = O ? D[0] * z.scale - Eu * _ : D[1] * z.scale - Eu * _; j > 0 && j > I && (I = j); } else { var R = n[z.fontStack], U = R && R[B]; if (U && U.rect) (V = U.rect), (E = U.metrics); else { var q = r[z.fontStack], N = q && q[B]; if (!N) continue; E = N.metrics; } C = (_ - z.scale) * Eu; } O ? ((e.verticalizable = !0), S.push({ glyph: B, imageName: T, x: f, y: y + C, vertical: O, scale: z.scale, fontStack: z.fontStack, sectionIndex: P, metrics: E, rect: V, }), (f += F * z.scale + p)) : (S.push({ glyph: B, imageName: T, x: f, y: y + C, vertical: O, scale: z.scale, fontStack: z.fontStack, sectionIndex: P, metrics: E, rect: V, }), (f += E.advance * z.scale + p)); } 0 !== S.length && ((d = Math.max(f - p, d)), _l(S, 0, S.length - 1, v, I)), (f = 0); var Z = o * _ + I; (k.lineOffset = Math.max(I, A)), (y += Z), (m = Math.max(Z, m)), ++g; } else (y += o), ++g; } var K, G = y - ll, J = wl(s), X = J.horizontalAlign, Y = J.verticalAlign; (function (t, e, r, n, i, a, o, s, u) { var l, p = (e - r) * i; l = a !== o ? -s * n - ll : (-n * u + 0.5) * o; for (var c = 0, h = t; c < h.length; c += 1) for (var f = 0, y = h[c].positionedGlyphs; f < y.length; f += 1) { var d = y[f]; (d.x += p), (d.y += l); } })(e.positionedLines, v, X, Y, d, m, o, G, a.length), (e.top += -Y * G), (e.bottom = e.top + G), (e.left += -X * d), (e.right = e.left + d); })(C, r, n, i, v, s, u, l, h, p, f, m), !(function (t) { for (var e = 0, r = t; e < r.length; e += 1) if (0 !== r[e].positionedGlyphs.length) return !1; return !0; })(B) && C ); } (cl.fromFeature = function (t, e) { for (var r = new cl(), n = 0; n < t.sections.length; n++) { var i = t.sections[n]; i.image ? r.addImageSection(i) : r.addTextSection(i, e); } return r; }), (cl.prototype.length = function () { return this.text.length; }), (cl.prototype.getSection = function (t) { return this.sections[this.sectionIndex[t]]; }), (cl.prototype.getSectionIndex = function (t) { return this.sectionIndex[t]; }), (cl.prototype.getCharCode = function (t) { return this.text.charCodeAt(t); }), (cl.prototype.verticalizePunctuation = function () { this.text = (function (t) { for (var e = '', r = 0; r < t.length; r++) { var n = t.charCodeAt(r + 1) || null, i = t.charCodeAt(r - 1) || null; e += (n && Wn(n) && !Cu[t[r + 1]]) || (i && Wn(i) && !Cu[t[r - 1]]) || !Cu[t[r]] ? t[r] : Cu[t[r]]; } return e; })(this.text); }), (cl.prototype.trim = function () { for ( var t = 0, e = 0; e < this.text.length && fl[this.text.charCodeAt(e)]; e++ ) t++; for ( var r = this.text.length, n = this.text.length - 1; n >= 0 && n >= t && fl[this.text.charCodeAt(n)]; n-- ) r--; (this.text = this.text.substring(t, r)), (this.sectionIndex = this.sectionIndex.slice(t, r)); }), (cl.prototype.substring = function (t, e) { var r = new cl(); return ( (r.text = this.text.substring(t, e)), (r.sectionIndex = this.sectionIndex.slice(t, e)), (r.sections = this.sections), r ); }), (cl.prototype.toString = function () { return this.text; }), (cl.prototype.getMaxScale = function () { var t = this; return this.sectionIndex.reduce(function (e, r) { return Math.max(e, t.sections[r].scale); }, 0); }), (cl.prototype.addTextSection = function (t, e) { (this.text += t.text), this.sections.push(pl.forText(t.scale, t.fontStack || e)); for (var r = this.sections.length - 1, n = 0; n < t.text.length; ++n) this.sectionIndex.push(r); }), (cl.prototype.addImageSection = function (t) { var e = t.image ? t.image.name : ''; if (0 !== e.length) { var r = this.getNextImageSectionCharCode(); r ? ((this.text += String.fromCharCode(r)), this.sections.push(pl.forImage(e)), this.sectionIndex.push(this.sections.length - 1)) : d('Reached maximum number of images 6401'); } else d("Can't add FormattedSection with an empty image."); }), (cl.prototype.getNextImageSectionCharCode = function () { return this.imageSectionID ? this.imageSectionID >= 63743 ? null : ++this.imageSectionID : ((this.imageSectionID = 57344), this.imageSectionID); }); var fl = { 9: !0, 10: !0, 11: !0, 12: !0, 13: !0, 32: !0 }, yl = {}; function dl(t, e, r, n, i, a) { if (e.imageName) { var o = n[e.imageName]; return o ? (o.displaySize[0] * e.scale * Eu) / a + i : 0; } var s = r[e.fontStack], u = s && s[t]; return u ? u.metrics.advance * e.scale + i : 0; } function ml(t, e, r, n) { var i = Math.pow(t - e, 2); return n ? (t < e ? i / 2 : 2 * i) : i + Math.abs(r) * r; } function vl(t, e, r) { var n = 0; return ( 10 === t && (n -= 1e4), r && (n += 150), (40 !== t && 65288 !== t) || (n += 50), (41 !== e && 65289 !== e) || (n += 50), n ); } function gl(t, e, r, n, i, a) { for ( var o = null, s = ml(e, r, i, a), u = 0, l = n; u < l.length; u += 1 ) { var p = l[u], c = ml(e - p.x, r, i, a) + p.badness; c <= s && ((o = p), (s = c)); } return { index: t, x: e, priorBreak: o, badness: s }; } function xl(t) { return t ? xl(t.priorBreak).concat(t.index) : []; } function bl(t, e, r, n, i, a, o) { if ('point' !== a) return []; if (!t) return []; for ( var s, u = [], l = (function (t, e, r, n, i, a) { for (var o = 0, s = 0; s < t.length(); s++) { var u = t.getSection(s); o += dl(t.getCharCode(s), u, n, i, e, a); } return o / Math.max(1, Math.ceil(o / r)); })(t, e, r, n, i, o), p = t.text.indexOf('​') >= 0, c = 0, h = 0; h < t.length(); h++ ) { var f = t.getSection(h), y = t.getCharCode(h); if ((fl[y] || (c += dl(y, f, n, i, e, o)), h < t.length() - 1)) { var d = !( (s = y) < 11904 || !( Xn['Bopomofo Extended'](s) || Xn.Bopomofo(s) || Xn['CJK Compatibility Forms'](s) || Xn['CJK Compatibility Ideographs'](s) || Xn['CJK Compatibility'](s) || Xn['CJK Radicals Supplement'](s) || Xn['CJK Strokes'](s) || Xn['CJK Symbols and Punctuation'](s) || Xn['CJK Unified Ideographs Extension A'](s) || Xn['CJK Unified Ideographs'](s) || Xn['Enclosed CJK Letters and Months'](s) || Xn['Halfwidth and Fullwidth Forms'](s) || Xn.Hiragana(s) || Xn['Ideographic Description Characters'](s) || Xn['Kangxi Radicals'](s) || Xn['Katakana Phonetic Extensions'](s) || Xn.Katakana(s) || Xn['Vertical Forms'](s) || Xn['Yi Radicals'](s) || Xn['Yi Syllables'](s) ) ); (yl[y] || d || f.imageName) && u.push(gl(h + 1, c, l, u, vl(y, t.getCharCode(h + 1), d && p), !1)); } } return xl(gl(t.length(), c, l, u, 0, !0)); } function wl(t) { var e = 0.5, r = 0.5; switch (t) { case 'right': case 'top-right': case 'bottom-right': e = 1; break; case 'left': case 'top-left': case 'bottom-left': e = 0; } switch (t) { case 'bottom': case 'bottom-right': case 'bottom-left': r = 1; break; case 'top': case 'top-right': case 'top-left': r = 0; } return { horizontalAlign: e, verticalAlign: r }; } function _l(t, e, r, n, i) { if (n || i) for ( var a = t[r], o = (t[r].x + a.metrics.advance * a.scale) * n, s = e; s <= r; s++ ) (t[s].x -= o), (t[s].y += i); } function Al(t, e, r, n, i, a) { var o, s = t.image; if (s.content) { var u = s.content, l = s.pixelRatio || 1; o = [ u[0] / l, u[1] / l, s.displaySize[0] - u[2] / l, s.displaySize[1] - u[3] / l, ]; } var p, c, h, f, y = e.left * a, d = e.right * a; 'width' === r || 'both' === r ? ((f = i[0] + y - n[3]), (c = i[0] + d + n[1])) : (c = (f = i[0] + (y + d - s.displaySize[0]) / 2) + s.displaySize[0]); var m = e.top * a, v = e.bottom * a; return ( 'height' === r || 'both' === r ? ((p = i[1] + m - n[0]), (h = i[1] + v + n[2])) : (h = (p = i[1] + (m + v - s.displaySize[1]) / 2) + s.displaySize[1]), { image: s, top: p, right: c, bottom: h, left: f, collisionPadding: o } ); } (yl[10] = !0), (yl[32] = !0), (yl[38] = !0), (yl[40] = !0), (yl[41] = !0), (yl[43] = !0), (yl[45] = !0), (yl[47] = !0), (yl[173] = !0), (yl[183] = !0), (yl[8203] = !0), (yl[8208] = !0), (yl[8211] = !0), (yl[8231] = !0); var kl = 128; function Sl(t, e) { var r = e.expression; if ('constant' === r.kind) return { kind: 'constant', layoutSize: r.evaluate(new fi(t + 1)) }; if ('source' === r.kind) return { kind: 'source' }; for ( var n = r.zoomStops, i = r.interpolationType, a = 0; a < n.length && n[a] <= t; ) a++; for (var o = (a = Math.max(0, a - 1)); o < n.length && n[o] < t + 1; ) o++; o = Math.min(n.length - 1, o); var s = n[a], u = n[o]; return 'composite' === r.kind ? { kind: 'composite', minZoom: s, maxZoom: u, interpolationType: i } : { kind: 'camera', minZoom: s, maxZoom: u, minSize: r.evaluate(new fi(s)), maxSize: r.evaluate(new fi(u)), interpolationType: i, }; } var Il = (function (t) { function e(e, r, n, i) { t.call(this, e, r), (this.angle = n), void 0 !== i && (this.segment = i); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.clone = function () { return new e(this.x, this.y, this.angle, this.segment); }), e ); })(I); function Ml(t, e, r, n, i) { if (void 0 === e.segment) return !0; for (var a = e, o = e.segment + 1, s = 0; s > -r / 2; ) { if (--o < 0) return !1; (s -= t[o].dist(a)), (a = t[o]); } (s += t[o].dist(t[o + 1])), o++; for (var u = [], l = 0; s < r / 2; ) { var p = t[o], c = t[o + 1]; if (!c) return !1; var h = t[o - 1].angleTo(p) - p.angleTo(c); for ( h = Math.abs(((h + 3 * Math.PI) % (2 * Math.PI)) - Math.PI), u.push({ distance: s, angleDelta: h }), l += h; s - u[0].distance > n; ) l -= u.shift().angleDelta; if (l > i) return !1; o++, (s += p.dist(c)); } return !0; } function zl(t) { for (var e = 0, r = 0; r < t.length - 1; r++) e += t[r].dist(t[r + 1]); return e; } function Pl(t, e, r) { return t ? 0.6 * e * r : 0; } function Bl(t, e) { return Math.max(t ? t.right - t.left : 0, e ? e.right - e.left : 0); } function Cl(t, e, r, n, i, a) { for ( var o = Pl(r, i, a), s = Bl(r, n) * a, u = 0, l = zl(t) / 2, p = 0; p < t.length - 1; p++ ) { var c = t[p], h = t[p + 1], f = c.dist(h); if (u + f > l) { var y = (l - u) / f, d = Re(c.x, h.x, y), m = Re(c.y, h.y, y), v = new Il(d, m, h.angleTo(c), p); return v._round(), !o || Ml(t, v, s, o, e) ? v : void 0; } u += f; } } function El(t, e, r, n, i, a, o, s, u) { var l = Pl(n, a, o), p = Bl(n, i), c = p * o, h = 0 === t[0].x || t[0].x === u || 0 === t[0].y || t[0].y === u; return ( e - c < e / 4 && (e = c + e / 4), Vl( t, h ? ((e / 2) * s) % e : ((p / 2 + 2 * a) * o * s) % e, e, l, r, c, h, !1, u, ) ); } function Vl(t, e, r, n, i, a, o, s, u) { for ( var l = a / 2, p = zl(t), c = 0, h = e - r, f = [], y = 0; y < t.length - 1; y++ ) { for ( var d = t[y], m = t[y + 1], v = d.dist(m), g = m.angleTo(d); h + r < c + v; ) { var x = ((h += r) - c) / v, b = Re(d.x, m.x, x), w = Re(d.y, m.y, x); if (b >= 0 && b < u && w >= 0 && w < u && h - l >= 0 && h + l <= p) { var _ = new Il(b, w, g, y); _._round(), (n && !Ml(t, _, a, n, i)) || f.push(_); } } c += v; } return s || f.length || o || (f = Vl(t, c / 2, r, n, i, a, o, !0, u)), f; } function Tl(t, e, r, n, i) { for (var a = [], o = 0; o < t.length; o++) for (var s = t[o], u = void 0, l = 0; l < s.length - 1; l++) { var p = s[l], c = s[l + 1]; (p.x < e && c.x < e) || (p.x < e ? (p = new I( e, p.y + ((e - p.x) / (c.x - p.x)) * (c.y - p.y), )._round()) : c.x < e && (c = new I( e, p.y + ((e - p.x) / (c.x - p.x)) * (c.y - p.y), )._round()), (p.y < r && c.y < r) || (p.y < r ? (p = new I( p.x + ((r - p.y) / (c.y - p.y)) * (c.x - p.x), r, )._round()) : c.y < r && (c = new I( p.x + ((r - p.y) / (c.y - p.y)) * (c.x - p.x), r, )._round()), (p.x >= n && c.x >= n) || (p.x >= n ? (p = new I( n, p.y + ((n - p.x) / (c.x - p.x)) * (c.y - p.y), )._round()) : c.x >= n && (c = new I( n, p.y + ((n - p.x) / (c.x - p.x)) * (c.y - p.y), )._round()), (p.y >= i && c.y >= i) || (p.y >= i ? (p = new I( p.x + ((i - p.y) / (c.y - p.y)) * (c.x - p.x), i, )._round()) : c.y >= i && (c = new I( p.x + ((i - p.y) / (c.y - p.y)) * (c.x - p.x), i, )._round()), (u && p.equals(u[u.length - 1])) || a.push((u = [p])), u.push(c))))); } return a; } function Fl(t, e, r, n) { var i = [], a = t.image, o = a.pixelRatio, s = a.paddedRect.w - 2, u = a.paddedRect.h - 2, l = t.right - t.left, p = t.bottom - t.top, c = a.stretchX || [[0, s]], h = a.stretchY || [[0, u]], f = function (t, e) { return t + e[1] - e[0]; }, y = c.reduce(f, 0), d = h.reduce(f, 0), m = s - y, v = u - d, g = 0, x = y, b = 0, w = d, _ = 0, A = m, k = 0, S = v; if (a.content && n) { var M = a.content; (g = Ol(c, 0, M[0])), (b = Ol(h, 0, M[1])), (x = Ol(c, M[0], M[2])), (w = Ol(h, M[1], M[3])), (_ = M[0] - g), (k = M[1] - b), (A = M[2] - M[0] - x), (S = M[3] - M[1] - w); } var z = function (n, i, s, u) { var c = Dl(n.stretch - g, x, l, t.left), h = jl(n.fixed - _, A, n.stretch, y), f = Dl(i.stretch - b, w, p, t.top), m = jl(i.fixed - k, S, i.stretch, d), v = Dl(s.stretch - g, x, l, t.left), M = jl(s.fixed - _, A, s.stretch, y), z = Dl(u.stretch - b, w, p, t.top), P = jl(u.fixed - k, S, u.stretch, d), B = new I(c, f), C = new I(v, f), E = new I(v, z), V = new I(c, z), T = new I(h / o, m / o), F = new I(M / o, P / o), O = (e * Math.PI) / 180; if (O) { var L = Math.sin(O), D = Math.cos(O), j = [D, -L, L, D]; B._matMult(j), C._matMult(j), V._matMult(j), E._matMult(j); } var R = n.stretch + n.fixed, U = i.stretch + i.fixed; return { tl: B, tr: C, bl: V, br: E, tex: { x: a.paddedRect.x + 1 + R, y: a.paddedRect.y + 1 + U, w: s.stretch + s.fixed - R, h: u.stretch + u.fixed - U, }, writingMode: void 0, glyphOffset: [0, 0], sectionIndex: 0, pixelOffsetTL: T, pixelOffsetBR: F, minFontScaleX: A / o / l, minFontScaleY: S / o / p, isSDF: r, }; }; if (n && (a.stretchX || a.stretchY)) for (var P = Ll(c, m, y), B = Ll(h, v, d), C = 0; C < P.length - 1; C++) for (var E = P[C], V = P[C + 1], T = 0; T < B.length - 1; T++) i.push(z(E, B[T], V, B[T + 1])); else i.push( z( { fixed: 0, stretch: -1 }, { fixed: 0, stretch: -1 }, { fixed: 0, stretch: s + 1 }, { fixed: 0, stretch: u + 1 }, ), ); return i; } function Ol(t, e, r) { for (var n = 0, i = 0, a = t; i < a.length; i += 1) { var o = a[i]; n += Math.max(e, Math.min(r, o[1])) - Math.max(e, Math.min(r, o[0])); } return n; } function Ll(t, e, r) { for ( var n = [{ fixed: -1, stretch: 0 }], i = 0, a = t; i < a.length; i += 1 ) { var o = a[i], s = o[0], u = o[1], l = n[n.length - 1]; n.push({ fixed: s - l.stretch, stretch: l.stretch }), n.push({ fixed: s - l.stretch, stretch: l.stretch + (u - s) }); } return n.push({ fixed: e + 1, stretch: r }), n; } function Dl(t, e, r, n) { return (t / e) * r + n; } function jl(t, e, r, n) { return t - (e * r) / n; } qn('Anchor', Il); var Rl = function (t, e, r, n, i, a, o, s, u, l) { if (((this.boxStartIndex = t.length), u)) { var p = a.top, c = a.bottom, h = a.collisionPadding; h && ((p -= h[1]), (c += h[3])); var f = c - p; f > 0 && ((f = Math.max(10, f)), (this.circleDiameter = f)); } else { var y = a.top * o - s[0], d = a.bottom * o + s[2], m = a.left * o - s[3], v = a.right * o + s[1], g = a.collisionPadding; if ( (g && ((m -= g[0] * o), (y -= g[1] * o), (v += g[2] * o), (d += g[3] * o)), l) ) { var x = new I(m, y), b = new I(v, y), w = new I(m, d), _ = new I(v, d), A = (l * Math.PI) / 180; x._rotate(A), b._rotate(A), w._rotate(A), _._rotate(A), (m = Math.min(x.x, b.x, w.x, _.x)), (v = Math.max(x.x, b.x, w.x, _.x)), (y = Math.min(x.y, b.y, w.y, _.y)), (d = Math.max(x.y, b.y, w.y, _.y)); } t.emplaceBack(e.x, e.y, m, y, v, d, r, n, i); } this.boxEndIndex = t.length; }, Ul = function (t, e) { if ( (void 0 === t && (t = []), void 0 === e && (e = ql), (this.data = t), (this.length = this.data.length), (this.compare = e), this.length > 0) ) for (var r = (this.length >> 1) - 1; r >= 0; r--) this._down(r); }; function ql(t, e) { return t < e ? -1 : t > e ? 1 : 0; } function Nl(t, e, r) { void 0 === e && (e = 1), void 0 === r && (r = !1); for ( var n = 1 / 0, i = 1 / 0, a = -1 / 0, o = -1 / 0, s = t[0], u = 0; u < s.length; u++ ) { var l = s[u]; (!u || l.x < n) && (n = l.x), (!u || l.y < i) && (i = l.y), (!u || l.x > a) && (a = l.x), (!u || l.y > o) && (o = l.y); } var p = Math.min(a - n, o - i), c = p / 2, h = new Ul([], Zl); if (0 === p) return new I(n, i); for (var f = n; f < a; f += p) for (var y = i; y < o; y += p) h.push(new Kl(f + c, y + c, c, t)); for ( var d = (function (t) { for ( var e = 0, r = 0, n = 0, i = t[0], a = 0, o = i.length, s = o - 1; a < o; s = a++ ) { var u = i[a], l = i[s], p = u.x * l.y - l.x * u.y; (r += (u.x + l.x) * p), (n += (u.y + l.y) * p), (e += 3 * p); } return new Kl(r / e, n / e, 0, t); })(t), m = h.length; h.length; ) { var v = h.pop(); (v.d > d.d || !d.d) && ((d = v), r && console.log( 'found best %d after %d probes', Math.round(1e4 * v.d) / 1e4, m, )), v.max - d.d <= e || (h.push(new Kl(v.p.x - (c = v.h / 2), v.p.y - c, c, t)), h.push(new Kl(v.p.x + c, v.p.y - c, c, t)), h.push(new Kl(v.p.x - c, v.p.y + c, c, t)), h.push(new Kl(v.p.x + c, v.p.y + c, c, t)), (m += 4)); } return ( r && (console.log('num probes: ' + m), console.log('best distance: ' + d.d)), d.p ); } function Zl(t, e) { return e.max - t.max; } function Kl(t, e, r, n) { (this.p = new I(t, e)), (this.h = r), (this.d = (function (t, e) { for (var r = !1, n = 1 / 0, i = 0; i < e.length; i++) for (var a = e[i], o = 0, s = a.length, u = s - 1; o < s; u = o++) { var l = a[o], p = a[u]; l.y > t.y != p.y > t.y && t.x < ((p.x - l.x) * (t.y - l.y)) / (p.y - l.y) + l.x && (r = !r), (n = Math.min(n, ko(t, l, p))); } return (r ? 1 : -1) * Math.sqrt(n); })(this.p, n)), (this.max = this.d + this.h * Math.SQRT2); } (Ul.prototype.push = function (t) { this.data.push(t), this.length++, this._up(this.length - 1); }), (Ul.prototype.pop = function () { if (0 !== this.length) { var t = this.data[0], e = this.data.pop(); return ( this.length--, this.length > 0 && ((this.data[0] = e), this._down(0)), t ); } }), (Ul.prototype.peek = function () { return this.data[0]; }), (Ul.prototype._up = function (t) { for (var e = this.data, r = this.compare, n = e[t]; t > 0; ) { var i = (t - 1) >> 1, a = e[i]; if (r(n, a) >= 0) break; (e[t] = a), (t = i); } e[t] = n; }), (Ul.prototype._down = function (t) { for ( var e = this.data, r = this.compare, n = this.length >> 1, i = e[t]; t < n; ) { var a = 1 + (t << 1), o = e[a], s = a + 1; if ( (s < this.length && r(e[s], o) < 0 && ((a = s), (o = e[s])), r(o, i) >= 0) ) break; (e[t] = o), (t = a); } e[t] = i; }); var Gl = Number.POSITIVE_INFINITY; function Jl(t, e) { return e[1] !== Gl ? (function (t, e, r) { var n = 0, i = 0; switch (((e = Math.abs(e)), (r = Math.abs(r)), t)) { case 'top-right': case 'top-left': case 'top': i = r - 7; break; case 'bottom-right': case 'bottom-left': case 'bottom': i = 7 - r; } switch (t) { case 'top-right': case 'bottom-right': case 'right': n = -e; break; case 'top-left': case 'bottom-left': case 'left': n = e; } return [n, i]; })(t, e[0], e[1]) : (function (t, e) { var r = 0, n = 0; e < 0 && (e = 0); var i = e / Math.sqrt(2); switch (t) { case 'top-right': case 'top-left': n = i - 7; break; case 'bottom-right': case 'bottom-left': n = 7 - i; break; case 'bottom': n = 7 - e; break; case 'top': n = e - 7; } switch (t) { case 'top-right': case 'bottom-right': r = -i; break; case 'top-left': case 'bottom-left': r = i; break; case 'left': r = e; break; case 'right': r = -e; } return [r, n]; })(t, e[0]); } function Xl(t) { switch (t) { case 'right': case 'top-right': case 'bottom-right': return 'right'; case 'left': case 'top-left': case 'bottom-left': return 'left'; } return 'center'; } var Yl = 32640; function Hl(t, e, r, n, i, a, o, s, u, l, p, c, h, f, y) { var m = (function (t, e, r, n, i, a, o, s) { for ( var u = (n.layout.get('text-rotate').evaluate(a, {}) * Math.PI) / 180, l = [], p = 0, c = e.positionedLines; p < c.length; p += 1 ) for ( var h = c[p], f = 0, y = h.positionedGlyphs; f < y.length; f += 1 ) { var d = y[f]; if (d.rect) { var m = d.rect || {}, v = 4, g = !0, x = 1, b = 0, w = (i || s) && d.vertical, _ = (d.metrics.advance * d.scale) / 2; if ( (s && e.verticalizable && (b = h.lineOffset / 2 - (d.imageName ? -(Eu - d.metrics.width * d.scale) / 2 : (d.scale - 1) * Eu)), d.imageName) ) { var A = o[d.imageName]; (g = A.sdf), (v = 1 / (x = A.pixelRatio)); } var k = i ? [d.x + _, d.y] : [0, 0], S = i ? [0, 0] : [d.x + _ + r[0], d.y + r[1] - b], M = [0, 0]; w && ((M = S), (S = [0, 0])); var z = (d.metrics.left - v) * d.scale - _ + S[0], P = (-d.metrics.top - v) * d.scale + S[1], B = z + (m.w * d.scale) / x, C = P + (m.h * d.scale) / x, E = new I(z, P), V = new I(B, P), T = new I(z, C), F = new I(B, C); if (w) { var O = new I(-_, _ - ll), L = -Math.PI / 2, D = 12 - _, j = new I(22 - D, -(d.imageName ? D : 0)), R = new (Function.prototype.bind.apply( I, [null].concat(M), ))(); E._rotateAround(L, O)._add(j)._add(R), V._rotateAround(L, O)._add(j)._add(R), T._rotateAround(L, O)._add(j)._add(R), F._rotateAround(L, O)._add(j)._add(R); } if (u) { var U = Math.sin(u), q = Math.cos(u), N = [q, -U, U, q]; E._matMult(N), V._matMult(N), T._matMult(N), F._matMult(N); } var Z = new I(0, 0), K = new I(0, 0); l.push({ tl: E, tr: V, bl: T, br: F, tex: m, writingMode: e.writingMode, glyphOffset: k, sectionIndex: d.sectionIndex, isSDF: g, pixelOffsetTL: Z, pixelOffsetBR: K, minFontScaleX: 0, minFontScaleY: 0, }); } } return l; })(0, r, s, i, a, o, n, t.allowVerticalPlacement), v = t.textSizeData, g = null; 'source' === v.kind ? (g = [kl * i.layout.get('text-size').evaluate(o, {})])[0] > Yl && d( t.layerIds[0] + ': Value for "text-size" is >= 255. Reduce your "text-size".', ) : 'composite' === v.kind && ((g = [ kl * f.compositeTextSizes[0].evaluate(o, {}, y), kl * f.compositeTextSizes[1].evaluate(o, {}, y), ])[0] > Yl || g[1] > Yl) && d( t.layerIds[0] + ': Value for "text-size" is >= 255. Reduce your "text-size".', ), t.addSymbols( t.text, m, g, s, a, o, l, e, u.lineStartIndex, u.lineLength, h, y, ); for (var x = 0, b = p; x < b.length; x += 1) c[b[x]] = t.text.placedSymbolArray.length - 1; return 4 * m.length; } function Wl(t) { for (var e in t) return t[e]; return null; } function $l(t, e, r, n) { var i = t.compareText; if (e in i) { for (var a = i[e], o = a.length - 1; o >= 0; o--) if (n.dist(a[o]) < r) return !0; } else i[e] = []; return i[e].push(n), !1; } var Ql = Gs.VectorTileFeature.types, tp = [ { name: 'a_fade_opacity', components: 1, type: 'Uint8', offset: 0 }, ]; function ep(t, e, r, n, i, a, o, s, u, l, p, c, h) { var f = s ? Math.min(Yl, Math.round(s[0])) : 0, y = s ? Math.min(Yl, Math.round(s[1])) : 0; t.emplaceBack( e, r, Math.round(32 * n), Math.round(32 * i), a, o, (f << 1) + (u ? 1 : 0), y, 16 * l, 16 * p, 256 * c, 256 * h, ); } function rp(t, e, r) { t.emplaceBack(e.x, e.y, r), t.emplaceBack(e.x, e.y, r), t.emplaceBack(e.x, e.y, r), t.emplaceBack(e.x, e.y, r); } function np(t) { for (var e = 0, r = t.sections; e < r.length; e += 1) if (ti(r[e].text)) return !0; return !1; } var ip = function (t) { (this.layoutVertexArray = new wa()), (this.indexArray = new za()), (this.programConfigurations = t), (this.segments = new Ea()), (this.dynamicLayoutVertexArray = new _a()), (this.opacityVertexArray = new Aa()), (this.placedSymbolArray = new oa()); }; (ip.prototype.isEmpty = function () { return ( 0 === this.layoutVertexArray.length && 0 === this.indexArray.length && 0 === this.dynamicLayoutVertexArray.length && 0 === this.opacityVertexArray.length ); }), (ip.prototype.upload = function (t, e, r, n) { this.isEmpty() || (r && ((this.layoutVertexBuffer = t.createVertexBuffer( this.layoutVertexArray, Su.members, )), (this.indexBuffer = t.createIndexBuffer(this.indexArray, e)), (this.dynamicLayoutVertexBuffer = t.createVertexBuffer( this.dynamicLayoutVertexArray, Iu.members, !0, )), (this.opacityVertexBuffer = t.createVertexBuffer( this.opacityVertexArray, tp, !0, )), (this.opacityVertexBuffer.itemSize = 1)), (r || n) && this.programConfigurations.upload(t)); }), (ip.prototype.destroy = function () { this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.programConfigurations.destroy(), this.segments.destroy(), this.dynamicLayoutVertexBuffer.destroy(), this.opacityVertexBuffer.destroy()); }), qn('SymbolBuffers', ip); var ap = function (t, e, r) { (this.layoutVertexArray = new t()), (this.layoutAttributes = e), (this.indexArray = new r()), (this.segments = new Ea()), (this.collisionVertexArray = new Ia()); }; (ap.prototype.upload = function (t) { (this.layoutVertexBuffer = t.createVertexBuffer( this.layoutVertexArray, this.layoutAttributes, )), (this.indexBuffer = t.createIndexBuffer(this.indexArray)), (this.collisionVertexBuffer = t.createVertexBuffer( this.collisionVertexArray, Mu.members, !0, )); }), (ap.prototype.destroy = function () { this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.segments.destroy(), this.collisionVertexBuffer.destroy()); }), qn('CollisionBuffers', ap); var op = function (e) { (this.collisionBoxArray = e.collisionBoxArray), (this.zoom = e.zoom), (this.overscaling = e.overscaling), (this.layers = e.layers), (this.layerIds = this.layers.map(function (t) { return t.id; })), (this.index = e.index), (this.pixelRatio = e.pixelRatio), (this.sourceLayerIndex = e.sourceLayerIndex), (this.hasPattern = !1), (this.hasRTLText = !1), (this.sortKeyRanges = []), (this.collisionCircleArray = []), (this.placementInvProjMatrix = Oo([])), (this.placementViewportMatrix = Oo([])); var r = this.layers[0]._unevaluatedLayout._values; (this.textSizeData = Sl(this.zoom, r['text-size'])), (this.iconSizeData = Sl(this.zoom, r['icon-size'])); var n = this.layers[0].layout, i = n.get('symbol-sort-key'), a = n.get('symbol-z-order'); (this.canOverlap = 'never' !== cp(n, 'text-overlap', 'text-allow-overlap') || 'never' !== cp(n, 'icon-overlap', 'icon-allow-overlap') || n.get('text-ignore-placement') || n.get('icon-ignore-placement')), (this.sortFeaturesByKey = 'viewport-y' !== a && !i.isConstant()), (this.sortFeaturesByY = ('viewport-y' === a || ('auto' === a && !this.sortFeaturesByKey)) && this.canOverlap), 'point' === n.get('symbol-placement') && (this.writingModes = n.get('text-writing-mode').map(function (e) { return t.WritingMode[e]; })), (this.stateDependentLayerIds = this.layers .filter(function (t) { return t.isStateDependent(); }) .map(function (t) { return t.id; })), (this.sourceID = e.sourceID); }; (op.prototype.createArrays = function () { (this.text = new ip( new oo(this.layers, this.zoom, function (t) { return /^text/.test(t); }), )), (this.icon = new ip( new oo(this.layers, this.zoom, function (t) { return /^icon/.test(t); }), )), (this.glyphOffsetArray = new la()), (this.lineVertexArray = new pa()), (this.symbolInstances = new ua()); }), (op.prototype.calculateGlyphDependencies = function (t, e, r, n, i) { for (var a = 0; a < t.length; a++) if (((e[t.charCodeAt(a)] = !0), (r || n) && i)) { var o = Cu[t.charAt(a)]; o && (e[o.charCodeAt(0)] = !0); } }), (op.prototype.populate = function (e, r, n) { var i = this.layers[0], a = i.layout, o = a.get('text-font'), s = a.get('text-field'), u = a.get('icon-image'), l = ('constant' !== s.value.kind || (s.value.value instanceof $t && !s.value.value.isEmpty()) || s.value.value.toString().length > 0) && ('constant' !== o.value.kind || o.value.value.length > 0), p = 'constant' !== u.value.kind || !!u.value.value || Object.keys(u.parameters).length > 0, c = a.get('symbol-sort-key'); if (((this.features = []), l || p)) { for ( var h = r.iconDependencies, f = r.glyphDependencies, y = r.availableImages, d = new fi(this.zoom), m = 0, v = e; m < v.length; m += 1 ) { var g = v[m], x = g.feature, b = g.id, w = g.index, _ = g.sourceLayerIndex, A = i._featureFilter.needGeometry, k = fo(x, A); if (i._featureFilter.filter(d, k, n)) { A || (k.geometry = ho(x)); var S = void 0; if (l) { var I = i.getValueAndResolveTokens('text-field', k, n, y), M = $t.factory(I); np(M) && (this.hasRTLText = !0), (!this.hasRTLText || 'unavailable' === pi() || (this.hasRTLText && hi.isParsed())) && (S = Bu(M, i, k)); } var z = void 0; if (p) { var P = i.getValueAndResolveTokens('icon-image', k, n, y); z = P instanceof te ? P : te.fromString(P); } if (S || z) { var B = this.sortFeaturesByKey ? c.evaluate(k, {}, n) : void 0; if ( (this.features.push({ id: b, text: S, icon: z, index: w, sourceLayerIndex: _, geometry: k.geometry, properties: x.properties, type: Ql[x.type], sortKey: B, }), z && (h[z.name] = !0), S) ) { var C = o.evaluate(k, {}, n).join(','), E = 'viewport' !== a.get('text-rotation-alignment') && 'point' !== a.get('symbol-placement'); this.allowVerticalPlacement = this.writingModes && this.writingModes.indexOf(t.WritingMode.vertical) >= 0; for (var V = 0, T = S.sections; V < T.length; V += 1) { var F = T[V]; if (F.image) h[F.image.name] = !0; else { var O = Yn(S.toString()), L = F.fontStack || C, D = (f[L] = f[L] || {}); this.calculateGlyphDependencies( F.text, D, E, this.allowVerticalPlacement, O, ); } } } } } } 'line' === a.get('symbol-placement') && (this.features = (function (t) { var e = {}, r = {}, n = [], i = 0; function a(e) { n.push(t[e]), i++; } function o(t, e, i) { var a = r[t]; return ( delete r[t], (r[e] = a), n[a].geometry[0].pop(), (n[a].geometry[0] = n[a].geometry[0].concat(i[0])), a ); } function s(t, r, i) { var a = e[r]; return ( delete e[r], (e[t] = a), n[a].geometry[0].shift(), (n[a].geometry[0] = i[0].concat(n[a].geometry[0])), a ); } function u(t, e, r) { var n = r ? e[0][e[0].length - 1] : e[0][0]; return t + ':' + n.x + ':' + n.y; } for (var l = 0; l < t.length; l++) { var p = t[l], c = p.geometry, h = p.text ? p.text.toString() : null; if (h) { var f = u(h, c), y = u(h, c, !0); if (f in r && y in e && r[f] !== e[y]) { var d = s(f, y, c), m = o(f, y, n[d].geometry); delete e[f], delete r[y], (r[u(h, n[m].geometry, !0)] = m), (n[d].geometry = null); } else f in r ? o(f, y, c) : y in e ? s(f, y, c) : (a(l), (e[f] = i - 1), (r[y] = i - 1)); } else a(l); } return n.filter(function (t) { return t.geometry; }); })(this.features)), this.sortFeaturesByKey && this.features.sort(function (t, e) { return t.sortKey - e.sortKey; }); } }), (op.prototype.update = function (t, e, r) { this.stateDependentLayers.length && (this.text.programConfigurations.updatePaintArrays( t, e, this.layers, r, ), this.icon.programConfigurations.updatePaintArrays( t, e, this.layers, r, )); }), (op.prototype.isEmpty = function () { return 0 === this.symbolInstances.length && !this.hasRTLText; }), (op.prototype.uploadPending = function () { return ( !this.uploaded || this.text.programConfigurations.needsUpload || this.icon.programConfigurations.needsUpload ); }), (op.prototype.upload = function (t) { !this.uploaded && this.hasDebugData() && (this.textCollisionBox.upload(t), this.iconCollisionBox.upload(t)), this.text.upload( t, this.sortFeaturesByY, !this.uploaded, this.text.programConfigurations.needsUpload, ), this.icon.upload( t, this.sortFeaturesByY, !this.uploaded, this.icon.programConfigurations.needsUpload, ), (this.uploaded = !0); }), (op.prototype.destroyDebugData = function () { this.textCollisionBox.destroy(), this.iconCollisionBox.destroy(); }), (op.prototype.destroy = function () { this.text.destroy(), this.icon.destroy(), this.hasDebugData() && this.destroyDebugData(); }), (op.prototype.addToLineVertexArray = function (t, e) { var r = this.lineVertexArray.length; if (void 0 !== t.segment) { for ( var n = t.dist(e[t.segment + 1]), i = t.dist(e[t.segment]), a = {}, o = t.segment + 1; o < e.length; o++ ) (a[o] = { x: e[o].x, y: e[o].y, tileUnitDistanceFromAnchor: n }), o < e.length - 1 && (n += e[o + 1].dist(e[o])); for (var s = t.segment || 0; s >= 0; s--) (a[s] = { x: e[s].x, y: e[s].y, tileUnitDistanceFromAnchor: i }), s > 0 && (i += e[s - 1].dist(e[s])); for (var u = 0; u < e.length; u++) { var l = a[u]; this.lineVertexArray.emplaceBack( l.x, l.y, l.tileUnitDistanceFromAnchor, ); } } return { lineStartIndex: r, lineLength: this.lineVertexArray.length - r, }; }), (op.prototype.addSymbols = function (e, r, n, i, a, o, s, u, l, p, c, h) { for ( var f = e.indexArray, y = e.layoutVertexArray, d = e.segments.prepareSegment( 4 * r.length, y, f, this.canOverlap ? o.sortKey : void 0, ), m = this.glyphOffsetArray.length, v = d.vertexLength, g = this.allowVerticalPlacement && s === t.WritingMode.vertical ? Math.PI / 2 : 0, x = o.text && o.text.sections, b = 0; b < r.length; b++ ) { var w = r[b], _ = w.tl, A = w.tr, k = w.bl, S = w.br, I = w.tex, M = w.pixelOffsetTL, z = w.pixelOffsetBR, P = w.minFontScaleX, B = w.minFontScaleY, C = w.glyphOffset, E = w.isSDF, V = w.sectionIndex, T = d.vertexLength, F = C[1]; ep(y, u.x, u.y, _.x, F + _.y, I.x, I.y, n, E, M.x, M.y, P, B), ep(y, u.x, u.y, A.x, F + A.y, I.x + I.w, I.y, n, E, z.x, M.y, P, B), ep(y, u.x, u.y, k.x, F + k.y, I.x, I.y + I.h, n, E, M.x, z.y, P, B), ep( y, u.x, u.y, S.x, F + S.y, I.x + I.w, I.y + I.h, n, E, z.x, z.y, P, B, ), rp(e.dynamicLayoutVertexArray, u, g), f.emplaceBack(T, T + 1, T + 2), f.emplaceBack(T + 1, T + 2, T + 3), (d.vertexLength += 4), (d.primitiveLength += 2), this.glyphOffsetArray.emplaceBack(C[0]), (b !== r.length - 1 && V === r[b + 1].sectionIndex) || e.programConfigurations.populatePaintArrays( y.length, o, o.index, {}, h, x && x[V], ); } e.placedSymbolArray.emplaceBack( u.x, u.y, m, this.glyphOffsetArray.length - m, v, l, p, u.segment, n ? n[0] : 0, n ? n[1] : 0, i[0], i[1], s, 0, !1, 0, c, ); }), (op.prototype._addCollisionDebugVertex = function (t, e, r, n, i, a) { return ( e.emplaceBack(0, 0), t.emplaceBack(r.x, r.y, n, i, Math.round(a.x), Math.round(a.y)) ); }), (op.prototype.addCollisionDebugVertices = function (t, e, r, n, i, a, o) { var s = i.segments.prepareSegment(4, i.layoutVertexArray, i.indexArray), u = s.vertexLength, l = i.layoutVertexArray, p = i.collisionVertexArray, c = o.anchorX, h = o.anchorY; this._addCollisionDebugVertex(l, p, a, c, h, new I(t, e)), this._addCollisionDebugVertex(l, p, a, c, h, new I(r, e)), this._addCollisionDebugVertex(l, p, a, c, h, new I(r, n)), this._addCollisionDebugVertex(l, p, a, c, h, new I(t, n)), (s.vertexLength += 4); var f = i.indexArray; f.emplaceBack(u, u + 1), f.emplaceBack(u + 1, u + 2), f.emplaceBack(u + 2, u + 3), f.emplaceBack(u + 3, u), (s.primitiveLength += 4); }), (op.prototype.addDebugCollisionBoxes = function (t, e, r, n) { for (var i = t; i < e; i++) { var a = this.collisionBoxArray.get(i); this.addCollisionDebugVertices( a.x1, a.y1, a.x2, a.y2, n ? this.textCollisionBox : this.iconCollisionBox, a.anchorPoint, r, ); } }), (op.prototype.generateCollisionDebugBuffers = function () { this.hasDebugData() && this.destroyDebugData(), (this.textCollisionBox = new ap(ka, zu.members, Pa)), (this.iconCollisionBox = new ap(ka, zu.members, Pa)); for (var t = 0; t < this.symbolInstances.length; t++) { var e = this.symbolInstances.get(t); this.addDebugCollisionBoxes( e.textBoxStartIndex, e.textBoxEndIndex, e, !0, ), this.addDebugCollisionBoxes( e.verticalTextBoxStartIndex, e.verticalTextBoxEndIndex, e, !0, ), this.addDebugCollisionBoxes( e.iconBoxStartIndex, e.iconBoxEndIndex, e, !1, ), this.addDebugCollisionBoxes( e.verticalIconBoxStartIndex, e.verticalIconBoxEndIndex, e, !1, ); } }), (op.prototype._deserializeCollisionBoxesForSymbol = function ( t, e, r, n, i, a, o, s, u, ) { for (var l = {}, p = e; p < r; p++) { var c = t.get(p); (l.textBox = { x1: c.x1, y1: c.y1, x2: c.x2, y2: c.y2, anchorPointX: c.anchorPointX, anchorPointY: c.anchorPointY, }), (l.textFeatureIndex = c.featureIndex); break; } for (var h = n; h < i; h++) { var f = t.get(h); (l.verticalTextBox = { x1: f.x1, y1: f.y1, x2: f.x2, y2: f.y2, anchorPointX: f.anchorPointX, anchorPointY: f.anchorPointY, }), (l.verticalTextFeatureIndex = f.featureIndex); break; } for (var y = a; y < o; y++) { var d = t.get(y); (l.iconBox = { x1: d.x1, y1: d.y1, x2: d.x2, y2: d.y2, anchorPointX: d.anchorPointX, anchorPointY: d.anchorPointY, }), (l.iconFeatureIndex = d.featureIndex); break; } for (var m = s; m < u; m++) { var v = t.get(m); (l.verticalIconBox = { x1: v.x1, y1: v.y1, x2: v.x2, y2: v.y2, anchorPointX: v.anchorPointX, anchorPointY: v.anchorPointY, }), (l.verticalIconFeatureIndex = v.featureIndex); break; } return l; }), (op.prototype.deserializeCollisionBoxes = function (t) { this.collisionArrays = []; for (var e = 0; e < this.symbolInstances.length; e++) { var r = this.symbolInstances.get(e); this.collisionArrays.push( this._deserializeCollisionBoxesForSymbol( t, r.textBoxStartIndex, r.textBoxEndIndex, r.verticalTextBoxStartIndex, r.verticalTextBoxEndIndex, r.iconBoxStartIndex, r.iconBoxEndIndex, r.verticalIconBoxStartIndex, r.verticalIconBoxEndIndex, ), ); } }), (op.prototype.hasTextData = function () { return this.text.segments.get().length > 0; }), (op.prototype.hasIconData = function () { return this.icon.segments.get().length > 0; }), (op.prototype.hasDebugData = function () { return this.textCollisionBox && this.iconCollisionBox; }), (op.prototype.hasTextCollisionBoxData = function () { return ( this.hasDebugData() && this.textCollisionBox.segments.get().length > 0 ); }), (op.prototype.hasIconCollisionBoxData = function () { return ( this.hasDebugData() && this.iconCollisionBox.segments.get().length > 0 ); }), (op.prototype.addIndicesForPlacedSymbol = function (t, e) { for ( var r = t.placedSymbolArray.get(e), n = r.vertexStartIndex + 4 * r.numGlyphs, i = r.vertexStartIndex; i < n; i += 4 ) t.indexArray.emplaceBack(i, i + 1, i + 2), t.indexArray.emplaceBack(i + 1, i + 2, i + 3); }), (op.prototype.getSortedSymbolIndexes = function (t) { if (this.sortedAngle === t && void 0 !== this.symbolInstanceIndexes) return this.symbolInstanceIndexes; for ( var e = Math.sin(t), r = Math.cos(t), n = [], i = [], a = [], o = 0; o < this.symbolInstances.length; ++o ) { a.push(o); var s = this.symbolInstances.get(o); n.push(0 | Math.round(e * s.anchorX + r * s.anchorY)), i.push(s.featureIndex); } return ( a.sort(function (t, e) { return n[t] - n[e] || i[e] - i[t]; }), a ); }), (op.prototype.addToSortKeyRanges = function (t, e) { var r = this.sortKeyRanges[this.sortKeyRanges.length - 1]; r && r.sortKey === e ? (r.symbolInstanceEnd = t + 1) : this.sortKeyRanges.push({ sortKey: e, symbolInstanceStart: t, symbolInstanceEnd: t + 1, }); }), (op.prototype.sortFeatures = function (t) { var e = this; if ( this.sortFeaturesByY && this.sortedAngle !== t && !( this.text.segments.get().length > 1 || this.icon.segments.get().length > 1 ) ) { (this.symbolInstanceIndexes = this.getSortedSymbolIndexes(t)), (this.sortedAngle = t), this.text.indexArray.clear(), this.icon.indexArray.clear(), (this.featureSortOrder = []); for ( var r = 0, n = this.symbolInstanceIndexes; r < n.length; r += 1 ) { var i = this.symbolInstances.get(n[r]); this.featureSortOrder.push(i.featureIndex), [ i.rightJustifiedTextSymbolIndex, i.centerJustifiedTextSymbolIndex, i.leftJustifiedTextSymbolIndex, ].forEach(function (t, r, n) { t >= 0 && n.indexOf(t) === r && e.addIndicesForPlacedSymbol(e.text, t); }), i.verticalPlacedTextSymbolIndex >= 0 && this.addIndicesForPlacedSymbol( this.text, i.verticalPlacedTextSymbolIndex, ), i.placedIconSymbolIndex >= 0 && this.addIndicesForPlacedSymbol( this.icon, i.placedIconSymbolIndex, ), i.verticalPlacedIconSymbolIndex >= 0 && this.addIndicesForPlacedSymbol( this.icon, i.verticalPlacedIconSymbolIndex, ); } this.text.indexBuffer && this.text.indexBuffer.updateData(this.text.indexArray), this.icon.indexBuffer && this.icon.indexBuffer.updateData(this.icon.indexArray); } }), qn('SymbolBucket', op, { omit: ['layers', 'collisionBoxArray', 'features', 'compareText'], }), (op.MAX_GLYPHS = 65535), (op.addDynamicAttributes = rp); var sp = new Mi({ 'symbol-placement': new _i(gt.layout_symbol['symbol-placement']), 'symbol-spacing': new _i(gt.layout_symbol['symbol-spacing']), 'symbol-avoid-edges': new _i(gt.layout_symbol['symbol-avoid-edges']), 'symbol-sort-key': new Ai(gt.layout_symbol['symbol-sort-key']), 'symbol-z-order': new _i(gt.layout_symbol['symbol-z-order']), 'icon-allow-overlap': new _i(gt.layout_symbol['icon-allow-overlap']), 'icon-overlap': new _i(gt.layout_symbol['icon-overlap']), 'icon-ignore-placement': new _i( gt.layout_symbol['icon-ignore-placement'], ), 'icon-optional': new _i(gt.layout_symbol['icon-optional']), 'icon-rotation-alignment': new _i( gt.layout_symbol['icon-rotation-alignment'], ), 'icon-size': new Ai(gt.layout_symbol['icon-size']), 'icon-text-fit': new _i(gt.layout_symbol['icon-text-fit']), 'icon-text-fit-padding': new _i( gt.layout_symbol['icon-text-fit-padding'], ), 'icon-image': new Ai(gt.layout_symbol['icon-image']), 'icon-rotate': new Ai(gt.layout_symbol['icon-rotate']), 'icon-padding': new Ai(gt.layout_symbol['icon-padding']), 'icon-keep-upright': new _i(gt.layout_symbol['icon-keep-upright']), 'icon-offset': new Ai(gt.layout_symbol['icon-offset']), 'icon-anchor': new Ai(gt.layout_symbol['icon-anchor']), 'icon-pitch-alignment': new _i( gt.layout_symbol['icon-pitch-alignment'], ), 'text-pitch-alignment': new _i( gt.layout_symbol['text-pitch-alignment'], ), 'text-rotation-alignment': new _i( gt.layout_symbol['text-rotation-alignment'], ), 'text-field': new Ai(gt.layout_symbol['text-field']), 'text-font': new Ai(gt.layout_symbol['text-font']), 'text-size': new Ai(gt.layout_symbol['text-size']), 'text-max-width': new Ai(gt.layout_symbol['text-max-width']), 'text-line-height': new _i(gt.layout_symbol['text-line-height']), 'text-letter-spacing': new Ai(gt.layout_symbol['text-letter-spacing']), 'text-justify': new Ai(gt.layout_symbol['text-justify']), 'text-radial-offset': new Ai(gt.layout_symbol['text-radial-offset']), 'text-variable-anchor': new _i( gt.layout_symbol['text-variable-anchor'], ), 'text-anchor': new Ai(gt.layout_symbol['text-anchor']), 'text-max-angle': new _i(gt.layout_symbol['text-max-angle']), 'text-writing-mode': new _i(gt.layout_symbol['text-writing-mode']), 'text-rotate': new Ai(gt.layout_symbol['text-rotate']), 'text-padding': new _i(gt.layout_symbol['text-padding']), 'text-keep-upright': new _i(gt.layout_symbol['text-keep-upright']), 'text-transform': new Ai(gt.layout_symbol['text-transform']), 'text-offset': new Ai(gt.layout_symbol['text-offset']), 'text-allow-overlap': new _i(gt.layout_symbol['text-allow-overlap']), 'text-overlap': new _i(gt.layout_symbol['text-overlap']), 'text-ignore-placement': new _i( gt.layout_symbol['text-ignore-placement'], ), 'text-optional': new _i(gt.layout_symbol['text-optional']), }), up = { paint: new Mi({ 'icon-opacity': new Ai(gt.paint_symbol['icon-opacity']), 'icon-color': new Ai(gt.paint_symbol['icon-color']), 'icon-halo-color': new Ai(gt.paint_symbol['icon-halo-color']), 'icon-halo-width': new Ai(gt.paint_symbol['icon-halo-width']), 'icon-halo-blur': new Ai(gt.paint_symbol['icon-halo-blur']), 'icon-translate': new _i(gt.paint_symbol['icon-translate']), 'icon-translate-anchor': new _i( gt.paint_symbol['icon-translate-anchor'], ), 'text-opacity': new Ai(gt.paint_symbol['text-opacity']), 'text-color': new Ai(gt.paint_symbol['text-color'], { runtimeType: Bt, getOverride: function (t) { return t.textColor; }, hasOverride: function (t) { return !!t.textColor; }, }), 'text-halo-color': new Ai(gt.paint_symbol['text-halo-color']), 'text-halo-width': new Ai(gt.paint_symbol['text-halo-width']), 'text-halo-blur': new Ai(gt.paint_symbol['text-halo-blur']), 'text-translate': new _i(gt.paint_symbol['text-translate']), 'text-translate-anchor': new _i( gt.paint_symbol['text-translate-anchor'], ), }), layout: sp, }, lp = function (t) { if (void 0 === t.property.overrides) throw new Error( 'overrides must be provided to instantiate FormatSectionOverride class', ); (this.type = t.property.overrides ? t.property.overrides.runtimeType : It), (this.defaultValue = t); }; (lp.prototype.evaluate = function (t) { if (t.formattedSection) { var e = this.defaultValue.property.overrides; if (e && e.hasOverride(t.formattedSection)) return e.getOverride(t.formattedSection); } return t.feature && t.featureState ? this.defaultValue.evaluate(t.feature, t.featureState) : this.defaultValue.property.specification.default; }), (lp.prototype.eachChild = function (t) { this.defaultValue.isConstant() || t(this.defaultValue.value._styleExpression.expression); }), (lp.prototype.outputDefined = function () { return !1; }), (lp.prototype.serialize = function () { return null; }), qn('FormatSectionOverride', lp, { omit: ['defaultValue'] }); var pp = (function (t) { function e(e) { t.call(this, e, up); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.recalculate = function (e, r) { if ( (t.prototype.recalculate.call(this, e, r), 'auto' === this.layout.get('icon-rotation-alignment') && (this.layout._values['icon-rotation-alignment'] = 'point' !== this.layout.get('symbol-placement') ? 'map' : 'viewport'), 'auto' === this.layout.get('text-rotation-alignment') && (this.layout._values['text-rotation-alignment'] = 'point' !== this.layout.get('symbol-placement') ? 'map' : 'viewport'), 'auto' === this.layout.get('text-pitch-alignment') && (this.layout._values['text-pitch-alignment'] = 'map' === this.layout.get('text-rotation-alignment') ? 'map' : 'viewport'), 'auto' === this.layout.get('icon-pitch-alignment') && (this.layout._values['icon-pitch-alignment'] = this.layout.get( 'icon-rotation-alignment', )), 'point' === this.layout.get('symbol-placement')) ) { var n = this.layout.get('text-writing-mode'); if (n) { for (var i = [], a = 0, o = n; a < o.length; a += 1) { var s = o[a]; i.indexOf(s) < 0 && i.push(s); } this.layout._values['text-writing-mode'] = i; } else this.layout._values['text-writing-mode'] = ['horizontal']; } this._setPaintOverrides(); }), (e.prototype.getValueAndResolveTokens = function (t, e, r, n) { var i = this.layout.get(t).evaluate(e, {}, r, n), a = this._unevaluatedLayout._values[t]; return a.isDataDriven() || Xr(a.value) || !i ? i : (function (t, e) { return e.replace(/{([^{}]+)}/g, function (e, r) { return r in t ? String(t[r]) : ''; }); })(e.properties, i); }), (e.prototype.createBucket = function (t) { return new op(t); }), (e.prototype.queryRadius = function () { return 0; }), (e.prototype.queryIntersectsFeature = function () { throw new Error('Should take a different path in FeatureIndex'); }), (e.prototype._setPaintOverrides = function () { for ( var t = 0, r = up.paint.overridableProperties; t < r.length; t += 1 ) { var n = r[t]; if (e.hasPaintOverride(this.layout, n)) { var i, a = this.paint.get(n), o = new lp(a), s = new Jr(o, a.property.specification); (i = 'constant' === a.value.kind || 'source' === a.value.kind ? new Hr('source', s) : new Wr('composite', s, a.value.zoomStops)), (this.paint._values[n] = new bi(a.property, i, a.parameters)); } } }), (e.prototype._handleOverridablePaintPropertyUpdate = function ( t, r, n, ) { return ( !(!this.layout || r.isDataDriven() || n.isDataDriven()) && e.hasPaintOverride(this.layout, t) ); }), (e.hasPaintOverride = function (t, e) { var r = t.get('text-field'), n = up.paint.properties[e], i = !1, a = function (t) { for (var e = 0, r = t; e < r.length; e += 1) if (n.overrides && n.overrides.hasOverride(r[e])) return void (i = !0); }; if ('constant' === r.value.kind && r.value.value instanceof $t) a(r.value.value.sections); else if ('source' === r.value.kind) { var o = function (t) { i || (t instanceof ae && ne(t.value) === Tt ? a(t.value.sections) : t instanceof Sr ? a(t.sections) : t.eachChild(o)); }, s = r.value; s._styleExpression && o(s._styleExpression.expression); } return i; }), e ); })(Pi); function cp(t, e, r) { var n = 'never', i = t.get(e); return i ? (n = i) : t.get(r) && (n = 'always'), n; } var hp = { paint: new Mi({ 'background-color': new _i(gt.paint_background['background-color']), 'background-pattern': new Si( gt.paint_background['background-pattern'], ), 'background-opacity': new _i( gt.paint_background['background-opacity'], ), }), }, fp = (function (t) { function e(e) { t.call(this, e, hp); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Pi), yp = { paint: new Mi({ 'raster-opacity': new _i(gt.paint_raster['raster-opacity']), 'raster-hue-rotate': new _i(gt.paint_raster['raster-hue-rotate']), 'raster-brightness-min': new _i( gt.paint_raster['raster-brightness-min'], ), 'raster-brightness-max': new _i( gt.paint_raster['raster-brightness-max'], ), 'raster-saturation': new _i(gt.paint_raster['raster-saturation']), 'raster-contrast': new _i(gt.paint_raster['raster-contrast']), 'raster-resampling': new _i(gt.paint_raster['raster-resampling']), 'raster-fade-duration': new _i( gt.paint_raster['raster-fade-duration'], ), }), }, dp = (function (t) { function e(e) { t.call(this, e, yp); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(Pi), mp = (function (t) { function e(e) { var r = this; t.call(this, e, {}), (this.onAdd = function (t) { r.implementation.onAdd && r.implementation.onAdd(t, t.painter.context.gl); }), (this.onRemove = function (t) { r.implementation.onRemove && r.implementation.onRemove(t, t.painter.context.gl); }), (this.implementation = e); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.is3D = function () { return '3d' === this.implementation.renderingMode; }), (e.prototype.hasOffscreenPass = function () { return void 0 !== this.implementation.prerender; }), (e.prototype.recalculate = function () {}), (e.prototype.updateTransitions = function () {}), (e.prototype.hasTransition = function () { return !1; }), (e.prototype.serialize = function () { throw new Error('Custom layers cannot be serialized'); }), e ); })(Pi), vp = { circle: Zo, heatmap: ts, hillshade: rs, fill: qs, 'fill-extrusion': pu, line: Au, symbol: pp, background: fp, raster: dp, }, gp = function (t) { var e = this; (this._callback = t), (this._triggered = !1), 'undefined' != typeof MessageChannel && ((this._channel = new MessageChannel()), (this._channel.port2.onmessage = function () { (e._triggered = !1), e._callback(); })); }; (gp.prototype.trigger = function () { var t = this; this._triggered || ((this._triggered = !0), this._channel ? this._channel.port1.postMessage(!0) : setTimeout(function () { (t._triggered = !1), t._callback(); }, 0)); }), (gp.prototype.remove = function () { delete this._channel, (this._callback = function () {}); }); var xp = function (t, e, r) { (this.target = t), (this.parent = e), (this.mapId = r), (this.callbacks = {}), (this.tasks = {}), (this.taskQueue = []), (this.cancelCallbacks = {}), l(['receive', 'process'], this), (this.invoker = new gp(this.process)), this.target.addEventListener('message', this.receive, !1), (this.globalScope = g() ? t : window); }; (xp.prototype.send = function (t, e, r, n, i) { var a = this; void 0 === i && (i = !1); var o = Math.round(1e18 * Math.random()) .toString(36) .substring(0, 10); r && (this.callbacks[o] = r); var s = w(this.globalScope) ? void 0 : []; return ( this.target.postMessage( { id: o, type: t, hasCallback: !!r, targetMapId: n, mustQueue: i, sourceMapId: this.mapId, data: Kn(e, s), }, s, ), { cancel: function () { r && delete a.callbacks[o], a.target.postMessage({ id: o, type: '', targetMapId: n, sourceMapId: a.mapId, }); }, } ); }), (xp.prototype.receive = function (t) { var e = t.data, r = e.id; if (r && (!e.targetMapId || this.mapId === e.targetMapId)) if ('' === e.type) { delete this.tasks[r]; var n = this.cancelCallbacks[r]; delete this.cancelCallbacks[r], n && n(); } else g() || e.mustQueue ? ((this.tasks[r] = e), this.taskQueue.push(r), this.invoker.trigger()) : this.processTask(r, e); }), (xp.prototype.process = function () { if (this.taskQueue.length) { var t = this.taskQueue.shift(), e = this.tasks[t]; delete this.tasks[t], this.taskQueue.length && this.invoker.trigger(), e && this.processTask(t, e); } }), (xp.prototype.processTask = function (t, e) { var r = this; if ('' === e.type) { var n = this.callbacks[t]; delete this.callbacks[t], n && (e.error ? n(Gn(e.error)) : n(null, Gn(e.data))); } else { var i = !1, a = w(this.globalScope) ? void 0 : [], o = e.hasCallback ? function (e, n) { (i = !0), delete r.cancelCallbacks[t], r.target.postMessage( { id: t, type: '', sourceMapId: r.mapId, error: e ? Kn(e) : null, data: Kn(n, a), }, a, ); } : function (t) { i = !0; }, s = null, u = Gn(e.data); if (this.parent[e.type]) s = this.parent[e.type](e.sourceMapId, u, o); else if (this.parent.getWorkerSource) { var l = e.type.split('.'); s = this.parent .getWorkerSource(e.sourceMapId, l[0], u.source) [l[1]](u, o); } else o(new Error('Could not find function ' + e.type)); !i && s && s.cancel && (this.cancelCallbacks[t] = s.cancel); } }), (xp.prototype.remove = function () { this.invoker.remove(), this.target.removeEventListener('message', this.receive, !1); }); var bp = 6371008.8, wp = function (t, e) { if (isNaN(t) || isNaN(e)) throw new Error('Invalid LngLat object: (' + t + ', ' + e + ')'); if (((this.lng = +t), (this.lat = +e), this.lat > 90 || this.lat < -90)) throw new Error( 'Invalid LngLat latitude value: must be between -90 and 90', ); }; (wp.prototype.wrap = function () { return new wp(o(this.lng, -180, 180), this.lat); }), (wp.prototype.toArray = function () { return [this.lng, this.lat]; }), (wp.prototype.toString = function () { return 'LngLat(' + this.lng + ', ' + this.lat + ')'; }), (wp.prototype.distanceTo = function (t) { var e = Math.PI / 180, r = this.lat * e, n = t.lat * e, i = Math.sin(r) * Math.sin(n) + Math.cos(r) * Math.cos(n) * Math.cos((t.lng - this.lng) * e); return bp * Math.acos(Math.min(i, 1)); }), (wp.prototype.toBounds = function (t) { void 0 === t && (t = 0); var e = (360 * t) / 40075017, r = e / Math.cos((Math.PI / 180) * this.lat); return new _p( new wp(this.lng - r, this.lat - e), new wp(this.lng + r, this.lat + e), ); }), (wp.convert = function (t) { if (t instanceof wp) return t; if (Array.isArray(t) && (2 === t.length || 3 === t.length)) return new wp(Number(t[0]), Number(t[1])); if (!Array.isArray(t) && 'object' == typeof t && null !== t) return new wp(Number('lng' in t ? t.lng : t.lon), Number(t.lat)); throw new Error( '`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]', ); }); var _p = function (t, e) { t && (e ? this.setSouthWest(t).setNorthEast(e) : 4 === t.length ? this.setSouthWest([t[0], t[1]]).setNorthEast([t[2], t[3]]) : this.setSouthWest(t[0]).setNorthEast(t[1])); }; (_p.prototype.setNorthEast = function (t) { return ( (this._ne = t instanceof wp ? new wp(t.lng, t.lat) : wp.convert(t)), this ); }), (_p.prototype.setSouthWest = function (t) { return ( (this._sw = t instanceof wp ? new wp(t.lng, t.lat) : wp.convert(t)), this ); }), (_p.prototype.extend = function (t) { var e, r, n = this._sw, i = this._ne; if (t instanceof wp) (e = t), (r = t); else { if (!(t instanceof _p)) return Array.isArray(t) ? 4 === t.length || t.every(Array.isArray) ? this.extend(_p.convert(t)) : this.extend(wp.convert(t)) : this; if (((r = t._ne), !(e = t._sw) || !r)) return this; } return ( n || i ? ((n.lng = Math.min(e.lng, n.lng)), (n.lat = Math.min(e.lat, n.lat)), (i.lng = Math.max(r.lng, i.lng)), (i.lat = Math.max(r.lat, i.lat))) : ((this._sw = new wp(e.lng, e.lat)), (this._ne = new wp(r.lng, r.lat))), this ); }), (_p.prototype.getCenter = function () { return new wp( (this._sw.lng + this._ne.lng) / 2, (this._sw.lat + this._ne.lat) / 2, ); }), (_p.prototype.getSouthWest = function () { return this._sw; }), (_p.prototype.getNorthEast = function () { return this._ne; }), (_p.prototype.getNorthWest = function () { return new wp(this.getWest(), this.getNorth()); }), (_p.prototype.getSouthEast = function () { return new wp(this.getEast(), this.getSouth()); }), (_p.prototype.getWest = function () { return this._sw.lng; }), (_p.prototype.getSouth = function () { return this._sw.lat; }), (_p.prototype.getEast = function () { return this._ne.lng; }), (_p.prototype.getNorth = function () { return this._ne.lat; }), (_p.prototype.toArray = function () { return [this._sw.toArray(), this._ne.toArray()]; }), (_p.prototype.toString = function () { return ( 'LngLatBounds(' + this._sw.toString() + ', ' + this._ne.toString() + ')' ); }), (_p.prototype.isEmpty = function () { return !(this._sw && this._ne); }), (_p.prototype.contains = function (t) { var e = wp.convert(t), r = e.lng, n = e.lat, i = this._sw.lng <= r && r <= this._ne.lng; return ( this._sw.lng > this._ne.lng && (i = this._sw.lng >= r && r >= this._ne.lng), this._sw.lat <= n && n <= this._ne.lat && i ); }), (_p.convert = function (t) { return t instanceof _p ? t : t ? new _p(t) : t; }); var Ap = 2 * Math.PI * bp; function kp(t) { return Ap * Math.cos((t * Math.PI) / 180); } function Sp(t) { return (180 + t) / 360; } function Ip(t) { return ( (180 - (180 / Math.PI) * Math.log(Math.tan(Math.PI / 4 + (t * Math.PI) / 360))) / 360 ); } function Mp(t, e) { return t / kp(e); } function zp(t) { return ( (360 / Math.PI) * Math.atan(Math.exp(((180 - 360 * t) * Math.PI) / 180)) - 90 ); } var Pp = function (t, e, r) { void 0 === r && (r = 0), (this.x = +t), (this.y = +e), (this.z = +r); }; function Bp(t, e, r) { var n = (2 * Math.PI * 6378137) / 256 / Math.pow(2, r); return [ t * n - (2 * Math.PI * 6378137) / 2, e * n - (2 * Math.PI * 6378137) / 2, ]; } (Pp.fromLngLat = function (t, e) { void 0 === e && (e = 0); var r = wp.convert(t); return new Pp(Sp(r.lng), Ip(r.lat), Mp(e, r.lat)); }), (Pp.prototype.toLngLat = function () { return new wp(360 * this.x - 180, zp(this.y)); }), (Pp.prototype.toAltitude = function () { return this.z * kp(zp(this.y)); }), (Pp.prototype.meterInMercatorCoordinateUnits = function () { return (1 / Ap) * ((t = zp(this.y)), 1 / Math.cos((t * Math.PI) / 180)); var t; }); var Cp = function (t, e, r) { if ( t < 0 || t > 25 || r < 0 || r >= Math.pow(2, t) || e < 0 || e >= Math.pow(2, t) ) throw new Error( 'x=' + e + ', y=' + r + ', z=' + t + ' outside of bounds. 0<=x<' + Math.pow(2, t) + ', 0<=y<' + Math.pow(2, t) + ' 0<=z<=25 ', ); (this.z = t), (this.x = e), (this.y = r), (this.key = Tp(0, t, t, e, r)); }; (Cp.prototype.equals = function (t) { return this.z === t.z && this.x === t.x && this.y === t.y; }), (Cp.prototype.url = function (t, e, r) { var n, i, a, o, s, u = ((i = this.y), (a = this.z), (o = Bp(256 * (n = this.x), 256 * (i = Math.pow(2, a) - i - 1), a)), (s = Bp(256 * (n + 1), 256 * (i + 1), a)), o[0] + ',' + o[1] + ',' + s[0] + ',' + s[1]), l = (function (t, e, r) { for (var n, i = '', a = t; a > 0; a--) i += (e & (n = 1 << (a - 1)) ? 1 : 0) + (r & n ? 2 : 0); return i; })(this.z, this.x, this.y); return t[(this.x + this.y) % t.length] .replace( /{prefix}/g, (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('tms' === r ? Math.pow(2, this.z) - this.y - 1 : this.y), ) .replace(/{ratio}/g, e > 1 ? '@2x' : '') .replace(/{quadkey}/g, l) .replace(/{bbox-epsg-3857}/g, u); }), (Cp.prototype.isChildOf = function (t) { var e = this.z - t.z; return e > 0 && t.x === this.x >> e && t.y === this.y >> e; }), (Cp.prototype.getTilePoint = function (t) { var e = Math.pow(2, this.z); return new I((t.x * e - this.x) * lo, (t.y * e - this.y) * lo); }), (Cp.prototype.toString = function () { return this.z + '/' + this.x + '/' + this.y; }); var Ep = function (t, e) { (this.wrap = t), (this.canonical = e), (this.key = Tp(t, e.z, e.z, e.x, e.y)); }, Vp = function (t, e, r, n, i) { if (t < r) throw new Error( 'overscaledZ should be >= z; overscaledZ = ' + t + '; z = ' + r, ); (this.overscaledZ = t), (this.wrap = e), (this.canonical = new Cp(r, +n, +i)), (this.key = Tp(e, t, r, n, i)); }; function Tp(t, e, r, n, i) { (t *= 2) < 0 && (t = -1 * t - 1); var a = 1 << r; return ( (a * a * t + a * i + n).toString(36) + r.toString(36) + e.toString(36) ); } (Vp.prototype.clone = function () { return new Vp( this.overscaledZ, this.wrap, this.canonical.z, this.canonical.x, this.canonical.y, ); }), (Vp.prototype.equals = function (t) { return ( this.overscaledZ === t.overscaledZ && this.wrap === t.wrap && this.canonical.equals(t.canonical) ); }), (Vp.prototype.scaledTo = function (t) { if (t > this.overscaledZ) throw new Error( 'targetZ > this.overscaledZ; targetZ = ' + t + '; overscaledZ = ' + this.overscaledZ, ); var e = this.canonical.z - t; return t > this.canonical.z ? new Vp( t, this.wrap, this.canonical.z, this.canonical.x, this.canonical.y, ) : new Vp( t, this.wrap, t, this.canonical.x >> e, this.canonical.y >> e, ); }), (Vp.prototype.calculateScaledKey = function (t, e) { if (t > this.overscaledZ) throw new Error( 'targetZ > this.overscaledZ; targetZ = ' + t + '; overscaledZ = ' + this.overscaledZ, ); var r = this.canonical.z - t; return t > this.canonical.z ? Tp( this.wrap * +e, t, this.canonical.z, this.canonical.x, this.canonical.y, ) : Tp( this.wrap * +e, t, t, this.canonical.x >> r, this.canonical.y >> r, ); }), (Vp.prototype.isChildOf = function (t) { if (t.wrap !== this.wrap) return !1; var e = this.canonical.z - t.canonical.z; return ( 0 === t.overscaledZ || (t.overscaledZ < this.overscaledZ && t.canonical.x === this.canonical.x >> e && t.canonical.y === this.canonical.y >> e) ); }), (Vp.prototype.children = function (t) { if (this.overscaledZ >= t) return [ new Vp( this.overscaledZ + 1, this.wrap, this.canonical.z, this.canonical.x, this.canonical.y, ), ]; var e = this.canonical.z + 1, r = 2 * this.canonical.x, n = 2 * this.canonical.y; return [ new Vp(e, this.wrap, e, r, n), new Vp(e, this.wrap, e, r + 1, n), new Vp(e, this.wrap, e, r, n + 1), new Vp(e, this.wrap, e, r + 1, n + 1), ]; }), (Vp.prototype.isLessThan = function (t) { return ( this.wrap < t.wrap || (!(this.wrap > t.wrap) && (this.overscaledZ < t.overscaledZ || (!(this.overscaledZ > t.overscaledZ) && (this.canonical.x < t.canonical.x || (!(this.canonical.x > t.canonical.x) && this.canonical.y < t.canonical.y))))) ); }), (Vp.prototype.wrapped = function () { return new Vp( this.overscaledZ, 0, this.canonical.z, this.canonical.x, this.canonical.y, ); }), (Vp.prototype.unwrapTo = function (t) { return new Vp( this.overscaledZ, t, this.canonical.z, this.canonical.x, this.canonical.y, ); }), (Vp.prototype.overscaleFactor = function () { return Math.pow(2, this.overscaledZ - this.canonical.z); }), (Vp.prototype.toUnwrapped = function () { return new Ep(this.wrap, this.canonical); }), (Vp.prototype.toString = function () { return ( this.overscaledZ + '/' + this.canonical.x + '/' + this.canonical.y ); }), (Vp.prototype.getTilePoint = function (t) { return this.canonical.getTilePoint(new Pp(t.x - this.wrap, t.y)); }), qn('CanonicalTileID', Cp), qn('OverscaledTileID', Vp, { omit: ['posMatrix'] }); var Fp = function (t, e, r) { if (((this.uid = t), e.height !== e.width)) throw new RangeError('DEM tiles must be square'); if (r && 'mapbox' !== r && 'terrarium' !== r) d( '"' + r + '" is not a valid encoding type. Valid types include "mapbox" and "terrarium".', ); else { this.stride = e.height; var n = (this.dim = e.height - 2); (this.data = new Uint32Array(e.data.buffer)), (this.encoding = r || 'mapbox'); for (var i = 0; i < n; i++) (this.data[this._idx(-1, i)] = this.data[this._idx(0, i)]), (this.data[this._idx(n, i)] = this.data[this._idx(n - 1, i)]), (this.data[this._idx(i, -1)] = this.data[this._idx(i, 0)]), (this.data[this._idx(i, n)] = this.data[this._idx(i, n - 1)]); (this.data[this._idx(-1, -1)] = this.data[this._idx(0, 0)]), (this.data[this._idx(n, -1)] = this.data[this._idx(n - 1, 0)]), (this.data[this._idx(-1, n)] = this.data[this._idx(0, n - 1)]), (this.data[this._idx(n, n)] = this.data[this._idx(n - 1, n - 1)]), (this.min = Number.MAX_SAFE_INTEGER), (this.max = Number.MIN_SAFE_INTEGER); for (var a = 0; a < n; a++) for (var o = 0; o < n; o++) { var s = this.get(a, o); s > this.max && (this.max = s), s < this.min && (this.min = s); } } }; (Fp.prototype.get = function (t, e) { var r = new Uint8Array(this.data.buffer), n = 4 * this._idx(t, e); return ( 'terrarium' === this.encoding ? this._unpackTerrarium : this._unpackMapbox )(r[n], r[n + 1], r[n + 2]); }), (Fp.prototype.getUnpackVector = function () { return 'terrarium' === this.encoding ? [256, 1, 1 / 256, 32768] : [6553.6, 25.6, 0.1, 1e4]; }), (Fp.prototype._idx = function (t, e) { if (t < -1 || t >= this.dim + 1 || e < -1 || e >= this.dim + 1) throw new RangeError('out of range source coordinates for DEM data'); return (e + 1) * this.stride + (t + 1); }), (Fp.prototype._unpackMapbox = function (t, e, r) { return (256 * t * 256 + 256 * e + r) / 10 - 1e4; }), (Fp.prototype._unpackTerrarium = function (t, e, r) { return 256 * t + e + r / 256 - 32768; }), (Fp.prototype.getPixels = function () { return new $o( { width: this.stride, height: this.stride }, new Uint8Array(this.data.buffer), ); }), (Fp.prototype.backfillBorder = function (t, e, r) { if (this.dim !== t.dim) throw new Error('dem dimension mismatch'); var n = e * this.dim, i = e * this.dim + this.dim, a = r * this.dim, o = r * this.dim + this.dim; switch (e) { case -1: n = i - 1; break; case 1: i = n + 1; } switch (r) { case -1: a = o - 1; break; case 1: o = a + 1; } for (var s = -e * this.dim, u = -r * this.dim, l = a; l < o; l++) for (var p = n; p < i; p++) this.data[this._idx(p, l)] = t.data[this._idx(p + s, l + u)]; }), qn('DEMData', Fp); var Op = function (t) { (this._stringToNumber = {}), (this._numberToString = []); for (var e = 0; e < t.length; e++) { var r = t[e]; (this._stringToNumber[r] = e), (this._numberToString[e] = r); } }; (Op.prototype.encode = function (t) { return this._stringToNumber[t]; }), (Op.prototype.decode = function (t) { if (t >= this._numberToString.length) throw new Error( 'Out of bounds. Index requested n=' + t + " can't be >= this._numberToString.length " + this._numberToString.length, ); return this._numberToString[t]; }); var Lp = function (t, e, r, n, i) { (this.type = 'Feature'), (this._vectorTileFeature = t), (t._z = e), (t._x = r), (t._y = n), (this.properties = t.properties), (this.id = i); }, Dp = { geometry: { configurable: !0 } }; (Dp.geometry.get = function () { return ( void 0 === this._geometry && (this._geometry = this._vectorTileFeature.toGeoJSON( this._vectorTileFeature._x, this._vectorTileFeature._y, this._vectorTileFeature._z, ).geometry), this._geometry ); }), (Dp.geometry.set = function (t) { this._geometry = t; }), (Lp.prototype.toJSON = function () { var t = { geometry: this.geometry }; for (var e in this) '_geometry' !== e && '_vectorTileFeature' !== e && (t[e] = this[e]); return t; }), Object.defineProperties(Lp.prototype, Dp); var jp, Rp = function (t, e) { (this.tileID = t), (this.x = t.canonical.x), (this.y = t.canonical.y), (this.z = t.canonical.z), (this.grid = new Rn(lo, 16, 0)), (this.grid3D = new Rn(lo, 16, 0)), (this.featureIndexArray = new ha()), (this.promoteId = e); }; function Up(t, e, r, n, i) { return c(t, function (t, a) { var o = e instanceof wi ? e.get(a) : null; return o && o.evaluate ? o.evaluate(r, n, i) : o; }); } function qp(t) { for ( var e = 1 / 0, r = 1 / 0, n = -1 / 0, i = -1 / 0, a = 0, o = t; a < o.length; a += 1 ) { var s = o[a]; (e = Math.min(e, s.x)), (r = Math.min(r, s.y)), (n = Math.max(n, s.x)), (i = Math.max(i, s.y)); } return { minX: e, minY: r, maxX: n, maxY: i }; } function Np(t, e) { return e - t; } (Rp.prototype.insert = function (t, e, r, n, i, a) { var o = this.featureIndexArray.length; this.featureIndexArray.emplaceBack(r, n, i); for (var s = a ? this.grid3D : this.grid, u = 0; u < e.length; u++) { for ( var l = e[u], p = [1 / 0, 1 / 0, -1 / 0, -1 / 0], c = 0; c < l.length; c++ ) { var h = l[c]; (p[0] = Math.min(p[0], h.x)), (p[1] = Math.min(p[1], h.y)), (p[2] = Math.max(p[2], h.x)), (p[3] = Math.max(p[3], h.y)); } p[0] < lo && p[1] < lo && p[2] >= 0 && p[3] >= 0 && s.insert(o, p[0], p[1], p[2], p[3]); } }), (Rp.prototype.loadVTLayers = function () { return ( this.vtLayers || ((this.vtLayers = new Gs.VectorTile( new Vu(this.rawTileData), ).layers), (this.sourceLayerCoder = new Op( this.vtLayers ? Object.keys(this.vtLayers).sort() : ['_geojsonTileLayer'], ))), this.vtLayers ); }), (Rp.prototype.query = function (t, e, r, n) { var i = this; this.loadVTLayers(); for ( var a = t.params || {}, o = lo / t.tileSize / t.scale, s = pn(a.filter), u = t.queryGeometry, l = t.queryPadding * o, p = qp(u), c = this.grid.query(p.minX - l, p.minY - l, p.maxX + l, p.maxY + l), h = qp(t.cameraQueryGeometry), f = this.grid3D.query( h.minX - l, h.minY - l, h.maxX + l, h.maxY + l, function (e, r, n, i) { return (function (t, e, r, n, i) { for (var a = 0, o = t; a < o.length; a += 1) { var s = o[a]; if (e <= s.x && r <= s.y && n >= s.x && i >= s.y) return !0; } var u = [new I(e, r), new I(e, i), new I(n, i), new I(n, r)]; if (t.length > 2) for (var l = 0, p = u; l < p.length; l += 1) if (Io(t, p[l])) return !0; for (var c = 0; c < t.length - 1; c++) if (Mo(t[c], t[c + 1], u)) return !0; return !1; })(t.cameraQueryGeometry, e - l, r - l, n + l, i + l); }, ), y = 0, d = f; y < d.length; y += 1 ) c.push(d[y]); c.sort(Np); for ( var m, v = {}, g = function (l) { var p = c[l]; if (p !== m) { m = p; var h = i.featureIndexArray.get(p), f = null; i.loadMatchingFeature( v, h.bucketIndex, h.sourceLayerIndex, h.featureIndex, s, a.layers, a.availableImages, e, r, n, function (e, r, n) { return ( f || (f = ho(e)), r.queryIntersectsFeature( u, e, n, f, i.z, t.transform, o, t.pixelPosMatrix, ) ); }, ); } }, x = 0; x < c.length; x++ ) g(x); return v; }), (Rp.prototype.loadMatchingFeature = function ( t, e, r, n, i, a, o, u, l, p, c, ) { var h = this.bucketLayerIDs[e]; if ( !a || (function (t, e) { for (var r = 0; r < t.length; r++) if (e.indexOf(t[r]) >= 0) return !0; return !1; })(a, h) ) { var f = this.sourceLayerCoder.decode(r), y = this.vtLayers[f].feature(n); if (i.needGeometry) { var d = fo(y, !0); if ( !i.filter( new fi(this.tileID.overscaledZ), d, this.tileID.canonical, ) ) return; } else if (!i.filter(new fi(this.tileID.overscaledZ), y)) return; for (var m = this.getId(y, f), v = 0; v < h.length; v++) { var g = h[v]; if (!(a && a.indexOf(g) < 0)) { var x = u[g]; if (x) { var b = {}; m && p && (b = p.getState(x.sourceLayer || '_geojsonTileLayer', m)); var w = s({}, l[g]); (w.paint = Up(w.paint, x.paint, y, b, o)), (w.layout = Up(w.layout, x.layout, y, b, o)); var _ = !c || c(y, x, b); if (_) { var A = new Lp(y, this.z, this.x, this.y, m); A.layer = w; var k = t[g]; void 0 === k && (k = t[g] = []), k.push({ featureIndex: n, feature: A, intersectionZ: _ }); } } } } } }), (Rp.prototype.lookupSymbolFeatures = function (t, e, r, n, i, a, o, s) { var u = {}; this.loadVTLayers(); for (var l = pn(i), p = 0, c = t; p < c.length; p += 1) this.loadMatchingFeature(u, r, n, c[p], l, a, o, s, e); return u; }), (Rp.prototype.hasLayer = function (t) { for (var e = 0, r = this.bucketLayerIDs; e < r.length; e += 1) for (var n = 0, i = r[e]; n < i.length; n += 1) if (t === i[n]) return !0; return !1; }), (Rp.prototype.getId = function (t, e) { var r = t.id; return ( this.promoteId && 'boolean' == typeof (r = t.properties[ 'string' == typeof this.promoteId ? this.promoteId : this.promoteId[e] ]) && (r = Number(r)), r ); }), qn('FeatureIndex', Rp, { omit: ['rawTileData', 'sourceLayerCoder'] }), (t.PerformanceMarkers = void 0), ((jp = t.PerformanceMarkers || (t.PerformanceMarkers = {})).create = 'create'), (jp.load = 'load'), (jp.fullLoad = 'fullLoad'); var Zp = null, Kp = [], Gp = 1e3 / 30, Jp = { mark: function (t) { performance.mark(t); }, frame: function (t) { var e = t; null != Zp && Kp.push(e - Zp), (Zp = e); }, clearMetrics: function () { for (var e in ((Zp = null), (Kp = []), performance.clearMeasures('loadTime'), performance.clearMeasures('fullLoadTime'), t.PerformanceMarkers)) performance.clearMarks(t.PerformanceMarkers[e]); }, getPerformanceMetrics: function () { performance.measure( 'loadTime', t.PerformanceMarkers.create, t.PerformanceMarkers.load, ), performance.measure( 'fullLoadTime', t.PerformanceMarkers.create, t.PerformanceMarkers.fullLoad, ); var e = performance.getEntriesByName('loadTime')[0].duration, r = performance.getEntriesByName('fullLoadTime')[0].duration, n = Kp.length, i = 1 / (Kp.reduce(function (t, e) { return t + e; }, 0) / n / 1e3), a = Kp.filter(function (t) { return t > Gp; }).reduce(function (t, e) { return t + (e - Gp) / Gp; }, 0); return { loadTime: e, fullLoadTime: r, fps: i, percentDroppedFrames: (a / (n + a)) * 100, }; }, }, Xp = function (t) { (this._marks = { start: [t.url, 'start'].join('#'), end: [t.url, 'end'].join('#'), measure: t.url.toString(), }), performance.mark(this._marks.start); }; (Xp.prototype.finish = function () { performance.mark(this._marks.end); var t = performance.getEntriesByName(this._marks.measure); return ( 0 === t.length && (performance.measure( this._marks.measure, this._marks.start, this._marks.end, ), (t = performance.getEntriesByName(this._marks.measure)), performance.clearMarks(this._marks.start), performance.clearMarks(this._marks.end), performance.clearMeasures(this._marks.measure)), t ); }), (t.AJAXError = it), (t.ARRAY_TYPE = To), (t.Actor = xp), (t.AlphaImage = Wo), (t.CanonicalTileID = Cp), (t.CollisionBoxArray = ia), (t.CollisionCircleLayoutArray = Sa), (t.Color = Yt), (t.DEMData = Fp), (t.DataConstantProperty = _i), (t.DictionaryCoder = Op), (t.EXTENT = lo), (t.ErrorEvent = mt), (t.EvaluationParameters = fi), (t.Event = dt), (t.Evented = vt), (t.FeatureIndex = Rp), (t.FillBucket = js), (t.FillExtrusionBucket = su), (t.GeoJSONFeature = Lp), (t.ImageAtlas = ul), (t.ImagePosition = al), (t.LineBucket = gu), (t.LineStripIndexArray = Ba), (t.LngLat = wp), (t.LngLatBounds = _p), (t.MercatorCoordinate = Pp), (t.ONE_EM = Eu), (t.OverscaledTileID = Vp), (t.PerformanceUtils = Jp), (t.PosArray = fa), (t.Properties = Mi), (t.QuadTriangleArray = Ma), (t.RGBAImage = $o), (t.RasterBoundsArray = ya), (t.RequestPerformance = Xp), (t.ResourceType = nt), (t.SegmentVector = Ea), (t.SymbolBucket = op), (t.Transitionable = mi), (t.TriangleIndexArray = za), (t.Uniform1f = Ga), (t.Uniform1i = Ka), (t.Uniform2f = Ja), (t.Uniform3f = Xa), (t.Uniform4f = Ya), (t.UniformColor = Ha), (t.UniformMatrix4f = $a), (t.UnwrappedTileID = Ep), (t.ValidationError = xt), (t.ZoomHistory = Jn), (t.add = function (t, e, r) { return ( (t[0] = e[0] + r[0]), (t[1] = e[1] + r[1]), (t[2] = e[2] + r[2]), t ); }), (t.addDynamicAttributes = rp), (t.asyncAll = function (t, e, r) { if (!t.length) return r(null, []); var n = t.length, i = new Array(t.length), a = null; t.forEach(function (t, o) { e(t, function (t, e) { t && (a = t), (i[o] = e), 0 == --n && r(a, i); }); }); }), (t.bezier = n), (t.bindAll = l), (t.cacheEntryPossiblyAdded = function (t) { ++$ > X && (t.getActor().send('enforceCacheSizeLimit', J), ($ = 0)); }), (t.clamp = a), (t.clearTileCache = function (t) { var e = caches.delete(G); t && e.catch(t).then(function () { return t(); }); }), (t.clipLine = Tl), (t.clone = function (t) { var e = new To(16); return ( (e[0] = t[0]), (e[1] = t[1]), (e[2] = t[2]), (e[3] = t[3]), (e[4] = t[4]), (e[5] = t[5]), (e[6] = t[6]), (e[7] = t[7]), (e[8] = t[8]), (e[9] = t[9]), (e[10] = t[10]), (e[11] = t[11]), (e[12] = t[12]), (e[13] = t[13]), (e[14] = t[14]), (e[15] = t[15]), e ); }), (t.clone$1 = f), (t.clone$2 = function (t) { var e = new To(3); return (e[0] = t[0]), (e[1] = t[1]), (e[2] = t[2]), e; }), (t.collisionCircleLayout = Pu), (t.config = K), (t.copy = function (t, e) { return ( (t[0] = e[0]), (t[1] = e[1]), (t[2] = e[2]), (t[3] = e[3]), (t[4] = e[4]), (t[5] = e[5]), (t[6] = e[6]), (t[7] = e[7]), (t[8] = e[8]), (t[9] = e[9]), (t[10] = e[10]), (t[11] = e[11]), (t[12] = e[12]), (t[13] = e[13]), (t[14] = e[14]), (t[15] = e[15]), t ); }), (t.create = function () { var t = new To(16); return ( To != Float32Array && ((t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), (t[6] = 0), (t[7] = 0), (t[8] = 0), (t[9] = 0), (t[11] = 0), (t[12] = 0), (t[13] = 0), (t[14] = 0)), (t[0] = 1), (t[5] = 1), (t[10] = 1), (t[15] = 1), t ); }), (t.create$1 = Fo), (t.createExpression = Yr), (t.createFilter = pn), (t.createLayout = Vi), (t.createStyleLayer = function (t) { return 'custom' === t.type ? new mp(t) : new vp[t.type](t); }), (t.cross = function (t, e, r) { var n = e[0], i = e[1], a = e[2], o = r[0], s = r[1], u = r[2]; return ( (t[0] = i * u - a * s), (t[1] = a * o - n * u), (t[2] = n * s - i * o), t ); }), (t.dot = function (t, e) { return t[0] * e[0] + t[1] * e[1] + t[2] * e[2]; }), (t.dot$1 = function (t, e) { return t[0] * e[0] + t[1] * e[1] + t[2] * e[2] + t[3] * e[3]; }), (t.ease = i), (t.emitValidationErrors = jn), (t.endsWith = p), (t.enforceCacheSizeLimit = function (t) { Y(), N && N.then(function (e) { e.keys().then(function (r) { for (var n = 0; n < r.length - t; n++) e.delete(r[n]); }); }); }), (t.equals = function (t, e) { var r = t[0], n = t[1], i = t[2], a = t[3], o = t[4], s = t[5], u = t[6], l = t[7], p = t[8], c = t[9], h = t[10], f = t[11], y = t[12], d = t[13], m = t[14], v = t[15], g = e[0], x = e[1], b = e[2], w = e[3], _ = e[4], A = e[5], k = e[6], S = e[7], I = e[8], M = e[9], z = e[10], P = e[11], B = e[12], C = e[13], E = e[14], V = e[15]; return ( Math.abs(r - g) <= Vo * Math.max(1, Math.abs(r), Math.abs(g)) && Math.abs(n - x) <= Vo * Math.max(1, Math.abs(n), Math.abs(x)) && Math.abs(i - b) <= Vo * Math.max(1, Math.abs(i), Math.abs(b)) && Math.abs(a - w) <= Vo * Math.max(1, Math.abs(a), Math.abs(w)) && Math.abs(o - _) <= Vo * Math.max(1, Math.abs(o), Math.abs(_)) && Math.abs(s - A) <= Vo * Math.max(1, Math.abs(s), Math.abs(A)) && Math.abs(u - k) <= Vo * Math.max(1, Math.abs(u), Math.abs(k)) && Math.abs(l - S) <= Vo * Math.max(1, Math.abs(l), Math.abs(S)) && Math.abs(p - I) <= Vo * Math.max(1, Math.abs(p), Math.abs(I)) && Math.abs(c - M) <= Vo * Math.max(1, Math.abs(c), Math.abs(M)) && Math.abs(h - z) <= Vo * Math.max(1, Math.abs(h), Math.abs(z)) && Math.abs(f - P) <= Vo * Math.max(1, Math.abs(f), Math.abs(P)) && Math.abs(y - B) <= Vo * Math.max(1, Math.abs(y), Math.abs(B)) && Math.abs(d - C) <= Vo * Math.max(1, Math.abs(d), Math.abs(C)) && Math.abs(m - E) <= Vo * Math.max(1, Math.abs(m), Math.abs(E)) && Math.abs(v - V) <= Vo * Math.max(1, Math.abs(v), Math.abs(V)) ); }), (t.evaluateSizeForFeature = function (t, e, r) { var n = e.uSize, i = r.lowerSize; return 'source' === t.kind ? i / kl : 'composite' === t.kind ? Re(i / kl, r.upperSize / kl, e.uSizeT) : n; }), (t.evaluateSizeForZoom = function (t, e) { var r = 0, n = 0; if ('constant' === t.kind) n = t.layoutSize; else if ('source' !== t.kind) { var i = t.interpolationType, o = i ? a(ar.interpolationFactor(i, e, t.minZoom, t.maxZoom), 0, 1) : 0; 'camera' === t.kind ? (n = Re(t.minSize, t.maxSize, o)) : (r = o); } return { uSizeT: r, uSize: n }; }), (t.evaluateVariableOffset = Jl), (t.evented = li), (t.exported = S), (t.exported$1 = Q), (t.extend = s), (t.filterObject = h), (t.fromRotation = function (t, e) { var r = Math.sin(e), n = Math.cos(e); return ( (t[0] = n), (t[1] = r), (t[2] = 0), (t[3] = -r), (t[4] = n), (t[5] = 0), (t[6] = 0), (t[7] = 0), (t[8] = 1), t ); }), (t.fromScaling = function (t, e) { return ( (t[0] = e[0]), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), (t[5] = e[1]), (t[6] = 0), (t[7] = 0), (t[8] = 0), (t[9] = 0), (t[10] = e[2]), (t[11] = 0), (t[12] = 0), (t[13] = 0), (t[14] = 0), (t[15] = 1), t ); }), (t.getAnchorAlignment = wl), (t.getAnchorJustification = Xl), (t.getArrayBuffer = pt), (t.getImage = ht), (t.getJSON = function (t, e) { return lt(s(t, { type: 'json' }), e); }), (t.getOverlapMode = cp), (t.getRTLTextPluginStatus = pi), (t.getReferrer = at), (t.getVideo = function (t, e) { var r, n, i = window.document.createElement('video'); (i.muted = !0), (i.onloadstart = function () { e(null, i); }); for (var a = 0; a < t.length; a++) { var o = window.document.createElement('source'); (r = t[a]), (n = void 0), ((n = window.document.createElement('a')).href = r), (n.protocol !== window.document.location.protocol || n.host !== window.document.location.host) && (i.crossOrigin = 'Anonymous'), (o.src = t[a]), i.appendChild(o); } return { cancel: function () {} }; }), (t.identity = Oo), (t.invert = function (t, e) { var r = e[0], n = e[1], i = e[2], a = e[3], o = e[4], s = e[5], u = e[6], l = e[7], p = e[8], c = e[9], h = e[10], f = e[11], y = e[12], d = e[13], m = e[14], v = e[15], g = r * s - n * o, x = r * u - i * o, b = r * l - a * o, w = n * u - i * s, _ = n * l - a * s, A = i * l - a * u, k = p * d - c * y, S = p * m - h * y, I = p * v - f * y, M = c * m - h * d, z = c * v - f * d, P = h * v - f * m, B = g * P - x * z + b * M + w * I - _ * S + A * k; return B ? ((t[0] = (s * P - u * z + l * M) * (B = 1 / B)), (t[1] = (i * z - n * P - a * M) * B), (t[2] = (d * A - m * _ + v * w) * B), (t[3] = (h * _ - c * A - f * w) * B), (t[4] = (u * I - o * P - l * S) * B), (t[5] = (r * P - i * I + a * S) * B), (t[6] = (m * b - y * A - v * x) * B), (t[7] = (p * A - h * b + f * x) * B), (t[8] = (o * z - s * I + l * k) * B), (t[9] = (n * I - r * z - a * k) * B), (t[10] = (y * _ - d * b + v * g) * B), (t[11] = (c * b - p * _ - f * g) * B), (t[12] = (s * S - o * M - u * k) * B), (t[13] = (r * M - n * S + i * k) * B), (t[14] = (d * x - y * w - m * g) * B), (t[15] = (p * w - c * x + h * g) * B), t) : null; }), (t.isImageBitmap = _), (t.isSafari = w), (t.isWorker = g), (t.keysDifference = function (t, e) { var r = []; for (var n in t) n in e || r.push(n); return r; }), (t.lazyLoadRTLTextPlugin = function () { hi.isLoading() || hi.isLoaded() || 'deferred' !== pi() || ci(); }), (t.makeRequest = lt), (t.mapObject = c), (t.mercatorXfromLng = Sp), (t.mercatorYfromLat = Ip), (t.mercatorZfromAltitude = Mp), (t.mul = jo), (t.mul$1 = function (t, e, r) { return ( (t[0] = e[0] * r[0]), (t[1] = e[1] * r[1]), (t[2] = e[2] * r[2]), (t[3] = e[3] * r[3]), t ); }), (t.multiply = Lo), (t.nextPowerOfTwo = function (t) { return t <= 1 ? 1 : Math.pow(2, Math.ceil(Math.log(t) / Math.LN2)); }), (t.normalize = function (t, e) { var r = e[0], n = e[1], i = e[2], a = r * r + n * n + i * i; return ( a > 0 && (a = 1 / Math.sqrt(a)), (t[0] = e[0] * a), (t[1] = e[1] * a), (t[2] = e[2] * a), t ); }), (t.number = Re), (t.ortho = function (t, e, r, n, i, a, o) { var s = 1 / (e - r), u = 1 / (n - i), l = 1 / (a - o); return ( (t[0] = -2 * s), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), (t[5] = -2 * u), (t[6] = 0), (t[7] = 0), (t[8] = 0), (t[9] = 0), (t[10] = 2 * l), (t[11] = 0), (t[12] = (e + r) * s), (t[13] = (i + n) * u), (t[14] = (o + a) * l), (t[15] = 1), t ); }), (t.parseCacheControl = x), (t.parseGlyphPbf = function (t) { return new Vu(t).readFields(el, []); }), (t.pbf = Vu), (t.performSymbolLayout = function (e) { e.bucket.createArrays(), (e.bucket.tilePixelRatio = lo / (512 * e.bucket.overscaling)), (e.bucket.compareText = {}), (e.bucket.iconsNeedLinear = !1); var r = e.bucket.layers[0].layout, n = e.bucket.layers[0]._unevaluatedLayout._values, i = { layoutIconSize: n['icon-size'].possiblyEvaluate( new fi(e.bucket.zoom + 1), e.canonical, ), layoutTextSize: n['text-size'].possiblyEvaluate( new fi(e.bucket.zoom + 1), e.canonical, ), textMaxSize: n['text-size'].possiblyEvaluate(new fi(18)), }; if ('composite' === e.bucket.textSizeData.kind) { var a = e.bucket.textSizeData, o = a.maxZoom; i.compositeTextSizes = [ n['text-size'].possiblyEvaluate(new fi(a.minZoom), e.canonical), n['text-size'].possiblyEvaluate(new fi(o), e.canonical), ]; } if ('composite' === e.bucket.iconSizeData.kind) { var s = e.bucket.iconSizeData, u = s.maxZoom; i.compositeIconSizes = [ n['icon-size'].possiblyEvaluate(new fi(s.minZoom), e.canonical), n['icon-size'].possiblyEvaluate(new fi(u), e.canonical), ]; } for ( var l = r.get('text-line-height') * Eu, p = 'viewport' !== r.get('text-rotation-alignment') && 'point' !== r.get('symbol-placement'), c = r.get('text-keep-upright'), h = r.get('text-size'), f = function () { var n = m[y], a = r.get('text-font').evaluate(n, {}, e.canonical).join(','), o = h.evaluate(n, {}, e.canonical), s = i.layoutTextSize.evaluate(n, {}, e.canonical), u = i.layoutIconSize.evaluate(n, {}, e.canonical), f = { horizontal: {}, vertical: void 0 }, v = n.text, g = [0, 0]; if (v) { var x = v.toString(), b = r.get('text-letter-spacing').evaluate(n, {}, e.canonical) * Eu, w = (function (t) { for (var e = 0, r = t; e < r.length; e += 1) if ( ((n = r[e].charCodeAt(0)), Xn.Arabic(n) || Xn['Arabic Supplement'](n) || Xn['Arabic Extended-A'](n) || Xn['Arabic Presentation Forms-A'](n) || Xn['Arabic Presentation Forms-B'](n)) ) return !1; var n; return !0; })(x) ? b : 0, _ = r.get('text-anchor').evaluate(n, {}, e.canonical), A = r.get('text-variable-anchor'); if (!A) { var k = r .get('text-radial-offset') .evaluate(n, {}, e.canonical); g = k ? Jl(_, [k * Eu, Gl]) : r .get('text-offset') .evaluate(n, {}, e.canonical) .map(function (t) { return t * Eu; }); } var S = p ? 'center' : r.get('text-justify').evaluate(n, {}, e.canonical), I = r.get('symbol-placement'), M = 'point' === I ? r.get('text-max-width').evaluate(n, {}, e.canonical) * Eu : 0, z = function () { e.bucket.allowVerticalPlacement && Yn(x) && (f.vertical = hl( v, e.glyphMap, e.glyphPositions, e.imagePositions, a, M, l, _, 'left', w, g, t.WritingMode.vertical, !0, I, s, o, )); }; if (!p && A) { for ( var P = 'auto' === S ? A.map(function (t) { return Xl(t); }) : [S], B = !1, C = 0; C < P.length; C++ ) { var E = P[C]; if (!f.horizontal[E]) if (B) f.horizontal[E] = f.horizontal[0]; else { var V = hl( v, e.glyphMap, e.glyphPositions, e.imagePositions, a, M, l, 'center', E, w, g, t.WritingMode.horizontal, !1, I, s, o, ); V && ((f.horizontal[E] = V), (B = 1 === V.positionedLines.length)); } } z(); } else { 'auto' === S && (S = Xl(_)); var T = hl( v, e.glyphMap, e.glyphPositions, e.imagePositions, a, M, l, _, S, w, g, t.WritingMode.horizontal, !1, I, s, o, ); T && (f.horizontal[S] = T), z(), Yn(x) && p && c && (f.vertical = hl( v, e.glyphMap, e.glyphPositions, e.imagePositions, a, M, l, _, S, w, g, t.WritingMode.vertical, !1, I, s, o, )); } } var F = void 0, O = !1; if (n.icon && n.icon.name) { var L = e.imageMap[n.icon.name]; L && ((F = (function (t, e, r) { var n = wl(r), i = e[0] - t.displaySize[0] * n.horizontalAlign, a = e[1] - t.displaySize[1] * n.verticalAlign; return { image: t, top: a, bottom: a + t.displaySize[1], left: i, right: i + t.displaySize[0], }; })( e.imagePositions[n.icon.name], r.get('icon-offset').evaluate(n, {}, e.canonical), r.get('icon-anchor').evaluate(n, {}, e.canonical), )), (O = !!L.sdf), void 0 === e.bucket.sdfIcons ? (e.bucket.sdfIcons = O) : e.bucket.sdfIcons !== O && d( 'Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer', ), (L.pixelRatio !== e.bucket.pixelRatio || 0 !== r.get('icon-rotate').constantOr(1)) && (e.bucket.iconsNeedLinear = !0)); } var D = Wl(f.horizontal) || f.vertical; (e.bucket.iconsInText = !!D && D.iconsInText), (D || F) && (function (e, r, n, i, a, o, s, u, l, p, c) { var h = o.textMaxSize.evaluate(r, {}); void 0 === h && (h = s); var f, y = e.layers[0].layout, m = y.get('icon-offset').evaluate(r, {}, c), v = Wl(n.horizontal), g = s / 24, x = e.tilePixelRatio * g, b = (e.tilePixelRatio * h) / 24, w = e.tilePixelRatio * u, _ = e.tilePixelRatio * y.get('symbol-spacing'), A = y.get('text-padding') * e.tilePixelRatio, k = (function (t, e, r, n) { void 0 === n && (n = 1); var i = t.get('icon-padding').evaluate(e, {}, r), a = i && i.values; return [a[0] * n, a[1] * n, a[2] * n, a[3] * n]; })(y, r, c, e.tilePixelRatio), S = (y.get('text-max-angle') / 180) * Math.PI, I = 'viewport' !== y.get('text-rotation-alignment') && 'point' !== y.get('symbol-placement'), M = 'map' === y.get('icon-rotation-alignment') && 'point' !== y.get('symbol-placement'), z = y.get('symbol-placement'), P = _ / 2, B = y.get('icon-text-fit'); i && 'none' !== B && (e.allowVerticalPlacement && n.vertical && (f = Al( i, n.vertical, B, y.get('icon-text-fit-padding'), m, g, )), v && (i = Al( i, v, B, y.get('icon-text-fit-padding'), m, g, ))); var C = function (u, h) { h.x < 0 || h.x >= lo || h.y < 0 || h.y >= lo || (function ( e, r, n, i, a, o, s, u, l, p, c, h, f, y, m, v, g, x, b, w, _, A, k, S, I, ) { var M, z, P, B, C, E = e.addToLineVertexArray(r, n), V = 0, T = 0, F = 0, O = 0, L = -1, D = -1, j = {}, R = Fa.exports(''), U = 0, q = 0; if ( (void 0 === u._unevaluatedLayout.getValue('text-radial-offset') ? ((U = (M = u.layout .get('text-offset') .evaluate(_, {}, S) .map(function (t) { return t * Eu; }))[0]), (q = M[1])) : ((U = u.layout .get('text-radial-offset') .evaluate(_, {}, S) * Eu), (q = Gl)), e.allowVerticalPlacement && i.vertical) ) { var N = u.layout.get('text-rotate').evaluate(_, {}, S) + 90; (B = new Rl(l, r, p, c, h, i.vertical, f, y, m, N)), s && (C = new Rl(l, r, p, c, h, s, g, x, m, N)); } if (a) { var Z = u.layout.get('icon-rotate').evaluate(_, {}), K = 'none' !== u.layout.get('icon-text-fit'), G = Fl(a, Z, k, K), J = s ? Fl(s, Z, k, K) : void 0; (P = new Rl(l, r, p, c, h, a, g, x, !1, Z)), (V = 4 * G.length); var X = e.iconSizeData, Y = null; 'source' === X.kind ? (Y = [ kl * u.layout.get('icon-size').evaluate(_, {}), ])[0] > Yl && d( e.layerIds[0] + ': Value for "icon-size" is >= 255. Reduce your "icon-size".', ) : 'composite' === X.kind && ((Y = [ kl * A.compositeIconSizes[0].evaluate(_, {}, S), kl * A.compositeIconSizes[1].evaluate(_, {}, S), ])[0] > Yl || Y[1] > Yl) && d( e.layerIds[0] + ': Value for "icon-size" is >= 255. Reduce your "icon-size".', ), e.addSymbols( e.icon, G, Y, w, b, _, t.WritingMode.none, r, E.lineStartIndex, E.lineLength, -1, S, ), (L = e.icon.placedSymbolArray.length - 1), J && ((T = 4 * J.length), e.addSymbols( e.icon, J, Y, w, b, _, t.WritingMode.vertical, r, E.lineStartIndex, E.lineLength, -1, S, ), (D = e.icon.placedSymbolArray.length - 1)); } for ( var H = Object.keys(i.horizontal), W = 0, $ = H; W < $.length; W += 1 ) { var Q = $[W], tt = i.horizontal[Q]; if (!z) { R = Fa.exports(tt.text); var et = u.layout .get('text-rotate') .evaluate(_, {}, S); z = new Rl(l, r, p, c, h, tt, f, y, m, et); } var rt = 1 === tt.positionedLines.length; if ( ((F += Hl( e, r, tt, o, u, m, _, v, E, i.vertical ? t.WritingMode.horizontal : t.WritingMode.horizontalOnly, rt ? H : [Q], j, L, A, S, )), rt) ) break; } i.vertical && (O += Hl( e, r, i.vertical, o, u, m, _, v, E, t.WritingMode.vertical, ['vertical'], j, D, A, S, )); var nt = z ? z.boxStartIndex : e.collisionBoxArray.length, it = z ? z.boxEndIndex : e.collisionBoxArray.length, at = B ? B.boxStartIndex : e.collisionBoxArray.length, ot = B ? B.boxEndIndex : e.collisionBoxArray.length, st = P ? P.boxStartIndex : e.collisionBoxArray.length, ut = P ? P.boxEndIndex : e.collisionBoxArray.length, lt = C ? C.boxStartIndex : e.collisionBoxArray.length, pt = C ? C.boxEndIndex : e.collisionBoxArray.length, ct = -1, ht = function (t, e) { return t && t.circleDiameter ? Math.max(t.circleDiameter, e) : e; }; (ct = ht(z, ct)), (ct = ht(B, ct)), (ct = ht(P, ct)); var ft = (ct = ht(C, ct)) > -1 ? 1 : 0; ft && (ct *= I / Eu), e.glyphOffsetArray.length >= op.MAX_GLYPHS && d( 'Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907', ), void 0 !== _.sortKey && e.addToSortKeyRanges( e.symbolInstances.length, _.sortKey, ), e.symbolInstances.emplaceBack( r.x, r.y, j.right >= 0 ? j.right : -1, j.center >= 0 ? j.center : -1, j.left >= 0 ? j.left : -1, j.vertical || -1, L, D, R, nt, it, at, ot, st, ut, lt, pt, p, F, O, V, T, ft, 0, f, U, q, ct, ); })( e, h, u, n, i, a, f, e.layers[0], e.collisionBoxArray, r.index, r.sourceLayerIndex, e.index, x, [A, A, A, A], I, l, w, k, M, m, r, o, p, c, s, ); }; if ('line' === z) for ( var E = 0, V = Tl(r.geometry, 0, 0, lo, lo); E < V.length; E += 1 ) for ( var T = V[E], F = 0, O = El( T, _, S, n.vertical || v, i, 24, b, e.overscaling, lo, ); F < O.length; F += 1 ) { var L = O[F]; (v && $l(e, v.text, P, L)) || C(T, L); } else if ('line-center' === z) for (var D = 0, j = r.geometry; D < j.length; D += 1) { var R = j[D]; if (R.length > 1) { var U = Cl(R, S, n.vertical || v, i, 24, b); U && C(R, U); } } else if ('Polygon' === r.type) for ( var q = 0, N = Fs(r.geometry, 0); q < N.length; q += 1 ) { var Z = N[q], K = Nl(Z, 16); C(Z[0], new Il(K.x, K.y, 0)); } else if ('LineString' === r.type) for (var G = 0, J = r.geometry; G < J.length; G += 1) { var X = J[G]; C(X, new Il(X[0].x, X[0].y, 0)); } else if ('Point' === r.type) for (var Y = 0, H = r.geometry; Y < H.length; Y += 1) for (var W = 0, $ = H[Y]; W < $.length; W += 1) { var Q = $[W]; C([Q], new Il(Q.x, Q.y, 0)); } })(e.bucket, n, f, F, e.imageMap, i, s, u, g, O, e.canonical); }, y = 0, m = e.bucket.features; y < m.length; y += 1 ) f(); e.showCollisionBoxes && e.bucket.generateCollisionDebugBuffers(); }), (t.perspective = function (t, e, r, n, i) { var a, o = 1 / Math.tan(e / 2); return ( (t[0] = o / r), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), (t[5] = o), (t[6] = 0), (t[7] = 0), (t[8] = 0), (t[9] = 0), (t[11] = -1), (t[12] = 0), (t[13] = 0), (t[15] = 0), null != i && i !== 1 / 0 ? ((t[10] = (i + n) * (a = 1 / (n - i))), (t[14] = 2 * i * n * a)) : ((t[10] = -1), (t[14] = -2 * n)), t ); }), (t.pick = function (t, e) { for (var r = {}, n = 0; n < e.length; n++) { var i = e[n]; i in t && (r[i] = t[i]); } return r; }), (t.plugin = hi), (t.pointGeometry = I), (t.polygonIntersectsPolygon = vo), (t.potpack = il), (t.refProperties = [ 'type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout', ]), (t.register = qn), (t.registerForPluginStateChange = function (t) { return ( t({ pluginStatus: ai, pluginURL: oi }), li.on('pluginStateChange', t), t ); }), (t.renderColorRamp = Qo), (t.rotateX = function (t, e, r) { var n = Math.sin(r), i = Math.cos(r), a = e[4], o = e[5], s = e[6], u = e[7], l = e[8], p = e[9], c = e[10], h = e[11]; return ( e !== t && ((t[0] = e[0]), (t[1] = e[1]), (t[2] = e[2]), (t[3] = e[3]), (t[12] = e[12]), (t[13] = e[13]), (t[14] = e[14]), (t[15] = e[15])), (t[4] = a * i + l * n), (t[5] = o * i + p * n), (t[6] = s * i + c * n), (t[7] = u * i + h * n), (t[8] = l * i - a * n), (t[9] = p * i - o * n), (t[10] = c * i - s * n), (t[11] = h * i - u * n), t ); }), (t.rotateZ = function (t, e, r) { var n = Math.sin(r), i = Math.cos(r), a = e[0], o = e[1], s = e[2], u = e[3], l = e[4], p = e[5], c = e[6], h = e[7]; return ( e !== t && ((t[8] = e[8]), (t[9] = e[9]), (t[10] = e[10]), (t[11] = e[11]), (t[12] = e[12]), (t[13] = e[13]), (t[14] = e[14]), (t[15] = e[15])), (t[0] = a * i + l * n), (t[1] = o * i + p * n), (t[2] = s * i + c * n), (t[3] = u * i + h * n), (t[4] = l * i - a * n), (t[5] = p * i - o * n), (t[6] = c * i - s * n), (t[7] = h * i - u * n), t ); }), (t.scale = function (t, e, r) { var n = r[0], i = r[1], a = r[2]; return ( (t[0] = e[0] * n), (t[1] = e[1] * n), (t[2] = e[2] * n), (t[3] = e[3] * n), (t[4] = e[4] * i), (t[5] = e[5] * i), (t[6] = e[6] * i), (t[7] = e[7] * i), (t[8] = e[8] * a), (t[9] = e[9] * a), (t[10] = e[10] * a), (t[11] = e[11] * a), (t[12] = e[12]), (t[13] = e[13]), (t[14] = e[14]), (t[15] = e[15]), t ); }), (t.scale$1 = function (t, e, r) { return (t[0] = e[0] * r), (t[1] = e[1] * r), (t[2] = e[2] * r), t; }), (t.setCacheLimits = function (t, e) { (J = t), (X = e); }), (t.setRTLTextPlugin = function (t, e, r) { if ((void 0 === r && (r = !1), ai === ei || ai === ri || ai === ni)) throw new Error('setRTLTextPlugin cannot be called multiple times.'); (oi = S.resolveURL(t)), (ai = ei), (ii = e), ui(), r || ci(); }), (t.spec = gt), (t.sphericalToCartesian = function (t) { var e = t[0], r = t[1], n = t[2]; return ( (r += 90), (r *= Math.PI / 180), (n *= Math.PI / 180), { x: e * Math.cos(r) * Math.sin(n), y: e * Math.sin(r) * Math.sin(n), z: e * Math.cos(n), } ); }), (t.sqrLen = function (t) { var e = t[0], r = t[1]; return e * e + r * r; }), (t.sub = function (t, e, r) { return ( (t[0] = e[0] - r[0]), (t[1] = e[1] - r[1]), (t[2] = e[2] - r[2]), t ); }), (t.toEvaluationFeature = fo), (t.transformMat3 = function (t, e, r) { var n = e[0], i = e[1], a = e[2]; return ( (t[0] = n * r[0] + i * r[3] + a * r[6]), (t[1] = n * r[1] + i * r[4] + a * r[7]), (t[2] = n * r[2] + i * r[5] + a * r[8]), t ); }), (t.transformMat4 = qo), (t.transformMat4$1 = function (t, e, r) { var n = e[0], i = e[1]; return ( (t[0] = r[0] * n + r[4] * i + r[12]), (t[1] = r[1] * n + r[5] * i + r[13]), t ); }), (t.translate = function (t, e, r) { var n, i, a, o, s, u, l, p, c, h, f, y, d = r[0], m = r[1], v = r[2]; return ( e === t ? ((t[12] = e[0] * d + e[4] * m + e[8] * v + e[12]), (t[13] = e[1] * d + e[5] * m + e[9] * v + e[13]), (t[14] = e[2] * d + e[6] * m + e[10] * v + e[14]), (t[15] = e[3] * d + e[7] * m + e[11] * v + e[15])) : ((i = e[1]), (a = e[2]), (o = e[3]), (s = e[4]), (u = e[5]), (l = e[6]), (p = e[7]), (c = e[8]), (h = e[9]), (f = e[10]), (y = e[11]), (t[0] = n = e[0]), (t[1] = i), (t[2] = a), (t[3] = o), (t[4] = s), (t[5] = u), (t[6] = l), (t[7] = p), (t[8] = c), (t[9] = h), (t[10] = f), (t[11] = y), (t[12] = n * d + s * m + c * v + e[12]), (t[13] = i * d + u * m + h * v + e[13]), (t[14] = a * d + l * m + f * v + e[14]), (t[15] = o * d + p * m + y * v + e[15])), t ); }), (t.triggerPluginCompletionEvent = si), (t.unicodeBlockLookup = Xn), (t.uniqueId = function () { return u++; }), (t.validateCustomStyleLayer = function (t) { var e = [], r = t.id; return ( void 0 === r && e.push({ message: 'layers.' + r + ': missing required property "id"', }), void 0 === t.render && e.push({ message: 'layers.' + r + ': missing required method "render"', }), t.renderingMode && '2d' !== t.renderingMode && '3d' !== t.renderingMode && e.push({ message: 'layers.' + r + ': property "renderingMode" must be either "2d" or "3d"', }), e ); }), (t.validateLight = On), (t.validateStyle = Fn), (t.values = function (t) { var e = []; for (var r in t) e.push(t[r]); return e; }), (t.vectorTile = Gs), (t.warnOnce = d), (t.wrap = o); }); define(['./shared'], function (e) { 'use strict'; function t(e) { var r = typeof e; if ('number' === r || 'boolean' === r || 'string' === r || null == e) return JSON.stringify(e); if (Array.isArray(e)) { for (var i = '[', o = 0, n = e; o < n.length; o += 1) i += t(n[o]) + ','; return i + ']'; } for (var s = Object.keys(e).sort(), a = '{', l = 0; l < s.length; l++) a += JSON.stringify(s[l]) + ':' + t(e[s[l]]) + ','; return a + '}'; } function r(r) { for (var i = '', o = 0, n = e.refProperties; o < n.length; o += 1) i += '/' + t(r[n[o]]); return i; } var i = function (e) { (this.keyCache = {}), e && this.replace(e); }; (i.prototype.replace = function (e) { (this._layerConfigs = {}), (this._layers = {}), this.update(e, []); }), (i.prototype.update = function (t, i) { for (var o = this, n = 0, s = t; n < s.length; n += 1) { var a = s[n]; this._layerConfigs[a.id] = a; var l = (this._layers[a.id] = e.createStyleLayer(a)); (l._featureFilter = e.createFilter(l.filter)), this.keyCache[a.id] && delete this.keyCache[a.id]; } for (var u = 0, h = i; u < h.length; u += 1) { var c = h[u]; delete this.keyCache[c], delete this._layerConfigs[c], delete this._layers[c]; } this.familiesBySource = {}; for ( var p = (function (e, t) { for (var i = {}, o = 0; o < e.length; o++) { var n = (t && t[e[o].id]) || r(e[o]); t && (t[e[o].id] = n); var s = i[n]; s || (s = i[n] = []), s.push(e[o]); } var a = []; for (var l in i) a.push(i[l]); return a; })(e.values(this._layerConfigs), this.keyCache), f = 0, g = p; f < g.length; f += 1 ) { var d = g[f].map(function (e) { return o._layers[e.id]; }), v = d[0]; if ('none' !== v.visibility) { var m = v.source || '', y = this.familiesBySource[m]; y || (y = this.familiesBySource[m] = {}); var x = v.sourceLayer || '_geojsonTileLayer', w = y[x]; w || (w = y[x] = []), w.push(d); } } }); var o = function (t) { var r = {}, i = []; for (var o in t) { var n = t[o], s = (r[o] = {}); for (var a in n) { var l = n[+a]; if (l && 0 !== l.bitmap.width && 0 !== l.bitmap.height) { var u = { x: 0, y: 0, w: l.bitmap.width + 2, h: l.bitmap.height + 2, }; i.push(u), (s[a] = { rect: u, metrics: l.metrics }); } } } var h = e.potpack(i), c = new e.AlphaImage({ width: h.w || 1, height: h.h || 1 }); for (var p in t) { var f = t[p]; for (var g in f) { var d = f[+g]; if (d && 0 !== d.bitmap.width && 0 !== d.bitmap.height) { var v = r[p][g].rect; e.AlphaImage.copy( d.bitmap, c, { x: 0, y: 0 }, { x: v.x + 1, y: v.y + 1 }, d.bitmap, ); } } } (this.image = c), (this.positions = r); }; e.register('GlyphAtlas', o); var n = function (t) { (this.tileID = new e.OverscaledTileID( t.tileID.overscaledZ, t.tileID.wrap, t.tileID.canonical.z, t.tileID.canonical.x, t.tileID.canonical.y, )), (this.uid = t.uid), (this.zoom = t.zoom), (this.pixelRatio = t.pixelRatio), (this.tileSize = t.tileSize), (this.source = t.source), (this.overscaling = this.tileID.overscaleFactor()), (this.showCollisionBoxes = t.showCollisionBoxes), (this.collectResourceTiming = !!t.collectResourceTiming), (this.returnDependencies = !!t.returnDependencies), (this.promoteId = t.promoteId); }; function s(t, r, i) { for ( var o = new e.EvaluationParameters(r), n = 0, s = t; n < s.length; n += 1 ) s[n].recalculate(o, i); } function a(t, r) { var i = e.getArrayBuffer(t.request, function (t, i, o, n) { t ? r(t) : i && r(null, { vectorTile: new e.vectorTile.VectorTile(new e.pbf(i)), rawData: i, cacheControl: o, expires: n, }); }); return function () { i.cancel(), r(); }; } n.prototype.parse = function (t, r, i, n, a) { var l = this; (this.status = 'parsing'), (this.data = t), (this.collisionBoxArray = new e.CollisionBoxArray()); var u = new e.DictionaryCoder(Object.keys(t.layers).sort()), h = new e.FeatureIndex(this.tileID, this.promoteId); h.bucketLayerIDs = []; var c, p, f, g, d = {}, v = { featureIndex: h, iconDependencies: {}, patternDependencies: {}, glyphDependencies: {}, availableImages: i, }, m = r.familiesBySource[this.source]; for (var y in m) { var x = t.layers[y]; if (x) { 1 === x.version && e.warnOnce( 'Vector tile source "' + this.source + '" layer "' + y + '" does not use vector tile spec v2 and therefore may have some rendering errors.', ); for (var w = u.encode(y), S = [], M = 0; M < x.length; M++) { var I = x.feature(M), b = h.getId(I, y); S.push({ feature: I, id: b, index: M, sourceLayerIndex: w }); } for (var k = 0, P = m[y]; k < P.length; k += 1) { var T = P[k], C = T[0]; C.source !== this.source && e.warnOnce( 'layer.source = ' + C.source + ' does not equal this.source = ' + this.source, ), (C.minzoom && this.zoom < Math.floor(C.minzoom)) || (C.maxzoom && this.zoom >= C.maxzoom) || ('none' !== C.visibility && (s(T, this.zoom, i), (d[C.id] = C.createBucket({ index: h.bucketLayerIDs.length, layers: T, zoom: this.zoom, pixelRatio: this.pixelRatio, overscaling: this.overscaling, collisionBoxArray: this.collisionBoxArray, sourceLayerIndex: w, sourceID: this.source, })).populate(S, v, this.tileID.canonical), h.bucketLayerIDs.push( T.map(function (e) { return e.id; }), ))); } } } var _ = e.mapObject(v.glyphDependencies, function (e) { return Object.keys(e).map(Number); }); Object.keys(_).length ? n.send('getGlyphs', { uid: this.uid, stacks: _ }, function (e, t) { c || ((c = e), (p = t), z.call(l)); }) : (p = {}); var D = Object.keys(v.iconDependencies); D.length ? n.send( 'getImages', { icons: D, source: this.source, tileID: this.tileID, type: 'icons', }, function (e, t) { c || ((c = e), (f = t), z.call(l)); }, ) : (f = {}); var L = Object.keys(v.patternDependencies); function z() { if (c) return a(c); if (p && f && g) { var t = new o(p), r = new e.ImageAtlas(f, g); for (var n in d) { var l = d[n]; l instanceof e.SymbolBucket ? (s(l.layers, this.zoom, i), e.performSymbolLayout({ bucket: l, glyphMap: p, glyphPositions: t.positions, imageMap: f, imagePositions: r.iconPositions, showCollisionBoxes: this.showCollisionBoxes, canonical: this.tileID.canonical, })) : l.hasPattern && (l instanceof e.LineBucket || l instanceof e.FillBucket || l instanceof e.FillExtrusionBucket) && (s(l.layers, this.zoom, i), l.addFeatures(v, this.tileID.canonical, r.patternPositions)); } (this.status = 'done'), a(null, { buckets: e.values(d).filter(function (e) { return !e.isEmpty(); }), featureIndex: h, collisionBoxArray: this.collisionBoxArray, glyphAtlasImage: t.image, imageAtlas: r, glyphMap: this.returnDependencies ? p : null, iconMap: this.returnDependencies ? f : null, glyphPositions: this.returnDependencies ? t.positions : null, }); } } L.length ? n.send( 'getImages', { icons: L, source: this.source, tileID: this.tileID, type: 'patterns', }, function (e, t) { c || ((c = e), (g = t), z.call(l)); }, ) : (g = {}), z.call(this); }; var l = function (e, t, r, i) { (this.actor = e), (this.layerIndex = t), (this.availableImages = r), (this.loadVectorData = i || a), (this.loading = {}), (this.loaded = {}); }; (l.prototype.loadTile = function (t, r) { var i = this, o = t.uid; this.loading || (this.loading = {}); var s = !!(t && t.request && t.request.collectResourceTiming) && new e.RequestPerformance(t.request), a = (this.loading[o] = new n(t)); a.abort = this.loadVectorData(t, function (t, n) { if ((delete i.loading[o], t || !n)) return (a.status = 'done'), (i.loaded[o] = a), r(t); var l = n.rawData, u = {}; n.expires && (u.expires = n.expires), n.cacheControl && (u.cacheControl = n.cacheControl); var h = {}; if (s) { var c = s.finish(); c && (h.resourceTiming = JSON.parse(JSON.stringify(c))); } (a.vectorTile = n.vectorTile), a.parse( n.vectorTile, i.layerIndex, i.availableImages, i.actor, function (t, i) { if (t || !i) return r(t); r(null, e.extend({ rawTileData: l.slice(0) }, i, u, h)); }, ), (i.loaded = i.loaded || {}), (i.loaded[o] = a); }); }), (l.prototype.reloadTile = function (e, t) { var r = this, i = this.loaded, o = e.uid, n = this; if (i && i[o]) { var s = i[o]; s.showCollisionBoxes = e.showCollisionBoxes; var a = function (e, i) { var o = s.reloadCallback; o && (delete s.reloadCallback, s.parse( s.vectorTile, n.layerIndex, r.availableImages, n.actor, o, )), t(e, i); }; 'parsing' === s.status ? (s.reloadCallback = a) : 'done' === s.status && (s.vectorTile ? s.parse( s.vectorTile, this.layerIndex, this.availableImages, this.actor, a, ) : a()); } }), (l.prototype.abortTile = function (e, t) { var r = this.loading, i = e.uid; r && r[i] && r[i].abort && (r[i].abort(), delete r[i]), t(); }), (l.prototype.removeTile = function (e, t) { var r = this.loaded, i = e.uid; r && r[i] && delete r[i], t(); }); var u = function () { this.loaded = {}; }; (u.prototype.loadTile = function (t, r) { var i = t.uid, o = t.encoding, n = t.rawImageData, s = e.isImageBitmap(n) ? this.getImageData(n) : n, a = new e.DEMData(i, s, o); (this.loaded = this.loaded || {}), (this.loaded[i] = a), r(null, a); }), (u.prototype.getImageData = function (t) { (this.offscreenCanvas && this.offscreenCanvasContext) || ((this.offscreenCanvas = new OffscreenCanvas(t.width, t.height)), (this.offscreenCanvasContext = this.offscreenCanvas.getContext('2d'))), (this.offscreenCanvas.width = t.width), (this.offscreenCanvas.height = t.height), this.offscreenCanvasContext.drawImage(t, 0, 0, t.width, t.height); var r = this.offscreenCanvasContext.getImageData( -1, -1, t.width + 2, t.height + 2, ); return ( this.offscreenCanvasContext.clearRect( 0, 0, this.offscreenCanvas.width, this.offscreenCanvas.height, ), new e.RGBAImage({ width: r.width, height: r.height }, r.data) ); }), (u.prototype.removeTile = function (e) { var t = this.loaded, r = e.uid; t && t[r] && delete t[r]; }); var h = function e(t, r) { var i, o = t && t.type; if ('FeatureCollection' === o) for (i = 0; i < t.features.length; i++) e(t.features[i], r); else if ('GeometryCollection' === o) for (i = 0; i < t.geometries.length; i++) e(t.geometries[i], r); else if ('Feature' === o) e(t.geometry, r); else if ('Polygon' === o) c(t.coordinates, r); else if ('MultiPolygon' === o) for (i = 0; i < t.coordinates.length; i++) c(t.coordinates[i], r); return t; }; function c(e, t) { if (0 !== e.length) { p(e[0], t); for (var r = 1; r < e.length; r++) p(e[r], !t); } } function p(e, t) { for (var r = 0, i = 0, o = 0, n = e.length, s = n - 1; o < n; s = o++) { var a = (e[o][0] - e[s][0]) * (e[s][1] + e[o][1]), l = r + a; (i += Math.abs(r) >= Math.abs(a) ? r - l + a : a - l + r), (r = l); } r + i >= 0 != !!t && e.reverse(); } var f = e.vectorTile.VectorTileFeature.prototype.toGeoJSON, g = function (t) { (this._feature = t), (this.extent = e.EXTENT), (this.type = t.type), (this.properties = t.tags), 'id' in t && !isNaN(t.id) && (this.id = parseInt(t.id, 10)); }; (g.prototype.loadGeometry = function () { if (1 === this._feature.type) { for ( var t = [], r = 0, i = this._feature.geometry; r < i.length; r += 1 ) { var o = i[r]; t.push([new e.pointGeometry(o[0], o[1])]); } return t; } for ( var n = [], s = 0, a = this._feature.geometry; s < a.length; s += 1 ) { for (var l = [], u = 0, h = a[s]; u < h.length; u += 1) { var c = h[u]; l.push(new e.pointGeometry(c[0], c[1])); } n.push(l); } return n; }), (g.prototype.toGeoJSON = function (e, t, r) { return f.call(this, e, t, r); }); var d = function (t) { (this.layers = { _geojsonTileLayer: this }), (this.name = '_geojsonTileLayer'), (this.extent = e.EXTENT), (this.length = t.length), (this._features = t); }; d.prototype.feature = function (e) { return new g(this._features[e]); }; var v = { exports: {} }, m = e.pointGeometry, y = e.vectorTile.VectorTileFeature, x = w; function w(e, t) { (this.options = t || {}), (this.features = e), (this.length = e.length); } function S(e, t) { (this.id = 'number' == typeof e.id ? e.id : void 0), (this.type = e.type), (this.rawGeometry = 1 === e.type ? [e.geometry] : e.geometry), (this.properties = e.tags), (this.extent = t || 4096); } (w.prototype.feature = function (e) { return new S(this.features[e], this.options.extent); }), (S.prototype.loadGeometry = function () { var e = this.rawGeometry; this.geometry = []; for (var t = 0; t < e.length; t++) { for (var r = e[t], i = [], o = 0; o < r.length; o++) i.push(new m(r[o][0], r[o][1])); this.geometry.push(i); } return this.geometry; }), (S.prototype.bbox = function () { this.geometry || this.loadGeometry(); for ( var e = this.geometry, t = 1 / 0, r = -1 / 0, i = 1 / 0, o = -1 / 0, n = 0; n < e.length; n++ ) for (var s = e[n], a = 0; a < s.length; a++) { var l = s[a]; (t = Math.min(t, l.x)), (r = Math.max(r, l.x)), (i = Math.min(i, l.y)), (o = Math.max(o, l.y)); } return [t, i, r, o]; }), (S.prototype.toGeoJSON = y.prototype.toGeoJSON); var M = e.pbf, I = x; function b(e) { var t = new M(); return ( (function (e, t) { for (var r in e.layers) t.writeMessage(3, k, e.layers[r]); })(e, t), t.finish() ); } function k(e, t) { var r; t.writeVarintField(15, e.version || 1), t.writeStringField(1, e.name || ''), t.writeVarintField(5, e.extent || 4096); var i = { keys: [], values: [], keycache: {}, valuecache: {} }; for (r = 0; r < e.length; r++) (i.feature = e.feature(r)), t.writeMessage(2, P, i); var o = i.keys; for (r = 0; r < o.length; r++) t.writeStringField(3, o[r]); var n = i.values; for (r = 0; r < n.length; r++) t.writeMessage(4, L, n[r]); } function P(e, t) { var r = e.feature; void 0 !== r.id && t.writeVarintField(1, r.id), t.writeMessage(2, T, e), t.writeVarintField(3, r.type), t.writeMessage(4, D, r); } function T(e, t) { var r = e.feature, i = e.keys, o = e.values, n = e.keycache, s = e.valuecache; for (var a in r.properties) { var l = r.properties[a], u = n[a]; if (null !== l) { void 0 === u && (i.push(a), (n[a] = u = i.length - 1)), t.writeVarint(u); var h = typeof l; 'string' !== h && 'boolean' !== h && 'number' !== h && (l = JSON.stringify(l)); var c = h + ':' + l, p = s[c]; void 0 === p && (o.push(l), (s[c] = p = o.length - 1)), t.writeVarint(p); } } } function C(e, t) { return (t << 3) + (7 & e); } function _(e) { return (e << 1) ^ (e >> 31); } function D(e, t) { for ( var r = e.loadGeometry(), i = e.type, o = 0, n = 0, s = r.length, a = 0; a < s; a++ ) { var l = r[a], u = 1; 1 === i && (u = l.length), t.writeVarint(C(1, u)); for (var h = 3 === i ? l.length - 1 : l.length, c = 0; c < h; c++) { 1 === c && 1 !== i && t.writeVarint(C(2, h - 1)); var p = l[c].x - o, f = l[c].y - n; t.writeVarint(_(p)), t.writeVarint(_(f)), (o += p), (n += f); } 3 === i && t.writeVarint(C(7, 1)); } } function L(e, t) { var r = typeof e; 'string' === r ? t.writeStringField(1, e) : 'boolean' === r ? t.writeBooleanField(7, e) : 'number' === r && (e % 1 != 0 ? t.writeDoubleField(3, e) : e < 0 ? t.writeSVarintField(6, e) : t.writeVarintField(5, e)); } function z(e, t, r, i, o, n) { if (!(o - i <= r)) { var s = (i + o) >> 1; O(e, t, s, i, o, n % 2), z(e, t, r, i, s - 1, n + 1), z(e, t, r, s + 1, o, n + 1); } } function O(e, t, r, i, o, n) { for (; o > i; ) { if (o - i > 600) { var s = o - i + 1, a = r - i + 1, l = Math.log(s), u = 0.5 * Math.exp((2 * l) / 3), h = 0.5 * Math.sqrt((l * u * (s - u)) / s) * (a - s / 2 < 0 ? -1 : 1); O( e, t, r, Math.max(i, Math.floor(r - (a * u) / s + h)), Math.min(o, Math.floor(r + ((s - a) * u) / s + h)), n, ); } var c = t[2 * r + n], p = i, f = o; for (E(e, t, i, r), t[2 * o + n] > c && E(e, t, i, o); p < f; ) { for (E(e, t, p, f), p++, f--; t[2 * p + n] < c; ) p++; for (; t[2 * f + n] > c; ) f--; } t[2 * i + n] === c ? E(e, t, i, f) : E(e, t, ++f, o), f <= r && (i = f + 1), r <= f && (o = f - 1); } } function E(e, t, r, i) { F(e, r, i), F(t, 2 * r, 2 * i), F(t, 2 * r + 1, 2 * i + 1); } function F(e, t, r) { var i = e[t]; (e[t] = e[r]), (e[r] = i); } function N(e, t, r, i) { var o = e - r, n = t - i; return o * o + n * n; } (v.exports = b), (v.exports.fromVectorTileJs = b), (v.exports.fromGeojsonVt = function (e, t) { t = t || {}; var r = {}; for (var i in e) (r[i] = new I(e[i].features, t)), (r[i].name = i), (r[i].version = t.version), (r[i].extent = t.extent); return b({ layers: r }); }), (v.exports.GeoJSONWrapper = I); var A = function (e) { return e[0]; }, B = function (e) { return e[1]; }, J = function (e, t, r, i, o) { void 0 === t && (t = A), void 0 === r && (r = B), void 0 === i && (i = 64), void 0 === o && (o = Float64Array), (this.nodeSize = i), (this.points = e); for ( var n = e.length < 65536 ? Uint16Array : Uint32Array, s = (this.ids = new n(e.length)), a = (this.coords = new o(2 * e.length)), l = 0; l < e.length; l++ ) (s[l] = l), (a[2 * l] = t(e[l])), (a[2 * l + 1] = r(e[l])); z(s, a, i, 0, s.length - 1, 0); }; (J.prototype.range = function (e, t, r, i) { return (function (e, t, r, i, o, n, s) { for (var a, l, u = [0, e.length - 1, 0], h = []; u.length; ) { var c = u.pop(), p = u.pop(), f = u.pop(); if (p - f <= s) for (var g = f; g <= p; g++) (l = t[2 * g + 1]), (a = t[2 * g]) >= r && a <= o && l >= i && l <= n && h.push(e[g]); else { var d = Math.floor((f + p) / 2); (l = t[2 * d + 1]), (a = t[2 * d]) >= r && a <= o && l >= i && l <= n && h.push(e[d]); var v = (c + 1) % 2; (0 === c ? r <= a : i <= l) && (u.push(f), u.push(d - 1), u.push(v)), (0 === c ? o >= a : n >= l) && (u.push(d + 1), u.push(p), u.push(v)); } } return h; })(this.ids, this.coords, e, t, r, i, this.nodeSize); }), (J.prototype.within = function (e, t, r) { return (function (e, t, r, i, o, n) { for (var s = [0, e.length - 1, 0], a = [], l = o * o; s.length; ) { var u = s.pop(), h = s.pop(), c = s.pop(); if (h - c <= n) for (var p = c; p <= h; p++) N(t[2 * p], t[2 * p + 1], r, i) <= l && a.push(e[p]); else { var f = Math.floor((c + h) / 2), g = t[2 * f], d = t[2 * f + 1]; N(g, d, r, i) <= l && a.push(e[f]); var v = (u + 1) % 2; (0 === u ? r - o <= g : i - o <= d) && (s.push(c), s.push(f - 1), s.push(v)), (0 === u ? r + o >= g : i + o >= d) && (s.push(f + 1), s.push(h), s.push(v)); } } return a; })(this.ids, this.coords, e, t, r, this.nodeSize); }); var Z, G = { minZoom: 0, maxZoom: 16, minPoints: 2, radius: 40, extent: 512, nodeSize: 64, log: !1, generateId: !1, reduce: null, map: function (e) { return e; }, }, Y = Math.fround || ((Z = new Float32Array(1)), function (e) { return (Z[0] = +e), Z[0]; }), j = function (e) { (this.options = H(Object.create(G), e)), (this.trees = new Array(this.options.maxZoom + 1)); }; function V(e, t, r, i, o) { return { x: Y(e), y: Y(t), zoom: 1 / 0, id: r, parentId: -1, numPoints: i, properties: o, }; } function X(e, t) { var r = e.geometry.coordinates, i = r[1]; return { x: Y(q(r[0])), y: Y(U(i)), zoom: 1 / 0, index: t, parentId: -1 }; } function R(e) { return { type: 'Feature', id: e.id, properties: W(e), geometry: { type: 'Point', coordinates: [ ((i = e.x), 360 * (i - 0.5)), ((t = e.y), (r = ((180 - 360 * t) * Math.PI) / 180), (360 * Math.atan(Math.exp(r))) / Math.PI - 90), ], }, }; var t, r, i; } function W(e) { var t = e.numPoints, r = t >= 1e4 ? Math.round(t / 1e3) + 'k' : t >= 1e3 ? Math.round(t / 100) / 10 + 'k' : t; return H(H({}, e.properties), { cluster: !0, cluster_id: e.id, point_count: t, point_count_abbreviated: r, }); } function q(e) { return e / 360 + 0.5; } function U(e) { var t = Math.sin((e * Math.PI) / 180), r = 0.5 - (0.25 * Math.log((1 + t) / (1 - t))) / Math.PI; return r < 0 ? 0 : r > 1 ? 1 : r; } function H(e, t) { for (var r in t) e[r] = t[r]; return e; } function K(e) { return e.x; } function Q(e) { return e.y; } function $(e, t, r, i) { for ( var o, n = i, s = (r - t) >> 1, a = r - t, l = e[t], u = e[t + 1], h = e[r], c = e[r + 1], p = t + 3; p < r; p += 3 ) { var f = ee(e[p], e[p + 1], l, u, h, c); if (f > n) (o = p), (n = f); else if (f === n) { var g = Math.abs(p - s); g < a && ((o = p), (a = g)); } } n > i && (o - t > 3 && $(e, t, o, i), (e[o + 2] = n), r - o > 3 && $(e, o, r, i)); } function ee(e, t, r, i, o, n) { var s = o - r, a = n - i; if (0 !== s || 0 !== a) { var l = ((e - r) * s + (t - i) * a) / (s * s + a * a); l > 1 ? ((r = o), (i = n)) : l > 0 && ((r += s * l), (i += a * l)); } return (s = e - r) * s + (a = t - i) * a; } function te(e, t, r, i) { var o = { id: void 0 === e ? null : e, type: t, geometry: r, tags: i, minX: 1 / 0, minY: 1 / 0, maxX: -1 / 0, maxY: -1 / 0, }; return ( (function (e) { var t = e.geometry, r = e.type; if ('Point' === r || 'MultiPoint' === r || 'LineString' === r) re(e, t); else if ('Polygon' === r || 'MultiLineString' === r) for (var i = 0; i < t.length; i++) re(e, t[i]); else if ('MultiPolygon' === r) for (i = 0; i < t.length; i++) for (var o = 0; o < t[i].length; o++) re(e, t[i][o]); })(o), o ); } function re(e, t) { for (var r = 0; r < t.length; r += 3) (e.minX = Math.min(e.minX, t[r])), (e.minY = Math.min(e.minY, t[r + 1])), (e.maxX = Math.max(e.maxX, t[r])), (e.maxY = Math.max(e.maxY, t[r + 1])); } function ie(e, t, r, i) { if (t.geometry) { var o = t.geometry.coordinates, n = t.geometry.type, s = Math.pow(r.tolerance / ((1 << r.maxZoom) * r.extent), 2), a = [], l = t.id; if ( (r.promoteId ? (l = t.properties[r.promoteId]) : r.generateId && (l = i || 0), 'Point' === n) ) oe(o, a); else if ('MultiPoint' === n) for (var u = 0; u < o.length; u++) oe(o[u], a); else if ('LineString' === n) ne(o, a, s, !1); else if ('MultiLineString' === n) { if (r.lineMetrics) { for (u = 0; u < o.length; u++) ne(o[u], (a = []), s, !1), e.push(te(l, 'LineString', a, t.properties)); return; } se(o, a, s, !1); } else if ('Polygon' === n) se(o, a, s, !0); else { if ('MultiPolygon' !== n) { if ('GeometryCollection' === n) { for (u = 0; u < t.geometry.geometries.length; u++) ie( e, { id: l, geometry: t.geometry.geometries[u], properties: t.properties, }, r, i, ); return; } throw new Error('Input data is not a valid GeoJSON object.'); } for (u = 0; u < o.length; u++) { var h = []; se(o[u], h, s, !0), a.push(h); } } e.push(te(l, n, a, t.properties)); } } function oe(e, t) { t.push(ae(e[0])), t.push(le(e[1])), t.push(0); } function ne(e, t, r, i) { for (var o, n, s = 0, a = 0; a < e.length; a++) { var l = ae(e[a][0]), u = le(e[a][1]); t.push(l), t.push(u), t.push(0), a > 0 && (s += i ? (o * u - l * n) / 2 : Math.sqrt(Math.pow(l - o, 2) + Math.pow(u - n, 2))), (o = l), (n = u); } var h = t.length - 3; (t[2] = 1), $(t, 0, h, r), (t[h + 2] = 1), (t.size = Math.abs(s)), (t.start = 0), (t.end = t.size); } function se(e, t, r, i) { for (var o = 0; o < e.length; o++) { var n = []; ne(e[o], n, r, i), t.push(n); } } function ae(e) { return e / 360 + 0.5; } function le(e) { var t = Math.sin((e * Math.PI) / 180), r = 0.5 - (0.25 * Math.log((1 + t) / (1 - t))) / Math.PI; return r < 0 ? 0 : r > 1 ? 1 : r; } function ue(e, t, r, i, o, n, s, a) { if (((i /= t), n >= (r /= t) && s < i)) return e; if (s < r || n >= i) return null; for (var l = [], u = 0; u < e.length; u++) { var h = e[u], c = h.geometry, p = h.type, f = 0 === o ? h.minX : h.minY, g = 0 === o ? h.maxX : h.maxY; if (f >= r && g < i) l.push(h); else if (!(g < r || f >= i)) { var d = []; if ('Point' === p || 'MultiPoint' === p) he(c, d, r, i, o); else if ('LineString' === p) ce(c, d, r, i, o, !1, a.lineMetrics); else if ('MultiLineString' === p) fe(c, d, r, i, o, !1); else if ('Polygon' === p) fe(c, d, r, i, o, !0); else if ('MultiPolygon' === p) for (var v = 0; v < c.length; v++) { var m = []; fe(c[v], m, r, i, o, !0), m.length && d.push(m); } if (d.length) { if (a.lineMetrics && 'LineString' === p) { for (v = 0; v < d.length; v++) l.push(te(h.id, p, d[v], h.tags)); continue; } ('LineString' !== p && 'MultiLineString' !== p) || (1 === d.length ? ((p = 'LineString'), (d = d[0])) : (p = 'MultiLineString')), ('Point' !== p && 'MultiPoint' !== p) || (p = 3 === d.length ? 'Point' : 'MultiPoint'), l.push(te(h.id, p, d, h.tags)); } } } return l.length ? l : null; } function he(e, t, r, i, o) { for (var n = 0; n < e.length; n += 3) { var s = e[n + o]; s >= r && s <= i && (t.push(e[n]), t.push(e[n + 1]), t.push(e[n + 2])); } } function ce(e, t, r, i, o, n, s) { for ( var a, l, u = pe(e), h = 0 === o ? de : ve, c = e.start, p = 0; p < e.length - 3; p += 3 ) { var f = e[p], g = e[p + 1], d = e[p + 2], v = e[p + 3], m = e[p + 4], y = 0 === o ? f : g, x = 0 === o ? v : m, w = !1; s && (a = Math.sqrt(Math.pow(f - v, 2) + Math.pow(g - m, 2))), y < r ? x > r && ((l = h(u, f, g, v, m, r)), s && (u.start = c + a * l)) : y > i ? x < i && ((l = h(u, f, g, v, m, i)), s && (u.start = c + a * l)) : ge(u, f, g, d), x < r && y >= r && ((l = h(u, f, g, v, m, r)), (w = !0)), x > i && y <= i && ((l = h(u, f, g, v, m, i)), (w = !0)), !n && w && (s && (u.end = c + a * l), t.push(u), (u = pe(e))), s && (c += a); } var S = e.length - 3; (f = e[S]), (g = e[S + 1]), (d = e[S + 2]), (y = 0 === o ? f : g) >= r && y <= i && ge(u, f, g, d), (S = u.length - 3), n && S >= 3 && (u[S] !== u[0] || u[S + 1] !== u[1]) && ge(u, u[0], u[1], u[2]), u.length && t.push(u); } function pe(e) { var t = []; return (t.size = e.size), (t.start = e.start), (t.end = e.end), t; } function fe(e, t, r, i, o, n) { for (var s = 0; s < e.length; s++) ce(e[s], t, r, i, o, n, !1); } function ge(e, t, r, i) { e.push(t), e.push(r), e.push(i); } function de(e, t, r, i, o, n) { var s = (n - t) / (i - t); return e.push(n), e.push(r + (o - r) * s), e.push(1), s; } function ve(e, t, r, i, o, n) { var s = (n - r) / (o - r); return e.push(t + (i - t) * s), e.push(n), e.push(1), s; } function me(e, t) { for (var r = [], i = 0; i < e.length; i++) { var o, n = e[i], s = n.type; if ('Point' === s || 'MultiPoint' === s || 'LineString' === s) o = ye(n.geometry, t); else if ('MultiLineString' === s || 'Polygon' === s) { o = []; for (var a = 0; a < n.geometry.length; a++) o.push(ye(n.geometry[a], t)); } else if ('MultiPolygon' === s) for (o = [], a = 0; a < n.geometry.length; a++) { for (var l = [], u = 0; u < n.geometry[a].length; u++) l.push(ye(n.geometry[a][u], t)); o.push(l); } r.push(te(n.id, s, o, n.tags)); } return r; } function ye(e, t) { var r = []; (r.size = e.size), void 0 !== e.start && ((r.start = e.start), (r.end = e.end)); for (var i = 0; i < e.length; i += 3) r.push(e[i] + t, e[i + 1], e[i + 2]); return r; } function xe(e, t) { if (e.transformed) return e; var r, i, o, n = 1 << e.z, s = e.x, a = e.y; for (r = 0; r < e.features.length; r++) { var l = e.features[r], u = l.geometry, h = l.type; if (((l.geometry = []), 1 === h)) for (i = 0; i < u.length; i += 2) l.geometry.push(we(u[i], u[i + 1], t, n, s, a)); else for (i = 0; i < u.length; i++) { var c = []; for (o = 0; o < u[i].length; o += 2) c.push(we(u[i][o], u[i][o + 1], t, n, s, a)); l.geometry.push(c); } } return (e.transformed = !0), e; } function we(e, t, r, i, o, n) { return [Math.round(r * (e * i - o)), Math.round(r * (t * i - n))]; } function Se(e, t, r, i, o) { for ( var n = t === o.maxZoom ? 0 : o.tolerance / ((1 << t) * o.extent), s = { features: [], numPoints: 0, numSimplified: 0, numFeatures: 0, source: null, x: r, y: i, z: t, transformed: !1, minX: 2, minY: 1, maxX: -1, maxY: 0, }, a = 0; a < e.length; a++ ) { s.numFeatures++, Me(s, e[a], n, o); var l = e[a].minX, u = e[a].minY, h = e[a].maxX, c = e[a].maxY; l < s.minX && (s.minX = l), u < s.minY && (s.minY = u), h > s.maxX && (s.maxX = h), c > s.maxY && (s.maxY = c); } return s; } function Me(e, t, r, i) { var o = t.geometry, n = t.type, s = []; if ('Point' === n || 'MultiPoint' === n) for (var a = 0; a < o.length; a += 3) s.push(o[a]), s.push(o[a + 1]), e.numPoints++, e.numSimplified++; else if ('LineString' === n) Ie(s, o, e, r, !1, !1); else if ('MultiLineString' === n || 'Polygon' === n) for (a = 0; a < o.length; a++) Ie(s, o[a], e, r, 'Polygon' === n, 0 === a); else if ('MultiPolygon' === n) for (var l = 0; l < o.length; l++) { var u = o[l]; for (a = 0; a < u.length; a++) Ie(s, u[a], e, r, !0, 0 === a); } if (s.length) { var h = t.tags || null; if ('LineString' === n && i.lineMetrics) { for (var c in ((h = {}), t.tags)) h[c] = t.tags[c]; (h.mapbox_clip_start = o.start / o.size), (h.mapbox_clip_end = o.end / o.size); } var p = { geometry: s, type: 'Polygon' === n || 'MultiPolygon' === n ? 3 : 'LineString' === n || 'MultiLineString' === n ? 2 : 1, tags: h, }; null !== t.id && (p.id = t.id), e.features.push(p); } } function Ie(e, t, r, i, o, n) { var s = i * i; if (i > 0 && t.size < (o ? s : i)) r.numPoints += t.length / 3; else { for (var a = [], l = 0; l < t.length; l += 3) (0 === i || t[l + 2] > s) && (r.numSimplified++, a.push(t[l]), a.push(t[l + 1])), r.numPoints++; o && (function (e, t) { for ( var r = 0, i = 0, o = e.length, n = o - 2; i < o; n = i, i += 2 ) r += (e[i] - e[n]) * (e[i + 1] + e[n + 1]); if (r > 0 === t) for (i = 0, o = e.length; i < o / 2; i += 2) { var s = e[i], a = e[i + 1]; (e[i] = e[o - 2 - i]), (e[i + 1] = e[o - 1 - i]), (e[o - 2 - i] = s), (e[o - 1 - i] = a); } })(a, n), e.push(a); } } function be(e, t) { var r = (t = this.options = (function (e, t) { for (var r in t) e[r] = t[r]; return e; })(Object.create(this.options), t)).debug; if ( (r && console.time('preprocess data'), t.maxZoom < 0 || t.maxZoom > 24) ) throw new Error('maxZoom should be in the 0-24 range'); if (t.promoteId && t.generateId) throw new Error('promoteId and generateId cannot be used together.'); var i = (function (e, t) { var r = []; if ('FeatureCollection' === e.type) for (var i = 0; i < e.features.length; i++) ie(r, e.features[i], t, i); else ie(r, 'Feature' === e.type ? e : { geometry: e }, t); return r; })(e, t); (this.tiles = {}), (this.tileCoords = []), r && (console.timeEnd('preprocess data'), console.log( 'index: maxZoom: %d, maxPoints: %d', t.indexMaxZoom, t.indexMaxPoints, ), console.time('generate tiles'), (this.stats = {}), (this.total = 0)), (i = (function (e, t) { var r = t.buffer / t.extent, i = e, o = ue(e, 1, -1 - r, r, 0, -1, 2, t), n = ue(e, 1, 1 - r, 2 + r, 0, -1, 2, t); return ( (o || n) && ((i = ue(e, 1, -r, 1 + r, 0, -1, 2, t) || []), o && (i = me(o, 1).concat(i)), n && (i = i.concat(me(n, -1)))), i ); })(i, t)), i.length && this.splitTile(i, 0, 0, 0), r && (i.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), )); } function ke(e, t, r) { return 32 * ((1 << e) * r + t) + e; } function Pe(e, t) { var r = e.tileID.canonical; if (!this._geoJSONIndex) return t(null, null); var i = this._geoJSONIndex.getTile(r.z, r.x, r.y); if (!i) return t(null, null); var o = new d(i.features), n = v.exports(o); (0 === n.byteOffset && n.byteLength === n.buffer.byteLength) || (n = new Uint8Array(n)), t(null, { vectorTile: o, rawData: n.buffer }); } (j.prototype.load = function (e) { var t = this.options, r = t.log, i = t.minZoom, o = t.maxZoom, n = t.nodeSize; r && console.time('total time'); var s = 'prepare ' + e.length + ' points'; r && console.time(s), (this.points = e); for (var a = [], l = 0; l < e.length; l++) e[l].geometry && a.push(X(e[l], l)); (this.trees[o + 1] = new J(a, K, Q, n, Float32Array)), r && console.timeEnd(s); for (var u = o; u >= i; u--) { var h = +Date.now(); (a = this._cluster(a, u)), (this.trees[u] = new J(a, K, Q, n, Float32Array)), r && console.log( 'z%d: %d clusters in %dms', u, a.length, +Date.now() - h, ); } return r && console.timeEnd('total time'), this; }), (j.prototype.getClusters = function (e, t) { var r = ((((e[0] + 180) % 360) + 360) % 360) - 180, i = Math.max(-90, Math.min(90, e[1])), o = 180 === e[2] ? 180 : ((((e[2] + 180) % 360) + 360) % 360) - 180, n = Math.max(-90, Math.min(90, e[3])); if (e[2] - e[0] >= 360) (r = -180), (o = 180); else if (r > o) { var s = this.getClusters([r, i, 180, n], t), a = this.getClusters([-180, i, o, n], t); return s.concat(a); } for ( var l = this.trees[this._limitZoom(t)], u = [], h = 0, c = l.range(q(r), U(n), q(o), U(i)); h < c.length; h += 1 ) { var p = l.points[c[h]]; u.push(p.numPoints ? R(p) : this.points[p.index]); } return u; }), (j.prototype.getChildren = function (e) { var t = this._getOriginId(e), r = this._getOriginZoom(e), i = 'No cluster with the specified id.', o = this.trees[r]; if (!o) throw new Error(i); var n = o.points[t]; if (!n) throw new Error(i); for ( var s = this.options.radius / (this.options.extent * Math.pow(2, r - 1)), a = [], l = 0, u = o.within(n.x, n.y, s); l < u.length; l += 1 ) { var h = o.points[u[l]]; h.parentId === e && a.push(h.numPoints ? R(h) : this.points[h.index]); } if (0 === a.length) throw new Error(i); return a; }), (j.prototype.getLeaves = function (e, t, r) { var i = []; return this._appendLeaves(i, e, (t = t || 10), (r = r || 0), 0), i; }), (j.prototype.getTile = function (e, t, r) { var i = this.trees[this._limitZoom(e)], o = Math.pow(2, e), n = this.options, s = n.radius / n.extent, a = (r - s) / o, l = (r + 1 + s) / o, u = { features: [] }; return ( this._addTileFeatures( i.range((t - s) / o, a, (t + 1 + s) / o, l), i.points, t, r, o, u, ), 0 === t && this._addTileFeatures( i.range(1 - s / o, a, 1, l), i.points, o, r, o, u, ), t === o - 1 && this._addTileFeatures( i.range(0, a, s / o, l), i.points, -1, r, o, u, ), u.features.length ? u : null ); }), (j.prototype.getClusterExpansionZoom = function (e) { for (var t = this._getOriginZoom(e) - 1; t <= this.options.maxZoom; ) { var r = this.getChildren(e); if ((t++, 1 !== r.length)) break; e = r[0].properties.cluster_id; } return t; }), (j.prototype._appendLeaves = function (e, t, r, i, o) { for (var n = 0, s = this.getChildren(t); n < s.length; n += 1) { var a = s[n], l = a.properties; if ( (l && l.cluster ? o + l.point_count <= i ? (o += l.point_count) : (o = this._appendLeaves(e, l.cluster_id, r, i, o)) : o < i ? o++ : e.push(a), e.length === r) ) break; } return o; }), (j.prototype._addTileFeatures = function (e, t, r, i, o, n) { for (var s = 0, a = e; s < a.length; s += 1) { var l = t[a[s]], u = l.numPoints, h = void 0, c = void 0, p = void 0; if (u) (h = W(l)), (c = l.x), (p = l.y); else { var f = this.points[l.index]; (h = f.properties), (c = q(f.geometry.coordinates[0])), (p = U(f.geometry.coordinates[1])); } var g = { type: 1, geometry: [ [ Math.round(this.options.extent * (c * o - r)), Math.round(this.options.extent * (p * o - i)), ], ], tags: h, }, d = void 0; u ? (d = l.id) : this.options.generateId ? (d = l.index) : this.points[l.index].id && (d = this.points[l.index].id), void 0 !== d && (g.id = d), n.features.push(g); } }), (j.prototype._limitZoom = function (e) { return Math.max( this.options.minZoom, Math.min(Math.floor(+e), this.options.maxZoom + 1), ); }), (j.prototype._cluster = function (e, t) { for ( var r = [], i = this.options, o = i.reduce, n = i.minPoints, s = i.radius / (i.extent * Math.pow(2, t)), a = 0; a < e.length; a++ ) { var l = e[a]; if (!(l.zoom <= t)) { l.zoom = t; for ( var u = this.trees[t + 1], h = u.within(l.x, l.y, s), c = l.numPoints || 1, p = c, f = 0, g = h; f < g.length; f += 1 ) { var d = u.points[g[f]]; d.zoom > t && (p += d.numPoints || 1); } if (p > c && p >= n) { for ( var v = l.x * c, m = l.y * c, y = o && c > 1 ? this._map(l, !0) : null, x = (a << 5) + (t + 1) + this.points.length, w = 0, S = h; w < S.length; w += 1 ) { var M = u.points[S[w]]; if (!(M.zoom <= t)) { M.zoom = t; var I = M.numPoints || 1; (v += M.x * I), (m += M.y * I), (M.parentId = x), o && (y || (y = this._map(l, !0)), o(y, this._map(M))); } } (l.parentId = x), r.push(V(v / p, m / p, x, p, y)); } else if ((r.push(l), p > 1)) for (var b = 0, k = h; b < k.length; b += 1) { var P = u.points[k[b]]; P.zoom <= t || ((P.zoom = t), r.push(P)); } } } return r; }), (j.prototype._getOriginId = function (e) { return (e - this.points.length) >> 5; }), (j.prototype._getOriginZoom = function (e) { return (e - this.points.length) % 32; }), (j.prototype._map = function (e, t) { if (e.numPoints) return t ? H({}, e.properties) : e.properties; var r = this.points[e.index].properties, i = this.options.map(r); return t && i === r ? H({}, i) : i; }), (be.prototype.options = { maxZoom: 14, indexMaxZoom: 5, indexMaxPoints: 1e5, tolerance: 3, extent: 4096, buffer: 64, lineMetrics: !1, promoteId: null, generateId: !1, debug: 0, }), (be.prototype.splitTile = function (e, t, r, i, o, n, s) { for (var a = [e, t, r, i], l = this.options, u = l.debug; a.length; ) { (i = a.pop()), (r = a.pop()), (t = a.pop()), (e = a.pop()); var h = 1 << t, c = ke(t, r, i), p = this.tiles[c]; if ( !p && (u > 1 && console.time('creation'), (p = this.tiles[c] = Se(e, t, r, i, l)), this.tileCoords.push({ z: t, x: r, y: i }), u) ) { u > 1 && (console.log( 'tile z%d-%d-%d (features: %d, points: %d, simplified: %d)', t, r, i, p.numFeatures, p.numPoints, p.numSimplified, ), console.timeEnd('creation')); var f = 'z' + t; (this.stats[f] = (this.stats[f] || 0) + 1), this.total++; } if (((p.source = e), o)) { if (t === l.maxZoom || t === o) continue; var g = 1 << (o - t); if (r !== Math.floor(n / g) || i !== Math.floor(s / g)) continue; } else if (t === l.indexMaxZoom || p.numPoints <= l.indexMaxPoints) continue; if (((p.source = null), 0 !== e.length)) { u > 1 && console.time('clipping'); var d, v, m, y, x, w, S = (0.5 * l.buffer) / l.extent, M = 0.5 - S, I = 0.5 + S, b = 1 + S; (d = v = m = y = null), (x = ue(e, h, r - S, r + I, 0, p.minX, p.maxX, l)), (w = ue(e, h, r + M, r + b, 0, p.minX, p.maxX, l)), (e = null), x && ((d = ue(x, h, i - S, i + I, 1, p.minY, p.maxY, l)), (v = ue(x, h, i + M, i + b, 1, p.minY, p.maxY, l)), (x = null)), w && ((m = ue(w, h, i - S, i + I, 1, p.minY, p.maxY, l)), (y = ue(w, h, i + M, i + b, 1, p.minY, p.maxY, l)), (w = null)), u > 1 && console.timeEnd('clipping'), a.push(d || [], t + 1, 2 * r, 2 * i), a.push(v || [], t + 1, 2 * r, 2 * i + 1), a.push(m || [], t + 1, 2 * r + 1, 2 * i), a.push(y || [], t + 1, 2 * r + 1, 2 * i + 1); } } }), (be.prototype.getTile = function (e, t, r) { var i = this.options, o = i.extent, n = i.debug; if (e < 0 || e > 24) return null; var s = 1 << e, a = ke(e, (t = ((t % s) + s) % s), r); if (this.tiles[a]) return xe(this.tiles[a], o); n > 1 && console.log('drilling down to z%d-%d-%d', e, t, r); for (var l, u = e, h = t, c = r; !l && u > 0; ) u--, (h = Math.floor(h / 2)), (c = Math.floor(c / 2)), (l = this.tiles[ke(u, h, c)]); return l && l.source ? (n > 1 && console.log('found parent tile z%d-%d-%d', u, h, c), n > 1 && console.time('drilling down'), this.splitTile(l.source, u, h, c, e, t, r), n > 1 && console.timeEnd('drilling down'), this.tiles[a] ? xe(this.tiles[a], o) : null) : null; }); var Te = (function (t) { function r(e, r, i, o) { t.call(this, e, r, i, Pe), o && (this.loadGeoJSON = o); } return ( t && (r.__proto__ = t), ((r.prototype = Object.create(t && t.prototype)).constructor = r), (r.prototype.loadData = function (t, r) { var i, o = this; null === (i = this._pendingRequest) || void 0 === i || i.cancel(), this._pendingCallback && this._pendingCallback(null, { abandoned: !0 }); var n = !!(t && t.request && t.request.collectResourceTiming) && new e.RequestPerformance(t.request); (this._pendingCallback = r), (this._pendingRequest = this.loadGeoJSON(t, function (i, s) { if ( (delete o._pendingCallback, delete o._pendingRequest, i || !s) ) return r(i); if ('object' != typeof s) return r( new Error( "Input data given to '" + t.source + "' is not a valid GeoJSON object.", ), ); h(s, !0); try { if (t.filter) { var a = e.createExpression(t.filter, { type: 'boolean', 'property-type': 'data-driven', overridable: !1, transition: !1, }); if ('error' === a.result) throw new Error( a.value .map(function (e) { return e.key + ': ' + e.message; }) .join(', '), ); var l = s.features.filter(function (e) { return a.value.evaluate({ zoom: 0 }, e); }); s = { type: 'FeatureCollection', features: l }; } o._geoJSONIndex = t.cluster ? new j( (function (t) { var r = t.superclusterOptions, i = t.clusterProperties; if (!i || !r) return r; for ( var o = {}, n = {}, s = { accumulated: null, zoom: 0 }, a = { properties: null }, l = Object.keys(i), u = 0, h = l; u < h.length; u += 1 ) { var c = h[u], p = i[c], f = p[0], g = e.createExpression(p[1]), d = e.createExpression( 'string' == typeof f ? [f, ['accumulated'], ['get', c]] : f, ); (o[c] = g.value), (n[c] = d.value); } return ( (r.map = function (e) { a.properties = e; for ( var t = {}, r = 0, i = l; r < i.length; r += 1 ) { var n = i[r]; t[n] = o[n].evaluate(s, a); } return t; }), (r.reduce = function (e, t) { a.properties = t; for (var r = 0, i = l; r < i.length; r += 1) { var o = i[r]; (s.accumulated = e[o]), (e[o] = n[o].evaluate(s, a)); } }), r ); })(t), ).load(s.features) : (function (e, t) { return new be(e, t); })(s, t.geojsonVtOptions); } catch (e) { return r(e); } o.loaded = {}; var u = {}; if (n) { var c = n.finish(); c && ((u.resourceTiming = {}), (u.resourceTiming[t.source] = JSON.parse( JSON.stringify(c), ))); } r(null, u); })); }), (r.prototype.reloadTile = function (e, r) { var i = this.loaded; return i && i[e.uid] ? t.prototype.reloadTile.call(this, e, r) : this.loadTile(e, r); }), (r.prototype.loadGeoJSON = function (t, r) { if (t.request) return e.getJSON(t.request, r); if ('string' == typeof t.data) try { r(null, JSON.parse(t.data)); } catch (e) { r( new Error( "Input data given to '" + t.source + "' is not a valid GeoJSON object.", ), ); } else r( new Error( "Input data given to '" + t.source + "' is not a valid GeoJSON object.", ), ); return { cancel: function () {} }; }), (r.prototype.removeSource = function (e, t) { this._pendingCallback && this._pendingCallback(null, { abandoned: !0 }), t(); }), (r.prototype.getClusterExpansionZoom = function (e, t) { try { t(null, this._geoJSONIndex.getClusterExpansionZoom(e.clusterId)); } catch (e) { t(e); } }), (r.prototype.getClusterChildren = function (e, t) { try { t(null, this._geoJSONIndex.getChildren(e.clusterId)); } catch (e) { t(e); } }), (r.prototype.getClusterLeaves = function (e, t) { try { t( null, this._geoJSONIndex.getLeaves(e.clusterId, e.limit, e.offset), ); } catch (e) { t(e); } }), r ); })(l), Ce = function (t) { var r = this; (this.self = t), (this.actor = new e.Actor(t, this)), (this.layerIndexes = {}), (this.availableImages = {}), (this.workerSourceTypes = { vector: l, geojson: Te }), (this.workerSources = {}), (this.demWorkerSources = {}), (this.self.registerWorkerSource = function (e, t) { if (r.workerSourceTypes[e]) throw new Error( 'Worker source with name "' + e + '" already registered.', ); r.workerSourceTypes[e] = t; }), (this.self.registerRTLTextPlugin = function (t) { if (e.plugin.isParsed()) throw new Error('RTL text plugin already registered.'); (e.plugin.applyArabicShaping = t.applyArabicShaping), (e.plugin.processBidirectionalText = t.processBidirectionalText), (e.plugin.processStyledBidirectionalText = t.processStyledBidirectionalText); }); }; return ( (Ce.prototype.setReferrer = function (e, t) { this.referrer = t; }), (Ce.prototype.setImages = function (e, t, r) { for (var i in ((this.availableImages[e] = t), this.workerSources[e])) { var o = this.workerSources[e][i]; for (var n in o) o[n].availableImages = t; } r(); }), (Ce.prototype.setLayers = function (e, t, r) { this.getLayerIndex(e).replace(t), r(); }), (Ce.prototype.updateLayers = function (e, t, r) { this.getLayerIndex(e).update(t.layers, t.removedIds), r(); }), (Ce.prototype.loadTile = function (e, t, r) { this.getWorkerSource(e, t.type, t.source).loadTile(t, r); }), (Ce.prototype.loadDEMTile = function (e, t, r) { this.getDEMWorkerSource(e, t.source).loadTile(t, r); }), (Ce.prototype.reloadTile = function (e, t, r) { this.getWorkerSource(e, t.type, t.source).reloadTile(t, r); }), (Ce.prototype.abortTile = function (e, t, r) { this.getWorkerSource(e, t.type, t.source).abortTile(t, r); }), (Ce.prototype.removeTile = function (e, t, r) { this.getWorkerSource(e, t.type, t.source).removeTile(t, r); }), (Ce.prototype.removeDEMTile = function (e, t) { this.getDEMWorkerSource(e, t.source).removeTile(t); }), (Ce.prototype.removeSource = function (e, t, r) { if ( this.workerSources[e] && this.workerSources[e][t.type] && this.workerSources[e][t.type][t.source] ) { var i = this.workerSources[e][t.type][t.source]; delete this.workerSources[e][t.type][t.source], void 0 !== i.removeSource ? i.removeSource(t, r) : r(); } }), (Ce.prototype.loadWorkerSource = function (e, t, r) { try { this.self.importScripts(t.url), r(); } catch (e) { r(e.toString()); } }), (Ce.prototype.syncRTLPluginState = function (t, r, i) { try { e.plugin.setState(r); var o = e.plugin.getPluginURL(); if (e.plugin.isLoaded() && !e.plugin.isParsed() && null != o) { this.self.importScripts(o); var n = e.plugin.isParsed(); i( n ? void 0 : new Error( 'RTL Text Plugin failed to import scripts from ' + o, ), n, ); } } catch (e) { i(e.toString()); } }), (Ce.prototype.getAvailableImages = function (e) { var t = this.availableImages[e]; return t || (t = []), t; }), (Ce.prototype.getLayerIndex = function (e) { var t = this.layerIndexes[e]; return t || (t = this.layerIndexes[e] = new i()), t; }), (Ce.prototype.getWorkerSource = function (e, t, r) { var i = this; if ( (this.workerSources[e] || (this.workerSources[e] = {}), this.workerSources[e][t] || (this.workerSources[e][t] = {}), !this.workerSources[e][t][r]) ) { var o = { send: function (t, r, o) { i.actor.send(t, r, o, e); }, }; this.workerSources[e][t][r] = new this.workerSourceTypes[t]( o, this.getLayerIndex(e), this.getAvailableImages(e), ); } return this.workerSources[e][t][r]; }), (Ce.prototype.getDEMWorkerSource = function (e, t) { return ( this.demWorkerSources[e] || (this.demWorkerSources[e] = {}), this.demWorkerSources[e][t] || (this.demWorkerSources[e][t] = new u()), this.demWorkerSources[e][t] ); }), (Ce.prototype.enforceCacheSizeLimit = function (t, r) { e.enforceCacheSizeLimit(r); }), e.isWorker() && (self.worker = new Ce(self)), Ce ); }); define(['./shared'], function (t) { 'use strict'; var e = i; function i(t) { return !(function (t) { return 'undefined' == typeof window || 'undefined' == typeof document ? 'not a browser' : Array.prototype && Array.prototype.every && Array.prototype.filter && Array.prototype.forEach && Array.prototype.indexOf && Array.prototype.lastIndexOf && Array.prototype.map && Array.prototype.some && Array.prototype.reduce && Array.prototype.reduceRight && Array.isArray ? Function.prototype && Function.prototype.bind ? Object.keys && Object.create && Object.getPrototypeOf && Object.getOwnPropertyNames && Object.isSealed && Object.isFrozen && Object.isExtensible && Object.getOwnPropertyDescriptor && Object.defineProperty && Object.defineProperties && Object.seal && Object.freeze && Object.preventExtensions ? 'JSON' in window && 'parse' in JSON && 'stringify' in JSON ? (function () { if ( !( 'Worker' in window && 'Blob' in window && 'URL' in window ) ) return !1; var t, e, i = new Blob([''], { type: 'text/javascript' }), r = URL.createObjectURL(i); try { (e = new Worker(r)), (t = !0); } catch (e) { t = !1; } return e && e.terminate(), URL.revokeObjectURL(r), t; })() ? 'Uint8ClampedArray' in window ? ArrayBuffer.isView ? (function () { var t = document.createElement('canvas'); t.width = t.height = 1; var e = t.getContext('2d'); if (!e) return !1; var i = e.getImageData(0, 0, 1, 1); return i && i.width === t.width; })() ? (void 0 === r[(e = t && t.failIfMajorPerformanceCaveat)] && (r[e] = (function (t) { var e, r = (function (t) { var e = document.createElement('canvas'), r = Object.create(i.webGLContextAttributes); return ( (r.failIfMajorPerformanceCaveat = t), e.getContext('webgl', r) || e.getContext('experimental-webgl', r) ); })(t); if (!r) return !1; try { e = r.createShader(r.VERTEX_SHADER); } catch (t) { return !1; } return ( !(!e || r.isContextLost()) && (r.shaderSource(e, 'void main() {}'), r.compileShader(e), !0 === r.getShaderParameter(e, r.COMPILE_STATUS)) ); })(e)), r[e] ? document.documentMode ? 'insufficient ECMAScript 6 support' : void 0 : 'insufficient WebGL support') : 'insufficient Canvas/getImageData support' : 'insufficient ArrayBuffer support' : 'insufficient Uint8ClampedArray support' : 'insufficient worker support' : 'insufficient JSON support' : 'insufficient Object support' : 'insufficient Function support' : 'insufficent Array support'; var e; })(t); } var r = {}; function o(t, e) { if (Array.isArray(t)) { if (!Array.isArray(e) || t.length !== e.length) return !1; for (var i = 0; i < t.length; i++) if (!o(t[i], e[i])) return !1; return !0; } if ('object' == typeof t && null !== t && null !== e) { if ('object' != typeof e) return !1; if (Object.keys(t).length !== Object.keys(e).length) return !1; for (var r in t) if (!o(t[r], e[r])) return !1; return !0; } return t === e; } i.webGLContextAttributes = { antialias: !1, alpha: !0, stencil: !0, depth: !0, }; var a = function () {}; (a.testProp = function (t) { if (!a.docStyle) return t[0]; for (var e = 0; e < t.length; e++) if (t[e] in a.docStyle) return t[e]; return t[0]; }), (a.create = function (t, e, i) { var r = window.document.createElement(t); return void 0 !== e && (r.className = e), i && i.appendChild(r), r; }), (a.createNS = function (t, e) { return window.document.createElementNS(t, e); }), (a.disableDrag = function () { a.docStyle && a.selectProp && ((a.userSelect = a.docStyle[a.selectProp]), (a.docStyle[a.selectProp] = 'none')); }), (a.enableDrag = function () { a.docStyle && a.selectProp && (a.docStyle[a.selectProp] = a.userSelect); }), (a.setTransform = function (t, e) { t.style[a.transformProp] = e; }), (a.addEventListener = function (t, e, i, r) { void 0 === r && (r = {}), t.addEventListener(e, i, 'passive' in r ? r : r.capture); }), (a.removeEventListener = function (t, e, i, r) { void 0 === r && (r = {}), t.removeEventListener(e, i, 'passive' in r ? r : r.capture); }), (a.suppressClickInternal = function (t) { t.preventDefault(), t.stopPropagation(), window.removeEventListener('click', a.suppressClickInternal, !0); }), (a.suppressClick = function () { window.addEventListener('click', a.suppressClickInternal, !0), window.setTimeout(function () { window.removeEventListener('click', a.suppressClickInternal, !0); }, 0); }), (a.mousePos = function (e, i) { var r = e.getBoundingClientRect(); return new t.pointGeometry( i.clientX - r.left - e.clientLeft, i.clientY - r.top - e.clientTop, ); }), (a.touchPos = function (e, i) { for ( var r = e.getBoundingClientRect(), o = [], a = 0; a < i.length; a++ ) o.push( new t.pointGeometry( i[a].clientX - r.left - e.clientLeft, i[a].clientY - r.top - e.clientTop, ), ); return o; }), (a.mouseButton = function (t) { return t.button; }), (a.remove = function (t) { t.parentNode && t.parentNode.removeChild(t); }), (a.docStyle = 'undefined' != typeof window && window.document && window.document.documentElement.style), (a.selectProp = a.testProp([ 'userSelect', 'MozUserSelect', 'WebkitUserSelect', 'msUserSelect', ])), (a.transformProp = a.testProp(['transform', 'WebkitTransform'])); var n = function (t) { this._transformRequestFn = t; }; (n.prototype.transformRequest = function (t, e) { return ( (this._transformRequestFn && this._transformRequestFn(t, e)) || { url: t, } ); }), (n.prototype.normalizeSpriteURL = function (t, e, i) { var r, o, a = (function (t) { var e = t.match(s); if (!e) throw new Error('Unable to parse URL "' + t + '"'); return { protocol: e[1], authority: e[2], path: e[3] || '/', params: e[4] ? e[4].split('&') : [], }; })(t); return ( (a.path += '' + e + i), (o = (r = a).params.length ? '?' + r.params.join('&') : ''), r.protocol + '://' + r.authority + r.path + o ); }), (n.prototype.setTransformRequest = function (t) { this._transformRequestFn = t; }); var s = /^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/, l = function (t, e, i, r) { (this.context = t), (this.format = i), (this.texture = t.gl.createTexture()), this.update(e, r); }; function c(t) { var e = t.userImage; return ( !!(e && e.render && e.render()) && (t.data.replace(new Uint8Array(e.data.buffer)), !0) ); } (l.prototype.update = function (e, i, r) { var o = e.width, a = e.height, n = !((this.size && this.size[0] === o && this.size[1] === a) || r), s = this.context, l = s.gl; if ( ((this.useMipmap = Boolean(i && i.useMipmap)), l.bindTexture(l.TEXTURE_2D, this.texture), s.pixelStoreUnpackFlipY.set(!1), s.pixelStoreUnpack.set(1), s.pixelStoreUnpackPremultiplyAlpha.set( this.format === l.RGBA && (!i || !1 !== i.premultiply), ), n) ) (this.size = [o, a]), e instanceof HTMLImageElement || e instanceof HTMLCanvasElement || e instanceof HTMLVideoElement || e instanceof ImageData || t.isImageBitmap(e) ? l.texImage2D( l.TEXTURE_2D, 0, this.format, this.format, l.UNSIGNED_BYTE, e, ) : l.texImage2D( l.TEXTURE_2D, 0, this.format, o, a, 0, this.format, l.UNSIGNED_BYTE, e.data, ); else { var c = r || { x: 0, y: 0 }, h = c.x, u = c.y; e instanceof HTMLImageElement || e instanceof HTMLCanvasElement || e instanceof HTMLVideoElement || e instanceof ImageData || t.isImageBitmap(e) ? l.texSubImage2D(l.TEXTURE_2D, 0, h, u, l.RGBA, l.UNSIGNED_BYTE, e) : l.texSubImage2D( l.TEXTURE_2D, 0, h, u, o, a, l.RGBA, l.UNSIGNED_BYTE, e.data, ); } this.useMipmap && this.isSizePowerOfTwo() && l.generateMipmap(l.TEXTURE_2D); }), (l.prototype.bind = function (t, e, i) { var r = this.context.gl; r.bindTexture(r.TEXTURE_2D, this.texture), i !== r.LINEAR_MIPMAP_NEAREST || this.isSizePowerOfTwo() || (i = r.LINEAR), t !== this.filter && (r.texParameteri(r.TEXTURE_2D, r.TEXTURE_MAG_FILTER, t), r.texParameteri(r.TEXTURE_2D, r.TEXTURE_MIN_FILTER, i || t), (this.filter = t)), e !== this.wrap && (r.texParameteri(r.TEXTURE_2D, r.TEXTURE_WRAP_S, e), r.texParameteri(r.TEXTURE_2D, r.TEXTURE_WRAP_T, e), (this.wrap = e)); }), (l.prototype.isSizePowerOfTwo = function () { return ( this.size[0] === this.size[1] && (Math.log(this.size[0]) / Math.LN2) % 1 == 0 ); }), (l.prototype.destroy = function () { this.context.gl.deleteTexture(this.texture), (this.texture = null); }); var h = (function (e) { function i() { e.call(this), (this.images = {}), (this.updatedImages = {}), (this.callbackDispatchedThisFrame = {}), (this.loaded = !1), (this.requestors = []), (this.patterns = {}), (this.atlasImage = new t.RGBAImage({ width: 1, height: 1 })), (this.dirty = !0); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.isLoaded = function () { return this.loaded; }), (i.prototype.setLoaded = function (t) { if (this.loaded !== t && ((this.loaded = t), t)) { for (var e = 0, i = this.requestors; e < i.length; e += 1) { var r = i[e]; this._notify(r.ids, r.callback); } this.requestors = []; } }), (i.prototype.getImage = function (t) { return this.images[t]; }), (i.prototype.addImage = function (t, e) { if (this.images[t]) throw new Error( 'Image id ' + t + ' already exist, use updateImage instead', ); this._validate(t, e) && (this.images[t] = e); }), (i.prototype._validate = function (e, i) { var r = !0; return ( this._validateStretch(i.stretchX, i.data && i.data.width) || (this.fire( new t.ErrorEvent( new Error('Image "' + e + '" has invalid "stretchX" value'), ), ), (r = !1)), this._validateStretch(i.stretchY, i.data && i.data.height) || (this.fire( new t.ErrorEvent( new Error('Image "' + e + '" has invalid "stretchY" value'), ), ), (r = !1)), this._validateContent(i.content, i) || (this.fire( new t.ErrorEvent( new Error('Image "' + e + '" has invalid "content" value'), ), ), (r = !1)), r ); }), (i.prototype._validateStretch = function (t, e) { if (!t) return !0; for (var i = 0, r = 0, o = t; r < o.length; r += 1) { var a = o[r]; if (a[0] < i || a[1] < a[0] || e < a[1]) return !1; i = a[1]; } return !0; }), (i.prototype._validateContent = function (t, e) { return !( t && (4 !== t.length || t[0] < 0 || e.data.width < t[0] || t[1] < 0 || e.data.height < t[1] || t[2] < 0 || e.data.width < t[2] || t[3] < 0 || e.data.height < t[3] || t[2] < t[0] || t[3] < t[1]) ); }), (i.prototype.updateImage = function (t, e) { var i = this.images[t]; if ( i.data.width !== e.data.width || i.data.height !== e.data.height ) throw new Error( 'size mismatch between old image (' + i.data.width + 'x' + i.data.height + ') and new image (' + e.data.width + 'x' + e.data.height + ').', ); (e.version = i.version + 1), (this.images[t] = e), (this.updatedImages[t] = !0); }), (i.prototype.removeImage = function (t) { var e = this.images[t]; delete this.images[t], delete this.patterns[t], e.userImage && e.userImage.onRemove && e.userImage.onRemove(); }), (i.prototype.listImages = function () { return Object.keys(this.images); }), (i.prototype.getImages = function (t, e) { var i = !0; if (!this.isLoaded()) for (var r = 0, o = t; r < o.length; r += 1) this.images[o[r]] || (i = !1); this.isLoaded() || i ? this._notify(t, e) : this.requestors.push({ ids: t, callback: e }); }), (i.prototype._notify = function (e, i) { for (var r = {}, o = 0, a = e; o < a.length; o += 1) { var n = a[o]; this.images[n] || this.fire(new t.Event('styleimagemissing', { id: n })); var s = this.images[n]; s ? (r[n] = { data: s.data.clone(), pixelRatio: s.pixelRatio, sdf: s.sdf, version: s.version, stretchX: s.stretchX, stretchY: s.stretchY, content: s.content, hasRenderCallback: Boolean( s.userImage && s.userImage.render, ), }) : t.warnOnce( 'Image "' + n + '" 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.', ); } i(null, r); }), (i.prototype.getPixelSize = function () { var t = this.atlasImage; return { width: t.width, height: t.height }; }), (i.prototype.getPattern = function (e) { var i = this.patterns[e], r = this.getImage(e); if (!r) return null; if (i && i.position.version === r.version) return i.position; if (i) i.position.version = r.version; else { var o = { w: r.data.width + 2, h: r.data.height + 2, x: 0, y: 0 }, a = new t.ImagePosition(o, r); this.patterns[e] = { bin: o, position: a }; } return this._updatePatternAtlas(), this.patterns[e].position; }), (i.prototype.bind = function (t) { var e = t.gl; this.atlasTexture ? this.dirty && (this.atlasTexture.update(this.atlasImage), (this.dirty = !1)) : (this.atlasTexture = new l(t, this.atlasImage, e.RGBA)), this.atlasTexture.bind(e.LINEAR, e.CLAMP_TO_EDGE); }), (i.prototype._updatePatternAtlas = function () { var e = []; for (var i in this.patterns) e.push(this.patterns[i].bin); var r = t.potpack(e), o = r.w, a = r.h, n = this.atlasImage; for (var s in (n.resize({ width: o || 1, height: a || 1 }), this.patterns)) { var l = this.patterns[s].bin, c = l.x + 1, h = l.y + 1, u = this.images[s].data, p = u.width, d = u.height; t.RGBAImage.copy( u, n, { x: 0, y: 0 }, { x: c, y: h }, { width: p, height: d }, ), t.RGBAImage.copy( u, n, { x: 0, y: d - 1 }, { x: c, y: h - 1 }, { width: p, height: 1 }, ), t.RGBAImage.copy( u, n, { x: 0, y: 0 }, { x: c, y: h + d }, { width: p, height: 1 }, ), t.RGBAImage.copy( u, n, { x: p - 1, y: 0 }, { x: c - 1, y: h }, { width: 1, height: d }, ), t.RGBAImage.copy( u, n, { x: 0, y: 0 }, { x: c + p, y: h }, { width: 1, height: d }, ); } this.dirty = !0; }), (i.prototype.beginFrame = function () { this.callbackDispatchedThisFrame = {}; }), (i.prototype.dispatchRenderCallbacks = function (e) { for (var i = 0, r = e; i < r.length; i += 1) { var o = r[i]; if (!this.callbackDispatchedThisFrame[o]) { this.callbackDispatchedThisFrame[o] = !0; var a = this.images[o]; a || t.warnOnce('Image with ID: "' + o + '" was not found'), c(a) && this.updateImage(o, a); } } }), i ); })(t.Evented), u = 1e20, p = function (t) { void 0 === t && (t = {}); var e = t.fontSize; void 0 === e && (e = 24); var i = t.buffer; void 0 === i && (i = 3); var r = t.radius; void 0 === r && (r = 8); var o = t.cutoff; void 0 === o && (o = 0.25); var a = t.fontFamily; void 0 === a && (a = 'sans-serif'); var n = t.fontWeight; void 0 === n && (n = 'normal'); var s = t.fontStyle; void 0 === s && (s = 'normal'), (this.buffer = i), (this.cutoff = o), (this.radius = r); var l = (this.size = e + 4 * i), c = this._createCanvas(l), h = (this.ctx = c.getContext('2d', { willReadFrequently: !0 })); (h.font = s + ' ' + n + ' ' + e + 'px ' + a), (h.textBaseline = 'alphabetic'), (h.textAlign = 'left'), (h.fillStyle = 'black'), (this.gridOuter = new Float64Array(l * l)), (this.gridInner = new Float64Array(l * l)), (this.f = new Float64Array(l)), (this.z = new Float64Array(l + 1)), (this.v = new Uint16Array(l)); }; function d(t, e, i, r, o, a, n, s, l) { for (var c = e; c < e + r; c++) _(t, i * a + c, a, o, n, s, l); for (var h = i; h < i + o; h++) _(t, h * a + e, 1, r, n, s, l); } function _(t, e, i, r, o, a, n) { (a[0] = 0), (n[0] = -u), (n[1] = u), (o[0] = t[e]); for (var s = 1, l = 0, c = 0; s < r; s++) { o[s] = t[e + s * i]; var h = s * s; do { var p = a[l]; c = (o[s] - o[p] + h - p * p) / (s - p) / 2; } while (c <= n[l] && --l > -1); (a[++l] = s), (n[l] = c), (n[l + 1] = u); } for (var d = 0, _ = 0; d < r; d++) { for (; n[_ + 1] < d; ) _++; var f = a[_], m = d - f; t[e + d * i] = o[f] + m * m; } } (p.prototype._createCanvas = function (t) { var e = document.createElement('canvas'); return (e.width = e.height = t), e; }), (p.prototype.draw = function (t) { var e = this.ctx.measureText(t), i = e.width, r = e.actualBoundingBoxDescent, o = e.actualBoundingBoxLeft, a = e.actualBoundingBoxRight, n = Math.ceil(e.actualBoundingBoxAscent), s = Math.min(this.size - this.buffer, Math.ceil(a - o)), l = Math.min(this.size - this.buffer, n + Math.ceil(r)), c = s + 2 * this.buffer, h = l + 2 * this.buffer, p = Math.max(c * h, 0), _ = new Uint8ClampedArray(p), f = { data: _, width: c, height: h, glyphWidth: s, glyphHeight: l, glyphTop: n, glyphLeft: 0, glyphAdvance: i, }; if (0 === s || 0 === l) return f; var m = this, g = m.ctx, v = m.buffer, y = m.gridInner, x = m.gridOuter; g.clearRect(v, v, s, l), g.fillText(t, v, v + n); var b = g.getImageData(v, v, s, l); x.fill(u, 0, p), y.fill(0, 0, p); for (var w = 0; w < l; w++) for (var T = 0; T < s; T++) { var E = b.data[4 * (w * s + T) + 3] / 255; if (0 !== E) { var I = (w + v) * c + T + v; if (1 === E) (x[I] = 0), (y[I] = u); else { var C = 0.5 - E; (x[I] = C > 0 ? C * C : 0), (y[I] = C < 0 ? C * C : 0); } } } d(x, 0, 0, c, h, c, this.f, this.v, this.z), d(y, v, v, s, l, c, this.f, this.v, this.z); for (var S = 0; S < p; S++) { var D = Math.sqrt(x[S]) - Math.sqrt(y[S]); _[S] = Math.round(255 - 255 * (D / this.radius + this.cutoff)); } return f; }); var f = function (t, e) { (this.requestManager = t), (this.localIdeographFontFamily = e), (this.entries = {}); }; (f.prototype.setURL = function (t) { this.url = t; }), (f.prototype.getGlyphs = function (e, i) { var r = this, o = []; for (var a in e) for (var n = 0, s = e[a]; n < s.length; n += 1) o.push({ stack: a, id: s[n] }); t.asyncAll( o, function (t, e) { var i = t.stack, o = t.id, a = r.entries[i]; a || (a = r.entries[i] = { glyphs: {}, requests: {}, ranges: {} }); var n = a.glyphs[o]; if (void 0 === n) { if ((n = r._tinySDF(a, i, o))) return ( (a.glyphs[o] = n), void e(null, { stack: i, id: o, glyph: n }) ); var s = Math.floor(o / 256); if (256 * s > 65535) e(new Error('glyphs > 65535 not supported')); else if (a.ranges[s]) e(null, { stack: i, id: o, glyph: n }); else { var l = a.requests[s]; l || ((l = a.requests[s] = []), f.loadGlyphRange( i, s, r.url, r.requestManager, function (t, e) { if (e) { for (var i in e) r._doesCharSupportLocalGlyph(+i) || (a.glyphs[+i] = e[+i]); a.ranges[s] = !0; } for (var o = 0, n = l; o < n.length; o += 1) (0, n[o])(t, e); delete a.requests[s]; }, )), l.push(function (t, r) { t ? e(t) : r && e(null, { stack: i, id: o, glyph: r[o] || null }); }); } } else e(null, { stack: i, id: o, glyph: n }); }, function (t, e) { if (t) i(t); else if (e) { for (var r = {}, o = 0, a = e; o < a.length; o += 1) { var n = a[o], s = n.stack, l = n.id, c = n.glyph; (r[s] || (r[s] = {}))[l] = c && { id: c.id, bitmap: c.bitmap.clone(), metrics: c.metrics, }; } i(null, r); } }, ); }), (f.prototype._doesCharSupportLocalGlyph = function (e) { return ( !!this.localIdeographFontFamily && (t.unicodeBlockLookup['CJK Unified Ideographs'](e) || t.unicodeBlockLookup['Hangul Syllables'](e) || t.unicodeBlockLookup.Hiragana(e) || t.unicodeBlockLookup.Katakana(e)) ); }), (f.prototype._tinySDF = function (e, i, r) { var o = this.localIdeographFontFamily; if (o && this._doesCharSupportLocalGlyph(r)) { var a = e.tinySDF; if (!a) { var n = '400'; /bold/i.test(i) ? (n = '900') : /medium/i.test(i) ? (n = '500') : /light/i.test(i) && (n = '200'), (a = e.tinySDF = new f.TinySDF({ fontSize: 24, buffer: 3, radius: 8, cutoff: 0.25, fontFamily: o, fontWeight: n, })); } var s = a.draw(String.fromCharCode(r)); return { id: r, bitmap: new t.AlphaImage( { width: s.width || 30, height: s.height || 30 }, s.data, ), metrics: { width: s.glyphWidth || 24, height: s.glyphHeight || 24, left: s.glyphLeft || 0, top: s.glyphTop - 27 || -8, advance: s.glyphAdvance || 24, }, }; } }), (f.loadGlyphRange = function (e, i, r, o, a) { var n = 256 * i, s = n + 255, l = o.transformRequest( r.replace('{fontstack}', e).replace('{range}', n + '-' + s), t.ResourceType.Glyphs, ); t.getArrayBuffer(l, function (e, i) { if (e) a(e); else if (i) { for ( var r = {}, o = 0, n = t.parseGlyphPbf(i); o < n.length; o += 1 ) { var s = n[o]; r[s.id] = s; } a(null, r); } }); }), (f.TinySDF = p); var m = function () { this.specification = t.spec.light.position; }; (m.prototype.possiblyEvaluate = function (e, i) { return t.sphericalToCartesian(e.expression.evaluate(i)); }), (m.prototype.interpolate = function (e, i, r) { return { x: t.number(e.x, i.x, r), y: t.number(e.y, i.y, r), z: t.number(e.z, i.z, r), }; }); var g = new t.Properties({ anchor: new t.DataConstantProperty(t.spec.light.anchor), position: new m(), color: new t.DataConstantProperty(t.spec.light.color), intensity: new t.DataConstantProperty(t.spec.light.intensity), }), v = '-transition', y = (function (e) { function i(i) { e.call(this), (this._transitionable = new t.Transitionable(g)), this.setLight(i), (this._transitioning = this._transitionable.untransitioned()); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.getLight = function () { return this._transitionable.serialize(); }), (i.prototype.setLight = function (e, i) { if ( (void 0 === i && (i = {}), !this._validate(t.validateLight, e, i)) ) for (var r in e) { var o = e[r]; t.endsWith(r, v) ? this._transitionable.setTransition(r.slice(0, -v.length), o) : this._transitionable.setValue(r, o); } }), (i.prototype.updateTransitions = function (t) { this._transitioning = this._transitionable.transitioned( t, this._transitioning, ); }), (i.prototype.hasTransition = function () { return this._transitioning.hasTransition(); }), (i.prototype.recalculate = function (t) { this.properties = this._transitioning.possiblyEvaluate(t); }), (i.prototype._validate = function (e, i, r) { return ( (!r || !1 !== r.validate) && t.emitValidationErrors( this, e.call( t.validateStyle, t.extend({ value: i, style: { glyphs: !0, sprite: !0 }, styleSpec: t.spec, }), ), ) ); }), i ); })(t.Evented), x = function (t, e) { (this.width = t), (this.height = e), (this.nextRow = 0), (this.data = new Uint8Array(this.width * this.height)), (this.dashEntry = {}); }; (x.prototype.getDash = function (t, e) { var i = t.join(',') + String(e); return ( this.dashEntry[i] || (this.dashEntry[i] = this.addDash(t, e)), this.dashEntry[i] ); }), (x.prototype.getDashRanges = function (t, e, i) { var r = [], o = t.length % 2 == 1 ? -t[t.length - 1] * i : 0, a = t[0] * i, n = !0; r.push({ left: o, right: a, isDash: n, zeroLength: 0 === t[0] }); for (var s = t[0], l = 1; l < t.length; l++) { var c = t[l]; r.push({ left: (o = s * i), right: (a = (s += c) * i), isDash: (n = !n), zeroLength: 0 === c, }); } return r; }), (x.prototype.addRoundDash = function (t, e, i) { for (var r = e / 2, o = -i; o <= i; o++) for ( var a = this.width * (this.nextRow + i + o), n = 0, s = t[n], l = 0; l < this.width; l++ ) { l / s.right > 1 && (s = t[++n]); var c = Math.abs(l - s.left), h = Math.abs(l - s.right), u = Math.min(c, h), p = void 0, d = (o / i) * (r + 1); if (s.isDash) { var _ = r - Math.abs(d); p = Math.sqrt(u * u + _ * _); } else p = r - Math.sqrt(u * u + d * d); this.data[a + l] = Math.max(0, Math.min(255, p + 128)); } }), (x.prototype.addRegularDash = function (t) { for (var e = t.length - 1; e >= 0; --e) { var i = t[e], r = t[e + 1]; i.zeroLength ? t.splice(e, 1) : r && r.isDash === i.isDash && ((r.left = i.left), t.splice(e, 1)); } var o = t[0], a = t[t.length - 1]; o.isDash === a.isDash && ((o.left = a.left - this.width), (a.right = o.right + this.width)); for ( var n = this.width * this.nextRow, s = 0, l = t[s], c = 0; c < this.width; c++ ) { c / l.right > 1 && (l = t[++s]); var h = Math.abs(c - l.left), u = Math.abs(c - l.right), p = Math.min(h, u); this.data[n + c] = Math.max( 0, Math.min(255, (l.isDash ? p : -p) + 128), ); } }), (x.prototype.addDash = function (e, i) { var r = i ? 7 : 0, o = 2 * r + 1; if (this.nextRow + o > this.height) return t.warnOnce('LineAtlas out of space'), null; for (var a = 0, n = 0; n < e.length; n++) a += e[n]; if (0 !== a) { var s = this.width / a, l = this.getDashRanges(e, this.width, s); i ? this.addRoundDash(l, s, r) : this.addRegularDash(l); } var c = { y: (this.nextRow + r + 0.5) / this.height, height: (2 * r) / this.height, width: a, }; return (this.nextRow += o), (this.dirty = !0), c; }), (x.prototype.bind = function (t) { var e = t.gl; this.texture ? (e.bindTexture(e.TEXTURE_2D, this.texture), this.dirty && ((this.dirty = !1), e.texSubImage2D( e.TEXTURE_2D, 0, 0, 0, this.width, this.height, e.ALPHA, e.UNSIGNED_BYTE, this.data, ))) : ((this.texture = e.createTexture()), e.bindTexture(e.TEXTURE_2D, this.texture), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.REPEAT), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.REPEAT), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, e.LINEAR), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, e.LINEAR), e.texImage2D( e.TEXTURE_2D, 0, e.ALPHA, this.width, this.height, 0, e.ALPHA, e.UNSIGNED_BYTE, this.data, )); }); var b = function e(i, r) { (this.workerPool = i), (this.actors = []), (this.currentActor = 0), (this.id = t.uniqueId()); for (var o = this.workerPool.acquire(this.id), a = 0; a < o.length; a++) { var n = new e.Actor(o[a], r, this.id); (n.name = 'Worker ' + a), this.actors.push(n); } if (!this.actors.length) throw new Error('No actors found'); }; function w(e, i, r) { var o = function (i, o) { if (i) return r(i); if (o) { var a = t.pick(t.extend(o, e), [ 'tiles', 'minzoom', 'maxzoom', 'attribution', 'bounds', 'scheme', 'tileSize', 'encoding', ]); o.vector_layers && ((a.vectorLayers = o.vector_layers), (a.vectorLayerIds = a.vectorLayers.map(function (t) { return t.id; }))), r(null, a); } }; return e.url ? t.getJSON(i.transformRequest(e.url, t.ResourceType.Source), o) : t.exported.frame(function () { return o(null, e); }); } (b.prototype.broadcast = function (e, i, r) { t.asyncAll( this.actors, function (t, r) { t.send(e, i, r); }, (r = r || function () {}), ); }), (b.prototype.getActor = function () { return ( (this.currentActor = (this.currentActor + 1) % this.actors.length), this.actors[this.currentActor] ); }), (b.prototype.remove = function () { this.actors.forEach(function (t) { t.remove(); }), (this.actors = []), this.workerPool.release(this.id); }), (b.Actor = t.Actor); var T = function (e, i, r) { (this.bounds = t.LngLatBounds.convert(this.validateBounds(e))), (this.minzoom = i || 0), (this.maxzoom = r || 24); }; (T.prototype.validateBounds = function (t) { return Array.isArray(t) && 4 === t.length ? [ Math.max(-180, t[0]), Math.max(-90, t[1]), Math.min(180, t[2]), Math.min(90, t[3]), ] : [-180, -90, 180, 90]; }), (T.prototype.contains = function (e) { var i = Math.pow(2, e.z), r = Math.floor(t.mercatorXfromLng(this.bounds.getWest()) * i), o = Math.floor(t.mercatorYfromLat(this.bounds.getNorth()) * i), a = Math.ceil(t.mercatorXfromLng(this.bounds.getEast()) * i), n = Math.ceil(t.mercatorYfromLat(this.bounds.getSouth()) * i); return e.x >= r && e.x < a && e.y >= o && e.y < n; }); var E, I = (function (e) { function i(i, r, o, a) { if ( (e.call(this), (this.id = i), (this.dispatcher = o), (this.type = 'vector'), (this.minzoom = 0), (this.maxzoom = 22), (this.scheme = 'xyz'), (this.tileSize = 512), (this.reparseOverscaled = !0), (this.isTileClipped = !0), (this._loaded = !1), t.extend( this, t.pick(r, ['url', 'scheme', 'tileSize', 'promoteId']), ), (this._options = t.extend({ type: 'vector' }, r)), (this._collectResourceTiming = r.collectResourceTiming), 512 !== this.tileSize) ) throw new Error('vector tile sources must have a tileSize of 512'); this.setEventedParent(a); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.load = function () { var e = this; (this._loaded = !1), this.fire(new t.Event('dataloading', { dataType: 'source' })), (this._tileJSONRequest = w( this._options, this.map._requestManager, function (i, r) { (e._tileJSONRequest = null), (e._loaded = !0), e.map.style.sourceCaches[e.id].clearTiles(), i ? e.fire(new t.ErrorEvent(i)) : r && (t.extend(e, r), r.bounds && (e.tileBounds = new T( r.bounds, e.minzoom, e.maxzoom, )), e.fire( new t.Event('data', { dataType: 'source', sourceDataType: 'metadata', }), ), e.fire( new t.Event('data', { dataType: 'source', sourceDataType: 'content', }), )); }, )); }), (i.prototype.loaded = function () { return this._loaded; }), (i.prototype.hasTile = function (t) { return !this.tileBounds || this.tileBounds.contains(t.canonical); }), (i.prototype.onAdd = function (t) { (this.map = t), this.load(); }), (i.prototype.setSourceProperty = function (t) { this._tileJSONRequest && this._tileJSONRequest.cancel(), t(), this.load(); }), (i.prototype.setTiles = function (t) { var e = this; return ( this.setSourceProperty(function () { e._options.tiles = t; }), this ); }), (i.prototype.setUrl = function (t) { var e = this; return ( this.setSourceProperty(function () { (e.url = t), (e._options.url = t); }), this ); }), (i.prototype.onRemove = function () { this._tileJSONRequest && (this._tileJSONRequest.cancel(), (this._tileJSONRequest = null)); }), (i.prototype.serialize = function () { return t.extend({}, this._options); }), (i.prototype.loadTile = function (e, i) { var r = e.tileID.canonical.url( this.tiles, this.map.getPixelRatio(), this.scheme, ), o = { request: this.map._requestManager.transformRequest( r, t.ResourceType.Tile, ), uid: e.uid, tileID: e.tileID, zoom: e.tileID.overscaledZ, tileSize: this.tileSize * e.tileID.overscaleFactor(), type: this.type, source: this.id, pixelRatio: this.map.getPixelRatio(), showCollisionBoxes: this.map.showCollisionBoxes, promoteId: this.promoteId, }; function a(r, o) { return ( delete e.request, e.aborted ? i(null) : r && 404 !== r.status ? i(r) : (o && o.resourceTiming && (e.resourceTiming = o.resourceTiming), this.map._refreshExpiredTiles && o && e.setExpiryData(o), e.loadVectorData(o, this.map.painter), t.cacheEntryPossiblyAdded(this.dispatcher), i(null), void ( e.reloadCallback && (this.loadTile(e, e.reloadCallback), (e.reloadCallback = null)) )) ); } (o.request.collectResourceTiming = this._collectResourceTiming), e.actor && 'expired' !== e.state ? 'loading' === e.state ? (e.reloadCallback = i) : (e.request = e.actor.send('reloadTile', o, a.bind(this))) : ((e.actor = this.dispatcher.getActor()), (e.request = e.actor.send('loadTile', o, a.bind(this)))); }), (i.prototype.abortTile = function (t) { t.request && (t.request.cancel(), delete t.request), t.actor && t.actor.send( 'abortTile', { uid: t.uid, type: this.type, source: this.id }, void 0, ); }), (i.prototype.unloadTile = function (t) { t.unloadVectorData(), t.actor && t.actor.send( 'removeTile', { uid: t.uid, type: this.type, source: this.id }, void 0, ); }), (i.prototype.hasTransition = function () { return !1; }), i ); })(t.Evented), C = (function (e) { function i(i, r, o, a) { e.call(this), (this.id = i), (this.dispatcher = o), this.setEventedParent(a), (this.type = 'raster'), (this.minzoom = 0), (this.maxzoom = 22), (this.roundZoom = !0), (this.scheme = 'xyz'), (this.tileSize = 512), (this._loaded = !1), (this._options = t.extend({ type: 'raster' }, r)), t.extend(this, t.pick(r, ['url', 'scheme', 'tileSize'])); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.load = function () { var e = this; (this._loaded = !1), this.fire(new t.Event('dataloading', { dataType: 'source' })), (this._tileJSONRequest = w( this._options, this.map._requestManager, function (i, r) { (e._tileJSONRequest = null), (e._loaded = !0), i ? e.fire(new t.ErrorEvent(i)) : r && (t.extend(e, r), r.bounds && (e.tileBounds = new T( r.bounds, e.minzoom, e.maxzoom, )), e.fire( new t.Event('data', { dataType: 'source', sourceDataType: 'metadata', }), ), e.fire( new t.Event('data', { dataType: 'source', sourceDataType: 'content', }), )); }, )); }), (i.prototype.loaded = function () { return this._loaded; }), (i.prototype.onAdd = function (t) { (this.map = t), this.load(); }), (i.prototype.onRemove = function () { this._tileJSONRequest && (this._tileJSONRequest.cancel(), (this._tileJSONRequest = null)); }), (i.prototype.serialize = function () { return t.extend({}, this._options); }), (i.prototype.hasTile = function (t) { return !this.tileBounds || this.tileBounds.contains(t.canonical); }), (i.prototype.loadTile = function (e, i) { var r = this, o = e.tileID.canonical.url( this.tiles, this.map.getPixelRatio(), this.scheme, ); e.request = t.getImage( this.map._requestManager.transformRequest(o, t.ResourceType.Tile), function (o, a, n) { if ((delete e.request, e.aborted)) (e.state = 'unloaded'), i(null); else if (o) (e.state = 'errored'), i(o); else if (a) { r.map._refreshExpiredTiles && e.setExpiryData(n); var s = r.map.painter.context, c = s.gl; (e.texture = r.map.painter.getTileTexture(a.width)), e.texture ? e.texture.update(a, { useMipmap: !0 }) : ((e.texture = new l(s, a, c.RGBA, { useMipmap: !0 })), e.texture.bind( c.LINEAR, c.CLAMP_TO_EDGE, c.LINEAR_MIPMAP_NEAREST, ), s.extTextureFilterAnisotropic && c.texParameterf( c.TEXTURE_2D, s.extTextureFilterAnisotropic .TEXTURE_MAX_ANISOTROPY_EXT, s.extTextureFilterAnisotropicMax, )), (e.state = 'loaded'), t.cacheEntryPossiblyAdded(r.dispatcher), i(null); } }, ); }), (i.prototype.abortTile = function (t, e) { t.request && (t.request.cancel(), delete t.request), e(); }), (i.prototype.unloadTile = function (t, e) { t.texture && this.map.painter.saveTileTexture(t.texture), e(); }), (i.prototype.hasTransition = function () { return !1; }), i ); })(t.Evented), S = (function (e) { function i(i, r, o, a) { e.call(this, i, r, o, a), (this.type = 'raster-dem'), (this.maxzoom = 22), (this._options = t.extend({ type: 'raster-dem' }, r)), (this.encoding = r.encoding || 'mapbox'); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.serialize = function () { return { type: 'raster-dem', url: this.url, tileSize: this.tileSize, tiles: this.tiles, bounds: this.bounds, encoding: this.encoding, }; }), (i.prototype.loadTile = function (e, i) { var r = e.tileID.canonical.url( this.tiles, this.map.getPixelRatio(), this.scheme, ); function o(t, r) { t && ((e.state = 'errored'), i(t)), r && ((e.dem = r), (e.needsHillshadePrepare = !0), (e.needsTerrainPrepare = !0), (e.state = 'loaded'), i(null)); } (e.request = t.getImage( this.map._requestManager.transformRequest(r, t.ResourceType.Tile), function (r, a) { if ((delete e.request, e.aborted)) (e.state = 'unloaded'), i(null); else if (r) (e.state = 'errored'), i(r); else if (a) { this.map._refreshExpiredTiles && e.setExpiryData(a), delete a.cacheControl, delete a.expires; var n = t.isImageBitmap(a) && (null == E && (E = 'undefined' != typeof OffscreenCanvas && new OffscreenCanvas(1, 1).getContext('2d') && 'function' == typeof createImageBitmap), E) ? a : t.exported.getImageData(a, 1), s = { uid: e.uid, coord: e.tileID, source: this.id, rawImageData: n, encoding: this.encoding, }; (e.actor && 'expired' !== e.state) || ((e.actor = this.dispatcher.getActor()), e.actor.send('loadDEMTile', s, o.bind(this))); } }.bind(this), )), (e.neighboringTiles = this._getNeighboringTiles(e.tileID)); }), (i.prototype._getNeighboringTiles = function (e) { var i = e.canonical, r = Math.pow(2, i.z), o = (i.x - 1 + r) % r, a = 0 === i.x ? e.wrap - 1 : e.wrap, n = (i.x + 1 + r) % r, s = i.x + 1 === r ? e.wrap + 1 : e.wrap, l = {}; return ( (l[new t.OverscaledTileID(e.overscaledZ, a, i.z, o, i.y).key] = { backfilled: !1, }), (l[new t.OverscaledTileID(e.overscaledZ, s, i.z, n, i.y).key] = { backfilled: !1, }), i.y > 0 && ((l[ new t.OverscaledTileID(e.overscaledZ, a, i.z, o, i.y - 1).key ] = { backfilled: !1 }), (l[ new t.OverscaledTileID( e.overscaledZ, e.wrap, i.z, i.x, i.y - 1, ).key ] = { backfilled: !1 }), (l[ new t.OverscaledTileID(e.overscaledZ, s, i.z, n, i.y - 1).key ] = { backfilled: !1 })), i.y + 1 < r && ((l[ new t.OverscaledTileID(e.overscaledZ, a, i.z, o, i.y + 1).key ] = { backfilled: !1 }), (l[ new t.OverscaledTileID( e.overscaledZ, e.wrap, i.z, i.x, i.y + 1, ).key ] = { backfilled: !1 }), (l[ new t.OverscaledTileID(e.overscaledZ, s, i.z, n, i.y + 1).key ] = { backfilled: !1 })), l ); }), (i.prototype.unloadTile = function (t) { t.demTexture && this.map.painter.saveTileTexture(t.demTexture), t.fbo && (t.fbo.destroy(), delete t.fbo), t.dem && delete t.dem, delete t.neighboringTiles, (t.state = 'unloaded'), t.actor && t.actor.send('removeDEMTile', { uid: t.uid, source: this.id }); }), i ); })(C), D = (function (e) { function i(i, r, o, a) { e.call(this), (this.id = i), (this.type = 'geojson'), (this.minzoom = 0), (this.maxzoom = 18), (this.tileSize = 512), (this.isTileClipped = !0), (this.reparseOverscaled = !0), (this._removed = !1), (this._pendingLoads = 0), (this.actor = o.getActor()), this.setEventedParent(a), (this._data = r.data), (this._options = t.extend({}, r)), (this._collectResourceTiming = r.collectResourceTiming), void 0 !== r.maxzoom && (this.maxzoom = r.maxzoom), r.type && (this.type = r.type), r.attribution && (this.attribution = r.attribution), (this.promoteId = r.promoteId); var n = t.EXTENT / this.tileSize; this.workerOptions = t.extend( { source: this.id, cluster: r.cluster || !1, geojsonVtOptions: { buffer: (void 0 !== r.buffer ? r.buffer : 128) * n, tolerance: (void 0 !== r.tolerance ? r.tolerance : 0.375) * n, extent: t.EXTENT, maxZoom: this.maxzoom, lineMetrics: r.lineMetrics || !1, generateId: r.generateId || !1, }, superclusterOptions: { maxZoom: void 0 !== r.clusterMaxZoom ? r.clusterMaxZoom : this.maxzoom - 1, minPoints: Math.max(2, r.clusterMinPoints || 2), extent: t.EXTENT, radius: (r.clusterRadius || 50) * n, log: !1, generateId: r.generateId || !1, }, clusterProperties: r.clusterProperties, filter: r.filter, }, r.workerOptions, ); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.load = function () { this._updateWorkerData('metadata'); }), (i.prototype.onAdd = function (t) { (this.map = t), this.load(); }), (i.prototype.setData = function (t) { return (this._data = t), this._updateWorkerData('content'), this; }), (i.prototype.getClusterExpansionZoom = function (t, e) { return ( this.actor.send( 'geojson.getClusterExpansionZoom', { clusterId: t, source: this.id }, e, ), this ); }), (i.prototype.getClusterChildren = function (t, e) { return ( this.actor.send( 'geojson.getClusterChildren', { clusterId: t, source: this.id }, e, ), this ); }), (i.prototype.getClusterLeaves = function (t, e, i, r) { return ( this.actor.send( 'geojson.getClusterLeaves', { source: this.id, clusterId: t, limit: e, offset: i }, r, ), this ); }), (i.prototype._updateWorkerData = function (e) { var i = this, r = t.extend({}, this.workerOptions), o = this._data; 'string' == typeof o ? ((r.request = this.map._requestManager.transformRequest( t.exported.resolveURL(o), t.ResourceType.Source, )), (r.request.collectResourceTiming = this._collectResourceTiming)) : (r.data = JSON.stringify(o)), this._pendingLoads++, this.fire(new t.Event('dataloading', { dataType: 'source' })), this.actor.send(this.type + '.loadData', r, function (r, o) { if ((i._pendingLoads--, i._removed || (o && o.abandoned))) i.fire( new t.Event('dataabort', { dataType: 'source', sourceDataType: e, }), ); else { var a = null; if ( (o && o.resourceTiming && o.resourceTiming[i.id] && (a = o.resourceTiming[i.id].slice(0)), r) ) i.fire(new t.ErrorEvent(r)); else { var n = { dataType: 'source', sourceDataType: e }; i._collectResourceTiming && a && a.length > 0 && t.extend(n, { resourceTiming: a }), i.fire(new t.Event('data', n)); } } }); }), (i.prototype.loaded = function () { return 0 === this._pendingLoads; }), (i.prototype.loadTile = function (t, e) { var i = this, r = t.actor ? 'reloadTile' : 'loadTile'; t.actor = this.actor; var o = { type: this.type, uid: t.uid, tileID: t.tileID, zoom: t.tileID.overscaledZ, maxZoom: this.maxzoom, tileSize: this.tileSize, source: this.id, pixelRatio: this.map.getPixelRatio(), showCollisionBoxes: this.map.showCollisionBoxes, promoteId: this.promoteId, }; t.request = this.actor.send(r, o, function (o, a) { return ( delete t.request, t.unloadVectorData(), t.aborted ? e(null) : o ? e(o) : (t.loadVectorData(a, i.map.painter, 'reloadTile' === r), e(null)) ); }); }), (i.prototype.abortTile = function (t) { t.request && (t.request.cancel(), delete t.request), (t.aborted = !0); }), (i.prototype.unloadTile = function (t) { t.unloadVectorData(), this.actor.send('removeTile', { uid: t.uid, type: this.type, source: this.id, }); }), (i.prototype.onRemove = function () { (this._removed = !0), this.actor.send('removeSource', { type: this.type, source: this.id, }); }), (i.prototype.serialize = function () { return t.extend({}, this._options, { type: this.type, data: this._data, }); }), (i.prototype.hasTransition = function () { return !1; }), i ); })(t.Evented), z = t.createLayout([ { name: 'a_pos', type: 'Int16', components: 2 }, { name: 'a_texture_pos', type: 'Int16', components: 2 }, ]), P = (function (e) { function i(t, i, r, o) { e.call(this), (this.id = t), (this.dispatcher = r), (this.coordinates = i.coordinates), (this.type = 'image'), (this.minzoom = 0), (this.maxzoom = 22), (this.tileSize = 512), (this.tiles = {}), (this._loaded = !1), this.setEventedParent(o), (this.options = i); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.load = function (e, i) { var r = this; (this._loaded = !1), this.fire(new t.Event('dataloading', { dataType: 'source' })), (this.url = this.options.url), t.getImage( this.map._requestManager.transformRequest( this.url, t.ResourceType.Image, ), function (o, a) { (r._loaded = !0), o ? r.fire(new t.ErrorEvent(o)) : a && ((r.image = a), e && (r.coordinates = e), i && i(), r._finishLoading()); }, ); }), (i.prototype.loaded = function () { return this._loaded; }), (i.prototype.updateImage = function (t) { var e = this; return this.image && t.url ? ((this.options.url = t.url), this.load(t.coordinates, function () { e.texture = null; }), this) : this; }), (i.prototype._finishLoading = function () { this.map && (this.setCoordinates(this.coordinates), this.fire( new t.Event('data', { dataType: 'source', sourceDataType: 'metadata', }), )); }), (i.prototype.onAdd = function (t) { (this.map = t), this.load(); }), (i.prototype.setCoordinates = function (e) { var i = this; this.coordinates = e; var r = e.map(t.MercatorCoordinate.fromLngLat); (this.tileID = (function (e) { for ( var i = 1 / 0, r = 1 / 0, o = -1 / 0, a = -1 / 0, n = 0, s = e; n < s.length; n += 1 ) { var l = s[n]; (i = Math.min(i, l.x)), (r = Math.min(r, l.y)), (o = Math.max(o, l.x)), (a = Math.max(a, l.y)); } var c = Math.max(o - i, a - r), h = Math.max(0, Math.floor(-Math.log(c) / Math.LN2)), u = Math.pow(2, h); return new t.CanonicalTileID( h, Math.floor(((i + o) / 2) * u), Math.floor(((r + a) / 2) * u), ); })(r)), (this.minzoom = this.maxzoom = this.tileID.z); var o = r.map(function (t) { return i.tileID.getTilePoint(t)._round(); }); return ( (this._boundsArray = new t.RasterBoundsArray()), this._boundsArray.emplaceBack(o[0].x, o[0].y, 0, 0), this._boundsArray.emplaceBack(o[1].x, o[1].y, t.EXTENT, 0), this._boundsArray.emplaceBack(o[3].x, o[3].y, 0, t.EXTENT), this._boundsArray.emplaceBack(o[2].x, o[2].y, t.EXTENT, t.EXTENT), this.boundsBuffer && (this.boundsBuffer.destroy(), delete this.boundsBuffer), this.fire( new t.Event('data', { dataType: 'source', sourceDataType: 'content', }), ), this ); }), (i.prototype.prepare = function () { if (0 !== Object.keys(this.tiles).length && this.image) { var e = this.map.painter.context, i = e.gl; for (var r in (this.boundsBuffer || (this.boundsBuffer = e.createVertexBuffer( this._boundsArray, z.members, )), this.boundsSegments || (this.boundsSegments = t.SegmentVector.simpleSegment( 0, 0, 4, 2, )), this.texture || ((this.texture = new l(e, this.image, i.RGBA)), this.texture.bind(i.LINEAR, i.CLAMP_TO_EDGE)), this.tiles)) { var o = this.tiles[r]; 'loaded' !== o.state && ((o.state = 'loaded'), (o.texture = this.texture)); } } }), (i.prototype.loadTile = function (t, e) { this.tileID && this.tileID.equals(t.tileID.canonical) ? ((this.tiles[String(t.tileID.wrap)] = t), (t.buckets = {}), e(null)) : ((t.state = 'errored'), e(null)); }), (i.prototype.serialize = function () { return { type: 'image', url: this.options.url, coordinates: this.coordinates, }; }), (i.prototype.hasTransition = function () { return !1; }), i ); })(t.Evented), M = (function (e) { function i(t, i, r, o) { e.call(this, t, i, r, o), (this.roundZoom = !0), (this.type = 'video'), (this.options = i); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.load = function () { var e = this; this._loaded = !1; var i = this.options; this.urls = []; for (var r = 0, o = i.urls; r < o.length; r += 1) this.urls.push( this.map._requestManager.transformRequest( o[r], t.ResourceType.Source, ).url, ); t.getVideo(this.urls, function (i, r) { (e._loaded = !0), i ? e.fire(new t.ErrorEvent(i)) : r && ((e.video = r), (e.video.loop = !0), e.video.addEventListener('playing', function () { e.map.triggerRepaint(); }), e.map && e.video.play(), e._finishLoading()); }); }), (i.prototype.pause = function () { this.video && this.video.pause(); }), (i.prototype.play = function () { this.video && this.video.play(); }), (i.prototype.seek = function (e) { if (this.video) { var i = this.video.seekable; e < i.start(0) || e > i.end(0) ? this.fire( new t.ErrorEvent( new t.ValidationError( 'sources.' + this.id, null, 'Playback for this video can be set only between the ' + i.start(0) + ' and ' + i.end(0) + '-second mark.', ), ), ) : (this.video.currentTime = e); } }), (i.prototype.getVideo = function () { return this.video; }), (i.prototype.onAdd = function (t) { this.map || ((this.map = t), this.load(), this.video && (this.video.play(), this.setCoordinates(this.coordinates))); }), (i.prototype.prepare = function () { if ( !( 0 === Object.keys(this.tiles).length || this.video.readyState < 2 ) ) { var e = this.map.painter.context, i = e.gl; for (var r in (this.boundsBuffer || (this.boundsBuffer = e.createVertexBuffer( this._boundsArray, z.members, )), this.boundsSegments || (this.boundsSegments = t.SegmentVector.simpleSegment( 0, 0, 4, 2, )), this.texture ? this.video.paused || (this.texture.bind(i.LINEAR, i.CLAMP_TO_EDGE), i.texSubImage2D( i.TEXTURE_2D, 0, 0, 0, i.RGBA, i.UNSIGNED_BYTE, this.video, )) : ((this.texture = new l(e, this.video, i.RGBA)), this.texture.bind(i.LINEAR, i.CLAMP_TO_EDGE)), this.tiles)) { var o = this.tiles[r]; 'loaded' !== o.state && ((o.state = 'loaded'), (o.texture = this.texture)); } } }), (i.prototype.serialize = function () { return { type: 'video', urls: this.urls, coordinates: this.coordinates, }; }), (i.prototype.hasTransition = function () { return this.video && !this.video.paused; }), i ); })(P), A = (function (e) { function i(i, r, o, a) { e.call(this, i, r, o, a), r.coordinates ? (Array.isArray(r.coordinates) && 4 === r.coordinates.length && !r.coordinates.some(function (t) { return ( !Array.isArray(t) || 2 !== t.length || t.some(function (t) { return 'number' != typeof t; }) ); })) || this.fire( new t.ErrorEvent( new t.ValidationError( 'sources.' + i, null, '"coordinates" property must be an array of 4 longitude/latitude array pairs', ), ), ) : this.fire( new t.ErrorEvent( new t.ValidationError( 'sources.' + i, null, 'missing required property "coordinates"', ), ), ), r.animate && 'boolean' != typeof r.animate && this.fire( new t.ErrorEvent( new t.ValidationError( 'sources.' + i, null, 'optional "animate" property must be a boolean value', ), ), ), r.canvas ? 'string' == typeof r.canvas || r.canvas instanceof HTMLCanvasElement || this.fire( new t.ErrorEvent( new t.ValidationError( 'sources.' + i, 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 t.ErrorEvent( new t.ValidationError( 'sources.' + i, null, 'missing required property "canvas"', ), ), ), (this.options = r), (this.animate = void 0 === r.animate || r.animate); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.load = function () { (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 t.ErrorEvent( 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()); }), (i.prototype.getCanvas = function () { return this.canvas; }), (i.prototype.onAdd = function (t) { (this.map = t), this.load(), this.canvas && this.animate && this.play(); }), (i.prototype.onRemove = function () { this.pause(); }), (i.prototype.prepare = function () { var e = !1; if ( (this.canvas.width !== this.width && ((this.width = this.canvas.width), (e = !0)), this.canvas.height !== this.height && ((this.height = this.canvas.height), (e = !0)), !this._hasInvalidDimensions() && 0 !== Object.keys(this.tiles).length) ) { var i = this.map.painter.context, r = i.gl; for (var o in (this.boundsBuffer || (this.boundsBuffer = i.createVertexBuffer( this._boundsArray, z.members, )), this.boundsSegments || (this.boundsSegments = t.SegmentVector.simpleSegment( 0, 0, 4, 2, )), this.texture ? (e || this._playing) && this.texture.update(this.canvas, { premultiply: !0 }) : (this.texture = new l(i, this.canvas, r.RGBA, { premultiply: !0, })), this.tiles)) { var a = this.tiles[o]; 'loaded' !== a.state && ((a.state = 'loaded'), (a.texture = this.texture)); } } }), (i.prototype.serialize = function () { return { type: 'canvas', coordinates: this.coordinates }; }), (i.prototype.hasTransition = function () { return this._playing; }), (i.prototype._hasInvalidDimensions = function () { for ( var t = 0, e = [this.canvas.width, this.canvas.height]; t < e.length; t += 1 ) { var i = e[t]; if (isNaN(i) || i <= 0) return !0; } return !1; }), i ); })(P), R = { vector: I, raster: C, 'raster-dem': S, geojson: D, video: M, image: P, canvas: A, }; function L(e, i) { var r = t.create(); return ( t.translate(r, r, [1, 1, 0]), t.scale(r, r, [0.5 * e.width, 0.5 * e.height, 1]), t.multiply(r, r, e.calculatePosMatrix(i.toUnwrapped())) ); } function k(t, e, i, r, o, a) { var n = (function (t, e, i) { if (t) for (var r = 0, o = t; r < o.length; r += 1) { var a = e[o[r]]; if (a && a.source === i && 'fill-extrusion' === a.type) return !0; } else for (var n in e) { var s = e[n]; if (s.source === i && 'fill-extrusion' === s.type) return !0; } return !1; })(o && o.layers, e, t.id), s = a.maxPitchScaleFactor(), l = t.tilesIn(r, s, n); l.sort(B); for (var c = [], h = 0, u = l; h < u.length; h += 1) { var p = u[h]; c.push({ wrappedTileID: p.tileID.wrapped().key, queryResults: p.tile.queryRenderedFeatures( e, i, t._state, p.queryGeometry, p.cameraQueryGeometry, p.scale, o, a, s, L(t.transform, p.tileID), ), }); } var d = (function (t) { for (var e = {}, i = {}, r = 0, o = t; r < o.length; r += 1) { var a = o[r], n = a.queryResults, s = a.wrappedTileID, l = (i[s] = i[s] || {}); for (var c in n) for ( var h = n[c], u = (l[c] = l[c] || {}), p = (e[c] = e[c] || []), d = 0, _ = h; d < _.length; d += 1 ) { var f = _[d]; u[f.featureIndex] || ((u[f.featureIndex] = !0), p.push(f)); } } return e; })(c); for (var _ in d) d[_].forEach(function (e) { var i = e.feature, r = t.getFeatureState(i.layer['source-layer'], i.id); (i.source = i.layer.source), i.layer['source-layer'] && (i.sourceLayer = i.layer['source-layer']), (i.state = r); }); return d; } function B(t, e) { var i = t.tileID, r = e.tileID; return ( i.overscaledZ - r.overscaledZ || i.canonical.y - r.canonical.y || i.wrap - r.wrap || i.canonical.x - r.canonical.x ); } var O = function (e, i) { (this.tileID = e), (this.uid = t.uniqueId()), (this.uses = 0), (this.tileSize = i), (this.buckets = {}), (this.expirationTime = null), (this.queryPadding = 0), (this.hasSymbolBuckets = !1), (this.hasRTLText = !1), (this.dependencies = {}), (this.textures = []), (this.textureCoords = {}), (this.expiredRequestCount = 0), (this.state = 'loading'); }; (O.prototype.registerFadeDuration = function (e) { var i = e + this.timeAdded; i < t.exported.now() || (this.fadeEndTime && i < this.fadeEndTime) || (this.fadeEndTime = i); }), (O.prototype.wasRequested = function () { return ( 'errored' === this.state || 'loaded' === this.state || 'reloading' === this.state ); }), (O.prototype.clearTextures = function (t) { this.demTexture && t.saveTileTexture(this.demTexture), this.textures.forEach(function (e) { return t.saveTileTexture(e); }), (this.demTexture = null), (this.textures = []), (this.textureCoords = {}); }), (O.prototype.loadVectorData = function (e, i, r) { if ( (this.hasData() && this.unloadVectorData(), (this.state = 'loaded'), e) ) { for (var o in (e.featureIndex && ((this.latestFeatureIndex = e.featureIndex), e.rawTileData ? ((this.latestRawTileData = e.rawTileData), (this.latestFeatureIndex.rawTileData = e.rawTileData)) : this.latestRawTileData && (this.latestFeatureIndex.rawTileData = this.latestRawTileData)), (this.collisionBoxArray = e.collisionBoxArray), (this.buckets = (function (t, e) { var i = {}; if (!e) return i; for ( var r = function () { var t = a[o], r = t.layerIds .map(function (t) { return e.getLayer(t); }) .filter(Boolean); if (0 !== r.length) { (t.layers = r), t.stateDependentLayerIds && (t.stateDependentLayers = t.stateDependentLayerIds.map( function (t) { return r.filter(function (e) { return e.id === t; })[0]; }, )); for (var n = 0, s = r; n < s.length; n += 1) i[s[n].id] = t; } }, o = 0, a = t; o < a.length; o += 1 ) r(); return i; })(e.buckets, i.style)), (this.hasSymbolBuckets = !1), this.buckets)) { var a = this.buckets[o]; if (a instanceof t.SymbolBucket) { if (((this.hasSymbolBuckets = !0), !r)) break; a.justReloaded = !0; } } if (((this.hasRTLText = !1), this.hasSymbolBuckets)) for (var n in this.buckets) { var s = this.buckets[n]; if (s instanceof t.SymbolBucket && s.hasRTLText) { (this.hasRTLText = !0), t.lazyLoadRTLTextPlugin(); break; } } for (var l in ((this.queryPadding = 0), this.buckets)) { var c = this.buckets[l]; this.queryPadding = Math.max( this.queryPadding, i.style.getLayer(l).queryRadius(c), ); } e.imageAtlas && (this.imageAtlas = e.imageAtlas), e.glyphAtlasImage && (this.glyphAtlasImage = e.glyphAtlasImage); } else this.collisionBoxArray = new t.CollisionBoxArray(); }), (O.prototype.unloadVectorData = function () { for (var t in this.buckets) this.buckets[t].destroy(); (this.buckets = {}), this.imageAtlasTexture && this.imageAtlasTexture.destroy(), this.imageAtlas && (this.imageAtlas = null), this.glyphAtlasTexture && this.glyphAtlasTexture.destroy(), (this.latestFeatureIndex = null), (this.state = 'unloaded'); }), (O.prototype.getBucket = function (t) { return this.buckets[t.id]; }), (O.prototype.upload = function (t) { for (var e in this.buckets) { var i = this.buckets[e]; i.uploadPending() && i.upload(t); } var r = t.gl; this.imageAtlas && !this.imageAtlas.uploaded && ((this.imageAtlasTexture = new l(t, this.imageAtlas.image, r.RGBA)), (this.imageAtlas.uploaded = !0)), this.glyphAtlasImage && ((this.glyphAtlasTexture = new l(t, this.glyphAtlasImage, r.ALPHA)), (this.glyphAtlasImage = null)); }), (O.prototype.prepare = function (t) { this.imageAtlas && this.imageAtlas.patchUpdatedImages(t, this.imageAtlasTexture); }), (O.prototype.queryRenderedFeatures = function ( t, e, i, r, o, a, n, s, l, c, ) { return this.latestFeatureIndex && this.latestFeatureIndex.rawTileData ? this.latestFeatureIndex.query( { queryGeometry: r, cameraQueryGeometry: o, scale: a, tileSize: this.tileSize, pixelPosMatrix: c, transform: s, params: n, queryPadding: this.queryPadding * l, }, t, e, i, ) : {}; }), (O.prototype.querySourceFeatures = function (e, i) { var r = this.latestFeatureIndex; if (r && r.rawTileData) { var o = r.loadVTLayers(), a = i ? i.sourceLayer : '', n = o._geojsonTileLayer || o[a]; if (n) for ( var s = t.createFilter(i && i.filter), l = this.tileID.canonical, c = l.z, h = l.x, u = l.y, p = { z: c, x: h, y: u }, d = 0; d < n.length; d++ ) { var _ = n.feature(d); if (s.needGeometry) { var f = t.toEvaluationFeature(_, !0); if ( !s.filter( new t.EvaluationParameters(this.tileID.overscaledZ), f, this.tileID.canonical, ) ) continue; } else if ( !s.filter( new t.EvaluationParameters(this.tileID.overscaledZ), _, ) ) continue; var m = r.getId(_, a), g = new t.GeoJSONFeature(_, c, h, u, m); (g.tile = p), e.push(g); } } }), (O.prototype.hasData = function () { return ( 'loaded' === this.state || 'reloading' === this.state || 'expired' === this.state ); }), (O.prototype.patternsLoaded = function () { return ( this.imageAtlas && !!Object.keys(this.imageAtlas.patternPositions).length ); }), (O.prototype.setExpiryData = function (e) { var i = this.expirationTime; if (e.cacheControl) { var r = t.parseCacheControl(e.cacheControl); r['max-age'] && (this.expirationTime = Date.now() + 1e3 * r['max-age']); } else e.expires && (this.expirationTime = new Date(e.expires).getTime()); if (this.expirationTime) { var o = Date.now(), a = !1; if (this.expirationTime > o) a = !1; else if (i) if (this.expirationTime < i) a = !0; else { var n = this.expirationTime - i; n ? (this.expirationTime = o + Math.max(n, 3e4)) : (a = !0); } else a = !0; a ? (this.expiredRequestCount++, (this.state = 'expired')) : (this.expiredRequestCount = 0); } }), (O.prototype.getExpiryTimeout = function () { 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, ); }), (O.prototype.setFeatureState = function (t, e) { if ( this.latestFeatureIndex && this.latestFeatureIndex.rawTileData && 0 !== Object.keys(t).length ) { var i = this.latestFeatureIndex.loadVTLayers(); for (var r in this.buckets) if (e.style.hasLayer(r)) { var o = this.buckets[r], a = o.layers[0].sourceLayer || '_geojsonTileLayer', n = i[a], s = t[a]; if (n && s && 0 !== Object.keys(s).length) { o.update( s, n, (this.imageAtlas && this.imageAtlas.patternPositions) || {}, ); var l = e && e.style && e.style.getLayer(r); l && (this.queryPadding = Math.max( this.queryPadding, l.queryRadius(o), )); } } } }), (O.prototype.holdingForFade = function () { return void 0 !== this.symbolFadeHoldUntil; }), (O.prototype.symbolFadeFinished = function () { return ( !this.symbolFadeHoldUntil || this.symbolFadeHoldUntil < t.exported.now() ); }), (O.prototype.clearFadeHold = function () { this.symbolFadeHoldUntil = void 0; }), (O.prototype.setHoldDuration = function (e) { this.symbolFadeHoldUntil = t.exported.now() + e; }), (O.prototype.setDependencies = function (t, e) { for (var i = {}, r = 0, o = e; r < o.length; r += 1) i[o[r]] = !0; this.dependencies[t] = i; }), (O.prototype.hasDependency = function (t, e) { for (var i = 0, r = t; i < r.length; i += 1) { var o = this.dependencies[r[i]]; if (o) for (var a = 0, n = e; a < n.length; a += 1) if (o[n[a]]) return !0; } return !1; }); var F = function (t, e) { (this.max = t), (this.onRemove = e), this.reset(); }; (F.prototype.reset = function () { for (var t in this.data) for (var e = 0, i = this.data[t]; e < i.length; e += 1) { var r = i[e]; r.timeout && clearTimeout(r.timeout), this.onRemove(r.value); } return (this.data = {}), (this.order = []), this; }), (F.prototype.add = function (t, e, i) { var r = this, o = t.wrapped().key; void 0 === this.data[o] && (this.data[o] = []); var a = { value: e, timeout: void 0 }; if ( (void 0 !== i && (a.timeout = setTimeout(function () { r.remove(t, a); }, i)), this.data[o].push(a), this.order.push(o), this.order.length > this.max) ) { var n = this._getAndRemoveByKey(this.order[0]); n && this.onRemove(n); } return this; }), (F.prototype.has = function (t) { return t.wrapped().key in this.data; }), (F.prototype.getAndRemove = function (t) { return this.has(t) ? this._getAndRemoveByKey(t.wrapped().key) : null; }), (F.prototype._getAndRemoveByKey = function (t) { var e = this.data[t].shift(); return ( e.timeout && clearTimeout(e.timeout), 0 === this.data[t].length && delete this.data[t], this.order.splice(this.order.indexOf(t), 1), e.value ); }), (F.prototype.getByKey = function (t) { var e = this.data[t]; return e ? e[0].value : null; }), (F.prototype.get = function (t) { return this.has(t) ? this.data[t.wrapped().key][0].value : null; }), (F.prototype.remove = function (t, e) { if (!this.has(t)) return this; var i = t.wrapped().key, r = void 0 === e ? 0 : this.data[i].indexOf(e), o = this.data[i][r]; return ( this.data[i].splice(r, 1), o.timeout && clearTimeout(o.timeout), 0 === this.data[i].length && delete this.data[i], this.onRemove(o.value), this.order.splice(this.order.indexOf(i), 1), this ); }), (F.prototype.setMaxSize = function (t) { for (this.max = t; this.order.length > this.max; ) { var e = this._getAndRemoveByKey(this.order[0]); e && this.onRemove(e); } return this; }), (F.prototype.filter = function (t) { var e = []; for (var i in this.data) for (var r = 0, o = this.data[i]; r < o.length; r += 1) { var a = o[r]; t(a.value) || e.push(a); } for (var n = 0, s = e; n < s.length; n += 1) { var l = s[n]; this.remove(l.value.tileID, l); } }); var U = function () { (this.state = {}), (this.stateChanges = {}), (this.deletedStates = {}); }; (U.prototype.updateState = function (e, i, r) { var o = String(i); if ( ((this.stateChanges[e] = this.stateChanges[e] || {}), (this.stateChanges[e][o] = this.stateChanges[e][o] || {}), t.extend(this.stateChanges[e][o], r), null === this.deletedStates[e]) ) for (var a in ((this.deletedStates[e] = {}), this.state[e])) a !== o && (this.deletedStates[e][a] = null); else if (this.deletedStates[e] && null === this.deletedStates[e][o]) for (var n in ((this.deletedStates[e][o] = {}), this.state[e][o])) r[n] || (this.deletedStates[e][o][n] = null); else for (var s in r) this.deletedStates[e] && this.deletedStates[e][o] && null === this.deletedStates[e][o][s] && delete this.deletedStates[e][o][s]; }), (U.prototype.removeFeatureState = function (t, e, i) { if (null !== this.deletedStates[t]) { var r = String(e); if ( ((this.deletedStates[t] = this.deletedStates[t] || {}), i && void 0 !== e) ) null !== this.deletedStates[t][r] && ((this.deletedStates[t][r] = this.deletedStates[t][r] || {}), (this.deletedStates[t][r][i] = null)); else if (void 0 !== e) if (this.stateChanges[t] && this.stateChanges[t][r]) for (i in ((this.deletedStates[t][r] = {}), this.stateChanges[t][r])) this.deletedStates[t][r][i] = null; else this.deletedStates[t][r] = null; else this.deletedStates[t] = null; } }), (U.prototype.getState = function (e, i) { var r = String(i), o = t.extend( {}, (this.state[e] || {})[r], (this.stateChanges[e] || {})[r], ); if (null === this.deletedStates[e]) return {}; if (this.deletedStates[e]) { var a = this.deletedStates[e][i]; if (null === a) return {}; for (var n in a) delete o[n]; } return o; }), (U.prototype.initializeTileState = function (t, e) { t.setFeatureState(this.state, e); }), (U.prototype.coalesceChanges = function (e, i) { var r = {}; for (var o in this.stateChanges) { this.state[o] = this.state[o] || {}; var a = {}; for (var n in this.stateChanges[o]) this.state[o][n] || (this.state[o][n] = {}), t.extend(this.state[o][n], this.stateChanges[o][n]), (a[n] = this.state[o][n]); r[o] = a; } for (var s in this.deletedStates) { this.state[s] = this.state[s] || {}; var l = {}; if (null === this.deletedStates[s]) for (var c in this.state[s]) (l[c] = {}), (this.state[s][c] = {}); else for (var h in this.deletedStates[s]) { if (null === this.deletedStates[s][h]) this.state[s][h] = {}; else for ( var u = 0, p = Object.keys(this.deletedStates[s][h]); u < p.length; u += 1 ) delete this.state[s][h][p[u]]; l[h] = this.state[s][h]; } (r[s] = r[s] || {}), t.extend(r[s], l); } if ( ((this.stateChanges = {}), (this.deletedStates = {}), 0 !== Object.keys(r).length) ) for (var d in e) e[d].setFeatureState(r, i); }); var N = (function (e) { function i(i, r, o) { var a = this; e.call(this), (this.id = i), (this.dispatcher = o), this.on('data', function (t) { 'source' === t.dataType && 'metadata' === t.sourceDataType && (a._sourceLoaded = !0), a._sourceLoaded && !a._paused && 'source' === t.dataType && 'content' === t.sourceDataType && (a.reload(), a.transform && a.update(a.transform, a.terrain)); }), this.on('dataloading', function () { a._sourceErrored = !1; }), this.on('error', function () { a._sourceErrored = a._source.loaded(); }), (this._source = (function (e, i, r, o) { var a = new R[i.type](e, i, r, o); if (a.id !== e) throw new Error( 'Expected Source id to be ' + e + ' instead of ' + a.id, ); return ( t.bindAll(['load', 'abort', 'unload', 'serialize', 'prepare'], a), a ); })(i, r, o, this)), (this._tiles = {}), (this._cache = new F(0, this._unloadTile.bind(this))), (this._timers = {}), (this._cacheTimers = {}), (this._maxTileCacheSize = null), (this._loadedParentTiles = {}), (this._coveredTiles = {}), (this._state = new U()); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.onAdd = function (t) { (this.map = t), (this._maxTileCacheSize = t ? t._maxTileCacheSize : null), this._source && this._source.onAdd && this._source.onAdd(t); }), (i.prototype.onRemove = function (t) { this.clearTiles(), this._source && this._source.onRemove && this._source.onRemove(t); }), (i.prototype.loaded = function () { if (this._sourceErrored) return !0; if (!this._sourceLoaded) return !1; if (!this._source.loaded()) return !1; for (var t in this._tiles) { var e = this._tiles[t]; if ('loaded' !== e.state && 'errored' !== e.state) return !1; } return !0; }), (i.prototype.getSource = function () { return this._source; }), (i.prototype.pause = function () { this._paused = !0; }), (i.prototype.resume = function () { if (this._paused) { var t = this._shouldReloadOnResume; (this._paused = !1), (this._shouldReloadOnResume = !1), t && this.reload(), this.transform && this.update(this.transform, this.terrain); } }), (i.prototype._loadTile = function (t, e) { return this._source.loadTile(t, e); }), (i.prototype._unloadTile = function (t) { if (this._source.unloadTile) return this._source.unloadTile(t, function () {}); }), (i.prototype._abortTile = function (e) { this._source.abortTile && this._source.abortTile(e, function () {}), this._source.fire( new t.Event('dataabort', { tile: e, coord: e.tileID, dataType: 'source', }), ); }), (i.prototype.serialize = function () { return this._source.serialize(); }), (i.prototype.prepare = function (t) { for (var e in (this._source.prepare && this._source.prepare(), this._state.coalesceChanges( this._tiles, this.map ? this.map.painter : null, ), this._tiles)) { var i = this._tiles[e]; i.upload(t), i.prepare(this.map.style.imageManager); } }), (i.prototype.getIds = function () { return t .values(this._tiles) .map(function (t) { return t.tileID; }) .sort(G) .map(function (t) { return t.key; }); }), (i.prototype.getRenderableIds = function (e) { var i = this, r = []; for (var o in this._tiles) this._isIdRenderable(o, e) && r.push(this._tiles[o]); return e ? r .sort(function (e, r) { var o = e.tileID, a = r.tileID, n = new t.pointGeometry( o.canonical.x, o.canonical.y, )._rotate(i.transform.angle), s = new t.pointGeometry( a.canonical.x, a.canonical.y, )._rotate(i.transform.angle); return ( o.overscaledZ - a.overscaledZ || s.y - n.y || s.x - n.x ); }) .map(function (t) { return t.tileID.key; }) : r .map(function (t) { return t.tileID; }) .sort(G) .map(function (t) { return t.key; }); }), (i.prototype.hasRenderableParent = function (t) { var e = this.findLoadedParent(t, 0); return !!e && this._isIdRenderable(e.tileID.key); }), (i.prototype._isIdRenderable = function (t, e) { return ( this._tiles[t] && this._tiles[t].hasData() && !this._coveredTiles[t] && (e || !this._tiles[t].holdingForFade()) ); }), (i.prototype.reload = function () { if (this._paused) this._shouldReloadOnResume = !0; else for (var t in (this._cache.reset(), this._tiles)) 'errored' !== this._tiles[t].state && this._reloadTile(t, 'reloading'); }), (i.prototype._reloadTile = function (t, e) { var i = this._tiles[t]; i && ('loading' !== i.state && (i.state = e), this._loadTile(i, this._tileLoaded.bind(this, i, t, e))); }), (i.prototype._tileLoaded = function (e, i, r, o) { if (o) return ( (e.state = 'errored'), void (404 !== o.status ? this._source.fire(new t.ErrorEvent(o, { tile: e })) : this.update(this.transform, this.terrain)) ); (e.timeAdded = t.exported.now()), 'expired' === r && (e.refreshedUponExpiration = !0), this._setTileReloadTimer(i, e), 'raster-dem' === this.getSource().type && e.dem && this._backfillDEM(e), this._state.initializeTileState( e, this.map ? this.map.painter : null, ), e.aborted || this._source.fire( new t.Event('data', { dataType: 'source', tile: e, coord: e.tileID, }), ); }), (i.prototype._backfillDEM = function (t) { for (var e = this.getRenderableIds(), i = 0; i < e.length; i++) { var r = e[i]; if (t.neighboringTiles && t.neighboringTiles[r]) { var o = this.getTileByID(r); a(t, o), a(o, t); } } function a(t, e) { (t.needsHillshadePrepare = !0), (t.needsTerrainPrepare = !0); var i = e.tileID.canonical.x - t.tileID.canonical.x, r = e.tileID.canonical.y - t.tileID.canonical.y, o = Math.pow(2, t.tileID.canonical.z), a = e.tileID.key; (0 === i && 0 === r) || Math.abs(r) > 1 || (Math.abs(i) > 1 && (1 === Math.abs(i + o) ? (i += o) : 1 === Math.abs(i - o) && (i -= o)), e.dem && t.dem && (t.dem.backfillBorder(e.dem, i, r), t.neighboringTiles && t.neighboringTiles[a] && (t.neighboringTiles[a].backfilled = !0))); } }), (i.prototype.getTile = function (t) { return this.getTileByID(t.key); }), (i.prototype.getTileByID = function (t) { return this._tiles[t]; }), (i.prototype._retainLoadedChildren = function (t, e, i, r) { for (var o in this._tiles) { var a = this._tiles[o]; if ( !( r[o] || !a.hasData() || a.tileID.overscaledZ <= e || a.tileID.overscaledZ > i ) ) { for (var n = a.tileID; a && a.tileID.overscaledZ > e + 1; ) { var s = a.tileID.scaledTo(a.tileID.overscaledZ - 1); (a = this._tiles[s.key]) && a.hasData() && (n = s); } for (var l = n; l.overscaledZ > e; ) if (t[(l = l.scaledTo(l.overscaledZ - 1)).key]) { r[n.key] = n; break; } } } }), (i.prototype.findLoadedParent = function (t, e) { if (t.key in this._loadedParentTiles) { var i = this._loadedParentTiles[t.key]; return i && i.tileID.overscaledZ >= e ? i : null; } for (var r = t.overscaledZ - 1; r >= e; r--) { var o = t.scaledTo(r), a = this._getLoadedTile(o); if (a) return a; } }), (i.prototype._getLoadedTile = function (t) { var e = this._tiles[t.key]; return e && e.hasData() ? e : this._cache.getByKey(t.wrapped().key); }), (i.prototype.updateCacheSize = function (t) { var e = Math.ceil(t.width / this._source.tileSize) + 1, i = Math.ceil(t.height / this._source.tileSize) + 1, r = Math.floor(e * i * 5), o = 'number' == typeof this._maxTileCacheSize ? Math.min(this._maxTileCacheSize, r) : r; this._cache.setMaxSize(o); }), (i.prototype.handleWrapJump = function (t) { var e = Math.round( (t - (void 0 === this._prevLng ? t : this._prevLng)) / 360, ); if (((this._prevLng = t), e)) { var i = {}; for (var r in this._tiles) { var o = this._tiles[r]; (o.tileID = o.tileID.unwrapTo(o.tileID.wrap + e)), (i[o.tileID.key] = o); } for (var a in ((this._tiles = i), this._timers)) clearTimeout(this._timers[a]), delete this._timers[a]; for (var n in this._tiles) this._setTileReloadTimer(n, this._tiles[n]); } }), (i.prototype.update = function (e, r) { var o = this; if ( ((this.transform = e), (this.terrain = r), this._sourceLoaded && !this._paused) ) { var a; this.updateCacheSize(e), this.handleWrapJump(this.transform.center.lng), (this._coveredTiles = {}), this.used || this.usedForTerrain ? this._source.tileID ? (a = e .getVisibleUnwrappedCoordinates(this._source.tileID) .map(function (e) { return new t.OverscaledTileID( e.canonical.z, e.wrap, e.canonical.z, e.canonical.x, e.canonical.y, ); })) : ((a = e.coveringTiles({ tileSize: this.usedForTerrain ? this.tileSize : this._source.tileSize, minzoom: this._source.minzoom, maxzoom: this._source.maxzoom, roundZoom: !this.usedForTerrain && this._source.roundZoom, reparseOverscaled: this._source.reparseOverscaled, terrain: r, })), this._source.hasTile && (a = a.filter(function (t) { return o._source.hasTile(t); }))) : (a = []); var n = e.coveringZoomLevel(this._source), s = Math.max(n - i.maxOverzooming, this._source.minzoom), l = Math.max(n + i.maxUnderzooming, this._source.minzoom); if (this.usedForTerrain) { for (var c = {}, h = 0, u = a; h < u.length; h += 1) { var p = u[h]; if (p.canonical.z > this._source.minzoom) { var d = p.scaledTo(p.canonical.z - 1); c[d.key] = d; var _ = p.scaledTo( Math.max(this._source.minzoom, Math.min(p.canonical.z, 5)), ); c[_.key] = _; } } a = a.concat(Object.values(c)); } var f = this._updateRetainedTiles(a, n); if (j(this._source.type)) { for ( var m = {}, g = {}, v = 0, y = Object.keys(f); v < y.length; v += 1 ) { var x = y[v], b = f[x], w = this._tiles[x]; if ( w && !(w.fadeEndTime && w.fadeEndTime <= t.exported.now()) ) { var T = this.findLoadedParent(b, s); T && (this._addTile(T.tileID), (m[T.tileID.key] = T.tileID)), (g[x] = b); } } for (var E in (this._retainLoadedChildren(g, n, l, f), m)) f[E] || ((this._coveredTiles[E] = !0), (f[E] = m[E])); if (r) { for (var I = {}, C = {}, S = 0, D = a; S < D.length; S += 1) { var z = D[S]; this._tiles[z.key].hasData() ? (I[z.key] = z) : (C[z.key] = z); } for (var P in C) { var M = C[P].children(this._source.maxzoom); this._tiles[M[0].key] && this._tiles[M[1].key] && this._tiles[M[2].key] && this._tiles[M[3].key] && ((I[M[0].key] = f[M[0].key] = M[0]), (I[M[1].key] = f[M[1].key] = M[1]), (I[M[2].key] = f[M[2].key] = M[2]), (I[M[3].key] = f[M[3].key] = M[3]), delete C[P]); } for (var A in C) { var R = this.findLoadedParent(C[A], this._source.minzoom); if (R) for (var L in ((I[R.tileID.key] = f[R.tileID.key] = R.tileID), I)) I[L].isChildOf(R.tileID) && delete I[L]; } for (var k in this._tiles) I[k] || (this._coveredTiles[k] = !0); } } for (var B in f) this._tiles[B].clearFadeHold(); for ( var O = 0, F = t.keysDifference(this._tiles, f); O < F.length; O += 1 ) { var U = F[O], N = this._tiles[U]; N.hasSymbolBuckets && !N.holdingForFade() ? N.setHoldDuration(this.map._fadeDuration) : (N.hasSymbolBuckets && !N.symbolFadeFinished()) || this._removeTile(U); } this._updateLoadedParentTileCache(); } }), (i.prototype.releaseSymbolFadeTiles = function () { for (var t in this._tiles) this._tiles[t].holdingForFade() && this._removeTile(t); }), (i.prototype._updateRetainedTiles = function (t, e) { for ( var r = {}, o = {}, a = Math.max(e - i.maxOverzooming, this._source.minzoom), n = Math.max(e + i.maxUnderzooming, this._source.minzoom), s = {}, l = 0, c = t; l < c.length; l += 1 ) { var h = c[l], u = this._addTile(h); (r[h.key] = h), u.hasData() || (e < this._source.maxzoom && (s[h.key] = h)); } this._retainLoadedChildren(s, e, n, r); for (var p = 0, d = t; p < d.length; p += 1) { var _ = d[p], f = this._tiles[_.key]; if (!f.hasData()) { if (e + 1 > this._source.maxzoom) { var m = _.children(this._source.maxzoom)[0], g = this.getTile(m); if (g && g.hasData()) { r[m.key] = m; continue; } } else { var v = _.children(this._source.maxzoom); if (r[v[0].key] && r[v[1].key] && r[v[2].key] && r[v[3].key]) continue; } for ( var y = f.wasRequested(), x = _.overscaledZ - 1; x >= a; --x ) { var b = _.scaledTo(x); if (o[b.key]) break; if ( ((o[b.key] = !0), !(f = this.getTile(b)) && y && (f = this._addTile(b)), f && ((r[b.key] = b), (y = f.wasRequested()), f.hasData())) ) break; } } } return r; }), (i.prototype._updateLoadedParentTileCache = function () { for (var t in ((this._loadedParentTiles = {}), this._tiles)) { for ( var e = [], i = void 0, r = this._tiles[t].tileID; r.overscaledZ > 0; ) { if (r.key in this._loadedParentTiles) { i = this._loadedParentTiles[r.key]; break; } e.push(r.key); var o = r.scaledTo(r.overscaledZ - 1); if ((i = this._getLoadedTile(o))) break; r = o; } for (var a = 0, n = e; a < n.length; a += 1) this._loadedParentTiles[n[a]] = i; } }), (i.prototype._addTile = function (e) { var i = this._tiles[e.key]; if (i) return i; (i = this._cache.getAndRemove(e)) && (this._setTileReloadTimer(e.key, i), (i.tileID = e), this._state.initializeTileState( i, this.map ? this.map.painter : null, ), this._cacheTimers[e.key] && (clearTimeout(this._cacheTimers[e.key]), delete this._cacheTimers[e.key], this._setTileReloadTimer(e.key, i))); var r = i; return ( i || ((i = new O(e, this._source.tileSize * e.overscaleFactor())), this._loadTile( i, this._tileLoaded.bind(this, i, e.key, i.state), )), i.uses++, (this._tiles[e.key] = i), r || this._source.fire( new t.Event('dataloading', { tile: i, coord: i.tileID, dataType: 'source', }), ), i ); }), (i.prototype._setTileReloadTimer = function (t, e) { var i = this; t in this._timers && (clearTimeout(this._timers[t]), delete this._timers[t]); var r = e.getExpiryTimeout(); r && (this._timers[t] = setTimeout(function () { i._reloadTile(t, 'expired'), delete i._timers[t]; }, r)); }), (i.prototype._removeTile = function (t) { var e = this._tiles[t]; e && (e.uses--, delete this._tiles[t], this._timers[t] && (clearTimeout(this._timers[t]), delete this._timers[t]), e.uses > 0 || (e.hasData() && 'reloading' !== e.state ? this._cache.add(e.tileID, e, e.getExpiryTimeout()) : ((e.aborted = !0), this._abortTile(e), this._unloadTile(e)))); }), (i.prototype.clearTiles = function () { for (var t in ((this._shouldReloadOnResume = !1), (this._paused = !1), this._tiles)) this._removeTile(t); this._cache.reset(); }), (i.prototype.tilesIn = function (e, i, r) { var o = this, a = [], n = this.transform; if (!n) return a; for ( var s = r ? n.getCameraQueryGeometry(e) : e, l = e.map(function (t) { return n.pointCoordinate(t, o.terrain); }), c = s.map(function (t) { return n.pointCoordinate(t, o.terrain); }), h = this.getIds(), u = 1 / 0, p = 1 / 0, d = -1 / 0, _ = -1 / 0, f = 0, m = c; f < m.length; f += 1 ) { var g = m[f]; (u = Math.min(u, g.x)), (p = Math.min(p, g.y)), (d = Math.max(d, g.x)), (_ = Math.max(_, g.y)); } for ( var v = function (e) { var r = o._tiles[h[e]]; if (!r.holdingForFade()) { var s = r.tileID, f = Math.pow(2, n.zoom - r.tileID.overscaledZ), m = (i * r.queryPadding * t.EXTENT) / r.tileSize / f, g = [ s.getTilePoint(new t.MercatorCoordinate(u, p)), s.getTilePoint(new t.MercatorCoordinate(d, _)), ]; if ( g[0].x - m < t.EXTENT && g[0].y - m < t.EXTENT && g[1].x + m >= 0 && g[1].y + m >= 0 ) { var v = l.map(function (t) { return s.getTilePoint(t); }), y = c.map(function (t) { return s.getTilePoint(t); }); a.push({ tile: r, tileID: s, queryGeometry: v, cameraQueryGeometry: y, scale: f, }); } } }, y = 0; y < h.length; y++ ) v(y); return a; }), (i.prototype.getVisibleCoordinates = function (t) { for ( var e = this, i = this.getRenderableIds(t).map(function (t) { return e._tiles[t].tileID; }), r = 0, o = i; r < o.length; r += 1 ) { var a = o[r]; a.posMatrix = this.transform.calculatePosMatrix(a.toUnwrapped()); } return i; }), (i.prototype.hasTransition = function () { if (this._source.hasTransition()) return !0; if (j(this._source.type)) for (var e in this._tiles) { var i = this._tiles[e]; if (void 0 !== i.fadeEndTime && i.fadeEndTime >= t.exported.now()) return !0; } return !1; }), (i.prototype.setFeatureState = function (t, e, i) { this._state.updateState((t = t || '_geojsonTileLayer'), e, i); }), (i.prototype.removeFeatureState = function (t, e, i) { this._state.removeFeatureState((t = t || '_geojsonTileLayer'), e, i); }), (i.prototype.getFeatureState = function (t, e) { return this._state.getState((t = t || '_geojsonTileLayer'), e); }), (i.prototype.setDependencies = function (t, e, i) { var r = this._tiles[t]; r && r.setDependencies(e, i); }), (i.prototype.reloadTilesForDependencies = function (t, e) { for (var i in this._tiles) this._tiles[i].hasDependency(t, e) && this._reloadTile(i, 'reloading'); this._cache.filter(function (i) { return !i.hasDependency(t, e); }); }), i ); })(t.Evented); function G(t, e) { var i = Math.abs(2 * t.wrap) - +(t.wrap < 0), r = Math.abs(2 * e.wrap) - +(e.wrap < 0); return ( t.overscaledZ - e.overscaledZ || r - i || e.canonical.y - t.canonical.y || e.canonical.x - t.canonical.x ); } function j(t) { return 'raster' === t || 'image' === t || 'video' === t; } (N.maxOverzooming = 10), (N.maxUnderzooming = 3); var Z = 'mapboxgl_preloaded_worker_pool', V = function () { this.active = {}; }; (V.prototype.acquire = function (t) { if (!this.workers) for (this.workers = []; this.workers.length < V.workerCount; ) this.workers.push(new Worker(Co.workerUrl)); return (this.active[t] = !0), this.workers.slice(); }), (V.prototype.release = function (t) { delete this.active[t], 0 === this.numActive() && (this.workers.forEach(function (t) { t.terminate(); }), (this.workers = null)); }), (V.prototype.isPreloaded = function () { return !!this.active[Z]; }), (V.prototype.numActive = function () { return Object.keys(this.active).length; }); var q, X = Math.floor(t.exported.hardwareConcurrency / 2); function W() { return q || (q = new V()), q; } function H(e, i) { var r = {}; for (var o in e) 'ref' !== o && (r[o] = e[o]); return ( t.refProperties.forEach(function (t) { t in i && (r[t] = i[t]); }), r ); } function K(t) { t = t.slice(); for (var e = Object.create(null), i = 0; i < t.length; i++) e[t[i].id] = t[i]; for (var r = 0; r < t.length; r++) 'ref' in t[r] && (t[r] = H(t[r], e[t[r].ref])); return t; } V.workerCount = Math.max(Math.min(X, 6), 1); var Y = { setStyle: 'setStyle', addLayer: 'addLayer', removeLayer: 'removeLayer', setPaintProperty: 'setPaintProperty', setLayoutProperty: 'setLayoutProperty', 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', }; function J(t, e, i) { i.push({ command: Y.addSource, args: [t, e[t]] }); } function Q(t, e, i) { e.push({ command: Y.removeSource, args: [t] }), (i[t] = !0); } function $(t, e, i, r) { Q(t, i, r), J(t, e, i); } function tt(t, e, i) { var r; for (r in t[i]) if ( Object.prototype.hasOwnProperty.call(t[i], r) && 'data' !== r && !o(t[i][r], e[i][r]) ) return !1; for (r in e[i]) if ( Object.prototype.hasOwnProperty.call(e[i], r) && 'data' !== r && !o(t[i][r], e[i][r]) ) return !1; return !0; } function et(t, e, i, r, a, n) { var s; for (s in ((e = e || {}), (t = t || {}))) Object.prototype.hasOwnProperty.call(t, s) && (o(t[s], e[s]) || i.push({ command: n, args: [r, s, e[s], a] })); for (s in e) Object.prototype.hasOwnProperty.call(e, s) && !Object.prototype.hasOwnProperty.call(t, s) && (o(t[s], e[s]) || i.push({ command: n, args: [r, s, e[s], a] })); } function it(t) { return t.id; } function rt(t, e) { return (t[e.id] = e), t; } var ot = function (t, e) { this.reset(t, e); }; function at(t, e) { var i = !0; return 'always' === t || ('never' !== t && 'never' !== e) || (i = !1), i; } (ot.prototype.reset = function (t, e) { (this.points = t || []), (this._distances = [0]); for (var i = 1; i < this.points.length; i++) this._distances[i] = this._distances[i - 1] + this.points[i].dist(this.points[i - 1]); (this.length = this._distances[this._distances.length - 1]), (this.padding = Math.min(e || 0, 0.5 * this.length)), (this.paddedLength = this.length - 2 * this.padding); }), (ot.prototype.lerp = function (e) { if (1 === this.points.length) return this.points[0]; e = t.clamp(e, 0, 1); for ( var i = 1, r = this._distances[i], o = e * this.paddedLength + this.padding; r < o && i < this._distances.length; ) r = this._distances[++i]; var a = i - 1, n = this._distances[a], s = r - n, l = s > 0 ? (o - n) / s : 0; return this.points[a].mult(1 - l).add(this.points[i].mult(l)); }); var nt = function (t, e, i) { var r = (this.boxCells = []), o = (this.circleCells = []); (this.xCellCount = Math.ceil(t / i)), (this.yCellCount = Math.ceil(e / i)); for (var a = 0; a < this.xCellCount * this.yCellCount; a++) r.push([]), o.push([]); (this.circleKeys = []), (this.boxKeys = []), (this.bboxes = []), (this.circles = []), (this.width = t), (this.height = e), (this.xScale = this.xCellCount / t), (this.yScale = this.yCellCount / e), (this.boxUid = 0), (this.circleUid = 0); }; function st(e, i, r, o, a) { var n = t.create(); return ( i ? (t.scale(n, n, [1 / a, 1 / a, 1]), r || t.rotateZ(n, n, o.angle)) : t.multiply(n, o.labelPlaneMatrix, e), n ); } function lt(e, i, r, o, a) { if (i) { var n = t.clone(e); return t.scale(n, n, [a, a, 1]), r || t.rotateZ(n, n, -o.angle), n; } return o.glCoordMatrix; } function ct(e, i, r) { var o; r ? ((o = [e.x, e.y, r(e.x, e.y), 1]), t.transformMat4(o, o, i)) : yt((o = [e.x, e.y, 0, 1]), o, i); var a = o[3]; return { point: new t.pointGeometry(o[0] / a, o[1] / a), signedDistanceFromCamera: a, }; } function ht(t, e) { return 0.5 + (t / e) * 0.5; } function ut(t, e) { var i = t[0] / t[3], r = t[1] / t[3]; return i >= -e[0] && i <= e[0] && r >= -e[1] && r <= e[1]; } function pt(t, e, i, r, o, a, n, s, l, c, h, u, p) { var d = s.glyphStartIndex + s.numGlyphs, _ = s.lineStartIndex, f = s.lineStartIndex + s.lineLength, m = e.getoffsetX(s.glyphStartIndex), g = e.getoffsetX(d - 1), v = mt(t * m, i, r, o, a, n, s.segment, _, f, l, c, h, u, p); if (!v) return null; var y = mt(t * g, i, r, o, a, n, s.segment, _, f, l, c, h, u, p); return y ? { first: v, last: y } : null; } function dt(e, i, r, o) { return e === t.WritingMode.horizontal && Math.abs(r.y - i.y) > Math.abs(r.x - i.x) * o ? { useVertical: !0 } : (e === t.WritingMode.vertical ? i.y < r.y : i.x > r.x) ? { needsFlipping: !0 } : null; } function _t(e, i, r, o, a, n, s, l, c, h, u, p, d, _, f, m) { var g, v = i / 24, y = e.lineOffsetX * v, x = e.lineOffsetY * v; if (e.numGlyphs > 1) { var b = e.glyphStartIndex + e.numGlyphs, w = e.lineStartIndex, T = e.lineStartIndex + e.lineLength, E = pt(v, l, y, x, r, u, p, e, c, n, d, f, m); if (!E) return { notEnoughRoom: !0 }; var I = ct(E.first.point, s, m).point, C = ct(E.last.point, s, m).point; if (o && !r) { var S = dt(e.writingMode, I, C, _); if (S) return S; } g = [E.first]; for (var D = e.glyphStartIndex + 1; D < b - 1; D++) g.push( mt( v * l.getoffsetX(D), y, x, r, u, p, e.segment, w, T, c, n, d, f, m, ), ); g.push(E.last); } else { if (o && !r) { var z = ct(p, a, m).point, P = e.lineStartIndex + e.segment + 1, M = new t.pointGeometry(c.getx(P), c.gety(P)), A = ct(M, a, m), R = A.signedDistanceFromCamera > 0 ? A.point : ft(p, M, z, 1, a, m), L = dt(e.writingMode, z, R, _); if (L) return L; } var k = mt( v * l.getoffsetX(e.glyphStartIndex), y, x, r, u, p, e.segment, e.lineStartIndex, e.lineStartIndex + e.lineLength, c, n, d, f, m, ); if (!k) return { notEnoughRoom: !0 }; g = [k]; } for (var B = 0, O = g; B < O.length; B += 1) { var F = O[B]; t.addDynamicAttributes(h, F.point, F.angle); } return {}; } function ft(t, e, i, r, o, a) { var n = ct(t.add(t.sub(e)._unit()), o, a).point, s = i.sub(n); return i.add(s._mult(r / s.mag())); } function mt(e, i, r, o, a, n, s, l, c, h, u, p, d, _) { var f = o ? e - i : e + i, m = f > 0 ? 1 : -1, g = 0; o && ((m *= -1), (g = Math.PI)), m < 0 && (g += Math.PI); for ( var v = m > 0 ? l + s : l + s + 1, y = a, x = a, b = 0, w = 0, T = Math.abs(f), E = []; b + w <= T; ) { if ((v += m) < l || v >= c) return null; if (((x = y), E.push(y), void 0 === (y = p[v]))) { var I = new t.pointGeometry(h.getx(v), h.gety(v)), C = ct(I, u, _); if (C.signedDistanceFromCamera > 0) y = p[v] = C.point; else { var S = v - m; y = ft( 0 === b ? n : new t.pointGeometry(h.getx(S), h.gety(S)), I, x, T - b + 1, u, _, ); } } (b += w), (w = x.dist(y)); } var D = (T - b) / w, z = y.sub(x), P = z.mult(D)._add(x); P._add( z ._unit() ._perp() ._mult(r * m), ); var M = g + Math.atan2(y.y - x.y, y.x - x.x); return E.push(P), { point: P, angle: d ? M : 0, path: E }; } (nt.prototype.keysLength = function () { return this.boxKeys.length + this.circleKeys.length; }), (nt.prototype.insert = function (t, e, i, r, o) { this._forEachCell(e, i, r, o, this._insertBoxCell, this.boxUid++), this.boxKeys.push(t), this.bboxes.push(e), this.bboxes.push(i), this.bboxes.push(r), this.bboxes.push(o); }), (nt.prototype.insertCircle = function (t, e, i, r) { this._forEachCell( e - r, i - r, e + r, i + r, this._insertCircleCell, this.circleUid++, ), this.circleKeys.push(t), this.circles.push(e), this.circles.push(i), this.circles.push(r); }), (nt.prototype._insertBoxCell = function (t, e, i, r, o, a) { this.boxCells[o].push(a); }), (nt.prototype._insertCircleCell = function (t, e, i, r, o, a) { this.circleCells[o].push(a); }), (nt.prototype._query = function (t, e, i, r, o, a, n) { if (i < 0 || t > this.width || r < 0 || e > this.height) return []; var s = []; if (t <= 0 && e <= 0 && this.width <= i && this.height <= r) { if (o) return [{ key: null, x1: t, y1: e, x2: i, y2: r }]; for (var l = 0; l < this.boxKeys.length; l++) s.push({ key: this.boxKeys[l], x1: this.bboxes[4 * l], y1: this.bboxes[4 * l + 1], x2: this.bboxes[4 * l + 2], y2: this.bboxes[4 * l + 3], }); for (var c = 0; c < this.circleKeys.length; c++) { var h = this.circles[3 * c], u = this.circles[3 * c + 1], p = this.circles[3 * c + 2]; s.push({ key: this.circleKeys[c], x1: h - p, y1: u - p, x2: h + p, y2: u + p, }); } } else this._forEachCell( t, e, i, r, this._queryCell, s, { hitTest: o, overlapMode: a, seenUids: { box: {}, circle: {} } }, n, ); return s; }), (nt.prototype.query = function (t, e, i, r) { return this._query(t, e, i, r, !1, null); }), (nt.prototype.hitTest = function (t, e, i, r, o, a) { return this._query(t, e, i, r, !0, o, a).length > 0; }), (nt.prototype.hitTestCircle = function (t, e, i, r, o) { var a = t - i, n = t + i, s = e - i, l = e + i; if (n < 0 || a > this.width || l < 0 || s > this.height) return !1; var c = []; return ( this._forEachCell( a, s, n, l, this._queryCellCircle, c, { hitTest: !0, overlapMode: r, circle: { x: t, y: e, radius: i }, seenUids: { box: {}, circle: {} }, }, o, ), c.length > 0 ); }), (nt.prototype._queryCell = function (t, e, i, r, o, a, n, s) { var l = n.seenUids, c = n.hitTest, h = n.overlapMode, u = this.boxCells[o]; if (null !== u) for (var p = this.bboxes, d = 0, _ = u; d < _.length; d += 1) { var f = _[d]; if (!l.box[f]) { l.box[f] = !0; var m = 4 * f, g = this.boxKeys[f]; if ( t <= p[m + 2] && e <= p[m + 3] && i >= p[m + 0] && r >= p[m + 1] && (!s || s(g)) && (!c || !at(h, g.overlapMode)) && (a.push({ key: g, x1: p[m], y1: p[m + 1], x2: p[m + 2], y2: p[m + 3], }), c) ) return !0; } } var v = this.circleCells[o]; if (null !== v) for (var y = this.circles, x = 0, b = v; x < b.length; x += 1) { var w = b[x]; if (!l.circle[w]) { l.circle[w] = !0; var T = 3 * w, E = this.circleKeys[w]; if ( this._circleAndRectCollide( y[T], y[T + 1], y[T + 2], t, e, i, r, ) && (!s || s(E)) && (!c || !at(h, E.overlapMode)) ) { var I = y[T], C = y[T + 1], S = y[T + 2]; if ( (a.push({ key: E, x1: I - S, y1: C - S, x2: I + S, y2: C + S, }), c) ) return !0; } } } return !1; }), (nt.prototype._queryCellCircle = function (t, e, i, r, o, a, n, s) { var l = n.circle, c = n.seenUids, h = n.overlapMode, u = this.boxCells[o]; if (null !== u) for (var p = this.bboxes, d = 0, _ = u; d < _.length; d += 1) { var f = _[d]; if (!c.box[f]) { c.box[f] = !0; var m = 4 * f, g = this.boxKeys[f]; if ( this._circleAndRectCollide( l.x, l.y, l.radius, p[m + 0], p[m + 1], p[m + 2], p[m + 3], ) && (!s || s(g)) && !at(h, g.overlapMode) ) return a.push(!0), !0; } } var v = this.circleCells[o]; if (null !== v) for (var y = this.circles, x = 0, b = v; x < b.length; x += 1) { var w = b[x]; if (!c.circle[w]) { c.circle[w] = !0; var T = 3 * w, E = this.circleKeys[w]; if ( this._circlesCollide( y[T], y[T + 1], y[T + 2], l.x, l.y, l.radius, ) && (!s || s(E)) && !at(h, E.overlapMode) ) return a.push(!0), !0; } } }), (nt.prototype._forEachCell = function (t, e, i, r, o, a, n, s) { for ( var l = this._convertToXCellCoord(t), c = this._convertToYCellCoord(e), h = this._convertToXCellCoord(i), u = this._convertToYCellCoord(r), p = l; p <= h; p++ ) for (var d = c; d <= u; d++) if (o.call(this, t, e, i, r, this.xCellCount * d + p, a, n, s)) return; }), (nt.prototype._convertToXCellCoord = function (t) { return Math.max( 0, Math.min(this.xCellCount - 1, Math.floor(t * this.xScale)), ); }), (nt.prototype._convertToYCellCoord = function (t) { return Math.max( 0, Math.min(this.yCellCount - 1, Math.floor(t * this.yScale)), ); }), (nt.prototype._circlesCollide = function (t, e, i, r, o, a) { var n = r - t, s = o - e, l = i + a; return l * l > n * n + s * s; }), (nt.prototype._circleAndRectCollide = function (t, e, i, r, o, a, n) { var s = (a - r) / 2, l = Math.abs(t - (r + s)); if (l > s + i) return !1; var c = (n - o) / 2, h = Math.abs(e - (o + c)); if (h > c + i) return !1; if (l <= s || h <= c) return !0; var u = l - s, p = h - c; return u * u + p * p <= i * i; }); var gt = new Float32Array([ -1 / 0, -1 / 0, 0, -1 / 0, -1 / 0, 0, -1 / 0, -1 / 0, 0, -1 / 0, -1 / 0, 0, ]); function vt(t, e) { for (var i = 0; i < t; i++) { var r = e.length; e.resize(r + 4), e.float32.set(gt, 3 * r); } } function yt(t, e, i) { var r = e[0], o = e[1]; return ( (t[0] = i[0] * r + i[4] * o + i[12]), (t[1] = i[1] * r + i[5] * o + i[13]), (t[3] = i[3] * r + i[7] * o + i[15]), t ); } var xt = 100, bt = function (t, e, i) { void 0 === e && (e = new nt(t.width + 200, t.height + 200, 25)), void 0 === i && (i = new nt(t.width + 200, t.height + 200, 25)), (this.transform = t), (this.grid = e), (this.ignoredGrid = i), (this.pitchfactor = Math.cos(t._pitch) * t.cameraToCenterDistance), (this.screenRightBoundary = t.width + xt), (this.screenBottomBoundary = t.height + xt), (this.gridRightBoundary = t.width + 200), (this.gridBottomBoundary = t.height + 200), (this.perspectiveRatioCutoff = 0.6); }; function wt(e, i, r) { return ( i * (t.EXTENT / (e.tileSize * Math.pow(2, r - e.tileID.overscaledZ))) ); } (bt.prototype.placeCollisionBox = function (t, e, i, r, o, a) { var n = this.projectAndGetPerspectiveRatio( r, t.anchorPointX, t.anchorPointY, a, ), s = i * n.perspectiveRatio, l = t.x1 * s + n.point.x, c = t.y1 * s + n.point.y, h = t.x2 * s + n.point.x, u = t.y2 * s + n.point.y; return !this.isInsideGrid(l, c, h, u) || ('always' !== e && this.grid.hitTest(l, c, h, u, e, o)) || n.perspectiveRatio < this.perspectiveRatioCutoff ? { box: [], offscreen: !1 } : { box: [l, c, h, u], offscreen: this.isOffscreen(l, c, h, u) }; }), (bt.prototype.placeCollisionCircles = function ( e, i, r, o, a, n, s, l, c, h, u, p, d, _, ) { var f = [], m = new t.pointGeometry(i.anchorX, i.anchorY), g = ct(m, n, _), v = ht( this.transform.cameraToCenterDistance, g.signedDistanceFromCamera, ), y = (h ? a / v : a * v) / t.ONE_EM, x = ct(m, s, _).point, b = pt( y, o, i.lineOffsetX * y, i.lineOffsetY * y, !1, x, m, i, r, s, {}, !1, _, ), w = !1, T = !1, E = !0; if (b) { for ( var I = 0.5 * p * v + d, C = new t.pointGeometry(-100, -100), S = new t.pointGeometry( this.screenRightBoundary, this.screenBottomBoundary, ), D = new ot(), z = b.first, P = b.last, M = [], A = z.path.length - 1; A >= 1; A-- ) M.push(z.path[A]); for (var R = 1; R < P.path.length; R++) M.push(P.path[R]); var L = 2.5 * I; if (l) { var k = M.map(function (t) { return ct(t, l, _); }); M = k.some(function (t) { return t.signedDistanceFromCamera <= 0; }) ? [] : k.map(function (t) { return t.point; }); } var B = []; if (M.length > 0) { for ( var O = M[0].clone(), F = M[0].clone(), U = 1; U < M.length; U++ ) (O.x = Math.min(O.x, M[U].x)), (O.y = Math.min(O.y, M[U].y)), (F.x = Math.max(F.x, M[U].x)), (F.y = Math.max(F.y, M[U].y)); B = O.x >= C.x && F.x <= S.x && O.y >= C.y && F.y <= S.y ? [M] : F.x < C.x || O.x > S.x || F.y < C.y || O.y > S.y ? [] : t.clipLine([M], C.x, C.y, S.x, S.y); } for (var N = 0, G = B; N < G.length; N += 1) { var j; D.reset(G[N], 0.25 * I), (j = D.length <= 0.5 * I ? 1 : Math.ceil(D.paddedLength / L) + 1); for (var Z = 0; Z < j; Z++) { var V = Z / Math.max(j - 1, 1), q = D.lerp(V), X = q.x + xt, W = q.y + xt; f.push(X, W, I, 0); var H = X - I, K = W - I, Y = X + I, J = W + I; if ( ((E = E && this.isOffscreen(H, K, Y, J)), (T = T || this.isInsideGrid(H, K, Y, J)), 'always' !== e && this.grid.hitTestCircle(X, W, I, e, u) && ((w = !0), !c)) ) return { circles: [], offscreen: !1, collisionDetected: w }; } } } return { circles: (!c && w) || !T || v < this.perspectiveRatioCutoff ? [] : f, offscreen: E, collisionDetected: w, }; }), (bt.prototype.queryRenderedSymbols = function (e) { if ( 0 === e.length || (0 === this.grid.keysLength() && 0 === this.ignoredGrid.keysLength()) ) return {}; for ( var i = [], r = 1 / 0, o = 1 / 0, a = -1 / 0, n = -1 / 0, s = 0, l = e; s < l.length; s += 1 ) { var c = l[s], h = new t.pointGeometry(c.x + xt, c.y + xt); (r = Math.min(r, h.x)), (o = Math.min(o, h.y)), (a = Math.max(a, h.x)), (n = Math.max(n, h.y)), i.push(h); } for ( var u = {}, p = {}, d = 0, _ = this.grid .query(r, o, a, n) .concat(this.ignoredGrid.query(r, o, a, n)); d < _.length; d += 1 ) { var f = _[d], m = f.key; if ( (void 0 === u[m.bucketInstanceId] && (u[m.bucketInstanceId] = {}), !u[m.bucketInstanceId][m.featureIndex]) ) { var g = [ new t.pointGeometry(f.x1, f.y1), new t.pointGeometry(f.x2, f.y1), new t.pointGeometry(f.x2, f.y2), new t.pointGeometry(f.x1, f.y2), ]; t.polygonIntersectsPolygon(i, g) && ((u[m.bucketInstanceId][m.featureIndex] = !0), void 0 === p[m.bucketInstanceId] && (p[m.bucketInstanceId] = []), p[m.bucketInstanceId].push(m.featureIndex)); } } return p; }), (bt.prototype.insertCollisionBox = function (t, e, i, r, o, a) { (i ? this.ignoredGrid : this.grid).insert( { bucketInstanceId: r, featureIndex: o, collisionGroupID: a, overlapMode: e, }, t[0], t[1], t[2], t[3], ); }), (bt.prototype.insertCollisionCircles = function (t, e, i, r, o, a) { for ( var n = i ? this.ignoredGrid : this.grid, s = { bucketInstanceId: r, featureIndex: o, collisionGroupID: a, overlapMode: e, }, l = 0; l < t.length; l += 4 ) n.insertCircle(s, t[l], t[l + 1], t[l + 2]); }), (bt.prototype.projectAndGetPerspectiveRatio = function (e, i, r, o) { var a; return ( o ? ((a = [i, r, o(i, r), 1]), t.transformMat4(a, a, e)) : yt((a = [i, r, 0, 1]), a, e), { point: new t.pointGeometry( ((a[0] / a[3] + 1) / 2) * this.transform.width + xt, ((-a[1] / a[3] + 1) / 2) * this.transform.height + xt, ), perspectiveRatio: 0.5 + (this.transform.cameraToCenterDistance / a[3]) * 0.5, } ); }), (bt.prototype.isOffscreen = function (t, e, i, r) { return ( i < xt || t >= this.screenRightBoundary || r < xt || e > this.screenBottomBoundary ); }), (bt.prototype.isInsideGrid = function (t, e, i, r) { return ( i >= 0 && t < this.gridRightBoundary && r >= 0 && e < this.gridBottomBoundary ); }), (bt.prototype.getViewportMatrix = function () { var e = t.identity([]); return t.translate(e, e, [-100, -100, 0]), e; }); var Tt = function (t, e, i, r) { (this.opacity = t ? Math.max(0, Math.min(1, t.opacity + (t.placed ? e : -e))) : r && i ? 1 : 0), (this.placed = i); }; Tt.prototype.isHidden = function () { return 0 === this.opacity && !this.placed; }; var Et = function (t, e, i, r, o) { (this.text = new Tt(t ? t.text : null, e, i, o)), (this.icon = new Tt(t ? t.icon : null, e, r, o)); }; Et.prototype.isHidden = function () { return this.text.isHidden() && this.icon.isHidden(); }; var It = function (t, e, i) { (this.text = t), (this.icon = e), (this.skipFade = i); }, Ct = function () { (this.invProjMatrix = t.create()), (this.viewportMatrix = t.create()), (this.circles = []); }, St = function (t, e, i, r, o) { (this.bucketInstanceId = t), (this.featureIndex = e), (this.sourceLayerIndex = i), (this.bucketIndex = r), (this.tileID = o); }, Dt = function (t) { (this.crossSourceCollisions = t), (this.maxGroupID = 0), (this.collisionGroups = {}); }; function zt(e, i, r, o, a) { var n = t.getAnchorAlignment(e), s = -(n.horizontalAlign - 0.5) * i, l = -(n.verticalAlign - 0.5) * r, c = t.evaluateVariableOffset(e, o); return new t.pointGeometry(s + c[0] * a, l + c[1] * a); } function Pt(e, i, r, o, a, n) { var s = e.x1, l = e.x2, c = e.y1, h = e.y2, u = e.anchorPointX, p = e.anchorPointY, d = new t.pointGeometry(i, r); return ( o && d._rotate(a ? n : -n), { x1: s + d.x, y1: c + d.y, x2: l + d.x, y2: h + d.y, anchorPointX: u, anchorPointY: p, } ); } Dt.prototype.get = function (t) { if (this.crossSourceCollisions) return { ID: 0, predicate: null }; if (!this.collisionGroups[t]) { var e = ++this.maxGroupID; this.collisionGroups[t] = { ID: e, predicate: function (t) { return t.collisionGroupID === e; }, }; } return this.collisionGroups[t]; }; var Mt = function (t, e, i, r, o) { (this.transform = t.clone()), (this.terrain = e), (this.collisionIndex = new bt(this.transform)), (this.placements = {}), (this.opacities = {}), (this.variableOffsets = {}), (this.stale = !1), (this.commitTime = 0), (this.fadeDuration = i), (this.retainedQueryData = {}), (this.collisionGroups = new Dt(r)), (this.collisionCircleArrays = {}), (this.prevPlacement = o), o && (o.prevPlacement = void 0), (this.placedOrientations = {}); }; function At(t, e, i, r, o) { t.emplaceBack(e ? 1 : 0, i ? 1 : 0, r || 0, o || 0), t.emplaceBack(e ? 1 : 0, i ? 1 : 0, r || 0, o || 0), t.emplaceBack(e ? 1 : 0, i ? 1 : 0, r || 0, o || 0), t.emplaceBack(e ? 1 : 0, i ? 1 : 0, r || 0, o || 0); } (Mt.prototype.getBucketParts = function (e, i, r, o) { var a = r.getBucket(i), n = r.latestFeatureIndex; if (a && n && i.id === a.layerIds[0]) { var s = r.collisionBoxArray, l = a.layers[0].layout, c = Math.pow(2, this.transform.zoom - r.tileID.overscaledZ), h = r.tileSize / t.EXTENT, u = this.transform.calculatePosMatrix(r.tileID.toUnwrapped()), p = 'map' === l.get('text-pitch-alignment'), d = 'map' === l.get('text-rotation-alignment'), _ = wt(r, 1, this.transform.zoom), f = st(u, p, d, this.transform, _), m = null; if (p) { var g = lt(u, p, d, this.transform, _); m = t.multiply([], this.transform.labelPlaneMatrix, g); } this.retainedQueryData[a.bucketInstanceId] = new St( a.bucketInstanceId, n, a.sourceLayerIndex, a.index, r.tileID, ); var v = { bucket: a, layout: l, posMatrix: u, textLabelPlaneMatrix: f, labelToScreenMatrix: m, scale: c, textPixelRatio: h, holdingForFade: r.holdingForFade(), collisionBoxArray: s, partiallyEvaluatedTextSize: t.evaluateSizeForZoom( a.textSizeData, this.transform.zoom, ), collisionGroup: this.collisionGroups.get(a.sourceID), }; if (o) for (var y = 0, x = a.sortKeyRanges; y < x.length; y += 1) { var b = x[y]; e.push({ sortKey: b.sortKey, symbolInstanceStart: b.symbolInstanceStart, symbolInstanceEnd: b.symbolInstanceEnd, parameters: v, }); } else e.push({ symbolInstanceStart: 0, symbolInstanceEnd: a.symbolInstances.length, parameters: v, }); } }), (Mt.prototype.attemptAnchorPlacement = function ( t, e, i, r, o, a, n, s, l, c, h, u, p, d, _, f, ) { var m = [u.textOffset0, u.textOffset1], g = zt(t, i, r, m, o), v = this.collisionIndex.placeCollisionBox( Pt(e, g.x, g.y, a, n, this.transform.angle), h, s, l, c.predicate, f, ); if ( (!_ || 0 !== this.collisionIndex.placeCollisionBox( Pt(_, g.x, g.y, a, n, this.transform.angle), h, s, l, c.predicate, f, ).box.length) && v.box.length > 0 ) { var y; if ( (this.prevPlacement && this.prevPlacement.variableOffsets[u.crossTileID] && this.prevPlacement.placements[u.crossTileID] && this.prevPlacement.placements[u.crossTileID].text && (y = this.prevPlacement.variableOffsets[u.crossTileID].anchor), 0 === u.crossTileID) ) throw new Error("symbolInstance.crossTileID can't be 0"); return ( (this.variableOffsets[u.crossTileID] = { textOffset: m, width: i, height: r, anchor: t, textBoxScale: o, prevAnchor: y, }), this.markUsedJustification(p, t, u, d), p.allowVerticalPlacement && (this.markUsedOrientation(p, d, u), (this.placedOrientations[u.crossTileID] = d)), { shift: g, placedGlyphBoxes: v } ); } }), (Mt.prototype.placeLayerBucketPart = function (e, i, r) { var o = this, a = e.parameters, n = a.bucket, s = a.layout, l = a.posMatrix, c = a.textLabelPlaneMatrix, h = a.labelToScreenMatrix, u = a.textPixelRatio, p = a.holdingForFade, d = a.collisionBoxArray, _ = a.partiallyEvaluatedTextSize, f = a.collisionGroup, m = s.get('text-optional'), g = s.get('icon-optional'), v = t.getOverlapMode(s, 'text-overlap', 'text-allow-overlap'), y = 'always' === v, x = t.getOverlapMode(s, 'icon-overlap', 'icon-allow-overlap'), b = 'always' === x, w = 'map' === s.get('text-rotation-alignment'), T = 'map' === s.get('text-pitch-alignment'), E = 'none' !== s.get('icon-text-fit'), I = 'viewport-y' === s.get('symbol-z-order'), C = y && (b || !n.hasIconData() || g), S = b && (y || !n.hasTextData() || m); !n.collisionArrays && d && n.deserializeCollisionBoxes(d); var D = function (e, a) { if (!i[e.crossTileID]) if (p) o.placements[e.crossTileID] = new It(!1, !1, !1); else { var d, b = !1, I = !1, D = !0, z = null, P = { box: null, offscreen: null }, M = { box: null, offscreen: null }, A = null, R = null, L = 0, k = 0, B = 0; a.textFeatureIndex ? (L = a.textFeatureIndex) : e.useRuntimeCollisionCircles && (L = e.featureIndex), a.verticalTextFeatureIndex && (k = a.verticalTextFeatureIndex); for ( var O = o.retainedQueryData[n.bucketInstanceId].tileID, F = o.terrain ? function (t, e) { return o.terrain.getElevation(O, t, e); } : null, U = 0, N = [ 'textBox', 'verticalTextBox', 'iconBox', 'verticalIconBox', ]; U < N.length; U += 1 ) { var G = a[N[U]]; G && (G.elevation = F ? F(G.anchorPointX, G.anchorPointY) : 0); } var j = a.textBox; if (j) { var Z = function (i) { var r = t.WritingMode.horizontal; if (n.allowVerticalPlacement && !i && o.prevPlacement) { var a = o.prevPlacement.placedOrientations[e.crossTileID]; a && ((o.placedOrientations[e.crossTileID] = a), o.markUsedOrientation(n, (r = a), e)); } return r; }, V = function (i, r) { if ( n.allowVerticalPlacement && e.numVerticalGlyphVertices > 0 && a.verticalTextBox ) for ( var o = 0, s = n.writingModes; o < s.length && (s[o] === t.WritingMode.vertical ? ((P = r()), (M = P)) : (P = i()), !(P && P.box && P.box.length)); o += 1 ); else P = i(); }; if (s.get('text-variable-anchor')) { var q = s.get('text-variable-anchor'); if ( o.prevPlacement && o.prevPlacement.variableOffsets[e.crossTileID] ) { var X = o.prevPlacement.variableOffsets[e.crossTileID]; q.indexOf(X.anchor) > 0 && (q = q.filter(function (t) { return t !== X.anchor; })).unshift(X.anchor); } var W = function (t, i, r) { for ( var a = t.x2 - t.x1, s = t.y2 - t.y1, c = e.textBoxScale, h = E && 'never' === x ? i : null, p = { box: [], offscreen: !1 }, d = 'never' !== v ? 2 * q.length : q.length, _ = 0; _ < d; ++_ ) { var m = o.attemptAnchorPlacement( q[_ % q.length], t, a, s, c, w, T, u, l, f, _ >= q.length ? v : 'never', e, n, r, h, F, ); if ( m && (p = m.placedGlyphBoxes) && p.box && p.box.length ) { (b = !0), (z = m.shift); break; } } return p; }; V( function () { return W(j, a.iconBox, t.WritingMode.horizontal); }, function () { var i = a.verticalTextBox; return n.allowVerticalPlacement && !(P && P.box && P.box.length) && e.numVerticalGlyphVertices > 0 && i ? W(i, a.verticalIconBox, t.WritingMode.vertical) : { box: null, offscreen: null }; }, ), P && ((b = P.box), (D = P.offscreen)); var H = Z(P && P.box); if (!b && o.prevPlacement) { var K = o.prevPlacement.variableOffsets[e.crossTileID]; K && ((o.variableOffsets[e.crossTileID] = K), o.markUsedJustification(n, K.anchor, e, H)); } } else { var Y = function (t, i) { var r = o.collisionIndex.placeCollisionBox( t, v, u, l, f.predicate, F, ); return ( r && r.box && r.box.length && (o.markUsedOrientation(n, i, e), (o.placedOrientations[e.crossTileID] = i)), r ); }; V( function () { return Y(j, t.WritingMode.horizontal); }, function () { var i = a.verticalTextBox; return n.allowVerticalPlacement && e.numVerticalGlyphVertices > 0 && i ? Y(i, t.WritingMode.vertical) : { box: null, offscreen: null }; }, ), Z(P && P.box && P.box.length); } } if ( ((b = (d = P) && d.box && d.box.length > 0), (D = d && d.offscreen), e.useRuntimeCollisionCircles) ) { var J = n.text.placedSymbolArray.get( e.centerJustifiedTextSymbolIndex, ), Q = t.evaluateSizeForFeature(n.textSizeData, _, J), $ = s.get('text-padding'); (A = o.collisionIndex.placeCollisionCircles( v, J, n.lineVertexArray, n.glyphOffsetArray, Q, l, c, h, r, T, f.predicate, e.collisionCircleDiameter, $, F, )).circles.length && A.collisionDetected && !r && t.warnOnce( 'Collisions detected, but collision boxes are not shown', ), (b = y || (A.circles.length > 0 && !A.collisionDetected)), (D = D && A.offscreen); } if ((a.iconFeatureIndex && (B = a.iconFeatureIndex), a.iconBox)) { var tt = function (t) { var e = E && z ? Pt(t, z.x, z.y, w, T, o.transform.angle) : t; return o.collisionIndex.placeCollisionBox( e, x, u, l, f.predicate, F, ); }; (I = M && M.box && M.box.length && a.verticalIconBox ? (R = tt(a.verticalIconBox)).box.length > 0 : (R = tt(a.iconBox)).box.length > 0), (D = D && R.offscreen); } var et = m || (0 === e.numHorizontalGlyphVertices && 0 === e.numVerticalGlyphVertices), it = g || 0 === e.numIconVertices; if ( (et || it ? it ? et || (I = I && b) : (b = I && b) : (I = b = I && b), b && d && d.box && o.collisionIndex.insertCollisionBox( d.box, v, s.get('text-ignore-placement'), n.bucketInstanceId, M && M.box && k ? k : L, f.ID, ), I && R && o.collisionIndex.insertCollisionBox( R.box, x, s.get('icon-ignore-placement'), n.bucketInstanceId, B, f.ID, ), A && (b && o.collisionIndex.insertCollisionCircles( A.circles, v, s.get('text-ignore-placement'), n.bucketInstanceId, L, f.ID, ), r)) ) { var rt = n.bucketInstanceId, ot = o.collisionCircleArrays[rt]; void 0 === ot && (ot = o.collisionCircleArrays[rt] = new Ct()); for (var at = 0; at < A.circles.length; at += 4) ot.circles.push(A.circles[at + 0]), ot.circles.push(A.circles[at + 1]), ot.circles.push(A.circles[at + 2]), ot.circles.push(A.collisionDetected ? 1 : 0); } if (0 === e.crossTileID) throw new Error("symbolInstance.crossTileID can't be 0"); if (0 === n.bucketInstanceId) throw new Error("bucket.bucketInstanceId can't be 0"); (o.placements[e.crossTileID] = new It( b || C, I || S, D || n.justReloaded, )), (i[e.crossTileID] = !0); } }; if (I) { if (0 !== e.symbolInstanceStart) throw new Error('bucket.bucketInstanceId should be 0'); for ( var z = n.getSortedSymbolIndexes(this.transform.angle), P = z.length - 1; P >= 0; --P ) { var M = z[P]; D(n.symbolInstances.get(M), n.collisionArrays[M]); } } else for (var A = e.symbolInstanceStart; A < e.symbolInstanceEnd; A++) D(n.symbolInstances.get(A), n.collisionArrays[A]); if (r && n.bucketInstanceId in this.collisionCircleArrays) { var R = this.collisionCircleArrays[n.bucketInstanceId]; t.invert(R.invProjMatrix, l), (R.viewportMatrix = this.collisionIndex.getViewportMatrix()); } n.justReloaded = !1; }), (Mt.prototype.markUsedJustification = function (e, i, r, o) { var a; a = o === t.WritingMode.vertical ? r.verticalPlacedTextSymbolIndex : { left: r.leftJustifiedTextSymbolIndex, center: r.centerJustifiedTextSymbolIndex, right: r.rightJustifiedTextSymbolIndex, }[t.getAnchorJustification(i)]; for ( var n = 0, s = [ r.leftJustifiedTextSymbolIndex, r.centerJustifiedTextSymbolIndex, r.rightJustifiedTextSymbolIndex, r.verticalPlacedTextSymbolIndex, ]; n < s.length; n += 1 ) { var l = s[n]; l >= 0 && (e.text.placedSymbolArray.get(l).crossTileID = a >= 0 && l !== a ? 0 : r.crossTileID); } }), (Mt.prototype.markUsedOrientation = function (e, i, r) { for ( var o = i === t.WritingMode.horizontal || i === t.WritingMode.horizontalOnly ? i : 0, a = i === t.WritingMode.vertical ? i : 0, n = 0, s = [ r.leftJustifiedTextSymbolIndex, r.centerJustifiedTextSymbolIndex, r.rightJustifiedTextSymbolIndex, ]; n < s.length; n += 1 ) e.text.placedSymbolArray.get(s[n]).placedOrientation = o; r.verticalPlacedTextSymbolIndex && (e.text.placedSymbolArray.get( r.verticalPlacedTextSymbolIndex, ).placedOrientation = a); }), (Mt.prototype.commit = function (t) { (this.commitTime = t), (this.zoomAtLastRecencyCheck = this.transform.zoom); var e = this.prevPlacement, i = !1; this.prevZoomAdjustment = e ? e.zoomAdjustment(this.transform.zoom) : 0; var r = e ? e.symbolFadeChange(t) : 1, o = e ? e.opacities : {}, a = e ? e.variableOffsets : {}, n = e ? e.placedOrientations : {}; for (var s in this.placements) { var l = this.placements[s], c = o[s]; c ? ((this.opacities[s] = new Et(c, r, l.text, l.icon)), (i = i || l.text !== c.text.placed || l.icon !== c.icon.placed)) : ((this.opacities[s] = new Et( null, r, l.text, l.icon, l.skipFade, )), (i = i || l.text || l.icon)); } for (var h in o) { var u = o[h]; if (!this.opacities[h]) { var p = new Et(u, r, !1, !1); p.isHidden() || ((this.opacities[h] = p), (i = i || u.text.placed || u.icon.placed)); } } for (var d in a) this.variableOffsets[d] || !this.opacities[d] || this.opacities[d].isHidden() || (this.variableOffsets[d] = a[d]); for (var _ in n) this.placedOrientations[_] || !this.opacities[_] || this.opacities[_].isHidden() || (this.placedOrientations[_] = n[_]); if (e && void 0 === e.lastPlacementChangeTime) throw new Error( 'Last placement time for previous placement is not defined', ); i ? (this.lastPlacementChangeTime = t) : 'number' != typeof this.lastPlacementChangeTime && (this.lastPlacementChangeTime = e ? e.lastPlacementChangeTime : t); }), (Mt.prototype.updateLayerOpacities = function (t, e) { for (var i = {}, r = 0, o = e; r < o.length; r += 1) { var a = o[r], n = a.getBucket(t); n && a.latestFeatureIndex && t.id === n.layerIds[0] && this.updateBucketOpacities(n, i, a.collisionBoxArray); } }), (Mt.prototype.updateBucketOpacities = function (e, i, r) { var o = this; e.hasTextData() && e.text.opacityVertexArray.clear(), e.hasIconData() && e.icon.opacityVertexArray.clear(), e.hasIconCollisionBoxData() && e.iconCollisionBox.collisionVertexArray.clear(), e.hasTextCollisionBoxData() && e.textCollisionBox.collisionVertexArray.clear(); var a = e.layers[0].layout, n = new Et(null, 0, !1, !1, !0), s = a.get('text-allow-overlap'), l = a.get('icon-allow-overlap'), c = a.get('text-variable-anchor'), h = 'map' === a.get('text-rotation-alignment'), u = 'map' === a.get('text-pitch-alignment'), p = 'none' !== a.get('icon-text-fit'), d = new Et( null, 0, s && (l || !e.hasIconData() || a.get('icon-optional')), l && (s || !e.hasTextData() || a.get('text-optional')), !0, ); !e.collisionArrays && r && (e.hasIconCollisionBoxData() || e.hasTextCollisionBoxData()) && e.deserializeCollisionBoxes(r); for ( var _ = function (t, e, i) { for (var r = 0; r < e / 4; r++) t.opacityVertexArray.emplaceBack(i); }, f = function (r) { var a = e.symbolInstances.get(r), s = a.numHorizontalGlyphVertices, l = a.numVerticalGlyphVertices, f = a.crossTileID, m = o.opacities[f]; i[f] ? (m = n) : m || (o.opacities[f] = m = d), (i[f] = !0); var g = a.numIconVertices > 0, v = o.placedOrientations[a.crossTileID], y = v === t.WritingMode.vertical, x = v === t.WritingMode.horizontal || v === t.WritingMode.horizontalOnly; if (s > 0 || l > 0) { var b = Nt(m.text); _(e.text, s, y ? Gt : b), _(e.text, l, x ? Gt : b); var w = m.text.isHidden(); [ a.rightJustifiedTextSymbolIndex, a.centerJustifiedTextSymbolIndex, a.leftJustifiedTextSymbolIndex, ].forEach(function (t) { t >= 0 && (e.text.placedSymbolArray.get(t).hidden = w || y ? 1 : 0); }), a.verticalPlacedTextSymbolIndex >= 0 && (e.text.placedSymbolArray.get( a.verticalPlacedTextSymbolIndex, ).hidden = w || x ? 1 : 0); var T = o.variableOffsets[a.crossTileID]; T && o.markUsedJustification(e, T.anchor, a, v); var E = o.placedOrientations[a.crossTileID]; E && (o.markUsedJustification(e, 'left', a, E), o.markUsedOrientation(e, E, a)); } if (g) { var I = Nt(m.icon), C = !(p && a.verticalPlacedIconSymbolIndex && y); a.placedIconSymbolIndex >= 0 && (_(e.icon, a.numIconVertices, C ? I : Gt), (e.icon.placedSymbolArray.get( a.placedIconSymbolIndex, ).hidden = m.icon.isHidden())), a.verticalPlacedIconSymbolIndex >= 0 && (_(e.icon, a.numVerticalIconVertices, C ? Gt : I), (e.icon.placedSymbolArray.get( a.verticalPlacedIconSymbolIndex, ).hidden = m.icon.isHidden())); } if (e.hasIconCollisionBoxData() || e.hasTextCollisionBoxData()) { var S = e.collisionArrays[r]; if (S) { var D = new t.pointGeometry(0, 0); if (S.textBox || S.verticalTextBox) { var z = !0; if (c) { var P = o.variableOffsets[f]; P ? ((D = zt( P.anchor, P.width, P.height, P.textOffset, P.textBoxScale, )), h && D._rotate( u ? o.transform.angle : -o.transform.angle, )) : (z = !1); } S.textBox && At( e.textCollisionBox.collisionVertexArray, m.text.placed, !z || y, D.x, D.y, ), S.verticalTextBox && At( e.textCollisionBox.collisionVertexArray, m.text.placed, !z || x, D.x, D.y, ); } var M = Boolean(!x && S.verticalIconBox); S.iconBox && At( e.iconCollisionBox.collisionVertexArray, m.icon.placed, M, p ? D.x : 0, p ? D.y : 0, ), S.verticalIconBox && At( e.iconCollisionBox.collisionVertexArray, m.icon.placed, !M, p ? D.x : 0, p ? D.y : 0, ); } } }, m = 0; m < e.symbolInstances.length; m++ ) f(m); if ( (e.sortFeatures(this.transform.angle), this.retainedQueryData[e.bucketInstanceId] && (this.retainedQueryData[e.bucketInstanceId].featureSortOrder = e.featureSortOrder), e.hasTextData() && e.text.opacityVertexBuffer && e.text.opacityVertexBuffer.updateData(e.text.opacityVertexArray), e.hasIconData() && e.icon.opacityVertexBuffer && e.icon.opacityVertexBuffer.updateData(e.icon.opacityVertexArray), e.hasIconCollisionBoxData() && e.iconCollisionBox.collisionVertexBuffer && e.iconCollisionBox.collisionVertexBuffer.updateData( e.iconCollisionBox.collisionVertexArray, ), e.hasTextCollisionBoxData() && e.textCollisionBox.collisionVertexBuffer && e.textCollisionBox.collisionVertexBuffer.updateData( e.textCollisionBox.collisionVertexArray, ), e.text.opacityVertexArray.length !== e.text.layoutVertexArray.length / 4) ) throw new Error( 'bucket.text.opacityVertexArray.length (= ' + e.text.opacityVertexArray.length + ') !== bucket.text.layoutVertexArray.length (= ' + e.text.layoutVertexArray.length + ') / 4', ); if ( e.icon.opacityVertexArray.length !== e.icon.layoutVertexArray.length / 4 ) throw new Error( 'bucket.icon.opacityVertexArray.length (= ' + e.icon.opacityVertexArray.length + ') !== bucket.icon.layoutVertexArray.length (= ' + e.icon.layoutVertexArray.length + ') / 4', ); if (e.bucketInstanceId in this.collisionCircleArrays) { var g = this.collisionCircleArrays[e.bucketInstanceId]; (e.placementInvProjMatrix = g.invProjMatrix), (e.placementViewportMatrix = g.viewportMatrix), (e.collisionCircleArray = g.circles), delete this.collisionCircleArrays[e.bucketInstanceId]; } }), (Mt.prototype.symbolFadeChange = function (t) { return 0 === this.fadeDuration ? 1 : (t - this.commitTime) / this.fadeDuration + this.prevZoomAdjustment; }), (Mt.prototype.zoomAdjustment = function (t) { return Math.max(0, (this.transform.zoom - t) / 1.5); }), (Mt.prototype.hasTransitions = function (t) { return ( this.stale || t - this.lastPlacementChangeTime < this.fadeDuration ); }), (Mt.prototype.stillRecent = function (t, e) { var i = this.zoomAtLastRecencyCheck === e ? 1 - this.zoomAdjustment(e) : 1; return ( (this.zoomAtLastRecencyCheck = e), this.commitTime + this.fadeDuration * i > t ); }), (Mt.prototype.setStale = function () { this.stale = !0; }); var Rt = Math.pow(2, 25), Lt = Math.pow(2, 24), kt = Math.pow(2, 17), Bt = Math.pow(2, 16), Ot = Math.pow(2, 9), Ft = Math.pow(2, 8), Ut = Math.pow(2, 1); function Nt(t) { if (0 === t.opacity && !t.placed) return 0; if (1 === t.opacity && t.placed) return 4294967295; var e = t.placed ? 1 : 0, i = Math.floor(127 * t.opacity); return i * Rt + e * Lt + i * kt + e * Bt + i * Ot + e * Ft + i * Ut + e; } var Gt = 0, jt = function (t) { (this._sortAcrossTiles = 'viewport-y' !== t.layout.get('symbol-z-order') && !t.layout.get('symbol-sort-key').isConstant()), (this._currentTileIndex = 0), (this._currentPartIndex = 0), (this._seenCrossTileIDs = {}), (this._bucketParts = []); }; jt.prototype.continuePlacement = function (t, e, i, r, o) { for (var a = this._bucketParts; this._currentTileIndex < t.length; ) if ( (e.getBucketParts( a, r, t[this._currentTileIndex], this._sortAcrossTiles, ), this._currentTileIndex++, o()) ) return !0; for ( this._sortAcrossTiles && ((this._sortAcrossTiles = !1), a.sort(function (t, e) { return t.sortKey - e.sortKey; })); this._currentPartIndex < a.length; ) if ( (e.placeLayerBucketPart( a[this._currentPartIndex], this._seenCrossTileIDs, i, ), this._currentPartIndex++, o()) ) return !0; return !1; }; var Zt = function (t, e, i, r, o, a, n, s) { (this.placement = new Mt(t, e, a, n, s)), (this._currentPlacementIndex = i.length - 1), (this._forceFullPlacement = r), (this._showCollisionBoxes = o), (this._done = !1); }; (Zt.prototype.isDone = function () { return this._done; }), (Zt.prototype.continuePlacement = function (e, i, r) { for ( var o = this, a = t.exported.now(), n = function () { var e = t.exported.now() - a; return !o._forceFullPlacement && e > 2; }; this._currentPlacementIndex >= 0; ) { var s = i[e[this._currentPlacementIndex]], l = this.placement.collisionIndex.transform.zoom; if ( 'symbol' === s.type && (!s.minzoom || s.minzoom <= l) && (!s.maxzoom || s.maxzoom > l) ) { if ( (this._inProgressLayer || (this._inProgressLayer = new jt(s)), this._inProgressLayer.continuePlacement( r[s.source], this.placement, this._showCollisionBoxes, s, n, )) ) return; delete this._inProgressLayer; } this._currentPlacementIndex--; } this._done = !0; }), (Zt.prototype.commit = function (t) { return this.placement.commit(t), this.placement; }); var Vt = 512 / t.EXTENT / 2, qt = function (t, e, i) { (this.tileID = t), (this.indexedSymbolInstances = {}), (this.bucketInstanceId = i); for (var r = 0; r < e.length; r++) { var o = e.get(r), a = o.key; this.indexedSymbolInstances[a] || (this.indexedSymbolInstances[a] = []), this.indexedSymbolInstances[a].push({ crossTileID: o.crossTileID, coord: this.getScaledCoordinates(o, t), }); } }; (qt.prototype.getScaledCoordinates = function (e, i) { var r = Vt / Math.pow(2, i.canonical.z - this.tileID.canonical.z); return { x: Math.floor((i.canonical.x * t.EXTENT + e.anchorX) * r), y: Math.floor((i.canonical.y * t.EXTENT + e.anchorY) * r), }; }), (qt.prototype.findMatches = function (t, e, i) { for ( var r = this.tileID.canonical.z < e.canonical.z ? 1 : Math.pow(2, this.tileID.canonical.z - e.canonical.z), o = 0; o < t.length; o++ ) { var a = t.get(o); if (!a.crossTileID) { var n = this.indexedSymbolInstances[a.key]; if (n) for ( var s = this.getScaledCoordinates(a, e), l = 0, c = n; l < c.length; l += 1 ) { var h = c[l]; if ( Math.abs(h.coord.x - s.x) <= r && Math.abs(h.coord.y - s.y) <= r && !i[h.crossTileID] ) { (i[h.crossTileID] = !0), (a.crossTileID = h.crossTileID); break; } } } } }); var Xt = function () { this.maxCrossTileID = 0; }; Xt.prototype.generate = function () { return ++this.maxCrossTileID; }; var Wt = function () { (this.indexes = {}), (this.usedCrossTileIDs = {}), (this.lng = 0); }; (Wt.prototype.handleWrapJump = function (t) { var e = Math.round((t - this.lng) / 360); if (0 !== e) for (var i in this.indexes) { var r = this.indexes[i], o = {}; for (var a in r) { var n = r[a]; (n.tileID = n.tileID.unwrapTo(n.tileID.wrap + e)), (o[n.tileID.key] = n); } this.indexes[i] = o; } this.lng = t; }), (Wt.prototype.addBucket = function (t, e, i) { if (this.indexes[t.overscaledZ] && this.indexes[t.overscaledZ][t.key]) { if ( this.indexes[t.overscaledZ][t.key].bucketInstanceId === e.bucketInstanceId ) return !1; this.removeBucketCrossTileIDs( t.overscaledZ, this.indexes[t.overscaledZ][t.key], ); } for (var r = 0; r < e.symbolInstances.length; r++) e.symbolInstances.get(r).crossTileID = 0; this.usedCrossTileIDs[t.overscaledZ] || (this.usedCrossTileIDs[t.overscaledZ] = {}); var o = this.usedCrossTileIDs[t.overscaledZ]; for (var a in this.indexes) { var n = this.indexes[a]; if (Number(a) > t.overscaledZ) for (var s in n) { var l = n[s]; l.tileID.isChildOf(t) && l.findMatches(e.symbolInstances, t, o); } else { var c = n[t.scaledTo(Number(a)).key]; c && c.findMatches(e.symbolInstances, t, o); } } for (var h = 0; h < e.symbolInstances.length; h++) { var u = e.symbolInstances.get(h); u.crossTileID || ((u.crossTileID = i.generate()), (o[u.crossTileID] = !0)); } return ( void 0 === this.indexes[t.overscaledZ] && (this.indexes[t.overscaledZ] = {}), (this.indexes[t.overscaledZ][t.key] = new qt( t, e.symbolInstances, e.bucketInstanceId, )), !0 ); }), (Wt.prototype.removeBucketCrossTileIDs = function (t, e) { for (var i in e.indexedSymbolInstances) for (var r = 0, o = e.indexedSymbolInstances[i]; r < o.length; r += 1) delete this.usedCrossTileIDs[t][o[r].crossTileID]; }), (Wt.prototype.removeStaleBuckets = function (t) { var e = !1; for (var i in this.indexes) { var r = this.indexes[i]; for (var o in r) t[r[o].bucketInstanceId] || (this.removeBucketCrossTileIDs(i, r[o]), delete r[o], (e = !0)); } return e; }); var Ht = function () { (this.layerIndexes = {}), (this.crossTileIDs = new Xt()), (this.maxBucketInstanceId = 0), (this.bucketsInCurrentPlacement = {}); }; (Ht.prototype.addLayer = function (t, e, i) { var r = this.layerIndexes[t.id]; void 0 === r && (r = this.layerIndexes[t.id] = new Wt()); var o = !1, a = {}; r.handleWrapJump(i); for (var n = 0, s = e; n < s.length; n += 1) { var l = s[n], c = l.getBucket(t); c && t.id === c.layerIds[0] && (c.bucketInstanceId || (c.bucketInstanceId = ++this.maxBucketInstanceId), r.addBucket(l.tileID, c, this.crossTileIDs) && (o = !0), (a[c.bucketInstanceId] = !0)); } return r.removeStaleBuckets(a) && (o = !0), o; }), (Ht.prototype.pruneUnusedLayers = function (t) { var e = {}; for (var i in (t.forEach(function (t) { e[t] = !0; }), this.layerIndexes)) e[i] || delete this.layerIndexes[i]; }); var Kt = t.createLayout([{ name: 'a_pos', type: 'Int16', components: 2 }]), Yt = (function (e) { function i(t) { e.call(this), (this.sourceCache = t), (this._tiles = {}), (this._renderableTilesKeys = []), (this._sourceTileCache = {}), (this.renderHistory = []), (this.minzoom = 0), (this.maxzoom = 22), (this.tileSize = 512), (this.deltaZoom = 1), (this.renderHistorySize = t._cache.max), (t.usedForTerrain = !0), (t.tileSize = this.tileSize * Math.pow(2, this.deltaZoom)); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.destruct = function () { for (var t in ((this.sourceCache.usedForTerrain = !1), (this.sourceCache.tileSize = null), this._tiles)) { var e = this._tiles[t]; e.textures.forEach(function (t) { return t.destroy(); }), (e.textures = []); } }), (i.prototype.update = function (e, i) { this.sourceCache.update(e, i), (this._renderableTilesKeys = []); for ( var r = 0, o = e.coveringTiles({ tileSize: this.tileSize, minzoom: this.minzoom, maxzoom: this.maxzoom, reparseOverscaled: !1, terrain: i, }); r < o.length; r += 1 ) { var a = o[r]; this._renderableTilesKeys.push(a.key), this._tiles[a.key] || ((a.posMatrix = new Float64Array(16)), t.ortho(a.posMatrix, 0, t.EXTENT, 0, t.EXTENT, 0, 1), (this._tiles[a.key] = new O(a, this.tileSize))); } }), (i.prototype.removeOutdated = function (t) { var e = this, i = {}; this.renderHistory = this.renderHistory .filter(function (t, i) { return e.renderHistory.indexOf(t) === i; }) .slice(0, this.renderHistorySize); for (var r = 0, o = this._renderableTilesKeys; r < o.length; r += 1) i[o[r]] = !0; for (var a = 0, n = this.renderHistory; a < n.length; a += 1) i[n[a]] = !0; for (var s in this._tiles) i[s] || (this._tiles[s].clearTextures(t), delete this._tiles[s]); }), (i.prototype.getRenderableTiles = function () { var t = this; return this._renderableTilesKeys.map(function (e) { return t.getTileByID(e); }); }), (i.prototype.getTileByID = function (t) { return this._tiles[t]; }), (i.prototype.getTerrainCoords = function (e) { for ( var i = {}, r = 0, o = this._renderableTilesKeys; r < o.length; r += 1 ) { var a = o[r], n = this._tiles[a].tileID; if (n.canonical.equals(e.canonical)) { var s = e.clone(); (s.posMatrix = new Float64Array(16)), t.ortho(s.posMatrix, 0, t.EXTENT, 0, t.EXTENT, 0, 1), (i[a] = s); } else if (n.canonical.isChildOf(e.canonical)) { var l = e.clone(); l.posMatrix = new Float64Array(16); var c = n.canonical.z - e.canonical.z, h = n.canonical.x - ((n.canonical.x >> c) << c), u = n.canonical.y - ((n.canonical.y >> c) << c), p = t.EXTENT >> c; t.ortho(l.posMatrix, 0, p, 0, p, 0, 1), t.translate(l.posMatrix, l.posMatrix, [-h * p, -u * p, 0]), (i[a] = l); } else if (e.canonical.isChildOf(n.canonical)) { var d = e.clone(); d.posMatrix = new Float64Array(16); var _ = e.canonical.z - n.canonical.z, f = e.canonical.x - ((e.canonical.x >> _) << _), m = e.canonical.y - ((e.canonical.y >> _) << _), g = t.EXTENT >> _; t.ortho(d.posMatrix, 0, t.EXTENT, 0, t.EXTENT, 0, 1), t.translate(d.posMatrix, d.posMatrix, [f * g, m * g, 0]), t.scale(d.posMatrix, d.posMatrix, [ 1 / Math.pow(2, _), 1 / Math.pow(2, _), 0, ]), (i[a] = d); } } return i; }), (i.prototype.getSourceTile = function (t, e) { var i = this.sourceCache._source, r = t.overscaledZ - this.deltaZoom; if ((r > i.maxzoom && (r = i.maxzoom), r < i.minzoom)) return null; this._sourceTileCache[t.key] || (this._sourceTileCache[t.key] = t.scaledTo(r).key); var o = this.sourceCache.getTileByID(this._sourceTileCache[t.key]); if ((!o || !o.dem) && e) for (; r >= i.minzoom && (!o || !o.dem); ) o = this.sourceCache.getTileByID(t.scaledTo(r--).key); return o; }), (i.prototype.tilesAfterTime = function (t) { return ( void 0 === t && (t = Date.now()), Object.values(this._tiles).filter(function (e) { return e.timeLoaded >= t; }) ); }), i ); })(t.Evented), Jt = function (t, e, i) { (this.style = t), (this.sourceCache = new Yt(e)), (this.options = i), (this.exaggeration = 'number' == typeof i.exaggeration ? i.exaggeration : 1), (this.elevationOffset = 'number' == typeof i.elevationOffset ? i.elevationOffset : 450), (this.qualityFactor = 2), (this.meshSize = 128), (this._demMatrixCache = {}), (this.coordsIndex = []), (this._coordsTextureSize = 1024), this.clearRerenderCache(); }; (Jt.prototype.getDEMElevation = function (e, i, r, o) { if ( (void 0 === o && (o = t.EXTENT), !(i >= 0 && i < o && r >= 0 && r < o)) ) return this.elevationOffset; var a = 0, n = this.getTerrainData(e); if (n.tile && n.tile.dem) { var s = t.transformMat4$1( [], [(i / o) * t.EXTENT, (r / o) * t.EXTENT], n.u_terrain_matrix, ), l = [s[0] * n.tile.dem.dim, s[1] * n.tile.dem.dim], c = [Math.floor(l[0]), Math.floor(l[1])], h = n.tile.dem.get(c[0], c[1]), u = n.tile.dem.get(c[0], c[1] + 1), p = n.tile.dem.get(c[0] + 1, c[1]), d = n.tile.dem.get(c[0] + 1, c[1] + 1); a = t.number( t.number(h, u, l[0] - c[0]), t.number(p, d, l[0] - c[0]), l[1] - c[1], ); } return a; }), (Jt.prototype.rememberForRerender = function (t, e) { for (var i in this.sourceCache._tiles) { var r = this.sourceCache._tiles[i]; (r.tileID.equals(e) || r.tileID.isChildOf(e)) && (t === this.sourceCache.sourceCache.id && (r.timeLoaded = Date.now()), (this._rerender[t] = this._rerender[t] || {}), (this._rerender[t][r.tileID.key] = !0)); } }), (Jt.prototype.needsRerender = function (t, e) { return this._rerender[t] && this._rerender[t][e.key]; }), (Jt.prototype.clearRerenderCache = function () { this._rerender = {}; }), (Jt.prototype.getElevation = function (e, i, r, o) { return ( void 0 === o && (o = t.EXTENT), (this.getDEMElevation(e, i, r, o) + this.elevationOffset) * this.exaggeration ); }), (Jt.prototype.getTerrainData = function (e) { if (!this._emptyDemTexture) { var i = this.style.map.painter.context, r = new t.RGBAImage({ width: 1, height: 1 }, new Uint8Array(4)); (this._emptyDepthTexture = new l(i, r, i.gl.RGBA, { premultiply: !1, })), (this._emptyDemUnpack = [0, 0, 0, 0]), (this._emptyDemTexture = new l( i, new t.RGBAImage({ width: 1, height: 1 }), i.gl.RGBA, { premultiply: !1 }, )), this._emptyDemTexture.bind(i.gl.NEAREST, i.gl.CLAMP_TO_EDGE), (this._emptyDemMatrix = t.identity([])); } var o = this.sourceCache.getSourceTile(e, !0); if (o && o.dem && (!o.demTexture || o.needsTerrainPrepare)) { var a = this.style.map.painter.context; (o.demTexture = this.style.map.painter.getTileTexture(o.dem.stride)), o.demTexture ? o.demTexture.update(o.dem.getPixels(), { premultiply: !1 }) : (o.demTexture = new l(a, o.dem.getPixels(), a.gl.RGBA, { premultiply: !1, })), o.demTexture.bind(a.gl.NEAREST, a.gl.CLAMP_TO_EDGE), (o.needsTerrainPrepare = !1); } var n = o && o + o.tileID.key + e.key; if (n && !this._demMatrixCache[n]) { var s = this.sourceCache.sourceCache._source.maxzoom, c = e.canonical.z - o.tileID.canonical.z; e.overscaledZ > e.canonical.z && (e.canonical.z >= s ? (c = e.canonical.z - s) : t.warnOnce( 'cannot calculate elevation if elevation maxzoom > source.maxzoom', )); var h = e.canonical.x - ((e.canonical.x >> c) << c), u = e.canonical.y - ((e.canonical.y >> c) << c), p = t.fromScaling(new Float64Array(16), [ 1 / (t.EXTENT << c), 1 / (t.EXTENT << c), 0, ]); t.translate(p, p, [h * t.EXTENT, u * t.EXTENT, 0]), (this._demMatrixCache[e.key] = { matrix: p, coord: e }); } return { u_depth: 2, u_terrain: 3, u_terrain_dim: (o && o.dem && o.dem.dim) || 1, u_terrain_matrix: n ? this._demMatrixCache[e.key].matrix : this._emptyDemMatrix, u_terrain_unpack: (o && o.dem && o.dem.getUnpackVector()) || this._emptyDemUnpack, u_terrain_offset: this.elevationOffset, u_terrain_exaggeration: this.exaggeration, texture: ((o && o.demTexture) || this._emptyDemTexture).texture, depthTexture: (this._fboDepthTexture || this._emptyDepthTexture) .texture, tile: o, }; }), (Jt.prototype.getRTTFramebuffer = function () { var t = this.style.map.painter; if (!this._rttFramebuffer) { var e = this.sourceCache.tileSize * this.qualityFactor; (this._rttFramebuffer = t.context.createFramebuffer(e, e, !0)), this._rttFramebuffer.depthAttachment.set( t.context.createRenderbuffer( t.context.gl.DEPTH_COMPONENT16, e, e, ), ); } return this._rttFramebuffer; }), (Jt.prototype.getFramebuffer = function (t) { var e = this.style.map.painter, i = e.width / devicePixelRatio, r = e.height / devicePixelRatio; return ( !this._fbo || (this._fbo.width === i && this._fbo.height === r) || (this._fbo.destroy(), this._fboCoordsTexture.destroy(), this._fboDepthTexture.destroy(), delete this._fbo, delete this._fboDepthTexture, delete this._fboCoordsTexture), this._fboCoordsTexture || ((this._fboCoordsTexture = new l( e.context, { width: i, height: r, data: null }, e.context.gl.RGBA, { premultiply: !1 }, )), this._fboCoordsTexture.bind( e.context.gl.NEAREST, e.context.gl.CLAMP_TO_EDGE, )), this._fboDepthTexture || ((this._fboDepthTexture = new l( e.context, { width: i, height: r, data: null }, e.context.gl.RGBA, { premultiply: !1 }, )), this._fboDepthTexture.bind( e.context.gl.NEAREST, e.context.gl.CLAMP_TO_EDGE, )), this._fbo || ((this._fbo = e.context.createFramebuffer(i, r, !0)), this._fbo.depthAttachment.set( e.context.createRenderbuffer( e.context.gl.DEPTH_COMPONENT16, i, r, ), )), this._fbo.colorAttachment.set( 'coords' === t ? this._fboCoordsTexture.texture : this._fboDepthTexture.texture, ), this._fbo ); }), (Jt.prototype.getCoordsTexture = function () { var e = this.style.map.painter.context; if (this._coordsTexture) return this._coordsTexture; for ( var i = new Uint8Array( this._coordsTextureSize * this._coordsTextureSize * 4, ), r = 0, o = 0; r < this._coordsTextureSize; r++ ) for (var a = 0; a < this._coordsTextureSize; a++, o += 4) (i[o + 0] = 255 & a), (i[o + 1] = 255 & r), (i[o + 2] = ((a >> 8) << 4) | (r >> 8)), (i[o + 3] = 0); var n = new t.RGBAImage( { width: this._coordsTextureSize, height: this._coordsTextureSize }, new Uint8Array(i.buffer), ), s = new l(e, n, e.gl.RGBA, { premultiply: !1 }); return ( s.bind(e.gl.NEAREST, e.gl.CLAMP_TO_EDGE), (this._coordsTexture = s), s ); }), (Jt.prototype.pointCoordinate = function (e) { var i = new Uint8Array(4), r = this.style.map.painter, o = r.context, a = o.gl; o.bindFramebuffer.set(this.getFramebuffer('coords').framebuffer), a.readPixels( e.x, r.height / devicePixelRatio - e.y - 1, 1, 1, a.RGBA, a.UNSIGNED_BYTE, i, ), o.bindFramebuffer.set(null); var n = i[0] + ((i[2] >> 4) << 8), s = i[1] + ((15 & i[2]) << 8), l = this.coordsIndex[255 - i[3]], c = l && this.sourceCache.getTileByID(l); if (!c) return null; var h = this._coordsTextureSize, u = (1 << c.tileID.canonical.z) * h; return new t.MercatorCoordinate( (c.tileID.canonical.x * h + n) / u, (c.tileID.canonical.y * h + s) / u, this.getElevation(c.tileID, n, s, h), ); }), (Jt.prototype.getTerrainMesh = function () { if (this._mesh) return this._mesh; for ( var e = this.style.map.painter.context, i = new t.PosArray(), r = new t.TriangleIndexArray(), o = this.meshSize, a = t.EXTENT / o, n = o * o, s = 0; s <= o; s++ ) for (var l = 0; l <= o; l++) i.emplaceBack(l * a, s * a); for (var c = 0; c < n; c += o + 1) for (var h = 0; h < o; h++) r.emplaceBack(h + c, o + h + c + 1, o + h + c + 2), r.emplaceBack(h + c, o + h + c + 2, h + c + 1); return ( (this._mesh = { indexBuffer: e.createIndexBuffer(r), vertexBuffer: e.createVertexBuffer(i, Kt.members), segments: t.SegmentVector.simpleSegment(0, 0, i.length, r.length), }), this._mesh ); }), (Jt.prototype.getMinMaxElevation = function (t) { var e = this.getTerrainData(t).tile, i = { minElevation: null, maxElevation: null }; return ( e && e.dem && ((i.minElevation = (e.dem.min + this.elevationOffset) * this.exaggeration), (i.maxElevation = (e.dem.max + this.elevationOffset) * this.exaggeration)), i ); }); var Qt = function (e, i) { return t.emitValidationErrors( e, i && i.filter(function (t) { return 'source.canvas' !== t.identifier; }), ); }, $t = t.pick(Y, [ 'addLayer', 'removeLayer', 'setPaintProperty', 'setLayoutProperty', 'setFilter', 'addSource', 'removeSource', 'setLayerZoomRange', 'setLight', 'setTransition', 'setGeoJSONSourceData', ]), te = t.pick(Y, ['setCenter', 'setZoom', 'setBearing', 'setPitch']), ee = (function () { var e = {}, i = t.spec.$version; for (var r in t.spec.$root) { var o, a = t.spec.$root[r]; if (a.required) null != (o = 'version' === r ? i : 'array' === a.type ? [] : {}) && (e[r] = o); } return e; })(), ie = (function (e) { function i(r, o) { var a = this; void 0 === o && (o = {}), e.call(this), (this.map = r), (this.dispatcher = new b(W(), this)), (this.imageManager = new h()), this.imageManager.setEventedParent(this), (this.glyphManager = new f( r._requestManager, o.localIdeographFontFamily, )), (this.lineAtlas = new x(256, 512)), (this.crossTileSymbolIndex = new Ht()), (this._layers = {}), (this._serializedLayers = {}), (this._order = []), (this.sourceCaches = {}), (this.zoomHistory = new t.ZoomHistory()), (this._loaded = !1), (this._availableImages = []), this._resetUpdates(), this.dispatcher.broadcast('setReferrer', t.getReferrer()); var n = this; (this._rtlTextPluginCallback = i.registerForPluginStateChange( function (e) { n.dispatcher.broadcast( 'syncRTLPluginState', { pluginStatus: e.pluginStatus, pluginURL: e.pluginURL }, function (e, i) { if ( (t.triggerPluginCompletionEvent(e), i && i.every(function (t) { return t; })) ) for (var r in n.sourceCaches) n.sourceCaches[r].reload(); }, ); }, )), this.on('data', function (t) { if ('source' === t.dataType && 'metadata' === t.sourceDataType) { var e = a.sourceCaches[t.sourceId]; if (e) { var i = e.getSource(); if (i && i.vectorLayerIds) for (var r in a._layers) { var o = a._layers[r]; o.source === i.id && a._validateLayer(o); } } } }); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.loadURL = function (e, i) { var r = this; void 0 === i && (i = {}), this.fire(new t.Event('dataloading', { dataType: 'style' })); var o = 'boolean' != typeof i.validate || i.validate, a = this.map._requestManager.transformRequest( e, t.ResourceType.Style, ); this._request = t.getJSON(a, function (e, i) { (r._request = null), e ? r.fire(new t.ErrorEvent(e)) : i && r._load(i, o); }); }), (i.prototype.loadJSON = function (e, i) { var r = this; void 0 === i && (i = {}), this.fire(new t.Event('dataloading', { dataType: 'style' })), (this._request = t.exported.frame(function () { (r._request = null), r._load(e, !1 !== i.validate); })); }), (i.prototype.loadEmpty = function () { this.fire(new t.Event('dataloading', { dataType: 'style' })), this._load(ee, !1); }), (i.prototype._load = function (e, i) { if (!i || !Qt(this, t.validateStyle(e))) { for (var r in ((this._loaded = !0), (this.stylesheet = e), e.sources)) this.addSource(r, e.sources[r], { validate: !1 }); e.sprite ? this._loadSprite(e.sprite) : this.imageManager.setLoaded(!0), this.glyphManager.setURL(e.glyphs); var o = K(this.stylesheet.layers); (this._order = o.map(function (t) { return t.id; })), (this._layers = {}), (this._serializedLayers = {}); for (var a = 0, n = o; a < n.length; a += 1) { var s = n[a]; (s = t.createStyleLayer(s)).setEventedParent(this, { layer: { id: s.id }, }), (this._layers[s.id] = s), (this._serializedLayers[s.id] = s.serialize()); } this.dispatcher.broadcast( 'setLayers', this._serializeLayers(this._order), ), (this.light = new y(this.stylesheet.light)), this.setTerrain(this.stylesheet.terrain), this.fire(new t.Event('data', { dataType: 'style' })), this.fire(new t.Event('style.load')); } }), (i.prototype._loadSprite = function (e) { var i = this; this._spriteRequest = (function (e, i, r, o) { var a, n, s, l = r > 1 ? '@2x' : '', c = t.getJSON( i.transformRequest( i.normalizeSpriteURL(e, l, '.json'), t.ResourceType.SpriteJSON, ), function (t, e) { (c = null), s || ((s = t), (a = e), u()); }, ), h = t.getImage( i.transformRequest( i.normalizeSpriteURL(e, l, '.png'), t.ResourceType.SpriteImage, ), function (t, e) { (h = null), s || ((s = t), (n = e), u()); }, ); function u() { if (s) o(s); else if (a && n) { var e = t.exported.getImageData(n), i = {}; for (var r in a) { var l = a[r], c = l.width, h = l.height, u = l.x, p = l.y, d = l.sdf, _ = l.pixelRatio, f = l.stretchX, m = l.stretchY, g = l.content, v = new t.RGBAImage({ width: c, height: h }); t.RGBAImage.copy( e, v, { x: u, y: p }, { x: 0, y: 0 }, { width: c, height: h }, ), (i[r] = { data: v, pixelRatio: _, sdf: d, stretchX: f, stretchY: m, content: g, }); } o(null, i); } } return { cancel: function () { c && (c.cancel(), (c = null)), h && (h.cancel(), (h = null)); }, }; })( e, this.map._requestManager, this.map.getPixelRatio(), function (e, r) { if (((i._spriteRequest = null), e)) i.fire(new t.ErrorEvent(e)); else if (r) for (var o in r) i.imageManager.addImage(o, r[o]); i.imageManager.setLoaded(!0), (i._availableImages = i.imageManager.listImages()), i.dispatcher.broadcast('setImages', i._availableImages), i.fire(new t.Event('data', { dataType: 'style' })); }, ); }), (i.prototype._validateLayer = function (e) { var i = this.sourceCaches[e.source]; if (i) { var r = e.sourceLayer; if (r) { var o = i.getSource(); ('geojson' === o.type || (o.vectorLayerIds && -1 === o.vectorLayerIds.indexOf(r))) && this.fire( new t.ErrorEvent( new Error( 'Source layer "' + r + '" does not exist on source "' + o.id + '" as specified by style layer "' + e.id + '".', ), ), ); } } }), (i.prototype.loaded = function () { if (!this._loaded) return !1; if (Object.keys(this._updatedSources).length) return !1; for (var t in this.sourceCaches) if (!this.sourceCaches[t].loaded()) return !1; return !!this.imageManager.isLoaded(); }), (i.prototype._serializeLayers = function (t) { for (var e = [], i = 0, r = t; i < r.length; i += 1) { var o = this._layers[r[i]]; 'custom' !== o.type && e.push(o.serialize()); } return e; }), (i.prototype.hasTransitions = function () { if (this.light && this.light.hasTransition()) return !0; for (var t in this.sourceCaches) if (this.sourceCaches[t].hasTransition()) return !0; for (var e in this._layers) if (this._layers[e].hasTransition()) return !0; return !1; }), (i.prototype._checkLoaded = function () { if (!this._loaded) throw new Error('Style is not done loading.'); }), (i.prototype.update = function (e) { if (this._loaded) { var i = this._changed; if (this._changed) { var r = Object.keys(this._updatedLayers), o = Object.keys(this._removedLayers); for (var a in ((r.length || o.length) && this._updateWorkerLayers(r, o), this._updatedSources)) { var n = this._updatedSources[a]; if ('reload' === n) this._reloadSource(a); else { if ('clear' !== n) throw new Error('Invalid action ' + n); this._clearSource(a); } } for (var s in (this._updateTilesForChangedImages(), this._updatedPaintProps)) this._layers[s].updateTransitions(e); this.light.updateTransitions(e), this._resetUpdates(); } var l = {}; for (var c in this.sourceCaches) { var h = this.sourceCaches[c]; (l[c] = h.used), (h.used = !1); } for (var u = 0, p = this._order; u < p.length; u += 1) { var d = this._layers[p[u]]; d.recalculate(e, this._availableImages), !d.isHidden(e.zoom) && d.source && (this.sourceCaches[d.source].used = !0); } for (var _ in l) { var f = this.sourceCaches[_]; l[_] !== f.used && f.fire( new t.Event('data', { sourceDataType: 'visibility', dataType: 'source', sourceId: _, }), ); } this.light.recalculate(e), (this.z = e.zoom), i && this.fire(new t.Event('data', { dataType: 'style' })); } }), (i.prototype._updateTilesForChangedImages = function () { var t = Object.keys(this._changedImages); if (t.length) { for (var e in this.sourceCaches) this.sourceCaches[e].reloadTilesForDependencies( ['icons', 'patterns'], t, ); this._changedImages = {}; } }), (i.prototype._updateWorkerLayers = function (t, e) { this.dispatcher.broadcast('updateLayers', { layers: this._serializeLayers(t), removedIds: e, }); }), (i.prototype._resetUpdates = function () { (this._changed = !1), (this._updatedLayers = {}), (this._removedLayers = {}), (this._updatedSources = {}), (this._updatedPaintProps = {}), (this._changedImages = {}); }), (i.prototype.setTerrain = function (e) { var i = this; if ( (this._checkLoaded(), this._terrainDataCallback && this.off('data', this._terrainDataCallback), this._terrainfreezeElevationCallback && this.map.off( 'freezeElevation', this._terrainfreezeElevationCallback, ), e) ) { var r = this.sourceCaches[e.source]; if (!r) throw new Error( 'cannot load terrain, because there exists no source with ID: ' + e.source, ); (this.terrain = new Jt(this, r, e)), this.map.transform.updateElevation(this.terrain), (this._terrainfreezeElevationCallback = function (t) { t.freeze ? (i.map.transform.freezeElevation = !0) : ((i.map.transform.freezeElevation = !1), i.map.transform.recalculateZoom(i.terrain)); }), (this._terrainDataCallback = function (t) { t.tile && (t.sourceId === e.source ? (i.map.transform.updateElevation(i.terrain), i.terrain.rememberForRerender( t.sourceId, t.tile.tileID, )) : 'geojson' === t.source.type && i.terrain.rememberForRerender( t.sourceId, t.tile.tileID, )); }), this.on('data', this._terrainDataCallback), this.map.on( 'freezeElevation', this._terrainfreezeElevationCallback, ); } else this.terrain && this.terrain.sourceCache.destruct(), (this.terrain = null), this.map.transform.updateElevation(this.terrain); this.map.fire(new t.Event('terrain', { terrain: e })); }), (i.prototype.setState = function (e) { var i = this; if ((this._checkLoaded(), Qt(this, t.validateStyle(e)))) return !1; (e = t.clone$1(e)).layers = K(e.layers); var r = (function (t, e) { if (!t) return [{ command: Y.setStyle, args: [e] }]; var i = []; try { if (!o(t.version, e.version)) return [{ command: Y.setStyle, args: [e] }]; o(t.center, e.center) || i.push({ command: Y.setCenter, args: [e.center] }), o(t.zoom, e.zoom) || i.push({ command: Y.setZoom, args: [e.zoom] }), o(t.bearing, e.bearing) || i.push({ command: Y.setBearing, args: [e.bearing] }), o(t.pitch, e.pitch) || i.push({ command: Y.setPitch, args: [e.pitch] }), o(t.sprite, e.sprite) || i.push({ command: Y.setSprite, args: [e.sprite] }), o(t.glyphs, e.glyphs) || i.push({ command: Y.setGlyphs, args: [e.glyphs] }), o(t.transition, e.transition) || i.push({ command: Y.setTransition, args: [e.transition] }), o(t.light, e.light) || i.push({ command: Y.setLight, args: [e.light] }); var r = {}, a = []; !(function (t, e, i, r) { var a; for (a in ((e = e || {}), (t = t || {}))) Object.prototype.hasOwnProperty.call(t, a) && (Object.prototype.hasOwnProperty.call(e, a) || Q(a, i, r)); for (a in e) Object.prototype.hasOwnProperty.call(e, a) && (Object.prototype.hasOwnProperty.call(t, a) ? o(t[a], e[a]) || ('geojson' === t[a].type && 'geojson' === e[a].type && tt(t, e, a) ? i.push({ command: Y.setGeoJSONSourceData, args: [a, e[a].data], }) : $(a, e, i, r)) : J(a, e, i)); })(t.sources, e.sources, a, r); var n = []; t.layers && t.layers.forEach(function (t) { r[t.source] ? i.push({ command: Y.removeLayer, args: [t.id] }) : n.push(t); }), (i = i.concat(a)), (function (t, e, i) { e = e || []; var r, a, n, s, l, c, h, u = (t = t || []).map(it), p = e.map(it), d = t.reduce(rt, {}), _ = e.reduce(rt, {}), f = u.slice(), m = Object.create(null); for (r = 0, a = 0; r < u.length; r++) (n = u[r]), Object.prototype.hasOwnProperty.call(_, n) ? a++ : (i.push({ command: Y.removeLayer, args: [n] }), f.splice(f.indexOf(n, a), 1)); for (r = 0, a = 0; r < p.length; r++) f[f.length - 1 - r] !== (n = p[p.length - 1 - r]) && (Object.prototype.hasOwnProperty.call(d, n) ? (i.push({ command: Y.removeLayer, args: [n] }), f.splice(f.lastIndexOf(n, f.length - a), 1)) : a++, i.push({ command: Y.addLayer, args: [_[n], (c = f[f.length - r])], }), f.splice(f.length - r, 0, n), (m[n] = !0)); for (r = 0; r < p.length; r++) if (((s = d[(n = p[r])]), (l = _[n]), !m[n] && !o(s, l))) if ( o(s.source, l.source) && o(s['source-layer'], l['source-layer']) && o(s.type, l.type) ) { for (h in (et( s.layout, l.layout, i, n, null, Y.setLayoutProperty, ), et(s.paint, l.paint, i, n, null, Y.setPaintProperty), o(s.filter, l.filter) || i.push({ command: Y.setFilter, args: [n, l.filter], }), (o(s.minzoom, l.minzoom) && o(s.maxzoom, l.maxzoom)) || i.push({ command: Y.setLayerZoomRange, args: [n, l.minzoom, l.maxzoom], }), s)) Object.prototype.hasOwnProperty.call(s, h) && 'layout' !== h && 'paint' !== h && 'filter' !== h && 'metadata' !== h && 'minzoom' !== h && 'maxzoom' !== h && (0 === h.indexOf('paint.') ? et( s[h], l[h], i, n, h.slice(6), Y.setPaintProperty, ) : o(s[h], l[h]) || i.push({ command: Y.setLayerProperty, args: [n, h, l[h]], })); for (h in l) Object.prototype.hasOwnProperty.call(l, h) && !Object.prototype.hasOwnProperty.call(s, h) && 'layout' !== h && 'paint' !== h && 'filter' !== h && 'metadata' !== h && 'minzoom' !== h && 'maxzoom' !== h && (0 === h.indexOf('paint.') ? et( s[h], l[h], i, n, h.slice(6), Y.setPaintProperty, ) : o(s[h], l[h]) || i.push({ command: Y.setLayerProperty, args: [n, h, l[h]], })); } else i.push({ command: Y.removeLayer, args: [n] }), (c = f[f.lastIndexOf(n) + 1]), i.push({ command: Y.addLayer, args: [l, c] }); })(n, e.layers, i); } catch (t) { console.warn('Unable to compute style diff:', t), (i = [{ command: Y.setStyle, args: [e] }]); } return i; })(this.serialize(), e).filter(function (t) { return !(t.command in te); }); if (0 === r.length) return !1; var a = r.filter(function (t) { return !(t.command in $t); }); if (a.length > 0) throw new Error( 'Unimplemented: ' + a .map(function (t) { return t.command; }) .join(', ') + '.', ); return ( r.forEach(function (t) { 'setTransition' !== t.command && i[t.command].apply(i, t.args); }), (this.stylesheet = e), !0 ); }), (i.prototype.addImage = function (e, i) { if (this.getImage(e)) return this.fire( new t.ErrorEvent( new Error('An image named "' + e + '" already exists.'), ), ); this.imageManager.addImage(e, i), this._afterImageUpdated(e); }), (i.prototype.updateImage = function (t, e) { this.imageManager.updateImage(t, e); }), (i.prototype.getImage = function (t) { return this.imageManager.getImage(t); }), (i.prototype.removeImage = function (e) { if (!this.getImage(e)) return this.fire( new t.ErrorEvent( new Error('An image named "' + e + '" does not exist.'), ), ); this.imageManager.removeImage(e), this._afterImageUpdated(e); }), (i.prototype._afterImageUpdated = function (e) { (this._availableImages = this.imageManager.listImages()), (this._changedImages[e] = !0), (this._changed = !0), this.dispatcher.broadcast('setImages', this._availableImages), this.fire(new t.Event('data', { dataType: 'style' })); }), (i.prototype.listImages = function () { return this._checkLoaded(), this.imageManager.listImages(); }), (i.prototype.addSource = function (e, i, r) { var o = this; if ( (void 0 === r && (r = {}), this._checkLoaded(), void 0 !== this.sourceCaches[e]) ) throw new Error('Source "' + e + '" already exists.'); if (!i.type) throw new Error( 'The type property must be defined, but only the following properties were given: ' + Object.keys(i).join(', ') + '.', ); if ( !( ['vector', 'raster', 'geojson', 'video', 'image'].indexOf( i.type, ) >= 0 && this._validate( t.validateStyle.source, 'sources.' + e, i, null, r, ) ) ) { this.map && this.map._collectResourceTiming && (i.collectResourceTiming = !0); var a = (this.sourceCaches[e] = new N(e, i, this.dispatcher)); (a.style = this), a.setEventedParent(this, function () { return { isSourceLoaded: o.loaded(), source: a.serialize(), sourceId: e, }; }), a.onAdd(this.map), (this._changed = !0); } }), (i.prototype.removeSource = function (e) { if ((this._checkLoaded(), void 0 === this.sourceCaches[e])) throw new Error('There is no source with this ID'); for (var i in this._layers) if (this._layers[i].source === e) return this.fire( new t.ErrorEvent( new Error( 'Source "' + e + '" cannot be removed while layer "' + i + '" is using it.', ), ), ); var r = this.sourceCaches[e]; delete this.sourceCaches[e], delete this._updatedSources[e], r.fire( new t.Event('data', { sourceDataType: 'metadata', dataType: 'source', sourceId: e, }), ), r.setEventedParent(null), r.onRemove(this.map), (this._changed = !0); }), (i.prototype.setGeoJSONSourceData = function (t, e) { if ((this._checkLoaded(), void 0 === this.sourceCaches[t])) throw new Error('There is no source with this ID=' + t); var i = this.sourceCaches[t].getSource(); if ('geojson' !== i.type) throw new Error( 'geojsonSource.type is ' + i.type + ", which is !== 'geojson", ); i.setData(e), (this._changed = !0); }), (i.prototype.getSource = function (t) { return this.sourceCaches[t] && this.sourceCaches[t].getSource(); }), (i.prototype.addLayer = function (e, i, r) { void 0 === r && (r = {}), this._checkLoaded(); var o = e.id; if (this.getLayer(o)) this.fire( new t.ErrorEvent( new Error('Layer "' + o + '" already exists on this map.'), ), ); else { var a; if ('custom' === e.type) { if (Qt(this, t.validateCustomStyleLayer(e))) return; a = t.createStyleLayer(e); } else { if ( ('object' == typeof e.source && (this.addSource(o, e.source), (e = t.clone$1(e)), (e = t.extend(e, { source: o }))), this._validate( t.validateStyle.layer, 'layers.' + o, e, { arrayIndex: -1 }, r, )) ) return; (a = t.createStyleLayer(e)), this._validateLayer(a), a.setEventedParent(this, { layer: { id: o } }), (this._serializedLayers[a.id] = a.serialize()); } var n = i ? this._order.indexOf(i) : this._order.length; if (i && -1 === n) this.fire( new t.ErrorEvent( new Error( 'Cannot add layer "' + o + '" before non-existing layer "' + i + '".', ), ), ); else { if ( (this._order.splice(n, 0, o), (this._layerOrderChanged = !0), (this._layers[o] = a), this._removedLayers[o] && a.source && 'custom' !== a.type) ) { var s = this._removedLayers[o]; delete this._removedLayers[o], s.type !== a.type ? (this._updatedSources[a.source] = 'clear') : ((this._updatedSources[a.source] = 'reload'), this.sourceCaches[a.source].pause()); } this._updateLayer(a), a.onAdd && a.onAdd(this.map); } } }), (i.prototype.moveLayer = function (e, i) { if ((this._checkLoaded(), (this._changed = !0), this._layers[e])) { if (e !== i) { var r = this._order.indexOf(e); this._order.splice(r, 1); var o = i ? this._order.indexOf(i) : this._order.length; i && -1 === o ? this.fire( new t.ErrorEvent( new Error( 'Cannot move layer "' + e + '" before non-existing layer "' + i + '".', ), ), ) : (this._order.splice(o, 0, e), (this._layerOrderChanged = !0)); } } else this.fire( new t.ErrorEvent( new Error( "The layer '" + e + "' does not exist in the map's style and cannot be moved.", ), ), ); }), (i.prototype.removeLayer = function (e) { this._checkLoaded(); var i = this._layers[e]; if (i) { i.setEventedParent(null); var r = this._order.indexOf(e); this._order.splice(r, 1), (this._layerOrderChanged = !0), (this._changed = !0), (this._removedLayers[e] = i), delete this._layers[e], delete this._serializedLayers[e], delete this._updatedLayers[e], delete this._updatedPaintProps[e], i.onRemove && i.onRemove(this.map); } else this.fire( new t.ErrorEvent( new Error('Cannot remove non-existing layer "' + e + '".'), ), ); }), (i.prototype.getLayer = function (t) { return this._layers[t]; }), (i.prototype.hasLayer = function (t) { return t in this._layers; }), (i.prototype.setLayerZoomRange = function (e, i, r) { this._checkLoaded(); var o = this.getLayer(e); o ? (o.minzoom === i && o.maxzoom === r) || (null != i && (o.minzoom = i), null != r && (o.maxzoom = r), this._updateLayer(o)) : this.fire( new t.ErrorEvent( new Error( 'Cannot set the zoom range of non-existing layer "' + e + '".', ), ), ); }), (i.prototype.setFilter = function (e, i, r) { void 0 === r && (r = {}), this._checkLoaded(); var a = this.getLayer(e); if (a) { if (!o(a.filter, i)) return null == i ? ((a.filter = void 0), void this._updateLayer(a)) : void ( this._validate( t.validateStyle.filter, 'layers.' + a.id + '.filter', i, null, r, ) || ((a.filter = t.clone$1(i)), this._updateLayer(a)) ); } else this.fire( new t.ErrorEvent( new Error('Cannot filter non-existing layer "' + e + '".'), ), ); }), (i.prototype.getFilter = function (e) { return t.clone$1(this.getLayer(e).filter); }), (i.prototype.setLayoutProperty = function (e, i, r, a) { void 0 === a && (a = {}), this._checkLoaded(); var n = this.getLayer(e); n ? o(n.getLayoutProperty(i), r) || (n.setLayoutProperty(i, r, a), this._updateLayer(n)) : this.fire( new t.ErrorEvent( new Error('Cannot style non-existing layer "' + e + '".'), ), ); }), (i.prototype.getLayoutProperty = function (e, i) { var r = this.getLayer(e); if (r) return r.getLayoutProperty(i); this.fire( new t.ErrorEvent( new Error( 'Cannot get style of non-existing layer "' + e + '".', ), ), ); }), (i.prototype.setPaintProperty = function (e, i, r, a) { void 0 === a && (a = {}), this._checkLoaded(); var n = this.getLayer(e); n ? o(n.getPaintProperty(i), r) || (n.setPaintProperty(i, r, a) && this._updateLayer(n), (this._changed = !0), (this._updatedPaintProps[e] = !0)) : this.fire( new t.ErrorEvent( new Error('Cannot style non-existing layer "' + e + '".'), ), ); }), (i.prototype.getPaintProperty = function (t, e) { return this.getLayer(t).getPaintProperty(e); }), (i.prototype.setFeatureState = function (e, i) { this._checkLoaded(); var r = e.source, o = e.sourceLayer, a = this.sourceCaches[r]; if (void 0 !== a) { var n = a.getSource().type; 'geojson' === n && o ? this.fire( new t.ErrorEvent( new Error( 'GeoJSON sources cannot have a sourceLayer parameter.', ), ), ) : 'vector' !== n || o ? (void 0 === e.id && this.fire( new t.ErrorEvent( new Error('The feature id parameter must be provided.'), ), ), a.setFeatureState(o, e.id, i)) : this.fire( new t.ErrorEvent( new Error( 'The sourceLayer parameter must be provided for vector source types.', ), ), ); } else this.fire( new t.ErrorEvent( new Error( "The source '" + r + "' does not exist in the map's style.", ), ), ); }), (i.prototype.removeFeatureState = function (e, i) { this._checkLoaded(); var r = e.source, o = this.sourceCaches[r]; if (void 0 !== o) { var a = o.getSource().type, n = 'vector' === a ? e.sourceLayer : void 0; 'vector' !== a || n ? i && 'string' != typeof e.id && 'number' != typeof e.id ? this.fire( new t.ErrorEvent( new Error( 'A feature id is required to remove its specific state property.', ), ), ) : o.removeFeatureState(n, e.id, i) : this.fire( new t.ErrorEvent( new Error( 'The sourceLayer parameter must be provided for vector source types.', ), ), ); } else this.fire( new t.ErrorEvent( new Error( "The source '" + r + "' does not exist in the map's style.", ), ), ); }), (i.prototype.getFeatureState = function (e) { this._checkLoaded(); var i = e.source, r = e.sourceLayer, o = this.sourceCaches[i]; if (void 0 !== o) { if ('vector' !== o.getSource().type || r) return ( void 0 === e.id && this.fire( new t.ErrorEvent( new Error('The feature id parameter must be provided.'), ), ), o.getFeatureState(r, e.id) ); this.fire( new t.ErrorEvent( new Error( 'The sourceLayer parameter must be provided for vector source types.', ), ), ); } else this.fire( new t.ErrorEvent( new Error( "The source '" + i + "' does not exist in the map's style.", ), ), ); }), (i.prototype.getTransition = function () { return t.extend( { duration: 300, delay: 0 }, this.stylesheet && this.stylesheet.transition, ); }), (i.prototype.serialize = function () { return t.filterObject( { version: this.stylesheet.version, name: this.stylesheet.name, metadata: this.stylesheet.metadata, light: this.stylesheet.light, center: this.stylesheet.center, zoom: this.stylesheet.zoom, bearing: this.stylesheet.bearing, pitch: this.stylesheet.pitch, sprite: this.stylesheet.sprite, glyphs: this.stylesheet.glyphs, transition: this.stylesheet.transition, sources: t.mapObject(this.sourceCaches, function (t) { return t.serialize(); }), layers: this._serializeLayers(this._order), }, function (t) { return void 0 !== t; }, ); }), (i.prototype._updateLayer = function (t) { (this._updatedLayers[t.id] = !0), t.source && !this._updatedSources[t.source] && 'raster' !== this.sourceCaches[t.source].getSource().type && ((this._updatedSources[t.source] = 'reload'), this.sourceCaches[t.source].pause()), (this._changed = !0); }), (i.prototype._flattenAndSortRenderedFeatures = function (t) { for ( var e = this, i = function (t) { return 'fill-extrusion' === e._layers[t].type; }, r = {}, o = [], a = this._order.length - 1; a >= 0; a-- ) { var n = this._order[a]; if (i(n)) { r[n] = a; for (var s = 0, l = t; s < l.length; s += 1) { var c = l[s][n]; if (c) for (var h = 0, u = c; h < u.length; h += 1) o.push(u[h]); } } } o.sort(function (t, e) { return e.intersectionZ - t.intersectionZ; }); for (var p = [], d = this._order.length - 1; d >= 0; d--) { var _ = this._order[d]; if (i(_)) for (var f = o.length - 1; f >= 0; f--) { var m = o[f].feature; if (r[m.layer.id] < d) break; p.push(m), o.pop(); } else for (var g = 0, v = t; g < v.length; g += 1) { var y = v[g][_]; if (y) for (var x = 0, b = y; x < b.length; x += 1) p.push(b[x].feature); } } return p; }), (i.prototype.queryRenderedFeatures = function (e, i, r) { i && i.filter && this._validate( t.validateStyle.filter, 'queryRenderedFeatures.filter', i.filter, null, i, ); var o = {}; if (i && i.layers) { if (!Array.isArray(i.layers)) return ( this.fire( new t.ErrorEvent( new Error('parameters.layers must be an Array.'), ), ), [] ); for (var a = 0, n = i.layers; a < n.length; a += 1) { var s = n[a], l = this._layers[s]; if (!l) return ( this.fire( new t.ErrorEvent( new Error( "The layer '" + s + "' does not exist in the map's style and cannot be queried for features.", ), ), ), [] ); o[l.source] = !0; } } var c = []; for (var h in ((i.availableImages = this._availableImages), this.sourceCaches)) (i.layers && !o[h]) || c.push( k( this.sourceCaches[h], this._layers, this._serializedLayers, e, i, r, ), ); return ( this.placement && c.push( (function (t, e, i, r, o, a, n) { for ( var s = {}, l = a.queryRenderedSymbols(r), c = [], h = 0, u = Object.keys(l).map(Number); h < u.length; h += 1 ) c.push(n[u[h]]); c.sort(B); for ( var p = function () { var i = _[d], r = i.featureIndex.lookupSymbolFeatures( l[i.bucketInstanceId], e, i.bucketIndex, i.sourceLayerIndex, o.filter, o.layers, o.availableImages, t, ); for (var a in r) { var n = (s[a] = s[a] || []), c = r[a]; c.sort(function (t, e) { var r = i.featureSortOrder; if (r) { var o = r.indexOf(t.featureIndex); return r.indexOf(e.featureIndex) - o; } return e.featureIndex - t.featureIndex; }); for (var h = 0, u = c; h < u.length; h += 1) n.push(u[h]); } }, d = 0, _ = c; d < _.length; d += 1 ) p(); var f = function (e) { s[e].forEach(function (r) { var o = r.feature, a = i[t[e].source].getFeatureState( o.layer['source-layer'], o.id, ); (o.source = o.layer.source), o.layer['source-layer'] && (o.sourceLayer = o.layer['source-layer']), (o.state = a); }); }; for (var m in s) f(m); return s; })( this._layers, this._serializedLayers, this.sourceCaches, e, i, this.placement.collisionIndex, this.placement.retainedQueryData, ), ), this._flattenAndSortRenderedFeatures(c) ); }), (i.prototype.querySourceFeatures = function (e, i) { i && i.filter && this._validate( t.validateStyle.filter, 'querySourceFeatures.filter', i.filter, null, i, ); var r = this.sourceCaches[e]; return r ? (function (t, e) { for ( var i = t.getRenderableIds().map(function (e) { return t.getTileByID(e); }), r = [], o = {}, a = 0; a < i.length; a++ ) { var n = i[a], s = n.tileID.canonical.key; o[s] || ((o[s] = !0), n.querySourceFeatures(r, e)); } return r; })(r, i) : []; }), (i.prototype.addSourceType = function (t, e, r) { return i.getSourceType(t) ? r(new Error('A source type called "' + t + '" already exists.')) : (i.setSourceType(t, e), e.workerSourceURL ? void this.dispatcher.broadcast( 'loadWorkerSource', { name: t, url: e.workerSourceURL }, r, ) : r(null, null)); }), (i.prototype.getLight = function () { return this.light.getLight(); }), (i.prototype.setLight = function (e, i) { void 0 === i && (i = {}), this._checkLoaded(); var r = this.light.getLight(), a = !1; for (var n in e) if (!o(e[n], r[n])) { a = !0; break; } if (a) { var s = { now: t.exported.now(), transition: t.extend( { duration: 300, delay: 0 }, this.stylesheet.transition, ), }; this.light.setLight(e, i), this.light.updateTransitions(s); } }), (i.prototype._validate = function (e, i, r, o, a) { return ( void 0 === a && (a = {}), (!a || !1 !== a.validate) && Qt( this, e.call( t.validateStyle, t.extend( { key: i, style: this.serialize(), value: r, styleSpec: t.spec, }, o, ), ), ) ); }), (i.prototype._remove = function () { for (var e in (this._request && (this._request.cancel(), (this._request = null)), this._spriteRequest && (this._spriteRequest.cancel(), (this._spriteRequest = null)), t.evented.off('pluginStateChange', this._rtlTextPluginCallback), this._layers)) this._layers[e].setEventedParent(null); for (var i in this.sourceCaches) { var r = this.sourceCaches[i]; r.setEventedParent(null), r.onRemove(this.map); } this.imageManager.setEventedParent(null), this.setEventedParent(null), this.dispatcher.remove(); }), (i.prototype._clearSource = function (t) { this.sourceCaches[t].clearTiles(); }), (i.prototype._reloadSource = function (t) { this.sourceCaches[t].resume(), this.sourceCaches[t].reload(); }), (i.prototype._updateSources = function (t) { for (var e in this.sourceCaches) this.sourceCaches[e].update(t, this.terrain); }), (i.prototype._generateCollisionBoxes = function () { for (var t in this.sourceCaches) this._reloadSource(t); }), (i.prototype._updatePlacement = function (e, i, r, o, a) { void 0 === a && (a = !1); for ( var n = !1, s = !1, l = {}, c = 0, h = this._order; c < h.length; c += 1 ) { var u = this._layers[h[c]]; if ('symbol' === u.type) { if (!l[u.source]) { var p = this.sourceCaches[u.source]; l[u.source] = p .getRenderableIds(!0) .map(function (t) { return p.getTileByID(t); }) .sort(function (t, e) { return ( e.tileID.overscaledZ - t.tileID.overscaledZ || (t.tileID.isLessThan(e.tileID) ? -1 : 1) ); }); } var d = this.crossTileSymbolIndex.addLayer( u, l[u.source], e.center.lng, ); n = n || d; } } if ( (this.crossTileSymbolIndex.pruneUnusedLayers(this._order), ((a = a || this._layerOrderChanged || 0 === r) || !this.pauseablePlacement || (this.pauseablePlacement.isDone() && !this.placement.stillRecent(t.exported.now(), e.zoom))) && ((this.pauseablePlacement = new Zt( e, this.terrain, this._order, a, i, r, o, this.placement, )), (this._layerOrderChanged = !1)), this.pauseablePlacement.isDone() ? this.placement.setStale() : (this.pauseablePlacement.continuePlacement( this._order, this._layers, l, ), this.pauseablePlacement.isDone() && ((this.placement = this.pauseablePlacement.commit( t.exported.now(), )), (s = !0)), n && this.pauseablePlacement.placement.setStale()), s || n) ) for (var _ = 0, f = this._order; _ < f.length; _ += 1) { var m = this._layers[f[_]]; 'symbol' === m.type && this.placement.updateLayerOpacities(m, l[m.source]); } return ( !this.pauseablePlacement.isDone() || this.placement.hasTransitions(t.exported.now()) ); }), (i.prototype._releaseSymbolFadeTiles = function () { for (var t in this.sourceCaches) this.sourceCaches[t].releaseSymbolFadeTiles(); }), (i.prototype.getImages = function (t, e, i) { this.imageManager.getImages(e.icons, i), this._updateTilesForChangedImages(); var r = this.sourceCaches[e.source]; r && r.setDependencies(e.tileID.key, e.type, e.icons); }), (i.prototype.getGlyphs = function (t, e, i) { this.glyphManager.getGlyphs(e.stacks, i); }), (i.prototype.getResource = function (e, i, r) { return t.makeRequest(i, r); }), i ); })(t.Evented); (ie.getSourceType = function (t) { return R[t]; }), (ie.setSourceType = function (t, e) { R[t] = e; }), (ie.registerForPluginStateChange = t.registerForPluginStateChange); var re = 'attribute vec2 a_pos;uniform mat4 u_matrix;varying vec2 v_texture_pos;varying float v_depth;void main() {v_texture_pos=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos,get_elevation(a_pos),1.0);v_depth=gl_Position.z/gl_Position.w;}', oe = { prelude: ae( '#ifdef GL_ES\nprecision mediump float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif', '#ifdef GL_ES\nprecision highp float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\nvec2 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\n);}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 float tile_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 (tile_units_to_pixels*pos+offset)/pattern_size;}\n#ifdef TERRAIN3D\nuniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_offset;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth;\n#endif\nconst highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) {\n#ifdef TERRAIN3D\nhighp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));\n#else\nreturn 1.0;\n#endif\n}float calculate_visibility(vec4 pos) {\n#ifdef TERRAIN3D\nvec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;\n#else\nreturn 1.0;\n#endif\n}float ele(vec2 pos) {\n#ifdef TERRAIN3D\nvec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;\n#else\nreturn 0.0;\n#endif\n}float get_elevation(vec2 pos) {\n#ifdef TERRAIN3D\nvec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return (elevation+u_terrain_offset)*u_terrain_exaggeration;\n#else\nreturn 0.0;\n#endif\n}', ), background: ae( 'uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', 'attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}', ), backgroundPattern: ae( 'uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', 'uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}', ), circle: ae( 'varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', 'uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main(void) {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}', ), clippingMask: ae( 'void main() {gl_FragColor=vec4(1.0);}', 'attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}', ), heatmap: ae( 'uniform highp float u_intensity;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#define GAUSS_COEF 0.3989422804014327\nvoid main() {\n#pragma mapbox: initialize highp float weight\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', 'uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#pragma mapbox: define mediump float radius\nconst highp float ZERO=1.0/255.0/16.0;\n#define GAUSS_COEF 0.3989422804014327\nvoid main(void) {\n#pragma mapbox: initialize highp float weight\n#pragma mapbox: initialize mediump float radius\nvec2 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;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}', ), heatmapTexture: ae( 'uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(0.0);\n#endif\n}', 'uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}', ), collisionBox: ae( 'varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}', 'attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,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,4.0);gl_Position=u_matrix*vec4(a_pos,get_elevation(a_pos),1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}', ), collisionCircle: ae( 'varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying 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);gl_FragColor=color*alpha*opacity_t;}', 'attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying 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;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: ae( 'uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}', 'attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}', ), fill: ae( '#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_FragColor=color*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', 'attribute vec2 a_pos;uniform mat4 u_matrix;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);}', ), fillOutline: ae( 'varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', 'attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}', ), fillOutlinePattern: ae( 'uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', 'uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}', ), fillPattern: ae( '#ifdef GL_ES\nprecision highp float;\n#endif\nuniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', 'uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}', ), fillExtrusion: ae( 'varying vec4 v_color;void main() {gl_FragColor=v_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', '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;attribute vec2 a_pos;attribute vec4 a_normal_ed;\n#ifdef TERRAIN3D\nattribute vec2 a_centroid;\n#endif\nvarying vec4 v_color;\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec3 normal=a_normal_ed.xyz;\n#ifdef TERRAIN3D\nfloat baseDelta=10.0;float ele=get_elevation(a_centroid);\n#else\nfloat baseDelta=0.0;float ele=0.0;\n#endif\nbase=max(0.0,ele+base-baseDelta);height=max(0.0,ele+height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}', ), fillExtrusionPattern: ae( 'uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', 'uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;\n#ifdef TERRAIN3D\nattribute vec2 a_centroid;\n#endif\nvarying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;\n#ifdef TERRAIN3D\nfloat baseDelta=10.0;float ele=get_elevation(a_centroid);\n#else\nfloat baseDelta=0.0;float ele=0.0;\n#endif\nbase=max(0.0,ele+base-baseDelta);height=max(0.0,ele+height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\n? a_pos\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}', ), hillshadePrepare: ae( '#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);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+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', 'uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying 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: ae( 'uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\n#define PI 3.141592653589793\nvoid main() {vec4 pixel=texture2D(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);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', 'uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}', ), line: ae( 'uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(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);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', '\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat 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;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.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=width/2.0;offset=-1.0*offset;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*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat 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=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}', ), lineGradient: ae( 'uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(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);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', '\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat 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;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);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=width/2.0;offset=-1.0*offset;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*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat 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=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}', ), linePattern: ae( '#ifdef GL_ES\nprecision highp float;\n#endif\nuniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(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);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', '\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat 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;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;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=width/2.0;offset=-1.0*offset;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*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat 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=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}', ), lineSDF: ae( 'uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat dist=length(v_normal)*v_width2.s;float blur2=(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);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', '\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat 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;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;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=width/2.0;offset=-1.0*offset;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*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat 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=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}', ), raster: ae( 'uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;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;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;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);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', 'uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}', ), symbolIcon: ae( 'uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', 'const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;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 highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];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;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}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);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),z,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}', ), symbolSDF: ae( '#define SDF_PX 8.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', 'const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;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_pitch_with_map;uniform highp float u_pitch;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;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];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;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}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);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}', ), symbolTextAndIcon: ae( '#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}', 'const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;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_pitch_with_map;uniform highp float u_pitch;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 vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];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;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}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);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}', ), terrain: ae( 'uniform sampler2D u_texture;varying vec2 v_texture_pos;void main() {gl_FragColor=texture2D(u_texture,v_texture_pos);}', re, ), terrainDepth: ae( 'varying float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {gl_FragColor=pack(v_depth);}', re, ), terrainCoords: ae( 'precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}', re, ), }; function ae(t, e) { var i = /#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g, r = e.match(/attribute ([\w]+) ([\w]+)/g), o = t.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g), a = e.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g), n = a ? a.concat(o) : o, s = {}; return { fragmentSource: (t = t.replace(i, function (t, e, i, r, o) { return ( (s[o] = !0), 'define' === e ? '\n#ifndef HAS_UNIFORM_u_' + o + '\nvarying ' + i + ' ' + r + ' ' + o + ';\n#else\nuniform ' + i + ' ' + r + ' u_' + o + ';\n#endif\n' : '\n#ifdef HAS_UNIFORM_u_' + o + '\n ' + i + ' ' + r + ' ' + o + ' = u_' + o + ';\n#endif\n' ); })), vertexSource: (e = e.replace(i, function (t, e, i, r, o) { var a = 'float' === r ? 'vec2' : 'vec4', n = o.match(/color/) ? 'color' : a; return s[o] ? 'define' === e ? '\n#ifndef HAS_UNIFORM_u_' + o + '\nuniform lowp float u_' + o + '_t;\nattribute ' + i + ' ' + a + ' a_' + o + ';\nvarying ' + i + ' ' + r + ' ' + o + ';\n#else\nuniform ' + i + ' ' + r + ' u_' + o + ';\n#endif\n' : 'vec4' === n ? '\n#ifndef HAS_UNIFORM_u_' + o + '\n ' + o + ' = a_' + o + ';\n#else\n ' + i + ' ' + r + ' ' + o + ' = u_' + o + ';\n#endif\n' : '\n#ifndef HAS_UNIFORM_u_' + o + '\n ' + o + ' = unpack_mix_' + n + '(a_' + o + ', u_' + o + '_t);\n#else\n ' + i + ' ' + r + ' ' + o + ' = u_' + o + ';\n#endif\n' : 'define' === e ? '\n#ifndef HAS_UNIFORM_u_' + o + '\nuniform lowp float u_' + o + '_t;\nattribute ' + i + ' ' + a + ' a_' + o + ';\n#else\nuniform ' + i + ' ' + r + ' u_' + o + ';\n#endif\n' : 'vec4' === n ? '\n#ifndef HAS_UNIFORM_u_' + o + '\n ' + i + ' ' + r + ' ' + o + ' = a_' + o + ';\n#else\n ' + i + ' ' + r + ' ' + o + ' = u_' + o + ';\n#endif\n' : '\n#ifndef HAS_UNIFORM_u_' + o + '\n ' + i + ' ' + r + ' ' + o + ' = unpack_mix_' + n + '(a_' + o + ', u_' + o + '_t);\n#else\n ' + i + ' ' + r + ' ' + o + ' = u_' + o + ';\n#endif\n'; })), staticAttributes: r, staticUniforms: n, }; } var ne = function () { (this.boundProgram = null), (this.boundLayoutVertexBuffer = null), (this.boundPaintVertexBuffers = []), (this.boundIndexBuffer = null), (this.boundVertexOffset = null), (this.boundDynamicVertexBuffer = null), (this.vao = null); }; function se(t) { for (var e = [], i = 0; i < t.length; i++) if (null !== t[i]) { var r = t[i].split(' '); e.push(r.pop()); } return e; } (ne.prototype.bind = function (t, e, i, r, o, a, n, s, l) { this.context = t; for ( var c = this.boundPaintVertexBuffers.length !== r.length, h = 0; !c && h < r.length; h++ ) this.boundPaintVertexBuffers[h] !== r[h] && (c = !0); t.extVertexArrayObject && this.vao && this.boundProgram === e && this.boundLayoutVertexBuffer === i && !c && this.boundIndexBuffer === o && this.boundVertexOffset === a && this.boundDynamicVertexBuffer === n && this.boundDynamicVertexBuffer2 === s && this.boundDynamicVertexBuffer3 === l ? (t.bindVertexArrayOES.set(this.vao), n && n.bind(), o && o.dynamicDraw && o.bind(), s && s.bind(), l && l.bind()) : this.freshBind(e, i, r, o, a, n, s, l); }), (ne.prototype.freshBind = function (t, e, i, r, o, a, n, s) { var l, c = t.numAttributes, h = this.context, u = h.gl; if (h.extVertexArrayObject) this.vao && this.destroy(), (this.vao = h.extVertexArrayObject.createVertexArrayOES()), h.bindVertexArrayOES.set(this.vao), (l = 0), (this.boundProgram = t), (this.boundLayoutVertexBuffer = e), (this.boundPaintVertexBuffers = i), (this.boundIndexBuffer = r), (this.boundVertexOffset = o), (this.boundDynamicVertexBuffer = a), (this.boundDynamicVertexBuffer2 = n), (this.boundDynamicVertexBuffer3 = s); else { l = h.currentNumAttributes || 0; for (var p = c; p < l; p++) u.disableVertexAttribArray(p); } e.enableAttributes(u, t); for (var d = 0, _ = i; d < _.length; d += 1) _[d].enableAttributes(u, t); a && a.enableAttributes(u, t), n && n.enableAttributes(u, t), s && s.enableAttributes(u, t), e.bind(), e.setVertexAttribPointers(u, t, o); for (var f = 0, m = i; f < m.length; f += 1) { var g = m[f]; g.bind(), g.setVertexAttribPointers(u, t, o); } a && (a.bind(), a.setVertexAttribPointers(u, t, o)), r && r.bind(), n && (n.bind(), n.setVertexAttribPointers(u, t, o)), s && (s.bind(), s.setVertexAttribPointers(u, t, o)), (h.currentNumAttributes = c); }), (ne.prototype.destroy = function () { this.vao && (this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao), (this.vao = null)); }); var le = function (e, i, r, o, a, n, s) { var l = e.gl; this.program = l.createProgram(); for ( var c = se(r.staticAttributes), h = o ? o.getBinderAttributes() : [], u = c.concat(h), p = oe.prelude.staticUniforms ? se(oe.prelude.staticUniforms) : [], d = r.staticUniforms ? se(r.staticUniforms) : [], _ = o ? o.getBinderUniforms() : [], f = [], m = 0, g = p.concat(d).concat(_); m < g.length; m += 1 ) { var v = g[m]; f.indexOf(v) < 0 && f.push(v); } var y = o ? o.defines() : []; n && y.push('#define OVERDRAW_INSPECTOR;'), s && y.push('#define TERRAIN3D;'); var x = y.concat(oe.prelude.fragmentSource, r.fragmentSource).join('\n'), b = y.concat(oe.prelude.vertexSource, r.vertexSource).join('\n'), w = l.createShader(l.FRAGMENT_SHADER); if (l.isContextLost()) this.failedToCreate = !0; else { l.shaderSource(w, x), l.compileShader(w), l.attachShader(this.program, w); var T = l.createShader(l.VERTEX_SHADER); if (l.isContextLost()) this.failedToCreate = !0; else { l.shaderSource(T, b), l.compileShader(T), l.attachShader(this.program, T), (this.attributes = {}); var E = {}; this.numAttributes = u.length; for (var I = 0; I < this.numAttributes; I++) u[I] && (l.bindAttribLocation(this.program, I, u[I]), (this.attributes[u[I]] = I)); l.linkProgram(this.program), l.deleteShader(T), l.deleteShader(w); for (var C = 0; C < f.length; C++) { var S = f[C]; if (S && !E[S]) { var D = l.getUniformLocation(this.program, S); D && (E[S] = D); } } (this.fixedUniforms = a(e, E)), (this.terrainUniforms = (function (e, i) { return { u_depth: new t.Uniform1i(e, i.u_depth), u_terrain: new t.Uniform1i(e, i.u_terrain), u_terrain_dim: new t.Uniform1f(e, i.u_terrain_dim), u_terrain_matrix: new t.UniformMatrix4f(e, i.u_terrain_matrix), u_terrain_unpack: new t.Uniform4f(e, i.u_terrain_unpack), u_terrain_offset: new t.Uniform1f(e, i.u_terrain_offset), u_terrain_exaggeration: new t.Uniform1f( e, i.u_terrain_exaggeration, ), }; })(e, E)), (this.binderUniforms = o ? o.getUniforms(e, E) : []); } } }; function ce(t, e, i) { var r = 1 / wt(i, 1, e.transform.tileZoom), o = Math.pow(2, i.tileID.overscaledZ), a = (i.tileSize * Math.pow(2, e.transform.tileZoom)) / o, n = a * (i.tileID.canonical.x + i.tileID.wrap * o), s = a * i.tileID.canonical.y; return { u_image: 0, u_texsize: i.imageAtlasTexture.size, u_scale: [r, t.fromScale, t.toScale], u_fade: t.t, u_pixel_coord_upper: [n >> 16, s >> 16], u_pixel_coord_lower: [65535 & n, 65535 & s], }; } le.prototype.draw = function ( t, e, i, r, o, a, n, s, l, c, h, u, p, d, _, f, m, g, ) { var v = t.gl; if (!this.failedToCreate) { if ( (t.program.set(this.program), t.setDepthMode(i), t.setStencilMode(r), t.setColorMode(o), t.setCullFace(a), s) ) for (var y in (t.activeTexture.set(v.TEXTURE2), v.bindTexture(v.TEXTURE_2D, s.depthTexture), t.activeTexture.set(v.TEXTURE3), v.bindTexture(v.TEXTURE_2D, s.texture), this.terrainUniforms)) this.terrainUniforms[y].set(s[y]); for (var x in this.fixedUniforms) this.fixedUniforms[x].set(n[x]); _ && _.setUniforms(t, this.binderUniforms, p, { zoom: d }); var b = 0; switch (e) { case v.LINES: b = 2; break; case v.TRIANGLES: b = 3; break; case v.LINE_STRIP: b = 1; } for (var w = 0, T = u.get(); w < T.length; w += 1) { var E = T[w], I = E.vaos || (E.vaos = {}); (I[l] || (I[l] = new ne())).bind( t, this, c, _ ? _.getPaintVertexBuffers() : [], h, E.vertexOffset, f, m, g, ), v.drawElements( e, E.primitiveLength * b, v.UNSIGNED_SHORT, E.primitiveOffset * b * 2, ); } } }; var he = function (e, i, r, o) { var a = i.style.light, n = a.properties.get('position'), s = [n.x, n.y, n.z], l = t.create$1(); 'viewport' === a.properties.get('anchor') && t.fromRotation(l, -i.transform.angle), t.transformMat3(s, s, l); var c = a.properties.get('color'); return { u_matrix: e, u_lightpos: s, u_lightintensity: a.properties.get('intensity'), u_lightcolor: [c.r, c.g, c.b], u_vertical_gradient: +r, u_opacity: o, }; }, ue = function (e, i, r, o, a, n, s) { return t.extend(he(e, i, r, o), ce(n, i, s), { u_height_factor: -Math.pow(2, a.overscaledZ) / s.tileSize / 8, }); }, pe = function (t) { return { u_matrix: t }; }, de = function (e, i, r, o) { return t.extend(pe(e), ce(r, i, o)); }, _e = function (t, e) { return { u_matrix: t, u_world: e }; }, fe = function (e, i, r, o, a) { return t.extend(de(e, i, r, o), { u_world: a }); }, me = function (t, e, i, r) { var o, a, n = t.transform; if ('map' === r.paint.get('circle-pitch-alignment')) { var s = wt(i, 1, n.zoom); (o = !0), (a = [s, s]); } else (o = !1), (a = n.pixelsToGLUnits); return { u_camera_to_center_distance: n.cameraToCenterDistance, u_scale_with_map: +('map' === r.paint.get('circle-pitch-scale')), u_matrix: t.translatePosMatrix( e.posMatrix, i, r.paint.get('circle-translate'), r.paint.get('circle-translate-anchor'), ), u_pitch_with_map: +o, u_device_pixel_ratio: t.pixelRatio, u_extrude_scale: a, }; }, ge = function (t, e, i) { var r = wt(i, 1, e.zoom), o = Math.pow(2, e.zoom - i.tileID.overscaledZ), a = i.tileID.overscaleFactor(); return { u_matrix: t, u_camera_to_center_distance: e.cameraToCenterDistance, u_pixels_to_tile_units: r, u_extrude_scale: [ e.pixelsToGLUnits[0] / (r * o), e.pixelsToGLUnits[1] / (r * o), ], u_overscale_factor: a, }; }, ve = function (t, e, i) { return { u_matrix: t, u_inv_matrix: e, u_camera_to_center_distance: i.cameraToCenterDistance, u_viewport_size: [i.width, i.height], }; }, ye = function (t, e, i) { return ( void 0 === i && (i = 1), { u_matrix: t, u_color: e, u_overlay: 0, u_overlay_scale: i } ); }, xe = function (t) { return { u_matrix: t }; }, be = function (t, e, i, r) { return { u_matrix: t, u_extrude_scale: wt(e, 1, i), u_intensity: r }; }, we = function (t, e, i, r) { var o = t.transform; return { u_matrix: Se(t, e, i, r), u_ratio: 1 / wt(e, 1, o.zoom), u_device_pixel_ratio: t.pixelRatio, u_units_to_pixels: [ 1 / o.pixelsToGLUnits[0], 1 / o.pixelsToGLUnits[1], ], }; }, Te = function (e, i, r, o, a) { return t.extend(we(e, i, r, a), { u_image: 0, u_image_height: o }); }, Ee = function (t, e, i, r, o) { var a = t.transform, n = Ce(e, a); return { u_matrix: Se(t, e, i, o), u_texsize: e.imageAtlasTexture.size, u_ratio: 1 / wt(e, 1, a.zoom), u_device_pixel_ratio: t.pixelRatio, u_image: 0, u_scale: [n, r.fromScale, r.toScale], u_fade: r.t, u_units_to_pixels: [ 1 / a.pixelsToGLUnits[0], 1 / a.pixelsToGLUnits[1], ], }; }, Ie = function (e, i, r, o, a, n) { var s = e.lineAtlas, l = Ce(i, e.transform), c = 'round' === r.layout.get('line-cap'), h = s.getDash(o.from, c), u = s.getDash(o.to, c), p = h.width * a.fromScale, d = u.width * a.toScale; return t.extend(we(e, i, r, n), { u_patternscale_a: [l / p, -h.height / 2], u_patternscale_b: [l / d, -u.height / 2], u_sdfgamma: s.width / (256 * Math.min(p, d) * e.pixelRatio) / 2, u_image: 0, u_tex_y_a: h.y, u_tex_y_b: u.y, u_mix: a.t, }); }; function Ce(t, e) { return 1 / wt(t, 1, e.tileZoom); } function Se(t, e, i, r) { return t.translatePosMatrix( r ? r.posMatrix : e.tileID.posMatrix, e, i.paint.get('line-translate'), i.paint.get('line-translate-anchor'), ); } var De = function (t, e, i, r, o) { return { u_matrix: t, u_tl_parent: e, u_scale_parent: i, u_buffer_scale: 1, u_fade_t: r.mix, u_opacity: r.opacity * o.paint.get('raster-opacity'), u_image0: 0, u_image1: 1, u_brightness_low: o.paint.get('raster-brightness-min'), u_brightness_high: o.paint.get('raster-brightness-max'), u_saturation_factor: ((n = o.paint.get('raster-saturation')), n > 0 ? 1 - 1 / (1.001 - n) : -n), u_contrast_factor: ((a = o.paint.get('raster-contrast')), a > 0 ? 1 / (1 - a) : 1 + a), u_spin_weights: ze(o.paint.get('raster-hue-rotate')), }; var a, n; }; function ze(t) { t *= Math.PI / 180; var e = Math.sin(t), i = Math.cos(t); return [ (2 * i + 1) / 3, (-Math.sqrt(3) * e - i + 1) / 3, (Math.sqrt(3) * e - i + 1) / 3, ]; } var Pe = function (t, e, i, r, o, a, n, s, l, c) { var h = o.transform; return { u_is_size_zoom_constant: +('constant' === t || 'source' === t), u_is_size_feature_constant: +('constant' === t || 'camera' === t), u_size_t: e ? e.uSizeT : 0, u_size: e ? e.uSize : 0, u_camera_to_center_distance: h.cameraToCenterDistance, u_pitch: (h.pitch / 360) * 2 * Math.PI, u_rotate_symbol: +i, u_aspect_ratio: h.width / h.height, u_fade_change: o.options.fadeDuration ? o.symbolFadeChange : 1, u_matrix: a, u_label_plane_matrix: n, u_coord_matrix: s, u_is_text: +l, u_pitch_with_map: +r, u_texsize: c, u_texture: 0, }; }, Me = function (e, i, r, o, a, n, s, l, c, h, u) { var p = a.transform; return t.extend(Pe(e, i, r, o, a, n, s, l, c, h), { u_gamma_scale: o ? Math.cos(p._pitch) * p.cameraToCenterDistance : 1, u_device_pixel_ratio: a.pixelRatio, u_is_halo: +u, }); }, Ae = function (t, e, i) { return { u_matrix: t, u_opacity: e, u_color: i }; }, Re = function (e, i, r, o, a, n) { return t.extend( (function (t, e, i, r) { var o = i.imageManager.getPattern(t.from.toString()), a = i.imageManager.getPattern(t.to.toString()), n = i.imageManager.getPixelSize(), s = n.width, l = n.height, c = Math.pow(2, r.tileID.overscaledZ), h = (r.tileSize * Math.pow(2, i.transform.tileZoom)) / c, u = h * (r.tileID.canonical.x + r.tileID.wrap * c), p = h * r.tileID.canonical.y; return { u_image: 0, u_pattern_tl_a: o.tl, u_pattern_br_a: o.br, u_pattern_tl_b: a.tl, u_pattern_br_b: a.br, u_texsize: [s, l], u_mix: e.t, u_pattern_size_a: o.displaySize, u_pattern_size_b: a.displaySize, u_scale_a: e.fromScale, u_scale_b: e.toScale, u_tile_units_to_pixels: 1 / wt(r, 1, i.transform.tileZoom), u_pixel_coord_upper: [u >> 16, p >> 16], u_pixel_coord_lower: [65535 & u, 65535 & p], }; })(o, n, r, a), { u_matrix: e, u_opacity: i }, ); }, Le = { fillExtrusion: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_lightpos: new t.Uniform3f(e, i.u_lightpos), u_lightintensity: new t.Uniform1f(e, i.u_lightintensity), u_lightcolor: new t.Uniform3f(e, i.u_lightcolor), u_vertical_gradient: new t.Uniform1f(e, i.u_vertical_gradient), u_opacity: new t.Uniform1f(e, i.u_opacity), }; }, fillExtrusionPattern: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_lightpos: new t.Uniform3f(e, i.u_lightpos), u_lightintensity: new t.Uniform1f(e, i.u_lightintensity), u_lightcolor: new t.Uniform3f(e, i.u_lightcolor), u_vertical_gradient: new t.Uniform1f(e, i.u_vertical_gradient), u_height_factor: new t.Uniform1f(e, i.u_height_factor), u_image: new t.Uniform1i(e, i.u_image), u_texsize: new t.Uniform2f(e, i.u_texsize), u_pixel_coord_upper: new t.Uniform2f(e, i.u_pixel_coord_upper), u_pixel_coord_lower: new t.Uniform2f(e, i.u_pixel_coord_lower), u_scale: new t.Uniform3f(e, i.u_scale), u_fade: new t.Uniform1f(e, i.u_fade), u_opacity: new t.Uniform1f(e, i.u_opacity), }; }, fill: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix) }; }, fillPattern: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_image: new t.Uniform1i(e, i.u_image), u_texsize: new t.Uniform2f(e, i.u_texsize), u_pixel_coord_upper: new t.Uniform2f(e, i.u_pixel_coord_upper), u_pixel_coord_lower: new t.Uniform2f(e, i.u_pixel_coord_lower), u_scale: new t.Uniform3f(e, i.u_scale), u_fade: new t.Uniform1f(e, i.u_fade), }; }, fillOutline: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_world: new t.Uniform2f(e, i.u_world), }; }, fillOutlinePattern: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_world: new t.Uniform2f(e, i.u_world), u_image: new t.Uniform1i(e, i.u_image), u_texsize: new t.Uniform2f(e, i.u_texsize), u_pixel_coord_upper: new t.Uniform2f(e, i.u_pixel_coord_upper), u_pixel_coord_lower: new t.Uniform2f(e, i.u_pixel_coord_lower), u_scale: new t.Uniform3f(e, i.u_scale), u_fade: new t.Uniform1f(e, i.u_fade), }; }, circle: function (e, i) { return { u_camera_to_center_distance: new t.Uniform1f( e, i.u_camera_to_center_distance, ), u_scale_with_map: new t.Uniform1i(e, i.u_scale_with_map), u_pitch_with_map: new t.Uniform1i(e, i.u_pitch_with_map), u_extrude_scale: new t.Uniform2f(e, i.u_extrude_scale), u_device_pixel_ratio: new t.Uniform1f(e, i.u_device_pixel_ratio), u_matrix: new t.UniformMatrix4f(e, i.u_matrix), }; }, collisionBox: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_camera_to_center_distance: new t.Uniform1f( e, i.u_camera_to_center_distance, ), u_pixels_to_tile_units: new t.Uniform1f( e, i.u_pixels_to_tile_units, ), u_extrude_scale: new t.Uniform2f(e, i.u_extrude_scale), u_overscale_factor: new t.Uniform1f(e, i.u_overscale_factor), }; }, collisionCircle: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_inv_matrix: new t.UniformMatrix4f(e, i.u_inv_matrix), u_camera_to_center_distance: new t.Uniform1f( e, i.u_camera_to_center_distance, ), u_viewport_size: new t.Uniform2f(e, i.u_viewport_size), }; }, debug: function (e, i) { return { u_color: new t.UniformColor(e, i.u_color), u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_overlay: new t.Uniform1i(e, i.u_overlay), u_overlay_scale: new t.Uniform1f(e, i.u_overlay_scale), }; }, clippingMask: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix) }; }, heatmap: function (e, i) { return { u_extrude_scale: new t.Uniform1f(e, i.u_extrude_scale), u_intensity: new t.Uniform1f(e, i.u_intensity), u_matrix: new t.UniformMatrix4f(e, i.u_matrix), }; }, heatmapTexture: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_world: new t.Uniform2f(e, i.u_world), u_image: new t.Uniform1i(e, i.u_image), u_color_ramp: new t.Uniform1i(e, i.u_color_ramp), u_opacity: new t.Uniform1f(e, i.u_opacity), }; }, hillshade: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_image: new t.Uniform1i(e, i.u_image), u_latrange: new t.Uniform2f(e, i.u_latrange), u_light: new t.Uniform2f(e, i.u_light), u_shadow: new t.UniformColor(e, i.u_shadow), u_highlight: new t.UniformColor(e, i.u_highlight), u_accent: new t.UniformColor(e, i.u_accent), }; }, hillshadePrepare: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_image: new t.Uniform1i(e, i.u_image), u_dimension: new t.Uniform2f(e, i.u_dimension), u_zoom: new t.Uniform1f(e, i.u_zoom), u_unpack: new t.Uniform4f(e, i.u_unpack), }; }, line: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_ratio: new t.Uniform1f(e, i.u_ratio), u_device_pixel_ratio: new t.Uniform1f(e, i.u_device_pixel_ratio), u_units_to_pixels: new t.Uniform2f(e, i.u_units_to_pixels), }; }, lineGradient: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_ratio: new t.Uniform1f(e, i.u_ratio), u_device_pixel_ratio: new t.Uniform1f(e, i.u_device_pixel_ratio), u_units_to_pixels: new t.Uniform2f(e, i.u_units_to_pixels), u_image: new t.Uniform1i(e, i.u_image), u_image_height: new t.Uniform1f(e, i.u_image_height), }; }, linePattern: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_texsize: new t.Uniform2f(e, i.u_texsize), u_ratio: new t.Uniform1f(e, i.u_ratio), u_device_pixel_ratio: new t.Uniform1f(e, i.u_device_pixel_ratio), u_image: new t.Uniform1i(e, i.u_image), u_units_to_pixels: new t.Uniform2f(e, i.u_units_to_pixels), u_scale: new t.Uniform3f(e, i.u_scale), u_fade: new t.Uniform1f(e, i.u_fade), }; }, lineSDF: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_ratio: new t.Uniform1f(e, i.u_ratio), u_device_pixel_ratio: new t.Uniform1f(e, i.u_device_pixel_ratio), u_units_to_pixels: new t.Uniform2f(e, i.u_units_to_pixels), u_patternscale_a: new t.Uniform2f(e, i.u_patternscale_a), u_patternscale_b: new t.Uniform2f(e, i.u_patternscale_b), u_sdfgamma: new t.Uniform1f(e, i.u_sdfgamma), u_image: new t.Uniform1i(e, i.u_image), u_tex_y_a: new t.Uniform1f(e, i.u_tex_y_a), u_tex_y_b: new t.Uniform1f(e, i.u_tex_y_b), u_mix: new t.Uniform1f(e, i.u_mix), }; }, raster: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_tl_parent: new t.Uniform2f(e, i.u_tl_parent), u_scale_parent: new t.Uniform1f(e, i.u_scale_parent), u_buffer_scale: new t.Uniform1f(e, i.u_buffer_scale), u_fade_t: new t.Uniform1f(e, i.u_fade_t), u_opacity: new t.Uniform1f(e, i.u_opacity), u_image0: new t.Uniform1i(e, i.u_image0), u_image1: new t.Uniform1i(e, i.u_image1), u_brightness_low: new t.Uniform1f(e, i.u_brightness_low), u_brightness_high: new t.Uniform1f(e, i.u_brightness_high), u_saturation_factor: new t.Uniform1f(e, i.u_saturation_factor), u_contrast_factor: new t.Uniform1f(e, i.u_contrast_factor), u_spin_weights: new t.Uniform3f(e, i.u_spin_weights), }; }, symbolIcon: function (e, i) { return { u_is_size_zoom_constant: new t.Uniform1i( e, i.u_is_size_zoom_constant, ), u_is_size_feature_constant: new t.Uniform1i( e, i.u_is_size_feature_constant, ), u_size_t: new t.Uniform1f(e, i.u_size_t), u_size: new t.Uniform1f(e, i.u_size), u_camera_to_center_distance: new t.Uniform1f( e, i.u_camera_to_center_distance, ), u_pitch: new t.Uniform1f(e, i.u_pitch), u_rotate_symbol: new t.Uniform1i(e, i.u_rotate_symbol), u_aspect_ratio: new t.Uniform1f(e, i.u_aspect_ratio), u_fade_change: new t.Uniform1f(e, i.u_fade_change), u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_label_plane_matrix: new t.UniformMatrix4f( e, i.u_label_plane_matrix, ), u_coord_matrix: new t.UniformMatrix4f(e, i.u_coord_matrix), u_is_text: new t.Uniform1i(e, i.u_is_text), u_pitch_with_map: new t.Uniform1i(e, i.u_pitch_with_map), u_texsize: new t.Uniform2f(e, i.u_texsize), u_texture: new t.Uniform1i(e, i.u_texture), }; }, symbolSDF: function (e, i) { return { u_is_size_zoom_constant: new t.Uniform1i( e, i.u_is_size_zoom_constant, ), u_is_size_feature_constant: new t.Uniform1i( e, i.u_is_size_feature_constant, ), u_size_t: new t.Uniform1f(e, i.u_size_t), u_size: new t.Uniform1f(e, i.u_size), u_camera_to_center_distance: new t.Uniform1f( e, i.u_camera_to_center_distance, ), u_pitch: new t.Uniform1f(e, i.u_pitch), u_rotate_symbol: new t.Uniform1i(e, i.u_rotate_symbol), u_aspect_ratio: new t.Uniform1f(e, i.u_aspect_ratio), u_fade_change: new t.Uniform1f(e, i.u_fade_change), u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_label_plane_matrix: new t.UniformMatrix4f( e, i.u_label_plane_matrix, ), u_coord_matrix: new t.UniformMatrix4f(e, i.u_coord_matrix), u_is_text: new t.Uniform1i(e, i.u_is_text), u_pitch_with_map: new t.Uniform1i(e, i.u_pitch_with_map), u_texsize: new t.Uniform2f(e, i.u_texsize), u_texture: new t.Uniform1i(e, i.u_texture), u_gamma_scale: new t.Uniform1f(e, i.u_gamma_scale), u_device_pixel_ratio: new t.Uniform1f(e, i.u_device_pixel_ratio), u_is_halo: new t.Uniform1i(e, i.u_is_halo), }; }, symbolTextAndIcon: function (e, i) { return { u_is_size_zoom_constant: new t.Uniform1i( e, i.u_is_size_zoom_constant, ), u_is_size_feature_constant: new t.Uniform1i( e, i.u_is_size_feature_constant, ), u_size_t: new t.Uniform1f(e, i.u_size_t), u_size: new t.Uniform1f(e, i.u_size), u_camera_to_center_distance: new t.Uniform1f( e, i.u_camera_to_center_distance, ), u_pitch: new t.Uniform1f(e, i.u_pitch), u_rotate_symbol: new t.Uniform1i(e, i.u_rotate_symbol), u_aspect_ratio: new t.Uniform1f(e, i.u_aspect_ratio), u_fade_change: new t.Uniform1f(e, i.u_fade_change), u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_label_plane_matrix: new t.UniformMatrix4f( e, i.u_label_plane_matrix, ), u_coord_matrix: new t.UniformMatrix4f(e, i.u_coord_matrix), u_is_text: new t.Uniform1i(e, i.u_is_text), u_pitch_with_map: new t.Uniform1i(e, i.u_pitch_with_map), u_texsize: new t.Uniform2f(e, i.u_texsize), u_texsize_icon: new t.Uniform2f(e, i.u_texsize_icon), u_texture: new t.Uniform1i(e, i.u_texture), u_texture_icon: new t.Uniform1i(e, i.u_texture_icon), u_gamma_scale: new t.Uniform1f(e, i.u_gamma_scale), u_device_pixel_ratio: new t.Uniform1f(e, i.u_device_pixel_ratio), u_is_halo: new t.Uniform1i(e, i.u_is_halo), }; }, background: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_opacity: new t.Uniform1f(e, i.u_opacity), u_color: new t.UniformColor(e, i.u_color), }; }, backgroundPattern: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_opacity: new t.Uniform1f(e, i.u_opacity), u_image: new t.Uniform1i(e, i.u_image), u_pattern_tl_a: new t.Uniform2f(e, i.u_pattern_tl_a), u_pattern_br_a: new t.Uniform2f(e, i.u_pattern_br_a), u_pattern_tl_b: new t.Uniform2f(e, i.u_pattern_tl_b), u_pattern_br_b: new t.Uniform2f(e, i.u_pattern_br_b), u_texsize: new t.Uniform2f(e, i.u_texsize), u_mix: new t.Uniform1f(e, i.u_mix), u_pattern_size_a: new t.Uniform2f(e, i.u_pattern_size_a), u_pattern_size_b: new t.Uniform2f(e, i.u_pattern_size_b), u_scale_a: new t.Uniform1f(e, i.u_scale_a), u_scale_b: new t.Uniform1f(e, i.u_scale_b), u_pixel_coord_upper: new t.Uniform2f(e, i.u_pixel_coord_upper), u_pixel_coord_lower: new t.Uniform2f(e, i.u_pixel_coord_lower), u_tile_units_to_pixels: new t.Uniform1f( e, i.u_tile_units_to_pixels, ), }; }, terrain: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_texture: new t.Uniform1i(e, i.u_texture), }; }, terrainDepth: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix) }; }, terrainCoords: function (e, i) { return { u_matrix: new t.UniformMatrix4f(e, i.u_matrix), u_texture: new t.Uniform1i(e, i.u_texture), u_terrain_coords_id: new t.Uniform1f(e, i.u_terrain_coords_id), }; }, }, ke = function (t, e, i) { this.context = t; var r = t.gl; (this.buffer = r.createBuffer()), (this.dynamicDraw = Boolean(i)), this.context.unbindVAO(), t.bindElementBuffer.set(this.buffer), r.bufferData( r.ELEMENT_ARRAY_BUFFER, e.arrayBuffer, this.dynamicDraw ? r.DYNAMIC_DRAW : r.STATIC_DRAW, ), this.dynamicDraw || delete e.arrayBuffer; }; (ke.prototype.bind = function () { this.context.bindElementBuffer.set(this.buffer); }), (ke.prototype.updateData = function (t) { var e = this.context.gl; if (!this.dynamicDraw) throw new Error( 'Attempted to update data while not in dynamic mode.', ); this.context.unbindVAO(), this.bind(), e.bufferSubData(e.ELEMENT_ARRAY_BUFFER, 0, t.arrayBuffer); }), (ke.prototype.destroy = function () { this.buffer && (this.context.gl.deleteBuffer(this.buffer), delete this.buffer); }); var Be = { Int8: 'BYTE', Uint8: 'UNSIGNED_BYTE', Int16: 'SHORT', Uint16: 'UNSIGNED_SHORT', Int32: 'INT', Uint32: 'UNSIGNED_INT', Float32: 'FLOAT', }, Oe = function (t, e, i, r) { (this.length = e.length), (this.attributes = i), (this.itemSize = e.bytesPerElement), (this.dynamicDraw = r), (this.context = t); var o = t.gl; (this.buffer = o.createBuffer()), t.bindVertexBuffer.set(this.buffer), o.bufferData( o.ARRAY_BUFFER, e.arrayBuffer, this.dynamicDraw ? o.DYNAMIC_DRAW : o.STATIC_DRAW, ), this.dynamicDraw || delete e.arrayBuffer; }; (Oe.prototype.bind = function () { this.context.bindVertexBuffer.set(this.buffer); }), (Oe.prototype.updateData = function (t) { if (t.length !== this.length) throw new Error( 'Length of new data is ' + t.length + ", which doesn't match current length of " + this.length, ); var e = this.context.gl; this.bind(), e.bufferSubData(e.ARRAY_BUFFER, 0, t.arrayBuffer); }), (Oe.prototype.enableAttributes = function (t, e) { for (var i = 0; i < this.attributes.length; i++) { var r = e.attributes[this.attributes[i].name]; void 0 !== r && t.enableVertexAttribArray(r); } }), (Oe.prototype.setVertexAttribPointers = function (t, e, i) { for (var r = 0; r < this.attributes.length; r++) { var o = this.attributes[r], a = e.attributes[o.name]; void 0 !== a && t.vertexAttribPointer( a, o.components, t[Be[o.type]], !1, this.itemSize, o.offset + this.itemSize * (i || 0), ); } }), (Oe.prototype.destroy = function () { this.buffer && (this.context.gl.deleteBuffer(this.buffer), delete this.buffer); }); var Fe = function (t) { (this.gl = t.gl), (this.default = this.getDefault()), (this.current = this.default), (this.dirty = !1); }; (Fe.prototype.get = function () { return this.current; }), (Fe.prototype.set = function (t) {}), (Fe.prototype.getDefault = function () { return this.default; }), (Fe.prototype.setDefault = function () { this.set(this.default); }); var Ue = (function (e) { function i() { e.apply(this, arguments); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.getDefault = function () { return t.Color.transparent; }), (i.prototype.set = function (t) { var e = this.current; (t.r !== e.r || t.g !== e.g || t.b !== e.b || t.a !== e.a || this.dirty) && (this.gl.clearColor(t.r, t.g, t.b, t.a), (this.current = t), (this.dirty = !1)); }), i ); })(Fe), Ne = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return 1; }), (e.prototype.set = function (t) { (t !== this.current || this.dirty) && (this.gl.clearDepth(t), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), Ge = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return 0; }), (e.prototype.set = function (t) { (t !== this.current || this.dirty) && (this.gl.clearStencil(t), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), je = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return [!0, !0, !0, !0]; }), (e.prototype.set = function (t) { var e = this.current; (t[0] !== e[0] || t[1] !== e[1] || t[2] !== e[2] || t[3] !== e[3] || this.dirty) && (this.gl.colorMask(t[0], t[1], t[2], t[3]), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), Ze = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return !0; }), (e.prototype.set = function (t) { (t !== this.current || this.dirty) && (this.gl.depthMask(t), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), Ve = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return 255; }), (e.prototype.set = function (t) { (t !== this.current || this.dirty) && (this.gl.stencilMask(t), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), qe = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return { func: this.gl.ALWAYS, ref: 0, mask: 255 }; }), (e.prototype.set = function (t) { var e = this.current; (t.func !== e.func || t.ref !== e.ref || t.mask !== e.mask || this.dirty) && (this.gl.stencilFunc(t.func, t.ref, t.mask), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), Xe = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { var t = this.gl; return [t.KEEP, t.KEEP, t.KEEP]; }), (e.prototype.set = function (t) { var e = this.current; (t[0] !== e[0] || t[1] !== e[1] || t[2] !== e[2] || this.dirty) && (this.gl.stencilOp(t[0], t[1], t[2]), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), We = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return !1; }), (e.prototype.set = function (t) { if (t !== this.current || this.dirty) { var e = this.gl; t ? e.enable(e.STENCIL_TEST) : e.disable(e.STENCIL_TEST), (this.current = t), (this.dirty = !1); } }), e ); })(Fe), He = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return [0, 1]; }), (e.prototype.set = function (t) { var e = this.current; (t[0] !== e[0] || t[1] !== e[1] || this.dirty) && (this.gl.depthRange(t[0], t[1]), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), Ke = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return !1; }), (e.prototype.set = function (t) { if (t !== this.current || this.dirty) { var e = this.gl; t ? e.enable(e.DEPTH_TEST) : e.disable(e.DEPTH_TEST), (this.current = t), (this.dirty = !1); } }), e ); })(Fe), Ye = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return this.gl.LESS; }), (e.prototype.set = function (t) { (t !== this.current || this.dirty) && (this.gl.depthFunc(t), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), Je = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return !1; }), (e.prototype.set = function (t) { if (t !== this.current || this.dirty) { var e = this.gl; t ? e.enable(e.BLEND) : e.disable(e.BLEND), (this.current = t), (this.dirty = !1); } }), e ); })(Fe), Qe = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { var t = this.gl; return [t.ONE, t.ZERO]; }), (e.prototype.set = function (t) { var e = this.current; (t[0] !== e[0] || t[1] !== e[1] || this.dirty) && (this.gl.blendFunc(t[0], t[1]), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), $e = (function (e) { function i() { e.apply(this, arguments); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.getDefault = function () { return t.Color.transparent; }), (i.prototype.set = function (t) { var e = this.current; (t.r !== e.r || t.g !== e.g || t.b !== e.b || t.a !== e.a || this.dirty) && (this.gl.blendColor(t.r, t.g, t.b, t.a), (this.current = t), (this.dirty = !1)); }), i ); })(Fe), ti = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return this.gl.FUNC_ADD; }), (e.prototype.set = function (t) { (t !== this.current || this.dirty) && (this.gl.blendEquation(t), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), ei = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return !1; }), (e.prototype.set = function (t) { if (t !== this.current || this.dirty) { var e = this.gl; t ? e.enable(e.CULL_FACE) : e.disable(e.CULL_FACE), (this.current = t), (this.dirty = !1); } }), e ); })(Fe), ii = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return this.gl.BACK; }), (e.prototype.set = function (t) { (t !== this.current || this.dirty) && (this.gl.cullFace(t), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), ri = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return this.gl.CCW; }), (e.prototype.set = function (t) { (t !== this.current || this.dirty) && (this.gl.frontFace(t), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), oi = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return null; }), (e.prototype.set = function (t) { (t !== this.current || this.dirty) && (this.gl.useProgram(t), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), ai = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return this.gl.TEXTURE0; }), (e.prototype.set = function (t) { (t !== this.current || this.dirty) && (this.gl.activeTexture(t), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), ni = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { var t = this.gl; return [0, 0, t.drawingBufferWidth, t.drawingBufferHeight]; }), (e.prototype.set = function (t) { var e = this.current; (t[0] !== e[0] || t[1] !== e[1] || t[2] !== e[2] || t[3] !== e[3] || this.dirty) && (this.gl.viewport(t[0], t[1], t[2], t[3]), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), si = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return null; }), (e.prototype.set = function (t) { if (t !== this.current || this.dirty) { var e = this.gl; e.bindFramebuffer(e.FRAMEBUFFER, t), (this.current = t), (this.dirty = !1); } }), e ); })(Fe), li = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return null; }), (e.prototype.set = function (t) { if (t !== this.current || this.dirty) { var e = this.gl; e.bindRenderbuffer(e.RENDERBUFFER, t), (this.current = t), (this.dirty = !1); } }), e ); })(Fe), ci = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return null; }), (e.prototype.set = function (t) { if (t !== this.current || this.dirty) { var e = this.gl; e.bindTexture(e.TEXTURE_2D, t), (this.current = t), (this.dirty = !1); } }), e ); })(Fe), hi = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return null; }), (e.prototype.set = function (t) { if (t !== this.current || this.dirty) { var e = this.gl; e.bindBuffer(e.ARRAY_BUFFER, t), (this.current = t), (this.dirty = !1); } }), e ); })(Fe), ui = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return null; }), (e.prototype.set = function (t) { var e = this.gl; e.bindBuffer(e.ELEMENT_ARRAY_BUFFER, t), (this.current = t), (this.dirty = !1); }), e ); })(Fe), pi = (function (t) { function e(e) { t.call(this, e), (this.vao = e.extVertexArrayObject); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return null; }), (e.prototype.set = function (t) { this.vao && (t !== this.current || this.dirty) && (this.vao.bindVertexArrayOES(t), (this.current = t), (this.dirty = !1)); }), e ); })(Fe), di = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return 4; }), (e.prototype.set = function (t) { if (t !== this.current || this.dirty) { var e = this.gl; e.pixelStorei(e.UNPACK_ALIGNMENT, t), (this.current = t), (this.dirty = !1); } }), e ); })(Fe), _i = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return !1; }), (e.prototype.set = function (t) { if (t !== this.current || this.dirty) { var e = this.gl; e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL, t), (this.current = t), (this.dirty = !1); } }), e ); })(Fe), fi = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return !1; }), (e.prototype.set = function (t) { if (t !== this.current || this.dirty) { var e = this.gl; e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL, t), (this.current = t), (this.dirty = !1); } }), e ); })(Fe), mi = (function (t) { function e(e, i) { t.call(this, e), (this.context = e), (this.parent = i); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.getDefault = function () { return null; }), e ); })(Fe), gi = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.setDirty = function () { this.dirty = !0; }), (e.prototype.set = function (t) { if (t !== this.current || this.dirty) { this.context.bindFramebuffer.set(this.parent); var e = this.gl; e.framebufferTexture2D( e.FRAMEBUFFER, e.COLOR_ATTACHMENT0, e.TEXTURE_2D, t, 0, ), (this.current = t), (this.dirty = !1); } }), e ); })(mi), vi = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.set = function (t) { if (t !== this.current || this.dirty) { this.context.bindFramebuffer.set(this.parent); var e = this.gl; e.framebufferRenderbuffer( e.FRAMEBUFFER, e.DEPTH_ATTACHMENT, e.RENDERBUFFER, t, ), (this.current = t), (this.dirty = !1); } }), e ); })(mi), yi = function (t, e, i, r) { (this.context = t), (this.width = e), (this.height = i); var o = t.gl, a = (this.framebuffer = o.createFramebuffer()); if ( ((this.colorAttachment = new gi(t, a)), r && (this.depthAttachment = new vi(t, a)), o.checkFramebufferStatus(o.FRAMEBUFFER) !== o.FRAMEBUFFER_COMPLETE) ) throw new Error('Framebuffer is not complete'); }; yi.prototype.destroy = function () { var t = this.context.gl, e = this.colorAttachment.get(); if ((e && t.deleteTexture(e), this.depthAttachment)) { var i = this.depthAttachment.get(); i && t.deleteRenderbuffer(i); } t.deleteFramebuffer(this.framebuffer); }; var xi = function (t, e, i) { (this.blendFunction = t), (this.blendColor = e), (this.mask = i); }; (xi.disabled = new xi((xi.Replace = [1, 0]), t.Color.transparent, [ !1, !1, !1, !1, ])), (xi.unblended = new xi(xi.Replace, t.Color.transparent, [ !0, !0, !0, !0, ])), (xi.alphaBlended = new xi([1, 771], t.Color.transparent, [ !0, !0, !0, !0, ])); var bi = function (t) { (this.gl = t), (this.extVertexArrayObject = this.gl.getExtension( 'OES_vertex_array_object', )), (this.clearColor = new Ue(this)), (this.clearDepth = new Ne(this)), (this.clearStencil = new Ge(this)), (this.colorMask = new je(this)), (this.depthMask = new Ze(this)), (this.stencilMask = new Ve(this)), (this.stencilFunc = new qe(this)), (this.stencilOp = new Xe(this)), (this.stencilTest = new We(this)), (this.depthRange = new He(this)), (this.depthTest = new Ke(this)), (this.depthFunc = new Ye(this)), (this.blend = new Je(this)), (this.blendFunc = new Qe(this)), (this.blendColor = new $e(this)), (this.blendEquation = new ti(this)), (this.cullFace = new ei(this)), (this.cullFaceSide = new ii(this)), (this.frontFace = new ri(this)), (this.program = new oi(this)), (this.activeTexture = new ai(this)), (this.viewport = new ni(this)), (this.bindFramebuffer = new si(this)), (this.bindRenderbuffer = new li(this)), (this.bindTexture = new ci(this)), (this.bindVertexBuffer = new hi(this)), (this.bindElementBuffer = new ui(this)), (this.bindVertexArrayOES = this.extVertexArrayObject && new pi(this)), (this.pixelStoreUnpack = new di(this)), (this.pixelStoreUnpackPremultiplyAlpha = new _i(this)), (this.pixelStoreUnpackFlipY = new fi(this)), (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.extTextureHalfFloat = t.getExtension('OES_texture_half_float')), this.extTextureHalfFloat && (t.getExtension('OES_texture_half_float_linear'), (this.extRenderToTextureHalfFloat = t.getExtension( 'EXT_color_buffer_half_float', ))), (this.extTimerQuery = t.getExtension('EXT_disjoint_timer_query')), (this.maxTextureSize = t.getParameter(t.MAX_TEXTURE_SIZE)); }; (bi.prototype.setDefault = function () { 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(); }), (bi.prototype.setDirty = function () { (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.extVertexArrayObject && (this.bindVertexArrayOES.dirty = !0), (this.pixelStoreUnpack.dirty = !0), (this.pixelStoreUnpackPremultiplyAlpha.dirty = !0), (this.pixelStoreUnpackFlipY.dirty = !0); }), (bi.prototype.createIndexBuffer = function (t, e) { return new ke(this, t, e); }), (bi.prototype.createVertexBuffer = function (t, e, i) { return new Oe(this, t, e, i); }), (bi.prototype.createRenderbuffer = function (t, e, i) { var r = this.gl, o = r.createRenderbuffer(); return ( this.bindRenderbuffer.set(o), r.renderbufferStorage(r.RENDERBUFFER, t, e, i), this.bindRenderbuffer.set(null), o ); }), (bi.prototype.createFramebuffer = function (t, e, i) { return new yi(this, t, e, i); }), (bi.prototype.clear = function (t) { var e = t.color, i = t.depth, r = this.gl, o = 0; e && ((o |= r.COLOR_BUFFER_BIT), this.clearColor.set(e), this.colorMask.set([!0, !0, !0, !0])), void 0 !== i && ((o |= r.DEPTH_BUFFER_BIT), this.depthRange.set([0, 1]), this.clearDepth.set(i), this.depthMask.set(!0)), r.clear(o); }), (bi.prototype.setCullFace = function (t) { !1 === t.enable ? this.cullFace.set(!1) : (this.cullFace.set(!0), this.cullFaceSide.set(t.mode), this.frontFace.set(t.frontFace)); }), (bi.prototype.setDepthMode = function (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); }), (bi.prototype.setStencilMode = function (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); }), (bi.prototype.setColorMode = function (t) { o(t.blendFunction, xi.Replace) ? this.blend.set(!1) : (this.blend.set(!0), this.blendFunc.set(t.blendFunction), this.blendColor.set(t.blendColor)), this.colorMask.set(t.mask); }), (bi.prototype.unbindVAO = function () { this.extVertexArrayObject && this.bindVertexArrayOES.set(null); }); var wi = function (t, e, i) { (this.func = t), (this.mask = e), (this.range = i); }; (wi.ReadOnly = !1), (wi.ReadWrite = !0), (wi.disabled = new wi(519, wi.ReadOnly, [0, 1])); var Ti = 7680, Ei = function (t, e, i, r, o, a) { (this.test = t), (this.ref = e), (this.mask = i), (this.fail = r), (this.depthFail = o), (this.pass = a); }; Ei.disabled = new Ei({ func: 519, mask: 0 }, 0, 0, Ti, Ti, Ti); var Ii, Ci = function (t, e, i) { (this.enable = t), (this.mode = e), (this.frontFace = i); }; function Si(e, i, r, o, a, n, s) { for ( var l = e.context, c = l.gl, h = e.useProgram('collisionBox'), u = [], p = 0, d = 0, _ = 0; _ < o.length; _++ ) { var f = o[_], m = i.getTile(f), g = m.getBucket(r); if (g) { var v = f.posMatrix; (0 === a[0] && 0 === a[1]) || (v = e.translatePosMatrix(f.posMatrix, m, a, n)); var y = s ? g.textCollisionBox : g.iconCollisionBox, x = g.collisionCircleArray; if (x.length > 0) { var b = t.create(), w = v; t.mul(b, g.placementInvProjMatrix, e.transform.glCoordMatrix), t.mul(b, b, g.placementViewportMatrix), u.push({ circleArray: x, circleOffset: d, transform: w, invTransform: b, coord: f, }), (d = p += x.length / 4); } y && h.draw( l, c.LINES, wi.disabled, Ei.disabled, e.colorModeForRenderPass(), Ci.disabled, ge(v, e.transform, m), e.style.terrain && e.style.terrain.getTerrainData(f), r.id, y.layoutVertexBuffer, y.indexBuffer, y.segments, null, e.transform.zoom, null, null, y.collisionVertexBuffer, ); } } if (s && u.length) { var T = e.useProgram('collisionCircle'), E = new t.CollisionCircleLayoutArray(); E.resize(4 * p), E._trim(); for (var I = 0, C = 0, S = u; C < S.length; C += 1) for (var D = S[C], z = 0; z < D.circleArray.length / 4; z++) { var P = 4 * z, M = D.circleArray[P + 0], A = D.circleArray[P + 1], R = D.circleArray[P + 2], L = D.circleArray[P + 3]; E.emplace(I++, M, A, R, L, 0), E.emplace(I++, M, A, R, L, 1), E.emplace(I++, M, A, R, L, 2), E.emplace(I++, M, A, R, L, 3); } (!Ii || Ii.length < 2 * p) && (Ii = (function (e) { var i = 2 * e, r = new t.QuadTriangleArray(); r.resize(i), r._trim(); for (var o = 0; o < i; o++) { var a = 6 * o; (r.uint16[a + 0] = 4 * o + 0), (r.uint16[a + 1] = 4 * o + 1), (r.uint16[a + 2] = 4 * o + 2), (r.uint16[a + 3] = 4 * o + 2), (r.uint16[a + 4] = 4 * o + 3), (r.uint16[a + 5] = 4 * o + 0); } return r; })(p)); for ( var k = l.createIndexBuffer(Ii, !0), B = l.createVertexBuffer(E, t.collisionCircleLayout.members, !0), O = 0, F = u; O < F.length; O += 1 ) { var U = F[O], N = ve(U.transform, U.invTransform, e.transform); T.draw( l, c.TRIANGLES, wi.disabled, Ei.disabled, e.colorModeForRenderPass(), Ci.disabled, N, e.style.terrain && e.style.terrain.getTerrainData(U.coord), r.id, B, k, t.SegmentVector.simpleSegment( 0, 2 * U.circleOffset, U.circleArray.length, U.circleArray.length / 2, ), null, e.transform.zoom, null, null, null, ); } B.destroy(), k.destroy(); } } (Ci.disabled = new Ci(!1, 1029, 2305)), (Ci.backCCW = new Ci(!0, 1029, 2305)); var Di = t.identity(new Float32Array(16)); function zi(e, i, r, o, a, n) { var s = t.getAnchorAlignment(e), l = -(s.horizontalAlign - 0.5) * i, c = -(s.verticalAlign - 0.5) * r, h = t.evaluateVariableOffset(e, o); return new t.pointGeometry((l / a + h[0]) * n, (c / a + h[1]) * n); } function Pi(e, i, r, o, a, n, s, l, c, h, u, p) { for ( var d = e.context, _ = d.gl, f = e.transform, m = 'map' === l, g = 'map' === c, v = 'viewport' !== l && 'point' !== r.layout.get('symbol-placement'), y = m && !g && !v, x = !r.layout.get('symbol-sort-key').isConstant(), b = !1, w = e.depthModeForSublayer(0, wi.ReadOnly), T = r.layout.get('text-variable-anchor'), E = [], I = function () { var o = S[C], l = i.getTile(o), c = l.getBucket(r); if (c) { var u = a ? c.text : c.icon; if (u && u.segments.get().length) { var p = u.programConfigurations.get(r.id), d = a || c.sdfIcons, w = a ? c.textSizeData : c.iconSizeData, I = g || 0 !== f.pitch, D = e.useProgram( (function (t, e, i) { return i.iconsInText && e ? 'symbolTextAndIcon' : t ? 'symbolSDF' : 'symbolIcon'; })(d, a, c), p, ), z = t.evaluateSizeForZoom(w, f.zoom), P = e.style.terrain && e.style.terrain.getTerrainData(o), M = void 0, A = [0, 0], R = void 0, L = void 0, k = null, B = void 0; if (a) (R = l.glyphAtlasTexture), (L = _.LINEAR), (M = l.glyphAtlasTexture.size), c.iconsInText && ((A = l.imageAtlasTexture.size), (k = l.imageAtlasTexture), (B = I || e.options.rotating || e.options.zooming || 'composite' === w.kind || 'camera' === w.kind ? _.LINEAR : _.NEAREST)); else { var O = 1 !== r.layout.get('icon-size').constantOr(0) || c.iconsNeedLinear; (R = l.imageAtlasTexture), (L = d || e.options.rotating || e.options.zooming || O || I ? _.LINEAR : _.NEAREST), (M = l.imageAtlasTexture.size); } var F = wt(l, 1, e.transform.zoom), U = st(o.posMatrix, g, m, e.transform, F), N = lt(o.posMatrix, g, m, e.transform, F), G = T && c.hasTextData(), j = 'none' !== r.layout.get('icon-text-fit') && G && c.hasIconData(); if (v) { var Z = e.style.terrain ? function (t, i) { return e.style.terrain.getElevation(o, t, i); } : null, V = 'map' === r.layout.get('text-rotation-alignment'); !(function (e, i, r, o, a, n, s, l, c, h) { var u = o ? e.textSizeData : e.iconSizeData, p = t.evaluateSizeForZoom(u, r.transform.zoom), d = [(256 / r.width) * 2 + 1, (256 / r.height) * 2 + 1], _ = o ? e.text.dynamicLayoutVertexArray : e.icon.dynamicLayoutVertexArray; _.clear(); for ( var f = e.lineVertexArray, m = o ? e.text.placedSymbolArray : e.icon.placedSymbolArray, g = r.transform.width / r.transform.height, v = !1, y = 0; y < m.length; y++ ) { var x = m.get(y); if ( x.hidden || (x.writingMode === t.WritingMode.vertical && !v) ) vt(x.numGlyphs, _); else { v = !1; var b = void 0; if ( (h ? ((b = [ x.anchorX, x.anchorY, h(x.anchorX, x.anchorY), 1, ]), t.transformMat4(b, b, i)) : yt((b = [x.anchorX, x.anchorY, 0, 1]), b, i), ut(b, d)) ) { var w = ht(r.transform.cameraToCenterDistance, b[3]), T = t.evaluateSizeForFeature(u, p, x), E = s ? T / w : T * w, I = new t.pointGeometry(x.anchorX, x.anchorY), C = ct(I, a, h).point, S = {}, D = _t( x, E, !1, l, i, a, n, e.glyphOffsetArray, f, _, C, I, S, g, c, h, ); (v = D.useVertical), (D.notEnoughRoom || v || (D.needsFlipping && _t( x, E, !0, l, i, a, n, e.glyphOffsetArray, f, _, C, I, S, g, c, h, ).notEnoughRoom)) && vt(x.numGlyphs, _); } else vt(x.numGlyphs, _); } } o ? e.text.dynamicLayoutVertexBuffer.updateData(_) : e.icon.dynamicLayoutVertexBuffer.updateData(_); })(c, o.posMatrix, e, a, U, N, g, h, V, Z); } var q, X = e.translatePosMatrix(o.posMatrix, l, n, s), W = v || (a && T) || j ? Di : U, H = e.translatePosMatrix(N, l, n, s, !0), K = d && 0 !== r.paint .get(a ? 'text-halo-width' : 'icon-halo-width') .constantOr(1); q = d ? c.iconsInText ? (function (e, i, r, o, a, n, s, l, c, h) { return t.extend(Me(e, i, r, o, a, n, s, l, !0, c, !0), { u_texsize_icon: h, u_texture_icon: 1, }); })(w.kind, z, y, g, e, X, W, H, M, A) : Me(w.kind, z, y, g, e, X, W, H, a, M, !0) : Pe(w.kind, z, y, g, e, X, W, H, a, M); var Y = { program: D, buffers: u, uniformValues: q, atlasTexture: R, atlasTextureIcon: k, atlasInterpolation: L, atlasInterpolationIcon: B, isSDF: d, hasHalo: K, }; if (x && c.canOverlap) { b = !0; for (var J = 0, Q = u.segments.get(); J < Q.length; J += 1) { var $ = Q[J]; E.push({ segments: new t.SegmentVector([$]), sortKey: $.sortKey, state: Y, terrainData: P, }); } } else E.push({ segments: u.segments, sortKey: 0, state: Y, terrainData: P, }); } } }, C = 0, S = o; C < S.length; C += 1 ) I(); b && E.sort(function (t, e) { return t.sortKey - e.sortKey; }); for (var D = 0, z = E; D < z.length; D += 1) { var P = z[D], M = P.state; if ( (d.activeTexture.set(_.TEXTURE0), M.atlasTexture.bind(M.atlasInterpolation, _.CLAMP_TO_EDGE), M.atlasTextureIcon && (d.activeTexture.set(_.TEXTURE1), M.atlasTextureIcon && M.atlasTextureIcon.bind( M.atlasInterpolationIcon, _.CLAMP_TO_EDGE, )), M.isSDF) ) { var A = M.uniformValues; M.hasHalo && ((A.u_is_halo = 1), Mi( M.buffers, P.segments, r, e, M.program, w, u, p, A, P.terrainData, )), (A.u_is_halo = 0); } Mi( M.buffers, P.segments, r, e, M.program, w, u, p, M.uniformValues, P.terrainData, ); } } function Mi(t, e, i, r, o, a, n, s, l, c) { var h = r.context; o.draw( h, h.gl.TRIANGLES, a, n, s, Ci.disabled, l, c, i.id, t.layoutVertexBuffer, t.indexBuffer, e, i.paint, r.transform.zoom, t.programConfigurations.get(i.id), t.dynamicLayoutVertexBuffer, t.opacityVertexBuffer, ); } function Ai(t, e, i, r, o, a, n) { var s, l, c, h, u, p = t.context.gl, d = i.paint.get('fill-pattern'), _ = d && d.constantOr(1), f = i.getCrossfadeParameters(); n ? ((l = _ && !i.getPaintProperty('fill-outline-color') ? 'fillOutlinePattern' : 'fillOutline'), (s = p.LINES)) : ((l = _ ? 'fillPattern' : 'fill'), (s = p.TRIANGLES)); for (var m = 0, g = r; m < g.length; m += 1) { var v = g[m], y = e.getTile(v); if (!_ || y.patternsLoaded()) { var x = y.getBucket(i); if (x) { var b = x.programConfigurations.get(i.id), w = t.useProgram(l, b), T = t.style.terrain && t.style.terrain.getTerrainData(v); _ && (t.context.activeTexture.set(p.TEXTURE0), y.imageAtlasTexture.bind(p.LINEAR, p.CLAMP_TO_EDGE), b.updatePaintBuffers(f)); var E = d.constantOr(null); if (E && y.imageAtlas) { var I = y.imageAtlas, C = I.patternPositions[E.to.toString()], S = I.patternPositions[E.from.toString()]; C && S && b.setConstantPatternPositions(C, S); } var D = T ? v : null, z = t.translatePosMatrix( D ? D.posMatrix : v.posMatrix, y, i.paint.get('fill-translate'), i.paint.get('fill-translate-anchor'), ); if (n) { (h = x.indexBuffer2), (u = x.segments2); var P = [p.drawingBufferWidth, p.drawingBufferHeight]; c = 'fillOutlinePattern' === l && _ ? fe(z, t, f, y, P) : _e(z, P); } else (h = x.indexBuffer), (u = x.segments), (c = _ ? de(z, t, f, y) : pe(z)); w.draw( t.context, s, o, t.stencilModeForClipping(v), a, Ci.disabled, c, T, i.id, x.layoutVertexBuffer, h, u, i.paint, t.transform.zoom, b, ); } } } } function Ri(t, e, i, r, o, a, n) { for ( var s = t.context, l = s.gl, c = i.paint.get('fill-extrusion-pattern'), h = c.constantOr(1), u = i.getCrossfadeParameters(), p = i.paint.get('fill-extrusion-opacity'), d = 0, _ = r; d < _.length; d += 1 ) { var f = _[d], m = e.getTile(f), g = m.getBucket(i); if (g) { var v = t.style.terrain && t.style.terrain.getTerrainData(f), y = g.programConfigurations.get(i.id), x = t.useProgram(h ? 'fillExtrusionPattern' : 'fillExtrusion', y); h && (t.context.activeTexture.set(l.TEXTURE0), m.imageAtlasTexture.bind(l.LINEAR, l.CLAMP_TO_EDGE), y.updatePaintBuffers(u)); var b = c.constantOr(null); if (b && m.imageAtlas) { var w = m.imageAtlas, T = w.patternPositions[b.to.toString()], E = w.patternPositions[b.from.toString()]; T && E && y.setConstantPatternPositions(T, E); } var I = t.translatePosMatrix( f.posMatrix, m, i.paint.get('fill-extrusion-translate'), i.paint.get('fill-extrusion-translate-anchor'), ), C = i.paint.get('fill-extrusion-vertical-gradient'), S = h ? ue(I, t, C, p, f, u, m) : he(I, t, C, p); x.draw( s, s.gl.TRIANGLES, o, a, n, Ci.backCCW, S, v, i.id, g.layoutVertexBuffer, g.indexBuffer, g.segments, i.paint, t.transform.zoom, y, t.style.terrain && g.centroidVertexBuffer, ); } } } function Li(e, i, r, o, a, n, s) { var l = e.context, c = l.gl, h = r.fbo; if (h) { var u = e.useProgram('hillshade'), p = e.style.terrain && e.style.terrain.getTerrainData(i); l.activeTexture.set(c.TEXTURE0), c.bindTexture(c.TEXTURE_2D, h.colorAttachment.get()), u.draw( l, c.TRIANGLES, a, n, s, Ci.disabled, (function (e, i, r, o) { var a = r.paint.get('hillshade-shadow-color'), n = r.paint.get('hillshade-highlight-color'), s = r.paint.get('hillshade-accent-color'), l = r.paint.get('hillshade-illumination-direction') * (Math.PI / 180); 'viewport' === r.paint.get('hillshade-illumination-anchor') && (l -= e.transform.angle); var c, h, u, p = !e.options.moving; return { u_matrix: o ? o.posMatrix : e.transform.calculatePosMatrix(i.tileID.toUnwrapped(), p), u_image: 0, u_latrange: ((c = i.tileID), (h = Math.pow(2, c.canonical.z)), (u = c.canonical.y), [ new t.MercatorCoordinate(0, u / h).toLngLat().lat, new t.MercatorCoordinate(0, (u + 1) / h).toLngLat().lat, ]), u_light: [r.paint.get('hillshade-exaggeration'), l], u_shadow: a, u_highlight: n, u_accent: s, }; })(e, r, o, p ? i : null), p, o.id, e.rasterBoundsBuffer, e.quadTriangleIndexBuffer, e.rasterBoundsSegments, ); } } function ki(e, i, r, o, a, n) { var s = e.context, c = s.gl, h = i.dem; if (h && h.data) { var u = h.dim, p = h.stride, d = h.getPixels(); if ( (s.activeTexture.set(c.TEXTURE1), s.pixelStoreUnpackPremultiplyAlpha.set(!1), (i.demTexture = i.demTexture || e.getTileTexture(p)), i.demTexture) ) { var _ = i.demTexture; _.update(d, { premultiply: !1 }), _.bind(c.NEAREST, c.CLAMP_TO_EDGE); } else (i.demTexture = new l(s, d, c.RGBA, { premultiply: !1 })), i.demTexture.bind(c.NEAREST, c.CLAMP_TO_EDGE); s.activeTexture.set(c.TEXTURE0); var f = i.fbo; if (!f) { var m = new l(s, { width: u, height: u, data: null }, c.RGBA); m.bind(c.LINEAR, c.CLAMP_TO_EDGE), (f = i.fbo = s.createFramebuffer(u, u, !0)).colorAttachment.set( m.texture, ); } s.bindFramebuffer.set(f.framebuffer), s.viewport.set([0, 0, u, u]), e.useProgram('hillshadePrepare').draw( s, c.TRIANGLES, o, a, n, Ci.disabled, (function (e, i) { var r = i.stride, o = t.create(); return ( t.ortho(o, 0, t.EXTENT, -t.EXTENT, 0, 0, 1), t.translate(o, o, [0, -t.EXTENT, 0]), { u_matrix: o, u_image: 1, u_dimension: [r, r], u_zoom: e.overscaledZ, u_unpack: i.getUnpackVector(), } ); })(i.tileID, h), null, r.id, e.rasterBoundsBuffer, e.quadTriangleIndexBuffer, e.rasterBoundsSegments, ), (i.needsHillshadePrepare = !1); } } function Bi(e, i, r, o, a, n) { var s = o.paint.get('raster-fade-duration'); if (!n && s > 0) { var l = t.exported.now(), c = (l - e.timeAdded) / s, h = i ? (l - i.timeAdded) / s : -1, u = r.getSource(), p = a.coveringZoomLevel({ tileSize: u.tileSize, roundZoom: u.roundZoom, }), d = !i || Math.abs(i.tileID.overscaledZ - p) > Math.abs(e.tileID.overscaledZ - p), _ = d && e.refreshedUponExpiration ? 1 : t.clamp(d ? c : 1 - h, 0, 1); return ( e.refreshedUponExpiration && c >= 1 && (e.refreshedUponExpiration = !1), i ? { opacity: 1, mix: 1 - _ } : { opacity: _, mix: 0 } ); } return { opacity: 1, mix: 0 }; } var Oi = new t.Color(1, 0, 0, 1), Fi = new t.Color(0, 1, 0, 1), Ui = new t.Color(0, 0, 1, 1), Ni = new t.Color(1, 0, 1, 1), Gi = new t.Color(0, 1, 1, 1); function ji(t, e, i, r) { Vi(t, 0, e + i / 2, t.transform.width, i, r); } function Zi(t, e, i, r) { Vi(t, e - i / 2, 0, i, t.transform.height, r); } function Vi(t, e, i, r, o, a) { var n = t.context, s = n.gl; s.enable(s.SCISSOR_TEST), s.scissor( e * t.pixelRatio, i * t.pixelRatio, r * t.pixelRatio, o * t.pixelRatio, ), n.clear({ color: a }), s.disable(s.SCISSOR_TEST); } function qi(e, i, r) { var o = e.context, a = o.gl, n = r.posMatrix, s = e.useProgram('debug'), l = wi.disabled, c = Ei.disabled, h = e.colorModeForRenderPass(), u = '$debug', p = e.style.terrain && e.style.terrain.getTerrainData(r); o.activeTexture.set(a.TEXTURE0), e.emptyTexture.bind(a.LINEAR, a.CLAMP_TO_EDGE); var d = i.getTileByID(r.key).latestRawTileData, _ = Math.floor(((d && d.byteLength) || 0) / 1024), f = i.getTile(r).tileSize, m = (512 / Math.min(f, 512)) * (r.overscaledZ / e.transform.zoom) * 0.5, g = r.canonical.toString(); r.overscaledZ !== r.canonical.z && (g += ' => ' + r.overscaledZ), (function (t, e) { t.initDebugOverlayCanvas(); var i = t.debugOverlayCanvas, r = t.context.gl, o = t.debugOverlayCanvas.getContext('2d'); o.clearRect(0, 0, i.width, i.height), (o.shadowColor = 'white'), (o.shadowBlur = 2), (o.lineWidth = 1.5), (o.strokeStyle = 'white'), (o.textBaseline = 'top'), (o.font = 'bold 36px Open Sans, sans-serif'), o.fillText(e, 5, 5), o.strokeText(e, 5, 5), t.debugOverlayTexture.update(i), t.debugOverlayTexture.bind(r.LINEAR, r.CLAMP_TO_EDGE); })(e, g + ' ' + _ + 'kB'), s.draw( o, a.TRIANGLES, l, c, xi.alphaBlended, Ci.disabled, ye(n, t.Color.transparent, m), null, u, e.debugBuffer, e.quadTriangleIndexBuffer, e.debugSegments, ), s.draw( o, a.LINE_STRIP, l, c, h, Ci.disabled, ye(n, t.Color.red), p, u, e.debugBuffer, e.tileBorderIndexBuffer, e.debugSegments, ); } function Xi(t, e, i) { var r = t.context, o = r.gl, a = t.colorModeForRenderPass(), n = new wi(o.LEQUAL, wi.ReadWrite, t.depthRangeFor3D), s = t.useProgram('terrain'), l = e.getTerrainMesh(), c = e.getTerrainData(i.tileID); r.bindFramebuffer.set(null), r.viewport.set([0, 0, t.width, t.height]), r.activeTexture.set(o.TEXTURE0), o.bindTexture( o.TEXTURE_2D, e.getRTTFramebuffer().colorAttachment.get(), ); var h = t.transform.calculatePosMatrix(i.tileID.toUnwrapped()); s.draw( r, o.TRIANGLES, n, Ei.disabled, a, Ci.backCCW, { u_matrix: h, u_texture: 0 }, c, 'terrain', l.vertexBuffer, l.indexBuffer, l.segments, ); } function Wi(t, e, i, r) { var o = t.context, a = i.tileSize * e.qualityFactor; i.textures[r] || ((i.textures[r] = t.getTileTexture(a) || new l(o, { width: a, height: a, data: null }, o.gl.RGBA)), i.textures[r].bind(o.gl.LINEAR, o.gl.CLAMP_TO_EDGE), 0 === r && e.sourceCache.renderHistory.unshift(i.tileID.key)); var n = e.getRTTFramebuffer(); n.colorAttachment.set(i.textures[r].texture), o.bindFramebuffer.set(n.framebuffer), o.viewport.set([0, 0, a, a]); } var Hi = function (t) { (this._coordsDescendingInv = {}), (this._coordsDescendingInvStr = {}), (this.painter = t), (this._renderToTexture = { background: !0, fill: !0, line: !0, raster: !0, }), (this._coordsDescendingInv = {}), (this._coordsDescendingInvStr = {}), (this._stacks = []), (this._prevType = null), (this._rerender = {}), (this._renderableTiles = t.style.terrain.sourceCache.getRenderableTiles()), this._init(); }; (Hi.prototype._init = function () { var t = this, e = this.painter.style, i = e.terrain; for (var r in e.sourceCaches) { this._coordsDescendingInv[r] = {}; for ( var o = 0, a = e.sourceCaches[r].getVisibleCoordinates(); o < a.length; o += 1 ) { var n = i.sourceCache.getTerrainCoords(a[o]); for (var s in n) this._coordsDescendingInv[r][s] || (this._coordsDescendingInv[r][s] = []), this._coordsDescendingInv[r][s].push(n[s]); } } for (var l = 0, c = e._order; l < c.length; l += 1) { var h = e._layers[c[l]], u = h.source; if (this._renderToTexture[h.type] && !this._coordsDescendingInvStr[u]) for (var p in ((this._coordsDescendingInvStr[u] = {}), this._coordsDescendingInv[u])) this._coordsDescendingInvStr[u][p] = this._coordsDescendingInv[u][p] .map(function (t) { return t.key; }) .sort() .join(); } return ( this._renderableTiles.forEach(function (e) { for (var r in t._coordsDescendingInvStr) { var o = t._coordsDescendingInvStr[r][e.tileID.key]; o && o !== e.textureCoords[r] && e.clearTextures(t.painter), i.needsRerender(r, e.tileID) && e.clearTextures(t.painter); } t._rerender[e.tileID.key] = !e.textures.length; }), i.clearRerenderCache(), i.sourceCache.removeOutdated(this.painter), this ); }), (Hi.prototype.renderLayer = function (e) { var i = e.type, r = this.painter, o = r.style._order, a = r.currentLayer, n = a + 1 === o.length; if ( this._renderToTexture[i] && ((this._prevType && this._renderToTexture[this._prevType]) || this._stacks.push([]), (this._prevType = i), this._stacks[this._stacks.length - 1].push(o[a]), !n) ) return !0; if ( this._renderToTexture[this._prevType] || 'hillshade' === i || (this._renderToTexture[i] && n) ) { this._prevType = i; for ( var s = this._stacks.length - 1, l = this._stacks[s] || [], c = 0, h = this._renderableTiles; c < h.length; c += 1 ) { var u = h[c]; if ((Wi(r, r.style.terrain, u, s), this._rerender[u.tileID.key])) { r.context.clear({ color: t.Color.transparent }); for (var p = 0; p < l.length; p++) { var d = r.style._layers[l[p]], _ = d.source ? this._coordsDescendingInv[d.source][u.tileID.key] : [u.tileID]; r._renderTileClippingMasks(d, _), r.renderLayer(r, r.style.sourceCaches[d.source], d, _), d.source && (u.textureCoords[d.source] = this._coordsDescendingInvStr[d.source][u.tileID.key]); } } Xi(r, r.style.terrain, u); } if ('hillshade' === i) { this._stacks.push([o[a]]); for (var f = 0, m = this._renderableTiles; f < m.length; f += 1) { var g = m[f], v = this._coordsDescendingInv[e.source][g.tileID.key]; Wi(r, r.style.terrain, g, this._stacks.length - 1), r.context.clear({ color: t.Color.transparent }), r._renderTileClippingMasks(e, v), r.renderLayer(r, r.style.sourceCaches[e.source], e, v), Xi(r, r.style.terrain, g); } return !0; } return this._renderToTexture[i]; } return !1; }); var Ki = { symbol: function (e, i, r, o, a) { if ('translucent' === e.renderPass) { var n = Ei.disabled, s = e.colorModeForRenderPass(); r.layout.get('text-variable-anchor') && (function (e, i, r, o, a, n, s) { for ( var l = i.transform, c = 'map' === a, h = 'map' === n, u = function () { var e = d[p], a = o.getTile(e), n = a.getBucket(r); if (n && n.text && n.text.segments.get().length) { var u = t.evaluateSizeForZoom(n.textSizeData, l.zoom), _ = wt(a, 1, i.transform.zoom), f = st(e.posMatrix, h, c, i.transform, _), m = 'none' !== r.layout.get('icon-text-fit') && n.hasIconData(); if (u) { var g = Math.pow(2, l.zoom - a.tileID.overscaledZ); !(function (e, i, r, o, a, n, s, l, c, h, u) { var p = e.text.placedSymbolArray, d = e.text.dynamicLayoutVertexArray, _ = e.icon.dynamicLayoutVertexArray, f = {}; d.clear(); for (var m = 0; m < p.length; m++) { var g = p.get(m), v = g.hidden || !g.crossTileID || (e.allowVerticalPlacement && !g.placedOrientation) ? null : o[g.crossTileID]; if (v) { var y = new t.pointGeometry( g.anchorX, g.anchorY, ), x = ct(y, r ? s : n, u), b = ht( a.cameraToCenterDistance, x.signedDistanceFromCamera, ), w = (t.evaluateSizeForFeature( e.textSizeData, c, g, ) * b) / t.ONE_EM; r && (w *= e.tilePixelRatio / l); for ( var T = zi( v.anchor, v.width, v.height, v.textOffset, v.textBoxScale, w, ), E = r ? ct(y.add(T), n, u).point : x.point.add(i ? T.rotate(-a.angle) : T), I = e.allowVerticalPlacement && g.placedOrientation === t.WritingMode.vertical ? Math.PI / 2 : 0, C = 0; C < g.numGlyphs; C++ ) t.addDynamicAttributes(d, E, I); h && g.associatedIconIndex >= 0 && (f[g.associatedIconIndex] = { shiftedAnchor: E, angle: I, }); } else vt(g.numGlyphs, d); } if (h) { _.clear(); for ( var S = e.icon.placedSymbolArray, D = 0; D < S.length; D++ ) { var z = S.get(D); if (z.hidden) vt(z.numGlyphs, _); else { var P = f[D]; if (P) for (var M = 0; M < z.numGlyphs; M++) t.addDynamicAttributes( _, P.shiftedAnchor, P.angle, ); else vt(z.numGlyphs, _); } } e.icon.dynamicLayoutVertexBuffer.updateData(_); } e.text.dynamicLayoutVertexBuffer.updateData(d); })( n, c, h, s, l, f, e.posMatrix, g, u, m, i.style.terrain ? function (t, r) { return i.style.terrain.getElevation(e, t, r); } : null, ); } } }, p = 0, d = e; p < d.length; p += 1 ) u(); })( o, e, r, i, r.layout.get('text-rotation-alignment'), r.layout.get('text-pitch-alignment'), a, ), 0 !== r.paint.get('icon-opacity').constantOr(1) && Pi( e, i, r, o, !1, r.paint.get('icon-translate'), r.paint.get('icon-translate-anchor'), r.layout.get('icon-rotation-alignment'), r.layout.get('icon-pitch-alignment'), r.layout.get('icon-keep-upright'), n, s, ), 0 !== r.paint.get('text-opacity').constantOr(1) && Pi( e, i, r, o, !0, r.paint.get('text-translate'), r.paint.get('text-translate-anchor'), r.layout.get('text-rotation-alignment'), r.layout.get('text-pitch-alignment'), r.layout.get('text-keep-upright'), n, s, ), i.map.showCollisionBoxes && (Si( e, i, r, o, r.paint.get('text-translate'), r.paint.get('text-translate-anchor'), !0, ), Si( e, i, r, o, r.paint.get('icon-translate'), r.paint.get('icon-translate-anchor'), !1, )); } }, circle: function (e, i, r, o) { if ('translucent' === e.renderPass) { var a = r.paint.get('circle-opacity'), n = r.paint.get('circle-stroke-width'), s = r.paint.get('circle-stroke-opacity'), l = !r.layout.get('circle-sort-key').isConstant(); if ( 0 !== a.constantOr(1) || (0 !== n.constantOr(1) && 0 !== s.constantOr(1)) ) { for ( var c = e.context, h = c.gl, u = e.depthModeForSublayer(0, wi.ReadOnly), p = Ei.disabled, d = e.colorModeForRenderPass(), _ = [], f = 0; f < o.length; f++ ) { var m = o[f], g = i.getTile(m), v = g.getBucket(r); if (v) { var y = v.programConfigurations.get(r.id), x = e.useProgram('circle', y), b = v.layoutVertexBuffer, w = v.indexBuffer, T = e.style.terrain && e.style.terrain.getTerrainData(m), E = { programConfiguration: y, program: x, layoutVertexBuffer: b, indexBuffer: w, uniformValues: me(e, m, g, r), terrainData: T, }; if (l) for ( var I = 0, C = v.segments.get(); I < C.length; I += 1 ) { var S = C[I]; _.push({ segments: new t.SegmentVector([S]), sortKey: S.sortKey, state: E, }); } else _.push({ segments: v.segments, sortKey: 0, state: E }); } } l && _.sort(function (t, e) { return t.sortKey - e.sortKey; }); for (var D = 0, z = _; D < z.length; D += 1) { var P = z[D], M = P.state; M.program.draw( c, h.TRIANGLES, u, p, d, Ci.disabled, M.uniformValues, M.terrainData, r.id, M.layoutVertexBuffer, M.indexBuffer, P.segments, r.paint, e.transform.zoom, M.programConfiguration, ); } } } }, heatmap: function (e, i, r, o) { if (0 !== r.paint.get('heatmap-opacity')) if ('offscreen' === e.renderPass) { var a = e.context, n = a.gl, s = Ei.disabled, c = new xi([n.ONE, n.ONE], t.Color.transparent, [ !0, !0, !0, !0, ]); !(function (t, e, i) { var r = t.gl; t.activeTexture.set(r.TEXTURE1), t.viewport.set([0, 0, e.width / 4, e.height / 4]); var o = i.heatmapFbo; if (o) r.bindTexture(r.TEXTURE_2D, o.colorAttachment.get()), t.bindFramebuffer.set(o.framebuffer); else { var a = r.createTexture(); r.bindTexture(r.TEXTURE_2D, a), r.texParameteri( r.TEXTURE_2D, r.TEXTURE_WRAP_S, r.CLAMP_TO_EDGE, ), r.texParameteri( r.TEXTURE_2D, r.TEXTURE_WRAP_T, r.CLAMP_TO_EDGE, ), r.texParameteri( r.TEXTURE_2D, r.TEXTURE_MIN_FILTER, r.LINEAR, ), r.texParameteri( r.TEXTURE_2D, r.TEXTURE_MAG_FILTER, r.LINEAR, ), (o = i.heatmapFbo = t.createFramebuffer(e.width / 4, e.height / 4, !1)), (function (t, e, i, r) { var o = t.gl; o.texImage2D( o.TEXTURE_2D, 0, o.RGBA, e.width / 4, e.height / 4, 0, o.RGBA, t.extRenderToTextureHalfFloat ? t.extTextureHalfFloat.HALF_FLOAT_OES : o.UNSIGNED_BYTE, null, ), r.colorAttachment.set(i); })(t, e, a, o); } })(a, e, r), a.clear({ color: t.Color.transparent }); for (var h = 0; h < o.length; h++) { var u = o[h]; if (!i.hasRenderableParent(u)) { var p = i.getTile(u), d = p.getBucket(r); if (d) { var _ = d.programConfigurations.get(r.id); e.useProgram('heatmap', _).draw( a, n.TRIANGLES, wi.disabled, s, c, Ci.disabled, be( u.posMatrix, p, e.transform.zoom, r.paint.get('heatmap-intensity'), ), null, r.id, d.layoutVertexBuffer, d.indexBuffer, d.segments, r.paint, e.transform.zoom, _, ); } } } a.viewport.set([0, 0, e.width, e.height]); } else 'translucent' === e.renderPass && (e.context.setColorMode(e.colorModeForRenderPass()), (function (e, i) { var r = e.context, o = r.gl, a = i.heatmapFbo; if (a) { r.activeTexture.set(o.TEXTURE0), o.bindTexture(o.TEXTURE_2D, a.colorAttachment.get()), r.activeTexture.set(o.TEXTURE1); var n = i.colorRampTexture; n || (n = i.colorRampTexture = new l(r, i.colorRamp, o.RGBA)), n.bind(o.LINEAR, o.CLAMP_TO_EDGE), e.useProgram('heatmapTexture').draw( r, o.TRIANGLES, wi.disabled, Ei.disabled, e.colorModeForRenderPass(), Ci.disabled, (function (e, i, r, o) { var a = t.create(); t.ortho(a, 0, e.width, e.height, 0, 0, 1); var n = e.context.gl; return { u_matrix: a, u_world: [ n.drawingBufferWidth, n.drawingBufferHeight, ], u_image: 0, u_color_ramp: 1, u_opacity: i.paint.get('heatmap-opacity'), }; })(e, i), null, i.id, e.viewportBuffer, e.quadTriangleIndexBuffer, e.viewportSegments, i.paint, e.transform.zoom, ); } })(e, r)); }, line: function (e, i, r, o) { if ('translucent' === e.renderPass) { var a = r.paint.get('line-opacity'), n = r.paint.get('line-width'); if (0 !== a.constantOr(1) && 0 !== n.constantOr(1)) for ( var s = e.depthModeForSublayer(0, wi.ReadOnly), c = e.colorModeForRenderPass(), h = r.paint.get('line-dasharray'), u = r.paint.get('line-pattern'), p = u.constantOr(1), d = r.paint.get('line-gradient'), _ = r.getCrossfadeParameters(), f = p ? 'linePattern' : h ? 'lineSDF' : d ? 'lineGradient' : 'line', m = e.context, g = m.gl, v = !0, y = 0, x = o; y < x.length; y += 1 ) { var b = x[y], w = i.getTile(b); if (!p || w.patternsLoaded()) { var T = w.getBucket(r); if (T) { var E = T.programConfigurations.get(r.id), I = e.context.program.get(), C = e.useProgram(f, E), S = v || C.program !== I, D = e.style.terrain && e.style.terrain.getTerrainData(b), z = u.constantOr(null); if (z && w.imageAtlas) { var P = w.imageAtlas, M = P.patternPositions[z.to.toString()], A = P.patternPositions[z.from.toString()]; M && A && E.setConstantPatternPositions(M, A); } var R = D ? b : null, L = p ? Ee(e, w, r, _, R) : h ? Ie(e, w, r, h, _, R) : d ? Te(e, w, r, T.lineClipsArray.length, R) : we(e, w, r, R); if (p) m.activeTexture.set(g.TEXTURE0), w.imageAtlasTexture.bind(g.LINEAR, g.CLAMP_TO_EDGE), E.updatePaintBuffers(_); else if (h && (S || e.lineAtlas.dirty)) m.activeTexture.set(g.TEXTURE0), e.lineAtlas.bind(m); else if (d) { var k = T.gradients[r.id], B = k.texture; if (r.gradientVersion !== k.version) { var O = 256; if (r.stepInterpolant) { var F = i.getSource().maxzoom, U = b.canonical.z === F ? Math.ceil( 1 << (e.transform.maxZoom - b.canonical.z), ) : 1; O = t.clamp( t.nextPowerOfTwo( (T.maxLineLength / t.EXTENT) * 1024 * U, ), 256, m.maxTextureSize, ); } (k.gradient = t.renderColorRamp({ expression: r.gradientExpression(), evaluationKey: 'lineProgress', resolution: O, image: k.gradient || void 0, clips: T.lineClipsArray, })), k.texture ? k.texture.update(k.gradient) : (k.texture = new l(m, k.gradient, g.RGBA)), (k.version = r.gradientVersion), (B = k.texture); } m.activeTexture.set(g.TEXTURE0), B.bind( r.stepInterpolant ? g.NEAREST : g.LINEAR, g.CLAMP_TO_EDGE, ); } C.draw( m, g.TRIANGLES, s, e.stencilModeForClipping(b), c, Ci.disabled, L, D, r.id, T.layoutVertexBuffer, T.indexBuffer, T.segments, r.paint, e.transform.zoom, E, T.layoutVertexBuffer2, ), (v = !1); } } } } }, fill: function (e, i, r, o) { var a = r.paint.get('fill-color'), n = r.paint.get('fill-opacity'); if (0 !== n.constantOr(1)) { var s = e.colorModeForRenderPass(), l = r.paint.get('fill-pattern'), c = e.opaquePassEnabledForLayer() && !l.constantOr(1) && 1 === a.constantOr(t.Color.transparent).a && 1 === n.constantOr(0) ? 'opaque' : 'translucent'; if (e.renderPass === c) { var h = e.depthModeForSublayer( 1, 'opaque' === e.renderPass ? wi.ReadWrite : wi.ReadOnly, ); Ai(e, i, r, o, h, s, !1); } if ( 'translucent' === e.renderPass && r.paint.get('fill-antialias') ) { var u = e.depthModeForSublayer( r.getPaintProperty('fill-outline-color') ? 2 : 0, wi.ReadOnly, ); Ai(e, i, r, o, u, s, !0); } } }, 'fill-extrusion': function (t, e, i, r) { var o = i.paint.get('fill-extrusion-opacity'); if (0 !== o && 'translucent' === t.renderPass) { var a = new wi( t.context.gl.LEQUAL, wi.ReadWrite, t.depthRangeFor3D, ); if (1 !== o || i.paint.get('fill-extrusion-pattern').constantOr(1)) Ri(t, e, i, r, a, Ei.disabled, xi.disabled), Ri( t, e, i, r, a, t.stencilModeFor3D(), t.colorModeForRenderPass(), ); else { var n = t.colorModeForRenderPass(); Ri(t, e, i, r, a, Ei.disabled, n); } } }, hillshade: function (t, e, i, r) { if ('offscreen' === t.renderPass || 'translucent' === t.renderPass) { for ( var o = t.context, a = t.depthModeForSublayer(0, wi.ReadOnly), n = t.colorModeForRenderPass(), s = 'translucent' === t.renderPass ? t.stencilConfigForOverlap(r) : [{}, r], l = s[0], c = 0, h = s[1]; c < h.length; c += 1 ) { var u = h[c], p = e.getTile(u); void 0 !== p.needsHillshadePrepare && p.needsHillshadePrepare && 'offscreen' === t.renderPass ? ki(t, p, i, a, Ei.disabled, n) : 'translucent' === t.renderPass && Li(t, u, p, i, a, l[u.overscaledZ], n); } o.viewport.set([0, 0, t.width, t.height]); } }, raster: function (t, e, i, r) { if ( 'translucent' === t.renderPass && 0 !== i.paint.get('raster-opacity') && r.length ) for ( var o = t.context, a = o.gl, n = e.getSource(), s = t.useProgram('raster'), l = t.colorModeForRenderPass(), c = n instanceof P ? [{}, r] : t.stencilConfigForOverlap(r), h = c[0], u = c[1], p = u[u.length - 1].overscaledZ, d = !t.options.moving, _ = 0, f = u; _ < f.length; _ += 1 ) { var m = f[_], g = t.depthModeForSublayer( m.overscaledZ - p, 1 === i.paint.get('raster-opacity') ? wi.ReadWrite : wi.ReadOnly, a.LESS, ), v = e.getTile(m); v.registerFadeDuration(i.paint.get('raster-fade-duration')); var y = e.findLoadedParent(m, 0), x = Bi(v, y, e, i, t.transform, t.style.terrain), b = void 0, w = void 0, T = 'nearest' === i.paint.get('raster-resampling') ? a.NEAREST : a.LINEAR; o.activeTexture.set(a.TEXTURE0), v.texture.bind(T, a.CLAMP_TO_EDGE, a.LINEAR_MIPMAP_NEAREST), o.activeTexture.set(a.TEXTURE1), y ? (y.texture.bind( T, a.CLAMP_TO_EDGE, a.LINEAR_MIPMAP_NEAREST, ), (b = Math.pow( 2, y.tileID.overscaledZ - v.tileID.overscaledZ, )), (w = [ (v.tileID.canonical.x * b) % 1, (v.tileID.canonical.y * b) % 1, ])) : v.texture.bind(T, a.CLAMP_TO_EDGE, a.LINEAR_MIPMAP_NEAREST); var E = t.style.terrain && t.style.terrain.getTerrainData(m), I = E ? m : null, C = I ? I.posMatrix : t.transform.calculatePosMatrix(m.toUnwrapped(), d), S = De(C, w || [0, 0], b || 1, x, i); n instanceof P ? s.draw( o, a.TRIANGLES, g, Ei.disabled, l, Ci.disabled, S, E, i.id, n.boundsBuffer, t.quadTriangleIndexBuffer, n.boundsSegments, ) : s.draw( o, a.TRIANGLES, g, h[m.overscaledZ], l, Ci.disabled, S, E, i.id, t.rasterBoundsBuffer, t.quadTriangleIndexBuffer, t.rasterBoundsSegments, ); } }, background: function (t, e, i, r) { var o = i.paint.get('background-color'), a = i.paint.get('background-opacity'); if (0 !== a) { var n = t.context, s = n.gl, l = t.transform, c = l.tileSize, h = i.paint.get('background-pattern'); if (!t.isPatternMissing(h)) { var u = !h && 1 === o.a && 1 === a && t.opaquePassEnabledForLayer() ? 'opaque' : 'translucent'; if (t.renderPass === u) { var p = Ei.disabled, d = t.depthModeForSublayer( 0, 'opaque' === u ? wi.ReadWrite : wi.ReadOnly, ), _ = t.colorModeForRenderPass(), f = t.useProgram(h ? 'backgroundPattern' : 'background'), m = r || l.coveringTiles({ tileSize: c, terrain: t.style.terrain }); h && (n.activeTexture.set(s.TEXTURE0), t.imageManager.bind(t.context)); for ( var g = i.getCrossfadeParameters(), v = 0, y = m; v < y.length; v += 1 ) { var x = y[v], b = r ? x.posMatrix : t.transform.calculatePosMatrix(x.toUnwrapped()), w = h ? Re(b, a, t, h, { tileID: x, tileSize: c }, g) : Ae(b, a, o), T = t.style.terrain && t.style.terrain.getTerrainData(x); f.draw( n, s.TRIANGLES, d, p, _, Ci.disabled, w, T, i.id, t.tileExtentBuffer, t.quadTriangleIndexBuffer, t.tileExtentSegments, ); } } } } }, debug: function (t, e, i) { for (var r = 0; r < i.length; r++) qi(t, e, i[r]); }, custom: function (t, e, i) { var r = t.context, o = i.implementation; if ('offscreen' === t.renderPass) { var a = o.prerender; a && (t.setCustomLayerDefaults(), r.setColorMode(t.colorModeForRenderPass()), a.call(o, r.gl, t.transform.customLayerMatrix()), r.setDirty(), t.setBaseState()); } else if ('translucent' === t.renderPass) { t.setCustomLayerDefaults(), r.setColorMode(t.colorModeForRenderPass()), r.setStencilMode(Ei.disabled); var n = '3d' === o.renderingMode ? new wi(t.context.gl.LEQUAL, wi.ReadWrite, t.depthRangeFor3D) : t.depthModeForSublayer(0, wi.ReadOnly); r.setDepthMode(n), o.render(r.gl, t.transform.customLayerMatrix()), r.setDirty(), t.setBaseState(), r.bindFramebuffer.set(null); } }, }, Yi = function (e, i) { (this.context = new bi(e)), (this.transform = i), (this._tileTextures = {}), (this.terrainFacilitator = { dirty: !0, matrix: t.create(), renderTime: 0, }), this.setup(), (this.numSublayers = N.maxUnderzooming + N.maxOverzooming + 1), (this.depthEpsilon = 1 / Math.pow(2, 16)), (this.crossTileSymbolIndex = new Ht()), (this.gpuTimers = {}); }; (Yi.prototype.resize = function (t, e, i) { if ( ((this.width = t * i), (this.height = e * i), (this.pixelRatio = i), this.context.viewport.set([0, 0, this.width, this.height]), this.style) ) for (var r = 0, o = this.style._order; r < o.length; r += 1) this.style._layers[o[r]].resize(); }), (Yi.prototype.setup = function () { var e = this.context, i = new t.PosArray(); i.emplaceBack(0, 0), i.emplaceBack(t.EXTENT, 0), i.emplaceBack(0, t.EXTENT), i.emplaceBack(t.EXTENT, t.EXTENT), (this.tileExtentBuffer = e.createVertexBuffer(i, Kt.members)), (this.tileExtentSegments = t.SegmentVector.simpleSegment(0, 0, 4, 2)); var r = new t.PosArray(); r.emplaceBack(0, 0), r.emplaceBack(t.EXTENT, 0), r.emplaceBack(0, t.EXTENT), r.emplaceBack(t.EXTENT, t.EXTENT), (this.debugBuffer = e.createVertexBuffer(r, Kt.members)), (this.debugSegments = t.SegmentVector.simpleSegment(0, 0, 4, 5)); var o = new t.RasterBoundsArray(); o.emplaceBack(0, 0, 0, 0), o.emplaceBack(t.EXTENT, 0, t.EXTENT, 0), o.emplaceBack(0, t.EXTENT, 0, t.EXTENT), o.emplaceBack(t.EXTENT, t.EXTENT, t.EXTENT, t.EXTENT), (this.rasterBoundsBuffer = e.createVertexBuffer(o, z.members)), (this.rasterBoundsSegments = t.SegmentVector.simpleSegment( 0, 0, 4, 2, )); var a = new t.PosArray(); a.emplaceBack(0, 0), a.emplaceBack(1, 0), a.emplaceBack(0, 1), a.emplaceBack(1, 1), (this.viewportBuffer = e.createVertexBuffer(a, Kt.members)), (this.viewportSegments = t.SegmentVector.simpleSegment(0, 0, 4, 2)); var n = new t.LineStripIndexArray(); n.emplaceBack(0), n.emplaceBack(1), n.emplaceBack(3), n.emplaceBack(2), n.emplaceBack(0), (this.tileBorderIndexBuffer = e.createIndexBuffer(n)); var s = new t.TriangleIndexArray(); s.emplaceBack(0, 1, 2), s.emplaceBack(2, 1, 3), (this.quadTriangleIndexBuffer = e.createIndexBuffer(s)), (this.emptyTexture = new l( e, { width: 1, height: 1, data: new Uint8Array([0, 0, 0, 0]) }, e.gl.RGBA, )); var c = this.context.gl; this.stencilClearMode = new Ei( { func: c.ALWAYS, mask: 0 }, 0, 255, c.ZERO, c.ZERO, c.ZERO, ); }), (Yi.prototype.clearStencil = function () { var e = this.context, i = e.gl; (this.nextStencilID = 1), (this.currentStencilSource = void 0); var r = t.create(); t.ortho(r, 0, this.width, this.height, 0, 0, 1), t.scale(r, r, [i.drawingBufferWidth, i.drawingBufferHeight, 0]), this.useProgram('clippingMask').draw( e, i.TRIANGLES, wi.disabled, this.stencilClearMode, xi.disabled, Ci.disabled, xe(r), null, '$clipping', this.viewportBuffer, this.quadTriangleIndexBuffer, this.viewportSegments, ); }), (Yi.prototype._renderTileClippingMasks = function (t, e) { if ( this.currentStencilSource !== t.source && t.isTileClipped() && e && e.length ) { this.currentStencilSource = t.source; var i = this.context, r = i.gl; this.nextStencilID + e.length > 256 && this.clearStencil(), i.setColorMode(xi.disabled), i.setDepthMode(wi.disabled); var o = this.useProgram('clippingMask'); this._tileClippingMaskIDs = {}; for (var a = 0, n = e; a < n.length; a += 1) { var s = n[a], l = (this._tileClippingMaskIDs[s.key] = this.nextStencilID++), c = this.style.terrain && this.style.terrain.getTerrainData(s); o.draw( i, r.TRIANGLES, wi.disabled, new Ei( { func: r.ALWAYS, mask: 0 }, l, 255, r.KEEP, r.KEEP, r.REPLACE, ), xi.disabled, Ci.disabled, xe(s.posMatrix), c, '$clipping', this.tileExtentBuffer, this.quadTriangleIndexBuffer, this.tileExtentSegments, ); } } }), (Yi.prototype.stencilModeFor3D = function () { (this.currentStencilSource = void 0), this.nextStencilID + 1 > 256 && this.clearStencil(); var t = this.nextStencilID++, e = this.context.gl; return new Ei( { func: e.NOTEQUAL, mask: 255 }, t, 255, e.KEEP, e.KEEP, e.REPLACE, ); }), (Yi.prototype.stencilModeForClipping = function (t) { var e = this.context.gl; return new Ei( { func: e.EQUAL, mask: 255 }, this._tileClippingMaskIDs[t.key], 0, e.KEEP, e.KEEP, e.REPLACE, ); }), (Yi.prototype.stencilConfigForOverlap = function (t) { var e, i = this.context.gl, r = t.sort(function (t, e) { return e.overscaledZ - t.overscaledZ; }), o = r[r.length - 1].overscaledZ, a = r[0].overscaledZ - o + 1; if (a > 1) { (this.currentStencilSource = void 0), this.nextStencilID + a > 256 && this.clearStencil(); for (var n = {}, s = 0; s < a; s++) n[s + o] = new Ei( { func: i.GEQUAL, mask: 255 }, s + this.nextStencilID, 255, i.KEEP, i.KEEP, i.REPLACE, ); return (this.nextStencilID += a), [n, r]; } return [((e = {}), (e[o] = Ei.disabled), e), r]; }), (Yi.prototype.colorModeForRenderPass = function () { var e = this.context.gl; if (this._showOverdrawInspector) { var i = 1 / 8; return new xi([e.CONSTANT_COLOR, e.ONE], new t.Color(i, i, i, 0), [ !0, !0, !0, !0, ]); } return 'opaque' === this.renderPass ? xi.unblended : xi.alphaBlended; }), (Yi.prototype.depthModeForSublayer = function (t, e, i) { if (!this.opaquePassEnabledForLayer()) return wi.disabled; var r = 1 - ((1 + this.currentLayer) * this.numSublayers + t) * this.depthEpsilon; return new wi(i || this.context.gl.LEQUAL, e, [r, r]); }), (Yi.prototype.opaquePassEnabledForLayer = function () { return this.currentLayer < this.opaquePassCutoff; }), (Yi.prototype.render = function (e, i) { var r = this; (this.style = e), (this.options = i), (this.lineAtlas = e.lineAtlas), (this.imageManager = e.imageManager), (this.glyphManager = e.glyphManager), (this.symbolFadeChange = e.placement.symbolFadeChange( t.exported.now(), )), this.imageManager.beginFrame(); var o = this.style._order, a = this.style.sourceCaches, n = this.style.terrain && new Hi(this); for (var s in a) { var l = a[s]; l.used && l.prepare(this.context); } var c, h, u = {}, p = {}, d = {}; for (var _ in a) { var f = a[_]; (u[_] = f.getVisibleCoordinates()), (p[_] = u[_].slice().reverse()), (d[_] = f.getVisibleCoordinates(!0).reverse()); } this.opaquePassCutoff = 1 / 0; for (var m = 0; m < o.length; m++) if (this.style._layers[o[m]].is3D()) { this.opaquePassCutoff = m; break; } if (n) { this.opaquePassCutoff = 0; var g = this.style.terrain.sourceCache.tilesAfterTime( this.terrainFacilitator.renderTime, ); (this.terrainFacilitator.dirty || !t.equals( this.terrainFacilitator.matrix, this.transform.projMatrix, ) || g.length) && (t.copy(this.terrainFacilitator.matrix, this.transform.projMatrix), (this.terrainFacilitator.renderTime = Date.now()), (this.terrainFacilitator.dirty = !1), (function (e, i) { var r = e.context, o = r.gl, a = xi.unblended, n = new wi(o.LEQUAL, wi.ReadWrite, [0, 1]), s = i.getTerrainMesh(), l = i.sourceCache.getRenderableTiles(), c = e.useProgram('terrainDepth'); r.bindFramebuffer.set(i.getFramebuffer('depth').framebuffer), r.viewport.set([ 0, 0, e.width / devicePixelRatio, e.height / devicePixelRatio, ]), r.clear({ color: t.Color.transparent, depth: 1 }); for (var h = 0, u = l; h < u.length; h += 1) { var p = u[h], d = i.getTerrainData(p.tileID), _ = e.transform.calculatePosMatrix(p.tileID.toUnwrapped()); c.draw( r, o.TRIANGLES, n, Ei.disabled, a, Ci.backCCW, { u_matrix: _ }, d, 'terrain', s.vertexBuffer, s.indexBuffer, s.segments, ); } r.bindFramebuffer.set(null), r.viewport.set([0, 0, e.width, e.height]); })(this, this.style.terrain), (function (e, i) { var r = e.context, o = r.gl, a = xi.unblended, n = new wi(o.LEQUAL, wi.ReadWrite, [0, 1]), s = i.getTerrainMesh(), l = i.getCoordsTexture(), c = i.sourceCache.getRenderableTiles(), h = e.useProgram('terrainCoords'); r.bindFramebuffer.set(i.getFramebuffer('coords').framebuffer), r.viewport.set([ 0, 0, e.width / devicePixelRatio, e.height / devicePixelRatio, ]), r.clear({ color: t.Color.transparent, depth: 1 }), (i.coordsIndex = []); for (var u = 0, p = c; u < p.length; u += 1) { var d = p[u], _ = i.getTerrainData(d.tileID); r.activeTexture.set(o.TEXTURE0), o.bindTexture(o.TEXTURE_2D, l.texture); var f = e.transform.calculatePosMatrix(d.tileID.toUnwrapped()); h.draw( r, o.TRIANGLES, n, Ei.disabled, a, Ci.backCCW, { u_matrix: f, u_terrain_coords_id: (255 - i.coordsIndex.length) / 255, u_texture: 0, }, _, 'terrain', s.vertexBuffer, s.indexBuffer, s.segments, ), i.coordsIndex.push(d.tileID.key); } r.bindFramebuffer.set(null), r.viewport.set([0, 0, e.width, e.height]); })(this, this.style.terrain)); } this.renderPass = 'offscreen'; for (var v = 0, y = o; v < y.length; v += 1) { var x = this.style._layers[y[v]]; if (x.hasOffscreenPass() && !x.isHidden(this.transform.zoom)) { var b = p[x.source]; ('custom' === x.type || b.length) && this.renderLayer(this, a[x.source], x, b); } } if ( (this.context.bindFramebuffer.set(null), this.context.clear({ color: i.showOverdrawInspector ? t.Color.black : t.Color.transparent, depth: 1, }), this.clearStencil(), (this._showOverdrawInspector = i.showOverdrawInspector), (this.depthRangeFor3D = [ 0, 1 - (e._order.length + 2) * this.numSublayers * this.depthEpsilon, ]), !n) ) for ( this.renderPass = 'opaque', this.currentLayer = o.length - 1; this.currentLayer >= 0; this.currentLayer-- ) { var w = this.style._layers[o[this.currentLayer]], T = a[w.source], E = u[w.source]; this._renderTileClippingMasks(w, E), this.renderLayer(this, T, w, E); } for ( this.renderPass = 'translucent', this.currentLayer = 0; this.currentLayer < o.length; this.currentLayer++ ) { var I = this.style._layers[o[this.currentLayer]], C = a[I.source]; if (!n || !n.renderLayer(I)) { var S = ('symbol' === I.type ? d : p)[I.source]; this._renderTileClippingMasks(I, u[I.source]), this.renderLayer(this, C, I, S); } } this.options.showTileBoundaries && (t.values(this.style._layers).forEach(function (t) { t.source && !t.isHidden(r.transform.zoom) && (t.source !== (h && h.id) && (h = r.style.sourceCaches[t.source]), (!c || c.getSource().maxzoom < h.getSource().maxzoom) && (c = h)); }), c && Ki.debug(this, c, c.getVisibleCoordinates())), this.options.showPadding && (function (t) { var e = t.transform.padding; ji(t, t.transform.height - (e.top || 0), 3, Oi), ji(t, e.bottom || 0, 3, Fi), Zi(t, e.left || 0, 3, Ui), Zi(t, t.transform.width - (e.right || 0), 3, Ni); var i = t.transform.centerPoint; !(function (t, e, i, r) { Vi(t, e - 1, i - 10, 2, 20, r), Vi(t, e - 10, i - 1, 20, 2, r); })(t, i.x, t.transform.height - i.y, Gi); })(this), this.context.setDefault(); }), (Yi.prototype.renderLayer = function (t, e, i, r) { i.isHidden(this.transform.zoom) || (('background' === i.type || 'custom' === i.type || (r || []).length) && ((this.id = i.id), this.gpuTimingStart(i), Ki[i.type](t, e, i, r, this.style.placement.variableOffsets), this.gpuTimingEnd())); }), (Yi.prototype.gpuTimingStart = function (t) { if (this.options.gpuTiming) { var e = this.context.extTimerQuery, i = this.gpuTimers[t.id]; i || (i = this.gpuTimers[t.id] = { calls: 0, cpuTime: 0, query: e.createQueryEXT() }), i.calls++, e.beginQueryEXT(e.TIME_ELAPSED_EXT, i.query); } }), (Yi.prototype.gpuTimingEnd = function () { if (this.options.gpuTiming) { var t = this.context.extTimerQuery; t.endQueryEXT(t.TIME_ELAPSED_EXT); } }), (Yi.prototype.collectGpuTimers = function () { var t = this.gpuTimers; return (this.gpuTimers = {}), t; }), (Yi.prototype.queryGpuTimers = function (t) { var e = {}; for (var i in t) { var r = t[i], o = this.context.extTimerQuery, a = o.getQueryObjectEXT(r.query, o.QUERY_RESULT_EXT) / 1e6; o.deleteQueryEXT(r.query), (e[i] = a); } return e; }), (Yi.prototype.translatePosMatrix = function (e, i, r, o, a) { if (!r[0] && !r[1]) return e; var n = a ? 'map' === o ? this.transform.angle : 0 : 'viewport' === o ? -this.transform.angle : 0; if (n) { var s = Math.sin(n), l = Math.cos(n); r = [r[0] * l - r[1] * s, r[0] * s + r[1] * l]; } var c = [ a ? r[0] : wt(i, r[0], this.transform.zoom), a ? r[1] : wt(i, r[1], this.transform.zoom), 0, ], h = new Float32Array(16); return t.translate(h, e, c), h; }), (Yi.prototype.saveTileTexture = function (t) { var e = this._tileTextures[t.size[0]]; e ? e.push(t) : (this._tileTextures[t.size[0]] = [t]); }), (Yi.prototype.getTileTexture = function (t) { var e = this._tileTextures[t]; return e && e.length > 0 ? e.pop() : null; }), (Yi.prototype.isPatternMissing = function (t) { if (!t) return !1; if (!t.from || !t.to) return !0; var e = this.imageManager.getPattern(t.from.toString()), i = this.imageManager.getPattern(t.to.toString()); return !e || !i; }), (Yi.prototype.useProgram = function (t, e) { this.cache = this.cache || {}; var i = t + (e ? e.cacheKey : '') + (this._showOverdrawInspector ? '/overdraw' : '') + (this.style.terrain ? '/terrain' : ''); return ( this.cache[i] || (this.cache[i] = new le( this.context, t, oe[t], e, Le[t], this._showOverdrawInspector, this.style.terrain, )), this.cache[i] ); }), (Yi.prototype.setCustomLayerDefaults = function () { this.context.unbindVAO(), this.context.cullFace.setDefault(), this.context.activeTexture.setDefault(), this.context.pixelStoreUnpack.setDefault(), this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(), this.context.pixelStoreUnpackFlipY.setDefault(); }), (Yi.prototype.setBaseState = function () { var 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); }), (Yi.prototype.initDebugOverlayCanvas = function () { null == this.debugOverlayCanvas && ((this.debugOverlayCanvas = document.createElement('canvas')), (this.debugOverlayCanvas.width = 512), (this.debugOverlayCanvas.height = 512), (this.debugOverlayTexture = new l( this.context, this.debugOverlayCanvas, this.context.gl.RGBA, ))); }), (Yi.prototype.destroy = function () { this.emptyTexture.destroy(), this.debugOverlayTexture && this.debugOverlayTexture.destroy(); }); var Ji = function (t, e) { (this.points = t), (this.planes = e); }; Ji.fromInvProjectionMatrix = function (e, i, r) { var o = Math.pow(2, r), a = [ [-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(function (r) { var a = (1 / (r = t.transformMat4([], r, e))[3] / i) * o; return t.mul$1(r, r, [a, a, 1 / r[3], a]); }), n = [ [0, 1, 2], [6, 5, 4], [0, 3, 7], [2, 1, 5], [3, 2, 6], [0, 4, 5], ].map(function (e) { var i = t.sub([], a[e[0]], a[e[1]]), r = t.sub([], a[e[2]], a[e[1]]), o = t.normalize([], t.cross([], i, r)), n = -t.dot(o, a[e[1]]); return o.concat(n); }); return new Ji(a, n); }; var Qi = function (e, i) { (this.min = e), (this.max = i), (this.center = t.scale$1([], t.add([], this.min, this.max), 0.5)); }; (Qi.prototype.quadrant = function (e) { for ( var i = [e % 2 == 0, e < 2], r = t.clone$2(this.min), o = t.clone$2(this.max), a = 0; a < i.length; a++ ) (r[a] = i[a] ? this.min[a] : this.center[a]), (o[a] = i[a] ? this.center[a] : this.max[a]); return (o[2] = this.max[2]), new Qi(r, o); }), (Qi.prototype.distanceX = function (t) { return Math.max(Math.min(this.max[0], t[0]), this.min[0]) - t[0]; }), (Qi.prototype.distanceY = function (t) { return Math.max(Math.min(this.max[1], t[1]), this.min[1]) - t[1]; }), (Qi.prototype.intersects = function (e) { for ( var i = [ [this.min[0], this.min[1], this.min[2], 1], [this.max[0], this.min[1], this.min[2], 1], [this.max[0], this.max[1], this.min[2], 1], [this.min[0], this.max[1], this.min[2], 1], [this.min[0], this.min[1], this.max[2], 1], [this.max[0], this.min[1], this.max[2], 1], [this.max[0], this.max[1], this.max[2], 1], [this.min[0], this.max[1], this.max[2], 1], ], r = !0, o = 0; o < e.planes.length; o++ ) { for (var a = e.planes[o], n = 0, s = 0; s < i.length; s++) t.dot$1(a, i[s]) >= 0 && n++; if (0 === n) return 0; n !== i.length && (r = !1); } if (r) return 2; for (var l = 0; l < 3; l++) { for ( var c = Number.MAX_VALUE, h = -Number.MAX_VALUE, u = 0; u < e.points.length; u++ ) { var p = e.points[u][l] - this.min[l]; (c = Math.min(c, p)), (h = Math.max(h, p)); } if (h < 0 || c > this.max[l] - this.min[l]) return 0; } return 1; }); var $i = function (t, e, i, r) { if ( (void 0 === t && (t = 0), void 0 === e && (e = 0), void 0 === i && (i = 0), void 0 === r && (r = 0), isNaN(t) || t < 0 || isNaN(e) || e < 0 || isNaN(i) || i < 0 || isNaN(r) || r < 0) ) throw new Error( 'Invalid value for edge-insets, top, bottom, left and right must all be numbers', ); (this.top = t), (this.bottom = e), (this.left = i), (this.right = r); }; ($i.prototype.interpolate = function (e, i, r) { return ( null != i.top && null != e.top && (this.top = t.number(e.top, i.top, r)), null != i.bottom && null != e.bottom && (this.bottom = t.number(e.bottom, i.bottom, r)), null != i.left && null != e.left && (this.left = t.number(e.left, i.left, r)), null != i.right && null != e.right && (this.right = t.number(e.right, i.right, r)), this ); }), ($i.prototype.getCenter = function (e, i) { var r = t.clamp((this.left + e - this.right) / 2, 0, e), o = t.clamp((this.top + i - this.bottom) / 2, 0, i); return new t.pointGeometry(r, o); }), ($i.prototype.equals = function (t) { return ( this.top === t.top && this.bottom === t.bottom && this.left === t.left && this.right === t.right ); }), ($i.prototype.clone = function () { return new $i(this.top, this.bottom, this.left, this.right); }), ($i.prototype.toJSON = function () { return { top: this.top, bottom: this.bottom, left: this.left, right: this.right, }; }); var tr = function (e, i, r, o, a) { (this.tileSize = 512), (this.maxValidLatitude = 85.051129), (this.freezeElevation = !1), (this._renderWorldCopies = void 0 === a || !!a), (this._minZoom = e || 0), (this._maxZoom = i || 22), (this._minPitch = null == r ? 0 : r), (this._maxPitch = null == o ? 60 : o), this.setMaxBounds(), (this.width = 0), (this.height = 0), (this._center = new t.LngLat(0, 0)), (this._elevation = 0), (this.zoom = 0), (this.angle = 0), (this._fov = 0.6435011087932844), (this._pitch = 0), (this._unmodified = !0), (this._edgeInsets = new $i()), (this._posMatrixCache = {}), (this._alignedPosMatrixCache = {}); }, er = { minZoom: { configurable: !0 }, maxZoom: { configurable: !0 }, minPitch: { configurable: !0 }, maxPitch: { configurable: !0 }, renderWorldCopies: { configurable: !0 }, worldSize: { configurable: !0 }, centerOffset: { configurable: !0 }, size: { configurable: !0 }, bearing: { configurable: !0 }, pitch: { configurable: !0 }, fov: { configurable: !0 }, zoom: { configurable: !0 }, center: { configurable: !0 }, elevation: { configurable: !0 }, padding: { configurable: !0 }, centerPoint: { configurable: !0 }, unmodified: { configurable: !0 }, point: { configurable: !0 }, }; (tr.prototype.clone = function () { var t = new tr( this._minZoom, this._maxZoom, this._minPitch, this.maxPitch, this._renderWorldCopies, ); return ( (t.tileSize = this.tileSize), (t.latRange = this.latRange), (t.width = this.width), (t.height = this.height), (t._center = this._center), (t._elevation = this._elevation), (t.zoom = this.zoom), (t.angle = this.angle), (t._fov = this._fov), (t._pitch = this._pitch), (t._unmodified = this._unmodified), (t._edgeInsets = this._edgeInsets.clone()), t._calcMatrices(), t ); }), (er.minZoom.get = function () { return this._minZoom; }), (er.minZoom.set = function (t) { this._minZoom !== t && ((this._minZoom = t), (this.zoom = Math.max(this.zoom, t))); }), (er.maxZoom.get = function () { return this._maxZoom; }), (er.maxZoom.set = function (t) { this._maxZoom !== t && ((this._maxZoom = t), (this.zoom = Math.min(this.zoom, t))); }), (er.minPitch.get = function () { return this._minPitch; }), (er.minPitch.set = function (t) { this._minPitch !== t && ((this._minPitch = t), (this.pitch = Math.max(this.pitch, t))); }), (er.maxPitch.get = function () { return this._maxPitch; }), (er.maxPitch.set = function (t) { this._maxPitch !== t && ((this._maxPitch = t), (this.pitch = Math.min(this.pitch, t))); }), (er.renderWorldCopies.get = function () { return this._renderWorldCopies; }), (er.renderWorldCopies.set = function (t) { void 0 === t ? (t = !0) : null === t && (t = !1), (this._renderWorldCopies = t); }), (er.worldSize.get = function () { return this.tileSize * this.scale; }), (er.centerOffset.get = function () { return this.centerPoint._sub(this.size._div(2)); }), (er.size.get = function () { return new t.pointGeometry(this.width, this.height); }), (er.bearing.get = function () { return (-this.angle / Math.PI) * 180; }), (er.bearing.set = function (e) { var i, r = (-t.wrap(e, -180, 180) * Math.PI) / 180; this.angle !== r && ((this._unmodified = !1), (this.angle = r), this._calcMatrices(), (this.rotationMatrix = ((i = new t.ARRAY_TYPE(4)), t.ARRAY_TYPE != Float32Array && ((i[1] = 0), (i[2] = 0)), (i[0] = 1), (i[3] = 1), i)), (function (t, e, i) { var r = e[0], o = e[1], a = e[2], n = e[3], s = Math.sin(i), l = Math.cos(i); (t[0] = r * l + a * s), (t[1] = o * l + n * s), (t[2] = r * -s + a * l), (t[3] = o * -s + n * l); })(this.rotationMatrix, this.rotationMatrix, this.angle)); }), (er.pitch.get = function () { return (this._pitch / Math.PI) * 180; }), (er.pitch.set = function (e) { var i = (t.clamp(e, this.minPitch, this.maxPitch) / 180) * Math.PI; this._pitch !== i && ((this._unmodified = !1), (this._pitch = i), this._calcMatrices()); }), (er.fov.get = function () { return (this._fov / Math.PI) * 180; }), (er.fov.set = function (t) { (t = Math.max(0.01, Math.min(60, t))), this._fov !== t && ((this._unmodified = !1), (this._fov = (t / 180) * Math.PI), this._calcMatrices()); }), (er.zoom.get = function () { return this._zoom; }), (er.zoom.set = function (t) { var e = Math.min(Math.max(t, this.minZoom), this.maxZoom); this._zoom !== e && ((this._unmodified = !1), (this._zoom = e), (this.scale = this.zoomScale(e)), (this.tileZoom = Math.floor(e)), (this.zoomFraction = e - this.tileZoom), this._constrain(), this._calcMatrices()); }), (er.center.get = function () { return this._center; }), (er.center.set = function (t) { (t.lat === this._center.lat && t.lng === this._center.lng) || ((this._unmodified = !1), (this._center = t), this._constrain(), this._calcMatrices()); }), (er.elevation.get = function () { return this._elevation; }), (er.elevation.set = function (t) { t !== this._elevation && ((this._elevation = t), this._constrain(), this._calcMatrices()); }), (er.padding.get = function () { return this._edgeInsets.toJSON(); }), (er.padding.set = function (t) { this._edgeInsets.equals(t) || ((this._unmodified = !1), this._edgeInsets.interpolate(this._edgeInsets, t, 1), this._calcMatrices()); }), (er.centerPoint.get = function () { return this._edgeInsets.getCenter(this.width, this.height); }), (tr.prototype.isPaddingEqual = function (t) { return this._edgeInsets.equals(t); }), (tr.prototype.interpolatePadding = function (t, e, i) { (this._unmodified = !1), this._edgeInsets.interpolate(t, e, i), this._constrain(), this._calcMatrices(); }), (tr.prototype.coveringZoomLevel = function (t) { var e = (t.roundZoom ? Math.round : Math.floor)( this.zoom + this.scaleZoom(this.tileSize / t.tileSize), ); return Math.max(0, e); }), (tr.prototype.getVisibleUnwrappedCoordinates = function (e) { var i = [new t.UnwrappedTileID(0, e)]; if (this._renderWorldCopies) for ( var r = this.pointCoordinate(new t.pointGeometry(0, 0)), o = this.pointCoordinate(new t.pointGeometry(this.width, 0)), a = this.pointCoordinate( new t.pointGeometry(this.width, this.height), ), n = this.pointCoordinate(new t.pointGeometry(0, this.height)), s = Math.floor(Math.min(r.x, o.x, a.x, n.x)), l = Math.floor(Math.max(r.x, o.x, a.x, n.x)), c = s - 1; c <= l + 1; c++ ) 0 !== c && i.push(new t.UnwrappedTileID(c, e)); return i; }), (tr.prototype.coveringTiles = function (e) { var i, r, o = this.coveringZoomLevel(e), a = o; if (void 0 !== e.minzoom && o < e.minzoom) return []; void 0 !== e.maxzoom && o > e.maxzoom && (o = e.maxzoom); var n = this.pointCoordinate(this.getCameraPoint()), s = t.MercatorCoordinate.fromLngLat(this.center), l = Math.pow(2, o), c = [l * n.x, l * n.y, 0], h = [l * s.x, l * s.y, 0], u = Ji.fromInvProjectionMatrix(this.invProjMatrix, this.worldSize, o), p = e.minzoom || 0; !e.terrain && this.pitch <= 60 && this._edgeInsets.top < 0.1 && (p = o); var d = e.terrain ? (2 / Math.min(this.tileSize, e.tileSize)) * this.tileSize : 3, _ = function (t) { return { aabb: new Qi([t * l, 0, 0], [(t + 1) * l, l, 0]), zoom: 0, x: 0, y: 0, wrap: t, fullyVisible: !1, }; }, f = [], m = [], g = o, v = e.reparseOverscaled ? a : o; if (this._renderWorldCopies) for (var y = 1; y <= 3; y++) f.push(_(-y)), f.push(_(y)); for (f.push(_(0)); f.length > 0; ) { var x = f.pop(), b = x.x, w = x.y, T = x.fullyVisible; if (!T) { var E = x.aabb.intersects(u); if (0 === E) continue; T = 2 === E; } var I = e.terrain ? c : h, C = x.aabb.distanceX(I), S = x.aabb.distanceY(I), D = Math.max(Math.abs(C), Math.abs(S)); if ( x.zoom === g || (D > d + (1 << (g - x.zoom)) - 2 && x.zoom >= p) ) { var z = g - x.zoom, P = c[0] - 0.5 - (b << z), M = c[1] - 0.5 - (w << z); m.push({ tileID: new t.OverscaledTileID( x.zoom === g ? v : x.zoom, x.wrap, x.zoom, b, w, ), distanceSq: t.sqrLen([h[0] - 0.5 - b, h[1] - 0.5 - w]), tileDistanceToCamera: Math.sqrt(P * P + M * M), }); } else for (var A = 0; A < 4; A++) { var R = (b << 1) + (A % 2), L = (w << 1) + (A >> 1), k = x.zoom + 1, B = x.aabb.quadrant(A); if (e.terrain) { var O = new t.OverscaledTileID(k, x.wrap, k, R, L), F = e.terrain.getMinMaxElevation(O), U = null !== (i = F.minElevation) && void 0 !== i ? i : this.elevation, N = null !== (r = F.maxElevation) && void 0 !== r ? r : this.elevation; B = new Qi([B.min[0], B.min[1], U], [B.max[0], B.max[1], N]); } f.push({ aabb: B, zoom: k, x: R, y: L, wrap: x.wrap, fullyVisible: T, }); } } return m .sort(function (t, e) { return t.distanceSq - e.distanceSq; }) .map(function (t) { return t.tileID; }); }), (tr.prototype.resize = function (t, e) { (this.width = t), (this.height = e), (this.pixelsToGLUnits = [2 / t, -2 / e]), this._constrain(), this._calcMatrices(); }), (er.unmodified.get = function () { return this._unmodified; }), (tr.prototype.zoomScale = function (t) { return Math.pow(2, t); }), (tr.prototype.scaleZoom = function (t) { return Math.log(t) / Math.LN2; }), (tr.prototype.project = function (e) { var i = t.clamp(e.lat, -this.maxValidLatitude, this.maxValidLatitude); return new t.pointGeometry( t.mercatorXfromLng(e.lng) * this.worldSize, t.mercatorYfromLat(i) * this.worldSize, ); }), (tr.prototype.unproject = function (e) { return new t.MercatorCoordinate( e.x / this.worldSize, e.y / this.worldSize, ).toLngLat(); }), (er.point.get = function () { return this.project(this.center); }), (tr.prototype.updateElevation = function (t) { this.freezeElevation || (this.elevation = t ? this.getElevation(this._center, t) : 0); }), (tr.prototype.getElevation = function (e, i) { var r = t.MercatorCoordinate.fromLngLat(e), o = (1 << this.tileZoom) * t.EXTENT, a = r.x * o, n = r.y * o, s = Math.floor(a / t.EXTENT), l = Math.floor(n / t.EXTENT), c = new t.OverscaledTileID(this.tileZoom, 0, this.tileZoom, s, l); return i.getElevation(c, a % t.EXTENT, n % t.EXTENT, t.EXTENT); }), (tr.prototype.getCameraPosition = function () { return { lngLat: this.pointLocation(this.getCameraPoint()), altitude: (Math.cos(this._pitch) * this.cameraToCenterDistance) / this._pixelPerMeter + this.elevation, }; }), (tr.prototype.recalculateZoom = function (e) { var i = this.pointLocation(this.centerPoint, e), r = this.getElevation(i, e); if (this.elevation - r) { var o = this.getCameraPosition(), a = t.MercatorCoordinate.fromLngLat(o.lngLat, o.altitude), n = t.MercatorCoordinate.fromLngLat(i, r), s = a.x - n.x, l = a.y - n.y, c = a.z - n.z, h = Math.sqrt(s * s + l * l + c * c), u = this.scaleZoom(this.cameraToCenterDistance / h / this.tileSize); (this._elevation = r), (this._center = i), (this.zoom = u); } }), (tr.prototype.setLocationAtPoint = function (e, i) { var r = this.pointCoordinate(i), o = this.pointCoordinate(this.centerPoint), a = this.locationCoordinate(e), n = new t.MercatorCoordinate(a.x - (r.x - o.x), a.y - (r.y - o.y)); (this.center = this.coordinateLocation(n)), this._renderWorldCopies && (this.center = this.center.wrap()); }), (tr.prototype.locationPoint = function (t, e) { return e ? this.coordinatePoint( this.locationCoordinate(t), this.getElevation(t, e), this.pixelMatrix3D, ) : this.coordinatePoint(this.locationCoordinate(t)); }), (tr.prototype.pointLocation = function (t, e) { return this.coordinateLocation(this.pointCoordinate(t, e)); }), (tr.prototype.locationCoordinate = function (e) { return t.MercatorCoordinate.fromLngLat(e); }), (tr.prototype.coordinateLocation = function (t) { return t && t.toLngLat(); }), (tr.prototype.pointCoordinate = function (e, i) { if (i) { var r = i.pointCoordinate(e); if (null != r) return r; } var o = [e.x, e.y, 0, 1], a = [e.x, e.y, 1, 1]; t.transformMat4(o, o, this.pixelMatrixInverse), t.transformMat4(a, a, this.pixelMatrixInverse); var n = o[3], s = a[3], l = o[1] / n, c = a[1] / s, h = o[2] / n, u = a[2] / s, p = h === u ? 0 : (0 - h) / (u - h); return new t.MercatorCoordinate( t.number(o[0] / n, a[0] / s, p) / this.worldSize, t.number(l, c, p) / this.worldSize, ); }), (tr.prototype.coordinatePoint = function (e, i, r) { void 0 === i && (i = 0), void 0 === r && (r = this.pixelMatrix); var o = [e.x * this.worldSize, e.y * this.worldSize, i, 1]; return ( t.transformMat4(o, o, r), new t.pointGeometry(o[0] / o[3], o[1] / o[3]) ); }), (tr.prototype.getBounds = function () { var e = Math.max(0, this.height / 2 - this.getHorizon()); return new t.LngLatBounds() .extend(this.pointLocation(new t.pointGeometry(0, e))) .extend(this.pointLocation(new t.pointGeometry(this.width, e))) .extend( this.pointLocation(new t.pointGeometry(this.width, this.height)), ) .extend(this.pointLocation(new t.pointGeometry(0, this.height))); }), (tr.prototype.getMaxBounds = function () { return this.latRange && 2 === this.latRange.length && this.lngRange && 2 === this.lngRange.length ? new t.LngLatBounds( [this.lngRange[0], this.latRange[0]], [this.lngRange[1], this.latRange[1]], ) : null; }), (tr.prototype.getHorizon = function () { return ( Math.tan(Math.PI / 2 - this._pitch) * this.cameraToCenterDistance * 0.85 ); }), (tr.prototype.setMaxBounds = function (t) { t ? ((this.lngRange = [t.getWest(), t.getEast()]), (this.latRange = [t.getSouth(), t.getNorth()]), this._constrain()) : ((this.lngRange = null), (this.latRange = [-this.maxValidLatitude, this.maxValidLatitude])); }), (tr.prototype.calculatePosMatrix = function (e, i) { void 0 === i && (i = !1); var r = e.key, o = i ? this._alignedPosMatrixCache : this._posMatrixCache; if (o[r]) return o[r]; var a = e.canonical, n = this.worldSize / this.zoomScale(a.z), s = a.x + Math.pow(2, a.z) * e.wrap, l = t.identity(new Float64Array(16)); return ( t.translate(l, l, [s * n, a.y * n, 0]), t.scale(l, l, [n / t.EXTENT, n / t.EXTENT, 1]), t.multiply(l, i ? this.alignedProjMatrix : this.projMatrix, l), (o[r] = new Float32Array(l)), o[r] ); }), (tr.prototype.customLayerMatrix = function () { return this.mercatorMatrix.slice(); }), (tr.prototype._constrain = function () { if (this.center && this.width && this.height && !this._constraining) { this._constraining = !0; var e, i, r, o, a = -90, n = 90, s = -180, l = 180, c = this.size, h = this._unmodified; if (this.latRange) { var u = this.latRange; (a = t.mercatorYfromLat(u[1]) * this.worldSize), (e = (n = t.mercatorYfromLat(u[0]) * this.worldSize) - a < c.y ? c.y / (n - a) : 0); } if (this.lngRange) { var p = this.lngRange; (s = t.wrap( t.mercatorXfromLng(p[0]) * this.worldSize, 0, this.worldSize, )), (l = t.wrap( t.mercatorXfromLng(p[1]) * this.worldSize, 0, this.worldSize, )) < s && (l += this.worldSize), (i = l - s < c.x ? c.x / (l - s) : 0); } var d = this.point, _ = Math.max(i || 0, e || 0); if (_) return ( (this.center = this.unproject( new t.pointGeometry( i ? (l + s) / 2 : d.x, e ? (n + a) / 2 : d.y, ), )), (this.zoom += this.scaleZoom(_)), (this._unmodified = h), void (this._constraining = !1) ); if (this.latRange) { var f = d.y, m = c.y / 2; f - m < a && (o = a + m), f + m > n && (o = n - m); } if (this.lngRange) { var g = (s + l) / 2, v = t.wrap(d.x, g - this.worldSize / 2, g + this.worldSize / 2), y = c.x / 2; v - y < s && (r = s + y), v + y > l && (r = l - y); } (void 0 === r && void 0 === o) || (this.center = this.unproject( new t.pointGeometry( void 0 !== r ? r : d.x, void 0 !== o ? o : d.y, ), ).wrap()), (this._unmodified = h), (this._constraining = !1); } }), (tr.prototype._calcMatrices = function () { if (this.height) { var e = this.centerOffset, i = this.point.x, r = this.point.y; (this.cameraToCenterDistance = (0.5 / Math.tan(this._fov / 2)) * this.height), (this._pixelPerMeter = t.mercatorZfromAltitude(1, this.center.lat) * this.worldSize); var o = t.identity(new Float64Array(16)); t.scale(o, o, [this.width / 2, -this.height / 2, 1]), t.translate(o, o, [1, -1, 0]), (this.labelPlaneMatrix = o), (o = t.identity(new Float64Array(16))), t.scale(o, o, [1, -1, 1]), t.translate(o, o, [-1, -1, 0]), t.scale(o, o, [2 / this.width, 2 / this.height, 1]), (this.glCoordMatrix = o), (this.cameraToSeaLevelDistance = this.cameraToCenterDistance + (this._elevation * this._pixelPerMeter) / Math.cos(this._pitch)); var a = Math.PI / 2 + this._pitch, n = this._fov * (0.5 + e.y / this.height), s = (Math.sin(n) * this.cameraToSeaLevelDistance) / Math.sin(t.clamp(Math.PI - a - n, 0.01, Math.PI - 0.01)), l = this.getHorizon(), c = 2 * Math.atan(l / this.cameraToCenterDistance) * (0.5 + e.y / (2 * l)), h = (Math.sin(c) * this.cameraToSeaLevelDistance) / Math.sin(t.clamp(Math.PI - a - c, 0.01, Math.PI - 0.01)), u = Math.cos(Math.PI / 2 - this._pitch) * s + this.cameraToSeaLevelDistance, p = Math.cos(Math.PI / 2 - this._pitch) * h + this.cameraToSeaLevelDistance, d = 1.01 * Math.min(u, p), _ = this.height / 50; (o = new Float64Array(16)), t.perspective(o, this._fov, this.width / this.height, _, d), (o[8] = (2 * -e.x) / this.width), (o[9] = (2 * e.y) / this.height), t.scale(o, o, [1, -1, 1]), t.translate(o, o, [0, 0, -this.cameraToCenterDistance]), t.rotateX(o, o, this._pitch), t.rotateZ(o, o, this.angle), t.translate(o, o, [-i, -r, 0]), (this.mercatorMatrix = t.scale([], o, [ this.worldSize, this.worldSize, this.worldSize, ])), t.scale(o, o, [1, 1, this._pixelPerMeter]), (this.pixelMatrix = t.multiply( new Float64Array(16), this.labelPlaneMatrix, o, )), t.translate(o, o, [0, 0, -this.elevation]), (this.projMatrix = o), (this.invProjMatrix = t.invert([], o)), (this.pixelMatrix3D = t.multiply( new Float64Array(16), this.labelPlaneMatrix, o, )); var f = (this.width % 2) / 2, m = (this.height % 2) / 2, g = Math.cos(this.angle), v = Math.sin(this.angle), y = i - Math.round(i) + g * f + v * m, x = r - Math.round(r) + g * m + v * f, b = new Float64Array(o); if ( (t.translate(b, b, [y > 0.5 ? y - 1 : y, x > 0.5 ? x - 1 : x, 0]), (this.alignedProjMatrix = b), !(o = t.invert(new Float64Array(16), this.pixelMatrix))) ) throw new Error('failed to invert matrix'); (this.pixelMatrixInverse = o), (this._posMatrixCache = {}), (this._alignedPosMatrixCache = {}); } }), (tr.prototype.maxPitchScaleFactor = function () { if (!this.pixelMatrixInverse) return 1; var e = this.pointCoordinate(new t.pointGeometry(0, 0)), i = [e.x * this.worldSize, e.y * this.worldSize, 0, 1]; return ( t.transformMat4(i, i, this.pixelMatrix)[3] / this.cameraToCenterDistance ); }), (tr.prototype.getCameraPoint = function () { var e = Math.tan(this._pitch) * (this.cameraToCenterDistance || 1); return this.centerPoint.add(new t.pointGeometry(0, e)); }), (tr.prototype.getCameraQueryGeometry = function (e) { var i = this.getCameraPoint(); if (1 === e.length) return [e[0], i]; for ( var r = i.x, o = i.y, a = i.x, n = i.y, s = 0, l = e; s < l.length; s += 1 ) { var c = l[s]; (r = Math.min(r, c.x)), (o = Math.min(o, c.y)), (a = Math.max(a, c.x)), (n = Math.max(n, c.y)); } return [ new t.pointGeometry(r, o), new t.pointGeometry(a, o), new t.pointGeometry(a, n), new t.pointGeometry(r, n), new t.pointGeometry(r, o), ]; }), Object.defineProperties(tr.prototype, er); var ir = function (e) { var i, r, o, a; (this._hashName = e && encodeURIComponent(e)), t.bindAll(['_getCurrentHash', '_onHashChange', '_updateHash'], this), (this._updateHash = ((i = this._updateHashUnthrottled.bind(this)), (r = !1), (o = null), (a = function () { (o = null), r && (i(), (o = setTimeout(a, 300)), (r = !1)); }), function () { return (r = !0), o || a(), o; })); }; (ir.prototype.addTo = function (t) { return ( (this._map = t), addEventListener('hashchange', this._onHashChange, !1), this._map.on('moveend', this._updateHash), this ); }), (ir.prototype.remove = function () { return ( removeEventListener('hashchange', this._onHashChange, !1), this._map.off('moveend', this._updateHash), clearTimeout(this._updateHash()), delete this._map, this ); }), (ir.prototype.getHashString = function (t) { var e = this._map.getCenter(), i = Math.round(100 * this._map.getZoom()) / 100, r = Math.ceil((i * Math.LN2 + Math.log(512 / 360 / 0.5)) / Math.LN10), o = Math.pow(10, r), a = Math.round(e.lng * o) / o, n = Math.round(e.lat * o) / o, s = this._map.getBearing(), l = this._map.getPitch(), c = ''; if ( ((c += t ? '/' + a + '/' + n + '/' + i : i + '/' + n + '/' + a), (s || l) && (c += '/' + Math.round(10 * s) / 10), l && (c += '/' + Math.round(l)), this._hashName) ) { var h = this._hashName, u = !1, p = window.location.hash .slice(1) .split('&') .map(function (t) { var e = t.split('=')[0]; return e === h ? ((u = !0), e + '=' + c) : t; }) .filter(function (t) { return t; }); return u || p.push(h + '=' + c), '#' + p.join('&'); } return '#' + c; }), (ir.prototype._getCurrentHash = function () { var t, e = this, i = window.location.hash.replace('#', ''); return this._hashName ? (i .split('&') .map(function (t) { return t.split('='); }) .forEach(function (i) { i[0] === e._hashName && (t = i); }), ((t && t[1]) || '').split('/')) : i.split('/'); }), (ir.prototype._onHashChange = function () { var t = this._getCurrentHash(); if ( t.length >= 3 && !t.some(function (t) { return isNaN(t); }) ) { var e = this._map.dragRotate.isEnabled() && this._map.touchZoomRotate.isEnabled() ? +(t[3] || 0) : this._map.getBearing(); return ( this._map.jumpTo({ center: [+t[2], +t[1]], zoom: +t[0], bearing: e, pitch: +(t[4] || 0), }), !0 ); } return !1; }), (ir.prototype._updateHashUnthrottled = function () { var t = window.location.href.replace(/(#.+)?$/, this.getHashString()); try { window.history.replaceState(window.history.state, null, t); } catch (t) {} }); var rr = { linearity: 0.3, easing: t.bezier(0, 0, 0.3, 1) }, or = t.extend({ deceleration: 2500, maxSpeed: 1400 }, rr), ar = t.extend({ deceleration: 20, maxSpeed: 1400 }, rr), nr = t.extend({ deceleration: 1e3, maxSpeed: 360 }, rr), sr = t.extend({ deceleration: 1e3, maxSpeed: 90 }, rr), lr = function (t) { (this._map = t), this.clear(); }; function cr(t, e) { (!t.duration || t.duration < e.duration) && ((t.duration = e.duration), (t.easing = e.easing)); } function hr(e, i, r) { var o = r.maxSpeed, a = r.linearity, n = r.deceleration, s = t.clamp((e * a) / (i / 1e3), -o, o), l = Math.abs(s) / (n * a); return { easing: r.easing, duration: 1e3 * l, amount: s * (l / 2) }; } (lr.prototype.clear = function () { this._inertiaBuffer = []; }), (lr.prototype.record = function (e) { this._drainInertiaBuffer(), this._inertiaBuffer.push({ time: t.exported.now(), settings: e }); }), (lr.prototype._drainInertiaBuffer = function () { for ( var e = this._inertiaBuffer, i = t.exported.now(); e.length > 0 && i - e[0].time > 160; ) e.shift(); }), (lr.prototype._onMoveEnd = function (e) { if ((this._drainInertiaBuffer(), !(this._inertiaBuffer.length < 2))) { for ( var i = { zoom: 0, bearing: 0, pitch: 0, pan: new t.pointGeometry(0, 0), pinchAround: void 0, around: void 0, }, r = 0, o = this._inertiaBuffer; r < o.length; r += 1 ) { var a = o[r].settings; (i.zoom += a.zoomDelta || 0), (i.bearing += a.bearingDelta || 0), (i.pitch += a.pitchDelta || 0), a.panDelta && i.pan._add(a.panDelta), a.around && (i.around = a.around), a.pinchAround && (i.pinchAround = a.pinchAround); } var n = this._inertiaBuffer[this._inertiaBuffer.length - 1].time - this._inertiaBuffer[0].time, s = {}; if (i.pan.mag()) { var l = hr(i.pan.mag(), n, t.extend({}, or, e || {})); (s.offset = i.pan.mult(l.amount / i.pan.mag())), (s.center = this._map.transform.center), cr(s, l); } if (i.zoom) { var c = hr(i.zoom, n, ar); (s.zoom = this._map.transform.zoom + c.amount), cr(s, c); } if (i.bearing) { var h = hr(i.bearing, n, nr); (s.bearing = this._map.transform.bearing + t.clamp(h.amount, -179, 179)), cr(s, h); } if (i.pitch) { var u = hr(i.pitch, n, sr); (s.pitch = this._map.transform.pitch + u.amount), cr(s, u); } if (s.zoom || s.bearing) { var p = void 0 === i.pinchAround ? i.around : i.pinchAround; s.around = p ? this._map.unproject(p) : this._map.getCenter(); } return this.clear(), t.extend(s, { noMoveStart: !0 }); } }); var ur = (function (e) { function i(i, r, o, n) { void 0 === n && (n = {}); var s = a.mousePos(r.getCanvasContainer(), o), l = r.unproject(s); e.call( this, i, t.extend({ point: s, lngLat: l, originalEvent: o }, n), ), (this._defaultPrevented = !1), (this.target = r); } e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i); var r = { defaultPrevented: { configurable: !0 } }; return ( (i.prototype.preventDefault = function () { this._defaultPrevented = !0; }), (r.defaultPrevented.get = function () { return this._defaultPrevented; }), Object.defineProperties(i.prototype, r), i ); })(t.Event), pr = (function (e) { function i(i, r, o) { var n = 'touchend' === i ? o.changedTouches : o.touches, s = a.touchPos(r.getCanvasContainer(), n), l = s.map(function (t) { return r.unproject(t); }), c = s.reduce(function (t, e, i, r) { return t.add(e.div(r.length)); }, new t.pointGeometry(0, 0)), h = r.unproject(c); e.call(this, i, { points: s, point: c, lngLats: l, lngLat: h, originalEvent: o, }), (this._defaultPrevented = !1); } e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i); var r = { defaultPrevented: { configurable: !0 } }; return ( (i.prototype.preventDefault = function () { this._defaultPrevented = !0; }), (r.defaultPrevented.get = function () { return this._defaultPrevented; }), Object.defineProperties(i.prototype, r), i ); })(t.Event), dr = (function (t) { function e(e, i, r) { t.call(this, e, { originalEvent: r }), (this._defaultPrevented = !1); } t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e); var i = { defaultPrevented: { configurable: !0 } }; return ( (e.prototype.preventDefault = function () { this._defaultPrevented = !0; }), (i.defaultPrevented.get = function () { return this._defaultPrevented; }), Object.defineProperties(e.prototype, i), e ); })(t.Event), _r = function (t, e) { (this._map = t), (this._clickTolerance = e.clickTolerance); }; (_r.prototype.reset = function () { delete this._mousedownPos; }), (_r.prototype.wheel = function (t) { return this._firePreventable(new dr(t.type, this._map, t)); }), (_r.prototype.mousedown = function (t, e) { return ( (this._mousedownPos = e), this._firePreventable(new ur(t.type, this._map, t)) ); }), (_r.prototype.mouseup = function (t) { this._map.fire(new ur(t.type, this._map, t)); }), (_r.prototype.click = function (t, e) { (this._mousedownPos && this._mousedownPos.dist(e) >= this._clickTolerance) || this._map.fire(new ur(t.type, this._map, t)); }), (_r.prototype.dblclick = function (t) { return this._firePreventable(new ur(t.type, this._map, t)); }), (_r.prototype.mouseover = function (t) { this._map.fire(new ur(t.type, this._map, t)); }), (_r.prototype.mouseout = function (t) { this._map.fire(new ur(t.type, this._map, t)); }), (_r.prototype.touchstart = function (t) { return this._firePreventable(new pr(t.type, this._map, t)); }), (_r.prototype.touchmove = function (t) { this._map.fire(new pr(t.type, this._map, t)); }), (_r.prototype.touchend = function (t) { this._map.fire(new pr(t.type, this._map, t)); }), (_r.prototype.touchcancel = function (t) { this._map.fire(new pr(t.type, this._map, t)); }), (_r.prototype._firePreventable = function (t) { if ((this._map.fire(t), t.defaultPrevented)) return {}; }), (_r.prototype.isEnabled = function () { return !0; }), (_r.prototype.isActive = function () { return !1; }), (_r.prototype.enable = function () {}), (_r.prototype.disable = function () {}); var fr = function (t) { this._map = t; }; (fr.prototype.reset = function () { (this._delayContextMenu = !1), (this._ignoreContextMenu = !0), delete this._contextMenuEvent; }), (fr.prototype.mousemove = function (t) { this._map.fire(new ur(t.type, this._map, t)); }), (fr.prototype.mousedown = function () { (this._delayContextMenu = !0), (this._ignoreContextMenu = !1); }), (fr.prototype.mouseup = function () { (this._delayContextMenu = !1), this._contextMenuEvent && (this._map.fire( new ur('contextmenu', this._map, this._contextMenuEvent), ), delete this._contextMenuEvent); }), (fr.prototype.contextmenu = function (t) { this._delayContextMenu ? (this._contextMenuEvent = t) : this._ignoreContextMenu || this._map.fire(new ur(t.type, this._map, t)), this._map.listens('contextmenu') && t.preventDefault(); }), (fr.prototype.isEnabled = function () { return !0; }), (fr.prototype.isActive = function () { return !1; }), (fr.prototype.enable = function () {}), (fr.prototype.disable = function () {}); var mr = function (t, e) { (this._map = t), (this._el = t.getCanvasContainer()), (this._container = t.getContainer()), (this._clickTolerance = e.clickTolerance || 1); }; function gr(t, e) { if (t.length !== e.length) throw new Error( 'The number of touches and points are not equal - touches ' + t.length + ', points ' + e.length, ); for (var i = {}, r = 0; r < t.length; r++) i[t[r].identifier] = e[r]; return i; } (mr.prototype.isEnabled = function () { return !!this._enabled; }), (mr.prototype.isActive = function () { return !!this._active; }), (mr.prototype.enable = function () { this.isEnabled() || (this._enabled = !0); }), (mr.prototype.disable = function () { this.isEnabled() && (this._enabled = !1); }), (mr.prototype.mousedown = function (t, e) { this.isEnabled() && t.shiftKey && 0 === t.button && (a.disableDrag(), (this._startPos = this._lastPos = e), (this._active = !0)); }), (mr.prototype.mousemoveWindow = function (t, e) { if (this._active) { var i = e; if ( !( this._lastPos.equals(i) || (!this._box && i.dist(this._startPos) < this._clickTolerance) ) ) { var r = this._startPos; (this._lastPos = i), this._box || ((this._box = a.create( 'div', 'maplibregl-boxzoom mapboxgl-boxzoom', this._container, )), this._container.classList.add( 'maplibregl-crosshair', 'mapboxgl-crosshair', ), this._fireEvent('boxzoomstart', t)); var o = Math.min(r.x, i.x), n = Math.max(r.x, i.x), s = Math.min(r.y, i.y), l = Math.max(r.y, i.y); a.setTransform(this._box, 'translate(' + o + 'px,' + s + 'px)'), (this._box.style.width = n - o + 'px'), (this._box.style.height = l - s + 'px'); } } }), (mr.prototype.mouseupWindow = function (e, i) { var r = this; if (this._active && 0 === e.button) { var o = this._startPos, n = i; if ((this.reset(), a.suppressClick(), o.x !== n.x || o.y !== n.y)) return ( this._map.fire(new t.Event('boxzoomend', { originalEvent: e })), { cameraAnimation: function (t) { return t.fitScreenCoordinates(o, n, r._map.getBearing(), { linear: !0, }); }, } ); this._fireEvent('boxzoomcancel', e); } }), (mr.prototype.keydown = function (t) { this._active && 27 === t.keyCode && (this.reset(), this._fireEvent('boxzoomcancel', t)); }), (mr.prototype.reset = function () { (this._active = !1), this._container.classList.remove( 'maplibregl-crosshair', 'mapboxgl-crosshair', ), this._box && (a.remove(this._box), (this._box = null)), a.enableDrag(), delete this._startPos, delete this._lastPos; }), (mr.prototype._fireEvent = function (e, i) { return this._map.fire(new t.Event(e, { originalEvent: i })); }); var vr = function (t) { this.reset(), (this.numTouches = t.numTouches); }; (vr.prototype.reset = function () { delete this.centroid, delete this.startTime, delete this.touches, (this.aborted = !1); }), (vr.prototype.touchstart = function (e, i, r) { (this.centroid || r.length > this.numTouches) && (this.aborted = !0), this.aborted || (void 0 === this.startTime && (this.startTime = e.timeStamp), r.length === this.numTouches && ((this.centroid = (function (e) { for ( var i = new t.pointGeometry(0, 0), r = 0, o = e; r < o.length; r += 1 ) i._add(o[r]); return i.div(e.length); })(i)), (this.touches = gr(r, i)))); }), (vr.prototype.touchmove = function (t, e, i) { if (!this.aborted && this.centroid) { var r = gr(i, e); for (var o in this.touches) { var a = r[o]; (!a || a.dist(this.touches[o]) > 30) && (this.aborted = !0); } } }), (vr.prototype.touchend = function (t, e, i) { if ( ((!this.centroid || t.timeStamp - this.startTime > 500) && (this.aborted = !0), 0 === i.length) ) { var r = !this.aborted && this.centroid; if ((this.reset(), r)) return r; } }); var yr = function (t) { (this.singleTap = new vr(t)), (this.numTaps = t.numTaps), this.reset(); }; (yr.prototype.reset = function () { (this.lastTime = 1 / 0), delete this.lastTap, (this.count = 0), this.singleTap.reset(); }), (yr.prototype.touchstart = function (t, e, i) { this.singleTap.touchstart(t, e, i); }), (yr.prototype.touchmove = function (t, e, i) { this.singleTap.touchmove(t, e, i); }), (yr.prototype.touchend = function (t, e, i) { var r = this.singleTap.touchend(t, e, i); if (r) { var o = t.timeStamp - this.lastTime < 500, a = !this.lastTap || this.lastTap.dist(r) < 30; if ( ((o && a) || this.reset(), this.count++, (this.lastTime = t.timeStamp), (this.lastTap = r), this.count === this.numTaps) ) return this.reset(), r; } }); var xr = function () { (this._zoomIn = new yr({ numTouches: 1, numTaps: 2 })), (this._zoomOut = new yr({ numTouches: 2, numTaps: 1 })), this.reset(); }; (xr.prototype.reset = function () { (this._active = !1), this._zoomIn.reset(), this._zoomOut.reset(); }), (xr.prototype.touchstart = function (t, e, i) { this._zoomIn.touchstart(t, e, i), this._zoomOut.touchstart(t, e, i); }), (xr.prototype.touchmove = function (t, e, i) { this._zoomIn.touchmove(t, e, i), this._zoomOut.touchmove(t, e, i); }), (xr.prototype.touchend = function (t, e, i) { var r = this, o = this._zoomIn.touchend(t, e, i), a = this._zoomOut.touchend(t, e, i); return o ? ((this._active = !0), t.preventDefault(), setTimeout(function () { return r.reset(); }, 0), { cameraAnimation: function (e) { return e.easeTo( { duration: 300, zoom: e.getZoom() + 1, around: e.unproject(o), }, { originalEvent: t }, ); }, }) : a ? ((this._active = !0), t.preventDefault(), setTimeout(function () { return r.reset(); }, 0), { cameraAnimation: function (e) { return e.easeTo( { duration: 300, zoom: e.getZoom() - 1, around: e.unproject(a), }, { originalEvent: t }, ); }, }) : void 0; }), (xr.prototype.touchcancel = function () { this.reset(); }), (xr.prototype.enable = function () { this._enabled = !0; }), (xr.prototype.disable = function () { (this._enabled = !1), this.reset(); }), (xr.prototype.isEnabled = function () { return this._enabled; }), (xr.prototype.isActive = function () { return this._active; }); var br = { 0: 1, 2: 2 }, wr = function (t) { this.reset(), (this._clickTolerance = t.clickTolerance || 1); }; (wr.prototype.reset = function () { (this._active = !1), (this._moved = !1), delete this._lastPoint, delete this._eventButton; }), (wr.prototype._correctButton = function (t, e) { return !1; }), (wr.prototype._move = function (t, e) { return {}; }), (wr.prototype.mousedown = function (t, e) { if (!this._lastPoint) { var i = a.mouseButton(t); this._correctButton(t, i) && ((this._lastPoint = e), (this._eventButton = i)); } }), (wr.prototype.mousemoveWindow = function (t, e) { var i = this._lastPoint; if (i) if ( (t.preventDefault(), (function (t, e) { var i = br[e]; return void 0 === t.buttons || (t.buttons & i) !== i; })(t, this._eventButton)) ) this.reset(); else if (this._moved || !(e.dist(i) < this._clickTolerance)) return (this._moved = !0), (this._lastPoint = e), this._move(i, e); }), (wr.prototype.mouseupWindow = function (t) { this._lastPoint && a.mouseButton(t) === this._eventButton && (this._moved && a.suppressClick(), this.reset()); }), (wr.prototype.enable = function () { this._enabled = !0; }), (wr.prototype.disable = function () { (this._enabled = !1), this.reset(); }), (wr.prototype.isEnabled = function () { return this._enabled; }), (wr.prototype.isActive = function () { return this._active; }); var Tr = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.mousedown = function (e, i) { t.prototype.mousedown.call(this, e, i), this._lastPoint && (this._active = !0); }), (e.prototype._correctButton = function (t, e) { return 0 === e && !t.ctrlKey; }), (e.prototype._move = function (t, e) { return { around: e, panDelta: e.sub(t) }; }), e ); })(wr), Er = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._correctButton = function (t, e) { return (0 === e && t.ctrlKey) || 2 === e; }), (e.prototype._move = function (t, e) { var i = 0.8 * (e.x - t.x); if (i) return (this._active = !0), { bearingDelta: i }; }), (e.prototype.contextmenu = function (t) { t.preventDefault(); }), e ); })(wr), Ir = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype._correctButton = function (t, e) { return (0 === e && t.ctrlKey) || 2 === e; }), (e.prototype._move = function (t, e) { var i = -0.5 * (e.y - t.y); if (i) return (this._active = !0), { pitchDelta: i }; }), (e.prototype.contextmenu = function (t) { t.preventDefault(); }), e ); })(wr), Cr = function (t, e) { (this._minTouches = t.cooperativeGestures ? 2 : 1), (this._clickTolerance = t.clickTolerance || 1), (this._map = e), this.reset(); }; (Cr.prototype.reset = function () { var e = this; (this._active = !1), (this._touches = {}), (this._sum = new t.pointGeometry(0, 0)), setTimeout(function () { e._cancelCooperativeMessage = !1; }, 200); }), (Cr.prototype.touchstart = function (t, e, i) { return this._calculateTransform(t, e, i); }), (Cr.prototype.touchmove = function (t, e, i) { if ( (this._map._cooperativeGestures && (2 === this._minTouches && i.length < 2 && !this._cancelCooperativeMessage ? this._map._onCooperativeGesture(t, !1, i.length) : this._cancelCooperativeMessage || (this._cancelCooperativeMessage = !0)), this._active && !(i.length < this._minTouches)) ) return t.preventDefault(), this._calculateTransform(t, e, i); }), (Cr.prototype.touchend = function (t, e, i) { this._calculateTransform(t, e, i), this._active && i.length < this._minTouches && this.reset(); }), (Cr.prototype.touchcancel = function () { this.reset(); }), (Cr.prototype._calculateTransform = function (e, i, r) { r.length > 0 && (this._active = !0); var o = gr(r, i), a = new t.pointGeometry(0, 0), n = new t.pointGeometry(0, 0), s = 0; for (var l in o) { var c = o[l], h = this._touches[l]; h && (a._add(c), n._add(c.sub(h)), s++, (o[l] = c)); } if (((this._touches = o), !(s < this._minTouches) && n.mag())) { var u = n.div(s); if ((this._sum._add(u), !(this._sum.mag() < this._clickTolerance))) return { around: a.div(s), panDelta: u }; } }), (Cr.prototype.enable = function () { this._enabled = !0; }), (Cr.prototype.disable = function () { (this._enabled = !1), this.reset(); }), (Cr.prototype.isEnabled = function () { return this._enabled; }), (Cr.prototype.isActive = function () { return this._active; }); var Sr = function () { this.reset(); }; function Dr(t, e, i) { for (var r = 0; r < t.length; r++) if (t[r].identifier === i) return e[r]; } function zr(t, e) { return Math.log(t / e) / Math.LN2; } (Sr.prototype.reset = function () { (this._active = !1), delete this._firstTwoTouches; }), (Sr.prototype._start = function (t) {}), (Sr.prototype._move = function (t, e, i) { return {}; }), (Sr.prototype.touchstart = function (t, e, i) { this._firstTwoTouches || i.length < 2 || ((this._firstTwoTouches = [i[0].identifier, i[1].identifier]), this._start([e[0], e[1]])); }), (Sr.prototype.touchmove = function (t, e, i) { if (this._firstTwoTouches) { t.preventDefault(); var r = this._firstTwoTouches, o = r[1], a = Dr(i, e, r[0]), n = Dr(i, e, o); if (a && n) { var s = this._aroundCenter ? null : a.add(n).div(2); return this._move([a, n], s, t); } } }), (Sr.prototype.touchend = function (t, e, i) { if (this._firstTwoTouches) { var r = this._firstTwoTouches, o = r[1], n = Dr(i, e, r[0]), s = Dr(i, e, o); (n && s) || (this._active && a.suppressClick(), this.reset()); } }), (Sr.prototype.touchcancel = function () { this.reset(); }), (Sr.prototype.enable = function (t) { (this._enabled = !0), (this._aroundCenter = !!t && 'center' === t.around); }), (Sr.prototype.disable = function () { (this._enabled = !1), this.reset(); }), (Sr.prototype.isEnabled = function () { return this._enabled; }), (Sr.prototype.isActive = function () { return this._active; }); var Pr = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.reset = function () { t.prototype.reset.call(this), delete this._distance, delete this._startDistance; }), (e.prototype._start = function (t) { this._startDistance = this._distance = t[0].dist(t[1]); }), (e.prototype._move = function (t, e) { var i = this._distance; if ( ((this._distance = t[0].dist(t[1])), this._active || !(Math.abs(zr(this._distance, this._startDistance)) < 0.1)) ) return ( (this._active = !0), { zoomDelta: zr(this._distance, i), pinchAround: e } ); }), e ); })(Sr); function Mr(t, e) { return (180 * t.angleWith(e)) / Math.PI; } var Ar = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.reset = function () { t.prototype.reset.call(this), delete this._minDiameter, delete this._startVector, delete this._vector; }), (e.prototype._start = function (t) { (this._startVector = this._vector = t[0].sub(t[1])), (this._minDiameter = t[0].dist(t[1])); }), (e.prototype._move = function (t, e) { var i = this._vector; if ( ((this._vector = t[0].sub(t[1])), this._active || !this._isBelowThreshold(this._vector)) ) return ( (this._active = !0), { bearingDelta: Mr(this._vector, i), pinchAround: e } ); }), (e.prototype._isBelowThreshold = function (t) { this._minDiameter = Math.min(this._minDiameter, t.mag()); var e = (25 / (Math.PI * this._minDiameter)) * 360, i = Mr(t, this._startVector); return Math.abs(i) < e; }), e ); })(Sr); function Rr(t) { return Math.abs(t.y) > Math.abs(t.x); } var Lr = (function (t) { function e(e) { t.call(this), (this._map = e); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), (e.prototype.reset = function () { t.prototype.reset.call(this), (this._valid = void 0), delete this._firstMove, delete this._lastPoints; }), (e.prototype.touchstart = function (e, i, r) { t.prototype.touchstart.call(this, e, i, r), (this._currentTouchCount = r.length); }), (e.prototype._start = function (t) { (this._lastPoints = t), Rr(t[0].sub(t[1])) && (this._valid = !1); }), (e.prototype._move = function (t, e, i) { if ( !(this._map._cooperativeGestures && this._currentTouchCount < 3) ) { var r = t[0].sub(this._lastPoints[0]), o = t[1].sub(this._lastPoints[1]); if ( ((this._valid = this.gestureBeginsVertically( r, o, i.timeStamp, )), this._valid) ) return ( (this._lastPoints = t), (this._active = !0), { pitchDelta: ((r.y + o.y) / 2) * -0.5 } ); } }), (e.prototype.gestureBeginsVertically = function (t, e, i) { if (void 0 !== this._valid) return this._valid; var r = t.mag() >= 2, o = e.mag() >= 2; if (r || o) { if (!r || !o) return ( void 0 === this._firstMove && (this._firstMove = i), i - this._firstMove < 100 && void 0 ); var a = t.y > 0 == e.y > 0; return Rr(t) && Rr(e) && a; } }), e ); })(Sr), kr = { panStep: 100, bearingStep: 15, pitchStep: 10 }, Br = function () { var t = kr; (this._panStep = t.panStep), (this._bearingStep = t.bearingStep), (this._pitchStep = t.pitchStep), (this._rotationDisabled = !1); }; function Or(t) { return t * (2 - t); } (Br.prototype.reset = function () { this._active = !1; }), (Br.prototype.keydown = function (t) { var e = this; if (!(t.altKey || t.ctrlKey || t.metaKey)) { var i = 0, r = 0, o = 0, a = 0, n = 0; switch (t.keyCode) { case 61: case 107: case 171: case 187: i = 1; break; case 189: case 109: case 173: i = -1; break; case 37: t.shiftKey ? (r = -1) : (t.preventDefault(), (a = -1)); break; case 39: t.shiftKey ? (r = 1) : (t.preventDefault(), (a = 1)); break; case 38: t.shiftKey ? (o = 1) : (t.preventDefault(), (n = -1)); break; case 40: t.shiftKey ? (o = -1) : (t.preventDefault(), (n = 1)); break; default: return; } return ( this._rotationDisabled && ((r = 0), (o = 0)), { cameraAnimation: function (s) { var l = s.getZoom(); s.easeTo( { duration: 300, easeId: 'keyboardHandler', easing: Or, zoom: i ? Math.round(l) + i * (t.shiftKey ? 2 : 1) : l, bearing: s.getBearing() + r * e._bearingStep, pitch: s.getPitch() + o * e._pitchStep, offset: [-a * e._panStep, -n * e._panStep], center: s.getCenter(), }, { originalEvent: t }, ); }, } ); } }), (Br.prototype.enable = function () { this._enabled = !0; }), (Br.prototype.disable = function () { (this._enabled = !1), this.reset(); }), (Br.prototype.isEnabled = function () { return this._enabled; }), (Br.prototype.isActive = function () { return this._active; }), (Br.prototype.disableRotation = function () { this._rotationDisabled = !0; }), (Br.prototype.enableRotation = function () { this._rotationDisabled = !1; }); var Fr = 4.000244140625, Ur = function (e, i) { (this._map = e), (this._el = e.getCanvasContainer()), (this._handler = i), (this._delta = 0), (this._defaultZoomRate = 0.01), (this._wheelZoomRate = 0.0022222222222222222), t.bindAll(['_onTimeout'], this); }; (Ur.prototype.setZoomRate = function (t) { this._defaultZoomRate = t; }), (Ur.prototype.setWheelZoomRate = function (t) { this._wheelZoomRate = t; }), (Ur.prototype.isEnabled = function () { return !!this._enabled; }), (Ur.prototype.isActive = function () { return !!this._active || void 0 !== this._finishTimeout; }), (Ur.prototype.isZooming = function () { return !!this._zooming; }), (Ur.prototype.enable = function (t) { this.isEnabled() || ((this._enabled = !0), (this._aroundCenter = t && 'center' === t.around)); }), (Ur.prototype.disable = function () { this.isEnabled() && (this._enabled = !1); }), (Ur.prototype.wheel = function (e) { if (this.isEnabled()) { if (this._map._cooperativeGestures) { if (!this._map._metaPress) return; e.preventDefault(); } var i = e.deltaMode === WheelEvent.DOM_DELTA_LINE ? 40 * e.deltaY : e.deltaY, r = t.exported.now(), o = r - (this._lastWheelEventTime || 0); (this._lastWheelEventTime = r), 0 !== i && i % Fr == 0 ? (this._type = 'wheel') : 0 !== i && Math.abs(i) < 4 ? (this._type = 'trackpad') : o > 400 ? ((this._type = null), (this._lastValue = i), (this._timeout = setTimeout(this._onTimeout, 40, e))) : this._type || ((this._type = Math.abs(o * i) < 200 ? 'trackpad' : 'wheel'), this._timeout && (clearTimeout(this._timeout), (this._timeout = null), (i += this._lastValue))), e.shiftKey && i && (i /= 4), this._type && ((this._lastWheelEvent = e), (this._delta -= i), this._active || this._start(e)), e.preventDefault(); } }), (Ur.prototype._onTimeout = function (t) { (this._type = 'wheel'), (this._delta -= this._lastValue), this._active || this._start(t); }), (Ur.prototype._start = function (e) { if (this._delta) { this._frameId && (this._frameId = null), (this._active = !0), this.isZooming() || (this._zooming = !0), this._finishTimeout && (clearTimeout(this._finishTimeout), delete this._finishTimeout); var i = a.mousePos(this._el, e); (this._around = t.LngLat.convert( this._aroundCenter ? this._map.getCenter() : this._map.unproject(i), )), (this._aroundPoint = this._map.transform.locationPoint( this._around, )), this._frameId || ((this._frameId = !0), this._handler._triggerRenderFrame()); } }), (Ur.prototype.renderFrame = function () { var e = this; if (this._frameId && ((this._frameId = null), this.isActive())) { var i = this._map.transform; if (0 !== this._delta) { var r = 'wheel' === this._type && Math.abs(this._delta) > Fr ? this._wheelZoomRate : this._defaultZoomRate, o = 2 / (1 + Math.exp(-Math.abs(this._delta * r))); this._delta < 0 && 0 !== o && (o = 1 / o); var a = 'number' == typeof this._targetZoom ? i.zoomScale(this._targetZoom) : i.scale; (this._targetZoom = Math.min( i.maxZoom, Math.max(i.minZoom, i.scaleZoom(a * o)), )), 'wheel' === this._type && ((this._startZoom = i.zoom), (this._easing = this._smoothOutEasing(200))), (this._delta = 0); } var n, s = 'number' == typeof this._targetZoom ? this._targetZoom : i.zoom, l = this._startZoom, c = this._easing, h = !1; if ('wheel' === this._type && l && c) { var u = Math.min( (t.exported.now() - this._lastWheelEventTime) / 200, 1, ), p = c(u); (n = t.number(l, s, p)), u < 1 ? this._frameId || (this._frameId = !0) : (h = !0); } else (n = s), (h = !0); return ( (this._active = !0), h && ((this._active = !1), (this._finishTimeout = setTimeout(function () { (e._zooming = !1), e._handler._triggerRenderFrame(), delete e._targetZoom, delete e._finishTimeout; }, 200))), { noInertia: !0, needsRenderFrame: !h, zoomDelta: n - i.zoom, around: this._aroundPoint, originalEvent: this._lastWheelEvent, } ); } }), (Ur.prototype._smoothOutEasing = function (e) { var i = t.ease; if (this._prevEase) { var r = this._prevEase, o = (t.exported.now() - r.start) / r.duration, a = r.easing(o + 0.01) - r.easing(o), n = (0.27 / Math.sqrt(a * a + 1e-4)) * 0.01, s = Math.sqrt(0.0729 - n * n); i = t.bezier(n, s, 0.25, 1); } return ( (this._prevEase = { start: t.exported.now(), duration: e, easing: i, }), i ); }), (Ur.prototype.reset = function () { this._active = !1; }); var Nr = function (t, e) { (this._clickZoom = t), (this._tapZoom = e); }; (Nr.prototype.enable = function () { this._clickZoom.enable(), this._tapZoom.enable(); }), (Nr.prototype.disable = function () { this._clickZoom.disable(), this._tapZoom.disable(); }), (Nr.prototype.isEnabled = function () { return this._clickZoom.isEnabled() && this._tapZoom.isEnabled(); }), (Nr.prototype.isActive = function () { return this._clickZoom.isActive() || this._tapZoom.isActive(); }); var Gr = function () { this.reset(); }; (Gr.prototype.reset = function () { this._active = !1; }), (Gr.prototype.dblclick = function (t, e) { return ( t.preventDefault(), { cameraAnimation: function (i) { i.easeTo( { duration: 300, zoom: i.getZoom() + (t.shiftKey ? -1 : 1), around: i.unproject(e), }, { originalEvent: t }, ); }, } ); }), (Gr.prototype.enable = function () { this._enabled = !0; }), (Gr.prototype.disable = function () { (this._enabled = !1), this.reset(); }), (Gr.prototype.isEnabled = function () { return this._enabled; }), (Gr.prototype.isActive = function () { return this._active; }); var jr = function () { (this._tap = new yr({ numTouches: 1, numTaps: 1 })), this.reset(); }; (jr.prototype.reset = function () { (this._active = !1), delete this._swipePoint, delete this._swipeTouch, delete this._tapTime, this._tap.reset(); }), (jr.prototype.touchstart = function (t, e, i) { this._swipePoint || (this._tapTime && t.timeStamp - this._tapTime > 500 && this.reset(), this._tapTime ? i.length > 0 && ((this._swipePoint = e[0]), (this._swipeTouch = i[0].identifier)) : this._tap.touchstart(t, e, i)); }), (jr.prototype.touchmove = function (t, e, i) { if (this._tapTime) { if (this._swipePoint) { if (i[0].identifier !== this._swipeTouch) return; var r = e[0], o = r.y - this._swipePoint.y; return ( (this._swipePoint = r), t.preventDefault(), (this._active = !0), { zoomDelta: o / 128 } ); } } else this._tap.touchmove(t, e, i); }), (jr.prototype.touchend = function (t, e, i) { this._tapTime ? this._swipePoint && 0 === i.length && this.reset() : this._tap.touchend(t, e, i) && (this._tapTime = t.timeStamp); }), (jr.prototype.touchcancel = function () { this.reset(); }), (jr.prototype.enable = function () { this._enabled = !0; }), (jr.prototype.disable = function () { (this._enabled = !1), this.reset(); }), (jr.prototype.isEnabled = function () { return this._enabled; }), (jr.prototype.isActive = function () { return this._active; }); var Zr = function (t, e, i) { (this._el = t), (this._mousePan = e), (this._touchPan = i); }; (Zr.prototype.enable = function (t) { (this._inertiaOptions = t || {}), this._mousePan.enable(), this._touchPan.enable(), this._el.classList.add( 'maplibregl-touch-drag-pan', 'mapboxgl-touch-drag-pan', ); }), (Zr.prototype.disable = function () { this._mousePan.disable(), this._touchPan.disable(), this._el.classList.remove( 'maplibregl-touch-drag-pan', 'mapboxgl-touch-drag-pan', ); }), (Zr.prototype.isEnabled = function () { return this._mousePan.isEnabled() && this._touchPan.isEnabled(); }), (Zr.prototype.isActive = function () { return this._mousePan.isActive() || this._touchPan.isActive(); }); var Vr = function (t, e, i) { (this._pitchWithRotate = t.pitchWithRotate), (this._mouseRotate = e), (this._mousePitch = i); }; (Vr.prototype.enable = function () { this._mouseRotate.enable(), this._pitchWithRotate && this._mousePitch.enable(); }), (Vr.prototype.disable = function () { this._mouseRotate.disable(), this._mousePitch.disable(); }), (Vr.prototype.isEnabled = function () { return ( this._mouseRotate.isEnabled() && (!this._pitchWithRotate || this._mousePitch.isEnabled()) ); }), (Vr.prototype.isActive = function () { return this._mouseRotate.isActive() || this._mousePitch.isActive(); }); var qr = function (t, e, i, r) { (this._el = t), (this._touchZoom = e), (this._touchRotate = i), (this._tapDragZoom = r), (this._rotationDisabled = !1), (this._enabled = !0); }; (qr.prototype.enable = function (t) { this._touchZoom.enable(t), this._rotationDisabled || this._touchRotate.enable(t), this._tapDragZoom.enable(), this._el.classList.add( 'maplibregl-touch-zoom-rotate', 'mapboxgl-touch-zoom-rotate', ); }), (qr.prototype.disable = function () { this._touchZoom.disable(), this._touchRotate.disable(), this._tapDragZoom.disable(), this._el.classList.remove( 'maplibregl-touch-zoom-rotate', 'mapboxgl-touch-zoom-rotate', ); }), (qr.prototype.isEnabled = function () { return ( this._touchZoom.isEnabled() && (this._rotationDisabled || this._touchRotate.isEnabled()) && this._tapDragZoom.isEnabled() ); }), (qr.prototype.isActive = function () { return ( this._touchZoom.isActive() || this._touchRotate.isActive() || this._tapDragZoom.isActive() ); }), (qr.prototype.disableRotation = function () { (this._rotationDisabled = !0), this._touchRotate.disable(); }), (qr.prototype.enableRotation = function () { (this._rotationDisabled = !1), this._touchZoom.isEnabled() && this._touchRotate.enable(); }); var Xr = function (t) { return t.zoom || t.drag || t.pitch || t.rotate; }, Wr = (function (t) { function e() { t.apply(this, arguments); } return ( t && (e.__proto__ = t), ((e.prototype = Object.create(t && t.prototype)).constructor = e), e ); })(t.Event); function Hr(t) { return ( (t.panDelta && t.panDelta.mag()) || t.zoomDelta || t.bearingDelta || t.pitchDelta ); } var Kr = function (e, i) { (this._map = e), (this._el = this._map.getCanvasContainer()), (this._handlers = []), (this._handlersById = {}), (this._changes = []), (this._inertia = new lr(e)), (this._bearingSnap = i.bearingSnap), (this._previousActiveHandlers = {}), (this._eventsInProgress = {}), this._addDefaultHandlers(i), t.bindAll(['handleEvent', 'handleWindowEvent'], this); var r = this._el; this._listeners = [ [r, 'touchstart', { passive: !0 }], [r, 'touchmove', { passive: !1 }], [r, 'touchend', void 0], [r, 'touchcancel', void 0], [r, 'mousedown', void 0], [r, 'mousemove', void 0], [r, 'mouseup', void 0], [document, 'mousemove', { capture: !0 }], [document, 'mouseup', void 0], [r, 'mouseover', void 0], [r, 'mouseout', void 0], [r, 'dblclick', void 0], [r, 'click', void 0], [r, 'keydown', { capture: !1 }], [r, 'keyup', void 0], [r, 'wheel', { passive: !1 }], [r, 'contextmenu', void 0], [window, 'blur', void 0], ]; for (var o = 0, n = this._listeners; o < n.length; o += 1) { var s = n[o], l = s[0]; a.addEventListener( l, s[1], l === document ? this.handleWindowEvent : this.handleEvent, s[2], ); } }; (Kr.prototype.destroy = function () { for (var t = 0, e = this._listeners; t < e.length; t += 1) { var i = e[t], r = i[0]; a.removeEventListener( r, i[1], r === document ? this.handleWindowEvent : this.handleEvent, i[2], ); } }), (Kr.prototype._addDefaultHandlers = function (t) { var e = this._map, i = e.getCanvasContainer(); this._add('mapEvent', new _r(e, t)); var r = (e.boxZoom = new mr(e, t)); this._add('boxZoom', r); var o = new xr(), a = new Gr(); (e.doubleClickZoom = new Nr(a, o)), this._add('tapZoom', o), this._add('clickZoom', a); var n = new jr(); this._add('tapDragZoom', n); var s = (e.touchPitch = new Lr(e)); this._add('touchPitch', s); var l = new Er(t), c = new Ir(t); (e.dragRotate = new Vr(t, l, c)), this._add('mouseRotate', l, ['mousePitch']), this._add('mousePitch', c, ['mouseRotate']); var h = new Tr(t), u = new Cr(t, e); (e.dragPan = new Zr(i, h, u)), this._add('mousePan', h), this._add('touchPan', u, ['touchZoom', 'touchRotate']); var p = new Ar(), d = new Pr(); (e.touchZoomRotate = new qr(i, d, p, n)), this._add('touchRotate', p, ['touchPan', 'touchZoom']), this._add('touchZoom', d, ['touchPan', 'touchRotate']); var _ = (e.scrollZoom = new Ur(e, this)); this._add('scrollZoom', _, ['mousePan']); var f = (e.keyboard = new Br()); this._add('keyboard', f), this._add('blockableMapEvent', new fr(e)); for ( var m = 0, g = [ 'boxZoom', 'doubleClickZoom', 'tapDragZoom', 'touchPitch', 'dragRotate', 'dragPan', 'touchZoomRotate', 'scrollZoom', 'keyboard', ]; m < g.length; m += 1 ) { var v = g[m]; t.interactive && t[v] && e[v].enable(t[v]); } }), (Kr.prototype._add = function (t, e, i) { this._handlers.push({ handlerName: t, handler: e, allowed: i }), (this._handlersById[t] = e); }), (Kr.prototype.stop = function (t) { if (!this._updatingCamera) { for (var e = 0, i = this._handlers; e < i.length; e += 1) i[e].handler.reset(); this._inertia.clear(), this._fireEvents({}, {}, t), (this._changes = []); } }), (Kr.prototype.isActive = function () { for (var t = 0, e = this._handlers; t < e.length; t += 1) if (e[t].handler.isActive()) return !0; return !1; }), (Kr.prototype.isZooming = function () { return ( !!this._eventsInProgress.zoom || this._map.scrollZoom.isZooming() ); }), (Kr.prototype.isRotating = function () { return !!this._eventsInProgress.rotate; }), (Kr.prototype.isMoving = function () { return Boolean(Xr(this._eventsInProgress)) || this.isZooming(); }), (Kr.prototype._blockedByActive = function (t, e, i) { for (var r in t) if (r !== i && (!e || e.indexOf(r) < 0)) return !0; return !1; }), (Kr.prototype.handleWindowEvent = function (t) { this.handleEvent(t, t.type + 'Window'); }), (Kr.prototype._getMapTouches = function (t) { for (var e = [], i = 0; i < t.length; i++) this._el.contains(t[i].target) && e.push(t[i]); return e; }), (Kr.prototype.handleEvent = function (t, e) { if ('blur' !== t.type) { this._updatingCamera = !0; for ( var i = 'renderFrame' === t.type ? void 0 : t, r = { needsRenderFrame: !1 }, o = {}, n = {}, s = t.touches, l = s ? this._getMapTouches(s) : void 0, c = l ? a.touchPos(this._el, l) : a.mousePos(this._el, t), h = 0, u = this._handlers; h < u.length; h += 1 ) { var p = u[h], d = p.handlerName, _ = p.handler, f = p.allowed; if (_.isEnabled()) { var m = void 0; this._blockedByActive(n, f, d) ? _.reset() : _[e || t.type] && ((m = _[e || t.type](t, c, l)), this.mergeHandlerResult(r, o, m, d, i), m && m.needsRenderFrame && this._triggerRenderFrame()), (m || _.isActive()) && (n[d] = _); } } var g = {}; for (var v in this._previousActiveHandlers) n[v] || (g[v] = i); (this._previousActiveHandlers = n), (Object.keys(g).length || Hr(r)) && (this._changes.push([r, o, g]), this._triggerRenderFrame()), (Object.keys(n).length || Hr(r)) && this._map._stop(!0), (this._updatingCamera = !1); var y = r.cameraAnimation; y && (this._inertia.clear(), this._fireEvents({}, {}, !0), (this._changes = []), y(this._map)); } else this.stop(!0); }), (Kr.prototype.mergeHandlerResult = function (e, i, r, o, a) { if (r) { t.extend(e, r); var n = { handlerName: o, originalEvent: r.originalEvent || a }; void 0 !== r.zoomDelta && (i.zoom = n), void 0 !== r.panDelta && (i.drag = n), void 0 !== r.pitchDelta && (i.pitch = n), void 0 !== r.bearingDelta && (i.rotate = n); } }), (Kr.prototype._applyChanges = function () { for ( var e = {}, i = {}, r = {}, o = 0, a = this._changes; o < a.length; o += 1 ) { var n = a[o], s = n[0], l = n[1], c = n[2]; s.panDelta && (e.panDelta = (e.panDelta || new t.pointGeometry(0, 0))._add( s.panDelta, )), s.zoomDelta && (e.zoomDelta = (e.zoomDelta || 0) + s.zoomDelta), s.bearingDelta && (e.bearingDelta = (e.bearingDelta || 0) + s.bearingDelta), s.pitchDelta && (e.pitchDelta = (e.pitchDelta || 0) + s.pitchDelta), void 0 !== s.around && (e.around = s.around), void 0 !== s.pinchAround && (e.pinchAround = s.pinchAround), s.noInertia && (e.noInertia = s.noInertia), t.extend(i, l), t.extend(r, c); } this._updateMapTransform(e, i, r), (this._changes = []); }), (Kr.prototype._updateMapTransform = function (e, i, r) { var o = this._map, a = o.transform, n = o.style && o.style.terrain; if (!(Hr(e) || (n && this._drag))) return this._fireEvents(i, r, !0); var s = e.panDelta, l = e.zoomDelta, c = e.bearingDelta, h = e.pitchDelta, u = e.around, p = e.pinchAround; void 0 !== p && (u = p), o._stop(!0), (u = u || o.transform.centerPoint); var d = a.pointLocation(s ? u.sub(s) : u); c && (a.bearing += c), h && (a.pitch += h), l && (a.zoom += l), n ? i.drag && !this._drag ? ((this._drag = { center: a.centerPoint, lngLat: a.pointLocation(u), point: u, handlerName: i.drag.handlerName, }), o.fire(new t.Event('freezeElevation', { freeze: !0 }))) : this._drag && r[this._drag.handlerName] ? (o.fire(new t.Event('freezeElevation', { freeze: !1 })), (this._drag = null)) : i.drag && this._drag && (a.center = a.pointLocation(a.centerPoint.sub(s))) : a.setLocationAtPoint(d, u), this._map._update(), e.noInertia || this._inertia.record(e), this._fireEvents(i, r, !0); }), (Kr.prototype._fireEvents = function (e, i, r) { var o = this, a = Xr(this._eventsInProgress), n = Xr(e), s = {}; for (var l in e) this._eventsInProgress[l] || (s[l + 'start'] = e[l].originalEvent), (this._eventsInProgress[l] = e[l]); for (var c in (!a && n && this._fireEvent('movestart', n.originalEvent), s)) this._fireEvent(c, s[c]); for (var h in (n && this._fireEvent('move', n.originalEvent), e)) this._fireEvent(h, e[h].originalEvent); var u, p = {}; for (var d in this._eventsInProgress) { var _ = this._eventsInProgress[d], f = _.handlerName, m = _.originalEvent; this._handlersById[f].isActive() || (delete this._eventsInProgress[d], (p[d + 'end'] = u = i[f] || m)); } for (var g in p) this._fireEvent(g, p[g]); var v = Xr(this._eventsInProgress); if (r && (a || n) && !v) { this._updatingCamera = !0; var y = this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions), x = function (t) { return 0 !== t && -o._bearingSnap < t && t < o._bearingSnap; }; y ? (x(y.bearing || this._map.getBearing()) && (y.bearing = 0), this._map.easeTo(y, { originalEvent: u })) : (this._map.fire(new t.Event('moveend', { originalEvent: u })), x(this._map.getBearing()) && this._map.resetNorth()), (this._updatingCamera = !1); } }), (Kr.prototype._fireEvent = function (e, i) { this._map.fire(new t.Event(e, i ? { originalEvent: i } : {})); }), (Kr.prototype._requestFrame = function () { var t = this; return ( this._map.triggerRepaint(), this._map._renderTaskQueue.add(function (e) { delete t._frameId, t.handleEvent(new Wr('renderFrame', { timeStamp: e })), t._applyChanges(); }) ); }), (Kr.prototype._triggerRenderFrame = function () { void 0 === this._frameId && (this._frameId = this._requestFrame()); }); var Yr = (function (e) { function i(i, r) { e.call(this), (this._moving = !1), (this._zooming = !1), (this.transform = i), (this._bearingSnap = r.bearingSnap), t.bindAll(['_renderFrameCallback'], this); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.getCenter = function () { return new t.LngLat( this.transform.center.lng, this.transform.center.lat, ); }), (i.prototype.setCenter = function (t, e) { return this.jumpTo({ center: t }, e); }), (i.prototype.panBy = function (e, i, r) { return ( (e = t.pointGeometry.convert(e).mult(-1)), this.panTo(this.transform.center, t.extend({ offset: e }, i), r) ); }), (i.prototype.panTo = function (e, i, r) { return this.easeTo(t.extend({ center: e }, i), r); }), (i.prototype.getZoom = function () { return this.transform.zoom; }), (i.prototype.setZoom = function (t, e) { return this.jumpTo({ zoom: t }, e), this; }), (i.prototype.zoomTo = function (e, i, r) { return this.easeTo(t.extend({ zoom: e }, i), r); }), (i.prototype.zoomIn = function (t, e) { return this.zoomTo(this.getZoom() + 1, t, e), this; }), (i.prototype.zoomOut = function (t, e) { return this.zoomTo(this.getZoom() - 1, t, e), this; }), (i.prototype.getBearing = function () { return this.transform.bearing; }), (i.prototype.setBearing = function (t, e) { return this.jumpTo({ bearing: t }, e), this; }), (i.prototype.getPadding = function () { return this.transform.padding; }), (i.prototype.setPadding = function (t, e) { return this.jumpTo({ padding: t }, e), this; }), (i.prototype.rotateTo = function (e, i, r) { return this.easeTo(t.extend({ bearing: e }, i), r); }), (i.prototype.resetNorth = function (e, i) { return this.rotateTo(0, t.extend({ duration: 1e3 }, e), i), this; }), (i.prototype.resetNorthPitch = function (e, i) { return ( this.easeTo( t.extend({ bearing: 0, pitch: 0, duration: 1e3 }, e), i, ), this ); }), (i.prototype.snapToNorth = function (t, e) { return Math.abs(this.getBearing()) < this._bearingSnap ? this.resetNorth(t, e) : this; }), (i.prototype.getPitch = function () { return this.transform.pitch; }), (i.prototype.setPitch = function (t, e) { return this.jumpTo({ pitch: t }, e), this; }), (i.prototype.cameraForBounds = function (e, i) { e = t.LngLatBounds.convert(e); var r = (i && i.bearing) || 0; return this._cameraForBoxAndBearing( e.getNorthWest(), e.getSouthEast(), r, i, ); }), (i.prototype._cameraForBoxAndBearing = function (e, i, r, o) { var a = { top: 0, bottom: 0, right: 0, left: 0 }; if ( 'number' == typeof (o = t.extend( { padding: a, offset: [0, 0], maxZoom: this.transform.maxZoom }, o, )).padding ) { var n = o.padding; o.padding = { top: n, bottom: n, right: n, left: n }; } o.padding = t.extend(a, o.padding); var s = this.transform, l = s.padding, c = s.project(t.LngLat.convert(e)), h = s.project(t.LngLat.convert(i)), u = c.rotate((-r * Math.PI) / 180), p = h.rotate((-r * Math.PI) / 180), d = new t.pointGeometry(Math.max(u.x, p.x), Math.max(u.y, p.y)), _ = new t.pointGeometry(Math.min(u.x, p.x), Math.min(u.y, p.y)), f = d.sub(_), m = (s.width - (l.left + l.right + o.padding.left + o.padding.right)) / f.x, g = (s.height - (l.top + l.bottom + o.padding.top + o.padding.bottom)) / f.y; if (!(g < 0 || m < 0)) { var v = Math.min( s.scaleZoom(s.scale * Math.min(m, g)), o.maxZoom, ), y = t.pointGeometry.convert(o.offset), x = new t.pointGeometry( (o.padding.left - o.padding.right) / 2, (o.padding.top - o.padding.bottom) / 2, ).rotate((r * Math.PI) / 180), b = y.add(x).mult(s.scale / s.zoomScale(v)); return { center: s.unproject(c.add(h).div(2).sub(b)), zoom: v, bearing: r, }; } t.warnOnce( 'Map cannot fit within canvas with the given bounds, padding, and/or offset.', ); }), (i.prototype.fitBounds = function (t, e, i) { return this._fitInternal(this.cameraForBounds(t, e), e, i); }), (i.prototype.fitScreenCoordinates = function (e, i, r, o, a) { return this._fitInternal( this._cameraForBoxAndBearing( this.transform.pointLocation(t.pointGeometry.convert(e)), this.transform.pointLocation(t.pointGeometry.convert(i)), r, o, ), o, a, ); }), (i.prototype._fitInternal = function (e, i, r) { return e ? (delete (i = t.extend(e, i)).padding, i.linear ? this.easeTo(i, r) : this.flyTo(i, r)) : this; }), (i.prototype.jumpTo = function (e, i) { this.stop(); var r = this.transform, o = !1, a = !1, n = !1; return ( 'zoom' in e && r.zoom !== +e.zoom && ((o = !0), (r.zoom = +e.zoom)), void 0 !== e.center && (r.center = t.LngLat.convert(e.center)), 'bearing' in e && r.bearing !== +e.bearing && ((a = !0), (r.bearing = +e.bearing)), 'pitch' in e && r.pitch !== +e.pitch && ((n = !0), (r.pitch = +e.pitch)), null == e.padding || r.isPaddingEqual(e.padding) || (r.padding = e.padding), this.fire(new t.Event('movestart', i)).fire( new t.Event('move', i), ), o && this.fire(new t.Event('zoomstart', i)) .fire(new t.Event('zoom', i)) .fire(new t.Event('zoomend', i)), a && this.fire(new t.Event('rotatestart', i)) .fire(new t.Event('rotate', i)) .fire(new t.Event('rotateend', i)), n && this.fire(new t.Event('pitchstart', i)) .fire(new t.Event('pitch', i)) .fire(new t.Event('pitchend', i)), this.fire(new t.Event('moveend', i)) ); }), (i.prototype.calculateCameraOptionsFromTo = function (e, i, r, o) { void 0 === o && (o = 0); var a = t.MercatorCoordinate.fromLngLat(e, i), n = t.MercatorCoordinate.fromLngLat(r, o), s = n.x - a.x, l = n.y - a.y, c = n.z - a.z, h = Math.hypot(s, l, c); if (0 === h) throw new Error( "Can't calculate camera options with same From and To", ); var u = Math.hypot(s, l), p = this.transform.scaleZoom( this.transform.cameraToCenterDistance / h / this.transform.tileSize, ), d = (180 * Math.atan2(s, -l)) / Math.PI, _ = (180 * Math.acos(u / h)) / Math.PI; return ( (_ = c < 0 ? 90 - _ : 90 + _), { center: n.toLngLat(), zoom: p, pitch: _, bearing: d } ); }), (i.prototype.easeTo = function (e, i) { var r = this; this._stop(!1, e.easeId), (!1 === (e = t.extend( { offset: [0, 0], duration: 500, easing: t.ease }, e, )).animate || (!e.essential && t.exported.prefersReducedMotion)) && (e.duration = 0); var o = this.transform, a = this.getZoom(), n = this.getBearing(), s = this.getPitch(), l = this.getPadding(), c = 'zoom' in e ? +e.zoom : a, h = 'bearing' in e ? this._normalizeBearing(e.bearing, n) : n, u = 'pitch' in e ? +e.pitch : s, p = 'padding' in e ? e.padding : o.padding, d = t.pointGeometry.convert(e.offset), _ = o.centerPoint.add(d), f = o.pointLocation(_), m = t.LngLat.convert(e.center || f); this._normalizeCenter(m); var g, v, y = o.project(f), x = o.project(m).sub(y), b = o.zoomScale(c - a); e.around && ((g = t.LngLat.convert(e.around)), (v = o.locationPoint(g))); var w = { moving: this._moving, zooming: this._zooming, rotating: this._rotating, pitching: this._pitching, }; return ( (this._zooming = this._zooming || c !== a), (this._rotating = this._rotating || n !== h), (this._pitching = this._pitching || u !== s), (this._padding = !o.isPaddingEqual(p)), (this._easeId = e.easeId), this._prepareEase(i, e.noMoveStart, w), this._ease( function (e) { if ( (r._zooming && (o.zoom = t.number(a, c, e)), r._rotating && (o.bearing = t.number(n, h, e)), r._pitching && (o.pitch = t.number(s, u, e)), r._padding && (o.interpolatePadding(l, p, e), (_ = o.centerPoint.add(d))), g) ) o.setLocationAtPoint(g, v); else { var f = o.zoomScale(o.zoom - a), m = c > a ? Math.min(2, b) : Math.max(0.5, b), w = Math.pow(m, 1 - e), T = o.unproject(y.add(x.mult(e * w)).mult(f)); o.setLocationAtPoint(o.renderWorldCopies ? T.wrap() : T, _); } r._fireMoveEvents(i); }, function (t) { r._afterEase(i, t); }, e, ), this ); }), (i.prototype._prepareEase = function (e, i, r) { void 0 === r && (r = {}), (this._moving = !0), this.fire(new t.Event('freezeElevation', { freeze: !0 })), i || r.moving || this.fire(new t.Event('movestart', e)), this._zooming && !r.zooming && this.fire(new t.Event('zoomstart', e)), this._rotating && !r.rotating && this.fire(new t.Event('rotatestart', e)), this._pitching && !r.pitching && this.fire(new t.Event('pitchstart', e)); }), (i.prototype._fireMoveEvents = function (e) { this.fire(new t.Event('move', e)), this._zooming && this.fire(new t.Event('zoom', e)), this._rotating && this.fire(new t.Event('rotate', e)), this._pitching && this.fire(new t.Event('pitch', e)); }), (i.prototype._afterEase = function (e, i) { if (!this._easeId || !i || this._easeId !== i) { delete this._easeId, this.fire(new t.Event('freezeElevation', { freeze: !1 })); var r = this._zooming, o = this._rotating, a = this._pitching; (this._moving = !1), (this._zooming = !1), (this._rotating = !1), (this._pitching = !1), (this._padding = !1), r && this.fire(new t.Event('zoomend', e)), o && this.fire(new t.Event('rotateend', e)), a && this.fire(new t.Event('pitchend', e)), this.fire(new t.Event('moveend', e)); } }), (i.prototype.flyTo = function (e, i) { var r = this; if (!e.essential && t.exported.prefersReducedMotion) { var o = t.pick(e, [ 'center', 'zoom', 'bearing', 'pitch', 'around', ]); return this.jumpTo(o, i); } this.stop(), (e = t.extend( { offset: [0, 0], speed: 1.2, curve: 1.42, easing: t.ease }, e, )); var a = this.transform, n = this.getZoom(), s = this.getBearing(), l = this.getPitch(), c = this.getPadding(), h = 'zoom' in e ? t.clamp(+e.zoom, a.minZoom, a.maxZoom) : n, u = 'bearing' in e ? this._normalizeBearing(e.bearing, s) : s, p = 'pitch' in e ? +e.pitch : l, d = 'padding' in e ? e.padding : a.padding, _ = a.zoomScale(h - n), f = t.pointGeometry.convert(e.offset), m = a.centerPoint.add(f), g = a.pointLocation(m), v = t.LngLat.convert(e.center || g); this._normalizeCenter(v); var y = a.project(g), x = a.project(v).sub(y), b = e.curve, w = Math.max(a.width, a.height), T = w / _, E = x.mag(); if ('minZoom' in e) { var I = t.clamp(Math.min(e.minZoom, n, h), a.minZoom, a.maxZoom), C = w / a.zoomScale(I - n); b = Math.sqrt((C / E) * 2); } var S = b * b; function D(t) { var e = (T * T - w * w + (t ? -1 : 1) * S * S * E * E) / (2 * (t ? T : w) * S * E); return Math.log(Math.sqrt(e * e + 1) - e); } function z(t) { return (Math.exp(t) - Math.exp(-t)) / 2; } function P(t) { return (Math.exp(t) + Math.exp(-t)) / 2; } var M = D(0), A = function (t) { return P(M) / P(M + b * t); }, R = function (t) { return ( (w * ((P(M) * (z((e = M + b * t)) / P(e)) - z(M)) / S)) / E ); var e; }, L = (D(1) - M) / b; if (Math.abs(E) < 1e-6 || !isFinite(L)) { if (Math.abs(w - T) < 1e-6) return this.easeTo(e, i); var k = T < w ? -1 : 1; (L = Math.abs(Math.log(T / w)) / b), (R = function () { return 0; }), (A = function (t) { return Math.exp(k * b * t); }); } return ( (e.duration = 'duration' in e ? +e.duration : (1e3 * L) / ('screenSpeed' in e ? +e.screenSpeed / b : +e.speed)), e.maxDuration && e.duration > e.maxDuration && (e.duration = 0), (this._zooming = !0), (this._rotating = s !== u), (this._pitching = p !== l), (this._padding = !a.isPaddingEqual(d)), this._prepareEase(i, !1), this._ease( function (e) { var o = e * L, _ = 1 / A(o); (a.zoom = 1 === e ? h : n + a.scaleZoom(_)), r._rotating && (a.bearing = t.number(s, u, e)), r._pitching && (a.pitch = t.number(l, p, e)), r._padding && (a.interpolatePadding(c, d, e), (m = a.centerPoint.add(f))); var g = 1 === e ? v : a.unproject(y.add(x.mult(R(o))).mult(_)); a.setLocationAtPoint(a.renderWorldCopies ? g.wrap() : g, m), r._fireMoveEvents(i); }, function () { return r._afterEase(i); }, e, ), this ); }), (i.prototype.isEasing = function () { return !!this._easeFrameId; }), (i.prototype.stop = function () { return this._stop(); }), (i.prototype._stop = function (t, e) { if ( (this._easeFrameId && (this._cancelRenderFrame(this._easeFrameId), delete this._easeFrameId, delete this._onEaseFrame), this._onEaseEnd) ) { var i = this._onEaseEnd; delete this._onEaseEnd, i.call(this, e); } if (!t) { var r = this.handlers; r && r.stop(!1); } return this; }), (i.prototype._ease = function (e, i, r) { !1 === r.animate || 0 === r.duration ? (e(1), i()) : ((this._easeStart = t.exported.now()), (this._easeOptions = r), (this._onEaseFrame = e), (this._onEaseEnd = i), (this._easeFrameId = this._requestRenderFrame( this._renderFrameCallback, ))); }), (i.prototype._renderFrameCallback = function () { var e = Math.min( (t.exported.now() - this._easeStart) / this._easeOptions.duration, 1, ); this._onEaseFrame(this._easeOptions.easing(e)), e < 1 ? (this._easeFrameId = this._requestRenderFrame( this._renderFrameCallback, )) : this.stop(); }), (i.prototype._normalizeBearing = function (e, i) { e = t.wrap(e, -180, 180); var r = Math.abs(e - i); return ( Math.abs(e - 360 - i) < r && (e -= 360), Math.abs(e + 360 - i) < r && (e += 360), e ); }), (i.prototype._normalizeCenter = function (t) { var e = this.transform; if (e.renderWorldCopies && !e.lngRange) { var i = t.lng - e.center.lng; t.lng += i > 180 ? -360 : i < -180 ? 360 : 0; } }), i ); })(t.Evented), Jr = function (e) { void 0 === e && (e = {}), (this.options = e), t.bindAll( [ '_toggleAttribution', '_updateData', '_updateCompact', '_updateCompactMinimize', ], this, ); }; (Jr.prototype.getDefaultPosition = function () { return 'bottom-right'; }), (Jr.prototype.onAdd = function (t) { return ( (this._map = t), (this._compact = this.options && this.options.compact), (this._container = a.create( 'details', 'maplibregl-ctrl maplibregl-ctrl-attrib mapboxgl-ctrl mapboxgl-ctrl-attrib', )), (this._compactButton = a.create( 'summary', 'maplibregl-ctrl-attrib-button mapboxgl-ctrl-attrib-button', this._container, )), this._compactButton.addEventListener( 'click', this._toggleAttribution, ), this._setElementTitle(this._compactButton, 'ToggleAttribution'), (this._innerContainer = a.create( 'div', 'maplibregl-ctrl-attrib-inner mapboxgl-ctrl-attrib-inner', this._container, )), this._updateAttributions(), this._updateCompact(), this._map.on('styledata', this._updateData), this._map.on('sourcedata', this._updateData), this._map.on('terrain', this._updateData), this._map.on('resize', this._updateCompact), this._map.on('drag', this._updateCompactMinimize), this._container ); }), (Jr.prototype.onRemove = function () { a.remove(this._container), this._map.off('styledata', this._updateData), this._map.off('sourcedata', this._updateData), this._map.off('terrain', this._updateData), this._map.off('resize', this._updateCompact), this._map.off('drag', this._updateCompactMinimize), (this._map = void 0), (this._compact = void 0), (this._attribHTML = void 0); }), (Jr.prototype._setElementTitle = function (t, e) { var i = this._map._getUIString('AttributionControl.' + e); (t.title = i), t.setAttribute('aria-label', i); }), (Jr.prototype._toggleAttribution = function () { this._container.classList.contains('maplibregl-compact') && (this._container.classList.contains('maplibregl-compact-show') ? (this._container.setAttribute('open', ''), this._container.classList.remove( 'maplibregl-compact-show', 'mapboxgl-compact-show', )) : (this._container.classList.add( 'maplibregl-compact-show', 'mapboxgl-compact-show', ), this._container.removeAttribute('open'))); }), (Jr.prototype._updateData = function (t) { !t || ('metadata' !== t.sourceDataType && 'visibility' !== t.sourceDataType && 'style' !== t.dataType && 'terrain' !== t.type) || this._updateAttributions(); }), (Jr.prototype._updateAttributions = function () { if (this._map.style) { var t = []; if ( (this.options.customAttribution && (Array.isArray(this.options.customAttribution) ? (t = t.concat( this.options.customAttribution.map(function (t) { return 'string' != typeof t ? '' : t; }), )) : 'string' == typeof this.options.customAttribution && t.push(this.options.customAttribution)), this._map.style.stylesheet) ) { var e = this._map.style.stylesheet; (this.styleOwner = e.owner), (this.styleId = e.id); } var i = this._map.style.sourceCaches; for (var r in i) { var o = i[r]; if (o.used || o.usedForTerrain) { var a = o.getSource(); a.attribution && t.indexOf(a.attribution) < 0 && t.push(a.attribution); } } (t = t.filter(function (t) { return String(t).trim(); })).sort(function (t, e) { return t.length - e.length; }); var n = (t = t.filter(function (e, i) { for (var r = i + 1; r < t.length; r++) if (t[r].indexOf(e) >= 0) return !1; return !0; })).join(' | '); n !== this._attribHTML && ((this._attribHTML = n), t.length ? ((this._innerContainer.innerHTML = n), this._container.classList.remove( 'maplibregl-attrib-empty', 'mapboxgl-attrib-empty', )) : this._container.classList.add( 'maplibregl-attrib-empty', 'mapboxgl-attrib-empty', ), this._updateCompact(), (this._editLink = null)); } }), (Jr.prototype._updateCompact = function () { this._map.getCanvasContainer().offsetWidth <= 640 || this._compact ? !1 === this._compact ? this._container.setAttribute('open', '') : this._container.classList.contains('maplibregl-compact') || this._container.classList.contains('maplibregl-attrib-empty') || (this._container.setAttribute('open', ''), this._container.classList.add( 'maplibregl-compact', 'mapboxgl-compact', 'maplibregl-compact-show', 'mapboxgl-compact-show', )) : (this._container.setAttribute('open', ''), this._container.classList.contains('maplibregl-compact') && this._container.classList.remove( 'maplibregl-compact', 'maplibregl-compact-show', 'mapboxgl-compact', 'mapboxgl-compact-show', )); }), (Jr.prototype._updateCompactMinimize = function () { this._container.classList.contains('maplibregl-compact') && this._container.classList.contains('maplibregl-compact-show') && this._container.classList.remove( 'maplibregl-compact-show', 'mapboxgl-compact-show', ); }); var Qr = function (e) { void 0 === e && (e = {}), (this.options = e), t.bindAll(['_updateCompact'], this); }; (Qr.prototype.getDefaultPosition = function () { return 'bottom-left'; }), (Qr.prototype.onAdd = function (t) { (this._map = t), (this._compact = this.options && this.options.compact), (this._container = a.create('div', 'maplibregl-ctrl mapboxgl-ctrl')); var e = a.create('a', 'maplibregl-ctrl-logo mapboxgl-ctrl-logo'); return ( (e.target = '_blank'), (e.rel = 'noopener nofollow'), (e.href = 'https://maplibre.org/'), e.setAttribute( 'aria-label', this._map._getUIString('LogoControl.Title'), ), e.setAttribute('rel', 'noopener nofollow'), this._container.appendChild(e), (this._container.style.display = 'block'), this._map.on('resize', this._updateCompact), this._updateCompact(), this._container ); }), (Qr.prototype.onRemove = function () { a.remove(this._container), this._map.off('resize', this._updateCompact), (this._map = void 0), (this._compact = void 0); }), (Qr.prototype._updateCompact = function () { var t = this._container.children; if (t.length) { var e = t[0]; this._map.getCanvasContainer().offsetWidth <= 640 || this._compact ? !1 !== this._compact && e.classList.add('maplibregl-compact', 'mapboxgl-compact') : e.classList.remove('maplibregl-compact', 'mapboxgl-compact'); } }); var $r = function () { (this._queue = []), (this._id = 0), (this._cleared = !1), (this._currentlyRunning = !1); }; ($r.prototype.add = function (t) { var e = ++this._id; return this._queue.push({ callback: t, id: e, cancelled: !1 }), e; }), ($r.prototype.remove = function (t) { for ( var e = this._currentlyRunning, i = 0, r = e ? this._queue.concat(e) : this._queue; i < r.length; i += 1 ) { var o = r[i]; if (o.id === t) return void (o.cancelled = !0); } }), ($r.prototype.run = function (t) { if ((void 0 === t && (t = 0), this._currentlyRunning)) throw new Error('Attempting to run(), but is already running.'); var e = (this._currentlyRunning = this._queue); this._queue = []; for (var i = 0, r = e; i < r.length; i += 1) { var o = r[i]; if (!o.cancelled && (o.callback(t), this._cleared)) break; } (this._cleared = !1), (this._currentlyRunning = !1); }), ($r.prototype.clear = function () { this._currentlyRunning && (this._cleared = !0), (this._queue = []); }); var to = { 'AttributionControl.ToggleAttribution': 'Toggle attribution', 'AttributionControl.MapFeedback': 'Map feedback', 'FullscreenControl.Enter': 'Enter fullscreen', 'FullscreenControl.Exit': 'Exit fullscreen', 'GeolocateControl.FindMyLocation': 'Find my location', 'GeolocateControl.LocationNotAvailable': 'Location not available', 'LogoControl.Title': 'Mapbox logo', 'NavigationControl.ResetBearing': 'Reset bearing to north', 'NavigationControl.ZoomIn': 'Zoom in', 'NavigationControl.ZoomOut': 'Zoom out', 'ScaleControl.Feet': 'ft', 'ScaleControl.Meters': 'm', 'ScaleControl.Kilometers': 'km', 'ScaleControl.Miles': 'mi', 'ScaleControl.NauticalMiles': 'nm', 'TerrainControl.enableTerrain': 'Enable terrain', 'TerrainControl.disableTerrain': 'Disable terrain', }, eo = { center: [0, 0], zoom: 0, bearing: 0, pitch: 0, minZoom: -2, maxZoom: 22, minPitch: 0, maxPitch: 60, interactive: !0, scrollZoom: !0, boxZoom: !0, dragRotate: !0, dragPan: !0, keyboard: !0, doubleClickZoom: !0, touchZoomRotate: !0, touchPitch: !0, cooperativeGestures: void 0, bearingSnap: 7, clickTolerance: 3, pitchWithRotate: !0, hash: !1, attributionControl: !0, maplibreLogo: !1, failIfMajorPerformanceCaveat: !1, preserveDrawingBuffer: !1, trackResize: !0, renderWorldCopies: !0, refreshExpiredTiles: !0, maxTileCacheSize: null, localIdeographFontFamily: 'sans-serif', transformRequest: null, fadeDuration: 300, crossSourceCollisions: !0, }, io = (function (i) { function r(e) { var r, o = this; if ( (t.PerformanceUtils.mark(t.PerformanceMarkers.create), null != (e = t.extend({}, eo, e)).minZoom && null != e.maxZoom && e.minZoom > e.maxZoom) ) throw new Error('maxZoom must be greater than or equal to minZoom'); if ( null != e.minPitch && null != e.maxPitch && e.minPitch > e.maxPitch ) throw new Error( 'maxPitch must be greater than or equal to minPitch', ); if (null != e.minPitch && e.minPitch < 0) throw new Error('minPitch must be greater than or equal to 0'); if (null != e.maxPitch && e.maxPitch > 85) throw new Error('maxPitch must be less than or equal to 85'); var a = new tr( e.minZoom, e.maxZoom, e.minPitch, e.maxPitch, e.renderWorldCopies, ); if ( (i.call(this, a, { bearingSnap: e.bearingSnap }), (this._interactive = e.interactive), (this._cooperativeGestures = e.cooperativeGestures), (this._maxTileCacheSize = e.maxTileCacheSize), (this._failIfMajorPerformanceCaveat = e.failIfMajorPerformanceCaveat), (this._preserveDrawingBuffer = e.preserveDrawingBuffer), (this._antialias = e.antialias), (this._trackResize = e.trackResize), (this._bearingSnap = e.bearingSnap), (this._refreshExpiredTiles = e.refreshExpiredTiles), (this._fadeDuration = e.fadeDuration), (this._crossSourceCollisions = e.crossSourceCollisions), (this._crossFadingFactor = 1), (this._collectResourceTiming = e.collectResourceTiming), (this._renderTaskQueue = new $r()), (this._controls = []), (this._mapId = t.uniqueId()), (this._locale = t.extend({}, to, e.locale)), (this._clickTolerance = e.clickTolerance), (this._pixelRatio = null !== (r = e.pixelRatio) && void 0 !== r ? r : devicePixelRatio), (this._requestManager = new n(e.transformRequest)), 'string' == typeof e.container) ) { if ( ((this._container = document.getElementById(e.container)), !this._container) ) throw new Error("Container '" + e.container + "' not found."); } else { if (!(e.container instanceof HTMLElement)) throw new Error( "Invalid type: 'container' must be a String or HTMLElement.", ); this._container = e.container; } if ( (e.maxBounds && this.setMaxBounds(e.maxBounds), t.bindAll( [ '_onWindowOnline', '_onWindowResize', '_onMapScroll', '_contextLost', '_contextRestored', ], this, ), this._setupContainer(), this._setupPainter(), void 0 === this.painter) ) throw new Error('Failed to initialize WebGL.'); this.on('move', function () { return o._update(!1); }), this.on('moveend', function () { return o._update(!1); }), this.on('zoom', function () { return o._update(!0); }), this.on('terrain', function () { (o.painter.terrainFacilitator.dirty = !0), o._update(!0); }), 'undefined' != typeof window && (addEventListener('online', this._onWindowOnline, !1), addEventListener('resize', this._onWindowResize, !1), addEventListener('orientationchange', this._onWindowResize, !1)), (this.handlers = new Kr(this, e)), this._cooperativeGestures && this._setupCooperativeGestures(), (this._hash = e.hash && new ir(('string' == typeof e.hash && e.hash) || void 0).addTo( this, )), (this._hash && this._hash._onHashChange()) || (this.jumpTo({ center: e.center, zoom: e.zoom, bearing: e.bearing, pitch: e.pitch, }), e.bounds && (this.resize(), this.fitBounds( e.bounds, t.extend({}, e.fitBoundsOptions, { duration: 0 }), ))), this.resize(), (this._localIdeographFontFamily = e.localIdeographFontFamily), e.style && this.setStyle(e.style, { localIdeographFontFamily: e.localIdeographFontFamily, }), e.attributionControl && this.addControl( new Jr({ customAttribution: e.customAttribution }), ), e.maplibreLogo && this.addControl(new Qr(), e.logoPosition), this.on('style.load', function () { o.transform.unmodified && o.jumpTo(o.style.stylesheet); }), this.on('data', function (e) { o._update('style' === e.dataType), o.fire(new t.Event(e.dataType + 'data', e)); }), this.on('dataloading', function (e) { o.fire(new t.Event(e.dataType + 'dataloading', e)); }), this.on('dataabort', function (e) { o.fire(new t.Event('sourcedataabort', e)); }); } i && (r.__proto__ = i), ((r.prototype = Object.create(i && i.prototype)).constructor = r); var o = { showTileBoundaries: { configurable: !0 }, showPadding: { configurable: !0 }, showCollisionBoxes: { configurable: !0 }, showOverdrawInspector: { configurable: !0 }, repaint: { configurable: !0 }, vertices: { configurable: !0 }, version: { configurable: !0 }, }; return ( (r.prototype._getMapId = function () { return this._mapId; }), (r.prototype.addControl = function (e, i) { if ( (void 0 === i && (i = e.getDefaultPosition ? e.getDefaultPosition() : 'top-right'), !e || !e.onAdd) ) return this.fire( new t.ErrorEvent( new Error( 'Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.', ), ), ); var r = e.onAdd(this); this._controls.push(e); var o = this._controlPositions[i]; return ( -1 !== i.indexOf('bottom') ? o.insertBefore(r, o.firstChild) : o.appendChild(r), this ); }), (r.prototype.removeControl = function (e) { if (!e || !e.onRemove) return this.fire( new t.ErrorEvent( new Error( 'Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.', ), ), ); var i = this._controls.indexOf(e); return ( i > -1 && this._controls.splice(i, 1), e.onRemove(this), this ); }), (r.prototype.hasControl = function (t) { return this._controls.indexOf(t) > -1; }), (r.prototype.calculateCameraOptionsFromTo = function (t, e, r, o) { return ( null == o && this.style.terrain && (o = this.transform.getElevation(r, this.style.terrain)), i.prototype.calculateCameraOptionsFromTo.call(this, t, e, r, o) ); }), (r.prototype.resize = function (e) { var i = this._containerDimensions(), r = i[0], o = i[1]; this._resizeCanvas(r, o, this.getPixelRatio()), this.transform.resize(r, o), this.painter.resize(r, o, this.getPixelRatio()); var a = !this._moving; return ( a && (this.stop(), this.fire(new t.Event('movestart', e)).fire( new t.Event('move', e), )), this.fire(new t.Event('resize', e)), a && this.fire(new t.Event('moveend', e)), this ); }), (r.prototype.getPixelRatio = function () { return this._pixelRatio; }), (r.prototype.setPixelRatio = function (t) { var e = this._containerDimensions(), i = e[0], r = e[1]; (this._pixelRatio = t), this._resizeCanvas(i, r, t), this.painter.resize(i, r, t); }), (r.prototype.getBounds = function () { return this.transform.getBounds(); }), (r.prototype.getMaxBounds = function () { return this.transform.getMaxBounds(); }), (r.prototype.setMaxBounds = function (e) { return ( this.transform.setMaxBounds(t.LngLatBounds.convert(e)), this._update() ); }), (r.prototype.setMinZoom = function (t) { if ((t = null == t ? -2 : t) >= -2 && t <= this.transform.maxZoom) return ( (this.transform.minZoom = t), this._update(), this.getZoom() < t && this.setZoom(t), this ); throw new Error( 'minZoom must be between -2 and the current maxZoom, inclusive', ); }), (r.prototype.getMinZoom = function () { return this.transform.minZoom; }), (r.prototype.setMaxZoom = function (t) { if ((t = null == t ? 22 : t) >= this.transform.minZoom) return ( (this.transform.maxZoom = t), this._update(), this.getZoom() > t && this.setZoom(t), this ); throw new Error('maxZoom must be greater than the current minZoom'); }), (r.prototype.getMaxZoom = function () { return this.transform.maxZoom; }), (r.prototype.setMinPitch = function (t) { if ((t = null == t ? 0 : t) < 0) throw new Error('minPitch must be greater than or equal to 0'); if (t >= 0 && t <= this.transform.maxPitch) return ( (this.transform.minPitch = t), this._update(), this.getPitch() < t && this.setPitch(t), this ); throw new Error( 'minPitch must be between 0 and the current maxPitch, inclusive', ); }), (r.prototype.getMinPitch = function () { return this.transform.minPitch; }), (r.prototype.setMaxPitch = function (t) { if ((t = null == t ? 60 : t) > 85) throw new Error('maxPitch must be less than or equal to 85'); if (t >= this.transform.minPitch) return ( (this.transform.maxPitch = t), this._update(), this.getPitch() > t && this.setPitch(t), this ); throw new Error( 'maxPitch must be greater than the current minPitch', ); }), (r.prototype.getMaxPitch = function () { return this.transform.maxPitch; }), (r.prototype.getRenderWorldCopies = function () { return this.transform.renderWorldCopies; }), (r.prototype.setRenderWorldCopies = function (t) { return (this.transform.renderWorldCopies = t), this._update(); }), (r.prototype.project = function (e) { return this.transform.locationPoint( t.LngLat.convert(e), this.style && this.style.terrain, ); }), (r.prototype.unproject = function (e) { return this.transform.pointLocation( t.pointGeometry.convert(e), this.style && this.style.terrain, ); }), (r.prototype.isMoving = function () { return this._moving || this.handlers.isMoving(); }), (r.prototype.isZooming = function () { return this._zooming || this.handlers.isZooming(); }), (r.prototype.isRotating = function () { return this._rotating || this.handlers.isRotating(); }), (r.prototype._createDelegatedListener = function (t, e, i) { var r, o = this; if ('mouseenter' === t || 'mouseover' === t) { var a = !1; return { layer: e, listener: i, delegates: { mousemove: function (r) { var n = o.getLayer(e) ? o.queryRenderedFeatures(r.point, { layers: [e] }) : []; n.length ? a || ((a = !0), i.call( o, new ur(t, o, r.originalEvent, { features: n }), )) : (a = !1); }, mouseout: function () { a = !1; }, }, }; } if ('mouseleave' === t || 'mouseout' === t) { var n = !1; return { layer: e, listener: i, delegates: { mousemove: function (r) { (o.getLayer(e) ? o.queryRenderedFeatures(r.point, { layers: [e] }) : [] ).length ? (n = !0) : n && ((n = !1), i.call(o, new ur(t, o, r.originalEvent))); }, mouseout: function (e) { n && ((n = !1), i.call(o, new ur(t, o, e.originalEvent))); }, }, }; } return { layer: e, listener: i, delegates: ((r = {}), (r[t] = function (t) { var r = o.getLayer(e) ? o.queryRenderedFeatures(t.point, { layers: [e] }) : []; r.length && ((t.features = r), i.call(o, t), delete t.features); }), r), }; }), (r.prototype.on = function (t, e, r) { if (void 0 === r) return i.prototype.on.call(this, t, e); var o = this._createDelegatedListener(t, e, r); for (var a in ((this._delegatedListeners = this._delegatedListeners || {}), (this._delegatedListeners[t] = this._delegatedListeners[t] || []), this._delegatedListeners[t].push(o), o.delegates)) this.on(a, o.delegates[a]); return this; }), (r.prototype.once = function (t, e, r) { if (void 0 === r) return i.prototype.once.call(this, t, e); var o = this._createDelegatedListener(t, e, r); for (var a in o.delegates) this.once(a, o.delegates[a]); return this; }), (r.prototype.off = function (t, e, r) { var o = this; return void 0 === r ? i.prototype.off.call(this, t, e) : (this._delegatedListeners && this._delegatedListeners[t] && (function (i) { for (var a = i[t], n = 0; n < a.length; n++) { var s = a[n]; if (s.layer === e && s.listener === r) { for (var l in s.delegates) o.off(l, s.delegates[l]); return a.splice(n, 1), o; } } })(this._delegatedListeners), this); }), (r.prototype.queryRenderedFeatures = function (e, i) { if (!this.style) return []; var r; if ( (void 0 !== i || void 0 === e || e instanceof t.pointGeometry || Array.isArray(e) || ((i = e), (e = void 0)), (i = i || {}), (e = e || [ [0, 0], [this.transform.width, this.transform.height], ]) instanceof t.pointGeometry || 'number' == typeof e[0]) ) r = [t.pointGeometry.convert(e)]; else { var o = t.pointGeometry.convert(e[0]), a = t.pointGeometry.convert(e[1]); r = [ o, new t.pointGeometry(a.x, o.y), a, new t.pointGeometry(o.x, a.y), o, ]; } return this.style.queryRenderedFeatures(r, i, this.transform); }), (r.prototype.querySourceFeatures = function (t, e) { return this.style.querySourceFeatures(t, e); }), (r.prototype.setStyle = function (e, i) { return !1 !== (i = t.extend( {}, { localIdeographFontFamily: this._localIdeographFontFamily }, i, )).diff && i.localIdeographFontFamily === this._localIdeographFontFamily && this.style && e ? (this._diffStyle(e, i), this) : ((this._localIdeographFontFamily = i.localIdeographFontFamily), this._updateStyle(e, i)); }), (r.prototype.setTransformRequest = function (t) { return this._requestManager.setTransformRequest(t), this; }), (r.prototype._getUIString = function (t) { var e = this._locale[t]; if (null == e) throw new Error("Missing UI string '" + t + "'"); return e; }), (r.prototype._updateStyle = function (t, e) { return ( this.style && (this.style.setEventedParent(null), this.style._remove()), t ? ((this.style = new ie(this, e || {})), this.style.setEventedParent(this, { style: this.style }), 'string' == typeof t ? this.style.loadURL(t) : this.style.loadJSON(t), this) : (delete this.style, this) ); }), (r.prototype._lazyInitEmptyStyle = function () { this.style || ((this.style = new ie(this, {})), this.style.setEventedParent(this, { style: this.style }), this.style.loadEmpty()); }), (r.prototype._diffStyle = function (e, i) { var r = this; if ('string' == typeof e) { var o = this._requestManager.transformRequest( e, t.ResourceType.Style, ); t.getJSON(o, function (e, o) { e ? r.fire(new t.ErrorEvent(e)) : o && r._updateDiff(o, i); }); } else 'object' == typeof e && this._updateDiff(e, i); }), (r.prototype._updateDiff = function (e, i) { try { this.style.setState(e) && this._update(!0); } catch (r) { t.warnOnce( 'Unable to perform style diff: ' + (r.message || r.error || r) + '. Rebuilding the style from scratch.', ), this._updateStyle(e, i); } }), (r.prototype.getStyle = function () { if (this.style) return this.style.serialize(); }), (r.prototype.isStyleLoaded = function () { return this.style ? this.style.loaded() : t.warnOnce('There is no style added to the map.'); }), (r.prototype.addSource = function (t, e) { return ( this._lazyInitEmptyStyle(), this.style.addSource(t, e), this._update(!0) ); }), (r.prototype.isSourceLoaded = function (e) { var i = this.style && this.style.sourceCaches[e]; if (void 0 !== i) return i.loaded(); this.fire( new t.ErrorEvent( new Error("There is no source with ID '" + e + "'"), ), ); }), (r.prototype.setTerrain = function (t) { return this.style.setTerrain(t), this; }), (r.prototype.getTerrain = function () { return this.style.terrain && this.style.terrain.options; }), (r.prototype.areTilesLoaded = function () { var t = this.style && this.style.sourceCaches; for (var e in t) { var i = t[e]._tiles; for (var r in i) { var o = i[r]; if ('loaded' !== o.state && 'errored' !== o.state) return !1; } } return !0; }), (r.prototype.addSourceType = function (t, e, i) { return ( this._lazyInitEmptyStyle(), this.style.addSourceType(t, e, i) ); }), (r.prototype.removeSource = function (t) { return this.style.removeSource(t), this._update(!0); }), (r.prototype.getSource = function (t) { return this.style.getSource(t); }), (r.prototype.addImage = function (e, i, r) { void 0 === r && (r = {}); var o = r.pixelRatio; void 0 === o && (o = 1); var a = r.sdf; void 0 === a && (a = !1); var n = r.stretchX, s = r.stretchY, l = r.content; if ( (this._lazyInitEmptyStyle(), i instanceof HTMLImageElement || t.isImageBitmap(i)) ) { var c = t.exported.getImageData(i); this.style.addImage(e, { data: new t.RGBAImage( { width: c.width, height: c.height }, c.data, ), pixelRatio: o, stretchX: n, stretchY: s, content: l, sdf: a, version: 0, }); } else { if (void 0 === i.width || void 0 === i.height) return this.fire( new t.ErrorEvent( 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`', ), ), ); var h = i; this.style.addImage(e, { data: new t.RGBAImage( { width: i.width, height: i.height }, new Uint8Array(i.data), ), pixelRatio: o, stretchX: n, stretchY: s, content: l, sdf: a, version: 0, userImage: h, }), h.onAdd && h.onAdd(this, e); } }), (r.prototype.updateImage = function (e, i) { var r = this.style.getImage(e); if (!r) return this.fire( new t.ErrorEvent( new Error( 'The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.', ), ), ); var o = i instanceof HTMLImageElement || t.isImageBitmap(i) ? t.exported.getImageData(i) : i, a = o.width, n = o.height, s = o.data; if (void 0 === a || void 0 === n) return this.fire( new t.ErrorEvent( 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 (a !== r.data.width || n !== r.data.height) return this.fire( new t.ErrorEvent( new Error( 'The width and height of the updated image must be that same as the previous version of the image', ), ), ); var l = !(i instanceof HTMLImageElement || t.isImageBitmap(i)); r.data.replace(s, l), this.style.updateImage(e, r); }), (r.prototype.hasImage = function (e) { return e ? !!this.style.getImage(e) : (this.fire( new t.ErrorEvent(new Error('Missing required image id')), ), !1); }), (r.prototype.removeImage = function (t) { this.style.removeImage(t); }), (r.prototype.loadImage = function (e, i) { t.getImage( this._requestManager.transformRequest(e, t.ResourceType.Image), i, ); }), (r.prototype.listImages = function () { return this.style.listImages(); }), (r.prototype.addLayer = function (t, e) { return ( this._lazyInitEmptyStyle(), this.style.addLayer(t, e), this._update(!0) ); }), (r.prototype.moveLayer = function (t, e) { return this.style.moveLayer(t, e), this._update(!0); }), (r.prototype.removeLayer = function (t) { return this.style.removeLayer(t), this._update(!0); }), (r.prototype.getLayer = function (t) { return this.style.getLayer(t); }), (r.prototype.setLayerZoomRange = function (t, e, i) { return this.style.setLayerZoomRange(t, e, i), this._update(!0); }), (r.prototype.setFilter = function (t, e, i) { return ( void 0 === i && (i = {}), this.style.setFilter(t, e, i), this._update(!0) ); }), (r.prototype.getFilter = function (t) { return this.style.getFilter(t); }), (r.prototype.setPaintProperty = function (t, e, i, r) { return ( void 0 === r && (r = {}), this.style.setPaintProperty(t, e, i, r), this._update(!0) ); }), (r.prototype.getPaintProperty = function (t, e) { return this.style.getPaintProperty(t, e); }), (r.prototype.setLayoutProperty = function (t, e, i, r) { return ( void 0 === r && (r = {}), this.style.setLayoutProperty(t, e, i, r), this._update(!0) ); }), (r.prototype.getLayoutProperty = function (t, e) { return this.style.getLayoutProperty(t, e); }), (r.prototype.setLight = function (t, e) { return ( void 0 === e && (e = {}), this._lazyInitEmptyStyle(), this.style.setLight(t, e), this._update(!0) ); }), (r.prototype.getLight = function () { return this.style.getLight(); }), (r.prototype.setFeatureState = function (t, e) { return this.style.setFeatureState(t, e), this._update(); }), (r.prototype.removeFeatureState = function (t, e) { return this.style.removeFeatureState(t, e), this._update(); }), (r.prototype.getFeatureState = function (t) { return this.style.getFeatureState(t); }), (r.prototype.getContainer = function () { return this._container; }), (r.prototype.getCanvasContainer = function () { return this._canvasContainer; }), (r.prototype.getCanvas = function () { return this._canvas; }), (r.prototype._containerDimensions = function () { var t = 0, e = 0; return ( this._container && ((t = this._container.clientWidth || 400), (e = this._container.clientHeight || 300)), [t, e] ); }), (r.prototype._setupContainer = function () { var t = this._container; t.classList.add('maplibregl-map', 'mapboxgl-map'); var e = (this._canvasContainer = a.create( 'div', 'maplibregl-canvas-container mapboxgl-canvas-container', t, )); this._interactive && e.classList.add('maplibregl-interactive', 'mapboxgl-interactive'), (this._canvas = a.create( 'canvas', 'maplibregl-canvas mapboxgl-canvas', e, )), this._canvas.addEventListener( 'webglcontextlost', this._contextLost, !1, ), this._canvas.addEventListener( 'webglcontextrestored', this._contextRestored, !1, ), this._canvas.setAttribute('tabindex', '0'), this._canvas.setAttribute('aria-label', 'Map'), this._canvas.setAttribute('role', 'region'); var i = this._containerDimensions(); this._resizeCanvas(i[0], i[1], this.getPixelRatio()); var r = (this._controlContainer = a.create( 'div', 'maplibregl-control-container mapboxgl-control-container', t, )), o = (this._controlPositions = {}); ['top-left', 'top-right', 'bottom-left', 'bottom-right'].forEach( function (t) { o[t] = a.create( 'div', 'maplibregl-ctrl-' + t + ' mapboxgl-ctrl-' + t, r, ); }, ), this._container.addEventListener('scroll', this._onMapScroll, !1); }), (r.prototype._setupCooperativeGestures = function () { var t = this, e = this._container; (this._metaPress = !1), (this._cooperativeGesturesScreen = a.create( 'div', 'maplibregl-cooperative-gesture-screen', e, )); var i = 'Control', r = 'boolean' != typeof this._cooperativeGestures && this._cooperativeGestures.windowsHelpText ? this._cooperativeGestures.windowsHelpText : 'Use Ctrl + scroll to zoom the map'; 0 === navigator.platform.indexOf('Mac') && ((r = 'boolean' != typeof this._cooperativeGestures && this._cooperativeGestures.macHelpText ? this._cooperativeGestures.macHelpText : 'Use ⌘ + scroll to zoom the map'), (i = 'Meta')), (this._cooperativeGesturesScreen.innerHTML = '\n
' + r + '
\n
' + ('boolean' != typeof this._cooperativeGestures && this._cooperativeGestures.mobileHelpText ? this._cooperativeGestures.mobileHelpText : 'Use two fingers to move the map') + '
\n '), document.addEventListener('keydown', function (e) { e.key === i && (t._metaPress = !0); }), document.addEventListener('keyup', function (e) { e.key === i && (t._metaPress = !1); }), this._canvasContainer.addEventListener( 'wheel', function (e) { t._onCooperativeGesture(e, t._metaPress, 1); }, !1, ), this._canvasContainer.classList.remove( 'mapboxgl-touch-drag-pan', 'maplibregl-touch-drag-pan', ); }), (r.prototype._resizeCanvas = function (t, e, i) { (this._canvas.width = i * t), (this._canvas.height = i * e), (this._canvas.style.width = t + 'px'), (this._canvas.style.height = e + 'px'); }), (r.prototype._setupPainter = function () { var i = t.extend({}, e.webGLContextAttributes, { failIfMajorPerformanceCaveat: this._failIfMajorPerformanceCaveat, preserveDrawingBuffer: this._preserveDrawingBuffer, antialias: this._antialias || !1, }), r = this._canvas.getContext('webgl', i) || this._canvas.getContext('experimental-webgl', i); r ? ((this.painter = new Yi(r, this.transform)), t.exported$1.testSupport(r)) : this.fire( new t.ErrorEvent(new Error('Failed to initialize WebGL')), ); }), (r.prototype._contextLost = function (e) { e.preventDefault(), this._frame && (this._frame.cancel(), (this._frame = null)), this.fire(new t.Event('webglcontextlost', { originalEvent: e })); }), (r.prototype._contextRestored = function (e) { this._setupPainter(), this.resize(), this._update(), this.fire( new t.Event('webglcontextrestored', { originalEvent: e }), ); }), (r.prototype._onMapScroll = function (t) { if (t.target === this._container) return ( (this._container.scrollTop = 0), (this._container.scrollLeft = 0), !1 ); }), (r.prototype._onCooperativeGesture = function (t, e, i) { var r = this; return ( !e && i < 2 && (this._cooperativeGesturesScreen.classList.add( 'maplibregl-show', ), setTimeout(function () { r._cooperativeGesturesScreen.classList.remove( 'maplibregl-show', ); }, 100)), !1 ); }), (r.prototype.loaded = function () { return ( !this._styleDirty && !this._sourcesDirty && !!this.style && this.style.loaded() ); }), (r.prototype._update = function (t) { return this.style ? ((this._styleDirty = this._styleDirty || t), (this._sourcesDirty = !0), this.triggerRepaint(), this) : this; }), (r.prototype._requestRenderFrame = function (t) { return this._update(), this._renderTaskQueue.add(t); }), (r.prototype._cancelRenderFrame = function (t) { this._renderTaskQueue.remove(t); }), (r.prototype._render = function (e) { var i, r = this, o = 0, a = this.painter.context.extTimerQuery; if ( (this.listens('gpu-timing-frame') && ((i = a.createQueryEXT()), a.beginQueryEXT(a.TIME_ELAPSED_EXT, i), (o = t.exported.now())), this.painter.context.setDirty(), this.painter.setBaseState(), this._renderTaskQueue.run(e), !this._removed) ) { var n = !1; if (this.style && this._styleDirty) { this._styleDirty = !1; var s = this.transform.zoom, l = t.exported.now(); this.style.zoomHistory.update(s, l); var c = new t.EvaluationParameters(s, { now: l, fadeDuration: this._fadeDuration, zoomHistory: this.style.zoomHistory, transition: this.style.getTransition(), }), h = c.crossFadingFactor(); (1 === h && h === this._crossFadingFactor) || ((n = !0), (this._crossFadingFactor = h)), this.style.update(c); } if ( (this.style && this._sourcesDirty && ((this._sourcesDirty = !1), this.style._updateSources(this.transform)), this.style.terrain && this.style.terrain.sourceCache.update( this.transform, this.style.terrain, ), this.transform.updateElevation(this.style.terrain), (this._placementDirty = this.style && this.style._updatePlacement( this.painter.transform, this.showCollisionBoxes, this._fadeDuration, this._crossSourceCollisions, )), this.painter.render(this.style, { showTileBoundaries: this.showTileBoundaries, showOverdrawInspector: this._showOverdrawInspector, rotating: this.isRotating(), zooming: this.isZooming(), moving: this.isMoving(), fadeDuration: this._fadeDuration, showPadding: this.showPadding, gpuTiming: !!this.listens('gpu-timing-layer'), }), this.fire(new t.Event('render')), this.loaded() && !this._loaded && ((this._loaded = !0), t.PerformanceUtils.mark(t.PerformanceMarkers.load), this.fire(new t.Event('load'))), this.style && (this.style.hasTransitions() || n) && (this._styleDirty = !0), this.style && !this._placementDirty && this.style._releaseSymbolFadeTiles(), this.listens('gpu-timing-frame')) ) { var u = t.exported.now() - o; a.endQueryEXT(a.TIME_ELAPSED_EXT, i), setTimeout(function () { var e = a.getQueryObjectEXT(i, a.QUERY_RESULT_EXT) / 1e6; a.deleteQueryEXT(i), r.fire( new t.Event('gpu-timing-frame', { cpuTime: u, gpuTime: e, }), ); }, 50); } if (this.listens('gpu-timing-layer')) { var p = this.painter.collectGpuTimers(); setTimeout(function () { var e = r.painter.queryGpuTimers(p); r.fire(new t.Event('gpu-timing-layer', { layerTimes: e })); }, 50); } var d = this._sourcesDirty || this._styleDirty || this._placementDirty; return ( d || this._repaint ? this.triggerRepaint() : !this.isMoving() && this.loaded() && this.fire(new t.Event('idle')), !this._loaded || this._fullyLoaded || d || ((this._fullyLoaded = !0), t.PerformanceUtils.mark(t.PerformanceMarkers.fullLoad)), this ); } }), (r.prototype.redraw = function () { return ( this.style && (this._frame && (this._frame.cancel(), (this._frame = null)), this._render(0)), this ); }), (r.prototype.remove = function () { this._hash && this._hash.remove(); for (var e = 0, i = this._controls; e < i.length; e += 1) i[e].onRemove(this); (this._controls = []), this._frame && (this._frame.cancel(), (this._frame = null)), this._renderTaskQueue.clear(), this.painter.destroy(), this.handlers.destroy(), delete this.handlers, this.setStyle(null), 'undefined' != typeof window && (removeEventListener('resize', this._onWindowResize, !1), removeEventListener( 'orientationchange', this._onWindowResize, !1, ), removeEventListener('online', this._onWindowOnline, !1)); var r = this.painter.context.gl.getExtension('WEBGL_lose_context'); r && r.loseContext(), this._canvas.removeEventListener( 'webglcontextrestored', this._contextRestored, !1, ), this._canvas.removeEventListener( 'webglcontextlost', this._contextLost, !1, ), a.remove(this._canvasContainer), a.remove(this._controlContainer), this._cooperativeGestures && a.remove(this._cooperativeGesturesScreen), this._container.classList.remove( 'maplibregl-map', 'mapboxgl-map', ), t.PerformanceUtils.clearMetrics(), (this._removed = !0), this.fire(new t.Event('remove')); }), (r.prototype.triggerRepaint = function () { var e = this; this.style && !this._frame && (this._frame = t.exported.frame(function (i) { t.PerformanceUtils.frame(i), (e._frame = null), e._render(i); })); }), (r.prototype._onWindowOnline = function () { this._update(); }), (r.prototype._onWindowResize = function (t) { this._trackResize && this.resize({ originalEvent: t })._update(); }), (o.showTileBoundaries.get = function () { return !!this._showTileBoundaries; }), (o.showTileBoundaries.set = function (t) { this._showTileBoundaries !== t && ((this._showTileBoundaries = t), this._update()); }), (o.showPadding.get = function () { return !!this._showPadding; }), (o.showPadding.set = function (t) { this._showPadding !== t && ((this._showPadding = t), this._update()); }), (o.showCollisionBoxes.get = function () { return !!this._showCollisionBoxes; }), (o.showCollisionBoxes.set = function (t) { this._showCollisionBoxes !== t && ((this._showCollisionBoxes = t), t ? this.style._generateCollisionBoxes() : this._update()); }), (o.showOverdrawInspector.get = function () { return !!this._showOverdrawInspector; }), (o.showOverdrawInspector.set = function (t) { this._showOverdrawInspector !== t && ((this._showOverdrawInspector = t), this._update()); }), (o.repaint.get = function () { return !!this._repaint; }), (o.repaint.set = function (t) { this._repaint !== t && ((this._repaint = t), this.triggerRepaint()); }), (o.vertices.get = function () { return !!this._vertices; }), (o.vertices.set = function (t) { (this._vertices = t), this._update(); }), (r.prototype._setCacheLimits = function (e, i) { t.setCacheLimits(e, i); }), (o.version.get = function () { return '2.4.0'; }), Object.defineProperties(r.prototype, o), r ); })(Yr), ro = { showCompass: !0, showZoom: !0, visualizePitch: !1 }, oo = function (e) { var i = this; (this.options = t.extend({}, ro, e)), (this._container = a.create( 'div', 'maplibregl-ctrl maplibregl-ctrl-group mapboxgl-ctrl mapboxgl-ctrl-group', )), this._container.addEventListener('contextmenu', function (t) { return t.preventDefault(); }), this.options.showZoom && (t.bindAll(['_setButtonTitle', '_updateZoomButtons'], this), (this._zoomInButton = this._createButton( 'maplibregl-ctrl-zoom-in mapboxgl-ctrl-zoom-in', function (t) { return i._map.zoomIn({}, { originalEvent: t }); }, )), a .create( 'span', 'maplibregl-ctrl-icon mapboxgl-ctrl-icon', this._zoomInButton, ) .setAttribute('aria-hidden', 'true'), (this._zoomOutButton = this._createButton( 'maplibregl-ctrl-zoom-out mapboxgl-ctrl-zoom-out', function (t) { return i._map.zoomOut({}, { originalEvent: t }); }, )), a .create( 'span', 'maplibregl-ctrl-icon mapboxgl-ctrl-icon', this._zoomOutButton, ) .setAttribute('aria-hidden', 'true')), this.options.showCompass && (t.bindAll(['_rotateCompassArrow'], this), (this._compass = this._createButton( 'maplibregl-ctrl-compass mapboxgl-ctrl-compass', function (t) { i.options.visualizePitch ? i._map.resetNorthPitch({}, { originalEvent: t }) : i._map.resetNorth({}, { originalEvent: t }); }, )), (this._compassIcon = a.create( 'span', 'maplibregl-ctrl-icon mapboxgl-ctrl-icon', this._compass, )), this._compassIcon.setAttribute('aria-hidden', 'true')); }; (oo.prototype._updateZoomButtons = function () { var t = this._map.getZoom(), e = t === this._map.getMaxZoom(), i = t === this._map.getMinZoom(); (this._zoomInButton.disabled = e), (this._zoomOutButton.disabled = i), this._zoomInButton.setAttribute('aria-disabled', e.toString()), this._zoomOutButton.setAttribute('aria-disabled', i.toString()); }), (oo.prototype._rotateCompassArrow = function () { var t = this.options.visualizePitch ? 'scale(' + 1 / Math.pow( Math.cos(this._map.transform.pitch * (Math.PI / 180)), 0.5, ) + ') rotateX(' + this._map.transform.pitch + 'deg) rotateZ(' + this._map.transform.angle * (180 / Math.PI) + 'deg)' : 'rotate(' + this._map.transform.angle * (180 / Math.PI) + 'deg)'; this._compassIcon.style.transform = t; }), (oo.prototype.onAdd = function (t) { return ( (this._map = t), this.options.showZoom && (this._setButtonTitle(this._zoomInButton, 'ZoomIn'), this._setButtonTitle(this._zoomOutButton, 'ZoomOut'), this._map.on('zoom', this._updateZoomButtons), this._updateZoomButtons()), this.options.showCompass && (this._setButtonTitle(this._compass, 'ResetBearing'), this.options.visualizePitch && this._map.on('pitch', this._rotateCompassArrow), this._map.on('rotate', this._rotateCompassArrow), this._rotateCompassArrow(), (this._handler = new ao( this._map, this._compass, this.options.visualizePitch, ))), this._container ); }), (oo.prototype.onRemove = function () { a.remove(this._container), this.options.showZoom && this._map.off('zoom', this._updateZoomButtons), this.options.showCompass && (this.options.visualizePitch && this._map.off('pitch', this._rotateCompassArrow), this._map.off('rotate', this._rotateCompassArrow), this._handler.off(), delete this._handler), delete this._map; }), (oo.prototype._createButton = function (t, e) { var i = a.create('button', t, this._container); return (i.type = 'button'), i.addEventListener('click', e), i; }), (oo.prototype._setButtonTitle = function (t, e) { var i = this._map._getUIString('NavigationControl.' + e); (t.title = i), t.setAttribute('aria-label', i); }); var ao = function (e, i, r) { void 0 === r && (r = !1), (this._clickTolerance = 10), (this.element = i), (this.mouseRotate = new Er({ clickTolerance: e.dragRotate._mouseRotate._clickTolerance, })), (this.map = e), r && (this.mousePitch = new Ir({ clickTolerance: e.dragRotate._mousePitch._clickTolerance, })), t.bindAll( [ 'mousedown', 'mousemove', 'mouseup', 'touchstart', 'touchmove', 'touchend', 'reset', ], this, ), a.addEventListener(i, 'mousedown', this.mousedown), a.addEventListener(i, 'touchstart', this.touchstart, { passive: !1 }), a.addEventListener(i, 'touchmove', this.touchmove), a.addEventListener(i, 'touchend', this.touchend), a.addEventListener(i, 'touchcancel', this.reset); }; function no(e, i, r) { if (((e = new t.LngLat(e.lng, e.lat)), i)) { var o = new t.LngLat(e.lng - 360, e.lat), a = new t.LngLat(e.lng + 360, e.lat), n = r.locationPoint(e).distSqr(i); r.locationPoint(o).distSqr(i) < n ? (e = o) : r.locationPoint(a).distSqr(i) < n && (e = a); } for (; Math.abs(e.lng - r.center.lng) > 180; ) { var s = r.locationPoint(e); if (s.x >= 0 && s.y >= 0 && s.x <= r.width && s.y <= r.height) break; e.lng > r.center.lng ? (e.lng -= 360) : (e.lng += 360); } return e; } (ao.prototype.down = function (t, e) { this.mouseRotate.mousedown(t, e), this.mousePitch && this.mousePitch.mousedown(t, e), a.disableDrag(); }), (ao.prototype.move = function (t, e) { var i = this.map, r = this.mouseRotate.mousemoveWindow(t, e); if ( (r && r.bearingDelta && i.setBearing(i.getBearing() + r.bearingDelta), this.mousePitch) ) { var o = this.mousePitch.mousemoveWindow(t, e); o && o.pitchDelta && i.setPitch(i.getPitch() + o.pitchDelta); } }), (ao.prototype.off = function () { var t = this.element; a.removeEventListener(t, 'mousedown', this.mousedown), a.removeEventListener(t, 'touchstart', this.touchstart, { passive: !1, }), a.removeEventListener(t, 'touchmove', this.touchmove), a.removeEventListener(t, 'touchend', this.touchend), a.removeEventListener(t, 'touchcancel', this.reset), this.offTemp(); }), (ao.prototype.offTemp = function () { a.enableDrag(), a.removeEventListener(window, 'mousemove', this.mousemove), a.removeEventListener(window, 'mouseup', this.mouseup); }), (ao.prototype.mousedown = function (e) { this.down( t.extend({}, e, { ctrlKey: !0, preventDefault: function () { return e.preventDefault(); }, }), a.mousePos(this.element, e), ), a.addEventListener(window, 'mousemove', this.mousemove), a.addEventListener(window, 'mouseup', this.mouseup); }), (ao.prototype.mousemove = function (t) { this.move(t, a.mousePos(this.element, t)); }), (ao.prototype.mouseup = function (t) { this.mouseRotate.mouseupWindow(t), this.mousePitch && this.mousePitch.mouseupWindow(t), this.offTemp(); }), (ao.prototype.touchstart = function (t) { 1 !== t.targetTouches.length ? this.reset() : ((this._startPos = this._lastPos = a.touchPos(this.element, t.targetTouches)[0]), this.down( { type: 'mousedown', button: 0, ctrlKey: !0, preventDefault: function () { return t.preventDefault(); }, }, this._startPos, )); }), (ao.prototype.touchmove = function (t) { 1 !== t.targetTouches.length ? this.reset() : ((this._lastPos = a.touchPos(this.element, t.targetTouches)[0]), this.move( { preventDefault: function () { return t.preventDefault(); }, }, this._lastPos, )); }), (ao.prototype.touchend = function (t) { 0 === t.targetTouches.length && this._startPos && this._lastPos && this._startPos.dist(this._lastPos) < this._clickTolerance && this.element.click(), this.reset(); }), (ao.prototype.reset = function () { this.mouseRotate.reset(), this.mousePitch && this.mousePitch.reset(), delete this._startPos, delete this._lastPos, this.offTemp(); }); var so = { 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%)', }; function lo(t, e, i) { var r = t.classList; for (var o in so) r.remove( 'maplibregl-' + i + '-anchor-' + o, 'mapboxgl-' + i + '-anchor-' + o, ); r.add( 'maplibregl-' + i + '-anchor-' + e, 'mapboxgl-' + i + '-anchor-' + e, ); } var co, ho = (function (e) { function i(i, r) { if ( (e.call(this), (i instanceof HTMLElement || r) && (i = t.extend({ element: i }, r)), t.bindAll( [ '_update', '_onMove', '_onUp', '_addDragHandler', '_onMapClick', '_onKeyPress', ], this, ), (this._anchor = (i && i.anchor) || 'center'), (this._color = (i && i.color) || '#3FB1CE'), (this._scale = (i && i.scale) || 1), (this._draggable = (i && i.draggable) || !1), (this._clickTolerance = (i && i.clickTolerance) || 0), (this._isDragging = !1), (this._state = 'inactive'), (this._rotation = (i && i.rotation) || 0), (this._rotationAlignment = (i && i.rotationAlignment) || 'auto'), (this._pitchAlignment = i && i.pitchAlignment && 'auto' !== i.pitchAlignment ? i.pitchAlignment : this._rotationAlignment), i && i.element) ) (this._element = i.element), (this._offset = t.pointGeometry.convert( (i && i.offset) || [0, 0], )); else { (this._defaultMarker = !0), (this._element = a.create('div')), this._element.setAttribute('aria-label', 'Map marker'); var o = a.createNS('http://www.w3.org/2000/svg', 'svg'); o.setAttributeNS(null, 'display', 'block'), o.setAttributeNS(null, 'height', '41px'), o.setAttributeNS(null, 'width', '27px'), o.setAttributeNS(null, 'viewBox', '0 0 27 41'); var n = a.createNS('http://www.w3.org/2000/svg', 'g'); n.setAttributeNS(null, 'stroke', 'none'), n.setAttributeNS(null, 'stroke-width', '1'), n.setAttributeNS(null, 'fill', 'none'), n.setAttributeNS(null, 'fill-rule', 'evenodd'); var s = a.createNS('http://www.w3.org/2000/svg', 'g'); s.setAttributeNS(null, 'fill-rule', 'nonzero'); var l = a.createNS('http://www.w3.org/2000/svg', 'g'); l.setAttributeNS(null, 'transform', 'translate(3.0, 29.0)'), l.setAttributeNS(null, 'fill', '#000000'); for ( var c = 0, h = [ { rx: '10.5', ry: '5.25002273' }, { rx: '10.5', ry: '5.25002273' }, { rx: '9.5', ry: '4.77275007' }, { rx: '8.5', ry: '4.29549936' }, { rx: '7.5', ry: '3.81822308' }, { rx: '6.5', ry: '3.34094679' }, { rx: '5.5', ry: '2.86367051' }, { rx: '4.5', ry: '2.38636864' }, ]; c < h.length; c += 1 ) { var u = h[c], p = a.createNS('http://www.w3.org/2000/svg', 'ellipse'); p.setAttributeNS(null, 'opacity', '0.04'), p.setAttributeNS(null, 'cx', '10.5'), p.setAttributeNS(null, 'cy', '5.80029008'), p.setAttributeNS(null, 'rx', u.rx), p.setAttributeNS(null, 'ry', u.ry), l.appendChild(p); } var d = a.createNS('http://www.w3.org/2000/svg', 'g'); d.setAttributeNS(null, 'fill', this._color); var _ = a.createNS('http://www.w3.org/2000/svg', 'path'); _.setAttributeNS( null, 'd', 'M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z', ), d.appendChild(_); var f = a.createNS('http://www.w3.org/2000/svg', 'g'); f.setAttributeNS(null, 'opacity', '0.25'), f.setAttributeNS(null, 'fill', '#000000'); var m = a.createNS('http://www.w3.org/2000/svg', 'path'); m.setAttributeNS( null, 'd', 'M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z', ), f.appendChild(m); var g = a.createNS('http://www.w3.org/2000/svg', 'g'); g.setAttributeNS(null, 'transform', 'translate(6.0, 7.0)'), g.setAttributeNS(null, 'fill', '#FFFFFF'); var v = a.createNS('http://www.w3.org/2000/svg', 'g'); v.setAttributeNS(null, 'transform', 'translate(8.0, 8.0)'); var y = a.createNS('http://www.w3.org/2000/svg', 'circle'); y.setAttributeNS(null, 'fill', '#000000'), y.setAttributeNS(null, 'opacity', '0.25'), y.setAttributeNS(null, 'cx', '5.5'), y.setAttributeNS(null, 'cy', '5.5'), y.setAttributeNS(null, 'r', '5.4999962'); var x = a.createNS('http://www.w3.org/2000/svg', 'circle'); x.setAttributeNS(null, 'fill', '#FFFFFF'), x.setAttributeNS(null, 'cx', '5.5'), x.setAttributeNS(null, 'cy', '5.5'), x.setAttributeNS(null, 'r', '5.4999962'), v.appendChild(y), v.appendChild(x), s.appendChild(l), s.appendChild(d), s.appendChild(f), s.appendChild(g), s.appendChild(v), o.appendChild(s), o.setAttributeNS(null, 'height', 41 * this._scale + 'px'), o.setAttributeNS(null, 'width', 27 * this._scale + 'px'), this._element.appendChild(o), (this._offset = t.pointGeometry.convert( (i && i.offset) || [0, -14], )); } this._element.classList.add('maplibregl-marker', 'mapboxgl-marker'), this._element.addEventListener('dragstart', function (t) { t.preventDefault(); }), this._element.addEventListener('mousedown', function (t) { t.preventDefault(); }), lo(this._element, this._anchor, 'marker'), (this._popup = null); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.addTo = function (t) { return ( this.remove(), (this._map = t), t.getCanvasContainer().appendChild(this._element), t.on('move', this._update), t.on('moveend', this._update), this.setDraggable(this._draggable), this._update(), this._map.on('click', this._onMapClick), this ); }), (i.prototype.remove = function () { return ( this._opacityTimeout && (clearTimeout(this._opacityTimeout), delete this._opacityTimeout), this._map && (this._map.off('click', this._onMapClick), this._map.off('move', this._update), this._map.off('moveend', this._update), this._map.off('mousedown', this._addDragHandler), this._map.off('touchstart', this._addDragHandler), this._map.off('mouseup', this._onUp), this._map.off('touchend', this._onUp), this._map.off('mousemove', this._onMove), this._map.off('touchmove', this._onMove), delete this._map), a.remove(this._element), this._popup && this._popup.remove(), this ); }), (i.prototype.getLngLat = function () { return this._lngLat; }), (i.prototype.setLngLat = function (e) { return ( (this._lngLat = t.LngLat.convert(e)), (this._pos = null), this._popup && this._popup.setLngLat(this._lngLat), this._update(), this ); }), (i.prototype.getElement = function () { return this._element; }), (i.prototype.setPopup = function (t) { if ( (this._popup && (this._popup.remove(), (this._popup = null), this._element.removeEventListener('keypress', this._onKeyPress), this._originalTabIndex || this._element.removeAttribute('tabindex')), t) ) { if (!('offset' in t.options)) { var e = 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': [e, -1 * (24.6 + e)], 'bottom-right': [-e, -1 * (24.6 + e)], left: [13.5, -24.6], right: [-13.5, -24.6], } : this._offset; } (this._popup = t), this._lngLat && this._popup.setLngLat(this._lngLat), (this._originalTabIndex = this._element.getAttribute('tabindex')), this._originalTabIndex || this._element.setAttribute('tabindex', '0'), this._element.addEventListener('keypress', this._onKeyPress); } return this; }), (i.prototype._onKeyPress = function (t) { var e = t.code, i = t.charCode || t.keyCode; ('Space' !== e && 'Enter' !== e && 32 !== i && 13 !== i) || this.togglePopup(); }), (i.prototype._onMapClick = function (t) { var e = t.originalEvent.target, i = this._element; this._popup && (e === i || i.contains(e)) && this.togglePopup(); }), (i.prototype.getPopup = function () { return this._popup; }), (i.prototype.togglePopup = function () { var t = this._popup; return t ? (t.isOpen() ? t.remove() : t.addTo(this._map), this) : this; }), (i.prototype._update = function (t) { var e = this; if (this._map) { this._map.transform.renderWorldCopies && (this._lngLat = no( this._lngLat, this._pos, this._map.transform, )), (this._pos = this._map .project(this._lngLat) ._add(this._offset)); var i = ''; 'viewport' === this._rotationAlignment || 'auto' === this._rotationAlignment ? (i = 'rotateZ(' + this._rotation + 'deg)') : 'map' === this._rotationAlignment && (i = 'rotateZ(' + (this._rotation - this._map.getBearing()) + 'deg)'); var r = ''; 'viewport' === this._pitchAlignment || 'auto' === this._pitchAlignment ? (r = 'rotateX(0deg)') : 'map' === this._pitchAlignment && (r = 'rotateX(' + this._map.getPitch() + 'deg)'), (t && 'moveend' !== t.type) || (this._pos = this._pos.round()), a.setTransform( this._element, so[this._anchor] + ' translate(' + this._pos.x + 'px, ' + this._pos.y + 'px) ' + r + ' ' + i, ), this._map.style && this._map.style.terrain && !this._opacityTimeout && (this._opacityTimeout = setTimeout(function () { var t = e._map.unproject(e._pos), i = (40075016.686 * Math.abs(Math.cos((e._lngLat.lat * Math.PI) / 180))) / Math.pow(2, e._map.transform.tileZoom + 8); (e._element.style.opacity = t.distanceTo(e._lngLat) > 20 * i ? '0.2' : '1.0'), (e._opacityTimeout = null); }, 100)); } }), (i.prototype.getOffset = function () { return this._offset; }), (i.prototype.setOffset = function (e) { return ( (this._offset = t.pointGeometry.convert(e)), this._update(), this ); }), (i.prototype._onMove = function (e) { if (!this._isDragging) { var i = this._clickTolerance || this._map._clickTolerance; this._isDragging = e.point.dist(this._pointerdownPos) >= i; } this._isDragging && ((this._pos = e.point.sub(this._positionDelta)), (this._lngLat = this._map.unproject(this._pos)), this.setLngLat(this._lngLat), (this._element.style.pointerEvents = 'none'), 'pending' === this._state && ((this._state = 'active'), this.fire(new t.Event('dragstart'))), this.fire(new t.Event('drag'))); }), (i.prototype._onUp = function () { (this._element.style.pointerEvents = 'auto'), (this._positionDelta = null), (this._pointerdownPos = null), (this._isDragging = !1), this._map.off('mousemove', this._onMove), this._map.off('touchmove', this._onMove), 'active' === this._state && this.fire(new t.Event('dragend')), (this._state = 'inactive'); }), (i.prototype._addDragHandler = function (t) { this._element.contains(t.originalEvent.target) && (t.preventDefault(), (this._positionDelta = t.point.sub(this._pos).add(this._offset)), (this._pointerdownPos = t.point), (this._state = 'pending'), this._map.on('mousemove', this._onMove), this._map.on('touchmove', this._onMove), this._map.once('mouseup', this._onUp), this._map.once('touchend', this._onUp)); }), (i.prototype.setDraggable = function (t) { return ( (this._draggable = !!t), this._map && (t ? (this._map.on('mousedown', this._addDragHandler), this._map.on('touchstart', this._addDragHandler)) : (this._map.off('mousedown', this._addDragHandler), this._map.off('touchstart', this._addDragHandler))), this ); }), (i.prototype.isDraggable = function () { return this._draggable; }), (i.prototype.setRotation = function (t) { return (this._rotation = t || 0), this._update(), this; }), (i.prototype.getRotation = function () { return this._rotation; }), (i.prototype.setRotationAlignment = function (t) { return ( (this._rotationAlignment = t || 'auto'), this._update(), this ); }), (i.prototype.getRotationAlignment = function () { return this._rotationAlignment; }), (i.prototype.setPitchAlignment = function (t) { return ( (this._pitchAlignment = t && 'auto' !== t ? t : this._rotationAlignment), this._update(), this ); }), (i.prototype.getPitchAlignment = function () { return this._pitchAlignment; }), i ); })(t.Evented), uo = { positionOptions: { enableHighAccuracy: !1, maximumAge: 0, timeout: 6e3, }, fitBoundsOptions: { maxZoom: 15 }, trackUserLocation: !1, showAccuracyCircle: !0, showUserLocation: !0, }, po = 0, _o = !1, fo = (function (e) { function i(i) { e.call(this), (this.options = t.extend({}, uo, i)), t.bindAll( [ '_onSuccess', '_onError', '_onZoom', '_finish', '_setupUI', '_updateCamera', '_updateMarker', ], this, ); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.onAdd = function (t) { var e; return ( (this._map = t), (this._container = a.create( 'div', 'maplibregl-ctrl maplibregl-ctrl-group mapboxgl-ctrl mapboxgl-ctrl-group', )), (e = this._setupUI), void 0 !== co ? e(co) : void 0 !== window.navigator.permissions ? window.navigator.permissions .query({ name: 'geolocation' }) .then(function (t) { e((co = 'denied' !== t.state)); }) : ((co = !!window.navigator.geolocation), e(co)), this._container ); }), (i.prototype.onRemove = function () { void 0 !== this._geolocationWatchID && (window.navigator.geolocation.clearWatch( this._geolocationWatchID, ), (this._geolocationWatchID = void 0)), this.options.showUserLocation && this._userLocationDotMarker && this._userLocationDotMarker.remove(), this.options.showAccuracyCircle && this._accuracyCircleMarker && this._accuracyCircleMarker.remove(), a.remove(this._container), this._map.off('zoom', this._onZoom), (this._map = void 0), (po = 0), (_o = !1); }), (i.prototype._isOutOfMapMaxBounds = function (t) { var e = this._map.getMaxBounds(), i = t.coords; return ( e && (i.longitude < e.getWest() || i.longitude > e.getEast() || i.latitude < e.getSouth() || i.latitude > e.getNorth()) ); }), (i.prototype._setErrorState = function () { switch (this._watchState) { case 'WAITING_ACTIVE': (this._watchState = 'ACTIVE_ERROR'), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-active', 'mapboxgl-ctrl-geolocate-active', ), this._geolocateButton.classList.add( 'maplibregl-ctrl-geolocate-active-error', 'mapboxgl-ctrl-geolocate-active-error', ); break; case 'ACTIVE_LOCK': (this._watchState = 'ACTIVE_ERROR'), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-active', 'mapboxgl-ctrl-geolocate-active', ), this._geolocateButton.classList.add( 'maplibregl-ctrl-geolocate-active-error', 'mapboxgl-ctrl-geolocate-active-error', ), this._geolocateButton.classList.add( 'maplibregl-ctrl-geolocate-waiting', 'mapboxgl-ctrl-geolocate-waiting', ); break; case 'BACKGROUND': (this._watchState = 'BACKGROUND_ERROR'), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-background', 'mapboxgl-ctrl-geolocate-background', ), this._geolocateButton.classList.add( 'maplibregl-ctrl-geolocate-background-error', 'mapboxgl-ctrl-geolocate-background-error', ), this._geolocateButton.classList.add( 'maplibregl-ctrl-geolocate-waiting', 'mapboxgl-ctrl-geolocate-waiting', ); break; case 'ACTIVE_ERROR': break; default: throw new Error('Unexpected watchState ' + this._watchState); } }), (i.prototype._onSuccess = function (e) { if (this._map) { if (this._isOutOfMapMaxBounds(e)) return ( this._setErrorState(), this.fire(new t.Event('outofmaxbounds', e)), this._updateMarker(), void this._finish() ); if (this.options.trackUserLocation) switch (((this._lastKnownPosition = e), this._watchState)) { case 'WAITING_ACTIVE': case 'ACTIVE_LOCK': case 'ACTIVE_ERROR': (this._watchState = 'ACTIVE_LOCK'), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-waiting', 'mapboxgl-ctrl-geolocate-waiting', ), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-active-error', 'mapboxgl-ctrl-geolocate-active-error', ), this._geolocateButton.classList.add( 'maplibregl-ctrl-geolocate-active', 'mapboxgl-ctrl-geolocate-active', ); break; case 'BACKGROUND': case 'BACKGROUND_ERROR': (this._watchState = 'BACKGROUND'), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-waiting', 'mapboxgl-ctrl-geolocate-waiting', ), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-background-error', 'mapboxgl-ctrl-geolocate-background-error', ), this._geolocateButton.classList.add( 'maplibregl-ctrl-geolocate-background', 'mapboxgl-ctrl-geolocate-background', ); break; default: throw new Error( 'Unexpected watchState ' + this._watchState, ); } this.options.showUserLocation && 'OFF' !== this._watchState && this._updateMarker(e), (this.options.trackUserLocation && 'ACTIVE_LOCK' !== this._watchState) || this._updateCamera(e), this.options.showUserLocation && this._dotElement.classList.remove( 'maplibregl-user-location-dot-stale', 'mapboxgl-user-location-dot-stale', ), this.fire(new t.Event('geolocate', e)), this._finish(); } }), (i.prototype._updateCamera = function (e) { var i = new t.LngLat(e.coords.longitude, e.coords.latitude), r = e.coords.accuracy, o = this._map.getBearing(), a = t.extend({ bearing: o }, this.options.fitBoundsOptions); this._map.fitBounds(i.toBounds(r), a, { geolocateSource: !0 }); }), (i.prototype._updateMarker = function (e) { if (e) { var i = new t.LngLat(e.coords.longitude, e.coords.latitude); this._accuracyCircleMarker.setLngLat(i).addTo(this._map), this._userLocationDotMarker.setLngLat(i).addTo(this._map), (this._accuracy = e.coords.accuracy), this.options.showUserLocation && this.options.showAccuracyCircle && this._updateCircleRadius(); } else this._userLocationDotMarker.remove(), this._accuracyCircleMarker.remove(); }), (i.prototype._updateCircleRadius = function () { var t = this._map._container.clientHeight / 2, e = this._map.unproject([0, t]), i = this._map.unproject([1, t]), r = e.distanceTo(i), o = Math.ceil((2 * this._accuracy) / r); (this._circleElement.style.width = o + 'px'), (this._circleElement.style.height = o + 'px'); }), (i.prototype._onZoom = function () { this.options.showUserLocation && this.options.showAccuracyCircle && this._updateCircleRadius(); }), (i.prototype._onError = function (e) { if (this._map) { if (this.options.trackUserLocation) if (1 === e.code) { (this._watchState = 'OFF'), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-waiting', 'mapboxgl-ctrl-geolocate-waiting', ), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-active', 'mapboxgl-ctrl-geolocate-active', ), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-active-error', 'mapboxgl-ctrl-geolocate-active-error', ), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-background', 'mapboxgl-ctrl-geolocate-background', ), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-background-error', 'mapboxgl-ctrl-geolocate-background-error', ), (this._geolocateButton.disabled = !0); var i = this._map._getUIString( 'GeolocateControl.LocationNotAvailable', ); (this._geolocateButton.title = i), this._geolocateButton.setAttribute('aria-label', i), void 0 !== this._geolocationWatchID && this._clearWatch(); } else { if (3 === e.code && _o) return; this._setErrorState(); } 'OFF' !== this._watchState && this.options.showUserLocation && this._dotElement.classList.add( 'maplibregl-user-location-dot-stale', 'mapboxgl-user-location-dot-stale', ), this.fire(new t.Event('error', e)), this._finish(); } }), (i.prototype._finish = function () { this._timeoutId && clearTimeout(this._timeoutId), (this._timeoutId = void 0); }), (i.prototype._setupUI = function (e) { var i = this; if ( (this._container.addEventListener('contextmenu', function (t) { return t.preventDefault(); }), (this._geolocateButton = a.create( 'button', 'maplibregl-ctrl-geolocate mapboxgl-ctrl-geolocate', this._container, )), a .create( 'span', 'maplibregl-ctrl-icon mapboxgl-ctrl-icon', this._geolocateButton, ) .setAttribute('aria-hidden', 'true'), (this._geolocateButton.type = 'button'), !1 === e) ) { t.warnOnce( 'Geolocation support is not available so the GeolocateControl will be disabled.', ); var r = this._map._getUIString( 'GeolocateControl.LocationNotAvailable', ); (this._geolocateButton.disabled = !0), (this._geolocateButton.title = r), this._geolocateButton.setAttribute('aria-label', r); } else { var o = this._map._getUIString('GeolocateControl.FindMyLocation'); (this._geolocateButton.title = o), this._geolocateButton.setAttribute('aria-label', o); } this.options.trackUserLocation && (this._geolocateButton.setAttribute('aria-pressed', 'false'), (this._watchState = 'OFF')), this.options.showUserLocation && ((this._dotElement = a.create( 'div', 'maplibregl-user-location-dot mapboxgl-user-location-dot', )), (this._userLocationDotMarker = new ho(this._dotElement)), (this._circleElement = a.create( 'div', 'maplibregl-user-location-accuracy-circle mapboxgl-user-location-accuracy-circle', )), (this._accuracyCircleMarker = new ho({ 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', function (e) { e.geolocateSource || 'ACTIVE_LOCK' !== i._watchState || (e.originalEvent && 'resize' === e.originalEvent.type) || ((i._watchState = 'BACKGROUND'), i._geolocateButton.classList.add( 'maplibregl-ctrl-geolocate-background', 'mapboxgl-ctrl-geolocate-background', ), i._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-active', 'mapboxgl-ctrl-geolocate-active', ), i.fire(new t.Event('trackuserlocationend'))); }); }), (i.prototype.trigger = function () { if (!this._setup) return ( t.warnOnce('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 t.Event('trackuserlocationstart')); break; case 'WAITING_ACTIVE': case 'ACTIVE_LOCK': case 'ACTIVE_ERROR': case 'BACKGROUND_ERROR': po--, (_o = !1), (this._watchState = 'OFF'), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-waiting', 'mapboxgl-ctrl-geolocate-waiting', ), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-active', 'mapboxgl-ctrl-geolocate-active', ), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-active-error', 'mapboxgl-ctrl-geolocate-active-error', ), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-background', 'mapboxgl-ctrl-geolocate-background', ), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-background-error', 'mapboxgl-ctrl-geolocate-background-error', ), this.fire(new t.Event('trackuserlocationend')); break; case 'BACKGROUND': (this._watchState = 'ACTIVE_LOCK'), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-background', 'mapboxgl-ctrl-geolocate-background', ), this._lastKnownPosition && this._updateCamera(this._lastKnownPosition), this.fire(new t.Event('trackuserlocationstart')); break; default: throw new Error('Unexpected watchState ' + this._watchState); } switch (this._watchState) { case 'WAITING_ACTIVE': this._geolocateButton.classList.add( 'maplibregl-ctrl-geolocate-waiting', 'mapboxgl-ctrl-geolocate-waiting', ), this._geolocateButton.classList.add( 'maplibregl-ctrl-geolocate-active', 'mapboxgl-ctrl-geolocate-active', ); break; case 'ACTIVE_LOCK': this._geolocateButton.classList.add( 'maplibregl-ctrl-geolocate-active', 'mapboxgl-ctrl-geolocate-active', ); break; case 'OFF': break; default: throw new Error('Unexpected watchState ' + this._watchState); } if ( 'OFF' === this._watchState && void 0 !== this._geolocationWatchID ) this._clearWatch(); else if (void 0 === this._geolocationWatchID) { var e; this._geolocateButton.classList.add( 'maplibregl-ctrl-geolocate-waiting', 'mapboxgl-ctrl-geolocate-waiting', ), this._geolocateButton.setAttribute('aria-pressed', 'true'), ++po > 1 ? ((e = { maximumAge: 6e5, timeout: 0 }), (_o = !0)) : ((e = this.options.positionOptions), (_o = !1)), (this._geolocationWatchID = window.navigator.geolocation.watchPosition( this._onSuccess, this._onError, e, )); } } else window.navigator.geolocation.getCurrentPosition( this._onSuccess, this._onError, this.options.positionOptions, ), (this._timeoutId = setTimeout(this._finish, 1e4)); return !0; }), (i.prototype._clearWatch = function () { window.navigator.geolocation.clearWatch(this._geolocationWatchID), (this._geolocationWatchID = void 0), this._geolocateButton.classList.remove( 'maplibregl-ctrl-geolocate-waiting', 'mapboxgl-ctrl-geolocate-waiting', ), this._geolocateButton.setAttribute('aria-pressed', 'false'), this.options.showUserLocation && this._updateMarker(null); }), i ); })(t.Evented), mo = { maxWidth: 100, unit: 'metric' }, go = function (e) { (this.options = t.extend({}, mo, e)), t.bindAll(['_onMove', 'setUnit'], this); }; function vo(t, e, i) { var r = (i && i.maxWidth) || 100, o = t._container.clientHeight / 2, a = t.unproject([0, o]), n = t.unproject([r, o]), s = a.distanceTo(n); if (i && 'imperial' === i.unit) { var l = 3.2808 * s; l > 5280 ? yo(e, r, l / 5280, t._getUIString('ScaleControl.Miles')) : yo(e, r, l, t._getUIString('ScaleControl.Feet')); } else i && 'nautical' === i.unit ? yo(e, r, s / 1852, t._getUIString('ScaleControl.NauticalMiles')) : s >= 1e3 ? yo(e, r, s / 1e3, t._getUIString('ScaleControl.Kilometers')) : yo(e, r, s, t._getUIString('ScaleControl.Meters')); } function yo(t, e, i, r) { var o, a, n, s = ((o = i), (a = Math.pow(10, ('' + Math.floor(o)).length - 1)) * (n = (n = o / a) >= 10 ? 10 : n >= 5 ? 5 : n >= 3 ? 3 : n >= 2 ? 2 : n >= 1 ? 1 : (function (t) { var e = Math.pow(10, Math.ceil(-Math.log(t) / Math.LN10)); return Math.round(t * e) / e; })(n))); (t.style.width = e * (s / i) + 'px'), (t.innerHTML = s + ' ' + r); } (go.prototype.getDefaultPosition = function () { return 'bottom-left'; }), (go.prototype._onMove = function () { vo(this._map, this._container, this.options); }), (go.prototype.onAdd = function (t) { return ( (this._map = t), (this._container = a.create( 'div', 'maplibregl-ctrl maplibregl-ctrl-scale mapboxgl-ctrl mapboxgl-ctrl-scale', t.getContainer(), )), this._map.on('move', this._onMove), this._onMove(), this._container ); }), (go.prototype.onRemove = function () { a.remove(this._container), this._map.off('move', this._onMove), (this._map = void 0); }), (go.prototype.setUnit = function (t) { (this.options.unit = t), vo(this._map, this._container, this.options); }); var xo = function (e) { (this._fullscreen = !1), e && e.container && (e.container instanceof HTMLElement ? (this._container = e.container) : t.warnOnce( "Full screen control 'container' must be a DOM element.", )), t.bindAll(['_onClickFullscreen', '_changeIcon'], this), 'onfullscreenchange' in document ? (this._fullscreenchange = 'fullscreenchange') : 'onmozfullscreenchange' in document ? (this._fullscreenchange = 'mozfullscreenchange') : 'onwebkitfullscreenchange' in document ? (this._fullscreenchange = 'webkitfullscreenchange') : 'onmsfullscreenchange' in document && (this._fullscreenchange = 'MSFullscreenChange'); }; (xo.prototype.onAdd = function (e) { return ( (this._map = e), this._container || (this._container = this._map.getContainer()), (this._controlContainer = a.create( 'div', 'maplibregl-ctrl maplibregl-ctrl-group mapboxgl-ctrl mapboxgl-ctrl-group', )), this._checkFullscreenSupport() ? this._setupUI() : ((this._controlContainer.style.display = 'none'), t.warnOnce('This device does not support fullscreen mode.')), this._controlContainer ); }), (xo.prototype.onRemove = function () { a.remove(this._controlContainer), (this._map = null), window.document.removeEventListener( this._fullscreenchange, this._changeIcon, ); }), (xo.prototype._checkFullscreenSupport = function () { return !!( document.fullscreenEnabled || document.mozFullScreenEnabled || document.msFullscreenEnabled || document.webkitFullscreenEnabled ); }), (xo.prototype._setupUI = function () { var t = (this._fullscreenButton = a.create( 'button', 'maplibregl-ctrl-fullscreen mapboxgl-ctrl-fullscreen', this._controlContainer, )); a .create('span', 'maplibregl-ctrl-icon mapboxgl-ctrl-icon', t) .setAttribute('aria-hidden', 'true'), (t.type = 'button'), this._updateTitle(), this._fullscreenButton.addEventListener( 'click', this._onClickFullscreen, ), window.document.addEventListener( this._fullscreenchange, this._changeIcon, ); }), (xo.prototype._updateTitle = function () { var t = this._getTitle(); this._fullscreenButton.setAttribute('aria-label', t), (this._fullscreenButton.title = t); }), (xo.prototype._getTitle = function () { return this._map._getUIString( this._isFullscreen() ? 'FullscreenControl.Exit' : 'FullscreenControl.Enter', ); }), (xo.prototype._isFullscreen = function () { return this._fullscreen; }), (xo.prototype._changeIcon = function () { ((window.document.fullscreenElement || window.document.mozFullScreenElement || window.document.webkitFullscreenElement || window.document.msFullscreenElement) === this._container) !== this._fullscreen && ((this._fullscreen = !this._fullscreen), this._fullscreenButton.classList.toggle('maplibregl-ctrl-shrink'), this._fullscreenButton.classList.toggle('mapboxgl-ctrl-shrink'), this._fullscreenButton.classList.toggle('maplibregl-ctrl-fullscreen'), this._fullscreenButton.classList.toggle('mapboxgl-ctrl-fullscreen'), this._updateTitle()); }), (xo.prototype._onClickFullscreen = function () { this._isFullscreen() ? window.document.exitFullscreen ? window.document.exitFullscreen() : window.document.mozCancelFullScreen ? window.document.mozCancelFullScreen() : window.document.msExitFullscreen ? window.document.msExitFullscreen() : window.document.webkitCancelFullScreen && window.document.webkitCancelFullScreen() : this._container.requestFullscreen ? this._container.requestFullscreen() : this._container.mozRequestFullScreen ? this._container.mozRequestFullScreen() : this._container.msRequestFullscreen ? this._container.msRequestFullscreen() : this._container.webkitRequestFullscreen && this._container.webkitRequestFullscreen(); }); var bo = function (e) { (this.options = e), t.bindAll(['_toggleTerrain', '_updateTerrainIcon'], this); }; (bo.prototype.onAdd = function (t) { return ( (this._map = t), (this._container = a.create( 'div', 'maplibregl-ctrl maplibregl-ctrl-group mapboxgl-ctrl mapboxgl-ctrl-group', )), (this._terrainButton = a.create( 'button', 'maplibregl-ctrl-terrain mapboxgl-ctrl-terrain', this._container, )), a .create( 'span', 'maplibregl-ctrl-icon mapboxgl-ctrl-icon', this._terrainButton, ) .setAttribute('aria-hidden', 'true'), (this._terrainButton.type = 'button'), this._terrainButton.addEventListener('click', this._toggleTerrain), this._updateTerrainIcon(), this._map.on('terrain', this._updateTerrainIcon), this._container ); }), (bo.prototype.onRemove = function () { a.remove(this._container), this._map.off('terrain', this._updateTerrainIcon), (this._map = void 0); }), (bo.prototype._toggleTerrain = function () { this._map.getTerrain() ? this._map.setTerrain(null) : this._map.setTerrain(this.options), this._updateTerrainIcon(); }), (bo.prototype._updateTerrainIcon = function () { this._terrainButton.classList.remove( 'maplibregl-ctrl-terrain', 'mapboxgl-ctrl-terrain', ), this._terrainButton.classList.remove( 'maplibregl-ctrl-terrain-enabled', 'mapboxgl-ctrl-terrain-enabled', ), this._map.style.terrain ? (this._terrainButton.classList.add( 'maplibregl-ctrl-terrain-enabled', 'mapboxgl-ctrl-terrain-enabled', ), (this._terrainButton.title = this._map._getUIString( 'TerrainControl.disableTerrain', ))) : (this._terrainButton.classList.add( 'maplibregl-ctrl-terrain', 'mapboxgl-ctrl-terrain', ), (this._terrainButton.title = this._map._getUIString( 'TerrainControl.enableTerrain', ))); }); var wo = { closeButton: !0, closeOnClick: !0, focusAfterOpen: !0, className: '', maxWidth: '240px', }, To = [ 'a[href]', "[tabindex]:not([tabindex='-1'])", "[contenteditable]:not([contenteditable='false'])", 'button:not([disabled])', 'input:not([disabled])', 'select:not([disabled])', 'textarea:not([disabled])', ].join(', '), Eo = (function (e) { function i(i) { e.call(this), (this.options = t.extend(Object.create(wo), i)), t.bindAll( [ '_update', '_onClose', 'remove', '_onMouseMove', '_onMouseUp', '_onDrag', ], this, ); } return ( e && (i.__proto__ = e), ((i.prototype = Object.create(e && e.prototype)).constructor = i), (i.prototype.addTo = function (e) { return ( this._map && this.remove(), (this._map = e), this.options.closeOnClick && this._map.on('click', this._onClose), this.options.closeOnMove && this._map.on('move', this._onClose), this._map.on('remove', this.remove), this._update(), this._focusFirstElement(), this._trackPointer ? (this._map.on('mousemove', this._onMouseMove), this._map.on('mouseup', this._onMouseUp), this._container && this._container.classList.add( 'maplibregl-popup-track-pointer', 'mapboxgl-popup-track-pointer', ), this._map._canvasContainer.classList.add( 'maplibregl-track-pointer', 'mapboxgl-track-pointer', )) : this._map.on('move', this._update), this.fire(new t.Event('open')), this ); }), (i.prototype.isOpen = function () { return !!this._map; }), (i.prototype.remove = function () { return ( this._content && a.remove(this._content), this._container && (a.remove(this._container), delete this._container), this._map && (this._map.off('move', this._update), this._map.off('move', this._onClose), this._map.off('click', this._onClose), this._map.off('remove', this.remove), this._map.off('mousemove', this._onMouseMove), this._map.off('mouseup', this._onMouseUp), this._map.off('drag', this._onDrag), delete this._map), this.fire(new t.Event('close')), this ); }), (i.prototype.getLngLat = function () { return this._lngLat; }), (i.prototype.setLngLat = function (e) { return ( (this._lngLat = t.LngLat.convert(e)), (this._pos = null), (this._trackPointer = !1), this._update(), this._map && (this._map.on('move', this._update), this._map.off('mousemove', this._onMouseMove), this._container && this._container.classList.remove( 'maplibregl-popup-track-pointer', 'mapboxgl-popup-track-pointer', ), this._map._canvasContainer.classList.remove( 'maplibregl-track-pointer', 'mapboxgl-track-pointer', )), this ); }), (i.prototype.trackPointer = function () { return ( (this._trackPointer = !0), (this._pos = null), this._update(), this._map && (this._map.off('move', this._update), this._map.on('mousemove', this._onMouseMove), this._map.on('drag', this._onDrag), this._container && this._container.classList.add( 'maplibregl-popup-track-pointer', 'mapboxgl-popup-track-pointer', ), this._map._canvasContainer.classList.add( 'maplibregl-track-pointer', 'mapboxgl-track-pointer', )), this ); }), (i.prototype.getElement = function () { return this._container; }), (i.prototype.setText = function (t) { return this.setDOMContent(document.createTextNode(t)); }), (i.prototype.setHTML = function (t) { var e, i = document.createDocumentFragment(), r = document.createElement('body'); for (r.innerHTML = t; (e = r.firstChild); ) i.appendChild(e); return this.setDOMContent(i); }), (i.prototype.getMaxWidth = function () { return this._container && this._container.style.maxWidth; }), (i.prototype.setMaxWidth = function (t) { return (this.options.maxWidth = t), this._update(), this; }), (i.prototype.setDOMContent = function (t) { if (this._content) for (; this._content.hasChildNodes(); ) this._content.firstChild && this._content.removeChild(this._content.firstChild); else this._content = a.create( 'div', 'maplibregl-popup-content mapboxgl-popup-content', this._container, ); return ( this._content.appendChild(t), this._createCloseButton(), this._update(), this._focusFirstElement(), this ); }), (i.prototype.addClassName = function (t) { this._container && this._container.classList.add(t); }), (i.prototype.removeClassName = function (t) { this._container && this._container.classList.remove(t); }), (i.prototype.setOffset = function (t) { return (this.options.offset = t), this._update(), this; }), (i.prototype.toggleClassName = function (t) { if (this._container) return this._container.classList.toggle(t); }), (i.prototype._createCloseButton = function () { this.options.closeButton && ((this._closeButton = a.create( 'button', 'maplibregl-popup-close-button mapboxgl-popup-close-button', this._content, )), (this._closeButton.type = 'button'), this._closeButton.setAttribute('aria-label', 'Close popup'), (this._closeButton.innerHTML = '×'), this._closeButton.addEventListener('click', this._onClose)); }), (i.prototype._onMouseUp = function (t) { this._update(t.point); }), (i.prototype._onMouseMove = function (t) { this._update(t.point); }), (i.prototype._onDrag = function (t) { this._update(t.point); }), (i.prototype._update = function (t) { var e = this; if ( this._map && (this._lngLat || this._trackPointer) && this._content && (this._container || ((this._container = a.create( 'div', 'maplibregl-popup mapboxgl-popup', this._map.getContainer(), )), (this._tip = a.create( 'div', 'maplibregl-popup-tip mapboxgl-popup-tip', this._container, )), this._container.appendChild(this._content), this.options.className && this.options.className.split(' ').forEach(function (t) { return e._container.classList.add(t); }), this._trackPointer && this._container.classList.add( 'maplibregl-popup-track-pointer', 'mapboxgl-popup-track-pointer', )), this.options.maxWidth && this._container.style.maxWidth !== this.options.maxWidth && (this._container.style.maxWidth = this.options.maxWidth), this._map.transform.renderWorldCopies && !this._trackPointer && (this._lngLat = no( this._lngLat, this._pos, this._map.transform, )), !this._trackPointer || t) ) { var i = (this._pos = this._trackPointer && t ? t : this._map.project(this._lngLat)), r = this.options.anchor, o = Io(this.options.offset); if (!r) { var n, s = this._container.offsetWidth, l = this._container.offsetHeight; (n = i.y + o.bottom.y < l ? ['top'] : i.y > this._map.transform.height - l ? ['bottom'] : []), i.x < s / 2 ? n.push('left') : i.x > this._map.transform.width - s / 2 && n.push('right'), (r = 0 === n.length ? 'bottom' : n.join('-')); } var c = i.add(o[r]).round(); a.setTransform( this._container, so[r] + ' translate(' + c.x + 'px,' + c.y + 'px)', ), lo(this._container, r, 'popup'); } }), (i.prototype._focusFirstElement = function () { if (this.options.focusAfterOpen && this._container) { var t = this._container.querySelector(To); t && t.focus(); } }), (i.prototype._onClose = function () { this.remove(); }), i ); })(t.Evented); function Io(e) { if (e) { if ('number' == typeof e) { var i = Math.round(Math.sqrt(0.5 * Math.pow(e, 2))); return { center: new t.pointGeometry(0, 0), top: new t.pointGeometry(0, e), 'top-left': new t.pointGeometry(i, i), 'top-right': new t.pointGeometry(-i, i), bottom: new t.pointGeometry(0, -e), 'bottom-left': new t.pointGeometry(i, -i), 'bottom-right': new t.pointGeometry(-i, -i), left: new t.pointGeometry(e, 0), right: new t.pointGeometry(-e, 0), }; } if (e instanceof t.pointGeometry || Array.isArray(e)) { var r = t.pointGeometry.convert(e); return { center: r, top: r, 'top-left': r, 'top-right': r, bottom: r, 'bottom-left': r, 'bottom-right': r, left: r, right: r, }; } return { center: t.pointGeometry.convert(e.center || [0, 0]), top: t.pointGeometry.convert(e.top || [0, 0]), 'top-left': t.pointGeometry.convert(e['top-left'] || [0, 0]), 'top-right': t.pointGeometry.convert(e['top-right'] || [0, 0]), bottom: t.pointGeometry.convert(e.bottom || [0, 0]), 'bottom-left': t.pointGeometry.convert(e['bottom-left'] || [0, 0]), 'bottom-right': t.pointGeometry.convert(e['bottom-right'] || [0, 0]), left: t.pointGeometry.convert(e.left || [0, 0]), right: t.pointGeometry.convert(e.right || [0, 0]), }; } return Io(new t.pointGeometry(0, 0)); } var Co = { supported: e, setRTLTextPlugin: t.setRTLTextPlugin, getRTLTextPluginStatus: t.getRTLTextPluginStatus, Map: io, NavigationControl: oo, GeolocateControl: fo, AttributionControl: Jr, LogoControl: Qr, ScaleControl: go, FullscreenControl: xo, TerrainControl: bo, Popup: Eo, Marker: ho, Style: ie, LngLat: t.LngLat, LngLatBounds: t.LngLatBounds, Point: t.pointGeometry, MercatorCoordinate: t.MercatorCoordinate, Evented: t.Evented, AJAXError: t.AJAXError, config: t.config, CanvasSource: A, GeoJSONSource: D, ImageSource: P, RasterDEMTileSource: S, RasterTileSource: C, VectorTileSource: I, VideoSource: M, prewarm: function () { W().acquire(Z); }, clearPrewarmedResources: function () { var t = q; t && (t.isPreloaded() && 1 === t.numActive() ? (t.release(Z), (q = 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()', )); }, get version() { return '2.4.0'; }, get workerCount() { return V.workerCount; }, set workerCount(t) { V.workerCount = t; }, get maxParallelImageRequests() { return t.config.MAX_PARALLEL_IMAGE_REQUESTS; }, set maxParallelImageRequests(e) { t.config.MAX_PARALLEL_IMAGE_REQUESTS = e; }, clearStorage: function (e) { t.clearTileCache(e); }, workerUrl: '', addProtocol: function (e, i) { t.config.REGISTERED_PROTOCOLS[e] = i; }, removeProtocol: function (e) { delete t.config.REGISTERED_PROTOCOLS[e]; }, }; return ( (function (e) { for (var i = [], r = arguments.length - 1; r-- > 0; ) i[r] = arguments[r + 1]; t.extend.apply(void 0, [e].concat(i)); })(Co, { isSafari: t.isSafari, getPerformanceMetrics: t.PerformanceUtils.getPerformanceMetrics, }), Co ); }); // var maplibregl$1 = maplibregl; return maplibregl$1; }); //# sourceMappingURL=maplibre-gl-compat.js.map