# Create dummy secrey key so we can use sessions
SECRET_KEY = '123456790'

# database connection
SQLALCHEMY_DATABASE_URI = 'postgresql+psycopg2://flask_admin_geo:flask_admin_geo@localhost/flask_admin_geo'
SQLALCHEMY_ECHO = True

# credentials for loading map tiles from mapbox
MAPBOX_MAP_ID = '...'
MAPBOX_ACCESS_TOKEN = '...'
examples/geo_alchemy/config.py
# Create dummy secrey key so we can use sessions
SECRET_KEY = '123456790'

# database connection
SQLALCHEMY_DATABASE_URI = 'postgresql+psycopg2://flask_admin_geo:flask_admin_geo@localhost/flask_admin_geo'
SQLALCHEMY_ECHO = True

# credentials for loading map tiles from mapbox
MAPBOX_MAP_ID = '...'
MAPBOX_ACCESS_TOKEN = '...'

# when the creating new shapes, use this default map center
DEFAULT_CENTER_LAT = -33.918861
DEFAULT_CENTER_LONG = 18.423300

examples/geo_alchemy/config.py
diff --git a/README.rst b/README.rst
index 447efe502..41bfc33aa 100644
--- a/README.rst
+++ b/README.rst
@@ -91,7 +91,11 @@ You should see output similar to::
 
 For all the tests to pass successfully, you'll need Postgres & MongoDB to be running locally. For Postgres::
 
+    > psql postgres
     CREATE DATABASE flask_admin_test;
+    \q
+
+    > psql flask_admin_test
     CREATE EXTENSION postgis;
     CREATE EXTENSION hstore;
 
diff --git a/examples/geo_alchemy/config.py b/examples/geo_alchemy/config.py
index eef21043c..fa0516330 100644
--- a/examples/geo_alchemy/config.py
+++ b/examples/geo_alchemy/config.py
@@ -7,4 +7,8 @@
 
 # credentials for loading map tiles from mapbox
 MAPBOX_MAP_ID = '...'
-MAPBOX_ACCESS_TOKEN = '...'
\ No newline at end of file
+MAPBOX_ACCESS_TOKEN = '...'
+
+# when the creating new shapes, use this default map center
+DEFAULT_CENTER_LAT = -33.918861
+DEFAULT_CENTER_LONG = 18.423300
diff --git a/flask_admin/static/admin/js/form.js b/flask_admin/static/admin/js/form.js
index 242391a36..beec70e5b 100644
--- a/flask_admin/static/admin/js/form.js
+++ b/flask_admin/static/admin/js/form.js
@@ -77,6 +77,10 @@
           console.error("You must set MAPBOX_MAP_ID in your Flask settings to use the map widget");
           return false;
         }
+        if (!window.DEFAULT_CENTER_LAT || !window.DEFAULT_CENTER_LONG) {
+          console.error("You must set DEFAULT_CENTER_LAT and DEFAULT_CENTER_LONG in your Flask settings to use the map widget");
+          return false;
+        }
 
         var geometryType = $el.data("geometry-type")
         if (geometryType) {
@@ -148,12 +152,8 @@
             map.fitBounds(bounds);
           }
         } else {
-          // look up user's location by IP address
-          $.getJSON("//ip-api.com/json/?callback=?", function(data) {
-            map.setView([data["lat"], data["lon"]], 12);
-          }).fail(function() {
-              map.setView([0, 0], 1)
-          });
+          // use the default map center
+          map.setView([window.DEFAULT_CENTER_LAT, window.DEFAULT_CENTER_LONG], 12);
         }
 
         // set up tiles
@@ -182,7 +182,8 @@
         var drawOptions = {
           draw: {
             // circles are not geometries in geojson
-            circle: false
+            circle: false,
+            circlemarker: false
           },
           edit: {
             featureGroup: editableLayers
diff --git a/flask_admin/static/vendor/leaflet/images/layers-2x.png b/flask_admin/static/vendor/leaflet/images/layers-2x.png
old mode 100644
new mode 100755
diff --git a/flask_admin/static/vendor/leaflet/images/layers.png b/flask_admin/static/vendor/leaflet/images/layers.png
old mode 100644
new mode 100755
diff --git a/flask_admin/static/vendor/leaflet/images/marker-icon-2x.png b/flask_admin/static/vendor/leaflet/images/marker-icon-2x.png
old mode 100644
new mode 100755
diff --git a/flask_admin/static/vendor/leaflet/images/marker-icon.png b/flask_admin/static/vendor/leaflet/images/marker-icon.png
old mode 100644
new mode 100755
diff --git a/flask_admin/static/vendor/leaflet/images/marker-shadow.png b/flask_admin/static/vendor/leaflet/images/marker-shadow.png
old mode 100644
new mode 100755
diff --git a/flask_admin/static/vendor/leaflet/images/spritesheet-2x.png b/flask_admin/static/vendor/leaflet/images/spritesheet-2x.png
old mode 100644
new mode 100755
index 1525c9f69..c45231aff
Binary files a/flask_admin/static/vendor/leaflet/images/spritesheet-2x.png and b/flask_admin/static/vendor/leaflet/images/spritesheet-2x.png differ
diff --git a/flask_admin/static/vendor/leaflet/images/spritesheet.png b/flask_admin/static/vendor/leaflet/images/spritesheet.png
old mode 100644
new mode 100755
index f7035a1cb..97d71c680
Binary files a/flask_admin/static/vendor/leaflet/images/spritesheet.png and b/flask_admin/static/vendor/leaflet/images/spritesheet.png differ
diff --git a/flask_admin/static/vendor/leaflet/images/spritesheet.svg b/flask_admin/static/vendor/leaflet/images/spritesheet.svg
old mode 100644
new mode 100755
index 542379322..3c00f3031
--- a/flask_admin/static/vendor/leaflet/images/spritesheet.svg
+++ b/flask_admin/static/vendor/leaflet/images/spritesheet.svg
@@ -1,27 +1,156 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 540 60" height="60" width="540">
-    <g id="enabled" fill="#464646">
-        <g id="polyline">
-            <path d="M18 36v6h6v-6h-6zm4 4h-2v-2h2v2z"/>
-            <path d="M36 18v6h6v-6h-6zm4 4h-2v-2h2v2z"/>
-            <path d="M23.142 39.145l-2.285-2.29 16-15.998 2.285 2.285z"/>
-        </g>
-        <path id="polygon" d="M100 24.565l-2.096 14.83L83.07 42 76 28.773 86.463 18z"/>
-        <path id="rectangle" d="M140 20h20v20h-20z"/>
-        <path id="circle" d="M221 30c0 6.078-4.926 11-11 11s-11-4.922-11-11c0-6.074 4.926-11 11-11s11 4.926 11 11z"/>
-        <path id="marker" d="M270,19c-4.971,0-9,4.029-9,9c0,4.971,5.001,12,9,14c4.001-2,9-9.029,9-14C279,23.029,274.971,19,270,19z M270,31.5c-2.484,0-4.5-2.014-4.5-4.5c0-2.484,2.016-4.5,4.5-4.5c2.485,0,4.5,2.016,4.5,4.5C274.5,29.486,272.485,31.5,270,31.5z"/>
-        <g id="edit">
-            <path d="M337,30.156v0.407v5.604c0,1.658-1.344,3-3,3h-10c-1.655,0-3-1.342-3-3v-10c0-1.657,1.345-3,3-3h6.345 l3.19-3.17H324c-3.313,0-6,2.687-6,6v10c0,3.313,2.687,6,6,6h10c3.314,0,6-2.687,6-6v-8.809L337,30.156"/>
-            <path d="M338.72 24.637l-8.892 8.892H327V30.7l8.89-8.89z"/>
-            <path d="M338.697 17.826h4v4h-4z" transform="rotate(-134.99 340.703 19.817)"/>
-        </g>
-        <g id="remove">
-            <path d="M381 42h18V24h-18v18zm14-16h2v14h-2V26zm-4 0h2v14h-2V26zm-4 0h2v14h-2V26zm-4 0h2v14h-2V26z"/>
-            <path d="M395 20v-4h-10v4h-6v2h22v-2h-6zm-2 0h-6v-2h6v2z"/>
-        </g>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   viewBox="0 0 600 60"
+   height="60"
+   width="600"
+   id="svg4225"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="spritesheet.svg"
+   inkscape:export-filename="/home/fpuga/development/upstream/icarto.Leaflet.draw/src/images/spritesheet-2x.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <metadata
+     id="metadata4258">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs4256" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="1056"
+     id="namedview4254"
+     showgrid="false"
+     inkscape:zoom="1.3101852"
+     inkscape:cx="237.56928"
+     inkscape:cy="7.2419621"
+     inkscape:window-x="1920"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg4225" />
+  <g
+     id="enabled"
+     style="fill:#464646;fill-opacity:1">
+    <g
+       id="polyline"
+       style="fill:#464646;fill-opacity:1">
+      <path
+         d="m 18,36 0,6 6,0 0,-6 -6,0 z m 4,4 -2,0 0,-2 2,0 0,2 z"
+         id="path4229"
+         inkscape:connector-curvature="0"
+         style="fill:#464646;fill-opacity:1" />
+      <path
+         d="m 36,18 0,6 6,0 0,-6 -6,0 z m 4,4 -2,0 0,-2 2,0 0,2 z"
+         id="path4231"
+         inkscape:connector-curvature="0"
+         style="fill:#464646;fill-opacity:1" />
+      <path
+         d="m 23.142,39.145 -2.285,-2.29 16,-15.998 2.285,2.285 z"
+         id="path4233"
+         inkscape:connector-curvature="0"
+         style="fill:#464646;fill-opacity:1" />
     </g>
-    <g id="disabled" fill="#bbb" transform="translate(120)">
-        <use xlink:href="#edit" id="edit-disabled"/>
-        <use xlink:href="#remove" id="remove-disabled"/>
+    <path
+       id="polygon"
+       d="M 100,24.565 97.904,39.395 83.07,42 76,28.773 86.463,18 Z"
+       inkscape:connector-curvature="0"
+       style="fill:#464646;fill-opacity:1" />
+    <path
+       id="rectangle"
+       d="m 140,20 20,0 0,20 -20,0 z"
+       inkscape:connector-curvature="0"
+       style="fill:#464646;fill-opacity:1" />
+    <path
+       id="circle"
+       d="m 221,30 c 0,6.078 -4.926,11 -11,11 -6.074,0 -11,-4.922 -11,-11 0,-6.074 4.926,-11 11,-11 6.074,0 11,4.926 11,11 z"
+       inkscape:connector-curvature="0"
+       style="fill:#464646;fill-opacity:1" />
+    <path
+       id="marker"
+       d="m 270,19 c -4.971,0 -9,4.029 -9,9 0,4.971 5.001,12 9,14 4.001,-2 9,-9.029 9,-14 0,-4.971 -4.029,-9 -9,-9 z m 0,12.5 c -2.484,0 -4.5,-2.014 -4.5,-4.5 0,-2.484 2.016,-4.5 4.5,-4.5 2.485,0 4.5,2.016 4.5,4.5 0,2.486 -2.015,4.5 -4.5,4.5 z"
+       inkscape:connector-curvature="0"
+       style="fill:#464646;fill-opacity:1" />
+    <g
+       id="edit"
+       style="fill:#464646;fill-opacity:1">
+      <path
+         d="m 337,30.156 0,0.407 0,5.604 c 0,1.658 -1.344,3 -3,3 l -10,0 c -1.655,0 -3,-1.342 -3,-3 l 0,-10 c 0,-1.657 1.345,-3 3,-3 l 6.345,0 3.19,-3.17 -9.535,0 c -3.313,0 -6,2.687 -6,6 l 0,10 c 0,3.313 2.687,6 6,6 l 10,0 c 3.314,0 6,-2.687 6,-6 l 0,-8.809 -3,2.968"
+         id="path4240"
+         inkscape:connector-curvature="0"
+         style="fill:#464646;fill-opacity:1" />
+      <path
+         d="m 338.72,24.637 -8.892,8.892 -2.828,0 0,-2.829 8.89,-8.89 z"
+         id="path4242"
+         inkscape:connector-curvature="0"
+         style="fill:#464646;fill-opacity:1" />
+      <path
+         d="m 338.697,17.826 4,0 0,4 -4,0 z"
+         transform="matrix(-0.70698336,-0.70723018,0.70723018,-0.70698336,567.55917,274.78273)"
+         id="path4244"
+         inkscape:connector-curvature="0"
+         style="fill:#464646;fill-opacity:1" />
     </g>
+    <g
+       id="remove"
+       style="fill:#464646;fill-opacity:1">
+      <path
+         d="m 381,42 18,0 0,-18 -18,0 0,18 z m 14,-16 2,0 0,14 -2,0 0,-14 z m -4,0 2,0 0,14 -2,0 0,-14 z m -4,0 2,0 0,14 -2,0 0,-14 z m -4,0 2,0 0,14 -2,0 0,-14 z"
+         id="path4247"
+         inkscape:connector-curvature="0"
+         style="fill:#464646;fill-opacity:1" />
+      <path
+         d="m 395,20 0,-4 -10,0 0,4 -6,0 0,2 22,0 0,-2 -6,0 z m -2,0 -6,0 0,-2 6,0 0,2 z"
+         id="path4249"
+         inkscape:connector-curvature="0"
+         style="fill:#464646;fill-opacity:1" />
+    </g>
+  </g>
+  <g
+     id="disabled"
+     transform="translate(120,0)"
+     style="fill:#bbbbbb">
+    <use
+       xlink:href="#edit"
+       id="edit-disabled"
+       x="0"
+       y="0"
+       width="100%"
+       height="100%" />
+    <use
+       xlink:href="#remove"
+       id="remove-disabled"
+       x="0"
+       y="0"
+       width="100%"
+       height="100%" />
+  </g>
+  <path
+     style="fill:none;stroke:#464646;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="circle-3"
+     d="m 581.65725,30 c 0,6.078 -4.926,11 -11,11 -6.074,0 -11,-4.922 -11,-11 0,-6.074 4.926,-11 11,-11 6.074,0 11,4.926 11,11 z"
+     inkscape:connector-curvature="0" />
 </svg>
diff --git a/flask_admin/static/vendor/leaflet/leaflet.css b/flask_admin/static/vendor/leaflet/leaflet.css
index ac0cd174d..a0932d57a 100644
--- a/flask_admin/static/vendor/leaflet/leaflet.css
+++ b/flask_admin/static/vendor/leaflet/leaflet.css
@@ -1,16 +1,12 @@
 /* required styles */
 
-.leaflet-map-pane,
+.leaflet-pane,
 .leaflet-tile,
 .leaflet-marker-icon,
 .leaflet-marker-shadow,
-.leaflet-tile-pane,
 .leaflet-tile-container,
-.leaflet-overlay-pane,
-.leaflet-shadow-pane,
-.leaflet-marker-pane,
-.leaflet-popup-pane,
-.leaflet-overlay-pane svg,
+.leaflet-pane > svg,
+.leaflet-pane > canvas,
 .leaflet-zoom-box,
 .leaflet-image-layer,
 .leaflet-layer {
@@ -20,7 +16,6 @@
 	}
 .leaflet-container {
 	overflow: hidden;
-	-ms-touch-action: none;
 	}
 .leaflet-tile,
 .leaflet-marker-icon,
@@ -28,20 +23,54 @@
 	-webkit-user-select: none;
 	   -moz-user-select: none;
 	        user-select: none;
-	-webkit-user-drag: none;
+	  -webkit-user-drag: none;
+	}
+/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
+.leaflet-safari .leaflet-tile {
+	image-rendering: -webkit-optimize-contrast;
+	}
+/* hack that prevents hw layers "stretching" when loading new tiles */
+.leaflet-safari .leaflet-tile-container {
+	width: 1600px;
+	height: 1600px;
+	-webkit-transform-origin: 0 0;
 	}
 .leaflet-marker-icon,
 .leaflet-marker-shadow {
 	display: block;
 	}
-/* map is broken in FF if you have max-width: 100% on tiles */
-.leaflet-container img {
+/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
+/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
+.leaflet-container .leaflet-overlay-pane svg,
+.leaflet-container .leaflet-marker-pane img,
+.leaflet-container .leaflet-shadow-pane img,
+.leaflet-container .leaflet-tile-pane img,
+.leaflet-container img.leaflet-image-layer,
+.leaflet-container .leaflet-tile {
 	max-width: none !important;
+	max-height: none !important;
 	}
-/* stupid Android 2 doesn't understand "max-width: none" properly */
-.leaflet-container img.leaflet-image-layer {
-	max-width: 15000px !important;
+
+.leaflet-container.leaflet-touch-zoom {
+	-ms-touch-action: pan-x pan-y;
+	touch-action: pan-x pan-y;
 	}
+.leaflet-container.leaflet-touch-drag {
+	-ms-touch-action: pinch-zoom;
+	/* Fallback for FF which doesn't support pinch-zoom */
+	touch-action: none;
+	touch-action: pinch-zoom;
+}
+.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
+	-ms-touch-action: none;
+	touch-action: none;
+}
+.leaflet-container {
+	-webkit-tap-highlight-color: transparent;
+}
+.leaflet-container a {
+	-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
+}
 .leaflet-tile {
 	filter: inherit;
 	visibility: hidden;
@@ -52,18 +81,26 @@
 .leaflet-zoom-box {
 	width: 0;
 	height: 0;
+	-moz-box-sizing: border-box;
+	     box-sizing: border-box;
+	z-index: 800;
 	}
 /* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
 .leaflet-overlay-pane svg {
 	-moz-user-select: none;
 	}
 
-.leaflet-tile-pane    { z-index: 2; }
-.leaflet-objects-pane { z-index: 3; }
-.leaflet-overlay-pane { z-index: 4; }
-.leaflet-shadow-pane  { z-index: 5; }
-.leaflet-marker-pane  { z-index: 6; }
-.leaflet-popup-pane   { z-index: 7; }
+.leaflet-pane         { z-index: 400; }
+
+.leaflet-tile-pane    { z-index: 200; }
+.leaflet-overlay-pane { z-index: 400; }
+.leaflet-shadow-pane  { z-index: 500; }
+.leaflet-marker-pane  { z-index: 600; }
+.leaflet-tooltip-pane   { z-index: 650; }
+.leaflet-popup-pane   { z-index: 700; }
+
+.leaflet-map-pane canvas { z-index: 100; }
+.leaflet-map-pane svg    { z-index: 200; }
 
 .leaflet-vml-shape {
 	width: 1px;
@@ -80,7 +117,8 @@
 
 .leaflet-control {
 	position: relative;
-	z-index: 7;
+	z-index: 800;
+	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
 	pointer-events: auto;
 	}
 .leaflet-top,
@@ -124,31 +162,35 @@
 
 /* zoom and fade animations */
 
-.leaflet-fade-anim .leaflet-tile,
+.leaflet-fade-anim .leaflet-tile {
+	will-change: opacity;
+	}
 .leaflet-fade-anim .leaflet-popup {
 	opacity: 0;
 	-webkit-transition: opacity 0.2s linear;
 	   -moz-transition: opacity 0.2s linear;
-	     -o-transition: opacity 0.2s linear;
 	        transition: opacity 0.2s linear;
 	}
-.leaflet-fade-anim .leaflet-tile-loaded,
 .leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
 	opacity: 1;
 	}
-
+.leaflet-zoom-animated {
+	-webkit-transform-origin: 0 0;
+	    -ms-transform-origin: 0 0;
+	        transform-origin: 0 0;
+	}
+.leaflet-zoom-anim .leaflet-zoom-animated {
+	will-change: transform;
+	}
 .leaflet-zoom-anim .leaflet-zoom-animated {
 	-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
 	   -moz-transition:    -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
-	     -o-transition:      -o-transform 0.25s cubic-bezier(0,0,0.25,1);
 	        transition:         transform 0.25s cubic-bezier(0,0,0.25,1);
 	}
 .leaflet-zoom-anim .leaflet-tile,
-.leaflet-pan-anim .leaflet-tile,
-.leaflet-touching .leaflet-zoom-animated {
+.leaflet-pan-anim .leaflet-tile {
 	-webkit-transition: none;
 	   -moz-transition: none;
-	     -o-transition: none;
 	        transition: none;
 	}
 
@@ -159,24 +201,46 @@
 
 /* cursors */
 
-.leaflet-clickable {
+.leaflet-interactive {
 	cursor: pointer;
 	}
-.leaflet-container {
+.leaflet-grab {
 	cursor: -webkit-grab;
 	cursor:    -moz-grab;
+	cursor:         grab;
+	}
+.leaflet-crosshair,
+.leaflet-crosshair .leaflet-interactive {
+	cursor: crosshair;
 	}
 .leaflet-popup-pane,
 .leaflet-control {
 	cursor: auto;
 	}
-.leaflet-dragging .leaflet-container,
-.leaflet-dragging .leaflet-clickable {
+.leaflet-dragging .leaflet-grab,
+.leaflet-dragging .leaflet-grab .leaflet-interactive,
+.leaflet-dragging .leaflet-marker-draggable {
 	cursor: move;
 	cursor: -webkit-grabbing;
 	cursor:    -moz-grabbing;
+	cursor:         grabbing;
 	}
 
+/* marker & overlays interactivity */
+.leaflet-marker-icon,
+.leaflet-marker-shadow,
+.leaflet-image-layer,
+.leaflet-pane > svg path,
+.leaflet-tile-container {
+	pointer-events: none;
+	}
+
+.leaflet-marker-icon.leaflet-interactive,
+.leaflet-image-layer.leaflet-interactive,
+.leaflet-pane > svg path.leaflet-interactive {
+	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
+	pointer-events: auto;
+	}
 
 /* visual tweaks */
 
@@ -249,7 +313,14 @@
 	height: 30px;
 	line-height: 30px;
 	}
-
+.leaflet-touch .leaflet-bar a:first-child {
+	border-top-left-radius: 2px;
+	border-top-right-radius: 2px;
+	}
+.leaflet-touch .leaflet-bar a:last-child {
+	border-bottom-left-radius: 2px;
+	border-bottom-right-radius: 2px;
+	}
 
 /* zoom control */
 
@@ -258,16 +329,10 @@
 	font: bold 18px 'Lucida Console', Monaco, monospace;
 	text-indent: 1px;
 	}
-.leaflet-control-zoom-out {
-	font-size: 20px;
-	}
 
-.leaflet-touch .leaflet-control-zoom-in {
+.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out  {
 	font-size: 22px;
 	}
-.leaflet-touch .leaflet-control-zoom-out {
-	font-size: 24px;
-	}
 
 
 /* layers control */
@@ -303,6 +368,11 @@
 	color: #333;
 	background: #fff;
 	}
+.leaflet-control-layers-scrollbar {
+	overflow-y: scroll;
+	overflow-x: hidden;
+	padding-right: 5px;
+	}
 .leaflet-control-layers-selector {
 	margin-top: 2px;
 	position: relative;
@@ -317,6 +387,11 @@
 	margin: 5px -10px 5px -6px;
 	}
 
+/* Default icon URLs */
+.leaflet-default-icon-path {
+	background-image: url(images/marker-icon.png);
+	}
+
 
 /* attribution and scale controls */
 
@@ -354,8 +429,8 @@
 	font-size: 11px;
 	white-space: nowrap;
 	overflow: hidden;
-	-moz-box-sizing: content-box;
-	     box-sizing: content-box;
+	-moz-box-sizing: border-box;
+	     box-sizing: border-box;
 
 	background: #fff;
 	background: rgba(255, 255, 255, 0.5);
@@ -386,6 +461,7 @@
 .leaflet-popup {
 	position: absolute;
 	text-align: center;
+	margin-bottom: 20px;
 	}
 .leaflet-popup-content-wrapper {
 	padding: 1px;
@@ -400,11 +476,13 @@
 	margin: 18px 0;
 	}
 .leaflet-popup-tip-container {
-	margin: 0 auto;
 	width: 40px;
 	height: 20px;
-	position: relative;
+	position: absolute;
+	left: 50%;
+	margin-left: -20px;
 	overflow: hidden;
+	pointer-events: none;
 	}
 .leaflet-popup-tip {
 	width: 17px;
@@ -416,13 +494,12 @@
 	-webkit-transform: rotate(45deg);
 	   -moz-transform: rotate(45deg);
 	    -ms-transform: rotate(45deg);
-	     -o-transform: rotate(45deg);
 	        transform: rotate(45deg);
 	}
 .leaflet-popup-content-wrapper,
 .leaflet-popup-tip {
 	background: white;
-
+	color: #333;
 	box-shadow: 0 3px 14px rgba(0,0,0,0.4);
 	}
 .leaflet-container a.leaflet-popup-close-button {
@@ -430,6 +507,7 @@
 	top: 0;
 	right: 0;
 	padding: 4px 4px 0 0;
+	border: none;
 	text-align: center;
 	width: 18px;
 	height: 14px;
@@ -476,3 +554,82 @@
 	background: #fff;
 	border: 1px solid #666;
 	}
+
+
+/* Tooltip */
+/* Base styles for the element that has a tooltip */
+.leaflet-tooltip {
+	position: absolute;
+	padding: 6px;
+	background-color: #fff;
+	border: 1px solid #fff;
+	border-radius: 3px;
+	color: #222;
+	white-space: nowrap;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+	pointer-events: none;
+	box-shadow: 0 1px 3px rgba(0,0,0,0.4);
+	}
+.leaflet-tooltip.leaflet-clickable {
+	cursor: pointer;
+	pointer-events: auto;
+	}
+.leaflet-tooltip-top:before,
+.leaflet-tooltip-bottom:before,
+.leaflet-tooltip-left:before,
+.leaflet-tooltip-right:before {
+	position: absolute;
+	pointer-events: none;
+	border: 6px solid transparent;
+	background: transparent;
+	content: "";
+	}
+
+/* Directions */
+
+.leaflet-tooltip-bottom {
+	margin-top: 6px;
+}
+.leaflet-tooltip-top {
+	margin-top: -6px;
+}
+.leaflet-tooltip-bottom:before,
+.leaflet-tooltip-top:before {
+	left: 50%;
+	margin-left: -6px;
+	}
+.leaflet-tooltip-top:before {
+	bottom: 0;
+	margin-bottom: -12px;
+	border-top-color: #fff;
+	}
+.leaflet-tooltip-bottom:before {
+	top: 0;
+	margin-top: -12px;
+	margin-left: -6px;
+	border-bottom-color: #fff;
+	}
+.leaflet-tooltip-left {
+	margin-left: -6px;
+}
+.leaflet-tooltip-right {
+	margin-left: 6px;
+}
+.leaflet-tooltip-left:before,
+.leaflet-tooltip-right:before {
+	top: 50%;
+	margin-top: -6px;
+	}
+.leaflet-tooltip-left:before {
+	right: 0;
+	margin-right: -12px;
+	border-left-color: #fff;
+	}
+.leaflet-tooltip-right:before {
+	left: 0;
+	margin-left: -12px;
+	border-right-color: #fff;
+	}
diff --git a/flask_admin/static/vendor/leaflet/leaflet.draw.css b/flask_admin/static/vendor/leaflet/leaflet.draw.css
old mode 100644
new mode 100755
index cb879cfa6..a01941060
--- a/flask_admin/static/vendor/leaflet/leaflet.draw.css
+++ b/flask_admin/static/vendor/leaflet/leaflet.draw.css
@@ -1,295 +1,10 @@
-/* ================================================================== */
-/* Toolbars
-/* ================================================================== */
-
-.leaflet-draw-section {
-	position: relative;
-}
-
-.leaflet-draw-toolbar {
-	margin-top: 12px;
-}
-
-.leaflet-draw-toolbar-top {
-	margin-top: 0;
-}
-
-.leaflet-draw-toolbar-notop a:first-child {
-	border-top-right-radius: 0;
-}
-
-.leaflet-draw-toolbar-nobottom a:last-child {
-	border-bottom-right-radius: 0;
-}
-
-.leaflet-draw-toolbar a {
-	background-image: url('images/spritesheet.png');
-	background-repeat: no-repeat;
-}
-
-.leaflet-retina .leaflet-draw-toolbar a {
-	background-image: url('images/spritesheet-2x.png');
-	background-size: 270px 30px;
-}
-
-.leaflet-draw a {
-	display: block;
-	text-align: center;
-	text-decoration: none;
-}
-
-/* ================================================================== */
-/* Toolbar actions menu
-/* ================================================================== */
-
-.leaflet-draw-actions {
-	display: none;
-	list-style: none;
-	margin: 0;
-	padding: 0;
-	position: absolute;
-	left: 26px; /* leaflet-draw-toolbar.left + leaflet-draw-toolbar.width */
-	top: 0;
-	white-space: nowrap;
-}
-
-.leaflet-right .leaflet-draw-actions {
-	right:26px;
-	left:auto;
-}
-
-.leaflet-draw-actions li {
-	display: inline-block;
-}
-
-.leaflet-draw-actions li:first-child a {
-	border-left: none;
-}
-
-.leaflet-draw-actions li:last-child a {
-	-webkit-border-radius: 0 4px 4px 0;
-	        border-radius: 0 4px 4px 0;
-}
-
-.leaflet-right .leaflet-draw-actions li:last-child a {
-	-webkit-border-radius: 0;
-	        border-radius: 0;
-}
-
-.leaflet-right .leaflet-draw-actions li:first-child a {
-	-webkit-border-radius: 4px 0 0 4px;
-	        border-radius: 4px 0 0 4px;
-}
-
-.leaflet-draw-actions a {
-	background-color: #919187;
-	border-left: 1px solid #AAA;
-	color: #FFF;
-	font: 11px/19px "Helvetica Neue", Arial, Helvetica, sans-serif;
-	line-height: 28px;
-	text-decoration: none;
-	padding-left: 10px;
-	padding-right: 10px;
-	height: 28px;
-}
-
-.leaflet-draw-actions-bottom {
-	margin-top: 0;
-}
-
-.leaflet-draw-actions-top {
-	margin-top: 1px;
-}
-
-.leaflet-draw-actions-top a,
-.leaflet-draw-actions-bottom a {
-	height: 27px;
-	line-height: 27px;
-}
-
-.leaflet-draw-actions a:hover {
-	background-color: #A0A098;
-}
-
-.leaflet-draw-actions-top.leaflet-draw-actions-bottom a {
-	height: 26px;
-	line-height: 26px;
-}
-
-/* ================================================================== */
-/* Draw toolbar
-/* ================================================================== */
-
-.leaflet-draw-toolbar .leaflet-draw-draw-polyline {
-	background-position: -2px -2px;
-}
-
-.leaflet-draw-toolbar .leaflet-draw-draw-polygon {
-	background-position: -31px -2px;
-}
-
-.leaflet-draw-toolbar .leaflet-draw-draw-rectangle {
-	background-position: -62px -2px;
-}
-
-.leaflet-draw-toolbar .leaflet-draw-draw-circle {
-	background-position: -92px -2px;
-}
-
-.leaflet-draw-toolbar .leaflet-draw-draw-marker {
-	background-position: -122px -2px;
-}
-
-/* ================================================================== */
-/* Edit toolbar
-/* ================================================================== */
-
-.leaflet-draw-toolbar .leaflet-draw-edit-edit {
-	background-position: -152px -2px;
-}
-
-.leaflet-draw-toolbar .leaflet-draw-edit-remove {
-	background-position: -182px -2px;
-}
-
-.leaflet-draw-toolbar .leaflet-draw-edit-edit.leaflet-disabled {
-	background-position: -212px -2px;
-}
-
-.leaflet-draw-toolbar .leaflet-draw-edit-remove.leaflet-disabled {
-	background-position: -242px -2px;
-}
-
-/* ================================================================== */
-/* Drawing styles
-/* ================================================================== */
-
-.leaflet-mouse-marker {
-	background-color: #fff;
-	cursor: crosshair;
-}
-
-.leaflet-draw-tooltip {
-	background: rgb(54, 54, 54);
-	background: rgba(0, 0, 0, 0.5);
-	border: 1px solid transparent;
-	-webkit-border-radius: 4px;
-	        border-radius: 4px;
-	color: #fff;
-	font: 12px/18px "Helvetica Neue", Arial, Helvetica, sans-serif;
-	margin-left: 20px;
-	margin-top: -21px;
-	padding: 4px 8px;
-	position: absolute;
-	visibility: hidden;
-	white-space: nowrap;
-	z-index: 6;
-}
-
-.leaflet-draw-tooltip:before {
-	border-right: 6px solid black;
-	border-right-color: rgba(0, 0, 0, 0.5);
-	border-top: 6px solid transparent;
-	border-bottom: 6px solid transparent;
-	content: "";
-	position: absolute;
-	top: 7px;
-	left: -7px;
-}
-
-.leaflet-error-draw-tooltip {
-	background-color: #F2DEDE;
-	border: 1px solid #E6B6BD;
-	color: #B94A48;
-}
-
-.leaflet-error-draw-tooltip:before {
-	border-right-color: #E6B6BD;
-}
-
-.leaflet-draw-tooltip-single {
-	margin-top: -12px
-}
-
-.leaflet-draw-tooltip-subtext {
-	color: #f8d5e4;
-}
-
-.leaflet-draw-guide-dash {
-	font-size: 1%;
-	opacity: 0.6;
-	position: absolute;
-	width: 5px;
-	height: 5px;
-}
-
-/* ================================================================== */
-/* Edit styles
-/* ================================================================== */
-
-.leaflet-edit-marker-selected {
-	background: rgba(254, 87, 161, 0.1);
-	border: 4px dashed rgba(254, 87, 161, 0.6);
-	-webkit-border-radius: 4px;
-	        border-radius: 4px;
-}
-
-.leaflet-edit-move {
-	cursor: move;
-}
-
-.leaflet-edit-resize {
-	cursor: pointer;
-}
-
-/* ================================================================== */
-/* Old IE styles
-/* ================================================================== */
-
-.leaflet-oldie .leaflet-draw-toolbar {
-	border: 3px solid #999;
-}
-
-.leaflet-oldie .leaflet-draw-toolbar a {
-	background-color: #eee;
-}
-
-.leaflet-oldie .leaflet-draw-toolbar a:hover {
-	background-color: #fff;
-}
-
-.leaflet-oldie .leaflet-draw-actions {
-	left: 32px;
-	margin-top: 3px;
-}
-
-.leaflet-oldie .leaflet-draw-actions li {
-	display: inline;
-	zoom: 1;
-}
-
-.leaflet-oldie .leaflet-edit-marker-selected {
-	border: 4px dashed #fe93c2;
-}
-
-.leaflet-oldie .leaflet-draw-actions a {
-	background-color: #999;
-}
-
-.leaflet-oldie .leaflet-draw-actions a:hover {
-	background-color: #a5a5a5;
-}
-
-.leaflet-oldie .leaflet-draw-actions-top a {
-	margin-top: 1px;
-}
-
-.leaflet-oldie .leaflet-draw-actions-bottom a {
-	height: 28px;
-	line-height: 28px;
-}
-
-.leaflet-oldie .leaflet-draw-actions-top.leaflet-draw-actions-bottom a {
-	height: 27px;
-	line-height: 27px;
-}
+.leaflet-draw-section{position:relative}.leaflet-draw-toolbar{margin-top:12px}.leaflet-draw-toolbar-top{margin-top:0}.leaflet-draw-toolbar-notop a:first-child{border-top-right-radius:0}.leaflet-draw-toolbar-nobottom a:last-child{border-bottom-right-radius:0}.leaflet-draw-toolbar a{background-image:url('images/spritesheet.png');background-image:linear-gradient(transparent,transparent),url('images/spritesheet.svg');background-repeat:no-repeat;background-size:300px 30px;background-clip:padding-box}.leaflet-retina .leaflet-draw-toolbar a{background-image:url('images/spritesheet-2x.png');background-image:linear-gradient(transparent,transparent),url('images/spritesheet.svg')}
+.leaflet-draw a{display:block;text-align:center;text-decoration:none}.leaflet-draw a .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.leaflet-draw-actions{display:none;list-style:none;margin:0;padding:0;position:absolute;left:26px;top:0;white-space:nowrap}.leaflet-touch .leaflet-draw-actions{left:32px}.leaflet-right .leaflet-draw-actions{right:26px;left:auto}.leaflet-touch .leaflet-right .leaflet-draw-actions{right:32px;left:auto}.leaflet-draw-actions li{display:inline-block}
+.leaflet-draw-actions li:first-child a{border-left:0}.leaflet-draw-actions li:last-child a{-webkit-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.leaflet-right .leaflet-draw-actions li:last-child a{-webkit-border-radius:0;border-radius:0}.leaflet-right .leaflet-draw-actions li:first-child a{-webkit-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.leaflet-draw-actions a{background-color:#919187;border-left:1px solid #AAA;color:#FFF;font:11px/19px "Helvetica Neue",Arial,Helvetica,sans-serif;line-height:28px;text-decoration:none;padding-left:10px;padding-right:10px;height:28px}
+.leaflet-touch .leaflet-draw-actions a{font-size:12px;line-height:30px;height:30px}.leaflet-draw-actions-bottom{margin-top:0}.leaflet-draw-actions-top{margin-top:1px}.leaflet-draw-actions-top a,.leaflet-draw-actions-bottom a{height:27px;line-height:27px}.leaflet-draw-actions a:hover{background-color:#a0a098}.leaflet-draw-actions-top.leaflet-draw-actions-bottom a{height:26px;line-height:26px}.leaflet-draw-toolbar .leaflet-draw-draw-polyline{background-position:-2px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-polyline{background-position:0 -1px}
+.leaflet-draw-toolbar .leaflet-draw-draw-polygon{background-position:-31px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-polygon{background-position:-29px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-rectangle{background-position:-62px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-rectangle{background-position:-60px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-circle{background-position:-92px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-circle{background-position:-90px -1px}
+.leaflet-draw-toolbar .leaflet-draw-draw-marker{background-position:-122px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-marker{background-position:-120px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-circlemarker{background-position:-273px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-circlemarker{background-position:-271px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-edit{background-position:-152px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-edit{background-position:-150px -1px}
+.leaflet-draw-toolbar .leaflet-draw-edit-remove{background-position:-182px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-remove{background-position:-180px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-edit.leaflet-disabled{background-position:-212px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-edit.leaflet-disabled{background-position:-210px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-remove.leaflet-disabled{background-position:-242px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-remove.leaflet-disabled{background-position:-240px -2px}
+.leaflet-mouse-marker{background-color:#fff;cursor:crosshair}.leaflet-draw-tooltip{background:#363636;background:rgba(0,0,0,0.5);border:1px solid transparent;-webkit-border-radius:4px;border-radius:4px;color:#fff;font:12px/18px "Helvetica Neue",Arial,Helvetica,sans-serif;margin-left:20px;margin-top:-21px;padding:4px 8px;position:absolute;visibility:hidden;white-space:nowrap;z-index:6}.leaflet-draw-tooltip:before{border-right:6px solid black;border-right-color:rgba(0,0,0,0.5);border-top:6px solid transparent;border-bottom:6px solid transparent;content:"";position:absolute;top:7px;left:-7px}
+.leaflet-error-draw-tooltip{background-color:#f2dede;border:1px solid #e6b6bd;color:#b94a48}.leaflet-error-draw-tooltip:before{border-right-color:#e6b6bd}.leaflet-draw-tooltip-single{margin-top:-12px}.leaflet-draw-tooltip-subtext{color:#f8d5e4}.leaflet-draw-guide-dash{font-size:1%;opacity:.6;position:absolute;width:5px;height:5px}.leaflet-edit-marker-selected{background-color:rgba(254,87,161,0.1);border:4px dashed rgba(254,87,161,0.6);-webkit-border-radius:4px;border-radius:4px;box-sizing:content-box}
+.leaflet-edit-move{cursor:move}.leaflet-edit-resize{cursor:pointer}.leaflet-oldie .leaflet-draw-toolbar{border:1px solid #999}
\ No newline at end of file
diff --git a/flask_admin/static/vendor/leaflet/leaflet.draw.js b/flask_admin/static/vendor/leaflet/leaflet.draw.js
old mode 100644
new mode 100755
index 9ad4341e1..28f9338ab
--- a/flask_admin/static/vendor/leaflet/leaflet.draw.js
+++ b/flask_admin/static/vendor/leaflet/leaflet.draw.js
@@ -1,10 +1,10 @@
 /*
-	Leaflet.draw, a plugin that adds drawing and editing tools to Leaflet powered maps.
-	(c) 2012-2013, Jacob Toye, Smartrak
+ Leaflet.draw 0.4.14, a plugin that adds drawing and editing tools to Leaflet powered maps.
+ (c) 2012-2017, Jacob Toye, Jon West, Smartrak, Leaflet
 
-	https://github.com/Leaflet/Leaflet.draw
-	http://leafletjs.com
-	https://github.com/jacobtoye
-*/
-!function(t,e){L.drawVersion="0.2.3",L.drawLocal={draw:{toolbar:{actions:{title:"Cancel drawing",text:"Cancel"},undo:{title:"Delete last point drawn",text:"Delete last point"},buttons:{polyline:"Draw a polyline",polygon:"Draw a polygon",rectangle:"Draw a rectangle",circle:"Draw a circle",marker:"Draw a marker"}},handlers:{circle:{tooltip:{start:"Click and drag to draw circle."}},marker:{tooltip:{start:"Click map to place marker."}},polygon:{tooltip:{start:"Click to start drawing shape.",cont:"Click to continue drawing shape.",end:"Click first point to close this shape."}},polyline:{error:"<strong>Error:</strong> shape edges cannot cross!",tooltip:{start:"Click to start drawing line.",cont:"Click to continue drawing line.",end:"Click last point to finish line."}},rectangle:{tooltip:{start:"Click and drag to draw rectangle."}},simpleshape:{tooltip:{end:"Release mouse to finish drawing."}}}},edit:{toolbar:{actions:{save:{title:"Save changes.",text:"Save"},cancel:{title:"Cancel editing, discards all changes.",text:"Cancel"}},buttons:{edit:"Edit layers.",editDisabled:"No layers to edit.",remove:"Delete layers.",removeDisabled:"No layers to delete."}},handlers:{edit:{tooltip:{text:"Drag handles, or marker to edit feature.",subtext:"Click cancel to undo changes."}},remove:{tooltip:{text:"Click on a feature to remove"}}}}},L.Draw={},L.Draw.Feature=L.Handler.extend({includes:L.Mixin.Events,initialize:function(t,e){this._map=t,this._container=t._container,this._overlayPane=t._panes.overlayPane,this._popupPane=t._panes.popupPane,e&&e.shapeOptions&&(e.shapeOptions=L.Util.extend({},this.options.shapeOptions,e.shapeOptions)),L.setOptions(this,e)},enable:function(){this._enabled||(this.fire("enabled",{handler:this.type}),this._map.fire("draw:drawstart",{layerType:this.type}),L.Handler.prototype.enable.call(this))},disable:function(){this._enabled&&(L.Handler.prototype.disable.call(this),this._map.fire("draw:drawstop",{layerType:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(L.DomUtil.disableTextSelection(),t.getContainer().focus(),this._tooltip=new L.Tooltip(this._map),L.DomEvent.on(this._container,"keyup",this._cancelDrawing,this))},removeHooks:function(){this._map&&(L.DomUtil.enableTextSelection(),this._tooltip.dispose(),this._tooltip=null,L.DomEvent.off(this._container,"keyup",this._cancelDrawing,this))},setOptions:function(t){L.setOptions(this,t)},_fireCreatedEvent:function(t){this._map.fire("draw:created",{layer:t,layerType:this.type})},_cancelDrawing:function(t){27===t.keyCode&&this.disable()}}),L.Draw.Polyline=L.Draw.Feature.extend({statics:{TYPE:"polyline"},Poly:L.Polyline,options:{allowIntersection:!0,repeatMode:!1,drawError:{color:"#b00b00",timeout:2500},icon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon"}),guidelineDistance:20,maxGuideLineLength:4e3,shapeOptions:{stroke:!0,color:"#f06eaa",weight:4,opacity:.5,fill:!1,clickable:!0},metric:!0,showLength:!0,zIndexOffset:2e3},initialize:function(t,e){this.options.drawError.message=L.drawLocal.draw.handlers.polyline.error,e&&e.drawError&&(e.drawError=L.Util.extend({},this.options.drawError,e.drawError)),this.type=L.Draw.Polyline.TYPE,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._markers=[],this._markerGroup=new L.LayerGroup,this._map.addLayer(this._markerGroup),this._poly=new L.Polyline([],this.options.shapeOptions),this._tooltip.updateContent(this._getTooltipText()),this._mouseMarker||(this._mouseMarker=L.marker(this._map.getCenter(),{icon:L.divIcon({className:"leaflet-mouse-marker",iconAnchor:[20,20],iconSize:[40,40]}),opacity:0,zIndexOffset:this.options.zIndexOffset})),this._mouseMarker.on("mousedown",this._onMouseDown,this).addTo(this._map),this._map.on("mousemove",this._onMouseMove,this).on("mouseup",this._onMouseUp,this).on("zoomend",this._onZoomEnd,this))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._clearHideErrorTimeout(),this._cleanUpShape(),this._map.removeLayer(this._markerGroup),delete this._markerGroup,delete this._markers,this._map.removeLayer(this._poly),delete this._poly,this._mouseMarker.off("mousedown",this._onMouseDown,this).off("mouseup",this._onMouseUp,this),this._map.removeLayer(this._mouseMarker),delete this._mouseMarker,this._clearGuides(),this._map.off("mousemove",this._onMouseMove,this).off("zoomend",this._onZoomEnd,this)},deleteLastVertex:function(){if(!(this._markers.length<=1)){var t=this._markers.pop(),e=this._poly,i=this._poly.spliceLatLngs(e.getLatLngs().length-1,1)[0];this._markerGroup.removeLayer(t),e.getLatLngs().length<2&&this._map.removeLayer(e),this._vertexChanged(i,!1)}},addVertex:function(t){var e=this._markers.length;return e>0&&!this.options.allowIntersection&&this._poly.newLatLngIntersects(t)?(this._showErrorTooltip(),void 0):(this._errorShown&&this._hideErrorTooltip(),this._markers.push(this._createMarker(t)),this._poly.addLatLng(t),2===this._poly.getLatLngs().length&&this._map.addLayer(this._poly),this._vertexChanged(t,!0),void 0)},_finishShape:function(){var t=this._poly.newLatLngIntersects(this._poly.getLatLngs()[0],!0);return!this.options.allowIntersection&&t||!this._shapeIsValid()?(this._showErrorTooltip(),void 0):(this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable(),void 0)},_shapeIsValid:function(){return!0},_onZoomEnd:function(){this._updateGuide()},_onMouseMove:function(t){var e=t.layerPoint,i=t.latlng;this._currentLatLng=i,this._updateTooltip(i),this._updateGuide(e),this._mouseMarker.setLatLng(i),L.DomEvent.preventDefault(t.originalEvent)},_vertexChanged:function(t,e){this._updateFinishHandler(),this._updateRunningMeasure(t,e),this._clearGuides(),this._updateTooltip()},_onMouseDown:function(t){var e=t.originalEvent;this._mouseDownOrigin=L.point(e.clientX,e.clientY)},_onMouseUp:function(e){if(this._mouseDownOrigin){var i=L.point(e.originalEvent.clientX,e.originalEvent.clientY).distanceTo(this._mouseDownOrigin);Math.abs(i)<9*(t.devicePixelRatio||1)&&this.addVertex(e.latlng)}this._mouseDownOrigin=null},_updateFinishHandler:function(){var t=this._markers.length;t>1&&this._markers[t-1].on("click",this._finishShape,this),t>2&&this._markers[t-2].off("click",this._finishShape,this)},_createMarker:function(t){var e=new L.Marker(t,{icon:this.options.icon,zIndexOffset:2*this.options.zIndexOffset});return this._markerGroup.addLayer(e),e},_updateGuide:function(t){var e=this._markers.length;e>0&&(t=t||this._map.latLngToLayerPoint(this._currentLatLng),this._clearGuides(),this._drawGuide(this._map.latLngToLayerPoint(this._markers[e-1].getLatLng()),t))},_updateTooltip:function(t){var e=this._getTooltipText();t&&this._tooltip.updatePosition(t),this._errorShown||this._tooltip.updateContent(e)},_drawGuide:function(t,e){var i,o,a,s=Math.floor(Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))),r=this.options.guidelineDistance,n=this.options.maxGuideLineLength,l=s>n?s-n:r;for(this._guidesContainer||(this._guidesContainer=L.DomUtil.create("div","leaflet-draw-guides",this._overlayPane));s>l;l+=this.options.guidelineDistance)i=l/s,o={x:Math.floor(t.x*(1-i)+i*e.x),y:Math.floor(t.y*(1-i)+i*e.y)},a=L.DomUtil.create("div","leaflet-draw-guide-dash",this._guidesContainer),a.style.backgroundColor=this._errorShown?this.options.drawError.color:this.options.shapeOptions.color,L.DomUtil.setPosition(a,o)},_updateGuideColor:function(t){if(this._guidesContainer)for(var e=0,i=this._guidesContainer.childNodes.length;i>e;e++)this._guidesContainer.childNodes[e].style.backgroundColor=t},_clearGuides:function(){if(this._guidesContainer)for(;this._guidesContainer.firstChild;)this._guidesContainer.removeChild(this._guidesContainer.firstChild)},_getTooltipText:function(){var t,e,i=this.options.showLength;return 0===this._markers.length?t={text:L.drawLocal.draw.handlers.polyline.tooltip.start}:(e=i?this._getMeasurementString():"",t=1===this._markers.length?{text:L.drawLocal.draw.handlers.polyline.tooltip.cont,subtext:e}:{text:L.drawLocal.draw.handlers.polyline.tooltip.end,subtext:e}),t},_updateRunningMeasure:function(t,e){var i,o,a=this._markers.length;1===this._markers.length?this._measurementRunningTotal=0:(i=a-(e?2:1),o=t.distanceTo(this._markers[i].getLatLng()),this._measurementRunningTotal+=o*(e?1:-1))},_getMeasurementString:function(){var t,e=this._currentLatLng,i=this._markers[this._markers.length-1].getLatLng();return t=this._measurementRunningTotal+e.distanceTo(i),L.GeometryUtil.readableDistance(t,this.options.metric)},_showErrorTooltip:function(){this._errorShown=!0,this._tooltip.showAsError().updateContent({text:this.options.drawError.message}),this._updateGuideColor(this.options.drawError.color),this._poly.setStyle({color:this.options.drawError.color}),this._clearHideErrorTimeout(),this._hideErrorTimeout=setTimeout(L.Util.bind(this._hideErrorTooltip,this),this.options.drawError.timeout)},_hideErrorTooltip:function(){this._errorShown=!1,this._clearHideErrorTimeout(),this._tooltip.removeError().updateContent(this._getTooltipText()),this._updateGuideColor(this.options.shapeOptions.color),this._poly.setStyle({color:this.options.shapeOptions.color})},_clearHideErrorTimeout:function(){this._hideErrorTimeout&&(clearTimeout(this._hideErrorTimeout),this._hideErrorTimeout=null)},_cleanUpShape:function(){this._markers.length>1&&this._markers[this._markers.length-1].off("click",this._finishShape,this)},_fireCreatedEvent:function(){var t=new this.Poly(this._poly.getLatLngs(),this.options.shapeOptions);L.Draw.Feature.prototype._fireCreatedEvent.call(this,t)}}),L.Draw.Polygon=L.Draw.Polyline.extend({statics:{TYPE:"polygon"},Poly:L.Polygon,options:{showArea:!1,shapeOptions:{stroke:!0,color:"#f06eaa",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0}},initialize:function(t,e){L.Draw.Polyline.prototype.initialize.call(this,t,e),this.type=L.Draw.Polygon.TYPE},_updateFinishHandler:function(){var t=this._markers.length;1===t&&this._markers[0].on("click",this._finishShape,this),t>2&&(this._markers[t-1].on("dblclick",this._finishShape,this),t>3&&this._markers[t-2].off("dblclick",this._finishShape,this))},_getTooltipText:function(){var t,e;return 0===this._markers.length?t=L.drawLocal.draw.handlers.polygon.tooltip.start:this._markers.length<3?t=L.drawLocal.draw.handlers.polygon.tooltip.cont:(t=L.drawLocal.draw.handlers.polygon.tooltip.end,e=this._getMeasurementString()),{text:t,subtext:e}},_getMeasurementString:function(){var t=this._area;return t?L.GeometryUtil.readableArea(t,this.options.metric):null},_shapeIsValid:function(){return this._markers.length>=3},_vertexAdded:function(){if(!this.options.allowIntersection&&this.options.showArea){var t=this._poly.getLatLngs();this._area=L.GeometryUtil.geodesicArea(t)}},_cleanUpShape:function(){var t=this._markers.length;t>0&&(this._markers[0].off("click",this._finishShape,this),t>2&&this._markers[t-1].off("dblclick",this._finishShape,this))}}),L.SimpleShape={},L.Draw.SimpleShape=L.Draw.Feature.extend({options:{repeatMode:!1},initialize:function(t,e){this._endLabelText=L.drawLocal.draw.handlers.simpleshape.tooltip.end,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._mapDraggable=this._map.dragging.enabled(),this._mapDraggable&&this._map.dragging.disable(),this._container.style.cursor="crosshair",this._tooltip.updateContent({text:this._initialLabelText}),this._map.on("mousedown",this._onMouseDown,this).on("mousemove",this._onMouseMove,this))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._map&&(this._mapDraggable&&this._map.dragging.enable(),this._container.style.cursor="",this._map.off("mousedown",this._onMouseDown,this).off("mousemove",this._onMouseMove,this),L.DomEvent.off(e,"mouseup",this._onMouseUp,this),this._shape&&(this._map.removeLayer(this._shape),delete this._shape)),this._isDrawing=!1},_onMouseDown:function(t){this._isDrawing=!0,this._startLatLng=t.latlng,L.DomEvent.on(e,"mouseup",this._onMouseUp,this).preventDefault(t.originalEvent)},_onMouseMove:function(t){var e=t.latlng;this._tooltip.updatePosition(e),this._isDrawing&&(this._tooltip.updateContent({text:this._endLabelText}),this._drawShape(e))},_onMouseUp:function(){this._shape&&this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()}}),L.Draw.Rectangle=L.Draw.SimpleShape.extend({statics:{TYPE:"rectangle"},options:{shapeOptions:{stroke:!0,color:"#f06eaa",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0}},initialize:function(t,e){this.type=L.Draw.Rectangle.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.rectangle.tooltip.start,L.Draw.SimpleShape.prototype.initialize.call(this,t,e)},_drawShape:function(t){this._shape?this._shape.setBounds(new L.LatLngBounds(this._startLatLng,t)):(this._shape=new L.Rectangle(new L.LatLngBounds(this._startLatLng,t),this.options.shapeOptions),this._map.addLayer(this._shape))},_fireCreatedEvent:function(){var t=new L.Rectangle(this._shape.getBounds(),this.options.shapeOptions);L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this,t)}}),L.Draw.Circle=L.Draw.SimpleShape.extend({statics:{TYPE:"circle"},options:{shapeOptions:{stroke:!0,color:"#f06eaa",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0},showRadius:!0,metric:!0},initialize:function(t,e){this.type=L.Draw.Circle.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.circle.tooltip.start,L.Draw.SimpleShape.prototype.initialize.call(this,t,e)},_drawShape:function(t){this._shape?this._shape.setRadius(this._startLatLng.distanceTo(t)):(this._shape=new L.Circle(this._startLatLng,this._startLatLng.distanceTo(t),this.options.shapeOptions),this._map.addLayer(this._shape))},_fireCreatedEvent:function(){var t=new L.Circle(this._startLatLng,this._shape.getRadius(),this.options.shapeOptions);L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this,t)},_onMouseMove:function(t){var e,i=t.latlng,o=this.options.showRadius,a=this.options.metric;this._tooltip.updatePosition(i),this._isDrawing&&(this._drawShape(i),e=this._shape.getRadius().toFixed(1),this._tooltip.updateContent({text:this._endLabelText,subtext:o?"Radius: "+L.GeometryUtil.readableDistance(e,a):""}))}}),L.Draw.Marker=L.Draw.Feature.extend({statics:{TYPE:"marker"},options:{icon:new L.Icon.Default,repeatMode:!1,zIndexOffset:2e3},initialize:function(t,e){this.type=L.Draw.Marker.TYPE,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._tooltip.updateContent({text:L.drawLocal.draw.handlers.marker.tooltip.start}),this._mouseMarker||(this._mouseMarker=L.marker(this._map.getCenter(),{icon:L.divIcon({className:"leaflet-mouse-marker",iconAnchor:[20,20],iconSize:[40,40]}),opacity:0,zIndexOffset:this.options.zIndexOffset})),this._mouseMarker.on("click",this._onClick,this).addTo(this._map),this._map.on("mousemove",this._onMouseMove,this))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._map&&(this._marker&&(this._marker.off("click",this._onClick,this),this._map.off("click",this._onClick,this).removeLayer(this._marker),delete this._marker),this._mouseMarker.off("click",this._onClick,this),this._map.removeLayer(this._mouseMarker),delete this._mouseMarker,this._map.off("mousemove",this._onMouseMove,this))},_onMouseMove:function(t){var e=t.latlng;this._tooltip.updatePosition(e),this._mouseMarker.setLatLng(e),this._marker?(e=this._mouseMarker.getLatLng(),this._marker.setLatLng(e)):(this._marker=new L.Marker(e,{icon:this.options.icon,zIndexOffset:this.options.zIndexOffset}),this._marker.on("click",this._onClick,this),this._map.on("click",this._onClick,this).addLayer(this._marker))},_onClick:function(){this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()},_fireCreatedEvent:function(){var t=new L.Marker(this._marker.getLatLng(),{icon:this.options.icon});L.Draw.Feature.prototype._fireCreatedEvent.call(this,t)}}),L.Edit=L.Edit||{},L.Edit.Poly=L.Handler.extend({options:{icon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon"})},initialize:function(t,e){this._poly=t,L.setOptions(this,e)},addHooks:function(){this._poly._map&&(this._markerGroup||this._initMarkers(),this._poly._map.addLayer(this._markerGroup))},removeHooks:function(){this._poly._map&&(this._poly._map.removeLayer(this._markerGroup),delete this._markerGroup,delete this._markers)},updateMarkers:function(){this._markerGroup.clearLayers(),this._initMarkers()},_initMarkers:function(){this._markerGroup||(this._markerGroup=new L.LayerGroup),this._markers=[];var t,e,i,o,a=this._poly._latlngs;for(t=0,i=a.length;i>t;t++)o=this._createMarker(a[t],t),o.on("click",this._onMarkerClick,this),this._markers.push(o);var s,r;for(t=0,e=i-1;i>t;e=t++)(0!==t||L.Polygon&&this._poly instanceof L.Polygon)&&(s=this._markers[e],r=this._markers[t],this._createMiddleMarker(s,r),this._updatePrevNext(s,r))},_createMarker:function(t,e){var i=new L.Marker(t,{draggable:!0,icon:this.options.icon});return i._origLatLng=t,i._index=e,i.on("drag",this._onMarkerDrag,this),i.on("dragend",this._fireEdit,this),this._markerGroup.addLayer(i),i},_removeMarker:function(t){var e=t._index;this._markerGroup.removeLayer(t),this._markers.splice(e,1),this._poly.spliceLatLngs(e,1),this._updateIndexes(e,-1),t.off("drag",this._onMarkerDrag,this).off("dragend",this._fireEdit,this).off("click",this._onMarkerClick,this)},_fireEdit:function(){this._poly.edited=!0,this._poly.fire("edit")},_onMarkerDrag:function(t){var e=t.target;L.extend(e._origLatLng,e._latlng),e._middleLeft&&e._middleLeft.setLatLng(this._getMiddleLatLng(e._prev,e)),e._middleRight&&e._middleRight.setLatLng(this._getMiddleLatLng(e,e._next)),this._poly.redraw()},_onMarkerClick:function(t){var e=L.Polygon&&this._poly instanceof L.Polygon?4:3,i=t.target;this._poly._latlngs.length<e||(this._removeMarker(i),this._updatePrevNext(i._prev,i._next),i._middleLeft&&this._markerGroup.removeLayer(i._middleLeft),i._middleRight&&this._markerGroup.removeLayer(i._middleRight),i._prev&&i._next?this._createMiddleMarker(i._prev,i._next):i._prev?i._next||(i._prev._middleRight=null):i._next._middleLeft=null,this._fireEdit())},_updateIndexes:function(t,e){this._markerGroup.eachLayer(function(i){i._index>t&&(i._index+=e)})},_createMiddleMarker:function(t,e){var i,o,a,s=this._getMiddleLatLng(t,e),r=this._createMarker(s);r.setOpacity(.6),t._middleRight=e._middleLeft=r,o=function(){var o=e._index;r._index=o,r.off("click",i,this).on("click",this._onMarkerClick,this),s.lat=r.getLatLng().lat,s.lng=r.getLatLng().lng,this._poly.spliceLatLngs(o,0,s),this._markers.splice(o,0,r),r.setOpacity(1),this._updateIndexes(o,1),e._index++,this._updatePrevNext(t,r),this._updatePrevNext(r,e),this._poly.fire("editstart")},a=function(){r.off("dragstart",o,this),r.off("dragend",a,this),this._createMiddleMarker(t,r),this._createMiddleMarker(r,e)},i=function(){o.call(this),a.call(this),this._fireEdit()},r.on("click",i,this).on("dragstart",o,this).on("dragend",a,this),this._markerGroup.addLayer(r)},_updatePrevNext:function(t,e){t&&(t._next=e),e&&(e._prev=t)},_getMiddleLatLng:function(t,e){var i=this._poly._map,o=i.project(t.getLatLng()),a=i.project(e.getLatLng());return i.unproject(o._add(a)._divideBy(2))}}),L.Polyline.addInitHook(function(){this.editing||(L.Edit.Poly&&(this.editing=new L.Edit.Poly(this),this.options.editable&&this.editing.enable()),this.on("add",function(){this.editing&&this.editing.enabled()&&this.editing.addHooks()}),this.on("remove",function(){this.editing&&this.editing.enabled()&&this.editing.removeHooks()}))}),L.Edit=L.Edit||{},L.Edit.SimpleShape=L.Handler.extend({options:{moveIcon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon leaflet-edit-move"}),resizeIcon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon leaflet-edit-resize"})},initialize:function(t,e){this._shape=t,L.Util.setOptions(this,e)},addHooks:function(){this._shape._map&&(this._map=this._shape._map,this._markerGroup||this._initMarkers(),this._map.addLayer(this._markerGroup))},removeHooks:function(){if(this._shape._map){this._unbindMarker(this._moveMarker);for(var t=0,e=this._resizeMarkers.length;e>t;t++)this._unbindMarker(this._resizeMarkers[t]);this._resizeMarkers=null,this._map.removeLayer(this._markerGroup),delete this._markerGroup}this._map=null},updateMarkers:function(){this._markerGroup.clearLayers(),this._initMarkers()},_initMarkers:function(){this._markerGroup||(this._markerGroup=new L.LayerGroup),this._createMoveMarker(),this._createResizeMarker()},_createMoveMarker:function(){},_createResizeMarker:function(){},_createMarker:function(t,e){var i=new L.Marker(t,{draggable:!0,icon:e,zIndexOffset:10});return this._bindMarker(i),this._markerGroup.addLayer(i),i},_bindMarker:function(t){t.on("dragstart",this._onMarkerDragStart,this).on("drag",this._onMarkerDrag,this).on("dragend",this._onMarkerDragEnd,this)},_unbindMarker:function(t){t.off("dragstart",this._onMarkerDragStart,this).off("drag",this._onMarkerDrag,this).off("dragend",this._onMarkerDragEnd,this)},_onMarkerDragStart:function(t){var e=t.target;e.setOpacity(0),this._shape.fire("editstart")},_fireEdit:function(){this._shape.edited=!0,this._shape.fire("edit")},_onMarkerDrag:function(t){var e=t.target,i=e.getLatLng();e===this._moveMarker?this._move(i):this._resize(i),this._shape.redraw()},_onMarkerDragEnd:function(t){var e=t.target;e.setOpacity(1),this._fireEdit()},_move:function(){},_resize:function(){}}),L.Edit=L.Edit||{},L.Edit.Rectangle=L.Edit.SimpleShape.extend({_createMoveMarker:function(){var t=this._shape.getBounds(),e=t.getCenter();this._moveMarker=this._createMarker(e,this.options.moveIcon)},_createResizeMarker:function(){var t=this._getCorners();this._resizeMarkers=[];for(var e=0,i=t.length;i>e;e++)this._resizeMarkers.push(this._createMarker(t[e],this.options.resizeIcon)),this._resizeMarkers[e]._cornerIndex=e},_onMarkerDragStart:function(t){L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this,t);var e=this._getCorners(),i=t.target,o=i._cornerIndex;this._oppositeCorner=e[(o+2)%4],this._toggleCornerMarkers(0,o)},_onMarkerDragEnd:function(t){var e,i,o=t.target;o===this._moveMarker&&(e=this._shape.getBounds(),i=e.getCenter(),o.setLatLng(i)),this._toggleCornerMarkers(1),this._repositionCornerMarkers(),L.Edit.SimpleShape.prototype._onMarkerDragEnd.call(this,t)},_move:function(t){for(var e,i=this._shape.getLatLngs(),o=this._shape.getBounds(),a=o.getCenter(),s=[],r=0,n=i.length;n>r;r++)e=[i[r].lat-a.lat,i[r].lng-a.lng],s.push([t.lat+e[0],t.lng+e[1]]);this._shape.setLatLngs(s),this._repositionCornerMarkers()},_resize:function(t){var e;this._shape.setBounds(L.latLngBounds(t,this._oppositeCorner)),e=this._shape.getBounds(),this._moveMarker.setLatLng(e.getCenter())},_getCorners:function(){var t=this._shape.getBounds(),e=t.getNorthWest(),i=t.getNorthEast(),o=t.getSouthEast(),a=t.getSouthWest();return[e,i,o,a]},_toggleCornerMarkers:function(t){for(var e=0,i=this._resizeMarkers.length;i>e;e++)this._resizeMarkers[e].setOpacity(t)},_repositionCornerMarkers:function(){for(var t=this._getCorners(),e=0,i=this._resizeMarkers.length;i>e;e++)this._resizeMarkers[e].setLatLng(t[e])}}),L.Rectangle.addInitHook(function(){L.Edit.Rectangle&&(this.editing=new L.Edit.Rectangle(this),this.options.editable&&this.editing.enable())}),L.Edit=L.Edit||{},L.Edit.Circle=L.Edit.SimpleShape.extend({_createMoveMarker:function(){var t=this._shape.getLatLng();this._moveMarker=this._createMarker(t,this.options.moveIcon)},_createResizeMarker:function(){var t=this._shape.getLatLng(),e=this._getResizeMarkerPoint(t);this._resizeMarkers=[],this._resizeMarkers.push(this._createMarker(e,this.options.resizeIcon))},_getResizeMarkerPoint:function(t){var e=this._shape._radius*Math.cos(Math.PI/4),i=this._map.project(t);return this._map.unproject([i.x+e,i.y-e])},_move:function(t){var e=this._getResizeMarkerPoint(t);this._resizeMarkers[0].setLatLng(e),this._shape.setLatLng(t)},_resize:function(t){var e=this._moveMarker.getLatLng(),i=e.distanceTo(t);this._shape.setRadius(i)}}),L.Circle.addInitHook(function(){L.Edit.Circle&&(this.editing=new L.Edit.Circle(this),this.options.editable&&this.editing.enable()),this.on("add",function(){this.editing&&this.editing.enabled()&&this.editing.addHooks()}),this.on("remove",function(){this.editing&&this.editing.enabled()&&this.editing.removeHooks()})}),L.LatLngUtil={cloneLatLngs:function(t){for(var e=[],i=0,o=t.length;o>i;i++)e.push(this.cloneLatLng(t[i]));return e},cloneLatLng:function(t){return L.latLng(t.lat,t.lng)}},L.GeometryUtil=L.extend(L.GeometryUtil||{},{geodesicArea:function(t){var e,i,o=t.length,a=0,s=L.LatLng.DEG_TO_RAD;if(o>2){for(var r=0;o>r;r++)e=t[r],i=t[(r+1)%o],a+=(i.lng-e.lng)*s*(2+Math.sin(e.lat*s)+Math.sin(i.lat*s));a=6378137*a*6378137/2}return Math.abs(a)},readableArea:function(t,e){var i;return e?i=t>=1e4?(1e-4*t).toFixed(2)+" ha":t.toFixed(2)+" m&sup2;":(t*=.836127,i=t>=3097600?(t/3097600).toFixed(2)+" mi&sup2;":t>=4840?(t/4840).toFixed(2)+" acres":Math.ceil(t)+" yd&sup2;"),i},readableDistance:function(t,e){var i;return e?i=t>1e3?(t/1e3).toFixed(2)+" km":Math.ceil(t)+" m":(t*=1.09361,i=t>1760?(t/1760).toFixed(2)+" miles":Math.ceil(t)+" yd"),i}}),L.Util.extend(L.LineUtil,{segmentsIntersect:function(t,e,i,o){return this._checkCounterclockwise(t,i,o)!==this._checkCounterclockwise(e,i,o)&&this._checkCounterclockwise(t,e,i)!==this._checkCounterclockwise(t,e,o)},_checkCounterclockwise:function(t,e,i){return(i.y-t.y)*(e.x-t.x)>(e.y-t.y)*(i.x-t.x)}}),L.Polyline.include({intersects:function(){var t,e,i,o=this._originalPoints,a=o?o.length:0;if(this._tooFewPointsForIntersection())return!1;for(t=a-1;t>=3;t--)if(e=o[t-1],i=o[t],this._lineSegmentsIntersectsRange(e,i,t-2))return!0;return!1},newLatLngIntersects:function(t,e){return this._map?this.newPointIntersects(this._map.latLngToLayerPoint(t),e):!1},newPointIntersects:function(t,e){var i=this._originalPoints,o=i?i.length:0,a=i?i[o-1]:null,s=o-2;return this._tooFewPointsForIntersection(1)?!1:this._lineSegmentsIntersectsRange(a,t,s,e?1:0)},_tooFewPointsForIntersection:function(t){var e=this._originalPoints,i=e?e.length:0;return i+=t||0,!this._originalPoints||3>=i},_lineSegmentsIntersectsRange:function(t,e,i,o){var a,s,r=this._originalPoints;o=o||0;for(var n=i;n>o;n--)if(a=r[n-1],s=r[n],L.LineUtil.segmentsIntersect(t,e,a,s))return!0;return!1}}),L.Polygon.include({intersects:function(){var t,e,i,o,a,s=this._originalPoints;return this._tooFewPointsForIntersection()?!1:(t=L.Polyline.prototype.intersects.call(this))?!0:(e=s.length,i=s[0],o=s[e-1],a=e-2,this._lineSegmentsIntersectsRange(o,i,a,1))}}),L.Control.Draw=L.Control.extend({options:{position:"topleft",draw:{},edit:!1},initialize:function(t){if(L.version<"0.7")throw new Error("Leaflet.draw 0.2.3+ requires Leaflet 0.7.0+. Download latest from https://github.com/Leaflet/Leaflet/");L.Control.prototype.initialize.call(this,t);var e,i;this._toolbars={},L.DrawToolbar&&this.options.draw&&(i=new L.DrawToolbar(this.options.draw),e=L.stamp(i),this._toolbars[e]=i,this._toolbars[e].on("enable",this._toolbarEnabled,this)),L.EditToolbar&&this.options.edit&&(i=new L.EditToolbar(this.options.edit),e=L.stamp(i),this._toolbars[e]=i,this._toolbars[e].on("enable",this._toolbarEnabled,this))},onAdd:function(t){var e,i=L.DomUtil.create("div","leaflet-draw"),o=!1,a="leaflet-draw-toolbar-top";for(var s in this._toolbars)this._toolbars.hasOwnProperty(s)&&(e=this._toolbars[s].addToolbar(t),e&&(o||(L.DomUtil.hasClass(e,a)||L.DomUtil.addClass(e.childNodes[0],a),o=!0),i.appendChild(e)));return i},onRemove:function(){for(var t in this._toolbars)this._toolbars.hasOwnProperty(t)&&this._toolbars[t].removeToolbar()},setDrawingOptions:function(t){for(var e in this._toolbars)this._toolbars[e]instanceof L.DrawToolbar&&this._toolbars[e].setOptions(t)},_toolbarEnabled:function(t){var e=""+L.stamp(t.target);for(var i in this._toolbars)this._toolbars.hasOwnProperty(i)&&i!==e&&this._toolbars[i].disable()}}),L.Map.mergeOptions({drawControlTooltips:!0,drawControl:!1}),L.Map.addInitHook(function(){this.options.drawControl&&(this.drawControl=new L.Control.Draw,this.addControl(this.drawControl))}),L.Toolbar=L.Class.extend({includes:[L.Mixin.Events],initialize:function(t){L.setOptions(this,t),this._modes={},this._actionButtons=[],this._activeMode=null},enabled:function(){return null!==this._activeMode},disable:function(){this.enabled()&&this._activeMode.handler.disable()},addToolbar:function(t){var e,i=L.DomUtil.create("div","leaflet-draw-section"),o=0,a=this._toolbarClass||"",s=this.getModeHandlers(t);for(this._toolbarContainer=L.DomUtil.create("div","leaflet-draw-toolbar leaflet-bar"),this._map=t,e=0;e<s.length;e++)s[e].enabled&&this._initModeHandler(s[e].handler,this._toolbarContainer,o++,a,s[e].title);return o?(this._lastButtonIndex=--o,this._actionsContainer=L.DomUtil.create("ul","leaflet-draw-actions"),i.appendChild(this._toolbarContainer),i.appendChild(this._actionsContainer),i):void 0},removeToolbar:function(){for(var t in this._modes)this._modes.hasOwnProperty(t)&&(this._disposeButton(this._modes[t].button,this._modes[t].handler.enable,this._modes[t].handler),this._modes[t].handler.disable(),this._modes[t].handler.off("enabled",this._handlerActivated,this).off("disabled",this._handlerDeactivated,this));this._modes={};for(var e=0,i=this._actionButtons.length;i>e;e++)this._disposeButton(this._actionButtons[e].button,this._actionButtons[e].callback,this);this._actionButtons=[],this._actionsContainer=null},_initModeHandler:function(t,e,i,o,a){var s=t.type;this._modes[s]={},this._modes[s].handler=t,this._modes[s].button=this._createButton({title:a,className:o+"-"+s,container:e,callback:this._modes[s].handler.enable,context:this._modes[s].handler}),this._modes[s].buttonIndex=i,this._modes[s].handler.on("enabled",this._handlerActivated,this).on("disabled",this._handlerDeactivated,this)},_createButton:function(t){var e=L.DomUtil.create("a",t.className||"",t.container);return e.href="#",t.text&&(e.innerHTML=t.text),t.title&&(e.title=t.title),L.DomEvent.on(e,"click",L.DomEvent.stopPropagation).on(e,"mousedown",L.DomEvent.stopPropagation).on(e,"dblclick",L.DomEvent.stopPropagation).on(e,"click",L.DomEvent.preventDefault).on(e,"click",t.callback,t.context),e},_disposeButton:function(t,e){L.DomEvent.off(t,"click",L.DomEvent.stopPropagation).off(t,"mousedown",L.DomEvent.stopPropagation).off(t,"dblclick",L.DomEvent.stopPropagation).off(t,"click",L.DomEvent.preventDefault).off(t,"click",e)},_handlerActivated:function(t){this.disable(),this._activeMode=this._modes[t.handler],L.DomUtil.addClass(this._activeMode.button,"leaflet-draw-toolbar-button-enabled"),this._showActionsToolbar(),this.fire("enable")},_handlerDeactivated:function(){this._hideActionsToolbar(),L.DomUtil.removeClass(this._activeMode.button,"leaflet-draw-toolbar-button-enabled"),this._activeMode=null,this.fire("disable")},_createActions:function(t){var e,i,o,a,s=this._actionsContainer,r=this.getActions(t),n=r.length;for(i=0,o=this._actionButtons.length;o>i;i++)this._disposeButton(this._actionButtons[i].button,this._actionButtons[i].callback);for(this._actionButtons=[];s.firstChild;)s.removeChild(s.firstChild);for(var l=0;n>l;l++)"enabled"in r[l]&&!r[l].enabled||(e=L.DomUtil.create("li","",s),a=this._createButton({title:r[l].title,text:r[l].text,container:e,callback:r[l].callback,context:r[l].context}),this._actionButtons.push({button:a,callback:r[l].callback}))},_showActionsToolbar:function(){var t=this._activeMode.buttonIndex,e=this._lastButtonIndex,i=this._activeMode.button.offsetTop-1;this._createActions(this._activeMode.handler),this._actionsContainer.style.top=i+"px",0===t&&(L.DomUtil.addClass(this._toolbarContainer,"leaflet-draw-toolbar-notop"),L.DomUtil.addClass(this._actionsContainer,"leaflet-draw-actions-top")),t===e&&(L.DomUtil.addClass(this._toolbarContainer,"leaflet-draw-toolbar-nobottom"),L.DomUtil.addClass(this._actionsContainer,"leaflet-draw-actions-bottom")),this._actionsContainer.style.display="block"
-},_hideActionsToolbar:function(){this._actionsContainer.style.display="none",L.DomUtil.removeClass(this._toolbarContainer,"leaflet-draw-toolbar-notop"),L.DomUtil.removeClass(this._toolbarContainer,"leaflet-draw-toolbar-nobottom"),L.DomUtil.removeClass(this._actionsContainer,"leaflet-draw-actions-top"),L.DomUtil.removeClass(this._actionsContainer,"leaflet-draw-actions-bottom")}}),L.Tooltip=L.Class.extend({initialize:function(t){this._map=t,this._popupPane=t._panes.popupPane,this._container=t.options.drawControlTooltips?L.DomUtil.create("div","leaflet-draw-tooltip",this._popupPane):null,this._singleLineLabel=!1},dispose:function(){this._container&&(this._popupPane.removeChild(this._container),this._container=null)},updateContent:function(t){return this._container?(t.subtext=t.subtext||"",0!==t.subtext.length||this._singleLineLabel?t.subtext.length>0&&this._singleLineLabel&&(L.DomUtil.removeClass(this._container,"leaflet-draw-tooltip-single"),this._singleLineLabel=!1):(L.DomUtil.addClass(this._container,"leaflet-draw-tooltip-single"),this._singleLineLabel=!0),this._container.innerHTML=(t.subtext.length>0?'<span class="leaflet-draw-tooltip-subtext">'+t.subtext+"</span><br />":"")+"<span>"+t.text+"</span>",this):this},updatePosition:function(t){var e=this._map.latLngToLayerPoint(t),i=this._container;return this._container&&(i.style.visibility="inherit",L.DomUtil.setPosition(i,e)),this},showAsError:function(){return this._container&&L.DomUtil.addClass(this._container,"leaflet-error-draw-tooltip"),this},removeError:function(){return this._container&&L.DomUtil.removeClass(this._container,"leaflet-error-draw-tooltip"),this}}),L.DrawToolbar=L.Toolbar.extend({options:{polyline:{},polygon:{},rectangle:{},circle:{},marker:{}},initialize:function(t){for(var e in this.options)this.options.hasOwnProperty(e)&&t[e]&&(t[e]=L.extend({},this.options[e],t[e]));this._toolbarClass="leaflet-draw-draw",L.Toolbar.prototype.initialize.call(this,t)},getModeHandlers:function(t){return[{enabled:this.options.polyline,handler:new L.Draw.Polyline(t,this.options.polyline),title:L.drawLocal.draw.toolbar.buttons.polyline},{enabled:this.options.polygon,handler:new L.Draw.Polygon(t,this.options.polygon),title:L.drawLocal.draw.toolbar.buttons.polygon},{enabled:this.options.rectangle,handler:new L.Draw.Rectangle(t,this.options.rectangle),title:L.drawLocal.draw.toolbar.buttons.rectangle},{enabled:this.options.circle,handler:new L.Draw.Circle(t,this.options.circle),title:L.drawLocal.draw.toolbar.buttons.circle},{enabled:this.options.marker,handler:new L.Draw.Marker(t,this.options.marker),title:L.drawLocal.draw.toolbar.buttons.marker}]},getActions:function(t){return[{enabled:t.deleteLastVertex,title:L.drawLocal.draw.toolbar.undo.title,text:L.drawLocal.draw.toolbar.undo.text,callback:t.deleteLastVertex,context:t},{title:L.drawLocal.draw.toolbar.actions.title,text:L.drawLocal.draw.toolbar.actions.text,callback:this.disable,context:this}]},setOptions:function(t){L.setOptions(this,t);for(var e in this._modes)this._modes.hasOwnProperty(e)&&t.hasOwnProperty(e)&&this._modes[e].handler.setOptions(t[e])}}),L.EditToolbar=L.Toolbar.extend({options:{edit:{selectedPathOptions:{color:"#fe57a1",opacity:.6,dashArray:"10, 10",fill:!0,fillColor:"#fe57a1",fillOpacity:.1}},remove:{},featureGroup:null},initialize:function(t){t.edit&&("undefined"==typeof t.edit.selectedPathOptions&&(t.edit.selectedPathOptions=this.options.edit.selectedPathOptions),t.edit=L.extend({},this.options.edit,t.edit)),t.remove&&(t.remove=L.extend({},this.options.remove,t.remove)),this._toolbarClass="leaflet-draw-edit",L.Toolbar.prototype.initialize.call(this,t),this._selectedFeatureCount=0},getModeHandlers:function(t){var e=this.options.featureGroup;return[{enabled:this.options.edit,handler:new L.EditToolbar.Edit(t,{featureGroup:e,selectedPathOptions:this.options.edit.selectedPathOptions}),title:L.drawLocal.edit.toolbar.buttons.edit},{enabled:this.options.remove,handler:new L.EditToolbar.Delete(t,{featureGroup:e}),title:L.drawLocal.edit.toolbar.buttons.remove}]},getActions:function(){return[{title:L.drawLocal.edit.toolbar.actions.save.title,text:L.drawLocal.edit.toolbar.actions.save.text,callback:this._save,context:this},{title:L.drawLocal.edit.toolbar.actions.cancel.title,text:L.drawLocal.edit.toolbar.actions.cancel.text,callback:this.disable,context:this}]},addToolbar:function(t){var e=L.Toolbar.prototype.addToolbar.call(this,t);return this._checkDisabled(),this.options.featureGroup.on("layeradd layerremove",this._checkDisabled,this),e},removeToolbar:function(){this.options.featureGroup.off("layeradd layerremove",this._checkDisabled,this),L.Toolbar.prototype.removeToolbar.call(this)},disable:function(){this.enabled()&&(this._activeMode.handler.revertLayers(),L.Toolbar.prototype.disable.call(this))},_save:function(){this._activeMode.handler.save(),this._activeMode.handler.disable()},_checkDisabled:function(){var t,e=this.options.featureGroup,i=0!==e.getLayers().length;this.options.edit&&(t=this._modes[L.EditToolbar.Edit.TYPE].button,i?L.DomUtil.removeClass(t,"leaflet-disabled"):L.DomUtil.addClass(t,"leaflet-disabled"),t.setAttribute("title",i?L.drawLocal.edit.toolbar.buttons.edit:L.drawLocal.edit.toolbar.buttons.editDisabled)),this.options.remove&&(t=this._modes[L.EditToolbar.Delete.TYPE].button,i?L.DomUtil.removeClass(t,"leaflet-disabled"):L.DomUtil.addClass(t,"leaflet-disabled"),t.setAttribute("title",i?L.drawLocal.edit.toolbar.buttons.remove:L.drawLocal.edit.toolbar.buttons.removeDisabled))}}),L.EditToolbar.Edit=L.Handler.extend({statics:{TYPE:"edit"},includes:L.Mixin.Events,initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),this._selectedPathOptions=e.selectedPathOptions,this._featureGroup=e.featureGroup,!(this._featureGroup instanceof L.FeatureGroup))throw new Error("options.featureGroup must be a L.FeatureGroup");this._uneditedLayerProps={},this.type=L.EditToolbar.Edit.TYPE},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire("enabled",{handler:this.type}),this._map.fire("draw:editstart",{handler:this.type}),L.Handler.prototype.enable.call(this),this._featureGroup.on("layeradd",this._enableLayerEdit,this).on("layerremove",this._disableLayerEdit,this))},disable:function(){this._enabled&&(this._featureGroup.off("layeradd",this._enableLayerEdit,this).off("layerremove",this._disableLayerEdit,this),L.Handler.prototype.disable.call(this),this._map.fire("draw:editstop",{handler:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._featureGroup.eachLayer(this._enableLayerEdit,this),this._tooltip=new L.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext}),this._map.on("mousemove",this._onMouseMove,this))},removeHooks:function(){this._map&&(this._featureGroup.eachLayer(this._disableLayerEdit,this),this._uneditedLayerProps={},this._tooltip.dispose(),this._tooltip=null,this._map.off("mousemove",this._onMouseMove,this))},revertLayers:function(){this._featureGroup.eachLayer(function(t){this._revertLayer(t)},this)},save:function(){var t=new L.LayerGroup;this._featureGroup.eachLayer(function(e){e.edited&&(t.addLayer(e),e.edited=!1)}),this._map.fire("draw:edited",{layers:t})},_backupLayer:function(t){var e=L.Util.stamp(t);this._uneditedLayerProps[e]||(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?this._uneditedLayerProps[e]={latlngs:L.LatLngUtil.cloneLatLngs(t.getLatLngs())}:t instanceof L.Circle?this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng()),radius:t.getRadius()}:t instanceof L.Marker&&(this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng())}))},_revertLayer:function(t){var e=L.Util.stamp(t);t.edited=!1,this._uneditedLayerProps.hasOwnProperty(e)&&(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?t.setLatLngs(this._uneditedLayerProps[e].latlngs):t instanceof L.Circle?(t.setLatLng(this._uneditedLayerProps[e].latlng),t.setRadius(this._uneditedLayerProps[e].radius)):t instanceof L.Marker&&t.setLatLng(this._uneditedLayerProps[e].latlng))},_toggleMarkerHighlight:function(t){if(t._icon){var e=t._icon;e.style.display="none",L.DomUtil.hasClass(e,"leaflet-edit-marker-selected")?(L.DomUtil.removeClass(e,"leaflet-edit-marker-selected"),this._offsetMarker(e,-4)):(L.DomUtil.addClass(e,"leaflet-edit-marker-selected"),this._offsetMarker(e,4)),e.style.display=""}},_offsetMarker:function(t,e){var i=parseInt(t.style.marginTop,10)-e,o=parseInt(t.style.marginLeft,10)-e;t.style.marginTop=i+"px",t.style.marginLeft=o+"px"},_enableLayerEdit:function(t){var e,i=t.layer||t.target||t,o=i instanceof L.Marker;(!o||i._icon)&&(this._backupLayer(i),this._selectedPathOptions&&(e=L.Util.extend({},this._selectedPathOptions),o?this._toggleMarkerHighlight(i):(i.options.previousOptions=L.Util.extend({dashArray:null},i.options),i instanceof L.Circle||i instanceof L.Polygon||i instanceof L.Rectangle||(e.fill=!1),i.setStyle(e))),o?(i.dragging.enable(),i.on("dragend",this._onMarkerDragEnd)):i.editing.enable())},_disableLayerEdit:function(t){var e=t.layer||t.target||t;e.edited=!1,this._selectedPathOptions&&(e instanceof L.Marker?this._toggleMarkerHighlight(e):(e.setStyle(e.options.previousOptions),delete e.options.previousOptions)),e instanceof L.Marker?(e.dragging.disable(),e.off("dragend",this._onMarkerDragEnd,this)):e.editing.disable()},_onMarkerDragEnd:function(t){var e=t.target;e.edited=!0},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_hasAvailableLayers:function(){return 0!==this._featureGroup.getLayers().length}}),L.EditToolbar.Delete=L.Handler.extend({statics:{TYPE:"remove"},includes:L.Mixin.Events,initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.Util.setOptions(this,e),this._deletableLayers=this.options.featureGroup,!(this._deletableLayers instanceof L.FeatureGroup))throw new Error("options.featureGroup must be a L.FeatureGroup");this.type=L.EditToolbar.Delete.TYPE},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire("enabled",{handler:this.type}),this._map.fire("draw:deletestart",{handler:this.type}),L.Handler.prototype.enable.call(this),this._deletableLayers.on("layeradd",this._enableLayerDelete,this).on("layerremove",this._disableLayerDelete,this))},disable:function(){this._enabled&&(this._deletableLayers.off("layeradd",this._enableLayerDelete,this).off("layerremove",this._disableLayerDelete,this),L.Handler.prototype.disable.call(this),this._map.fire("draw:deletestop",{handler:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._deletableLayers.eachLayer(this._enableLayerDelete,this),this._deletedLayers=new L.layerGroup,this._tooltip=new L.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.remove.tooltip.text}),this._map.on("mousemove",this._onMouseMove,this))},removeHooks:function(){this._map&&(this._deletableLayers.eachLayer(this._disableLayerDelete,this),this._deletedLayers=null,this._tooltip.dispose(),this._tooltip=null,this._map.off("mousemove",this._onMouseMove,this))},revertLayers:function(){this._deletedLayers.eachLayer(function(t){this._deletableLayers.addLayer(t)},this)},save:function(){this._map.fire("draw:deleted",{layers:this._deletedLayers})},_enableLayerDelete:function(t){var e=t.layer||t.target||t;e.on("click",this._removeLayer,this)},_disableLayerDelete:function(t){var e=t.layer||t.target||t;e.off("click",this._removeLayer,this),this._deletedLayers.removeLayer(e)},_removeLayer:function(t){var e=t.layer||t.target||t;this._deletableLayers.removeLayer(e),this._deletedLayers.addLayer(e)},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_hasAvailableLayers:function(){return 0!==this._deletableLayers.getLayers().length}})}(window,document);
\ No newline at end of file
+ https://github.com/Leaflet/Leaflet.draw
+ http://leafletjs.com
+ */
+!function(t,e,i){function o(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}L.drawVersion="0.4.14",L.Draw={},L.drawLocal={draw:{toolbar:{actions:{title:"Cancel drawing",text:"Cancel"},finish:{title:"Finish drawing",text:"Finish"},undo:{title:"Delete last point drawn",text:"Delete last point"},buttons:{polyline:"Draw a polyline",polygon:"Draw a polygon",rectangle:"Draw a rectangle",circle:"Draw a circle",marker:"Draw a marker",circlemarker:"Draw a circlemarker"}},handlers:{circle:{tooltip:{start:"Click and drag to draw circle."},radius:"Radius"},circlemarker:{tooltip:{start:"Click map to place circle marker."}},marker:{tooltip:{start:"Click map to place marker."}},polygon:{tooltip:{start:"Click to start drawing shape.",cont:"Click to continue drawing shape.",end:"Click first point to close this shape."}},polyline:{error:"<strong>Error:</strong> shape edges cannot cross!",tooltip:{start:"Click to start drawing line.",cont:"Click to continue drawing line.",end:"Click last point to finish line."}},rectangle:{tooltip:{start:"Click and drag to draw rectangle."}},simpleshape:{tooltip:{end:"Release mouse to finish drawing."}}}},edit:{toolbar:{actions:{save:{title:"Save changes",text:"Save"},cancel:{title:"Cancel editing, discards all changes",text:"Cancel"},clearAll:{title:"Clear all layers",text:"Clear All"}},buttons:{edit:"Edit layers",editDisabled:"No layers to edit",remove:"Delete layers",removeDisabled:"No layers to delete"}},handlers:{edit:{tooltip:{text:"Drag handles or markers to edit features.",subtext:"Click cancel to undo changes."}},remove:{tooltip:{text:"Click on a feature to remove."}}}}},L.Draw.Event={},L.Draw.Event.CREATED="draw:created",L.Draw.Event.EDITED="draw:edited",L.Draw.Event.DELETED="draw:deleted",L.Draw.Event.DRAWSTART="draw:drawstart",L.Draw.Event.DRAWSTOP="draw:drawstop",L.Draw.Event.DRAWVERTEX="draw:drawvertex",L.Draw.Event.EDITSTART="draw:editstart",L.Draw.Event.EDITMOVE="draw:editmove",L.Draw.Event.EDITRESIZE="draw:editresize",L.Draw.Event.EDITVERTEX="draw:editvertex",L.Draw.Event.EDITSTOP="draw:editstop",L.Draw.Event.DELETESTART="draw:deletestart",L.Draw.Event.DELETESTOP="draw:deletestop",L.Draw.Event.TOOLBAROPENED="draw:toolbaropened",L.Draw.Event.TOOLBARCLOSED="draw:toolbarclosed",L.Draw.Event.MARKERCONTEXT="draw:markercontext",L.Draw=L.Draw||{},L.Draw.Feature=L.Handler.extend({initialize:function(t,e){this._map=t,this._container=t._container,this._overlayPane=t._panes.overlayPane,this._popupPane=t._panes.popupPane,e&&e.shapeOptions&&(e.shapeOptions=L.Util.extend({},this.options.shapeOptions,e.shapeOptions)),L.setOptions(this,e);var i=L.version.split(".");1===parseInt(i[0],10)&&parseInt(i[1],10)>=2?L.Draw.Feature.include(L.Evented.prototype):L.Draw.Feature.include(L.Mixin.Events)},enable:function(){this._enabled||(L.Handler.prototype.enable.call(this),this.fire("enabled",{handler:this.type}),this._map.fire(L.Draw.Event.DRAWSTART,{layerType:this.type}))},disable:function(){this._enabled&&(L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.DRAWSTOP,{layerType:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(L.DomUtil.disableTextSelection(),t.getContainer().focus(),this._tooltip=new L.Draw.Tooltip(this._map),L.DomEvent.on(this._container,"keyup",this._cancelDrawing,this))},removeHooks:function(){this._map&&(L.DomUtil.enableTextSelection(),this._tooltip.dispose(),this._tooltip=null,L.DomEvent.off(this._container,"keyup",this._cancelDrawing,this))},setOptions:function(t){L.setOptions(this,t)},_fireCreatedEvent:function(t){this._map.fire(L.Draw.Event.CREATED,{layer:t,layerType:this.type})},_cancelDrawing:function(t){27===t.keyCode&&(this._map.fire("draw:canceled",{layerType:this.type}),this.disable())}}),L.Draw.Polyline=L.Draw.Feature.extend({statics:{TYPE:"polyline"},Poly:L.Polyline,options:{allowIntersection:!0,repeatMode:!1,drawError:{color:"#b00b00",timeout:2500},icon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon"}),touchIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:"leaflet-div-icon leaflet-editing-icon leaflet-touch-icon"}),guidelineDistance:20,maxGuideLineLength:4e3,shapeOptions:{stroke:!0,color:"#3388ff",weight:4,opacity:.5,fill:!1,clickable:!0},metric:!0,feet:!0,nautic:!1,showLength:!0,zIndexOffset:2e3,factor:1,maxPoints:0},initialize:function(t,e){L.Browser.touch&&(this.options.icon=this.options.touchIcon),this.options.drawError.message=L.drawLocal.draw.handlers.polyline.error,e&&e.drawError&&(e.drawError=L.Util.extend({},this.options.drawError,e.drawError)),this.type=L.Draw.Polyline.TYPE,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._markers=[],this._markerGroup=new L.LayerGroup,this._map.addLayer(this._markerGroup),this._poly=new L.Polyline([],this.options.shapeOptions),this._tooltip.updateContent(this._getTooltipText()),this._mouseMarker||(this._mouseMarker=L.marker(this._map.getCenter(),{icon:L.divIcon({className:"leaflet-mouse-marker",iconAnchor:[20,20],iconSize:[40,40]}),opacity:0,zIndexOffset:this.options.zIndexOffset})),this._mouseMarker.on("mouseout",this._onMouseOut,this).on("mousemove",this._onMouseMove,this).on("mousedown",this._onMouseDown,this).on("mouseup",this._onMouseUp,this).addTo(this._map),this._map.on("mouseup",this._onMouseUp,this).on("mousemove",this._onMouseMove,this).on("zoomlevelschange",this._onZoomEnd,this).on("touchstart",this._onTouch,this).on("zoomend",this._onZoomEnd,this))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._clearHideErrorTimeout(),this._cleanUpShape(),this._map.removeLayer(this._markerGroup),delete this._markerGroup,delete this._markers,this._map.removeLayer(this._poly),delete this._poly,this._mouseMarker.off("mousedown",this._onMouseDown,this).off("mouseout",this._onMouseOut,this).off("mouseup",this._onMouseUp,this).off("mousemove",this._onMouseMove,this),this._map.removeLayer(this._mouseMarker),delete this._mouseMarker,this._clearGuides(),this._map.off("mouseup",this._onMouseUp,this).off("mousemove",this._onMouseMove,this).off("zoomlevelschange",this._onZoomEnd,this).off("zoomend",this._onZoomEnd,this).off("touchstart",this._onTouch,this).off("click",this._onTouch,this)},deleteLastVertex:function(){if(!(this._markers.length<=1)){var t=this._markers.pop(),e=this._poly,i=e.getLatLngs(),o=i.splice(-1,1)[0];this._poly.setLatLngs(i),this._markerGroup.removeLayer(t),e.getLatLngs().length<2&&this._map.removeLayer(e),this._vertexChanged(o,!1)}},addVertex:function(t){if(this._markers.length>=2&&!this.options.allowIntersection&&this._poly.newLatLngIntersects(t))return void this._showErrorTooltip();this._errorShown&&this._hideErrorTooltip(),this._markers.push(this._createMarker(t)),this._poly.addLatLng(t),2===this._poly.getLatLngs().length&&this._map.addLayer(this._poly),this._vertexChanged(t,!0)},completeShape:function(){this._markers.length<=1||(this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable())},_finishShape:function(){var t=this._poly._defaultShape?this._poly._defaultShape():this._poly.getLatLngs(),e=this._poly.newLatLngIntersects(t[t.length-1]);if(!this.options.allowIntersection&&e||!this._shapeIsValid())return void this._showErrorTooltip();this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()},_shapeIsValid:function(){return!0},_onZoomEnd:function(){null!==this._markers&&this._updateGuide()},_onMouseMove:function(t){var e=this._map.mouseEventToLayerPoint(t.originalEvent),i=this._map.layerPointToLatLng(e);this._currentLatLng=i,this._updateTooltip(i),this._updateGuide(e),this._mouseMarker.setLatLng(i),L.DomEvent.preventDefault(t.originalEvent)},_vertexChanged:function(t,e){this._map.fire(L.Draw.Event.DRAWVERTEX,{layers:this._markerGroup}),this._updateFinishHandler(),this._updateRunningMeasure(t,e),this._clearGuides(),this._updateTooltip()},_onMouseDown:function(t){if(!this._clickHandled&&!this._touchHandled&&!this._disableMarkers){this._onMouseMove(t),this._clickHandled=!0,this._disableNewMarkers();var e=t.originalEvent,i=e.clientX,o=e.clientY;this._startPoint.call(this,i,o)}},_startPoint:function(t,e){this._mouseDownOrigin=L.point(t,e)},_onMouseUp:function(t){var e=t.originalEvent,i=e.clientX,o=e.clientY;this._endPoint.call(this,i,o,t),this._clickHandled=null},_endPoint:function(e,i,o){if(this._mouseDownOrigin){var n=L.point(e,i).distanceTo(this._mouseDownOrigin),a=this._calculateFinishDistance(o.latlng);this.options.maxPoints>1&&this.options.maxPoints==this._markers.length+1?(this.addVertex(o.latlng),this._finishShape()):a<10&&L.Browser.touch?this._finishShape():Math.abs(n)<9*(t.devicePixelRatio||1)&&this.addVertex(o.latlng),this._enableNewMarkers()}this._mouseDownOrigin=null},_onTouch:function(t){var e,i,o=t.originalEvent;!o.touches||!o.touches[0]||this._clickHandled||this._touchHandled||this._disableMarkers||(e=o.touches[0].clientX,i=o.touches[0].clientY,this._disableNewMarkers(),this._touchHandled=!0,this._startPoint.call(this,e,i),this._endPoint.call(this,e,i,t),this._touchHandled=null),this._clickHandled=null},_onMouseOut:function(){this._tooltip&&this._tooltip._onMouseOut.call(this._tooltip)},_calculateFinishDistance:function(t){var e;if(this._markers.length>0){var i;if(this.type===L.Draw.Polyline.TYPE)i=this._markers[this._markers.length-1];else{if(this.type!==L.Draw.Polygon.TYPE)return 1/0;i=this._markers[0]}var o=this._map.latLngToContainerPoint(i.getLatLng()),n=new L.Marker(t,{icon:this.options.icon,zIndexOffset:2*this.options.zIndexOffset}),a=this._map.latLngToContainerPoint(n.getLatLng());e=o.distanceTo(a)}else e=1/0;return e},_updateFinishHandler:function(){var t=this._markers.length;t>1&&this._markers[t-1].on("click",this._finishShape,this),t>2&&this._markers[t-2].off("click",this._finishShape,this)},_createMarker:function(t){var e=new L.Marker(t,{icon:this.options.icon,zIndexOffset:2*this.options.zIndexOffset});return this._markerGroup.addLayer(e),e},_updateGuide:function(t){var e=this._markers?this._markers.length:0;e>0&&(t=t||this._map.latLngToLayerPoint(this._currentLatLng),this._clearGuides(),this._drawGuide(this._map.latLngToLayerPoint(this._markers[e-1].getLatLng()),t))},_updateTooltip:function(t){var e=this._getTooltipText();t&&this._tooltip.updatePosition(t),this._errorShown||this._tooltip.updateContent(e)},_drawGuide:function(t,e){var i,o,n,a=Math.floor(Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))),s=this.options.guidelineDistance,r=this.options.maxGuideLineLength,l=a>r?a-r:s;for(this._guidesContainer||(this._guidesContainer=L.DomUtil.create("div","leaflet-draw-guides",this._overlayPane));l<a;l+=this.options.guidelineDistance)i=l/a,o={x:Math.floor(t.x*(1-i)+i*e.x),y:Math.floor(t.y*(1-i)+i*e.y)},n=L.DomUtil.create("div","leaflet-draw-guide-dash",this._guidesContainer),n.style.backgroundColor=this._errorShown?this.options.drawError.color:this.options.shapeOptions.color,L.DomUtil.setPosition(n,o)},_updateGuideColor:function(t){if(this._guidesContainer)for(var e=0,i=this._guidesContainer.childNodes.length;e<i;e++)this._guidesContainer.childNodes[e].style.backgroundColor=t},_clearGuides:function(){if(this._guidesContainer)for(;this._guidesContainer.firstChild;)this._guidesContainer.removeChild(this._guidesContainer.firstChild)},_getTooltipText:function(){var t,e,i=this.options.showLength;return 0===this._markers.length?t={text:L.drawLocal.draw.handlers.polyline.tooltip.start}:(e=i?this._getMeasurementString():"",t=1===this._markers.length?{text:L.drawLocal.draw.handlers.polyline.tooltip.cont,subtext:e}:{text:L.drawLocal.draw.handlers.polyline.tooltip.end,subtext:e}),t},_updateRunningMeasure:function(t,e){var i,o,n=this._markers.length;1===this._markers.length?this._measurementRunningTotal=0:(i=n-(e?2:1),o=L.GeometryUtil.isVersion07x()?t.distanceTo(this._markers[i].getLatLng())*(this.options.factor||1):this._map.distance(t,this._markers[i].getLatLng())*(this.options.factor||1),this._measurementRunningTotal+=o*(e?1:-1))},_getMeasurementString:function(){var t,e=this._currentLatLng,i=this._markers[this._markers.length-1].getLatLng();return t=L.GeometryUtil.isVersion07x()?i&&e&&e.distanceTo?this._measurementRunningTotal+e.distanceTo(i)*(this.options.factor||1):this._measurementRunningTotal||0:i&&e?this._measurementRunningTotal+this._map.distance(e,i)*(this.options.factor||1):this._measurementRunningTotal||0,L.GeometryUtil.readableDistance(t,this.options.metric,this.options.feet,this.options.nautic,this.options.precision)},_showErrorTooltip:function(){this._errorShown=!0,this._tooltip.showAsError().updateContent({text:this.options.drawError.message}),this._updateGuideColor(this.options.drawError.color),this._poly.setStyle({color:this.options.drawError.color}),this._clearHideErrorTimeout(),this._hideErrorTimeout=setTimeout(L.Util.bind(this._hideErrorTooltip,this),this.options.drawError.timeout)},_hideErrorTooltip:function(){this._errorShown=!1,this._clearHideErrorTimeout(),this._tooltip.removeError().updateContent(this._getTooltipText()),this._updateGuideColor(this.options.shapeOptions.color),this._poly.setStyle({color:this.options.shapeOptions.color})},_clearHideErrorTimeout:function(){this._hideErrorTimeout&&(clearTimeout(this._hideErrorTimeout),this._hideErrorTimeout=null)},_disableNewMarkers:function(){this._disableMarkers=!0},_enableNewMarkers:function(){setTimeout(function(){this._disableMarkers=!1}.bind(this),50)},_cleanUpShape:function(){this._markers.length>1&&this._markers[this._markers.length-1].off("click",this._finishShape,this)},_fireCreatedEvent:function(){var t=new this.Poly(this._poly.getLatLngs(),this.options.shapeOptions);L.Draw.Feature.prototype._fireCreatedEvent.call(this,t)}}),L.Draw.Polygon=L.Draw.Polyline.extend({statics:{TYPE:"polygon"},Poly:L.Polygon,options:{showArea:!1,showLength:!1,shapeOptions:{stroke:!0,color:"#3388ff",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0},metric:!0,feet:!0,nautic:!1,precision:{}},initialize:function(t,e){L.Draw.Polyline.prototype.initialize.call(this,t,e),this.type=L.Draw.Polygon.TYPE},_updateFinishHandler:function(){var t=this._markers.length;1===t&&this._markers[0].on("click",this._finishShape,this),t>2&&(this._markers[t-1].on("dblclick",this._finishShape,this),t>3&&this._markers[t-2].off("dblclick",this._finishShape,this))},_getTooltipText:function(){var t,e;return 0===this._markers.length?t=L.drawLocal.draw.handlers.polygon.tooltip.start:this._markers.length<3?(t=L.drawLocal.draw.handlers.polygon.tooltip.cont,e=this._getMeasurementString()):(t=L.drawLocal.draw.handlers.polygon.tooltip.end,e=this._getMeasurementString()),{text:t,subtext:e}},_getMeasurementString:function(){var t=this._area,e="";return t||this.options.showLength?(this.options.showLength&&(e=L.Draw.Polyline.prototype._getMeasurementString.call(this)),t&&(e+="<br>"+L.GeometryUtil.readableArea(t,this.options.metric,this.options.precision)),e):null},_shapeIsValid:function(){return this._markers.length>=3},_vertexChanged:function(t,e){var i;!this.options.allowIntersection&&this.options.showArea&&(i=this._poly.getLatLngs(),this._area=L.GeometryUtil.geodesicArea(i)),L.Draw.Polyline.prototype._vertexChanged.call(this,t,e)},_cleanUpShape:function(){var t=this._markers.length;t>0&&(this._markers[0].off("click",this._finishShape,this),t>2&&this._markers[t-1].off("dblclick",this._finishShape,this))}}),L.SimpleShape={},L.Draw.SimpleShape=L.Draw.Feature.extend({options:{repeatMode:!1},initialize:function(t,e){this._endLabelText=L.drawLocal.draw.handlers.simpleshape.tooltip.end,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._mapDraggable=this._map.dragging.enabled(),this._mapDraggable&&this._map.dragging.disable(),this._container.style.cursor="crosshair",this._tooltip.updateContent({text:this._initialLabelText}),this._map.on("mousedown",this._onMouseDown,this).on("mousemove",this._onMouseMove,this).on("touchstart",this._onMouseDown,this).on("touchmove",this._onMouseMove,this),e.addEventListener("touchstart",L.DomEvent.preventDefault,{passive:!1}))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._map&&(this._mapDraggable&&this._map.dragging.enable(),this._container.style.cursor="",this._map.off("mousedown",this._onMouseDown,this).off("mousemove",this._onMouseMove,this).off("touchstart",this._onMouseDown,this).off("touchmove",this._onMouseMove,this),L.DomEvent.off(e,"mouseup",this._onMouseUp,this),L.DomEvent.off(e,"touchend",this._onMouseUp,this),e.removeEventListener("touchstart",L.DomEvent.preventDefault),this._shape&&(this._map.removeLayer(this._shape),delete this._shape)),this._isDrawing=!1},_getTooltipText:function(){return{text:this._endLabelText}},_onMouseDown:function(t){this._isDrawing=!0,this._startLatLng=t.latlng,L.DomEvent.on(e,"mouseup",this._onMouseUp,this).on(e,"touchend",this._onMouseUp,this).preventDefault(t.originalEvent)},_onMouseMove:function(t){var e=t.latlng;this._tooltip.updatePosition(e),this._isDrawing&&(this._tooltip.updateContent(this._getTooltipText()),this._drawShape(e))},_onMouseUp:function(){this._shape&&this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()}}),L.Draw.Rectangle=L.Draw.SimpleShape.extend({statics:{TYPE:"rectangle"},options:{shapeOptions:{stroke:!0,color:"#3388ff",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,showArea:!0,clickable:!0},metric:!0},initialize:function(t,e){this.type=L.Draw.Rectangle.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.rectangle.tooltip.start,L.Draw.SimpleShape.prototype.initialize.call(this,t,e)},disable:function(){this._enabled&&(this._isCurrentlyTwoClickDrawing=!1,L.Draw.SimpleShape.prototype.disable.call(this))},_onMouseUp:function(t){if(!this._shape&&!this._isCurrentlyTwoClickDrawing)return void(this._isCurrentlyTwoClickDrawing=!0);this._isCurrentlyTwoClickDrawing&&!o(t.target,"leaflet-pane")||L.Draw.SimpleShape.prototype._onMouseUp.call(this)},_drawShape:function(t){this._shape?this._shape.setBounds(new L.LatLngBounds(this._startLatLng,t)):(this._shape=new L.Rectangle(new L.LatLngBounds(this._startLatLng,t),this.options.shapeOptions),this._map.addLayer(this._shape))},_fireCreatedEvent:function(){var t=new L.Rectangle(this._shape.getBounds(),this.options.shapeOptions);L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this,t)},_getTooltipText:function(){var t,e,i,o=L.Draw.SimpleShape.prototype._getTooltipText.call(this),n=this._shape,a=this.options.showArea;return n&&(t=this._shape._defaultShape?this._shape._defaultShape():this._shape.getLatLngs(),e=L.GeometryUtil.geodesicArea(t),i=a?L.GeometryUtil.readableArea(e,this.options.metric):""),{text:o.text,subtext:i}}}),L.Draw.Marker=L.Draw.Feature.extend({statics:{TYPE:"marker"},options:{icon:new L.Icon.Default,repeatMode:!1,zIndexOffset:2e3},initialize:function(t,e){this.type=L.Draw.Marker.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.marker.tooltip.start,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._tooltip.updateContent({text:this._initialLabelText}),this._mouseMarker||(this._mouseMarker=L.marker(this._map.getCenter(),{icon:L.divIcon({className:"leaflet-mouse-marker",iconAnchor:[20,20],iconSize:[40,40]}),opacity:0,zIndexOffset:this.options.zIndexOffset})),this._mouseMarker.on("click",this._onClick,this).addTo(this._map),this._map.on("mousemove",this._onMouseMove,this),this._map.on("click",this._onTouch,this))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._map&&(this._map.off("click",this._onClick,this).off("click",this._onTouch,this),this._marker&&(this._marker.off("click",this._onClick,this),this._map.removeLayer(this._marker),delete this._marker),this._mouseMarker.off("click",this._onClick,this),this._map.removeLayer(this._mouseMarker),delete this._mouseMarker,this._map.off("mousemove",this._onMouseMove,this))},_onMouseMove:function(t){var e=t.latlng;this._tooltip.updatePosition(e),this._mouseMarker.setLatLng(e),this._marker?(e=this._mouseMarker.getLatLng(),this._marker.setLatLng(e)):(this._marker=this._createMarker(e),this._marker.on("click",this._onClick,this),this._map.on("click",this._onClick,this).addLayer(this._marker))},_createMarker:function(t){return new L.Marker(t,{icon:this.options.icon,zIndexOffset:this.options.zIndexOffset})},_onClick:function(){this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()},_onTouch:function(t){this._onMouseMove(t),this._onClick()},_fireCreatedEvent:function(){var t=new L.Marker.Touch(this._marker.getLatLng(),{icon:this.options.icon});L.Draw.Feature.prototype._fireCreatedEvent.call(this,t)}}),L.Draw.CircleMarker=L.Draw.Marker.extend({statics:{TYPE:"circlemarker"},options:{stroke:!0,color:"#3388ff",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0,zIndexOffset:2e3},initialize:function(t,e){this.type=L.Draw.CircleMarker.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.circlemarker.tooltip.start,L.Draw.Feature.prototype.initialize.call(this,t,e)},_fireCreatedEvent:function(){var t=new L.CircleMarker(this._marker.getLatLng(),this.options);L.Draw.Feature.prototype._fireCreatedEvent.call(this,t)},_createMarker:function(t){return new L.CircleMarker(t,this.options)}}),L.Draw.Circle=L.Draw.SimpleShape.extend({statics:{TYPE:"circle"},options:{shapeOptions:{stroke:!0,color:"#3388ff",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0},showRadius:!0,metric:!0,feet:!0,nautic:!1},initialize:function(t,e){this.type=L.Draw.Circle.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.circle.tooltip.start,L.Draw.SimpleShape.prototype.initialize.call(this,t,e)},_drawShape:function(t){if(L.GeometryUtil.isVersion07x())var e=this._startLatLng.distanceTo(t);else var e=this._map.distance(this._startLatLng,t);this._shape?this._shape.setRadius(e):(this._shape=new L.Circle(this._startLatLng,e,this.options.shapeOptions),this._map.addLayer(this._shape))},_fireCreatedEvent:function(){var t=new L.Circle(this._startLatLng,this._shape.getRadius(),this.options.shapeOptions);L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this,t)},_onMouseMove:function(t){var e,i=t.latlng,o=this.options.showRadius,n=this.options.metric;if(this._tooltip.updatePosition(i),this._isDrawing){this._drawShape(i),e=this._shape.getRadius().toFixed(1);var a="";o&&(a=L.drawLocal.draw.handlers.circle.radius+": "+L.GeometryUtil.readableDistance(e,n,this.options.feet,this.options.nautic)),this._tooltip.updateContent({text:this._endLabelText,subtext:a})}}}),L.Edit=L.Edit||{},L.Edit.Marker=L.Handler.extend({initialize:function(t,e){this._marker=t,L.setOptions(this,e)},addHooks:function(){var t=this._marker;t.dragging.enable(),t.on("dragend",this._onDragEnd,t),this._toggleMarkerHighlight()},removeHooks:function(){var t=this._marker;t.dragging.disable(),t.off("dragend",this._onDragEnd,t),this._toggleMarkerHighlight()},_onDragEnd:function(t){var e=t.target;e.edited=!0,this._map.fire(L.Draw.Event.EDITMOVE,{layer:e})},_toggleMarkerHighlight:function(){var t=this._marker._icon;t&&(t.style.display="none",L.DomUtil.hasClass(t,"leaflet-edit-marker-selected")?(L.DomUtil.removeClass(t,"leaflet-edit-marker-selected"),this._offsetMarker(t,-4)):(L.DomUtil.addClass(t,"leaflet-edit-marker-selected"),this._offsetMarker(t,4)),t.style.display="")},_offsetMarker:function(t,e){var i=parseInt(t.style.marginTop,10)-e,o=parseInt(t.style.marginLeft,10)-e;t.style.marginTop=i+"px",t.style.marginLeft=o+"px"}}),L.Marker.addInitHook(function(){L.Edit.Marker&&(this.editing=new L.Edit.Marker(this),this.options.editable&&this.editing.enable())}),L.Edit=L.Edit||{},L.Edit.Poly=L.Handler.extend({initialize:function(t){this.latlngs=[t._latlngs],t._holes&&(this.latlngs=this.latlngs.concat(t._holes)),this._poly=t,this._poly.on("revert-edited",this._updateLatLngs,this)},_defaultShape:function(){return L.Polyline._flat?L.Polyline._flat(this._poly._latlngs)?this._poly._latlngs:this._poly._latlngs[0]:this._poly._latlngs},_eachVertexHandler:function(t){for(var e=0;e<this._verticesHandlers.length;e++)t(this._verticesHandlers[e])},addHooks:function(){this._initHandlers(),this._eachVertexHandler(function(t){t.addHooks()})},removeHooks:function(){this._eachVertexHandler(function(t){t.removeHooks()})},updateMarkers:function(){this._eachVertexHandler(function(t){t.updateMarkers()})},_initHandlers:function(){this._verticesHandlers=[];for(var t=0;t<this.latlngs.length;t++)this._verticesHandlers.push(new L.Edit.PolyVerticesEdit(this._poly,this.latlngs[t],this._poly.options.poly))},_updateLatLngs:function(t){this.latlngs=[t.layer._latlngs],t.layer._holes&&(this.latlngs=this.latlngs.concat(t.layer._holes))}}),L.Edit.PolyVerticesEdit=L.Handler.extend({options:{icon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon"}),touchIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:"leaflet-div-icon leaflet-editing-icon leaflet-touch-icon"}),drawError:{color:"#b00b00",timeout:1e3}},initialize:function(t,e,i){L.Browser.touch&&(this.options.icon=this.options.touchIcon),this._poly=t,i&&i.drawError&&(i.drawError=L.Util.extend({},this.options.drawError,i.drawError)),this._latlngs=e,L.setOptions(this,i)},_defaultShape:function(){return L.Polyline._flat?L.Polyline._flat(this._latlngs)?this._latlngs:this._latlngs[0]:this._latlngs},addHooks:function(){var t=this._poly,e=t._path;t instanceof L.Polygon||(t.options.fill=!1,t.options.editing&&(t.options.editing.fill=!1)),e&&t.options.editing.className&&(t.options.original.className&&t.options.original.className.split(" ").forEach(function(t){L.DomUtil.removeClass(e,t)}),t.options.editing.className.split(" ").forEach(function(t){L.DomUtil.addClass(e,t)})),t.setStyle(t.options.editing),this._poly._map&&(this._map=this._poly._map,this._markerGroup||this._initMarkers(),this._poly._map.addLayer(this._markerGroup))},removeHooks:function(){var t=this._poly,e=t._path;e&&t.options.editing.className&&(t.options.editing.className.split(" ").forEach(function(t){L.DomUtil.removeClass(e,t)}),t.options.original.className&&t.options.original.className.split(" ").forEach(function(t){L.DomUtil.addClass(e,t)})),t.setStyle(t.options.original),t._map&&(t._map.removeLayer(this._markerGroup),delete this._markerGroup,delete this._markers)},updateMarkers:function(){this._markerGroup.clearLayers(),this._initMarkers()},_initMarkers:function(){this._markerGroup||(this._markerGroup=new L.LayerGroup),this._markers=[];var t,e,i,o,n=this._defaultShape();for(t=0,i=n.length;t<i;t++)o=this._createMarker(n[t],t),o.on("click",this._onMarkerClick,this),o.on("contextmenu",this._onContextMenu,this),this._markers.push(o);var a,s;for(t=0,e=i-1;t<i;e=t++)(0!==t||L.Polygon&&this._poly instanceof L.Polygon)&&(a=this._markers[e],s=this._markers[t],this._createMiddleMarker(a,s),this._updatePrevNext(a,s))},_createMarker:function(t,e){var i=new L.Marker.Touch(t,{draggable:!0,icon:this.options.icon});return i._origLatLng=t,i._index=e,i.on("dragstart",this._onMarkerDragStart,this).on("drag",this._onMarkerDrag,this).on("dragend",this._fireEdit,this).on("touchmove",this._onTouchMove,this).on("touchend",this._fireEdit,this).on("MSPointerMove",this._onTouchMove,this).on("MSPointerUp",this._fireEdit,this),this._markerGroup.addLayer(i),i},_onMarkerDragStart:function(){this._poly.fire("editstart")},_spliceLatLngs:function(){var t=this._defaultShape(),e=[].splice.apply(t,arguments);return this._poly._convertLatLngs(t,!0),this._poly.redraw(),e},_removeMarker:function(t){var e=t._index;this._markerGroup.removeLayer(t),this._markers.splice(e,1),this._spliceLatLngs(e,1),this._updateIndexes(e,-1),t.off("dragstart",this._onMarkerDragStart,this).off("drag",this._onMarkerDrag,this).off("dragend",this._fireEdit,this).off("touchmove",this._onMarkerDrag,this).off("touchend",this._fireEdit,this).off("click",this._onMarkerClick,this).off("MSPointerMove",this._onTouchMove,this).off("MSPointerUp",this._fireEdit,this)},_fireEdit:function(){this._poly.edited=!0,this._poly.fire("edit"),this._poly._map.fire(L.Draw.Event.EDITVERTEX,{layers:this._markerGroup,poly:this._poly})},_onMarkerDrag:function(t){var e=t.target,i=this._poly;if(L.extend(e._origLatLng,e._latlng),e._middleLeft&&e._middleLeft.setLatLng(this._getMiddleLatLng(e._prev,e)),e._middleRight&&e._middleRight.setLatLng(this._getMiddleLatLng(e,e._next)),i.options.poly){var o=i._map._editTooltip;if(!i.options.poly.allowIntersection&&i.intersects()){var n=i.options.color;i.setStyle({color:this.options.drawError.color}),0!==L.version.indexOf("0.7")&&e.dragging._draggable._onUp(t),this._onMarkerClick(t),o&&o.updateContent({text:L.drawLocal.draw.handlers.polyline.error}),setTimeout(function(){i.setStyle({color:n}),o&&o.updateContent({text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext})},1e3)}}this._poly._bounds._southWest=L.latLng(1/0,1/0),this._poly._bounds._northEast=L.latLng(-1/0,-1/0);var a=this._poly.getLatLngs();this._poly._convertLatLngs(a,!0),this._poly.redraw(),this._poly.fire("editdrag")},_onMarkerClick:function(t){var e=L.Polygon&&this._poly instanceof L.Polygon?4:3,i=t.target;this._defaultShape().length<e||(this._removeMarker(i),this._updatePrevNext(i._prev,i._next),i._middleLeft&&this._markerGroup.removeLayer(i._middleLeft),i._middleRight&&this._markerGroup.removeLayer(i._middleRight),i._prev&&i._next?this._createMiddleMarker(i._prev,i._next):i._prev?i._next||(i._prev._middleRight=null):i._next._middleLeft=null,this._fireEdit())},_onContextMenu:function(t){var e=t.target;this._poly;this._poly._map.fire(L.Draw.Event.MARKERCONTEXT,{marker:e,layers:this._markerGroup,poly:this._poly}),L.DomEvent.stopPropagation},_onTouchMove:function(t){var e=this._map.mouseEventToLayerPoint(t.originalEvent.touches[0]),i=this._map.layerPointToLatLng(e),o=t.target;L.extend(o._origLatLng,i),o._middleLeft&&o._middleLeft.setLatLng(this._getMiddleLatLng(o._prev,o)),o._middleRight&&o._middleRight.setLatLng(this._getMiddleLatLng(o,o._next)),this._poly.redraw(),this.updateMarkers()},_updateIndexes:function(t,e){this._markerGroup.eachLayer(function(i){i._index>t&&(i._index+=e)})},_createMiddleMarker:function(t,e){var i,o,n,a=this._getMiddleLatLng(t,e),s=this._createMarker(a);s.setOpacity(.6),t._middleRight=e._middleLeft=s,o=function(){s.off("touchmove",o,this);var n=e._index;s._index=n,s.off("click",i,this).on("click",this._onMarkerClick,this),a.lat=s.getLatLng().lat,a.lng=s.getLatLng().lng,this._spliceLatLngs(n,0,a),this._markers.splice(n,0,s),s.setOpacity(1),this._updateIndexes(n,1),e._index++,this._updatePrevNext(t,s),this._updatePrevNext(s,e),this._poly.fire("editstart")},n=function(){s.off("dragstart",o,this),s.off("dragend",n,this),s.off("touchmove",o,this),this._createMiddleMarker(t,s),this._createMiddleMarker(s,e)},i=function(){o.call(this),n.call(this),this._fireEdit()},s.on("click",i,this).on("dragstart",o,this).on("dragend",n,this).on("touchmove",o,this),this._markerGroup.addLayer(s)},_updatePrevNext:function(t,e){t&&(t._next=e),e&&(e._prev=t)},_getMiddleLatLng:function(t,e){var i=this._poly._map,o=i.project(t.getLatLng()),n=i.project(e.getLatLng());return i.unproject(o._add(n)._divideBy(2))}}),L.Polyline.addInitHook(function(){this.editing||(L.Edit.Poly&&(this.editing=new L.Edit.Poly(this),this.options.editable&&this.editing.enable()),this.on("add",function(){this.editing&&this.editing.enabled()&&this.editing.addHooks()}),this.on("remove",function(){this.editing&&this.editing.enabled()&&this.editing.removeHooks()}))}),L.Edit=L.Edit||{},L.Edit.SimpleShape=L.Handler.extend({options:{moveIcon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon leaflet-edit-move"}),resizeIcon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon leaflet-edit-resize"}),touchMoveIcon:new L.DivIcon({
+iconSize:new L.Point(20,20),className:"leaflet-div-icon leaflet-editing-icon leaflet-edit-move leaflet-touch-icon"}),touchResizeIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:"leaflet-div-icon leaflet-editing-icon leaflet-edit-resize leaflet-touch-icon"})},initialize:function(t,e){L.Browser.touch&&(this.options.moveIcon=this.options.touchMoveIcon,this.options.resizeIcon=this.options.touchResizeIcon),this._shape=t,L.Util.setOptions(this,e)},addHooks:function(){var t=this._shape;this._shape._map&&(this._map=this._shape._map,t.setStyle(t.options.editing),t._map&&(this._map=t._map,this._markerGroup||this._initMarkers(),this._map.addLayer(this._markerGroup)))},removeHooks:function(){var t=this._shape;if(t.setStyle(t.options.original),t._map){this._unbindMarker(this._moveMarker);for(var e=0,i=this._resizeMarkers.length;e<i;e++)this._unbindMarker(this._resizeMarkers[e]);this._resizeMarkers=null,this._map.removeLayer(this._markerGroup),delete this._markerGroup}this._map=null},updateMarkers:function(){this._markerGroup.clearLayers(),this._initMarkers()},_initMarkers:function(){this._markerGroup||(this._markerGroup=new L.LayerGroup),this._createMoveMarker(),this._createResizeMarker()},_createMoveMarker:function(){},_createResizeMarker:function(){},_createMarker:function(t,e){var i=new L.Marker.Touch(t,{draggable:!0,icon:e,zIndexOffset:10});return this._bindMarker(i),this._markerGroup.addLayer(i),i},_bindMarker:function(t){t.on("dragstart",this._onMarkerDragStart,this).on("drag",this._onMarkerDrag,this).on("dragend",this._onMarkerDragEnd,this).on("touchstart",this._onTouchStart,this).on("touchmove",this._onTouchMove,this).on("MSPointerMove",this._onTouchMove,this).on("touchend",this._onTouchEnd,this).on("MSPointerUp",this._onTouchEnd,this)},_unbindMarker:function(t){t.off("dragstart",this._onMarkerDragStart,this).off("drag",this._onMarkerDrag,this).off("dragend",this._onMarkerDragEnd,this).off("touchstart",this._onTouchStart,this).off("touchmove",this._onTouchMove,this).off("MSPointerMove",this._onTouchMove,this).off("touchend",this._onTouchEnd,this).off("MSPointerUp",this._onTouchEnd,this)},_onMarkerDragStart:function(t){t.target.setOpacity(0),this._shape.fire("editstart")},_fireEdit:function(){this._shape.edited=!0,this._shape.fire("edit")},_onMarkerDrag:function(t){var e=t.target,i=e.getLatLng();e===this._moveMarker?this._move(i):this._resize(i),this._shape.redraw(),this._shape.fire("editdrag")},_onMarkerDragEnd:function(t){t.target.setOpacity(1),this._fireEdit()},_onTouchStart:function(t){if(L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this,t),"function"==typeof this._getCorners){var e=this._getCorners(),i=t.target,o=i._cornerIndex;i.setOpacity(0),this._oppositeCorner=e[(o+2)%4],this._toggleCornerMarkers(0,o)}this._shape.fire("editstart")},_onTouchMove:function(t){var e=this._map.mouseEventToLayerPoint(t.originalEvent.touches[0]),i=this._map.layerPointToLatLng(e);return t.target===this._moveMarker?this._move(i):this._resize(i),this._shape.redraw(),!1},_onTouchEnd:function(t){t.target.setOpacity(1),this.updateMarkers(),this._fireEdit()},_move:function(){},_resize:function(){}}),L.Edit=L.Edit||{},L.Edit.Rectangle=L.Edit.SimpleShape.extend({_createMoveMarker:function(){var t=this._shape.getBounds(),e=t.getCenter();this._moveMarker=this._createMarker(e,this.options.moveIcon)},_createResizeMarker:function(){var t=this._getCorners();this._resizeMarkers=[];for(var e=0,i=t.length;e<i;e++)this._resizeMarkers.push(this._createMarker(t[e],this.options.resizeIcon)),this._resizeMarkers[e]._cornerIndex=e},_onMarkerDragStart:function(t){L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this,t);var e=this._getCorners(),i=t.target,o=i._cornerIndex;this._oppositeCorner=e[(o+2)%4],this._toggleCornerMarkers(0,o)},_onMarkerDragEnd:function(t){var e,i,o=t.target;o===this._moveMarker&&(e=this._shape.getBounds(),i=e.getCenter(),o.setLatLng(i)),this._toggleCornerMarkers(1),this._repositionCornerMarkers(),L.Edit.SimpleShape.prototype._onMarkerDragEnd.call(this,t)},_move:function(t){for(var e,i=this._shape._defaultShape?this._shape._defaultShape():this._shape.getLatLngs(),o=this._shape.getBounds(),n=o.getCenter(),a=[],s=0,r=i.length;s<r;s++)e=[i[s].lat-n.lat,i[s].lng-n.lng],a.push([t.lat+e[0],t.lng+e[1]]);this._shape.setLatLngs(a),this._repositionCornerMarkers(),this._map.fire(L.Draw.Event.EDITMOVE,{layer:this._shape})},_resize:function(t){var e;this._shape.setBounds(L.latLngBounds(t,this._oppositeCorner)),e=this._shape.getBounds(),this._moveMarker.setLatLng(e.getCenter()),this._map.fire(L.Draw.Event.EDITRESIZE,{layer:this._shape})},_getCorners:function(){var t=this._shape.getBounds();return[t.getNorthWest(),t.getNorthEast(),t.getSouthEast(),t.getSouthWest()]},_toggleCornerMarkers:function(t){for(var e=0,i=this._resizeMarkers.length;e<i;e++)this._resizeMarkers[e].setOpacity(t)},_repositionCornerMarkers:function(){for(var t=this._getCorners(),e=0,i=this._resizeMarkers.length;e<i;e++)this._resizeMarkers[e].setLatLng(t[e])}}),L.Rectangle.addInitHook(function(){L.Edit.Rectangle&&(this.editing=new L.Edit.Rectangle(this),this.options.editable&&this.editing.enable())}),L.Edit=L.Edit||{},L.Edit.CircleMarker=L.Edit.SimpleShape.extend({_createMoveMarker:function(){var t=this._shape.getLatLng();this._moveMarker=this._createMarker(t,this.options.moveIcon)},_createResizeMarker:function(){this._resizeMarkers=[]},_move:function(t){if(this._resizeMarkers.length){var e=this._getResizeMarkerPoint(t);this._resizeMarkers[0].setLatLng(e)}this._shape.setLatLng(t),this._map.fire(L.Draw.Event.EDITMOVE,{layer:this._shape})}}),L.CircleMarker.addInitHook(function(){L.Edit.CircleMarker&&(this.editing=new L.Edit.CircleMarker(this),this.options.editable&&this.editing.enable()),this.on("add",function(){this.editing&&this.editing.enabled()&&this.editing.addHooks()}),this.on("remove",function(){this.editing&&this.editing.enabled()&&this.editing.removeHooks()})}),L.Edit=L.Edit||{},L.Edit.Circle=L.Edit.CircleMarker.extend({_createResizeMarker:function(){var t=this._shape.getLatLng(),e=this._getResizeMarkerPoint(t);this._resizeMarkers=[],this._resizeMarkers.push(this._createMarker(e,this.options.resizeIcon))},_getResizeMarkerPoint:function(t){var e=this._shape._radius*Math.cos(Math.PI/4),i=this._map.project(t);return this._map.unproject([i.x+e,i.y-e])},_resize:function(t){var e=this._moveMarker.getLatLng();L.GeometryUtil.isVersion07x()?radius=e.distanceTo(t):radius=this._map.distance(e,t),this._shape.setRadius(radius),this._map._editTooltip.updateContent({text:L.drawLocal.edit.handlers.edit.tooltip.subtext+"<br />"+L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.draw.handlers.circle.radius+": "+L.GeometryUtil.readableDistance(radius,!0,this.options.feet,this.options.nautic)}),this._shape.setRadius(radius),this._map.fire(L.Draw.Event.EDITRESIZE,{layer:this._shape})}}),L.Circle.addInitHook(function(){L.Edit.Circle&&(this.editing=new L.Edit.Circle(this),this.options.editable&&this.editing.enable()),this.on("add",function(){this.editing&&this.editing.enabled()&&this.editing.addHooks()}),this.on("remove",function(){this.editing&&this.editing.enabled()&&this.editing.removeHooks()})}),L.Map.mergeOptions({touchExtend:!0}),L.Map.TouchExtend=L.Handler.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane},addHooks:function(){L.DomEvent.on(this._container,"touchstart",this._onTouchStart,this),L.DomEvent.on(this._container,"touchend",this._onTouchEnd,this),L.DomEvent.on(this._container,"touchmove",this._onTouchMove,this),this._detectIE()?(L.DomEvent.on(this._container,"MSPointerDown",this._onTouchStart,this),L.DomEvent.on(this._container,"MSPointerUp",this._onTouchEnd,this),L.DomEvent.on(this._container,"MSPointerMove",this._onTouchMove,this),L.DomEvent.on(this._container,"MSPointerCancel",this._onTouchCancel,this)):(L.DomEvent.on(this._container,"touchcancel",this._onTouchCancel,this),L.DomEvent.on(this._container,"touchleave",this._onTouchLeave,this))},removeHooks:function(){L.DomEvent.off(this._container,"touchstart",this._onTouchStart),L.DomEvent.off(this._container,"touchend",this._onTouchEnd),L.DomEvent.off(this._container,"touchmove",this._onTouchMove),this._detectIE()?(L.DomEvent.off(this._container,"MSPointerDowm",this._onTouchStart),L.DomEvent.off(this._container,"MSPointerUp",this._onTouchEnd),L.DomEvent.off(this._container,"MSPointerMove",this._onTouchMove),L.DomEvent.off(this._container,"MSPointerCancel",this._onTouchCancel)):(L.DomEvent.off(this._container,"touchcancel",this._onTouchCancel),L.DomEvent.off(this._container,"touchleave",this._onTouchLeave))},_touchEvent:function(t,e){var i={};if(void 0!==t.touches){if(!t.touches.length)return;i=t.touches[0]}else{if("touch"!==t.pointerType)return;if(i=t,!this._filterClick(t))return}var o=this._map.mouseEventToContainerPoint(i),n=this._map.mouseEventToLayerPoint(i),a=this._map.layerPointToLatLng(n);this._map.fire(e,{latlng:a,layerPoint:n,containerPoint:o,pageX:i.pageX,pageY:i.pageY,originalEvent:t})},_filterClick:function(t){var e=t.timeStamp||t.originalEvent.timeStamp,i=L.DomEvent._lastClick&&e-L.DomEvent._lastClick;return i&&i>100&&i<500||t.target._simulatedClick&&!t._simulated?(L.DomEvent.stop(t),!1):(L.DomEvent._lastClick=e,!0)},_onTouchStart:function(t){if(this._map._loaded){this._touchEvent(t,"touchstart")}},_onTouchEnd:function(t){if(this._map._loaded){this._touchEvent(t,"touchend")}},_onTouchCancel:function(t){if(this._map._loaded){var e="touchcancel";this._detectIE()&&(e="pointercancel"),this._touchEvent(t,e)}},_onTouchLeave:function(t){if(this._map._loaded){this._touchEvent(t,"touchleave")}},_onTouchMove:function(t){if(this._map._loaded){this._touchEvent(t,"touchmove")}},_detectIE:function(){var e=t.navigator.userAgent,i=e.indexOf("MSIE ");if(i>0)return parseInt(e.substring(i+5,e.indexOf(".",i)),10);if(e.indexOf("Trident/")>0){var o=e.indexOf("rv:");return parseInt(e.substring(o+3,e.indexOf(".",o)),10)}var n=e.indexOf("Edge/");return n>0&&parseInt(e.substring(n+5,e.indexOf(".",n)),10)}}),L.Map.addInitHook("addHandler","touchExtend",L.Map.TouchExtend),L.Marker.Touch=L.Marker.extend({_initInteraction:function(){return this.addInteractiveTarget?L.Marker.prototype._initInteraction.apply(this):this._initInteractionLegacy()},_initInteractionLegacy:function(){if(this.options.clickable){var t=this._icon,e=["dblclick","mousedown","mouseover","mouseout","contextmenu","touchstart","touchend","touchmove"];this._detectIE?e.concat(["MSPointerDown","MSPointerUp","MSPointerMove","MSPointerCancel"]):e.concat(["touchcancel"]),L.DomUtil.addClass(t,"leaflet-clickable"),L.DomEvent.on(t,"click",this._onMouseClick,this),L.DomEvent.on(t,"keypress",this._onKeyPress,this);for(var i=0;i<e.length;i++)L.DomEvent.on(t,e[i],this._fireMouseEvent,this);L.Handler.MarkerDrag&&(this.dragging=new L.Handler.MarkerDrag(this),this.options.draggable&&this.dragging.enable())}},_detectIE:function(){var e=t.navigator.userAgent,i=e.indexOf("MSIE ");if(i>0)return parseInt(e.substring(i+5,e.indexOf(".",i)),10);if(e.indexOf("Trident/")>0){var o=e.indexOf("rv:");return parseInt(e.substring(o+3,e.indexOf(".",o)),10)}var n=e.indexOf("Edge/");return n>0&&parseInt(e.substring(n+5,e.indexOf(".",n)),10)}}),L.LatLngUtil={cloneLatLngs:function(t){for(var e=[],i=0,o=t.length;i<o;i++)Array.isArray(t[i])?e.push(L.LatLngUtil.cloneLatLngs(t[i])):e.push(this.cloneLatLng(t[i]));return e},cloneLatLng:function(t){return L.latLng(t.lat,t.lng)}},function(){var t={km:2,ha:2,m:0,mi:2,ac:2,yd:0,ft:0,nm:2};L.GeometryUtil=L.extend(L.GeometryUtil||{},{geodesicArea:function(t){var e,i,o=t.length,n=0,a=Math.PI/180;if(o>2){for(var s=0;s<o;s++)e=t[s],i=t[(s+1)%o],n+=(i.lng-e.lng)*a*(2+Math.sin(e.lat*a)+Math.sin(i.lat*a));n=6378137*n*6378137/2}return Math.abs(n)},formattedNumber:function(t,e){var i=parseFloat(t).toFixed(e),o=L.drawLocal.format&&L.drawLocal.format.numeric,n=o&&o.delimiters,a=n&&n.thousands,s=n&&n.decimal;if(a||s){var r=i.split(".");i=a?r[0].replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+a):r[0],s=s||".",r.length>1&&(i=i+s+r[1])}return i},readableArea:function(e,i,o){var n,a,o=L.Util.extend({},t,o);return i?(a=["ha","m"],type=typeof i,"string"===type?a=[i]:"boolean"!==type&&(a=i),n=e>=1e6&&-1!==a.indexOf("km")?L.GeometryUtil.formattedNumber(1e-6*e,o.km)+" km²":e>=1e4&&-1!==a.indexOf("ha")?L.GeometryUtil.formattedNumber(1e-4*e,o.ha)+" ha":L.GeometryUtil.formattedNumber(e,o.m)+" m²"):(e/=.836127,n=e>=3097600?L.GeometryUtil.formattedNumber(e/3097600,o.mi)+" mi²":e>=4840?L.GeometryUtil.formattedNumber(e/4840,o.ac)+" acres":L.GeometryUtil.formattedNumber(e,o.yd)+" yd²"),n},readableDistance:function(e,i,o,n,a){var s,a=L.Util.extend({},t,a);switch(i?"string"==typeof i?i:"metric":o?"feet":n?"nauticalMile":"yards"){case"metric":s=e>1e3?L.GeometryUtil.formattedNumber(e/1e3,a.km)+" km":L.GeometryUtil.formattedNumber(e,a.m)+" m";break;case"feet":e*=3.28083,s=L.GeometryUtil.formattedNumber(e,a.ft)+" ft";break;case"nauticalMile":e*=.53996,s=L.GeometryUtil.formattedNumber(e/1e3,a.nm)+" nm";break;case"yards":default:e*=1.09361,s=e>1760?L.GeometryUtil.formattedNumber(e/1760,a.mi)+" miles":L.GeometryUtil.formattedNumber(e,a.yd)+" yd"}return s},isVersion07x:function(){var t=L.version.split(".");return 0===parseInt(t[0],10)&&7===parseInt(t[1],10)}})}(),L.Util.extend(L.LineUtil,{segmentsIntersect:function(t,e,i,o){return this._checkCounterclockwise(t,i,o)!==this._checkCounterclockwise(e,i,o)&&this._checkCounterclockwise(t,e,i)!==this._checkCounterclockwise(t,e,o)},_checkCounterclockwise:function(t,e,i){return(i.y-t.y)*(e.x-t.x)>(e.y-t.y)*(i.x-t.x)}}),L.Polyline.include({intersects:function(){var t,e,i,o=this._getProjectedPoints(),n=o?o.length:0;if(this._tooFewPointsForIntersection())return!1;for(t=n-1;t>=3;t--)if(e=o[t-1],i=o[t],this._lineSegmentsIntersectsRange(e,i,t-2))return!0;return!1},newLatLngIntersects:function(t,e){return!!this._map&&this.newPointIntersects(this._map.latLngToLayerPoint(t),e)},newPointIntersects:function(t,e){var i=this._getProjectedPoints(),o=i?i.length:0,n=i?i[o-1]:null,a=o-2;return!this._tooFewPointsForIntersection(1)&&this._lineSegmentsIntersectsRange(n,t,a,e?1:0)},_tooFewPointsForIntersection:function(t){var e=this._getProjectedPoints(),i=e?e.length:0;return i+=t||0,!e||i<=3},_lineSegmentsIntersectsRange:function(t,e,i,o){var n,a,s=this._getProjectedPoints();o=o||0;for(var r=i;r>o;r--)if(n=s[r-1],a=s[r],L.LineUtil.segmentsIntersect(t,e,n,a))return!0;return!1},_getProjectedPoints:function(){if(!this._defaultShape)return this._originalPoints;for(var t=[],e=this._defaultShape(),i=0;i<e.length;i++)t.push(this._map.latLngToLayerPoint(e[i]));return t}}),L.Polygon.include({intersects:function(){var t,e,i,o,n=this._getProjectedPoints();return!this._tooFewPointsForIntersection()&&(!!L.Polyline.prototype.intersects.call(this)||(t=n.length,e=n[0],i=n[t-1],o=t-2,this._lineSegmentsIntersectsRange(i,e,o,1)))}}),L.Control.Draw=L.Control.extend({options:{position:"topleft",draw:{},edit:!1},initialize:function(t){if(L.version<"0.7")throw new Error("Leaflet.draw 0.2.3+ requires Leaflet 0.7.0+. Download latest from https://github.com/Leaflet/Leaflet/");L.Control.prototype.initialize.call(this,t);var e;this._toolbars={},L.DrawToolbar&&this.options.draw&&(e=new L.DrawToolbar(this.options.draw),this._toolbars[L.DrawToolbar.TYPE]=e,this._toolbars[L.DrawToolbar.TYPE].on("enable",this._toolbarEnabled,this)),L.EditToolbar&&this.options.edit&&(e=new L.EditToolbar(this.options.edit),this._toolbars[L.EditToolbar.TYPE]=e,this._toolbars[L.EditToolbar.TYPE].on("enable",this._toolbarEnabled,this)),L.toolbar=this},onAdd:function(t){var e,i=L.DomUtil.create("div","leaflet-draw"),o=!1;for(var n in this._toolbars)this._toolbars.hasOwnProperty(n)&&(e=this._toolbars[n].addToolbar(t))&&(o||(L.DomUtil.hasClass(e,"leaflet-draw-toolbar-top")||L.DomUtil.addClass(e.childNodes[0],"leaflet-draw-toolbar-top"),o=!0),i.appendChild(e));return i},onRemove:function(){for(var t in this._toolbars)this._toolbars.hasOwnProperty(t)&&this._toolbars[t].removeToolbar()},setDrawingOptions:function(t){for(var e in this._toolbars)this._toolbars[e]instanceof L.DrawToolbar&&this._toolbars[e].setOptions(t)},_toolbarEnabled:function(t){var e=t.target;for(var i in this._toolbars)this._toolbars[i]!==e&&this._toolbars[i].disable()}}),L.Map.mergeOptions({drawControlTooltips:!0,drawControl:!1}),L.Map.addInitHook(function(){this.options.drawControl&&(this.drawControl=new L.Control.Draw,this.addControl(this.drawControl))}),L.Toolbar=L.Class.extend({initialize:function(t){L.setOptions(this,t),this._modes={},this._actionButtons=[],this._activeMode=null;var e=L.version.split(".");1===parseInt(e[0],10)&&parseInt(e[1],10)>=2?L.Toolbar.include(L.Evented.prototype):L.Toolbar.include(L.Mixin.Events)},enabled:function(){return null!==this._activeMode},disable:function(){this.enabled()&&this._activeMode.handler.disable()},addToolbar:function(t){var e,i=L.DomUtil.create("div","leaflet-draw-section"),o=0,n=this._toolbarClass||"",a=this.getModeHandlers(t);for(this._toolbarContainer=L.DomUtil.create("div","leaflet-draw-toolbar leaflet-bar"),this._map=t,e=0;e<a.length;e++)a[e].enabled&&this._initModeHandler(a[e].handler,this._toolbarContainer,o++,n,a[e].title);if(o)return this._lastButtonIndex=--o,this._actionsContainer=L.DomUtil.create("ul","leaflet-draw-actions"),i.appendChild(this._toolbarContainer),i.appendChild(this._actionsContainer),i},removeToolbar:function(){for(var t in this._modes)this._modes.hasOwnProperty(t)&&(this._disposeButton(this._modes[t].button,this._modes[t].handler.enable,this._modes[t].handler),this._modes[t].handler.disable(),this._modes[t].handler.off("enabled",this._handlerActivated,this).off("disabled",this._handlerDeactivated,this));this._modes={};for(var e=0,i=this._actionButtons.length;e<i;e++)this._disposeButton(this._actionButtons[e].button,this._actionButtons[e].callback,this);this._actionButtons=[],this._actionsContainer=null},_initModeHandler:function(t,e,i,o,n){var a=t.type;this._modes[a]={},this._modes[a].handler=t,this._modes[a].button=this._createButton({type:a,title:n,className:o+"-"+a,container:e,callback:this._modes[a].handler.enable,context:this._modes[a].handler}),this._modes[a].buttonIndex=i,this._modes[a].handler.on("enabled",this._handlerActivated,this).on("disabled",this._handlerDeactivated,this)},_detectIOS:function(){return/iPad|iPhone|iPod/.test(navigator.userAgent)&&!t.MSStream},_createButton:function(t){var e=L.DomUtil.create("a",t.className||"",t.container),i=L.DomUtil.create("span","sr-only",t.container);e.href="#",e.appendChild(i),t.title&&(e.title=t.title,i.innerHTML=t.title),t.text&&(e.innerHTML=t.text,i.innerHTML=t.text);var o=this._detectIOS()?"touchstart":"click";return L.DomEvent.on(e,"click",L.DomEvent.stopPropagation).on(e,"mousedown",L.DomEvent.stopPropagation).on(e,"dblclick",L.DomEvent.stopPropagation).on(e,"touchstart",L.DomEvent.stopPropagation).on(e,"click",L.DomEvent.preventDefault).on(e,o,t.callback,t.context),e},_disposeButton:function(t,e){var i=this._detectIOS()?"touchstart":"click";L.DomEvent.off(t,"click",L.DomEvent.stopPropagation).off(t,"mousedown",L.DomEvent.stopPropagation).off(t,"dblclick",L.DomEvent.stopPropagation).off(t,"touchstart",L.DomEvent.stopPropagation).off(t,"click",L.DomEvent.preventDefault).off(t,i,e)},_handlerActivated:function(t){this.disable(),this._activeMode=this._modes[t.handler],L.DomUtil.addClass(this._activeMode.button,"leaflet-draw-toolbar-button-enabled"),this._showActionsToolbar(),this.fire("enable")},_handlerDeactivated:function(){this._hideActionsToolbar(),L.DomUtil.removeClass(this._activeMode.button,"leaflet-draw-toolbar-button-enabled"),this._activeMode=null,this.fire("disable")},_createActions:function(t){var e,i,o,n,a=this._actionsContainer,s=this.getActions(t),r=s.length;for(i=0,o=this._actionButtons.length;i<o;i++)this._disposeButton(this._actionButtons[i].button,this._actionButtons[i].callback);for(this._actionButtons=[];a.firstChild;)a.removeChild(a.firstChild);for(var l=0;l<r;l++)"enabled"in s[l]&&!s[l].enabled||(e=L.DomUtil.create("li","",a),n=this._createButton({title:s[l].title,text:s[l].text,container:e,callback:s[l].callback,context:s[l].context}),this._actionButtons.push({button:n,callback:s[l].callback}))},_showActionsToolbar:function(){var t=this._activeMode.buttonIndex,e=this._lastButtonIndex,i=this._activeMode.button.offsetTop-1;this._createActions(this._activeMode.handler),this._actionsContainer.style.top=i+"px",0===t&&(L.DomUtil.addClass(this._toolbarContainer,"leaflet-draw-toolbar-notop"),L.DomUtil.addClass(this._actionsContainer,"leaflet-draw-actions-top")),t===e&&(L.DomUtil.addClass(this._toolbarContainer,"leaflet-draw-toolbar-nobottom"),L.DomUtil.addClass(this._actionsContainer,"leaflet-draw-actions-bottom")),this._actionsContainer.style.display="block",this._map.fire(L.Draw.Event.TOOLBAROPENED)},_hideActionsToolbar:function(){this._actionsContainer.style.display="none",L.DomUtil.removeClass(this._toolbarContainer,"leaflet-draw-toolbar-notop"),L.DomUtil.removeClass(this._toolbarContainer,"leaflet-draw-toolbar-nobottom"),L.DomUtil.removeClass(this._actionsContainer,"leaflet-draw-actions-top"),L.DomUtil.removeClass(this._actionsContainer,"leaflet-draw-actions-bottom"),this._map.fire(L.Draw.Event.TOOLBARCLOSED)}}),L.Draw=L.Draw||{},L.Draw.Tooltip=L.Class.extend({initialize:function(t){this._map=t,this._popupPane=t._panes.popupPane,this._visible=!1,this._container=t.options.drawControlTooltips?L.DomUtil.create("div","leaflet-draw-tooltip",this._popupPane):null,this._singleLineLabel=!1,this._map.on("mouseout",this._onMouseOut,this)},dispose:function(){this._map.off("mouseout",this._onMouseOut,this),this._container&&(this._popupPane.removeChild(this._container),this._container=null)},updateContent:function(t){return this._container?(t.subtext=t.subtext||"",0!==t.subtext.length||this._singleLineLabel?t.subtext.length>0&&this._singleLineLabel&&(L.DomUtil.removeClass(this._container,"leaflet-draw-tooltip-single"),this._singleLineLabel=!1):(L.DomUtil.addClass(this._container,"leaflet-draw-tooltip-single"),this._singleLineLabel=!0),this._container.innerHTML=(t.subtext.length>0?'<span class="leaflet-draw-tooltip-subtext">'+t.subtext+"</span><br />":"")+"<span>"+t.text+"</span>",t.text||t.subtext?(this._visible=!0,this._container.style.visibility="inherit"):(this._visible=!1,this._container.style.visibility="hidden"),this):this},updatePosition:function(t){var e=this._map.latLngToLayerPoint(t),i=this._container;return this._container&&(this._visible&&(i.style.visibility="inherit"),L.DomUtil.setPosition(i,e)),this},showAsError:function(){return this._container&&L.DomUtil.addClass(this._container,"leaflet-error-draw-tooltip"),this},removeError:function(){return this._container&&L.DomUtil.removeClass(this._container,"leaflet-error-draw-tooltip"),this},_onMouseOut:function(){this._container&&(this._container.style.visibility="hidden")}}),L.DrawToolbar=L.Toolbar.extend({statics:{TYPE:"draw"},options:{polyline:{},polygon:{},rectangle:{},circle:{},marker:{},circlemarker:{}},initialize:function(t){for(var e in this.options)this.options.hasOwnProperty(e)&&t[e]&&(t[e]=L.extend({},this.options[e],t[e]));this._toolbarClass="leaflet-draw-draw",L.Toolbar.prototype.initialize.call(this,t)},getModeHandlers:function(t){return[{enabled:this.options.polyline,handler:new L.Draw.Polyline(t,this.options.polyline),title:L.drawLocal.draw.toolbar.buttons.polyline},{enabled:this.options.polygon,handler:new L.Draw.Polygon(t,this.options.polygon),title:L.drawLocal.draw.toolbar.buttons.polygon},{enabled:this.options.rectangle,handler:new L.Draw.Rectangle(t,this.options.rectangle),title:L.drawLocal.draw.toolbar.buttons.rectangle},{enabled:this.options.circle,handler:new L.Draw.Circle(t,this.options.circle),title:L.drawLocal.draw.toolbar.buttons.circle},{enabled:this.options.marker,handler:new L.Draw.Marker(t,this.options.marker),title:L.drawLocal.draw.toolbar.buttons.marker},{enabled:this.options.circlemarker,handler:new L.Draw.CircleMarker(t,this.options.circlemarker),title:L.drawLocal.draw.toolbar.buttons.circlemarker}]},getActions:function(t){return[{enabled:t.completeShape,title:L.drawLocal.draw.toolbar.finish.title,text:L.drawLocal.draw.toolbar.finish.text,callback:t.completeShape,context:t},{enabled:t.deleteLastVertex,title:L.drawLocal.draw.toolbar.undo.title,text:L.drawLocal.draw.toolbar.undo.text,callback:t.deleteLastVertex,context:t},{title:L.drawLocal.draw.toolbar.actions.title,text:L.drawLocal.draw.toolbar.actions.text,callback:this.disable,context:this}]},setOptions:function(t){L.setOptions(this,t);for(var e in this._modes)this._modes.hasOwnProperty(e)&&t.hasOwnProperty(e)&&this._modes[e].handler.setOptions(t[e])}}),L.EditToolbar=L.Toolbar.extend({statics:{TYPE:"edit"},options:{edit:{selectedPathOptions:{dashArray:"10, 10",fill:!0,fillColor:"#fe57a1",fillOpacity:.1,maintainColor:!1}},remove:{},poly:null,featureGroup:null},initialize:function(t){t.edit&&(void 0===t.edit.selectedPathOptions&&(t.edit.selectedPathOptions=this.options.edit.selectedPathOptions),t.edit.selectedPathOptions=L.extend({},this.options.edit.selectedPathOptions,t.edit.selectedPathOptions)),t.remove&&(t.remove=L.extend({},this.options.remove,t.remove)),t.poly&&(t.poly=L.extend({},this.options.poly,t.poly)),this._toolbarClass="leaflet-draw-edit",L.Toolbar.prototype.initialize.call(this,t),this._selectedFeatureCount=0},getModeHandlers:function(t){var e=this.options.featureGroup;return[{enabled:this.options.edit,handler:new L.EditToolbar.Edit(t,{featureGroup:e,selectedPathOptions:this.options.edit.selectedPathOptions,poly:this.options.poly}),title:L.drawLocal.edit.toolbar.buttons.edit},{enabled:this.options.remove,handler:new L.EditToolbar.Delete(t,{featureGroup:e}),title:L.drawLocal.edit.toolbar.buttons.remove}]},getActions:function(t){var e=[{title:L.drawLocal.edit.toolbar.actions.save.title,text:L.drawLocal.edit.toolbar.actions.save.text,callback:this._save,context:this},{title:L.drawLocal.edit.toolbar.actions.cancel.title,text:L.drawLocal.edit.toolbar.actions.cancel.text,callback:this.disable,context:this}];return t.removeAllLayers&&e.push({title:L.drawLocal.edit.toolbar.actions.clearAll.title,text:L.drawLocal.edit.toolbar.actions.clearAll.text,callback:this._clearAllLayers,context:this}),e},addToolbar:function(t){var e=L.Toolbar.prototype.addToolbar.call(this,t);return this._checkDisabled(),this.options.featureGroup.on("layeradd layerremove",this._checkDisabled,this),e},removeToolbar:function(){this.options.featureGroup.off("layeradd layerremove",this._checkDisabled,this),L.Toolbar.prototype.removeToolbar.call(this)},disable:function(){this.enabled()&&(this._activeMode.handler.revertLayers(),L.Toolbar.prototype.disable.call(this))},_save:function(){this._activeMode.handler.save(),this._activeMode&&this._activeMode.handler.disable()},_clearAllLayers:function(){this._activeMode.handler.removeAllLayers(),this._activeMode&&this._activeMode.handler.disable()},_checkDisabled:function(){var t,e=this.options.featureGroup,i=0!==e.getLayers().length;this.options.edit&&(t=this._modes[L.EditToolbar.Edit.TYPE].button,i?L.DomUtil.removeClass(t,"leaflet-disabled"):L.DomUtil.addClass(t,"leaflet-disabled"),t.setAttribute("title",i?L.drawLocal.edit.toolbar.buttons.edit:L.drawLocal.edit.toolbar.buttons.editDisabled)),this.options.remove&&(t=this._modes[L.EditToolbar.Delete.TYPE].button,i?L.DomUtil.removeClass(t,"leaflet-disabled"):L.DomUtil.addClass(t,"leaflet-disabled"),t.setAttribute("title",i?L.drawLocal.edit.toolbar.buttons.remove:L.drawLocal.edit.toolbar.buttons.removeDisabled))}}),L.EditToolbar.Edit=L.Handler.extend({statics:{TYPE:"edit"},initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.setOptions(this,e),this._featureGroup=e.featureGroup,!(this._featureGroup instanceof L.FeatureGroup))throw new Error("options.featureGroup must be a L.FeatureGroup");this._uneditedLayerProps={},this.type=L.EditToolbar.Edit.TYPE;var i=L.version.split(".");1===parseInt(i[0],10)&&parseInt(i[1],10)>=2?L.EditToolbar.Edit.include(L.Evented.prototype):L.EditToolbar.Edit.include(L.Mixin.Events)},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire("enabled",{handler:this.type}),this._map.fire(L.Draw.Event.EDITSTART,{handler:this.type}),L.Handler.prototype.enable.call(this),this._featureGroup.on("layeradd",this._enableLayerEdit,this).on("layerremove",this._disableLayerEdit,this))},disable:function(){this._enabled&&(this._featureGroup.off("layeradd",this._enableLayerEdit,this).off("layerremove",this._disableLayerEdit,this),L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.EDITSTOP,{handler:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._featureGroup.eachLayer(this._enableLayerEdit,this),this._tooltip=new L.Draw.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext}),t._editTooltip=this._tooltip,this._updateTooltip(),this._map.on("mousemove",this._onMouseMove,this).on("touchmove",this._onMouseMove,this).on("MSPointerMove",this._onMouseMove,this).on(L.Draw.Event.EDITVERTEX,this._updateTooltip,this))},removeHooks:function(){this._map&&(this._featureGroup.eachLayer(this._disableLayerEdit,this),this._uneditedLayerProps={},this._tooltip.dispose(),this._tooltip=null,this._map.off("mousemove",this._onMouseMove,this).off("touchmove",this._onMouseMove,this).off("MSPointerMove",this._onMouseMove,this).off(L.Draw.Event.EDITVERTEX,this._updateTooltip,this))},revertLayers:function(){this._featureGroup.eachLayer(function(t){this._revertLayer(t)},this)},save:function(){var t=new L.LayerGroup;this._featureGroup.eachLayer(function(e){e.edited&&(t.addLayer(e),e.edited=!1)}),this._map.fire(L.Draw.Event.EDITED,{layers:t})},_backupLayer:function(t){var e=L.Util.stamp(t);this._uneditedLayerProps[e]||(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?this._uneditedLayerProps[e]={latlngs:L.LatLngUtil.cloneLatLngs(t.getLatLngs())}:t instanceof L.Circle?this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng()),radius:t.getRadius()}:(t instanceof L.Marker||t instanceof L.CircleMarker)&&(this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng())}))},_getTooltipText:function(){return{text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext}},_updateTooltip:function(){this._tooltip.updateContent(this._getTooltipText())},_revertLayer:function(t){var e=L.Util.stamp(t);t.edited=!1,this._uneditedLayerProps.hasOwnProperty(e)&&(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?t.setLatLngs(this._uneditedLayerProps[e].latlngs):t instanceof L.Circle?(t.setLatLng(this._uneditedLayerProps[e].latlng),t.setRadius(this._uneditedLayerProps[e].radius)):(t instanceof L.Marker||t instanceof L.CircleMarker)&&t.setLatLng(this._uneditedLayerProps[e].latlng),t.fire("revert-edited",{layer:t}))},_enableLayerEdit:function(t){var e,i,o=t.layer||t.target||t;this._backupLayer(o),this.options.poly&&(i=L.Util.extend({},this.options.poly),o.options.poly=i),this.options.selectedPathOptions&&(e=L.Util.extend({},this.options.selectedPathOptions),e.maintainColor&&(e.color=o.options.color,e.fillColor=o.options.fillColor),o.options.original=L.extend({},o.options),o.options.editing=e),o instanceof L.Marker?(o.editing&&o.editing.enable(),o.dragging.enable(),o.on("dragend",this._onMarkerDragEnd).on("touchmove",this._onTouchMove,this).on("MSPointerMove",this._onTouchMove,this).on("touchend",this._onMarkerDragEnd,this).on("MSPointerUp",this._onMarkerDragEnd,this)):o.editing.enable()},_disableLayerEdit:function(t){var e=t.layer||t.target||t;e.edited=!1,e.editing&&e.editing.disable(),delete e.options.editing,delete e.options.original,
+this._selectedPathOptions&&(e instanceof L.Marker?this._toggleMarkerHighlight(e):(e.setStyle(e.options.previousOptions),delete e.options.previousOptions)),e instanceof L.Marker?(e.dragging.disable(),e.off("dragend",this._onMarkerDragEnd,this).off("touchmove",this._onTouchMove,this).off("MSPointerMove",this._onTouchMove,this).off("touchend",this._onMarkerDragEnd,this).off("MSPointerUp",this._onMarkerDragEnd,this)):e.editing.disable()},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_onMarkerDragEnd:function(t){var e=t.target;e.edited=!0,this._map.fire(L.Draw.Event.EDITMOVE,{layer:e})},_onTouchMove:function(t){var e=t.originalEvent.changedTouches[0],i=this._map.mouseEventToLayerPoint(e),o=this._map.layerPointToLatLng(i);t.target.setLatLng(o)},_hasAvailableLayers:function(){return 0!==this._featureGroup.getLayers().length}}),L.EditToolbar.Delete=L.Handler.extend({statics:{TYPE:"remove"},initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.Util.setOptions(this,e),this._deletableLayers=this.options.featureGroup,!(this._deletableLayers instanceof L.FeatureGroup))throw new Error("options.featureGroup must be a L.FeatureGroup");this.type=L.EditToolbar.Delete.TYPE;var i=L.version.split(".");1===parseInt(i[0],10)&&parseInt(i[1],10)>=2?L.EditToolbar.Delete.include(L.Evented.prototype):L.EditToolbar.Delete.include(L.Mixin.Events)},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire("enabled",{handler:this.type}),this._map.fire(L.Draw.Event.DELETESTART,{handler:this.type}),L.Handler.prototype.enable.call(this),this._deletableLayers.on("layeradd",this._enableLayerDelete,this).on("layerremove",this._disableLayerDelete,this))},disable:function(){this._enabled&&(this._deletableLayers.off("layeradd",this._enableLayerDelete,this).off("layerremove",this._disableLayerDelete,this),L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.DELETESTOP,{handler:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._deletableLayers.eachLayer(this._enableLayerDelete,this),this._deletedLayers=new L.LayerGroup,this._tooltip=new L.Draw.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.remove.tooltip.text}),this._map.on("mousemove",this._onMouseMove,this))},removeHooks:function(){this._map&&(this._deletableLayers.eachLayer(this._disableLayerDelete,this),this._deletedLayers=null,this._tooltip.dispose(),this._tooltip=null,this._map.off("mousemove",this._onMouseMove,this))},revertLayers:function(){this._deletedLayers.eachLayer(function(t){this._deletableLayers.addLayer(t),t.fire("revert-deleted",{layer:t})},this)},save:function(){this._map.fire(L.Draw.Event.DELETED,{layers:this._deletedLayers})},removeAllLayers:function(){this._deletableLayers.eachLayer(function(t){this._removeLayer({layer:t})},this),this.save()},_enableLayerDelete:function(t){(t.layer||t.target||t).on("click",this._removeLayer,this)},_disableLayerDelete:function(t){var e=t.layer||t.target||t;e.off("click",this._removeLayer,this),this._deletedLayers.removeLayer(e)},_removeLayer:function(t){var e=t.layer||t.target||t;this._deletableLayers.removeLayer(e),this._deletedLayers.addLayer(e),e.fire("deleted")},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_hasAvailableLayers:function(){return 0!==this._deletableLayers.getLayers().length}})}(window,document);
\ No newline at end of file
diff --git a/flask_admin/static/vendor/leaflet/leaflet.js b/flask_admin/static/vendor/leaflet/leaflet.js
index 03434b77d..3b628abac 100644
--- a/flask_admin/static/vendor/leaflet/leaflet.js
+++ b/flask_admin/static/vendor/leaflet/leaflet.js
@@ -1,9 +1,5 @@
-/*
- Leaflet, a JavaScript library for mobile-friendly interactive maps. http://leafletjs.com
- (c) 2010-2013, Vladimir Agafonkin
- (c) 2010-2011, CloudMade
-*/
-!function(t,e,i){var n=t.L,o={};o.version="0.7.3","object"==typeof module&&"object"==typeof module.exports?module.exports=o:"function"==typeof define&&define.amd&&define(o),o.noConflict=function(){return t.L=n,this},t.L=o,o.Util={extend:function(t){var e,i,n,o,s=Array.prototype.slice.call(arguments,1);for(i=0,n=s.length;n>i;i++){o=s[i]||{};for(e in o)o.hasOwnProperty(e)&&(t[e]=o[e])}return t},bind:function(t,e){var i=arguments.length>2?Array.prototype.slice.call(arguments,2):null;return function(){return t.apply(e,i||arguments)}},stamp:function(){var t=0,e="_leaflet_id";return function(i){return i[e]=i[e]||++t,i[e]}}(),invokeEach:function(t,e,i){var n,o;if("object"==typeof t){o=Array.prototype.slice.call(arguments,3);for(n in t)e.apply(i,[n,t[n]].concat(o));return!0}return!1},limitExecByInterval:function(t,e,i){var n,o;return function s(){var a=arguments;return n?void(o=!0):(n=!0,setTimeout(function(){n=!1,o&&(s.apply(i,a),o=!1)},e),void t.apply(i,a))}},falseFn:function(){return!1},formatNum:function(t,e){var i=Math.pow(10,e||5);return Math.round(t*i)/i},trim:function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},splitWords:function(t){return o.Util.trim(t).split(/\s+/)},setOptions:function(t,e){return t.options=o.extend({},t.options,e),t.options},getParamString:function(t,e,i){var n=[];for(var o in t)n.push(encodeURIComponent(i?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(e&&-1!==e.indexOf("?")?"&":"?")+n.join("&")},template:function(t,e){return t.replace(/\{ *([\w_]+) *\}/g,function(t,n){var o=e[n];if(o===i)throw new Error("No value provided for variable "+t);return"function"==typeof o&&(o=o(e)),o})},isArray:Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},emptyImageUrl:"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="},function(){function e(e){var i,n,o=["webkit","moz","o","ms"];for(i=0;i<o.length&&!n;i++)n=t[o[i]+e];return n}function i(e){var i=+new Date,o=Math.max(0,16-(i-n));return n=i+o,t.setTimeout(e,o)}var n=0,s=t.requestAnimationFrame||e("RequestAnimationFrame")||i,a=t.cancelAnimationFrame||e("CancelAnimationFrame")||e("CancelRequestAnimationFrame")||function(e){t.clearTimeout(e)};o.Util.requestAnimFrame=function(e,n,a,r){return e=o.bind(e,n),a&&s===i?void e():s.call(t,e,r)},o.Util.cancelAnimFrame=function(e){e&&a.call(t,e)}}(),o.extend=o.Util.extend,o.bind=o.Util.bind,o.stamp=o.Util.stamp,o.setOptions=o.Util.setOptions,o.Class=function(){},o.Class.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this._initHooks&&this.callInitHooks()},i=function(){};i.prototype=this.prototype;var n=new i;n.constructor=e,e.prototype=n;for(var s in this)this.hasOwnProperty(s)&&"prototype"!==s&&(e[s]=this[s]);t.statics&&(o.extend(e,t.statics),delete t.statics),t.includes&&(o.Util.extend.apply(null,[n].concat(t.includes)),delete t.includes),t.options&&n.options&&(t.options=o.extend({},n.options,t.options)),o.extend(n,t),n._initHooks=[];var a=this;return e.__super__=a.prototype,n.callInitHooks=function(){if(!this._initHooksCalled){a.prototype.callInitHooks&&a.prototype.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,e=n._initHooks.length;e>t;t++)n._initHooks[t].call(this)}},e},o.Class.include=function(t){o.extend(this.prototype,t)},o.Class.mergeOptions=function(t){o.extend(this.prototype.options,t)},o.Class.addInitHook=function(t){var e=Array.prototype.slice.call(arguments,1),i="function"==typeof t?t:function(){this[t].apply(this,e)};this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(i)};var s="_leaflet_events";o.Mixin={},o.Mixin.Events={addEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d=this[s]=this[s]||{},p=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)r={action:e,context:i||this},h=t[n],p?(l=h+"_idx",u=l+"_len",c=d[l]=d[l]||{},c[p]||(c[p]=[],d[u]=(d[u]||0)+1),c[p].push(r)):(d[h]=d[h]||[],d[h].push(r));return this},hasEventListeners:function(t){var e=this[s];return!!e&&(t in e&&e[t].length>0||t+"_idx"in e&&e[t+"_idx_len"]>0)},removeEventListener:function(t,e,i){if(!this[s])return this;if(!t)return this.clearAllEventListeners();if(o.Util.invokeEach(t,this.removeEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d,p,_=this[s],m=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)if(r=t[n],u=r+"_idx",c=u+"_len",d=_[u],e){if(h=m&&d?d[m]:_[r]){for(l=h.length-1;l>=0;l--)h[l].action!==e||i&&h[l].context!==i||(p=h.splice(l,1),p[0].action=o.Util.falseFn);i&&d&&0===h.length&&(delete d[m],_[c]--)}}else delete _[r],delete _[u],delete _[c];return this},clearAllEventListeners:function(){return delete this[s],this},fireEvent:function(t,e){if(!this.hasEventListeners(t))return this;var i,n,a,r,h,l=o.Util.extend({},e,{type:t,target:this}),u=this[s];if(u[t])for(i=u[t].slice(),n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);r=u[t+"_idx"];for(h in r)if(i=r[h].slice())for(n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);return this},addOneTimeEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addOneTimeEventListener,this,e,i))return this;var n=o.bind(function(){this.removeEventListener(t,e,i).removeEventListener(t,n,i)},this);return this.addEventListener(t,e,i).addEventListener(t,n,i)}},o.Mixin.Events.on=o.Mixin.Events.addEventListener,o.Mixin.Events.off=o.Mixin.Events.removeEventListener,o.Mixin.Events.once=o.Mixin.Events.addOneTimeEventListener,o.Mixin.Events.fire=o.Mixin.Events.fireEvent,function(){var n="ActiveXObject"in t,s=n&&!e.addEventListener,a=navigator.userAgent.toLowerCase(),r=-1!==a.indexOf("webkit"),h=-1!==a.indexOf("chrome"),l=-1!==a.indexOf("phantom"),u=-1!==a.indexOf("android"),c=-1!==a.search("android [23]"),d=-1!==a.indexOf("gecko"),p=typeof orientation!=i+"",_=t.navigator&&t.navigator.msPointerEnabled&&t.navigator.msMaxTouchPoints&&!t.PointerEvent,m=t.PointerEvent&&t.navigator.pointerEnabled&&t.navigator.maxTouchPoints||_,f="devicePixelRatio"in t&&t.devicePixelRatio>1||"matchMedia"in t&&t.matchMedia("(min-resolution:144dpi)")&&t.matchMedia("(min-resolution:144dpi)").matches,g=e.documentElement,v=n&&"transition"in g.style,y="WebKitCSSMatrix"in t&&"m11"in new t.WebKitCSSMatrix&&!c,P="MozPerspective"in g.style,L="OTransition"in g.style,x=!t.L_DISABLE_3D&&(v||y||P||L)&&!l,w=!t.L_NO_TOUCH&&!l&&function(){var t="ontouchstart";if(m||t in g)return!0;var i=e.createElement("div"),n=!1;return i.setAttribute?(i.setAttribute(t,"return;"),"function"==typeof i[t]&&(n=!0),i.removeAttribute(t),i=null,n):!1}();o.Browser={ie:n,ielt9:s,webkit:r,gecko:d&&!r&&!t.opera&&!n,android:u,android23:c,chrome:h,ie3d:v,webkit3d:y,gecko3d:P,opera3d:L,any3d:x,mobile:p,mobileWebkit:p&&r,mobileWebkit3d:p&&y,mobileOpera:p&&t.opera,touch:w,msPointer:_,pointer:m,retina:f}}(),o.Point=function(t,e,i){this.x=i?Math.round(t):t,this.y=i?Math.round(e):e},o.Point.prototype={clone:function(){return new o.Point(this.x,this.y)},add:function(t){return this.clone()._add(o.point(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(o.point(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},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},distanceTo:function(t){t=o.point(t);var e=t.x-this.x,i=t.y-this.y;return Math.sqrt(e*e+i*i)},equals:function(t){return t=o.point(t),t.x===this.x&&t.y===this.y},contains:function(t){return t=o.point(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+o.Util.formatNum(this.x)+", "+o.Util.formatNum(this.y)+")"}},o.point=function(t,e,n){return t instanceof o.Point?t:o.Util.isArray(t)?new o.Point(t[0],t[1]):t===i||null===t?t:new o.Point(t,e,n)},o.Bounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.Bounds.prototype={extend:function(t){return t=o.point(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new o.Point((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new o.Point(this.min.x,this.max.y)},getTopRight:function(){return new o.Point(this.max.x,this.min.y)},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var e,i;return t="number"==typeof t[0]||t instanceof o.Point?o.point(t):o.bounds(t),t instanceof o.Bounds?(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=o.bounds(t);var e=this.min,i=this.max,n=t.min,s=t.max,a=s.x>=e.x&&n.x<=i.x,r=s.y>=e.y&&n.y<=i.y;return a&&r},isValid:function(){return!(!this.min||!this.max)}},o.bounds=function(t,e){return!t||t instanceof o.Bounds?t:new o.Bounds(t,e)},o.Transformation=function(t,e,i,n){this._a=t,this._b=e,this._c=i,this._d=n},o.Transformation.prototype={transform:function(t,e){return this._transform(t.clone(),e)},_transform:function(t,e){return e=e||1,t.x=e*(this._a*t.x+this._b),t.y=e*(this._c*t.y+this._d),t},untransform:function(t,e){return e=e||1,new o.Point((t.x/e-this._b)/this._a,(t.y/e-this._d)/this._c)}},o.DomUtil={get:function(t){return"string"==typeof t?e.getElementById(t):t},getStyle:function(t,i){var n=t.style[i];if(!n&&t.currentStyle&&(n=t.currentStyle[i]),(!n||"auto"===n)&&e.defaultView){var o=e.defaultView.getComputedStyle(t,null);n=o?o[i]:null}return"auto"===n?null:n},getViewportOffset:function(t){var i,n=0,s=0,a=t,r=e.body,h=e.documentElement;do{if(n+=a.offsetTop||0,s+=a.offsetLeft||0,n+=parseInt(o.DomUtil.getStyle(a,"borderTopWidth"),10)||0,s+=parseInt(o.DomUtil.getStyle(a,"borderLeftWidth"),10)||0,i=o.DomUtil.getStyle(a,"position"),a.offsetParent===r&&"absolute"===i)break;if("fixed"===i){n+=r.scrollTop||h.scrollTop||0,s+=r.scrollLeft||h.scrollLeft||0;break}if("relative"===i&&!a.offsetLeft){var l=o.DomUtil.getStyle(a,"width"),u=o.DomUtil.getStyle(a,"max-width"),c=a.getBoundingClientRect();("none"!==l||"none"!==u)&&(s+=c.left+a.clientLeft),n+=c.top+(r.scrollTop||h.scrollTop||0);break}a=a.offsetParent}while(a);a=t;do{if(a===r)break;n-=a.scrollTop||0,s-=a.scrollLeft||0,a=a.parentNode}while(a);return new o.Point(s,n)},documentIsLtr:function(){return o.DomUtil._docIsLtrCached||(o.DomUtil._docIsLtrCached=!0,o.DomUtil._docIsLtr="ltr"===o.DomUtil.getStyle(e.body,"direction")),o.DomUtil._docIsLtr},create:function(t,i,n){var o=e.createElement(t);return o.className=i,n&&n.appendChild(o),o},hasClass:function(t,e){if(t.classList!==i)return t.classList.contains(e);var n=o.DomUtil._getClass(t);return n.length>0&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(n)},addClass:function(t,e){if(t.classList!==i)for(var n=o.Util.splitWords(e),s=0,a=n.length;a>s;s++)t.classList.add(n[s]);else if(!o.DomUtil.hasClass(t,e)){var r=o.DomUtil._getClass(t);o.DomUtil._setClass(t,(r?r+" ":"")+e)}},removeClass:function(t,e){t.classList!==i?t.classList.remove(e):o.DomUtil._setClass(t,o.Util.trim((" "+o.DomUtil._getClass(t)+" ").replace(" "+e+" "," ")))},_setClass:function(t,e){t.className.baseVal===i?t.className=e:t.className.baseVal=e},_getClass:function(t){return t.className.baseVal===i?t.className:t.className.baseVal},setOpacity:function(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(o){if(1===e)return}e=Math.round(100*e),i?(i.Enabled=100!==e,i.Opacity=e):t.style.filter+=" progid:"+n+"(opacity="+e+")"}},testProp:function(t){for(var i=e.documentElement.style,n=0;n<t.length;n++)if(t[n]in i)return t[n];return!1},getTranslateString:function(t){var e=o.Browser.webkit3d,i="translate"+(e?"3d":"")+"(",n=(e?",0":"")+")";return i+t.x+"px,"+t.y+"px"+n},getScaleString:function(t,e){var i=o.DomUtil.getTranslateString(e.add(e.multiplyBy(-1*t))),n=" scale("+t+") ";return i+n},setPosition:function(t,e,i){t._leaflet_pos=e,!i&&o.Browser.any3d?t.style[o.DomUtil.TRANSFORM]=o.DomUtil.getTranslateString(e):(t.style.left=e.x+"px",t.style.top=e.y+"px")},getPosition:function(t){return t._leaflet_pos}},o.DomUtil.TRANSFORM=o.DomUtil.testProp(["transform","WebkitTransform","OTransform","MozTransform","msTransform"]),o.DomUtil.TRANSITION=o.DomUtil.testProp(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),o.DomUtil.TRANSITION_END="webkitTransition"===o.DomUtil.TRANSITION||"OTransition"===o.DomUtil.TRANSITION?o.DomUtil.TRANSITION+"End":"transitionend",function(){if("onselectstart"in e)o.extend(o.DomUtil,{disableTextSelection:function(){o.DomEvent.on(t,"selectstart",o.DomEvent.preventDefault)},enableTextSelection:function(){o.DomEvent.off(t,"selectstart",o.DomEvent.preventDefault)}});else{var i=o.DomUtil.testProp(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);o.extend(o.DomUtil,{disableTextSelection:function(){if(i){var t=e.documentElement.style;this._userSelect=t[i],t[i]="none"}},enableTextSelection:function(){i&&(e.documentElement.style[i]=this._userSelect,delete this._userSelect)}})}o.extend(o.DomUtil,{disableImageDrag:function(){o.DomEvent.on(t,"dragstart",o.DomEvent.preventDefault)},enableImageDrag:function(){o.DomEvent.off(t,"dragstart",o.DomEvent.preventDefault)}})}(),o.LatLng=function(t,e,n){if(t=parseFloat(t),e=parseFloat(e),isNaN(t)||isNaN(e))throw new Error("Invalid LatLng object: ("+t+", "+e+")");this.lat=t,this.lng=e,n!==i&&(this.alt=parseFloat(n))},o.extend(o.LatLng,{DEG_TO_RAD:Math.PI/180,RAD_TO_DEG:180/Math.PI,MAX_MARGIN:1e-9}),o.LatLng.prototype={equals:function(t){if(!t)return!1;t=o.latLng(t);var e=Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng));return e<=o.LatLng.MAX_MARGIN},toString:function(t){return"LatLng("+o.Util.formatNum(this.lat,t)+", "+o.Util.formatNum(this.lng,t)+")"},distanceTo:function(t){t=o.latLng(t);var e=6378137,i=o.LatLng.DEG_TO_RAD,n=(t.lat-this.lat)*i,s=(t.lng-this.lng)*i,a=this.lat*i,r=t.lat*i,h=Math.sin(n/2),l=Math.sin(s/2),u=h*h+l*l*Math.cos(a)*Math.cos(r);return 2*e*Math.atan2(Math.sqrt(u),Math.sqrt(1-u))},wrap:function(t,e){var i=this.lng;return t=t||-180,e=e||180,i=(i+e)%(e-t)+(t>i||i===e?e:t),new o.LatLng(this.lat,i)}},o.latLng=function(t,e){return t instanceof o.LatLng?t:o.Util.isArray(t)?"number"==typeof t[0]||"string"==typeof t[0]?new o.LatLng(t[0],t[1],t[2]):null:t===i||null===t?t:"object"==typeof t&&"lat"in t?new o.LatLng(t.lat,"lng"in t?t.lng:t.lon):e===i?null:new o.LatLng(t,e)},o.LatLngBounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.LatLngBounds.prototype={extend:function(t){if(!t)return this;var e=o.latLng(t);return t=null!==e?e:o.latLngBounds(t),t instanceof o.LatLng?this._southWest||this._northEast?(this._southWest.lat=Math.min(t.lat,this._southWest.lat),this._southWest.lng=Math.min(t.lng,this._southWest.lng),this._northEast.lat=Math.max(t.lat,this._northEast.lat),this._northEast.lng=Math.max(t.lng,this._northEast.lng)):(this._southWest=new o.LatLng(t.lat,t.lng),this._northEast=new o.LatLng(t.lat,t.lng)):t instanceof o.LatLngBounds&&(this.extend(t._southWest),this.extend(t._northEast)),this},pad:function(t){var e=this._southWest,i=this._northEast,n=Math.abs(e.lat-i.lat)*t,s=Math.abs(e.lng-i.lng)*t;return new o.LatLngBounds(new o.LatLng(e.lat-n,e.lng-s),new o.LatLng(i.lat+n,i.lng+s))},getCenter:function(){return new o.LatLng((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 o.LatLng(this.getNorth(),this.getWest())},getSouthEast:function(){return new o.LatLng(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 o.LatLng?o.latLng(t):o.latLngBounds(t);var e,i,n=this._southWest,s=this._northEast;return t instanceof o.LatLngBounds?(e=t.getSouthWest(),i=t.getNorthEast()):e=i=t,e.lat>=n.lat&&i.lat<=s.lat&&e.lng>=n.lng&&i.lng<=s.lng},intersects:function(t){t=o.latLngBounds(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),s=t.getNorthEast(),a=s.lat>=e.lat&&n.lat<=i.lat,r=s.lng>=e.lng&&n.lng<=i.lng;return a&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t){return t?(t=o.latLngBounds(t),this._southWest.equals(t.getSouthWest())&&this._northEast.equals(t.getNorthEast())):!1},isValid:function(){return!(!this._southWest||!this._northEast)}},o.latLngBounds=function(t,e){return!t||t instanceof o.LatLngBounds?t:new o.LatLngBounds(t,e)},o.Projection={},o.Projection.SphericalMercator={MAX_LATITUDE:85.0511287798,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=t.lng*e,a=n*e;return a=Math.log(Math.tan(Math.PI/4+a/2)),new o.Point(s,a)},unproject:function(t){var e=o.LatLng.RAD_TO_DEG,i=t.x*e,n=(2*Math.atan(Math.exp(t.y))-Math.PI/2)*e;return new o.LatLng(n,i)}},o.Projection.LonLat={project:function(t){return new o.Point(t.lng,t.lat)},unproject:function(t){return new o.LatLng(t.y,t.x)}},o.CRS={latLngToPoint:function(t,e){var i=this.projection.project(t),n=this.scale(e);return this.transformation._transform(i,n)},pointToLatLng:function(t,e){var i=this.scale(e),n=this.transformation.untransform(t,i);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},scale:function(t){return 256*Math.pow(2,t)},getSize:function(t){var e=this.scale(t);return o.point(e,e)}},o.CRS.Simple=o.extend({},o.CRS,{projection:o.Projection.LonLat,transformation:new o.Transformation(1,0,-1,0),scale:function(t){return Math.pow(2,t)}}),o.CRS.EPSG3857=o.extend({},o.CRS,{code:"EPSG:3857",projection:o.Projection.SphericalMercator,transformation:new o.Transformation(.5/Math.PI,.5,-.5/Math.PI,.5),project:function(t){var e=this.projection.project(t),i=6378137;return e.multiplyBy(i)}}),o.CRS.EPSG900913=o.extend({},o.CRS.EPSG3857,{code:"EPSG:900913"}),o.CRS.EPSG4326=o.extend({},o.CRS,{code:"EPSG:4326",projection:o.Projection.LonLat,transformation:new o.Transformation(1/360,.5,-1/360,.5)}),o.Map=o.Class.extend({includes:o.Mixin.Events,options:{crs:o.CRS.EPSG3857,fadeAnimation:o.DomUtil.TRANSITION&&!o.Browser.android23,trackResize:!0,markerZoomAnimation:o.DomUtil.TRANSITION&&o.Browser.any3d},initialize:function(t,e){e=o.setOptions(this,e),this._initContainer(t),this._initLayout(),this._onResize=o.bind(this._onResize,this),this._initEvents(),e.maxBounds&&this.setMaxBounds(e.maxBounds),e.center&&e.zoom!==i&&this.setView(o.latLng(e.center),e.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._tileLayersNum=0,this.callInitHooks(),this._addLayers(e.layers)},setView:function(t,e){return e=e===i?this.getZoom():e,this._resetView(o.latLng(t),this._limitZoom(e)),this},setZoom:function(t,e){return this._loaded?this.setView(this.getCenter(),t,{zoom:e}):(this._zoom=this._limitZoom(t),this)},zoomIn:function(t,e){return this.setZoom(this._zoom+(t||1),e)},zoomOut:function(t,e){return this.setZoom(this._zoom-(t||1),e)},setZoomAround:function(t,e,i){var n=this.getZoomScale(e),s=this.getSize().divideBy(2),a=t instanceof o.Point?t:this.latLngToContainerPoint(t),r=a.subtract(s).multiplyBy(1-1/n),h=this.containerPointToLatLng(s.add(r));return this.setView(h,e,{zoom:i})},fitBounds:function(t,e){e=e||{},t=t.getBounds?t.getBounds():o.latLngBounds(t);var i=o.point(e.paddingTopLeft||e.padding||[0,0]),n=o.point(e.paddingBottomRight||e.padding||[0,0]),s=this.getBoundsZoom(t,!1,i.add(n)),a=n.subtract(i).divideBy(2),r=this.project(t.getSouthWest(),s),h=this.project(t.getNorthEast(),s),l=this.unproject(r.add(h).divideBy(2).add(a),s);return s=e&&e.maxZoom?Math.min(e.maxZoom,s):s,this.setView(l,s,e)},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){return this.fire("movestart"),this._rawPanBy(o.point(t)),this.fire("move"),this.fire("moveend")},setMaxBounds:function(t){return t=o.latLngBounds(t),this.options.maxBounds=t,t?(this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds,this)):this.off("moveend",this._panInsideMaxBounds,this)},panInsideBounds:function(t,e){var i=this.getCenter(),n=this._limitCenter(i,this._zoom,t);return i.equals(n)?this:this.panTo(n,e)},addLayer:function(t){var e=o.stamp(t);return this._layers[e]?this:(this._layers[e]=t,!t.options||isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[e]=t,this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum++,this._tileLayersToLoad++,t.on("load",this._onTileLayerLoad,this)),this._loaded&&this._layerAdd(t),this)},removeLayer:function(t){var e=o.stamp(t);return this._layers[e]?(this._loaded&&t.onRemove(this),delete this._layers[e],this._loaded&&this.fire("layerremove",{layer:t}),this._zoomBoundLayers[e]&&(delete this._zoomBoundLayers[e],this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum--,this._tileLayersToLoad--,t.off("load",this._onTileLayerLoad,this)),this):this},hasLayer:function(t){return t?o.stamp(t)in this._layers:!1},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},invalidateSize:function(t){if(!this._loaded)return this;t=o.extend({animate:!1,pan:!0},t===!0?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._initialCenter=null;var i=this.getSize(),n=e.divideBy(2).round(),s=i.divideBy(2).round(),a=n.subtract(s);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(o.bind(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},addHandler:function(t,e){if(!e)return this;var i=this[t]=new e(this);return this._handlers.push(i),this.options[t]&&i.enable(),this},remove:function(){this._loaded&&this.fire("unload"),this._initEvents("off");try{delete this._container._leaflet}catch(t){this._container._leaflet=i}return this._clearPanes(),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this},getCenter:function(){return this._checkIfLoaded(),this._initialCenter&&!this._moved()?this._initialCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds(),e=this.unproject(t.getBottomLeft()),i=this.unproject(t.getTopRight());return new o.LatLngBounds(e,i)},getMinZoom:function(){return this.options.minZoom===i?this._layersMinZoom===i?0:this._layersMinZoom:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===i?this._layersMaxZoom===i?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=o.latLngBounds(t);var n,s=this.getMinZoom()-(e?1:0),a=this.getMaxZoom(),r=this.getSize(),h=t.getNorthWest(),l=t.getSouthEast(),u=!0;i=o.point(i||[0,0]);do s++,n=this.project(l,s).subtract(this.project(h,s)).add(i),u=e?n.x<r.x||n.y<r.y:r.contains(n);while(u&&a>=s);return u&&e?null:e?s:s-1},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new o.Point(this._container.clientWidth,this._container.clientHeight),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(){var t=this._getTopLeftPoint();return new o.Bounds(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._initialTopLeftPoint},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t){var e=this.options.crs;return e.scale(t)/e.scale(this._zoom)},getScaleZoom:function(t){return this._zoom+Math.log(t)/Math.LN2},project:function(t,e){return e=e===i?this._zoom:e,this.options.crs.latLngToPoint(o.latLng(t),e)},unproject:function(t,e){return e=e===i?this._zoom:e,this.options.crs.pointToLatLng(o.point(t),e)},layerPointToLatLng:function(t){var e=o.point(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){var e=this.project(o.latLng(t))._round();return e._subtract(this.getPixelOrigin())},containerPointToLayerPoint:function(t){return o.point(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return o.point(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(o.point(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(o.latLng(t)))},mouseEventToContainerPoint:function(t){return o.DomEvent.getMousePosition(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=o.DomUtil.get(t);if(!e)throw new Error("Map container not found.");if(e._leaflet)throw new Error("Map container is already initialized.");e._leaflet=!0},_initLayout:function(){var t=this._container;o.DomUtil.addClass(t,"leaflet-container"+(o.Browser.touch?" leaflet-touch":"")+(o.Browser.retina?" leaflet-retina":"")+(o.Browser.ielt9?" leaflet-oldie":"")+(this.options.fadeAnimation?" leaflet-fade-anim":""));var e=o.DomUtil.getStyle(t,"position");"absolute"!==e&&"relative"!==e&&"fixed"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._mapPane=t.mapPane=this._createPane("leaflet-map-pane",this._container),this._tilePane=t.tilePane=this._createPane("leaflet-tile-pane",this._mapPane),t.objectsPane=this._createPane("leaflet-objects-pane",this._mapPane),t.shadowPane=this._createPane("leaflet-shadow-pane"),t.overlayPane=this._createPane("leaflet-overlay-pane"),t.markerPane=this._createPane("leaflet-marker-pane"),t.popupPane=this._createPane("leaflet-popup-pane");var e=" leaflet-zoom-hide";this.options.markerZoomAnimation||(o.DomUtil.addClass(t.markerPane,e),o.DomUtil.addClass(t.shadowPane,e),o.DomUtil.addClass(t.popupPane,e))},_createPane:function(t,e){return o.DomUtil.create("div",t,e||this._panes.objectsPane)},_clearPanes:function(){this._container.removeChild(this._mapPane)},_addLayers:function(t){t=t?o.Util.isArray(t)?t:[t]:[];for(var e=0,i=t.length;i>e;e++)this.addLayer(t[e])},_resetView:function(t,e,i,n){var s=this._zoom!==e;n||(this.fire("movestart"),s&&this.fire("zoomstart")),this._zoom=e,this._initialCenter=t,this._initialTopLeftPoint=this._getNewTopLeftPoint(t),i?this._initialTopLeftPoint._add(this._getMapPanePos()):o.DomUtil.setPosition(this._mapPane,new o.Point(0,0)),this._tileLayersToLoad=this._tileLayersNum;var a=!this._loaded;this._loaded=!0,this.fire("viewreset",{hard:!i}),a&&(this.fire("load"),this.eachLayer(this._layerAdd,this)),this.fire("move"),(s||n)&&this.fire("zoomend"),this.fire("moveend",{hard:!i})},_rawPanBy:function(t){o.DomUtil.setPosition(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_updateZoomLevels:function(){var t,e=1/0,n=-1/0,o=this._getZoomSpan();for(t in this._zoomBoundLayers){var s=this._zoomBoundLayers[t];isNaN(s.options.minZoom)||(e=Math.min(e,s.options.minZoom)),isNaN(s.options.maxZoom)||(n=Math.max(n,s.options.maxZoom))}t===i?this._layersMaxZoom=this._layersMinZoom=i:(this._layersMaxZoom=n,this._layersMinZoom=e),o!==this._getZoomSpan()&&this.fire("zoomlevelschange")},_panInsideMaxBounds:function(){this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(e){if(o.DomEvent){e=e||"on",o.DomEvent[e](this._container,"click",this._onMouseClick,this);var i,n,s=["dblclick","mousedown","mouseup","mouseenter","mouseleave","mousemove","contextmenu"];for(i=0,n=s.length;n>i;i++)o.DomEvent[e](this._container,s[i],this._fireMouseEvent,this);this.options.trackResize&&o.DomEvent[e](t,"resize",this._onResize,this)}},_onResize:function(){o.Util.cancelAnimFrame(this._resizeRequest),this._resizeRequest=o.Util.requestAnimFrame(function(){this.invalidateSize({debounceMoveend:!0})},this,!1,this._container)},_onMouseClick:function(t){!this._loaded||!t._simulated&&(this.dragging&&this.dragging.moved()||this.boxZoom&&this.boxZoom.moved())||o.DomEvent._skipped(t)||(this.fire("preclick"),this._fireMouseEvent(t))},_fireMouseEvent:function(t){if(this._loaded&&!o.DomEvent._skipped(t)){var e=t.type;if(e="mouseenter"===e?"mouseover":"mouseleave"===e?"mouseout":e,this.hasEventListeners(e)){"contextmenu"===e&&o.DomEvent.preventDefault(t);var i=this.mouseEventToContainerPoint(t),n=this.containerPointToLayerPoint(i),s=this.layerPointToLatLng(n);this.fire(e,{latlng:s,layerPoint:n,containerPoint:i,originalEvent:t})}}},_onTileLayerLoad:function(){this._tileLayersToLoad--,this._tileLayersNum&&!this._tileLayersToLoad&&this.fire("tilelayersload")},_clearHandlers:function(){for(var t=0,e=this._handlers.length;e>t;t++)this._handlers[t].disable()},whenReady:function(t,e){return this._loaded?t.call(e||this,this):this.on("load",t,e),this},_layerAdd:function(t){t.onAdd(this),this.fire("layeradd",{layer:t})},_getMapPanePos:function(){return o.DomUtil.getPosition(this._mapPane)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(){return this.getPixelOrigin().subtract(this._getMapPanePos())},_getNewTopLeftPoint:function(t,e){var i=this.getSize()._divideBy(2);return this.project(t,e)._subtract(i)._round()},_latLngToNewLayerPoint:function(t,e,i){var n=this._getNewTopLeftPoint(i,e).add(this._getMapPanePos());return this.project(t,e)._subtract(n)},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,e,i){if(!i)return t;var n=this.project(t,e),s=this.getSize().divideBy(2),a=new o.Bounds(n.subtract(s),n.add(s)),r=this._getBoundsOffset(a,i,e);return this.unproject(n.add(r),e)},_limitOffset:function(t,e){if(!e)return t;var i=this.getPixelBounds(),n=new o.Bounds(i.min.add(t),i.max.add(t));return t.add(this._getBoundsOffset(n,e))},_getBoundsOffset:function(t,e,i){var n=this.project(e.getNorthWest(),i).subtract(t.min),s=this.project(e.getSouthEast(),i).subtract(t.max),a=this._rebound(n.x,-s.x),r=this._rebound(n.y,-s.y);return new o.Point(a,r)},_rebound:function(t,e){return t+e>0?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();return Math.max(e,Math.min(i,t))}}),o.map=function(t,e){return new o.Map(t,e)},o.Projection.Mercator={MAX_LATITUDE:85.0840591556,R_MINOR:6356752.314245179,R_MAJOR:6378137,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=this.R_MAJOR,a=this.R_MINOR,r=t.lng*e*s,h=n*e,l=a/s,u=Math.sqrt(1-l*l),c=u*Math.sin(h);c=Math.pow((1-c)/(1+c),.5*u);var d=Math.tan(.5*(.5*Math.PI-h))/c;return h=-s*Math.log(d),new o.Point(r,h)},unproject:function(t){for(var e,i=o.LatLng.RAD_TO_DEG,n=this.R_MAJOR,s=this.R_MINOR,a=t.x*i/n,r=s/n,h=Math.sqrt(1-r*r),l=Math.exp(-t.y/n),u=Math.PI/2-2*Math.atan(l),c=15,d=1e-7,p=c,_=.1;Math.abs(_)>d&&--p>0;)e=h*Math.sin(u),_=Math.PI/2-2*Math.atan(l*Math.pow((1-e)/(1+e),.5*h))-u,u+=_;
-return new o.LatLng(u*i,a)}},o.CRS.EPSG3395=o.extend({},o.CRS,{code:"EPSG:3395",projection:o.Projection.Mercator,transformation:function(){var t=o.Projection.Mercator,e=t.R_MAJOR,i=.5/(Math.PI*e);return new o.Transformation(i,.5,-i,.5)}()}),o.TileLayer=o.Class.extend({includes:o.Mixin.Events,options:{minZoom:0,maxZoom:18,tileSize:256,subdomains:"abc",errorTileUrl:"",attribution:"",zoomOffset:0,opacity:1,unloadInvisibleTiles:o.Browser.mobile,updateWhenIdle:o.Browser.mobile},initialize:function(t,e){e=o.setOptions(this,e),e.detectRetina&&o.Browser.retina&&e.maxZoom>0&&(e.tileSize=Math.floor(e.tileSize/2),e.zoomOffset++,e.minZoom>0&&e.minZoom--,this.options.maxZoom--),e.bounds&&(e.bounds=o.latLngBounds(e.bounds)),this._url=t;var i=this.options.subdomains;"string"==typeof i&&(this.options.subdomains=i.split(""))},onAdd:function(t){this._map=t,this._animated=t._zoomAnimated,this._initContainer(),t.on({viewreset:this._reset,moveend:this._update},this),this._animated&&t.on({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||(this._limitedUpdate=o.Util.limitExecByInterval(this._update,150,this),t.on("move",this._limitedUpdate,this)),this._reset(),this._update()},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this._container.parentNode.removeChild(this._container),t.off({viewreset:this._reset,moveend:this._update},this),this._animated&&t.off({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||t.off("move",this._limitedUpdate,this),this._container=null,this._map=null},bringToFront:function(){var t=this._map._panes.tilePane;return this._container&&(t.appendChild(this._container),this._setAutoZIndex(t,Math.max)),this},bringToBack:function(){var t=this._map._panes.tilePane;return this._container&&(t.insertBefore(this._container,t.firstChild),this._setAutoZIndex(t,Math.min)),this},getAttribution:function(){return this.options.attribution},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},setUrl:function(t,e){return this._url=t,e||this.redraw(),this},redraw:function(){return this._map&&(this._reset({hard:!0}),this._update()),this},_updateZIndex:function(){this._container&&this.options.zIndex!==i&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t,e){var i,n,o,s=t.children,a=-e(1/0,-1/0);for(n=0,o=s.length;o>n;n++)s[n]!==this._container&&(i=parseInt(s[n].style.zIndex,10),isNaN(i)||(a=e(a,i)));this.options.zIndex=this._container.style.zIndex=(isFinite(a)?a:0)+e(1,-1)},_updateOpacity:function(){var t,e=this._tiles;if(o.Browser.ielt9)for(t in e)o.DomUtil.setOpacity(e[t],this.options.opacity);else o.DomUtil.setOpacity(this._container,this.options.opacity)},_initContainer:function(){var t=this._map._panes.tilePane;if(!this._container){if(this._container=o.DomUtil.create("div","leaflet-layer"),this._updateZIndex(),this._animated){var e="leaflet-tile-container";this._bgBuffer=o.DomUtil.create("div",e,this._container),this._tileContainer=o.DomUtil.create("div",e,this._container)}else this._tileContainer=this._container;t.appendChild(this._container),this.options.opacity<1&&this._updateOpacity()}},_reset:function(t){for(var e in this._tiles)this.fire("tileunload",{tile:this._tiles[e]});this._tiles={},this._tilesToLoad=0,this.options.reuseTiles&&(this._unusedTiles=[]),this._tileContainer.innerHTML="",this._animated&&t&&t.hard&&this._clearBgBuffer(),this._initContainer()},_getTileSize:function(){var t=this._map,e=t.getZoom()+this.options.zoomOffset,i=this.options.maxNativeZoom,n=this.options.tileSize;return i&&e>i&&(n=Math.round(t.getZoomScale(e)/t.getZoomScale(i)*n)),n},_update:function(){if(this._map){var t=this._map,e=t.getPixelBounds(),i=t.getZoom(),n=this._getTileSize();if(!(i>this.options.maxZoom||i<this.options.minZoom)){var s=o.bounds(e.min.divideBy(n)._floor(),e.max.divideBy(n)._floor());this._addTilesFromCenterOut(s),(this.options.unloadInvisibleTiles||this.options.reuseTiles)&&this._removeOtherTiles(s)}}},_addTilesFromCenterOut:function(t){var i,n,s,a=[],r=t.getCenter();for(i=t.min.y;i<=t.max.y;i++)for(n=t.min.x;n<=t.max.x;n++)s=new o.Point(n,i),this._tileShouldBeLoaded(s)&&a.push(s);var h=a.length;if(0!==h){a.sort(function(t,e){return t.distanceTo(r)-e.distanceTo(r)});var l=e.createDocumentFragment();for(this._tilesToLoad||this.fire("loading"),this._tilesToLoad+=h,n=0;h>n;n++)this._addTile(a[n],l);this._tileContainer.appendChild(l)}},_tileShouldBeLoaded:function(t){if(t.x+":"+t.y in this._tiles)return!1;var e=this.options;if(!e.continuousWorld){var i=this._getWrapTileNum();if(e.noWrap&&(t.x<0||t.x>=i.x)||t.y<0||t.y>=i.y)return!1}if(e.bounds){var n=e.tileSize,o=t.multiplyBy(n),s=o.add([n,n]),a=this._map.unproject(o),r=this._map.unproject(s);if(e.continuousWorld||e.noWrap||(a=a.wrap(),r=r.wrap()),!e.bounds.intersects([a,r]))return!1}return!0},_removeOtherTiles:function(t){var e,i,n,o;for(o in this._tiles)e=o.split(":"),i=parseInt(e[0],10),n=parseInt(e[1],10),(i<t.min.x||i>t.max.x||n<t.min.y||n>t.max.y)&&this._removeTile(o)},_removeTile:function(t){var e=this._tiles[t];this.fire("tileunload",{tile:e,url:e.src}),this.options.reuseTiles?(o.DomUtil.removeClass(e,"leaflet-tile-loaded"),this._unusedTiles.push(e)):e.parentNode===this._tileContainer&&this._tileContainer.removeChild(e),o.Browser.android||(e.onload=null,e.src=o.Util.emptyImageUrl),delete this._tiles[t]},_addTile:function(t,e){var i=this._getTilePos(t),n=this._getTile();o.DomUtil.setPosition(n,i,o.Browser.chrome),this._tiles[t.x+":"+t.y]=n,this._loadTile(n,t),n.parentNode!==this._tileContainer&&e.appendChild(n)},_getZoomForUrl:function(){var t=this.options,e=this._map.getZoom();return t.zoomReverse&&(e=t.maxZoom-e),e+=t.zoomOffset,t.maxNativeZoom?Math.min(e,t.maxNativeZoom):e},_getTilePos:function(t){var e=this._map.getPixelOrigin(),i=this._getTileSize();return t.multiplyBy(i).subtract(e)},getTileUrl:function(t){return o.Util.template(this._url,o.extend({s:this._getSubdomain(t),z:t.z,x:t.x,y:t.y},this.options))},_getWrapTileNum:function(){var t=this._map.options.crs,e=t.getSize(this._map.getZoom());return e.divideBy(this._getTileSize())._floor()},_adjustTilePoint:function(t){var e=this._getWrapTileNum();this.options.continuousWorld||this.options.noWrap||(t.x=(t.x%e.x+e.x)%e.x),this.options.tms&&(t.y=e.y-t.y-1),t.z=this._getZoomForUrl()},_getSubdomain:function(t){var e=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_getTile:function(){if(this.options.reuseTiles&&this._unusedTiles.length>0){var t=this._unusedTiles.pop();return this._resetTile(t),t}return this._createTile()},_resetTile:function(){},_createTile:function(){var t=o.DomUtil.create("img","leaflet-tile");return t.style.width=t.style.height=this._getTileSize()+"px",t.galleryimg="no",t.onselectstart=t.onmousemove=o.Util.falseFn,o.Browser.ielt9&&this.options.opacity!==i&&o.DomUtil.setOpacity(t,this.options.opacity),o.Browser.mobileWebkit3d&&(t.style.WebkitBackfaceVisibility="hidden"),t},_loadTile:function(t,e){t._layer=this,t.onload=this._tileOnLoad,t.onerror=this._tileOnError,this._adjustTilePoint(e),t.src=this.getTileUrl(e),this.fire("tileloadstart",{tile:t,url:t.src})},_tileLoaded:function(){this._tilesToLoad--,this._animated&&o.DomUtil.addClass(this._tileContainer,"leaflet-zoom-animated"),this._tilesToLoad||(this.fire("load"),this._animated&&(clearTimeout(this._clearBgBufferTimer),this._clearBgBufferTimer=setTimeout(o.bind(this._clearBgBuffer,this),500)))},_tileOnLoad:function(){var t=this._layer;this.src!==o.Util.emptyImageUrl&&(o.DomUtil.addClass(this,"leaflet-tile-loaded"),t.fire("tileload",{tile:this,url:this.src})),t._tileLoaded()},_tileOnError:function(){var t=this._layer;t.fire("tileerror",{tile:this,url:this.src});var e=t.options.errorTileUrl;e&&(this.src=e),t._tileLoaded()}}),o.tileLayer=function(t,e){return new o.TileLayer(t,e)},o.TileLayer.WMS=o.TileLayer.extend({defaultWmsParams:{service:"WMS",request:"GetMap",version:"1.1.1",layers:"",styles:"",format:"image/jpeg",transparent:!1},initialize:function(t,e){this._url=t;var i=o.extend({},this.defaultWmsParams),n=e.tileSize||this.options.tileSize;i.width=i.height=e.detectRetina&&o.Browser.retina?2*n:n;for(var s in e)this.options.hasOwnProperty(s)||"crs"===s||(i[s]=e[s]);this.wmsParams=i,o.setOptions(this,e)},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var e=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[e]=this._crs.code,o.TileLayer.prototype.onAdd.call(this,t)},getTileUrl:function(t){var e=this._map,i=this.options.tileSize,n=t.multiplyBy(i),s=n.add([i,i]),a=this._crs.project(e.unproject(n,t.z)),r=this._crs.project(e.unproject(s,t.z)),h=this._wmsVersion>=1.3&&this._crs===o.CRS.EPSG4326?[r.y,a.x,a.y,r.x].join(","):[a.x,r.y,r.x,a.y].join(","),l=o.Util.template(this._url,{s:this._getSubdomain(t)});return l+o.Util.getParamString(this.wmsParams,l,!0)+"&BBOX="+h},setParams:function(t,e){return o.extend(this.wmsParams,t),e||this.redraw(),this}}),o.tileLayer.wms=function(t,e){return new o.TileLayer.WMS(t,e)},o.TileLayer.Canvas=o.TileLayer.extend({options:{async:!1},initialize:function(t){o.setOptions(this,t)},redraw:function(){this._map&&(this._reset({hard:!0}),this._update());for(var t in this._tiles)this._redrawTile(this._tiles[t]);return this},_redrawTile:function(t){this.drawTile(t,t._tilePoint,this._map._zoom)},_createTile:function(){var t=o.DomUtil.create("canvas","leaflet-tile");return t.width=t.height=this.options.tileSize,t.onselectstart=t.onmousemove=o.Util.falseFn,t},_loadTile:function(t,e){t._layer=this,t._tilePoint=e,this._redrawTile(t),this.options.async||this.tileDrawn(t)},drawTile:function(){},tileDrawn:function(t){this._tileOnLoad.call(t)}}),o.tileLayer.canvas=function(t){return new o.TileLayer.Canvas(t)},o.ImageOverlay=o.Class.extend({includes:o.Mixin.Events,options:{opacity:1},initialize:function(t,e,i){this._url=t,this._bounds=o.latLngBounds(e),o.setOptions(this,i)},onAdd:function(t){this._map=t,this._image||this._initImage(),t._panes.overlayPane.appendChild(this._image),t.on("viewreset",this._reset,this),t.options.zoomAnimation&&o.Browser.any3d&&t.on("zoomanim",this._animateZoom,this),this._reset()},onRemove:function(t){t.getPanes().overlayPane.removeChild(this._image),t.off("viewreset",this._reset,this),t.options.zoomAnimation&&t.off("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},bringToFront:function(){return this._image&&this._map._panes.overlayPane.appendChild(this._image),this},bringToBack:function(){var t=this._map._panes.overlayPane;return this._image&&t.insertBefore(this._image,t.firstChild),this},setUrl:function(t){this._url=t,this._image.src=this._url},getAttribution:function(){return this.options.attribution},_initImage:function(){this._image=o.DomUtil.create("img","leaflet-image-layer"),this._map.options.zoomAnimation&&o.Browser.any3d?o.DomUtil.addClass(this._image,"leaflet-zoom-animated"):o.DomUtil.addClass(this._image,"leaflet-zoom-hide"),this._updateOpacity(),o.extend(this._image,{galleryimg:"no",onselectstart:o.Util.falseFn,onmousemove:o.Util.falseFn,onload:o.bind(this._onImageLoad,this),src:this._url})},_animateZoom:function(t){var e=this._map,i=this._image,n=e.getZoomScale(t.zoom),s=this._bounds.getNorthWest(),a=this._bounds.getSouthEast(),r=e._latLngToNewLayerPoint(s,t.zoom,t.center),h=e._latLngToNewLayerPoint(a,t.zoom,t.center)._subtract(r),l=r._add(h._multiplyBy(.5*(1-1/n)));i.style[o.DomUtil.TRANSFORM]=o.DomUtil.getTranslateString(l)+" scale("+n+") "},_reset:function(){var t=this._image,e=this._map.latLngToLayerPoint(this._bounds.getNorthWest()),i=this._map.latLngToLayerPoint(this._bounds.getSouthEast())._subtract(e);o.DomUtil.setPosition(t,e),t.style.width=i.x+"px",t.style.height=i.y+"px"},_onImageLoad:function(){this.fire("load")},_updateOpacity:function(){o.DomUtil.setOpacity(this._image,this.options.opacity)}}),o.imageOverlay=function(t,e,i){return new o.ImageOverlay(t,e,i)},o.Icon=o.Class.extend({options:{className:""},initialize:function(t){o.setOptions(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){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n;return n=e&&"IMG"===e.tagName?this._createImg(i,e):this._createImg(i),this._setIconStyles(n,t),n},_setIconStyles:function(t,e){var i,n=this.options,s=o.point(n[e+"Size"]);i=o.point("shadow"===e?n.shadowAnchor||n.iconAnchor:n.iconAnchor),!i&&s&&(i=s.divideBy(2,!0)),t.className="leaflet-marker-"+e+" "+n.className,i&&(t.style.marginLeft=-i.x+"px",t.style.marginTop=-i.y+"px"),s&&(t.style.width=s.x+"px",t.style.height=s.y+"px")},_createImg:function(t,i){return i=i||e.createElement("img"),i.src=t,i},_getIconUrl:function(t){return o.Browser.retina&&this.options[t+"RetinaUrl"]?this.options[t+"RetinaUrl"]:this.options[t+"Url"]}}),o.icon=function(t){return new o.Icon(t)},o.Icon.Default=o.Icon.extend({options:{iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],shadowSize:[41,41]},_getIconUrl:function(t){var e=t+"Url";if(this.options[e])return this.options[e];o.Browser.retina&&"icon"===t&&(t+="-2x");var i=o.Icon.Default.imagePath;if(!i)throw new Error("Couldn't autodetect L.Icon.Default.imagePath, set it manually.");return i+"/marker-"+t+".png"}}),o.Icon.Default.imagePath=function(){var t,i,n,o,s,a=e.getElementsByTagName("script"),r=/[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/;for(t=0,i=a.length;i>t;t++)if(n=a[t].src,o=n.match(r))return s=n.split(r)[0],(s?s+"/":"")+"images"}(),o.Marker=o.Class.extend({includes:o.Mixin.Events,options:{icon:new o.Icon.Default,title:"",alt:"",clickable:!0,draggable:!1,keyboard:!0,zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250},initialize:function(t,e){o.setOptions(this,e),this._latlng=o.latLng(t)},onAdd:function(t){this._map=t,t.on("viewreset",this.update,this),this._initIcon(),this.update(),this.fire("add"),t.options.zoomAnimation&&t.options.markerZoomAnimation&&t.on("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this.dragging&&this.dragging.disable(),this._removeIcon(),this._removeShadow(),this.fire("remove"),t.off({viewreset:this.update,zoomanim:this._animateZoom},this),this._map=null},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=o.latLng(t),this.update(),this.fire("move",{latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update(),this},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup),this},update:function(){if(this._icon){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,e=this._map,i=e.options.zoomAnimation&&e.options.markerZoomAnimation,n=i?"leaflet-zoom-animated":"leaflet-zoom-hide",s=t.icon.createIcon(this._icon),a=!1;s!==this._icon&&(this._icon&&this._removeIcon(),a=!0,t.title&&(s.title=t.title),t.alt&&(s.alt=t.alt)),o.DomUtil.addClass(s,n),t.keyboard&&(s.tabIndex="0"),this._icon=s,this._initInteraction(),t.riseOnHover&&o.DomEvent.on(s,"mouseover",this._bringToFront,this).on(s,"mouseout",this._resetZIndex,this);var r=t.icon.createShadow(this._shadow),h=!1;r!==this._shadow&&(this._removeShadow(),h=!0),r&&o.DomUtil.addClass(r,n),this._shadow=r,t.opacity<1&&this._updateOpacity();var l=this._map._panes;a&&l.markerPane.appendChild(this._icon),r&&h&&l.shadowPane.appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&o.DomEvent.off(this._icon,"mouseover",this._bringToFront).off(this._icon,"mouseout",this._resetZIndex),this._map._panes.markerPane.removeChild(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&this._map._panes.shadowPane.removeChild(this._shadow),this._shadow=null},_setPos:function(t){o.DomUtil.setPosition(this._icon,t),this._shadow&&o.DomUtil.setPosition(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(e)},_initInteraction:function(){if(this.options.clickable){var t=this._icon,e=["dblclick","mousedown","mouseover","mouseout","contextmenu"];o.DomUtil.addClass(t,"leaflet-clickable"),o.DomEvent.on(t,"click",this._onMouseClick,this),o.DomEvent.on(t,"keypress",this._onKeyPress,this);for(var i=0;i<e.length;i++)o.DomEvent.on(t,e[i],this._fireMouseEvent,this);o.Handler.MarkerDrag&&(this.dragging=new o.Handler.MarkerDrag(this),this.options.draggable&&this.dragging.enable())}},_onMouseClick:function(t){var e=this.dragging&&this.dragging.moved();(this.hasEventListeners(t.type)||e)&&o.DomEvent.stopPropagation(t),e||(this.dragging&&this.dragging._enabled||!this._map.dragging||!this._map.dragging.moved())&&this.fire(t.type,{originalEvent:t,latlng:this._latlng})},_onKeyPress:function(t){13===t.keyCode&&this.fire("click",{originalEvent:t,latlng:this._latlng})},_fireMouseEvent:function(t){this.fire(t.type,{originalEvent:t,latlng:this._latlng}),"contextmenu"===t.type&&this.hasEventListeners(t.type)&&o.DomEvent.preventDefault(t),"mousedown"!==t.type?o.DomEvent.stopPropagation(t):o.DomEvent.preventDefault(t)},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){o.DomUtil.setOpacity(this._icon,this.options.opacity),this._shadow&&o.DomUtil.setOpacity(this._shadow,this.options.opacity)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)}}),o.marker=function(t,e){return new o.Marker(t,e)},o.DivIcon=o.Icon.extend({options:{iconSize:[12,12],className:"leaflet-div-icon",html:!1},createIcon:function(t){var i=t&&"DIV"===t.tagName?t:e.createElement("div"),n=this.options;return i.innerHTML=n.html!==!1?n.html:"",n.bgPos&&(i.style.backgroundPosition=-n.bgPos.x+"px "+-n.bgPos.y+"px"),this._setIconStyles(i,"icon"),i},createShadow:function(){return null}}),o.divIcon=function(t){return new o.DivIcon(t)},o.Map.mergeOptions({closePopupOnClick:!0}),o.Popup=o.Class.extend({includes:o.Mixin.Events,options:{minWidth:50,maxWidth:300,autoPan:!0,closeButton:!0,offset:[0,7],autoPanPadding:[5,5],keepInView:!1,className:"",zoomAnimation:!0},initialize:function(t,e){o.setOptions(this,t),this._source=e,this._animated=o.Browser.any3d&&this.options.zoomAnimation,this._isOpen=!1},onAdd:function(t){this._map=t,this._container||this._initLayout();var e=t.options.fadeAnimation;e&&o.DomUtil.setOpacity(this._container,0),t._panes.popupPane.appendChild(this._container),t.on(this._getEvents(),this),this.update(),e&&o.DomUtil.setOpacity(this._container,1),this.fire("open"),t.fire("popupopen",{popup:this}),this._source&&this._source.fire("popupopen",{popup:this})},addTo:function(t){return t.addLayer(this),this},openOn:function(t){return t.openPopup(this),this},onRemove:function(t){t._panes.popupPane.removeChild(this._container),o.Util.falseFn(this._container.offsetWidth),t.off(this._getEvents(),this),t.options.fadeAnimation&&o.DomUtil.setOpacity(this._container,0),this._map=null,this.fire("close"),t.fire("popupclose",{popup:this}),this._source&&this._source.fire("popupclose",{popup:this})},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=o.latLng(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},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={viewreset:this._updatePosition};return this._animated&&(t.zoomanim=this._zoomAnimation),("closeOnClick"in this.options?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t,e="leaflet-popup",i=e+" "+this.options.className+" leaflet-zoom-"+(this._animated?"animated":"hide"),n=this._container=o.DomUtil.create("div",i);this.options.closeButton&&(t=this._closeButton=o.DomUtil.create("a",e+"-close-button",n),t.href="#close",t.innerHTML="&#215;",o.DomEvent.disableClickPropagation(t),o.DomEvent.on(t,"click",this._onCloseButtonClick,this));var s=this._wrapper=o.DomUtil.create("div",e+"-content-wrapper",n);o.DomEvent.disableClickPropagation(s),this._contentNode=o.DomUtil.create("div",e+"-content",s),o.DomEvent.disableScrollPropagation(this._contentNode),o.DomEvent.on(s,"contextmenu",o.DomEvent.stopPropagation),this._tipContainer=o.DomUtil.create("div",e+"-tip-container",n),this._tip=o.DomUtil.create("div",e+"-tip",this._tipContainer)},_updateContent:function(){if(this._content){if("string"==typeof this._content)this._contentNode.innerHTML=this._content;else{for(;this._contentNode.hasChildNodes();)this._contentNode.removeChild(this._contentNode.firstChild);this._contentNode.appendChild(this._content)}this.fire("contentupdate")}},_updateLayout:function(){var t=this._contentNode,e=t.style;e.width="",e.whiteSpace="nowrap";var i=t.offsetWidth;i=Math.min(i,this.options.maxWidth),i=Math.max(i,this.options.minWidth),e.width=i+1+"px",e.whiteSpace="",e.height="";var n=t.offsetHeight,s=this.options.maxHeight,a="leaflet-popup-scrolled";s&&n>s?(e.height=s+"px",o.DomUtil.addClass(t,a)):o.DomUtil.removeClass(t,a),this._containerWidth=this._container.offsetWidth},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),e=this._animated,i=o.point(this.options.offset);e&&o.DomUtil.setPosition(this._container,t),this._containerBottom=-i.y-(e?0:t.y),this._containerLeft=-Math.round(this._containerWidth/2)+i.x+(e?0:t.x),this._container.style.bottom=this._containerBottom+"px",this._container.style.left=this._containerLeft+"px"}},_zoomAnimation:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);o.DomUtil.setPosition(this._container,e)},_adjustPan:function(){if(this.options.autoPan){var t=this._map,e=this._container.offsetHeight,i=this._containerWidth,n=new o.Point(this._containerLeft,-e-this._containerBottom);this._animated&&n._add(o.DomUtil.getPosition(this._container));var s=t.layerPointToContainerPoint(n),a=o.point(this.options.autoPanPadding),r=o.point(this.options.autoPanPaddingTopLeft||a),h=o.point(this.options.autoPanPaddingBottomRight||a),l=t.getSize(),u=0,c=0;s.x+i+h.x>l.x&&(u=s.x+i-l.x+h.x),s.x-u-r.x<0&&(u=s.x-r.x),s.y+e+h.y>l.y&&(c=s.y+e-l.y+h.y),s.y-c-r.y<0&&(c=s.y-r.y),(u||c)&&t.fire("autopanstart").panBy([u,c])}},_onCloseButtonClick:function(t){this._close(),o.DomEvent.stop(t)}}),o.popup=function(t,e){return new o.Popup(t,e)},o.Map.include({openPopup:function(t,e,i){if(this.closePopup(),!(t instanceof o.Popup)){var n=t;t=new o.Popup(i).setLatLng(e).setContent(n)}return t._isOpen=!0,this._popup=t,this.addLayer(t)},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&(this.removeLayer(t),t._isOpen=!1),this}}),o.Marker.include({openPopup:function(){return this._popup&&this._map&&!this._map.hasLayer(this._popup)&&(this._popup.setLatLng(this._latlng),this._map.openPopup(this._popup)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(){return this._popup&&(this._popup._isOpen?this.closePopup():this.openPopup()),this},bindPopup:function(t,e){var i=o.point(this.options.icon.options.popupAnchor||[0,0]);return i=i.add(o.Popup.prototype.options.offset),e&&e.offset&&(i=i.add(e.offset)),e=o.extend({offset:i},e),this._popupHandlersAdded||(this.on("click",this.togglePopup,this).on("remove",this.closePopup,this).on("move",this._movePopup,this),this._popupHandlersAdded=!0),t instanceof o.Popup?(o.setOptions(t,e),this._popup=t):this._popup=new o.Popup(e,this).setContent(t),this},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},unbindPopup:function(){return this._popup&&(this._popup=null,this.off("click",this.togglePopup,this).off("remove",this.closePopup,this).off("move",this._movePopup,this),this._popupHandlersAdded=!1),this},getPopup:function(){return this._popup},_movePopup:function(t){this._popup.setLatLng(t.latlng)}}),o.LayerGroup=o.Class.extend({initialize:function(t){this._layers={};var e,i;if(t)for(e=0,i=t.length;i>e;e++)this.addLayer(t[e])},addLayer:function(t){var e=this.getLayerId(t);return this._layers[e]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var e=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[e]&&this._map.removeLayer(this._layers[e]),delete this._layers[e],this},hasLayer:function(t){return t?t in this._layers||this.getLayerId(t)in this._layers:!1},clearLayers:function(){return this.eachLayer(this.removeLayer,this),this},invoke:function(t){var e,i,n=Array.prototype.slice.call(arguments,1);for(e in this._layers)i=this._layers[e],i[t]&&i[t].apply(i,n);return this},onAdd:function(t){this._map=t,this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t),this._map=null},addTo:function(t){return t.addLayer(this),this},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=[];for(var e in this._layers)t.push(this._layers[e]);return t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return o.stamp(t)}}),o.layerGroup=function(t){return new o.LayerGroup(t)},o.FeatureGroup=o.LayerGroup.extend({includes:o.Mixin.Events,statics:{EVENTS:"click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose"},addLayer:function(t){return this.hasLayer(t)?this:("on"in t&&t.on(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.addLayer.call(this,t),this._popupContent&&t.bindPopup&&t.bindPopup(this._popupContent,this._popupOptions),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.off(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.removeLayer.call(this,t),this._popupContent&&this.invoke("unbindPopup"),this.fire("layerremove",{layer:t})):this},bindPopup:function(t,e){return this._popupContent=t,this._popupOptions=e,this.invoke("bindPopup",t,e)},openPopup:function(t){for(var e in this._layers){this._layers[e].openPopup(t);break}return 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=new o.LatLngBounds;return this.eachLayer(function(e){t.extend(e instanceof o.Marker?e.getLatLng():e.getBounds())}),t},_propagateEvent:function(t){t=o.extend({layer:t.target,target:this},t),this.fire(t.type,t)}}),o.featureGroup=function(t){return new o.FeatureGroup(t)},o.Path=o.Class.extend({includes:[o.Mixin.Events],statics:{CLIP_PADDING:function(){var e=o.Browser.mobile?1280:2e3,i=(e/Math.max(t.outerWidth,t.outerHeight)-1)/2;return Math.max(0,Math.min(.5,i))}()},options:{stroke:!0,color:"#0033ff",dashArray:null,lineCap:null,lineJoin:null,weight:5,opacity:.5,fill:!1,fillColor:null,fillOpacity:.2,clickable:!0},initialize:function(t){o.setOptions(this,t)},onAdd:function(t){this._map=t,this._container||(this._initElements(),this._initEvents()),this.projectLatlngs(),this._updatePath(),this._container&&this._map._pathRoot.appendChild(this._container),this.fire("add"),t.on({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){t._pathRoot.removeChild(this._container),this.fire("remove"),this._map=null,o.Browser.vml&&(this._container=null,this._stroke=null,this._fill=null),t.off({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},projectLatlngs:function(){},setStyle:function(t){return o.setOptions(this,t),this._container&&this._updateStyle(),this},redraw:function(){return this._map&&(this.projectLatlngs(),this._updatePath()),this}}),o.Map.include({_updatePathViewport:function(){var t=o.Path.CLIP_PADDING,e=this.getSize(),i=o.DomUtil.getPosition(this._mapPane),n=i.multiplyBy(-1)._subtract(e.multiplyBy(t)._round()),s=n.add(e.multiplyBy(1+2*t)._round());this._pathViewport=new o.Bounds(n,s)}}),o.Path.SVG_NS="http://www.w3.org/2000/svg",o.Browser.svg=!(!e.createElementNS||!e.createElementNS(o.Path.SVG_NS,"svg").createSVGRect),o.Path=o.Path.extend({statics:{SVG:o.Browser.svg},bringToFront:function(){var t=this._map._pathRoot,e=this._container;return e&&t.lastChild!==e&&t.appendChild(e),this},bringToBack:function(){var t=this._map._pathRoot,e=this._container,i=t.firstChild;return e&&i!==e&&t.insertBefore(e,i),this},getPathString:function(){},_createElement:function(t){return e.createElementNS(o.Path.SVG_NS,t)},_initElements:function(){this._map._initPathRoot(),this._initPath(),this._initStyle()},_initPath:function(){this._container=this._createElement("g"),this._path=this._createElement("path"),this.options.className&&o.DomUtil.addClass(this._path,this.options.className),this._container.appendChild(this._path)},_initStyle:function(){this.options.stroke&&(this._path.setAttribute("stroke-linejoin","round"),this._path.setAttribute("stroke-linecap","round")),this.options.fill&&this._path.setAttribute("fill-rule","evenodd"),this.options.pointerEvents&&this._path.setAttribute("pointer-events",this.options.pointerEvents),this.options.clickable||this.options.pointerEvents||this._path.setAttribute("pointer-events","none"),this._updateStyle()},_updateStyle:function(){this.options.stroke?(this._path.setAttribute("stroke",this.options.color),this._path.setAttribute("stroke-opacity",this.options.opacity),this._path.setAttribute("stroke-width",this.options.weight),this.options.dashArray?this._path.setAttribute("stroke-dasharray",this.options.dashArray):this._path.removeAttribute("stroke-dasharray"),this.options.lineCap&&this._path.setAttribute("stroke-linecap",this.options.lineCap),this.options.lineJoin&&this._path.setAttribute("stroke-linejoin",this.options.lineJoin)):this._path.setAttribute("stroke","none"),this.options.fill?(this._path.setAttribute("fill",this.options.fillColor||this.options.color),this._path.setAttribute("fill-opacity",this.options.fillOpacity)):this._path.setAttribute("fill","none")},_updatePath:function(){var t=this.getPathString();t||(t="M0 0"),this._path.setAttribute("d",t)},_initEvents:function(){if(this.options.clickable){(o.Browser.svg||!o.Browser.vml)&&o.DomUtil.addClass(this._path,"leaflet-clickable"),o.DomEvent.on(this._container,"click",this._onMouseClick,this);for(var t=["dblclick","mousedown","mouseover","mouseout","mousemove","contextmenu"],e=0;e<t.length;e++)o.DomEvent.on(this._container,t[e],this._fireMouseEvent,this)}},_onMouseClick:function(t){this._map.dragging&&this._map.dragging.moved()||this._fireMouseEvent(t)},_fireMouseEvent:function(t){if(this.hasEventListeners(t.type)){var e=this._map,i=e.mouseEventToContainerPoint(t),n=e.containerPointToLayerPoint(i),s=e.layerPointToLatLng(n);this.fire(t.type,{latlng:s,layerPoint:n,containerPoint:i,originalEvent:t}),"contextmenu"===t.type&&o.DomEvent.preventDefault(t),"mousemove"!==t.type&&o.DomEvent.stopPropagation(t)}}}),o.Map.include({_initPathRoot:function(){this._pathRoot||(this._pathRoot=o.Path.prototype._createElement("svg"),this._panes.overlayPane.appendChild(this._pathRoot),this.options.zoomAnimation&&o.Browser.any3d?(o.DomUtil.addClass(this._pathRoot,"leaflet-zoom-animated"),this.on({zoomanim:this._animatePathZoom,zoomend:this._endPathZoom})):o.DomUtil.addClass(this._pathRoot,"leaflet-zoom-hide"),this.on("moveend",this._updateSvgViewport),this._updateSvgViewport())
-},_animatePathZoom:function(t){var e=this.getZoomScale(t.zoom),i=this._getCenterOffset(t.center)._multiplyBy(-e)._add(this._pathViewport.min);this._pathRoot.style[o.DomUtil.TRANSFORM]=o.DomUtil.getTranslateString(i)+" scale("+e+") ",this._pathZooming=!0},_endPathZoom:function(){this._pathZooming=!1},_updateSvgViewport:function(){if(!this._pathZooming){this._updatePathViewport();var t=this._pathViewport,e=t.min,i=t.max,n=i.x-e.x,s=i.y-e.y,a=this._pathRoot,r=this._panes.overlayPane;o.Browser.mobileWebkit&&r.removeChild(a),o.DomUtil.setPosition(a,e),a.setAttribute("width",n),a.setAttribute("height",s),a.setAttribute("viewBox",[e.x,e.y,n,s].join(" ")),o.Browser.mobileWebkit&&r.appendChild(a)}}}),o.Path.include({bindPopup:function(t,e){return t instanceof o.Popup?this._popup=t:((!this._popup||e)&&(this._popup=new o.Popup(e,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on("click",this._openPopup,this).on("remove",this.closePopup,this),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this._popup=null,this.off("click",this._openPopup).off("remove",this.closePopup),this._popupHandlersAdded=!1),this},openPopup:function(t){return this._popup&&(t=t||this._latlng||this._latlngs[Math.floor(this._latlngs.length/2)],this._openPopup({latlng:t})),this},closePopup:function(){return this._popup&&this._popup._close(),this},_openPopup:function(t){this._popup.setLatLng(t.latlng),this._map.openPopup(this._popup)}}),o.Browser.vml=!o.Browser.svg&&function(){try{var t=e.createElement("div");t.innerHTML='<v:shape adj="1"/>';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(n){return!1}}(),o.Path=o.Browser.svg||!o.Browser.vml?o.Path:o.Path.extend({statics:{VML:!0,CLIP_PADDING:.02},_createElement:function(){try{return e.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return e.createElement("<lvml:"+t+' class="lvml">')}}catch(t){return function(t){return e.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),_initPath:function(){var t=this._container=this._createElement("shape");o.DomUtil.addClass(t,"leaflet-vml-shape"+(this.options.className?" "+this.options.className:"")),this.options.clickable&&o.DomUtil.addClass(t,"leaflet-clickable"),t.coordsize="1 1",this._path=this._createElement("path"),t.appendChild(this._path),this._map._pathRoot.appendChild(t)},_initStyle:function(){this._updateStyle()},_updateStyle:function(){var t=this._stroke,e=this._fill,i=this.options,n=this._container;n.stroked=i.stroke,n.filled=i.fill,i.stroke?(t||(t=this._stroke=this._createElement("stroke"),t.endcap="round",n.appendChild(t)),t.weight=i.weight+"px",t.color=i.color,t.opacity=i.opacity,t.dashStyle=i.dashArray?o.Util.isArray(i.dashArray)?i.dashArray.join(" "):i.dashArray.replace(/( *, *)/g," "):"",i.lineCap&&(t.endcap=i.lineCap.replace("butt","flat")),i.lineJoin&&(t.joinstyle=i.lineJoin)):t&&(n.removeChild(t),this._stroke=null),i.fill?(e||(e=this._fill=this._createElement("fill"),n.appendChild(e)),e.color=i.fillColor||i.color,e.opacity=i.fillOpacity):e&&(n.removeChild(e),this._fill=null)},_updatePath:function(){var t=this._container.style;t.display="none",this._path.v=this.getPathString()+" ",t.display=""}}),o.Map.include(o.Browser.svg||!o.Browser.vml?{}:{_initPathRoot:function(){if(!this._pathRoot){var t=this._pathRoot=e.createElement("div");t.className="leaflet-vml-container",this._panes.overlayPane.appendChild(t),this.on("moveend",this._updatePathViewport),this._updatePathViewport()}}}),o.Browser.canvas=function(){return!!e.createElement("canvas").getContext}(),o.Path=o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?o.Path:o.Path.extend({statics:{CANVAS:!0,SVG:!1},redraw:function(){return this._map&&(this.projectLatlngs(),this._requestUpdate()),this},setStyle:function(t){return o.setOptions(this,t),this._map&&(this._updateStyle(),this._requestUpdate()),this},onRemove:function(t){t.off("viewreset",this.projectLatlngs,this).off("moveend",this._updatePath,this),this.options.clickable&&(this._map.off("click",this._onClick,this),this._map.off("mousemove",this._onMouseMove,this)),this._requestUpdate(),this.fire("remove"),this._map=null},_requestUpdate:function(){this._map&&!o.Path._updateRequest&&(o.Path._updateRequest=o.Util.requestAnimFrame(this._fireMapMoveEnd,this._map))},_fireMapMoveEnd:function(){o.Path._updateRequest=null,this.fire("moveend")},_initElements:function(){this._map._initPathRoot(),this._ctx=this._map._canvasCtx},_updateStyle:function(){var t=this.options;t.stroke&&(this._ctx.lineWidth=t.weight,this._ctx.strokeStyle=t.color),t.fill&&(this._ctx.fillStyle=t.fillColor||t.color)},_drawPath:function(){var t,e,i,n,s,a;for(this._ctx.beginPath(),t=0,i=this._parts.length;i>t;t++){for(e=0,n=this._parts[t].length;n>e;e++)s=this._parts[t][e],a=(0===e?"move":"line")+"To",this._ctx[a](s.x,s.y);this instanceof o.Polygon&&this._ctx.closePath()}},_checkIfEmpty:function(){return!this._parts.length},_updatePath:function(){if(!this._checkIfEmpty()){var t=this._ctx,e=this.options;this._drawPath(),t.save(),this._updateStyle(),e.fill&&(t.globalAlpha=e.fillOpacity,t.fill()),e.stroke&&(t.globalAlpha=e.opacity,t.stroke()),t.restore()}},_initEvents:function(){this.options.clickable&&(this._map.on("mousemove",this._onMouseMove,this),this._map.on("click",this._onClick,this))},_onClick:function(t){this._containsPoint(t.layerPoint)&&this.fire("click",t)},_onMouseMove:function(t){this._map&&!this._map._animatingZoom&&(this._containsPoint(t.layerPoint)?(this._ctx.canvas.style.cursor="pointer",this._mouseInside=!0,this.fire("mouseover",t)):this._mouseInside&&(this._ctx.canvas.style.cursor="",this._mouseInside=!1,this.fire("mouseout",t)))}}),o.Map.include(o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?{}:{_initPathRoot:function(){var t,i=this._pathRoot;i||(i=this._pathRoot=e.createElement("canvas"),i.style.position="absolute",t=this._canvasCtx=i.getContext("2d"),t.lineCap="round",t.lineJoin="round",this._panes.overlayPane.appendChild(i),this.options.zoomAnimation&&(this._pathRoot.className="leaflet-zoom-animated",this.on("zoomanim",this._animatePathZoom),this.on("zoomend",this._endPathZoom)),this.on("moveend",this._updateCanvasViewport),this._updateCanvasViewport())},_updateCanvasViewport:function(){if(!this._pathZooming){this._updatePathViewport();var t=this._pathViewport,e=t.min,i=t.max.subtract(e),n=this._pathRoot;o.DomUtil.setPosition(n,e),n.width=i.x,n.height=i.y,n.getContext("2d").translate(-e.x,-e.y)}}}),o.LineUtil={simplify:function(t,e){if(!e||!t.length)return t.slice();var i=e*e;return t=this._reducePoints(t,i),t=this._simplifyDP(t,i)},pointToSegmentDistance:function(t,e,i){return Math.sqrt(this._sqClosestPointOnSegment(t,e,i,!0))},closestPointOnSegment:function(t,e,i){return this._sqClosestPointOnSegment(t,e,i)},_simplifyDP:function(t,e){var n=t.length,o=typeof Uint8Array!=i+""?Uint8Array:Array,s=new o(n);s[0]=s[n-1]=1,this._simplifyDPStep(t,s,e,0,n-1);var a,r=[];for(a=0;n>a;a++)s[a]&&r.push(t[a]);return r},_simplifyDPStep:function(t,e,i,n,o){var s,a,r,h=0;for(a=n+1;o-1>=a;a++)r=this._sqClosestPointOnSegment(t[a],t[n],t[o],!0),r>h&&(s=a,h=r);h>i&&(e[s]=1,this._simplifyDPStep(t,e,i,n,s),this._simplifyDPStep(t,e,i,s,o))},_reducePoints:function(t,e){for(var i=[t[0]],n=1,o=0,s=t.length;s>n;n++)this._sqDist(t[n],t[o])>e&&(i.push(t[n]),o=n);return s-1>o&&i.push(t[s-1]),i},clipSegment:function(t,e,i,n){var o,s,a,r=n?this._lastCode:this._getBitCode(t,i),h=this._getBitCode(e,i);for(this._lastCode=h;;){if(!(r|h))return[t,e];if(r&h)return!1;o=r||h,s=this._getEdgeIntersection(t,e,o,i),a=this._getBitCode(s,i),o===r?(t=s,r=a):(e=s,h=a)}},_getEdgeIntersection:function(t,e,i,n){var s=e.x-t.x,a=e.y-t.y,r=n.min,h=n.max;return 8&i?new o.Point(t.x+s*(h.y-t.y)/a,h.y):4&i?new o.Point(t.x+s*(r.y-t.y)/a,r.y):2&i?new o.Point(h.x,t.y+a*(h.x-t.x)/s):1&i?new o.Point(r.x,t.y+a*(r.x-t.x)/s):void 0},_getBitCode:function(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},_sqDist:function(t,e){var i=e.x-t.x,n=e.y-t.y;return i*i+n*n},_sqClosestPointOnSegment:function(t,e,i,n){var s,a=e.x,r=e.y,h=i.x-a,l=i.y-r,u=h*h+l*l;return u>0&&(s=((t.x-a)*h+(t.y-r)*l)/u,s>1?(a=i.x,r=i.y):s>0&&(a+=h*s,r+=l*s)),h=t.x-a,l=t.y-r,n?h*h+l*l:new o.Point(a,r)}},o.Polyline=o.Path.extend({initialize:function(t,e){o.Path.prototype.initialize.call(this,e),this._latlngs=this._convertLatLngs(t)},options:{smoothFactor:1,noClip:!1},projectLatlngs:function(){this._originalPoints=[];for(var t=0,e=this._latlngs.length;e>t;t++)this._originalPoints[t]=this._map.latLngToLayerPoint(this._latlngs[t])},getPathString:function(){for(var t=0,e=this._parts.length,i="";e>t;t++)i+=this._getPathPartStr(this._parts[t]);return i},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._latlngs=this._convertLatLngs(t),this.redraw()},addLatLng:function(t){return this._latlngs.push(o.latLng(t)),this.redraw()},spliceLatLngs:function(){var t=[].splice.apply(this._latlngs,arguments);return this._convertLatLngs(this._latlngs,!0),this.redraw(),t},closestLayerPoint:function(t){for(var e,i,n=1/0,s=this._parts,a=null,r=0,h=s.length;h>r;r++)for(var l=s[r],u=1,c=l.length;c>u;u++){e=l[u-1],i=l[u];var d=o.LineUtil._sqClosestPointOnSegment(t,e,i,!0);n>d&&(n=d,a=o.LineUtil._sqClosestPointOnSegment(t,e,i))}return a&&(a.distance=Math.sqrt(n)),a},getBounds:function(){return new o.LatLngBounds(this.getLatLngs())},_convertLatLngs:function(t,e){var i,n,s=e?t:[];for(i=0,n=t.length;n>i;i++){if(o.Util.isArray(t[i])&&"number"!=typeof t[i][0])return;s[i]=o.latLng(t[i])}return s},_initEvents:function(){o.Path.prototype._initEvents.call(this)},_getPathPartStr:function(t){for(var e,i=o.Path.VML,n=0,s=t.length,a="";s>n;n++)e=t[n],i&&e._round(),a+=(n?"L":"M")+e.x+" "+e.y;return a},_clipPoints:function(){var t,e,i,n=this._originalPoints,s=n.length;if(this.options.noClip)return void(this._parts=[n]);this._parts=[];var a=this._parts,r=this._map._pathViewport,h=o.LineUtil;for(t=0,e=0;s-1>t;t++)i=h.clipSegment(n[t],n[t+1],r,t),i&&(a[e]=a[e]||[],a[e].push(i[0]),(i[1]!==n[t+1]||t===s-2)&&(a[e].push(i[1]),e++))},_simplifyPoints:function(){for(var t=this._parts,e=o.LineUtil,i=0,n=t.length;n>i;i++)t[i]=e.simplify(t[i],this.options.smoothFactor)},_updatePath:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),o.Path.prototype._updatePath.call(this))}}),o.polyline=function(t,e){return new o.Polyline(t,e)},o.PolyUtil={},o.PolyUtil.clipPolygon=function(t,e){var i,n,s,a,r,h,l,u,c,d=[1,4,2,8],p=o.LineUtil;for(n=0,l=t.length;l>n;n++)t[n]._code=p._getBitCode(t[n],e);for(a=0;4>a;a++){for(u=d[a],i=[],n=0,l=t.length,s=l-1;l>n;s=n++)r=t[n],h=t[s],r._code&u?h._code&u||(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)):(h._code&u&&(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)),i.push(r));t=i}return t},o.Polygon=o.Polyline.extend({options:{fill:!0},initialize:function(t,e){o.Polyline.prototype.initialize.call(this,t,e),this._initWithHoles(t)},_initWithHoles:function(t){var e,i,n;if(t&&o.Util.isArray(t[0])&&"number"!=typeof t[0][0])for(this._latlngs=this._convertLatLngs(t[0]),this._holes=t.slice(1),e=0,i=this._holes.length;i>e;e++)n=this._holes[e]=this._convertLatLngs(this._holes[e]),n[0].equals(n[n.length-1])&&n.pop();t=this._latlngs,t.length>=2&&t[0].equals(t[t.length-1])&&t.pop()},projectLatlngs:function(){if(o.Polyline.prototype.projectLatlngs.call(this),this._holePoints=[],this._holes){var t,e,i,n;for(t=0,i=this._holes.length;i>t;t++)for(this._holePoints[t]=[],e=0,n=this._holes[t].length;n>e;e++)this._holePoints[t][e]=this._map.latLngToLayerPoint(this._holes[t][e])}},setLatLngs:function(t){return t&&o.Util.isArray(t[0])&&"number"!=typeof t[0][0]?(this._initWithHoles(t),this.redraw()):o.Polyline.prototype.setLatLngs.call(this,t)},_clipPoints:function(){var t=this._originalPoints,e=[];if(this._parts=[t].concat(this._holePoints),!this.options.noClip){for(var i=0,n=this._parts.length;n>i;i++){var s=o.PolyUtil.clipPolygon(this._parts[i],this._map._pathViewport);s.length&&e.push(s)}this._parts=e}},_getPathPartStr:function(t){var e=o.Polyline.prototype._getPathPartStr.call(this,t);return e+(o.Browser.svg?"z":"x")}}),o.polygon=function(t,e){return new o.Polygon(t,e)},function(){function t(t){return o.FeatureGroup.extend({initialize:function(t,e){this._layers={},this._options=e,this.setLatLngs(t)},setLatLngs:function(e){var i=0,n=e.length;for(this.eachLayer(function(t){n>i?t.setLatLngs(e[i++]):this.removeLayer(t)},this);n>i;)this.addLayer(new t(e[i++],this._options));return this},getLatLngs:function(){var t=[];return this.eachLayer(function(e){t.push(e.getLatLngs())}),t}})}o.MultiPolyline=t(o.Polyline),o.MultiPolygon=t(o.Polygon),o.multiPolyline=function(t,e){return new o.MultiPolyline(t,e)},o.multiPolygon=function(t,e){return new o.MultiPolygon(t,e)}}(),o.Rectangle=o.Polygon.extend({initialize:function(t,e){o.Polygon.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=o.latLngBounds(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}}),o.rectangle=function(t,e){return new o.Rectangle(t,e)},o.Circle=o.Path.extend({initialize:function(t,e,i){o.Path.prototype.initialize.call(this,i),this._latlng=o.latLng(t),this._mRadius=e},options:{fill:!0},setLatLng:function(t){return this._latlng=o.latLng(t),this.redraw()},setRadius:function(t){return this._mRadius=t,this.redraw()},projectLatlngs:function(){var t=this._getLngRadius(),e=this._latlng,i=this._map.latLngToLayerPoint([e.lat,e.lng-t]);this._point=this._map.latLngToLayerPoint(e),this._radius=Math.max(this._point.x-i.x,1)},getBounds:function(){var t=this._getLngRadius(),e=this._mRadius/40075017*360,i=this._latlng;return new o.LatLngBounds([i.lat-e,i.lng-t],[i.lat+e,i.lng+t])},getLatLng:function(){return this._latlng},getPathString:function(){var t=this._point,e=this._radius;return this._checkIfEmpty()?"":o.Browser.svg?"M"+t.x+","+(t.y-e)+"A"+e+","+e+",0,1,1,"+(t.x-.1)+","+(t.y-e)+" z":(t._round(),e=Math.round(e),"AL "+t.x+","+t.y+" "+e+","+e+" 0,23592600")},getRadius:function(){return this._mRadius},_getLatRadius:function(){return this._mRadius/40075017*360},_getLngRadius:function(){return this._getLatRadius()/Math.cos(o.LatLng.DEG_TO_RAD*this._latlng.lat)},_checkIfEmpty:function(){if(!this._map)return!1;var t=this._map._pathViewport,e=this._radius,i=this._point;return i.x-e>t.max.x||i.y-e>t.max.y||i.x+e<t.min.x||i.y+e<t.min.y}}),o.circle=function(t,e,i){return new o.Circle(t,e,i)},o.CircleMarker=o.Circle.extend({options:{radius:10,weight:2},initialize:function(t,e){o.Circle.prototype.initialize.call(this,t,null,e),this._radius=this.options.radius},projectLatlngs:function(){this._point=this._map.latLngToLayerPoint(this._latlng)},_updateStyle:function(){o.Circle.prototype._updateStyle.call(this),this.setRadius(this.options.radius)},setLatLng:function(t){return o.Circle.prototype.setLatLng.call(this,t),this._popup&&this._popup._isOpen&&this._popup.setLatLng(t),this},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius}}),o.circleMarker=function(t,e){return new o.CircleMarker(t,e)},o.Polyline.include(o.Path.CANVAS?{_containsPoint:function(t,e){var i,n,s,a,r,h,l,u=this.options.weight/2;for(o.Browser.touch&&(u+=10),i=0,a=this._parts.length;a>i;i++)for(l=this._parts[i],n=0,r=l.length,s=r-1;r>n;s=n++)if((e||0!==n)&&(h=o.LineUtil.pointToSegmentDistance(t,l[s],l[n]),u>=h))return!0;return!1}}:{}),o.Polygon.include(o.Path.CANVAS?{_containsPoint:function(t){var e,i,n,s,a,r,h,l,u=!1;if(o.Polyline.prototype._containsPoint.call(this,t,!0))return!0;for(s=0,h=this._parts.length;h>s;s++)for(e=this._parts[s],a=0,l=e.length,r=l-1;l>a;r=a++)i=e[a],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&&(u=!u);return u}}:{}),o.Circle.include(o.Path.CANVAS?{_drawPath:function(){var t=this._point;this._ctx.beginPath(),this._ctx.arc(t.x,t.y,this._radius,0,2*Math.PI,!1)},_containsPoint:function(t){var e=this._point,i=this.options.stroke?this.options.weight/2:0;return t.distanceTo(e)<=this._radius+i}}:{}),o.CircleMarker.include(o.Path.CANVAS?{_updateStyle:function(){o.Path.prototype._updateStyle.call(this)}}:{}),o.GeoJSON=o.FeatureGroup.extend({initialize:function(t,e){o.setOptions(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,s=o.Util.isArray(t)?t:t.features;if(s){for(e=0,i=s.length;i>e;e++)n=s[e],(n.geometries||n.geometry||n.features||n.coordinates)&&this.addData(s[e]);return this}var a=this.options;if(!a.filter||a.filter(t)){var r=o.GeoJSON.geometryToLayer(t,a.pointToLayer,a.coordsToLatLng,a);return r.feature=o.GeoJSON.asFeature(t),r.defaultOptions=r.options,this.resetStyle(r),a.onEachFeature&&a.onEachFeature(t,r),this.addLayer(r)}},resetStyle:function(t){var e=this.options.style;e&&(o.Util.extend(t.options,t.defaultOptions),this._setLayerStyle(t,e))},setStyle:function(t){this.eachLayer(function(e){this._setLayerStyle(e,t)},this)},_setLayerStyle:function(t,e){"function"==typeof e&&(e=e(t.feature)),t.setStyle&&t.setStyle(e)}}),o.extend(o.GeoJSON,{geometryToLayer:function(t,e,i,n){var s,a,r,h,l="Feature"===t.type?t.geometry:t,u=l.coordinates,c=[];switch(i=i||this.coordsToLatLng,l.type){case"Point":return s=i(u),e?e(t,s):new o.Marker(s);case"MultiPoint":for(r=0,h=u.length;h>r;r++)s=i(u[r]),c.push(e?e(t,s):new o.Marker(s));return new o.FeatureGroup(c);case"LineString":return a=this.coordsToLatLngs(u,0,i),new o.Polyline(a,n);case"Polygon":if(2===u.length&&!u[1].length)throw new Error("Invalid GeoJSON object.");return a=this.coordsToLatLngs(u,1,i),new o.Polygon(a,n);case"MultiLineString":return a=this.coordsToLatLngs(u,1,i),new o.MultiPolyline(a,n);case"MultiPolygon":return a=this.coordsToLatLngs(u,2,i),new o.MultiPolygon(a,n);case"GeometryCollection":for(r=0,h=l.geometries.length;h>r;r++)c.push(this.geometryToLayer({geometry:l.geometries[r],type:"Feature",properties:t.properties},e,i,n));return new o.FeatureGroup(c);default:throw new Error("Invalid GeoJSON object.")}},coordsToLatLng:function(t){return new o.LatLng(t[1],t[0],t[2])},coordsToLatLngs:function(t,e,i){var n,o,s,a=[];for(o=0,s=t.length;s>o;o++)n=e?this.coordsToLatLngs(t[o],e-1,i):(i||this.coordsToLatLng)(t[o]),a.push(n);return a},latLngToCoords:function(t){var e=[t.lng,t.lat];return t.alt!==i&&e.push(t.alt),e},latLngsToCoords:function(t){for(var e=[],i=0,n=t.length;n>i;i++)e.push(o.GeoJSON.latLngToCoords(t[i]));return e},getFeature:function(t,e){return t.feature?o.extend({},t.feature,{geometry:e}):o.GeoJSON.asFeature(e)},asFeature:function(t){return"Feature"===t.type?t:{type:"Feature",properties:{},geometry:t}}});var a={toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:"Point",coordinates:o.GeoJSON.latLngToCoords(this.getLatLng())})}};o.Marker.include(a),o.Circle.include(a),o.CircleMarker.include(a),o.Polyline.include({toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:"LineString",coordinates:o.GeoJSON.latLngsToCoords(this.getLatLngs())})}}),o.Polygon.include({toGeoJSON:function(){var t,e,i,n=[o.GeoJSON.latLngsToCoords(this.getLatLngs())];if(n[0].push(n[0][0]),this._holes)for(t=0,e=this._holes.length;e>t;t++)i=o.GeoJSON.latLngsToCoords(this._holes[t]),i.push(i[0]),n.push(i);return o.GeoJSON.getFeature(this,{type:"Polygon",coordinates:n})}}),function(){function t(t){return function(){var e=[];return this.eachLayer(function(t){e.push(t.toGeoJSON().geometry.coordinates)}),o.GeoJSON.getFeature(this,{type:t,coordinates:e})}}o.MultiPolyline.include({toGeoJSON:t("MultiLineString")}),o.MultiPolygon.include({toGeoJSON:t("MultiPolygon")}),o.LayerGroup.include({toGeoJSON:function(){var e,i=this.feature&&this.feature.geometry,n=[];if(i&&"MultiPoint"===i.type)return t("MultiPoint").call(this);var s=i&&"GeometryCollection"===i.type;return this.eachLayer(function(t){t.toGeoJSON&&(e=t.toGeoJSON(),n.push(s?e.geometry:o.GeoJSON.asFeature(e)))}),s?o.GeoJSON.getFeature(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}})}(),o.geoJson=function(t,e){return new o.GeoJSON(t,e)},o.DomEvent={addListener:function(t,e,i,n){var s,a,r,h=o.stamp(i),l="_leaflet_"+e+h;return t[l]?this:(s=function(e){return i.call(n||t,e||o.DomEvent._getEvent())},o.Browser.pointer&&0===e.indexOf("touch")?this.addPointerListener(t,e,s,h):(o.Browser.touch&&"dblclick"===e&&this.addDoubleTapListener&&this.addDoubleTapListener(t,s,h),"addEventListener"in t?"mousewheel"===e?(t.addEventListener("DOMMouseScroll",s,!1),t.addEventListener(e,s,!1)):"mouseenter"===e||"mouseleave"===e?(a=s,r="mouseenter"===e?"mouseover":"mouseout",s=function(e){return o.DomEvent._checkMouse(t,e)?a(e):void 0},t.addEventListener(r,s,!1)):"click"===e&&o.Browser.android?(a=s,s=function(t){return o.DomEvent._filterClick(t,a)},t.addEventListener(e,s,!1)):t.addEventListener(e,s,!1):"attachEvent"in t&&t.attachEvent("on"+e,s),t[l]=s,this))},removeListener:function(t,e,i){var n=o.stamp(i),s="_leaflet_"+e+n,a=t[s];return a?(o.Browser.pointer&&0===e.indexOf("touch")?this.removePointerListener(t,e,n):o.Browser.touch&&"dblclick"===e&&this.removeDoubleTapListener?this.removeDoubleTapListener(t,n):"removeEventListener"in t?"mousewheel"===e?(t.removeEventListener("DOMMouseScroll",a,!1),t.removeEventListener(e,a,!1)):"mouseenter"===e||"mouseleave"===e?t.removeEventListener("mouseenter"===e?"mouseover":"mouseout",a,!1):t.removeEventListener(e,a,!1):"detachEvent"in t&&t.detachEvent("on"+e,a),t[s]=null,this):this},stopPropagation:function(t){return t.stopPropagation?t.stopPropagation():t.cancelBubble=!0,o.DomEvent._skipped(t),this},disableScrollPropagation:function(t){var e=o.DomEvent.stopPropagation;return o.DomEvent.on(t,"mousewheel",e).on(t,"MozMousePixelScroll",e)},disableClickPropagation:function(t){for(var e=o.DomEvent.stopPropagation,i=o.Draggable.START.length-1;i>=0;i--)o.DomEvent.on(t,o.Draggable.START[i],e);return o.DomEvent.on(t,"click",o.DomEvent._fakeStop).on(t,"dblclick",e)},preventDefault:function(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this},stop:function(t){return o.DomEvent.preventDefault(t).stopPropagation(t)},getMousePosition:function(t,e){if(!e)return new o.Point(t.clientX,t.clientY);var i=e.getBoundingClientRect();return new o.Point(t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop)},getWheelDelta:function(t){var e=0;return t.wheelDelta&&(e=t.wheelDelta/120),t.detail&&(e=-t.detail/3),e},_skipEvents:{},_fakeStop:function(t){o.DomEvent._skipEvents[t.type]=!0},_skipped:function(t){var e=this._skipEvents[t.type];return this._skipEvents[t.type]=!1,e},_checkMouse:function(t,e){var i=e.relatedTarget;if(!i)return!0;try{for(;i&&i!==t;)i=i.parentNode}catch(n){return!1}return i!==t},_getEvent:function(){var e=t.event;if(!e)for(var i=arguments.callee.caller;i&&(e=i.arguments[0],!e||t.Event!==e.constructor);)i=i.caller;return e},_filterClick:function(t,e){var i=t.timeStamp||t.originalEvent.timeStamp,n=o.DomEvent._lastClick&&i-o.DomEvent._lastClick;return n&&n>100&&500>n||t.target._simulatedClick&&!t._simulated?void o.DomEvent.stop(t):(o.DomEvent._lastClick=i,e(t))}},o.DomEvent.on=o.DomEvent.addListener,o.DomEvent.off=o.DomEvent.removeListener,o.Draggable=o.Class.extend({includes:o.Mixin.Events,statics:{START:o.Browser.touch?["touchstart","mousedown"]:["mousedown"],END:{mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},MOVE:{mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"}},initialize:function(t,e){this._element=t,this._dragStartTarget=e||t},enable:function(){if(!this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.on(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!0}},disable:function(){if(this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.off(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!1,this._moved=!1}},_onDown:function(t){if(this._moved=!1,!(t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(o.DomEvent.stopPropagation(t),o.Draggable._disabled||(o.DomUtil.disableImageDrag(),o.DomUtil.disableTextSelection(),this._moving)))){var i=t.touches?t.touches[0]:t;this._startPoint=new o.Point(i.clientX,i.clientY),this._startPos=this._newPos=o.DomUtil.getPosition(this._element),o.DomEvent.on(e,o.Draggable.MOVE[t.type],this._onMove,this).on(e,o.Draggable.END[t.type],this._onUp,this)}},_onMove:function(t){if(t.touches&&t.touches.length>1)return void(this._moved=!0);var i=t.touches&&1===t.touches.length?t.touches[0]:t,n=new o.Point(i.clientX,i.clientY),s=n.subtract(this._startPoint);(s.x||s.y)&&(o.Browser.touch&&Math.abs(s.x)+Math.abs(s.y)<3||(o.DomEvent.preventDefault(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=o.DomUtil.getPosition(this._element).subtract(s),o.DomUtil.addClass(e.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,o.DomUtil.addClass(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(s),this._moving=!0,o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updatePosition,this,!0,this._dragStartTarget)))},_updatePosition:function(){this.fire("predrag"),o.DomUtil.setPosition(this._element,this._newPos),this.fire("drag")},_onUp:function(){o.DomUtil.removeClass(e.body,"leaflet-dragging"),this._lastTarget&&(o.DomUtil.removeClass(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null);for(var t in o.Draggable.MOVE)o.DomEvent.off(e,o.Draggable.MOVE[t],this._onMove).off(e,o.Draggable.END[t],this._onUp);o.DomUtil.enableImageDrag(),o.DomUtil.enableTextSelection(),this._moved&&this._moving&&(o.Util.cancelAnimFrame(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1}}),o.Handler=o.Class.extend({initialize:function(t){this._map=t},enable:function(){this._enabled||(this._enabled=!0,this.addHooks())},disable:function(){this._enabled&&(this._enabled=!1,this.removeHooks())},enabled:function(){return!!this._enabled}}),o.Map.mergeOptions({dragging:!0,inertia:!o.Browser.android23,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,inertiaThreshold:o.Browser.touch?32:18,easeLinearity:.25,worldCopyJump:!1}),o.Map.Drag=o.Handler.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new o.Draggable(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDrag,this),t.on("viewreset",this._onViewReset,this),t.whenReady(this._onViewReset,this))}this._draggable.enable()},removeHooks:function(){this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){var t=this._map;t._panAnim&&t._panAnim.stop(),t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(){if(this._map.options.inertia){var t=this._lastTime=+new Date,e=this._lastPos=this._draggable._newPos;this._positions.push(e),this._times.push(t),t-this._times[0]>200&&(this._positions.shift(),this._times.shift())}this._map.fire("move").fire("drag")},_onViewReset:function(){var t=this._map.getSize()._divideBy(2),e=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.project([0,180]).x},_onPreDrag: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,s=(n+e+i)%t-e-i,a=Math.abs(o+i)<Math.abs(s+i)?o:s;this._draggable._newPos.x=a},_onDragEnd:function(t){var e=this._map,i=e.options,n=+new Date-this._lastTime,s=!i.inertia||n>i.inertiaThreshold||!this._positions[0];if(e.fire("dragend",t),s)e.fire("moveend");else{var a=this._lastPos.subtract(this._positions[0]),r=(this._lastTime+n-this._times[0])/1e3,h=i.easeLinearity,l=a.multiplyBy(h/r),u=l.distanceTo([0,0]),c=Math.min(i.inertiaMaxSpeed,u),d=l.multiplyBy(c/u),p=c/(i.inertiaDeceleration*h),_=d.multiplyBy(-p/2).round();_.x&&_.y?(_=e._limitOffset(_,e.options.maxBounds),o.Util.requestAnimFrame(function(){e.panBy(_,{duration:p,easeLinearity:h,noMoveStart:!0})})):e.fire("moveend")}}}),o.Map.addInitHook("addHandler","dragging",o.Map.Drag),o.Map.mergeOptions({doubleClickZoom:!0}),o.Map.DoubleClickZoom=o.Handler.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()+(t.originalEvent.shiftKey?-1:1);"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}}),o.Map.addInitHook("addHandler","doubleClickZoom",o.Map.DoubleClickZoom),o.Map.mergeOptions({scrollWheelZoom:!0}),o.Map.ScrollWheelZoom=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"mousewheel",this._onWheelScroll,this),o.DomEvent.on(this._map._container,"MozMousePixelScroll",o.DomEvent.preventDefault),this._delta=0},removeHooks:function(){o.DomEvent.off(this._map._container,"mousewheel",this._onWheelScroll),o.DomEvent.off(this._map._container,"MozMousePixelScroll",o.DomEvent.preventDefault)},_onWheelScroll:function(t){var e=o.DomEvent.getWheelDelta(t);this._delta+=e,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var i=Math.max(40-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(o.bind(this._performZoom,this),i),o.DomEvent.preventDefault(t),o.DomEvent.stopPropagation(t)},_performZoom:function(){var t=this._map,e=this._delta,i=t.getZoom();e=e>0?Math.ceil(e):Math.floor(e),e=Math.max(Math.min(e,4),-4),e=t._limitZoom(i+e)-i,this._delta=0,this._startTime=null,e&&("center"===t.options.scrollWheelZoom?t.setZoom(i+e):t.setZoomAround(this._lastMousePos,i+e))}}),o.Map.addInitHook("addHandler","scrollWheelZoom",o.Map.ScrollWheelZoom),o.extend(o.DomEvent,{_touchstart:o.Browser.msPointer?"MSPointerDown":o.Browser.pointer?"pointerdown":"touchstart",_touchend:o.Browser.msPointer?"MSPointerUp":o.Browser.pointer?"pointerup":"touchend",addDoubleTapListener:function(t,i,n){function s(t){var e;if(o.Browser.pointer?(_.push(t.pointerId),e=_.length):e=t.touches.length,!(e>1)){var i=Date.now(),n=i-(r||i);h=t.touches?t.touches[0]:t,l=n>0&&u>=n,r=i}}function a(t){if(o.Browser.pointer){var e=_.indexOf(t.pointerId);if(-1===e)return;_.splice(e,1)}if(l){if(o.Browser.pointer){var n,s={};for(var a in h)n=h[a],s[a]="function"==typeof n?n.bind(h):n;h=s}h.type="dblclick",i(h),r=null}}var r,h,l=!1,u=250,c="_leaflet_",d=this._touchstart,p=this._touchend,_=[];t[c+d+n]=s,t[c+p+n]=a;var m=o.Browser.pointer?e.documentElement:t;return t.addEventListener(d,s,!1),m.addEventListener(p,a,!1),o.Browser.pointer&&m.addEventListener(o.DomEvent.POINTER_CANCEL,a,!1),this},removeDoubleTapListener:function(t,i){var n="_leaflet_";return t.removeEventListener(this._touchstart,t[n+this._touchstart+i],!1),(o.Browser.pointer?e.documentElement:t).removeEventListener(this._touchend,t[n+this._touchend+i],!1),o.Browser.pointer&&e.documentElement.removeEventListener(o.DomEvent.POINTER_CANCEL,t[n+this._touchend+i],!1),this}}),o.extend(o.DomEvent,{POINTER_DOWN:o.Browser.msPointer?"MSPointerDown":"pointerdown",POINTER_MOVE:o.Browser.msPointer?"MSPointerMove":"pointermove",POINTER_UP:o.Browser.msPointer?"MSPointerUp":"pointerup",POINTER_CANCEL:o.Browser.msPointer?"MSPointerCancel":"pointercancel",_pointers:[],_pointerDocumentListener:!1,addPointerListener:function(t,e,i,n){switch(e){case"touchstart":return this.addPointerListenerStart(t,e,i,n);case"touchend":return this.addPointerListenerEnd(t,e,i,n);case"touchmove":return this.addPointerListenerMove(t,e,i,n);default:throw"Unknown touch event type"}},addPointerListenerStart:function(t,i,n,s){var a="_leaflet_",r=this._pointers,h=function(t){o.DomEvent.preventDefault(t);for(var e=!1,i=0;i<r.length;i++)if(r[i].pointerId===t.pointerId){e=!0;
-break}e||r.push(t),t.touches=r.slice(),t.changedTouches=[t],n(t)};if(t[a+"touchstart"+s]=h,t.addEventListener(this.POINTER_DOWN,h,!1),!this._pointerDocumentListener){var l=function(t){for(var e=0;e<r.length;e++)if(r[e].pointerId===t.pointerId){r.splice(e,1);break}};e.documentElement.addEventListener(this.POINTER_UP,l,!1),e.documentElement.addEventListener(this.POINTER_CANCEL,l,!1),this._pointerDocumentListener=!0}return this},addPointerListenerMove:function(t,e,i,n){function o(t){if(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons){for(var e=0;e<a.length;e++)if(a[e].pointerId===t.pointerId){a[e]=t;break}t.touches=a.slice(),t.changedTouches=[t],i(t)}}var s="_leaflet_",a=this._pointers;return t[s+"touchmove"+n]=o,t.addEventListener(this.POINTER_MOVE,o,!1),this},addPointerListenerEnd:function(t,e,i,n){var o="_leaflet_",s=this._pointers,a=function(t){for(var e=0;e<s.length;e++)if(s[e].pointerId===t.pointerId){s.splice(e,1);break}t.touches=s.slice(),t.changedTouches=[t],i(t)};return t[o+"touchend"+n]=a,t.addEventListener(this.POINTER_UP,a,!1),t.addEventListener(this.POINTER_CANCEL,a,!1),this},removePointerListener:function(t,e,i){var n="_leaflet_",o=t[n+e+i];switch(e){case"touchstart":t.removeEventListener(this.POINTER_DOWN,o,!1);break;case"touchmove":t.removeEventListener(this.POINTER_MOVE,o,!1);break;case"touchend":t.removeEventListener(this.POINTER_UP,o,!1),t.removeEventListener(this.POINTER_CANCEL,o,!1)}return this}}),o.Map.mergeOptions({touchZoom:o.Browser.touch&&!o.Browser.android23,bounceAtZoomLimits:!0}),o.Map.TouchZoom=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){o.DomEvent.off(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var n=i.mouseEventToLayerPoint(t.touches[0]),s=i.mouseEventToLayerPoint(t.touches[1]),a=i._getCenterLayerPoint();this._startCenter=n.add(s)._divideBy(2),this._startDist=n.distanceTo(s),this._moved=!1,this._zooming=!0,this._centerOffset=a.subtract(this._startCenter),i._panAnim&&i._panAnim.stop(),o.DomEvent.on(e,"touchmove",this._onTouchMove,this).on(e,"touchend",this._onTouchEnd,this),o.DomEvent.preventDefault(t)}},_onTouchMove:function(t){var e=this._map;if(t.touches&&2===t.touches.length&&this._zooming){var i=e.mouseEventToLayerPoint(t.touches[0]),n=e.mouseEventToLayerPoint(t.touches[1]);this._scale=i.distanceTo(n)/this._startDist,this._delta=i._add(n)._divideBy(2)._subtract(this._startCenter),1!==this._scale&&(e.options.bounceAtZoomLimits||!(e.getZoom()===e.getMinZoom()&&this._scale<1||e.getZoom()===e.getMaxZoom()&&this._scale>1))&&(this._moved||(o.DomUtil.addClass(e._mapPane,"leaflet-touching"),e.fire("movestart").fire("zoomstart"),this._moved=!0),o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updateOnMove,this,!0,this._map._container),o.DomEvent.preventDefault(t))}},_updateOnMove:function(){var t=this._map,e=this._getScaleOrigin(),i=t.layerPointToLatLng(e),n=t.getScaleZoom(this._scale);t._animateZoom(i,n,this._startCenter,this._scale,this._delta,!1,!0)},_onTouchEnd:function(){if(!this._moved||!this._zooming)return void(this._zooming=!1);var t=this._map;this._zooming=!1,o.DomUtil.removeClass(t._mapPane,"leaflet-touching"),o.Util.cancelAnimFrame(this._animRequest),o.DomEvent.off(e,"touchmove",this._onTouchMove).off(e,"touchend",this._onTouchEnd);var i=this._getScaleOrigin(),n=t.layerPointToLatLng(i),s=t.getZoom(),a=t.getScaleZoom(this._scale)-s,r=a>0?Math.ceil(a):Math.floor(a),h=t._limitZoom(s+r),l=t.getZoomScale(h)/this._scale;t._animateZoom(n,h,i,l)},_getScaleOrigin:function(){var t=this._centerOffset.subtract(this._delta).divideBy(this._scale);return this._startCenter.add(t)}}),o.Map.addInitHook("addHandler","touchZoom",o.Map.TouchZoom),o.Map.mergeOptions({tap:!0,tapTolerance:15}),o.Map.Tap=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){o.DomEvent.off(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(o.DomEvent.preventDefault(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new o.Point(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.addClass(n,"leaflet-active"),this._holdTimeout=setTimeout(o.bind(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),o.DomEvent.on(e,"touchmove",this._onMove,this).on(e,"touchend",this._onUp,this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),o.DomEvent.off(e,"touchmove",this._onMove,this).off(e,"touchend",this._onUp,this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],n=i.target;n&&n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.removeClass(n,"leaflet-active"),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new o.Point(e.clientX,e.clientY)},_simulateEvent:function(i,n){var o=e.createEvent("MouseEvents");o._simulated=!0,n.target._simulatedClick=!0,o.initMouseEvent(i,!0,!0,t,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(o)}}),o.Browser.touch&&!o.Browser.pointer&&o.Map.addInitHook("addHandler","tap",o.Map.Tap),o.Map.mergeOptions({boxZoom:!0}),o.Map.BoxZoom=o.Handler.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._moved=!1},addHooks:function(){o.DomEvent.on(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){o.DomEvent.off(this._container,"mousedown",this._onMouseDown),this._moved=!1},moved:function(){return this._moved},_onMouseDown:function(t){return this._moved=!1,!t.shiftKey||1!==t.which&&1!==t.button?!1:(o.DomUtil.disableTextSelection(),o.DomUtil.disableImageDrag(),this._startLayerPoint=this._map.mouseEventToLayerPoint(t),void o.DomEvent.on(e,"mousemove",this._onMouseMove,this).on(e,"mouseup",this._onMouseUp,this).on(e,"keydown",this._onKeyDown,this))},_onMouseMove:function(t){this._moved||(this._box=o.DomUtil.create("div","leaflet-zoom-box",this._pane),o.DomUtil.setPosition(this._box,this._startLayerPoint),this._container.style.cursor="crosshair",this._map.fire("boxzoomstart"));var e=this._startLayerPoint,i=this._box,n=this._map.mouseEventToLayerPoint(t),s=n.subtract(e),a=new o.Point(Math.min(n.x,e.x),Math.min(n.y,e.y));o.DomUtil.setPosition(i,a),this._moved=!0,i.style.width=Math.max(0,Math.abs(s.x)-4)+"px",i.style.height=Math.max(0,Math.abs(s.y)-4)+"px"},_finish:function(){this._moved&&(this._pane.removeChild(this._box),this._container.style.cursor=""),o.DomUtil.enableTextSelection(),o.DomUtil.enableImageDrag(),o.DomEvent.off(e,"mousemove",this._onMouseMove).off(e,"mouseup",this._onMouseUp).off(e,"keydown",this._onKeyDown)},_onMouseUp:function(t){this._finish();var e=this._map,i=e.mouseEventToLayerPoint(t);if(!this._startLayerPoint.equals(i)){var n=new o.LatLngBounds(e.layerPointToLatLng(this._startLayerPoint),e.layerPointToLatLng(i));e.fitBounds(n),e.fire("boxzoomend",{boxZoomBounds:n})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}}),o.Map.addInitHook("addHandler","boxZoom",o.Map.BoxZoom),o.Map.mergeOptions({keyboard:!0,keyboardPanOffset:80,keyboardZoomOffset:1}),o.Map.Keyboard=o.Handler.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,173]},initialize:function(t){this._map=t,this._setPanOffset(t.options.keyboardPanOffset),this._setZoomOffset(t.options.keyboardZoomOffset)},addHooks:function(){var t=this._map._container;-1===t.tabIndex&&(t.tabIndex="0"),o.DomEvent.on(t,"focus",this._onFocus,this).on(t,"blur",this._onBlur,this).on(t,"mousedown",this._onMouseDown,this),this._map.on("focus",this._addHooks,this).on("blur",this._removeHooks,this)},removeHooks:function(){this._removeHooks();var t=this._map._container;o.DomEvent.off(t,"focus",this._onFocus,this).off(t,"blur",this._onBlur,this).off(t,"mousedown",this._onMouseDown,this),this._map.off("focus",this._addHooks,this).off("blur",this._removeHooks,this)},_onMouseDown:function(){if(!this._focused){var i=e.body,n=e.documentElement,o=i.scrollTop||n.scrollTop,s=i.scrollLeft||n.scrollLeft;this._map._container.focus(),t.scrollTo(s,o)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanOffset:function(t){var e,i,n=this._panKeys={},o=this.keyCodes;for(e=0,i=o.left.length;i>e;e++)n[o.left[e]]=[-1*t,0];for(e=0,i=o.right.length;i>e;e++)n[o.right[e]]=[t,0];for(e=0,i=o.down.length;i>e;e++)n[o.down[e]]=[0,t];for(e=0,i=o.up.length;i>e;e++)n[o.up[e]]=[0,-1*t]},_setZoomOffset:function(t){var e,i,n=this._zoomKeys={},o=this.keyCodes;for(e=0,i=o.zoomIn.length;i>e;e++)n[o.zoomIn[e]]=t;for(e=0,i=o.zoomOut.length;i>e;e++)n[o.zoomOut[e]]=-t},_addHooks:function(){o.DomEvent.on(e,"keydown",this._onKeyDown,this)},_removeHooks:function(){o.DomEvent.off(e,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){var e=t.keyCode,i=this._map;if(e in this._panKeys){if(i._panAnim&&i._panAnim._inProgress)return;i.panBy(this._panKeys[e]),i.options.maxBounds&&i.panInsideBounds(i.options.maxBounds)}else{if(!(e in this._zoomKeys))return;i.setZoom(i.getZoom()+this._zoomKeys[e])}o.DomEvent.stop(t)}}),o.Map.addInitHook("addHandler","keyboard",o.Map.Keyboard),o.Handler.MarkerDrag=o.Handler.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new o.Draggable(t,t)),this._draggable.on("dragstart",this._onDragStart,this).on("drag",this._onDrag,this).on("dragend",this._onDragEnd,this),this._draggable.enable(),o.DomUtil.addClass(this._marker._icon,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off("dragstart",this._onDragStart,this).off("drag",this._onDrag,this).off("dragend",this._onDragEnd,this),this._draggable.disable(),o.DomUtil.removeClass(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){this._marker.closePopup().fire("movestart").fire("dragstart")},_onDrag:function(){var t=this._marker,e=t._shadow,i=o.DomUtil.getPosition(t._icon),n=t._map.layerPointToLatLng(i);e&&o.DomUtil.setPosition(e,i),t._latlng=n,t.fire("move",{latlng:n}).fire("drag")},_onDragEnd:function(t){this._marker.fire("moveend").fire("dragend",t)}}),o.Control=o.Class.extend({options:{position:"topright"},initialize:function(t){o.setOptions(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._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),n=t._controlCorners[i];return o.DomUtil.addClass(e,"leaflet-control"),-1!==i.indexOf("bottom")?n.insertBefore(e,n.firstChild):n.appendChild(e),this},removeFrom:function(t){var e=this.getPosition(),i=t._controlCorners[e];return i.removeChild(this._container),this._map=null,this.onRemove&&this.onRemove(t),this},_refocusOnMap:function(){this._map&&this._map.getContainer().focus()}}),o.control=function(t){return new o.Control(t)},o.Map.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.removeFrom(this),this},_initControlPos:function(){function t(t,s){var a=i+t+" "+i+s;e[t+s]=o.DomUtil.create("div",a,n)}var e=this._controlCorners={},i="leaflet-",n=this._controlContainer=o.DomUtil.create("div",i+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){this._container.removeChild(this._controlContainer)}}),o.Control.Zoom=o.Control.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"-",zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=o.DomUtil.create("div",e+" leaflet-bar");return this._map=t,this._zoomInButton=this._createButton(this.options.zoomInText,this.options.zoomInTitle,e+"-in",i,this._zoomIn,this),this._zoomOutButton=this._createButton(this.options.zoomOutText,this.options.zoomOutTitle,e+"-out",i,this._zoomOut,this),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},_zoomIn:function(t){this._map.zoomIn(t.shiftKey?3:1)},_zoomOut:function(t){this._map.zoomOut(t.shiftKey?3:1)},_createButton:function(t,e,i,n,s,a){var r=o.DomUtil.create("a",i,n);r.innerHTML=t,r.href="#",r.title=e;var h=o.DomEvent.stopPropagation;return o.DomEvent.on(r,"click",h).on(r,"mousedown",h).on(r,"dblclick",h).on(r,"click",o.DomEvent.preventDefault).on(r,"click",s,a).on(r,"click",this._refocusOnMap,a),r},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";o.DomUtil.removeClass(this._zoomInButton,e),o.DomUtil.removeClass(this._zoomOutButton,e),t._zoom===t.getMinZoom()&&o.DomUtil.addClass(this._zoomOutButton,e),t._zoom===t.getMaxZoom()&&o.DomUtil.addClass(this._zoomInButton,e)}}),o.Map.mergeOptions({zoomControl:!0}),o.Map.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new o.Control.Zoom,this.addControl(this.zoomControl))}),o.control.zoom=function(t){return new o.Control.Zoom(t)},o.Control.Attribution=o.Control.extend({options:{position:"bottomright",prefix:'<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(t){o.setOptions(this,t),this._attributions={}},onAdd:function(t){this._container=o.DomUtil.create("div","leaflet-control-attribution"),o.DomEvent.disableClickPropagation(this._container);for(var e in t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return t.on("layeradd",this._onLayerAdd,this).on("layerremove",this._onLayerRemove,this),this._update(),this._container},onRemove:function(t){t.off("layeradd",this._onLayerAdd).off("layerremove",this._onLayerRemove)},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):void 0},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):void 0},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(", ")),this._container.innerHTML=i.join(" | ")}},_onLayerAdd:function(t){t.layer.getAttribution&&this.addAttribution(t.layer.getAttribution())},_onLayerRemove:function(t){t.layer.getAttribution&&this.removeAttribution(t.layer.getAttribution())}}),o.Map.mergeOptions({attributionControl:!0}),o.Map.addInitHook(function(){this.options.attributionControl&&(this.attributionControl=(new o.Control.Attribution).addTo(this))}),o.control.attribution=function(t){return new o.Control.Attribution(t)},o.Control.Scale=o.Control.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0,updateWhenIdle:!1},onAdd:function(t){this._map=t;var e="leaflet-control-scale",i=o.DomUtil.create("div",e),n=this.options;return this._addScales(n,e,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=o.DomUtil.create("div",e+"-line",i)),t.imperial&&(this._iScale=o.DomUtil.create("div",e+"-line",i))},_update:function(){var t=this._map.getBounds(),e=t.getCenter().lat,i=6378137*Math.PI*Math.cos(e*Math.PI/180),n=i*(t.getNorthEast().lng-t.getSouthWest().lng)/180,o=this._map.getSize(),s=this.options,a=0;o.x>0&&(a=n*(s.maxWidth/o.x)),this._updateScales(s,a)},_updateScales:function(t,e){t.metric&&e&&this._updateMetric(e),t.imperial&&e&&this._updateImperial(e)},_updateMetric:function(t){var e=this._getRoundNum(t);this._mScale.style.width=this._getScaleWidth(e/t)+"px",this._mScale.innerHTML=1e3>e?e+" m":e/1e3+" km"},_updateImperial:function(t){var e,i,n,o=3.2808399*t,s=this._iScale;o>5280?(e=o/5280,i=this._getRoundNum(e),s.style.width=this._getScaleWidth(i/e)+"px",s.innerHTML=i+" mi"):(n=this._getRoundNum(o),s.style.width=this._getScaleWidth(n/o)+"px",s.innerHTML=n+" ft")},_getScaleWidth:function(t){return Math.round(this.options.maxWidth*t)-10},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1,e*i}}),o.control.scale=function(t){return new o.Control.Scale(t)},o.Control.Layers=o.Control.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0},initialize:function(t,e,i){o.setOptions(this,i),this._layers={},this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in e)this._addLayer(e[n],n,!0)},onAdd:function(t){return this._initLayout(),this._update(),t.on("layeradd",this._onLayerChange,this).on("layerremove",this._onLayerChange,this),this._container},onRemove:function(t){t.off("layeradd",this._onLayerChange,this).off("layerremove",this._onLayerChange,this)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._update(),this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._update(),this},removeLayer:function(t){var e=o.stamp(t);return delete this._layers[e],this._update(),this},_initLayout:function(){var t="leaflet-control-layers",e=this._container=o.DomUtil.create("div",t);e.setAttribute("aria-haspopup",!0),o.Browser.touch?o.DomEvent.on(e,"click",o.DomEvent.stopPropagation):o.DomEvent.disableClickPropagation(e).disableScrollPropagation(e);var i=this._form=o.DomUtil.create("form",t+"-list");if(this.options.collapsed){o.Browser.android||o.DomEvent.on(e,"mouseover",this._expand,this).on(e,"mouseout",this._collapse,this);var n=this._layersLink=o.DomUtil.create("a",t+"-toggle",e);n.href="#",n.title="Layers",o.Browser.touch?o.DomEvent.on(n,"click",o.DomEvent.stop).on(n,"click",this._expand,this):o.DomEvent.on(n,"focus",this._expand,this),o.DomEvent.on(i,"click",function(){setTimeout(o.bind(this._onInputClick,this),0)},this),this._map.on("click",this._collapse,this)}else this._expand();this._baseLayersList=o.DomUtil.create("div",t+"-base",i),this._separator=o.DomUtil.create("div",t+"-separator",i),this._overlaysList=o.DomUtil.create("div",t+"-overlays",i),e.appendChild(i)},_addLayer:function(t,e,i){var n=o.stamp(t);this._layers[n]={layer:t,name:e,overlay:i},this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex))},_update:function(){if(this._container){this._baseLayersList.innerHTML="",this._overlaysList.innerHTML="";var t,e,i=!1,n=!1;for(t in this._layers)e=this._layers[t],this._addItem(e),n=n||e.overlay,i=i||!e.overlay;this._separator.style.display=n&&i?"":"none"}},_onLayerChange:function(t){var e=this._layers[o.stamp(t.layer)];if(e){this._handlingClick||this._update();var i=e.overlay?"layeradd"===t.type?"overlayadd":"overlayremove":"layeradd"===t.type?"baselayerchange":null;i&&this._map.fire(i,e)}},_createRadioElement:function(t,i){var n='<input type="radio" class="leaflet-control-layers-selector" name="'+t+'"';i&&(n+=' checked="checked"'),n+="/>";var o=e.createElement("div");return o.innerHTML=n,o.firstChild},_addItem:function(t){var i,n=e.createElement("label"),s=this._map.hasLayer(t.layer);t.overlay?(i=e.createElement("input"),i.type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=s):i=this._createRadioElement("leaflet-base-layers",s),i.layerId=o.stamp(t.layer),o.DomEvent.on(i,"click",this._onInputClick,this);var a=e.createElement("span");a.innerHTML=" "+t.name,n.appendChild(i),n.appendChild(a);var r=t.overlay?this._overlaysList:this._baseLayersList;return r.appendChild(n),n},_onInputClick:function(){var t,e,i,n=this._form.getElementsByTagName("input"),o=n.length;for(this._handlingClick=!0,t=0;o>t;t++)e=n[t],i=this._layers[e.layerId],e.checked&&!this._map.hasLayer(i.layer)?this._map.addLayer(i.layer):!e.checked&&this._map.hasLayer(i.layer)&&this._map.removeLayer(i.layer);this._handlingClick=!1,this._refocusOnMap()},_expand:function(){o.DomUtil.addClass(this._container,"leaflet-control-layers-expanded")},_collapse:function(){this._container.className=this._container.className.replace(" leaflet-control-layers-expanded","")}}),o.control.layers=function(t,e,i){return new o.Control.Layers(t,e,i)},o.PosAnimation=o.Class.extend({includes:o.Mixin.Events,run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._newPos=e,this.fire("start"),t.style[o.DomUtil.TRANSITION]="all "+(i||.25)+"s cubic-bezier(0,0,"+(n||.5)+",1)",o.DomEvent.on(t,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),o.DomUtil.setPosition(t,e),o.Util.falseFn(t.offsetWidth),this._stepTimer=setInterval(o.bind(this._onStep,this),50)},stop:function(){this._inProgress&&(o.DomUtil.setPosition(this._el,this._getPos()),this._onTransitionEnd(),o.Util.falseFn(this._el.offsetWidth))},_onStep:function(){var t=this._getPos();return t?(this._el._leaflet_pos=t,void this.fire("step")):void this._onTransitionEnd()},_transformRe:/([-+]?(?:\d*\.)?\d+)\D*, ([-+]?(?:\d*\.)?\d+)\D*\)/,_getPos:function(){var e,i,n,s=this._el,a=t.getComputedStyle(s);if(o.Browser.any3d){if(n=a[o.DomUtil.TRANSFORM].match(this._transformRe),!n)return;e=parseFloat(n[1]),i=parseFloat(n[2])}else e=parseFloat(a.left),i=parseFloat(a.top);return new o.Point(e,i,!0)},_onTransitionEnd:function(){o.DomEvent.off(this._el,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),this._inProgress&&(this._inProgress=!1,this._el.style[o.DomUtil.TRANSITION]="",this._el._leaflet_pos=this._newPos,clearInterval(this._stepTimer),this.fire("step").fire("end"))}}),o.Map.include({setView:function(t,e,n){if(e=e===i?this._zoom:this._limitZoom(e),t=this._limitCenter(o.latLng(t),e,this.options.maxBounds),n=n||{},this._panAnim&&this._panAnim.stop(),this._loaded&&!n.reset&&n!==!0){n.animate!==i&&(n.zoom=o.extend({animate:n.animate},n.zoom),n.pan=o.extend({animate:n.animate},n.pan));var s=this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan);if(s)return clearTimeout(this._sizeTimer),this}return this._resetView(t,e),this},panBy:function(t,e){if(t=o.point(t).round(),e=e||{},!t.x&&!t.y)return this;if(this._panAnim||(this._panAnim=new o.PosAnimation,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),e.noMoveStart||this.fire("movestart"),e.animate!==!1){o.DomUtil.addClass(this._mapPane,"leaflet-pan-anim");var i=this._getMapPanePos().subtract(t);this._panAnim.run(this._mapPane,i,e.duration||.25,e.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){o.DomUtil.removeClass(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._floor();return(e&&e.animate)===!0||this.getSize().contains(i)?(this.panBy(i,e),!0):!1}}),o.PosAnimation=o.DomUtil.TRANSITION?o.PosAnimation:o.PosAnimation.extend({run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=o.DomUtil.getPosition(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(),this._complete())},_animate:function(){this._animId=o.Util.requestAnimFrame(this._animate,this),this._step()},_step:function(){var t=+new Date-this._startTime,e=1e3*this._duration;e>t?this._runFrame(this._easeOut(t/e)):(this._runFrame(1),this._complete())},_runFrame:function(t){var e=this._startPos.add(this._offset.multiplyBy(t));o.DomUtil.setPosition(this._el,e),this.fire("step")},_complete:function(){o.Util.cancelAnimFrame(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),o.Map.mergeOptions({zoomAnimation:!0,zoomAnimationThreshold:4}),o.DomUtil.TRANSITION&&o.Map.addInitHook(function(){this._zoomAnimated=this.options.zoomAnimation&&o.DomUtil.TRANSITION&&o.Browser.any3d&&!o.Browser.android23&&!o.Browser.mobileOpera,this._zoomAnimated&&o.DomEvent.on(this._mapPane,o.DomUtil.TRANSITION_END,this._catchTransitionEnd,this)}),o.Map.include(o.DomUtil.TRANSITION?{_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||i.animate===!1||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),o=this._getCenterOffset(t)._divideBy(1-1/n),s=this._getCenterLayerPoint()._add(o);return i.animate===!0||this.getSize().contains(o)?(this.fire("movestart").fire("zoomstart"),this._animateZoom(t,e,s,n,null,!0),!0):!1},_animateZoom:function(t,e,i,n,s,a,r){r||(this._animatingZoom=!0),o.DomUtil.addClass(this._mapPane,"leaflet-zoom-anim"),this._animateToCenter=t,this._animateToZoom=e,o.Draggable&&(o.Draggable._disabled=!0),o.Util.requestAnimFrame(function(){this.fire("zoomanim",{center:t,zoom:e,origin:i,scale:n,delta:s,backwards:a})},this)},_onZoomTransitionEnd:function(){this._animatingZoom=!1,o.DomUtil.removeClass(this._mapPane,"leaflet-zoom-anim"),this._resetView(this._animateToCenter,this._animateToZoom,!0,!0),o.Draggable&&(o.Draggable._disabled=!1)}}:{}),o.TileLayer.include({_animateZoom:function(t){this._animating||(this._animating=!0,this._prepareBgBuffer());var e=this._bgBuffer,i=o.DomUtil.TRANSFORM,n=t.delta?o.DomUtil.getTranslateString(t.delta):e.style[i],s=o.DomUtil.getScaleString(t.scale,t.origin);e.style[i]=t.backwards?s+" "+n:n+" "+s},_endZoomAnim:function(){var t=this._tileContainer,e=this._bgBuffer;t.style.visibility="",t.parentNode.appendChild(t),o.Util.falseFn(e.offsetWidth),this._animating=!1},_clearBgBuffer:function(){var t=this._map;!t||t._animatingZoom||t.touchZoom._zooming||(this._bgBuffer.innerHTML="",this._bgBuffer.style[o.DomUtil.TRANSFORM]="")},_prepareBgBuffer:function(){var t=this._tileContainer,e=this._bgBuffer,i=this._getLoadedTilesPercentage(e),n=this._getLoadedTilesPercentage(t);return e&&i>.5&&.5>n?(t.style.visibility="hidden",void this._stopLoadingImages(t)):(e.style.visibility="hidden",e.style[o.DomUtil.TRANSFORM]="",this._tileContainer=e,e=this._bgBuffer=t,this._stopLoadingImages(e),void clearTimeout(this._clearBgBufferTimer))},_getLoadedTilesPercentage:function(t){var e,i,n=t.getElementsByTagName("img"),o=0;for(e=0,i=n.length;i>e;e++)n[e].complete&&o++;return o/i},_stopLoadingImages:function(t){var e,i,n,s=Array.prototype.slice.call(t.getElementsByTagName("img"));for(e=0,i=s.length;i>e;e++)n=s[e],n.complete||(n.onload=o.Util.falseFn,n.onerror=o.Util.falseFn,n.src=o.Util.emptyImageUrl,n.parentNode.removeChild(n))}}),o.Map.include({_defaultLocateOptions:{watch:!1,setView:!1,maxZoom:1/0,timeout:1e4,maximumAge:0,enableHighAccuracy:!1},locate:function(t){if(t=this._locateOptions=o.extend(this._defaultLocateOptions,t),!navigator.geolocation)return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=o.bind(this._handleGeolocationResponse,this),i=o.bind(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=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: "+i+"."})},_handleGeolocationResponse:function(t){var e=t.coords.latitude,i=t.coords.longitude,n=new o.LatLng(e,i),s=180*t.coords.accuracy/40075017,a=s/Math.cos(o.LatLng.DEG_TO_RAD*e),r=o.latLngBounds([e-s,i-a],[e+s,i+a]),h=this._locateOptions;if(h.setView){var l=Math.min(this.getBoundsZoom(r),h.maxZoom);this.setView(n,l)}var u={latlng:n,bounds:r,timestamp:t.timestamp};for(var c in t.coords)"number"==typeof t.coords[c]&&(u[c]=t.coords[c]);this.fire("locationfound",u)}})}(window,document);
\ No newline at end of file
+/* @preserve
+ * Leaflet 1.3.4+Detached: 0e566b2ad5e696ba9f79a9d48a7e51c8f4892441.0e566b2, a JS library for interactive maps. http://leafletjs.com
+ * (c) 2010-2018 Vladimir Agafonkin, (c) 2010-2011 CloudMade
+ */
+!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i(t.L={})}(this,function(t){"use strict";function i(t){var i,e,n,o;for(e=1,n=arguments.length;e<n;e++){o=arguments[e];for(i in o)t[i]=o[i]}return t}function e(t,i){var e=Array.prototype.slice;if(t.bind)return t.bind.apply(t,e.call(arguments,1));var n=e.call(arguments,2);return function(){return t.apply(i,n.length?n.concat(e.call(arguments)):arguments)}}function n(t){return t._leaflet_id=t._leaflet_id||++ei,t._leaflet_id}function o(t,i,e){var n,o,s,r;return r=function(){n=!1,o&&(s.apply(e,o),o=!1)},s=function(){n?o=arguments:(t.apply(e,arguments),setTimeout(r,i),n=!0)}}function s(t,i,e){var n=i[1],o=i[0],s=n-o;return t===n&&e?t:((t-o)%s+s)%s+o}function r(){return!1}function a(t,i){var e=Math.pow(10,void 0===i?6:i);return Math.round(t*e)/e}function h(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function u(t){return h(t).split(/\s+/)}function l(t,i){t.hasOwnProperty("options")||(t.options=t.options?ii(t.options):{});for(var e in i)t.options[e]=i[e];return t.options}function c(t,i,e){var n=[];for(var o in t)n.push(encodeURIComponent(e?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(i&&-1!==i.indexOf("?")?"&":"?")+n.join("&")}function _(t,i){return t.replace(ni,function(t,e){var n=i[e];if(void 0===n)throw new Error("No value provided for variable "+t);return"function"==typeof n&&(n=n(i)),n})}function d(t,i){for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}function p(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}function m(t){var i=+new Date,e=Math.max(0,16-(i-ri));return ri=i+e,window.setTimeout(t,e)}function f(t,i,n){if(!n||ai!==m)return ai.call(window,e(t,i));t.call(i)}function g(t){t&&hi.call(window,t)}function v(){}function y(t){if("undefined"!=typeof L&&L&&L.Mixin){t=oi(t)?t:[t];for(var i=0;i<t.length;i++)t[i]===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)}}function x(t,i,e){this.x=e?Math.round(t):t,this.y=e?Math.round(i):i}function w(t,i,e){return t instanceof x?t:oi(t)?new x(t[0],t[1]):void 0===t||null===t?t:"object"==typeof t&&"x"in t&&"y"in t?new x(t.x,t.y):new x(t,i,e)}function P(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function b(t,i){return!t||t instanceof P?t:new P(t,i)}function T(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function z(t,i){return t instanceof T?t:new T(t,i)}function M(t,i,e){if(isNaN(t)||isNaN(i))throw new Error("Invalid LatLng object: ("+t+", "+i+")");this.lat=+t,this.lng=+i,void 0!==e&&(this.alt=+e)}function C(t,i,e){return t instanceof M?t:oi(t)&&"object"!=typeof t[0]?3===t.length?new M(t[0],t[1],t[2]):2===t.length?new M(t[0],t[1]):null:void 0===t||null===t?t:"object"==typeof t&&"lat"in t?new M(t.lat,"lng"in t?t.lng:t.lon,t.alt):void 0===i?null:new M(t,i,e)}function S(t,i,e,n){if(oi(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=i,this._c=e,this._d=n}function Z(t,i,e,n){return new S(t,i,e,n)}function E(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function k(t,i){var e,n,o,s,r,a,h="";for(e=0,o=t.length;e<o;e++){for(n=0,s=(r=t[e]).length;n<s;n++)a=r[n],h+=(n?"L":"M")+a.x+" "+a.y;h+=i?Ji?"z":"x":""}return h||"M0 0"}function A(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}function B(t,i,e,n){return"touchstart"===i?O(t,e,n):"touchmove"===i?W(t,e,n):"touchend"===i&&H(t,e,n),this}function I(t,i,e){var n=t["_leaflet_"+i+e];return"touchstart"===i?t.removeEventListener(te,n,!1):"touchmove"===i?t.removeEventListener(ie,n,!1):"touchend"===i&&(t.removeEventListener(ee,n,!1),t.removeEventListener(ne,n,!1)),this}function O(t,i,n){var o=e(function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(oe.indexOf(t.target.tagName)<0))return;Pt(t)}j(t,i)});t["_leaflet_touchstart"+n]=o,t.addEventListener(te,o,!1),re||(document.documentElement.addEventListener(te,R,!0),document.documentElement.addEventListener(ie,N,!0),document.documentElement.addEventListener(ee,D,!0),document.documentElement.addEventListener(ne,D,!0),re=!0)}function R(t){se[t.pointerId]=t,ae++}function N(t){se[t.pointerId]&&(se[t.pointerId]=t)}function D(t){delete se[t.pointerId],ae--}function j(t,i){t.touches=[];for(var e in se)t.touches.push(se[e]);t.changedTouches=[t],i(t)}function W(t,i,e){var n=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&j(t,i)};t["_leaflet_touchmove"+e]=n,t.addEventListener(ie,n,!1)}function H(t,i,e){var n=function(t){j(t,i)};t["_leaflet_touchend"+e]=n,t.addEventListener(ee,n,!1),t.addEventListener(ne,n,!1)}function F(t,i,e){function n(t){var i;if(Vi){if(!bi||"mouse"===t.pointerType)return;i=ae}else i=t.touches.length;if(!(i>1)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:t,a=n>0&&n<=h,s=e}}function o(t){if(a&&!r.cancelBubble){if(Vi){if(!bi||"mouse"===t.pointerType)return;var e,n,o={};for(n in r)e=r[n],o[n]=e&&e.bind?e.bind(r):e;r=o}r.type="dblclick",i(r),s=null}}var s,r,a=!1,h=250;return t[le+he+e]=n,t[le+ue+e]=o,t[le+"dblclick"+e]=i,t.addEventListener(he,n,!1),t.addEventListener(ue,o,!1),t.addEventListener("dblclick",i,!1),this}function U(t,i){var e=t[le+he+i],n=t[le+ue+i],o=t[le+"dblclick"+i];return t.removeEventListener(he,e,!1),t.removeEventListener(ue,n,!1),bi||t.removeEventListener("dblclick",o,!1),this}function V(t){return"string"==typeof t?document.getElementById(t):t}function q(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||"auto"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return"auto"===e?null:e}function G(t,i,e){var n=document.createElement(t);return n.className=i||"",e&&e.appendChild(n),n}function K(t){var i=t.parentNode;i&&i.removeChild(t)}function Y(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function X(t){var i=t.parentNode;i.lastChild!==t&&i.appendChild(t)}function J(t){var i=t.parentNode;i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function $(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=et(t);return e.length>0&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(e)}function Q(t,i){if(void 0!==t.classList)for(var e=u(i),n=0,o=e.length;n<o;n++)t.classList.add(e[n]);else if(!$(t,i)){var s=et(t);it(t,(s?s+" ":"")+i)}}function tt(t,i){void 0!==t.classList?t.classList.remove(i):it(t,h((" "+et(t)+" ").replace(" "+i+" "," ")))}function it(t,i){void 0===t.className.baseVal?t.className=i:t.className.baseVal=i}function et(t){return void 0===t.className.baseVal?t.className:t.className.baseVal}function nt(t,i){"opacity"in t.style?t.style.opacity=i:"filter"in t.style&&ot(t,i)}function ot(t,i){var e=!1,n="DXImageTransform.Microsoft.Alpha";try{e=t.filters.item(n)}catch(t){if(1===i)return}i=Math.round(100*i),e?(e.Enabled=100!==i,e.Opacity=i):t.style.filter+=" progid:"+n+"(opacity="+i+")"}function st(t){for(var i=document.documentElement.style,e=0;e<t.length;e++)if(t[e]in i)return t[e];return!1}function rt(t,i,e){var n=i||new x(0,0);t.style[ce]=(Ri?"translate("+n.x+"px,"+n.y+"px)":"translate3d("+n.x+"px,"+n.y+"px,0)")+(e?" scale("+e+")":"")}function at(t,i){t._leaflet_pos=i,ji?rt(t,i):(t.style.left=i.x+"px",t.style.top=i.y+"px")}function ht(t){return t._leaflet_pos||new x(0,0)}function ut(){mt(window,"dragstart",Pt)}function lt(){ft(window,"dragstart",Pt)}function ct(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(_t(),me=t,fe=t.style.outline,t.style.outline="none",mt(window,"keydown",_t))}function _t(){me&&(me.style.outline=fe,me=void 0,fe=void 0,ft(window,"keydown",_t))}function dt(t){do{t=t.parentNode}while(!(t.offsetWidth&&t.offsetHeight||t===document.body));return t}function pt(t){var i=t.getBoundingClientRect();return{x:i.width/t.offsetWidth||1,y:i.height/t.offsetHeight||1,boundingClientRect:i}}function mt(t,i,e,n){if("object"==typeof i)for(var o in i)gt(t,o,i[o],e);else for(var s=0,r=(i=u(i)).length;s<r;s++)gt(t,i[s],e,n);return this}function ft(t,i,e,n){if("object"==typeof i)for(var o in i)vt(t,o,i[o],e);else if(i)for(var s=0,r=(i=u(i)).length;s<r;s++)vt(t,i[s],e,n);else{for(var a in t[ye])vt(t,a,t[ye][a]);delete t[ye]}return this}function gt(t,i,e,o){var s=i+n(e)+(o?"_"+n(o):"");if(t[ye]&&t[ye][s])return this;var r=function(i){return e.call(o||t,i||window.event)},a=r;Vi&&0===i.indexOf("touch")?B(t,i,r,s):!qi||"dblclick"!==i||!F||Vi&&Ei?"addEventListener"in t?"mousewheel"===i?t.addEventListener("onwheel"in t?"wheel":"mousewheel",r,!1):"mouseenter"===i||"mouseleave"===i?(r=function(i){i=i||window.event,Ct(t,i)&&a(i)},t.addEventListener("mouseenter"===i?"mouseover":"mouseout",r,!1)):("click"===i&&zi&&(r=function(t){St(t,a)}),t.addEventListener(i,r,!1)):"attachEvent"in t&&t.attachEvent("on"+i,r):F(t,r,s),t[ye]=t[ye]||{},t[ye][s]=r}function vt(t,i,e,o){var s=i+n(e)+(o?"_"+n(o):""),r=t[ye]&&t[ye][s];if(!r)return this;Vi&&0===i.indexOf("touch")?I(t,i,s):!qi||"dblclick"!==i||!U||Vi&&Ei?"removeEventListener"in t?"mousewheel"===i?t.removeEventListener("onwheel"in t?"wheel":"mousewheel",r,!1):t.removeEventListener("mouseenter"===i?"mouseover":"mouseleave"===i?"mouseout":i,r,!1):"detachEvent"in t&&t.detachEvent("on"+i,r):U(t,s),t[ye][s]=null}function yt(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,Mt(t),this}function xt(t){return gt(t,"mousewheel",yt),this}function wt(t){return mt(t,"mousedown touchstart dblclick",yt),gt(t,"click",zt),this}function Pt(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function Lt(t){return Pt(t),yt(t),this}function bt(t,i){if(!i)return new x(t.clientX,t.clientY);var e=pt(i),n=e.boundingClientRect;return new x((t.clientX-n.left)/e.x-i.clientLeft,(t.clientY-n.top)/e.y-i.clientTop)}function Tt(t){return bi?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/xe: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 zt(t){we[t.type]=!0}function Mt(t){var i=we[t.type];return we[t.type]=!1,i}function Ct(t,i){var e=i.relatedTarget;if(!e)return!0;try{for(;e&&e!==t;)e=e.parentNode}catch(t){return!1}return e!==t}function St(t,i){var e=t.timeStamp||t.originalEvent&&t.originalEvent.timeStamp,n=ge&&e-ge;n&&n>100&&n<500||t.target._simulatedClick&&!t._simulated?Lt(t):(ge=e,i(t))}function Zt(t,i){if(!i||!t.length)return t.slice();var e=i*i;return t=Bt(t,e),t=kt(t,e)}function Et(t,i,e){return Math.sqrt(Dt(t,i,e,!0))}function kt(t,i){var e=t.length,n=new(typeof Uint8Array!=void 0+""?Uint8Array:Array)(e);n[0]=n[e-1]=1,At(t,n,i,0,e-1);var o,s=[];for(o=0;o<e;o++)n[o]&&s.push(t[o]);return s}function At(t,i,e,n,o){var s,r,a,h=0;for(r=n+1;r<=o-1;r++)(a=Dt(t[r],t[n],t[o],!0))>h&&(s=r,h=a);h>e&&(i[s]=1,At(t,i,e,n,s),At(t,i,e,s,o))}function Bt(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;n<s;n++)Nt(t[n],t[o])>i&&(e.push(t[n]),o=n);return o<s-1&&e.push(t[s-1]),e}function It(t,i,e,n,o){var s,r,a,h=n?ke:Rt(t,e),u=Rt(i,e);for(ke=u;;){if(!(h|u))return[t,i];if(h&u)return!1;a=Rt(r=Ot(t,i,s=h||u,e,o),e),s===h?(t=r,h=a):(i=r,u=a)}}function Ot(t,i,e,n,o){var s,r,a=i.x-t.x,h=i.y-t.y,u=n.min,l=n.max;return 8&e?(s=t.x+a*(l.y-t.y)/h,r=l.y):4&e?(s=t.x+a*(u.y-t.y)/h,r=u.y):2&e?(s=l.x,r=t.y+h*(l.x-t.x)/a):1&e&&(s=u.x,r=t.y+h*(u.x-t.x)/a),new x(s,r,o)}function Rt(t,i){var e=0;return t.x<i.min.x?e|=1:t.x>i.max.x&&(e|=2),t.y<i.min.y?e|=4:t.y>i.max.y&&(e|=8),e}function Nt(t,i){var e=i.x-t.x,n=i.y-t.y;return e*e+n*n}function Dt(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,u=a*a+h*h;return u>0&&((o=((t.x-s)*a+(t.y-r)*h)/u)>1?(s=e.x,r=e.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new x(s,r)}function jt(t){return!oi(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function Wt(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),jt(t)}function Ht(t,i,e){var n,o,s,r,a,h,u,l,c,_=[1,4,2,8];for(o=0,u=t.length;o<u;o++)t[o]._code=Rt(t[o],i);for(r=0;r<4;r++){for(l=_[r],n=[],o=0,s=(u=t.length)-1;o<u;s=o++)a=t[o],h=t[s],a._code&l?h._code&l||((c=Ot(h,a,l,i,e))._code=Rt(c,i),n.push(c)):(h._code&l&&((c=Ot(h,a,l,i,e))._code=Rt(c,i),n.push(c)),n.push(a));t=n}return t}function Ft(t,i){var e,n,o,s,r="Feature"===t.type?t.geometry:t,a=r?r.coordinates:null,h=[],u=i&&i.pointToLayer,l=i&&i.coordsToLatLng||Ut;if(!a&&!r)return null;switch(r.type){case"Point":return e=l(a),u?u(t,e):new $e(e);case"MultiPoint":for(o=0,s=a.length;o<s;o++)e=l(a[o]),h.push(u?u(t,e):new $e(e));return new Ke(h);case"LineString":case"MultiLineString":return n=Vt(a,"LineString"===r.type?0:1,l),new nn(n,i);case"Polygon":case"MultiPolygon":return n=Vt(a,"Polygon"===r.type?1:2,l),new on(n,i);case"GeometryCollection":for(o=0,s=r.geometries.length;o<s;o++){var c=Ft({geometry:r.geometries[o],type:"Feature",properties:t.properties},i);c&&h.push(c)}return new Ke(h);default:throw new Error("Invalid GeoJSON object.")}}function Ut(t){return new M(t[1],t[0],t[2])}function Vt(t,i,e){for(var n,o=[],s=0,r=t.length;s<r;s++)n=i?Vt(t[s],i-1,e):(e||Ut)(t[s]),o.push(n);return o}function qt(t,i){return i="number"==typeof i?i:6,void 0!==t.alt?[a(t.lng,i),a(t.lat,i),a(t.alt,i)]:[a(t.lng,i),a(t.lat,i)]}function Gt(t,i,e,n){for(var o=[],s=0,r=t.length;s<r;s++)o.push(i?Gt(t[s],i-1,e,n):qt(t[s],n));return!i&&e&&o.push(o[0]),o}function Kt(t,e){return t.feature?i({},t.feature,{geometry:e}):Yt(e)}function Yt(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}function Xt(t,i){return new sn(t,i)}function Jt(t,i){return new mn(t,i)}function $t(t){return Xi?new vn(t):null}function Qt(t){return Ji||$i?new Pn(t):null}var ti=Object.freeze;Object.freeze=function(t){return t};var ii=Object.create||function(){function t(){}return function(i){return t.prototype=i,new t}}(),ei=0,ni=/\{ *([\w_-]+) *\}/g,oi=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},si="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",ri=0,ai=window.requestAnimationFrame||p("RequestAnimationFrame")||m,hi=window.cancelAnimationFrame||p("CancelAnimationFrame")||p("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)},ui=(Object.freeze||Object)({freeze:ti,extend:i,create:ii,bind:e,lastId:ei,stamp:n,throttle:o,wrapNum:s,falseFn:r,formatNum:a,trim:h,splitWords:u,setOptions:l,getParamString:c,template:_,isArray:oi,indexOf:d,emptyImageUrl:si,requestFn:ai,cancelFn:hi,requestAnimFrame:f,cancelAnimFrame:g});v.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},n=e.__super__=this.prototype,o=ii(n);o.constructor=e,e.prototype=o;for(var s in this)this.hasOwnProperty(s)&&"prototype"!==s&&"__super__"!==s&&(e[s]=this[s]);return t.statics&&(i(e,t.statics),delete t.statics),t.includes&&(y(t.includes),i.apply(null,[o].concat(t.includes)),delete t.includes),o.options&&(t.options=i(ii(o.options),t.options)),i(o,t),o._initHooks=[],o.callInitHooks=function(){if(!this._initHooksCalled){n.callInitHooks&&n.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,i=o._initHooks.length;t<i;t++)o._initHooks[t].call(this)}},e},v.include=function(t){return i(this.prototype,t),this},v.mergeOptions=function(t){return i(this.prototype.options,t),this},v.addInitHook=function(t){var i=Array.prototype.slice.call(arguments,1),e="function"==typeof t?t:function(){this[t].apply(this,i)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(e),this};var li={on:function(t,i,e){if("object"==typeof t)for(var n in t)this._on(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._on(t[o],i,e);return this},off:function(t,i,e){if(t)if("object"==typeof t)for(var n in t)this._off(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._off(t[o],i,e);else delete this._events;return this},_on:function(t,i,e){this._events=this._events||{};var n=this._events[t];n||(n=[],this._events[t]=n),e===this&&(e=void 0);for(var o={fn:i,ctx:e},s=n,r=0,a=s.length;r<a;r++)if(s[r].fn===i&&s[r].ctx===e)return;s.push(o)},_off:function(t,i,e){var n,o,s;if(this._events&&(n=this._events[t]))if(i){if(e===this&&(e=void 0),n)for(o=0,s=n.length;o<s;o++){var a=n[o];if(a.ctx===e&&a.fn===i)return a.fn=r,this._firingCount&&(this._events[t]=n=n.slice()),void n.splice(o,1)}}else{for(o=0,s=n.length;o<s;o++)n[o].fn=r;delete this._events[t]}},fire:function(t,e,n){if(!this.listens(t,n))return this;var o=i({},e,{type:t,target:this,sourceTarget:e&&e.sourceTarget||this});if(this._events){var s=this._events[t];if(s){this._firingCount=this._firingCount+1||1;for(var r=0,a=s.length;r<a;r++){var h=s[r];h.fn.call(h.ctx||this,o)}this._firingCount--}}return n&&this._propagateEvent(o),this},listens:function(t,i){var e=this._events&&this._events[t];if(e&&e.length)return!0;if(i)for(var n in this._eventParents)if(this._eventParents[n].listens(t,i))return!0;return!1},once:function(t,i,n){if("object"==typeof t){for(var o in t)this.once(o,t[o],i);return this}var s=e(function(){this.off(t,i,n).off(t,s,n)},this);return this.on(t,i,n).on(t,s,n)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[n(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[n(t)],this},_propagateEvent:function(t){for(var e in this._eventParents)this._eventParents[e].fire(t.type,i({layer:t.target,propagatedFrom:t.target},t),!0)}};li.addEventListener=li.on,li.removeEventListener=li.clearAllEventListeners=li.off,li.addOneTimeEventListener=li.once,li.fireEvent=li.fire,li.hasEventListeners=li.listens;var ci=v.extend(li),_i=Math.trunc||function(t){return t>0?Math.floor(t):Math.ceil(t)};x.prototype={clone:function(){return new x(this.x,this.y)},add:function(t){return this.clone()._add(w(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(w(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 x(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new x(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=_i(this.x),this.y=_i(this.y),this},distanceTo:function(t){var i=(t=w(t)).x-this.x,e=t.y-this.y;return Math.sqrt(i*i+e*e)},equals:function(t){return(t=w(t)).x===this.x&&t.y===this.y},contains:function(t){return t=w(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+a(this.x)+", "+a(this.y)+")"}},P.prototype={extend:function(t){return t=w(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new x((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new x(this.min.x,this.max.y)},getTopRight:function(){return new x(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 i,e;return(t="number"==typeof t[0]||t instanceof x?w(t):b(t))instanceof P?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.x<e.x,r=o.y>i.y&&n.y<e.y;return s&&r},isValid:function(){return!(!this.min||!this.max)}},T.prototype={extend:function(t){var i,e,n=this._southWest,o=this._northEast;if(t instanceof M)i=t,e=t;else{if(!(t instanceof T))return t?this.extend(C(t)||z(t)):this;if(i=t._southWest,e=t._northEast,!i||!e)return this}return n||o?(n.lat=Math.min(i.lat,n.lat),n.lng=Math.min(i.lng,n.lng),o.lat=Math.max(e.lat,o.lat),o.lng=Math.max(e.lng,o.lng)):(this._southWest=new M(i.lat,i.lng),this._northEast=new M(e.lat,e.lng)),this},pad:function(t){var i=this._southWest,e=this._northEast,n=Math.abs(i.lat-e.lat)*t,o=Math.abs(i.lng-e.lng)*t;return new T(new M(i.lat-n,i.lng-o),new M(e.lat+n,e.lng+o))},getCenter:function(){return new M((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 M(this.getNorth(),this.getWest())},getSouthEast:function(){return new M(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 M||"lat"in t?C(t):z(t);var i,e,n=this._southWest,o=this._northEast;return t instanceof T?(i=t.getSouthWest(),e=t.getNorthEast()):i=e=t,i.lat>=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lat<e.lat,r=o.lng>i.lng&&n.lng<e.lng;return s&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t,i){return!!t&&(t=z(t),this._southWest.equals(t.getSouthWest(),i)&&this._northEast.equals(t.getNorthEast(),i))},isValid:function(){return!(!this._southWest||!this._northEast)}},M.prototype={equals:function(t,i){return!!t&&(t=C(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===i?1e-9:i))},toString:function(t){return"LatLng("+a(this.lat,t)+", "+a(this.lng,t)+")"},distanceTo:function(t){return pi.distance(this,C(t))},wrap:function(){return pi.wrapLatLng(this)},toBounds:function(t){var i=180*t/40075017,e=i/Math.cos(Math.PI/180*this.lat);return z([this.lat-i,this.lng-e],[this.lat+i,this.lng+e])},clone:function(){return new M(this.lat,this.lng,this.alt)}};var di={latLngToPoint:function(t,i){var e=this.projection.project(t),n=this.scale(i);return this.transformation._transform(e,n)},pointToLatLng:function(t,i){var e=this.scale(i),n=this.transformation.untransform(t,e);return this.projection.unproject(n)},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){if(this.infinite)return null;var i=this.projection.bounds,e=this.scale(t);return new P(this.transformation.transform(i.min,e),this.transformation.transform(i.max,e))},infinite:!1,wrapLatLng:function(t){var i=this.wrapLng?s(t.lng,this.wrapLng,!0):t.lng;return new M(this.wrapLat?s(t.lat,this.wrapLat,!0):t.lat,i,t.alt)},wrapLatLngBounds:function(t){var i=t.getCenter(),e=this.wrapLatLng(i),n=i.lat-e.lat,o=i.lng-e.lng;if(0===n&&0===o)return t;var s=t.getSouthWest(),r=t.getNorthEast();return new T(new M(s.lat-n,s.lng-o),new M(r.lat-n,r.lng-o))}},pi=i({},di,{wrapLng:[-180,180],R:6371e3,distance:function(t,i){var e=Math.PI/180,n=t.lat*e,o=i.lat*e,s=Math.sin((i.lat-t.lat)*e/2),r=Math.sin((i.lng-t.lng)*e/2),a=s*s+Math.cos(n)*Math.cos(o)*r*r,h=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*h}}),mi={R:6378137,MAX_LATITUDE:85.0511287798,project:function(t){var i=Math.PI/180,e=this.MAX_LATITUDE,n=Math.max(Math.min(e,t.lat),-e),o=Math.sin(n*i);return new x(this.R*t.lng*i,this.R*Math.log((1+o)/(1-o))/2)},unproject:function(t){var i=180/Math.PI;return new M((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*i,t.x*i/this.R)},bounds:function(){var t=6378137*Math.PI;return new P([-t,-t],[t,t])}()};S.prototype={transform:function(t,i){return this._transform(t.clone(),i)},_transform:function(t,i){return i=i||1,t.x=i*(this._a*t.x+this._b),t.y=i*(this._c*t.y+this._d),t},untransform:function(t,i){return i=i||1,new x((t.x/i-this._b)/this._a,(t.y/i-this._d)/this._c)}};var fi,gi,vi,yi=i({},pi,{code:"EPSG:3857",projection:mi,transformation:function(){var t=.5/(Math.PI*mi.R);return Z(t,.5,-t,.5)}()}),xi=i({},yi,{code:"EPSG:900913"}),wi=document.documentElement.style,Pi="ActiveXObject"in window,Li=Pi&&!document.addEventListener,bi="msLaunchUri"in navigator&&!("documentMode"in document),Ti=A("webkit"),zi=A("android"),Mi=A("android 2")||A("android 3"),Ci=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),Si=zi&&A("Google")&&Ci<537&&!("AudioNode"in window),Zi=!!window.opera,Ei=A("chrome"),ki=A("gecko")&&!Ti&&!Zi&&!Pi,Ai=!Ei&&A("safari"),Bi=A("phantom"),Ii="OTransition"in wi,Oi=0===navigator.platform.indexOf("Win"),Ri=Pi&&"transition"in wi,Ni="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!Mi,Di="MozPerspective"in wi,ji=!window.L_DISABLE_3D&&(Ri||Ni||Di)&&!Ii&&!Bi,Wi="undefined"!=typeof orientation||A("mobile"),Hi=Wi&&Ti,Fi=Wi&&Ni,Ui=!window.PointerEvent&&window.MSPointerEvent,Vi=!(!window.PointerEvent&&!Ui),qi=!window.L_NO_TOUCH&&(Vi||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),Gi=Wi&&Zi,Ki=Wi&&ki,Yi=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,Xi=!!document.createElement("canvas").getContext,Ji=!(!document.createElementNS||!E("svg").createSVGRect),$i=!Ji&&function(){try{var t=document.createElement("div");t.innerHTML='<v:shape adj="1"/>';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(t){return!1}}(),Qi=(Object.freeze||Object)({ie:Pi,ielt9:Li,edge:bi,webkit:Ti,android:zi,android23:Mi,androidStock:Si,opera:Zi,chrome:Ei,gecko:ki,safari:Ai,phantom:Bi,opera12:Ii,win:Oi,ie3d:Ri,webkit3d:Ni,gecko3d:Di,any3d:ji,mobile:Wi,mobileWebkit:Hi,mobileWebkit3d:Fi,msPointer:Ui,pointer:Vi,touch:qi,mobileOpera:Gi,mobileGecko:Ki,retina:Yi,canvas:Xi,svg:Ji,vml:$i}),te=Ui?"MSPointerDown":"pointerdown",ie=Ui?"MSPointerMove":"pointermove",ee=Ui?"MSPointerUp":"pointerup",ne=Ui?"MSPointerCancel":"pointercancel",oe=["INPUT","SELECT","OPTION"],se={},re=!1,ae=0,he=Ui?"MSPointerDown":Vi?"pointerdown":"touchstart",ue=Ui?"MSPointerUp":Vi?"pointerup":"touchend",le="_leaflet_",ce=st(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),_e=st(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),de="webkitTransition"===_e||"OTransition"===_e?_e+"End":"transitionend";if("onselectstart"in document)fi=function(){mt(window,"selectstart",Pt)},gi=function(){ft(window,"selectstart",Pt)};else{var pe=st(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);fi=function(){if(pe){var t=document.documentElement.style;vi=t[pe],t[pe]="none"}},gi=function(){pe&&(document.documentElement.style[pe]=vi,vi=void 0)}}var me,fe,ge,ve=(Object.freeze||Object)({TRANSFORM:ce,TRANSITION:_e,TRANSITION_END:de,get:V,getStyle:q,create:G,remove:K,empty:Y,toFront:X,toBack:J,hasClass:$,addClass:Q,removeClass:tt,setClass:it,getClass:et,setOpacity:nt,testProp:st,setTransform:rt,setPosition:at,getPosition:ht,disableTextSelection:fi,enableTextSelection:gi,disableImageDrag:ut,enableImageDrag:lt,preventOutline:ct,restoreOutline:_t,getSizedParentNode:dt,getScale:pt}),ye="_leaflet_events",xe=Oi&&Ei?2*window.devicePixelRatio:ki?window.devicePixelRatio:1,we={},Pe=(Object.freeze||Object)({on:mt,off:ft,stopPropagation:yt,disableScrollPropagation:xt,disableClickPropagation:wt,preventDefault:Pt,stop:Lt,getMousePosition:bt,getWheelDelta:Tt,fakeStop:zt,skipped:Mt,isExternalTarget:Ct,addListener:mt,removeListener:ft}),Le=ci.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=ht(t),this._offset=i.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=f(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;i<e?this._runFrame(this._easeOut(i/e),t):(this._runFrame(1),this._complete())},_runFrame:function(t,i){var e=this._startPos.add(this._offset.multiplyBy(t));i&&e._round(),at(this._el,e),this.fire("step")},_complete:function(){g(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),be=ci.extend({options:{crs:yi,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,i){i=l(this,i),this._initContainer(t),this._initLayout(),this._onResize=e(this._onResize,this),this._initEvents(),i.maxBounds&&this.setMaxBounds(i.maxBounds),void 0!==i.zoom&&(this._zoom=this._limitZoom(i.zoom)),i.center&&void 0!==i.zoom&&this.setView(C(i.center),i.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this.callInitHooks(),this._zoomAnimated=_e&&ji&&!Gi&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),mt(this._proxy,de,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,e,n){return e=void 0===e?this._zoom:this._limitZoom(e),t=this._limitCenter(C(t),e,this.options.maxBounds),n=n||{},this._stop(),this._loaded&&!n.reset&&!0!==n&&(void 0!==n.animate&&(n.zoom=i({animate:n.animate},n.zoom),n.pan=i({animate:n.animate,duration:n.duration},n.pan)),this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan))?(clearTimeout(this._sizeTimer),this):(this._resetView(t,e),this)},setZoom:function(t,i){return this._loaded?this.setView(this.getCenter(),t,{zoom:i}):(this._zoom=t,this)},zoomIn:function(t,i){return t=t||(ji?this.options.zoomDelta:1),this.setZoom(this._zoom+t,i)},zoomOut:function(t,i){return t=t||(ji?this.options.zoomDelta:1),this.setZoom(this._zoom-t,i)},setZoomAround:function(t,i,e){var n=this.getZoomScale(i),o=this.getSize().divideBy(2),s=(t instanceof x?t:this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1-1/n),r=this.containerPointToLatLng(o.add(s));return this.setView(r,i,{zoom:e})},_getBoundsCenterZoom:function(t,i){i=i||{},t=t.getBounds?t.getBounds():z(t);var e=w(i.paddingTopLeft||i.padding||[0,0]),n=w(i.paddingBottomRight||i.padding||[0,0]),o=this.getBoundsZoom(t,!1,e.add(n));if((o="number"==typeof i.maxZoom?Math.min(i.maxZoom,o):o)===1/0)return{center:t.getCenter(),zoom:o};var s=n.subtract(e).divideBy(2),r=this.project(t.getSouthWest(),o),a=this.project(t.getNorthEast(),o);return{center:this.unproject(r.add(a).divideBy(2).add(s),o),zoom:o}},fitBounds:function(t,i){if(!(t=z(t)).isValid())throw new Error("Bounds are not valid.");var e=this._getBoundsCenterZoom(t,i);return this.setView(e.center,e.zoom,i)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,i){return this.setView(t,this._zoom,{pan:i})},panBy:function(t,i){if(t=w(t).round(),i=i||{},!t.x&&!t.y)return this.fire("moveend");if(!0!==i.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new Le,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),i.noMoveStart||this.fire("movestart"),!1!==i.animate){Q(this._mapPane,"leaflet-pan-anim");var e=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,e,i.duration||.25,i.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},flyTo:function(t,i,e){function n(t){var i=(g*g-m*m+(t?-1:1)*x*x*v*v)/(2*(t?g:m)*x*v),e=Math.sqrt(i*i+1)-i;return e<1e-9?-18:Math.log(e)}function o(t){return(Math.exp(t)-Math.exp(-t))/2}function s(t){return(Math.exp(t)+Math.exp(-t))/2}function r(t){return o(t)/s(t)}function a(t){return m*(s(w)/s(w+y*t))}function h(t){return m*(s(w)*r(w+y*t)-o(w))/x}function u(t){return 1-Math.pow(1-t,1.5)}function l(){var e=(Date.now()-P)/b,n=u(e)*L;e<=1?(this._flyToFrame=f(l,this),this._move(this.unproject(c.add(_.subtract(c).multiplyBy(h(n)/v)),p),this.getScaleZoom(m/a(n),p),{flyTo:!0})):this._move(t,i)._moveEnd(!0)}if(!1===(e=e||{}).animate||!ji)return this.setView(t,i,e);this._stop();var c=this.project(this.getCenter()),_=this.project(t),d=this.getSize(),p=this._zoom;t=C(t),i=void 0===i?p:i;var m=Math.max(d.x,d.y),g=m*this.getZoomScale(p,i),v=_.distanceTo(c)||1,y=1.42,x=y*y,w=n(0),P=Date.now(),L=(n(1)-w)/y,b=e.duration?1e3*e.duration:1e3*L*.8;return this._moveStart(!0,e.noMoveStart),l.call(this),this},flyToBounds:function(t,i){var e=this._getBoundsCenterZoom(t,i);return this.flyTo(e.center,e.zoom,i)},setMaxBounds:function(t){return(t=z(t)).isValid()?(this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off("moveend",this._panInsideMaxBounds))},setMinZoom:function(t){var i=this.options.minZoom;return this.options.minZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var i=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,z(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},invalidateSize:function(t){if(!this._loaded)return this;t=i({animate:!1,pan:!0},!0===t?{animate:!0}:t);var n=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=n.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(e(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:n,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=i({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var n=e(this._handleGeolocationResponse,this),o=e(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(n,o,t):navigator.geolocation.getCurrentPosition(n,o,t),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 i=t.code,e=t.message||(1===i?"permission denied":2===i?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:i,message:"Geolocation error: "+e+"."})},_handleGeolocationResponse:function(t){var i=new M(t.coords.latitude,t.coords.longitude),e=i.toBounds(2*t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),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}void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),K(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(g(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload");var t;for(t in this._layers)this._layers[t].remove();for(t in this._panes)K(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=G("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new T(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,i,e){t=z(t),e=w(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),u=b(this.project(a,n),this.project(r,n)).getSize(),l=ji?this.options.zoomSnap:1,c=h.x/u.x,_=h.y/u.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),l&&(n=Math.round(n/(l/100))*(l/100),n=i?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new x(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new P(e,e.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,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(C(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(w(t),i)},layerPointToLatLng:function(t){var i=w(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(C(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(C(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(z(t))},distance:function(t,i){return this.options.crs.distance(C(t),C(i))},containerPointToLayerPoint:function(t){return w(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return w(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(w(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(C(t)))},mouseEventToContainerPoint:function(t){return bt(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=V(t);if(!i)throw new Error("Map container not found.");if(i._leaflet_id)throw new Error("Map container is already initialized.");mt(i,"scroll",this._onScroll,this),this._containerId=n(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&ji,Q(t,"leaflet-container"+(qi?" leaflet-touch":"")+(Yi?" leaflet-retina":"")+(Li?" leaflet-oldie":"")+(Ai?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var i=q(t,"position");"absolute"!==i&&"relative"!==i&&"fixed"!==i&&(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),at(this._mapPane,new x(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(Q(t.markerPane,"leaflet-zoom-hide"),Q(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,i){at(this._mapPane,new x(0,0));var e=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var n=this._zoom!==i;this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire("viewreset"),e&&this.fire("load")},_moveStart:function(t,i){return t&&this.fire("zoomstart"),i||this.fire("movestart"),this},_move:function(t,i,e){void 0===i&&(i=this._zoom);var n=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||e&&e.pinch)&&this.fire("zoom",e),this.fire("move",e)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return g(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){at(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={},this._targets[n(this._container)]=this;var i=t?ft:mt;i(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress",this._handleDOMEvent,this),this.options.trackResize&&i(window,"resize",this._onResize,this),ji&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){g(this._resizeRequest),this._resizeRequest=f(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,i){for(var e,o=[],s="mouseout"===i||"mouseover"===i,r=t.target||t.srcElement,a=!1;r;){if((e=this._targets[n(r)])&&("click"===i||"preclick"===i)&&!t._simulated&&this._draggableMoved(e)){a=!0;break}if(e&&e.listens(i,!0)){if(s&&!Ct(r,t))break;if(o.push(e),s)break}if(r===this._container)break;r=r.parentNode}return o.length||a||s||!Ct(r,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!Mt(t)){var i=t.type;"mousedown"!==i&&"keypress"!==i||ct(t.target||t.srcElement),this._fireDOMEvent(t,i)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,n){if("click"===t.type){var o=i({},t);o.type="preclick",this._fireDOMEvent(o,o.type,n)}if(!t._stopped&&(n=(n||[]).concat(this._findEventTargets(t,e))).length){var s=n[0];"contextmenu"===e&&s.listens(e,!0)&&Pt(t);var r={originalEvent:t};if("keypress"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var h=0;h<n.length;h++)if(n[h].fire(e,r,!0),r.originalEvent._stopped||!1===n[h].options.bubblingMouseEvents&&-1!==d(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,i=this._handlers.length;t<i;t++)this._handlers[t].disable()},whenReady:function(t,i){return this._loaded?t.call(i||this,{target:this}):this.on("load",t,i),this},_getMapPanePos:function(){return ht(this._mapPane)||new x(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,i){return(t&&void 0!==i?this._getNewPixelOrigin(t,i):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,i){var e=this.getSize()._divideBy(2);return this.project(t,i)._subtract(e)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return this.project(t,i)._subtract(n)},_latLngBoundsToNewLayerBounds:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return b([this.project(t.getSouthWest(),i)._subtract(n),this.project(t.getNorthWest(),i)._subtract(n),this.project(t.getSouthEast(),i)._subtract(n),this.project(t.getNorthEast(),i)._subtract(n)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,i,e){if(!e)return t;var n=this.project(t,i),o=this.getSize().divideBy(2),s=new P(n.subtract(o),n.add(o)),r=this._getBoundsOffset(s,e,i);return r.round().equals([0,0])?t:this.unproject(n.add(r),i)},_limitOffset:function(t,i){if(!i)return t;var e=this.getPixelBounds(),n=new P(e.min.add(t),e.max.add(t));return t.add(this._getBoundsOffset(n,i))},_getBoundsOffset:function(t,i,e){var n=b(this.project(i.getNorthEast(),e),this.project(i.getSouthWest(),e)),o=n.min.subtract(t.min),s=n.max.subtract(t.max);return new x(this._rebound(o.x,-s.x),this._rebound(o.y,-s.y))},_rebound:function(t,i){return t+i>0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=ji?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){tt(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e))&&(this.panBy(e,i),!0)},_createAnimProxy:function(){var t=this._proxy=G("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(t){var i=ce,e=this._proxy.style[i];rt(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",function(){var t=this.getCenter(),i=this.getZoom();rt(this._proxy,this.project(t,i),this.getZoomScale(i,1))},this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){K(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o))&&(f(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,n,o){this._mapPane&&(n&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,Q(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:i,noUpdate:o}),setTimeout(e(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&tt(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),f(function(){this._moveEnd(!0)},this))}}),Te=v.extend({options:{position:"topright"},initialize:function(t){l(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return Q(i,"leaflet-control"),-1!==e.indexOf("bottom")?n.insertBefore(i,n.firstChild):n.appendChild(i),this},remove:function(){return this._map?(K(this._container),this.onRemove&&this.onRemove(this._map),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),ze=function(t){return new Te(t)};be.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){function t(t,o){var s=e+t+" "+e+o;i[t+o]=G("div",s,n)}var i=this._controlCorners={},e="leaflet-",n=this._controlContainer=G("div",e+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)K(this._controlCorners[t]);K(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Me=Te.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e<n?-1:n<e?1:0}},initialize:function(t,i,e){l(this,e),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in i)this._addLayer(i[n],n,!0)},onAdd:function(t){this._initLayout(),this._update(),this._map=t,t.on("zoomend",this._checkDisabledLayers,this);for(var i=0;i<this._layers.length;i++)this._layers[i].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(t){return Te.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,i){return this._addLayer(t,i),this._map?this._update():this},addOverlay:function(t,i){return this._addLayer(t,i,!0),this._map?this._update():this},removeLayer:function(t){t.off("add remove",this._onLayerChange,this);var i=this._getLayer(n(t));return i&&this._layers.splice(this._layers.indexOf(i),1),this._map?this._update():this},expand:function(){Q(this._container,"leaflet-control-layers-expanded"),this._form.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._form.clientHeight?(Q(this._form,"leaflet-control-layers-scrollbar"),this._form.style.height=t+"px"):tt(this._form,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return tt(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var t="leaflet-control-layers",i=this._container=G("div",t),e=this.options.collapsed;i.setAttribute("aria-haspopup",!0),wt(i),xt(i);var n=this._form=G("form",t+"-list");e&&(this._map.on("click",this.collapse,this),zi||mt(i,{mouseenter:this.expand,mouseleave:this.collapse},this));var o=this._layersLink=G("a",t+"-toggle",i);o.href="#",o.title="Layers",qi?(mt(o,"click",Lt),mt(o,"click",this.expand,this)):mt(o,"focus",this.expand,this),e||this.expand(),this._baseLayersList=G("div",t+"-base",n),this._separator=G("div",t+"-separator",n),this._overlaysList=G("div",t+"-overlays",n),i.appendChild(n)},_getLayer:function(t){for(var i=0;i<this._layers.length;i++)if(this._layers[i]&&n(this._layers[i].layer)===t)return this._layers[i]},_addLayer:function(t,i,n){this._map&&t.on("add remove",this._onLayerChange,this),this._layers.push({layer:t,name:i,overlay:n}),this.options.sortLayers&&this._layers.sort(e(function(t,i){return this.options.sortFunction(t.layer,i.layer,t.name,i.name)},this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;Y(this._baseLayersList),Y(this._overlaysList),this._layerControlInputs=[];var t,i,e,n,o=0;for(e=0;e<this._layers.length;e++)n=this._layers[e],this._addItem(n),i=i||n.overlay,t=t||!n.overlay,o+=n.overlay?0:1;return this.options.hideSingleBase&&(t=t&&o>1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=i&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(n(t.target)),e=i.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='<input type="radio" class="leaflet-control-layers-selector" name="'+t+'"'+(i?' checked="checked"':"")+"/>",n=document.createElement("div");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement("label"),o=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement("input")).type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=o):i=this._createRadioElement("leaflet-base-layers",o),this._layerControlInputs.push(i),i.layerId=n(t.layer),mt(i,"click",this._onInputClick,this);var s=document.createElement("span");s.innerHTML=" "+t.name;var r=document.createElement("div");return e.appendChild(r),r.appendChild(i),r.appendChild(s),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);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,i,e=this._layerControlInputs,n=this._map.getZoom(),o=e.length-1;o>=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&n<i.options.minZoom||void 0!==i.options.maxZoom&&n>i.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),Ce=Te.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"&#x2212;",zoomOutTitle:"Zoom out"},onAdd:function(t){var i="leaflet-control-zoom",e=G("div",i+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+"-in",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+"-out",e,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),e},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,i,e,n,o){var s=G("a",e,n);return s.innerHTML=t,s.href="#",s.title=i,s.setAttribute("role","button"),s.setAttribute("aria-label",i),wt(s),mt(s,"click",Lt),mt(s,"click",o,this),mt(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";tt(this._zoomInButton,i),tt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMinZoom())&&Q(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMaxZoom())&&Q(this._zoomInButton,i)}});be.mergeOptions({zoomControl:!0}),be.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Ce,this.addControl(this.zoomControl))});var Se=Te.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i=G("div","leaflet-control-scale"),e=this.options;return this._addScales(e,"leaflet-control-scale-line",i),t.on(e.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,i,e){t.metric&&(this._mScale=G("div",i,e)),t.imperial&&(this._iScale=G("div",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+" m":i/1e3+" km";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;o>5280?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+" mi",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+" ft",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+"px",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+"").length-1),e=t/i;return e=e>=10?10:e>=5?5:e>=3?3:e>=2?2:1,i*e}}),Ze=Te.extend({options:{position:"bottomright",prefix:'<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(t){l(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=G("div","leaflet-control-attribution"),wt(this._container);for(var i in t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),this._container},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):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(", ")),this._container.innerHTML=e.join(" | ")}}});be.mergeOptions({attributionControl:!0}),be.addInitHook(function(){this.options.attributionControl&&(new Ze).addTo(this)});Te.Layers=Me,Te.Zoom=Ce,Te.Scale=Se,Te.Attribution=Ze,ze.layers=function(t,i,e){return new Me(t,i,e)},ze.zoom=function(t){return new Ce(t)},ze.scale=function(t){return new Se(t)},ze.attribution=function(t){return new Ze(t)};var Ee=v.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Ee.addTo=function(t,i){return t.addHandler(i,this),this};var ke,Ae={Events:li},Be=qi?"touchstart mousedown":"mousedown",Ie={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},Oe={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},Re=ci.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){l(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(mt(this._dragStartTarget,Be,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Re._dragging===this&&this.finishDrag(),ft(this._dragStartTarget,Be,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!$(this._element,"leaflet-zoom-anim")&&!(Re._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(Re._dragging=this,this._preventOutline&&ct(this._element),ut(),fi(),this._moving)))){this.fire("down");var i=t.touches?t.touches[0]:t,e=dt(this._element);this._startPoint=new x(i.clientX,i.clientY),this._parentScale=pt(e),mt(document,Oe[t.type],this._onMove,this),mt(document,Ie[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new x(i.clientX,i.clientY)._subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)<this.options.clickTolerance||(e.x/=this._parentScale.x,e.y/=this._parentScale.y,Pt(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=ht(this._element).subtract(e),Q(document.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),Q(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(e),this._moving=!0,g(this._animRequest),this._lastEvent=t,this._animRequest=f(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire("predrag",t),at(this._element,this._newPos),this.fire("drag",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){tt(document.body,"leaflet-dragging"),this._lastTarget&&(tt(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null);for(var t in Oe)ft(document,Oe[t],this._onMove,this),ft(document,Ie[t],this._onUp,this);lt(),gi(),this._moved&&this._moving&&(g(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,Re._dragging=!1}}),Ne=(Object.freeze||Object)({simplify:Zt,pointToSegmentDistance:Et,closestPointOnSegment:function(t,i,e){return Dt(t,i,e)},clipSegment:It,_getEdgeIntersection:Ot,_getBitCode:Rt,_sqClosestPointOnSegment:Dt,isFlat:jt,_flat:Wt}),De=(Object.freeze||Object)({clipPolygon:Ht}),je={project:function(t){return new x(t.lng,t.lat)},unproject:function(t){return new M(t.y,t.x)},bounds:new P([-180,-90],[180,90])},We={R:6378137,R_MINOR:6356752.314245179,bounds:new P([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var i=Math.PI/180,e=this.R,n=t.lat*i,o=this.R_MINOR/e,s=Math.sqrt(1-o*o),r=s*Math.sin(n),a=Math.tan(Math.PI/4-n/2)/Math.pow((1-r)/(1+r),s/2);return n=-e*Math.log(Math.max(a,1e-10)),new x(t.lng*i*e,n)},unproject:function(t){for(var i,e=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,u=.1;h<15&&Math.abs(u)>1e-7;h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=u=Math.PI/2-2*Math.atan(r*i)-a;return new M(a*e,t.x*e/n)}},He=(Object.freeze||Object)({LonLat:je,Mercator:We,SphericalMercator:mi}),Fe=i({},pi,{code:"EPSG:3395",projection:We,transformation:function(){var t=.5/(Math.PI*We.R);return Z(t,.5,-t,.5)}()}),Ue=i({},pi,{code:"EPSG:4326",projection:je,transformation:Z(1/180,1,-1/180,.5)}),Ve=i({},di,{projection:je,transformation:Z(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});di.Earth=pi,di.EPSG3395=Fe,di.EPSG3857=yi,di.EPSG900913=xi,di.EPSG4326=Ue,di.Simple=Ve;var qe=ci.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[n(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[n(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once("remove",function(){i.off(e,this)},this)}this.onAdd(i),this.getAttribution&&i.attributionControl&&i.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),i.fire("layeradd",{layer:this})}}});be.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=n(t);return this._layers[i]?this:(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var i=n(t);return this._layers[i]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[i],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&n(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?oi(t)?t:[t]:[]).length;i<e;i++)this.addLayer(t[i])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[n(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var i=n(t);this._zoomBoundLayers[i]&&(delete this._zoomBoundLayers[i],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,i=-1/0,e=this._getZoomSpan();for(var n in this._zoomBoundLayers){var o=this._zoomBoundLayers[n].options;t=void 0===o.minZoom?t:Math.min(t,o.minZoom),i=void 0===o.maxZoom?i:Math.max(i,o.maxZoom)}this._layersMaxZoom=i===-1/0?void 0:i,this._layersMinZoom=t===1/0?void 0:t,e!==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)}});var Ge=qe.extend({initialize:function(t,i){l(this,i),this._layers={};var e,n;if(t)for(e=0,n=t.length;e<n;e++)this.addLayer(t[e])},addLayer:function(t){var i=this.getLayerId(t);return this._layers[i]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var i=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[i]&&this._map.removeLayer(this._layers[i]),delete this._layers[i],this},hasLayer:function(t){return!!t&&(t in this._layers||this.getLayerId(t)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var i,e,n=Array.prototype.slice.call(arguments,1);for(i in this._layers)(e=this._layers[i])[t]&&e[t].apply(e,n);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);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:function(t){return n(t)}}),Ke=Ge.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Ge.prototype.addLayer.call(this,t),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Ge.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=new T;for(var i in this._layers){var e=this._layers[i];t.extend(e.getBounds?e.getBounds():e.getLatLng())}return t}}),Ye=v.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){l(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,i){var e=this._getIconUrl(t);if(!e){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n=this._createImg(e,i&&"IMG"===i.tagName?i:null);return this._setIconStyles(n,t),n},_setIconStyles:function(t,i){var e=this.options,n=e[i+"Size"];"number"==typeof n&&(n=[n,n]);var o=w(n),s=w("shadow"===i&&e.shadowAnchor||e.iconAnchor||o&&o.divideBy(2,!0));t.className="leaflet-marker-"+i+" "+(e.className||""),s&&(t.style.marginLeft=-s.x+"px",t.style.marginTop=-s.y+"px"),o&&(t.style.width=o.x+"px",t.style.height=o.y+"px")},_createImg:function(t,i){return i=i||document.createElement("img"),i.src=t,i},_getIconUrl:function(t){return Yi&&this.options[t+"RetinaUrl"]||this.options[t+"Url"]}}),Xe=Ye.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 Xe.imagePath||(Xe.imagePath=this._detectIconPath()),(this.options.imagePath||Xe.imagePath)+Ye.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=G("div","leaflet-default-icon-path",document.body),i=q(t,"background-image")||q(t,"backgroundImage");return document.body.removeChild(t),i=null===i||0!==i.indexOf("url")?"":i.replace(/^url\(["']?/,"").replace(/marker-icon\.png["']?\)$/,"")}}),Je=Ee.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new Re(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),Q(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&&tt(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var i=this._marker,e=i._map,n=this._marker.options.autoPanSpeed,o=this._marker.options.autoPanPadding,s=ht(i._icon),r=e.getPixelBounds(),a=e.getPixelOrigin(),h=b(r.min._subtract(a).add(o),r.max._subtract(a).subtract(o));if(!h.contains(s)){var u=w((Math.max(h.max.x,s.x)-h.max.x)/(r.max.x-h.max.x)-(Math.min(h.min.x,s.x)-h.min.x)/(r.min.x-h.min.x),(Math.max(h.max.y,s.y)-h.max.y)/(r.max.y-h.max.y)-(Math.min(h.min.y,s.y)-h.min.y)/(r.min.y-h.min.y)).multiplyBy(n);e.panBy(u,{animate:!1}),this._draggable._newPos._add(u),this._draggable._startPos._add(u),at(i._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=f(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire("movestart").fire("dragstart")},_onPreDrag:function(t){this._marker.options.autoPan&&(g(this._panRequest),this._panRequest=f(this._adjustPan.bind(this,t)))},_onDrag:function(t){var i=this._marker,e=i._shadow,n=ht(i._icon),o=i._map.layerPointToLatLng(n);e&&at(e,n),i._latlng=o,t.latlng=o,t.oldLatLng=this._oldLatLng,i.fire("move",t).fire("drag",t)},_onDragEnd:function(t){g(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",t)}}),$e=qe.extend({options:{icon:new Xe,interactive:!0,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",bubblingMouseEvents:!1,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10},initialize:function(t,i){l(this,i),this._latlng=C(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 i=this._latlng;return this._latlng=C(t),this.update(),this.fire("move",{oldLatLng:i,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},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(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,i="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),e=t.icon.createIcon(this._icon),n=!1;e!==this._icon&&(this._icon&&this._removeIcon(),n=!0,t.title&&(e.title=t.title),"IMG"===e.tagName&&(e.alt=t.alt||"")),Q(e,i),t.keyboard&&(e.tabIndex="0"),this._icon=e,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var o=t.icon.createShadow(this._shadow),s=!1;o!==this._shadow&&(this._removeShadow(),s=!0),o&&(Q(o,i),o.alt=""),this._shadow=o,t.opacity<1&&this._updateOpacity(),n&&this.getPane().appendChild(this._icon),this._initInteraction(),o&&s&&this.getPane("shadowPane").appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),K(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&K(this._shadow),this._shadow=null},_setPos:function(t){at(this._icon,t),this._shadow&&at(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(i)},_initInteraction:function(){if(this.options.interactive&&(Q(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Je)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Je(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;nt(this._icon,t),this._shadow&&nt(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}}),Qe=qe.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(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 l(this,t),this._renderer&&this._renderer._updateStyle(this),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}}),tn=Qe.extend({options:{fill:!0,radius:10},initialize:function(t,i){l(this,i),this._latlng=C(t),this._radius=this.options.radius},setLatLng:function(t){return this._latlng=C(t),this.redraw(),this.fire("move",{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 i=t&&t.radius||this._radius;return Qe.prototype.setStyle.call(this,t),this.setRadius(i),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,i=this._radiusY||t,e=this._clickTolerance(),n=[t+e,i+e];this._pxBounds=new P(this._point.subtract(n),this._point.add(n))},_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()}}),en=tn.extend({initialize:function(t,e,n){if("number"==typeof e&&(e=i({},n,{radius:e})),l(this,e),this._latlng=C(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 T(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:Qe.prototype.setStyle,_project:function(){var t=this._latlng.lng,i=this._latlng.lat,e=this._map,n=e.options.crs;if(n.distance===pi.distance){var o=Math.PI/180,s=this._mRadius/pi.R/o,r=e.project([i+s,t]),a=e.project([i-s,t]),h=r.add(a).divideBy(2),u=e.unproject(h).lat,l=Math.acos((Math.cos(s*o)-Math.sin(i*o)*Math.sin(u*o))/(Math.cos(i*o)*Math.cos(u*o)))/o;(isNaN(l)||0===l)&&(l=s/Math.cos(Math.PI/180*i)),this._point=h.subtract(e.getPixelOrigin()),this._radius=isNaN(l)?0:h.x-e.project([u,t-l]).x,this._radiusY=h.y-r.y}else{var c=n.unproject(n.project(this._latlng).subtract([this._mRadius,0]));this._point=e.latLngToLayerPoint(this._latlng),this._radius=this._point.x-e.latLngToLayerPoint(c).x}this._updateBounds()}}),nn=Qe.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,i){l(this,i),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 i,e,n=1/0,o=null,s=Dt,r=0,a=this._parts.length;r<a;r++)for(var h=this._parts[r],u=1,l=h.length;u<l;u++){var c=s(t,i=h[u-1],e=h[u],!0);c<n&&(n=c,o=s(t,i,e))}return o&&(o.distance=Math.sqrt(n)),o},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a=this._rings[0],h=a.length;if(!h)return null;for(t=0,i=0;t<h-1;t++)i+=a[t].distanceTo(a[t+1])/2;if(0===i)return this._map.layerPointToLatLng(a[0]);for(t=0,n=0;t<h-1;t++)if(o=a[t],s=a[t+1],e=o.distanceTo(s),(n+=e)>i)return r=(n-i)/e,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=C(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new T,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return jt(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=jt(t),n=0,o=t.length;n<o;n++)e?(i[n]=C(t[n]),this._bounds.extend(i[n])):i[n]=this._convertLatLngs(t[n]);return i},_project:function(){var t=new P;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t);var i=this._clickTolerance(),e=new x(i,i);this._bounds.isValid()&&t.isValid()&&(t.min._subtract(e),t.max._add(e),this._pxBounds=t)},_projectLatlngs:function(t,i,e){var n,o,s=t[0]instanceof M,r=t.length;if(s){for(o=[],n=0;n<r;n++)o[n]=this._map.latLngToLayerPoint(t[n]),e.extend(o[n]);i.push(o)}else for(n=0;n<r;n++)this._projectLatlngs(t[n],i,e)},_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{var i,e,n,o,s,r,a,h=this._parts;for(i=0,n=0,o=this._rings.length;i<o;i++)for(e=0,s=(a=this._rings[i]).length;e<s-1;e++)(r=It(a[e],a[e+1],t,e,!0))&&(h[n]=h[n]||[],h[n].push(r[0]),r[1]===a[e+1]&&e!==s-2||(h[n].push(r[1]),n++))}},_simplifyPoints:function(){for(var t=this._parts,i=this.options.smoothFactor,e=0,n=t.length;e<n;e++)t[e]=Zt(t[e],i)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,i){var e,n,o,s,r,a,h=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(e=0,s=this._parts.length;e<s;e++)for(n=0,o=(r=(a=this._parts[e]).length)-1;n<r;o=n++)if((i||0!==n)&&Et(t,a[o],a[n])<=h)return!0;return!1}});nn._flat=Wt;var on=nn.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a,h,u=this._rings[0],l=u.length;if(!l)return null;for(s=r=a=0,t=0,i=l-1;t<l;i=t++)e=u[t],n=u[i],o=e.y*n.x-n.y*e.x,r+=(e.x+n.x)*o,a+=(e.y+n.y)*o,s+=3*o;return h=0===s?u[0]:[r/s,a/s],this._map.layerPointToLatLng(h)},_convertLatLngs:function(t){var i=nn.prototype._convertLatLngs.call(this,t),e=i.length;return e>=2&&i[0]instanceof M&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){nn.prototype._setLatLngs.call(this,t),jt(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return jt(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new x(i,i);if(t=new P(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;o<s;o++)(n=Ht(this._rings[o],t,!0)).length&&this._parts.push(n)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var i,e,n,o,s,r,a,h,u=!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=(i=this._parts[o]).length)-1;s<h;r=s++)e=i[s],n=i[r],e.y>t.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(u=!u);return u||nn.prototype._containsPoint.call(this,t,!0)}}),sn=Ke.extend({initialize:function(t,i){l(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=oi(t)?t:t.features;if(o){for(i=0,e=o.length;i<e;i++)((n=o[i]).geometries||n.geometry||n.features||n.coordinates)&&this.addData(n);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=Ft(t,s);return r?(r.feature=Yt(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return t.options=i({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this},setStyle:function(t){return this.eachLayer(function(i){this._setLayerStyle(i,t)},this)},_setLayerStyle:function(t,i){"function"==typeof i&&(i=i(t.feature)),t.setStyle&&t.setStyle(i)}}),rn={toGeoJSON:function(t){return Kt(this,{type:"Point",coordinates:qt(this.getLatLng(),t)})}};$e.include(rn),en.include(rn),tn.include(rn),nn.include({toGeoJSON:function(t){var i=!jt(this._latlngs),e=Gt(this._latlngs,i?1:0,!1,t);return Kt(this,{type:(i?"Multi":"")+"LineString",coordinates:e})}}),on.include({toGeoJSON:function(t){var i=!jt(this._latlngs),e=i&&!jt(this._latlngs[0]),n=Gt(this._latlngs,e?2:i?1:0,!0,t);return i||(n=[n]),Kt(this,{type:(e?"Multi":"")+"Polygon",coordinates:n})}}),Ge.include({toMultiPoint:function(t){var i=[];return this.eachLayer(function(e){i.push(e.toGeoJSON(t).geometry.coordinates)}),Kt(this,{type:"MultiPoint",coordinates:i})},toGeoJSON:function(t){var i=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===i)return this.toMultiPoint(t);var e="GeometryCollection"===i,n=[];return this.eachLayer(function(i){if(i.toGeoJSON){var o=i.toGeoJSON(t);if(e)n.push(o.geometry);else{var s=Yt(o);"FeatureCollection"===s.type?n.push.apply(n,s.features):n.push(s)}}}),e?Kt(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}});var an=Xt,hn=qe.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,i,e){this._url=t,this._bounds=z(i),l(this,e)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(Q(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){K(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&&X(this._image),this},bringToBack:function(){return this._map&&J(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=z(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,i=this._image=t?this._url:G("img");Q(i,"leaflet-image-layer"),this._zoomAnimated&&Q(i,"leaflet-zoom-animated"),this.options.className&&Q(i,this.options.className),i.onselectstart=r,i.onmousemove=r,i.onload=e(this.fire,this,"load"),i.onerror=e(this._overlayOnError,this,"error"),(this.options.crossOrigin||""===this.options.crossOrigin)&&(i.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),t?this._url=i.src:(i.src=this._url,i.alt=this.options.alt)},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),e=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;rt(this._image,e,i)},_reset:function(){var t=this._image,i=new P(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),e=i.getSize();at(t,i.min),t.style.width=e.x+"px",t.style.height=e.y+"px"},_updateOpacity:function(){nt(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)}}),un=hn.extend({options:{autoplay:!0,loop:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,i=this._image=t?this._url:G("video");if(Q(i,"leaflet-image-layer"),this._zoomAnimated&&Q(i,"leaflet-zoom-animated"),i.onselectstart=r,i.onmousemove=r,i.onloadeddata=e(this.fire,this,"load"),t){for(var n=i.getElementsByTagName("source"),o=[],s=0;s<n.length;s++)o.push(n[s].src);this._url=n.length>0?o:[i.src]}else{oi(this._url)||(this._url=[this._url]),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop;for(var a=0;a<this._url.length;a++){var h=G("source");h.src=this._url[a],i.appendChild(h)}}}}),ln=qe.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(t,i){l(this,t),this._source=i},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&nt(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&nt(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(nt(this._container,0),this._removeTimeout=setTimeout(e(K,void 0,this._container),200)):K(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=C(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&&X(this._container),this},bringToBack:function(){return this._map&&J(this._container),this},_updateContent:function(){if(this._content){var t=this._contentNode,i="function"==typeof this._content?this._content(this._source||this):this._content;if("string"==typeof i)t.innerHTML=i;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(i)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),i=w(this.options.offset),e=this._getAnchor();this._zoomAnimated?at(this._container,t.add(e)):i=i.add(t).add(e);var n=this._containerBottom=-i.y,o=this._containerLeft=-Math.round(this._containerWidth/2)+i.x;this._container.style.bottom=n+"px",this._container.style.left=o+"px"}},_getAnchor:function(){return[0,0]}}),cn=ln.extend({options:{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.openPopup(this),this},onAdd:function(t){ln.prototype.onAdd.call(this,t),t.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof Qe||this._source.on("preclick",yt))},onRemove:function(t){ln.prototype.onRemove.call(this,t),t.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof Qe||this._source.off("preclick",yt))},getEvents:function(){var t=ln.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},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t="leaflet-popup",i=this._container=G("div",t+" "+(this.options.className||"")+" leaflet-zoom-animated"),e=this._wrapper=G("div",t+"-content-wrapper",i);if(this._contentNode=G("div",t+"-content",e),wt(e),xt(this._contentNode),mt(e,"contextmenu",yt),this._tipContainer=G("div",t+"-tip-container",i),this._tip=G("div",t+"-tip",this._tipContainer),this.options.closeButton){var n=this._closeButton=G("a",t+"-close-button",i);n.href="#close",n.innerHTML="&#215;",mt(n,"click",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,i=t.style;i.width="",i.whiteSpace="nowrap";var e=t.offsetWidth;e=Math.min(e,this.options.maxWidth),e=Math.max(e,this.options.minWidth),i.width=e+1+"px",i.whiteSpace="",i.height="";var n=t.offsetHeight,o=this.options.maxHeight;o&&n>o?(i.height=o+"px",Q(t,"leaflet-popup-scrolled")):tt(t,"leaflet-popup-scrolled"),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();at(this._container,i.add(e))},_adjustPan:function(){if(!(!this.options.autoPan||this._map._panAnim&&this._map._panAnim._inProgress)){var t=this._map,i=parseInt(q(this._container,"marginBottom"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new x(this._containerLeft,-e-this._containerBottom);o._add(ht(this._container));var s=t.layerPointToContainerPoint(o),r=w(this.options.autoPanPadding),a=w(this.options.autoPanPaddingTopLeft||r),h=w(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+e+h.y>u.y&&(c=s.y+e-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire("autopanstart").panBy([l,c])}},_onCloseButtonClick:function(t){this._close(),Lt(t)},_getAnchor:function(){return w(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});be.mergeOptions({closePopupOnClick:!0}),be.include({openPopup:function(t,i,e){return t instanceof cn||(t=new cn(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),qe.include({bindPopup:function(t,i){return t instanceof cn?(l(t,i),this._popup=t,t._source=this):(this._popup&&!i||(this._popup=new cn(i,this)),this._popup.setContent(t)),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,i){if(t instanceof qe||(i=t,t=this),t instanceof Ke)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._popup&&this._map&&(this._popup._source=t,this._popup.update(),this._map.openPopup(this._popup,i)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),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 i=t.layer||t.target;this._popup&&this._map&&(Lt(t),i instanceof Qe?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===i?this.closePopup():this.openPopup(i,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var _n=ln.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){ln.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){ln.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=ln.prototype.getEvents.call(this);return qi&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=G("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i=this._map,e=this._container,n=i.latLngToContainerPoint(i.getCenter()),o=i.layerPointToContainerPoint(t),s=this.options.direction,r=e.offsetWidth,a=e.offsetHeight,h=w(this.options.offset),u=this._getAnchor();"top"===s?t=t.add(w(-r/2+h.x,-a+h.y+u.y,!0)):"bottom"===s?t=t.subtract(w(r/2-h.x,-h.y,!0)):"center"===s?t=t.subtract(w(r/2+h.x,a/2-u.y+h.y,!0)):"right"===s||"auto"===s&&o.x<n.x?(s="right",t=t.add(w(h.x+u.x,u.y-a/2+h.y,!0))):(s="left",t=t.subtract(w(r+u.x-h.x,a/2-u.y-h.y,!0))),tt(e,"leaflet-tooltip-right"),tt(e,"leaflet-tooltip-left"),tt(e,"leaflet-tooltip-top"),tt(e,"leaflet-tooltip-bottom"),Q(e,"leaflet-tooltip-"+s),at(e,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&nt(this._container,t)},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(i)},_getAnchor:function(){return w(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}});be.include({openTooltip:function(t,i,e){return t instanceof _n||(t=new _n(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),qe.include({bindTooltip:function(t,i){return t instanceof _n?(l(t,i),this._tooltip=t,t._source=this):(this._tooltip&&!i||(this._tooltip=new _n(i,this)),this._tooltip.setContent(t)),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){if(t||!this._tooltipHandlersAdded){var i=t?"off":"on",e={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?e.add=this._openTooltip:(e.mouseover=this._openTooltip,e.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(e.mousemove=this._moveTooltip),qi&&(e.click=this._openTooltip)),this[i](e),this._tooltipHandlersAdded=!t}},openTooltip:function(t,i){if(t instanceof qe||(i=t,t=this),t instanceof Ke)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._tooltip&&this._map&&(this._tooltip._source=t,this._tooltip.update(),this._map.openTooltip(this._tooltip,i),this._tooltip.options.interactive&&this._tooltip._container&&(Q(this._tooltip._container,"leaflet-clickable"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(tt(this._tooltip._container,"leaflet-clickable"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var i=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(i,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var i,e,n=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(i=this._map.mouseEventToContainerPoint(t.originalEvent),e=this._map.containerPointToLayerPoint(i),n=this._map.layerPointToLatLng(e)),this._tooltip.setLatLng(n)}});var dn=Ye.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(t){var i=t&&"DIV"===t.tagName?t:document.createElement("div"),e=this.options;if(i.innerHTML=!1!==e.html?e.html:"",e.bgPos){var n=w(e.bgPos);i.style.backgroundPosition=-n.x+"px "+-n.y+"px"}return this._setIconStyles(i,"icon"),i},createShadow:function(){return null}});Ye.Default=Xe;var pn=qe.extend({options:{tileSize:256,opacity:1,updateWhenIdle:Wi,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){l(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),K(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(X(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(J(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(){return this._map&&(this._removeAllTiles(),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=o(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 x?t:new x(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 i,e=this.getPane().children,n=-t(-1/0,1/0),o=0,s=e.length;o<s;o++)i=e[o].style.zIndex,e[o]!==this._container&&i&&(n=t(n,+i));isFinite(n)&&(this.options.zIndex=n+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!Li){nt(this._container,this.options.opacity);var t=+new Date,i=!1,e=!1;for(var n in this._tiles){var o=this._tiles[n];if(o.current&&o.loaded){var s=Math.min(1,(t-o.loaded)/200);nt(o.el,s),s<1?i=!0:(o.active?e=!0:this._onOpaqueTile(o),o.active=!0)}}e&&!this._noPrune&&this._pruneTiles(),i&&(g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this))}},_onOpaqueTile:r,_initContainer:function(){this._container||(this._container=G("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,i=this.options.maxZoom;if(void 0!==t){for(var e in this._levels)this._levels[e].el.children.length||e===t?(this._levels[e].el.style.zIndex=i-Math.abs(t-e),this._onUpdateLevel(e)):(K(this._levels[e].el),this._removeTilesAtZoom(e),this._onRemoveLevel(e),delete this._levels[e]);var n=this._levels[t],o=this._map;return n||((n=this._levels[t]={}).el=G("div","leaflet-tile-container leaflet-zoom-animated",this._container),n.el.style.zIndex=i,n.origin=o.project(o.unproject(o.getPixelOrigin()),t).round(),n.zoom=t,this._setZoomTransform(n,o.getCenter(),o.getZoom()),n.el.offsetWidth,this._onCreateLevel(n)),this._level=n,n}},_onUpdateLevel:r,_onRemoveLevel:r,_onCreateLevel:r,_pruneTiles:function(){if(this._map){var t,i,e=this._map.getZoom();if(e>this.options.maxZoom||e<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(i=this._tiles[t]).retain=i.current;for(t in this._tiles)if((i=this._tiles[t]).current&&!i.active){var n=i.coords;this._retainParent(n.x,n.y,n.z,n.z-5)||this._retainChildren(n.x,n.y,n.z,n.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var i in this._tiles)this._tiles[i].coords.z===t&&this._removeTile(i)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)K(this._levels[t].el),this._onRemoveLevel(t),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,i,e,n){var o=Math.floor(t/2),s=Math.floor(i/2),r=e-1,a=new x(+o,+s);a.z=+r;var h=this._tileCoordsToKey(a),u=this._tiles[h];return u&&u.active?(u.retain=!0,!0):(u&&u.loaded&&(u.retain=!0),r>n&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new x(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1<n&&this._retainChildren(o,s,e+1,n))}},_resetView:function(t){var i=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),i,i)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var i=this.options;return void 0!==i.minNativeZoom&&t<i.minNativeZoom?i.minNativeZoom:void 0!==i.maxNativeZoom&&i.maxNativeZoom<t?i.maxNativeZoom:t},_setView:function(t,i,e,n){var o=this._clampZoom(Math.round(i));(void 0!==this.options.maxZoom&&o>this.options.maxZoom||void 0!==this.options.minZoom&&o<this.options.minZoom)&&(o=void 0);var 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),e||this._pruneTiles(),this._noPrune=!!e),this._setZoomTransforms(t,i)},_setZoomTransforms:function(t,i){for(var e in this._levels)this._setZoomTransform(this._levels[e],t,i)},_setZoomTransform:function(t,i,e){var n=this._map.getZoomScale(e,t.zoom),o=t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(i,e)).round();ji?rt(t.el,o,n):at(t.el,o)},_resetGrid:function(){var t=this._map,i=t.options.crs,e=this._tileSize=this.getTileSize(),n=this._tileZoom,o=this._map.getPixelWorldBounds(this._tileZoom);o&&(this._globalTileRange=this._pxBoundsToTileRange(o)),this._wrapX=i.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,i.wrapLng[0]],n).x/e.x),Math.ceil(t.project([0,i.wrapLng[1]],n).x/e.y)],this._wrapY=i.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([i.wrapLat[0],0],n).y/e.x),Math.ceil(t.project([i.wrapLat[1],0],n).y/e.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var i=this._map,e=i._animatingZoom?Math.max(i._animateToZoom,i.getZoom()):i.getZoom(),n=i.getZoomScale(e,this._tileZoom),o=i.project(t,this._tileZoom).floor(),s=i.getSize().divideBy(2*n);return new P(o.subtract(s),o.add(s))},_update:function(t){var i=this._map;if(i){var e=this._clampZoom(i.getZoom());if(void 0===t&&(t=i.getCenter()),void 0!==this._tileZoom){var n=this._getTiledPixelBounds(t),o=this._pxBoundsToTileRange(n),s=o.getCenter(),r=[],a=this.options.keepBuffer,h=new P(o.getBottomLeft().subtract([a,-a]),o.getTopRight().add([a,-a]));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(var u in this._tiles){var l=this._tiles[u].coords;l.z===this._tileZoom&&h.contains(new x(l.x,l.y))||(this._tiles[u].current=!1)}if(Math.abs(e-this._tileZoom)>1)this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new x(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var m=document.createDocumentFragment();for(_=0;_<r.length;_++)this._addTile(r[_],m);this._level.el.appendChild(m)}}}}},_isValidTile:function(t){var i=this._map.options.crs;if(!i.infinite){var e=this._globalTileRange;if(!i.wrapLng&&(t.x<e.min.x||t.x>e.max.x)||!i.wrapLat&&(t.y<e.min.y||t.y>e.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return z(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new T(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var i=t.split(":"),e=new x(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(K(i.el),delete this._tiles[t],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){Q(t,"leaflet-tile");var i=this.getTileSize();t.style.width=i.x+"px",t.style.height=i.y+"px",t.onselectstart=r,t.onmousemove=r,Li&&this.options.opacity<1&&nt(t,this.options.opacity),zi&&!Mi&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,i){var n=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),e(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&f(e(this._tileReady,this,t,null,s)),at(s,n),this._tiles[o]={el:s,coords:t,current:!0},i.appendChild(s),this.fire("tileloadstart",{tile:s,coords:t})},_tileReady:function(t,i,n){i&&this.fire("tileerror",{error:i,tile:n,coords:t});var o=this._tileCoordsToKey(t);(n=this._tiles[o])&&(n.loaded=+new Date,this._map._fadeAnimated?(nt(n.el,0),g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this)):(n.active=!0,this._pruneTiles()),i||(Q(n.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:n.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Li||!this._map._fadeAnimated?f(this._pruneTiles,this):setTimeout(e(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new x(this._wrapX?s(t.x,this._wrapX):t.x,this._wrapY?s(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new P(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}}),mn=pn.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,i){this._url=t,(i=l(this,i)).detectRetina&&Yi&&i.maxZoom>0&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),"string"==typeof i.subdomains&&(i.subdomains=i.subdomains.split("")),zi||this.on("tileunload",this._onTileRemove)},setUrl:function(t,i){return this._url=t,i||this.redraw(),this},createTile:function(t,i){var n=document.createElement("img");return mt(n,"load",e(this._tileOnLoad,this,i,n)),mt(n,"error",e(this._tileOnError,this,i,n)),(this.options.crossOrigin||""===this.options.crossOrigin)&&(n.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),n.alt="",n.setAttribute("role","presentation"),n.src=this.getTileUrl(t),n},getTileUrl:function(t){var e={r:Yi?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=n),e["-y"]=n}return _(this._url,i(e,this.options))},_tileOnLoad:function(t,i){Li?setTimeout(e(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute("src")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom,e=this.options.zoomReverse,n=this.options.zoomOffset;return e&&(t=i-t),t+n},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=r,i.onerror=r,i.complete||(i.src=si,K(i),delete this._tiles[t]))},_removeTile:function(t){var i=this._tiles[t];if(i)return Si||i.el.setAttribute("src",si),pn.prototype._removeTile.call(this,t)},_tileReady:function(t,i,e){if(this._map&&(!e||e.getAttribute("src")!==si))return pn.prototype._tileReady.call(this,t,i,e)}}),fn=mn.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 n=i({},this.defaultWmsParams);for(var o in e)o in this.options||(n[o]=e[o]);var s=(e=l(this,e)).detectRetina&&Yi?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[i]=this._crs.code,mn.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=b(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===Ue?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(","),a=mn.prototype.getTileUrl.call(this,t);return a+c(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,e){return i(this.wmsParams,t),e||this.redraw(),this}});mn.WMS=fn,Jt.wms=function(t,i){return new fn(t,i)};var gn=qe.extend({options:{padding:.1,tolerance:0},initialize:function(t){l(this,t),n(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&Q(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,i){var e=this._map.getZoomScale(i,this._zoom),n=ht(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,i),r=this._map.project(t,i).subtract(s),a=o.multiplyBy(-e).add(n).add(o).subtract(r);ji?rt(this._container,a,e):at(this._container,a)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var t in 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,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new P(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),vn=gn.extend({getEvents:function(){var t=gn.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){gn.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");mt(t,"mousemove",o(this._onMouseMove,32,this),this),mt(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),mt(t,"mouseout",this._handleMouseOut,this),this._ctx=t.getContext("2d")},_destroyContainer:function(){g(this._redrawRequest),delete this._ctx,K(this._container),ft(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){this._redrawBounds=null;for(var t in this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){this._drawnLayers={},gn.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Yi?2:1;at(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+"px",i.style.height=e.y+"px",Yi&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){gn.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[n(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,o=i.prev;e?e.prev=o:this._drawLast=o,o?o.next=e:this._drawFirst=e,delete this._drawnLayers[t._leaflet_id],delete t._order,delete this._layers[n(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){var i,e=t.options.dashArray.split(/[, ]+/),n=[];for(i=0;i<e.length;i++)n.push(Number(e[i]));t.options._dashArray=n}else t.options._dashArray=t.options.dashArray},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||f(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var i=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new P,this._redrawBounds.extend(t._pxBounds.min.subtract([i,i])),this._redrawBounds.extend(t._pxBounds.max.add([i,i]))}},_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=this._redrawBounds;if(t){var i=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,i.x,i.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var t,i=this._redrawBounds;if(this._ctx.save(),i){var 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,i){if(this._drawing){var e,n,o,s,r=t._parts,a=r.length,h=this._ctx;if(a){for(this._drawnLayers[t._leaflet_id]=t,h.beginPath(),e=0;e<a;e++){for(n=0,o=r[e].length;n<o;n++)s=r[e][n],h[n?"lineTo":"moveTo"](s.x,s.y);i&&h.closePath()}this._fillStroke(h,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var i=t._point,e=this._ctx,n=Math.max(Math.round(t._radius),1),o=(Math.max(Math.round(t._radiusY),1)||n)/n;this._drawnLayers[t._leaflet_id]=t,1!==o&&(e.save(),e.scale(1,o)),e.beginPath(),e.arc(i.x,i.y/o,n,0,2*Math.PI,!1),1!==o&&e.restore(),this._fillStroke(e,t)}},_fillStroke:function(t,i){var e=i.options;e.fill&&(t.globalAlpha=e.fillOpacity,t.fillStyle=e.fillColor||e.color,t.fill(e.fillRule||"evenodd")),e.stroke&&0!==e.weight&&(t.setLineDash&&t.setLineDash(i.options&&i.options._dashArray||[]),t.globalAlpha=e.opacity,t.lineWidth=e.weight,t.strokeStyle=e.color,t.lineCap=e.lineCap,t.lineJoin=e.lineJoin,t.stroke())},_onClick:function(t){for(var i,e,n=this._map.mouseEventToLayerPoint(t),o=this._drawFirst;o;o=o.next)(i=o.layer).options.interactive&&i._containsPoint(n)&&!this._map._draggableMoved(i)&&(e=i);e&&(zt(t),this._fireEvent([e],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var i=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,i)}},_handleMouseOut:function(t){var i=this._hoveredLayer;i&&(tt(this._container,"leaflet-interactive"),this._fireEvent([i],t,"mouseout"),this._hoveredLayer=null)},_handleMouseHover:function(t,i){for(var e,n,o=this._drawFirst;o;o=o.next)(e=o.layer).options.interactive&&e._containsPoint(i)&&(n=e);n!==this._hoveredLayer&&(this._handleMouseOut(t),n&&(Q(this._container,"leaflet-interactive"),this._fireEvent([n],t,"mouseover"),this._hoveredLayer=n)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t)},_fireEvent:function(t,i,e){this._map._fireDOMEvent(i,e||i.type,t)},_bringToFront:function(t){var i=t._order,e=i.next,n=i.prev;e&&(e.prev=n,n?n.next=e:e&&(this._drawFirst=e),i.prev=this._drawLast,this._drawLast.next=i,i.next=null,this._drawLast=i,this._requestRedraw(t))},_bringToBack:function(t){var i=t._order,e=i.next,n=i.prev;n&&(n.next=e,e?e.prev=n:n&&(this._drawLast=n),i.prev=null,i.next=this._drawFirst,this._drawFirst.prev=i,this._drawFirst=i,this._requestRedraw(t))}}),yn=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">')}}}(),xn={_initContainer:function(){this._container=G("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(gn.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=yn("shape");Q(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=yn("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;K(i),t.removeInteractiveTarget(i),delete this._layers[n(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=yn("stroke")),o.appendChild(i),i.weight=n.weight+"px",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=oi(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=n.lineCap.replace("butt","flat"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=yn("fill")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?"M0 0":"AL "+i.x+","+i.y+" "+e+","+n+" 0,23592600")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){X(t._container)},_bringToBack:function(t){J(t._container)}},wn=$i?yn:E,Pn=gn.extend({getEvents:function(){var t=gn.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=wn("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=wn("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){K(this._container),ft(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){gn.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute("width",i.x),e.setAttribute("height",i.y)),at(e,t.min),e.setAttribute("viewBox",[t.min.x,t.min.y,i.x,i.y].join(" ")),this.fire("update")}},_initPath:function(t){var i=t._path=wn("path");t.options.className&&Q(i,t.options.className),t.options.interactive&&Q(i,"leaflet-interactive"),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){K(t._path),t.removeInteractiveTarget(t._path),delete this._layers[n(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute("stroke",e.color),i.setAttribute("stroke-opacity",e.opacity),i.setAttribute("stroke-width",e.weight),i.setAttribute("stroke-linecap",e.lineCap),i.setAttribute("stroke-linejoin",e.lineJoin),e.dashArray?i.setAttribute("stroke-dasharray",e.dashArray):i.removeAttribute("stroke-dasharray"),e.dashOffset?i.setAttribute("stroke-dashoffset",e.dashOffset):i.removeAttribute("stroke-dashoffset")):i.setAttribute("stroke","none"),e.fill?(i.setAttribute("fill",e.fillColor||e.color),i.setAttribute("fill-opacity",e.fillOpacity),i.setAttribute("fill-rule",e.fillRule||"evenodd")):i.setAttribute("fill","none"))},_updatePoly:function(t,i){this._setPath(t,k(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n="a"+e+","+(Math.max(Math.round(t._radiusY),1)||e)+" 0 1,0 ",o=t._empty()?"M0 0":"M"+(i.x-e)+","+i.y+n+2*e+",0 "+n+2*-e+",0 ";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){X(t._path)},_bringToBack:function(t){J(t._path)}});$i&&Pn.include(xn),be.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this._createRenderer()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=this._createRenderer({pane:t}),this._paneRenderers[t]=i),i},_createRenderer:function(t){return this.options.preferCanvas&&$t(t)||Qt(t)}});var Ln=on.extend({initialize:function(t,i){on.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=z(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});Pn.create=wn,Pn.pointsToPath=k,sn.geometryToLayer=Ft,sn.coordsToLatLng=Ut,sn.coordsToLatLngs=Vt,sn.latLngToCoords=qt,sn.latLngsToCoords=Gt,sn.getFeature=Kt,sn.asFeature=Yt,be.mergeOptions({boxZoom:!0});var bn=Ee.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(){mt(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){ft(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){K(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(),fi(),ut(),this._startPoint=this._map.mouseEventToContainerPoint(t),mt(document,{contextmenu:Lt,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=G("div","leaflet-zoom-box",this._container),Q(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var i=new P(this._point,this._startPoint),e=i.getSize();at(this._box,i.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(K(this._box),tt(this._container,"leaflet-crosshair")),gi(),lt(),ft(document,{contextmenu:Lt,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(e(this._resetState,this),0);var i=new T(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire("boxzoomend",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});be.addInitHook("addHandler","boxZoom",bn),be.mergeOptions({doubleClickZoom:!0});var Tn=Ee.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;"center"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});be.addInitHook("addHandler","doubleClickZoom",Tn),be.mergeOptions({dragging:!0,inertia:!Mi,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var zn=Ee.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Re(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))}Q(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){tt(this._map._container,"leaflet-grab"),tt(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=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=z(this._map.options.maxBounds);this._offsetLimit=b(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.x<i.min.x&&(t.x=this._viscousLimit(t.x,i.min.x)),t.y<i.min.y&&(t.y=this._viscousLimit(t.y,i.min.y)),t.x>i.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)<Math.abs(s+e)?o:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var i=this._map,e=i.options,n=!e.inertia||this._times.length<2;if(i.fire("dragend",t),n)i.fire("moveend");else{this._prunePositions(+new Date);var o=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=e.easeLinearity,a=o.multiplyBy(r/s),h=a.distanceTo([0,0]),u=Math.min(e.inertiaMaxSpeed,h),l=a.multiplyBy(u/h),c=u/(e.inertiaDeceleration*r),_=l.multiplyBy(-c/2).round();_.x||_.y?(_=i._limitOffset(_,i.options.maxBounds),f(function(){i.panBy(_,{duration:c,easeLinearity:r,noMoveStart:!0,animate:!0})})):i.fire("moveend")}}});be.addInitHook("addHandler","dragging",zn),be.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Mn=Ee.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"),mt(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(),ft(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,i=document.documentElement,e=t.scrollTop||i.scrollTop,n=t.scrollLeft||i.scrollLeft;this._map._container.focus(),window.scrollTo(n,e)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(t){var i,e,n=this._panKeys={},o=this.keyCodes;for(i=0,e=o.left.length;i<e;i++)n[o.left[i]]=[-1*t,0];for(i=0,e=o.right.length;i<e;i++)n[o.right[i]]=[t,0];for(i=0,e=o.down.length;i<e;i++)n[o.down[i]]=[0,t];for(i=0,e=o.up.length;i<e;i++)n[o.up[i]]=[0,-1*t]},_setZoomDelta:function(t){var i,e,n=this._zoomKeys={},o=this.keyCodes;for(i=0,e=o.zoomIn.length;i<e;i++)n[o.zoomIn[i]]=t;for(i=0,e=o.zoomOut.length;i<e;i++)n[o.zoomOut[i]]=-t},_addHooks:function(){mt(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){ft(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var i,e=t.keyCode,n=this._map;if(e in this._panKeys)n._panAnim&&n._panAnim._inProgress||(i=this._panKeys[e],t.shiftKey&&(i=w(i).multiplyBy(3)),n.panBy(i),n.options.maxBounds&&n.panInsideBounds(n.options.maxBounds));else if(e in this._zoomKeys)n.setZoom(n.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[e]);else{if(27!==e||!n._popup||!n._popup.options.closeOnEscapeKey)return;n.closePopup()}Lt(t)}}});be.addInitHook("addHandler","keyboard",Mn),be.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var Cn=Ee.extend({addHooks:function(){mt(this._map._container,"mousewheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){ft(this._map._container,"mousewheel",this._onWheelScroll,this)},_onWheelScroll:function(t){var i=Tt(t),n=this._map.options.wheelDebounceTime;this._delta+=i,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var o=Math.max(n-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(e(this._performZoom,this),o),Lt(t)},_performZoom:function(){var t=this._map,i=t.getZoom(),e=this._map.options.zoomSnap||0;t._stop();var n=this._delta/(4*this._map.options.wheelPxPerZoomLevel),o=4*Math.log(2/(1+Math.exp(-Math.abs(n))))/Math.LN2,s=e?Math.ceil(o/e)*e:o,r=t._limitZoom(i+(this._delta>0?s:-s))-i;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});be.addInitHook("addHandler","scrollWheelZoom",Cn),be.mergeOptions({tap:!0,tapTolerance:15});var Sn=Ee.extend({addHooks:function(){mt(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){ft(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(Pt(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new x(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&Q(n,"leaflet-active"),this._holdTimeout=setTimeout(e(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),this._simulateEvent("mousedown",i),mt(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),ft(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],e=i.target;e&&e.tagName&&"a"===e.tagName.toLowerCase()&&tt(e,"leaflet-active"),this._simulateEvent("mouseup",i),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var i=t.touches[0];this._newPos=new x(i.clientX,i.clientY),this._simulateEvent("mousemove",i)},_simulateEvent:function(t,i){var e=document.createEvent("MouseEvents");e._simulated=!0,i.target._simulatedClick=!0,e.initMouseEvent(t,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),i.target.dispatchEvent(e)}});qi&&!Vi&&be.addInitHook("addHandler","tap",Sn),be.mergeOptions({touchZoom:qi&&!Mi,bounceAtZoomLimits:!0});var Zn=Ee.extend({addHooks:function(){Q(this._map._container,"leaflet-touch-zoom"),mt(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){tt(this._map._container,"leaflet-touch-zoom"),ft(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),"center"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),mt(document,"touchmove",this._onTouchMove,this),mt(document,"touchend",this._onTouchEnd,this),Pt(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,n=i.mouseEventToContainerPoint(t.touches[0]),o=i.mouseEventToContainerPoint(t.touches[1]),s=n.distanceTo(o)/this._startDist;if(this._zoom=i.getScaleZoom(s,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoom<i.getMinZoom()&&s<1||this._zoom>i.getMaxZoom()&&s>1)&&(this._zoom=i._limitZoom(this._zoom)),"center"===i.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=n._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),g(this._animRequest);var a=e(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=f(a,this,!0),Pt(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,g(this._animRequest),ft(document,"touchmove",this._onTouchMove),ft(document,"touchend",this._onTouchEnd),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}});be.addInitHook("addHandler","touchZoom",Zn),be.BoxZoom=bn,be.DoubleClickZoom=Tn,be.Drag=zn,be.Keyboard=Mn,be.ScrollWheelZoom=Cn,be.Tap=Sn,be.TouchZoom=Zn,Object.freeze=ti,t.version="1.3.4+HEAD.0e566b2",t.Control=Te,t.control=ze,t.Browser=Qi,t.Evented=ci,t.Mixin=Ae,t.Util=ui,t.Class=v,t.Handler=Ee,t.extend=i,t.bind=e,t.stamp=n,t.setOptions=l,t.DomEvent=Pe,t.DomUtil=ve,t.PosAnimation=Le,t.Draggable=Re,t.LineUtil=Ne,t.PolyUtil=De,t.Point=x,t.point=w,t.Bounds=P,t.bounds=b,t.Transformation=S,t.transformation=Z,t.Projection=He,t.LatLng=M,t.latLng=C,t.LatLngBounds=T,t.latLngBounds=z,t.CRS=di,t.GeoJSON=sn,t.geoJSON=Xt,t.geoJson=an,t.Layer=qe,t.LayerGroup=Ge,t.layerGroup=function(t,i){return new Ge(t,i)},t.FeatureGroup=Ke,t.featureGroup=function(t){return new Ke(t)},t.ImageOverlay=hn,t.imageOverlay=function(t,i,e){return new hn(t,i,e)},t.VideoOverlay=un,t.videoOverlay=function(t,i,e){return new un(t,i,e)},t.DivOverlay=ln,t.Popup=cn,t.popup=function(t,i){return new cn(t,i)},t.Tooltip=_n,t.tooltip=function(t,i){return new _n(t,i)},t.Icon=Ye,t.icon=function(t){return new Ye(t)},t.DivIcon=dn,t.divIcon=function(t){return new dn(t)},t.Marker=$e,t.marker=function(t,i){return new $e(t,i)},t.TileLayer=mn,t.tileLayer=Jt,t.GridLayer=pn,t.gridLayer=function(t){return new pn(t)},t.SVG=Pn,t.svg=Qt,t.Renderer=gn,t.Canvas=vn,t.canvas=$t,t.Path=Qe,t.CircleMarker=tn,t.circleMarker=function(t,i){return new tn(t,i)},t.Circle=en,t.circle=function(t,i,e){return new en(t,i,e)},t.Polyline=nn,t.polyline=function(t,i){return new nn(t,i)},t.Polygon=on,t.polygon=function(t,i){return new on(t,i)},t.Rectangle=Ln,t.rectangle=function(t,i){return new Ln(t,i)},t.Map=be,t.map=function(t,i){return new be(t,i)};var En=window.L;t.noConflict=function(){return window.L=En,this},window.L=t});
\ No newline at end of file
diff --git a/flask_admin/static/vendor/leaflet/leaflet.js.map b/flask_admin/static/vendor/leaflet/leaflet.js.map
new file mode 100644
index 000000000..e4298b3ec
--- /dev/null
+++ b/flask_admin/static/vendor/leaflet/leaflet.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["dist/leaflet-src.js"],"names":["global","factory","exports","module","define","amd","L","this","extend","dest","i","j","len","src","arguments","length","bind","fn","obj","slice","Array","prototype","apply","call","args","concat","stamp","_leaflet_id","lastId","throttle","time","context","lock","wrapperFn","later","setTimeout","wrapNum","x","range","includeMax","max","min","d","falseFn","formatNum","num","digits","pow","Math","undefined","round","trim","str","replace","splitWords","split","setOptions","options","hasOwnProperty","create","getParamString","existingUrl","uppercase","params","push","encodeURIComponent","toUpperCase","indexOf","join","template","data","templateRe","key","value","Error","array","el","getPrefixed","name","window","timeoutDefer","Date","timeToCall","lastTime","requestAnimFrame","immediate","requestFn","cancelAnimFrame","id","cancelFn","Class","checkDeprecatedMixinEvents","includes","Mixin","isArray","Events","console","warn","stack","Point","y","toPoint","Bounds","a","b","points","toBounds","LatLngBounds","corner1","corner2","latlngs","toLatLngBounds","LatLng","lat","lng","alt","isNaN","toLatLng","c","lon","Transformation","_a","_b","_c","_d","toTransformation","svgCreate","document","createElementNS","pointsToPath","rings","closed","len2","p","svg","userAgentContains","navigator","userAgent","toLowerCase","addPointerListener","type","handler","_addPointerStart","_addPointerMove","_addPointerEnd","removePointerListener","removeEventListener","POINTER_DOWN","POINTER_MOVE","POINTER_UP","POINTER_CANCEL","onDown","e","pointerType","MSPOINTER_TYPE_MOUSE","TAG_WHITE_LIST","target","tagName","preventDefault","_handlePointer","addEventListener","_pointerDocListener","documentElement","_globalPointerDown","_globalPointerMove","_globalPointerUp","_pointers","pointerId","_pointersCount","touches","changedTouches","onMove","buttons","onUp","addDoubleTapListener","onTouchStart","count","pointer","edge","now","delta","last","touch$$1","doubleTap","delay","onTouchEnd","cancelBubble","prop","newTouch","_pre","_touchstart","_touchend","removeDoubleTapListener","touchstart","touchend","dblclick","get","getElementById","getStyle","style","currentStyle","defaultView","css","getComputedStyle","create$1","className","container","createElement","appendChild","remove","parent","parentNode","removeChild","empty","firstChild","toFront","lastChild","toBack","insertBefore","hasClass","classList","contains","getClass","RegExp","test","addClass","classes","add","setClass","removeClass","baseVal","setOpacity","opacity","_setOpacityIE","filter","filterName","filters","item","Enabled","Opacity","testProp","props","setTransform","offset","scale","pos","TRANSFORM","ie3d","setPosition","point","_leaflet_pos","any3d","left","top","getPosition","disableImageDrag","on","enableImageDrag","off","preventOutline","element","tabIndex","restoreOutline","_outlineElement","_outlineStyle","outline","getSizedParentNode","offsetWidth","offsetHeight","body","getScale","rect","getBoundingClientRect","width","height","boundingClientRect","types","addOne","removeOne","eventsKey","event","originalHandler","touch","chrome","isExternalTarget","android","filterClick","attachEvent","detachEvent","stopPropagation","originalEvent","_stopped","skipped","disableScrollPropagation","disableClickPropagation","fakeStop","returnValue","stop","getMousePosition","clientX","clientY","clientLeft","clientTop","getWheelDelta","wheelDeltaY","deltaY","deltaMode","wheelPxFactor","deltaX","deltaZ","wheelDelta","detail","abs","skipEvents","events","related","relatedTarget","err","timeStamp","elapsed","lastClick","_simulatedClick","_simulated","simplify","tolerance","sqTolerance","_reducePoints","_simplifyDP","pointToSegmentDistance","p1","p2","sqrt","_sqClosestPointOnSegment","markers","Uint8Array","_simplifyDPStep","newPoints","first","index","sqDist","maxSqDist","reducedPoints","prev","_sqDist","clipSegment","bounds","useLastCode","codeOut","newCode","codeA","_lastCode","_getBitCode","codeB","_getEdgeIntersection","code","dx","dy","t","dot","isFlat","_flat","clipPolygon","clippedPoints","k","edges","_code","geometryToLayer","geojson","latlng","geometry","coords","coordinates","layers","pointToLayer","_coordsToLatLng","coordsToLatLng","Marker","FeatureGroup","coordsToLatLngs","Polyline","Polygon","geometries","layer","properties","levelsDeep","latLngToCoords","precision","latLngsToCoords","getFeature","newGeometry","feature","asFeature","geoJSON","GeoJSON","tileLayer","url","TileLayer","canvas$1","canvas","Canvas","svg$1","vml","SVG","freeze","Object","F","proto","toString","emptyImageUrl","requestAnimationFrame","cancelAnimationFrame","clearTimeout","Util","NewClass","initialize","callInitHooks","parentProto","__super__","constructor","statics","_initHooks","_initHooksCalled","include","mergeOptions","addInitHook","init","_on","_off","_events","typeListeners","newListener","ctx","listeners","l","_firingCount","splice","fire","propagate","listens","sourceTarget","_propagateEvent","_eventParents","once","addEventParent","removeEventParent","propagatedFrom","clearAllEventListeners","addOneTimeEventListener","fireEvent","hasEventListeners","Evented","trunc","v","floor","ceil","clone","_add","subtract","_subtract","divideBy","_divideBy","multiplyBy","_multiplyBy","scaleBy","unscaleBy","_round","_floor","_ceil","_trunc","distanceTo","equals","getCenter","getBottomLeft","getTopRight","getTopLeft","getBottomRight","getSize","intersects","min2","max2","xIntersects","yIntersects","overlaps","xOverlaps","yOverlaps","isValid","sw2","ne2","sw","_southWest","ne","_northEast","pad","bufferRatio","heightBuffer","widthBuffer","getSouthWest","getNorthEast","getNorthWest","getNorth","getWest","getSouthEast","getSouth","getEast","latIntersects","lngIntersects","latOverlaps","lngOverlaps","toBBoxString","maxMargin","other","Earth","distance","wrap","wrapLatLng","sizeInMeters","latAccuracy","lngAccuracy","cos","PI","CRS","latLngToPoint","zoom","projectedPoint","projection","project","transformation","_transform","pointToLatLng","untransformedPoint","untransform","unproject","log","LN2","getProjectedBounds","infinite","s","transform","wrapLng","wrapLat","wrapLatLngBounds","center","newCenter","latShift","lngShift","R","latlng1","latlng2","rad","lat1","lat2","sinDLat","sin","sinDLon","atan2","SphericalMercator","MAX_LATITUDE","atan","exp","disableTextSelection","enableTextSelection","_userSelect","EPSG3857","EPSG900913","style$1","ie","ielt9","webkit","android23","webkitVer","parseInt","exec","androidStock","opera","gecko","safari","phantom","opera12","win","platform","webkit3d","WebKitCSSMatrix","gecko3d","L_DISABLE_3D","mobile","orientation","mobileWebkit","mobileWebkit3d","msPointer","PointerEvent","MSPointerEvent","L_NO_TOUCH","DocumentTouch","mobileOpera","mobileGecko","retina","devicePixelRatio","screen","deviceXDPI","logicalXDPI","getContext","createSVGRect","div","innerHTML","shape","behavior","adj","Browser","TRANSITION","TRANSITION_END","userSelectProperty","DomUtil","DomEvent","addListener","removeListener","PosAnimation","run","newPos","duration","easeLinearity","_el","_inProgress","_duration","_easeOutPower","_startPos","_offset","_startTime","_animate","_step","_complete","_animId","_runFrame","_easeOut","progress","Map","crs","minZoom","maxZoom","maxBounds","renderer","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","transform3DLimit","zoomSnap","zoomDelta","trackResize","_initContainer","_initLayout","_onResize","_initEvents","setMaxBounds","_zoom","_limitZoom","setView","reset","_handlers","_layers","_zoomBoundLayers","_sizeChanged","_zoomAnimated","_createAnimProxy","_proxy","_catchTransitionEnd","_addLayers","_limitCenter","_stop","_loaded","animate","pan","_tryAnimatedZoom","_tryAnimatedPan","_sizeTimer","_resetView","setZoom","zoomIn","zoomOut","setZoomAround","getZoomScale","viewHalf","centerOffset","latLngToContainerPoint","containerPointToLatLng","_getBoundsCenterZoom","getBounds","paddingTL","paddingTopLeft","padding","paddingBR","paddingBottomRight","getBoundsZoom","Infinity","paddingOffset","swPoint","nePoint","fitBounds","fitWorld","panTo","panBy","getZoom","_panAnim","step","_onPanTransitionStep","end","_onPanTransitionEnd","noMoveStart","_mapPane","_getMapPanePos","_rawPanBy","flyTo","targetCenter","targetZoom","r","w1","w0","rho2","u1","sq","sinh","n","cosh","tanh","w","r0","rho","u","easeOut","frame","start","S","_flyToFrame","_move","from","to","startZoom","getScaleZoom","_moveEnd","size","_moveStart","flyToBounds","_panInsideMaxBounds","setMinZoom","oldZoom","setMaxZoom","panInsideBounds","_enforcingBounds","invalidateSize","oldSize","_lastCenter","newSize","oldCenter","debounceMoveend","locate","_locateOptions","timeout","watch","_handleGeolocationError","message","onResponse","_handleGeolocationResponse","onError","_locationWatchId","geolocation","watchPosition","getCurrentPosition","stopLocate","clearWatch","error","latitude","longitude","accuracy","timestamp","addHandler","HandlerClass","enable","_containerId","_container","_clearControlPos","_resizeRequest","_clearHandlers","_panes","_renderer","createPane","pane","_checkIfLoaded","_moved","layerPointToLatLng","_getCenterLayerPoint","getPixelBounds","getMinZoom","_layersMinZoom","getMaxZoom","_layersMaxZoom","inside","nw","se","boundsSize","snap","scalex","scaley","_size","clientWidth","clientHeight","topLeftPoint","_getTopLeftPoint","getPixelOrigin","_pixelOrigin","getPixelWorldBounds","getPane","getPanes","getContainer","toZoom","fromZoom","latLngToLayerPoint","containerPointToLayerPoint","layerPointToContainerPoint","layerPoint","mouseEventToContainerPoint","mouseEventToLayerPoint","mouseEventToLatLng","_onScroll","_fadeAnimated","position","_initPanes","_initControlPos","panes","_paneRenderers","markerPane","shadowPane","loading","zoomChanged","_getNewPixelOrigin","pinch","_getZoomSpan","remove$$1","_targets","onOff","_handleDOMEvent","_onMoveEnd","scrollTop","scrollLeft","_findEventTargets","targets","isHover","srcElement","dragging","_draggableMoved","_fireDOMEvent","_mouseEvents","synth","isMarker","getLatLng","_radius","containerPoint","bubblingMouseEvents","enabled","moved","boxZoom","disable","whenReady","callback","_latLngToNewLayerPoint","topLeft","_latLngBoundsToNewLayerBounds","latLngBounds","_getCenterOffset","centerPoint","viewBounds","_getBoundsOffset","_limitOffset","newBounds","pxBounds","projectedMaxBounds","minOffset","maxOffset","_rebound","right","proxy","mapPane","_animatingZoom","_onZoomTransitionEnd","z","_destroyAnimProxy","propertyName","_nothingToAnimate","getElementsByClassName","_animateZoom","startAnim","noUpdate","_animateToCenter","_animateToZoom","Control","map","_map","removeControl","addControl","addTo","onAdd","corner","_controlCorners","onRemove","_refocusOnMap","screenX","screenY","focus","control","createCorner","vSide","hSide","corners","_controlContainer","Layers","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","layerA","layerB","nameA","nameB","baseLayers","overlays","_layerControlInputs","_lastZIndex","_handlingClick","_addLayer","_update","_checkDisabledLayers","_onLayerChange","_expandIfNotCollapsed","addBaseLayer","addOverlay","removeLayer","_getLayer","expand","_form","acceptableHeight","offsetTop","collapse","setAttribute","form","mouseenter","mouseleave","link","_layersLink","href","title","_baseLayersList","_separator","_overlaysList","overlay","sort","setZIndex","baseLayersPresent","overlaysPresent","baseLayersCount","_addItem","display","_createRadioElement","checked","radioHtml","radioFragment","input","label","hasLayer","defaultChecked","layerId","_onInputClick","holder","inputs","addedLayers","removedLayers","addLayer","disabled","_expand","_collapse","Zoom","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","zoomName","_zoomInButton","_createButton","_zoomIn","_zoomOutButton","_zoomOut","_updateDisabled","_disabled","shiftKey","html","zoomControl","Scale","maxWidth","metric","imperial","_addScales","updateWhenIdle","_mScale","_iScale","maxMeters","_updateScales","_updateMetric","_updateImperial","meters","_getRoundNum","_updateScale","maxMiles","miles","feet","maxFeet","text","ratio","pow10","Attribution","prefix","_attributions","attributionControl","getAttribution","addAttribution","setPrefix","removeAttribution","attribs","prefixAndAttribs","attribution","Handler","_enabled","addHooks","removeHooks","START","END","mousedown","pointerdown","MSPointerDown","MOVE","Draggable","clickTolerance","dragStartTarget","preventOutline$$1","_element","_dragStartTarget","_preventOutline","_onDown","_dragging","finishDrag","which","button","_moving","sizedParent","_startPoint","_parentScale","_onMove","_onUp","_lastTarget","SVGElementInstance","correspondingUseElement","_newPos","_animRequest","_lastEvent","_updatePosition","LineUtil","closestPointOnSegment","PolyUtil","LonLat","Mercator","R_MINOR","tmp","con","ts","tan","phi","dphi","EPSG3395","EPSG4326","Simple","Layer","removeFrom","_mapToAdd","addInteractiveTarget","targetEl","removeInteractiveTarget","_layerAdd","getEvents","beforeAdd","eachLayer","method","_addZoomLimit","_updateZoomLevels","_removeZoomLimit","oldZoomSpan","LayerGroup","getLayerId","clearLayers","invoke","methodName","getLayer","getLayers","zIndex","setStyle","bringToFront","bringToBack","Icon","popupAnchor","tooltipAnchor","createIcon","oldIcon","_createIcon","createShadow","_getIconUrl","img","_createImg","_setIconStyles","sizeOption","anchor","shadowAnchor","iconAnchor","marginLeft","marginTop","IconDefault","iconUrl","iconRetinaUrl","shadowUrl","iconSize","shadowSize","imagePath","_detectIconPath","path","MarkerDrag","marker","_marker","icon","_icon","_draggable","dragstart","_onDragStart","predrag","_onPreDrag","drag","_onDrag","dragend","_onDragEnd","_adjustPan","speed","autoPanSpeed","autoPanPadding","iconPos","origin","panBounds","movement","_panRequest","_oldLatLng","closePopup","autoPan","shadow","_shadow","_latlng","oldLatLng","interactive","keyboard","zIndexOffset","riseOnHover","riseOffset","draggable","_initIcon","update","_removeIcon","_removeShadow","viewreset","setLatLng","setZIndexOffset","setIcon","_popup","bindPopup","getElement","_setPos","classToAdd","addIcon","mouseover","_bringToFront","mouseout","_resetZIndex","newShadow","addShadow","_updateOpacity","_initInteraction","_zIndex","_updateZIndex","opt","_getPopupAnchor","_getTooltipAnchor","Path","stroke","color","weight","lineCap","lineJoin","dashArray","dashOffset","fill","fillColor","fillOpacity","fillRule","getRenderer","_initPath","_reset","_addPath","_removePath","redraw","_updatePath","_updateStyle","_bringToBack","_path","_project","_clickTolerance","CircleMarker","radius","setRadius","getRadius","_point","_updateBounds","r2","_radiusY","_pxBounds","_updateCircle","_empty","_bounds","_containsPoint","Circle","legacyOptions","_mRadius","half","latR","bottom","lngR","acos","smoothFactor","noClip","_setLatLngs","getLatLngs","_latlngs","setLatLngs","isEmpty","closestLayerPoint","minDistance","minPoint","closest","jLen","_parts","halfDist","segDist","dist","_rings","addLatLng","_defaultShape","_convertLatLngs","result","flat","_projectLatlngs","projectedBounds","ring","_clipPoints","segment","parts","_simplifyPoints","_updatePoly","part","f","area","pop","clipped","addData","features","defaultOptions","resetStyle","onEachFeature","_setLayerStyle","PointToGeoJSON","toGeoJSON","multi","holes","toMultiPoint","isGeometryCollection","jsons","json","geoJson","ImageOverlay","crossOrigin","errorOverlayUrl","_url","_image","_initImage","styleOpts","setUrl","setBounds","zoomanim","wasElementSupplied","onselectstart","onmousemove","onload","onerror","_overlayOnError","image","errorUrl","VideoOverlay","autoplay","loop","vid","onloadeddata","sourceElements","getElementsByTagName","sources","source","DivOverlay","_source","_removeTimeout","getContent","_content","setContent","content","visibility","_updateContent","_updateLayout","isOpen","node","_contentNode","hasChildNodes","_getAnchor","_containerBottom","_containerLeft","_containerWidth","Popup","minWidth","maxHeight","autoPanPaddingTopLeft","autoPanPaddingBottomRight","keepInView","closeButton","autoClose","closeOnEscapeKey","openOn","openPopup","popup","closeOnClick","closePopupOnClick","preclick","_close","moveend","wrapper","_wrapper","_tipContainer","_tip","_closeButton","_onCloseButtonClick","whiteSpace","marginBottom","containerHeight","containerWidth","layerPos","containerPos","_popupHandlersAdded","click","_openPopup","keypress","_onKeyPress","move","_movePopup","unbindPopup","togglePopup","isPopupOpen","setPopupContent","getPopup","keyCode","Tooltip","direction","permanent","sticky","tooltip","closeTooltip","_setPosition","tooltipPoint","tooltipWidth","tooltipHeight","openTooltip","bindTooltip","_tooltip","_initTooltipInteractions","unbindTooltip","_tooltipHandlersAdded","_moveTooltip","_openTooltip","mousemove","toggleTooltip","isTooltipOpen","setTooltipContent","getTooltip","DivIcon","bgPos","backgroundPosition","Default","GridLayer","tileSize","updateWhenZooming","updateInterval","maxNativeZoom","minNativeZoom","noWrap","keepBuffer","_levels","_tiles","_removeAllTiles","_tileZoom","_setAutoZIndex","isLoading","_loading","viewprereset","_invalidateAll","createTile","getTileSize","compare","children","edgeZIndex","isFinite","nextFrame","willPrune","tile","current","loaded","fade","active","_onOpaqueTile","_noPrune","_pruneTiles","_fadeFrame","_updateLevels","_onUpdateLevel","_removeTilesAtZoom","_onRemoveLevel","level","_setZoomTransform","_onCreateLevel","_level","retain","_retainParent","_retainChildren","_removeTile","x2","y2","z2","coords2","_tileCoordsToKey","animating","_setView","_clampZoom","noPrune","tileZoom","tileZoomChanged","_abortLoading","_resetGrid","_setZoomTransforms","translate","_tileSize","_globalTileRange","_pxBoundsToTileRange","_wrapX","_wrapY","_getTiledPixelBounds","mapZoom","pixelCenter","halfSize","pixelBounds","tileRange","tileCenter","queue","margin","noPruneRange","_isValidTile","fragment","createDocumentFragment","_addTile","tileBounds","_tileCoordsToBounds","_keyToBounds","_keyToTileCoords","_tileCoordsToNwSe","nwPoint","sePoint","bp","_initTile","WebkitBackfaceVisibility","tilePos","_getTilePos","_wrapCoords","_tileReady","_noTilesToLoad","newCoords","subdomains","errorTileUrl","zoomOffset","tms","zoomReverse","detectRetina","_onTileRemove","noRedraw","done","_tileOnLoad","_tileOnError","getTileUrl","_getSubdomain","_getZoomForUrl","invertedY","getAttribute","tilePoint","complete","TileLayerWMS","defaultWmsParams","service","request","styles","format","transparent","version","wmsParams","realRetina","_crs","_wmsVersion","parseFloat","projectionKey","bbox","setParams","WMS","wms","Renderer","_updatePaths","_destroyContainer","_onZoom","zoomend","_onZoomEnd","_onAnimZoom","ev","_updateTransform","currentCenterPoint","_center","topLeftOffset","_onViewPreReset","_postponeUpdatePaths","_draw","_onMouseMove","_onClick","_handleMouseOut","_ctx","_redrawRequest","_redrawBounds","_redraw","_drawnLayers","m","_updateDashArray","order","_order","_drawLast","next","_drawFirst","_requestRedraw","_extendRedrawBounds","Number","_dashArray","_clear","clearRect","save","beginPath","clip","_drawing","restore","closePath","_fillStroke","arc","globalAlpha","fillStyle","setLineDash","lineWidth","strokeStyle","clickedLayer","_fireEvent","moving","_handleMouseHover","_hoveredLayer","candidateHoveredLayer","vmlCreate","namespaces","vmlMixin","coordsize","_stroke","_fill","stroked","filled","dashStyle","endcap","joinstyle","_setPath","create$2","zoomstart","_onZoomStart","_rootGroup","_svgSize","removeAttribute","_getPaneRenderer","_createRenderer","preferCanvas","Rectangle","_boundsToLatLngs","BoxZoom","_pane","overlayPane","_resetStateTimeout","_destroy","_onMouseDown","_resetState","_clearDeferredResetState","contextmenu","mouseup","_onMouseUp","keydown","_onKeyDown","_box","_finish","boxZoomBounds","doubleClickZoom","DoubleClickZoom","_onDoubleClick","inertia","inertiaDeceleration","inertiaMaxSpeed","worldCopyJump","maxBoundsViscosity","Drag","_onPreDragLimit","_onPreDragWrap","_positions","_times","_offsetLimit","_viscosity","_lastTime","_lastPos","_absPos","_prunePositions","shift","pxCenter","pxWorldCenter","_initialWorldOffset","_worldWidth","_viscousLimit","threshold","limit","worldWidth","halfWidth","newX1","newX2","newX","noInertia","ease","speedVector","limitedSpeed","limitedSpeedVector","decelerationDuration","keyboardPanDelta","Keyboard","keyCodes","down","up","_setPanDelta","_setZoomDelta","_onFocus","blur","_onBlur","_addHooks","_removeHooks","_focused","docEl","scrollTo","panDelta","keys","_panKeys","codes","_zoomKeys","altKey","ctrlKey","metaKey","scrollWheelZoom","wheelDebounceTime","wheelPxPerZoomLevel","ScrollWheelZoom","_onWheelScroll","_delta","debounce","_lastMousePos","_timer","_performZoom","d2","d3","d4","tap","tapTolerance","Tap","_fireClick","_holdTimeout","_isTapValid","_simulateEvent","touchmove","simulatedEvent","createEvent","initMouseEvent","dispatchEvent","touchZoom","bounceAtZoomLimits","TouchZoom","_onTouchStart","_zooming","_centerPoint","_startLatLng","_pinchStartLatLng","_startDist","_startZoom","_onTouchMove","_onTouchEnd","moveFn","Projection","latLng","layerGroup","featureGroup","imageOverlay","videoOverlay","video","divIcon","gridLayer","circleMarker","circle","polyline","polygon","rectangle","oldL","noConflict"],"mappings":"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","file":"dist/leaflet.js.map"}
\ No newline at end of file
diff --git a/flask_admin/templates/bootstrap2/admin/lib.html b/flask_admin/templates/bootstrap2/admin/lib.html
index 682de0c45..f05d5f93e 100644
--- a/flask_admin/templates/bootstrap2/admin/lib.html
+++ b/flask_admin/templates/bootstrap2/admin/lib.html
@@ -219,8 +219,8 @@ <h3>{{ text }}</h3>
   <link href="{{ admin_static.url(filename='vendor/select2/select2.css', v='3.5.2') }}" rel="stylesheet">
   <link href="{{ admin_static.url(filename='vendor/bootstrap-daterangepicker/daterangepicker-bs2.css', v='1.3.22') }}" rel="stylesheet">
   {% if config.MAPBOX_MAP_ID %}
-  <link href="{{ admin_static.url(filename='vendor/leaflet/leaflet.css', v='1.0.0') }}" rel="stylesheet">
-  <link href="{{ admin_static.url(filename='vendor/leaflet/leaflet.draw.css', v='0.3.2') }}" rel="stylesheet">
+  <link href="{{ admin_static.url(filename='vendor/leaflet/leaflet.css', v='1.0.2') }}" rel="stylesheet">
+  <link href="{{ admin_static.url(filename='vendor/leaflet/leaflet.draw.css', v='0.4.6') }}" rel="stylesheet">
   {% endif %}
   {% if editable_columns %}
   <link href="{{ admin_static.url(filename='vendor/x-editable/css/bootstrap2-editable.css', v='1.5.1.1') }}" rel="stylesheet">
@@ -234,9 +234,13 @@ <h3>{{ text }}</h3>
   {% if config.MAPBOX_ACCESS_TOKEN %}
   window.MAPBOX_ACCESS_TOKEN = "{{ config.MAPBOX_ACCESS_TOKEN }}";
   {% endif %}
+  {% if config.DEFAULT_CENTER_LAT and config.DEFAULT_CENTER_LONG %}
+  window.DEFAULT_CENTER_LAT = "{{ config.DEFAULT_CENTER_LAT }}";
+  window.DEFAULT_CENTER_LONG = "{{ config.DEFAULT_CENTER_LONG }}";
+  {% endif %}
   </script>
-  <script src="{{ admin_static.url(filename='vendor/leaflet/leaflet.js', v='0.7.3') }}"></script>
-  <script src="{{ admin_static.url(filename='vendor/leaflet/leaflet.draw.js', v='0.2.3') }}"></script>
+  <script src="{{ admin_static.url(filename='vendor/leaflet/leaflet.js', v='1.0.2') }}"></script>
+  <script src="{{ admin_static.url(filename='vendor/leaflet/leaflet.draw.js', v='0.4.6') }}"></script>
   {% if config.MAPBOX_SEARCH %}
   <script>
   window.MAPBOX_SEARCH = "{{ config.MAPBOX_SEARCH }}";
diff --git a/flask_admin/templates/bootstrap3/admin/lib.html b/flask_admin/templates/bootstrap3/admin/lib.html
index 322cb9d3c..6bfdb05a6 100644
--- a/flask_admin/templates/bootstrap3/admin/lib.html
+++ b/flask_admin/templates/bootstrap3/admin/lib.html
@@ -210,8 +210,8 @@ <h3>{{ text }}</h3>
   <link href="{{ admin_static.url(filename='vendor/select2/select2-bootstrap3.css', v='1.4.6') }}" rel="stylesheet">
   <link href="{{ admin_static.url(filename='vendor/bootstrap-daterangepicker/daterangepicker-bs3.css', v='1.3.22') }}" rel="stylesheet">
   {% if config.MAPBOX_MAP_ID %}
-  <link href="{{ admin_static.url(filename='vendor/leaflet/leaflet.css', v='1.0.0') }}" rel="stylesheet">
-  <link href="{{ admin_static.url(filename='vendor/leaflet/leaflet.draw.css', v='0.3.2') }}" rel="stylesheet">
+  <link href="{{ admin_static.url(filename='vendor/leaflet/leaflet.css', v='1.0.2') }}" rel="stylesheet">
+  <link href="{{ admin_static.url(filename='vendor/leaflet/leaflet.draw.css', v='0.4.6') }}" rel="stylesheet">
   {% endif %}
   {% if editable_columns %}
   <link href="{{ admin_static.url(filename='vendor/x-editable/css/bootstrap3-editable.css', v='1.5.1.1') }}" rel="stylesheet">
@@ -225,9 +225,13 @@ <h3>{{ text }}</h3>
   {% if config.MAPBOX_ACCESS_TOKEN %}
   window.MAPBOX_ACCESS_TOKEN = "{{ config.MAPBOX_ACCESS_TOKEN }}";
   {% endif %}
+  {% if config.DEFAULT_CENTER_LAT and config.DEFAULT_CENTER_LONG %}
+  window.DEFAULT_CENTER_LAT = "{{ config.DEFAULT_CENTER_LAT }}";
+  window.DEFAULT_CENTER_LONG = "{{ config.DEFAULT_CENTER_LONG }}";
+  {% endif %}
   </script>
-  <script src="{{ admin_static.url(filename='vendor/leaflet/leaflet.js', v='1.0.0') }}"></script>
-  <script src="{{ admin_static.url(filename='vendor/leaflet/leaflet.draw.js', v='0.3.2') }}"></script>
+  <script src="{{ admin_static.url(filename='vendor/leaflet/leaflet.js', v='1.0.2') }}"></script>
+  <script src="{{ admin_static.url(filename='vendor/leaflet/leaflet.draw.js', v='0.4.6') }}"></script>
   {% if config.MAPBOX_SEARCH %}
   <script>
   window.MAPBOX_SEARCH = "{{ config.MAPBOX_SEARCH }}";

Leaflet JS Errors on examples.flask-admin.org
To reproduce, go here: http://examples.flask-admin.org/geo/admin/multipoint/edit/?url=%2Fgeo%2Fadmin%2Fmultipoint%2F&id=1

and click the "edit layers" icon (above the delete trashcan).

```
Uncaught TypeError: Cannot set property 'previousOptions' of undefined
```

Is this an issue with Leaflet, or something wrong with the flask-admin implementation?

