Greasy Fork is available in English.

Leaflet

一个开源并且对移动端友好的 交互式地图 JavaScript 库

Detta skript bör inte installeras direkt. Det är ett bibliotek för andra skript att inkludera med meta-direktivet // @require https://update.greasyfork.org/scripts/483765/1413252/Leaflet.js

/* @preserve
 * Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com
 * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade
 */
!(function (global, factory) {
    /**
     * 不使用define
     * typeof define === "function" && define.amd
     * define(factory)
     */
    if (typeof exports === "object" && typeof module !== "undefined") {
      /* 适用于NodeJs或typeScript */
      module.exports = factory();
    } else {
      global = typeof globalThis !== "undefined" ? globalThis : global || self;
      /* 适用于浏览器中,且this对象是window,如果this是其它,那么会在其它对象下注册对象 */
      global.leaflet = factory(global);
    }
  })(this, function (t) {
  "use strict";
  function l(t) {
    for (var e, i, n = 1, o = arguments.length; n < o; n++)
      for (e in (i = arguments[n])) t[e] = i[e];
    return t;
  }
  var R =
    Object.create ||
    function (t) {
      return (N.prototype = t), new N();
    };
  function N() {}
  function a(t, e) {
    var i,
      n = Array.prototype.slice;
    return t.bind
      ? t.bind.apply(t, n.call(arguments, 1))
      : ((i = n.call(arguments, 2)),
        function () {
          return t.apply(e, i.length ? i.concat(n.call(arguments)) : arguments);
        });
  }
  var D = 0;
  function h(t) {
    return "_leaflet_id" in t || (t._leaflet_id = ++D), t._leaflet_id;
  }
  function j(t, e, i) {
    var n,
      o,
      s = function () {
        (n = !1), o && (r.apply(i, o), (o = !1));
      },
      r = function () {
        n
          ? (o = arguments)
          : (t.apply(i, arguments), setTimeout(s, e), (n = !0));
      };
    return r;
  }
  function H(t, e, i) {
    var n = e[1],
      e = e[0],
      o = n - e;
    return t === n && i ? t : ((((t - e) % o) + o) % o) + e;
  }
  function u() {
    return !1;
  }
  function i(t, e) {
    return !1 === e
      ? t
      : ((e = Math.pow(10, void 0 === e ? 6 : e)), Math.round(t * e) / e);
  }
  function W(t) {
    return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, "");
  }
  function F(t) {
    return W(t).split(/\s+/);
  }
  function c(t, e) {
    for (var i in (Object.prototype.hasOwnProperty.call(t, "options") ||
      (t.options = t.options ? R(t.options) : {}),
    e))
      t.options[i] = e[i];
    return t.options;
  }
  function U(t, e, i) {
    var n,
      o = [];
    for (n in t)
      o.push(
        encodeURIComponent(i ? n.toUpperCase() : n) +
          "=" +
          encodeURIComponent(t[n])
      );
    return (e && -1 !== e.indexOf("?") ? "&" : "?") + o.join("&");
  }
  var V = /\{ *([\w_ -]+) *\}/g;
  function q(t, i) {
    return t.replace(V, function (t, e) {
      e = i[e];
      if (void 0 === e) throw new Error("No value provided for variable " + t);
      return (e = "function" == typeof e ? e(i) : e);
    });
  }
  var d =
    Array.isArray ||
    function (t) {
      return "[object Array]" === Object.prototype.toString.call(t);
    };
  function G(t, e) {
    for (var i = 0; i < t.length; i++) if (t[i] === e) return i;
    return -1;
  }
  var K = "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";
  function Y(t) {
    return window["webkit" + t] || window["moz" + t] || window["ms" + t];
  }
  var X = 0;
  function J(t) {
    var e = +new Date(),
      i = Math.max(0, 16 - (e - X));
    return (X = e + i), window.setTimeout(t, i);
  }
  var $ = window.requestAnimationFrame || Y("RequestAnimationFrame") || J,
    Q =
      window.cancelAnimationFrame ||
      Y("CancelAnimationFrame") ||
      Y("CancelRequestAnimationFrame") ||
      function (t) {
        window.clearTimeout(t);
      };
  function x(t, e, i) {
    if (!i || $ !== J) return $.call(window, a(t, e));
    t.call(e);
  }
  function r(t) {
    t && Q.call(window, t);
  }
  var tt = {
    __proto__: null,
    extend: l,
    create: R,
    bind: a,
    get lastId() {
      return D;
    },
    stamp: h,
    throttle: j,
    wrapNum: H,
    falseFn: u,
    formatNum: i,
    trim: W,
    splitWords: F,
    setOptions: c,
    getParamString: U,
    template: q,
    isArray: d,
    indexOf: G,
    emptyImageUrl: K,
    requestFn: $,
    cancelFn: Q,
    requestAnimFrame: x,
    cancelAnimFrame: r,
  };
  function et() {}
  (et.extend = function (t) {
    function e() {
      c(this),
        this.initialize && this.initialize.apply(this, arguments),
        this.callInitHooks();
    }
    var i,
      n = (e.__super__ = this.prototype),
      o = R(n);
    for (i in (((o.constructor = e).prototype = o), this))
      Object.prototype.hasOwnProperty.call(this, i) &&
        "prototype" !== i &&
        "__super__" !== i &&
        (e[i] = this[i]);
    if ((t.statics && l(e, t.statics), t.includes)) {
      var s = t.includes;
      if ("undefined" != typeof L && L && L.Mixin) {
        s = d(s) ? s : [s];
        for (var r = 0; r < s.length; r++)
          s[r] === L.Mixin.Events &&
            console.warn(
              "Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",
              new Error().stack
            );
      }
      l.apply(null, [o].concat(t.includes));
    }
    return (
      l(o, t),
      delete o.statics,
      delete o.includes,
      o.options &&
        ((o.options = n.options ? R(n.options) : {}), l(o.options, t.options)),
      (o._initHooks = []),
      (o.callInitHooks = function () {
        if (!this._initHooksCalled) {
          n.callInitHooks && n.callInitHooks.call(this),
            (this._initHooksCalled = !0);
          for (var t = 0, e = o._initHooks.length; t < e; t++)
            o._initHooks[t].call(this);
        }
      }),
      e
    );
  }),
    (et.include = function (t) {
      var e = this.prototype.options;
      return (
        l(this.prototype, t),
        t.options &&
          ((this.prototype.options = e), this.mergeOptions(t.options)),
        this
      );
    }),
    (et.mergeOptions = function (t) {
      return l(this.prototype.options, t), this;
    }),
    (et.addInitHook = function (t) {
      var e = Array.prototype.slice.call(arguments, 1),
        i =
          "function" == typeof t
            ? t
            : function () {
                this[t].apply(this, e);
              };
      return (
        (this.prototype._initHooks = this.prototype._initHooks || []),
        this.prototype._initHooks.push(i),
        this
      );
    });
  var e = {
      on: function (t, e, i) {
        if ("object" == typeof t) for (var n in t) this._on(n, t[n], e);
        else
          for (var o = 0, s = (t = F(t)).length; o < s; o++)
            this._on(t[o], e, i);
        return this;
      },
      off: function (t, e, i) {
        if (arguments.length)
          if ("object" == typeof t) for (var n in t) this._off(n, t[n], e);
          else {
            t = F(t);
            for (
              var o = 1 === arguments.length, s = 0, r = t.length;
              s < r;
              s++
            )
              o ? this._off(t[s]) : this._off(t[s], e, i);
          }
        else delete this._events;
        return this;
      },
      _on: function (t, e, i, n) {
        "function" != typeof e
          ? console.warn("wrong listener type: " + typeof e)
          : !1 === this._listens(t, e, i) &&
            ((e = { fn: e, ctx: (i = i === this ? void 0 : i) }),
            n && (e.once = !0),
            (this._events = this._events || {}),
            (this._events[t] = this._events[t] || []),
            this._events[t].push(e));
      },
      _off: function (t, e, i) {
        var n, o, s;
        if (this._events && (n = this._events[t]))
          if (1 === arguments.length) {
            if (this._firingCount)
              for (o = 0, s = n.length; o < s; o++) n[o].fn = u;
            delete this._events[t];
          } else
            "function" != typeof e
              ? console.warn("wrong listener type: " + typeof e)
              : !1 !== (e = this._listens(t, e, i)) &&
                ((i = n[e]),
                this._firingCount &&
                  ((i.fn = u), (this._events[t] = n = n.slice())),
                n.splice(e, 1));
      },
      fire: function (t, e, i) {
        if (this.listens(t, i)) {
          var n = l({}, e, {
            type: t,
            target: this,
            sourceTarget: (e && e.sourceTarget) || this,
          });
          if (this._events) {
            var o = this._events[t];
            if (o) {
              this._firingCount = this._firingCount + 1 || 1;
              for (var s = 0, r = o.length; s < r; s++) {
                var a = o[s],
                  h = a.fn;
                a.once && this.off(t, h, a.ctx), h.call(a.ctx || this, n);
              }
              this._firingCount--;
            }
          }
          i && this._propagateEvent(n);
        }
        return this;
      },
      listens: function (t, e, i, n) {
        "string" != typeof t && console.warn('"string" type argument expected');
        var o = e,
          s =
            ("function" != typeof e && ((n = !!e), (i = o = void 0)),
            this._events && this._events[t]);
        if (s && s.length && !1 !== this._listens(t, o, i)) return !0;
        if (n)
          for (var r in this._eventParents)
            if (this._eventParents[r].listens(t, e, i, n)) return !0;
        return !1;
      },
      _listens: function (t, e, i) {
        if (this._events) {
          var n = this._events[t] || [];
          if (!e) return !!n.length;
          i === this && (i = void 0);
          for (var o = 0, s = n.length; o < s; o++)
            if (n[o].fn === e && n[o].ctx === i) return o;
        }
        return !1;
      },
      once: function (t, e, i) {
        if ("object" == typeof t) for (var n in t) this._on(n, t[n], e, !0);
        else
          for (var o = 0, s = (t = F(t)).length; o < s; o++)
            this._on(t[o], e, i, !0);
        return this;
      },
      addEventParent: function (t) {
        return (
          (this._eventParents = this._eventParents || {}),
          (this._eventParents[h(t)] = t),
          this
        );
      },
      removeEventParent: function (t) {
        return this._eventParents && delete this._eventParents[h(t)], this;
      },
      _propagateEvent: function (t) {
        for (var e in this._eventParents)
          this._eventParents[e].fire(
            t.type,
            l({ layer: t.target, propagatedFrom: t.target }, t),
            !0
          );
      },
    },
    it =
      ((e.addEventListener = e.on),
      (e.removeEventListener = e.clearAllEventListeners = e.off),
      (e.addOneTimeEventListener = e.once),
      (e.fireEvent = e.fire),
      (e.hasEventListeners = e.listens),
      et.extend(e));
  function p(t, e, i) {
    (this.x = i ? Math.round(t) : t), (this.y = i ? Math.round(e) : e);
  }
  var nt =
    Math.trunc ||
    function (t) {
      return 0 < t ? Math.floor(t) : Math.ceil(t);
    };
  function m(t, e, i) {
    return t instanceof p
      ? t
      : d(t)
      ? new p(t[0], t[1])
      : null == t
      ? t
      : "object" == typeof t && "x" in t && "y" in t
      ? new p(t.x, t.y)
      : new p(t, e, i);
  }
  function f(t, e) {
    if (t)
      for (var i = e ? [t, e] : t, n = 0, o = i.length; n < o; n++)
        this.extend(i[n]);
  }
  function _(t, e) {
    return !t || t instanceof f ? t : new f(t, e);
  }
  function s(t, e) {
    if (t)
      for (var i = e ? [t, e] : t, n = 0, o = i.length; n < o; n++)
        this.extend(i[n]);
  }
  function g(t, e) {
    return t instanceof s ? t : new s(t, e);
  }
  function v(t, e, i) {
    if (isNaN(t) || isNaN(e))
      throw new Error("Invalid LatLng object: (" + t + ", " + e + ")");
    (this.lat = +t), (this.lng = +e), void 0 !== i && (this.alt = +i);
  }
  function w(t, e, i) {
    return t instanceof v
      ? t
      : d(t) && "object" != typeof t[0]
      ? 3 === t.length
        ? new v(t[0], t[1], t[2])
        : 2 === t.length
        ? new v(t[0], t[1])
        : null
      : null == t
      ? t
      : "object" == typeof t && "lat" in t
      ? new v(t.lat, "lng" in t ? t.lng : t.lon, t.alt)
      : void 0 === e
      ? null
      : new v(t, e, i);
  }
  (p.prototype = {
    clone: function () {
      return new p(this.x, this.y);
    },
    add: function (t) {
      return this.clone()._add(m(t));
    },
    _add: function (t) {
      return (this.x += t.x), (this.y += t.y), this;
    },
    subtract: function (t) {
      return this.clone()._subtract(m(t));
    },
    _subtract: function (t) {
      return (this.x -= t.x), (this.y -= t.y), this;
    },
    divideBy: function (t) {
      return this.clone()._divideBy(t);
    },
    _divideBy: function (t) {
      return (this.x /= t), (this.y /= t), this;
    },
    multiplyBy: function (t) {
      return this.clone()._multiplyBy(t);
    },
    _multiplyBy: function (t) {
      return (this.x *= t), (this.y *= t), this;
    },
    scaleBy: function (t) {
      return new p(this.x * t.x, this.y * t.y);
    },
    unscaleBy: function (t) {
      return new p(this.x / t.x, this.y / t.y);
    },
    round: function () {
      return this.clone()._round();
    },
    _round: function () {
      return (this.x = Math.round(this.x)), (this.y = Math.round(this.y)), this;
    },
    floor: function () {
      return this.clone()._floor();
    },
    _floor: function () {
      return (this.x = Math.floor(this.x)), (this.y = Math.floor(this.y)), this;
    },
    ceil: function () {
      return this.clone()._ceil();
    },
    _ceil: function () {
      return (this.x = Math.ceil(this.x)), (this.y = Math.ceil(this.y)), this;
    },
    trunc: function () {
      return this.clone()._trunc();
    },
    _trunc: function () {
      return (this.x = nt(this.x)), (this.y = nt(this.y)), this;
    },
    distanceTo: function (t) {
      var e = (t = m(t)).x - this.x,
        t = t.y - this.y;
      return Math.sqrt(e * e + t * t);
    },
    equals: function (t) {
      return (t = m(t)).x === this.x && t.y === this.y;
    },
    contains: function (t) {
      return (
        (t = m(t)),
        Math.abs(t.x) <= Math.abs(this.x) && Math.abs(t.y) <= Math.abs(this.y)
      );
    },
    toString: function () {
      return "Point(" + i(this.x) + ", " + i(this.y) + ")";
    },
  }),
    (f.prototype = {
      extend: function (t) {
        var e, i;
        if (t) {
          if (t instanceof p || "number" == typeof t[0] || "x" in t)
            e = i = m(t);
          else if (((e = (t = _(t)).min), (i = t.max), !e || !i)) return this;
          this.min || this.max
            ? ((this.min.x = Math.min(e.x, this.min.x)),
              (this.max.x = Math.max(i.x, this.max.x)),
              (this.min.y = Math.min(e.y, this.min.y)),
              (this.max.y = Math.max(i.y, this.max.y)))
            : ((this.min = e.clone()), (this.max = i.clone()));
        }
        return this;
      },
      getCenter: function (t) {
        return m(
          (this.min.x + this.max.x) / 2,
          (this.min.y + this.max.y) / 2,
          t
        );
      },
      getBottomLeft: function () {
        return m(this.min.x, this.max.y);
      },
      getTopRight: function () {
        return m(this.max.x, this.min.y);
      },
      getTopLeft: function () {
        return this.min;
      },
      getBottomRight: function () {
        return this.max;
      },
      getSize: function () {
        return this.max.subtract(this.min);
      },
      contains: function (t) {
        var e, i;
        return (
          (t = ("number" == typeof t[0] || t instanceof p ? m : _)(
            t
          )) instanceof f
            ? ((e = t.min), (i = t.max))
            : (e = i = t),
          e.x >= this.min.x &&
            i.x <= this.max.x &&
            e.y >= this.min.y &&
            i.y <= this.max.y
        );
      },
      intersects: function (t) {
        t = _(t);
        var e = this.min,
          i = this.max,
          n = t.min,
          t = t.max,
          o = t.x >= e.x && n.x <= i.x,
          t = t.y >= e.y && n.y <= i.y;
        return o && t;
      },
      overlaps: function (t) {
        t = _(t);
        var e = this.min,
          i = this.max,
          n = t.min,
          t = t.max,
          o = t.x > e.x && n.x < i.x,
          t = t.y > e.y && n.y < i.y;
        return o && t;
      },
      isValid: function () {
        return !(!this.min || !this.max);
      },
      pad: function (t) {
        var e = this.min,
          i = this.max,
          n = Math.abs(e.x - i.x) * t,
          t = Math.abs(e.y - i.y) * t;
        return _(m(e.x - n, e.y - t), m(i.x + n, i.y + t));
      },
      equals: function (t) {
        return (
          !!t &&
          ((t = _(t)),
          this.min.equals(t.getTopLeft()) &&
            this.max.equals(t.getBottomRight()))
        );
      },
    }),
    (s.prototype = {
      extend: function (t) {
        var e,
          i,
          n = this._southWest,
          o = this._northEast;
        if (t instanceof v) i = e = t;
        else {
          if (!(t instanceof s)) return t ? this.extend(w(t) || g(t)) : this;
          if (((e = t._southWest), (i = t._northEast), !e || !i)) return this;
        }
        return (
          n || o
            ? ((n.lat = Math.min(e.lat, n.lat)),
              (n.lng = Math.min(e.lng, n.lng)),
              (o.lat = Math.max(i.lat, o.lat)),
              (o.lng = Math.max(i.lng, o.lng)))
            : ((this._southWest = new v(e.lat, e.lng)),
              (this._northEast = new v(i.lat, i.lng))),
          this
        );
      },
      pad: function (t) {
        var e = this._southWest,
          i = this._northEast,
          n = Math.abs(e.lat - i.lat) * t,
          t = Math.abs(e.lng - i.lng) * t;
        return new s(new v(e.lat - n, e.lng - t), new v(i.lat + n, i.lng + t));
      },
      getCenter: function () {
        return new v(
          (this._southWest.lat + this._northEast.lat) / 2,
          (this._southWest.lng + this._northEast.lng) / 2
        );
      },
      getSouthWest: function () {
        return this._southWest;
      },
      getNorthEast: function () {
        return this._northEast;
      },
      getNorthWest: function () {
        return new v(this.getNorth(), this.getWest());
      },
      getSouthEast: function () {
        return new v(this.getSouth(), this.getEast());
      },
      getWest: function () {
        return this._southWest.lng;
      },
      getSouth: function () {
        return this._southWest.lat;
      },
      getEast: function () {
        return this._northEast.lng;
      },
      getNorth: function () {
        return this._northEast.lat;
      },
      contains: function (t) {
        t = ("number" == typeof t[0] || t instanceof v || "lat" in t ? w : g)(
          t
        );
        var e,
          i,
          n = this._southWest,
          o = this._northEast;
        return (
          t instanceof s
            ? ((e = t.getSouthWest()), (i = t.getNorthEast()))
            : (e = i = t),
          e.lat >= n.lat && i.lat <= o.lat && e.lng >= n.lng && i.lng <= o.lng
        );
      },
      intersects: function (t) {
        t = g(t);
        var e = this._southWest,
          i = this._northEast,
          n = t.getSouthWest(),
          t = t.getNorthEast(),
          o = t.lat >= e.lat && n.lat <= i.lat,
          t = t.lng >= e.lng && n.lng <= i.lng;
        return o && t;
      },
      overlaps: function (t) {
        t = g(t);
        var e = this._southWest,
          i = this._northEast,
          n = t.getSouthWest(),
          t = t.getNorthEast(),
          o = t.lat > e.lat && n.lat < i.lat,
          t = t.lng > e.lng && n.lng < i.lng;
        return o && t;
      },
      toBBoxString: function () {
        return [
          this.getWest(),
          this.getSouth(),
          this.getEast(),
          this.getNorth(),
        ].join(",");
      },
      equals: function (t, e) {
        return (
          !!t &&
          ((t = g(t)),
          this._southWest.equals(t.getSouthWest(), e) &&
            this._northEast.equals(t.getNorthEast(), e))
        );
      },
      isValid: function () {
        return !(!this._southWest || !this._northEast);
      },
    });
  var ot = {
      latLngToPoint: function (t, e) {
        (t = this.projection.project(t)), (e = this.scale(e));
        return this.transformation._transform(t, e);
      },
      pointToLatLng: function (t, e) {
        (e = this.scale(e)), (t = this.transformation.untransform(t, e));
        return this.projection.unproject(t);
      },
      project: function (t) {
        return this.projection.project(t);
      },
      unproject: function (t) {
        return this.projection.unproject(t);
      },
      scale: function (t) {
        return 256 * Math.pow(2, t);
      },
      zoom: function (t) {
        return Math.log(t / 256) / Math.LN2;
      },
      getProjectedBounds: function (t) {
        var e;
        return this.infinite
          ? null
          : ((e = this.projection.bounds),
            (t = this.scale(t)),
            new f(
              this.transformation.transform(e.min, t),
              this.transformation.transform(e.max, t)
            ));
      },
      infinite: !(v.prototype = {
        equals: function (t, e) {
          return (
            !!t &&
            ((t = w(t)),
            Math.max(Math.abs(this.lat - t.lat), Math.abs(this.lng - t.lng)) <=
              (void 0 === e ? 1e-9 : e))
          );
        },
        toString: function (t) {
          return "LatLng(" + i(this.lat, t) + ", " + i(this.lng, t) + ")";
        },
        distanceTo: function (t) {
          return st.distance(this, w(t));
        },
        wrap: function () {
          return st.wrapLatLng(this);
        },
        toBounds: function (t) {
          var t = (180 * t) / 40075017,
            e = t / Math.cos((Math.PI / 180) * this.lat);
          return g([this.lat - t, this.lng - e], [this.lat + t, this.lng + e]);
        },
        clone: function () {
          return new v(this.lat, this.lng, this.alt);
        },
      }),
      wrapLatLng: function (t) {
        var e = this.wrapLng ? H(t.lng, this.wrapLng, !0) : t.lng;
        return new v(
          this.wrapLat ? H(t.lat, this.wrapLat, !0) : t.lat,
          e,
          t.alt
        );
      },
      wrapLatLngBounds: function (t) {
        var e = t.getCenter(),
          i = this.wrapLatLng(e),
          n = e.lat - i.lat,
          e = e.lng - i.lng;
        return 0 == n && 0 == e
          ? t
          : ((i = t.getSouthWest()),
            (t = t.getNorthEast()),
            new s(new v(i.lat - n, i.lng - e), new v(t.lat - n, t.lng - e)));
      },
    },
    st = l({}, ot, {
      wrapLng: [-180, 180],
      R: 6371e3,
      distance: function (t, e) {
        var i = Math.PI / 180,
          n = t.lat * i,
          o = e.lat * i,
          s = Math.sin(((e.lat - t.lat) * i) / 2),
          e = Math.sin(((e.lng - t.lng) * i) / 2),
          t = s * s + Math.cos(n) * Math.cos(o) * e * e,
          i = 2 * Math.atan2(Math.sqrt(t), Math.sqrt(1 - t));
        return this.R * i;
      },
    }),
    rt = 6378137,
    rt = {
      R: rt,
      MAX_LATITUDE: 85.0511287798,
      project: function (t) {
        var e = Math.PI / 180,
          i = this.MAX_LATITUDE,
          i = Math.max(Math.min(i, t.lat), -i),
          i = Math.sin(i * e);
        return new p(
          this.R * t.lng * e,
          (this.R * Math.log((1 + i) / (1 - i))) / 2
        );
      },
      unproject: function (t) {
        var e = 180 / Math.PI;
        return new v(
          (2 * Math.atan(Math.exp(t.y / this.R)) - Math.PI / 2) * e,
          (t.x * e) / this.R
        );
      },
      bounds: new f([-(rt = rt * Math.PI), -rt], [rt, rt]),
    };
  function at(t, e, i, n) {
    d(t)
      ? ((this._a = t[0]), (this._b = t[1]), (this._c = t[2]), (this._d = t[3]))
      : ((this._a = t), (this._b = e), (this._c = i), (this._d = n));
  }
  function ht(t, e, i, n) {
    return new at(t, e, i, n);
  }
  at.prototype = {
    transform: function (t, e) {
      return this._transform(t.clone(), e);
    },
    _transform: function (t, e) {
      return (
        (t.x = (e = e || 1) * (this._a * t.x + this._b)),
        (t.y = e * (this._c * t.y + this._d)),
        t
      );
    },
    untransform: function (t, e) {
      return new p(
        (t.x / (e = e || 1) - this._b) / this._a,
        (t.y / e - this._d) / this._c
      );
    },
  };
  var lt = l({}, st, {
      code: "EPSG:3857",
      projection: rt,
      transformation: ht((lt = 0.5 / (Math.PI * rt.R)), 0.5, -lt, 0.5),
    }),
    ut = l({}, lt, { code: "EPSG:900913" });
  function ct(t) {
    return document.createElementNS("http://www.w3.org/2000/svg", t);
  }
  function dt(t, e) {
    for (var i, n, o, s, r = "", a = 0, h = t.length; a < h; a++) {
      for (i = 0, n = (o = t[a]).length; i < n; i++)
        r += (i ? "L" : "M") + (s = o[i]).x + " " + s.y;
      r += e ? (b.svg ? "z" : "x") : "";
    }
    return r || "M0 0";
  }
  var _t = document.documentElement.style,
    pt = "ActiveXObject" in window,
    mt = pt && !document.addEventListener,
    n = "msLaunchUri" in navigator && !("documentMode" in document),
    ft = y("webkit"),
    gt = y("android"),
    vt = y("android 2") || y("android 3"),
    yt = parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10),
    yt = gt && y("Google") && yt < 537 && !("AudioNode" in window),
    xt = !!window.opera,
    wt = !n && y("chrome"),
    bt = y("gecko") && !ft && !xt && !pt,
    Pt = !wt && y("safari"),
    Lt = y("phantom"),
    o = "OTransition" in _t,
    Tt = 0 === navigator.platform.indexOf("Win"),
    Mt = pt && "transition" in _t,
    zt =
      "WebKitCSSMatrix" in window &&
      "m11" in new window.WebKitCSSMatrix() &&
      !vt,
    _t = "MozPerspective" in _t,
    Ct = !window.L_DISABLE_3D && (Mt || zt || _t) && !o && !Lt,
    Zt = "undefined" != typeof orientation || y("mobile"),
    St = Zt && ft,
    Et = Zt && zt,
    kt = !window.PointerEvent && window.MSPointerEvent,
    Ot = !(!window.PointerEvent && !kt),
    At = "ontouchstart" in window || !!window.TouchEvent,
    Bt = !window.L_NO_TOUCH && (At || Ot),
    It = Zt && xt,
    Rt = Zt && bt,
    Nt =
      1 <
      (window.devicePixelRatio ||
        window.screen.deviceXDPI / window.screen.logicalXDPI),
    Dt = (function () {
      var t = !1;
      try {
        var e = Object.defineProperty({}, "passive", {
          get: function () {
            t = !0;
          },
        });
        window.addEventListener("testPassiveEventSupport", u, e),
          window.removeEventListener("testPassiveEventSupport", u, e);
      } catch (t) {}
      return t;
    })(),
    jt = !!document.createElement("canvas").getContext,
    Ht = !(!document.createElementNS || !ct("svg").createSVGRect),
    Wt =
      !!Ht &&
      (((Wt = document.createElement("div")).innerHTML = "<svg/>"),
      "http://www.w3.org/2000/svg" ===
        (Wt.firstChild && Wt.firstChild.namespaceURI));
  function y(t) {
    return 0 <= navigator.userAgent.toLowerCase().indexOf(t);
  }
  var b = {
      ie: pt,
      ielt9: mt,
      edge: n,
      webkit: ft,
      android: gt,
      android23: vt,
      androidStock: yt,
      opera: xt,
      chrome: wt,
      gecko: bt,
      safari: Pt,
      phantom: Lt,
      opera12: o,
      win: Tt,
      ie3d: Mt,
      webkit3d: zt,
      gecko3d: _t,
      any3d: Ct,
      mobile: Zt,
      mobileWebkit: St,
      mobileWebkit3d: Et,
      msPointer: kt,
      pointer: Ot,
      touch: Bt,
      touchNative: At,
      mobileOpera: It,
      mobileGecko: Rt,
      retina: Nt,
      passiveEvents: Dt,
      canvas: jt,
      svg: Ht,
      vml:
        !Ht &&
        (function () {
          try {
            var t = document.createElement("div"),
              e = ((t.innerHTML = '<v:shape adj="1"/>'), t.firstChild);
            return (
              (e.style.behavior = "url(#default#VML)"),
              e && "object" == typeof e.adj
            );
          } catch (t) {
            return !1;
          }
        })(),
      inlineSvg: Wt,
      mac: 0 === navigator.platform.indexOf("Mac"),
      linux: 0 === navigator.platform.indexOf("Linux"),
    },
    Ft = b.msPointer ? "MSPointerDown" : "pointerdown",
    Ut = b.msPointer ? "MSPointerMove" : "pointermove",
    Vt = b.msPointer ? "MSPointerUp" : "pointerup",
    qt = b.msPointer ? "MSPointerCancel" : "pointercancel",
    Gt = { touchstart: Ft, touchmove: Ut, touchend: Vt, touchcancel: qt },
    Kt = {
      touchstart: function (t, e) {
        e.MSPOINTER_TYPE_TOUCH &&
          e.pointerType === e.MSPOINTER_TYPE_TOUCH &&
          O(e);
        ee(t, e);
      },
      touchmove: ee,
      touchend: ee,
      touchcancel: ee,
    },
    Yt = {},
    Xt = !1;
  function Jt(t, e, i) {
    return (
      "touchstart" !== e ||
        Xt ||
        (document.addEventListener(Ft, $t, !0),
        document.addEventListener(Ut, Qt, !0),
        document.addEventListener(Vt, te, !0),
        document.addEventListener(qt, te, !0),
        (Xt = !0)),
      Kt[e]
        ? ((i = Kt[e].bind(this, i)), t.addEventListener(Gt[e], i, !1), i)
        : (console.warn("wrong event specified:", e), u)
    );
  }
  function $t(t) {
    Yt[t.pointerId] = t;
  }
  function Qt(t) {
    Yt[t.pointerId] && (Yt[t.pointerId] = t);
  }
  function te(t) {
    delete Yt[t.pointerId];
  }
  function ee(t, e) {
    if (e.pointerType !== (e.MSPOINTER_TYPE_MOUSE || "mouse")) {
      for (var i in ((e.touches = []), Yt)) e.touches.push(Yt[i]);
      (e.changedTouches = [e]), t(e);
    }
  }
  var ie = 200;
  function ne(t, i) {
    t.addEventListener("dblclick", i);
    var n,
      o = 0;
    function e(t) {
      var e;
      1 !== t.detail
        ? (n = t.detail)
        : "mouse" === t.pointerType ||
          (t.sourceCapabilities && !t.sourceCapabilities.firesTouchEvents) ||
          ((e = Ne(t)).some(function (t) {
            return t instanceof HTMLLabelElement && t.attributes.for;
          }) &&
            !e.some(function (t) {
              return (
                t instanceof HTMLInputElement || t instanceof HTMLSelectElement
              );
            })) ||
          ((e = Date.now()) - o <= ie
            ? 2 === ++n &&
              i(
                (function (t) {
                  var e,
                    i,
                    n = {};
                  for (i in t) (e = t[i]), (n[i] = e && e.bind ? e.bind(t) : e);
                  return (
                    ((t = n).type = "dblclick"),
                    (n.detail = 2),
                    (n.isTrusted = !1),
                    (n._simulated = !0),
                    n
                  );
                })(t)
              )
            : (n = 1),
          (o = e));
    }
    return t.addEventListener("click", e), { dblclick: i, simDblclick: e };
  }
  var oe,
    se,
    re,
    ae,
    he,
    le,
    ue = we([
      "transform",
      "webkitTransform",
      "OTransform",
      "MozTransform",
      "msTransform",
    ]),
    ce = we([
      "webkitTransition",
      "transition",
      "OTransition",
      "MozTransition",
      "msTransition",
    ]),
    de =
      "webkitTransition" === ce || "OTransition" === ce
        ? ce + "End"
        : "transitionend";
  function _e(t) {
    return "string" == typeof t ? document.getElementById(t) : t;
  }
  function pe(t, e) {
    var i = t.style[e] || (t.currentStyle && t.currentStyle[e]);
    return "auto" ===
      (i =
        (i && "auto" !== i) || !document.defaultView
          ? i
          : (t = document.defaultView.getComputedStyle(t, null))
          ? t[e]
          : null)
      ? null
      : i;
  }
  function P(t, e, i) {
    t = document.createElement(t);
    return (t.className = e || ""), i && i.appendChild(t), t;
  }
  function T(t) {
    var e = t.parentNode;
    e && e.removeChild(t);
  }
  function me(t) {
    for (; t.firstChild; ) t.removeChild(t.firstChild);
  }
  function fe(t) {
    var e = t.parentNode;
    e && e.lastChild !== t && e.appendChild(t);
  }
  function ge(t) {
    var e = t.parentNode;
    e && e.firstChild !== t && e.insertBefore(t, e.firstChild);
  }
  function ve(t, e) {
    return void 0 !== t.classList
      ? t.classList.contains(e)
      : 0 < (t = xe(t)).length && new RegExp("(^|\\s)" + e + "(\\s|$)").test(t);
  }
  function M(t, e) {
    var i;
    if (void 0 !== t.classList)
      for (var n = F(e), o = 0, s = n.length; o < s; o++) t.classList.add(n[o]);
    else ve(t, e) || ye(t, ((i = xe(t)) ? i + " " : "") + e);
  }
  function z(t, e) {
    void 0 !== t.classList
      ? t.classList.remove(e)
      : ye(t, W((" " + xe(t) + " ").replace(" " + e + " ", " ")));
  }
  function ye(t, e) {
    void 0 === t.className.baseVal
      ? (t.className = e)
      : (t.className.baseVal = e);
  }
  function xe(t) {
    return void 0 ===
      (t = t.correspondingElement ? t.correspondingElement : t).className
        .baseVal
      ? t.className
      : t.className.baseVal;
  }
  function C(t, e) {
    if ("opacity" in t.style) t.style.opacity = e;
    else if ("filter" in t.style) {
      var i = !1,
        n = "DXImageTransform.Microsoft.Alpha";
      try {
        i = t.filters.item(n);
      } catch (t) {
        if (1 === e) return;
      }
      (e = Math.round(100 * e)),
        i
          ? ((i.Enabled = 100 !== e), (i.Opacity = e))
          : (t.style.filter += " progid:" + n + "(opacity=" + e + ")");
    }
  }
  function we(t) {
    for (var e = document.documentElement.style, i = 0; i < t.length; i++)
      if (t[i] in e) return t[i];
    return !1;
  }
  function be(t, e, i) {
    e = e || new p(0, 0);
    t.style[ue] =
      (b.ie3d
        ? "translate(" + e.x + "px," + e.y + "px)"
        : "translate3d(" + e.x + "px," + e.y + "px,0)") +
      (i ? " scale(" + i + ")" : "");
  }
  function Z(t, e) {
    (t._leaflet_pos = e),
      b.any3d
        ? be(t, e)
        : ((t.style.left = e.x + "px"), (t.style.top = e.y + "px"));
  }
  function Pe(t) {
    return t._leaflet_pos || new p(0, 0);
  }
  function Le() {
    S(window, "dragstart", O);
  }
  function Te() {
    k(window, "dragstart", O);
  }
  function Me(t) {
    for (; -1 === t.tabIndex; ) t = t.parentNode;
    t.style &&
      (ze(),
      (le = (he = t).style.outlineStyle),
      (t.style.outlineStyle = "none"),
      S(window, "keydown", ze));
  }
  function ze() {
    he &&
      ((he.style.outlineStyle = le),
      (le = he = void 0),
      k(window, "keydown", ze));
  }
  function Ce(t) {
    for (
      ;
      !(
        ((t = t.parentNode).offsetWidth && t.offsetHeight) ||
        t === document.body
      );

    );
    return t;
  }
  function Ze(t) {
    var e = t.getBoundingClientRect();
    return {
      x: e.width / t.offsetWidth || 1,
      y: e.height / t.offsetHeight || 1,
      boundingClientRect: e,
    };
  }
  ae =
    "onselectstart" in document
      ? ((re = function () {
          S(window, "selectstart", O);
        }),
        function () {
          k(window, "selectstart", O);
        })
      : ((se = we([
          "userSelect",
          "WebkitUserSelect",
          "OUserSelect",
          "MozUserSelect",
          "msUserSelect",
        ])),
        (re = function () {
          var t;
          se &&
            ((t = document.documentElement.style),
            (oe = t[se]),
            (t[se] = "none"));
        }),
        function () {
          se && ((document.documentElement.style[se] = oe), (oe = void 0));
        });
  pt = {
    __proto__: null,
    TRANSFORM: ue,
    TRANSITION: ce,
    TRANSITION_END: de,
    get: _e,
    getStyle: pe,
    create: P,
    remove: T,
    empty: me,
    toFront: fe,
    toBack: ge,
    hasClass: ve,
    addClass: M,
    removeClass: z,
    setClass: ye,
    getClass: xe,
    setOpacity: C,
    testProp: we,
    setTransform: be,
    setPosition: Z,
    getPosition: Pe,
    get disableTextSelection() {
      return re;
    },
    get enableTextSelection() {
      return ae;
    },
    disableImageDrag: Le,
    enableImageDrag: Te,
    preventOutline: Me,
    restoreOutline: ze,
    getSizedParentNode: Ce,
    getScale: Ze,
  };
  function S(t, e, i, n) {
    if (e && "object" == typeof e) for (var o in e) ke(t, o, e[o], i);
    else for (var s = 0, r = (e = F(e)).length; s < r; s++) ke(t, e[s], i, n);
    return this;
  }
  var E = "_leaflet_events";
  function k(t, e, i, n) {
    if (1 === arguments.length) Se(t), delete t[E];
    else if (e && "object" == typeof e) for (var o in e) Oe(t, o, e[o], i);
    else if (((e = F(e)), 2 === arguments.length))
      Se(t, function (t) {
        return -1 !== G(e, t);
      });
    else for (var s = 0, r = e.length; s < r; s++) Oe(t, e[s], i, n);
    return this;
  }
  function Se(t, e) {
    for (var i in t[E]) {
      var n = i.split(/\d/)[0];
      (e && !e(n)) || Oe(t, n, null, null, i);
    }
  }
  var Ee = {
    mouseenter: "mouseover",
    mouseleave: "mouseout",
    wheel: !("onwheel" in window) && "mousewheel",
  };
  function ke(e, t, i, n) {
    var o,
      s,
      r = t + h(i) + (n ? "_" + h(n) : "");
    (e[E] && e[E][r]) ||
      ((s = o =
        function (t) {
          return i.call(n || e, t || window.event);
        }),
      !b.touchNative && b.pointer && 0 === t.indexOf("touch")
        ? (o = Jt(e, t, o))
        : b.touch && "dblclick" === t
        ? (o = ne(e, o))
        : "addEventListener" in e
        ? "touchstart" === t ||
          "touchmove" === t ||
          "wheel" === t ||
          "mousewheel" === t
          ? e.addEventListener(
              Ee[t] || t,
              o,
              !!b.passiveEvents && { passive: !1 }
            )
          : "mouseenter" === t || "mouseleave" === t
          ? e.addEventListener(
              Ee[t],
              (o = function (t) {
                (t = t || window.event), We(e, t) && s(t);
              }),
              !1
            )
          : e.addEventListener(t, s, !1)
        : e.attachEvent("on" + t, o),
      (e[E] = e[E] || {}),
      (e[E][r] = o));
  }
  function Oe(t, e, i, n, o) {
    o = o || e + h(i) + (n ? "_" + h(n) : "");
    var s,
      r,
      i = t[E] && t[E][o];
    i &&
      (!b.touchNative && b.pointer && 0 === e.indexOf("touch")
        ? ((n = t),
          (r = i),
          Gt[(s = e)]
            ? n.removeEventListener(Gt[s], r, !1)
            : console.warn("wrong event specified:", s))
        : b.touch && "dblclick" === e
        ? ((n = i),
          (r = t).removeEventListener("dblclick", n.dblclick),
          r.removeEventListener("click", n.simDblclick))
        : "removeEventListener" in t
        ? t.removeEventListener(Ee[e] || e, i, !1)
        : t.detachEvent("on" + e, i),
      (t[E][o] = null));
  }
  function Ae(t) {
    return (
      t.stopPropagation
        ? t.stopPropagation()
        : t.originalEvent
        ? (t.originalEvent._stopped = !0)
        : (t.cancelBubble = !0),
      this
    );
  }
  function Be(t) {
    return ke(t, "wheel", Ae), this;
  }
  function Ie(t) {
    return (
      S(t, "mousedown touchstart dblclick contextmenu", Ae),
      (t._leaflet_disable_click = !0),
      this
    );
  }
  function O(t) {
    return t.preventDefault ? t.preventDefault() : (t.returnValue = !1), this;
  }
  function Re(t) {
    return O(t), Ae(t), this;
  }
  function Ne(t) {
    if (t.composedPath) return t.composedPath();
    for (var e = [], i = t.target; i; ) e.push(i), (i = i.parentNode);
    return e;
  }
  function De(t, e) {
    var i, n;
    return e
      ? ((n = (i = Ze(e)).boundingClientRect),
        new p(
          (t.clientX - n.left) / i.x - e.clientLeft,
          (t.clientY - n.top) / i.y - e.clientTop
        ))
      : new p(t.clientX, t.clientY);
  }
  var je =
    b.linux && b.chrome
      ? window.devicePixelRatio
      : b.mac
      ? 3 * window.devicePixelRatio
      : 0 < window.devicePixelRatio
      ? 2 * window.devicePixelRatio
      : 1;
  function He(t) {
    return b.edge
      ? t.wheelDeltaY / 2
      : t.deltaY && 0 === t.deltaMode
      ? -t.deltaY / je
      : t.deltaY && 1 === t.deltaMode
      ? 20 * -t.deltaY
      : t.deltaY && 2 === t.deltaMode
      ? 60 * -t.deltaY
      : t.deltaX || t.deltaZ
      ? 0
      : t.wheelDelta
      ? (t.wheelDeltaY || t.wheelDelta) / 2
      : t.detail && Math.abs(t.detail) < 32765
      ? 20 * -t.detail
      : t.detail
      ? (t.detail / -32765) * 60
      : 0;
  }
  function We(t, e) {
    var i = e.relatedTarget;
    if (!i) return !0;
    try {
      for (; i && i !== t; ) i = i.parentNode;
    } catch (t) {
      return !1;
    }
    return i !== t;
  }
  var mt = {
      __proto__: null,
      on: S,
      off: k,
      stopPropagation: Ae,
      disableScrollPropagation: Be,
      disableClickPropagation: Ie,
      preventDefault: O,
      stop: Re,
      getPropagationPath: Ne,
      getMousePosition: De,
      getWheelDelta: He,
      isExternalTarget: We,
      addListener: S,
      removeListener: k,
    },
    Fe = it.extend({
      run: function (t, e, i, n) {
        this.stop(),
          (this._el = t),
          (this._inProgress = !0),
          (this._duration = i || 0.25),
          (this._easeOutPower = 1 / Math.max(n || 0.5, 0.2)),
          (this._startPos = Pe(t)),
          (this._offset = e.subtract(this._startPos)),
          (this._startTime = +new Date()),
          this.fire("start"),
          this._animate();
      },
      stop: function () {
        this._inProgress && (this._step(!0), this._complete());
      },
      _animate: function () {
        (this._animId = x(this._animate, this)), this._step();
      },
      _step: function (t) {
        var e = +new Date() - this._startTime,
          i = 1e3 * this._duration;
        e < i
          ? this._runFrame(this._easeOut(e / i), t)
          : (this._runFrame(1), this._complete());
      },
      _runFrame: function (t, e) {
        t = this._startPos.add(this._offset.multiplyBy(t));
        e && t._round(), Z(this._el, t), this.fire("step");
      },
      _complete: function () {
        r(this._animId), (this._inProgress = !1), this.fire("end");
      },
      _easeOut: function (t) {
        return 1 - Math.pow(1 - t, this._easeOutPower);
      },
    }),
    A = it.extend({
      options: {
        crs: lt,
        center: void 0,
        zoom: void 0,
        minZoom: void 0,
        maxZoom: void 0,
        layers: [],
        maxBounds: void 0,
        renderer: void 0,
        zoomAnimation: !0,
        zoomAnimationThreshold: 4,
        fadeAnimation: !0,
        markerZoomAnimation: !0,
        transform3DLimit: 8388608,
        zoomSnap: 1,
        zoomDelta: 1,
        trackResize: !0,
      },
      initialize: function (t, e) {
        (e = c(this, e)),
          (this._handlers = []),
          (this._layers = {}),
          (this._zoomBoundLayers = {}),
          (this._sizeChanged = !0),
          this._initContainer(t),
          this._initLayout(),
          (this._onResize = a(this._onResize, this)),
          this._initEvents(),
          e.maxBounds && this.setMaxBounds(e.maxBounds),
          void 0 !== e.zoom && (this._zoom = this._limitZoom(e.zoom)),
          e.center &&
            void 0 !== e.zoom &&
            this.setView(w(e.center), e.zoom, { reset: !0 }),
          this.callInitHooks(),
          (this._zoomAnimated =
            ce && b.any3d && !b.mobileOpera && this.options.zoomAnimation),
          this._zoomAnimated &&
            (this._createAnimProxy(),
            S(this._proxy, de, this._catchTransitionEnd, this)),
          this._addLayers(this.options.layers);
      },
      setView: function (t, e, i) {
        if (
          ((e = void 0 === e ? this._zoom : this._limitZoom(e)),
          (t = this._limitCenter(w(t), e, this.options.maxBounds)),
          (i = i || {}),
          this._stop(),
          this._loaded && !i.reset && !0 !== i) &&
          (void 0 !== i.animate &&
            ((i.zoom = l({ animate: i.animate }, i.zoom)),
            (i.pan = l({ animate: i.animate, duration: i.duration }, i.pan))),
          this._zoom !== e
            ? this._tryAnimatedZoom && this._tryAnimatedZoom(t, e, i.zoom)
            : this._tryAnimatedPan(t, i.pan))
        )
          return clearTimeout(this._sizeTimer), this;
        return this._resetView(t, e, i.pan && i.pan.noMoveStart), this;
      },
      setZoom: function (t, e) {
        return this._loaded
          ? this.setView(this.getCenter(), t, { zoom: e })
          : ((this._zoom = t), this);
      },
      zoomIn: function (t, e) {
        return (
          (t = t || (b.any3d ? this.options.zoomDelta : 1)),
          this.setZoom(this._zoom + t, e)
        );
      },
      zoomOut: function (t, e) {
        return (
          (t = t || (b.any3d ? this.options.zoomDelta : 1)),
          this.setZoom(this._zoom - t, e)
        );
      },
      setZoomAround: function (t, e, i) {
        var n = this.getZoomScale(e),
          o = this.getSize().divideBy(2),
          t = (t instanceof p ? t : this.latLngToContainerPoint(t))
            .subtract(o)
            .multiplyBy(1 - 1 / n),
          n = this.containerPointToLatLng(o.add(t));
        return this.setView(n, e, { zoom: i });
      },
      _getBoundsCenterZoom: function (t, e) {
        (e = e || {}), (t = t.getBounds ? t.getBounds() : g(t));
        var i = m(e.paddingTopLeft || e.padding || [0, 0]),
          n = m(e.paddingBottomRight || e.padding || [0, 0]),
          o = this.getBoundsZoom(t, !1, i.add(n));
        return (o =
          "number" == typeof e.maxZoom ? Math.min(e.maxZoom, o) : o) ===
          1 / 0
          ? { center: t.getCenter(), zoom: o }
          : ((e = n.subtract(i).divideBy(2)),
            (n = this.project(t.getSouthWest(), o)),
            (i = this.project(t.getNorthEast(), o)),
            {
              center: this.unproject(n.add(i).divideBy(2).add(e), o),
              zoom: o,
            });
      },
      fitBounds: function (t, e) {
        if ((t = g(t)).isValid())
          return (
            (t = this._getBoundsCenterZoom(t, e)),
            this.setView(t.center, t.zoom, e)
          );
        throw new Error("Bounds are not valid.");
      },
      fitWorld: function (t) {
        return this.fitBounds(
          [
            [-90, -180],
            [90, 180],
          ],
          t
        );
      },
      panTo: function (t, e) {
        return this.setView(t, this._zoom, { pan: e });
      },
      panBy: function (t, e) {
        var i;
        return (
          (e = e || {}),
          (t = m(t).round()).x || t.y
            ? (!0 === e.animate || this.getSize().contains(t)
                ? (this._panAnim ||
                    ((this._panAnim = new Fe()),
                    this._panAnim.on(
                      {
                        step: this._onPanTransitionStep,
                        end: this._onPanTransitionEnd,
                      },
                      this
                    )),
                  e.noMoveStart || this.fire("movestart"),
                  !1 !== e.animate
                    ? (M(this._mapPane, "leaflet-pan-anim"),
                      (i = this._getMapPanePos().subtract(t).round()),
                      this._panAnim.run(
                        this._mapPane,
                        i,
                        e.duration || 0.25,
                        e.easeLinearity
                      ))
                    : (this._rawPanBy(t), this.fire("move").fire("moveend")))
                : this._resetView(
                    this.unproject(this.project(this.getCenter()).add(t)),
                    this.getZoom()
                  ),
              this)
            : this.fire("moveend")
        );
      },
      flyTo: function (n, o, t) {
        if (!1 === (t = t || {}).animate || !b.any3d)
          return this.setView(n, o, t);
        this._stop();
        var s = this.project(this.getCenter()),
          r = this.project(n),
          e = this.getSize(),
          a = this._zoom,
          h = ((n = w(n)), (o = void 0 === o ? a : o), Math.max(e.x, e.y)),
          i = h * this.getZoomScale(a, o),
          l = r.distanceTo(s) || 1,
          u = 1.42,
          c = u * u;
        function d(t) {
          (t =
            (i * i - h * h + (t ? -1 : 1) * c * c * l * l) /
            (2 * (t ? i : h) * c * l)),
            (t = Math.sqrt(t * t + 1) - t);
          return t < 1e-9 ? -18 : Math.log(t);
        }
        function _(t) {
          return (Math.exp(t) - Math.exp(-t)) / 2;
        }
        function p(t) {
          return (Math.exp(t) + Math.exp(-t)) / 2;
        }
        var m = d(0);
        function f(t) {
          return (h * (p(m) * (_((t = m + u * t)) / p(t)) - _(m))) / c;
        }
        var g = Date.now(),
          v = (d(1) - m) / u,
          y = t.duration ? 1e3 * t.duration : 1e3 * v * 0.8;
        return (
          this._moveStart(!0, t.noMoveStart),
          function t() {
            var e = (Date.now() - g) / y,
              i = (1 - Math.pow(1 - e, 1.5)) * v;
            e <= 1
              ? ((this._flyToFrame = x(t, this)),
                this._move(
                  this.unproject(s.add(r.subtract(s).multiplyBy(f(i) / l)), a),
                  this.getScaleZoom(
                    h / ((e = i), h * (p(m) / p(m + u * e))),
                    a
                  ),
                  { flyTo: !0 }
                ))
              : this._move(n, o)._moveEnd(!0);
          }.call(this),
          this
        );
      },
      flyToBounds: function (t, e) {
        t = this._getBoundsCenterZoom(t, e);
        return this.flyTo(t.center, t.zoom, e);
      },
      setMaxBounds: function (t) {
        return (
          (t = g(t)),
          this.listens("moveend", this._panInsideMaxBounds) &&
            this.off("moveend", this._panInsideMaxBounds),
          t.isValid()
            ? ((this.options.maxBounds = t),
              this._loaded && this._panInsideMaxBounds(),
              this.on("moveend", this._panInsideMaxBounds))
            : ((this.options.maxBounds = null), this)
        );
      },
      setMinZoom: function (t) {
        var e = this.options.minZoom;
        return (
          (this.options.minZoom = t),
          this._loaded &&
          e !== t &&
          (this.fire("zoomlevelschange"), this.getZoom() < this.options.minZoom)
            ? this.setZoom(t)
            : this
        );
      },
      setMaxZoom: function (t) {
        var e = this.options.maxZoom;
        return (
          (this.options.maxZoom = t),
          this._loaded &&
          e !== t &&
          (this.fire("zoomlevelschange"), this.getZoom() > this.options.maxZoom)
            ? this.setZoom(t)
            : this
        );
      },
      panInsideBounds: function (t, e) {
        this._enforcingBounds = !0;
        var i = this.getCenter(),
          t = this._limitCenter(i, this._zoom, g(t));
        return (
          i.equals(t) || this.panTo(t, e), (this._enforcingBounds = !1), this
        );
      },
      panInside: function (t, e) {
        var i = m((e = e || {}).paddingTopLeft || e.padding || [0, 0]),
          n = m(e.paddingBottomRight || e.padding || [0, 0]),
          o = this.project(this.getCenter()),
          t = this.project(t),
          s = this.getPixelBounds(),
          i = _([s.min.add(i), s.max.subtract(n)]),
          s = i.getSize();
        return (
          i.contains(t) ||
            ((this._enforcingBounds = !0),
            (n = t.subtract(i.getCenter())),
            (i = i.extend(t).getSize().subtract(s)),
            (o.x += n.x < 0 ? -i.x : i.x),
            (o.y += n.y < 0 ? -i.y : i.y),
            this.panTo(this.unproject(o), e),
            (this._enforcingBounds = !1)),
          this
        );
      },
      invalidateSize: function (t) {
        if (!this._loaded) return this;
        t = l({ animate: !1, pan: !0 }, !0 === t ? { animate: !0 } : t);
        var e = this.getSize(),
          i =
            ((this._sizeChanged = !0),
            (this._lastCenter = null),
            this.getSize()),
          n = e.divideBy(2).round(),
          o = i.divideBy(2).round(),
          n = n.subtract(o);
        return n.x || n.y
          ? (t.animate && t.pan
              ? this.panBy(n)
              : (t.pan && this._rawPanBy(n),
                this.fire("move"),
                t.debounceMoveend
                  ? (clearTimeout(this._sizeTimer),
                    (this._sizeTimer = setTimeout(
                      a(this.fire, this, "moveend"),
                      200
                    )))
                  : this.fire("moveend")),
            this.fire("resize", { oldSize: e, newSize: i }))
          : this;
      },
      stop: function () {
        return (
          this.setZoom(this._limitZoom(this._zoom)),
          this.options.zoomSnap || this.fire("viewreset"),
          this._stop()
        );
      },
      locate: function (t) {
        var e, i;
        return (
          (t = this._locateOptions = l({ timeout: 1e4, watch: !1 }, t)),
          "geolocation" in navigator
            ? ((e = a(this._handleGeolocationResponse, this)),
              (i = a(this._handleGeolocationError, this)),
              t.watch
                ? (this._locationWatchId = navigator.geolocation.watchPosition(
                    e,
                    i,
                    t
                  ))
                : navigator.geolocation.getCurrentPosition(e, i, t))
            : this._handleGeolocationError({
                code: 0,
                message: "Geolocation not supported.",
              }),
          this
        );
      },
      stopLocate: function () {
        return (
          navigator.geolocation &&
            navigator.geolocation.clearWatch &&
            navigator.geolocation.clearWatch(this._locationWatchId),
          this._locateOptions && (this._locateOptions.setView = !1),
          this
        );
      },
      _handleGeolocationError: function (t) {
        var e;
        this._container._leaflet_id &&
          ((e = t.code),
          (t =
            t.message ||
            (1 === e
              ? "permission denied"
              : 2 === e
              ? "position unavailable"
              : "timeout")),
          this._locateOptions.setView && !this._loaded && this.fitWorld(),
          this.fire("locationerror", {
            code: e,
            message: "Geolocation error: " + t + ".",
          }));
      },
      _handleGeolocationResponse: function (t) {
        if (this._container._leaflet_id) {
          var e,
            i,
            n = new v(t.coords.latitude, t.coords.longitude),
            o = n.toBounds(2 * t.coords.accuracy),
            s = this._locateOptions,
            r =
              (s.setView &&
                ((e = this.getBoundsZoom(o)),
                this.setView(n, s.maxZoom ? Math.min(e, s.maxZoom) : e)),
              { latlng: n, bounds: o, timestamp: t.timestamp });
          for (i in t.coords)
            "number" == typeof t.coords[i] && (r[i] = t.coords[i]);
          this.fire("locationfound", r);
        }
      },
      addHandler: function (t, e) {
        return (
          e &&
            ((e = this[t] = new e(this)),
            this._handlers.push(e),
            this.options[t] && e.enable()),
          this
        );
      },
      remove: function () {
        if (
          (this._initEvents(!0),
          this.options.maxBounds &&
            this.off("moveend", this._panInsideMaxBounds),
          this._containerId !== this._container._leaflet_id)
        )
          throw new Error("Map container is being reused by another instance");
        try {
          delete this._container._leaflet_id, delete this._containerId;
        } catch (t) {
          (this._container._leaflet_id = void 0), (this._containerId = void 0);
        }
        for (var t in (void 0 !== this._locationWatchId && this.stopLocate(),
        this._stop(),
        T(this._mapPane),
        this._clearControlPos && this._clearControlPos(),
        this._resizeRequest &&
          (r(this._resizeRequest), (this._resizeRequest = null)),
        this._clearHandlers(),
        this._loaded && this.fire("unload"),
        this._layers))
          this._layers[t].remove();
        for (t in this._panes) T(this._panes[t]);
        return (
          (this._layers = []),
          (this._panes = []),
          delete this._mapPane,
          delete this._renderer,
          this
        );
      },
      createPane: function (t, e) {
        e = P(
          "div",
          "leaflet-pane" +
            (t ? " leaflet-" + t.replace("Pane", "") + "-pane" : ""),
          e || this._mapPane
        );
        return t && (this._panes[t] = e), e;
      },
      getCenter: function () {
        return (
          this._checkIfLoaded(),
          this._lastCenter && !this._moved()
            ? this._lastCenter.clone()
            : this.layerPointToLatLng(this._getCenterLayerPoint())
        );
      },
      getZoom: function () {
        return this._zoom;
      },
      getBounds: function () {
        var t = this.getPixelBounds();
        return new s(
          this.unproject(t.getBottomLeft()),
          this.unproject(t.getTopRight())
        );
      },
      getMinZoom: function () {
        return void 0 === this.options.minZoom
          ? this._layersMinZoom || 0
          : this.options.minZoom;
      },
      getMaxZoom: function () {
        return void 0 === this.options.maxZoom
          ? void 0 === this._layersMaxZoom
            ? 1 / 0
            : this._layersMaxZoom
          : this.options.maxZoom;
      },
      getBoundsZoom: function (t, e, i) {
        (t = g(t)), (i = m(i || [0, 0]));
        var n = this.getZoom() || 0,
          o = this.getMinZoom(),
          s = this.getMaxZoom(),
          r = t.getNorthWest(),
          t = t.getSouthEast(),
          i = this.getSize().subtract(i),
          t = _(this.project(t, n), this.project(r, n)).getSize(),
          r = b.any3d ? this.options.zoomSnap : 1,
          a = i.x / t.x,
          i = i.y / t.y,
          t = e ? Math.max(a, i) : Math.min(a, i),
          n = this.getScaleZoom(t, n);
        return (
          r &&
            ((n = Math.round(n / (r / 100)) * (r / 100)),
            (n = e ? Math.ceil(n / r) * r : Math.floor(n / r) * r)),
          Math.max(o, Math.min(s, n))
        );
      },
      getSize: function () {
        return (
          (this._size && !this._sizeChanged) ||
            ((this._size = new p(
              this._container.clientWidth || 0,
              this._container.clientHeight || 0
            )),
            (this._sizeChanged = !1)),
          this._size.clone()
        );
      },
      getPixelBounds: function (t, e) {
        t = this._getTopLeftPoint(t, e);
        return new f(t, t.add(this.getSize()));
      },
      getPixelOrigin: function () {
        return this._checkIfLoaded(), this._pixelOrigin;
      },
      getPixelWorldBounds: function (t) {
        return this.options.crs.getProjectedBounds(
          void 0 === t ? this.getZoom() : t
        );
      },
      getPane: function (t) {
        return "string" == typeof t ? this._panes[t] : t;
      },
      getPanes: function () {
        return this._panes;
      },
      getContainer: function () {
        return this._container;
      },
      getZoomScale: function (t, e) {
        var i = this.options.crs;
        return (e = void 0 === e ? this._zoom : e), i.scale(t) / i.scale(e);
      },
      getScaleZoom: function (t, e) {
        var i = this.options.crs,
          t = ((e = void 0 === e ? this._zoom : e), i.zoom(t * i.scale(e)));
        return isNaN(t) ? 1 / 0 : t;
      },
      project: function (t, e) {
        return (
          (e = void 0 === e ? this._zoom : e),
          this.options.crs.latLngToPoint(w(t), e)
        );
      },
      unproject: function (t, e) {
        return (
          (e = void 0 === e ? this._zoom : e),
          this.options.crs.pointToLatLng(m(t), e)
        );
      },
      layerPointToLatLng: function (t) {
        t = m(t).add(this.getPixelOrigin());
        return this.unproject(t);
      },
      latLngToLayerPoint: function (t) {
        return this.project(w(t))._round()._subtract(this.getPixelOrigin());
      },
      wrapLatLng: function (t) {
        return this.options.crs.wrapLatLng(w(t));
      },
      wrapLatLngBounds: function (t) {
        return this.options.crs.wrapLatLngBounds(g(t));
      },
      distance: function (t, e) {
        return this.options.crs.distance(w(t), w(e));
      },
      containerPointToLayerPoint: function (t) {
        return m(t).subtract(this._getMapPanePos());
      },
      layerPointToContainerPoint: function (t) {
        return m(t).add(this._getMapPanePos());
      },
      containerPointToLatLng: function (t) {
        t = this.containerPointToLayerPoint(m(t));
        return this.layerPointToLatLng(t);
      },
      latLngToContainerPoint: function (t) {
        return this.layerPointToContainerPoint(this.latLngToLayerPoint(w(t)));
      },
      mouseEventToContainerPoint: function (t) {
        return De(t, this._container);
      },
      mouseEventToLayerPoint: function (t) {
        return this.containerPointToLayerPoint(
          this.mouseEventToContainerPoint(t)
        );
      },
      mouseEventToLatLng: function (t) {
        return this.layerPointToLatLng(this.mouseEventToLayerPoint(t));
      },
      _initContainer: function (t) {
        t = this._container = _e(t);
        if (!t) throw new Error("Map container not found.");
        if (t._leaflet_id)
          throw new Error("Map container is already initialized.");
        S(t, "scroll", this._onScroll, this), (this._containerId = h(t));
      },
      _initLayout: function () {
        var t = this._container,
          e =
            ((this._fadeAnimated = this.options.fadeAnimation && b.any3d),
            M(
              t,
              "leaflet-container" +
                (b.touch ? " leaflet-touch" : "") +
                (b.retina ? " leaflet-retina" : "") +
                (b.ielt9 ? " leaflet-oldie" : "") +
                (b.safari ? " leaflet-safari" : "") +
                (this._fadeAnimated ? " leaflet-fade-anim" : "")
            ),
            pe(t, "position"));
        "absolute" !== e &&
          "relative" !== e &&
          "fixed" !== e &&
          "sticky" !== e &&
          (t.style.position = "relative"),
          this._initPanes(),
          this._initControlPos && this._initControlPos();
      },
      _initPanes: function () {
        var t = (this._panes = {});
        (this._paneRenderers = {}),
          (this._mapPane = this.createPane("mapPane", this._container)),
          Z(this._mapPane, new p(0, 0)),
          this.createPane("tilePane"),
          this.createPane("overlayPane"),
          this.createPane("shadowPane"),
          this.createPane("markerPane"),
          this.createPane("tooltipPane"),
          this.createPane("popupPane"),
          this.options.markerZoomAnimation ||
            (M(t.markerPane, "leaflet-zoom-hide"),
            M(t.shadowPane, "leaflet-zoom-hide"));
      },
      _resetView: function (t, e, i) {
        Z(this._mapPane, new p(0, 0));
        var n = !this._loaded,
          o =
            ((this._loaded = !0),
            (e = this._limitZoom(e)),
            this.fire("viewprereset"),
            this._zoom !== e);
        this._moveStart(o, i)._move(t, e)._moveEnd(o),
          this.fire("viewreset"),
          n && this.fire("load");
      },
      _moveStart: function (t, e) {
        return t && this.fire("zoomstart"), e || this.fire("movestart"), this;
      },
      _move: function (t, e, i, n) {
        void 0 === e && (e = this._zoom);
        var o = this._zoom !== e;
        return (
          (this._zoom = e),
          (this._lastCenter = t),
          (this._pixelOrigin = this._getNewPixelOrigin(t)),
          n
            ? i && i.pinch && this.fire("zoom", i)
            : ((o || (i && i.pinch)) && this.fire("zoom", i),
              this.fire("move", i)),
          this
        );
      },
      _moveEnd: function (t) {
        return t && this.fire("zoomend"), this.fire("moveend");
      },
      _stop: function () {
        return r(this._flyToFrame), this._panAnim && this._panAnim.stop(), this;
      },
      _rawPanBy: function (t) {
        Z(this._mapPane, this._getMapPanePos().subtract(t));
      },
      _getZoomSpan: function () {
        return this.getMaxZoom() - this.getMinZoom();
      },
      _panInsideMaxBounds: function () {
        this._enforcingBounds || this.panInsideBounds(this.options.maxBounds);
      },
      _checkIfLoaded: function () {
        if (!this._loaded) throw new Error("Set map center and zoom first.");
      },
      _initEvents: function (t) {
        this._targets = {};
        var e = t ? k : S;
        e(
          (this._targets[h(this._container)] = this)._container,
          "click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",
          this._handleDOMEvent,
          this
        ),
          this.options.trackResize && e(window, "resize", this._onResize, this),
          b.any3d &&
            this.options.transform3DLimit &&
            (t ? this.off : this.on).call(this, "moveend", this._onMoveEnd);
      },
      _onResize: function () {
        r(this._resizeRequest),
          (this._resizeRequest = x(function () {
            this.invalidateSize({ debounceMoveend: !0 });
          }, this));
      },
      _onScroll: function () {
        (this._container.scrollTop = 0), (this._container.scrollLeft = 0);
      },
      _onMoveEnd: function () {
        var t = this._getMapPanePos();
        Math.max(Math.abs(t.x), Math.abs(t.y)) >=
          this.options.transform3DLimit &&
          this._resetView(this.getCenter(), this.getZoom());
      },
      _findEventTargets: function (t, e) {
        for (
          var i,
            n = [],
            o = "mouseout" === e || "mouseover" === e,
            s = t.target || t.srcElement,
            r = !1;
          s;

        ) {
          if (
            (i = this._targets[h(s)]) &&
            ("click" === e || "preclick" === e) &&
            this._draggableMoved(i)
          ) {
            r = !0;
            break;
          }
          if (i && i.listens(e, !0)) {
            if (o && !We(s, t)) break;
            if ((n.push(i), o)) break;
          }
          if (s === this._container) break;
          s = s.parentNode;
        }
        return (n = n.length || r || o || !this.listens(e, !0) ? n : [this]);
      },
      _isClickDisabled: function (t) {
        for (; t && t !== this._container; ) {
          if (t._leaflet_disable_click) return !0;
          t = t.parentNode;
        }
      },
      _handleDOMEvent: function (t) {
        var e,
          i = t.target || t.srcElement;
        !this._loaded ||
          i._leaflet_disable_events ||
          ("click" === t.type && this._isClickDisabled(i)) ||
          ("mousedown" === (e = t.type) && Me(i), this._fireDOMEvent(t, e));
      },
      _mouseEvents: [
        "click",
        "dblclick",
        "mouseover",
        "mouseout",
        "contextmenu",
      ],
      _fireDOMEvent: function (t, e, i) {
        "click" === t.type &&
          (((a = l({}, t)).type = "preclick"),
          this._fireDOMEvent(a, a.type, i));
        var n = this._findEventTargets(t, e);
        if (i) {
          for (var o = [], s = 0; s < i.length; s++)
            i[s].listens(e, !0) && o.push(i[s]);
          n = o.concat(n);
        }
        if (n.length) {
          "contextmenu" === e && O(t);
          var r,
            a = n[0],
            h = { originalEvent: t };
          for (
            "keypress" !== t.type &&
              "keydown" !== t.type &&
              "keyup" !== t.type &&
              ((r = a.getLatLng && (!a._radius || a._radius <= 10)),
              (h.containerPoint = r
                ? this.latLngToContainerPoint(a.getLatLng())
                : this.mouseEventToContainerPoint(t)),
              (h.layerPoint = this.containerPointToLayerPoint(
                h.containerPoint
              )),
              (h.latlng = r
                ? a.getLatLng()
                : this.layerPointToLatLng(h.layerPoint))),
              s = 0;
            s < n.length;
            s++
          )
            if (
              (n[s].fire(e, h, !0),
              h.originalEvent._stopped ||
                (!1 === n[s].options.bubblingMouseEvents &&
                  -1 !== G(this._mouseEvents, e)))
            )
              return;
        }
      },
      _draggableMoved: function (t) {
        return (
          ((t = t.dragging && t.dragging.enabled() ? t : this).dragging &&
            t.dragging.moved()) ||
          (this.boxZoom && this.boxZoom.moved())
        );
      },
      _clearHandlers: function () {
        for (var t = 0, e = this._handlers.length; t < e; t++)
          this._handlers[t].disable();
      },
      whenReady: function (t, e) {
        return (
          this._loaded
            ? t.call(e || this, { target: this })
            : this.on("load", t, e),
          this
        );
      },
      _getMapPanePos: function () {
        return Pe(this._mapPane) || new p(0, 0);
      },
      _moved: function () {
        var t = this._getMapPanePos();
        return t && !t.equals([0, 0]);
      },
      _getTopLeftPoint: function (t, e) {
        return (
          t && void 0 !== e
            ? this._getNewPixelOrigin(t, e)
            : this.getPixelOrigin()
        ).subtract(this._getMapPanePos());
      },
      _getNewPixelOrigin: function (t, e) {
        var i = this.getSize()._divideBy(2);
        return this.project(t, e)
          ._subtract(i)
          ._add(this._getMapPanePos())
          ._round();
      },
      _latLngToNewLayerPoint: function (t, e, i) {
        i = this._getNewPixelOrigin(i, e);
        return this.project(t, e)._subtract(i);
      },
      _latLngBoundsToNewLayerBounds: function (t, e, i) {
        i = this._getNewPixelOrigin(i, e);
        return _([
          this.project(t.getSouthWest(), e)._subtract(i),
          this.project(t.getNorthWest(), e)._subtract(i),
          this.project(t.getSouthEast(), e)._subtract(i),
          this.project(t.getNorthEast(), e)._subtract(i),
        ]);
      },
      _getCenterLayerPoint: function () {
        return this.containerPointToLayerPoint(this.getSize()._divideBy(2));
      },
      _getCenterOffset: function (t) {
        return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint());
      },
      _limitCenter: function (t, e, i) {
        var n, o;
        return !i ||
          ((n = this.project(t, e)),
          (o = this.getSize().divideBy(2)),
          (o = new f(n.subtract(o), n.add(o))),
          (o = this._getBoundsOffset(o, i, e)),
          Math.abs(o.x) <= 1 && Math.abs(o.y) <= 1)
          ? t
          : this.unproject(n.add(o), e);
      },
      _limitOffset: function (t, e) {
        var i;
        return e
          ? ((i = new f((i = this.getPixelBounds()).min.add(t), i.max.add(t))),
            t.add(this._getBoundsOffset(i, e)))
          : t;
      },
      _getBoundsOffset: function (t, e, i) {
        (e = _(
          this.project(e.getNorthEast(), i),
          this.project(e.getSouthWest(), i)
        )),
          (i = e.min.subtract(t.min)),
          (e = e.max.subtract(t.max));
        return new p(this._rebound(i.x, -e.x), this._rebound(i.y, -e.y));
      },
      _rebound: function (t, e) {
        return 0 < t + e
          ? Math.round(t - e) / 2
          : Math.max(0, Math.ceil(t)) - Math.max(0, Math.floor(e));
      },
      _limitZoom: function (t) {
        var e = this.getMinZoom(),
          i = this.getMaxZoom(),
          n = b.any3d ? this.options.zoomSnap : 1;
        return n && (t = Math.round(t / n) * n), Math.max(e, Math.min(i, t));
      },
      _onPanTransitionStep: function () {
        this.fire("move");
      },
      _onPanTransitionEnd: function () {
        z(this._mapPane, "leaflet-pan-anim"), this.fire("moveend");
      },
      _tryAnimatedPan: function (t, e) {
        t = this._getCenterOffset(t)._trunc();
        return (
          !(!0 !== (e && e.animate) && !this.getSize().contains(t)) &&
          (this.panBy(t, e), !0)
        );
      },
      _createAnimProxy: function () {
        var t = (this._proxy = P("div", "leaflet-proxy leaflet-zoom-animated"));
        this._panes.mapPane.appendChild(t),
          this.on(
            "zoomanim",
            function (t) {
              var e = ue,
                i = this._proxy.style[e];
              be(
                this._proxy,
                this.project(t.center, t.zoom),
                this.getZoomScale(t.zoom, 1)
              ),
                i === this._proxy.style[e] &&
                  this._animatingZoom &&
                  this._onZoomTransitionEnd();
            },
            this
          ),
          this.on("load moveend", this._animMoveEnd, this),
          this._on("unload", this._destroyAnimProxy, this);
      },
      _destroyAnimProxy: function () {
        T(this._proxy),
          this.off("load moveend", this._animMoveEnd, this),
          delete this._proxy;
      },
      _animMoveEnd: function () {
        var t = this.getCenter(),
          e = this.getZoom();
        be(this._proxy, this.project(t, e), this.getZoomScale(e, 1));
      },
      _catchTransitionEnd: function (t) {
        this._animatingZoom &&
          0 <= t.propertyName.indexOf("transform") &&
          this._onZoomTransitionEnd();
      },
      _nothingToAnimate: function () {
        return !this._container.getElementsByClassName("leaflet-zoom-animated")
          .length;
      },
      _tryAnimatedZoom: function (t, e, i) {
        if (!this._animatingZoom) {
          if (
            ((i = i || {}),
            !this._zoomAnimated ||
              !1 === i.animate ||
              this._nothingToAnimate() ||
              Math.abs(e - this._zoom) > this.options.zoomAnimationThreshold)
          )
            return !1;
          var n = this.getZoomScale(e),
            n = this._getCenterOffset(t)._divideBy(1 - 1 / n);
          if (!0 !== i.animate && !this.getSize().contains(n)) return !1;
          x(function () {
            this._moveStart(!0, i.noMoveStart || !1)._animateZoom(t, e, !0);
          }, this);
        }
        return !0;
      },
      _animateZoom: function (t, e, i, n) {
        this._mapPane &&
          (i &&
            ((this._animatingZoom = !0),
            (this._animateToCenter = t),
            (this._animateToZoom = e),
            M(this._mapPane, "leaflet-zoom-anim")),
          this.fire("zoomanim", { center: t, zoom: e, noUpdate: n }),
          this._tempFireZoomEvent ||
            (this._tempFireZoomEvent = this._zoom !== this._animateToZoom),
          this._move(this._animateToCenter, this._animateToZoom, void 0, !0),
          setTimeout(a(this._onZoomTransitionEnd, this), 250));
      },
      _onZoomTransitionEnd: function () {
        this._animatingZoom &&
          (this._mapPane && z(this._mapPane, "leaflet-zoom-anim"),
          (this._animatingZoom = !1),
          this._move(this._animateToCenter, this._animateToZoom, void 0, !0),
          this._tempFireZoomEvent && this.fire("zoom"),
          delete this._tempFireZoomEvent,
          this.fire("move"),
          this._moveEnd(!0));
      },
    });
  function Ue(t) {
    return new B(t);
  }
  var B = et.extend({
      options: { position: "topright" },
      initialize: function (t) {
        c(this, t);
      },
      getPosition: function () {
        return this.options.position;
      },
      setPosition: function (t) {
        var e = this._map;
        return (
          e && e.removeControl(this),
          (this.options.position = t),
          e && e.addControl(this),
          this
        );
      },
      getContainer: function () {
        return this._container;
      },
      addTo: function (t) {
        this.remove(), (this._map = t);
        var e = (this._container = this.onAdd(t)),
          i = this.getPosition(),
          t = t._controlCorners[i];
        return (
          M(e, "leaflet-control"),
          -1 !== i.indexOf("bottom")
            ? t.insertBefore(e, t.firstChild)
            : t.appendChild(e),
          this._map.on("unload", this.remove, this),
          this
        );
      },
      remove: function () {
        return (
          this._map &&
            (T(this._container),
            this.onRemove && this.onRemove(this._map),
            this._map.off("unload", this.remove, this),
            (this._map = null)),
          this
        );
      },
      _refocusOnMap: function (t) {
        this._map &&
          t &&
          0 < t.screenX &&
          0 < t.screenY &&
          this._map.getContainer().focus();
      },
    }),
    Ve =
      (A.include({
        addControl: function (t) {
          return t.addTo(this), this;
        },
        removeControl: function (t) {
          return t.remove(), this;
        },
        _initControlPos: function () {
          var i = (this._controlCorners = {}),
            n = "leaflet-",
            o = (this._controlContainer = P(
              "div",
              n + "control-container",
              this._container
            ));
          function t(t, e) {
            i[t + e] = P("div", n + t + " " + n + e, o);
          }
          t("top", "left"),
            t("top", "right"),
            t("bottom", "left"),
            t("bottom", "right");
        },
        _clearControlPos: function () {
          for (var t in this._controlCorners) T(this._controlCorners[t]);
          T(this._controlContainer),
            delete this._controlCorners,
            delete this._controlContainer;
        },
      }),
      B.extend({
        options: {
          collapsed: !0,
          position: "topright",
          autoZIndex: !0,
          hideSingleBase: !1,
          sortLayers: !1,
          sortFunction: function (t, e, i, n) {
            return i < n ? -1 : n < i ? 1 : 0;
          },
        },
        initialize: function (t, e, i) {
          for (var n in (c(this, i),
          (this._layerControlInputs = []),
          (this._layers = []),
          (this._lastZIndex = 0),
          (this._handlingClick = !1),
          (this._preventClick = !1),
          t))
            this._addLayer(t[n], n);
          for (n in e) this._addLayer(e[n], n, !0);
        },
        onAdd: function (t) {
          this._initLayout(),
            this._update(),
            (this._map = t).on("zoomend", this._checkDisabledLayers, this);
          for (var e = 0; e < this._layers.length; e++)
            this._layers[e].layer.on("add remove", this._onLayerChange, this);
          return this._container;
        },
        addTo: function (t) {
          return B.prototype.addTo.call(this, t), this._expandIfNotCollapsed();
        },
        onRemove: function () {
          this._map.off("zoomend", this._checkDisabledLayers, this);
          for (var t = 0; t < this._layers.length; t++)
            this._layers[t].layer.off("add remove", this._onLayerChange, this);
        },
        addBaseLayer: function (t, e) {
          return this._addLayer(t, e), this._map ? this._update() : this;
        },
        addOverlay: function (t, e) {
          return this._addLayer(t, e, !0), this._map ? this._update() : this;
        },
        removeLayer: function (t) {
          t.off("add remove", this._onLayerChange, this);
          t = this._getLayer(h(t));
          return (
            t && this._layers.splice(this._layers.indexOf(t), 1),
            this._map ? this._update() : this
          );
        },
        expand: function () {
          M(this._container, "leaflet-control-layers-expanded"),
            (this._section.style.height = null);
          var t = this._map.getSize().y - (this._container.offsetTop + 50);
          return (
            t < this._section.clientHeight
              ? (M(this._section, "leaflet-control-layers-scrollbar"),
                (this._section.style.height = t + "px"))
              : z(this._section, "leaflet-control-layers-scrollbar"),
            this._checkDisabledLayers(),
            this
          );
        },
        collapse: function () {
          return z(this._container, "leaflet-control-layers-expanded"), this;
        },
        _initLayout: function () {
          var t = "leaflet-control-layers",
            e = (this._container = P("div", t)),
            i = this.options.collapsed,
            n =
              (e.setAttribute("aria-haspopup", !0),
              Ie(e),
              Be(e),
              (this._section = P("section", t + "-list"))),
            o =
              (i &&
                (this._map.on("click", this.collapse, this),
                S(
                  e,
                  { mouseenter: this._expandSafely, mouseleave: this.collapse },
                  this
                )),
              (this._layersLink = P("a", t + "-toggle", e)));
          (o.href = "#"),
            (o.title = "Layers"),
            o.setAttribute("role", "button"),
            S(
              o,
              {
                keydown: function (t) {
                  13 === t.keyCode && this._expandSafely();
                },
                click: function (t) {
                  O(t), this._expandSafely();
                },
              },
              this
            ),
            i || this.expand(),
            (this._baseLayersList = P("div", t + "-base", n)),
            (this._separator = P("div", t + "-separator", n)),
            (this._overlaysList = P("div", t + "-overlays", n)),
            e.appendChild(n);
        },
        _getLayer: function (t) {
          for (var e = 0; e < this._layers.length; e++)
            if (this._layers[e] && h(this._layers[e].layer) === t)
              return this._layers[e];
        },
        _addLayer: function (t, e, i) {
          this._map && t.on("add remove", this._onLayerChange, this),
            this._layers.push({ layer: t, name: e, overlay: i }),
            this.options.sortLayers &&
              this._layers.sort(
                a(function (t, e) {
                  return this.options.sortFunction(
                    t.layer,
                    e.layer,
                    t.name,
                    e.name
                  );
                }, this)
              ),
            this.options.autoZIndex &&
              t.setZIndex &&
              (this._lastZIndex++, t.setZIndex(this._lastZIndex)),
            this._expandIfNotCollapsed();
        },
        _update: function () {
          if (this._container) {
            me(this._baseLayersList),
              me(this._overlaysList),
              (this._layerControlInputs = []);
            for (var t, e, i, n = 0, o = 0; o < this._layers.length; o++)
              (i = this._layers[o]),
                this._addItem(i),
                (e = e || i.overlay),
                (t = t || !i.overlay),
                (n += i.overlay ? 0 : 1);
            this.options.hideSingleBase &&
              (this._baseLayersList.style.display = (t = t && 1 < n)
                ? ""
                : "none"),
              (this._separator.style.display = e && t ? "" : "none");
          }
          return this;
        },
        _onLayerChange: function (t) {
          this._handlingClick || this._update();
          var e = this._getLayer(h(t.target)),
            t = e.overlay
              ? "add" === t.type
                ? "overlayadd"
                : "overlayremove"
              : "add" === t.type
              ? "baselayerchange"
              : null;
          t && this._map.fire(t, e);
        },
        _createRadioElement: function (t, e) {
          (t =
            '<input type="radio" class="leaflet-control-layers-selector" name="' +
            t +
            '"' +
            (e ? ' checked="checked"' : "") +
            "/>"),
            (e = document.createElement("div"));
          return (e.innerHTML = t), e.firstChild;
        },
        _addItem: function (t) {
          var e,
            i = document.createElement("label"),
            n = this._map.hasLayer(t.layer),
            n =
              (t.overlay
                ? (((e = document.createElement("input")).type = "checkbox"),
                  (e.className = "leaflet-control-layers-selector"),
                  (e.defaultChecked = n))
                : (e = this._createRadioElement(
                    "leaflet-base-layers_" + h(this),
                    n
                  )),
              this._layerControlInputs.push(e),
              (e.layerId = h(t.layer)),
              S(e, "click", this._onInputClick, this),
              document.createElement("span")),
            o = ((n.innerHTML = " " + t.name), document.createElement("span"));
          return (
            i.appendChild(o),
            o.appendChild(e),
            o.appendChild(n),
            (t.overlay ? this._overlaysList : this._baseLayersList).appendChild(
              i
            ),
            this._checkDisabledLayers(),
            i
          );
        },
        _onInputClick: function () {
          if (!this._preventClick) {
            var t,
              e,
              i = this._layerControlInputs,
              n = [],
              o = [];
            this._handlingClick = !0;
            for (var s = i.length - 1; 0 <= s; s--)
              (t = i[s]),
                (e = this._getLayer(t.layerId).layer),
                t.checked ? n.push(e) : t.checked || o.push(e);
            for (s = 0; s < o.length; s++)
              this._map.hasLayer(o[s]) && this._map.removeLayer(o[s]);
            for (s = 0; s < n.length; s++)
              this._map.hasLayer(n[s]) || this._map.addLayer(n[s]);
            (this._handlingClick = !1), this._refocusOnMap();
          }
        },
        _checkDisabledLayers: function () {
          for (
            var t,
              e,
              i = this._layerControlInputs,
              n = this._map.getZoom(),
              o = i.length - 1;
            0 <= o;
            o--
          )
            (t = i[o]),
              (e = this._getLayer(t.layerId).layer),
              (t.disabled =
                (void 0 !== e.options.minZoom && n < e.options.minZoom) ||
                (void 0 !== e.options.maxZoom && n > e.options.maxZoom));
        },
        _expandIfNotCollapsed: function () {
          return this._map && !this.options.collapsed && this.expand(), this;
        },
        _expandSafely: function () {
          var t = this._section,
            e =
              ((this._preventClick = !0),
              S(t, "click", O),
              this.expand(),
              this);
          setTimeout(function () {
            k(t, "click", O), (e._preventClick = !1);
          });
        },
      })),
    qe = B.extend({
      options: {
        position: "topleft",
        zoomInText: '<span aria-hidden="true">+</span>',
        zoomInTitle: "Zoom in",
        zoomOutText: '<span aria-hidden="true">&#x2212;</span>',
        zoomOutTitle: "Zoom out",
      },
      onAdd: function (t) {
        var e = "leaflet-control-zoom",
          i = P("div", e + " leaflet-bar"),
          n = this.options;
        return (
          (this._zoomInButton = this._createButton(
            n.zoomInText,
            n.zoomInTitle,
            e + "-in",
            i,
            this._zoomIn
          )),
          (this._zoomOutButton = this._createButton(
            n.zoomOutText,
            n.zoomOutTitle,
            e + "-out",
            i,
            this._zoomOut
          )),
          this._updateDisabled(),
          t.on("zoomend zoomlevelschange", this._updateDisabled, this),
          i
        );
      },
      onRemove: function (t) {
        t.off("zoomend zoomlevelschange", this._updateDisabled, this);
      },
      disable: function () {
        return (this._disabled = !0), this._updateDisabled(), this;
      },
      enable: function () {
        return (this._disabled = !1), this._updateDisabled(), this;
      },
      _zoomIn: function (t) {
        !this._disabled &&
          this._map._zoom < this._map.getMaxZoom() &&
          this._map.zoomIn(this._map.options.zoomDelta * (t.shiftKey ? 3 : 1));
      },
      _zoomOut: function (t) {
        !this._disabled &&
          this._map._zoom > this._map.getMinZoom() &&
          this._map.zoomOut(this._map.options.zoomDelta * (t.shiftKey ? 3 : 1));
      },
      _createButton: function (t, e, i, n, o) {
        i = P("a", i, n);
        return (
          (i.innerHTML = t),
          (i.href = "#"),
          (i.title = e),
          i.setAttribute("role", "button"),
          i.setAttribute("aria-label", e),
          Ie(i),
          S(i, "click", Re),
          S(i, "click", o, this),
          S(i, "click", this._refocusOnMap, this),
          i
        );
      },
      _updateDisabled: function () {
        var t = this._map,
          e = "leaflet-disabled";
        z(this._zoomInButton, e),
          z(this._zoomOutButton, e),
          this._zoomInButton.setAttribute("aria-disabled", "false"),
          this._zoomOutButton.setAttribute("aria-disabled", "false"),
          (!this._disabled && t._zoom !== t.getMinZoom()) ||
            (M(this._zoomOutButton, e),
            this._zoomOutButton.setAttribute("aria-disabled", "true")),
          (!this._disabled && t._zoom !== t.getMaxZoom()) ||
            (M(this._zoomInButton, e),
            this._zoomInButton.setAttribute("aria-disabled", "true"));
      },
    }),
    Ge =
      (A.mergeOptions({ zoomControl: !0 }),
      A.addInitHook(function () {
        this.options.zoomControl &&
          ((this.zoomControl = new qe()), this.addControl(this.zoomControl));
      }),
      B.extend({
        options: {
          position: "bottomleft",
          maxWidth: 100,
          metric: !0,
          imperial: !0,
        },
        onAdd: function (t) {
          var e = "leaflet-control-scale",
            i = P("div", e),
            n = this.options;
          return (
            this._addScales(n, e + "-line", i),
            t.on(n.updateWhenIdle ? "moveend" : "move", this._update, this),
            t.whenReady(this._update, this),
            i
          );
        },
        onRemove: function (t) {
          t.off(
            this.options.updateWhenIdle ? "moveend" : "move",
            this._update,
            this
          );
        },
        _addScales: function (t, e, i) {
          t.metric && (this._mScale = P("div", e, i)),
            t.imperial && (this._iScale = P("div", e, i));
        },
        _update: function () {
          var t = this._map,
            e = t.getSize().y / 2,
            t = t.distance(
              t.containerPointToLatLng([0, e]),
              t.containerPointToLatLng([this.options.maxWidth, e])
            );
          this._updateScales(t);
        },
        _updateScales: function (t) {
          this.options.metric && t && this._updateMetric(t),
            this.options.imperial && t && this._updateImperial(t);
        },
        _updateMetric: function (t) {
          var e = this._getRoundNum(t);
          this._updateScale(
            this._mScale,
            e < 1e3 ? e + " m" : e / 1e3 + " km",
            e / t
          );
        },
        _updateImperial: function (t) {
          var e,
            i,
            t = 3.2808399 * t;
          5280 < t
            ? ((i = this._getRoundNum((e = t / 5280))),
              this._updateScale(this._iScale, i + " mi", i / e))
            : ((i = this._getRoundNum(t)),
              this._updateScale(this._iScale, i + " ft", i / t));
        },
        _updateScale: function (t, e, i) {
          (t.style.width = Math.round(this.options.maxWidth * i) + "px"),
            (t.innerHTML = e);
        },
        _getRoundNum: function (t) {
          var e = Math.pow(10, (Math.floor(t) + "").length - 1),
            t = t / e;
          return (
            e * (t = 10 <= t ? 10 : 5 <= t ? 5 : 3 <= t ? 3 : 2 <= t ? 2 : 1)
          );
        },
      })),
    Ke = B.extend({
      options: {
        position: "bottomright",
        prefix:
          '<a href="https://leafletjs.com" title="A JavaScript library for interactive maps">' +
          (b.inlineSvg
            ? '<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="12" height="8" viewBox="0 0 12 8" class="leaflet-attribution-flag"><path fill="#4C7BE1" d="M0 0h12v4H0z"/><path fill="#FFD500" d="M0 4h12v3H0z"/><path fill="#E0BC00" d="M0 7h12v1H0z"/></svg> '
            : "") +
          "Leaflet</a>",
      },
      initialize: function (t) {
        c(this, t), (this._attributions = {});
      },
      onAdd: function (t) {
        for (var e in (((t.attributionControl = this)._container = P(
          "div",
          "leaflet-control-attribution"
        )),
        Ie(this._container),
        t._layers))
          t._layers[e].getAttribution &&
            this.addAttribution(t._layers[e].getAttribution());
        return (
          this._update(),
          t.on("layeradd", this._addAttribution, this),
          this._container
        );
      },
      onRemove: function (t) {
        t.off("layeradd", this._addAttribution, this);
      },
      _addAttribution: function (t) {
        t.layer.getAttribution &&
          (this.addAttribution(t.layer.getAttribution()),
          t.layer.once(
            "remove",
            function () {
              this.removeAttribution(t.layer.getAttribution());
            },
            this
          ));
      },
      setPrefix: function (t) {
        return (this.options.prefix = t), this._update(), this;
      },
      addAttribution: function (t) {
        return (
          t &&
            (this._attributions[t] || (this._attributions[t] = 0),
            this._attributions[t]++,
            this._update()),
          this
        );
      },
      removeAttribution: function (t) {
        return (
          t &&
            this._attributions[t] &&
            (this._attributions[t]--, this._update()),
          this
        );
      },
      _update: function () {
        if (this._map) {
          var t,
            e = [];
          for (t in this._attributions) this._attributions[t] && e.push(t);
          var i = [];
          this.options.prefix && i.push(this.options.prefix),
            e.length && i.push(e.join(", ")),
            (this._container.innerHTML = i.join(
              ' <span aria-hidden="true">|</span> '
            ));
        }
      },
    }),
    n =
      (A.mergeOptions({ attributionControl: !0 }),
      A.addInitHook(function () {
        this.options.attributionControl && new Ke().addTo(this);
      }),
      (B.Layers = Ve),
      (B.Zoom = qe),
      (B.Scale = Ge),
      (B.Attribution = Ke),
      (Ue.layers = function (t, e, i) {
        return new Ve(t, e, i);
      }),
      (Ue.zoom = function (t) {
        return new qe(t);
      }),
      (Ue.scale = function (t) {
        return new Ge(t);
      }),
      (Ue.attribution = function (t) {
        return new Ke(t);
      }),
      et.extend({
        initialize: function (t) {
          this._map = t;
        },
        enable: function () {
          return this._enabled || ((this._enabled = !0), this.addHooks()), this;
        },
        disable: function () {
          return (
            this._enabled && ((this._enabled = !1), this.removeHooks()), this
          );
        },
        enabled: function () {
          return !!this._enabled;
        },
      })),
    ft =
      ((n.addTo = function (t, e) {
        return t.addHandler(e, this), this;
      }),
      { Events: e }),
    Ye = b.touch ? "touchstart mousedown" : "mousedown",
    Xe = it.extend({
      options: { clickTolerance: 3 },
      initialize: function (t, e, i, n) {
        c(this, n),
          (this._element = t),
          (this._dragStartTarget = e || t),
          (this._preventOutline = i);
      },
      enable: function () {
        this._enabled ||
          (S(this._dragStartTarget, Ye, this._onDown, this),
          (this._enabled = !0));
      },
      disable: function () {
        this._enabled &&
          (Xe._dragging === this && this.finishDrag(!0),
          k(this._dragStartTarget, Ye, this._onDown, this),
          (this._enabled = !1),
          (this._moved = !1));
      },
      _onDown: function (t) {
        var e, i;
        this._enabled &&
          ((this._moved = !1),
          ve(this._element, "leaflet-zoom-anim") ||
            (t.touches && 1 !== t.touches.length
              ? Xe._dragging === this && this.finishDrag()
              : Xe._dragging ||
                t.shiftKey ||
                (1 !== t.which && 1 !== t.button && !t.touches) ||
                ((Xe._dragging = this)._preventOutline && Me(this._element),
                Le(),
                re(),
                this._moving ||
                  (this.fire("down"),
                  (i = t.touches ? t.touches[0] : t),
                  (e = Ce(this._element)),
                  (this._startPoint = new p(i.clientX, i.clientY)),
                  (this._startPos = Pe(this._element)),
                  (this._parentScale = Ze(e)),
                  (i = "mousedown" === t.type),
                  S(
                    document,
                    i ? "mousemove" : "touchmove",
                    this._onMove,
                    this
                  ),
                  S(
                    document,
                    i ? "mouseup" : "touchend touchcancel",
                    this._onUp,
                    this
                  )))));
      },
      _onMove: function (t) {
        var e;
        this._enabled &&
          (t.touches && 1 < t.touches.length
            ? (this._moved = !0)
            : (!(e = new p(
                (e =
                  t.touches && 1 === t.touches.length
                    ? t.touches[0]
                    : t).clientX,
                e.clientY
              )._subtract(this._startPoint)).x &&
                !e.y) ||
              Math.abs(e.x) + Math.abs(e.y) < this.options.clickTolerance ||
              ((e.x /= this._parentScale.x),
              (e.y /= this._parentScale.y),
              O(t),
              this._moved ||
                (this.fire("dragstart"),
                (this._moved = !0),
                M(document.body, "leaflet-dragging"),
                (this._lastTarget = t.target || t.srcElement),
                window.SVGElementInstance &&
                  this._lastTarget instanceof window.SVGElementInstance &&
                  (this._lastTarget = this._lastTarget.correspondingUseElement),
                M(this._lastTarget, "leaflet-drag-target")),
              (this._newPos = this._startPos.add(e)),
              (this._moving = !0),
              (this._lastEvent = t),
              this._updatePosition()));
      },
      _updatePosition: function () {
        var t = { originalEvent: this._lastEvent };
        this.fire("predrag", t),
          Z(this._element, this._newPos),
          this.fire("drag", t);
      },
      _onUp: function () {
        this._enabled && this.finishDrag();
      },
      finishDrag: function (t) {
        z(document.body, "leaflet-dragging"),
          this._lastTarget &&
            (z(this._lastTarget, "leaflet-drag-target"),
            (this._lastTarget = null)),
          k(document, "mousemove touchmove", this._onMove, this),
          k(document, "mouseup touchend touchcancel", this._onUp, this),
          Te(),
          ae();
        var e = this._moved && this._moving;
        (this._moving = !1),
          (Xe._dragging = !1),
          e &&
            this.fire("dragend", {
              noInertia: t,
              distance: this._newPos.distanceTo(this._startPos),
            });
      },
    });
  function Je(t, e, i) {
    for (
      var n, o, s, r, a, h, l, u = [1, 4, 2, 8], c = 0, d = t.length;
      c < d;
      c++
    )
      t[c]._code = si(t[c], e);
    for (s = 0; s < 4; s++) {
      for (h = u[s], n = [], c = 0, o = (d = t.length) - 1; c < d; o = c++)
        (r = t[c]),
          (a = t[o]),
          r._code & h
            ? a._code & h ||
              (((l = oi(a, r, h, e, i))._code = si(l, e)), n.push(l))
            : (a._code & h &&
                (((l = oi(a, r, h, e, i))._code = si(l, e)), n.push(l)),
              n.push(r));
      t = n;
    }
    return t;
  }
  function $e(t, e) {
    var i, n, o, s, r, a, h;
    if (!t || 0 === t.length) throw new Error("latlngs not passed");
    I(t) ||
      (console.warn("latlngs are not flat! Only the first ring will be used"),
      (t = t[0]));
    for (
      var l = w([0, 0]),
        u = g(t),
        c =
          (u.getNorthWest().distanceTo(u.getSouthWest()) *
            u.getNorthEast().distanceTo(u.getNorthWest()) <
            1700 && (l = Qe(t)),
          t.length),
        d = [],
        _ = 0;
      _ < c;
      _++
    ) {
      var p = w(t[_]);
      d.push(e.project(w([p.lat - l.lat, p.lng - l.lng])));
    }
    for (_ = r = a = h = 0, i = c - 1; _ < c; i = _++)
      (n = d[_]),
        (o = d[i]),
        (s = n.y * o.x - o.y * n.x),
        (a += (n.x + o.x) * s),
        (h += (n.y + o.y) * s),
        (r += 3 * s);
    (u = 0 === r ? d[0] : [a / r, h / r]), (u = e.unproject(m(u)));
    return w([u.lat + l.lat, u.lng + l.lng]);
  }
  function Qe(t) {
    for (var e = 0, i = 0, n = 0, o = 0; o < t.length; o++) {
      var s = w(t[o]);
      (e += s.lat), (i += s.lng), n++;
    }
    return w([e / n, i / n]);
  }
  var ti,
    gt = { __proto__: null, clipPolygon: Je, polygonCenter: $e, centroid: Qe };
  function ei(t, e) {
    if (e && t.length) {
      var i = (t = (function (t, e) {
          for (var i = [t[0]], n = 1, o = 0, s = t.length; n < s; n++)
            (function (t, e) {
              var i = e.x - t.x,
                e = e.y - t.y;
              return i * i + e * e;
            })(t[n], t[o]) > e && (i.push(t[n]), (o = n));
          o < s - 1 && i.push(t[s - 1]);
          return i;
        })(t, (e = e * e))),
        n = i.length,
        o = new (typeof Uint8Array != void 0 + "" ? Uint8Array : Array)(n);
      (o[0] = o[n - 1] = 1),
        (function t(e, i, n, o, s) {
          var r,
            a,
            h,
            l = 0;
          for (a = o + 1; a <= s - 1; a++)
            (h = ri(e[a], e[o], e[s], !0)), l < h && ((r = a), (l = h));
          n < l && ((i[r] = 1), t(e, i, n, o, r), t(e, i, n, r, s));
        })(i, o, e, 0, n - 1);
      var s,
        r = [];
      for (s = 0; s < n; s++) o[s] && r.push(i[s]);
      return r;
    }
    return t.slice();
  }
  function ii(t, e, i) {
    return Math.sqrt(ri(t, e, i, !0));
  }
  function ni(t, e, i, n, o) {
    var s,
      r,
      a,
      h = n ? ti : si(t, i),
      l = si(e, i);
    for (ti = l; ; ) {
      if (!(h | l)) return [t, e];
      if (h & l) return !1;
      (a = si((r = oi(t, e, (s = h || l), i, o)), i)),
        s === h ? ((t = r), (h = a)) : ((e = r), (l = a));
    }
  }
  function oi(t, e, i, n, o) {
    var s,
      r,
      a = e.x - t.x,
      e = e.y - t.y,
      h = n.min,
      n = n.max;
    return (
      8 & i
        ? ((s = t.x + (a * (n.y - t.y)) / e), (r = n.y))
        : 4 & i
        ? ((s = t.x + (a * (h.y - t.y)) / e), (r = h.y))
        : 2 & i
        ? ((s = n.x), (r = t.y + (e * (n.x - t.x)) / a))
        : 1 & i && ((s = h.x), (r = t.y + (e * (h.x - t.x)) / a)),
      new p(s, r, o)
    );
  }
  function si(t, e) {
    var i = 0;
    return (
      t.x < e.min.x ? (i |= 1) : t.x > e.max.x && (i |= 2),
      t.y < e.min.y ? (i |= 4) : t.y > e.max.y && (i |= 8),
      i
    );
  }
  function ri(t, e, i, n) {
    var o = e.x,
      e = e.y,
      s = i.x - o,
      r = i.y - e,
      a = s * s + r * r;
    return (
      0 < a &&
        (1 < (a = ((t.x - o) * s + (t.y - e) * r) / a)
          ? ((o = i.x), (e = i.y))
          : 0 < a && ((o += s * a), (e += r * a))),
      (s = t.x - o),
      (r = t.y - e),
      n ? s * s + r * r : new p(o, e)
    );
  }
  function I(t) {
    return !d(t[0]) || ("object" != typeof t[0][0] && void 0 !== t[0][0]);
  }
  function ai(t) {
    return (
      console.warn(
        "Deprecated use of _flat, please use L.LineUtil.isFlat instead."
      ),
      I(t)
    );
  }
  function hi(t, e) {
    var i, n, o, s, r, a;
    if (!t || 0 === t.length) throw new Error("latlngs not passed");
    I(t) ||
      (console.warn("latlngs are not flat! Only the first ring will be used"),
      (t = t[0]));
    for (
      var h = w([0, 0]),
        l = g(t),
        u =
          (l.getNorthWest().distanceTo(l.getSouthWest()) *
            l.getNorthEast().distanceTo(l.getNorthWest()) <
            1700 && (h = Qe(t)),
          t.length),
        c = [],
        d = 0;
      d < u;
      d++
    ) {
      var _ = w(t[d]);
      c.push(e.project(w([_.lat - h.lat, _.lng - h.lng])));
    }
    for (i = d = 0; d < u - 1; d++) i += c[d].distanceTo(c[d + 1]) / 2;
    if (0 === i) a = c[0];
    else
      for (n = d = 0; d < u - 1; d++)
        if (((o = c[d]), (s = c[d + 1]), i < (n += r = o.distanceTo(s)))) {
          a = [s.x - (r = (n - i) / r) * (s.x - o.x), s.y - r * (s.y - o.y)];
          break;
        }
    l = e.unproject(m(a));
    return w([l.lat + h.lat, l.lng + h.lng]);
  }
  var vt = {
      __proto__: null,
      simplify: ei,
      pointToSegmentDistance: ii,
      closestPointOnSegment: function (t, e, i) {
        return ri(t, e, i);
      },
      clipSegment: ni,
      _getEdgeIntersection: oi,
      _getBitCode: si,
      _sqClosestPointOnSegment: ri,
      isFlat: I,
      _flat: ai,
      polylineCenter: hi,
    },
    yt = {
      project: function (t) {
        return new p(t.lng, t.lat);
      },
      unproject: function (t) {
        return new v(t.y, t.x);
      },
      bounds: new f([-180, -90], [180, 90]),
    },
    xt = {
      R: 6378137,
      R_MINOR: 6356752.314245179,
      bounds: new f(
        [-20037508.34279, -15496570.73972],
        [20037508.34279, 18764656.23138]
      ),
      project: function (t) {
        var e = Math.PI / 180,
          i = this.R,
          n = t.lat * e,
          o = this.R_MINOR / i,
          o = Math.sqrt(1 - o * o),
          s = o * Math.sin(n),
          s =
            Math.tan(Math.PI / 4 - n / 2) / Math.pow((1 - s) / (1 + s), o / 2),
          n = -i * Math.log(Math.max(s, 1e-10));
        return new p(t.lng * e * i, n);
      },
      unproject: function (t) {
        for (
          var e,
            i = 180 / Math.PI,
            n = this.R,
            o = this.R_MINOR / n,
            s = Math.sqrt(1 - o * o),
            r = Math.exp(-t.y / n),
            a = Math.PI / 2 - 2 * Math.atan(r),
            h = 0,
            l = 0.1;
          h < 15 && 1e-7 < Math.abs(l);
          h++
        )
          (e = s * Math.sin(a)),
            (e = Math.pow((1 - e) / (1 + e), s / 2)),
            (a += l = Math.PI / 2 - 2 * Math.atan(r * e) - a);
        return new v(a * i, (t.x * i) / n);
      },
    },
    wt = { __proto__: null, LonLat: yt, Mercator: xt, SphericalMercator: rt },
    Pt = l({}, st, {
      code: "EPSG:3395",
      projection: xt,
      transformation: ht((bt = 0.5 / (Math.PI * xt.R)), 0.5, -bt, 0.5),
    }),
    li = l({}, st, {
      code: "EPSG:4326",
      projection: yt,
      transformation: ht(1 / 180, 1, -1 / 180, 0.5),
    }),
    Lt = l({}, ot, {
      projection: yt,
      transformation: ht(1, 0, -1, 0),
      scale: function (t) {
        return Math.pow(2, t);
      },
      zoom: function (t) {
        return Math.log(t) / Math.LN2;
      },
      distance: function (t, e) {
        var i = e.lng - t.lng,
          e = e.lat - t.lat;
        return Math.sqrt(i * i + e * e);
      },
      infinite: !0,
    }),
    o =
      ((ot.Earth = st),
      (ot.EPSG3395 = Pt),
      (ot.EPSG3857 = lt),
      (ot.EPSG900913 = ut),
      (ot.EPSG4326 = li),
      (ot.Simple = Lt),
      it.extend({
        options: {
          pane: "overlayPane",
          attribution: null,
          bubblingMouseEvents: !0,
        },
        addTo: function (t) {
          return t.addLayer(this), this;
        },
        remove: function () {
          return this.removeFrom(this._map || this._mapToAdd);
        },
        removeFrom: function (t) {
          return t && t.removeLayer(this), this;
        },
        getPane: function (t) {
          return this._map.getPane(
            t ? this.options[t] || t : this.options.pane
          );
        },
        addInteractiveTarget: function (t) {
          return (this._map._targets[h(t)] = this);
        },
        removeInteractiveTarget: function (t) {
          return delete this._map._targets[h(t)], this;
        },
        getAttribution: function () {
          return this.options.attribution;
        },
        _layerAdd: function (t) {
          var e,
            i = t.target;
          i.hasLayer(this) &&
            ((this._map = i),
            (this._zoomAnimated = i._zoomAnimated),
            this.getEvents &&
              ((e = this.getEvents()),
              i.on(e, this),
              this.once(
                "remove",
                function () {
                  i.off(e, this);
                },
                this
              )),
            this.onAdd(i),
            this.fire("add"),
            i.fire("layeradd", { layer: this }));
        },
      })),
    ui =
      (A.include({
        addLayer: function (t) {
          var e;
          if (t._layerAdd)
            return (
              (e = h(t)),
              this._layers[e] ||
                (((this._layers[e] = t)._mapToAdd = this),
                t.beforeAdd && t.beforeAdd(this),
                this.whenReady(t._layerAdd, t)),
              this
            );
          throw new Error("The provided object is not a Layer.");
        },
        removeLayer: function (t) {
          var e = h(t);
          return (
            this._layers[e] &&
              (this._loaded && t.onRemove(this),
              delete this._layers[e],
              this._loaded &&
                (this.fire("layerremove", { layer: t }), t.fire("remove")),
              (t._map = t._mapToAdd = null)),
            this
          );
        },
        hasLayer: function (t) {
          return h(t) in this._layers;
        },
        eachLayer: function (t, e) {
          for (var i in this._layers) t.call(e, this._layers[i]);
          return this;
        },
        _addLayers: function (t) {
          for (
            var e = 0, i = (t = t ? (d(t) ? t : [t]) : []).length;
            e < i;
            e++
          )
            this.addLayer(t[e]);
        },
        _addZoomLimit: function (t) {
          (isNaN(t.options.maxZoom) && isNaN(t.options.minZoom)) ||
            ((this._zoomBoundLayers[h(t)] = t), this._updateZoomLevels());
        },
        _removeZoomLimit: function (t) {
          t = h(t);
          this._zoomBoundLayers[t] &&
            (delete this._zoomBoundLayers[t], this._updateZoomLevels());
        },
        _updateZoomLevels: function () {
          var t,
            e = 1 / 0,
            i = -1 / 0,
            n = this._getZoomSpan();
          for (t in this._zoomBoundLayers)
            var o = this._zoomBoundLayers[t].options,
              e = void 0 === o.minZoom ? e : Math.min(e, o.minZoom),
              i = void 0 === o.maxZoom ? i : Math.max(i, o.maxZoom);
          (this._layersMaxZoom = i === -1 / 0 ? void 0 : i),
            (this._layersMinZoom = e === 1 / 0 ? void 0 : e),
            n !== this._getZoomSpan() && this.fire("zoomlevelschange"),
            void 0 === this.options.maxZoom &&
              this._layersMaxZoom &&
              this.getZoom() > this._layersMaxZoom &&
              this.setZoom(this._layersMaxZoom),
            void 0 === this.options.minZoom &&
              this._layersMinZoom &&
              this.getZoom() < this._layersMinZoom &&
              this.setZoom(this._layersMinZoom);
        },
      }),
      o.extend({
        initialize: function (t, e) {
          var i, n;
          if ((c(this, e), (this._layers = {}), t))
            for (i = 0, n = t.length; i < n; i++) this.addLayer(t[i]);
        },
        addLayer: function (t) {
          var e = this.getLayerId(t);
          return (
            (this._layers[e] = t), this._map && this._map.addLayer(t), this
          );
        },
        removeLayer: function (t) {
          t = t in this._layers ? t : this.getLayerId(t);
          return (
            this._map &&
              this._layers[t] &&
              this._map.removeLayer(this._layers[t]),
            delete this._layers[t],
            this
          );
        },
        hasLayer: function (t) {
          return (
            ("number" == typeof t ? t : this.getLayerId(t)) in this._layers
          );
        },
        clearLayers: function () {
          return this.eachLayer(this.removeLayer, this);
        },
        invoke: function (t) {
          var e,
            i,
            n = Array.prototype.slice.call(arguments, 1);
          for (e in this._layers) (i = this._layers[e])[t] && i[t].apply(i, n);
          return this;
        },
        onAdd: function (t) {
          this.eachLayer(t.addLayer, t);
        },
        onRemove: function (t) {
          this.eachLayer(t.removeLayer, t);
        },
        eachLayer: function (t, e) {
          for (var i in this._layers) t.call(e, this._layers[i]);
          return this;
        },
        getLayer: function (t) {
          return this._layers[t];
        },
        getLayers: function () {
          var t = [];
          return this.eachLayer(t.push, t), t;
        },
        setZIndex: function (t) {
          return this.invoke("setZIndex", t);
        },
        getLayerId: h,
      })),
    ci = ui.extend({
      addLayer: function (t) {
        return this.hasLayer(t)
          ? this
          : (t.addEventParent(this),
            ui.prototype.addLayer.call(this, t),
            this.fire("layeradd", { layer: t }));
      },
      removeLayer: function (t) {
        return this.hasLayer(t)
          ? ((t = t in this._layers ? this._layers[t] : t).removeEventParent(
              this
            ),
            ui.prototype.removeLayer.call(this, t),
            this.fire("layerremove", { layer: t }))
          : this;
      },
      setStyle: function (t) {
        return this.invoke("setStyle", t);
      },
      bringToFront: function () {
        return this.invoke("bringToFront");
      },
      bringToBack: function () {
        return this.invoke("bringToBack");
      },
      getBounds: function () {
        var t,
          e = new s();
        for (t in this._layers) {
          var i = this._layers[t];
          e.extend(i.getBounds ? i.getBounds() : i.getLatLng());
        }
        return e;
      },
    }),
    di = et.extend({
      options: { popupAnchor: [0, 0], tooltipAnchor: [0, 0], crossOrigin: !1 },
      initialize: function (t) {
        c(this, t);
      },
      createIcon: function (t) {
        return this._createIcon("icon", t);
      },
      createShadow: function (t) {
        return this._createIcon("shadow", t);
      },
      _createIcon: function (t, e) {
        var i = this._getIconUrl(t);
        if (i)
          return (
            (i = this._createImg(i, e && "IMG" === e.tagName ? e : null)),
            this._setIconStyles(i, t),
            (!this.options.crossOrigin && "" !== this.options.crossOrigin) ||
              (i.crossOrigin =
                !0 === this.options.crossOrigin
                  ? ""
                  : this.options.crossOrigin),
            i
          );
        if ("icon" === t)
          throw new Error("iconUrl not set in Icon options (see the docs).");
        return null;
      },
      _setIconStyles: function (t, e) {
        var i = this.options,
          n = i[e + "Size"],
          n = m((n = "number" == typeof n ? [n, n] : n)),
          o = m(
            ("shadow" === e && i.shadowAnchor) ||
              i.iconAnchor ||
              (n && n.divideBy(2, !0))
          );
        (t.className = "leaflet-marker-" + e + " " + (i.className || "")),
          o &&
            ((t.style.marginLeft = -o.x + "px"),
            (t.style.marginTop = -o.y + "px")),
          n && ((t.style.width = n.x + "px"), (t.style.height = n.y + "px"));
      },
      _createImg: function (t, e) {
        return ((e = e || document.createElement("img")).src = t), e;
      },
      _getIconUrl: function (t) {
        return (
          (b.retina && this.options[t + "RetinaUrl"]) || this.options[t + "Url"]
        );
      },
    });
  var _i = di.extend({
      options: {
        iconUrl: "marker-icon.png",
        iconRetinaUrl: "marker-icon-2x.png",
        shadowUrl: "marker-shadow.png",
        iconSize: [25, 41],
        iconAnchor: [12, 41],
        popupAnchor: [1, -34],
        tooltipAnchor: [16, -28],
        shadowSize: [41, 41],
      },
      _getIconUrl: function (t) {
        return (
          "string" != typeof _i.imagePath &&
            (_i.imagePath = this._detectIconPath()),
          (this.options.imagePath || _i.imagePath) +
            di.prototype._getIconUrl.call(this, t)
        );
      },
      _stripUrl: function (t) {
        function e(t, e, i) {
          return (e = e.exec(t)) && e[i];
        }
        return (
          (t = e(t, /^url\((['"])?(.+)\1\)$/, 2)) &&
          e(t, /^(.*)marker-icon\.png$/, 1)
        );
      },
      _detectIconPath: function () {
        var t = P("div", "leaflet-default-icon-path", document.body),
          e = pe(t, "background-image") || pe(t, "backgroundImage");
        return (
          document.body.removeChild(t),
          (e = this._stripUrl(e))
            ? e
            : (t = document.querySelector('link[href$="leaflet.css"]'))
            ? t.href.substring(0, t.href.length - "leaflet.css".length - 1)
            : ""
        );
      },
    }),
    pi = n.extend({
      initialize: function (t) {
        this._marker = t;
      },
      addHooks: function () {
        var t = this._marker._icon;
        this._draggable || (this._draggable = new Xe(t, t, !0)),
          this._draggable
            .on(
              {
                dragstart: this._onDragStart,
                predrag: this._onPreDrag,
                drag: this._onDrag,
                dragend: this._onDragEnd,
              },
              this
            )
            .enable(),
          M(t, "leaflet-marker-draggable");
      },
      removeHooks: function () {
        this._draggable
          .off(
            {
              dragstart: this._onDragStart,
              predrag: this._onPreDrag,
              drag: this._onDrag,
              dragend: this._onDragEnd,
            },
            this
          )
          .disable(),
          this._marker._icon &&
            z(this._marker._icon, "leaflet-marker-draggable");
      },
      moved: function () {
        return this._draggable && this._draggable._moved;
      },
      _adjustPan: function (t) {
        var e = this._marker,
          i = e._map,
          n = this._marker.options.autoPanSpeed,
          o = this._marker.options.autoPanPadding,
          s = Pe(e._icon),
          r = i.getPixelBounds(),
          a = i.getPixelOrigin(),
          a = _(r.min._subtract(a).add(o), r.max._subtract(a).subtract(o));
        a.contains(s) ||
          ((o = m(
            (Math.max(a.max.x, s.x) - a.max.x) / (r.max.x - a.max.x) -
              (Math.min(a.min.x, s.x) - a.min.x) / (r.min.x - a.min.x),
            (Math.max(a.max.y, s.y) - a.max.y) / (r.max.y - a.max.y) -
              (Math.min(a.min.y, s.y) - a.min.y) / (r.min.y - a.min.y)
          ).multiplyBy(n)),
          i.panBy(o, { animate: !1 }),
          this._draggable._newPos._add(o),
          this._draggable._startPos._add(o),
          Z(e._icon, this._draggable._newPos),
          this._onDrag(t),
          (this._panRequest = x(this._adjustPan.bind(this, t))));
      },
      _onDragStart: function () {
        (this._oldLatLng = this._marker.getLatLng()),
          this._marker.closePopup && this._marker.closePopup(),
          this._marker.fire("movestart").fire("dragstart");
      },
      _onPreDrag: function (t) {
        this._marker.options.autoPan &&
          (r(this._panRequest),
          (this._panRequest = x(this._adjustPan.bind(this, t))));
      },
      _onDrag: function (t) {
        var e = this._marker,
          i = e._shadow,
          n = Pe(e._icon),
          o = e._map.layerPointToLatLng(n);
        i && Z(i, n),
          (e._latlng = o),
          (t.latlng = o),
          (t.oldLatLng = this._oldLatLng),
          e.fire("move", t).fire("drag", t);
      },
      _onDragEnd: function (t) {
        r(this._panRequest),
          delete this._oldLatLng,
          this._marker.fire("moveend").fire("dragend", t);
      },
    }),
    mi = o.extend({
      options: {
        icon: new _i(),
        interactive: !0,
        keyboard: !0,
        title: "",
        alt: "Marker",
        zIndexOffset: 0,
        opacity: 1,
        riseOnHover: !1,
        riseOffset: 250,
        pane: "markerPane",
        shadowPane: "shadowPane",
        bubblingMouseEvents: !1,
        autoPanOnFocus: !0,
        draggable: !1,
        autoPan: !1,
        autoPanPadding: [50, 50],
        autoPanSpeed: 10,
      },
      initialize: function (t, e) {
        c(this, e), (this._latlng = w(t));
      },
      onAdd: function (t) {
        (this._zoomAnimated =
          this._zoomAnimated && t.options.markerZoomAnimation),
          this._zoomAnimated && t.on("zoomanim", this._animateZoom, this),
          this._initIcon(),
          this.update();
      },
      onRemove: function (t) {
        this.dragging &&
          this.dragging.enabled() &&
          ((this.options.draggable = !0), this.dragging.removeHooks()),
          delete this.dragging,
          this._zoomAnimated && t.off("zoomanim", this._animateZoom, this),
          this._removeIcon(),
          this._removeShadow();
      },
      getEvents: function () {
        return { zoom: this.update, viewreset: this.update };
      },
      getLatLng: function () {
        return this._latlng;
      },
      setLatLng: function (t) {
        var e = this._latlng;
        return (
          (this._latlng = w(t)),
          this.update(),
          this.fire("move", { oldLatLng: e, latlng: this._latlng })
        );
      },
      setZIndexOffset: function (t) {
        return (this.options.zIndexOffset = t), this.update();
      },
      getIcon: function () {
        return this.options.icon;
      },
      setIcon: function (t) {
        return (
          (this.options.icon = t),
          this._map && (this._initIcon(), this.update()),
          this._popup && this.bindPopup(this._popup, this._popup.options),
          this
        );
      },
      getElement: function () {
        return this._icon;
      },
      update: function () {
        var t;
        return (
          this._icon &&
            this._map &&
            ((t = this._map.latLngToLayerPoint(this._latlng).round()),
            this._setPos(t)),
          this
        );
      },
      _initIcon: function () {
        var t = this.options,
          e = "leaflet-zoom-" + (this._zoomAnimated ? "animated" : "hide"),
          i = t.icon.createIcon(this._icon),
          n = !1,
          i =
            (i !== this._icon &&
              (this._icon && this._removeIcon(),
              (n = !0),
              t.title && (i.title = t.title),
              "IMG" === i.tagName && (i.alt = t.alt || "")),
            M(i, e),
            t.keyboard &&
              ((i.tabIndex = "0"), i.setAttribute("role", "button")),
            (this._icon = i),
            t.riseOnHover &&
              this.on({
                mouseover: this._bringToFront,
                mouseout: this._resetZIndex,
              }),
            this.options.autoPanOnFocus &&
              S(i, "focus", this._panOnFocus, this),
            t.icon.createShadow(this._shadow)),
          o = !1;
        i !== this._shadow && (this._removeShadow(), (o = !0)),
          i && (M(i, e), (i.alt = "")),
          (this._shadow = i),
          t.opacity < 1 && this._updateOpacity(),
          n && this.getPane().appendChild(this._icon),
          this._initInteraction(),
          i && o && this.getPane(t.shadowPane).appendChild(this._shadow);
      },
      _removeIcon: function () {
        this.options.riseOnHover &&
          this.off({
            mouseover: this._bringToFront,
            mouseout: this._resetZIndex,
          }),
          this.options.autoPanOnFocus &&
            k(this._icon, "focus", this._panOnFocus, this),
          T(this._icon),
          this.removeInteractiveTarget(this._icon),
          (this._icon = null);
      },
      _removeShadow: function () {
        this._shadow && T(this._shadow), (this._shadow = null);
      },
      _setPos: function (t) {
        this._icon && Z(this._icon, t),
          this._shadow && Z(this._shadow, t),
          (this._zIndex = t.y + this.options.zIndexOffset),
          this._resetZIndex();
      },
      _updateZIndex: function (t) {
        this._icon && (this._icon.style.zIndex = this._zIndex + t);
      },
      _animateZoom: function (t) {
        t = this._map
          ._latLngToNewLayerPoint(this._latlng, t.zoom, t.center)
          .round();
        this._setPos(t);
      },
      _initInteraction: function () {
        var t;
        this.options.interactive &&
          (M(this._icon, "leaflet-interactive"),
          this.addInteractiveTarget(this._icon),
          pi &&
            ((t = this.options.draggable),
            this.dragging &&
              ((t = this.dragging.enabled()), this.dragging.disable()),
            (this.dragging = new pi(this)),
            t && this.dragging.enable()));
      },
      setOpacity: function (t) {
        return (
          (this.options.opacity = t), this._map && this._updateOpacity(), this
        );
      },
      _updateOpacity: function () {
        var t = this.options.opacity;
        this._icon && C(this._icon, t), this._shadow && C(this._shadow, t);
      },
      _bringToFront: function () {
        this._updateZIndex(this.options.riseOffset);
      },
      _resetZIndex: function () {
        this._updateZIndex(0);
      },
      _panOnFocus: function () {
        var t,
          e,
          i = this._map;
        i &&
          ((t = (e = this.options.icon.options).iconSize
            ? m(e.iconSize)
            : m(0, 0)),
          (e = e.iconAnchor ? m(e.iconAnchor) : m(0, 0)),
          i.panInside(this._latlng, {
            paddingTopLeft: e,
            paddingBottomRight: t.subtract(e),
          }));
      },
      _getPopupAnchor: function () {
        return this.options.icon.options.popupAnchor;
      },
      _getTooltipAnchor: function () {
        return this.options.icon.options.tooltipAnchor;
      },
    });
  var fi = o.extend({
      options: {
        stroke: !0,
        color: "#3388ff",
        weight: 3,
        opacity: 1,
        lineCap: "round",
        lineJoin: "round",
        dashArray: null,
        dashOffset: null,
        fill: !1,
        fillColor: null,
        fillOpacity: 0.2,
        fillRule: "evenodd",
        interactive: !0,
        bubblingMouseEvents: !0,
      },
      beforeAdd: function (t) {
        this._renderer = t.getRenderer(this);
      },
      onAdd: function () {
        this._renderer._initPath(this),
          this._reset(),
          this._renderer._addPath(this);
      },
      onRemove: function () {
        this._renderer._removePath(this);
      },
      redraw: function () {
        return this._map && this._renderer._updatePath(this), this;
      },
      setStyle: function (t) {
        return (
          c(this, t),
          this._renderer &&
            (this._renderer._updateStyle(this),
            this.options.stroke &&
              t &&
              Object.prototype.hasOwnProperty.call(t, "weight") &&
              this._updateBounds()),
          this
        );
      },
      bringToFront: function () {
        return this._renderer && this._renderer._bringToFront(this), this;
      },
      bringToBack: function () {
        return this._renderer && this._renderer._bringToBack(this), this;
      },
      getElement: function () {
        return this._path;
      },
      _reset: function () {
        this._project(), this._update();
      },
      _clickTolerance: function () {
        return (
          (this.options.stroke ? this.options.weight / 2 : 0) +
          (this._renderer.options.tolerance || 0)
        );
      },
    }),
    gi = fi.extend({
      options: { fill: !0, radius: 10 },
      initialize: function (t, e) {
        c(this, e), (this._latlng = w(t)), (this._radius = this.options.radius);
      },
      setLatLng: function (t) {
        var e = this._latlng;
        return (
          (this._latlng = w(t)),
          this.redraw(),
          this.fire("move", { oldLatLng: e, latlng: this._latlng })
        );
      },
      getLatLng: function () {
        return this._latlng;
      },
      setRadius: function (t) {
        return (this.options.radius = this._radius = t), this.redraw();
      },
      getRadius: function () {
        return this._radius;
      },
      setStyle: function (t) {
        var e = (t && t.radius) || this._radius;
        return fi.prototype.setStyle.call(this, t), this.setRadius(e), this;
      },
      _project: function () {
        (this._point = this._map.latLngToLayerPoint(this._latlng)),
          this._updateBounds();
      },
      _updateBounds: function () {
        var t = this._radius,
          e = this._radiusY || t,
          i = this._clickTolerance(),
          t = [t + i, e + i];
        this._pxBounds = new f(this._point.subtract(t), this._point.add(t));
      },
      _update: function () {
        this._map && this._updatePath();
      },
      _updatePath: function () {
        this._renderer._updateCircle(this);
      },
      _empty: function () {
        return (
          this._radius && !this._renderer._bounds.intersects(this._pxBounds)
        );
      },
      _containsPoint: function (t) {
        return (
          t.distanceTo(this._point) <= this._radius + this._clickTolerance()
        );
      },
    });
  var vi = gi.extend({
    initialize: function (t, e, i) {
      if (
        (c(this, (e = "number" == typeof e ? l({}, i, { radius: e }) : e)),
        (this._latlng = w(t)),
        isNaN(this.options.radius))
      )
        throw new Error("Circle radius cannot be NaN");
      this._mRadius = this.options.radius;
    },
    setRadius: function (t) {
      return (this._mRadius = t), this.redraw();
    },
    getRadius: function () {
      return this._mRadius;
    },
    getBounds: function () {
      var t = [this._radius, this._radiusY || this._radius];
      return new s(
        this._map.layerPointToLatLng(this._point.subtract(t)),
        this._map.layerPointToLatLng(this._point.add(t))
      );
    },
    setStyle: fi.prototype.setStyle,
    _project: function () {
      var t,
        e,
        i,
        n,
        o,
        s = this._latlng.lng,
        r = this._latlng.lat,
        a = this._map,
        h = a.options.crs;
      h.distance === st.distance
        ? ((n = Math.PI / 180),
          (o = this._mRadius / st.R / n),
          (t = a.project([r + o, s])),
          (e = a.project([r - o, s])),
          (e = t.add(e).divideBy(2)),
          (i = a.unproject(e).lat),
          (n =
            Math.acos(
              (Math.cos(o * n) - Math.sin(r * n) * Math.sin(i * n)) /
                (Math.cos(r * n) * Math.cos(i * n))
            ) / n),
          (!isNaN(n) && 0 !== n) || (n = o / Math.cos((Math.PI / 180) * r)),
          (this._point = e.subtract(a.getPixelOrigin())),
          (this._radius = isNaN(n) ? 0 : e.x - a.project([i, s - n]).x),
          (this._radiusY = e.y - t.y))
        : ((o = h.unproject(
            h.project(this._latlng).subtract([this._mRadius, 0])
          )),
          (this._point = a.latLngToLayerPoint(this._latlng)),
          (this._radius = this._point.x - a.latLngToLayerPoint(o).x)),
        this._updateBounds();
    },
  });
  var yi = fi.extend({
    options: { smoothFactor: 1, noClip: !1 },
    initialize: function (t, e) {
      c(this, e), this._setLatLngs(t);
    },
    getLatLngs: function () {
      return this._latlngs;
    },
    setLatLngs: function (t) {
      return this._setLatLngs(t), this.redraw();
    },
    isEmpty: function () {
      return !this._latlngs.length;
    },
    closestLayerPoint: function (t) {
      for (
        var e = 1 / 0, i = null, n = ri, o = 0, s = this._parts.length;
        o < s;
        o++
      )
        for (var r = this._parts[o], a = 1, h = r.length; a < h; a++) {
          var l,
            u,
            c = n(t, (l = r[a - 1]), (u = r[a]), !0);
          c < e && ((e = c), (i = n(t, l, u)));
        }
      return i && (i.distance = Math.sqrt(e)), i;
    },
    getCenter: function () {
      if (this._map) return hi(this._defaultShape(), this._map.options.crs);
      throw new Error("Must add layer to map before using getCenter()");
    },
    getBounds: function () {
      return this._bounds;
    },
    addLatLng: function (t, e) {
      return (
        (e = e || this._defaultShape()),
        (t = w(t)),
        e.push(t),
        this._bounds.extend(t),
        this.redraw()
      );
    },
    _setLatLngs: function (t) {
      (this._bounds = new s()), (this._latlngs = this._convertLatLngs(t));
    },
    _defaultShape: function () {
      return I(this._latlngs) ? this._latlngs : this._latlngs[0];
    },
    _convertLatLngs: function (t) {
      for (var e = [], i = I(t), n = 0, o = t.length; n < o; n++)
        i
          ? ((e[n] = w(t[n])), this._bounds.extend(e[n]))
          : (e[n] = this._convertLatLngs(t[n]));
      return e;
    },
    _project: function () {
      var t = new f();
      (this._rings = []),
        this._projectLatlngs(this._latlngs, this._rings, t),
        this._bounds.isValid() &&
          t.isValid() &&
          ((this._rawPxBounds = t), this._updateBounds());
    },
    _updateBounds: function () {
      var t = this._clickTolerance(),
        t = new p(t, t);
      this._rawPxBounds &&
        (this._pxBounds = new f([
          this._rawPxBounds.min.subtract(t),
          this._rawPxBounds.max.add(t),
        ]));
    },
    _projectLatlngs: function (t, e, i) {
      var n,
        o,
        s = t[0] instanceof v,
        r = t.length;
      if (s) {
        for (o = [], n = 0; n < r; n++)
          (o[n] = this._map.latLngToLayerPoint(t[n])), i.extend(o[n]);
        e.push(o);
      } else for (n = 0; n < r; n++) this._projectLatlngs(t[n], e, i);
    },
    _clipPoints: function () {
      var t = this._renderer._bounds;
      if (((this._parts = []), this._pxBounds && this._pxBounds.intersects(t)))
        if (this.options.noClip) this._parts = this._rings;
        else
          for (
            var e,
              i,
              n,
              o,
              s = this._parts,
              r = 0,
              a = 0,
              h = this._rings.length;
            r < h;
            r++
          )
            for (e = 0, i = (o = this._rings[r]).length; e < i - 1; e++)
              (n = ni(o[e], o[e + 1], t, e, !0)) &&
                ((s[a] = s[a] || []),
                s[a].push(n[0]),
                (n[1] === o[e + 1] && e !== i - 2) || (s[a].push(n[1]), a++));
    },
    _simplifyPoints: function () {
      for (
        var t = this._parts, e = this.options.smoothFactor, i = 0, n = t.length;
        i < n;
        i++
      )
        t[i] = ei(t[i], e);
    },
    _update: function () {
      this._map &&
        (this._clipPoints(), this._simplifyPoints(), this._updatePath());
    },
    _updatePath: function () {
      this._renderer._updatePoly(this);
    },
    _containsPoint: function (t, e) {
      var i,
        n,
        o,
        s,
        r,
        a,
        h = this._clickTolerance();
      if (this._pxBounds && this._pxBounds.contains(t))
        for (i = 0, s = this._parts.length; i < s; i++)
          for (n = 0, o = (r = (a = this._parts[i]).length) - 1; n < r; o = n++)
            if ((e || 0 !== n) && ii(t, a[o], a[n]) <= h) return !0;
      return !1;
    },
  });
  yi._flat = ai;
  var xi = yi.extend({
    options: { fill: !0 },
    isEmpty: function () {
      return !this._latlngs.length || !this._latlngs[0].length;
    },
    getCenter: function () {
      if (this._map) return $e(this._defaultShape(), this._map.options.crs);
      throw new Error("Must add layer to map before using getCenter()");
    },
    _convertLatLngs: function (t) {
      var t = yi.prototype._convertLatLngs.call(this, t),
        e = t.length;
      return 2 <= e && t[0] instanceof v && t[0].equals(t[e - 1]) && t.pop(), t;
    },
    _setLatLngs: function (t) {
      yi.prototype._setLatLngs.call(this, t),
        I(this._latlngs) && (this._latlngs = [this._latlngs]);
    },
    _defaultShape: function () {
      return (I(this._latlngs[0]) ? this._latlngs : this._latlngs[0])[0];
    },
    _clipPoints: function () {
      var t = this._renderer._bounds,
        e = this.options.weight,
        e = new p(e, e),
        t = new f(t.min.subtract(e), t.max.add(e));
      if (((this._parts = []), this._pxBounds && this._pxBounds.intersects(t)))
        if (this.options.noClip) this._parts = this._rings;
        else
          for (var i, n = 0, o = this._rings.length; n < o; n++)
            (i = Je(this._rings[n], t, !0)).length && this._parts.push(i);
    },
    _updatePath: function () {
      this._renderer._updatePoly(this, !0);
    },
    _containsPoint: function (t) {
      var e,
        i,
        n,
        o,
        s,
        r,
        a,
        h,
        l = !1;
      if (!this._pxBounds || !this._pxBounds.contains(t)) return !1;
      for (o = 0, a = this._parts.length; o < a; o++)
        for (s = 0, r = (h = (e = this._parts[o]).length) - 1; s < h; r = s++)
          (i = e[s]),
            (n = e[r]),
            i.y > t.y != n.y > t.y &&
              t.x < ((n.x - i.x) * (t.y - i.y)) / (n.y - i.y) + i.x &&
              (l = !l);
      return l || yi.prototype._containsPoint.call(this, t, !0);
    },
  });
  var wi = ci.extend({
    initialize: function (t, e) {
      c(this, e), (this._layers = {}), t && this.addData(t);
    },
    addData: function (t) {
      var e,
        i,
        n,
        o = d(t) ? t : t.features;
      if (o) {
        for (e = 0, i = o.length; e < i; e++)
          ((n = o[e]).geometries ||
            n.geometry ||
            n.features ||
            n.coordinates) &&
            this.addData(n);
        return this;
      }
      var s,
        r = this.options;
      return (!r.filter || r.filter(t)) && (s = bi(t, r))
        ? ((s.feature = Zi(t)),
          (s.defaultOptions = s.options),
          this.resetStyle(s),
          r.onEachFeature && r.onEachFeature(t, s),
          this.addLayer(s))
        : this;
    },
    resetStyle: function (t) {
      return void 0 === t
        ? this.eachLayer(this.resetStyle, this)
        : ((t.options = l({}, t.defaultOptions)),
          this._setLayerStyle(t, this.options.style),
          this);
    },
    setStyle: function (e) {
      return this.eachLayer(function (t) {
        this._setLayerStyle(t, e);
      }, this);
    },
    _setLayerStyle: function (t, e) {
      t.setStyle &&
        ("function" == typeof e && (e = e(t.feature)), t.setStyle(e));
    },
  });
  function bi(t, e) {
    var i,
      n,
      o,
      s,
      r = "Feature" === t.type ? t.geometry : t,
      a = r ? r.coordinates : null,
      h = [],
      l = e && e.pointToLayer,
      u = (e && e.coordsToLatLng) || Li;
    if (!a && !r) return null;
    switch (r.type) {
      case "Point":
        return Pi(l, t, (i = u(a)), e);
      case "MultiPoint":
        for (o = 0, s = a.length; o < s; o++)
          (i = u(a[o])), h.push(Pi(l, t, i, e));
        return new ci(h);
      case "LineString":
      case "MultiLineString":
        return (n = Ti(a, "LineString" === r.type ? 0 : 1, u)), new yi(n, e);
      case "Polygon":
      case "MultiPolygon":
        return (n = Ti(a, "Polygon" === r.type ? 1 : 2, u)), new xi(n, e);
      case "GeometryCollection":
        for (o = 0, s = r.geometries.length; o < s; o++) {
          var c = bi(
            {
              geometry: r.geometries[o],
              type: "Feature",
              properties: t.properties,
            },
            e
          );
          c && h.push(c);
        }
        return new ci(h);
      case "FeatureCollection":
        for (o = 0, s = r.features.length; o < s; o++) {
          var d = bi(r.features[o], e);
          d && h.push(d);
        }
        return new ci(h);
      default:
        throw new Error("Invalid GeoJSON object.");
    }
  }
  function Pi(t, e, i, n) {
    return t ? t(e, i) : new mi(i, n && n.markersInheritOptions && n);
  }
  function Li(t) {
    return new v(t[1], t[0], t[2]);
  }
  function Ti(t, e, i) {
    for (var n, o = [], s = 0, r = t.length; s < r; s++)
      (n = e ? Ti(t[s], e - 1, i) : (i || Li)(t[s])), o.push(n);
    return o;
  }
  function Mi(t, e) {
    return void 0 !== (t = w(t)).alt
      ? [i(t.lng, e), i(t.lat, e), i(t.alt, e)]
      : [i(t.lng, e), i(t.lat, e)];
  }
  function zi(t, e, i, n) {
    for (var o = [], s = 0, r = t.length; s < r; s++)
      o.push(e ? zi(t[s], I(t[s]) ? 0 : e - 1, i, n) : Mi(t[s], n));
    return !e && i && 0 < o.length && o.push(o[0].slice()), o;
  }
  function Ci(t, e) {
    return t.feature ? l({}, t.feature, { geometry: e }) : Zi(e);
  }
  function Zi(t) {
    return "Feature" === t.type || "FeatureCollection" === t.type
      ? t
      : { type: "Feature", properties: {}, geometry: t };
  }
  Tt = {
    toGeoJSON: function (t) {
      return Ci(this, { type: "Point", coordinates: Mi(this.getLatLng(), t) });
    },
  };
  function Si(t, e) {
    return new wi(t, e);
  }
  mi.include(Tt),
    vi.include(Tt),
    gi.include(Tt),
    yi.include({
      toGeoJSON: function (t) {
        var e = !I(this._latlngs);
        return Ci(this, {
          type: (e ? "Multi" : "") + "LineString",
          coordinates: zi(this._latlngs, e ? 1 : 0, !1, t),
        });
      },
    }),
    xi.include({
      toGeoJSON: function (t) {
        var e = !I(this._latlngs),
          i = e && !I(this._latlngs[0]),
          t = zi(this._latlngs, i ? 2 : e ? 1 : 0, !0, t);
        return Ci(this, {
          type: (i ? "Multi" : "") + "Polygon",
          coordinates: (t = e ? t : [t]),
        });
      },
    }),
    ui.include({
      toMultiPoint: function (e) {
        var i = [];
        return (
          this.eachLayer(function (t) {
            i.push(t.toGeoJSON(e).geometry.coordinates);
          }),
          Ci(this, { type: "MultiPoint", coordinates: i })
        );
      },
      toGeoJSON: function (e) {
        var i,
          n,
          t =
            this.feature && this.feature.geometry && this.feature.geometry.type;
        return "MultiPoint" === t
          ? this.toMultiPoint(e)
          : ((i = "GeometryCollection" === t),
            (n = []),
            this.eachLayer(function (t) {
              t.toGeoJSON &&
                ((t = t.toGeoJSON(e)),
                i
                  ? n.push(t.geometry)
                  : "FeatureCollection" === (t = Zi(t)).type
                  ? n.push.apply(n, t.features)
                  : n.push(t));
            }),
            i
              ? Ci(this, { geometries: n, type: "GeometryCollection" })
              : { type: "FeatureCollection", features: n });
      },
    });
  var Mt = Si,
    Ei = o.extend({
      options: {
        opacity: 1,
        alt: "",
        interactive: !1,
        crossOrigin: !1,
        errorOverlayUrl: "",
        zIndex: 1,
        className: "",
      },
      initialize: function (t, e, i) {
        (this._url = t), (this._bounds = g(e)), c(this, i);
      },
      onAdd: function () {
        this._image ||
          (this._initImage(),
          this.options.opacity < 1 && this._updateOpacity()),
          this.options.interactive &&
            (M(this._image, "leaflet-interactive"),
            this.addInteractiveTarget(this._image)),
          this.getPane().appendChild(this._image),
          this._reset();
      },
      onRemove: function () {
        T(this._image),
          this.options.interactive && this.removeInteractiveTarget(this._image);
      },
      setOpacity: function (t) {
        return (
          (this.options.opacity = t), this._image && this._updateOpacity(), this
        );
      },
      setStyle: function (t) {
        return t.opacity && this.setOpacity(t.opacity), this;
      },
      bringToFront: function () {
        return this._map && fe(this._image), this;
      },
      bringToBack: function () {
        return this._map && ge(this._image), this;
      },
      setUrl: function (t) {
        return (this._url = t), this._image && (this._image.src = t), this;
      },
      setBounds: function (t) {
        return (this._bounds = g(t)), this._map && this._reset(), this;
      },
      getEvents: function () {
        var t = { zoom: this._reset, viewreset: this._reset };
        return this._zoomAnimated && (t.zoomanim = this._animateZoom), t;
      },
      setZIndex: function (t) {
        return (this.options.zIndex = t), this._updateZIndex(), this;
      },
      getBounds: function () {
        return this._bounds;
      },
      getElement: function () {
        return this._image;
      },
      _initImage: function () {
        var t = "IMG" === this._url.tagName,
          e = (this._image = t ? this._url : P("img"));
        M(e, "leaflet-image-layer"),
          this._zoomAnimated && M(e, "leaflet-zoom-animated"),
          this.options.className && M(e, this.options.className),
          (e.onselectstart = u),
          (e.onmousemove = u),
          (e.onload = a(this.fire, this, "load")),
          (e.onerror = a(this._overlayOnError, this, "error")),
          (!this.options.crossOrigin && "" !== this.options.crossOrigin) ||
            (e.crossOrigin =
              !0 === this.options.crossOrigin ? "" : this.options.crossOrigin),
          this.options.zIndex && this._updateZIndex(),
          t
            ? (this._url = e.src)
            : ((e.src = this._url), (e.alt = this.options.alt));
      },
      _animateZoom: function (t) {
        var e = this._map.getZoomScale(t.zoom),
          t = this._map._latLngBoundsToNewLayerBounds(
            this._bounds,
            t.zoom,
            t.center
          ).min;
        be(this._image, t, e);
      },
      _reset: function () {
        var t = this._image,
          e = new f(
            this._map.latLngToLayerPoint(this._bounds.getNorthWest()),
            this._map.latLngToLayerPoint(this._bounds.getSouthEast())
          ),
          i = e.getSize();
        Z(t, e.min),
          (t.style.width = i.x + "px"),
          (t.style.height = i.y + "px");
      },
      _updateOpacity: function () {
        C(this._image, this.options.opacity);
      },
      _updateZIndex: function () {
        this._image &&
          void 0 !== this.options.zIndex &&
          null !== this.options.zIndex &&
          (this._image.style.zIndex = this.options.zIndex);
      },
      _overlayOnError: function () {
        this.fire("error");
        var t = this.options.errorOverlayUrl;
        t && this._url !== t && ((this._url = t), (this._image.src = t));
      },
      getCenter: function () {
        return this._bounds.getCenter();
      },
    }),
    ki = Ei.extend({
      options: {
        autoplay: !0,
        loop: !0,
        keepAspectRatio: !0,
        muted: !1,
        playsInline: !0,
      },
      _initImage: function () {
        var t = "VIDEO" === this._url.tagName,
          e = (this._image = t ? this._url : P("video"));
        if (
          (M(e, "leaflet-image-layer"),
          this._zoomAnimated && M(e, "leaflet-zoom-animated"),
          this.options.className && M(e, this.options.className),
          (e.onselectstart = u),
          (e.onmousemove = u),
          (e.onloadeddata = a(this.fire, this, "load")),
          t)
        ) {
          for (
            var i = e.getElementsByTagName("source"), n = [], o = 0;
            o < i.length;
            o++
          )
            n.push(i[o].src);
          this._url = 0 < i.length ? n : [e.src];
        } else {
          d(this._url) || (this._url = [this._url]),
            !this.options.keepAspectRatio &&
              Object.prototype.hasOwnProperty.call(e.style, "objectFit") &&
              (e.style.objectFit = "fill"),
            (e.autoplay = !!this.options.autoplay),
            (e.loop = !!this.options.loop),
            (e.muted = !!this.options.muted),
            (e.playsInline = !!this.options.playsInline);
          for (var s = 0; s < this._url.length; s++) {
            var r = P("source");
            (r.src = this._url[s]), e.appendChild(r);
          }
        }
      },
    });
  var Oi = Ei.extend({
    _initImage: function () {
      var t = (this._image = this._url);
      M(t, "leaflet-image-layer"),
        this._zoomAnimated && M(t, "leaflet-zoom-animated"),
        this.options.className && M(t, this.options.className),
        (t.onselectstart = u),
        (t.onmousemove = u);
    },
  });
  var Ai = o.extend({
      options: {
        interactive: !1,
        offset: [0, 0],
        className: "",
        pane: void 0,
        content: "",
      },
      initialize: function (t, e) {
        t && (t instanceof v || d(t))
          ? ((this._latlng = w(t)), c(this, e))
          : (c(this, t), (this._source = e)),
          this.options.content && (this._content = this.options.content);
      },
      openOn: function (t) {
        return (
          (t = arguments.length ? t : this._source._map).hasLayer(this) ||
            t.addLayer(this),
          this
        );
      },
      close: function () {
        return this._map && this._map.removeLayer(this), this;
      },
      toggle: function (t) {
        return (
          this._map
            ? this.close()
            : (arguments.length ? (this._source = t) : (t = this._source),
              this._prepareOpen(),
              this.openOn(t._map)),
          this
        );
      },
      onAdd: function (t) {
        (this._zoomAnimated = t._zoomAnimated),
          this._container || this._initLayout(),
          t._fadeAnimated && C(this._container, 0),
          clearTimeout(this._removeTimeout),
          this.getPane().appendChild(this._container),
          this.update(),
          t._fadeAnimated && C(this._container, 1),
          this.bringToFront(),
          this.options.interactive &&
            (M(this._container, "leaflet-interactive"),
            this.addInteractiveTarget(this._container));
      },
      onRemove: function (t) {
        t._fadeAnimated
          ? (C(this._container, 0),
            (this._removeTimeout = setTimeout(
              a(T, void 0, this._container),
              200
            )))
          : T(this._container),
          this.options.interactive &&
            (z(this._container, "leaflet-interactive"),
            this.removeInteractiveTarget(this._container));
      },
      getLatLng: function () {
        return this._latlng;
      },
      setLatLng: function (t) {
        return (
          (this._latlng = w(t)),
          this._map && (this._updatePosition(), this._adjustPan()),
          this
        );
      },
      getContent: function () {
        return this._content;
      },
      setContent: function (t) {
        return (this._content = t), this.update(), this;
      },
      getElement: function () {
        return this._container;
      },
      update: function () {
        this._map &&
          ((this._container.style.visibility = "hidden"),
          this._updateContent(),
          this._updateLayout(),
          this._updatePosition(),
          (this._container.style.visibility = ""),
          this._adjustPan());
      },
      getEvents: function () {
        var t = { zoom: this._updatePosition, viewreset: this._updatePosition };
        return this._zoomAnimated && (t.zoomanim = this._animateZoom), t;
      },
      isOpen: function () {
        return !!this._map && this._map.hasLayer(this);
      },
      bringToFront: function () {
        return this._map && fe(this._container), this;
      },
      bringToBack: function () {
        return this._map && ge(this._container), this;
      },
      _prepareOpen: function (t) {
        if (!(i = this._source)._map) return !1;
        if (i instanceof ci) {
          var e,
            i = null,
            n = this._source._layers;
          for (e in n)
            if (n[e]._map) {
              i = n[e];
              break;
            }
          if (!i) return !1;
          this._source = i;
        }
        if (!t)
          if (i.getCenter) t = i.getCenter();
          else if (i.getLatLng) t = i.getLatLng();
          else {
            if (!i.getBounds)
              throw new Error("Unable to get source layer LatLng.");
            t = i.getBounds().getCenter();
          }
        return this.setLatLng(t), this._map && this.update(), !0;
      },
      _updateContent: function () {
        if (this._content) {
          var t = this._contentNode,
            e =
              "function" == typeof this._content
                ? this._content(this._source || this)
                : this._content;
          if ("string" == typeof e) t.innerHTML = e;
          else {
            for (; t.hasChildNodes(); ) t.removeChild(t.firstChild);
            t.appendChild(e);
          }
          this.fire("contentupdate");
        }
      },
      _updatePosition: function () {
        var t, e, i;
        this._map &&
          ((e = this._map.latLngToLayerPoint(this._latlng)),
          (t = m(this.options.offset)),
          (i = this._getAnchor()),
          this._zoomAnimated
            ? Z(this._container, e.add(i))
            : (t = t.add(e).add(i)),
          (e = this._containerBottom = -t.y),
          (i = this._containerLeft =
            -Math.round(this._containerWidth / 2) + t.x),
          (this._container.style.bottom = e + "px"),
          (this._container.style.left = i + "px"));
      },
      _getAnchor: function () {
        return [0, 0];
      },
    }),
    Bi =
      (A.include({
        _initOverlay: function (t, e, i, n) {
          var o = e;
          return (
            o instanceof t || (o = new t(n).setContent(e)),
            i && o.setLatLng(i),
            o
          );
        },
      }),
      o.include({
        _initOverlay: function (t, e, i, n) {
          var o = i;
          return (
            o instanceof t
              ? (c(o, n), (o._source = this))
              : (o = e && !n ? e : new t(n, this)).setContent(i),
            o
          );
        },
      }),
      Ai.extend({
        options: {
          pane: "popupPane",
          offset: [0, 7],
          maxWidth: 300,
          minWidth: 50,
          maxHeight: null,
          autoPan: !0,
          autoPanPaddingTopLeft: null,
          autoPanPaddingBottomRight: null,
          autoPanPadding: [5, 5],
          keepInView: !1,
          closeButton: !0,
          autoClose: !0,
          closeOnEscapeKey: !0,
          className: "",
        },
        openOn: function (t) {
          return (
            !(t = arguments.length ? t : this._source._map).hasLayer(this) &&
              t._popup &&
              t._popup.options.autoClose &&
              t.removeLayer(t._popup),
            (t._popup = this),
            Ai.prototype.openOn.call(this, t)
          );
        },
        onAdd: function (t) {
          Ai.prototype.onAdd.call(this, t),
            t.fire("popupopen", { popup: this }),
            this._source &&
              (this._source.fire("popupopen", { popup: this }, !0),
              this._source instanceof fi || this._source.on("preclick", Ae));
        },
        onRemove: function (t) {
          Ai.prototype.onRemove.call(this, t),
            t.fire("popupclose", { popup: this }),
            this._source &&
              (this._source.fire("popupclose", { popup: this }, !0),
              this._source instanceof fi || this._source.off("preclick", Ae));
        },
        getEvents: function () {
          var t = Ai.prototype.getEvents.call(this);
          return (
            (void 0 !== this.options.closeOnClick
              ? this.options.closeOnClick
              : this._map.options.closePopupOnClick) &&
              (t.preclick = this.close),
            this.options.keepInView && (t.moveend = this._adjustPan),
            t
          );
        },
        _initLayout: function () {
          var t = "leaflet-popup",
            e = (this._container = P(
              "div",
              t +
                " " +
                (this.options.className || "") +
                " leaflet-zoom-animated"
            )),
            i = (this._wrapper = P("div", t + "-content-wrapper", e));
          (this._contentNode = P("div", t + "-content", i)),
            Ie(e),
            Be(this._contentNode),
            S(e, "contextmenu", Ae),
            (this._tipContainer = P("div", t + "-tip-container", e)),
            (this._tip = P("div", t + "-tip", this._tipContainer)),
            this.options.closeButton &&
              ((i = this._closeButton =
                P("a", t + "-close-button", e)).setAttribute("role", "button"),
              i.setAttribute("aria-label", "Close popup"),
              (i.href = "#close"),
              (i.innerHTML = '<span aria-hidden="true">&#215;</span>'),
              S(
                i,
                "click",
                function (t) {
                  O(t), this.close();
                },
                this
              ));
        },
        _updateLayout: function () {
          var t = this._contentNode,
            e = t.style,
            i = ((e.width = ""), (e.whiteSpace = "nowrap"), t.offsetWidth),
            i = Math.min(i, this.options.maxWidth),
            i =
              ((i = Math.max(i, this.options.minWidth)),
              (e.width = i + 1 + "px"),
              (e.whiteSpace = ""),
              (e.height = ""),
              t.offsetHeight),
            n = this.options.maxHeight,
            o = "leaflet-popup-scrolled";
          (n && n < i ? ((e.height = n + "px"), M) : z)(t, o),
            (this._containerWidth = this._container.offsetWidth);
        },
        _animateZoom: function (t) {
          var t = this._map._latLngToNewLayerPoint(
              this._latlng,
              t.zoom,
              t.center
            ),
            e = this._getAnchor();
          Z(this._container, t.add(e));
        },
        _adjustPan: function () {
          var t, e, i, n, o, s, r, a;
          this.options.autoPan &&
            (this._map._panAnim && this._map._panAnim.stop(),
            this._autopanning
              ? (this._autopanning = !1)
              : ((t = this._map),
                (e = parseInt(pe(this._container, "marginBottom"), 10) || 0),
                (e = this._container.offsetHeight + e),
                (a = this._containerWidth),
                (i = new p(
                  this._containerLeft,
                  -e - this._containerBottom
                ))._add(Pe(this._container)),
                (i = t.layerPointToContainerPoint(i)),
                (o = m(this.options.autoPanPadding)),
                (n = m(this.options.autoPanPaddingTopLeft || o)),
                (o = m(this.options.autoPanPaddingBottomRight || o)),
                (s = t.getSize()),
                (r = 0),
                i.x + a + o.x > s.x && (r = i.x + a - s.x + o.x),
                i.x - r - n.x < (a = 0) && (r = i.x - n.x),
                i.y + e + o.y > s.y && (a = i.y + e - s.y + o.y),
                i.y - a - n.y < 0 && (a = i.y - n.y),
                (r || a) &&
                  (this.options.keepInView && (this._autopanning = !0),
                  t.fire("autopanstart").panBy([r, a]))));
        },
        _getAnchor: function () {
          return m(
            this._source && this._source._getPopupAnchor
              ? this._source._getPopupAnchor()
              : [0, 0]
          );
        },
      })),
    Ii =
      (A.mergeOptions({ closePopupOnClick: !0 }),
      A.include({
        openPopup: function (t, e, i) {
          return this._initOverlay(Bi, t, e, i).openOn(this), this;
        },
        closePopup: function (t) {
          return (t = arguments.length ? t : this._popup) && t.close(), this;
        },
      }),
      o.include({
        bindPopup: function (t, e) {
          return (
            (this._popup = this._initOverlay(Bi, this._popup, t, e)),
            this._popupHandlersAdded ||
              (this.on({
                click: this._openPopup,
                keypress: this._onKeyPress,
                remove: this.closePopup,
                move: this._movePopup,
              }),
              (this._popupHandlersAdded = !0)),
            this
          );
        },
        unbindPopup: function () {
          return (
            this._popup &&
              (this.off({
                click: this._openPopup,
                keypress: this._onKeyPress,
                remove: this.closePopup,
                move: this._movePopup,
              }),
              (this._popupHandlersAdded = !1),
              (this._popup = null)),
            this
          );
        },
        openPopup: function (t) {
          return (
            this._popup &&
              (this instanceof ci || (this._popup._source = this),
              this._popup._prepareOpen(t || this._latlng) &&
                this._popup.openOn(this._map)),
            this
          );
        },
        closePopup: function () {
          return this._popup && this._popup.close(), this;
        },
        togglePopup: function () {
          return this._popup && this._popup.toggle(this), this;
        },
        isPopupOpen: function () {
          return !!this._popup && this._popup.isOpen();
        },
        setPopupContent: function (t) {
          return this._popup && this._popup.setContent(t), this;
        },
        getPopup: function () {
          return this._popup;
        },
        _openPopup: function (t) {
          var e;
          this._popup &&
            this._map &&
            (Re(t),
            (e = t.layer || t.target),
            this._popup._source !== e || e instanceof fi
              ? ((this._popup._source = e), this.openPopup(t.latlng))
              : this._map.hasLayer(this._popup)
              ? this.closePopup()
              : this.openPopup(t.latlng));
        },
        _movePopup: function (t) {
          this._popup.setLatLng(t.latlng);
        },
        _onKeyPress: function (t) {
          13 === t.originalEvent.keyCode && this._openPopup(t);
        },
      }),
      Ai.extend({
        options: {
          pane: "tooltipPane",
          offset: [0, 0],
          direction: "auto",
          permanent: !1,
          sticky: !1,
          opacity: 0.9,
        },
        onAdd: function (t) {
          Ai.prototype.onAdd.call(this, t),
            this.setOpacity(this.options.opacity),
            t.fire("tooltipopen", { tooltip: this }),
            this._source &&
              (this.addEventParent(this._source),
              this._source.fire("tooltipopen", { tooltip: this }, !0));
        },
        onRemove: function (t) {
          Ai.prototype.onRemove.call(this, t),
            t.fire("tooltipclose", { tooltip: this }),
            this._source &&
              (this.removeEventParent(this._source),
              this._source.fire("tooltipclose", { tooltip: this }, !0));
        },
        getEvents: function () {
          var t = Ai.prototype.getEvents.call(this);
          return this.options.permanent || (t.preclick = this.close), t;
        },
        _initLayout: function () {
          var t =
            "leaflet-tooltip " +
            (this.options.className || "") +
            " leaflet-zoom-" +
            (this._zoomAnimated ? "animated" : "hide");
          (this._contentNode = this._container = P("div", t)),
            this._container.setAttribute("role", "tooltip"),
            this._container.setAttribute("id", "leaflet-tooltip-" + h(this));
        },
        _updateLayout: function () {},
        _adjustPan: function () {},
        _setPosition: function (t) {
          var e,
            i = this._map,
            n = this._container,
            o = i.latLngToContainerPoint(i.getCenter()),
            i = i.layerPointToContainerPoint(t),
            s = this.options.direction,
            r = n.offsetWidth,
            a = n.offsetHeight,
            h = m(this.options.offset),
            l = this._getAnchor(),
            i =
              "top" === s
                ? ((e = r / 2), a)
                : "bottom" === s
                ? ((e = r / 2), 0)
                : ((e =
                    "center" === s
                      ? r / 2
                      : "right" === s
                      ? 0
                      : "left" === s
                      ? r
                      : i.x < o.x
                      ? ((s = "right"), 0)
                      : ((s = "left"), r + 2 * (h.x + l.x))),
                  a / 2);
          (t = t.subtract(m(e, i, !0)).add(h).add(l)),
            z(n, "leaflet-tooltip-right"),
            z(n, "leaflet-tooltip-left"),
            z(n, "leaflet-tooltip-top"),
            z(n, "leaflet-tooltip-bottom"),
            M(n, "leaflet-tooltip-" + s),
            Z(n, t);
        },
        _updatePosition: function () {
          var t = this._map.latLngToLayerPoint(this._latlng);
          this._setPosition(t);
        },
        setOpacity: function (t) {
          (this.options.opacity = t), this._container && C(this._container, t);
        },
        _animateZoom: function (t) {
          t = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center);
          this._setPosition(t);
        },
        _getAnchor: function () {
          return m(
            this._source &&
              this._source._getTooltipAnchor &&
              !this.options.sticky
              ? this._source._getTooltipAnchor()
              : [0, 0]
          );
        },
      })),
    Ri =
      (A.include({
        openTooltip: function (t, e, i) {
          return this._initOverlay(Ii, t, e, i).openOn(this), this;
        },
        closeTooltip: function (t) {
          return t.close(), this;
        },
      }),
      o.include({
        bindTooltip: function (t, e) {
          return (
            this._tooltip && this.isTooltipOpen() && this.unbindTooltip(),
            (this._tooltip = this._initOverlay(Ii, this._tooltip, t, e)),
            this._initTooltipInteractions(),
            this._tooltip.options.permanent &&
              this._map &&
              this._map.hasLayer(this) &&
              this.openTooltip(),
            this
          );
        },
        unbindTooltip: function () {
          return (
            this._tooltip &&
              (this._initTooltipInteractions(!0),
              this.closeTooltip(),
              (this._tooltip = null)),
            this
          );
        },
        _initTooltipInteractions: function (t) {
          var e, i;
          (!t && this._tooltipHandlersAdded) ||
            ((e = t ? "off" : "on"),
            (i = { remove: this.closeTooltip, move: this._moveTooltip }),
            this._tooltip.options.permanent
              ? (i.add = this._openTooltip)
              : ((i.mouseover = this._openTooltip),
                (i.mouseout = this.closeTooltip),
                (i.click = this._openTooltip),
                this._map
                  ? this._addFocusListeners()
                  : (i.add = this._addFocusListeners)),
            this._tooltip.options.sticky && (i.mousemove = this._moveTooltip),
            this[e](i),
            (this._tooltipHandlersAdded = !t));
        },
        openTooltip: function (t) {
          return (
            this._tooltip &&
              (this instanceof ci || (this._tooltip._source = this),
              this._tooltip._prepareOpen(t) &&
                (this._tooltip.openOn(this._map),
                this.getElement
                  ? this._setAriaDescribedByOnLayer(this)
                  : this.eachLayer &&
                    this.eachLayer(this._setAriaDescribedByOnLayer, this))),
            this
          );
        },
        closeTooltip: function () {
          if (this._tooltip) return this._tooltip.close();
        },
        toggleTooltip: function () {
          return this._tooltip && this._tooltip.toggle(this), this;
        },
        isTooltipOpen: function () {
          return this._tooltip.isOpen();
        },
        setTooltipContent: function (t) {
          return this._tooltip && this._tooltip.setContent(t), this;
        },
        getTooltip: function () {
          return this._tooltip;
        },
        _addFocusListeners: function () {
          this.getElement
            ? this._addFocusListenersOnLayer(this)
            : this.eachLayer &&
              this.eachLayer(this._addFocusListenersOnLayer, this);
        },
        _addFocusListenersOnLayer: function (t) {
          var e = "function" == typeof t.getElement && t.getElement();
          e &&
            (S(
              e,
              "focus",
              function () {
                (this._tooltip._source = t), this.openTooltip();
              },
              this
            ),
            S(e, "blur", this.closeTooltip, this));
        },
        _setAriaDescribedByOnLayer: function (t) {
          t = "function" == typeof t.getElement && t.getElement();
          t && t.setAttribute("aria-describedby", this._tooltip._container.id);
        },
        _openTooltip: function (t) {
          var e;
          this._tooltip &&
            this._map &&
            (this._map.dragging &&
            this._map.dragging.moving() &&
            !this._openOnceFlag
              ? ((this._openOnceFlag = !0),
                (e = this)._map.once("moveend", function () {
                  (e._openOnceFlag = !1), e._openTooltip(t);
                }))
              : ((this._tooltip._source = t.layer || t.target),
                this.openTooltip(
                  this._tooltip.options.sticky ? t.latlng : void 0
                )));
        },
        _moveTooltip: function (t) {
          var e = t.latlng;
          this._tooltip.options.sticky &&
            t.originalEvent &&
            ((t = this._map.mouseEventToContainerPoint(t.originalEvent)),
            (t = this._map.containerPointToLayerPoint(t)),
            (e = this._map.layerPointToLatLng(t))),
            this._tooltip.setLatLng(e);
        },
      }),
      di.extend({
        options: {
          iconSize: [12, 12],
          html: !1,
          bgPos: null,
          className: "leaflet-div-icon",
        },
        createIcon: function (t) {
          var t = t && "DIV" === t.tagName ? t : document.createElement("div"),
            e = this.options;
          return (
            e.html instanceof Element
              ? (me(t), t.appendChild(e.html))
              : (t.innerHTML = !1 !== e.html ? e.html : ""),
            e.bgPos &&
              ((e = m(e.bgPos)),
              (t.style.backgroundPosition = -e.x + "px " + -e.y + "px")),
            this._setIconStyles(t, "icon"),
            t
          );
        },
        createShadow: function () {
          return null;
        },
      }));
  di.Default = _i;
  var Ni = o.extend({
    options: {
      tileSize: 256,
      opacity: 1,
      updateWhenIdle: b.mobile,
      updateWhenZooming: !0,
      updateInterval: 200,
      zIndex: 1,
      bounds: null,
      minZoom: 0,
      maxZoom: void 0,
      maxNativeZoom: void 0,
      minNativeZoom: void 0,
      noWrap: !1,
      pane: "tilePane",
      className: "",
      keepBuffer: 2,
    },
    initialize: function (t) {
      c(this, t);
    },
    onAdd: function () {
      this._initContainer(),
        (this._levels = {}),
        (this._tiles = {}),
        this._resetView();
    },
    beforeAdd: function (t) {
      t._addZoomLimit(this);
    },
    onRemove: function (t) {
      this._removeAllTiles(),
        T(this._container),
        t._removeZoomLimit(this),
        (this._container = null),
        (this._tileZoom = void 0);
    },
    bringToFront: function () {
      return (
        this._map && (fe(this._container), this._setAutoZIndex(Math.max)), this
      );
    },
    bringToBack: function () {
      return (
        this._map && (ge(this._container), this._setAutoZIndex(Math.min)), this
      );
    },
    getContainer: function () {
      return this._container;
    },
    setOpacity: function (t) {
      return (this.options.opacity = t), this._updateOpacity(), this;
    },
    setZIndex: function (t) {
      return (this.options.zIndex = t), this._updateZIndex(), this;
    },
    isLoading: function () {
      return this._loading;
    },
    redraw: function () {
      var t;
      return (
        this._map &&
          (this._removeAllTiles(),
          (t = this._clampZoom(this._map.getZoom())) !== this._tileZoom &&
            ((this._tileZoom = t), this._updateLevels()),
          this._update()),
        this
      );
    },
    getEvents: function () {
      var t = {
        viewprereset: this._invalidateAll,
        viewreset: this._resetView,
        zoom: this._resetView,
        moveend: this._onMoveEnd,
      };
      return (
        this.options.updateWhenIdle ||
          (this._onMove ||
            (this._onMove = j(
              this._onMoveEnd,
              this.options.updateInterval,
              this
            )),
          (t.move = this._onMove)),
        this._zoomAnimated && (t.zoomanim = this._animateZoom),
        t
      );
    },
    createTile: function () {
      return document.createElement("div");
    },
    getTileSize: function () {
      var t = this.options.tileSize;
      return t instanceof p ? t : new p(t, t);
    },
    _updateZIndex: function () {
      this._container &&
        void 0 !== this.options.zIndex &&
        null !== this.options.zIndex &&
        (this._container.style.zIndex = this.options.zIndex);
    },
    _setAutoZIndex: function (t) {
      for (
        var e,
          i = this.getPane().children,
          n = -t(-1 / 0, 1 / 0),
          o = 0,
          s = i.length;
        o < s;
        o++
      )
        (e = i[o].style.zIndex),
          i[o] !== this._container && e && (n = t(n, +e));
      isFinite(n) &&
        ((this.options.zIndex = n + t(-1, 1)), this._updateZIndex());
    },
    _updateOpacity: function () {
      if (this._map && !b.ielt9) {
        C(this._container, this.options.opacity);
        var t,
          e = +new Date(),
          i = !1,
          n = !1;
        for (t in this._tiles) {
          var o,
            s = this._tiles[t];
          s.current &&
            s.loaded &&
            ((o = Math.min(1, (e - s.loaded) / 200)),
            C(s.el, o),
            o < 1
              ? (i = !0)
              : (s.active ? (n = !0) : this._onOpaqueTile(s), (s.active = !0)));
        }
        n && !this._noPrune && this._pruneTiles(),
          i &&
            (r(this._fadeFrame),
            (this._fadeFrame = x(this._updateOpacity, this)));
      }
    },
    _onOpaqueTile: u,
    _initContainer: function () {
      this._container ||
        ((this._container = P(
          "div",
          "leaflet-layer " + (this.options.className || "")
        )),
        this._updateZIndex(),
        this.options.opacity < 1 && this._updateOpacity(),
        this.getPane().appendChild(this._container));
    },
    _updateLevels: function () {
      var t = this._tileZoom,
        e = this.options.maxZoom;
      if (void 0 !== t) {
        for (var i in this._levels)
          (i = Number(i)),
            this._levels[i].el.children.length || i === t
              ? ((this._levels[i].el.style.zIndex = e - Math.abs(t - i)),
                this._onUpdateLevel(i))
              : (T(this._levels[i].el),
                this._removeTilesAtZoom(i),
                this._onRemoveLevel(i),
                delete this._levels[i]);
        var n = this._levels[t],
          o = this._map;
        return (
          n ||
            (((n = this._levels[t] = {}).el = P(
              "div",
              "leaflet-tile-container leaflet-zoom-animated",
              this._container
            )),
            (n.el.style.zIndex = e),
            (n.origin = o.project(o.unproject(o.getPixelOrigin()), t).round()),
            (n.zoom = t),
            this._setZoomTransform(n, o.getCenter(), o.getZoom()),
            u(n.el.offsetWidth),
            this._onCreateLevel(n)),
          (this._level = n)
        );
      }
    },
    _onUpdateLevel: u,
    _onRemoveLevel: u,
    _onCreateLevel: u,
    _pruneTiles: function () {
      if (this._map) {
        var t,
          e,
          i,
          n = this._map.getZoom();
        if (n > this.options.maxZoom || n < this.options.minZoom)
          this._removeAllTiles();
        else {
          for (t in this._tiles) (i = this._tiles[t]).retain = i.current;
          for (t in this._tiles)
            (i = this._tiles[t]).current &&
              !i.active &&
              ((e = i.coords),
              this._retainParent(e.x, e.y, e.z, e.z - 5) ||
                this._retainChildren(e.x, e.y, e.z, e.z + 2));
          for (t in this._tiles) this._tiles[t].retain || this._removeTile(t);
        }
      }
    },
    _removeTilesAtZoom: function (t) {
      for (var e in this._tiles)
        this._tiles[e].coords.z === t && this._removeTile(e);
    },
    _removeAllTiles: function () {
      for (var t in this._tiles) this._removeTile(t);
    },
    _invalidateAll: function () {
      for (var t in this._levels)
        T(this._levels[t].el),
          this._onRemoveLevel(Number(t)),
          delete this._levels[t];
      this._removeAllTiles(), (this._tileZoom = void 0);
    },
    _retainParent: function (t, e, i, n) {
      var t = Math.floor(t / 2),
        e = Math.floor(e / 2),
        i = i - 1,
        o = new p(+t, +e),
        o = ((o.z = i), this._tileCoordsToKey(o)),
        o = this._tiles[o];
      return o && o.active
        ? (o.retain = !0)
        : (o && o.loaded && (o.retain = !0),
          n < i && this._retainParent(t, e, i, n));
    },
    _retainChildren: function (t, e, i, n) {
      for (var o = 2 * t; o < 2 * t + 2; o++)
        for (var s = 2 * e; s < 2 * e + 2; s++) {
          var r = new p(o, s),
            r = ((r.z = i + 1), this._tileCoordsToKey(r)),
            r = this._tiles[r];
          r && r.active
            ? (r.retain = !0)
            : (r && r.loaded && (r.retain = !0),
              i + 1 < n && this._retainChildren(o, s, i + 1, n));
        }
    },
    _resetView: function (t) {
      t = t && (t.pinch || t.flyTo);
      this._setView(this._map.getCenter(), this._map.getZoom(), t, t);
    },
    _animateZoom: function (t) {
      this._setView(t.center, t.zoom, !0, t.noUpdate);
    },
    _clampZoom: function (t) {
      var e = this.options;
      return void 0 !== e.minNativeZoom && t < e.minNativeZoom
        ? e.minNativeZoom
        : void 0 !== e.maxNativeZoom && e.maxNativeZoom < t
        ? e.maxNativeZoom
        : t;
    },
    _setView: function (t, e, i, n) {
      var o = Math.round(e),
        o =
          (void 0 !== this.options.maxZoom && o > this.options.maxZoom) ||
          (void 0 !== this.options.minZoom && o < this.options.minZoom)
            ? void 0
            : this._clampZoom(o),
        s = this.options.updateWhenZooming && o !== this._tileZoom;
      (n && !s) ||
        ((this._tileZoom = o),
        this._abortLoading && this._abortLoading(),
        this._updateLevels(),
        this._resetGrid(),
        void 0 !== o && this._update(t),
        i || this._pruneTiles(),
        (this._noPrune = !!i)),
        this._setZoomTransforms(t, e);
    },
    _setZoomTransforms: function (t, e) {
      for (var i in this._levels) this._setZoomTransform(this._levels[i], t, e);
    },
    _setZoomTransform: function (t, e, i) {
      var n = this._map.getZoomScale(i, t.zoom),
        e = t.origin
          .multiplyBy(n)
          .subtract(this._map._getNewPixelOrigin(e, i))
          .round();
      b.any3d ? be(t.el, e, n) : Z(t.el, e);
    },
    _resetGrid: function () {
      var t = this._map,
        e = t.options.crs,
        i = (this._tileSize = this.getTileSize()),
        n = this._tileZoom,
        o = this._map.getPixelWorldBounds(this._tileZoom);
      o && (this._globalTileRange = this._pxBoundsToTileRange(o)),
        (this._wrapX = e.wrapLng &&
          !this.options.noWrap && [
            Math.floor(t.project([0, e.wrapLng[0]], n).x / i.x),
            Math.ceil(t.project([0, e.wrapLng[1]], n).x / i.y),
          ]),
        (this._wrapY = e.wrapLat &&
          !this.options.noWrap && [
            Math.floor(t.project([e.wrapLat[0], 0], n).y / i.x),
            Math.ceil(t.project([e.wrapLat[1], 0], n).y / i.y),
          ]);
    },
    _onMoveEnd: function () {
      this._map && !this._map._animatingZoom && this._update();
    },
    _getTiledPixelBounds: function (t) {
      var e = this._map,
        i = e._animatingZoom
          ? Math.max(e._animateToZoom, e.getZoom())
          : e.getZoom(),
        i = e.getZoomScale(i, this._tileZoom),
        t = e.project(t, this._tileZoom).floor(),
        e = e.getSize().divideBy(2 * i);
      return new f(t.subtract(e), t.add(e));
    },
    _update: function (t) {
      var e = this._map;
      if (e) {
        var i = this._clampZoom(e.getZoom());
        if ((void 0 === t && (t = e.getCenter()), void 0 !== this._tileZoom)) {
          var n,
            e = this._getTiledPixelBounds(t),
            o = this._pxBoundsToTileRange(e),
            s = o.getCenter(),
            r = [],
            e = this.options.keepBuffer,
            a = new f(
              o.getBottomLeft().subtract([e, -e]),
              o.getTopRight().add([e, -e])
            );
          if (
            !(
              isFinite(o.min.x) &&
              isFinite(o.min.y) &&
              isFinite(o.max.x) &&
              isFinite(o.max.y)
            )
          )
            throw new Error("Attempted to load an infinite number of tiles");
          for (n in this._tiles) {
            var h = this._tiles[n].coords;
            (h.z === this._tileZoom && a.contains(new p(h.x, h.y))) ||
              (this._tiles[n].current = !1);
          }
          if (1 < Math.abs(i - this._tileZoom)) this._setView(t, i);
          else {
            for (var l = o.min.y; l <= o.max.y; l++)
              for (var u = o.min.x; u <= o.max.x; u++) {
                var c,
                  d = new p(u, l);
                (d.z = this._tileZoom),
                  this._isValidTile(d) &&
                    ((c = this._tiles[this._tileCoordsToKey(d)])
                      ? (c.current = !0)
                      : r.push(d));
              }
            if (
              (r.sort(function (t, e) {
                return t.distanceTo(s) - e.distanceTo(s);
              }),
              0 !== r.length)
            ) {
              this._loading || ((this._loading = !0), this.fire("loading"));
              for (
                var _ = document.createDocumentFragment(), u = 0;
                u < r.length;
                u++
              )
                this._addTile(r[u], _);
              this._level.el.appendChild(_);
            }
          }
        }
      }
    },
    _isValidTile: function (t) {
      var e = this._map.options.crs;
      if (!e.infinite) {
        var i = this._globalTileRange;
        if (
          (!e.wrapLng && (t.x < i.min.x || t.x > i.max.x)) ||
          (!e.wrapLat && (t.y < i.min.y || t.y > i.max.y))
        )
          return !1;
      }
      return (
        !this.options.bounds ||
        ((e = this._tileCoordsToBounds(t)), g(this.options.bounds).overlaps(e))
      );
    },
    _keyToBounds: function (t) {
      return this._tileCoordsToBounds(this._keyToTileCoords(t));
    },
    _tileCoordsToNwSe: function (t) {
      var e = this._map,
        i = this.getTileSize(),
        n = t.scaleBy(i),
        i = n.add(i);
      return [e.unproject(n, t.z), e.unproject(i, t.z)];
    },
    _tileCoordsToBounds: function (t) {
      (t = this._tileCoordsToNwSe(t)), (t = new s(t[0], t[1]));
      return (t = this.options.noWrap ? t : this._map.wrapLatLngBounds(t));
    },
    _tileCoordsToKey: function (t) {
      return t.x + ":" + t.y + ":" + t.z;
    },
    _keyToTileCoords: function (t) {
      var t = t.split(":"),
        e = new p(+t[0], +t[1]);
      return (e.z = +t[2]), e;
    },
    _removeTile: function (t) {
      var e = this._tiles[t];
      e &&
        (T(e.el),
        delete this._tiles[t],
        this.fire("tileunload", {
          tile: e.el,
          coords: this._keyToTileCoords(t),
        }));
    },
    _initTile: function (t) {
      M(t, "leaflet-tile");
      var e = this.getTileSize();
      (t.style.width = e.x + "px"),
        (t.style.height = e.y + "px"),
        (t.onselectstart = u),
        (t.onmousemove = u),
        b.ielt9 && this.options.opacity < 1 && C(t, this.options.opacity);
    },
    _addTile: function (t, e) {
      var i = this._getTilePos(t),
        n = this._tileCoordsToKey(t),
        o = this.createTile(this._wrapCoords(t), a(this._tileReady, this, t));
      this._initTile(o),
        this.createTile.length < 2 && x(a(this._tileReady, this, t, null, o)),
        Z(o, i),
        (this._tiles[n] = { el: o, coords: t, current: !0 }),
        e.appendChild(o),
        this.fire("tileloadstart", { tile: o, coords: t });
    },
    _tileReady: function (t, e, i) {
      e && this.fire("tileerror", { error: e, tile: i, coords: t });
      var n = this._tileCoordsToKey(t);
      (i = this._tiles[n]) &&
        ((i.loaded = +new Date()),
        this._map._fadeAnimated
          ? (C(i.el, 0),
            r(this._fadeFrame),
            (this._fadeFrame = x(this._updateOpacity, this)))
          : ((i.active = !0), this._pruneTiles()),
        e ||
          (M(i.el, "leaflet-tile-loaded"),
          this.fire("tileload", { tile: i.el, coords: t })),
        this._noTilesToLoad() &&
          ((this._loading = !1),
          this.fire("load"),
          b.ielt9 || !this._map._fadeAnimated
            ? x(this._pruneTiles, this)
            : setTimeout(a(this._pruneTiles, this), 250)));
    },
    _getTilePos: function (t) {
      return t.scaleBy(this.getTileSize()).subtract(this._level.origin);
    },
    _wrapCoords: function (t) {
      var e = new p(
        this._wrapX ? H(t.x, this._wrapX) : t.x,
        this._wrapY ? H(t.y, this._wrapY) : t.y
      );
      return (e.z = t.z), e;
    },
    _pxBoundsToTileRange: function (t) {
      var e = this.getTileSize();
      return new f(
        t.min.unscaleBy(e).floor(),
        t.max.unscaleBy(e).ceil().subtract([1, 1])
      );
    },
    _noTilesToLoad: function () {
      for (var t in this._tiles) if (!this._tiles[t].loaded) return !1;
      return !0;
    },
  });
  var Di = Ni.extend({
    options: {
      minZoom: 0,
      maxZoom: 18,
      subdomains: "abc",
      errorTileUrl: "",
      zoomOffset: 0,
      tms: !1,
      zoomReverse: !1,
      detectRetina: !1,
      crossOrigin: !1,
      referrerPolicy: !1,
    },
    initialize: function (t, e) {
      (this._url = t),
        (e = c(this, e)).detectRetina && b.retina && 0 < e.maxZoom
          ? ((e.tileSize = Math.floor(e.tileSize / 2)),
            e.zoomReverse
              ? (e.zoomOffset--,
                (e.minZoom = Math.min(e.maxZoom, e.minZoom + 1)))
              : (e.zoomOffset++,
                (e.maxZoom = Math.max(e.minZoom, e.maxZoom - 1))),
            (e.minZoom = Math.max(0, e.minZoom)))
          : e.zoomReverse
          ? (e.minZoom = Math.min(e.maxZoom, e.minZoom))
          : (e.maxZoom = Math.max(e.minZoom, e.maxZoom)),
        "string" == typeof e.subdomains &&
          (e.subdomains = e.subdomains.split("")),
        this.on("tileunload", this._onTileRemove);
    },
    setUrl: function (t, e) {
      return (
        this._url === t && void 0 === e && (e = !0),
        (this._url = t),
        e || this.redraw(),
        this
      );
    },
    createTile: function (t, e) {
      var i = document.createElement("img");
      return (
        S(i, "load", a(this._tileOnLoad, this, e, i)),
        S(i, "error", a(this._tileOnError, this, e, i)),
        (!this.options.crossOrigin && "" !== this.options.crossOrigin) ||
          (i.crossOrigin =
            !0 === this.options.crossOrigin ? "" : this.options.crossOrigin),
        "string" == typeof this.options.referrerPolicy &&
          (i.referrerPolicy = this.options.referrerPolicy),
        (i.alt = ""),
        (i.src = this.getTileUrl(t)),
        i
      );
    },
    getTileUrl: function (t) {
      var e = {
        r: b.retina ? "@2x" : "",
        s: this._getSubdomain(t),
        x: t.x,
        y: t.y,
        z: this._getZoomForUrl(),
      };
      return (
        this._map &&
          !this._map.options.crs.infinite &&
          ((t = this._globalTileRange.max.y - t.y),
          this.options.tms && (e.y = t),
          (e["-y"] = t)),
        q(this._url, l(e, this.options))
      );
    },
    _tileOnLoad: function (t, e) {
      b.ielt9 ? setTimeout(a(t, this, null, e), 0) : t(null, e);
    },
    _tileOnError: function (t, e, i) {
      var n = this.options.errorTileUrl;
      n && e.getAttribute("src") !== n && (e.src = n), t(i, e);
    },
    _onTileRemove: function (t) {
      t.tile.onload = null;
    },
    _getZoomForUrl: function () {
      var t = this._tileZoom,
        e = this.options.maxZoom;
      return (
        (t = this.options.zoomReverse ? e - t : t) + this.options.zoomOffset
      );
    },
    _getSubdomain: function (t) {
      t = Math.abs(t.x + t.y) % this.options.subdomains.length;
      return this.options.subdomains[t];
    },
    _abortLoading: function () {
      var t, e, i;
      for (t in this._tiles)
        this._tiles[t].coords.z !== this._tileZoom &&
          (((i = this._tiles[t].el).onload = u),
          (i.onerror = u),
          i.complete ||
            ((i.src = K),
            (e = this._tiles[t].coords),
            T(i),
            delete this._tiles[t],
            this.fire("tileabort", { tile: i, coords: e })));
    },
    _removeTile: function (t) {
      var e = this._tiles[t];
      if (e)
        return (
          e.el.setAttribute("src", K), Ni.prototype._removeTile.call(this, t)
        );
    },
    _tileReady: function (t, e, i) {
      if (this._map && (!i || i.getAttribute("src") !== K))
        return Ni.prototype._tileReady.call(this, t, e, i);
    },
  });
  function ji(t, e) {
    return new Di(t, e);
  }
  var Hi = Di.extend({
    defaultWmsParams: {
      service: "WMS",
      request: "GetMap",
      layers: "",
      styles: "",
      format: "image/jpeg",
      transparent: !1,
      version: "1.1.1",
    },
    options: { crs: null, uppercase: !1 },
    initialize: function (t, e) {
      this._url = t;
      var i,
        n = l({}, this.defaultWmsParams);
      for (i in e) i in this.options || (n[i] = e[i]);
      var t = (e = c(this, e)).detectRetina && b.retina ? 2 : 1,
        o = this.getTileSize();
      (n.width = o.x * t), (n.height = o.y * t), (this.wmsParams = n);
    },
    onAdd: function (t) {
      (this._crs = this.options.crs || t.options.crs),
        (this._wmsVersion = parseFloat(this.wmsParams.version));
      var e = 1.3 <= this._wmsVersion ? "crs" : "srs";
      (this.wmsParams[e] = this._crs.code), Di.prototype.onAdd.call(this, t);
    },
    getTileUrl: function (t) {
      var e = this._tileCoordsToNwSe(t),
        i = this._crs,
        i = _(i.project(e[0]), i.project(e[1])),
        e = i.min,
        i = i.max,
        e = (
          1.3 <= this._wmsVersion && this._crs === li
            ? [e.y, e.x, i.y, i.x]
            : [e.x, e.y, i.x, i.y]
        ).join(","),
        i = Di.prototype.getTileUrl.call(this, t);
      return (
        i +
        U(this.wmsParams, i, this.options.uppercase) +
        (this.options.uppercase ? "&BBOX=" : "&bbox=") +
        e
      );
    },
    setParams: function (t, e) {
      return l(this.wmsParams, t), e || this.redraw(), this;
    },
  });
  (Di.WMS = Hi),
    (ji.wms = function (t, e) {
      return new Hi(t, e);
    });
  var Wi = o.extend({
      options: { padding: 0.1 },
      initialize: function (t) {
        c(this, t), h(this), (this._layers = this._layers || {});
      },
      onAdd: function () {
        this._container ||
          (this._initContainer(), M(this._container, "leaflet-zoom-animated")),
          this.getPane().appendChild(this._container),
          this._update(),
          this.on("update", this._updatePaths, this);
      },
      onRemove: function () {
        this.off("update", this._updatePaths, this), this._destroyContainer();
      },
      getEvents: function () {
        var t = {
          viewreset: this._reset,
          zoom: this._onZoom,
          moveend: this._update,
          zoomend: this._onZoomEnd,
        };
        return this._zoomAnimated && (t.zoomanim = this._onAnimZoom), t;
      },
      _onAnimZoom: function (t) {
        this._updateTransform(t.center, t.zoom);
      },
      _onZoom: function () {
        this._updateTransform(this._map.getCenter(), this._map.getZoom());
      },
      _updateTransform: function (t, e) {
        var i = this._map.getZoomScale(e, this._zoom),
          n = this._map.getSize().multiplyBy(0.5 + this.options.padding),
          o = this._map.project(this._center, e),
          n = n
            .multiplyBy(-i)
            .add(o)
            .subtract(this._map._getNewPixelOrigin(t, e));
        b.any3d ? be(this._container, n, i) : Z(this._container, n);
      },
      _reset: function () {
        for (var t in (this._update(),
        this._updateTransform(this._center, this._zoom),
        this._layers))
          this._layers[t]._reset();
      },
      _onZoomEnd: function () {
        for (var t in this._layers) this._layers[t]._project();
      },
      _updatePaths: function () {
        for (var t in this._layers) this._layers[t]._update();
      },
      _update: function () {
        var t = this.options.padding,
          e = this._map.getSize(),
          i = this._map.containerPointToLayerPoint(e.multiplyBy(-t)).round();
        (this._bounds = new f(i, i.add(e.multiplyBy(1 + 2 * t)).round())),
          (this._center = this._map.getCenter()),
          (this._zoom = this._map.getZoom());
      },
    }),
    Fi = Wi.extend({
      options: { tolerance: 0 },
      getEvents: function () {
        var t = Wi.prototype.getEvents.call(this);
        return (t.viewprereset = this._onViewPreReset), t;
      },
      _onViewPreReset: function () {
        this._postponeUpdatePaths = !0;
      },
      onAdd: function () {
        Wi.prototype.onAdd.call(this), this._draw();
      },
      _initContainer: function () {
        var t = (this._container = document.createElement("canvas"));
        S(t, "mousemove", this._onMouseMove, this),
          S(
            t,
            "click dblclick mousedown mouseup contextmenu",
            this._onClick,
            this
          ),
          S(t, "mouseout", this._handleMouseOut, this),
          (t._leaflet_disable_events = !0),
          (this._ctx = t.getContext("2d"));
      },
      _destroyContainer: function () {
        r(this._redrawRequest),
          delete this._ctx,
          T(this._container),
          k(this._container),
          delete this._container;
      },
      _updatePaths: function () {
        if (!this._postponeUpdatePaths) {
          for (var t in ((this._redrawBounds = null), this._layers))
            this._layers[t]._update();
          this._redraw();
        }
      },
      _update: function () {
        var t, e, i, n;
        (this._map._animatingZoom && this._bounds) ||
          (Wi.prototype._update.call(this),
          (t = this._bounds),
          (e = this._container),
          (i = t.getSize()),
          (n = b.retina ? 2 : 1),
          Z(e, t.min),
          (e.width = n * i.x),
          (e.height = n * i.y),
          (e.style.width = i.x + "px"),
          (e.style.height = i.y + "px"),
          b.retina && this._ctx.scale(2, 2),
          this._ctx.translate(-t.min.x, -t.min.y),
          this.fire("update"));
      },
      _reset: function () {
        Wi.prototype._reset.call(this),
          this._postponeUpdatePaths &&
            ((this._postponeUpdatePaths = !1), this._updatePaths());
      },
      _initPath: function (t) {
        this._updateDashArray(t);
        t = (this._layers[h(t)] = t)._order = {
          layer: t,
          prev: this._drawLast,
          next: null,
        };
        this._drawLast && (this._drawLast.next = t),
          (this._drawLast = t),
          (this._drawFirst = this._drawFirst || this._drawLast);
      },
      _addPath: function (t) {
        this._requestRedraw(t);
      },
      _removePath: function (t) {
        var e = t._order,
          i = e.next,
          e = e.prev;
        i ? (i.prev = e) : (this._drawLast = e),
          e ? (e.next = i) : (this._drawFirst = i),
          delete t._order,
          delete this._layers[h(t)],
          this._requestRedraw(t);
      },
      _updatePath: function (t) {
        this._extendRedrawBounds(t),
          t._project(),
          t._update(),
          this._requestRedraw(t);
      },
      _updateStyle: function (t) {
        this._updateDashArray(t), this._requestRedraw(t);
      },
      _updateDashArray: function (t) {
        if ("string" == typeof t.options.dashArray) {
          for (
            var e, i = t.options.dashArray.split(/[, ]+/), n = [], o = 0;
            o < i.length;
            o++
          ) {
            if (((e = Number(i[o])), isNaN(e))) return;
            n.push(e);
          }
          t.options._dashArray = n;
        } else t.options._dashArray = t.options.dashArray;
      },
      _requestRedraw: function (t) {
        this._map &&
          (this._extendRedrawBounds(t),
          (this._redrawRequest = this._redrawRequest || x(this._redraw, this)));
      },
      _extendRedrawBounds: function (t) {
        var e;
        t._pxBounds &&
          ((e = (t.options.weight || 0) + 1),
          (this._redrawBounds = this._redrawBounds || new f()),
          this._redrawBounds.extend(t._pxBounds.min.subtract([e, e])),
          this._redrawBounds.extend(t._pxBounds.max.add([e, e])));
      },
      _redraw: function () {
        (this._redrawRequest = null),
          this._redrawBounds &&
            (this._redrawBounds.min._floor(), this._redrawBounds.max._ceil()),
          this._clear(),
          this._draw(),
          (this._redrawBounds = null);
      },
      _clear: function () {
        var t,
          e = this._redrawBounds;
        e
          ? ((t = e.getSize()), this._ctx.clearRect(e.min.x, e.min.y, t.x, t.y))
          : (this._ctx.save(),
            this._ctx.setTransform(1, 0, 0, 1, 0, 0),
            this._ctx.clearRect(
              0,
              0,
              this._container.width,
              this._container.height
            ),
            this._ctx.restore());
      },
      _draw: function () {
        var t,
          e,
          i = this._redrawBounds;
        this._ctx.save(),
          i &&
            ((e = i.getSize()),
            this._ctx.beginPath(),
            this._ctx.rect(i.min.x, i.min.y, e.x, e.y),
            this._ctx.clip()),
          (this._drawing = !0);
        for (var n = this._drawFirst; n; n = n.next)
          (t = n.layer),
            (!i || (t._pxBounds && t._pxBounds.intersects(i))) &&
              t._updatePath();
        (this._drawing = !1), this._ctx.restore();
      },
      _updatePoly: function (t, e) {
        if (this._drawing) {
          var i,
            n,
            o,
            s,
            r = t._parts,
            a = r.length,
            h = this._ctx;
          if (a) {
            for (h.beginPath(), i = 0; i < a; i++) {
              for (n = 0, o = r[i].length; n < o; n++)
                (s = r[i][n]), h[n ? "lineTo" : "moveTo"](s.x, s.y);
              e && h.closePath();
            }
            this._fillStroke(h, t);
          }
        }
      },
      _updateCircle: function (t) {
        var e, i, n, o;
        this._drawing &&
          !t._empty() &&
          ((e = t._point),
          (i = this._ctx),
          (n = Math.max(Math.round(t._radius), 1)),
          1 != (o = (Math.max(Math.round(t._radiusY), 1) || n) / n) &&
            (i.save(), i.scale(1, o)),
          i.beginPath(),
          i.arc(e.x, e.y / o, n, 0, 2 * Math.PI, !1),
          1 != o && i.restore(),
          this._fillStroke(i, t));
      },
      _fillStroke: function (t, e) {
        var i = e.options;
        i.fill &&
          ((t.globalAlpha = i.fillOpacity),
          (t.fillStyle = i.fillColor || i.color),
          t.fill(i.fillRule || "evenodd")),
          i.stroke &&
            0 !== i.weight &&
            (t.setLineDash &&
              t.setLineDash((e.options && e.options._dashArray) || []),
            (t.globalAlpha = i.opacity),
            (t.lineWidth = i.weight),
            (t.strokeStyle = i.color),
            (t.lineCap = i.lineCap),
            (t.lineJoin = i.lineJoin),
            t.stroke());
      },
      _onClick: function (t) {
        for (
          var e,
            i,
            n = this._map.mouseEventToLayerPoint(t),
            o = this._drawFirst;
          o;
          o = o.next
        )
          (e = o.layer).options.interactive &&
            e._containsPoint(n) &&
            ((("click" === t.type || "preclick" === t.type) &&
              this._map._draggableMoved(e)) ||
              (i = e));
        this._fireEvent(!!i && [i], t);
      },
      _onMouseMove: function (t) {
        var e;
        !this._map ||
          this._map.dragging.moving() ||
          this._map._animatingZoom ||
          ((e = this._map.mouseEventToLayerPoint(t)),
          this._handleMouseHover(t, e));
      },
      _handleMouseOut: function (t) {
        var e = this._hoveredLayer;
        e &&
          (z(this._container, "leaflet-interactive"),
          this._fireEvent([e], t, "mouseout"),
          (this._hoveredLayer = null),
          (this._mouseHoverThrottled = !1));
      },
      _handleMouseHover: function (t, e) {
        if (!this._mouseHoverThrottled) {
          for (var i, n, o = this._drawFirst; o; o = o.next)
            (i = o.layer).options.interactive && i._containsPoint(e) && (n = i);
          n !== this._hoveredLayer &&
            (this._handleMouseOut(t),
            n &&
              (M(this._container, "leaflet-interactive"),
              this._fireEvent([n], t, "mouseover"),
              (this._hoveredLayer = n))),
            this._fireEvent(!!this._hoveredLayer && [this._hoveredLayer], t),
            (this._mouseHoverThrottled = !0),
            setTimeout(
              a(function () {
                this._mouseHoverThrottled = !1;
              }, this),
              32
            );
        }
      },
      _fireEvent: function (t, e, i) {
        this._map._fireDOMEvent(e, i || e.type, t);
      },
      _bringToFront: function (t) {
        var e,
          i,
          n = t._order;
        n &&
          ((e = n.next),
          (i = n.prev),
          e &&
            ((e.prev = i) ? (i.next = e) : e && (this._drawFirst = e),
            (n.prev = this._drawLast),
            ((this._drawLast.next = n).next = null),
            (this._drawLast = n),
            this._requestRedraw(t)));
      },
      _bringToBack: function (t) {
        var e,
          i,
          n = t._order;
        n &&
          ((e = n.next),
          (i = n.prev) &&
            ((i.next = e) ? (e.prev = i) : i && (this._drawLast = i),
            (n.prev = null),
            (n.next = this._drawFirst),
            (this._drawFirst.prev = n),
            (this._drawFirst = n),
            this._requestRedraw(t)));
      },
    });
  function Ui(t) {
    return b.canvas ? new Fi(t) : null;
  }
  var Vi = (function () {
      try {
        return (
          document.namespaces.add("lvml", "urn:schemas-microsoft-com:vml"),
          function (t) {
            return document.createElement("<lvml:" + t + ' class="lvml">');
          }
        );
      } catch (t) {}
      return function (t) {
        return document.createElement(
          "<" + t + ' xmlns="urn:schemas-microsoft.com:vml" class="lvml">'
        );
      };
    })(),
    zt = {
      _initContainer: function () {
        this._container = P("div", "leaflet-vml-container");
      },
      _update: function () {
        this._map._animatingZoom ||
          (Wi.prototype._update.call(this), this.fire("update"));
      },
      _initPath: function (t) {
        var e = (t._container = Vi("shape"));
        M(e, "leaflet-vml-shape " + (this.options.className || "")),
          (e.coordsize = "1 1"),
          (t._path = Vi("path")),
          e.appendChild(t._path),
          this._updateStyle(t),
          (this._layers[h(t)] = t);
      },
      _addPath: function (t) {
        var e = t._container;
        this._container.appendChild(e),
          t.options.interactive && t.addInteractiveTarget(e);
      },
      _removePath: function (t) {
        var e = t._container;
        T(e), t.removeInteractiveTarget(e), delete this._layers[h(t)];
      },
      _updateStyle: function (t) {
        var e = t._stroke,
          i = t._fill,
          n = t.options,
          o = t._container;
        (o.stroked = !!n.stroke),
          (o.filled = !!n.fill),
          n.stroke
            ? ((e = e || (t._stroke = Vi("stroke"))),
              o.appendChild(e),
              (e.weight = n.weight + "px"),
              (e.color = n.color),
              (e.opacity = n.opacity),
              n.dashArray
                ? (e.dashStyle = d(n.dashArray)
                    ? n.dashArray.join(" ")
                    : n.dashArray.replace(/( *, *)/g, " "))
                : (e.dashStyle = ""),
              (e.endcap = n.lineCap.replace("butt", "flat")),
              (e.joinstyle = n.lineJoin))
            : e && (o.removeChild(e), (t._stroke = null)),
          n.fill
            ? ((i = i || (t._fill = Vi("fill"))),
              o.appendChild(i),
              (i.color = n.fillColor || n.color),
              (i.opacity = n.fillOpacity))
            : i && (o.removeChild(i), (t._fill = null));
      },
      _updateCircle: function (t) {
        var e = t._point.round(),
          i = Math.round(t._radius),
          n = Math.round(t._radiusY || i);
        this._setPath(
          t,
          t._empty()
            ? "M0 0"
            : "AL " + e.x + "," + e.y + " " + i + "," + n + " 0,23592600"
        );
      },
      _setPath: function (t, e) {
        t._path.v = e;
      },
      _bringToFront: function (t) {
        fe(t._container);
      },
      _bringToBack: function (t) {
        ge(t._container);
      },
    },
    qi = b.vml ? Vi : ct,
    Gi = Wi.extend({
      _initContainer: function () {
        (this._container = qi("svg")),
          this._container.setAttribute("pointer-events", "none"),
          (this._rootGroup = qi("g")),
          this._container.appendChild(this._rootGroup);
      },
      _destroyContainer: function () {
        T(this._container),
          k(this._container),
          delete this._container,
          delete this._rootGroup,
          delete this._svgSize;
      },
      _update: function () {
        var t, e, i;
        (this._map._animatingZoom && this._bounds) ||
          (Wi.prototype._update.call(this),
          (e = (t = this._bounds).getSize()),
          (i = this._container),
          (this._svgSize && this._svgSize.equals(e)) ||
            ((this._svgSize = e),
            i.setAttribute("width", e.x),
            i.setAttribute("height", e.y)),
          Z(i, t.min),
          i.setAttribute("viewBox", [t.min.x, t.min.y, e.x, e.y].join(" ")),
          this.fire("update"));
      },
      _initPath: function (t) {
        var e = (t._path = qi("path"));
        t.options.className && M(e, t.options.className),
          t.options.interactive && M(e, "leaflet-interactive"),
          this._updateStyle(t),
          (this._layers[h(t)] = t);
      },
      _addPath: function (t) {
        this._rootGroup || this._initContainer(),
          this._rootGroup.appendChild(t._path),
          t.addInteractiveTarget(t._path);
      },
      _removePath: function (t) {
        T(t._path),
          t.removeInteractiveTarget(t._path),
          delete this._layers[h(t)];
      },
      _updatePath: function (t) {
        t._project(), t._update();
      },
      _updateStyle: function (t) {
        var e = t._path,
          t = t.options;
        e &&
          (t.stroke
            ? (e.setAttribute("stroke", t.color),
              e.setAttribute("stroke-opacity", t.opacity),
              e.setAttribute("stroke-width", t.weight),
              e.setAttribute("stroke-linecap", t.lineCap),
              e.setAttribute("stroke-linejoin", t.lineJoin),
              t.dashArray
                ? e.setAttribute("stroke-dasharray", t.dashArray)
                : e.removeAttribute("stroke-dasharray"),
              t.dashOffset
                ? e.setAttribute("stroke-dashoffset", t.dashOffset)
                : e.removeAttribute("stroke-dashoffset"))
            : e.setAttribute("stroke", "none"),
          t.fill
            ? (e.setAttribute("fill", t.fillColor || t.color),
              e.setAttribute("fill-opacity", t.fillOpacity),
              e.setAttribute("fill-rule", t.fillRule || "evenodd"))
            : e.setAttribute("fill", "none"));
      },
      _updatePoly: function (t, e) {
        this._setPath(t, dt(t._parts, e));
      },
      _updateCircle: function (t) {
        var e = t._point,
          i = Math.max(Math.round(t._radius), 1),
          n =
            "a" +
            i +
            "," +
            (Math.max(Math.round(t._radiusY), 1) || i) +
            " 0 1,0 ",
          e = t._empty()
            ? "M0 0"
            : "M" +
              (e.x - i) +
              "," +
              e.y +
              n +
              2 * i +
              ",0 " +
              n +
              2 * -i +
              ",0 ";
        this._setPath(t, e);
      },
      _setPath: function (t, e) {
        t._path.setAttribute("d", e);
      },
      _bringToFront: function (t) {
        fe(t._path);
      },
      _bringToBack: function (t) {
        ge(t._path);
      },
    });
  function Ki(t) {
    return b.svg || b.vml ? new Gi(t) : null;
  }
  b.vml && Gi.include(zt),
    A.include({
      getRenderer: function (t) {
        t =
          (t =
            t.options.renderer ||
            this._getPaneRenderer(t.options.pane) ||
            this.options.renderer ||
            this._renderer) || (this._renderer = this._createRenderer());
        return this.hasLayer(t) || this.addLayer(t), t;
      },
      _getPaneRenderer: function (t) {
        var e;
        return (
          "overlayPane" !== t &&
          void 0 !== t &&
          (void 0 === (e = this._paneRenderers[t]) &&
            ((e = this._createRenderer({ pane: t })),
            (this._paneRenderers[t] = e)),
          e)
        );
      },
      _createRenderer: function (t) {
        return (this.options.preferCanvas && Ui(t)) || Ki(t);
      },
    });
  var Yi = xi.extend({
    initialize: function (t, e) {
      xi.prototype.initialize.call(this, this._boundsToLatLngs(t), e);
    },
    setBounds: function (t) {
      return this.setLatLngs(this._boundsToLatLngs(t));
    },
    _boundsToLatLngs: function (t) {
      return [
        (t = g(t)).getSouthWest(),
        t.getNorthWest(),
        t.getNorthEast(),
        t.getSouthEast(),
      ];
    },
  });
  (Gi.create = qi),
    (Gi.pointsToPath = dt),
    (wi.geometryToLayer = bi),
    (wi.coordsToLatLng = Li),
    (wi.coordsToLatLngs = Ti),
    (wi.latLngToCoords = Mi),
    (wi.latLngsToCoords = zi),
    (wi.getFeature = Ci),
    (wi.asFeature = Zi),
    A.mergeOptions({ boxZoom: !0 });
  var _t = n.extend({
      initialize: function (t) {
        (this._map = t),
          (this._container = t._container),
          (this._pane = t._panes.overlayPane),
          (this._resetStateTimeout = 0),
          t.on("unload", this._destroy, this);
      },
      addHooks: function () {
        S(this._container, "mousedown", this._onMouseDown, this);
      },
      removeHooks: function () {
        k(this._container, "mousedown", this._onMouseDown, this);
      },
      moved: function () {
        return this._moved;
      },
      _destroy: function () {
        T(this._pane), delete this._pane;
      },
      _resetState: function () {
        (this._resetStateTimeout = 0), (this._moved = !1);
      },
      _clearDeferredResetState: function () {
        0 !== this._resetStateTimeout &&
          (clearTimeout(this._resetStateTimeout),
          (this._resetStateTimeout = 0));
      },
      _onMouseDown: function (t) {
        if (!t.shiftKey || (1 !== t.which && 1 !== t.button)) return !1;
        this._clearDeferredResetState(),
          this._resetState(),
          re(),
          Le(),
          (this._startPoint = this._map.mouseEventToContainerPoint(t)),
          S(
            document,
            {
              contextmenu: Re,
              mousemove: this._onMouseMove,
              mouseup: this._onMouseUp,
              keydown: this._onKeyDown,
            },
            this
          );
      },
      _onMouseMove: function (t) {
        this._moved ||
          ((this._moved = !0),
          (this._box = P("div", "leaflet-zoom-box", this._container)),
          M(this._container, "leaflet-crosshair"),
          this._map.fire("boxzoomstart")),
          (this._point = this._map.mouseEventToContainerPoint(t));
        var t = new f(this._point, this._startPoint),
          e = t.getSize();
        Z(this._box, t.min),
          (this._box.style.width = e.x + "px"),
          (this._box.style.height = e.y + "px");
      },
      _finish: function () {
        this._moved && (T(this._box), z(this._container, "leaflet-crosshair")),
          ae(),
          Te(),
          k(
            document,
            {
              contextmenu: Re,
              mousemove: this._onMouseMove,
              mouseup: this._onMouseUp,
              keydown: this._onKeyDown,
            },
            this
          );
      },
      _onMouseUp: function (t) {
        (1 !== t.which && 1 !== t.button) ||
          (this._finish(),
          this._moved &&
            (this._clearDeferredResetState(),
            (this._resetStateTimeout = setTimeout(
              a(this._resetState, this),
              0
            )),
            (t = new s(
              this._map.containerPointToLatLng(this._startPoint),
              this._map.containerPointToLatLng(this._point)
            )),
            this._map.fitBounds(t).fire("boxzoomend", { boxZoomBounds: t })));
      },
      _onKeyDown: function (t) {
        27 === t.keyCode &&
          (this._finish(), this._clearDeferredResetState(), this._resetState());
      },
    }),
    Ct =
      (A.addInitHook("addHandler", "boxZoom", _t),
      A.mergeOptions({ doubleClickZoom: !0 }),
      n.extend({
        addHooks: function () {
          this._map.on("dblclick", this._onDoubleClick, this);
        },
        removeHooks: function () {
          this._map.off("dblclick", this._onDoubleClick, this);
        },
        _onDoubleClick: function (t) {
          var e = this._map,
            i = e.getZoom(),
            n = e.options.zoomDelta,
            i = t.originalEvent.shiftKey ? i - n : i + n;
          "center" === e.options.doubleClickZoom
            ? e.setZoom(i)
            : e.setZoomAround(t.containerPoint, i);
        },
      })),
    Zt =
      (A.addInitHook("addHandler", "doubleClickZoom", Ct),
      A.mergeOptions({
        dragging: !0,
        inertia: !0,
        inertiaDeceleration: 3400,
        inertiaMaxSpeed: 1 / 0,
        easeLinearity: 0.2,
        worldCopyJump: !1,
        maxBoundsViscosity: 0,
      }),
      n.extend({
        addHooks: function () {
          var t;
          this._draggable ||
            ((t = this._map),
            (this._draggable = new Xe(t._mapPane, t._container)),
            this._draggable.on(
              {
                dragstart: this._onDragStart,
                drag: this._onDrag,
                dragend: this._onDragEnd,
              },
              this
            ),
            this._draggable.on("predrag", this._onPreDragLimit, this),
            t.options.worldCopyJump &&
              (this._draggable.on("predrag", this._onPreDragWrap, this),
              t.on("zoomend", this._onZoomEnd, this),
              t.whenReady(this._onZoomEnd, this))),
            M(this._map._container, "leaflet-grab leaflet-touch-drag"),
            this._draggable.enable(),
            (this._positions = []),
            (this._times = []);
        },
        removeHooks: function () {
          z(this._map._container, "leaflet-grab"),
            z(this._map._container, "leaflet-touch-drag"),
            this._draggable.disable();
        },
        moved: function () {
          return this._draggable && this._draggable._moved;
        },
        moving: function () {
          return this._draggable && this._draggable._moving;
        },
        _onDragStart: function () {
          var t,
            e = this._map;
          e._stop(),
            this._map.options.maxBounds && this._map.options.maxBoundsViscosity
              ? ((t = g(this._map.options.maxBounds)),
                (this._offsetLimit = _(
                  this._map
                    .latLngToContainerPoint(t.getNorthWest())
                    .multiplyBy(-1),
                  this._map
                    .latLngToContainerPoint(t.getSouthEast())
                    .multiplyBy(-1)
                    .add(this._map.getSize())
                )),
                (this._viscosity = Math.min(
                  1,
                  Math.max(0, this._map.options.maxBoundsViscosity)
                )))
              : (this._offsetLimit = null),
            e.fire("movestart").fire("dragstart"),
            e.options.inertia && ((this._positions = []), (this._times = []));
        },
        _onDrag: function (t) {
          var e, i;
          this._map.options.inertia &&
            ((e = this._lastTime = +new Date()),
            (i = this._lastPos =
              this._draggable._absPos || this._draggable._newPos),
            this._positions.push(i),
            this._times.push(e),
            this._prunePositions(e)),
            this._map.fire("move", t).fire("drag", t);
        },
        _prunePositions: function (t) {
          for (; 1 < this._positions.length && 50 < t - this._times[0]; )
            this._positions.shift(), this._times.shift();
        },
        _onZoomEnd: function () {
          var t = this._map.getSize().divideBy(2),
            e = this._map.latLngToLayerPoint([0, 0]);
          (this._initialWorldOffset = e.subtract(t).x),
            (this._worldWidth = this._map.getPixelWorldBounds().getSize().x);
        },
        _viscousLimit: function (t, e) {
          return t - (t - e) * this._viscosity;
        },
        _onPreDragLimit: function () {
          var t, e;
          this._viscosity &&
            this._offsetLimit &&
            ((t = this._draggable._newPos.subtract(this._draggable._startPos)),
            (e = this._offsetLimit),
            t.x < e.min.x && (t.x = this._viscousLimit(t.x, e.min.x)),
            t.y < e.min.y && (t.y = this._viscousLimit(t.y, e.min.y)),
            t.x > e.max.x && (t.x = this._viscousLimit(t.x, e.max.x)),
            t.y > e.max.y && (t.y = this._viscousLimit(t.y, e.max.y)),
            (this._draggable._newPos = this._draggable._startPos.add(t)));
        },
        _onPreDragWrap: function () {
          var t = this._worldWidth,
            e = Math.round(t / 2),
            i = this._initialWorldOffset,
            n = this._draggable._newPos.x,
            o = ((n - e + i) % t) + e - i,
            n = ((n + e + i) % t) - e - i,
            t = Math.abs(o + i) < Math.abs(n + i) ? o : n;
          (this._draggable._absPos = this._draggable._newPos.clone()),
            (this._draggable._newPos.x = t);
        },
        _onDragEnd: function (t) {
          var e,
            i,
            n,
            o,
            s = this._map,
            r = s.options,
            a = !r.inertia || t.noInertia || this._times.length < 2;
          s.fire("dragend", t),
            !a &&
            (this._prunePositions(+new Date()),
            (t = this._lastPos.subtract(this._positions[0])),
            (a = (this._lastTime - this._times[0]) / 1e3),
            (e = r.easeLinearity),
            (a = (t = t.multiplyBy(e / a)).distanceTo([0, 0])),
            (i = Math.min(r.inertiaMaxSpeed, a)),
            (t = t.multiplyBy(i / a)),
            (n = i / (r.inertiaDeceleration * e)),
            (o = t.multiplyBy(-n / 2).round()).x || o.y)
              ? ((o = s._limitOffset(o, s.options.maxBounds)),
                x(function () {
                  s.panBy(o, {
                    duration: n,
                    easeLinearity: e,
                    noMoveStart: !0,
                    animate: !0,
                  });
                }))
              : s.fire("moveend");
        },
      })),
    St =
      (A.addInitHook("addHandler", "dragging", Zt),
      A.mergeOptions({ keyboard: !0, keyboardPanDelta: 80 }),
      n.extend({
        keyCodes: {
          left: [37],
          right: [39],
          down: [40],
          up: [38],
          zoomIn: [187, 107, 61, 171],
          zoomOut: [189, 109, 54, 173],
        },
        initialize: function (t) {
          (this._map = t),
            this._setPanDelta(t.options.keyboardPanDelta),
            this._setZoomDelta(t.options.zoomDelta);
        },
        addHooks: function () {
          var t = this._map._container;
          t.tabIndex <= 0 && (t.tabIndex = "0"),
            S(
              t,
              {
                focus: this._onFocus,
                blur: this._onBlur,
                mousedown: this._onMouseDown,
              },
              this
            ),
            this._map.on(
              { focus: this._addHooks, blur: this._removeHooks },
              this
            );
        },
        removeHooks: function () {
          this._removeHooks(),
            k(
              this._map._container,
              {
                focus: this._onFocus,
                blur: this._onBlur,
                mousedown: this._onMouseDown,
              },
              this
            ),
            this._map.off(
              { focus: this._addHooks, blur: this._removeHooks },
              this
            );
        },
        _onMouseDown: function () {
          var t, e, i;
          this._focused ||
            ((i = document.body),
            (t = document.documentElement),
            (e = i.scrollTop || t.scrollTop),
            (i = i.scrollLeft || t.scrollLeft),
            this._map._container.focus(),
            window.scrollTo(i, e));
        },
        _onFocus: function () {
          (this._focused = !0), this._map.fire("focus");
        },
        _onBlur: function () {
          (this._focused = !1), this._map.fire("blur");
        },
        _setPanDelta: function (t) {
          for (
            var e = (this._panKeys = {}),
              i = this.keyCodes,
              n = 0,
              o = i.left.length;
            n < o;
            n++
          )
            e[i.left[n]] = [-1 * t, 0];
          for (n = 0, o = i.right.length; n < o; n++) e[i.right[n]] = [t, 0];
          for (n = 0, o = i.down.length; n < o; n++) e[i.down[n]] = [0, t];
          for (n = 0, o = i.up.length; n < o; n++) e[i.up[n]] = [0, -1 * t];
        },
        _setZoomDelta: function (t) {
          for (
            var e = (this._zoomKeys = {}),
              i = this.keyCodes,
              n = 0,
              o = i.zoomIn.length;
            n < o;
            n++
          )
            e[i.zoomIn[n]] = t;
          for (n = 0, o = i.zoomOut.length; n < o; n++) e[i.zoomOut[n]] = -t;
        },
        _addHooks: function () {
          S(document, "keydown", this._onKeyDown, this);
        },
        _removeHooks: function () {
          k(document, "keydown", this._onKeyDown, this);
        },
        _onKeyDown: function (t) {
          if (!(t.altKey || t.ctrlKey || t.metaKey)) {
            var e,
              i,
              n = t.keyCode,
              o = this._map;
            if (n in this._panKeys)
              (o._panAnim && o._panAnim._inProgress) ||
                ((i = this._panKeys[n]),
                t.shiftKey && (i = m(i).multiplyBy(3)),
                o.options.maxBounds &&
                  (i = o._limitOffset(m(i), o.options.maxBounds)),
                o.options.worldCopyJump
                  ? ((e = o.wrapLatLng(
                      o.unproject(o.project(o.getCenter()).add(i))
                    )),
                    o.panTo(e))
                  : o.panBy(i));
            else if (n in this._zoomKeys)
              o.setZoom(o.getZoom() + (t.shiftKey ? 3 : 1) * this._zoomKeys[n]);
            else {
              if (27 !== n || !o._popup || !o._popup.options.closeOnEscapeKey)
                return;
              o.closePopup();
            }
            Re(t);
          }
        },
      })),
    Et =
      (A.addInitHook("addHandler", "keyboard", St),
      A.mergeOptions({
        scrollWheelZoom: !0,
        wheelDebounceTime: 40,
        wheelPxPerZoomLevel: 60,
      }),
      n.extend({
        addHooks: function () {
          S(this._map._container, "wheel", this._onWheelScroll, this),
            (this._delta = 0);
        },
        removeHooks: function () {
          k(this._map._container, "wheel", this._onWheelScroll, this);
        },
        _onWheelScroll: function (t) {
          var e = He(t),
            i = this._map.options.wheelDebounceTime,
            e =
              ((this._delta += e),
              (this._lastMousePos = this._map.mouseEventToContainerPoint(t)),
              this._startTime || (this._startTime = +new Date()),
              Math.max(i - (+new Date() - this._startTime), 0));
          clearTimeout(this._timer),
            (this._timer = setTimeout(a(this._performZoom, this), e)),
            Re(t);
        },
        _performZoom: function () {
          var t = this._map,
            e = t.getZoom(),
            i = this._map.options.zoomSnap || 0,
            n =
              (t._stop(),
              this._delta / (4 * this._map.options.wheelPxPerZoomLevel)),
            n = (4 * Math.log(2 / (1 + Math.exp(-Math.abs(n))))) / Math.LN2,
            i = i ? Math.ceil(n / i) * i : n,
            n = t._limitZoom(e + (0 < this._delta ? i : -i)) - e;
          (this._delta = 0),
            (this._startTime = null),
            n &&
              ("center" === t.options.scrollWheelZoom
                ? t.setZoom(e + n)
                : t.setZoomAround(this._lastMousePos, e + n));
        },
      })),
    kt =
      (A.addInitHook("addHandler", "scrollWheelZoom", Et),
      A.mergeOptions({
        tapHold: b.touchNative && b.safari && b.mobile,
        tapTolerance: 15,
      }),
      n.extend({
        addHooks: function () {
          S(this._map._container, "touchstart", this._onDown, this);
        },
        removeHooks: function () {
          k(this._map._container, "touchstart", this._onDown, this);
        },
        _onDown: function (t) {
          var e;
          clearTimeout(this._holdTimeout),
            1 === t.touches.length &&
              ((e = t.touches[0]),
              (this._startPos = this._newPos = new p(e.clientX, e.clientY)),
              (this._holdTimeout = setTimeout(
                a(function () {
                  this._cancel(),
                    this._isTapValid() &&
                      (S(document, "touchend", O),
                      S(
                        document,
                        "touchend touchcancel",
                        this._cancelClickPrevent
                      ),
                      this._simulateEvent("contextmenu", e));
                }, this),
                600
              )),
              S(
                document,
                "touchend touchcancel contextmenu",
                this._cancel,
                this
              ),
              S(document, "touchmove", this._onMove, this));
        },
        _cancelClickPrevent: function t() {
          k(document, "touchend", O), k(document, "touchend touchcancel", t);
        },
        _cancel: function () {
          clearTimeout(this._holdTimeout),
            k(document, "touchend touchcancel contextmenu", this._cancel, this),
            k(document, "touchmove", this._onMove, this);
        },
        _onMove: function (t) {
          t = t.touches[0];
          this._newPos = new p(t.clientX, t.clientY);
        },
        _isTapValid: function () {
          return (
            this._newPos.distanceTo(this._startPos) <=
            this._map.options.tapTolerance
          );
        },
        _simulateEvent: function (t, e) {
          t = new MouseEvent(t, {
            bubbles: !0,
            cancelable: !0,
            view: window,
            screenX: e.screenX,
            screenY: e.screenY,
            clientX: e.clientX,
            clientY: e.clientY,
          });
          (t._simulated = !0), e.target.dispatchEvent(t);
        },
      })),
    Ot =
      (A.addInitHook("addHandler", "tapHold", kt),
      A.mergeOptions({ touchZoom: b.touch, bounceAtZoomLimits: !0 }),
      n.extend({
        addHooks: function () {
          M(this._map._container, "leaflet-touch-zoom"),
            S(this._map._container, "touchstart", this._onTouchStart, this);
        },
        removeHooks: function () {
          z(this._map._container, "leaflet-touch-zoom"),
            k(this._map._container, "touchstart", this._onTouchStart, this);
        },
        _onTouchStart: function (t) {
          var e,
            i,
            n = this._map;
          !t.touches ||
            2 !== t.touches.length ||
            n._animatingZoom ||
            this._zooming ||
            ((e = n.mouseEventToContainerPoint(t.touches[0])),
            (i = n.mouseEventToContainerPoint(t.touches[1])),
            (this._centerPoint = n.getSize()._divideBy(2)),
            (this._startLatLng = n.containerPointToLatLng(this._centerPoint)),
            "center" !== n.options.touchZoom &&
              (this._pinchStartLatLng = n.containerPointToLatLng(
                e.add(i)._divideBy(2)
              )),
            (this._startDist = e.distanceTo(i)),
            (this._startZoom = n.getZoom()),
            (this._moved = !1),
            (this._zooming = !0),
            n._stop(),
            S(document, "touchmove", this._onTouchMove, this),
            S(document, "touchend touchcancel", this._onTouchEnd, this),
            O(t));
        },
        _onTouchMove: function (t) {
          if (t.touches && 2 === t.touches.length && this._zooming) {
            var e = this._map,
              i = e.mouseEventToContainerPoint(t.touches[0]),
              n = e.mouseEventToContainerPoint(t.touches[1]),
              o = i.distanceTo(n) / this._startDist;
            if (
              ((this._zoom = e.getScaleZoom(o, this._startZoom)),
              !e.options.bounceAtZoomLimits &&
                ((this._zoom < e.getMinZoom() && o < 1) ||
                  (this._zoom > e.getMaxZoom() && 1 < o)) &&
                (this._zoom = e._limitZoom(this._zoom)),
              "center" === e.options.touchZoom)
            ) {
              if (((this._center = this._startLatLng), 1 == o)) return;
            } else {
              i = i._add(n)._divideBy(2)._subtract(this._centerPoint);
              if (1 == o && 0 === i.x && 0 === i.y) return;
              this._center = e.unproject(
                e.project(this._pinchStartLatLng, this._zoom).subtract(i),
                this._zoom
              );
            }
            this._moved || (e._moveStart(!0, !1), (this._moved = !0)),
              r(this._animRequest);
            n = a(
              e._move,
              e,
              this._center,
              this._zoom,
              { pinch: !0, round: !1 },
              void 0
            );
            (this._animRequest = x(n, this, !0)), O(t);
          }
        },
        _onTouchEnd: function () {
          this._moved && this._zooming
            ? ((this._zooming = !1),
              r(this._animRequest),
              k(document, "touchmove", this._onTouchMove, this),
              k(document, "touchend touchcancel", this._onTouchEnd, this),
              this._map.options.zoomAnimation
                ? this._map._animateZoom(
                    this._center,
                    this._map._limitZoom(this._zoom),
                    !0,
                    this._map.options.zoomSnap
                  )
                : this._map._resetView(
                    this._center,
                    this._map._limitZoom(this._zoom)
                  ))
            : (this._zooming = !1);
        },
      })),
    Xi =
      (A.addInitHook("addHandler", "touchZoom", Ot),
      (A.BoxZoom = _t),
      (A.DoubleClickZoom = Ct),
      (A.Drag = Zt),
      (A.Keyboard = St),
      (A.ScrollWheelZoom = Et),
      (A.TapHold = kt),
      (A.TouchZoom = Ot),
      (t.Bounds = f),
      (t.Browser = b),
      (t.CRS = ot),
      (t.Canvas = Fi),
      (t.Circle = vi),
      (t.CircleMarker = gi),
      (t.Class = et),
      (t.Control = B),
      (t.DivIcon = Ri),
      (t.DivOverlay = Ai),
      (t.DomEvent = mt),
      (t.DomUtil = pt),
      (t.Draggable = Xe),
      (t.Evented = it),
      (t.FeatureGroup = ci),
      (t.GeoJSON = wi),
      (t.GridLayer = Ni),
      (t.Handler = n),
      (t.Icon = di),
      (t.ImageOverlay = Ei),
      (t.LatLng = v),
      (t.LatLngBounds = s),
      (t.Layer = o),
      (t.LayerGroup = ui),
      (t.LineUtil = vt),
      (t.Map = A),
      (t.Marker = mi),
      (t.Mixin = ft),
      (t.Path = fi),
      (t.Point = p),
      (t.PolyUtil = gt),
      (t.Polygon = xi),
      (t.Polyline = yi),
      (t.Popup = Bi),
      (t.PosAnimation = Fe),
      (t.Projection = wt),
      (t.Rectangle = Yi),
      (t.Renderer = Wi),
      (t.SVG = Gi),
      (t.SVGOverlay = Oi),
      (t.TileLayer = Di),
      (t.Tooltip = Ii),
      (t.Transformation = at),
      (t.Util = tt),
      (t.VideoOverlay = ki),
      (t.bind = a),
      (t.bounds = _),
      (t.canvas = Ui),
      (t.circle = function (t, e, i) {
        return new vi(t, e, i);
      }),
      (t.circleMarker = function (t, e) {
        return new gi(t, e);
      }),
      (t.control = Ue),
      (t.divIcon = function (t) {
        return new Ri(t);
      }),
      (t.extend = l),
      (t.featureGroup = function (t, e) {
        return new ci(t, e);
      }),
      (t.geoJSON = Si),
      (t.geoJson = Mt),
      (t.gridLayer = function (t) {
        return new Ni(t);
      }),
      (t.icon = function (t) {
        return new di(t);
      }),
      (t.imageOverlay = function (t, e, i) {
        return new Ei(t, e, i);
      }),
      (t.latLng = w),
      (t.latLngBounds = g),
      (t.layerGroup = function (t, e) {
        return new ui(t, e);
      }),
      (t.map = function (t, e) {
        return new A(t, e);
      }),
      (t.marker = function (t, e) {
        return new mi(t, e);
      }),
      (t.point = m),
      (t.polygon = function (t, e) {
        return new xi(t, e);
      }),
      (t.polyline = function (t, e) {
        return new yi(t, e);
      }),
      (t.popup = function (t, e) {
        return new Bi(t, e);
      }),
      (t.rectangle = function (t, e) {
        return new Yi(t, e);
      }),
      (t.setOptions = c),
      (t.stamp = h),
      (t.svg = Ki),
      (t.svgOverlay = function (t, e, i) {
        return new Oi(t, e, i);
      }),
      (t.tileLayer = ji),
      (t.tooltip = function (t, e) {
        return new Ii(t, e);
      }),
      (t.transformation = ht),
      (t.version = "1.9.4"),
      (t.videoOverlay = function (t, e, i) {
        return new ki(t, e, i);
      }),
      window.L);
  (t.noConflict = function () {
    return (window.L = Xi), this;
  }),
    (window.L = t);
});
//# sourceMappingURL=leaflet.js.map