From 4a16ab34be4003099f524dbe514a5af24e7a7801 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Sat, 05 Jun 2021 17:29:05 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.105:10010/r/pyhmap
---
config.json | 10
widgets/LeftNavigationBar/Widget.html | 2
widgets/plotting/css/style.css | 13
libs/axios/axios.js | 3
widgets/plotting/manifest.json | 17
widgets/LeftNavigationBar/Widget.js | 134
widgets/plotting/Widget.js | 79
widgets/plotting/mars3d-src.js | 17913 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
index.html | 3
widgets/plotting/nls/zh-cn/strings.js | 5
widgets/plotting/nls/strings.js | 7
widgets/plotting/Widget.html | 15
widgets/plotting/nls/es/strings.js | 5
13 files changed, 18,160 insertions(+), 46 deletions(-)
diff --git a/config.json b/config.json
index 97eb84e..87bcf5f 100644
--- a/config.json
+++ b/config.json
@@ -170,6 +170,16 @@
}, {
"name": "左侧导航栏",
"uri": "widgets/LeftNavigationBar/Widget"
+ }, {
+ "name": "图上量算",
+ "uri": "widgets/plotting/Widget",
+ "position": {
+ "right": 10,
+ "top": 96,
+ "width": "350px",
+ "height": "800px",
+ "relativeTo": "map"
+ }
}
],
"groups": [],
diff --git a/index.html b/index.html
index 1a8d28c..77891bd 100644
--- a/index.html
+++ b/index.html
@@ -14,8 +14,11 @@
<script src="libs/layer/layer.js"></script>
<!--空间分析插件turf引用-->
<!-- <script src="libs/turf/turf.min.js"></script> -->
+ <!-- layui -->
<script src='libs/layui/layui/layui.js'></script>
<link rel="stylesheet" href="libs/layui/layui/css/layui.css">
+ <!-- axios -->
+ <script src='libs/axios/axios.js'></script>
<!--<link rel="shortcut icon" href="images/shortcut.ico">-->
<!--[if IE 8]>
<link rel="stylesheet" type="text/css" href="jimu.js/css/jimu-ie.css"/>
diff --git a/libs/axios/axios.js b/libs/axios/axios.js
new file mode 100644
index 0000000..fc6c8b6
--- /dev/null
+++ b/libs/axios/axios.js
@@ -0,0 +1,3 @@
+/* axios v0.21.1 | (c) 2020 by Matt Zabriskie */
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.axios=t():e.axios=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function r(e){var t=new i(e),n=s(i.prototype.request,t);return o.extend(n,i.prototype,t),o.extend(n,t),n}var o=n(2),s=n(3),i=n(4),a=n(22),u=n(10),c=r(u);c.Axios=i,c.create=function(e){return r(a(c.defaults,e))},c.Cancel=n(23),c.CancelToken=n(24),c.isCancel=n(9),c.all=function(e){return Promise.all(e)},c.spread=n(25),c.isAxiosError=n(26),e.exports=c,e.exports.default=c},function(e,t,n){"use strict";function r(e){return"[object Array]"===R.call(e)}function o(e){return"undefined"==typeof e}function s(e){return null!==e&&!o(e)&&null!==e.constructor&&!o(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function i(e){return"[object ArrayBuffer]"===R.call(e)}function a(e){return"undefined"!=typeof FormData&&e instanceof FormData}function u(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function c(e){return"string"==typeof e}function f(e){return"number"==typeof e}function p(e){return null!==e&&"object"==typeof e}function d(e){if("[object Object]"!==R.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function l(e){return"[object Date]"===R.call(e)}function h(e){return"[object File]"===R.call(e)}function m(e){return"[object Blob]"===R.call(e)}function y(e){return"[object Function]"===R.call(e)}function g(e){return p(e)&&y(e.pipe)}function v(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function x(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function w(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function b(e,t){if(null!==e&&"undefined"!=typeof e)if("object"!=typeof e&&(e=[e]),r(e))for(var n=0,o=e.length;n<o;n++)t.call(null,e[n],n,e);else for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.call(null,e[s],s,e)}function E(){function e(e,n){d(t[n])&&d(e)?t[n]=E(t[n],e):d(e)?t[n]=E({},e):r(e)?t[n]=e.slice():t[n]=e}for(var t={},n=0,o=arguments.length;n<o;n++)b(arguments[n],e);return t}function j(e,t,n){return b(t,function(t,r){n&&"function"==typeof t?e[r]=S(t,n):e[r]=t}),e}function C(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}var S=n(3),R=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:i,isBuffer:s,isFormData:a,isArrayBufferView:u,isString:c,isNumber:f,isObject:p,isPlainObject:d,isUndefined:o,isDate:l,isFile:h,isBlob:m,isFunction:y,isStream:g,isURLSearchParams:v,isStandardBrowserEnv:w,forEach:b,merge:E,extend:j,trim:x,stripBOM:C}},function(e,t){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}}},function(e,t,n){"use strict";function r(e){this.defaults=e,this.interceptors={request:new i,response:new i}}var o=n(2),s=n(5),i=n(6),a=n(7),u=n(22);r.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{},e.url=arguments[0]):e=e||{},e=u(this.defaults,e),e.method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[a,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},r.prototype.getUri=function(e){return e=u(this.defaults,e),s(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},o.forEach(["delete","get","head","options"],function(e){r.prototype[e]=function(t,n){return this.request(u(n||{},{method:e,url:t,data:(n||{}).data}))}}),o.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(u(r||{},{method:e,url:t,data:n}))}}),e.exports=r},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=n(2);e.exports=function(e,t,n){if(!t)return e;var s;if(n)s=n(t);else if(o.isURLSearchParams(t))s=t.toString();else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)?t+="[]":e=[e],o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(r(t)+"="+r(e))}))}),s=i.join("&")}if(s){var a=e.indexOf("#");a!==-1&&(e=e.slice(0,a)),e+=(e.indexOf("?")===-1?"?":"&")+s}return e}},function(e,t,n){"use strict";function r(){this.handlers=[]}var o=n(2);r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=r},function(e,t,n){"use strict";function r(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var o=n(2),s=n(8),i=n(9),a=n(10);e.exports=function(e){r(e),e.headers=e.headers||{},e.data=s(e.data,e.headers,e.transformRequest),e.headers=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),o.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=e.adapter||a.adapter;return t(e).then(function(t){return r(e),t.data=s(t.data,t.headers,e.transformResponse),t},function(t){return i(t)||(r(e),t&&t.response&&(t.response.data=s(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";function r(e,t){!s.isUndefined(e)&&s.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function o(){var e;return"undefined"!=typeof XMLHttpRequest?e=n(12):"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process)&&(e=n(12)),e}var s=n(2),i=n(11),a={"Content-Type":"application/x-www-form-urlencoded"},u={adapter:o(),transformRequest:[function(e,t){return i(t,"Accept"),i(t,"Content-Type"),s.isFormData(e)||s.isArrayBuffer(e)||s.isBuffer(e)||s.isStream(e)||s.isFile(e)||s.isBlob(e)?e:s.isArrayBufferView(e)?e.buffer:s.isURLSearchParams(e)?(r(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):s.isObject(e)?(r(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},s.forEach(["delete","get","head"],function(e){u.headers[e]={}}),s.forEach(["post","put","patch"],function(e){u.headers[e]=s.merge(a)}),e.exports=u},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(2),o=n(13),s=n(16),i=n(5),a=n(17),u=n(20),c=n(21),f=n(14);e.exports=function(e){return new Promise(function(t,n){var p=e.data,d=e.headers;r.isFormData(p)&&delete d["Content-Type"];var l=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",m=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";d.Authorization="Basic "+btoa(h+":"+m)}var y=a(e.baseURL,e.url);if(l.open(e.method.toUpperCase(),i(y,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,l.onreadystatechange=function(){if(l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))){var r="getAllResponseHeaders"in l?u(l.getAllResponseHeaders()):null,s=e.responseType&&"text"!==e.responseType?l.response:l.responseText,i={data:s,status:l.status,statusText:l.statusText,headers:r,config:e,request:l};o(t,n,i),l=null}},l.onabort=function(){l&&(n(f("Request aborted",e,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(f("Network Error",e,null,l)),l=null},l.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(f(t,e,"ECONNABORTED",l)),l=null},r.isStandardBrowserEnv()){var g=(e.withCredentials||c(y))&&e.xsrfCookieName?s.read(e.xsrfCookieName):void 0;g&&(d[e.xsrfHeaderName]=g)}if("setRequestHeader"in l&&r.forEach(d,function(e,t){"undefined"==typeof p&&"content-type"===t.toLowerCase()?delete d[t]:l.setRequestHeader(t,e)}),r.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),e.responseType)try{l.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){l&&(l.abort(),n(e),l=null)}),p||(p=null),l.send(p)})}},function(e,t,n){"use strict";var r=n(14);e.exports=function(e,t,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},function(e,t,n){"use strict";var r=n(15);e.exports=function(e,t,n,o,s){var i=new Error(e);return r(i,t,n,o,s)}},function(e,t){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,s,i){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(s)&&a.push("domain="+s),i===!0&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,t,n){"use strict";var r=n(18),o=n(19);e.exports=function(e,t){return e&&!r(t)?o(e,t):t}},function(e,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(2),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,s,i={};return e?(r.forEach(e.split("\n"),function(e){if(s=e.indexOf(":"),t=r.trim(e.substr(0,s)).toLowerCase(),n=r.trim(e.substr(s+1)),t){if(i[t]&&o.indexOf(t)>=0)return;"set-cookie"===t?i[t]=(i[t]?i[t]:[]).concat([n]):i[t]=i[t]?i[t]+", "+n:n}}),i):i}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){function n(e,t){return r.isPlainObject(e)&&r.isPlainObject(t)?r.merge(e,t):r.isPlainObject(t)?r.merge({},t):r.isArray(t)?t.slice():t}function o(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(s[o]=n(void 0,e[o])):s[o]=n(e[o],t[o])}t=t||{};var s={},i=["url","method","data"],a=["headers","auth","proxy","params"],u=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],c=["validateStatus"];r.forEach(i,function(e){r.isUndefined(t[e])||(s[e]=n(void 0,t[e]))}),r.forEach(a,o),r.forEach(u,function(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(s[o]=n(void 0,e[o])):s[o]=n(void 0,t[o])}),r.forEach(c,function(r){r in t?s[r]=n(e[r],t[r]):r in e&&(s[r]=n(void 0,e[r]))});var f=i.concat(a).concat(u).concat(c),p=Object.keys(e).concat(Object.keys(t)).filter(function(e){return f.indexOf(e)===-1});return r.forEach(p,o),s}},function(e,t){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,e.exports=n},function(e,t,n){"use strict";function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new o(e),t(n.reason))})}var o=n(23);r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e,t=new r(function(t){e=t});return{token:t,cancel:e}},e.exports=r},function(e,t){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,t){"use strict";e.exports=function(e){return"object"==typeof e&&e.isAxiosError===!0}}])});
+//# sourceMappingURL=axios.min.map
\ No newline at end of file
diff --git a/widgets/LeftNavigationBar/Widget.html b/widgets/LeftNavigationBar/Widget.html
index 62910f6..af42589 100644
--- a/widgets/LeftNavigationBar/Widget.html
+++ b/widgets/LeftNavigationBar/Widget.html
@@ -5,7 +5,7 @@
<div class="left-navigation-bar-main">
<!-- <ul id="treeDemo" class="ztree"></ul> -->
<div class="l-n-b-m-search">
- <input id="left-navigation-bar-main-input" type="search" value="北深渊1" placeholder="请输入图层名称" />
+ <input id="left-navigation-bar-main-input" type="search" value="河流" placeholder="请输入图层名称" />
<!-- <button type="button" class="layui-btn layui-btn-sm" lay-demo="reload">重载</button> -->
<img id="left-navigation-bar-main-search" src="../../images/addL/sousuo.png" alt="">
</div>
diff --git a/widgets/LeftNavigationBar/Widget.js b/widgets/LeftNavigationBar/Widget.js
index 59f22f3..8a0a97f 100644
--- a/widgets/LeftNavigationBar/Widget.js
+++ b/widgets/LeftNavigationBar/Widget.js
@@ -29,7 +29,9 @@
layers: {},
startup: function () {
// 暴露在外的接口
- this.begin(this.data);
+ // this.begin(this.data);
+ var that = this;
+ this.getData();
$('.left-navigation-bar-but').click(() => {
this.changeImg = !this.changeImg;
@@ -46,59 +48,45 @@
$('.jimu-widget-instructions').css({ 'left': '260px' });
-
- var dictionaries = []//转数据
- , inits = (d, useData) => {
- var b = useData || [];
- for (var k in d) {
- let val = {
- title: d[k].title,
- id: d[k].id
- }
- b.push(val);
- if (d[k].children) {
- b[k].child = [];
- inits(d[k].children, b[k].child)
- }
- }
- };
- inits(this.data, dictionaries);
-
-
$('#left-navigation-bar-main-search').click(() => {//搜索事件
var val = $('#left-navigation-bar-main-input').val();
if (val) {
- var ids = ''
- , clearOur = () => {
- let dom = $(`[data-id]`);
- // console.log(dom);
- dom.removeClass('layui-tree-spread');
- let domDiv = dom.find('.layui-tree-pack');
- domDiv.css({ 'display': 'none' })
- }
- , useit = (d) => {
- var d = d;
-
+ var clearOur = () => {
+ let dom = $(`[data-id]`);
+ // console.log(dom);
+ dom.removeClass('layui-tree-spread');
+ let domDiv = dom.find('.layui-tree-pack');
+ domDiv.css({ 'display': 'none' })
+ }
+ , a
+ , useit = (d,i) => {
+ var i = i || [];
for (var k in d) {
- if (d[k].title.indexOf(val) != -1) {//选中id
- let a = '' + d[k].id,
- b = a.split('');
- for (var i in b) {
- let id = a.slice(0, i);//选中项的所有父级id
- // console.log(id)
- let dom = $(`[data-id='${id}']`);
- dom.addClass('layui-tree-spread');
- let domDiv = dom.find('.layui-tree-pack').eq(0);
- domDiv.css({ 'display': 'block' })
- }
+ if (d[k].who == 'father') {
+ that.father = d[k].id
+ // console.log(that.father, i)
}
- if (d[k].child) {
- useit(d[k].child);
+ if (d[k].title.indexOf(val) != -1) {//选中id
+ a = '' + d[k].id;
+ // var b = a.split('');
+ // for (var i in b) {
+ let id = that.father;//选中项的所有父级id
+ // // console.log(id)
+ let dom = $(`[data-id='${id}']`);
+ dom.addClass('layui-tree-spread');
+ let domDiv = dom.find('.layui-tree-pack').eq(0);
+ domDiv.css({ 'display': 'block' })
+ // }
+ // console.log(a, that.father)
+ }
+ if (d[k].children) {
+ i.push(that.father)
+ useit(d[k].children,i);
}
}
};
clearOur();
- useit(dictionaries);
+ useit(that.data);
} else {
}
@@ -126,6 +114,61 @@
resize: function () {
+ },
+ getData: function () {
+ var url = 'http://171.34.76.171:8880/zhsd-wetResource/GeoData/queryGeoDataTree'
+ , that = this;
+
+ axios.get(url, {
+ headers: {
+ "token": 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJlY2hpc2FuIiwic3ViIjoiYWRtaW4iLCJpYXQiOjE2MjI4Nzc0MTIsImV4cCI6MTYyNTQ2OTQxMn0.f2GhYYINfYgSbyKTqqGluyU3rdy_TT8mf15iLILS1l2EUSye_h9O6CSUVWpLYMrdrjzqDWwrbROxfhy-8ly0uA'
+ }
+ }).then((res) => {
+ if (res.data.code == '200') {
+ that.changeData(res.data.data);//重写数据
+ }
+ })
+ },
+ changeData: function (val) {//重写数据
+ var data = [],
+ i = 1,
+ inits = (d, childData) => {
+ var b = childData || [];
+ for (var k in d) {
+
+ let a = {
+ title: d[k].name,
+ // id: d[k].id,
+ // field: String(d[k].id),
+ id: i,
+ field: String(i)
+ }
+ b.push(a);
+ i++;
+ if (d[k].children.length != 0) {
+ b[k].children = [];
+ b[k].who = 'father';
+ inits(d[k].children, b[k].children)
+ }
+ }
+
+ };
+ inits(val, data);
+ console.log(data)
+
+ var ccinit = (a) => {
+ for (let k in a) {
+ if (a[k].children) {
+ a[k].who = 'father';
+ // console.log(a[k].id)
+ ccinit(a[k].children)
+ }
+ }
+ };
+ // ccinit(this.data);
+ // console.log(this.data)
+ this.data = data;
+ this.begin(this.data);
},
begin: function (data) {
var that = this;
@@ -185,6 +228,7 @@
})
},
changeImg: true,
+ father: [],
data: [{
title: '采集站点'
, id: 1
diff --git a/widgets/plotting/Widget.html b/widgets/plotting/Widget.html
new file mode 100644
index 0000000..c79b3b0
--- /dev/null
+++ b/widgets/plotting/Widget.html
@@ -0,0 +1,15 @@
+<div class="sandcastle-loading" data-sandcastle-bucket="bucket-requirejs.html"
+ style="margin: 0px; overflow: hidden;background: #fff;height: 100%;">
+ <div id="menu" style="position: absolute;width: 320px;height: 80%;border: 1px solid #3473b7;z-index: 98;">
+ <div class="easyui-panel"
+ style="position:absolute;top:0px;bottom:0px;left:0px;right:0px;padding:5px; width: 100%;height: 80%">
+ <div class="easyui-tabs" style="width: 100%;height: 100%">
+ <div id="plotPanel" title="标绘面板" style=" height: 100%;overflow: hidden;"></div>
+ <div id="stylePanel" title="属性面板" style="width: 320px;overflow: hidden"></div>
+ </div>
+ </div>
+ </div>
+
+ <div id="cesiumContainer" class="fullSize" style="position: relative;left: 14%;width: 86%;height: 100%;">
+ </div>
+</div>
\ No newline at end of file
diff --git a/widgets/plotting/Widget.js b/widgets/plotting/Widget.js
new file mode 100644
index 0000000..e1a3214
--- /dev/null
+++ b/widgets/plotting/Widget.js
@@ -0,0 +1,79 @@
+///////////////////////////////////////////////////////////////////////////
+// Copyright © 2020 zhongsong. All Rights Reserved.
+// 模块描述:河流水面线分析
+///////////////////////////////////////////////////////////////////////////
+define([
+ 'dojo/_base/declare',
+ 'dojo/_base/lang',
+ 'dojo/_base/array',
+ 'dojo/_base/html',
+ 'dojo/topic',
+ 'jimu/BaseWidget',
+ './mars3d-src'
+],
+ function (declare,
+ lang,
+ array,
+ html,
+ topic,
+ BaseWidget
+ ) {
+ return declare([BaseWidget], {
+ baseClass: 'jimu-widget-plotting',
+ name: 'plotting',
+ type: '',
+ startup: function () {
+ var cesium, scene, viewer, serverUrl, plotting;
+ var plottingLayer;
+ var plotEditControl;
+ var plotDrawControl;
+ var plotPanel;
+
+ var begin = (Cesium) => {
+ cesium = Cesium;
+ var host = 'http://support.supermap.com.cn:8090';
+ viewer = new Cesium.Viewer('cesiumContainer');
+ scene = viewer.scene;
+ scene.globe.depthTestAgainstTerrain = false;
+ serverUrl = host + '/iserver/services/plot-jingyong/rest/plot';
+ InitPlot(viewer, serverUrl);
+ };
+ var InitPlot = (viewer, serverUrl) => {
+ // console.log(viewer, serverUrl)
+ if (!viewer) {
+ return;
+ }
+ plottingLayer = new cesium.PlottingLayer(scene, "plottingLayer");
+ scene.plotLayers.add(plottingLayer);
+
+ plotEditControl = new cesium.PlotEditControl(scene, plottingLayer);//编辑控件
+ plotDrawControl = new cesium.PlotDrawControl(scene, plottingLayer);//绘制控件
+ plotDrawControl.drawControlEndEvent.addEventListener(function () {//标绘结束,激活编辑控件
+ plotEditControl.activate();
+ });
+
+ plotting = cesium.Plotting.getInstance(serverUrl, scene);
+ //标绘面板
+ initPlotPanel("plotPanel", serverUrl, plotDrawControl, plotEditControl, plotting);
+ stylePanel = new StylePanel('stylePanel', plotEditControl, plotting);
+ }
+
+ //删除指定标号
+ function deleteSeleGeo() {
+ plottingLayer.removeGeoGraphicObject(plottingLayer.selectedFeature);
+ }
+ //“Delete”按键删除选中标号
+ $(document).keydown(function (event) {
+ if (event.keyCode === 46) {
+ deleteSeleGeo();
+ }
+ });
+
+ if (typeof Cesium !== 'undefined') {
+ window.startupCalled = true;
+ begin(Cesium);
+ }
+ }
+
+ });
+ });
\ No newline at end of file
diff --git a/widgets/plotting/css/style.css b/widgets/plotting/css/style.css
new file mode 100644
index 0000000..cc9e83a
--- /dev/null
+++ b/widgets/plotting/css/style.css
@@ -0,0 +1,13 @@
+.jimu-widget-plotting{
+ width: 100%;
+ height: 100%;
+ background-color: rgba(255, 255, 255, .75);
+ font-size: 14px;
+ border: 1px solid rgb(69, 154, 251);
+ color: rgb(0, 0, 0);
+ font-size: 16px;
+ display: block;
+ border-radius: 10px;
+ z-index: 16;
+ display: none;
+}
diff --git a/widgets/plotting/manifest.json b/widgets/plotting/manifest.json
new file mode 100644
index 0000000..cb6119b
--- /dev/null
+++ b/widgets/plotting/manifest.json
@@ -0,0 +1,17 @@
+{
+ "name": "plotting",
+ "2D": true,
+ "3D": true,
+ "platform": "HTML",
+ "version": "2.10",
+ "wabVersion": "2.10",
+ "author": "liu",
+ "description": "",
+ "copyright": "",
+ "license": "",
+ "properties": {
+ "hasConfig": false,
+ "inPanel": false,
+ "hasVersionManager": false
+ }
+}
\ No newline at end of file
diff --git a/widgets/plotting/mars3d-src.js b/widgets/plotting/mars3d-src.js
new file mode 100644
index 0000000..66b146f
--- /dev/null
+++ b/widgets/plotting/mars3d-src.js
@@ -0,0 +1,17913 @@
+// function ArcTileImageryProvider(t) {
+// if (!Cesium.defined(t)) throw new DeveloperError("options is required.");
+// if (!Cesium.defined(t.url)) throw new DeveloperError("options.url is required.");
+// if (this._url = t.url + "/_alllayers/", this._isUpper = Cesium.defaultValue(t.isUpper, !0), this._imgType = Cesium.defaultValue(t.imgType, ".jpg"), this._subdomains = t.subdomains, Cesium.isArray(this._subdomains) ? this._subdomains = this._subdomains.slice() : Cesium.defined(this._subdomains) && this._subdomains.length > 0 ? this._subdomains = this._subdomains.split("") : this._subdomains = ["a", "b", "c"], this._tileWidth = Cesium.defaultValue(t.tileWidth, 256), this._tileHeight = Cesium.defaultValue(t.tileHeight, 256), this._minimumLevel = Cesium.defaultValue(t.minimumLevel, 0), this._maximumLevel = t.maximumLevel, t.rectangle && t.rectangle.xmin && t.rectangle.xmax && t.rectangle.ymin && t.rectangle.ymax) {
+// var e = t.rectangle.xmin,
+// i = t.rectangle.xmax,
+// n = t.rectangle.ymin,
+// r = t.rectangle.ymax;
+// t.rectangle = Cesium.Rectangle.fromDegrees(e, n, i, r)
+// }
+// this._tilingScheme = Cesium.defaultValue(t.tilingScheme, new Cesium.WebMercatorTilingScheme({
+// ellipsoid: t.ellipsoid
+// })), this._rectangle = Cesium.defaultValue(t.rectangle, this._tilingScheme.rectangle), this._rectangle = Cesium.Rectangle.intersection(this._rectangle, this._tilingScheme.rectangle), this._hasAlphaChannel = Cesium.defaultValue(t.hasAlphaChannel, !0), this._credit = void 0, this._ready = !0
+// }!
+// function(t, e) {
+// "use strict";
+// "function" == typeof define && define.amd && define([], e)
+// }("undefined" != typeof window ? window : "undefined" != typeof self ? self : this, function() {
+// var t, e, i;
+// return function(n) {
+// function r(t, e) {
+// return b.call(t, e)
+// }
+// function o(t, e) {
+// var i, n, r, o, a, s, l, u, c, h, d, p, f = e && e.split("/"),
+// m = _.map,
+// g = m && m["*"] || {};
+// if (t) {
+// for (t = t.split("/"), a = t.length - 1, _.nodeIdCompat && C.test(t[a]) && (t[a] = t[a].replace(C, "")), "." === t[0].charAt(0) && f && (p = f.slice(0, f.length - 1), t = p.concat(t)), c = 0; c < t.length; c++) if (d = t[c], "." === d) t.splice(c, 1), c -= 1;
+// else if (".." === d) {
+// if (0 === c || 1 === c && ".." === t[2] || ".." === t[c - 1]) continue;
+// c > 0 && (t.splice(c - 1, 2), c -= 2)
+// }
+// t = t.join("/")
+// }
+// if ((f || g) && m) {
+// for (i = t.split("/"), c = i.length; c > 0; c -= 1) {
+// if (n = i.slice(0, c).join("/"), f) for (h = f.length; h > 0; h -= 1) if (r = m[f.slice(0, h).join("/")], r && (r = r[n])) {
+// o = r, s = c;
+// break
+// }
+// if (o) break;
+// !l && g && g[n] && (l = g[n], u = c)
+// }!o && l && (o = l, s = u), o && (i.splice(0, s, o), t = i.join("/"))
+// }
+// return t
+// }
+// function a(t, e) {
+// return function() {
+// var i = w.call(arguments, 0);
+// return "string" != typeof i[0] && 1 === i.length && i.push(null), p.apply(n, i.concat([t, e]))
+// }
+// }
+// function s(t) {
+// return function(e) {
+// return o(e, t)
+// }
+// }
+// function l(t) {
+// return function(e) {
+// g[t] = e
+// }
+// }
+// function u(t) {
+// if (r(v, t)) {
+// var e = v[t];
+// delete v[t], y[t] = !0, d.apply(n, e)
+// }
+// if (!r(g, t) && !r(y, t)) throw new Error("No " + t);
+// return g[t]
+// }
+// function c(t) {
+// var e, i = t ? t.indexOf("!") : -1;
+// return i > -1 && (e = t.substring(0, i), t = t.substring(i + 1, t.length)), [e, t]
+// }
+// function h(t) {
+// return function() {
+// return _ && _.config && _.config[t] || {}
+// }
+// }
+// var d, p, f, m, g = {},
+// v = {},
+// _ = {},
+// y = {},
+// b = Object.prototype.hasOwnProperty,
+// w = [].slice,
+// C = /\.js$/;
+// f = function(t, e) {
+// var i, n = c(t),
+// r = n[0];
+// return t = n[1], r && (r = o(r, e), i = u(r)), r ? t = i && i.normalize ? i.normalize(t, s(e)) : o(t, e) : (t = o(t, e), n = c(t), r = n[0], t = n[1], r && (i = u(r))), {
+// f: r ? r + "!" + t : t,
+// n: t,
+// pr: r,
+// p: i
+// }
+// }, m = {
+// require: function(t) {
+// return a(t)
+// },
+// exports: function(t) {
+// var e = g[t];
+// return "undefined" != typeof e ? e : g[t] = {}
+// },
+// module: function(t) {
+// return {
+// id: t,
+// uri: "",
+// exports: g[t],
+// config: h(t)
+// }
+// }
+// }, d = function(t, e, i, o) {
+// var s, c, h, d, p, _, b = [],
+// w = typeof i;
+// if (o = o || t, "undefined" === w || "function" === w) {
+// for (e = !e.length && i.length ? ["require", "exports", "module"] : e, p = 0; p < e.length; p += 1) if (d = f(e[p], o), c = d.f, "require" === c) b[p] = m.require(t);
+// else if ("exports" === c) b[p] = m.exports(t), _ = !0;
+// else if ("module" === c) s = b[p] = m.module(t);
+// else if (r(g, c) || r(v, c) || r(y, c)) b[p] = u(c);
+// else {
+// if (!d.p) throw new Error(t + " missing " + c);
+// d.p.load(d.n, a(o, !0), l(c), {}), b[p] = g[c]
+// }
+// h = i ? i.apply(g[t], b) : void 0, t && (s && s.exports !== n && s.exports !== g[t] ? g[t] = s.exports : h === n && _ || (g[t] = h))
+// } else t && (g[t] = i)
+// }, t = e = p = function(t, e, i, r, o) {
+// if ("string" == typeof t) return m[t] ? m[t](e) : u(f(t, e).f);
+// if (!t.splice) {
+// if (_ = t, _.deps && p(_.deps, _.callback), !e) return;
+// e.splice ? (t = e, e = i, i = null) : t = n
+// }
+// return e = e ||
+// function() {}, "function" == typeof i && (i = r, r = o), r ? d(n, t, e, i) : setTimeout(function() {
+// d(n, t, e, i)
+// }, 4), p
+// }, p.config = function(t) {
+// return p(t)
+// }, t._defined = g, i = function(t, e, i) {
+// if ("string" != typeof t) throw new Error("See almond README: incorrect module build, no module name");
+// e.splice || (i = e, e = []), r(g, t) || r(v, t) || (v[t] = [t, e, i])
+// }, i.amd = {
+// jQuery: !0
+// }
+// }(), i("almond", function() {}), function() {
+// !
+// function(t) {
+// var e = this || (0, eval)("this"),
+// n = e.document,
+// r = e.navigator,
+// o = e.jQuery,
+// a = e.JSON;
+// !
+// function(t) {
+// "function" == typeof i && i.amd ? i("knockout", ["exports", "require"], t) : t("object" == typeof exports && "object" == typeof module ? module.exports || exports : e.ko = {})
+// }(function(i, s) {
+// function l(t, e) {
+// return (null === t || typeof t in g) && t === e
+// }
+// function u(e, i) {
+// var n;
+// return function() {
+// n || (n = m.a.setTimeout(function() {
+// n = t, e()
+// }, i))
+// }
+// }
+// function c(t, e) {
+// var i;
+// return function() {
+// clearTimeout(i), i = m.a.setTimeout(t, e)
+// }
+// }
+// function h(t, e) {
+// e && e !== v ? "beforeChange" === e ? this.Kb(t) : this.Ha(t, e) : this.Lb(t)
+// }
+// function d(t, e) {
+// null !== e && e.k && e.k()
+// }
+// function p(t, e) {
+// var i = this.Hc,
+// n = i[C];
+// n.R || (this.lb && this.Ma[e] ? (i.Pb(e, t, this.Ma[e]), this.Ma[e] = null, --this.lb) : n.r[e] || i.Pb(e, t, n.s ? {
+// ia: t
+// } : i.uc(t)))
+// }
+// function f(t, e, i, n) {
+// m.d[t] = {
+// init: function(t, r, o, a, s) {
+// var l, u;
+// return m.m(function() {
+// var o = m.a.c(r()),
+// a = !i != !o,
+// c = !u;
+// (c || e || a !== l) && (c && m.va.Aa() && (u = m.a.ua(m.f.childNodes(t), !0)), a ? (c || m.f.da(t, m.a.ua(u)), m.eb(n ? n(s, o) : s, t)) : m.f.xa(t), l = a)
+// }, null, {
+// i: t
+// }), {
+// controlsDescendantBindings: !0
+// }
+// }
+// }, m.h.ta[t] = !1, m.f.Z[t] = !0
+// }
+// var m = "undefined" != typeof i ? i : {};
+// m.b = function(t, e) {
+// for (var i = t.split("."), n = m, r = 0; r < i.length - 1; r++) n = n[i[r]];
+// n[i[i.length - 1]] = e
+// }, m.G = function(t, e, i) {
+// t[e] = i
+// }, m.version = "3.4.0", m.b("version", m.version), m.options = {
+// deferUpdates: !1,
+// useOnlyNativeEvents: !1
+// }, m.a = function() {
+// function i(t, e) {
+// for (var i in t) t.hasOwnProperty(i) && e(i, t[i])
+// }
+// function s(t, e) {
+// if (e) for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]);
+// return t
+// }
+// function l(t, e) {
+// return t.__proto__ = e, t
+// }
+// function u(t, e, i, n) {
+// var r = t[e].match(v) || [];
+// m.a.q(i.match(v), function(t) {
+// m.a.pa(r, t, n)
+// }), t[e] = r.join(" ")
+// }
+// var c = {
+// __proto__: []
+// }
+// instanceof Array, h = "function" == typeof Symbol, d = {}, p = {};
+// d[r && /Firefox\/2/i.test(r.userAgent) ? "KeyboardEvent" : "UIEvents"] = ["keyup", "keydown", "keypress"], d.MouseEvents = "click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "), i(d, function(t, e) {
+// if (e.length) for (var i = 0, n = e.length; i < n; i++) p[e[i]] = t
+// });
+// var f = {
+// propertychange: !0
+// },
+// g = n &&
+// function() {
+// for (var e = 3, i = n.createElement("div"), r = i.getElementsByTagName("i"); i.innerHTML = "<!--[if gt IE " + ++e + "]><i></i><![endif]-->", r[0];);
+// return 4 < e ? e : t
+// }(), v = /\S+/g;
+// return {
+// cc: ["authenticity_token", /^__RequestVerificationToken(_.*)?$/],
+// q: function(t, e) {
+// for (var i = 0, n = t.length; i < n; i++) e(t[i], i)
+// },
+// o: function(t, e) {
+// if ("function" == typeof Array.prototype.indexOf) return Array.prototype.indexOf.call(t, e);
+// for (var i = 0, n = t.length; i < n; i++) if (t[i] === e) return i;
+// return -1
+// },
+// Sb: function(t, e, i) {
+// for (var n = 0, r = t.length; n < r; n++) if (e.call(i, t[n], n)) return t[n];
+// return null
+// },
+// La: function(t, e) {
+// var i = m.a.o(t, e);
+// 0 < i ? t.splice(i, 1) : 0 === i && t.shift()
+// },
+// Tb: function(t) {
+// t = t || [];
+// for (var e = [], i = 0, n = t.length; i < n; i++) 0 > m.a.o(e, t[i]) && e.push(t[i]);
+// return e
+// },
+// fb: function(t, e) {
+// t = t || [];
+// for (var i = [], n = 0, r = t.length; n < r; n++) i.push(e(t[n], n));
+// return i
+// },
+// Ka: function(t, e) {
+// t = t || [];
+// for (var i = [], n = 0, r = t.length; n < r; n++) e(t[n], n) && i.push(t[n]);
+// return i
+// },
+// ra: function(t, e) {
+// if (e instanceof Array) t.push.apply(t, e);
+// else for (var i = 0, n = e.length; i < n; i++) t.push(e[i]);
+// return t
+// },
+// pa: function(t, e, i) {
+// var n = m.a.o(m.a.zb(t), e);
+// 0 > n ? i && t.push(e) : i || t.splice(n, 1)
+// },
+// ka: c,
+// extend: s,
+// Xa: l,
+// Ya: c ? l : s,
+// D: i,
+// Ca: function(t, e) {
+// if (!t) return t;
+// var i, n = {};
+// for (i in t) t.hasOwnProperty(i) && (n[i] = e(t[i], i, t));
+// return n
+// },
+// ob: function(t) {
+// for (; t.firstChild;) m.removeNode(t.firstChild)
+// },
+// jc: function(t) {
+// t = m.a.V(t);
+// for (var e = (t[0] && t[0].ownerDocument || n).createElement("div"), i = 0, r = t.length; i < r; i++) e.appendChild(m.$(t[i]));
+// return e
+// },
+// ua: function(t, e) {
+// for (var i = 0, n = t.length, r = []; i < n; i++) {
+// var o = t[i].cloneNode(!0);
+// r.push(e ? m.$(o) : o)
+// }
+// return r
+// },
+// da: function(t, e) {
+// if (m.a.ob(t), e) for (var i = 0, n = e.length; i < n; i++) t.appendChild(e[i])
+// },
+// qc: function(t, e) {
+// var i = t.nodeType ? [t] : t;
+// if (0 < i.length) {
+// for (var n = i[0], r = n.parentNode, o = 0, a = e.length; o < a; o++) r.insertBefore(e[o], n);
+// for (o = 0, a = i.length; o < a; o++) m.removeNode(i[o])
+// }
+// },
+// za: function(t, e) {
+// if (t.length) {
+// for (e = 8 === e.nodeType && e.parentNode || e; t.length && t[0].parentNode !== e;) t.splice(0, 1);
+// for (; 1 < t.length && t[t.length - 1].parentNode !== e;) t.length--;
+// if (1 < t.length) {
+// var i = t[0],
+// n = t[t.length - 1];
+// for (t.length = 0; i !== n;) t.push(i), i = i.nextSibling;
+// t.push(n)
+// }
+// }
+// return t
+// },
+// sc: function(t, e) {
+// 7 > g ? t.setAttribute("selected", e) : t.selected = e
+// },
+// $a: function(e) {
+// return null === e || e === t ? "" : e.trim ? e.trim() : e.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, "")
+// },
+// nd: function(t, e) {
+// return t = t || "", !(e.length > t.length) && t.substring(0, e.length) === e
+// },
+// Mc: function(t, e) {
+// if (t === e) return !0;
+// if (11 === t.nodeType) return !1;
+// if (e.contains) return e.contains(3 === t.nodeType ? t.parentNode : t);
+// if (e.compareDocumentPosition) return 16 == (16 & e.compareDocumentPosition(t));
+// for (; t && t != e;) t = t.parentNode;
+// return !!t
+// },
+// nb: function(t) {
+// return m.a.Mc(t, t.ownerDocument.documentElement)
+// },
+// Qb: function(t) {
+// return !!m.a.Sb(t, m.a.nb)
+// },
+// A: function(t) {
+// return t && t.tagName && t.tagName.toLowerCase()
+// },
+// Wb: function(t) {
+// return m.onError ?
+// function() {
+// try {
+// return t.apply(this, arguments)
+// } catch (e) {
+// throw m.onError && m.onError(e), e
+// }
+// } : t
+// },
+// setTimeout: function(t, e) {
+// return setTimeout(m.a.Wb(t), e)
+// },
+// $b: function(t) {
+// setTimeout(function() {
+// throw m.onError && m.onError(t), t
+// }, 0)
+// },
+// p: function(t, e, i) {
+// var n = m.a.Wb(i);
+// if (i = g && f[e], m.options.useOnlyNativeEvents || i || !o) if (i || "function" != typeof t.addEventListener) {
+// if ("undefined" == typeof t.attachEvent) throw Error("Browser doesn't support addEventListener or attachEvent");
+// var r = function(e) {
+// n.call(t, e)
+// },
+// a = "on" + e;
+// t.attachEvent(a, r), m.a.F.oa(t, function() {
+// t.detachEvent(a, r)
+// })
+// } else t.addEventListener(e, n, !1);
+// else o(t).bind(e, n)
+// },
+// Da: function(t, i) {
+// if (!t || !t.nodeType) throw Error("element must be a DOM node when calling triggerEvent");
+// var r;
+// if ("input" === m.a.A(t) && t.type && "click" == i.toLowerCase() ? (r = t.type, r = "checkbox" == r || "radio" == r) : r = !1, m.options.useOnlyNativeEvents || !o || r) if ("function" == typeof n.createEvent) {
+// if ("function" != typeof t.dispatchEvent) throw Error("The supplied element doesn't support dispatchEvent");
+// r = n.createEvent(p[i] || "HTMLEvents"), r.initEvent(i, !0, !0, e, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, t), t.dispatchEvent(r)
+// } else if (r && t.click) t.click();
+// else {
+// if ("undefined" == typeof t.fireEvent) throw Error("Browser doesn't support triggering events");
+// t.fireEvent("on" + i)
+// } else o(t).trigger(i)
+// },
+// c: function(t) {
+// return m.H(t) ? t() : t
+// },
+// zb: function(t) {
+// return m.H(t) ? t.t() : t
+// },
+// bb: function(t, e, i) {
+// var n;
+// e && ("object" == typeof t.classList ? (n = t.classList[i ? "add" : "remove"], m.a.q(e.match(v), function(e) {
+// n.call(t.classList, e)
+// })) : "string" == typeof t.className.baseVal ? u(t.className, "baseVal", e, i) : u(t, "className", e, i))
+// },
+// Za: function(e, i) {
+// var n = m.a.c(i);
+// null !== n && n !== t || (n = "");
+// var r = m.f.firstChild(e);
+// !r || 3 != r.nodeType || m.f.nextSibling(r) ? m.f.da(e, [e.ownerDocument.createTextNode(n)]) : r.data = n, m.a.Rc(e)
+// },
+// rc: function(t, e) {
+// if (t.name = e, 7 >= g) try {
+// t.mergeAttributes(n.createElement("<input name='" + t.name + "'/>"), !1)
+// } catch (i) {}
+// },
+// Rc: function(t) {
+// 9 <= g && (t = 1 == t.nodeType ? t : t.parentNode, t.style && (t.style.zoom = t.style.zoom))
+// },
+// Nc: function(t) {
+// if (g) {
+// var e = t.style.width;
+// t.style.width = 0, t.style.width = e
+// }
+// },
+// hd: function(t, e) {
+// t = m.a.c(t), e = m.a.c(e);
+// for (var i = [], n = t; n <= e; n++) i.push(n);
+// return i
+// },
+// V: function(t) {
+// for (var e = [], i = 0, n = t.length; i < n; i++) e.push(t[i]);
+// return e
+// },
+// Yb: function(t) {
+// return h ? Symbol(t) : t
+// },
+// rd: 6 === g,
+// sd: 7 === g,
+// C: g,
+// ec: function(t, e) {
+// for (var i = m.a.V(t.getElementsByTagName("input")).concat(m.a.V(t.getElementsByTagName("textarea"))), n = "string" == typeof e ?
+// function(t) {
+// return t.name === e
+// } : function(t) {
+// return e.test(t.name)
+// }, r = [], o = i.length - 1; 0 <= o; o--) n(i[o]) && r.push(i[o]);
+// return r
+// },
+// ed: function(t) {
+// return "string" == typeof t && (t = m.a.$a(t)) ? a && a.parse ? a.parse(t) : new Function("return " + t)() : null
+// },
+// Eb: function(t, e, i) {
+// if (!a || !a.stringify) throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");
+// return a.stringify(m.a.c(t), e, i)
+// },
+// fd: function(t, e, r) {
+// r = r || {};
+// var o = r.params || {},
+// a = r.includeFields || this.cc,
+// s = t;
+// if ("object" == typeof t && "form" === m.a.A(t)) for (var s = t.action, l = a.length - 1; 0 <= l; l--) for (var u = m.a.ec(t, a[l]), c = u.length - 1; 0 <= c; c--) o[u[c].name] = u[c].value;
+// e = m.a.c(e);
+// var h = n.createElement("form");
+// h.style.display = "none", h.action = s, h.method = "post";
+// for (var d in e) t = n.createElement("input"), t.type = "hidden", t.name = d, t.value = m.a.Eb(m.a.c(e[d])), h.appendChild(t);
+// i(o, function(t, e) {
+// var i = n.createElement("input");
+// i.type = "hidden", i.name = t, i.value = e, h.appendChild(i)
+// }), n.body.appendChild(h), r.submitter ? r.submitter(h) : h.submit(), setTimeout(function() {
+// h.parentNode.removeChild(h)
+// }, 0)
+// }
+// }
+// }(), m.b("utils", m.a), m.b("utils.arrayForEach", m.a.q), m.b("utils.arrayFirst", m.a.Sb), m.b("utils.arrayFilter", m.a.Ka), m.b("utils.arrayGetDistinctValues", m.a.Tb), m.b("utils.arrayIndexOf", m.a.o), m.b("utils.arrayMap", m.a.fb), m.b("utils.arrayPushAll", m.a.ra), m.b("utils.arrayRemoveItem", m.a.La), m.b("utils.extend", m.a.extend), m.b("utils.fieldsIncludedWithJsonPost", m.a.cc), m.b("utils.getFormFields", m.a.ec), m.b("utils.peekObservable", m.a.zb), m.b("utils.postJson", m.a.fd), m.b("utils.parseJson", m.a.ed), m.b("utils.registerEventHandler", m.a.p), m.b("utils.stringifyJson", m.a.Eb), m.b("utils.range", m.a.hd), m.b("utils.toggleDomNodeCssClass", m.a.bb), m.b("utils.triggerEvent", m.a.Da), m.b("utils.unwrapObservable", m.a.c), m.b("utils.objectForEach", m.a.D), m.b("utils.addOrRemoveItem", m.a.pa), m.b("utils.setTextContent", m.a.Za), m.b("unwrap", m.a.c), Function.prototype.bind || (Function.prototype.bind = function(t) {
+// var e = this;
+// if (1 === arguments.length) return function() {
+// return e.apply(t, arguments)
+// };
+// var i = Array.prototype.slice.call(arguments, 1);
+// return function() {
+// var n = i.slice(0);
+// return n.push.apply(n, arguments), e.apply(t, n)
+// }
+// }), m.a.e = new function() {
+// function e(e, o) {
+// var a = e[n];
+// if (!a || "null" === a || !r[a]) {
+// if (!o) return t;
+// a = e[n] = "ko" + i++, r[a] = {}
+// }
+// return r[a]
+// }
+// var i = 0,
+// n = "__ko__" + (new Date).getTime(),
+// r = {};
+// return {
+// get: function(i, n) {
+// var r = e(i, !1);
+// return r === t ? t : r[n]
+// },
+// set: function(i, n, r) {
+// r === t && e(i, !1) === t || (e(i, !0)[n] = r)
+// },
+// clear: function(t) {
+// var e = t[n];
+// return !!e && (delete r[e], t[n] = null, !0)
+// },
+// I: function() {
+// return i+++n
+// }
+// }
+// }, m.b("utils.domData", m.a.e), m.b("utils.domData.clear", m.a.e.clear), m.a.F = new function() {
+// function e(e, i) {
+// var r = m.a.e.get(e, n);
+// return r === t && i && (r = [], m.a.e.set(e, n, r)), r
+// }
+// function i(t) {
+// var n = e(t, !1);
+// if (n) for (var n = n.slice(0), r = 0; r < n.length; r++) n[r](t);
+// if (m.a.e.clear(t), m.a.F.cleanExternalData(t), a[t.nodeType]) for (n = t.firstChild; t = n;) n = t.nextSibling, 8 === t.nodeType && i(t)
+// }
+// var n = m.a.e.I(),
+// r = {
+// 1: !0,
+// 8: !0,
+// 9: !0
+// },
+// a = {
+// 1: !0,
+// 9: !0
+// };
+// return {
+// oa: function(t, i) {
+// if ("function" != typeof i) throw Error("Callback must be a function");
+// e(t, !0).push(i)
+// },
+// pc: function(i, r) {
+// var o = e(i, !1);
+// o && (m.a.La(o, r), 0 == o.length && m.a.e.set(i, n, t))
+// },
+// $: function(t) {
+// if (r[t.nodeType] && (i(t), a[t.nodeType])) {
+// var e = [];
+// m.a.ra(e, t.getElementsByTagName("*"));
+// for (var n = 0, o = e.length; n < o; n++) i(e[n])
+// }
+// return t
+// },
+// removeNode: function(t) {
+// m.$(t), t.parentNode && t.parentNode.removeChild(t)
+// },
+// cleanExternalData: function(t) {
+// o && "function" == typeof o.cleanData && o.cleanData([t])
+// }
+// }
+// }, m.$ = m.a.F.$, m.removeNode = m.a.F.removeNode, m.b("cleanNode", m.$), m.b("removeNode", m.removeNode), m.b("utils.domNodeDisposal", m.a.F), m.b("utils.domNodeDisposal.addDisposeCallback", m.a.F.oa), m.b("utils.domNodeDisposal.removeDisposeCallback", m.a.F.pc), function() {
+// var i = [0, "", ""],
+// r = [1, "<table>", "</table>"],
+// a = [3, "<table><tbody><tr>", "</tr></tbody></table>"],
+// s = [1, "<select multiple='multiple'>", "</select>"],
+// l = {
+// thead: r,
+// tbody: r,
+// tfoot: r,
+// tr: [2, "<table><tbody>", "</tbody></table>"],
+// td: a,
+// th: a,
+// option: s,
+// optgroup: s
+// },
+// u = 8 >= m.a.C;
+// m.a.ma = function(t, r) {
+// var a;
+// if (o) {
+// if (o.parseHTML) a = o.parseHTML(t, r) || [];
+// else if ((a = o.clean([t], r)) && a[0]) {
+// for (var s = a[0]; s.parentNode && 11 !== s.parentNode.nodeType;) s = s.parentNode;
+// s.parentNode && s.parentNode.removeChild(s)
+// }
+// } else {
+// (a = r) || (a = n);
+// var c, s = a.parentWindow || a.defaultView || e,
+// h = m.a.$a(t).toLowerCase(),
+// d = a.createElement("div");
+// for (c = (h = h.match(/^<([a-z]+)[ >]/)) && l[h[1]] || i, h = c[0], c = "ignored<div>" + c[1] + t + c[2] + "</div>", "function" == typeof s.innerShiv ? d.appendChild(s.innerShiv(c)) : (u && a.appendChild(d), d.innerHTML = c, u && d.parentNode.removeChild(d)); h--;) d = d.lastChild;
+// a = m.a.V(d.lastChild.childNodes)
+// }
+// return a
+// }, m.a.Cb = function(e, i) {
+// if (m.a.ob(e), i = m.a.c(i), null !== i && i !== t) if ("string" != typeof i && (i = i.toString()), o) o(e).html(i);
+// else for (var n = m.a.ma(i, e.ownerDocument), r = 0; r < n.length; r++) e.appendChild(n[r])
+// }
+// }(), m.b("utils.parseHtmlFragment", m.a.ma), m.b("utils.setHtml", m.a.Cb), m.M = function() {
+// function e(t, i) {
+// if (t) if (8 == t.nodeType) {
+// var n = m.M.lc(t.nodeValue);
+// null != n && i.push({
+// Lc: t,
+// cd: n
+// })
+// } else if (1 == t.nodeType) for (var n = 0, r = t.childNodes, o = r.length; n < o; n++) e(r[n], i)
+// }
+// var i = {};
+// return {
+// wb: function(t) {
+// if ("function" != typeof t) throw Error("You can only pass a function to ko.memoization.memoize()");
+// var e = (4294967296 * (1 + Math.random()) | 0).toString(16).substring(1) + (4294967296 * (1 + Math.random()) | 0).toString(16).substring(1);
+// return i[e] = t, "<!--[ko_memo:" + e + "]-->"
+// },
+// xc: function(e, n) {
+// var r = i[e];
+// if (r === t) throw Error("Couldn't find any memo with ID " + e + ". Perhaps it's already been unmemoized.");
+// try {
+// return r.apply(null, n || []), !0
+// } finally {
+// delete i[e]
+// }
+// },
+// yc: function(t, i) {
+// var n = [];
+// e(t, n);
+// for (var r = 0, o = n.length; r < o; r++) {
+// var a = n[r].Lc,
+// s = [a];
+// i && m.a.ra(s, i), m.M.xc(n[r].cd, s), a.nodeValue = "", a.parentNode && a.parentNode.removeChild(a)
+// }
+// },
+// lc: function(t) {
+// return (t = t.match(/^\[ko_memo\:(.*?)\]$/)) ? t[1] : null
+// }
+// }
+// }(), m.b("memoization", m.M), m.b("memoization.memoize", m.M.wb), m.b("memoization.unmemoize", m.M.xc), m.b("memoization.parseMemoText", m.M.lc), m.b("memoization.unmemoizeDomNodeAndDescendants", m.M.yc), m.Y = function() {
+// function t() {
+// if (o) for (var t, e = o, i = 0; s < o;) if (t = r[s++]) {
+// if (s > e) {
+// if (5e3 <= ++i) {
+// s = o, m.a.$b(Error("'Too much recursion' after processing " + i + " task groups."));
+// break
+// }
+// e = o
+// }
+// try {
+// t()
+// } catch (n) {
+// m.a.$b(n)
+// }
+// }
+// }
+// function i() {
+// t(), s = o = r.length = 0
+// }
+// var r = [],
+// o = 0,
+// a = 1,
+// s = 0;
+// return {
+// scheduler: e.MutationObserver ?
+// function(t) {
+// var e = n.createElement("div");
+// return new MutationObserver(t).observe(e, {
+// attributes: !0
+// }), function() {
+// e.classList.toggle("foo")
+// }
+// }(i) : n && "onreadystatechange" in n.createElement("script") ?
+// function(t) {
+// var e = n.createElement("script");
+// e.onreadystatechange = function() {
+// e.onreadystatechange = null, n.documentElement.removeChild(e), e = null, t()
+// }, n.documentElement.appendChild(e)
+// } : function(t) {
+// setTimeout(t, 0)
+// },
+// Wa: function(t) {
+// return o || m.Y.scheduler(i), r[o++] = t, a++
+// },
+// cancel: function(t) {
+// t -= a - o, t >= s && t < o && (r[t] = null)
+// },
+// resetForTesting: function() {
+// var t = o - s;
+// return s = o = r.length = 0, t
+// },
+// md: t
+// }
+// }(), m.b("tasks", m.Y), m.b("tasks.schedule", m.Y.Wa), m.b("tasks.runEarly", m.Y.md), m.ya = {
+// throttle: function(t, e) {
+// t.throttleEvaluation = e;
+// var i = null;
+// return m.B({
+// read: t,
+// write: function(n) {
+// clearTimeout(i), i = m.a.setTimeout(function() {
+// t(n)
+// }, e)
+// }
+// })
+// },
+// rateLimit: function(t, e) {
+// var i, n, r;
+// "number" == typeof e ? i = e : (i = e.timeout, n = e.method), t.cb = !1, r = "notifyWhenChangesStop" == n ? c : u, t.Ta(function(t) {
+// return r(t, i)
+// })
+// },
+// deferred: function(e, i) {
+// if (!0 !== i) throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");
+// e.cb || (e.cb = !0, e.Ta(function(i) {
+// var n;
+// return function() {
+// m.Y.cancel(n), n = m.Y.Wa(i), e.notifySubscribers(t, "dirty")
+// }
+// }))
+// },
+// notify: function(t, e) {
+// t.equalityComparer = "always" == e ? null : l
+// }
+// };
+// var g = {
+// undefined: 1,
+// "boolean": 1,
+// number: 1,
+// string: 1
+// };
+// m.b("extenders", m.ya), m.vc = function(t, e, i) {
+// this.ia = t, this.gb = e, this.Kc = i, this.R = !1, m.G(this, "dispose", this.k)
+// }, m.vc.prototype.k = function() {
+// this.R = !0, this.Kc()
+// }, m.J = function() {
+// m.a.Ya(this, _), _.rb(this)
+// };
+// var v = "change",
+// _ = {
+// rb: function(t) {
+// t.K = {}, t.Nb = 1
+// },
+// X: function(t, e, i) {
+// var n = this;
+// i = i || v;
+// var r = new m.vc(n, e ? t.bind(e) : t, function() {
+// m.a.La(n.K[i], r), n.Ia && n.Ia(i)
+// });
+// return n.sa && n.sa(i), n.K[i] || (n.K[i] = []), n.K[i].push(r), r
+// },
+// notifySubscribers: function(t, e) {
+// if (e = e || v, e === v && this.zc(), this.Pa(e)) try {
+// m.l.Ub();
+// for (var i, n = this.K[e].slice(0), r = 0; i = n[r]; ++r) i.R || i.gb(t)
+// } finally {
+// m.l.end()
+// }
+// },
+// Na: function() {
+// return this.Nb
+// },
+// Uc: function(t) {
+// return this.Na() !== t
+// },
+// zc: function() {
+// ++this.Nb
+// },
+// Ta: function(t) {
+// var e, i, n, r = this,
+// o = m.H(r);
+// r.Ha || (r.Ha = r.notifySubscribers, r.notifySubscribers = h);
+// var a = t(function() {
+// r.Mb = !1, o && n === r && (n = r()), e = !1, r.tb(i, n) && r.Ha(i = n)
+// });
+// r.Lb = function(t) {
+// r.Mb = e = !0, n = t, a()
+// }, r.Kb = function(t) {
+// e || (i = t, r.Ha(t, "beforeChange"))
+// }
+// },
+// Pa: function(t) {
+// return this.K[t] && this.K[t].length
+// },
+// Sc: function(t) {
+// if (t) return this.K[t] && this.K[t].length || 0;
+// var e = 0;
+// return m.a.D(this.K, function(t, i) {
+// "dirty" !== t && (e += i.length)
+// }), e
+// },
+// tb: function(t, e) {
+// return !this.equalityComparer || !this.equalityComparer(t, e)
+// },
+// extend: function(t) {
+// var e = this;
+// return t && m.a.D(t, function(t, i) {
+// var n = m.ya[t];
+// "function" == typeof n && (e = n(e, i) || e)
+// }), e
+// }
+// };
+// m.G(_, "subscribe", _.X), m.G(_, "extend", _.extend), m.G(_, "getSubscriptionsCount", _.Sc), m.a.ka && m.a.Xa(_, Function.prototype), m.J.fn = _, m.hc = function(t) {
+// return null != t && "function" == typeof t.X && "function" == typeof t.notifySubscribers
+// }, m.b("subscribable", m.J), m.b("isSubscribable", m.hc), m.va = m.l = function() {
+// function t(t) {
+// n.push(i), i = t
+// }
+// function e() {
+// i = n.pop()
+// }
+// var i, n = [],
+// r = 0;
+// return {
+// Ub: t,
+// end: e,
+// oc: function(t) {
+// if (i) {
+// if (!m.hc(t)) throw Error("Only subscribable things can act as dependencies");
+// i.gb.call(i.Gc, t, t.Cc || (t.Cc = ++r))
+// }
+// },
+// w: function(i, n, r) {
+// try {
+// return t(), i.apply(n, r || [])
+// } finally {
+// e()
+// }
+// },
+// Aa: function() {
+// if (i) return i.m.Aa()
+// },
+// Sa: function() {
+// if (i) return i.Sa
+// }
+// }
+// }(), m.b("computedContext", m.va), m.b("computedContext.getDependenciesCount", m.va.Aa), m.b("computedContext.isInitial", m.va.Sa), m.b("ignoreDependencies", m.qd = m.l.w);
+// var y = m.a.Yb("_latestValue");
+// m.N = function(t) {
+// function e() {
+// return 0 < arguments.length ? (e.tb(e[y], arguments[0]) && (e.ga(), e[y] = arguments[0], e.fa()), this) : (m.l.oc(e), e[y])
+// }
+// return e[y] = t, m.a.ka || m.a.extend(e, m.J.fn), m.J.fn.rb(e), m.a.Ya(e, b), m.options.deferUpdates && m.ya.deferred(e, !0), e
+// };
+// var b = {
+// equalityComparer: l,
+// t: function() {
+// return this[y]
+// },
+// fa: function() {
+// this.notifySubscribers(this[y])
+// },
+// ga: function() {
+// this.notifySubscribers(this[y], "beforeChange")
+// }
+// };
+// m.a.ka && m.a.Xa(b, m.J.fn);
+// var w = m.N.gd = "__ko_proto__";
+// b[w] = m.N, m.Oa = function(e, i) {
+// return null !== e && e !== t && e[w] !== t && (e[w] === i || m.Oa(e[w], i))
+// }, m.H = function(t) {
+// return m.Oa(t, m.N)
+// }, m.Ba = function(t) {
+// return !!("function" == typeof t && t[w] === m.N || "function" == typeof t && t[w] === m.B && t.Vc)
+// }, m.b("observable", m.N), m.b("isObservable", m.H), m.b("isWriteableObservable", m.Ba), m.b("isWritableObservable", m.Ba), m.b("observable.fn", b), m.G(b, "peek", b.t), m.G(b, "valueHasMutated", b.fa), m.G(b, "valueWillMutate", b.ga), m.la = function(t) {
+// if (t = t || [], "object" != typeof t || !("length" in t)) throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");
+// return t = m.N(t), m.a.Ya(t, m.la.fn), t.extend({
+// trackArrayChanges: !0
+// })
+// }, m.la.fn = {
+// remove: function(t) {
+// for (var e = this.t(), i = [], n = "function" != typeof t || m.H(t) ?
+// function(e) {
+// return e === t
+// } : t, r = 0; r < e.length; r++) {
+// var o = e[r];
+// n(o) && (0 === i.length && this.ga(), i.push(o), e.splice(r, 1), r--)
+// }
+// return i.length && this.fa(), i
+// },
+// removeAll: function(e) {
+// if (e === t) {
+// var i = this.t(),
+// n = i.slice(0);
+// return this.ga(), i.splice(0, i.length), this.fa(), n
+// }
+// return e ? this.remove(function(t) {
+// return 0 <= m.a.o(e, t)
+// }) : []
+// },
+// destroy: function(t) {
+// var e = this.t(),
+// i = "function" != typeof t || m.H(t) ?
+// function(e) {
+// return e === t
+// } : t;
+// this.ga();
+// for (var n = e.length - 1; 0 <= n; n--) i(e[n]) && (e[n]._destroy = !0);
+// this.fa()
+// },
+// destroyAll: function(e) {
+// return e === t ? this.destroy(function() {
+// return !0
+// }) : e ? this.destroy(function(t) {
+// return 0 <= m.a.o(e, t)
+// }) : []
+// },
+// indexOf: function(t) {
+// var e = this();
+// return m.a.o(e, t)
+// },
+// replace: function(t, e) {
+// var i = this.indexOf(t);
+// 0 <= i && (this.ga(), this.t()[i] = e, this.fa())
+// }
+// }, m.a.ka && m.a.Xa(m.la.fn, m.N.fn), m.a.q("pop push reverse shift sort splice unshift".split(" "), function(t) {
+// m.la.fn[t] = function() {
+// var e = this.t();
+// this.ga(), this.Vb(e, t, arguments);
+// var i = e[t].apply(e, arguments);
+// return this.fa(), i === e ? this : i
+// }
+// }), m.a.q(["slice"], function(t) {
+// m.la.fn[t] = function() {
+// var e = this();
+// return e[t].apply(e, arguments)
+// }
+// }), m.b("observableArray", m.la), m.ya.trackArrayChanges = function(t, e) {
+// function i() {
+// if (!r) {
+// r = !0;
+// var e = t.notifySubscribers;
+// t.notifySubscribers = function(t, i) {
+// return i && i !== v || ++a, e.apply(this, arguments)
+// };
+// var i = [].concat(t.t() || []);
+// o = null, n = t.X(function(e) {
+// if (e = [].concat(e || []), t.Pa("arrayChange")) {
+// var n;
+// (!o || 1 < a) && (o = m.a.ib(i, e, t.hb)), n = o
+// }
+// i = e, o = null, a = 0, n && n.length && t.notifySubscribers(n, "arrayChange")
+// })
+// }
+// }
+// if (t.hb = {}, e && "object" == typeof e && m.a.extend(t.hb, e), t.hb.sparse = !0, !t.Vb) {
+// var n, r = !1,
+// o = null,
+// a = 0,
+// s = t.sa,
+// l = t.Ia;
+// t.sa = function(e) {
+// s && s.call(t, e), "arrayChange" === e && i()
+// }, t.Ia = function(e) {
+// l && l.call(t, e), "arrayChange" !== e || t.Pa("arrayChange") || (n.k(), r = !1)
+// }, t.Vb = function(t, e, i) {
+// function n(t, e, i) {
+// return s[s.length] = {
+// status: t,
+// value: e,
+// index: i
+// }
+// }
+// if (r && !a) {
+// var s = [],
+// l = t.length,
+// u = i.length,
+// c = 0;
+// switch (e) {
+// case "push":
+// c = l;
+// case "unshift":
+// for (e = 0; e < u; e++) n("added", i[e], c + e);
+// break;
+// case "pop":
+// c = l - 1;
+// case "shift":
+// l && n("deleted", t[c], c);
+// break;
+// case "splice":
+// e = Math.min(Math.max(0, 0 > i[0] ? l + i[0] : i[0]), l);
+// for (var l = 1 === u ? l : Math.min(e + (i[1] || 0), l), u = e + u - 2, c = Math.max(l, u), h = [], d = [], p = 2; e < c; ++e, ++p) e < l && d.push(n("deleted", t[e], e)), e < u && h.push(n("added", i[p], e));
+// m.a.dc(d, h);
+// break;
+// default:
+// return
+// }
+// o = s
+// }
+// }
+// }
+// };
+// var C = m.a.Yb("_state");
+// m.m = m.B = function(e, i, n) {
+// function r() {
+// if (0 < arguments.length) {
+// if ("function" != typeof o) throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");
+// return o.apply(a.pb, arguments), this
+// }
+// return m.l.oc(r), (a.S || a.s && r.Qa()) && r.aa(), a.T
+// }
+// if ("object" == typeof e ? n = e : (n = n || {}, e && (n.read = e)), "function" != typeof n.read) throw Error("Pass a function that returns the value of the ko.computed");
+// var o = n.write,
+// a = {
+// T: t,
+// S: !0,
+// Ra: !1,
+// Fb: !1,
+// R: !1,
+// Va: !1,
+// s: !1,
+// jd: n.read,
+// pb: i || n.owner,
+// i: n.disposeWhenNodeIsRemoved || n.i || null,
+// wa: n.disposeWhen || n.wa,
+// mb: null,
+// r: {},
+// L: 0,
+// bc: null
+// };
+// return r[C] = a, r.Vc = "function" == typeof o, m.a.ka || m.a.extend(r, m.J.fn), m.J.fn.rb(r), m.a.Ya(r, x), n.pure ? (a.Va = !0, a.s = !0, m.a.extend(r, E)) : n.deferEvaluation && m.a.extend(r, k), m.options.deferUpdates && m.ya.deferred(r, !0), a.i && (a.Fb = !0, a.i.nodeType || (a.i = null)), a.s || n.deferEvaluation || r.aa(), a.i && r.ba() && m.a.F.oa(a.i, a.mb = function() {
+// r.k()
+// }), r
+// };
+// var x = {
+// equalityComparer: l,
+// Aa: function() {
+// return this[C].L
+// },
+// Pb: function(t, e, i) {
+// if (this[C].Va && e === this) throw Error("A 'pure' computed must not be called recursively");
+// this[C].r[t] = i, i.Ga = this[C].L++, i.na = e.Na()
+// },
+// Qa: function() {
+// var t, e, i = this[C].r;
+// for (t in i) if (i.hasOwnProperty(t) && (e = i[t], e.ia.Uc(e.na))) return !0
+// },
+// bd: function() {
+// this.Fa && !this[C].Ra && this.Fa()
+// },
+// ba: function() {
+// return this[C].S || 0 < this[C].L
+// },
+// ld: function() {
+// this.Mb || this.ac()
+// },
+// uc: function(t) {
+// if (t.cb && !this[C].i) {
+// var e = t.X(this.bd, this, "dirty"),
+// i = t.X(this.ld, this);
+// return {
+// ia: t,
+// k: function() {
+// e.k(), i.k()
+// }
+// }
+// }
+// return t.X(this.ac, this)
+// },
+// ac: function() {
+// var t = this,
+// e = t.throttleEvaluation;
+// e && 0 <= e ? (clearTimeout(this[C].bc), this[C].bc = m.a.setTimeout(function() {
+// t.aa(!0)
+// }, e)) : t.Fa ? t.Fa() : t.aa(!0)
+// },
+// aa: function(t) {
+// var e = this[C],
+// i = e.wa;
+// if (!e.Ra && !e.R) {
+// if (e.i && !m.a.nb(e.i) || i && i()) {
+// if (!e.Fb) return void this.k()
+// } else e.Fb = !1;
+// e.Ra = !0;
+// try {
+// this.Qc(t)
+// } finally {
+// e.Ra = !1
+// }
+// e.L || this.k()
+// }
+// },
+// Qc: function(e) {
+// var i = this[C],
+// n = i.Va ? t : !i.L,
+// r = {
+// Hc: this,
+// Ma: i.r,
+// lb: i.L
+// };
+// m.l.Ub({
+// Gc: r,
+// gb: p,
+// m: this,
+// Sa: n
+// }), i.r = {}, i.L = 0, r = this.Pc(i, r), this.tb(i.T, r) && (i.s || this.notifySubscribers(i.T, "beforeChange"), i.T = r, i.s ? this.zc() : e && this.notifySubscribers(i.T)), n && this.notifySubscribers(i.T, "awake")
+// },
+// Pc: function(t, e) {
+// try {
+// var i = t.jd;
+// return t.pb ? i.call(t.pb) : i()
+// } finally {
+// m.l.end(), e.lb && !t.s && m.a.D(e.Ma, d), t.S = !1
+// }
+// },
+// t: function() {
+// var t = this[C];
+// return (t.S && !t.L || t.s && this.Qa()) && this.aa(), t.T
+// },
+// Ta: function(t) {
+// m.J.fn.Ta.call(this, t), this.Fa = function() {
+// this.Kb(this[C].T), this[C].S = !0, this.Lb(this)
+// }
+// },
+// k: function() {
+// var t = this[C];
+// !t.s && t.r && m.a.D(t.r, function(t, e) {
+// e.k && e.k()
+// }), t.i && t.mb && m.a.F.pc(t.i, t.mb), t.r = null, t.L = 0, t.R = !0, t.S = !1, t.s = !1, t.i = null
+// }
+// },
+// E = {
+// sa: function(t) {
+// var e = this,
+// i = e[C];
+// if (!i.R && i.s && "change" == t) {
+// if (i.s = !1, i.S || e.Qa()) i.r = null, i.L = 0, i.S = !0, e.aa();
+// else {
+// var n = [];
+// m.a.D(i.r, function(t, e) {
+// n[e.Ga] = t
+// }), m.a.q(n, function(t, n) {
+// var r = i.r[t],
+// o = e.uc(r.ia);
+// o.Ga = n, o.na = r.na, i.r[t] = o
+// })
+// }
+// i.R || e.notifySubscribers(i.T, "awake")
+// }
+// },
+// Ia: function(e) {
+// var i = this[C];
+// i.R || "change" != e || this.Pa("change") || (m.a.D(i.r, function(t, e) {
+// e.k && (i.r[t] = {
+// ia: e.ia,
+// Ga: e.Ga,
+// na: e.na
+// }, e.k())
+// }), i.s = !0, this.notifySubscribers(t, "asleep"))
+// },
+// Na: function() {
+// var t = this[C];
+// return t.s && (t.S || this.Qa()) && this.aa(), m.J.fn.Na.call(this)
+// }
+// },
+// k = {
+// sa: function(t) {
+// "change" != t && "beforeChange" != t || this.t()
+// }
+// };
+// m.a.ka && m.a.Xa(x, m.J.fn);
+// var L = m.N.gd;
+// m.m[L] = m.N, x[L] = m.m, m.Xc = function(t) {
+// return m.Oa(t, m.m)
+// }, m.Yc = function(t) {
+// return m.Oa(t, m.m) && t[C] && t[C].Va
+// }, m.b("computed", m.m), m.b("dependentObservable", m.m), m.b("isComputed", m.Xc), m.b("isPureComputed", m.Yc), m.b("computed.fn", x), m.G(x, "peek", x.t), m.G(x, "dispose", x.k), m.G(x, "isActive", x.ba), m.G(x, "getDependenciesCount", x.Aa), m.nc = function(t, e) {
+// return "function" == typeof t ? m.m(t, e, {
+// pure: !0
+// }) : (t = m.a.extend({}, t), t.pure = !0, m.m(t, e))
+// }, m.b("pureComputed", m.nc), function() {
+// function e(r, o, a) {
+// if (a = a || new n, r = o(r), "object" != typeof r || null === r || r === t || r instanceof RegExp || r instanceof Date || r instanceof String || r instanceof Number || r instanceof Boolean) return r;
+// var s = r instanceof Array ? [] : {};
+// return a.save(r, s), i(r, function(i) {
+// var n = o(r[i]);
+// switch (typeof n) {
+// case "boolean":
+// case "number":
+// case "string":
+// case "function":
+// s[i] = n;
+// break;
+// case "object":
+// case "undefined":
+// var l = a.get(n);
+// s[i] = l !== t ? l : e(n, o, a)
+// }
+// }), s
+// }
+// function i(t, e) {
+// if (t instanceof Array) {
+// for (var i = 0; i < t.length; i++) e(i);
+// "function" == typeof t.toJSON && e("toJSON")
+// } else for (i in t) e(i)
+// }
+// function n() {
+// this.keys = [], this.Ib = []
+// }
+// m.wc = function(t) {
+// if (0 == arguments.length) throw Error("When calling ko.toJS, pass the object you want to convert.");
+// return e(t, function(t) {
+// for (var e = 0; m.H(t) && 10 > e; e++) t = t();
+// return t
+// })
+// }, m.toJSON = function(t, e, i) {
+// return t = m.wc(t), m.a.Eb(t, e, i)
+// }, n.prototype = {
+// save: function(t, e) {
+// var i = m.a.o(this.keys, t);
+// 0 <= i ? this.Ib[i] = e : (this.keys.push(t), this.Ib.push(e))
+// },
+// get: function(e) {
+// return e = m.a.o(this.keys, e), 0 <= e ? this.Ib[e] : t
+// }
+// }
+// }(), m.b("toJS", m.wc), m.b("toJSON", m.toJSON), function() {
+// m.j = {
+// u: function(e) {
+// switch (m.a.A(e)) {
+// case "option":
+// return !0 === e.__ko__hasDomDataOptionValue__ ? m.a.e.get(e, m.d.options.xb) : 7 >= m.a.C ? e.getAttributeNode("value") && e.getAttributeNode("value").specified ? e.value : e.text : e.value;
+// case "select":
+// return 0 <= e.selectedIndex ? m.j.u(e.options[e.selectedIndex]) : t;
+// default:
+// return e.value
+// }
+// },
+// ha: function(e, i, n) {
+// switch (m.a.A(e)) {
+// case "option":
+// switch (typeof i) {
+// case "string":
+// m.a.e.set(e, m.d.options.xb, t), "__ko__hasDomDataOptionValue__" in e && delete e.__ko__hasDomDataOptionValue__, e.value = i;
+// break;
+// default:
+// m.a.e.set(e, m.d.options.xb, i), e.__ko__hasDomDataOptionValue__ = !0, e.value = "number" == typeof i ? i : ""
+// }
+// break;
+// case "select":
+// "" !== i && null !== i || (i = t);
+// for (var r, o = -1, a = 0, s = e.options.length; a < s; ++a) if (r = m.j.u(e.options[a]), r == i || "" == r && i === t) {
+// o = a;
+// break
+// }(n || 0 <= o || i === t && 1 < e.size) && (e.selectedIndex = o);
+// break;
+// default:
+// null !== i && i !== t || (i = ""), e.value = i
+// }
+// }
+// }
+// }(), m.b("selectExtensions", m.j), m.b("selectExtensions.readValue", m.j.u), m.b("selectExtensions.writeValue", m.j.ha), m.h = function() {
+// function t(t) {
+// t = m.a.$a(t), 123 === t.charCodeAt(0) && (t = t.slice(1, -1));
+// var e, i = [],
+// a = t.match(n),
+// s = [],
+// l = 0;
+// if (a) {
+// a.push(",");
+// for (var u, c = 0; u = a[c]; ++c) {
+// var h = u.charCodeAt(0);
+// if (44 === h) {
+// if (0 >= l) {
+// i.push(e && s.length ? {
+// key: e,
+// value: s.join("")
+// } : {
+// unknown: e || s.join("")
+// }), e = l = 0, s = [];
+// continue
+// }
+// } else if (58 === h) {
+// if (!l && !e && 1 === s.length) {
+// e = s.pop();
+// continue
+// }
+// } else 47 === h && c && 1 < u.length ? (h = a[c - 1].match(r)) && !o[h[0]] && (t = t.substr(t.indexOf(u) + 1), a = t.match(n), a.push(","), c = -1, u = "/") : 40 === h || 123 === h || 91 === h ? ++l : 41 === h || 125 === h || 93 === h ? --l : e || s.length || 34 !== h && 39 !== h || (u = u.slice(1, -1));
+// s.push(u)
+// }
+// }
+// return i
+// }
+// var e = ["true", "false", "null", "undefined"],
+// i = /^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,
+// n = RegExp("\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|/(?:[^/\\\\]|\\\\.)*/w*|[^\\s:,/][^,\"'{}()/:[\\]]*[^\\s,\"'{}()/:[\\]]|[^\\s]", "g"),
+// r = /[\])"'A-Za-z0-9_$]+$/,
+// o = {
+// "in": 1,
+// "return": 1,
+// "typeof": 1
+// },
+// a = {};
+// return {
+// ta: [],
+// ea: a,
+// yb: t,
+// Ua: function(n, r) {
+// function o(t, n) {
+// var r;
+// if (!c) {
+// var h = m.getBindingHandler(t);
+// if (h && h.preprocess && !(n = h.preprocess(n, t, o))) return;
+// (h = a[t]) && (r = n, 0 <= m.a.o(e, r) ? r = !1 : (h = r.match(i), r = null !== h && (h[1] ? "Object(" + h[1] + ")" + h[2] : r)), h = r), h && l.push("'" + t + "':function(_z){" + r + "=_z}");
+// }
+// u && (n = "function(){return " + n + " }"), s.push("'" + t + "':" + n)
+// }
+// r = r || {};
+// var s = [],
+// l = [],
+// u = r.valueAccessors,
+// c = r.bindingParams,
+// h = "string" == typeof n ? t(n) : n;
+// return m.a.q(h, function(t) {
+// o(t.key || t.unknown, t.value)
+// }), l.length && o("_ko_property_writers", "{" + l.join(",") + " }"), s.join(",")
+// },
+// ad: function(t, e) {
+// for (var i = 0; i < t.length; i++) if (t[i].key == e) return !0;
+// return !1
+// },
+// Ea: function(t, e, i, n, r) {
+// t && m.H(t) ? !m.Ba(t) || r && t.t() === n || t(n) : (t = e.get("_ko_property_writers")) && t[i] && t[i](n)
+// }
+// }
+// }(), m.b("expressionRewriting", m.h), m.b("expressionRewriting.bindingRewriteValidators", m.h.ta), m.b("expressionRewriting.parseObjectLiteral", m.h.yb), m.b("expressionRewriting.preProcessBindings", m.h.Ua), m.b("expressionRewriting._twoWayBindings", m.h.ea), m.b("jsonExpressionRewriting", m.h), m.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson", m.h.Ua), function() {
+// function t(t) {
+// return 8 == t.nodeType && a.test(o ? t.text : t.nodeValue)
+// }
+// function e(t) {
+// return 8 == t.nodeType && s.test(o ? t.text : t.nodeValue)
+// }
+// function i(i, n) {
+// for (var r = i, o = 1, a = []; r = r.nextSibling;) {
+// if (e(r) && (o--, 0 === o)) return a;
+// a.push(r), t(r) && o++
+// }
+// if (!n) throw Error("Cannot find closing comment tag to match: " + i.nodeValue);
+// return null
+// }
+// function r(t, e) {
+// var n = i(t, e);
+// return n ? 0 < n.length ? n[n.length - 1].nextSibling : t.nextSibling : null
+// }
+// var o = n && "<!--test-->" === n.createComment("test").text,
+// a = o ? /^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/ : /^\s*ko(?:\s+([\s\S]+))?\s*$/,
+// s = o ? /^\x3c!--\s*\/ko\s*--\x3e$/ : /^\s*\/ko\s*$/,
+// l = {
+// ul: !0,
+// ol: !0
+// };
+// m.f = {
+// Z: {},
+// childNodes: function(e) {
+// return t(e) ? i(e) : e.childNodes
+// },
+// xa: function(e) {
+// if (t(e)) {
+// e = m.f.childNodes(e);
+// for (var i = 0, n = e.length; i < n; i++) m.removeNode(e[i])
+// } else m.a.ob(e)
+// },
+// da: function(e, i) {
+// if (t(e)) {
+// m.f.xa(e);
+// for (var n = e.nextSibling, r = 0, o = i.length; r < o; r++) n.parentNode.insertBefore(i[r], n)
+// } else m.a.da(e, i)
+// },
+// mc: function(e, i) {
+// t(e) ? e.parentNode.insertBefore(i, e.nextSibling) : e.firstChild ? e.insertBefore(i, e.firstChild) : e.appendChild(i)
+// },
+// gc: function(e, i, n) {
+// n ? t(e) ? e.parentNode.insertBefore(i, n.nextSibling) : n.nextSibling ? e.insertBefore(i, n.nextSibling) : e.appendChild(i) : m.f.mc(e, i)
+// },
+// firstChild: function(i) {
+// return t(i) ? !i.nextSibling || e(i.nextSibling) ? null : i.nextSibling : i.firstChild
+// },
+// nextSibling: function(i) {
+// return t(i) && (i = r(i)), i.nextSibling && e(i.nextSibling) ? null : i.nextSibling
+// },
+// Tc: t,
+// pd: function(t) {
+// return (t = (o ? t.text : t.nodeValue).match(a)) ? t[1] : null
+// },
+// kc: function(i) {
+// if (l[m.a.A(i)]) {
+// var n = i.firstChild;
+// if (n) do
+// if (1 === n.nodeType) {
+// var o;
+// o = n.firstChild;
+// var a = null;
+// if (o) do
+// if (a) a.push(o);
+// else if (t(o)) {
+// var s = r(o, !0);
+// s ? o = s : a = [o]
+// } else e(o) && (a = [o]);
+// while (o = o.nextSibling);
+// if (o = a) for (a = n.nextSibling, s = 0; s < o.length; s++) a ? i.insertBefore(o[s], a) : i.appendChild(o[s])
+// }
+// while (n = n.nextSibling)
+// }
+// }
+// }
+// }(), m.b("virtualElements", m.f), m.b("virtualElements.allowedBindings", m.f.Z), m.b("virtualElements.emptyNode", m.f.xa), m.b("virtualElements.insertAfter", m.f.gc), m.b("virtualElements.prepend", m.f.mc), m.b("virtualElements.setDomNodeChildren", m.f.da), function() {
+// m.Q = function() {
+// this.Fc = {}
+// }, m.a.extend(m.Q.prototype, {
+// nodeHasBindings: function(t) {
+// switch (t.nodeType) {
+// case 1:
+// return null != t.getAttribute("data-bind") || m.g.getComponentNameForNode(t);
+// case 8:
+// return m.f.Tc(t);
+// default:
+// return !1
+// }
+// },
+// getBindings: function(t, e) {
+// var i = this.getBindingsString(t, e),
+// i = i ? this.parseBindingsString(i, e, t) : null;
+// return m.g.Ob(i, t, e, !1)
+// },
+// getBindingAccessors: function(t, e) {
+// var i = this.getBindingsString(t, e),
+// i = i ? this.parseBindingsString(i, e, t, {
+// valueAccessors: !0
+// }) : null;
+// return m.g.Ob(i, t, e, !0)
+// },
+// getBindingsString: function(t) {
+// switch (t.nodeType) {
+// case 1:
+// return t.getAttribute("data-bind");
+// case 8:
+// return m.f.pd(t);
+// default:
+// return null
+// }
+// },
+// parseBindingsString: function(t, e, i, n) {
+// try {
+// var r, o = this.Fc,
+// a = t + (n && n.valueAccessors || "");
+// if (!(r = o[a])) {
+// var s, l = "with($context){with($data||{}){return{" + m.h.Ua(t, n) + "}}}";
+// s = new Function("$context", "$element", l), r = o[a] = s
+// }
+// return r(e, i)
+// } catch (u) {
+// throw u.message = "Unable to parse bindings.\nBindings value: " + t + "\nMessage: " + u.message, u
+// }
+// }
+// }), m.Q.instance = new m.Q
+// }(), m.b("bindingProvider", m.Q), function() {
+// function i(t) {
+// return function() {
+// return t
+// }
+// }
+// function n(t) {
+// return t()
+// }
+// function r(t) {
+// return m.a.Ca(m.l.w(t), function(e, i) {
+// return function() {
+// return t()[i]
+// }
+// })
+// }
+// function a(t, e, n) {
+// return "function" == typeof t ? r(t.bind(null, e, n)) : m.a.Ca(t, i)
+// }
+// function s(t, e) {
+// return r(this.getBindings.bind(this, t, e))
+// }
+// function l(t, e, i) {
+// var n, r = m.f.firstChild(e),
+// o = m.Q.instance,
+// a = o.preprocessNode;
+// if (a) {
+// for (; n = r;) r = m.f.nextSibling(n), a.call(o, n);
+// r = m.f.firstChild(e)
+// }
+// for (; n = r;) r = m.f.nextSibling(n), u(t, n, i)
+// }
+// function u(t, e, i) {
+// var n = !0,
+// r = 1 === e.nodeType;
+// r && m.f.kc(e), (r && i || m.Q.instance.nodeHasBindings(e)) && (n = h(e, null, t, i).shouldBindDescendants), n && !p[m.a.A(e)] && l(t, e, !r)
+// }
+// function c(t) {
+// var e = [],
+// i = {},
+// n = [];
+// return m.a.D(t, function r(o) {
+// if (!i[o]) {
+// var a = m.getBindingHandler(o);
+// a && (a.after && (n.push(o), m.a.q(a.after, function(e) {
+// if (t[e]) {
+// if (-1 !== m.a.o(n, e)) throw Error("Cannot combine the following bindings, because they have a cyclic dependency: " + n.join(", "));
+// r(e)
+// }
+// }), n.length--), e.push({
+// key: o,
+// fc: a
+// })), i[o] = !0
+// }
+// }), e
+// }
+// function h(e, i, r, o) {
+// var a = m.a.e.get(e, f);
+// if (!i) {
+// if (a) throw Error("You cannot apply bindings multiple times to the same element.");
+// m.a.e.set(e, f, !0)
+// }!a && o && m.tc(e, r);
+// var l;
+// if (i && "function" != typeof i) l = i;
+// else {
+// var u = m.Q.instance,
+// h = u.getBindingAccessors || s,
+// d = m.B(function() {
+// return (l = i ? i(r, e) : h.call(u, e, r)) && r.P && r.P(), l
+// }, null, {
+// i: e
+// });
+// l && d.ba() || (d = null)
+// }
+// var p;
+// if (l) {
+// var g = d ?
+// function(t) {
+// return function() {
+// return n(d()[t])
+// }
+// } : function(t) {
+// return l[t]
+// }, v = function() {
+// return m.a.Ca(d ? d() : l, n)
+// };
+// v.get = function(t) {
+// return l[t] && n(g(t))
+// }, v.has = function(t) {
+// return t in l
+// }, o = c(l), m.a.q(o, function(i) {
+// var n = i.fc.init,
+// o = i.fc.update,
+// a = i.key;
+// if (8 === e.nodeType && !m.f.Z[a]) throw Error("The binding '" + a + "' cannot be used with virtual elements");
+// try {
+// "function" == typeof n && m.l.w(function() {
+// var i = n(e, g(a), v, r.$data, r);
+// if (i && i.controlsDescendantBindings) {
+// if (p !== t) throw Error("Multiple bindings (" + p + " and " + a + ") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");
+// p = a
+// }
+// }), "function" == typeof o && m.B(function() {
+// o(e, g(a), v, r.$data, r)
+// }, null, {
+// i: e
+// })
+// } catch (s) {
+// throw s.message = 'Unable to process binding "' + a + ": " + l[a] + '"\nMessage: ' + s.message, s
+// }
+// })
+// }
+// return {
+// shouldBindDescendants: p === t
+// }
+// }
+// function d(t) {
+// return t && t instanceof m.U ? t : new m.U(t)
+// }
+// m.d = {};
+// var p = {
+// script: !0,
+// textarea: !0,
+// template: !0
+// };
+// m.getBindingHandler = function(t) {
+// return m.d[t]
+// }, m.U = function(e, i, n, r) {
+// var o, a = this,
+// s = "function" == typeof e && !m.H(e),
+// l = m.B(function() {
+// var t = s ? e() : e,
+// o = m.a.c(t);
+// return i ? (i.P && i.P(), m.a.extend(a, i), l && (a.P = l)) : (a.$parents = [], a.$root = o, a.ko = m), a.$rawData = t, a.$data = o, n && (a[n] = o), r && r(a, i, o), a.$data
+// }, null, {
+// wa: function() {
+// return o && !m.a.Qb(o)
+// },
+// i: !0
+// });
+// l.ba() && (a.P = l, l.equalityComparer = null, o = [], l.Ac = function(e) {
+// o.push(e), m.a.F.oa(e, function(e) {
+// m.a.La(o, e), o.length || (l.k(), a.P = l = t)
+// })
+// })
+// }, m.U.prototype.createChildContext = function(t, e, i) {
+// return new m.U(t, this, e, function(t, e) {
+// t.$parentContext = e, t.$parent = e.$data, t.$parents = (e.$parents || []).slice(0), t.$parents.unshift(t.$parent), i && i(t)
+// })
+// }, m.U.prototype.extend = function(t) {
+// return new m.U(this.P || this.$data, this, null, function(e, i) {
+// e.$rawData = i.$rawData, m.a.extend(e, "function" == typeof t ? t() : t)
+// })
+// };
+// var f = m.a.e.I(),
+// g = m.a.e.I();
+// m.tc = function(t, e) {
+// return 2 != arguments.length ? m.a.e.get(t, g) : (m.a.e.set(t, g, e), void(e.P && e.P.Ac(t)))
+// }, m.Ja = function(t, e, i) {
+// return 1 === t.nodeType && m.f.kc(t), h(t, e, d(i), !0)
+// }, m.Dc = function(t, e, i) {
+// return i = d(i), m.Ja(t, a(e, i, t), i)
+// }, m.eb = function(t, e) {
+// 1 !== e.nodeType && 8 !== e.nodeType || l(d(t), e, !0)
+// }, m.Rb = function(t, i) {
+// if (!o && e.jQuery && (o = e.jQuery), i && 1 !== i.nodeType && 8 !== i.nodeType) throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");
+// i = i || e.document.body, u(d(t), i, !0)
+// }, m.kb = function(e) {
+// switch (e.nodeType) {
+// case 1:
+// case 8:
+// var i = m.tc(e);
+// if (i) return i;
+// if (e.parentNode) return m.kb(e.parentNode)
+// }
+// return t
+// }, m.Jc = function(e) {
+// return (e = m.kb(e)) ? e.$data : t
+// }, m.b("bindingHandlers", m.d), m.b("applyBindings", m.Rb), m.b("applyBindingsToDescendants", m.eb), m.b("applyBindingAccessorsToNode", m.Ja), m.b("applyBindingsToNode", m.Dc), m.b("contextFor", m.kb), m.b("dataFor", m.Jc)
+// }(), function(t) {
+// function e(e, n) {
+// var a, s = r.hasOwnProperty(e) ? r[e] : t;
+// s ? s.X(n) : (s = r[e] = new m.J, s.X(n), i(e, function(t, i) {
+// var n = !(!i || !i.synchronous);
+// o[e] = {
+// definition: t,
+// Zc: n
+// }, delete r[e], a || n ? s.notifySubscribers(t) : m.Y.Wa(function() {
+// s.notifySubscribers(t)
+// })
+// }), a = !0)
+// }
+// function i(t, e) {
+// n("getConfig", [t], function(i) {
+// i ? n("loadComponent", [t, i], function(t) {
+// e(t, i)
+// }) : e(null, null)
+// })
+// }
+// function n(e, i, r, o) {
+// o || (o = m.g.loaders.slice(0));
+// var a = o.shift();
+// if (a) {
+// var s = a[e];
+// if (s) {
+// var l = !1;
+// if (s.apply(a, i.concat(function(t) {
+// l ? r(null) : null !== t ? r(t) : n(e, i, r, o)
+// })) !== t && (l = !0, !a.suppressLoaderExceptions)) throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.")
+// } else n(e, i, r, o)
+// } else r(null)
+// }
+// var r = {},
+// o = {};
+// m.g = {
+// get: function(i, n) {
+// var r = o.hasOwnProperty(i) ? o[i] : t;
+// r ? r.Zc ? m.l.w(function() {
+// n(r.definition)
+// }) : m.Y.Wa(function() {
+// n(r.definition)
+// }) : e(i, n)
+// },
+// Xb: function(t) {
+// delete o[t]
+// },
+// Jb: n
+// }, m.g.loaders = [], m.b("components", m.g), m.b("components.get", m.g.get), m.b("components.clearCachedDefinition", m.g.Xb)
+// }(), function() {
+// function t(t, e, i, n) {
+// function r() {
+// 0 === --s && n(o)
+// }
+// var o = {},
+// s = 2,
+// l = i.template;
+// i = i.viewModel, l ? a(e, l, function(e) {
+// m.g.Jb("loadTemplate", [t, e], function(t) {
+// o.template = t, r()
+// })
+// }) : r(), i ? a(e, i, function(e) {
+// m.g.Jb("loadViewModel", [t, e], function(t) {
+// o[c] = t, r()
+// })
+// }) : r()
+// }
+// function i(t, e, n) {
+// if ("function" == typeof e) n(function(t) {
+// return new e(t)
+// });
+// else if ("function" == typeof e[c]) n(e[c]);
+// else if ("instance" in e) {
+// var r = e.instance;
+// n(function() {
+// return r
+// })
+// } else "viewModel" in e ? i(t, e.viewModel, n) : t("Unknown viewModel value: " + e)
+// }
+// function r(t) {
+// switch (m.a.A(t)) {
+// case "script":
+// return m.a.ma(t.text);
+// case "textarea":
+// return m.a.ma(t.value);
+// case "template":
+// if (o(t.content)) return m.a.ua(t.content.childNodes)
+// }
+// return m.a.ua(t.childNodes)
+// }
+// function o(t) {
+// return e.DocumentFragment ? t instanceof DocumentFragment : t && 11 === t.nodeType
+// }
+// function a(t, i, n) {
+// "string" == typeof i.require ? s || e.require ? (s || e.require)([i.require], n) : t("Uses require, but no AMD loader is present") : n(i)
+// }
+// function l(t) {
+// return function(e) {
+// throw Error("Component '" + t + "': " + e)
+// }
+// }
+// var u = {};
+// m.g.register = function(t, e) {
+// if (!e) throw Error("Invalid configuration for " + t);
+// if (m.g.ub(t)) throw Error("Component " + t + " is already registered");
+// u[t] = e
+// }, m.g.ub = function(t) {
+// return u.hasOwnProperty(t)
+// }, m.g.od = function(t) {
+// delete u[t], m.g.Xb(t)
+// }, m.g.Zb = {
+// getConfig: function(t, e) {
+// e(u.hasOwnProperty(t) ? u[t] : null)
+// },
+// loadComponent: function(e, i, n) {
+// var r = l(e);
+// a(r, i, function(i) {
+// t(e, r, i, n)
+// })
+// },
+// loadTemplate: function(t, i, a) {
+// if (t = l(t), "string" == typeof i) a(m.a.ma(i));
+// else if (i instanceof Array) a(i);
+// else if (o(i)) a(m.a.V(i.childNodes));
+// else if (i.element) if (i = i.element, e.HTMLElement ? i instanceof HTMLElement : i && i.tagName && 1 === i.nodeType) a(r(i));
+// else if ("string" == typeof i) {
+// var s = n.getElementById(i);
+// s ? a(r(s)) : t("Cannot find element with ID " + i)
+// } else t("Unknown element type: " + i);
+// else t("Unknown template value: " + i)
+// },
+// loadViewModel: function(t, e, n) {
+// i(l(t), e, n)
+// }
+// };
+// var c = "createViewModel";
+// m.b("components.register", m.g.register), m.b("components.isRegistered", m.g.ub), m.b("components.unregister", m.g.od), m.b("components.defaultLoader", m.g.Zb), m.g.loaders.push(m.g.Zb), m.g.Bc = u
+// }(), function() {
+// function t(t, i) {
+// var n = t.getAttribute("params");
+// if (n) {
+// var n = e.parseBindingsString(n, i, t, {
+// valueAccessors: !0,
+// bindingParams: !0
+// }),
+// n = m.a.Ca(n, function(e) {
+// return m.m(e, null, {
+// i: t
+// })
+// }),
+// r = m.a.Ca(n, function(e) {
+// var i = e.t();
+// return e.ba() ? m.m({
+// read: function() {
+// return m.a.c(e())
+// },
+// write: m.Ba(i) &&
+// function(t) {
+// e()(t)
+// },
+// i: t
+// }) : i
+// });
+// return r.hasOwnProperty("$raw") || (r.$raw = n), r
+// }
+// return {
+// $raw: {}
+// }
+// }
+// m.g.getComponentNameForNode = function(t) {
+// var e = m.a.A(t);
+// if (m.g.ub(e) && (-1 != e.indexOf("-") || "[object HTMLUnknownElement]" == "" + t || 8 >= m.a.C && t.tagName === e)) return e
+// }, m.g.Ob = function(e, i, n, r) {
+// if (1 === i.nodeType) {
+// var o = m.g.getComponentNameForNode(i);
+// if (o) {
+// if (e = e || {}, e.component) throw Error('Cannot use the "component" binding on a custom element matching a component');
+// var a = {
+// name: o,
+// params: t(i, n)
+// };
+// e.component = r ?
+// function() {
+// return a
+// } : a
+// }
+// }
+// return e
+// };
+// var e = new m.Q;
+// 9 > m.a.C && (m.g.register = function(t) {
+// return function(e) {
+// return n.createElement(e), t.apply(this, arguments)
+// }
+// }(m.g.register), n.createDocumentFragment = function(t) {
+// return function() {
+// var e, i = t(),
+// n = m.g.Bc;
+// for (e in n) n.hasOwnProperty(e) && i.createElement(e);
+// return i
+// }
+// }(n.createDocumentFragment))
+// }(), function(t) {
+// function e(t, e, i) {
+// if (e = e.template, !e) throw Error("Component '" + t + "' has no template");
+// t = m.a.ua(e), m.f.da(i, t)
+// }
+// function i(t, e, i, n) {
+// var r = t.createViewModel;
+// return r ? r.call(t, n, {
+// element: e,
+// templateNodes: i
+// }) : n
+// }
+// var n = 0;
+// m.d.component = {
+// init: function(r, o, a, s, l) {
+// function u() {
+// var t = c && c.dispose;
+// "function" == typeof t && t.call(c), h = c = null
+// }
+// var c, h, d = m.a.V(m.f.childNodes(r));
+// return m.a.F.oa(r, u), m.m(function() {
+// var a, s, p = m.a.c(o());
+// if ("string" == typeof p ? a = p : (a = m.a.c(p.name), s = m.a.c(p.params)), !a) throw Error("No component name specified");
+// var f = h = ++n;
+// m.g.get(a, function(n) {
+// if (h === f) {
+// if (u(), !n) throw Error("Unknown component '" + a + "'");
+// e(a, n, r);
+// var o = i(n, r, d, s);
+// n = l.createChildContext(o, t, function(t) {
+// t.$component = o, t.$componentTemplateNodes = d
+// }), c = o, m.eb(n, r)
+// }
+// })
+// }, null, {
+// i: r
+// }), {
+// controlsDescendantBindings: !0
+// }
+// }
+// }, m.f.Z.component = !0
+// }();
+// var P = {
+// "class": "className",
+// "for": "htmlFor"
+// };
+// m.d.attr = {
+// update: function(e, i) {
+// var n = m.a.c(i()) || {};
+// m.a.D(n, function(i, n) {
+// n = m.a.c(n);
+// var r = !1 === n || null === n || n === t;
+// r && e.removeAttribute(i), 8 >= m.a.C && i in P ? (i = P[i], r ? e.removeAttribute(i) : e[i] = n) : r || e.setAttribute(i, n.toString()), "name" === i && m.a.rc(e, r ? "" : n.toString())
+// })
+// }
+// }, function() {
+// m.d.checked = {
+// after: ["value", "attr"],
+// init: function(e, i, n) {
+// function r() {
+// var t = e.checked,
+// r = p ? a() : t;
+// if (!m.va.Sa() && (!l || t)) {
+// var o = m.l.w(i);
+// if (c) {
+// var s = h ? o.t() : o;
+// d !== r ? (t && (m.a.pa(s, r, !0), m.a.pa(s, d, !1)), d = r) : m.a.pa(s, r, t), h && m.Ba(o) && o(s)
+// } else m.h.Ea(o, n, "checked", r, !0)
+// }
+// }
+// function o() {
+// var t = m.a.c(i());
+// e.checked = c ? 0 <= m.a.o(t, a()) : s ? t : a() === t
+// }
+// var a = m.nc(function() {
+// return n.has("checkedValue") ? m.a.c(n.get("checkedValue")) : n.has("value") ? m.a.c(n.get("value")) : e.value
+// }),
+// s = "checkbox" == e.type,
+// l = "radio" == e.type;
+// if (s || l) {
+// var u = i(),
+// c = s && m.a.c(u) instanceof Array,
+// h = !(c && u.push && u.splice),
+// d = c ? a() : t,
+// p = l || c;
+// l && !e.name && m.d.uniqueName.init(e, function() {
+// return !0
+// }), m.m(r, null, {
+// i: e
+// }), m.a.p(e, "click", r), m.m(o, null, {
+// i: e
+// }), u = t
+// }
+// }
+// }, m.h.ea.checked = !0, m.d.checkedValue = {
+// update: function(t, e) {
+// t.value = m.a.c(e())
+// }
+// }
+// }(), m.d.css = {
+// update: function(t, e) {
+// var i = m.a.c(e());
+// null !== i && "object" == typeof i ? m.a.D(i, function(e, i) {
+// i = m.a.c(i), m.a.bb(t, e, i)
+// }) : (i = m.a.$a(String(i || "")), m.a.bb(t, t.__ko__cssValue, !1), t.__ko__cssValue = i, m.a.bb(t, i, !0))
+// }
+// }, m.d.enable = {
+// update: function(t, e) {
+// var i = m.a.c(e());
+// i && t.disabled ? t.removeAttribute("disabled") : i || t.disabled || (t.disabled = !0)
+// }
+// }, m.d.disable = {
+// update: function(t, e) {
+// m.d.enable.update(t, function() {
+// return !m.a.c(e())
+// })
+// }
+// }, m.d.event = {
+// init: function(t, e, i, n, r) {
+// var o = e() || {};
+// m.a.D(o, function(o) {
+// "string" == typeof o && m.a.p(t, o, function(t) {
+// var a, s = e()[o];
+// if (s) {
+// try {
+// var l = m.a.V(arguments);
+// n = r.$data, l.unshift(n), a = s.apply(n, l)
+// } finally {
+// !0 !== a && (t.preventDefault ? t.preventDefault() : t.returnValue = !1)
+// }!1 === i.get(o + "Bubble") && (t.cancelBubble = !0, t.stopPropagation && t.stopPropagation())
+// }
+// })
+// })
+// }
+// }, m.d.foreach = {
+// ic: function(t) {
+// return function() {
+// var e = t(),
+// i = m.a.zb(e);
+// return i && "number" != typeof i.length ? (m.a.c(e), {
+// foreach: i.data,
+// as: i.as,
+// includeDestroyed: i.includeDestroyed,
+// afterAdd: i.afterAdd,
+// beforeRemove: i.beforeRemove,
+// afterRender: i.afterRender,
+// beforeMove: i.beforeMove,
+// afterMove: i.afterMove,
+// templateEngine: m.W.sb
+// }) : {
+// foreach: e,
+// templateEngine: m.W.sb
+// }
+// }
+// },
+// init: function(t, e) {
+// return m.d.template.init(t, m.d.foreach.ic(e))
+// },
+// update: function(t, e, i, n, r) {
+// return m.d.template.update(t, m.d.foreach.ic(e), i, n, r)
+// }
+// }, m.h.ta.foreach = !1, m.f.Z.foreach = !0, m.d.hasfocus = {
+// init: function(t, e, i) {
+// function n(n) {
+// t.__ko_hasfocusUpdating = !0;
+// var r = t.ownerDocument;
+// if ("activeElement" in r) {
+// var o;
+// try {
+// o = r.activeElement
+// } catch (a) {
+// o = r.body
+// }
+// n = o === t
+// }
+// r = e(), m.h.Ea(r, i, "hasfocus", n, !0), t.__ko_hasfocusLastValue = n, t.__ko_hasfocusUpdating = !1
+// }
+// var r = n.bind(null, !0),
+// o = n.bind(null, !1);
+// m.a.p(t, "focus", r), m.a.p(t, "focusin", r), m.a.p(t, "blur", o), m.a.p(t, "focusout", o)
+// },
+// update: function(t, e) {
+// var i = !! m.a.c(e());
+// t.__ko_hasfocusUpdating || t.__ko_hasfocusLastValue === i || (i ? t.focus() : t.blur(), !i && t.__ko_hasfocusLastValue && t.ownerDocument.body.focus(), m.l.w(m.a.Da, null, [t, i ? "focusin" : "focusout"]))
+// }
+// }, m.h.ea.hasfocus = !0, m.d.hasFocus = m.d.hasfocus, m.h.ea.hasFocus = !0, m.d.html = {
+// init: function() {
+// return {
+// controlsDescendantBindings: !0
+// }
+// },
+// update: function(t, e) {
+// m.a.Cb(t, e())
+// }
+// }, f("if"), f("ifnot", !1, !0), f("with", !0, !1, function(t, e) {
+// return t.createChildContext(e)
+// });
+// var D = {};
+// m.d.options = {
+// init: function(t) {
+// if ("select" !== m.a.A(t)) throw Error("options binding applies only to SELECT elements");
+// for (; 0 < t.length;) t.remove(0);
+// return {
+// controlsDescendantBindings: !0
+// }
+// },
+// update: function(e, i, n) {
+// function r() {
+// return m.a.Ka(e.options, function(t) {
+// return t.selected
+// })
+// }
+// function o(t, e, i) {
+// var n = typeof e;
+// return "function" == n ? e(t) : "string" == n ? t[e] : i
+// }
+// function a(t, i) {
+// if (f && c) m.j.ha(e, m.a.c(n.get("value")), !0);
+// else if (p.length) {
+// var r = 0 <= m.a.o(p, m.j.u(i[0]));
+// m.a.sc(i[0], r), f && !r && m.l.w(m.a.Da, null, [e, "change"])
+// }
+// }
+// var s = e.multiple,
+// l = 0 != e.length && s ? e.scrollTop : null,
+// u = m.a.c(i()),
+// c = n.get("valueAllowUnset") && n.has("value"),
+// h = n.get("optionsIncludeDestroyed");
+// i = {};
+// var d, p = [];
+// c || (s ? p = m.a.fb(r(), m.j.u) : 0 <= e.selectedIndex && p.push(m.j.u(e.options[e.selectedIndex]))), u && ("undefined" == typeof u.length && (u = [u]), d = m.a.Ka(u, function(e) {
+// return h || e === t || null === e || !m.a.c(e._destroy)
+// }), n.has("optionsCaption") && (u = m.a.c(n.get("optionsCaption")), null !== u && u !== t && d.unshift(D)));
+// var f = !1;
+// i.beforeRemove = function(t) {
+// e.removeChild(t)
+// }, u = a, n.has("optionsAfterRender") && "function" == typeof n.get("optionsAfterRender") && (u = function(e, i) {
+// a(0, i), m.l.w(n.get("optionsAfterRender"), null, [i[0], e !== D ? e : t])
+// }), m.a.Bb(e, d, function(i, r, a) {
+// return a.length && (p = !c && a[0].selected ? [m.j.u(a[0])] : [], f = !0), r = e.ownerDocument.createElement("option"), i === D ? (m.a.Za(r, n.get("optionsCaption")), m.j.ha(r, t)) : (a = o(i, n.get("optionsValue"), i), m.j.ha(r, m.a.c(a)), i = o(i, n.get("optionsText"), a), m.a.Za(r, i)), [r]
+// }, i, u), m.l.w(function() {
+// c ? m.j.ha(e, m.a.c(n.get("value")), !0) : (s ? p.length && r().length < p.length : p.length && 0 <= e.selectedIndex ? m.j.u(e.options[e.selectedIndex]) !== p[0] : p.length || 0 <= e.selectedIndex) && m.a.Da(e, "change")
+// }), m.a.Nc(e), l && 20 < Math.abs(l - e.scrollTop) && (e.scrollTop = l)
+// }
+// }, m.d.options.xb = m.a.e.I(), m.d.selectedOptions = {
+// after: ["options", "foreach"],
+// init: function(t, e, i) {
+// m.a.p(t, "change", function() {
+// var n = e(),
+// r = [];
+// m.a.q(t.getElementsByTagName("option"), function(t) {
+// t.selected && r.push(m.j.u(t))
+// }), m.h.Ea(n, i, "selectedOptions", r)
+// })
+// },
+// update: function(t, e) {
+// if ("select" != m.a.A(t)) throw Error("values binding applies only to SELECT elements");
+// var i = m.a.c(e()),
+// n = t.scrollTop;
+// i && "number" == typeof i.length && m.a.q(t.getElementsByTagName("option"), function(t) {
+// var e = 0 <= m.a.o(i, m.j.u(t));
+// t.selected != e && m.a.sc(t, e)
+// }), t.scrollTop = n
+// }
+// }, m.h.ea.selectedOptions = !0, m.d.style = {
+// update: function(e, i) {
+// var n = m.a.c(i() || {});
+// m.a.D(n, function(i, n) {
+// n = m.a.c(n), null !== n && n !== t && !1 !== n || (n = ""), e.style[i] = n
+// })
+// }
+// }, m.d.submit = {
+// init: function(t, e, i, n, r) {
+// if ("function" != typeof e()) throw Error("The value for a submit binding must be a function");
+// m.a.p(t, "submit", function(i) {
+// var n, o = e();
+// try {
+// n = o.call(r.$data, t)
+// } finally {
+// !0 !== n && (i.preventDefault ? i.preventDefault() : i.returnValue = !1)
+// }
+// })
+// }
+// }, m.d.text = {
+// init: function() {
+// return {
+// controlsDescendantBindings: !0
+// }
+// },
+// update: function(t, e) {
+// m.a.Za(t, e())
+// }
+// }, m.f.Z.text = !0, function() {
+// if (e && e.navigator) var i = function(t) {
+// if (t) return parseFloat(t[1])
+// },
+// n = e.opera && e.opera.version && parseInt(e.opera.version()),
+// r = e.navigator.userAgent,
+// o = i(r.match(/^(?:(?!chrome).)*version\/([^ ]*) safari/i)),
+// a = i(r.match(/Firefox\/([^ ]*)/));
+// if (10 > m.a.C) var s = m.a.e.I(),
+// l = m.a.e.I(),
+// u = function(t) {
+// var e = this.activeElement;
+// (e = e && m.a.e.get(e, l)) && e(t)
+// },
+// c = function(t, e) {
+// var i = t.ownerDocument;
+// m.a.e.get(i, s) || (m.a.e.set(i, s, !0), m.a.p(i, "selectionchange", u)), m.a.e.set(t, l, e)
+// };
+// m.d.textInput = {
+// init: function(e, i, r) {
+// function s(t, i) {
+// m.a.p(e, t, i)
+// }
+// function l() {
+// var n = m.a.c(i());
+// null !== n && n !== t || (n = ""), p !== t && n === p ? m.a.setTimeout(l, 4) : e.value !== n && (f = n, e.value = n)
+// }
+// function u() {
+// d || (p = e.value, d = m.a.setTimeout(h, 4))
+// }
+// function h() {
+// clearTimeout(d), p = d = t;
+// var n = e.value;
+// f !== n && (f = n, m.h.Ea(i(), r, "textInput", n))
+// }
+// var d, p, f = e.value,
+// g = 9 == m.a.C ? u : h;
+// 10 > m.a.C ? (s("propertychange", function(t) {
+// "value" === t.propertyName && g(t)
+// }), 8 == m.a.C && (s("keyup", h), s("keydown", h)), 8 <= m.a.C && (c(e, g), s("dragend", u))) : (s("input", h), 5 > o && "textarea" === m.a.A(e) ? (s("keydown", u), s("paste", u), s("cut", u)) : 11 > n ? s("keydown", u) : 4 > a && (s("DOMAutoComplete", h), s("dragdrop", h), s("drop", h))), s("change", h), m.m(l, null, {
+// i: e
+// })
+// }
+// }, m.h.ea.textInput = !0, m.d.textinput = {
+// preprocess: function(t, e, i) {
+// i("textInput", t)
+// }
+// }
+// }(), m.d.uniqueName = {
+// init: function(t, e) {
+// if (e()) {
+// var i = "ko_unique_" + ++m.d.uniqueName.Ic;
+// m.a.rc(t, i)
+// }
+// }
+// }, m.d.uniqueName.Ic = 0, m.d.value = {
+// after: ["options", "foreach"],
+// init: function(t, e, i) {
+// if ("input" != t.tagName.toLowerCase() || "checkbox" != t.type && "radio" != t.type) {
+// var n = ["change"],
+// r = i.get("valueUpdate"),
+// o = !1,
+// a = null;
+// r && ("string" == typeof r && (r = [r]), m.a.ra(n, r), n = m.a.Tb(n));
+// var s = function() {
+// a = null, o = !1;
+// var n = e(),
+// r = m.j.u(t);
+// m.h.Ea(n, i, "value", r)
+// };
+// !m.a.C || "input" != t.tagName.toLowerCase() || "text" != t.type || "off" == t.autocomplete || t.form && "off" == t.form.autocomplete || -1 != m.a.o(n, "propertychange") || (m.a.p(t, "propertychange", function() {
+// o = !0
+// }), m.a.p(t, "focus", function() {
+// o = !1
+// }), m.a.p(t, "blur", function() {
+// o && s()
+// })), m.a.q(n, function(e) {
+// var i = s;
+// m.a.nd(e, "after") && (i = function() {
+// a = m.j.u(t), m.a.setTimeout(s, 0)
+// }, e = e.substring(5)), m.a.p(t, e, i)
+// });
+// var l = function() {
+// var n = m.a.c(e()),
+// r = m.j.u(t);
+// if (null !== a && n === a) m.a.setTimeout(l, 0);
+// else if (n !== r) if ("select" === m.a.A(t)) {
+// var o = i.get("valueAllowUnset"),
+// r = function() {
+// m.j.ha(t, n, o)
+// };
+// r(), o || n === m.j.u(t) ? m.a.setTimeout(r, 0) : m.l.w(m.a.Da, null, [t, "change"])
+// } else m.j.ha(t, n)
+// };
+// m.m(l, null, {
+// i: t
+// })
+// } else m.Ja(t, {
+// checkedValue: e
+// })
+// },
+// update: function() {}
+// }, m.h.ea.value = !0, m.d.visible = {
+// update: function(t, e) {
+// var i = m.a.c(e()),
+// n = "none" != t.style.display;
+// i && !n ? t.style.display = "" : !i && n && (t.style.display = "none")
+// }
+// }, function(t) {
+// m.d[t] = {
+// init: function(e, i, n, r, o) {
+// return m.d.event.init.call(this, e, function() {
+// var e = {};
+// return e[t] = i(), e
+// }, n, r, o)
+// }
+// }
+// }("click"), m.O = function() {}, m.O.prototype.renderTemplateSource = function() {
+// throw Error("Override renderTemplateSource")
+// }, m.O.prototype.createJavaScriptEvaluatorBlock = function() {
+// throw Error("Override createJavaScriptEvaluatorBlock")
+// }, m.O.prototype.makeTemplateSource = function(t, e) {
+// if ("string" == typeof t) {
+// e = e || n;
+// var i = e.getElementById(t);
+// if (!i) throw Error("Cannot find template with ID " + t);
+// return new m.v.n(i)
+// }
+// if (1 == t.nodeType || 8 == t.nodeType) return new m.v.qa(t);
+// throw Error("Unknown template type: " + t)
+// }, m.O.prototype.renderTemplate = function(t, e, i, n) {
+// return t = this.makeTemplateSource(t, n), this.renderTemplateSource(t, e, i, n)
+// }, m.O.prototype.isTemplateRewritten = function(t, e) {
+// return !1 === this.allowTemplateRewriting || this.makeTemplateSource(t, e).data("isRewritten")
+// }, m.O.prototype.rewriteTemplate = function(t, e, i) {
+// t = this.makeTemplateSource(t, i), e = e(t.text()), t.text(e), t.data("isRewritten", !0)
+// }, m.b("templateEngine", m.O), m.Gb = function() {
+// function t(t, e, i, n) {
+// t = m.h.yb(t);
+// for (var r = m.h.ta, o = 0; o < t.length; o++) {
+// var a = t[o].key;
+// if (r.hasOwnProperty(a)) {
+// var s = r[a];
+// if ("function" == typeof s) {
+// if (a = s(t[o].value)) throw Error(a)
+// } else if (!s) throw Error("This template engine does not support the '" + a + "' binding within its templates")
+// }
+// }
+// return i = "ko.__tr_ambtns(function($context,$element){return(function(){return{ " + m.h.Ua(t, {
+// valueAccessors: !0
+// }) + " } })()},'" + i.toLowerCase() + "')", n.createJavaScriptEvaluatorBlock(i) + e
+// }
+// var e = /(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,
+// i = /\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;
+// return {
+// Oc: function(t, e, i) {
+// e.isTemplateRewritten(t, i) || e.rewriteTemplate(t, function(t) {
+// return m.Gb.dd(t, e)
+// }, i)
+// },
+// dd: function(n, r) {
+// return n.replace(e, function(e, i, n, o, a) {
+// return t(a, i, n, r)
+// }).replace(i, function(e, i) {
+// return t(i, "<!-- ko -->", "#comment", r)
+// })
+// },
+// Ec: function(t, e) {
+// return m.M.wb(function(i, n) {
+// var r = i.nextSibling;
+// r && r.nodeName.toLowerCase() === e && m.Ja(r, t, n)
+// })
+// }
+// }
+// }(), m.b("__tr_ambtns", m.Gb.Ec), function() {
+// m.v = {}, m.v.n = function(t) {
+// if (this.n = t) {
+// var e = m.a.A(t);
+// this.ab = "script" === e ? 1 : "textarea" === e ? 2 : "template" == e && t.content && 11 === t.content.nodeType ? 3 : 4
+// }
+// }, m.v.n.prototype.text = function() {
+// var t = 1 === this.ab ? "text" : 2 === this.ab ? "value" : "innerHTML";
+// if (0 == arguments.length) return this.n[t];
+// var e = arguments[0];
+// "innerHTML" === t ? m.a.Cb(this.n, e) : this.n[t] = e
+// };
+// var e = m.a.e.I() + "_";
+// m.v.n.prototype.data = function(t) {
+// return 1 === arguments.length ? m.a.e.get(this.n, e + t) : void m.a.e.set(this.n, e + t, arguments[1])
+// };
+// var i = m.a.e.I();
+// m.v.n.prototype.nodes = function() {
+// var e = this.n;
+// return 0 == arguments.length ? (m.a.e.get(e, i) || {}).jb || (3 === this.ab ? e.content : 4 === this.ab ? e : t) : void m.a.e.set(e, i, {
+// jb: arguments[0]
+// })
+// }, m.v.qa = function(t) {
+// this.n = t
+// }, m.v.qa.prototype = new m.v.n, m.v.qa.prototype.text = function() {
+// if (0 == arguments.length) {
+// var e = m.a.e.get(this.n, i) || {};
+// return e.Hb === t && e.jb && (e.Hb = e.jb.innerHTML), e.Hb
+// }
+// m.a.e.set(this.n, i, {
+// Hb: arguments[0]
+// })
+// }, m.b("templateSources", m.v), m.b("templateSources.domElement", m.v.n), m.b("templateSources.anonymousTemplate", m.v.qa)
+// }(), function() {
+// function e(t, e, i) {
+// var n;
+// for (e = m.f.nextSibling(e); t && (n = t) !== e;) t = m.f.nextSibling(n), i(n, t)
+// }
+// function i(t, i) {
+// if (t.length) {
+// var n = t[0],
+// r = t[t.length - 1],
+// o = n.parentNode,
+// a = m.Q.instance,
+// s = a.preprocessNode;
+// if (s) {
+// if (e(n, r, function(t, e) {
+// var i = t.previousSibling,
+// o = s.call(a, t);
+// o && (t === n && (n = o[0] || e), t === r && (r = o[o.length - 1] || i))
+// }), t.length = 0, !n) return;
+// n === r ? t.push(n) : (t.push(n, r), m.a.za(t, o))
+// }
+// e(n, r, function(t) {
+// 1 !== t.nodeType && 8 !== t.nodeType || m.Rb(i, t)
+// }), e(n, r, function(t) {
+// 1 !== t.nodeType && 8 !== t.nodeType || m.M.yc(t, [i])
+// }), m.a.za(t, o)
+// }
+// }
+// function n(t) {
+// return t.nodeType ? t : 0 < t.length ? t[0] : null
+// }
+// function r(t, e, r, o, s) {
+// s = s || {};
+// var l = (t && n(t) || r || {}).ownerDocument,
+// u = s.templateEngine || a;
+// if (m.Gb.Oc(r, u, l), r = u.renderTemplate(r, o, s, l), "number" != typeof r.length || 0 < r.length && "number" != typeof r[0].nodeType) throw Error("Template engine must return an array of DOM nodes");
+// switch (l = !1, e) {
+// case "replaceChildren":
+// m.f.da(t, r), l = !0;
+// break;
+// case "replaceNode":
+// m.a.qc(t, r), l = !0;
+// break;
+// case "ignoreTargetNode":
+// break;
+// default:
+// throw Error("Unknown renderMode: " + e)
+// }
+// return l && (i(r, o), s.afterRender && m.l.w(s.afterRender, null, [r, o.$data])), r
+// }
+// function o(t, e, i) {
+// return m.H(t) ? t() : "function" == typeof t ? t(e, i) : t
+// }
+// var a;
+// m.Db = function(e) {
+// if (e != t && !(e instanceof m.O)) throw Error("templateEngine must inherit from ko.templateEngine");
+// a = e
+// }, m.Ab = function(e, i, s, l, u) {
+// if (s = s || {}, (s.templateEngine || a) == t) throw Error("Set a template engine before calling renderTemplate");
+// if (u = u || "replaceChildren", l) {
+// var c = n(l);
+// return m.B(function() {
+// var t = i && i instanceof m.U ? i : new m.U(m.a.c(i)),
+// a = o(e, t.$data, t),
+// t = r(l, u, a, t, s);
+// "replaceNode" == u && (l = t, c = n(l))
+// }, null, {
+// wa: function() {
+// return !c || !m.a.nb(c)
+// },
+// i: c && "replaceNode" == u ? c.parentNode : c
+// })
+// }
+// return m.M.wb(function(t) {
+// m.Ab(e, i, s, t, "replaceNode")
+// })
+// }, m.kd = function(e, n, a, s, l) {
+// function u(t, e) {
+// i(e, h), a.afterRender && a.afterRender(e, t), h = null
+// }
+// function c(t, i) {
+// h = l.createChildContext(t, a.as, function(t) {
+// t.$index = i
+// });
+// var n = o(e, t, h);
+// return r(null, "ignoreTargetNode", n, h, a)
+// }
+// var h;
+// return m.B(function() {
+// var e = m.a.c(n) || [];
+// "undefined" == typeof e.length && (e = [e]), e = m.a.Ka(e, function(e) {
+// return a.includeDestroyed || e === t || null === e || !m.a.c(e._destroy)
+// }), m.l.w(m.a.Bb, null, [s, e, c, a, u])
+// }, null, {
+// i: s
+// })
+// };
+// var s = m.a.e.I();
+// m.d.template = {
+// init: function(t, e) {
+// var i = m.a.c(e());
+// if ("string" == typeof i || i.name) m.f.xa(t);
+// else {
+// if ("nodes" in i) {
+// if (i = i.nodes || [], m.H(i)) throw Error('The "nodes" option must be a plain, non-observable array.')
+// } else i = m.f.childNodes(t);
+// i = m.a.jc(i), new m.v.qa(t).nodes(i)
+// }
+// return {
+// controlsDescendantBindings: !0
+// }
+// },
+// update: function(e, i, n, r, o) {
+// var a, l = i();
+// i = m.a.c(l), n = !0, r = null, "string" == typeof i ? i = {} : (l = i.name, "if" in i && (n = m.a.c(i["if"])), n && "ifnot" in i && (n = !m.a.c(i.ifnot)), a = m.a.c(i.data)), "foreach" in i ? r = m.kd(l || e, n && i.foreach || [], i, e, o) : n ? (o = "data" in i ? o.createChildContext(a, i.as) : o, r = m.Ab(l || e, o, i, e)) : m.f.xa(e), o = r, (a = m.a.e.get(e, s)) && "function" == typeof a.k && a.k(), m.a.e.set(e, s, o && o.ba() ? o : t)
+// }
+// }, m.h.ta.template = function(t) {
+// return t = m.h.yb(t), 1 == t.length && t[0].unknown || m.h.ad(t, "name") ? null : "This template engine does not support anonymous templates nested within its templates"
+// }, m.f.Z.template = !0
+// }(), m.b("setTemplateEngine", m.Db), m.b("renderTemplate", m.Ab), m.a.dc = function(t, e, i) {
+// if (t.length && e.length) {
+// var n, r, o, a, s;
+// for (n = r = 0;
+// (!i || n < i) && (a = t[r]); ++r) {
+// for (o = 0; s = e[o]; ++o) if (a.value === s.value) {
+// a.moved = s.index, s.moved = a.index, e.splice(o, 1), n = o = 0;
+// break
+// }
+// n += o
+// }
+// }
+// }, m.a.ib = function() {
+// function t(t, e, i, n, r) {
+// var o, a, s, l, u, c = Math.min,
+// h = Math.max,
+// d = [],
+// p = t.length,
+// f = e.length,
+// g = f - p || 1,
+// v = p + f + 1;
+// for (o = 0; o <= p; o++) for (l = s, d.push(s = []), u = c(f, o + g), a = h(0, o - 1); a <= u; a++) s[a] = a ? o ? t[o - 1] === e[a - 1] ? l[a - 1] : c(l[a] || v, s[a - 1] || v) + 1 : a + 1 : o + 1;
+// for (c = [], h = [], g = [], o = p, a = f; o || a;) f = d[o][a] - 1, a && f === d[o][a - 1] ? h.push(c[c.length] = {
+// status: i,
+// value: e[--a],
+// index: a
+// }) : o && f === d[o - 1][a] ? g.push(c[c.length] = {
+// status: n,
+// value: t[--o],
+// index: o
+// }) : (--a, --o, r.sparse || c.push({
+// status: "retained",
+// value: e[a]
+// }));
+// return m.a.dc(g, h, !r.dontLimitMoves && 10 * p), c.reverse()
+// }
+// return function(e, i, n) {
+// return n = "boolean" == typeof n ? {
+// dontLimitMoves: n
+// } : n || {}, e = e || [], i = i || [], e.length < i.length ? t(e, i, "added", "deleted", n) : t(i, e, "deleted", "added", n)
+// }
+// }(), m.b("utils.compareArrays", m.a.ib), function() {
+// function e(e, i, n, r, o) {
+// var a = [],
+// s = m.B(function() {
+// var t = i(n, o, m.a.za(a, e)) || [];
+// 0 < a.length && (m.a.qc(a, t), r && m.l.w(r, null, [n, t, o])), a.length = 0, m.a.ra(a, t)
+// }, null, {
+// i: e,
+// wa: function() {
+// return !m.a.Qb(a)
+// }
+// });
+// return {
+// ca: a,
+// B: s.ba() ? s : t
+// }
+// }
+// var i = m.a.e.I(),
+// n = m.a.e.I();
+// m.a.Bb = function(r, o, a, s, l) {
+// function u(t, e) {
+// w = d[e], _ !== e && (E[t] = w), w.qb(_++), m.a.za(w.ca, r), g.push(w), b.push(w)
+// }
+// function c(t, e) {
+// if (t) for (var i = 0, n = e.length; i < n; i++) e[i] && m.a.q(e[i].ca, function(n) {
+// t(n, i, e[i].ja)
+// })
+// }
+// o = o || [], s = s || {};
+// var h = m.a.e.get(r, i) === t,
+// d = m.a.e.get(r, i) || [],
+// p = m.a.fb(d, function(t) {
+// return t.ja
+// }),
+// f = m.a.ib(p, o, s.dontLimitMoves),
+// g = [],
+// v = 0,
+// _ = 0,
+// y = [],
+// b = [];
+// o = [];
+// for (var w, C, x, E = [], p = [], k = 0; C = f[k]; k++) switch (x = C.moved, C.status) {
+// case "deleted":
+// x === t && (w = d[v], w.B && (w.B.k(), w.B = t), m.a.za(w.ca, r).length && (s.beforeRemove && (g.push(w), b.push(w), w.ja === n ? w = null : o[k] = w), w && y.push.apply(y, w.ca))), v++;
+// break;
+// case "retained":
+// u(k, v++);
+// break;
+// case "added":
+// x !== t ? u(k, x) : (w = {
+// ja: C.value,
+// qb: m.N(_++)
+// }, g.push(w), b.push(w), h || (p[k] = w))
+// }
+// m.a.e.set(r, i, g), c(s.beforeMove, E), m.a.q(y, s.beforeRemove ? m.$ : m.removeNode);
+// for (var L, k = 0, h = m.f.firstChild(r); w = b[k]; k++) {
+// for (w.ca || m.a.extend(w, e(r, a, w.ja, l, w.qb)), v = 0; f = w.ca[v]; h = f.nextSibling, L = f, v++) f !== h && m.f.gc(r, f, L);
+// !w.Wc && l && (l(w.ja, w.ca, w.qb), w.Wc = !0)
+// }
+// for (c(s.beforeRemove, o), k = 0; k < o.length; ++k) o[k] && (o[k].ja = n);
+// c(s.afterMove, E), c(s.afterAdd, p)
+// }
+// }(), m.b("utils.setDomNodeChildrenFromArrayMapping", m.a.Bb), m.W = function() {
+// this.allowTemplateRewriting = !1
+// }, m.W.prototype = new m.O, m.W.prototype.renderTemplateSource = function(t, e, i, n) {
+// return (e = (9 > m.a.C ? 0 : t.nodes) ? t.nodes() : null) ? m.a.V(e.cloneNode(!0).childNodes) : (t = t.text(), m.a.ma(t, n))
+// }, m.W.sb = new m.W, m.Db(m.W.sb), m.b("nativeTemplateEngine", m.W), function() {
+// m.vb = function() {
+// var t = this.$c = function() {
+// if (!o || !o.tmpl) return 0;
+// try {
+// if (0 <= o.tmpl.tag.tmpl.open.toString().indexOf("__")) return 2
+// } catch (t) {}
+// return 1
+// }();
+// this.renderTemplateSource = function(e, i, r, a) {
+// if (a = a || n, r = r || {}, 2 > t) throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");
+// var s = e.data("precompiled");
+// return s || (s = e.text() || "", s = o.template(null, "{{ko_with $item.koBindingContext}}" + s + "{{/ko_with}}"), e.data("precompiled", s)), e = [i.$data], i = o.extend({
+// koBindingContext: i
+// }, r.templateOptions), i = o.tmpl(s, e, i), i.appendTo(a.createElement("div")), o.fragments = {}, i
+// }, this.createJavaScriptEvaluatorBlock = function(t) {
+// return "{{ko_code ((function() { return " + t + " })()) }}"
+// }, this.addTemplate = function(t, e) {
+// n.write("<script type='text/html' id='" + t + "'>" + e + "</script>")
+// }, 0 < t && (o.tmpl.tag.ko_code = {
+// open: "__.push($1 || '');"
+// }, o.tmpl.tag.ko_with = {
+// open: "with($1) {",
+// close: "} "
+// })
+// }, m.vb.prototype = new m.O;
+// var t = new m.vb;
+// 0 < t.$c && m.Db(t), m.b("jqueryTmplTemplateEngine", m.vb)
+// }()
+// })
+// }()
+// }(), !
+// function(t, n) {
+// "use strict";
+
+// function r(t, e) {
+// if (!t || "object" != typeof t) throw new Error("When calling ko.track, you must pass an object as the first parameter.");
+// var i;
+// return c(e) ? (e.deep = e.deep || !1, e.fields = e.fields || Object.getOwnPropertyNames(t), e.lazy = e.lazy || !1, u(t, e.fields, e)) : (i = e || Object.getOwnPropertyNames(t), u(t, i, {})), t
+// }
+// function o(t) {
+// return t.name ? t.name : (t.toString().trim().match(D) || [])[1]
+// }
+// function a(t) {
+// return t && "object" == typeof t && "Object" === o(t.constructor)
+// }
+// function s(t, e, i) {
+// var r = E.isObservable(t),
+// o = !r && Array.isArray(t),
+// a = r ? t : o ? E.observableArray(t) : E.observable(t);
+// return i[e] = function() {
+// return a
+// }, (o || r && "push" in a) && f(E, a), {
+// configurable: !0,
+// enumerable: !0,
+// get: a,
+// set: E.isWriteableObservable(a) ? a : n
+// }
+// }
+// function l(t, e, i) {
+// function n(t, e) {
+// return r ? e ? r(t) : r : Array.isArray(t) ? (r = E.observableArray(t), f(E, r), r) : r = E.observable(t)
+// }
+// if (E.isObservable(t)) return s(t, e, i);
+// var r;
+// return i[e] = function() {
+// return n(t)
+// }, {
+// configurable: !0,
+// enumerable: !0,
+// get: function() {
+// return n(t)()
+// },
+// set: function(t) {
+// n(t, !0)
+// }
+// }
+// }
+// function u(t, e, i) {
+// if (e.length) {
+// var n = h(t, !0),
+// r = {};
+// e.forEach(function(e) {
+// if (!(e in n) && Object.getOwnPropertyDescriptor(t, e).configurable !== !1) {
+// var o = t[e];
+// r[e] = (i.lazy ? l : s)(o, e, n), i.deep && a(o) && u(o, Object.keys(o), i)
+// }
+// }), Object.defineProperties(t, r)
+// }
+// }
+// function c(t) {
+// return !!t && "object" == typeof t && t.constructor === Object
+// }
+// function h(t, e) {
+// k || (k = P());
+// var i = k.get(t);
+// return !i && e && (i = {}, k.set(t, i)), i
+// }
+// function d(t, e) {
+// if (k) if (1 === arguments.length) k["delete"](t);
+// else {
+// var i = h(t, !1);
+// i && e.forEach(function(t) {
+// delete i[t]
+// })
+// }
+// }
+// function p(t, e, i) {
+// var n = this,
+// o = {
+// owner: t,
+// deferEvaluation: !0
+// };
+// if ("function" == typeof i) o.read = i;
+// else {
+// if ("value" in i) throw new Error('For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.');
+// if ("function" != typeof i.get) throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, or an options object containing a function called "get".');
+// o.read = i.get, o.write = i.set
+// }
+// return t[e] = n.computed(o), r.call(n, t, [e]), t
+// }
+// function f(t, e) {
+// var i = null;
+// t.computed(function() {
+// i && (i.dispose(), i = null);
+// var n = e();
+// n instanceof Array && (i = m(t, e, n))
+// })
+// }
+// function m(t, e, i) {
+// var n = g(t, i);
+// return n.subscribe(e)
+// }
+// function g(t, e) {
+// L || (L = P());
+// var i = L.get(e);
+// if (!i) {
+// i = new t.subscribable, L.set(e, i);
+// var n = {};
+// v(e, i, n), _(t, e, i, n)
+// }
+// return i
+// }
+// function v(t, e, i) {
+// ["pop", "push", "reverse", "shift", "sort", "splice", "unshift"].forEach(function(n) {
+// var r = t[n];
+// t[n] = function() {
+// var t = r.apply(this, arguments);
+// return i.pause !== !0 && e.notifySubscribers(this), t
+// }
+// })
+// }
+// function _(t, e, i, n) {
+// ["remove", "removeAll", "destroy", "destroyAll", "replace"].forEach(function(r) {
+// Object.defineProperty(e, r, {
+// enumerable: !1,
+// value: function() {
+// var o;
+// n.pause = !0;
+// try {
+// o = t.observableArray.fn[r].apply(t.observableArray(e), arguments)
+// } finally {
+// n.pause = !1
+// }
+// return i.notifySubscribers(e), o
+// }
+// })
+// })
+// }
+// function y(t, e) {
+// if (!t || "object" != typeof t) return null;
+// var i = h(t, !1);
+// return i && e in i ? i[e]() : null
+// }
+// function b(t, e) {
+// if (!t || "object" != typeof t) return !1;
+// var i = h(t, !1);
+// return !!i && e in i
+// }
+// function w(t, e) {
+// var i = y(t, e);
+// i && i.valueHasMutated()
+// }
+// function C(t) {
+// t.track = r, t.untrack = d, t.getObservable = y, t.valueHasMutated = w, t.defineProperty = p, t.es5 = {
+// getAllObservablesForObject: h,
+// notifyWhenPresentOrFutureArrayValuesMutate: f,
+// isTracked: b
+// }
+// }
+// function x() {
+// if ("object" == typeof exports && "object" == typeof module) {
+// E = e("knockout");
+// var n = e("../lib/weakmap");
+// C(E), P = function() {
+// return new n
+// }, module.exports = E
+// } else "function" == typeof i && i.amd ? i("KnockoutES5", ["knockout"], function(e) {
+// return E = e, C(e), P = function() {
+// return new t.WeakMap
+// }, e
+// }) : "ko" in t && (E = t.ko, C(t.ko), P = function() {
+// return new t.WeakMap
+// })
+// }
+// var E, k, L, P, D = /^function\s*([^\s(]+)/;
+// x()
+// }(this), void
+// function(t, e, i) {
+// function n(t, e, i) {
+// return "function" == typeof e && (i = e, e = r(i).replace(/_$/, "")), u(t, e, {
+// configurable: !0,
+// writable: !0,
+// value: i
+// })
+// }
+// function r(t) {
+// return "function" != typeof t ? "" : "_name" in t ? t._name : "name" in t ? t.name : c.call(t).match(p)[1]
+// }
+// function o(t, e) {
+// return e._name = t, e
+// }
+// function a(t) {
+// function e(e, r) {
+// return r || 2 === arguments.length ? n.set(e, r) : (r = n.get(e), r === i && (r = t(e), n.set(e, r))), r
+// }
+// var n = new m;
+// return t || (t = g), e
+// }
+// var s = Object.getOwnPropertyNames,
+// l = "object" == typeof window ? Object.getOwnPropertyNames(window) : [],
+// u = Object.defineProperty,
+// c = Function.prototype.toString,
+// h = Object.create,
+// d = Object.prototype.hasOwnProperty,
+// p = /^\n?function\s?(\w*)?_?\(/,
+// f = function() {
+// function t() {
+// var t = a(),
+// i = {};
+// this.unlock = function(n) {
+// var r = p(n);
+// if (d.call(r, t)) return r[t](i);
+// var o = h(null, e);
+// return u(r, t, {
+// value: function(t) {
+// return t === i ? o : void 0
+// }
+// }), o
+// }
+// }
+// var e = {
+// value: {
+// writable: !0,
+// value: i
+// }
+// },
+// r = h(null),
+// a = function() {
+// var t = Math.random().toString(36).slice(2);
+// return t in r ? a() : r[t] = t
+// },
+// c = a(),
+// p = function(t) {
+// if (d.call(t, c)) return t[c];
+// if (!Object.isExtensible(t)) throw new TypeError("Object must be extensible");
+// var e = h(null);
+// return u(t, c, {
+// value: e
+// }), e
+// };
+// return n(Object, o("getOwnPropertyNames", function(t) {
+// var e, i = Object(t);
+// if (i !== Window.prototype && "toString" in i && "[object Window]" === i.toString()) try {
+// e = s(t)
+// } catch (n) {
+// e = l
+// } else e = s(t);
+// return d.call(t, c) && e.splice(e.indexOf(c), 1), e
+// })), n(t.prototype, o("get", function(t) {
+// return this.unlock(t).value
+// })), n(t.prototype, o("set", function(t, e) {
+// this.unlock(t).value = e
+// })), t
+// }(),
+// m = function(a) {
+// function s(e) {
+// return this === t || null == this || this === s.prototype ? new s(e) : (m(this, new f), void v(this, e))
+// }
+// function l(t) {
+// p(t);
+// var n = g(this).get(t);
+// return n === e ? i : n
+// }
+// function u(t, n) {
+// p(t), g(this).set(t, n === i ? e : n)
+// }
+// function c(t) {
+// return p(t), g(this).get(t) !== i
+// }
+// function h(t) {
+// p(t);
+// var e = g(this),
+// n = e.get(t) !== i;
+// return e.set(t, i), n
+// }
+// function d() {
+// return g(this), "[object WeakMap]"
+// }
+// var p = function(t) {
+// if (null == t || "object" != typeof t && "function" != typeof t) throw new TypeError("Invalid WeakMap key")
+// },
+// m = function(t, e) {
+// var i = a.unlock(t);
+// if (i.value) throw new TypeError("Object is already a WeakMap");
+// i.value = e
+// },
+// g = function(t) {
+// var e = a.unlock(t).value;
+// if (!e) throw new TypeError("WeakMap is not generic");
+// return e
+// },
+// v = function(t, e) {
+// null !== e && "object" == typeof e && "function" == typeof e.forEach && e.forEach(function(i, n) {
+// i instanceof Array && 2 === i.length && u.call(t, e[n][0], e[n][1])
+// })
+// };
+// l._name = "get", u._name = "set", c._name = "has", d._name = "toString";
+// var _ = ("" + Object).split("Object"),
+// y = o("toString", function() {
+// return _[0] + r(this) + _[1]
+// });
+// n(y, y);
+// var b = {
+// __proto__: []
+// }
+// instanceof Array ?
+// function(t) {
+// t.__proto__ = y
+// } : function(t) {
+// n(t, y)
+// };
+// return b(s), [d, l, u, c, h].forEach(function(t) {
+// n(s.prototype, t), b(t)
+// }), s
+// }(new f),
+// g = Object.create ?
+// function() {
+// return Object.create(null)
+// } : function() {
+// return {}
+// };
+// "undefined" != typeof module ? module.exports = m : "undefined" != typeof exports ? exports.WeakMap = m : "WeakMap" in t || (t.WeakMap = m), m.createStorage = a, t.WeakMap && (t.WeakMap.createStorage = a)
+// }(function() {
+// return this
+// }()), !
+// function(t) {
+// if ("object" == typeof exports && "undefined" != typeof module) module.exports = t();
+// else if ("function" == typeof i && i.amd) i("markdown-it-sanitizer", [], t);
+// else {
+// var e;
+// e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this, e.markdownitSanitizer = t()
+// }
+// }(function() {
+// return function t(i, n, r) {
+// function o(s, l) {
+// if (!n[s]) {
+// if (!i[s]) {
+// var u = "function" == typeof e && e;
+// if (!l && u) return u(s, !0);
+// if (a) return a(s, !0);
+// var c = new Error("Cannot find module '" + s + "'");
+// throw c.code = "MODULE_NOT_FOUND", c
+// }
+// var h = n[s] = {
+// exports: {}
+// };
+// i[s][0].call(h.exports, function(t) {
+// var e = i[s][1][t];
+// return o(e ? e : t)
+// }, h, h.exports, t, i, n, r)
+// }
+// return n[s].exports
+// }
+// for (var a = "function" == typeof e && e, s = 0; s < r.length; s++) o(r[s]);
+// return o
+// }({
+// 1: [function(t, e, i) {
+// "use strict";
+// e.exports = function(t, e) {
+// function i(t) {
+// var e = a.match(t);
+// return e && 1 === e.length && 0 === e[0].index && e[0].lastIndex === t.length ? e[0].url : null
+// }
+// function n(t) {
+// var e = '<a\\shref="([^"<>]*)"(?:\\stitle="([^"<>]*)")?>',
+// n = RegExp(e, "i"),
+// r = '<img\\s([^<>]*src="[^"<>]*"[^<>]*)\\s?\\/?>',
+// o = RegExp(r, "i");
+// return t = t.replace(/<[^<>]*>?/gi, function(t) {
+// var e, r, a, l, c;
+// if (/(^<->|^<-\s|^<3\s)/.test(t)) return t;
+// if (e = t.match(o)) {
+// var g = e[1];
+// if (r = i(g.match(/src="([^"<>]*)"/i)[1]), a = g.match(/alt="([^"<>]*)"/i), a = a && "undefined" != typeof a[1] ? a[1] : "", l = g.match(/title="([^"<>]*)"/i), l = l && "undefined" != typeof l[1] ? l[1] : "", r && /^https?:\/\//i.test(r)) return "" !== h ? '<img src="' + r + '" alt="' + a + '" title="' + l + '" class="' + h + '">' : '<img src="' + r + '" alt="' + a + '" title="' + l + '">'
+// }
+// return c = p.indexOf("a"), e = t.match(n), e && (l = "undefined" != typeof e[2] ? e[2] : "", r = i(e[1]), r && /^(?:https?:\/\/|ftp:\/\/|mailto:|xmpp:)/i.test(r)) ? (d = !0, f[c] += 1, '<a href="' + r + '" title="' + l + '" target="_blank">') : (e = /<\/a>/i.test(t)) ? (d = !0, f[c] -= 1, f[c] < 0 && (m[c] = !0), "</a>") : (e = t.match(/<(br|hr)\s?\/?>/i)) ? "<" + e[1].toLowerCase() + ">" : (e = t.match(/<(\/?)(b|blockquote|code|em|h[1-6]|li|ol(?: start="\d+")?|p|pre|s|sub|sup|strong|ul)>/i), e && !/<\/ol start="\d+"/i.test(t) ? (d = !0, c = p.indexOf(e[2].toLowerCase().split(" ")[0]), "/" === e[1] ? f[c] -= 1 : f[c] += 1, f[c] < 0 && (m[c] = !0), "<" + e[1] + e[2].toLowerCase() + ">") : u === !0 ? "" : s(t))
+// })
+// }
+// function r(t) {
+// var e, i, r;
+// for (l = 0; l < p.length; l++) f[l] = 0;
+// for (l = 0; l < p.length; l++) m[l] = !1;
+// for (d = !1, i = 0; i < t.tokens.length; i++) if ("html_block" === t.tokens[i].type && (t.tokens[i].content = n(t.tokens[i].content)), "inline" === t.tokens[i].type) for (r = t.tokens[i].children, e = 0; e < r.length; e++)"html_inline" === r[e].type && (r[e].content = n(r[e].content))
+// }
+// function o(t) {
+// function e(t, e) {
+// var i, n;
+// return i = "a" === e ? RegExp('<a href="[^"<>]*" title="[^"<>]*" target="_blank">', "g") : "ol" === e ? /<ol(?: start="\d+")?>/g : RegExp("<" + e + ">", "g"), n = RegExp("</" + e + ">", "g"), c === !0 ? (t = t.replace(i, ""), t = t.replace(n, "")) : (t = t.replace(i, function(t) {
+// return s(t)
+// }), t = t.replace(n, function(t) {
+// return s(t)
+// })), t
+// }
+// function i(t) {
+// var i;
+// for (i = 0; i < p.length; i++) m[i] === !0 && (t = e(t, p[i]));
+// return t
+// }
+// if (d !== !1) {
+// var n, r;
+// for (l = 0; l < p.length; l++) 0 !== f[l] && (m[l] = !0);
+// for (n = 0; n < t.tokens.length; n++) if ("html_block" !== t.tokens[n].type) {
+// if ("inline" === t.tokens[n].type) for (r = t.tokens[n].children, l = 0; l < r.length; l++)"html_inline" === r[l].type && (r[l].content = i(r[l].content))
+// } else t.tokens[n].content = i(t.tokens[n].content)
+// }
+// }
+// var a = t.linkify,
+// s = t.utils.escapeHtml;
+// e = e ? e : {};
+// var l, u = "undefined" != typeof e.removeUnknown && e.removeUnknown,
+// c = "undefined" != typeof e.removeUnbalanced && e.removeUnbalanced,
+// h = "undefined" != typeof e.imageClass ? e.imageClass : "",
+// d = !1,
+// p = ["a", "b", "blockquote", "code", "em", "h1", "h2", "h3", "h4", "h5", "h6", "li", "ol", "p", "pre", "s", "sub", "sup", "strong", "ul"],
+// f = new Array(p.length),
+// m = new Array(p.length);
+// for (l = 0; l < p.length; l++) f[l] = 0;
+// for (l = 0; l < p.length; l++) m[l] = !1;
+// t.core.ruler.after("linkify", "sanitize_inline", r), t.core.ruler.after("sanitize_inline", "sanitize_balance", o)
+// }
+// }, {}]
+// }, {}, [1])(1)
+// }), !
+// function(t) {
+// if ("object" == typeof exports && "undefined" != typeof module) module.exports = t();
+// else if ("function" == typeof i && i.amd) i("markdown-it", [], t);
+// else {
+// var e;
+// e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this, e.markdownit = t()
+// }
+// }(function() {
+// var t;
+// return function i(t, n, r) {
+// function o(s, l) {
+// if (!n[s]) {
+// if (!t[s]) {
+// var u = "function" == typeof e && e;
+// if (!l && u) return u(s, !0);
+// if (a) return a(s, !0);
+// var c = new Error("Cannot find module '" + s + "'");
+// throw c.code = "MODULE_NOT_FOUND", c
+// }
+// var h = n[s] = {
+// exports: {}
+// };
+// t[s][0].call(h.exports, function(e) {
+// var i = t[s][1][e];
+// return o(i ? i : e)
+// }, h, h.exports, i, t, n, r)
+// }
+// return n[s].exports
+// }
+// for (var a = "function" == typeof e && e, s = 0; s < r.length; s++) o(r[s]);
+// return o
+// }({
+// 1: [function(t, e, i) {
+// "use strict";
+// e.exports = t("entities/maps/entities.json")
+// }, {
+// "entities/maps/entities.json": 53
+// }],
+// 2: [function(t, e, i) {
+// "use strict";
+// e.exports = ["address", "article", "aside", "base", "basefont", "blockquote", "body", "caption", "center", "col", "colgroup", "dd", "details", "dialog", "dir", "div", "dl", "dt", "fieldset", "figcaption", "figure", "footer", "form", "frame", "frameset", "h1", "head", "header", "hr", "html", "iframe", "legend", "li", "link", "main", "menu", "menuitem", "meta", "nav", "noframes", "ol", "optgroup", "option", "p", "param", "pre", "section", "source", "title", "summary", "table", "tbody", "td", "tfoot", "th", "thead", "title", "tr", "track", "ul"]
+// }, {}],
+// 3: [function(t, e, i) {
+// "use strict";
+// var n = "[a-zA-Z_:][a-zA-Z0-9:._-]*",
+// r = "[^\"'=<>`\\x00-\\x20]+",
+// o = "'[^']*'",
+// a = '"[^"]*"',
+// s = "(?:" + r + "|" + o + "|" + a + ")",
+// l = "(?:\\s+" + n + "(?:\\s*=\\s*" + s + ")?)",
+// u = "<[A-Za-z][A-Za-z0-9\\-]*" + l + "*\\s*\\/?>",
+// c = "<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",
+// h = "<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->",
+// d = "<[?].*?[?]>",
+// p = "<![A-Z]+\\s+[^>]*>",
+// f = "<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",
+// m = new RegExp("^(?:" + u + "|" + c + "|" + h + "|" + d + "|" + p + "|" + f + ")"),
+// g = new RegExp("^(?:" + u + "|" + c + ")");
+// e.exports.HTML_TAG_RE = m, e.exports.HTML_OPEN_CLOSE_TAG_RE = g
+// }, {}],
+// 4: [function(t, e, i) {
+// "use strict";
+
+// function n(t) {
+// return Object.prototype.toString.call(t)
+// }
+// function r(t) {
+// return "[object String]" === n(t)
+// }
+// function o(t, e) {
+// return w.call(t, e)
+// }
+// function a(t) {
+// var e = Array.prototype.slice.call(arguments, 1);
+// return e.forEach(function(e) {
+// if (e) {
+// if ("object" != typeof e) throw new TypeError(e + "must be object");
+// Object.keys(e).forEach(function(i) {
+// t[i] = e[i]
+// })
+// }
+// }), t
+// }
+// function s(t, e, i) {
+// return [].concat(t.slice(0, e), i, t.slice(e + 1))
+// }
+// function l(t) {
+// return !(t >= 55296 && t <= 57343 || t >= 64976 && t <= 65007 || 65535 === (65535 & t) || 65534 === (65535 & t) || t >= 0 && t <= 8 || 11 === t || t >= 14 && t <= 31 || t >= 127 && t <= 159 || t > 1114111)
+// }
+// function u(t) {
+// if (t > 65535) {
+// t -= 65536;
+// var e = 55296 + (t >> 10),
+// i = 56320 + (1023 & t);
+// return String.fromCharCode(e, i)
+// }
+// return String.fromCharCode(t)
+// }
+// function c(t, e) {
+// var i = 0;
+// return o(L, e) ? L[e] : 35 === e.charCodeAt(0) && k.test(e) && (i = "x" === e[1].toLowerCase() ? parseInt(e.slice(2), 16) : parseInt(e.slice(1), 10), l(i)) ? u(i) : t
+// }
+// function h(t) {
+// return t.indexOf("\\") < 0 ? t : t.replace(C, "$1")
+// }
+// function d(t) {
+// return t.indexOf("\\") < 0 && t.indexOf("&") < 0 ? t : t.replace(E, function(t, e, i) {
+// return e ? e : c(t, i)
+// })
+// }
+// function p(t) {
+// return T[t]
+// }
+// function f(t) {
+// return P.test(t) ? t.replace(D, p) : t
+// }
+// function m(t) {
+// return t.replace(S, "\\$&")
+// }
+// function g(t) {
+// switch (t) {
+// case 9:
+// case 32:
+// return !0
+// }
+// return !1
+// }
+// function v(t) {
+// if (t >= 8192 && t <= 8202) return !0;
+// switch (t) {
+// case 9:
+// case 10:
+// case 11:
+// case 12:
+// case 13:
+// case 32:
+// case 160:
+// case 5760:
+// case 8239:
+// case 8287:
+// case 12288:
+// return !0
+// }
+// return !1
+// }
+// function _(t) {
+// return M.test(t)
+// }
+// function y(t) {
+// switch (t) {
+// case 33:
+// case 34:
+// case 35:
+// case 36:
+// case 37:
+// case 38:
+// case 39:
+// case 40:
+// case 41:
+// case 42:
+// case 43:
+// case 44:
+// case 45:
+// case 46:
+// case 47:
+// case 58:
+// case 59:
+// case 60:
+// case 61:
+// case 62:
+// case 63:
+// case 64:
+// case 91:
+// case 92:
+// case 93:
+// case 94:
+// case 95:
+// case 96:
+// case 123:
+// case 124:
+// case 125:
+// case 126:
+// return !0;
+// default:
+// return !1
+// }
+// }
+// function b(t) {
+// return t.trim().replace(/\s+/g, " ").toUpperCase()
+// }
+// var w = Object.prototype.hasOwnProperty,
+// C = /\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,
+// x = /&([a-z#][a-z0-9]{1,31});/gi,
+// E = new RegExp(C.source + "|" + x.source, "gi"),
+// k = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,
+// L = t("./entities"),
+// P = /[&<>"]/,
+// D = /[&<>"]/g,
+// T = {
+// "&": "&",
+// "<": "<",
+// ">": ">",
+// '"': """
+// },
+// S = /[.?*+^$[\]\\(){}|-]/g,
+// M = t("uc.micro/categories/P/regex");
+// i.lib = {}, i.lib.mdurl = t("mdurl"), i.lib.ucmicro = t("uc.micro"), i.assign = a, i.isString = r, i.has = o, i.unescapeMd = h, i.unescapeAll = d, i.isValidEntityCode = l, i.fromCodePoint = u, i.escapeHtml = f, i.arrayReplaceAt = s, i.isSpace = g, i.isWhiteSpace = v, i.isMdAsciiPunct = y, i.isPunctChar = _, i.escapeRE = m, i.normalizeReference = b
+// }, {
+// "./entities": 1,
+// mdurl: 59,
+// "uc.micro": 65,
+// "uc.micro/categories/P/regex": 63
+// }],
+// 5: [function(t, e, i) {
+// "use strict";
+// i.parseLinkLabel = t("./parse_link_label"), i.parseLinkDestination = t("./parse_link_destination"), i.parseLinkTitle = t("./parse_link_title")
+// }, {
+// "./parse_link_destination": 6,
+// "./parse_link_label": 7,
+// "./parse_link_title": 8
+// }],
+// 6: [function(t, e, i) {
+// "use strict";
+// var n = t("../common/utils").isSpace,
+// r = t("../common/utils").unescapeAll;
+// e.exports = function(t, e, i) {
+// var o, a, s = 0,
+// l = e,
+// u = {
+// ok: !1,
+// pos: 0,
+// lines: 0,
+// str: ""
+// };
+// if (60 === t.charCodeAt(e)) {
+// for (e++; e < i;) {
+// if (o = t.charCodeAt(e), 10 === o || n(o)) return u;
+// if (62 === o) return u.pos = e + 1, u.str = r(t.slice(l + 1, e)), u.ok = !0, u;
+// 92 === o && e + 1 < i ? e += 2 : e++
+// }
+// return u
+// }
+// for (a = 0; e < i && (o = t.charCodeAt(e), 32 !== o) && !(o < 32 || 127 === o);) if (92 === o && e + 1 < i) e += 2;
+// else {
+// if (40 === o && (a++, a > 1)) break;
+// if (41 === o && (a--, a < 0)) break;
+// e++
+// }
+// return l === e ? u : (u.str = r(t.slice(l, e)), u.lines = s, u.pos = e, u.ok = !0, u)
+// }
+// }, {
+// "../common/utils": 4
+// }],
+// 7: [function(t, e, i) {
+// "use strict";
+// e.exports = function(t, e, i) {
+// var n, r, o, a, s = -1,
+// l = t.posMax,
+// u = t.pos;
+// for (t.pos = e + 1, n = 1; t.pos < l;) {
+// if (o = t.src.charCodeAt(t.pos), 93 === o && (n--, 0 === n)) {
+// r = !0;
+// break
+// }
+// if (a = t.pos, t.md.inline.skipToken(t), 91 === o) if (a === t.pos - 1) n++;
+// else if (i) return t.pos = u, -1
+// }
+// return r && (s = t.pos), t.pos = u, s
+// }
+// }, {}],
+// 8: [function(t, e, i) {
+// "use strict";
+// var n = t("../common/utils").unescapeAll;
+// e.exports = function(t, e, i) {
+// var r, o, a = 0,
+// s = e,
+// l = {
+// ok: !1,
+// pos: 0,
+// lines: 0,
+// str: ""
+// };
+// if (e >= i) return l;
+// if (o = t.charCodeAt(e), 34 !== o && 39 !== o && 40 !== o) return l;
+// for (e++, 40 === o && (o = 41); e < i;) {
+// if (r = t.charCodeAt(e), r === o) return l.pos = e + 1, l.lines = a, l.str = n(t.slice(s + 1, e)), l.ok = !0, l;
+// 10 === r ? a++ : 92 === r && e + 1 < i && (e++, 10 === t.charCodeAt(e) && a++), e++
+// }
+// return l
+// }
+// }, {
+// "../common/utils": 4
+// }],
+// 9: [function(t, e, i) {
+// "use strict";
+
+// function n(t) {
+// var e = t.trim().toLowerCase();
+// return !v.test(e) || !! _.test(e)
+// }
+// function r(t) {
+// var e = f.parse(t, !0);
+// if (e.hostname && (!e.protocol || y.indexOf(e.protocol) >= 0)) try {
+// e.hostname = m.toASCII(e.hostname)
+// } catch (i) {}
+// return f.encode(f.format(e))
+// }
+// function o(t) {
+// var e = f.parse(t, !0);
+// if (e.hostname && (!e.protocol || y.indexOf(e.protocol) >= 0)) try {
+// e.hostname = m.toUnicode(e.hostname)
+// } catch (i) {}
+// return f.decode(f.format(e))
+// }
+// function a(t, e) {
+// return this instanceof a ? (e || s.isString(t) || (e = t || {}, t = "default"), this.inline = new d, this.block = new h, this.core = new c, this.renderer = new u, this.linkify = new p, this.validateLink = n, this.normalizeLink = r, this.normalizeLinkText = o, this.utils = s, this.helpers = l, this.options = {}, this.configure(t), void(e && this.set(e))) : new a(t, e)
+// }
+// var s = t("./common/utils"),
+// l = t("./helpers"),
+// u = t("./renderer"),
+// c = t("./parser_core"),
+// h = t("./parser_block"),
+// d = t("./parser_inline"),
+// p = t("linkify-it"),
+// f = t("mdurl"),
+// m = t("punycode"),
+// g = {
+// "default": t("./presets/default"),
+// zero: t("./presets/zero"),
+// commonmark: t("./presets/commonmark")
+// },
+// v = /^(vbscript|javascript|file|data):/,
+// _ = /^data:image\/(gif|png|jpeg|webp);/,
+// y = ["http:", "https:", "mailto:"];
+// a.prototype.set = function(t) {
+// return s.assign(this.options, t), this
+// }, a.prototype.configure = function(t) {
+// var e, i = this;
+// if (s.isString(t) && (e = t, t = g[e], !t)) throw new Error('Wrong `markdown-it` preset "' + e + '", check name');
+// if (!t) throw new Error("Wrong `markdown-it` preset, can't be empty");
+// return t.options && i.set(t.options), t.components && Object.keys(t.components).forEach(function(e) {
+// t.components[e].rules && i[e].ruler.enableOnly(t.components[e].rules), t.components[e].rules2 && i[e].ruler2.enableOnly(t.components[e].rules2)
+// }), this
+// }, a.prototype.enable = function(t, e) {
+// var i = [];
+// Array.isArray(t) || (t = [t]), ["core", "block", "inline"].forEach(function(e) {
+// i = i.concat(this[e].ruler.enable(t, !0))
+// }, this), i = i.concat(this.inline.ruler2.enable(t, !0));
+// var n = t.filter(function(t) {
+// return i.indexOf(t) < 0
+// });
+// if (n.length && !e) throw new Error("MarkdownIt. Failed to enable unknown rule(s): " + n);
+// return this
+// }, a.prototype.disable = function(t, e) {
+// var i = [];
+// Array.isArray(t) || (t = [t]), ["core", "block", "inline"].forEach(function(e) {
+// i = i.concat(this[e].ruler.disable(t, !0))
+// }, this), i = i.concat(this.inline.ruler2.disable(t, !0));
+// var n = t.filter(function(t) {
+// return i.indexOf(t) < 0
+// });
+// if (n.length && !e) throw new Error("MarkdownIt. Failed to disable unknown rule(s): " + n);
+// return this
+// }, a.prototype.use = function(t) {
+// var e = [this].concat(Array.prototype.slice.call(arguments, 1));
+// return t.apply(t, e), this
+// }, a.prototype.parse = function(t, e) {
+// var i = new this.core.State(t, this, e);
+// return this.core.process(i), i.tokens
+// }, a.prototype.render = function(t, e) {
+// return e = e || {}, this.renderer.render(this.parse(t, e), this.options, e)
+// }, a.prototype.parseInline = function(t, e) {
+// var i = new this.core.State(t, this, e);
+// return i.inlineMode = !0, this.core.process(i), i.tokens
+// }, a.prototype.renderInline = function(t, e) {
+// return e = e || {}, this.renderer.render(this.parseInline(t, e), this.options, e)
+// }, e.exports = a
+// }, {
+// "./common/utils": 4,
+// "./helpers": 5,
+// "./parser_block": 10,
+// "./parser_core": 11,
+// "./parser_inline": 12,
+// "./presets/commonmark": 13,
+// "./presets/default": 14,
+// "./presets/zero": 15,
+// "./renderer": 16,
+// "linkify-it": 54,
+// mdurl: 59,
+// punycode: 52
+// }],
+// 10: [function(t, e, i) {
+// "use strict";
+
+// function n() {
+// this.ruler = new r;
+// for (var t = 0; t < o.length; t++) this.ruler.push(o[t][0], o[t][1], {
+// alt: (o[t][2] || []).slice()
+// })
+// }
+// var r = t("./ruler"),
+// o = [
+// ["table", t("./rules_block/table"), ["paragraph", "reference"]],
+// ["code", t("./rules_block/code")],
+// ["fence", t("./rules_block/fence"), ["paragraph", "reference", "blockquote", "list"]],
+// ["blockquote", t("./rules_block/blockquote"), ["paragraph", "reference", "list"]],
+// ["hr", t("./rules_block/hr"), ["paragraph", "reference", "blockquote", "list"]],
+// ["list", t("./rules_block/list"), ["paragraph", "reference", "blockquote"]],
+// ["reference", t("./rules_block/reference")],
+// ["heading", t("./rules_block/heading"), ["paragraph", "reference", "blockquote"]],
+// ["lheading", t("./rules_block/lheading")],
+// ["html_block", t("./rules_block/html_block"), ["paragraph", "reference", "blockquote"]],
+// ["paragraph", t("./rules_block/paragraph")]
+// ];
+// n.prototype.tokenize = function(t, e, i) {
+// for (var n, r, o = this.ruler.getRules(""), a = o.length, s = e, l = !1, u = t.md.options.maxNesting; s < i && (t.line = s = t.skipEmptyLines(s), !(s >= i)) && !(t.sCount[s] < t.blkIndent);) {
+// if (t.level >= u) {
+// t.line = i;
+// break
+// }
+// for (r = 0; r < a && !(n = o[r](t, s, i, !1)); r++);
+// if (t.tight = !l, t.isEmpty(t.line - 1) && (l = !0), s = t.line, s < i && t.isEmpty(s)) {
+// if (l = !0, s++, s < i && "list" === t.parentType && t.isEmpty(s)) break;
+// t.line = s
+// }
+// }
+// }, n.prototype.parse = function(t, e, i, n) {
+// var r;
+// t && (r = new this.State(t, e, i, n), this.tokenize(r, r.line, r.lineMax))
+// }, n.prototype.State = t("./rules_block/state_block"), e.exports = n
+// }, {
+// "./ruler": 17,
+// "./rules_block/blockquote": 18,
+// "./rules_block/code": 19,
+// "./rules_block/fence": 20,
+// "./rules_block/heading": 21,
+// "./rules_block/hr": 22,
+// "./rules_block/html_block": 23,
+// "./rules_block/lheading": 24,
+// "./rules_block/list": 25,
+// "./rules_block/paragraph": 26,
+// "./rules_block/reference": 27,
+// "./rules_block/state_block": 28,
+// "./rules_block/table": 29
+// }],
+// 11: [function(t, e, i) {
+// "use strict";
+
+// function n() {
+// this.ruler = new r;
+// for (var t = 0; t < o.length; t++) this.ruler.push(o[t][0], o[t][1])
+// }
+// var r = t("./ruler"),
+// o = [
+// ["normalize", t("./rules_core/normalize")],
+// ["block", t("./rules_core/block")],
+// ["inline", t("./rules_core/inline")],
+// ["linkify", t("./rules_core/linkify")],
+// ["replacements", t("./rules_core/replacements")],
+// ["smartquotes", t("./rules_core/smartquotes")]
+// ];
+// n.prototype.process = function(t) {
+// var e, i, n;
+// for (n = this.ruler.getRules(""), e = 0, i = n.length; e < i; e++) n[e](t)
+// }, n.prototype.State = t("./rules_core/state_core"), e.exports = n
+// }, {
+// "./ruler": 17,
+// "./rules_core/block": 30,
+// "./rules_core/inline": 31,
+// "./rules_core/linkify": 32,
+// "./rules_core/normalize": 33,
+// "./rules_core/replacements": 34,
+// "./rules_core/smartquotes": 35,
+// "./rules_core/state_core": 36
+// }],
+// 12: [function(t, e, i) {
+// "use strict";
+
+// function n() {
+// var t;
+// for (this.ruler = new r, t = 0; t < o.length; t++) this.ruler.push(o[t][0], o[t][1]);
+// for (this.ruler2 = new r, t = 0; t < a.length; t++) this.ruler2.push(a[t][0], a[t][1])
+// }
+// var r = t("./ruler"),
+// o = [
+// ["text", t("./rules_inline/text")],
+// ["newline", t("./rules_inline/newline")],
+// ["escape", t("./rules_inline/escape")],
+// ["backticks", t("./rules_inline/backticks")],
+// ["strikethrough", t("./rules_inline/strikethrough").tokenize],
+// ["emphasis", t("./rules_inline/emphasis").tokenize],
+// ["link", t("./rules_inline/link")],
+// ["image", t("./rules_inline/image")],
+// ["autolink", t("./rules_inline/autolink")],
+// ["html_inline", t("./rules_inline/html_inline")],
+// ["entity", t("./rules_inline/entity")]
+// ],
+// a = [
+// ["balance_pairs", t("./rules_inline/balance_pairs")],
+// ["strikethrough", t("./rules_inline/strikethrough").postProcess],
+// ["emphasis", t("./rules_inline/emphasis").postProcess],
+// ["text_collapse", t("./rules_inline/text_collapse")]
+// ];
+// n.prototype.skipToken = function(t) {
+// var e, i, n = t.pos,
+// r = this.ruler.getRules(""),
+// o = r.length,
+// a = t.md.options.maxNesting,
+// s = t.cache;
+// if ("undefined" != typeof s[n]) return void(t.pos = s[n]);
+// if (t.level < a) for (i = 0; i < o && (t.level++, e = r[i](t, !0), t.level--, !e); i++);
+// else t.pos = t.posMax;
+// e || t.pos++, s[n] = t.pos
+// }, n.prototype.tokenize = function(t) {
+// for (var e, i, n = this.ruler.getRules(""), r = n.length, o = t.posMax, a = t.md.options.maxNesting; t.pos < o;) {
+// if (t.level < a) for (i = 0; i < r && !(e = n[i](t, !1)); i++);
+// if (e) {
+// if (t.pos >= o) break
+// } else t.pending += t.src[t.pos++]
+// }
+// t.pending && t.pushPending()
+// }, n.prototype.parse = function(t, e, i, n) {
+// var r, o, a, s = new this.State(t, e, i, n);
+// for (this.tokenize(s), o = this.ruler2.getRules(""), a = o.length, r = 0; r < a; r++) o[r](s)
+// }, n.prototype.State = t("./rules_inline/state_inline"), e.exports = n
+// }, {
+// "./ruler": 17,
+// "./rules_inline/autolink": 37,
+// "./rules_inline/backticks": 38,
+// "./rules_inline/balance_pairs": 39,
+// "./rules_inline/emphasis": 40,
+// "./rules_inline/entity": 41,
+// "./rules_inline/escape": 42,
+// "./rules_inline/html_inline": 43,
+// "./rules_inline/image": 44,
+// "./rules_inline/link": 45,
+// "./rules_inline/newline": 46,
+// "./rules_inline/state_inline": 47,
+// "./rules_inline/strikethrough": 48,
+// "./rules_inline/text": 49,
+// "./rules_inline/text_collapse": 50
+// }],
+// 13: [function(t, e, i) {
+// "use strict";
+// e.exports = {
+// options: {
+// html: !0,
+// xhtmlOut: !0,
+// breaks: !1,
+// langPrefix: "language-",
+// linkify: !1,
+// typographer: !1,
+// quotes: "“”‘’",
+// highlight: null,
+// maxNesting: 20
+// },
+// components: {
+// core: {
+// rules: ["normalize", "block", "inline"]
+// },
+// block: {
+// rules: ["blockquote", "code", "fence", "heading", "hr", "html_block", "lheading", "list", "reference", "paragraph"]
+// },
+// inline: {
+// rules: ["autolink", "backticks", "emphasis", "entity", "escape", "html_inline", "image", "link", "newline", "text"],
+// rules2: ["balance_pairs", "emphasis", "text_collapse"]
+// }
+// }
+// }
+// }, {}],
+// 14: [function(t, e, i) {
+// "use strict";
+// e.exports = {
+// options: {
+// html: !1,
+// xhtmlOut: !1,
+// breaks: !1,
+// langPrefix: "language-",
+// linkify: !1,
+// typographer: !1,
+// quotes: "“”‘’",
+// highlight: null,
+// maxNesting: 100
+// },
+// components: {
+// core: {},
+// block: {},
+// inline: {}
+// }
+// }
+// }, {}],
+// 15: [function(t, e, i) {
+// "use strict";
+// e.exports = {
+// options: {
+// html: !1,
+// xhtmlOut: !1,
+// breaks: !1,
+// langPrefix: "language-",
+// linkify: !1,
+// typographer: !1,
+// quotes: "“”‘’",
+// highlight: null,
+// maxNesting: 20
+// },
+// components: {
+// core: {
+// rules: ["normalize", "block", "inline"]
+// },
+// block: {
+// rules: ["paragraph"]
+// },
+// inline: {
+// rules: ["text"],
+// rules2: ["balance_pairs", "text_collapse"]
+// }
+// }
+// }
+// }, {}],
+// 16: [function(t, e, i) {
+// "use strict";
+
+// function n() {
+// this.rules = r({}, s)
+// }
+// var r = t("./common/utils").assign,
+// o = t("./common/utils").unescapeAll,
+// a = t("./common/utils").escapeHtml,
+// s = {};
+// s.code_inline = function(t, e, i, n, r) {
+// var o = t[e],
+// s = r.renderAttrs(o);
+// return "<code" + (s ? " " + s : "") + ">" + a(t[e].content) + "</code>"
+// }, s.code_block = function(t, e, i, n, r) {
+// var o = t[e],
+// s = r.renderAttrs(o);
+// return "<pre" + (s ? " " + s : "") + "><code>" + a(t[e].content) + "</code></pre>\n"
+// }, s.fence = function(t, e, i, n, r) {
+// var s, l, u, c, h = t[e],
+// d = h.info ? o(h.info).trim() : "",
+// p = "";
+// return d && (p = d.split(/\s+/g)[0]), s = i.highlight ? i.highlight(h.content, p) || a(h.content) : a(h.content), 0 === s.indexOf("<pre") ? s + "\n" : d ? (l = h.attrIndex("class"), u = h.attrs ? h.attrs.slice() : [], l < 0 ? u.push(["class", i.langPrefix + p]) : u[l] += " " + i.langPrefix + p, c = {
+// attrs: u
+// }, "<pre><code" + r.renderAttrs(c) + ">" + s + "</code></pre>\n") : "<pre><code" + r.renderAttrs(h) + ">" + s + "</code></pre>\n"
+// }, s.image = function(t, e, i, n, r) {
+// var o = t[e];
+// return o.attrs[o.attrIndex("alt")][1] = r.renderInlineAsText(o.children, i, n), r.renderToken(t, e, i)
+// }, s.hardbreak = function(t, e, i) {
+// return i.xhtmlOut ? "<br />\n" : "<br>\n"
+// }, s.softbreak = function(t, e, i) {
+// return i.breaks ? i.xhtmlOut ? "<br />\n" : "<br>\n" : "\n"
+// }, s.text = function(t, e) {
+// return a(t[e].content)
+// }, s.html_block = function(t, e) {
+// return t[e].content
+// }, s.html_inline = function(t, e) {
+// return t[e].content
+// }, n.prototype.renderAttrs = function(t) {
+// var e, i, n;
+// if (!t.attrs) return "";
+// for (n = "", e = 0, i = t.attrs.length; e < i; e++) n += " " + a(t.attrs[e][0]) + '="' + a(t.attrs[e][1]) + '"';
+// return n
+// }, n.prototype.renderToken = function(t, e, i) {
+// var n, r = "",
+// o = !1,
+// a = t[e];
+// return a.hidden ? "" : (a.block && a.nesting !== -1 && e && t[e - 1].hidden && (r += "\n"), r += (a.nesting === -1 ? "</" : "<") + a.tag, r += this.renderAttrs(a), 0 === a.nesting && i.xhtmlOut && (r += " /"), a.block && (o = !0, 1 === a.nesting && e + 1 < t.length && (n = t[e + 1], "inline" === n.type || n.hidden ? o = !1 : n.nesting === -1 && n.tag === a.tag && (o = !1))), r += o ? ">\n" : ">")
+// }, n.prototype.renderInline = function(t, e, i) {
+// for (var n, r = "", o = this.rules, a = 0, s = t.length; a < s; a++) n = t[a].type, r += "undefined" != typeof o[n] ? o[n](t, a, e, i, this) : this.renderToken(t, a, e);
+// return r
+// }, n.prototype.renderInlineAsText = function(t, e, i) {
+// for (var n = "", r = 0, o = t.length; r < o; r++)"text" === t[r].type ? n += t[r].content : "image" === t[r].type && (n += this.renderInlineAsText(t[r].children, e, i));
+// return n
+// }, n.prototype.render = function(t, e, i) {
+// var n, r, o, a = "",
+// s = this.rules;
+// for (n = 0, r = t.length; n < r; n++) o = t[n].type, a += "inline" === o ? this.renderInline(t[n].children, e, i) : "undefined" != typeof s[o] ? s[t[n].type](t, n, e, i, this) : this.renderToken(t, n, e, i);
+// return a
+// }, e.exports = n
+// }, {
+// "./common/utils": 4
+// }],
+// 17: [function(t, e, i) {
+// "use strict";
+
+// function n() {
+// this.__rules__ = [], this.__cache__ = null
+// }
+// n.prototype.__find__ = function(t) {
+// for (var e = 0; e < this.__rules__.length; e++) if (this.__rules__[e].name === t) return e;
+// return -1
+// }, n.prototype.__compile__ = function() {
+// var t = this,
+// e = [""];
+// t.__rules__.forEach(function(t) {
+// t.enabled && t.alt.forEach(function(t) {
+// e.indexOf(t) < 0 && e.push(t)
+// })
+// }), t.__cache__ = {}, e.forEach(function(e) {
+// t.__cache__[e] = [], t.__rules__.forEach(function(i) {
+// i.enabled && (e && i.alt.indexOf(e) < 0 || t.__cache__[e].push(i.fn))
+// })
+// })
+// }, n.prototype.at = function(t, e, i) {
+// var n = this.__find__(t),
+// r = i || {};
+// if (n === -1) throw new Error("Parser rule not found: " + t);
+// this.__rules__[n].fn = e, this.__rules__[n].alt = r.alt || [], this.__cache__ = null
+// }, n.prototype.before = function(t, e, i, n) {
+// var r = this.__find__(t),
+// o = n || {};
+// if (r === -1) throw new Error("Parser rule not found: " + t);
+// this.__rules__.splice(r, 0, {
+// name: e,
+// enabled: !0,
+// fn: i,
+// alt: o.alt || []
+// }), this.__cache__ = null
+// }, n.prototype.after = function(t, e, i, n) {
+// var r = this.__find__(t),
+// o = n || {};
+// if (r === -1) throw new Error("Parser rule not found: " + t);
+// this.__rules__.splice(r + 1, 0, {
+// name: e,
+// enabled: !0,
+// fn: i,
+// alt: o.alt || []
+// }), this.__cache__ = null
+// }, n.prototype.push = function(t, e, i) {
+// var n = i || {};
+// this.__rules__.push({
+// name: t,
+// enabled: !0,
+// fn: e,
+// alt: n.alt || []
+// }), this.__cache__ = null
+// }, n.prototype.enable = function(t, e) {
+// Array.isArray(t) || (t = [t]);
+// var i = [];
+// return t.forEach(function(t) {
+// var n = this.__find__(t);
+// if (n < 0) {
+// if (e) return;
+// throw new Error("Rules manager: invalid rule name " + t)
+// }
+// this.__rules__[n].enabled = !0, i.push(t)
+// }, this), this.__cache__ = null, i
+// }, n.prototype.enableOnly = function(t, e) {
+// Array.isArray(t) || (t = [t]), this.__rules__.forEach(function(t) {
+// t.enabled = !1
+// }), this.enable(t, e)
+// }, n.prototype.disable = function(t, e) {
+// Array.isArray(t) || (t = [t]);
+// var i = [];
+// return t.forEach(function(t) {
+// var n = this.__find__(t);
+// if (n < 0) {
+// if (e) return;
+// throw new Error("Rules manager: invalid rule name " + t)
+// }
+// this.__rules__[n].enabled = !1, i.push(t)
+// }, this), this.__cache__ = null, i
+// }, n.prototype.getRules = function(t) {
+// return null === this.__cache__ && this.__compile__(), this.__cache__[t] || []
+// }, e.exports = n
+// }, {}],
+// 18: [function(t, e, i) {
+// "use strict";
+// var n = t("../common/utils").isSpace;
+// e.exports = function(t, e, i, r) {
+// var o, a, s, l, u, c, h, d, p, f, m, g, v, _, y, b, w = t.bMarks[e] + t.tShift[e],
+// C = t.eMarks[e];
+// if (62 !== t.src.charCodeAt(w++)) return !1;
+// if (r) return !0;
+// for (32 === t.src.charCodeAt(w) && w++, c = t.blkIndent, t.blkIndent = 0, p = f = t.sCount[e] + w - (t.bMarks[e] + t.tShift[e]), u = [t.bMarks[e]], t.bMarks[e] = w; w < C && (m = t.src.charCodeAt(w), n(m));) 9 === m ? f += 4 - f % 4 : f++, w++;
+// for (a = w >= C, l = [t.sCount[e]], t.sCount[e] = f - p, s = [t.tShift[e]], t.tShift[e] = w - t.bMarks[e], g = t.md.block.ruler.getRules("blockquote"), o = e + 1; o < i && !(t.sCount[o] < c) && (w = t.bMarks[o] + t.tShift[o], C = t.eMarks[o], !(w >= C)); o++) if (62 !== t.src.charCodeAt(w++)) {
+// if (a) break;
+// for (b = !1, _ = 0, y = g.length; _ < y; _++) if (g[_](t, o, i, !0)) {
+// b = !0;
+// break
+// }
+// if (b) break;
+// u.push(t.bMarks[o]), s.push(t.tShift[o]), l.push(t.sCount[o]), t.sCount[o] = -1
+// } else {
+// for (32 === t.src.charCodeAt(w) && w++, p = f = t.sCount[o] + w - (t.bMarks[o] + t.tShift[o]), u.push(t.bMarks[o]), t.bMarks[o] = w; w < C && (m = t.src.charCodeAt(w), n(m));) 9 === m ? f += 4 - f % 4 : f++, w++;
+// a = w >= C, l.push(t.sCount[o]), t.sCount[o] = f - p, s.push(t.tShift[o]), t.tShift[o] = w - t.bMarks[o]
+// }
+// for (h = t.parentType, t.parentType = "blockquote", v = t.push("blockquote_open", "blockquote", 1), v.markup = ">", v.map = d = [e, 0], t.md.block.tokenize(t, e, o), v = t.push("blockquote_close", "blockquote", -1), v.markup = ">", t.parentType = h, d[1] = t.line, _ = 0; _ < s.length; _++) t.bMarks[_ + e] = u[_], t.tShift[_ + e] = s[_], t.sCount[_ + e] = l[_];
+// return t.blkIndent = c, !0
+// }
+// }, {
+// "../common/utils": 4
+// }],
+// 19: [function(t, e, i) {
+// "use strict";
+// e.exports = function(t, e, i) {
+// var n, r, o, a = 0;
+// if (t.sCount[e] - t.blkIndent < 4) return !1;
+// for (r = n = e + 1; n < i;) if (t.isEmpty(n)) {
+// if (a++, a >= 2 && "list" === t.parentType) break;
+// n++
+// } else {
+// if (a = 0, !(t.sCount[n] - t.blkIndent >= 4)) break;
+// n++, r = n
+// }
+// return t.line = r, o = t.push("code_block", "code", 0), o.content = t.getLines(e, r, 4 + t.blkIndent, !0), o.map = [e, t.line], !0
+// }
+// }, {}],
+// 20: [function(t, e, i) {
+// "use strict";
+// e.exports = function(t, e, i, n) {
+// var r, o, a, s, l, u, c, h = !1,
+// d = t.bMarks[e] + t.tShift[e],
+// p = t.eMarks[e];
+// if (d + 3 > p) return !1;
+// if (r = t.src.charCodeAt(d), 126 !== r && 96 !== r) return !1;
+// if (l = d, d = t.skipChars(d, r), o = d - l, o < 3) return !1;
+// if (c = t.src.slice(l, d), a = t.src.slice(d, p), a.indexOf("`") >= 0) return !1;
+// if (n) return !0;
+// for (s = e; s++, !(s >= i || (d = l = t.bMarks[s] + t.tShift[s], p = t.eMarks[s], d < p && t.sCount[s] < t.blkIndent));) if (t.src.charCodeAt(d) === r && !(t.sCount[s] - t.blkIndent >= 4 || (d = t.skipChars(d, r), d - l < o || (d = t.skipSpaces(d), d < p)))) {
+// h = !0;
+// break
+// }
+// return o = t.sCount[e], t.line = s + (h ? 1 : 0), u = t.push("fence", "code", 0), u.info = a, u.content = t.getLines(e + 1, s, o, !0), u.markup = c, u.map = [e, t.line], !0
+// }
+// }, {}],
+// 21: [function(t, e, i) {
+// "use strict";
+// var n = t("../common/utils").isSpace;
+// e.exports = function(t, e, i, r) {
+// var o, a, s, l, u = t.bMarks[e] + t.tShift[e],
+// c = t.eMarks[e];
+// if (o = t.src.charCodeAt(u), 35 !== o || u >= c) return !1;
+// for (a = 1, o = t.src.charCodeAt(++u); 35 === o && u < c && a <= 6;) a++, o = t.src.charCodeAt(++u);
+// return !(a > 6 || u < c && 32 !== o || !r && (c = t.skipSpacesBack(c, u), s = t.skipCharsBack(c, 35, u), s > u && n(t.src.charCodeAt(s - 1)) && (c = s), t.line = e + 1, l = t.push("heading_open", "h" + String(a), 1), l.markup = "########".slice(0, a), l.map = [e, t.line], l = t.push("inline", "", 0), l.content = t.src.slice(u, c).trim(), l.map = [e, t.line], l.children = [], l = t.push("heading_close", "h" + String(a), -1), l.markup = "########".slice(0, a), 0))
+// }
+// }, {
+// "../common/utils": 4
+// }],
+// 22: [function(t, e, i) {
+// "use strict";
+// var n = t("../common/utils").isSpace;
+// e.exports = function(t, e, i, r) {
+// var o, a, s, l, u = t.bMarks[e] + t.tShift[e],
+// c = t.eMarks[e];
+// if (o = t.src.charCodeAt(u++), 42 !== o && 45 !== o && 95 !== o) return !1;
+// for (a = 1; u < c;) {
+// if (s = t.src.charCodeAt(u++), s !== o && !n(s)) return !1;
+// s === o && a++
+// }
+// return !(a < 3 || !r && (t.line = e + 1, l = t.push("hr", "hr", 0), l.map = [e, t.line], l.markup = Array(a + 1).join(String.fromCharCode(o)), 0))
+// }
+// }, {
+// "../common/utils": 4
+// }],
+// 23: [function(t, e, i) {
+// "use strict";
+// var n = t("../common/html_blocks"),
+// r = t("../common/html_re").HTML_OPEN_CLOSE_TAG_RE,
+// o = [
+// [/^<(script|pre|style)(?=(\s|>|$))/i, /<\/(script|pre|style)>/i, !0],
+// [/^<!--/, /-->/, !0],
+// [/^<\?/, /\?>/, !0],
+// [/^<![A-Z]/, />/, !0],
+// [/^<!\[CDATA\[/, /\]\]>/, !0],
+// [new RegExp("^</?(" + n.join("|") + ")(?=(\\s|/?>|$))", "i"), /^$/, !0],
+// [new RegExp(r.source + "\\s*$"), /^$/, !1]
+// ];
+// e.exports = function(t, e, i, n) {
+// var r, a, s, l, u = t.bMarks[e] + t.tShift[e],
+// c = t.eMarks[e];
+// if (!t.md.options.html) return !1;
+// if (60 !== t.src.charCodeAt(u)) return !1;
+// for (l = t.src.slice(u, c), r = 0; r < o.length && !o[r][0].test(l); r++);
+// if (r === o.length) return !1;
+// if (n) return o[r][2];
+// if (a = e + 1, !o[r][1].test(l)) for (; a < i && !(t.sCount[a] < t.blkIndent); a++) if (u = t.bMarks[a] + t.tShift[a], c = t.eMarks[a], l = t.src.slice(u, c), o[r][1].test(l)) {
+// 0 !== l.length && a++;
+// break
+// }
+// return t.line = a, s = t.push("html_block", "", 0), s.map = [e, a], s.content = t.getLines(e, a, t.blkIndent, !0), !0
+// }
+// }, {
+// "../common/html_blocks": 2,
+// "../common/html_re": 3
+// }],
+// 24: [function(t, e, i) {
+// "use strict";
+// e.exports = function(t, e, i) {
+// for (var n, r, o, a, s, l, u, c, h, d = e + 1, p = t.md.block.ruler.getRules("paragraph"); d < i && !t.isEmpty(d); d++) if (!(t.sCount[d] - t.blkIndent > 3)) {
+// if (t.sCount[d] >= t.blkIndent && (l = t.bMarks[d] + t.tShift[d], u = t.eMarks[d], l < u && (h = t.src.charCodeAt(l), (45 === h || 61 === h) && (l = t.skipChars(l, h), l = t.skipSpaces(l), l >= u)))) {
+// c = 61 === h ? 1 : 2;
+// break
+// }
+// if (!(t.sCount[d] < 0)) {
+// for (r = !1, o = 0, a = p.length; o < a; o++) if (p[o](t, d, i, !0)) {
+// r = !0;
+// break
+// }
+// if (r) break
+// }
+// }
+// return !!c && (n = t.getLines(e, d, t.blkIndent, !1).trim(), t.line = d + 1, s = t.push("heading_open", "h" + String(c), 1), s.markup = String.fromCharCode(h), s.map = [e, t.line], s = t.push("inline", "", 0), s.content = n, s.map = [e, t.line - 1], s.children = [], s = t.push("heading_close", "h" + String(c), -1), s.markup = String.fromCharCode(h), !0)
+// }
+// }, {}],
+// 25: [function(t, e, i) {
+// "use strict";
+
+// function n(t, e) {
+// var i, n, r, o;
+// return n = t.bMarks[e] + t.tShift[e], r = t.eMarks[e], i = t.src.charCodeAt(n++), 42 !== i && 45 !== i && 43 !== i ? -1 : n < r && (o = t.src.charCodeAt(n), !a(o)) ? -1 : n
+// }
+// function r(t, e) {
+// var i, n = t.bMarks[e] + t.tShift[e],
+// r = n,
+// o = t.eMarks[e];
+// if (r + 1 >= o) return -1;
+// if (i = t.src.charCodeAt(r++), i < 48 || i > 57) return -1;
+// for (;;) {
+// if (r >= o) return -1;
+// if (i = t.src.charCodeAt(r++), !(i >= 48 && i <= 57)) {
+// if (41 === i || 46 === i) break;
+// return -1
+// }
+// if (r - n >= 10) return -1
+// }
+// return r < o && (i = t.src.charCodeAt(r), !a(i)) ? -1 : r
+// }
+// function o(t, e) {
+// var i, n, r = t.level + 2;
+// for (i = e + 2, n = t.tokens.length - 2; i < n; i++) t.tokens[i].level === r && "paragraph_open" === t.tokens[i].type && (t.tokens[i + 2].hidden = !0, t.tokens[i].hidden = !0, i += 2)
+// }
+// var a = t("../common/utils").isSpace;
+// e.exports = function(t, e, i, s) {
+// var l, u, c, h, d, p, f, m, g, v, _, y, b, w, C, x, E, k, L, P, D, T, S, M, A, O, N, I, R = !0;
+// if ((_ = r(t, e)) >= 0) k = !0;
+// else {
+// if (!((_ = n(t, e)) >= 0)) return !1;
+// k = !1
+// }
+// if (E = t.src.charCodeAt(_ - 1), s) return !0;
+// for (P = t.tokens.length, k ? (v = t.bMarks[e] + t.tShift[e], x = Number(t.src.substr(v, _ - v - 1)), A = t.push("ordered_list_open", "ol", 1), 1 !== x && (A.attrs = [
+// ["start", x]
+// ])) : A = t.push("bullet_list_open", "ul", 1), A.map = T = [e, 0], A.markup = String.fromCharCode(E), l = e, D = !1, M = t.md.block.ruler.getRules("list"); l < i;) {
+// for (b = _, w = t.eMarks[l], u = c = t.sCount[l] + _ - (t.bMarks[e] + t.tShift[e]); b < w && (y = t.src.charCodeAt(b), a(y));) 9 === y ? c += 4 - c % 4 : c++, b++;
+// if (L = b, C = L >= w ? 1 : c - u, C > 4 && (C = 1), h = u + C, A = t.push("list_item_open", "li", 1), A.markup = String.fromCharCode(E), A.map = S = [e, 0], p = t.blkIndent, m = t.tight, d = t.tShift[e], f = t.sCount[e], g = t.parentType, t.blkIndent = h, t.tight = !0, t.parentType = "list", t.tShift[e] = L - t.bMarks[e], t.sCount[e] = c, L >= w && t.isEmpty(e + 1) ? t.line = Math.min(t.line + 2, i) : t.md.block.tokenize(t, e, i, !0), t.tight && !D || (R = !1), D = t.line - e > 1 && t.isEmpty(t.line - 1), t.blkIndent = p, t.tShift[e] = d, t.sCount[e] = f, t.tight = m, t.parentType = g, A = t.push("list_item_close", "li", -1), A.markup = String.fromCharCode(E), l = e = t.line, S[1] = l, L = t.bMarks[e], l >= i) break;
+// if (t.isEmpty(l)) break;
+// if (t.sCount[l] < t.blkIndent) break;
+// for (I = !1, O = 0, N = M.length; O < N; O++) if (M[O](t, l, i, !0)) {
+// I = !0;
+// break
+// }
+// if (I) break;
+// if (k) {
+// if (_ = r(t, l), _ < 0) break
+// } else if (_ = n(t, l), _ < 0) break;
+// if (E !== t.src.charCodeAt(_ - 1)) break
+// }
+// return A = k ? t.push("ordered_list_close", "ol", -1) : t.push("bullet_list_close", "ul", -1), A.markup = String.fromCharCode(E), T[1] = l, t.line = l, R && o(t, P), !0
+// }
+// }, {
+// "../common/utils": 4
+// }],
+// 26: [function(t, e, i) {
+// "use strict";
+// e.exports = function(t, e) {
+// for (var i, n, r, o, a, s = e + 1, l = t.md.block.ruler.getRules("paragraph"), u = t.lineMax; s < u && !t.isEmpty(s); s++) if (!(t.sCount[s] - t.blkIndent > 3 || t.sCount[s] < 0)) {
+// for (n = !1, r = 0, o = l.length; r < o; r++) if (l[r](t, s, u, !0)) {
+// n = !0;
+// break
+// }
+// if (n) break
+// }
+// return i = t.getLines(e, s, t.blkIndent, !1).trim(), t.line = s, a = t.push("paragraph_open", "p", 1), a.map = [e, t.line], a = t.push("inline", "", 0), a.content = i, a.map = [e, t.line], a.children = [], a = t.push("paragraph_close", "p", -1), !0
+// }
+// }, {}],
+// 27: [function(t, e, i) {
+// "use strict";
+// var n = t("../helpers/parse_link_destination"),
+// r = t("../helpers/parse_link_title"),
+// o = t("../common/utils").normalizeReference,
+// a = t("../common/utils").isSpace;
+// e.exports = function(t, e, i, s) {
+// var l, u, c, h, d, p, f, m, g, v, _, y, b, w, C, x = 0,
+// E = t.bMarks[e] + t.tShift[e],
+// k = t.eMarks[e],
+// L = e + 1;
+// if (91 !== t.src.charCodeAt(E)) return !1;
+// for (; ++E < k;) if (93 === t.src.charCodeAt(E) && 92 !== t.src.charCodeAt(E - 1)) {
+// if (E + 1 === k) return !1;
+// if (58 !== t.src.charCodeAt(E + 1)) return !1;
+// break
+// }
+// for (h = t.lineMax, w = t.md.block.ruler.getRules("reference"); L < h && !t.isEmpty(L); L++) if (!(t.sCount[L] - t.blkIndent > 3 || t.sCount[L] < 0)) {
+// for (b = !1, p = 0, f = w.length; p < f; p++) if (w[p](t, L, h, !0)) {
+// b = !0;
+// break
+// }
+// if (b) break
+// }
+// for (y = t.getLines(e, L, t.blkIndent, !1).trim(), k = y.length, E = 1; E < k; E++) {
+// if (l = y.charCodeAt(E), 91 === l) return !1;
+// if (93 === l) {
+// g = E;
+// break
+// }
+// 10 === l ? x++ : 92 === l && (E++, E < k && 10 === y.charCodeAt(E) && x++)
+// }
+// if (g < 0 || 58 !== y.charCodeAt(g + 1)) return !1;
+// for (E = g + 2; E < k; E++) if (l = y.charCodeAt(E), 10 === l) x++;
+// else if (!a(l)) break;
+// if (v = n(y, E, k), !v.ok) return !1;
+// if (d = t.md.normalizeLink(v.str), !t.md.validateLink(d)) return !1;
+// for (E = v.pos, x += v.lines, u = E, c = x, _ = E; E < k; E++) if (l = y.charCodeAt(E), 10 === l) x++;
+// else if (!a(l)) break;
+// for (v = r(y, E, k), E < k && _ !== E && v.ok ? (C = v.str, E = v.pos, x += v.lines) : (C = "", E = u, x = c); E < k && (l = y.charCodeAt(E), a(l));) E++;
+// if (E < k && 10 !== y.charCodeAt(E) && C) for (C = "", E = u, x = c; E < k && (l = y.charCodeAt(E), a(l));) E++;
+// return !(E < k && 10 !== y.charCodeAt(E) || !(m = o(y.slice(1, g))) || !s && ("undefined" == typeof t.env.references && (t.env.references = {}), "undefined" == typeof t.env.references[m] && (t.env.references[m] = {
+// title: C,
+// href: d
+// }), t.line = e + x + 1, 0))
+// }
+// }, {
+// "../common/utils": 4,
+// "../helpers/parse_link_destination": 6,
+// "../helpers/parse_link_title": 8
+// }],
+// 28: [function(t, e, i) {
+// "use strict";
+
+// function n(t, e, i, n) {
+// var r, a, s, l, u, c, h, d;
+// for (this.src = t, this.md = e, this.env = i, this.tokens = n, this.bMarks = [], this.eMarks = [], this.tShift = [], this.sCount = [], this.blkIndent = 0, this.line = 0, this.lineMax = 0, this.tight = !1, this.parentType = "root", this.ddIndent = -1, this.level = 0, this.result = "", a = this.src, d = !1, s = l = c = h = 0, u = a.length; l < u; l++) {
+// if (r = a.charCodeAt(l), !d) {
+// if (o(r)) {
+// c++, 9 === r ? h += 4 - h % 4 : h++;
+// continue
+// }
+// d = !0
+// }
+// 10 !== r && l !== u - 1 || (10 !== r && l++, this.bMarks.push(s), this.eMarks.push(l), this.tShift.push(c), this.sCount.push(h), d = !1, c = 0, h = 0, s = l + 1)
+// }
+// this.bMarks.push(a.length), this.eMarks.push(a.length), this.tShift.push(0), this.sCount.push(0), this.lineMax = this.bMarks.length - 1
+// }
+// var r = t("../token"),
+// o = t("../common/utils").isSpace;
+// n.prototype.push = function(t, e, i) {
+// var n = new r(t, e, i);
+// return n.block = !0, i < 0 && this.level--, n.level = this.level, i > 0 && this.level++, this.tokens.push(n), n
+// }, n.prototype.isEmpty = function(t) {
+// return this.bMarks[t] + this.tShift[t] >= this.eMarks[t]
+// }, n.prototype.skipEmptyLines = function(t) {
+// for (var e = this.lineMax; t < e && !(this.bMarks[t] + this.tShift[t] < this.eMarks[t]); t++);
+// return t
+// }, n.prototype.skipSpaces = function(t) {
+// for (var e, i = this.src.length; t < i && (e = this.src.charCodeAt(t), o(e)); t++);
+// return t
+// }, n.prototype.skipSpacesBack = function(t, e) {
+// if (t <= e) return t;
+// for (; t > e;) if (!o(this.src.charCodeAt(--t))) return t + 1;
+// return t
+// }, n.prototype.skipChars = function(t, e) {
+// for (var i = this.src.length; t < i && this.src.charCodeAt(t) === e; t++);
+// return t
+// }, n.prototype.skipCharsBack = function(t, e, i) {
+// if (t <= i) return t;
+// for (; t > i;) if (e !== this.src.charCodeAt(--t)) return t + 1;
+// return t
+// }, n.prototype.getLines = function(t, e, i, n) {
+// var r, a, s, l, u, c, h, d = t;
+// if (t >= e) return "";
+// for (c = new Array(e - t), r = 0; d < e; d++, r++) {
+// for (a = 0, h = l = this.bMarks[d], u = d + 1 < e || n ? this.eMarks[d] + 1 : this.eMarks[d]; l < u && a < i;) {
+// if (s = this.src.charCodeAt(l), o(s)) 9 === s ? a += 4 - a % 4 : a++;
+// else {
+// if (!(l - h < this.tShift[d])) break;
+// a++
+// }
+// l++
+// }
+// c[r] = this.src.slice(l, u)
+// }
+// return c.join("")
+// }, n.prototype.Token = r, e.exports = n
+// }, {
+// "../common/utils": 4,
+// "../token": 51
+// }],
+// 29: [function(t, e, i) {
+// "use strict";
+
+// function n(t, e) {
+// var i = t.bMarks[e] + t.blkIndent,
+// n = t.eMarks[e];
+// return t.src.substr(i, n - i)
+// }
+// function r(t) {
+// var e, i = [],
+// n = 0,
+// r = t.length,
+// o = 0,
+// a = 0,
+// s = !1,
+// l = 0;
+// for (e = t.charCodeAt(n); n < r;) 96 === e && o % 2 === 0 ? (s = !s, l = n) : 124 !== e || o % 2 !== 0 || s ? 92 === e ? o++ : o = 0 : (i.push(t.substring(a, n)), a = n + 1), n++, n === r && s && (s = !1, n = l + 1), e = t.charCodeAt(n);
+// return i.push(t.substring(a)), i
+// }
+// e.exports = function(t, e, i, o) {
+// var a, s, l, u, c, h, d, p, f, m, g, v;
+// if (e + 2 > i) return !1;
+// if (c = e + 1, t.sCount[c] < t.blkIndent) return !1;
+// if (l = t.bMarks[c] + t.tShift[c], l >= t.eMarks[c]) return !1;
+// if (a = t.src.charCodeAt(l), 124 !== a && 45 !== a && 58 !== a) return !1;
+// if (s = n(t, e + 1), !/^[-:| ]+$/.test(s)) return !1;
+// for (h = s.split("|"), f = [], u = 0; u < h.length; u++) {
+// if (m = h[u].trim(), !m) {
+// if (0 === u || u === h.length - 1) continue;
+// return !1
+// }
+// if (!/^:?-+:?$/.test(m)) return !1;
+// 58 === m.charCodeAt(m.length - 1) ? f.push(58 === m.charCodeAt(0) ? "center" : "right") : 58 === m.charCodeAt(0) ? f.push("left") : f.push("")
+// }
+// if (s = n(t, e).trim(), s.indexOf("|") === -1) return !1;
+// if (h = r(s.replace(/^\||\|$/g, "")), d = h.length, d > f.length) return !1;
+// if (o) return !0;
+// for (p = t.push("table_open", "table", 1), p.map = g = [e, 0], p = t.push("thead_open", "thead", 1), p.map = [e, e + 1], p = t.push("tr_open", "tr", 1), p.map = [e, e + 1], u = 0; u < h.length; u++) p = t.push("th_open", "th", 1), p.map = [e, e + 1], f[u] && (p.attrs = [
+// ["style", "text-align:" + f[u]]
+// ]), p = t.push("inline", "", 0), p.content = h[u].trim(), p.map = [e, e + 1], p.children = [], p = t.push("th_close", "th", -1);
+// for (p = t.push("tr_close", "tr", -1), p = t.push("thead_close", "thead", -1), p = t.push("tbody_open", "tbody", 1), p.map = v = [e + 2, 0], c = e + 2; c < i && !(t.sCount[c] < t.blkIndent) && (s = n(t, c), s.indexOf("|") !== -1); c++) {
+// for (h = r(s.replace(/^\||\|\s*$/g, "")), p = t.push("tr_open", "tr", 1), u = 0; u < d; u++) p = t.push("td_open", "td", 1), f[u] && (p.attrs = [
+// ["style", "text-align:" + f[u]]
+// ]), p = t.push("inline", "", 0), p.content = h[u] ? h[u].trim() : "", p.children = [], p = t.push("td_close", "td", -1);
+// p = t.push("tr_close", "tr", -1)
+// }
+// return p = t.push("tbody_close", "tbody", -1), p = t.push("table_close", "table", -1), g[1] = v[1] = c, t.line = c, !0
+// }
+// }, {}],
+// 30: [function(t, e, i) {
+// "use strict";
+// e.exports = function(t) {
+// var e;
+// t.inlineMode ? (e = new t.Token("inline", "", 0), e.content = t.src, e.map = [0, 1], e.children = [], t.tokens.push(e)) : t.md.block.parse(t.src, t.md, t.env, t.tokens)
+// }
+// }, {}],
+// 31: [function(t, e, i) {
+// "use strict";
+// e.exports = function(t) {
+// var e, i, n, r = t.tokens;
+// for (i = 0, n = r.length; i < n; i++) e = r[i], "inline" === e.type && t.md.inline.parse(e.content, t.md, t.env, e.children)
+// }
+// }, {}],
+// 32: [function(t, e, i) {
+// "use strict";
+
+// function n(t) {
+// return /^<a[>\s]/i.test(t)
+// }
+// function r(t) {
+// return /^<\/a\s*>/i.test(t)
+// }
+// var o = t("../common/utils").arrayReplaceAt;
+// e.exports = function(t) {
+// var e, i, a, s, l, u, c, h, d, p, f, m, g, v, _, y, b, w = t.tokens;
+// if (t.md.options.linkify) for (i = 0, a = w.length; i < a; i++) if ("inline" === w[i].type && t.md.linkify.pretest(w[i].content)) for (s = w[i].children, g = 0, e = s.length - 1; e >= 0; e--) if (u = s[e], "link_close" !== u.type) {
+// if ("html_inline" === u.type && (n(u.content) && g > 0 && g--, r(u.content) && g++), !(g > 0) && "text" === u.type && t.md.linkify.test(u.content)) {
+// for (d = u.content, b = t.md.linkify.match(d), c = [], m = u.level, f = 0, h = 0; h < b.length; h++) v = b[h].url, _ = t.md.normalizeLink(v), t.md.validateLink(_) && (y = b[h].text, y = b[h].schema ? "mailto:" !== b[h].schema || /^mailto:/i.test(y) ? t.md.normalizeLinkText(y) : t.md.normalizeLinkText("mailto:" + y).replace(/^mailto:/, "") : t.md.normalizeLinkText("http://" + y).replace(/^http:\/\//, ""), p = b[h].index, p > f && (l = new t.Token("text", "", 0), l.content = d.slice(f, p), l.level = m, c.push(l)), l = new t.Token("link_open", "a", 1), l.attrs = [
+// ["href", _]
+// ], l.level = m++, l.markup = "linkify", l.info = "auto", c.push(l), l = new t.Token("text", "", 0), l.content = y, l.level = m, c.push(l), l = new t.Token("link_close", "a", (-1)), l.level = --m, l.markup = "linkify", l.info = "auto", c.push(l), f = b[h].lastIndex);
+// f < d.length && (l = new t.Token("text", "", 0), l.content = d.slice(f), l.level = m, c.push(l)), w[i].children = s = o(s, e, c)
+// }
+// } else for (e--; s[e].level !== u.level && "link_open" !== s[e].type;) e--
+// }
+// }, {
+// "../common/utils": 4
+// }],
+// 33: [function(t, e, i) {
+// "use strict";
+// var n = /\r[\n\u0085]?|[\u2424\u2028\u0085]/g,
+// r = /\u0000/g;
+// e.exports = function(t) {
+// var e;
+// e = t.src.replace(n, "\n"), e = e.replace(r, "�"), t.src = e
+// }
+// }, {}],
+// 34: [function(t, e, i) {
+// "use strict";
+
+// function n(t, e) {
+// return u[e.toLowerCase()]
+// }
+// function r(t) {
+// var e, i;
+// for (e = t.length - 1; e >= 0; e--) i = t[e], "text" === i.type && (i.content = i.content.replace(l, n))
+// }
+// function o(t) {
+// var e, i;
+// for (e = t.length - 1; e >= 0; e--) i = t[e], "text" === i.type && a.test(i.content) && (i.content = i.content.replace(/\+-/g, "±").replace(/\.{2,}/g, "…").replace(/([?!])\u2026/g, "$1..").replace(/([?!]){4,}/g, "$1$1$1").replace(/,{2,}/g, ",").replace(/(^|[^-])---([^-]|$)/gm, "$1—$2").replace(/(^|\s)--(\s|$)/gm, "$1–$2").replace(/(^|[^-\s])--([^-\s]|$)/gm, "$1–$2"))
+// }
+// var a = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/,
+// s = /\((c|tm|r|p)\)/i,
+// l = /\((c|tm|r|p)\)/gi,
+// u = {
+// c: "©",
+// r: "®",
+// p: "§",
+// tm: "™"
+// };
+// e.exports = function(t) {
+// var e;
+// if (t.md.options.typographer) for (e = t.tokens.length - 1; e >= 0; e--)"inline" === t.tokens[e].type && (s.test(t.tokens[e].content) && r(t.tokens[e].children), a.test(t.tokens[e].content) && o(t.tokens[e].children))
+// }
+// }, {}],
+// 35: [function(t, e, i) {
+// "use strict";
+
+// function n(t, e, i) {
+// return t.substr(0, e) + i + t.substr(e + 1)
+// }
+// function r(t, e) {
+// var i, r, l, h, d, p, f, m, g, v, _, y, b, w, C, x, E, k, L, P, D;
+// for (L = [], i = 0; i < t.length; i++) {
+// for (r = t[i], f = t[i].level, E = L.length - 1; E >= 0 && !(L[E].level <= f); E--);
+// if (L.length = E + 1, "text" === r.type) {
+// l = r.content, d = 0, p = l.length;
+// t: for (; d < p && (u.lastIndex = d, h = u.exec(l));) {
+// if (C = x = !0, d = h.index + 1, k = "'" === h[0], g = 32, h.index - 1 >= 0) g = l.charCodeAt(h.index - 1);
+// else for (E = i - 1; E >= 0; E--) if ("text" === t[E].type) {
+// g = t[E].content.charCodeAt(t[E].content.length - 1);
+// break
+// }
+// if (v = 32, d < p) v = l.charCodeAt(d);
+// else for (E = i + 1; E < t.length; E++) if ("text" === t[E].type) {
+// v = t[E].content.charCodeAt(0);
+// break
+// }
+// if (_ = s(g) || a(String.fromCharCode(g)), y = s(v) || a(String.fromCharCode(v)), b = o(g), w = o(v), w ? C = !1 : y && (b || _ || (C = !1)), b ? x = !1 : _ && (w || y || (x = !1)), 34 === v && '"' === h[0] && g >= 48 && g <= 57 && (x = C = !1), C && x && (C = !1, x = y), C || x) {
+// if (x) for (E = L.length - 1; E >= 0 && (m = L[E], !(L[E].level < f)); E--) if (m.single === k && L[E].level === f) {
+// m = L[E], k ? (P = e.md.options.quotes[2], D = e.md.options.quotes[3]) : (P = e.md.options.quotes[0], D = e.md.options.quotes[1]), r.content = n(r.content, h.index, D), t[m.token].content = n(t[m.token].content, m.pos, P), d += D.length - 1, m.token === i && (d += P.length - 1), l = r.content, p = l.length, L.length = E;
+// continue t
+// }
+// C ? L.push({
+// token: i,
+// pos: h.index,
+// single: k,
+// level: f
+// }) : x && k && (r.content = n(r.content, h.index, c))
+// } else k && (r.content = n(r.content, h.index, c))
+// }
+// }
+// }
+// }
+// var o = t("../common/utils").isWhiteSpace,
+// a = t("../common/utils").isPunctChar,
+// s = t("../common/utils").isMdAsciiPunct,
+// l = /['"]/,
+// u = /['"]/g,
+// c = "’";
+// e.exports = function(t) {
+// var e;
+// if (t.md.options.typographer) for (e = t.tokens.length - 1; e >= 0; e--)"inline" === t.tokens[e].type && l.test(t.tokens[e].content) && r(t.tokens[e].children, t)
+// }
+// }, {
+// "../common/utils": 4
+// }],
+// 36: [function(t, e, i) {
+// "use strict";
+
+// function n(t, e, i) {
+// this.src = t, this.env = i, this.tokens = [], this.inlineMode = !1, this.md = e
+// }
+// var r = t("../token");
+// n.prototype.Token = r, e.exports = n
+// }, {
+// "../token": 51
+// }],
+// 37: [function(t, e, i) {
+// "use strict";
+// var n = /^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,
+// r = /^<([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)>/;
+// e.exports = function(t, e) {
+// var i, o, a, s, l, u, c = t.pos;
+// return 60 === t.src.charCodeAt(c) && (i = t.src.slice(c), !(i.indexOf(">") < 0 || (r.test(i) ? (o = i.match(r), s = o[0].slice(1, -1), l = t.md.normalizeLink(s), !t.md.validateLink(l) || (e || (u = t.push("link_open", "a", 1), u.attrs = [
+// ["href", l]
+// ], u.markup = "autolink", u.info = "auto", u = t.push("text", "", 0), u.content = t.md.normalizeLinkText(s), u = t.push("link_close", "a", -1), u.markup = "autolink", u.info = "auto"), t.pos += o[0].length, 0)) : !n.test(i) || (a = i.match(n), s = a[0].slice(1, -1), l = t.md.normalizeLink("mailto:" + s), !t.md.validateLink(l) || (e || (u = t.push("link_open", "a", 1), u.attrs = [
+// ["href", l]
+// ], u.markup = "autolink", u.info = "auto", u = t.push("text", "", 0), u.content = t.md.normalizeLinkText(s), u = t.push("link_close", "a", -1), u.markup = "autolink", u.info = "auto"), t.pos += a[0].length, 0)))))
+// }
+// }, {}],
+// 38: [function(t, e, i) {
+// "use strict";
+// e.exports = function(t, e) {
+// var i, n, r, o, a, s, l = t.pos,
+// u = t.src.charCodeAt(l);
+// if (96 !== u) return !1;
+// for (i = l, l++, n = t.posMax; l < n && 96 === t.src.charCodeAt(l);) l++;
+// for (r = t.src.slice(i, l), o = a = l;
+// (o = t.src.indexOf("`", a)) !== -1;) {
+// for (a = o + 1; a < n && 96 === t.src.charCodeAt(a);) a++;
+// if (a - o === r.length) return e || (s = t.push("code_inline", "code", 0), s.markup = r, s.content = t.src.slice(l, o).replace(/[ \n]+/g, " ").trim()), t.pos = a, !0
+// }
+// return e || (t.pending += r), t.pos += r.length, !0
+// }
+// }, {}],
+// 39: [function(t, e, i) {
+// "use strict";
+// e.exports = function(t) {
+// var e, i, n, r, o = t.delimiters,
+// a = t.delimiters.length;
+// for (e = 0; e < a; e++) if (n = o[e], n.close) for (i = e - n.jump - 1; i >= 0;) {
+// if (r = o[i], r.open && r.marker === n.marker && r.end < 0 && r.level === n.level) {
+// n.jump = e - i, n.open = !1, r.end = e, r.jump = 0;
+// break
+// }
+// i -= r.jump + 1
+// }
+// }
+// }, {}],
+// 40: [function(t, e, i) {
+// "use strict";
+// e.exports.tokenize = function(t, e) {
+// var i, n, r, o = t.pos,
+// a = t.src.charCodeAt(o);
+// if (e) return !1;
+// if (95 !== a && 42 !== a) return !1;
+// for (n = t.scanDelims(t.pos, 42 === a), i = 0; i < n.length; i++) r = t.push("text", "", 0), r.content = String.fromCharCode(a), t.delimiters.push({
+// marker: a,
+// jump: i,
+// token: t.tokens.length - 1,
+// level: t.level,
+// end: -1,
+// open: n.can_open,
+// close: n.can_close
+// });
+// return t.pos += n.length, !0
+// }, e.exports.postProcess = function(t) {
+// var e, i, n, r, o, a, s = t.delimiters,
+// l = t.delimiters.length;
+// for (e = 0; e < l; e++) i = s[e], 95 !== i.marker && 42 !== i.marker || i.end !== -1 && (n = s[i.end], a = e + 1 < l && s[e + 1].end === i.end - 1 && s[e + 1].token === i.token + 1 && s[i.end - 1].token === n.token - 1 && s[e + 1].marker === i.marker, o = String.fromCharCode(i.marker), r = t.tokens[i.token], r.type = a ? "strong_open" : "em_open", r.tag = a ? "strong" : "em", r.nesting = 1, r.markup = a ? o + o : o, r.content = "", r = t.tokens[n.token], r.type = a ? "strong_close" : "em_close", r.tag = a ? "strong" : "em", r.nesting = -1, r.markup = a ? o + o : o, r.content = "", a && (t.tokens[s[e + 1].token].content = "", t.tokens[s[i.end - 1].token].content = "", e++))
+// }
+// }, {}],
+// 41: [function(t, e, i) {
+// "use strict";
+// var n = t("../common/entities"),
+// r = t("../common/utils").has,
+// o = t("../common/utils").isValidEntityCode,
+// a = t("../common/utils").fromCodePoint,
+// s = /^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i,
+// l = /^&([a-z][a-z0-9]{1,31});/i;
+// e.exports = function(t, e) {
+// var i, u, c, h = t.pos,
+// d = t.posMax;
+// if (38 !== t.src.charCodeAt(h)) return !1;
+// if (h + 1 < d) if (i = t.src.charCodeAt(h + 1), 35 === i) {
+// if (c = t.src.slice(h).match(s)) return e || (u = "x" === c[1][0].toLowerCase() ? parseInt(c[1].slice(1), 16) : parseInt(c[1], 10), t.pending += a(o(u) ? u : 65533)), t.pos += c[0].length, !0
+// } else if (c = t.src.slice(h).match(l), c && r(n, c[1])) return e || (t.pending += n[c[1]]), t.pos += c[0].length, !0;
+// return e || (t.pending += "&"), t.pos++, !0
+// }
+// }, {
+// "../common/entities": 1,
+// "../common/utils": 4
+// }],
+// 42: [function(t, e, i) {
+// "use strict";
+// for (var n = t("../common/utils").isSpace, r = [], o = 0; o < 256; o++) r.push(0);
+// "\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(t) {
+// r[t.charCodeAt(0)] = 1
+// }), e.exports = function(t, e) {
+// var i, o = t.pos,
+// a = t.posMax;
+// if (92 !== t.src.charCodeAt(o)) return !1;
+// if (o++, o < a) {
+// if (i = t.src.charCodeAt(o), i < 256 && 0 !== r[i]) return e || (t.pending += t.src[o]), t.pos += 2, !0;
+// if (10 === i) {
+// for (e || t.push("hardbreak", "br", 0), o++; o < a && (i = t.src.charCodeAt(o), n(i));) o++;
+// return t.pos = o, !0
+// }
+// }
+// return e || (t.pending += "\\"), t.pos++, !0
+// }
+// }, {
+// "../common/utils": 4
+// }],
+// 43: [function(t, e, i) {
+// "use strict";
+
+// function n(t) {
+// var e = 32 | t;
+// return e >= 97 && e <= 122
+// }
+// var r = t("../common/html_re").HTML_TAG_RE;
+// e.exports = function(t, e) {
+// var i, o, a, s, l = t.pos;
+// return !(!t.md.options.html || (a = t.posMax, 60 !== t.src.charCodeAt(l) || l + 2 >= a || (i = t.src.charCodeAt(l + 1), 33 !== i && 63 !== i && 47 !== i && !n(i) || !(o = t.src.slice(l).match(r)) || (e || (s = t.push("html_inline", "", 0), s.content = t.src.slice(l, l + o[0].length)), t.pos += o[0].length, 0))))
+// }
+// }, {
+// "../common/html_re": 3
+// }],
+// 44: [function(t, e, i) {
+// "use strict";
+// var n = t("../helpers/parse_link_label"),
+// r = t("../helpers/parse_link_destination"),
+// o = t("../helpers/parse_link_title"),
+// a = t("../common/utils").normalizeReference,
+// s = t("../common/utils").isSpace;
+// e.exports = function(t, e) {
+// var i, l, u, c, h, d, p, f, m, g, v, _, y, b = "",
+// w = t.pos,
+// C = t.posMax;
+// if (33 !== t.src.charCodeAt(t.pos)) return !1;
+// if (91 !== t.src.charCodeAt(t.pos + 1)) return !1;
+// if (d = t.pos + 2, h = n(t, t.pos + 1, !1), h < 0) return !1;
+// if (p = h + 1, p < C && 40 === t.src.charCodeAt(p)) {
+// for (p++; p < C && (l = t.src.charCodeAt(p), s(l) || 10 === l); p++);
+// if (p >= C) return !1;
+// for (y = p, m = r(t.src, p, t.posMax), m.ok && (b = t.md.normalizeLink(m.str), t.md.validateLink(b) ? p = m.pos : b = ""), y = p; p < C && (l = t.src.charCodeAt(p), s(l) || 10 === l); p++);
+// if (m = o(t.src, p, t.posMax), p < C && y !== p && m.ok) for (g = m.str, p = m.pos; p < C && (l = t.src.charCodeAt(p), s(l) || 10 === l); p++);
+// else g = "";
+// if (p >= C || 41 !== t.src.charCodeAt(p)) return t.pos = w, !1;
+// p++
+// } else {
+// if ("undefined" == typeof t.env.references) return !1;
+// if (p < C && 91 === t.src.charCodeAt(p) ? (y = p + 1, p = n(t, p), p >= 0 ? c = t.src.slice(y, p++) : p = h + 1) : p = h + 1, c || (c = t.src.slice(d, h)), f = t.env.references[a(c)], !f) return t.pos = w, !1;
+// b = f.href, g = f.title
+// }
+// return e || (u = t.src.slice(d, h), t.md.inline.parse(u, t.md, t.env, _ = []), v = t.push("image", "img", 0), v.attrs = i = [
+// ["src", b],
+// ["alt", ""]
+// ], v.children = _, v.content = u, g && i.push(["title", g])), t.pos = p, t.posMax = C, !0
+// }
+// }, {
+// "../common/utils": 4,
+// "../helpers/parse_link_destination": 6,
+// "../helpers/parse_link_label": 7,
+// "../helpers/parse_link_title": 8
+// }],
+// 45: [function(t, e, i) {
+// "use strict";
+// var n = t("../helpers/parse_link_label"),
+// r = t("../helpers/parse_link_destination"),
+// o = t("../helpers/parse_link_title"),
+// a = t("../common/utils").normalizeReference,
+// s = t("../common/utils").isSpace;
+// e.exports = function(t, e) {
+// var i, l, u, c, h, d, p, f, m, g, v = "",
+// _ = t.pos,
+// y = t.posMax,
+// b = t.pos;
+// if (91 !== t.src.charCodeAt(t.pos)) return !1;
+// if (h = t.pos + 1, c = n(t, t.pos, !0), c < 0) return !1;
+// if (d = c + 1, d < y && 40 === t.src.charCodeAt(d)) {
+// for (d++; d < y && (l = t.src.charCodeAt(d), s(l) || 10 === l); d++);
+// if (d >= y) return !1;
+// for (b = d, p = r(t.src, d, t.posMax), p.ok && (v = t.md.normalizeLink(p.str), t.md.validateLink(v) ? d = p.pos : v = ""), b = d; d < y && (l = t.src.charCodeAt(d), s(l) || 10 === l); d++);
+// if (p = o(t.src, d, t.posMax), d < y && b !== d && p.ok) for (m = p.str, d = p.pos; d < y && (l = t.src.charCodeAt(d), s(l) || 10 === l); d++);
+// else m = "";
+// if (d >= y || 41 !== t.src.charCodeAt(d)) return t.pos = _, !1;
+// d++
+// } else {
+// if ("undefined" == typeof t.env.references) return !1;
+// if (d < y && 91 === t.src.charCodeAt(d) ? (b = d + 1, d = n(t, d), d >= 0 ? u = t.src.slice(b, d++) : d = c + 1) : d = c + 1, u || (u = t.src.slice(h, c)), f = t.env.references[a(u)], !f) return t.pos = _, !1;
+// v = f.href, m = f.title
+// }
+// return e || (t.pos = h, t.posMax = c, g = t.push("link_open", "a", 1), g.attrs = i = [
+// ["href", v]
+// ], m && i.push(["title", m]), t.md.inline.tokenize(t), g = t.push("link_close", "a", -1)), t.pos = d, t.posMax = y, !0
+// }
+// }, {
+// "../common/utils": 4,
+// "../helpers/parse_link_destination": 6,
+// "../helpers/parse_link_label": 7,
+// "../helpers/parse_link_title": 8
+// }],
+// 46: [function(t, e, i) {
+// "use strict";
+// e.exports = function(t, e) {
+// var i, n, r = t.pos;
+// if (10 !== t.src.charCodeAt(r)) return !1;
+// for (i = t.pending.length - 1, n = t.posMax, e || (i >= 0 && 32 === t.pending.charCodeAt(i) ? i >= 1 && 32 === t.pending.charCodeAt(i - 1) ? (t.pending = t.pending.replace(/ +$/, ""), t.push("hardbreak", "br", 0)) : (t.pending = t.pending.slice(0, -1), t.push("softbreak", "br", 0)) : t.push("softbreak", "br", 0)), r++; r < n && 32 === t.src.charCodeAt(r);) r++;
+// return t.pos = r, !0
+// }
+// }, {}],
+// 47: [function(t, e, i) {
+// "use strict";
+
+// function n(t, e, i, n) {
+// this.src = t, this.env = i, this.md = e, this.tokens = n, this.pos = 0, this.posMax = this.src.length, this.level = 0, this.pending = "", this.pendingLevel = 0, this.cache = {}, this.delimiters = []
+// }
+// var r = t("../token"),
+// o = t("../common/utils").isWhiteSpace,
+// a = t("../common/utils").isPunctChar,
+// s = t("../common/utils").isMdAsciiPunct;
+// n.prototype.pushPending = function() {
+// var t = new r("text", "", 0);
+// return t.content = this.pending, t.level = this.pendingLevel, this.tokens.push(t), this.pending = "", t
+// }, n.prototype.push = function(t, e, i) {
+// this.pending && this.pushPending();
+// var n = new r(t, e, i);
+// return i < 0 && this.level--, n.level = this.level, i > 0 && this.level++, this.pendingLevel = this.level, this.tokens.push(n), n
+// }, n.prototype.scanDelims = function(t, e) {
+// var i, n, r, l, u, c, h, d, p, f = t,
+// m = !0,
+// g = !0,
+// v = this.posMax,
+// _ = this.src.charCodeAt(t);
+// for (i = t > 0 ? this.src.charCodeAt(t - 1) : 32; f < v && this.src.charCodeAt(f) === _;) f++;
+// return r = f - t, n = f < v ? this.src.charCodeAt(f) : 32, h = s(i) || a(String.fromCharCode(i)), p = s(n) || a(String.fromCharCode(n)), c = o(i), d = o(n), d ? m = !1 : p && (c || h || (m = !1)), c ? g = !1 : h && (d || p || (g = !1)), e ? (l = m, u = g) : (l = m && (!g || h), u = g && (!m || p)), {
+// can_open: l,
+// can_close: u,
+// length: r
+// }
+// }, n.prototype.Token = r, e.exports = n
+// }, {
+// "../common/utils": 4,
+// "../token": 51
+// }],
+// 48: [function(t, e, i) {
+// "use strict";
+// e.exports.tokenize = function(t, e) {
+// var i, n, r, o, a, s = t.pos,
+// l = t.src.charCodeAt(s);
+// if (e) return !1;
+// if (126 !== l) return !1;
+// if (n = t.scanDelims(t.pos, !0), o = n.length, a = String.fromCharCode(l), o < 2) return !1;
+// for (o % 2 && (r = t.push("text", "", 0), r.content = a, o--), i = 0; i < o; i += 2) r = t.push("text", "", 0), r.content = a + a, t.delimiters.push({
+// marker: l,
+// jump: i,
+// token: t.tokens.length - 1,
+// level: t.level,
+// end: -1,
+// open: n.can_open,
+// close: n.can_close
+// });
+// return t.pos += n.length, !0
+// }, e.exports.postProcess = function(t) {
+// var e, i, n, r, o, a = [],
+// s = t.delimiters,
+// l = t.delimiters.length;
+// for (e = 0; e < l; e++) n = s[e], 126 === n.marker && n.end !== -1 && (r = s[n.end], o = t.tokens[n.token], o.type = "s_open", o.tag = "s", o.nesting = 1, o.markup = "~~", o.content = "", o = t.tokens[r.token], o.type = "s_close", o.tag = "s", o.nesting = -1, o.markup = "~~", o.content = "", "text" === t.tokens[r.token - 1].type && "~" === t.tokens[r.token - 1].content && a.push(r.token - 1));
+// for (; a.length;) {
+// for (e = a.pop(), i = e + 1; i < t.tokens.length && "s_close" === t.tokens[i].type;) i++;
+// i--, e !== i && (o = t.tokens[i], t.tokens[i] = t.tokens[e], t.tokens[e] = o)
+// }
+// }
+// }, {}],
+// 49: [function(t, e, i) {
+// "use strict";
+
+// function n(t) {
+// switch (t) {
+// case 10:
+// case 33:
+// case 35:
+// case 36:
+// case 37:
+// case 38:
+// case 42:
+// case 43:
+// case 45:
+// case 58:
+// case 60:
+// case 61:
+// case 62:
+// case 64:
+// case 91:
+// case 92:
+// case 93:
+// case 94:
+// case 95:
+// case 96:
+// case 123:
+// case 125:
+// case 126:
+// return !0;
+// default:
+// return !1
+// }
+// }
+// e.exports = function(t, e) {
+// for (var i = t.pos; i < t.posMax && !n(t.src.charCodeAt(i));) i++;
+// return i !== t.pos && (e || (t.pending += t.src.slice(t.pos, i)), t.pos = i, !0)
+// }
+// }, {}],
+// 50: [function(t, e, i) {
+// "use strict";
+// e.exports = function(t) {
+// var e, i, n = 0,
+// r = t.tokens,
+// o = t.tokens.length;
+// for (e = i = 0; e < o; e++) n += r[e].nesting, r[e].level = n, "text" === r[e].type && e + 1 < o && "text" === r[e + 1].type ? r[e + 1].content = r[e].content + r[e + 1].content : (e !== i && (r[i] = r[e]), i++);
+// e !== i && (r.length = i)
+// }
+// }, {}],
+// 51: [function(t, e, i) {
+// "use strict";
+
+// function n(t, e, i) {
+// this.type = t, this.tag = e, this.attrs = null, this.map = null, this.nesting = i, this.level = 0, this.children = null, this.content = "", this.markup = "", this.info = "", this.meta = null, this.block = !1, this.hidden = !1
+// }
+// n.prototype.attrIndex = function(t) {
+// var e, i, n;
+// if (!this.attrs) return -1;
+// for (e = this.attrs, i = 0, n = e.length; i < n; i++) if (e[i][0] === t) return i;
+// return -1
+// }, n.prototype.attrPush = function(t) {
+// this.attrs ? this.attrs.push(t) : this.attrs = [t]
+// }, n.prototype.attrSet = function(t, e) {
+// var i = this.attrIndex(t),
+// n = [t, e];
+// i < 0 ? this.attrPush(n) : this.attrs[i] = n
+// }, n.prototype.attrGet = function(t) {
+// var e = this.attrIndex(t),
+// i = null;
+// return e >= 0 && (i = this.attrs[e][1]), i
+// }, n.prototype.attrJoin = function(t, e) {
+// var i = this.attrIndex(t);
+// i < 0 ? this.attrPush([t, e]) : this.attrs[i][1] = this.attrs[i][1] + " " + e
+// }, e.exports = n
+// }, {}],
+// 52: [function(e, i, n) {
+// (function(e) {
+// !
+// function(r) {
+// function o(t) {
+// throw new RangeError(N[t])
+// }
+// function a(t, e) {
+// for (var i = t.length, n = []; i--;) n[i] = e(t[i]);
+// return n
+// }
+// function s(t, e) {
+// var i = t.split("@"),
+// n = "";
+// i.length > 1 && (n = i[0] + "@", t = i[1]), t = t.replace(O, ".");
+// var r = t.split("."),
+// o = a(r, e).join(".");
+// return n + o
+// }
+// function l(t) {
+// for (var e, i, n = [], r = 0, o = t.length; r < o;) e = t.charCodeAt(r++), e >= 55296 && e <= 56319 && r < o ? (i = t.charCodeAt(r++), 56320 == (64512 & i) ? n.push(((1023 & e) << 10) + (1023 & i) + 65536) : (n.push(e), r--)) : n.push(e);
+// return n
+// }
+// function u(t) {
+// return a(t, function(t) {
+// var e = "";
+// return t > 65535 && (t -= 65536, e += F(t >>> 10 & 1023 | 55296), t = 56320 | 1023 & t), e += F(t)
+// }).join("")
+// }
+// function c(t) {
+// return t - 48 < 10 ? t - 22 : t - 65 < 26 ? t - 65 : t - 97 < 26 ? t - 97 : x
+// }
+// function h(t, e) {
+// return t + 22 + 75 * (t < 26) - ((0 != e) << 5)
+// }
+// function d(t, e, i) {
+// var n = 0;
+// for (t = i ? R(t / P) : t >> 1, t += R(t / e); t > I * k >> 1; n += x) t = R(t / I);
+// return R(n + (I + 1) * t / (t + L))
+// }
+// function p(t) {
+// var e, i, n, r, a, s, l, h, p, f, m = [],
+// g = t.length,
+// v = 0,
+// _ = T,
+// y = D;
+// for (i = t.lastIndexOf(S), i < 0 && (i = 0), n = 0; n < i; ++n) t.charCodeAt(n) >= 128 && o("not-basic"), m.push(t.charCodeAt(n));
+// for (r = i > 0 ? i + 1 : 0; r < g;) {
+// for (a = v, s = 1, l = x; r >= g && o("invalid-input"), h = c(t.charCodeAt(r++)), (h >= x || h > R((C - v) / s)) && o("overflow"), v += h * s, p = l <= y ? E : l >= y + k ? k : l - y, !(h < p); l += x) f = x - p, s > R(C / f) && o("overflow"), s *= f;
+// e = m.length + 1, y = d(v - a, e, 0 == a), R(v / e) > C - _ && o("overflow"), _ += R(v / e), v %= e, m.splice(v++, 0, _)
+// }
+// return u(m)
+// }
+// function f(t) {
+// var e, i, n, r, a, s, u, c, p, f, m, g, v, _, y, b = [];
+// for (t = l(t), g = t.length, e = T, i = 0, a = D, s = 0; s < g; ++s) m = t[s], m < 128 && b.push(F(m));
+// for (n = r = b.length, r && b.push(S); n < g;) {
+// for (u = C, s = 0; s < g; ++s) m = t[s], m >= e && m < u && (u = m);
+// for (v = n + 1, u - e > R((C - i) / v) && o("overflow"), i += (u - e) * v, e = u, s = 0; s < g; ++s) if (m = t[s], m < e && ++i > C && o("overflow"), m == e) {
+// for (c = i, p = x; f = p <= a ? E : p >= a + k ? k : p - a, !(c < f); p += x) y = c - f, _ = x - f, b.push(F(h(f + y % _, 0))), c = R(y / _);
+// b.push(F(h(c, 0))), a = d(i, v, n == r), i = 0, ++n
+// }++i, ++e
+// }
+// return b.join("")
+// }
+// function m(t) {
+// return s(t, function(t) {
+// return M.test(t) ? p(t.slice(4).toLowerCase()) : t
+// })
+// }
+// function g(t) {
+// return s(t, function(t) {
+// return A.test(t) ? "xn--" + f(t) : t
+// })
+// }
+// var v = "object" == typeof n && n && !n.nodeType && n,
+// _ = "object" == typeof i && i && !i.nodeType && i,
+// y = "object" == typeof e && e;
+// y.global !== y && y.window !== y && y.self !== y || (r = y);
+// var b, w, C = 2147483647,
+// x = 36,
+// E = 1,
+// k = 26,
+// L = 38,
+// P = 700,
+// D = 72,
+// T = 128,
+// S = "-",
+// M = /^xn--/,
+// A = /[^\x20-\x7E]/,
+// O = /[\x2E\u3002\uFF0E\uFF61]/g,
+// N = {
+// overflow: "Overflow: input needs wider integers to process",
+// "not-basic": "Illegal input >= 0x80 (not a basic code point)",
+// "invalid-input": "Invalid input"
+// },
+// I = x - E,
+// R = Math.floor,
+// F = String.fromCharCode;
+// if (b = {
+// version: "1.4.1",
+// ucs2: {
+// decode: l,
+// encode: u
+// },
+// decode: p,
+// encode: f,
+// toASCII: g,
+// toUnicode: m
+// }, "function" == typeof t && "object" == typeof t.amd && t.amd) t("punycode", function() {
+// return b
+// });
+// else if (v && _) if (i.exports == v) _.exports = b;
+// else for (w in b) b.hasOwnProperty(w) && (v[w] = b[w]);
+// else r.punycode = b
+// }(this)
+// }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
+// }, {}],
+// 53: [function(t, e, i) {
+// e.exports = {
+// Aacute: "Á",
+// aacute: "á",
+// Abreve: "Ă",
+// abreve: "ă",
+// ac: "∾",
+// acd: "∿",
+// acE: "∾̳",
+// Acirc: "Â",
+// acirc: "â",
+// acute: "´",
+// Acy: "А",
+// acy: "а",
+// AElig: "Æ",
+// aelig: "æ",
+// af: "",
+// Afr: "𝔄",
+// afr: "𝔞",
+// Agrave: "À",
+// agrave: "à",
+// alefsym: "ℵ",
+// aleph: "ℵ",
+// Alpha: "Α",
+// alpha: "α",
+// Amacr: "Ā",
+// amacr: "ā",
+// amalg: "⨿",
+// amp: "&",
+// AMP: "&",
+// andand: "⩕",
+// And: "⩓",
+// and: "∧",
+// andd: "⩜",
+// andslope: "⩘",
+// andv: "⩚",
+// ang: "∠",
+// ange: "⦤",
+// angle: "∠",
+// angmsdaa: "⦨",
+// angmsdab: "⦩",
+// angmsdac: "⦪",
+// angmsdad: "⦫",
+// angmsdae: "⦬",
+// angmsdaf: "⦭",
+// angmsdag: "⦮",
+// angmsdah: "⦯",
+// angmsd: "∡",
+// angrt: "∟",
+// angrtvb: "⊾",
+// angrtvbd: "⦝",
+// angsph: "∢",
+// angst: "Å",
+// angzarr: "⍼",
+// Aogon: "Ą",
+// aogon: "ą",
+// Aopf: "𝔸",
+// aopf: "𝕒",
+// apacir: "⩯",
+// ap: "≈",
+// apE: "⩰",
+// ape: "≊",
+// apid: "≋",
+// apos: "'",
+// ApplyFunction: "",
+// approx: "≈",
+// approxeq: "≊",
+// Aring: "Å",
+// aring: "å",
+// Ascr: "𝒜",
+// ascr: "𝒶",
+// Assign: "≔",
+// ast: "*",
+// asymp: "≈",
+// asympeq: "≍",
+// Atilde: "Ã",
+// atilde: "ã",
+// Auml: "Ä",
+// auml: "ä",
+// awconint: "∳",
+// awint: "⨑",
+// backcong: "≌",
+// backepsilon: "϶",
+// backprime: "‵",
+// backsim: "∽",
+// backsimeq: "⋍",
+// Backslash: "∖",
+// Barv: "⫧",
+// barvee: "⊽",
+// barwed: "⌅",
+// Barwed: "⌆",
+// barwedge: "⌅",
+// bbrk: "⎵",
+// bbrktbrk: "⎶",
+// bcong: "≌",
+// Bcy: "Б",
+// bcy: "б",
+// bdquo: "„",
+// becaus: "∵",
+// because: "∵",
+// Because: "∵",
+// bemptyv: "⦰",
+// bepsi: "϶",
+// bernou: "ℬ",
+// Bernoullis: "ℬ",
+// Beta: "Β",
+// beta: "β",
+// beth: "ℶ",
+// between: "≬",
+// Bfr: "𝔅",
+// bfr: "𝔟",
+// bigcap: "⋂",
+// bigcirc: "◯",
+// bigcup: "⋃",
+// bigodot: "⨀",
+// bigoplus: "⨁",
+// bigotimes: "⨂",
+// bigsqcup: "⨆",
+// bigstar: "★",
+// bigtriangledown: "▽",
+// bigtriangleup: "△",
+// biguplus: "⨄",
+// bigvee: "⋁",
+// bigwedge: "⋀",
+// bkarow: "⤍",
+// blacklozenge: "⧫",
+// blacksquare: "▪",
+// blacktriangle: "▴",
+// blacktriangledown: "▾",
+// blacktriangleleft: "◂",
+// blacktriangleright: "▸",
+// blank: "␣",
+// blk12: "▒",
+// blk14: "░",
+// blk34: "▓",
+// block: "█",
+// bne: "=⃥",
+// bnequiv: "≡⃥",
+// bNot: "⫭",
+// bnot: "⌐",
+// Bopf: "𝔹",
+// bopf: "𝕓",
+// bot: "⊥",
+// bottom: "⊥",
+// bowtie: "⋈",
+// boxbox: "⧉",
+// boxdl: "┐",
+// boxdL: "╕",
+// boxDl: "╖",
+// boxDL: "╗",
+// boxdr: "┌",
+// boxdR: "╒",
+// boxDr: "╓",
+// boxDR: "╔",
+// boxh: "─",
+// boxH: "═",
+// boxhd: "┬",
+// boxHd: "╤",
+// boxhD: "╥",
+// boxHD: "╦",
+// boxhu: "┴",
+// boxHu: "╧",
+// boxhU: "╨",
+// boxHU: "╩",
+// boxminus: "⊟",
+// boxplus: "⊞",
+// boxtimes: "⊠",
+// boxul: "┘",
+// boxuL: "╛",
+// boxUl: "╜",
+// boxUL: "╝",
+// boxur: "└",
+// boxuR: "╘",
+// boxUr: "╙",
+// boxUR: "╚",
+// boxv: "│",
+// boxV: "║",
+// boxvh: "┼",
+// boxvH: "╪",
+// boxVh: "╫",
+// boxVH: "╬",
+// boxvl: "┤",
+// boxvL: "╡",
+// boxVl: "╢",
+// boxVL: "╣",
+// boxvr: "├",
+// boxvR: "╞",
+// boxVr: "╟",
+// boxVR: "╠",
+// bprime: "‵",
+// breve: "˘",
+// Breve: "˘",
+// brvbar: "¦",
+// bscr: "𝒷",
+// Bscr: "ℬ",
+// bsemi: "⁏",
+// bsim: "∽",
+// bsime: "⋍",
+// bsolb: "⧅",
+// bsol: "\\",
+// bsolhsub: "⟈",
+// bull: "•",
+// bullet: "•",
+// bump: "≎",
+// bumpE: "⪮",
+// bumpe: "≏",
+// Bumpeq: "≎",
+// bumpeq: "≏",
+// Cacute: "Ć",
+// cacute: "ć",
+// capand: "⩄",
+// capbrcup: "⩉",
+// capcap: "⩋",
+// cap: "∩",
+// Cap: "⋒",
+// capcup: "⩇",
+// capdot: "⩀",
+// CapitalDifferentialD: "ⅅ",
+// caps: "∩︀",
+// caret: "⁁",
+// caron: "ˇ",
+// Cayleys: "ℭ",
+// ccaps: "⩍",
+// Ccaron: "Č",
+// ccaron: "č",
+// Ccedil: "Ç",
+// ccedil: "ç",
+// Ccirc: "Ĉ",
+// ccirc: "ĉ",
+// Cconint: "∰",
+// ccups: "⩌",
+// ccupssm: "⩐",
+// Cdot: "Ċ",
+// cdot: "ċ",
+// cedil: "¸",
+// Cedilla: "¸",
+// cemptyv: "⦲",
+// cent: "¢",
+// centerdot: "·",
+// CenterDot: "·",
+// cfr: "𝔠",
+// Cfr: "ℭ",
+// CHcy: "Ч",
+// chcy: "ч",
+// check: "✓",
+// checkmark: "✓",
+// Chi: "Χ",
+// chi: "χ",
+// circ: "ˆ",
+// circeq: "≗",
+// circlearrowleft: "↺",
+// circlearrowright: "↻",
+// circledast: "⊛",
+// circledcirc: "⊚",
+// circleddash: "⊝",
+// CircleDot: "⊙",
+// circledR: "®",
+// circledS: "Ⓢ",
+// CircleMinus: "⊖",
+// CirclePlus: "⊕",
+// CircleTimes: "⊗",
+// cir: "○",
+// cirE: "⧃",
+// cire: "≗",
+// cirfnint: "⨐",
+// cirmid: "⫯",
+// cirscir: "⧂",
+// ClockwiseContourIntegral: "∲",
+// CloseCurlyDoubleQuote: "”",
+// CloseCurlyQuote: "’",
+// clubs: "♣",
+// clubsuit: "♣",
+// colon: ":",
+// Colon: "∷",
+// Colone: "⩴",
+// colone: "≔",
+// coloneq: "≔",
+// comma: ",",
+// commat: "@",
+// comp: "∁",
+// compfn: "∘",
+// complement: "∁",
+// complexes: "ℂ",
+// cong: "≅",
+// congdot: "⩭",
+// Congruent: "≡",
+// conint: "∮",
+// Conint: "∯",
+// ContourIntegral: "∮",
+// copf: "𝕔",
+// Copf: "ℂ",
+// coprod: "∐",
+// Coproduct: "∐",
+// copy: "©",
+// COPY: "©",
+// copysr: "℗",
+// CounterClockwiseContourIntegral: "∳",
+// crarr: "↵",
+// cross: "✗",
+// Cross: "⨯",
+// Cscr: "𝒞",
+// cscr: "𝒸",
+// csub: "⫏",
+// csube: "⫑",
+// csup: "⫐",
+// csupe: "⫒",
+// ctdot: "⋯",
+// cudarrl: "⤸",
+// cudarrr: "⤵",
+// cuepr: "⋞",
+// cuesc: "⋟",
+// cularr: "↶",
+// cularrp: "⤽",
+// cupbrcap: "⩈",
+// cupcap: "⩆",
+// CupCap: "≍",
+// cup: "∪",
+// Cup: "⋓",
+// cupcup: "⩊",
+// cupdot: "⊍",
+// cupor: "⩅",
+// cups: "∪︀",
+// curarr: "↷",
+// curarrm: "⤼",
+// curlyeqprec: "⋞",
+// curlyeqsucc: "⋟",
+// curlyvee: "⋎",
+// curlywedge: "⋏",
+// curren: "¤",
+// curvearrowleft: "↶",
+// curvearrowright: "↷",
+// cuvee: "⋎",
+// cuwed: "⋏",
+// cwconint: "∲",
+// cwint: "∱",
+// cylcty: "⌭",
+// dagger: "†",
+// Dagger: "‡",
+// daleth: "ℸ",
+// darr: "↓",
+// Darr: "↡",
+// dArr: "⇓",
+// dash: "‐",
+// Dashv: "⫤",
+// dashv: "⊣",
+// dbkarow: "⤏",
+// dblac: "˝",
+// Dcaron: "Ď",
+// dcaron: "ď",
+// Dcy: "Д",
+// dcy: "д",
+// ddagger: "‡",
+// ddarr: "⇊",
+// DD: "ⅅ",
+// dd: "ⅆ",
+// DDotrahd: "⤑",
+// ddotseq: "⩷",
+// deg: "°",
+// Del: "∇",
+// Delta: "Δ",
+// delta: "δ",
+// demptyv: "⦱",
+// dfisht: "⥿",
+// Dfr: "𝔇",
+// dfr: "𝔡",
+// dHar: "⥥",
+// dharl: "⇃",
+// dharr: "⇂",
+// DiacriticalAcute: "´",
+// DiacriticalDot: "˙",
+// DiacriticalDoubleAcute: "˝",
+// DiacriticalGrave: "`",
+// DiacriticalTilde: "˜",
+// diam: "⋄",
+// diamond: "⋄",
+// Diamond: "⋄",
+// diamondsuit: "♦",
+// diams: "♦",
+// die: "¨",
+// DifferentialD: "ⅆ",
+// digamma: "ϝ",
+// disin: "⋲",
+// div: "÷",
+// divide: "÷",
+// divideontimes: "⋇",
+// divonx: "⋇",
+// DJcy: "Ђ",
+// djcy: "ђ",
+// dlcorn: "⌞",
+// dlcrop: "⌍",
+// dollar: "$",
+// Dopf: "𝔻",
+// dopf: "𝕕",
+// Dot: "¨",
+// dot: "˙",
+// DotDot: "⃜",
+// doteq: "≐",
+// doteqdot: "≑",
+// DotEqual: "≐",
+// dotminus: "∸",
+// dotplus: "∔",
+// dotsquare: "⊡",
+// doublebarwedge: "⌆",
+// DoubleContourIntegral: "∯",
+// DoubleDot: "¨",
+// DoubleDownArrow: "⇓",
+// DoubleLeftArrow: "⇐",
+// DoubleLeftRightArrow: "⇔",
+// DoubleLeftTee: "⫤",
+// DoubleLongLeftArrow: "⟸",
+// DoubleLongLeftRightArrow: "⟺",
+// DoubleLongRightArrow: "⟹",
+// DoubleRightArrow: "⇒",
+// DoubleRightTee: "⊨",
+// DoubleUpArrow: "⇑",
+// DoubleUpDownArrow: "⇕",
+// DoubleVerticalBar: "∥",
+// DownArrowBar: "⤓",
+// downarrow: "↓",
+// DownArrow: "↓",
+// Downarrow: "⇓",
+// DownArrowUpArrow: "⇵",
+// DownBreve: "̑",
+// downdownarrows: "⇊",
+// downharpoonleft: "⇃",
+// downharpoonright: "⇂",
+// DownLeftRightVector: "⥐",
+// DownLeftTeeVector: "⥞",
+// DownLeftVectorBar: "⥖",
+// DownLeftVector: "↽",
+// DownRightTeeVector: "⥟",
+// DownRightVectorBar: "⥗",
+// DownRightVector: "⇁",
+// DownTeeArrow: "↧",
+// DownTee: "⊤",
+// drbkarow: "⤐",
+// drcorn: "⌟",
+// drcrop: "⌌",
+// Dscr: "𝒟",
+// dscr: "𝒹",
+// DScy: "Ѕ",
+// dscy: "ѕ",
+// dsol: "⧶",
+// Dstrok: "Đ",
+// dstrok: "đ",
+// dtdot: "⋱",
+// dtri: "▿",
+// dtrif: "▾",
+// duarr: "⇵",
+// duhar: "⥯",
+// dwangle: "⦦",
+// DZcy: "Џ",
+// dzcy: "џ",
+// dzigrarr: "⟿",
+// Eacute: "É",
+// eacute: "é",
+// easter: "⩮",
+// Ecaron: "Ě",
+// ecaron: "ě",
+// Ecirc: "Ê",
+// ecirc: "ê",
+// ecir: "≖",
+// ecolon: "≕",
+// Ecy: "Э",
+// ecy: "э",
+// eDDot: "⩷",
+// Edot: "Ė",
+// edot: "ė",
+// eDot: "≑",
+// ee: "ⅇ",
+// efDot: "≒",
+// Efr: "𝔈",
+// efr: "𝔢",
+// eg: "⪚",
+// Egrave: "È",
+// egrave: "è",
+// egs: "⪖",
+// egsdot: "⪘",
+// el: "⪙",
+// Element: "∈",
+// elinters: "⏧",
+// ell: "ℓ",
+// els: "⪕",
+// elsdot: "⪗",
+// Emacr: "Ē",
+// emacr: "ē",
+// empty: "∅",
+// emptyset: "∅",
+// EmptySmallSquare: "◻",
+// emptyv: "∅",
+// EmptyVerySmallSquare: "▫",
+// emsp13: " ",
+// emsp14: " ",
+// emsp: " ",
+// ENG: "Ŋ",
+// eng: "ŋ",
+// ensp: " ",
+// Eogon: "Ę",
+// eogon: "ę",
+// Eopf: "𝔼",
+// eopf: "𝕖",
+// epar: "⋕",
+// eparsl: "⧣",
+// eplus: "⩱",
+// epsi: "ε",
+// Epsilon: "Ε",
+// epsilon: "ε",
+// epsiv: "ϵ",
+// eqcirc: "≖",
+// eqcolon: "≕",
+// eqsim: "≂",
+// eqslantgtr: "⪖",
+// eqslantless: "⪕",
+// Equal: "⩵",
+// equals: "=",
+// EqualTilde: "≂",
+// equest: "≟",
+// Equilibrium: "⇌",
+// equiv: "≡",
+// equivDD: "⩸",
+// eqvparsl: "⧥",
+// erarr: "⥱",
+// erDot: "≓",
+// escr: "ℯ",
+// Escr: "ℰ",
+// esdot: "≐",
+// Esim: "⩳",
+// esim: "≂",
+// Eta: "Η",
+// eta: "η",
+// ETH: "Ð",
+// eth: "ð",
+// Euml: "Ë",
+// euml: "ë",
+// euro: "€",
+// excl: "!",
+// exist: "∃",
+// Exists: "∃",
+// expectation: "ℰ",
+// exponentiale: "ⅇ",
+// ExponentialE: "ⅇ",
+// fallingdotseq: "≒",
+// Fcy: "Ф",
+// fcy: "ф",
+// female: "♀",
+// ffilig: "ffi",
+// fflig: "ff",
+// ffllig: "ffl",
+// Ffr: "𝔉",
+// ffr: "𝔣",
+// filig: "fi",
+// FilledSmallSquare: "◼",
+// FilledVerySmallSquare: "▪",
+// fjlig: "fj",
+// flat: "♭",
+// fllig: "fl",
+// fltns: "▱",
+// fnof: "ƒ",
+// Fopf: "𝔽",
+// fopf: "𝕗",
+// forall: "∀",
+// ForAll: "∀",
+// fork: "⋔",
+// forkv: "⫙",
+// Fouriertrf: "ℱ",
+// fpartint: "⨍",
+// frac12: "½",
+// frac13: "⅓",
+// frac14: "¼",
+// frac15: "⅕",
+// frac16: "⅙",
+// frac18: "⅛",
+// frac23: "⅔",
+// frac25: "⅖",
+// frac34: "¾",
+// frac35: "⅗",
+// frac38: "⅜",
+// frac45: "⅘",
+// frac56: "⅚",
+// frac58: "⅝",
+// frac78: "⅞",
+// frasl: "⁄",
+// frown: "⌢",
+// fscr: "𝒻",
+// Fscr: "ℱ",
+// gacute: "ǵ",
+// Gamma: "Γ",
+// gamma: "γ",
+// Gammad: "Ϝ",
+// gammad: "ϝ",
+// gap: "⪆",
+// Gbreve: "Ğ",
+// gbreve: "ğ",
+// Gcedil: "Ģ",
+// Gcirc: "Ĝ",
+// gcirc: "ĝ",
+// Gcy: "Г",
+// gcy: "г",
+// Gdot: "Ġ",
+// gdot: "ġ",
+// ge: "≥",
+// gE: "≧",
+// gEl: "⪌",
+// gel: "⋛",
+// geq: "≥",
+// geqq: "≧",
+// geqslant: "⩾",
+// gescc: "⪩",
+// ges: "⩾",
+// gesdot: "⪀",
+// gesdoto: "⪂",
+// gesdotol: "⪄",
+// gesl: "⋛︀",
+// gesles: "⪔",
+// Gfr: "𝔊",
+// gfr: "𝔤",
+// gg: "≫",
+// Gg: "⋙",
+// ggg: "⋙",
+// gimel: "ℷ",
+// GJcy: "Ѓ",
+// gjcy: "ѓ",
+// gla: "⪥",
+// gl: "≷",
+// glE: "⪒",
+// glj: "⪤",
+// gnap: "⪊",
+// gnapprox: "⪊",
+// gne: "⪈",
+// gnE: "≩",
+// gneq: "⪈",
+// gneqq: "≩",
+// gnsim: "⋧",
+// Gopf: "𝔾",
+// gopf: "𝕘",
+// grave: "`",
+// GreaterEqual: "≥",
+// GreaterEqualLess: "⋛",
+// GreaterFullEqual: "≧",
+// GreaterGreater: "⪢",
+// GreaterLess: "≷",
+// GreaterSlantEqual: "⩾",
+// GreaterTilde: "≳",
+// Gscr: "𝒢",
+// gscr: "ℊ",
+// gsim: "≳",
+// gsime: "⪎",
+// gsiml: "⪐",
+// gtcc: "⪧",
+// gtcir: "⩺",
+// gt: ">",
+// GT: ">",
+// Gt: "≫",
+// gtdot: "⋗",
+// gtlPar: "⦕",
+// gtquest: "⩼",
+// gtrapprox: "⪆",
+// gtrarr: "⥸",
+// gtrdot: "⋗",
+// gtreqless: "⋛",
+// gtreqqless: "⪌",
+// gtrless: "≷",
+// gtrsim: "≳",
+// gvertneqq: "≩︀",
+// gvnE: "≩︀",
+// Hacek: "ˇ",
+// hairsp: " ",
+// half: "½",
+// hamilt: "ℋ",
+// HARDcy: "Ъ",
+// hardcy: "ъ",
+// harrcir: "⥈",
+// harr: "↔",
+// hArr: "⇔",
+// harrw: "↭",
+// Hat: "^",
+// hbar: "ℏ",
+// Hcirc: "Ĥ",
+// hcirc: "ĥ",
+// hearts: "♥",
+// heartsuit: "♥",
+// hellip: "…",
+// hercon: "⊹",
+// hfr: "𝔥",
+// Hfr: "ℌ",
+// HilbertSpace: "ℋ",
+// hksearow: "⤥",
+// hkswarow: "⤦",
+// hoarr: "⇿",
+// homtht: "∻",
+// hookleftarrow: "↩",
+// hookrightarrow: "↪",
+// hopf: "𝕙",
+// Hopf: "ℍ",
+// horbar: "―",
+// HorizontalLine: "─",
+// hscr: "𝒽",
+// Hscr: "ℋ",
+// hslash: "ℏ",
+// Hstrok: "Ħ",
+// hstrok: "ħ",
+// HumpDownHump: "≎",
+// HumpEqual: "≏",
+// hybull: "⁃",
+// hyphen: "‐",
+// Iacute: "Í",
+// iacute: "í",
+// ic: "",
+// Icirc: "Î",
+// icirc: "î",
+// Icy: "И",
+// icy: "и",
+// Idot: "İ",
+// IEcy: "Е",
+// iecy: "е",
+// iexcl: "¡",
+// iff: "⇔",
+// ifr: "𝔦",
+// Ifr: "ℑ",
+// Igrave: "Ì",
+// igrave: "ì",
+// ii: "ⅈ",
+// iiiint: "⨌",
+// iiint: "∭",
+// iinfin: "⧜",
+// iiota: "℩",
+// IJlig: "IJ",
+// ijlig: "ij",
+// Imacr: "Ī",
+// imacr: "ī",
+// image: "ℑ",
+// ImaginaryI: "ⅈ",
+// imagline: "ℐ",
+// imagpart: "ℑ",
+// imath: "ı",
+// Im: "ℑ",
+// imof: "⊷",
+// imped: "Ƶ",
+// Implies: "⇒",
+// incare: "℅",
+// "in": "∈",
+// infin: "∞",
+// infintie: "⧝",
+// inodot: "ı",
+// intcal: "⊺",
+// "int": "∫",
+// Int: "∬",
+// integers: "ℤ",
+// Integral: "∫",
+// intercal: "⊺",
+// Intersection: "⋂",
+// intlarhk: "⨗",
+// intprod: "⨼",
+// InvisibleComma: "",
+// InvisibleTimes: "",
+// IOcy: "Ё",
+// iocy: "ё",
+// Iogon: "Į",
+// iogon: "į",
+// Iopf: "𝕀",
+// iopf: "𝕚",
+// Iota: "Ι",
+// iota: "ι",
+// iprod: "⨼",
+// iquest: "¿",
+// iscr: "𝒾",
+// Iscr: "ℐ",
+// isin: "∈",
+// isindot: "⋵",
+// isinE: "⋹",
+// isins: "⋴",
+// isinsv: "⋳",
+// isinv: "∈",
+// it: "",
+// Itilde: "Ĩ",
+// itilde: "ĩ",
+// Iukcy: "І",
+// iukcy: "і",
+// Iuml: "Ï",
+// iuml: "ï",
+// Jcirc: "Ĵ",
+// jcirc: "ĵ",
+// Jcy: "Й",
+// jcy: "й",
+// Jfr: "𝔍",
+// jfr: "𝔧",
+// jmath: "ȷ",
+// Jopf: "𝕁",
+// jopf: "𝕛",
+// Jscr: "𝒥",
+// jscr: "𝒿",
+// Jsercy: "Ј",
+// jsercy: "ј",
+// Jukcy: "Є",
+// jukcy: "є",
+// Kappa: "Κ",
+// kappa: "κ",
+// kappav: "ϰ",
+// Kcedil: "Ķ",
+// kcedil: "ķ",
+// Kcy: "К",
+// kcy: "к",
+// Kfr: "𝔎",
+// kfr: "𝔨",
+// kgreen: "ĸ",
+// KHcy: "Х",
+// khcy: "х",
+// KJcy: "Ќ",
+// kjcy: "ќ",
+// Kopf: "𝕂",
+// kopf: "𝕜",
+// Kscr: "𝒦",
+// kscr: "𝓀",
+// lAarr: "⇚",
+// Lacute: "Ĺ",
+// lacute: "ĺ",
+// laemptyv: "⦴",
+// lagran: "ℒ",
+// Lambda: "Λ",
+// lambda: "λ",
+// lang: "⟨",
+// Lang: "⟪",
+// langd: "⦑",
+// langle: "⟨",
+// lap: "⪅",
+// Laplacetrf: "ℒ",
+// laquo: "«",
+// larrb: "⇤",
+// larrbfs: "⤟",
+// larr: "←",
+// Larr: "↞",
+// lArr: "⇐",
+// larrfs: "⤝",
+// larrhk: "↩",
+// larrlp: "↫",
+// larrpl: "⤹",
+// larrsim: "⥳",
+// larrtl: "↢",
+// latail: "⤙",
+// lAtail: "⤛",
+// lat: "⪫",
+// late: "⪭",
+// lates: "⪭︀",
+// lbarr: "⤌",
+// lBarr: "⤎",
+// lbbrk: "❲",
+// lbrace: "{",
+// lbrack: "[",
+// lbrke: "⦋",
+// lbrksld: "⦏",
+// lbrkslu: "⦍",
+// Lcaron: "Ľ",
+// lcaron: "ľ",
+// Lcedil: "Ļ",
+// lcedil: "ļ",
+// lceil: "⌈",
+// lcub: "{",
+// Lcy: "Л",
+// lcy: "л",
+// ldca: "⤶",
+// ldquo: "“",
+// ldquor: "„",
+// ldrdhar: "⥧",
+// ldrushar: "⥋",
+// ldsh: "↲",
+// le: "≤",
+// lE: "≦",
+// LeftAngleBracket: "⟨",
+// LeftArrowBar: "⇤",
+// leftarrow: "←",
+// LeftArrow: "←",
+// Leftarrow: "⇐",
+// LeftArrowRightArrow: "⇆",
+// leftarrowtail: "↢",
+// LeftCeiling: "⌈",
+// LeftDoubleBracket: "⟦",
+// LeftDownTeeVector: "⥡",
+// LeftDownVectorBar: "⥙",
+// LeftDownVector: "⇃",
+// LeftFloor: "⌊",
+// leftharpoondown: "↽",
+// leftharpoonup: "↼",
+// leftleftarrows: "⇇",
+// leftrightarrow: "↔",
+// LeftRightArrow: "↔",
+// Leftrightarrow: "⇔",
+// leftrightarrows: "⇆",
+// leftrightharpoons: "⇋",
+// leftrightsquigarrow: "↭",
+// LeftRightVector: "⥎",
+// LeftTeeArrow: "↤",
+// LeftTee: "⊣",
+// LeftTeeVector: "⥚",
+// leftthreetimes: "⋋",
+// LeftTriangleBar: "⧏",
+// LeftTriangle: "⊲",
+// LeftTriangleEqual: "⊴",
+// LeftUpDownVector: "⥑",
+// LeftUpTeeVector: "⥠",
+// LeftUpVectorBar: "⥘",
+// LeftUpVector: "↿",
+// LeftVectorBar: "⥒",
+// LeftVector: "↼",
+// lEg: "⪋",
+// leg: "⋚",
+// leq: "≤",
+// leqq: "≦",
+// leqslant: "⩽",
+// lescc: "⪨",
+// les: "⩽",
+// lesdot: "⩿",
+// lesdoto: "⪁",
+// lesdotor: "⪃",
+// lesg: "⋚︀",
+// lesges: "⪓",
+// lessapprox: "⪅",
+// lessdot: "⋖",
+// lesseqgtr: "⋚",
+// lesseqqgtr: "⪋",
+// LessEqualGreater: "⋚",
+// LessFullEqual: "≦",
+// LessGreater: "≶",
+// lessgtr: "≶",
+// LessLess: "⪡",
+// lesssim: "≲",
+// LessSlantEqual: "⩽",
+// LessTilde: "≲",
+// lfisht: "⥼",
+// lfloor: "⌊",
+// Lfr: "𝔏",
+// lfr: "𝔩",
+// lg: "≶",
+// lgE: "⪑",
+// lHar: "⥢",
+// lhard: "↽",
+// lharu: "↼",
+// lharul: "⥪",
+// lhblk: "▄",
+// LJcy: "Љ",
+// ljcy: "љ",
+// llarr: "⇇",
+// ll: "≪",
+// Ll: "⋘",
+// llcorner: "⌞",
+// Lleftarrow: "⇚",
+// llhard: "⥫",
+// lltri: "◺",
+// Lmidot: "Ŀ",
+// lmidot: "ŀ",
+// lmoustache: "⎰",
+// lmoust: "⎰",
+// lnap: "⪉",
+// lnapprox: "⪉",
+// lne: "⪇",
+// lnE: "≨",
+// lneq: "⪇",
+// lneqq: "≨",
+// lnsim: "⋦",
+// loang: "⟬",
+// loarr: "⇽",
+// lobrk: "⟦",
+// longleftarrow: "⟵",
+// LongLeftArrow: "⟵",
+// Longleftarrow: "⟸",
+// longleftrightarrow: "⟷",
+// LongLeftRightArrow: "⟷",
+// Longleftrightarrow: "⟺",
+// longmapsto: "⟼",
+// longrightarrow: "⟶",
+// LongRightArrow: "⟶",
+// Longrightarrow: "⟹",
+// looparrowleft: "↫",
+// looparrowright: "↬",
+// lopar: "⦅",
+// Lopf: "𝕃",
+// lopf: "𝕝",
+// loplus: "⨭",
+// lotimes: "⨴",
+// lowast: "∗",
+// lowbar: "_",
+// LowerLeftArrow: "↙",
+// LowerRightArrow: "↘",
+// loz: "◊",
+// lozenge: "◊",
+// lozf: "⧫",
+// lpar: "(",
+// lparlt: "⦓",
+// lrarr: "⇆",
+// lrcorner: "⌟",
+// lrhar: "⇋",
+// lrhard: "⥭",
+// lrm: "",
+// lrtri: "⊿",
+// lsaquo: "‹",
+// lscr: "𝓁",
+// Lscr: "ℒ",
+// lsh: "↰",
+// Lsh: "↰",
+// lsim: "≲",
+// lsime: "⪍",
+// lsimg: "⪏",
+// lsqb: "[",
+// lsquo: "‘",
+// lsquor: "‚",
+// Lstrok: "Ł",
+// lstrok: "ł",
+// ltcc: "⪦",
+// ltcir: "⩹",
+// lt: "<",
+// LT: "<",
+// Lt: "≪",
+// ltdot: "⋖",
+// lthree: "⋋",
+// ltimes: "⋉",
+// ltlarr: "⥶",
+// ltquest: "⩻",
+// ltri: "◃",
+// ltrie: "⊴",
+// ltrif: "◂",
+// ltrPar: "⦖",
+// lurdshar: "⥊",
+// luruhar: "⥦",
+// lvertneqq: "≨︀",
+// lvnE: "≨︀",
+// macr: "¯",
+// male: "♂",
+// malt: "✠",
+// maltese: "✠",
+// Map: "⤅",
+// map: "↦",
+// mapsto: "↦",
+// mapstodown: "↧",
+// mapstoleft: "↤",
+// mapstoup: "↥",
+// marker: "▮",
+// mcomma: "⨩",
+// Mcy: "М",
+// mcy: "м",
+// mdash: "—",
+// mDDot: "∺",
+// measuredangle: "∡",
+// MediumSpace: " ",
+// Mellintrf: "ℳ",
+// Mfr: "𝔐",
+// mfr: "𝔪",
+// mho: "℧",
+// micro: "µ",
+// midast: "*",
+// midcir: "⫰",
+// mid: "∣",
+// middot: "·",
+// minusb: "⊟",
+// minus: "−",
+// minusd: "∸",
+// minusdu: "⨪",
+// MinusPlus: "∓",
+// mlcp: "⫛",
+// mldr: "…",
+// mnplus: "∓",
+// models: "⊧",
+// Mopf: "𝕄",
+// mopf: "𝕞",
+// mp: "∓",
+// mscr: "𝓂",
+// Mscr: "ℳ",
+// mstpos: "∾",
+// Mu: "Μ",
+// mu: "μ",
+// multimap: "⊸",
+// mumap: "⊸",
+// nabla: "∇",
+// Nacute: "Ń",
+// nacute: "ń",
+// nang: "∠⃒",
+// nap: "≉",
+// napE: "⩰̸",
+// napid: "≋̸",
+// napos: "ʼn",
+// napprox: "≉",
+// natural: "♮",
+// naturals: "ℕ",
+// natur: "♮",
+// nbsp: " ",
+// nbump: "≎̸",
+// nbumpe: "≏̸",
+// ncap: "⩃",
+// Ncaron: "Ň",
+// ncaron: "ň",
+// Ncedil: "Ņ",
+// ncedil: "ņ",
+// ncong: "≇",
+// ncongdot: "⩭̸",
+// ncup: "⩂",
+// Ncy: "Н",
+// ncy: "н",
+// ndash: "–",
+// nearhk: "⤤",
+// nearr: "↗",
+// neArr: "⇗",
+// nearrow: "↗",
+// ne: "≠",
+// nedot: "≐̸",
+// NegativeMediumSpace: "",
+// NegativeThickSpace: "",
+// NegativeThinSpace: "",
+// NegativeVeryThinSpace: "",
+// nequiv: "≢",
+// nesear: "⤨",
+// nesim: "≂̸",
+// NestedGreaterGreater: "≫",
+// NestedLessLess: "≪",
+// NewLine: "\n",
+// nexist: "∄",
+// nexists: "∄",
+// Nfr: "𝔑",
+// nfr: "𝔫",
+// ngE: "≧̸",
+// nge: "≱",
+// ngeq: "≱",
+// ngeqq: "≧̸",
+// ngeqslant: "⩾̸",
+// nges: "⩾̸",
+// nGg: "⋙̸",
+// ngsim: "≵",
+// nGt: "≫⃒",
+// ngt: "≯",
+// ngtr: "≯",
+// nGtv: "≫̸",
+// nharr: "↮",
+// nhArr: "⇎",
+// nhpar: "⫲",
+// ni: "∋",
+// nis: "⋼",
+// nisd: "⋺",
+// niv: "∋",
+// NJcy: "Њ",
+// njcy: "њ",
+// nlarr: "↚",
+// nlArr: "⇍",
+// nldr: "‥",
+// nlE: "≦̸",
+// nle: "≰",
+// nleftarrow: "↚",
+// nLeftarrow: "⇍",
+// nleftrightarrow: "↮",
+// nLeftrightarrow: "⇎",
+// nleq: "≰",
+// nleqq: "≦̸",
+// nleqslant: "⩽̸",
+// nles: "⩽̸",
+// nless: "≮",
+// nLl: "⋘̸",
+// nlsim: "≴",
+// nLt: "≪⃒",
+// nlt: "≮",
+// nltri: "⋪",
+// nltrie: "⋬",
+// nLtv: "≪̸",
+// nmid: "∤",
+// NoBreak: "",
+// NonBreakingSpace: " ",
+// nopf: "𝕟",
+// Nopf: "ℕ",
+// Not: "⫬",
+// not: "¬",
+// NotCongruent: "≢",
+// NotCupCap: "≭",
+// NotDoubleVerticalBar: "∦",
+// NotElement: "∉",
+// NotEqual: "≠",
+// NotEqualTilde: "≂̸",
+// NotExists: "∄",
+// NotGreater: "≯",
+// NotGreaterEqual: "≱",
+// NotGreaterFullEqual: "≧̸",
+// NotGreaterGreater: "≫̸",
+// NotGreaterLess: "≹",
+// NotGreaterSlantEqual: "⩾̸",
+// NotGreaterTilde: "≵",
+// NotHumpDownHump: "≎̸",
+// NotHumpEqual: "≏̸",
+// notin: "∉",
+// notindot: "⋵̸",
+// notinE: "⋹̸",
+// notinva: "∉",
+// notinvb: "⋷",
+// notinvc: "⋶",
+// NotLeftTriangleBar: "⧏̸",
+// NotLeftTriangle: "⋪",
+// NotLeftTriangleEqual: "⋬",
+// NotLess: "≮",
+// NotLessEqual: "≰",
+// NotLessGreater: "≸",
+// NotLessLess: "≪̸",
+// NotLessSlantEqual: "⩽̸",
+// NotLessTilde: "≴",
+// NotNestedGreaterGreater: "⪢̸",
+// NotNestedLessLess: "⪡̸",
+// notni: "∌",
+// notniva: "∌",
+// notnivb: "⋾",
+// notnivc: "⋽",
+// NotPrecedes: "⊀",
+// NotPrecedesEqual: "⪯̸",
+// NotPrecedesSlantEqual: "⋠",
+// NotReverseElement: "∌",
+// NotRightTriangleBar: "⧐̸",
+// NotRightTriangle: "⋫",
+// NotRightTriangleEqual: "⋭",
+// NotSquareSubset: "⊏̸",
+// NotSquareSubsetEqual: "⋢",
+// NotSquareSuperset: "⊐̸",
+// NotSquareSupersetEqual: "⋣",
+// NotSubset: "⊂⃒",
+// NotSubsetEqual: "⊈",
+// NotSucceeds: "⊁",
+// NotSucceedsEqual: "⪰̸",
+// NotSucceedsSlantEqual: "⋡",
+// NotSucceedsTilde: "≿̸",
+// NotSuperset: "⊃⃒",
+// NotSupersetEqual: "⊉",
+// NotTilde: "≁",
+// NotTildeEqual: "≄",
+// NotTildeFullEqual: "≇",
+// NotTildeTilde: "≉",
+// NotVerticalBar: "∤",
+// nparallel: "∦",
+// npar: "∦",
+// nparsl: "⫽⃥",
+// npart: "∂̸",
+// npolint: "⨔",
+// npr: "⊀",
+// nprcue: "⋠",
+// nprec: "⊀",
+// npreceq: "⪯̸",
+// npre: "⪯̸",
+// nrarrc: "⤳̸",
+// nrarr: "↛",
+// nrArr: "⇏",
+// nrarrw: "↝̸",
+// nrightarrow: "↛",
+// nRightarrow: "⇏",
+// nrtri: "⋫",
+// nrtrie: "⋭",
+// nsc: "⊁",
+// nsccue: "⋡",
+// nsce: "⪰̸",
+// Nscr: "𝒩",
+// nscr: "𝓃",
+// nshortmid: "∤",
+// nshortparallel: "∦",
+// nsim: "≁",
+// nsime: "≄",
+// nsimeq: "≄",
+// nsmid: "∤",
+// nspar: "∦",
+// nsqsube: "⋢",
+// nsqsupe: "⋣",
+// nsub: "⊄",
+// nsubE: "⫅̸",
+// nsube: "⊈",
+// nsubset: "⊂⃒",
+// nsubseteq: "⊈",
+// nsubseteqq: "⫅̸",
+// nsucc: "⊁",
+// nsucceq: "⪰̸",
+// nsup: "⊅",
+// nsupE: "⫆̸",
+// nsupe: "⊉",
+// nsupset: "⊃⃒",
+// nsupseteq: "⊉",
+// nsupseteqq: "⫆̸",
+// ntgl: "≹",
+// Ntilde: "Ñ",
+// ntilde: "ñ",
+// ntlg: "≸",
+// ntriangleleft: "⋪",
+// ntrianglelefteq: "⋬",
+// ntriangleright: "⋫",
+// ntrianglerighteq: "⋭",
+// Nu: "Ν",
+// nu: "ν",
+// num: "#",
+// numero: "№",
+// numsp: " ",
+// nvap: "≍⃒",
+// nvdash: "⊬",
+// nvDash: "⊭",
+// nVdash: "⊮",
+// nVDash: "⊯",
+// nvge: "≥⃒",
+// nvgt: ">⃒",
+// nvHarr: "⤄",
+// nvinfin: "⧞",
+// nvlArr: "⤂",
+// nvle: "≤⃒",
+// nvlt: "<⃒",
+// nvltrie: "⊴⃒",
+// nvrArr: "⤃",
+// nvrtrie: "⊵⃒",
+// nvsim: "∼⃒",
+// nwarhk: "⤣",
+// nwarr: "↖",
+// nwArr: "⇖",
+// nwarrow: "↖",
+// nwnear: "⤧",
+// Oacute: "Ó",
+// oacute: "ó",
+// oast: "⊛",
+// Ocirc: "Ô",
+// ocirc: "ô",
+// ocir: "⊚",
+// Ocy: "О",
+// ocy: "о",
+// odash: "⊝",
+// Odblac: "Ő",
+// odblac: "ő",
+// odiv: "⨸",
+// odot: "⊙",
+// odsold: "⦼",
+// OElig: "Œ",
+// oelig: "œ",
+// ofcir: "⦿",
+// Ofr: "𝔒",
+// ofr: "𝔬",
+// ogon: "˛",
+// Ograve: "Ò",
+// ograve: "ò",
+// ogt: "⧁",
+// ohbar: "⦵",
+// ohm: "Ω",
+// oint: "∮",
+// olarr: "↺",
+// olcir: "⦾",
+// olcross: "⦻",
+// oline: "‾",
+// olt: "⧀",
+// Omacr: "Ō",
+// omacr: "ō",
+// Omega: "Ω",
+// omega: "ω",
+// Omicron: "Ο",
+// omicron: "ο",
+// omid: "⦶",
+// ominus: "⊖",
+// Oopf: "𝕆",
+// oopf: "𝕠",
+// opar: "⦷",
+// OpenCurlyDoubleQuote: "“",
+// OpenCurlyQuote: "‘",
+// operp: "⦹",
+// oplus: "⊕",
+// orarr: "↻",
+// Or: "⩔",
+// or: "∨",
+// ord: "⩝",
+// order: "ℴ",
+// orderof: "ℴ",
+// ordf: "ª",
+// ordm: "º",
+// origof: "⊶",
+// oror: "⩖",
+// orslope: "⩗",
+// orv: "⩛",
+// oS: "Ⓢ",
+// Oscr: "𝒪",
+// oscr: "ℴ",
+// Oslash: "Ø",
+// oslash: "ø",
+// osol: "⊘",
+// Otilde: "Õ",
+// otilde: "õ",
+// otimesas: "⨶",
+// Otimes: "⨷",
+// otimes: "⊗",
+// Ouml: "Ö",
+// ouml: "ö",
+// ovbar: "⌽",
+// OverBar: "‾",
+// OverBrace: "⏞",
+// OverBracket: "⎴",
+// OverParenthesis: "⏜",
+// para: "¶",
+// parallel: "∥",
+// par: "∥",
+// parsim: "⫳",
+// parsl: "⫽",
+// part: "∂",
+// PartialD: "∂",
+// Pcy: "П",
+// pcy: "п",
+// percnt: "%",
+// period: ".",
+// permil: "‰",
+// perp: "⊥",
+// pertenk: "‱",
+// Pfr: "𝔓",
+// pfr: "𝔭",
+// Phi: "Φ",
+// phi: "φ",
+// phiv: "ϕ",
+// phmmat: "ℳ",
+// phone: "☎",
+// Pi: "Π",
+// pi: "π",
+// pitchfork: "⋔",
+// piv: "ϖ",
+// planck: "ℏ",
+// planckh: "ℎ",
+// plankv: "ℏ",
+// plusacir: "⨣",
+// plusb: "⊞",
+// pluscir: "⨢",
+// plus: "+",
+// plusdo: "∔",
+// plusdu: "⨥",
+// pluse: "⩲",
+// PlusMinus: "±",
+// plusmn: "±",
+// plussim: "⨦",
+// plustwo: "⨧",
+// pm: "±",
+// Poincareplane: "ℌ",
+// pointint: "⨕",
+// popf: "𝕡",
+// Popf: "ℙ",
+// pound: "£",
+// prap: "⪷",
+// Pr: "⪻",
+// pr: "≺",
+// prcue: "≼",
+// precapprox: "⪷",
+// prec: "≺",
+// preccurlyeq: "≼",
+// Precedes: "≺",
+// PrecedesEqual: "⪯",
+// PrecedesSlantEqual: "≼",
+// PrecedesTilde: "≾",
+// preceq: "⪯",
+// precnapprox: "⪹",
+// precneqq: "⪵",
+// precnsim: "⋨",
+// pre: "⪯",
+// prE: "⪳",
+// precsim: "≾",
+// prime: "′",
+// Prime: "″",
+// primes: "ℙ",
+// prnap: "⪹",
+// prnE: "⪵",
+// prnsim: "⋨",
+// prod: "∏",
+// Product: "∏",
+// profalar: "⌮",
+// profline: "⌒",
+// profsurf: "⌓",
+// prop: "∝",
+// Proportional: "∝",
+// Proportion: "∷",
+// propto: "∝",
+// prsim: "≾",
+// prurel: "⊰",
+// Pscr: "𝒫",
+// pscr: "𝓅",
+// Psi: "Ψ",
+// psi: "ψ",
+// puncsp: " ",
+// Qfr: "𝔔",
+// qfr: "𝔮",
+// qint: "⨌",
+// qopf: "𝕢",
+// Qopf: "ℚ",
+// qprime: "⁗",
+// Qscr: "𝒬",
+// qscr: "𝓆",
+// quaternions: "ℍ",
+// quatint: "⨖",
+// quest: "?",
+// questeq: "≟",
+// quot: '"',
+// QUOT: '"',
+// rAarr: "⇛",
+// race: "∽̱",
+// Racute: "Ŕ",
+// racute: "ŕ",
+// radic: "√",
+// raemptyv: "⦳",
+// rang: "⟩",
+// Rang: "⟫",
+// rangd: "⦒",
+// range: "⦥",
+// rangle: "⟩",
+// raquo: "»",
+// rarrap: "⥵",
+// rarrb: "⇥",
+// rarrbfs: "⤠",
+// rarrc: "⤳",
+// rarr: "→",
+// Rarr: "↠",
+// rArr: "⇒",
+// rarrfs: "⤞",
+// rarrhk: "↪",
+// rarrlp: "↬",
+// rarrpl: "⥅",
+// rarrsim: "⥴",
+// Rarrtl: "⤖",
+// rarrtl: "↣",
+// rarrw: "↝",
+// ratail: "⤚",
+// rAtail: "⤜",
+// ratio: "∶",
+// rationals: "ℚ",
+// rbarr: "⤍",
+// rBarr: "⤏",
+// RBarr: "⤐",
+// rbbrk: "❳",
+// rbrace: "}",
+// rbrack: "]",
+// rbrke: "⦌",
+// rbrksld: "⦎",
+// rbrkslu: "⦐",
+// Rcaron: "Ř",
+// rcaron: "ř",
+// Rcedil: "Ŗ",
+// rcedil: "ŗ",
+// rceil: "⌉",
+// rcub: "}",
+// Rcy: "Р",
+// rcy: "р",
+// rdca: "⤷",
+// rdldhar: "⥩",
+// rdquo: "”",
+// rdquor: "”",
+// rdsh: "↳",
+// real: "ℜ",
+// realine: "ℛ",
+// realpart: "ℜ",
+// reals: "ℝ",
+// Re: "ℜ",
+// rect: "▭",
+// reg: "®",
+// REG: "®",
+// ReverseElement: "∋",
+// ReverseEquilibrium: "⇋",
+// ReverseUpEquilibrium: "⥯",
+// rfisht: "⥽",
+// rfloor: "⌋",
+// rfr: "𝔯",
+// Rfr: "ℜ",
+// rHar: "⥤",
+// rhard: "⇁",
+// rharu: "⇀",
+// rharul: "⥬",
+// Rho: "Ρ",
+// rho: "ρ",
+// rhov: "ϱ",
+// RightAngleBracket: "⟩",
+// RightArrowBar: "⇥",
+// rightarrow: "→",
+// RightArrow: "→",
+// Rightarrow: "⇒",
+// RightArrowLeftArrow: "⇄",
+// rightarrowtail: "↣",
+// RightCeiling: "⌉",
+// RightDoubleBracket: "⟧",
+// RightDownTeeVector: "⥝",
+// RightDownVectorBar: "⥕",
+// RightDownVector: "⇂",
+// RightFloor: "⌋",
+// rightharpoondown: "⇁",
+// rightharpoonup: "⇀",
+// rightleftarrows: "⇄",
+// rightleftharpoons: "⇌",
+// rightrightarrows: "⇉",
+// rightsquigarrow: "↝",
+// RightTeeArrow: "↦",
+// RightTee: "⊢",
+// RightTeeVector: "⥛",
+// rightthreetimes: "⋌",
+// RightTriangleBar: "⧐",
+// RightTriangle: "⊳",
+// RightTriangleEqual: "⊵",
+// RightUpDownVector: "⥏",
+// RightUpTeeVector: "⥜",
+// RightUpVectorBar: "⥔",
+// RightUpVector: "↾",
+// RightVectorBar: "⥓",
+// RightVector: "⇀",
+// ring: "˚",
+// risingdotseq: "≓",
+// rlarr: "⇄",
+// rlhar: "⇌",
+// rlm: "",
+// rmoustache: "⎱",
+// rmoust: "⎱",
+// rnmid: "⫮",
+// roang: "⟭",
+// roarr: "⇾",
+// robrk: "⟧",
+// ropar: "⦆",
+// ropf: "𝕣",
+// Ropf: "ℝ",
+// roplus: "⨮",
+// rotimes: "⨵",
+// RoundImplies: "⥰",
+// rpar: ")",
+// rpargt: "⦔",
+// rppolint: "⨒",
+// rrarr: "⇉",
+// Rrightarrow: "⇛",
+// rsaquo: "›",
+// rscr: "𝓇",
+// Rscr: "ℛ",
+// rsh: "↱",
+// Rsh: "↱",
+// rsqb: "]",
+// rsquo: "’",
+// rsquor: "’",
+// rthree: "⋌",
+// rtimes: "⋊",
+// rtri: "▹",
+// rtrie: "⊵",
+// rtrif: "▸",
+// rtriltri: "⧎",
+// RuleDelayed: "⧴",
+// ruluhar: "⥨",
+// rx: "℞",
+// Sacute: "Ś",
+// sacute: "ś",
+// sbquo: "‚",
+// scap: "⪸",
+// Scaron: "Š",
+// scaron: "š",
+// Sc: "⪼",
+// sc: "≻",
+// sccue: "≽",
+// sce: "⪰",
+// scE: "⪴",
+// Scedil: "Ş",
+// scedil: "ş",
+// Scirc: "Ŝ",
+// scirc: "ŝ",
+// scnap: "⪺",
+// scnE: "⪶",
+// scnsim: "⋩",
+// scpolint: "⨓",
+// scsim: "≿",
+// Scy: "С",
+// scy: "с",
+// sdotb: "⊡",
+// sdot: "⋅",
+// sdote: "⩦",
+// searhk: "⤥",
+// searr: "↘",
+// seArr: "⇘",
+// searrow: "↘",
+// sect: "§",
+// semi: ";",
+// seswar: "⤩",
+// setminus: "∖",
+// setmn: "∖",
+// sext: "✶",
+// Sfr: "𝔖",
+// sfr: "𝔰",
+// sfrown: "⌢",
+// sharp: "♯",
+// SHCHcy: "Щ",
+// shchcy: "щ",
+// SHcy: "Ш",
+// shcy: "ш",
+// ShortDownArrow: "↓",
+// ShortLeftArrow: "←",
+// shortmid: "∣",
+// shortparallel: "∥",
+// ShortRightArrow: "→",
+// ShortUpArrow: "↑",
+// shy: "",
+// Sigma: "Σ",
+// sigma: "σ",
+// sigmaf: "ς",
+// sigmav: "ς",
+// sim: "∼",
+// simdot: "⩪",
+// sime: "≃",
+// simeq: "≃",
+// simg: "⪞",
+// simgE: "⪠",
+// siml: "⪝",
+// simlE: "⪟",
+// simne: "≆",
+// simplus: "⨤",
+// simrarr: "⥲",
+// slarr: "←",
+// SmallCircle: "∘",
+// smallsetminus: "∖",
+// smashp: "⨳",
+// smeparsl: "⧤",
+// smid: "∣",
+// smile: "⌣",
+// smt: "⪪",
+// smte: "⪬",
+// smtes: "⪬︀",
+// SOFTcy: "Ь",
+// softcy: "ь",
+// solbar: "⌿",
+// solb: "⧄",
+// sol: "/",
+// Sopf: "𝕊",
+// sopf: "𝕤",
+// spades: "♠",
+// spadesuit: "♠",
+// spar: "∥",
+// sqcap: "⊓",
+// sqcaps: "⊓︀",
+// sqcup: "⊔",
+// sqcups: "⊔︀",
+// Sqrt: "√",
+// sqsub: "⊏",
+// sqsube: "⊑",
+// sqsubset: "⊏",
+// sqsubseteq: "⊑",
+// sqsup: "⊐",
+// sqsupe: "⊒",
+// sqsupset: "⊐",
+// sqsupseteq: "⊒",
+// square: "□",
+// Square: "□",
+// SquareIntersection: "⊓",
+// SquareSubset: "⊏",
+// SquareSubsetEqual: "⊑",
+// SquareSuperset: "⊐",
+// SquareSupersetEqual: "⊒",
+// SquareUnion: "⊔",
+// squarf: "▪",
+// squ: "□",
+// squf: "▪",
+// srarr: "→",
+// Sscr: "𝒮",
+// sscr: "𝓈",
+// ssetmn: "∖",
+// ssmile: "⌣",
+// sstarf: "⋆",
+// Star: "⋆",
+// star: "☆",
+// starf: "★",
+// straightepsilon: "ϵ",
+// straightphi: "ϕ",
+// strns: "¯",
+// sub: "⊂",
+// Sub: "⋐",
+// subdot: "⪽",
+// subE: "⫅",
+// sube: "⊆",
+// subedot: "⫃",
+// submult: "⫁",
+// subnE: "⫋",
+// subne: "⊊",
+// subplus: "⪿",
+// subrarr: "⥹",
+// subset: "⊂",
+// Subset: "⋐",
+// subseteq: "⊆",
+// subseteqq: "⫅",
+// SubsetEqual: "⊆",
+// subsetneq: "⊊",
+// subsetneqq: "⫋",
+// subsim: "⫇",
+// subsub: "⫕",
+// subsup: "⫓",
+// succapprox: "⪸",
+// succ: "≻",
+// succcurlyeq: "≽",
+// Succeeds: "≻",
+// SucceedsEqual: "⪰",
+// SucceedsSlantEqual: "≽",
+// SucceedsTilde: "≿",
+// succeq: "⪰",
+// succnapprox: "⪺",
+// succneqq: "⪶",
+// succnsim: "⋩",
+// succsim: "≿",
+// SuchThat: "∋",
+// sum: "∑",
+// Sum: "∑",
+// sung: "♪",
+// sup1: "¹",
+// sup2: "²",
+// sup3: "³",
+// sup: "⊃",
+// Sup: "⋑",
+// supdot: "⪾",
+// supdsub: "⫘",
+// supE: "⫆",
+// supe: "⊇",
+// supedot: "⫄",
+// Superset: "⊃",
+// SupersetEqual: "⊇",
+// suphsol: "⟉",
+// suphsub: "⫗",
+// suplarr: "⥻",
+// supmult: "⫂",
+// supnE: "⫌",
+// supne: "⊋",
+// supplus: "⫀",
+// supset: "⊃",
+// Supset: "⋑",
+// supseteq: "⊇",
+// supseteqq: "⫆",
+// supsetneq: "⊋",
+// supsetneqq: "⫌",
+// supsim: "⫈",
+// supsub: "⫔",
+// supsup: "⫖",
+// swarhk: "⤦",
+// swarr: "↙",
+// swArr: "⇙",
+// swarrow: "↙",
+// swnwar: "⤪",
+// szlig: "ß",
+// Tab: "\t",
+// target: "⌖",
+// Tau: "Τ",
+// tau: "τ",
+// tbrk: "⎴",
+// Tcaron: "Ť",
+// tcaron: "ť",
+// Tcedil: "Ţ",
+// tcedil: "ţ",
+// Tcy: "Т",
+// tcy: "т",
+// tdot: "⃛",
+// telrec: "⌕",
+// Tfr: "𝔗",
+// tfr: "𝔱",
+// there4: "∴",
+// therefore: "∴",
+// Therefore: "∴",
+// Theta: "Θ",
+// theta: "θ",
+// thetasym: "ϑ",
+// thetav: "ϑ",
+// thickapprox: "≈",
+// thicksim: "∼",
+// ThickSpace: " ",
+// ThinSpace: " ",
+// thinsp: " ",
+// thkap: "≈",
+// thksim: "∼",
+// THORN: "Þ",
+// thorn: "þ",
+// tilde: "˜",
+// Tilde: "∼",
+// TildeEqual: "≃",
+// TildeFullEqual: "≅",
+// TildeTilde: "≈",
+// timesbar: "⨱",
+// timesb: "⊠",
+// times: "×",
+// timesd: "⨰",
+// tint: "∭",
+// toea: "⤨",
+// topbot: "⌶",
+// topcir: "⫱",
+// top: "⊤",
+// Topf: "𝕋",
+// topf: "𝕥",
+// topfork: "⫚",
+// tosa: "⤩",
+// tprime: "‴",
+// trade: "™",
+// TRADE: "™",
+// triangle: "▵",
+// triangledown: "▿",
+// triangleleft: "◃",
+// trianglelefteq: "⊴",
+// triangleq: "≜",
+// triangleright: "▹",
+// trianglerighteq: "⊵",
+// tridot: "◬",
+// trie: "≜",
+// triminus: "⨺",
+// TripleDot: "⃛",
+// triplus: "⨹",
+// trisb: "⧍",
+// tritime: "⨻",
+// trpezium: "⏢",
+// Tscr: "𝒯",
+// tscr: "𝓉",
+// TScy: "Ц",
+// tscy: "ц",
+// TSHcy: "Ћ",
+// tshcy: "ћ",
+// Tstrok: "Ŧ",
+// tstrok: "ŧ",
+// twixt: "≬",
+// twoheadleftarrow: "↞",
+// twoheadrightarrow: "↠",
+// Uacute: "Ú",
+// uacute: "ú",
+// uarr: "↑",
+// Uarr: "↟",
+// uArr: "⇑",
+// Uarrocir: "⥉",
+// Ubrcy: "Ў",
+// ubrcy: "ў",
+// Ubreve: "Ŭ",
+// ubreve: "ŭ",
+// Ucirc: "Û",
+// ucirc: "û",
+// Ucy: "У",
+// ucy: "у",
+// udarr: "⇅",
+// Udblac: "Ű",
+// udblac: "ű",
+// udhar: "⥮",
+// ufisht: "⥾",
+// Ufr: "𝔘",
+// ufr: "𝔲",
+// Ugrave: "Ù",
+// ugrave: "ù",
+// uHar: "⥣",
+// uharl: "↿",
+// uharr: "↾",
+// uhblk: "▀",
+// ulcorn: "⌜",
+// ulcorner: "⌜",
+// ulcrop: "⌏",
+// ultri: "◸",
+// Umacr: "Ū",
+// umacr: "ū",
+// uml: "¨",
+// UnderBar: "_",
+// UnderBrace: "⏟",
+// UnderBracket: "⎵",
+// UnderParenthesis: "⏝",
+// Union: "⋃",
+// UnionPlus: "⊎",
+// Uogon: "Ų",
+// uogon: "ų",
+// Uopf: "𝕌",
+// uopf: "𝕦",
+// UpArrowBar: "⤒",
+// uparrow: "↑",
+// UpArrow: "↑",
+// Uparrow: "⇑",
+// UpArrowDownArrow: "⇅",
+// updownarrow: "↕",
+// UpDownArrow: "↕",
+// Updownarrow: "⇕",
+// UpEquilibrium: "⥮",
+// upharpoonleft: "↿",
+// upharpoonright: "↾",
+// uplus: "⊎",
+// UpperLeftArrow: "↖",
+// UpperRightArrow: "↗",
+// upsi: "υ",
+// Upsi: "ϒ",
+// upsih: "ϒ",
+// Upsilon: "Υ",
+// upsilon: "υ",
+// UpTeeArrow: "↥",
+// UpTee: "⊥",
+// upuparrows: "⇈",
+// urcorn: "⌝",
+// urcorner: "⌝",
+// urcrop: "⌎",
+// Uring: "Ů",
+// uring: "ů",
+// urtri: "◹",
+// Uscr: "𝒰",
+// uscr: "𝓊",
+// utdot: "⋰",
+// Utilde: "Ũ",
+// utilde: "ũ",
+// utri: "▵",
+// utrif: "▴",
+// uuarr: "⇈",
+// Uuml: "Ü",
+// uuml: "ü",
+// uwangle: "⦧",
+// vangrt: "⦜",
+// varepsilon: "ϵ",
+// varkappa: "ϰ",
+// varnothing: "∅",
+// varphi: "ϕ",
+// varpi: "ϖ",
+// varpropto: "∝",
+// varr: "↕",
+// vArr: "⇕",
+// varrho: "ϱ",
+// varsigma: "ς",
+// varsubsetneq: "⊊︀",
+// varsubsetneqq: "⫋︀",
+// varsupsetneq: "⊋︀",
+// varsupsetneqq: "⫌︀",
+// vartheta: "ϑ",
+// vartriangleleft: "⊲",
+// vartriangleright: "⊳",
+// vBar: "⫨",
+// Vbar: "⫫",
+// vBarv: "⫩",
+// Vcy: "В",
+// vcy: "в",
+// vdash: "⊢",
+// vDash: "⊨",
+// Vdash: "⊩",
+// VDash: "⊫",
+// Vdashl: "⫦",
+// veebar: "⊻",
+// vee: "∨",
+// Vee: "⋁",
+// veeeq: "≚",
+// vellip: "⋮",
+// verbar: "|",
+// Verbar: "‖",
+// vert: "|",
+// Vert: "‖",
+// VerticalBar: "∣",
+// VerticalLine: "|",
+// VerticalSeparator: "❘",
+// VerticalTilde: "≀",
+// VeryThinSpace: " ",
+// Vfr: "𝔙",
+// vfr: "𝔳",
+// vltri: "⊲",
+// vnsub: "⊂⃒",
+// vnsup: "⊃⃒",
+// Vopf: "𝕍",
+// vopf: "𝕧",
+// vprop: "∝",
+// vrtri: "⊳",
+// Vscr: "𝒱",
+// vscr: "𝓋",
+// vsubnE: "⫋︀",
+// vsubne: "⊊︀",
+// vsupnE: "⫌︀",
+// vsupne: "⊋︀",
+// Vvdash: "⊪",
+// vzigzag: "⦚",
+// Wcirc: "Ŵ",
+// wcirc: "ŵ",
+// wedbar: "⩟",
+// wedge: "∧",
+// Wedge: "⋀",
+// wedgeq: "≙",
+// weierp: "℘",
+// Wfr: "𝔚",
+// wfr: "𝔴",
+// Wopf: "𝕎",
+// wopf: "𝕨",
+// wp: "℘",
+// wr: "≀",
+// wreath: "≀",
+// Wscr: "𝒲",
+// wscr: "𝓌",
+// xcap: "⋂",
+// xcirc: "◯",
+// xcup: "⋃",
+// xdtri: "▽",
+// Xfr: "𝔛",
+// xfr: "𝔵",
+// xharr: "⟷",
+// xhArr: "⟺",
+// Xi: "Ξ",
+// xi: "ξ",
+// xlarr: "⟵",
+// xlArr: "⟸",
+// xmap: "⟼",
+// xnis: "⋻",
+// xodot: "⨀",
+// Xopf: "𝕏",
+// xopf: "𝕩",
+// xoplus: "⨁",
+// xotime: "⨂",
+// xrarr: "⟶",
+// xrArr: "⟹",
+// Xscr: "𝒳",
+// xscr: "𝓍",
+// xsqcup: "⨆",
+// xuplus: "⨄",
+// xutri: "△",
+// xvee: "⋁",
+// xwedge: "⋀",
+// Yacute: "Ý",
+// yacute: "ý",
+// YAcy: "Я",
+// yacy: "я",
+// Ycirc: "Ŷ",
+// ycirc: "ŷ",
+// Ycy: "Ы",
+// ycy: "ы",
+// yen: "¥",
+// Yfr: "𝔜",
+// yfr: "𝔶",
+// YIcy: "Ї",
+// yicy: "ї",
+// Yopf: "𝕐",
+// yopf: "𝕪",
+// Yscr: "𝒴",
+// yscr: "𝓎",
+// YUcy: "Ю",
+// yucy: "ю",
+// yuml: "ÿ",
+// Yuml: "Ÿ",
+// Zacute: "Ź",
+// zacute: "ź",
+// Zcaron: "Ž",
+// zcaron: "ž",
+// Zcy: "З",
+// zcy: "з",
+// Zdot: "Ż",
+// zdot: "ż",
+// zeetrf: "ℨ",
+// ZeroWidthSpace: "",
+// Zeta: "Ζ",
+// zeta: "ζ",
+// zfr: "𝔷",
+// Zfr: "ℨ",
+// ZHcy: "Ж",
+// zhcy: "ж",
+// zigrarr: "⇝",
+// zopf: "𝕫",
+// Zopf: "ℤ",
+// Zscr: "𝒵",
+// zscr: "𝓏",
+// zwj: "",
+// zwnj: ""
+// }
+// }, {}],
+// 54: [function(t, e, i) {
+// "use strict";
+
+// function n(t) {
+// var e = Array.prototype.slice.call(arguments, 1);
+// return e.forEach(function(e) {
+// e && Object.keys(e).forEach(function(i) {
+// t[i] = e[i]
+// })
+// }), t
+// }
+// function r(t) {
+// return Object.prototype.toString.call(t)
+// }
+// function o(t) {
+// return "[object String]" === r(t)
+// }
+// function a(t) {
+// return "[object Object]" === r(t)
+// }
+// function s(t) {
+// return "[object RegExp]" === r(t)
+// }
+// function l(t) {
+// return "[object Function]" === r(t)
+// }
+// function u(t) {
+// return t.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&")
+// }
+// function c(t) {
+// return Object.keys(t || {}).reduce(function(t, e) {
+// return t || _.hasOwnProperty(e)
+// }, !1)
+// }
+// function h(t) {
+// t.__index__ = -1, t.__text_cache__ = ""
+// }
+// function d(t) {
+// return function(e, i) {
+// var n = e.slice(i);
+// return t.test(n) ? n.match(t)[0].length : 0
+// }
+// }
+// function p() {
+// return function(t, e) {
+// e.normalize(t)
+// }
+// }
+// function f(e) {
+// function i(t) {
+// return t.replace("%TLDS%", r.src_tlds)
+// }
+// function n(t, e) {
+// throw new Error('(LinkifyIt) Invalid schema "' + t + '": ' + e)
+// }
+// var r = e.re = t("./lib/re")(e.__opts__),
+// c = e.__tlds__.slice();
+// e.onCompile(), e.__tlds_replaced__ || c.push(b), c.push(r.src_xn), r.src_tlds = c.join("|"), r.email_fuzzy = RegExp(i(r.tpl_email_fuzzy), "i"), r.link_fuzzy = RegExp(i(r.tpl_link_fuzzy), "i"), r.link_no_ip_fuzzy = RegExp(i(r.tpl_link_no_ip_fuzzy), "i"), r.host_fuzzy_test = RegExp(i(r.tpl_host_fuzzy_test), "i");
+// var f = [];
+// e.__compiled__ = {}, Object.keys(e.__schemas__).forEach(function(t) {
+// var i = e.__schemas__[t];
+// if (null !== i) {
+// var r = {
+// validate: null,
+// link: null
+// };
+// return e.__compiled__[t] = r, a(i) ? (s(i.validate) ? r.validate = d(i.validate) : l(i.validate) ? r.validate = i.validate : n(t, i), void(l(i.normalize) ? r.normalize = i.normalize : i.normalize ? n(t, i) : r.normalize = p())) : o(i) ? void f.push(t) : void n(t, i)
+// }
+// }), f.forEach(function(t) {
+// e.__compiled__[e.__schemas__[t]] && (e.__compiled__[t].validate = e.__compiled__[e.__schemas__[t]].validate, e.__compiled__[t].normalize = e.__compiled__[e.__schemas__[t]].normalize)
+// }), e.__compiled__[""] = {
+// validate: null,
+// normalize: p()
+// };
+// var m = Object.keys(e.__compiled__).filter(function(t) {
+// return t.length > 0 && e.__compiled__[t]
+// }).map(u).join("|");
+// e.re.schema_test = RegExp("(^|(?!_)(?:[><]|" + r.src_ZPCc + "))(" + m + ")", "i"), e.re.schema_search = RegExp("(^|(?!_)(?:[><]|" + r.src_ZPCc + "))(" + m + ")", "ig"), e.re.pretest = RegExp("(" + e.re.schema_test.source + ")|(" + e.re.host_fuzzy_test.source + ")|@", "i"), h(e)
+// }
+// function m(t, e) {
+// var i = t.__index__,
+// n = t.__last_index__,
+// r = t.__text_cache__.slice(i, n);
+// this.schema = t.__schema__.toLowerCase(), this.index = i + e, this.lastIndex = n + e, this.raw = r, this.text = r, this.url = r
+// }
+// function g(t, e) {
+// var i = new m(t, e);
+// return t.__compiled__[i.schema].normalize(i, t), i
+// }
+// function v(t, e) {
+// return this instanceof v ? (e || c(t) && (e = t, t = {}), this.__opts__ = n({}, _, e), this.__index__ = -1, this.__last_index__ = -1, this.__schema__ = "", this.__text_cache__ = "", this.__schemas__ = n({}, y, t), this.__compiled__ = {}, this.__tlds__ = w, this.__tlds_replaced__ = !1, this.re = {}, void f(this)) : new v(t, e)
+// }
+// var _ = {
+// fuzzyLink: !0,
+// fuzzyEmail: !0,
+// fuzzyIP: !1
+// },
+// y = {
+// "http:": {
+// validate: function(t, e, i) {
+// var n = t.slice(e);
+// return i.re.http || (i.re.http = new RegExp("^\\/\\/" + i.re.src_auth + i.re.src_host_port_strict + i.re.src_path, "i")), i.re.http.test(n) ? n.match(i.re.http)[0].length : 0
+// }
+// },
+// "https:": "http:",
+// "ftp:": "http:",
+// "//": {
+// validate: function(t, e, i) {
+// var n = t.slice(e);
+// return i.re.no_http || (i.re.no_http = new RegExp("^" + i.re.src_auth + "(?:localhost|(?:(?:" + i.re.src_domain + ")\\.)+" + i.re.src_domain_root + ")" + i.re.src_port + i.re.src_host_terminator + i.re.src_path, "i")), i.re.no_http.test(n) ? e >= 3 && ":" === t[e - 3] ? 0 : e >= 3 && "/" === t[e - 3] ? 0 : n.match(i.re.no_http)[0].length : 0
+// }
+// },
+// "mailto:": {
+// validate: function(t, e, i) {
+// var n = t.slice(e);
+// return i.re.mailto || (i.re.mailto = new RegExp("^" + i.re.src_email_name + "@" + i.re.src_host_strict, "i")), i.re.mailto.test(n) ? n.match(i.re.mailto)[0].length : 0
+// }
+// }
+// },
+// b = "a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",
+// w = "biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");
+// v.prototype.add = function(t, e) {
+// return this.__schemas__[t] = e, f(this), this
+// }, v.prototype.set = function(t) {
+// return this.__opts__ = n(this.__opts__, t), this
+// }, v.prototype.test = function(t) {
+// if (this.__text_cache__ = t, this.__index__ = -1, !t.length) return !1;
+// var e, i, n, r, o, a, s, l, u;
+// if (this.re.schema_test.test(t)) for (s = this.re.schema_search, s.lastIndex = 0; null !== (e = s.exec(t));) if (r = this.testSchemaAt(t, e[2], s.lastIndex)) {
+// this.__schema__ = e[2], this.__index__ = e.index + e[1].length, this.__last_index__ = e.index + e[0].length + r;
+// break
+// }
+// return this.__opts__.fuzzyLink && this.__compiled__["http:"] && (l = t.search(this.re.host_fuzzy_test), l >= 0 && (this.__index__ < 0 || l < this.__index__) && null !== (i = t.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) && (o = i.index + i[1].length, (this.__index__ < 0 || o < this.__index__) && (this.__schema__ = "", this.__index__ = o, this.__last_index__ = i.index + i[0].length))), this.__opts__.fuzzyEmail && this.__compiled__["mailto:"] && (u = t.indexOf("@"), u >= 0 && null !== (n = t.match(this.re.email_fuzzy)) && (o = n.index + n[1].length, a = n.index + n[0].length, (this.__index__ < 0 || o < this.__index__ || o === this.__index__ && a > this.__last_index__) && (this.__schema__ = "mailto:", this.__index__ = o, this.__last_index__ = a))), this.__index__ >= 0
+// }, v.prototype.pretest = function(t) {
+// return this.re.pretest.test(t)
+// }, v.prototype.testSchemaAt = function(t, e, i) {
+// return this.__compiled__[e.toLowerCase()] ? this.__compiled__[e.toLowerCase()].validate(t, i, this) : 0
+// }, v.prototype.match = function(t) {
+// var e = 0,
+// i = [];
+// this.__index__ >= 0 && this.__text_cache__ === t && (i.push(g(this, e)), e = this.__last_index__);
+// for (var n = e ? t.slice(e) : t; this.test(n);) i.push(g(this, e)), n = n.slice(this.__last_index__), e += this.__last_index__;
+// return i.length ? i : null
+// }, v.prototype.tlds = function(t, e) {
+// return t = Array.isArray(t) ? t : [t], e ? (this.__tlds__ = this.__tlds__.concat(t).sort().filter(function(t, e, i) {
+// return t !== i[e - 1]
+// }).reverse(), f(this), this) : (this.__tlds__ = t.slice(), this.__tlds_replaced__ = !0, f(this), this)
+// }, v.prototype.normalize = function(t) {
+// t.schema || (t.url = "http://" + t.url), "mailto:" !== t.schema || /^mailto:/i.test(t.url) || (t.url = "mailto:" + t.url)
+// }, v.prototype.onCompile = function() {}, e.exports = v
+// }, {
+// "./lib/re": 55
+// }],
+// 55: [function(t, e, i) {
+// "use strict";
+// e.exports = function(e) {
+// var i = {};
+// return i.src_Any = t("uc.micro/properties/Any/regex").source, i.src_Cc = t("uc.micro/categories/Cc/regex").source, i.src_Z = t("uc.micro/categories/Z/regex").source, i.src_P = t("uc.micro/categories/P/regex").source, i.src_ZPCc = [i.src_Z, i.src_P, i.src_Cc].join("|"), i.src_ZCc = [i.src_Z, i.src_Cc].join("|"), i.src_pseudo_letter = "(?:(?!>|<|" + i.src_ZPCc + ")" + i.src_Any + ")", i.src_ip4 = "(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)", i.src_auth = "(?:(?:(?!" + i.src_ZCc + "|[@/]).)+@)?", i.src_port = "(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?", i.src_host_terminator = "(?=$|>|<|" + i.src_ZPCc + ")(?!-|_|:\\d|\\.-|\\.(?!$|" + i.src_ZPCc + "))", i.src_path = "(?:[/?#](?:(?!" + i.src_ZCc + "|[()[\\]{}.,\"'?!\\-<>]).|\\[(?:(?!" + i.src_ZCc + "|\\]).)*\\]|\\((?:(?!" + i.src_ZCc + "|[)]).)*\\)|\\{(?:(?!" + i.src_ZCc + '|[}]).)*\\}|\\"(?:(?!' + i.src_ZCc + '|["]).)+\\"|\\\'(?:(?!' + i.src_ZCc + "|[']).)+\\'|\\'(?=" + i.src_pseudo_letter + "|[-]).|\\.{2,3}[a-zA-Z0-9%/]|\\.(?!" + i.src_ZCc + "|[.]).|" + (e && e["---"] ? "\\-(?!--(?:[^-]|$))(?:-*)|" : "\\-+|") + "\\,(?!" + i.src_ZCc + ").|\\!(?!" + i.src_ZCc + "|[!]).|\\?(?!" + i.src_ZCc + "|[?]).)+|\\/)?", i.src_email_name = '[\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]+', i.src_xn = "xn--[a-z0-9\\-]{1,59}", i.src_domain_root = "(?:" + i.src_xn + "|" + i.src_pseudo_letter + "{1,63})", i.src_domain = "(?:" + i.src_xn + "|(?:" + i.src_pseudo_letter + ")|(?:" + i.src_pseudo_letter + "(?:-(?!-)|" + i.src_pseudo_letter + "){0,61}" + i.src_pseudo_letter + "))", i.src_host = "(?:(?:(?:(?:" + i.src_domain + ")\\.)*" + i.src_domain_root + "))", i.tpl_host_fuzzy = "(?:" + i.src_ip4 + "|(?:(?:(?:" + i.src_domain + ")\\.)+(?:%TLDS%)))", i.tpl_host_no_ip_fuzzy = "(?:(?:(?:" + i.src_domain + ")\\.)+(?:%TLDS%))", i.src_host_strict = i.src_host + i.src_host_terminator, i.tpl_host_fuzzy_strict = i.tpl_host_fuzzy + i.src_host_terminator, i.src_host_port_strict = i.src_host + i.src_port + i.src_host_terminator, i.tpl_host_port_fuzzy_strict = i.tpl_host_fuzzy + i.src_port + i.src_host_terminator, i.tpl_host_port_no_ip_fuzzy_strict = i.tpl_host_no_ip_fuzzy + i.src_port + i.src_host_terminator, i.tpl_host_fuzzy_test = "localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:" + i.src_ZPCc + "|>|$))", i.tpl_email_fuzzy = "(^|<|>|\\(|" + i.src_ZCc + ")(" + i.src_email_name + "@" + i.tpl_host_fuzzy_strict + ")", i.tpl_link_fuzzy = "(^|(?![.:/\\-_@])(?:[$+<=>^`|]|" + i.src_ZPCc + "))((?![$+<=>^`|])" + i.tpl_host_port_fuzzy_strict + i.src_path + ")", i.tpl_link_no_ip_fuzzy = "(^|(?![.:/\\-_@])(?:[$+<=>^`|]|" + i.src_ZPCc + "))((?![$+<=>^`|])" + i.tpl_host_port_no_ip_fuzzy_strict + i.src_path + ")", i
+// }
+// }, {
+// "uc.micro/categories/Cc/regex": 61,
+// "uc.micro/categories/P/regex": 63,
+// "uc.micro/categories/Z/regex": 64,
+// "uc.micro/properties/Any/regex": 66
+// }],
+// 56: [function(t, e, i) {
+// "use strict";
+
+// function n(t) {
+// var e, i, n = o[t];
+// if (n) return n;
+// for (n = o[t] = [], e = 0; e < 128; e++) i = String.fromCharCode(e), n.push(i);
+// for (e = 0; e < t.length; e++) i = t.charCodeAt(e), n[i] = "%" + ("0" + i.toString(16).toUpperCase()).slice(-2);
+// return n
+// }
+// function r(t, e) {
+// var i;
+// return "string" != typeof e && (e = r.defaultChars), i = n(e), t.replace(/(%[a-f0-9]{2})+/gi, function(t) {
+// var e, n, r, o, a, s, l, u = "";
+// for (e = 0, n = t.length; e < n; e += 3) r = parseInt(t.slice(e + 1, e + 3), 16), r < 128 ? u += i[r] : 192 === (224 & r) && e + 3 < n && (o = parseInt(t.slice(e + 4, e + 6), 16), 128 === (192 & o)) ? (l = r << 6 & 1984 | 63 & o, u += l < 128 ? "��" : String.fromCharCode(l), e += 3) : 224 === (240 & r) && e + 6 < n && (o = parseInt(t.slice(e + 4, e + 6), 16), a = parseInt(t.slice(e + 7, e + 9), 16), 128 === (192 & o) && 128 === (192 & a)) ? (l = r << 12 & 61440 | o << 6 & 4032 | 63 & a, u += l < 2048 || l >= 55296 && l <= 57343 ? "���" : String.fromCharCode(l), e += 6) : 240 === (248 & r) && e + 9 < n && (o = parseInt(t.slice(e + 4, e + 6), 16), a = parseInt(t.slice(e + 7, e + 9), 16), s = parseInt(t.slice(e + 10, e + 12), 16), 128 === (192 & o) && 128 === (192 & a) && 128 === (192 & s)) ? (l = r << 18 & 1835008 | o << 12 & 258048 | a << 6 & 4032 | 63 & s, l < 65536 || l > 1114111 ? u += "����" : (l -= 65536, u += String.fromCharCode(55296 + (l >> 10), 56320 + (1023 & l))), e += 9) : u += "�";
+// return u
+// })
+// }
+// var o = {};
+// r.defaultChars = ";/?:@&=+$,#", r.componentChars = "", e.exports = r
+// }, {}],
+// 57: [function(t, e, i) {
+// "use strict";
+
+// function n(t) {
+// var e, i, n = o[t];
+// if (n) return n;
+// for (n = o[t] = [], e = 0; e < 128; e++) i = String.fromCharCode(e), /^[0-9a-z]$/i.test(i) ? n.push(i) : n.push("%" + ("0" + e.toString(16).toUpperCase()).slice(-2));
+// for (e = 0; e < t.length; e++) n[t.charCodeAt(e)] = t[e];
+// return n
+// }
+// function r(t, e, i) {
+// var o, a, s, l, u, c = "";
+// for ("string" != typeof e && (i = e, e = r.defaultChars), "undefined" == typeof i && (i = !0), u = n(e), o = 0, a = t.length; o < a; o++) if (s = t.charCodeAt(o), i && 37 === s && o + 2 < a && /^[0-9a-f]{2}$/i.test(t.slice(o + 1, o + 3))) c += t.slice(o, o + 3), o += 2;
+// else if (s < 128) c += u[s];
+// else if (s >= 55296 && s <= 57343) {
+// if (s >= 55296 && s <= 56319 && o + 1 < a && (l = t.charCodeAt(o + 1), l >= 56320 && l <= 57343)) {
+// c += encodeURIComponent(t[o] + t[o + 1]), o++;
+// continue
+// }
+// c += "%EF%BF%BD"
+// } else c += encodeURIComponent(t[o]);
+// return c
+// }
+// var o = {};
+// r.defaultChars = ";/?:@&=+$,-_.!~*'()#", r.componentChars = "-_.!~*'()", e.exports = r
+// }, {}],
+// 58: [function(t, e, i) {
+// "use strict";
+// e.exports = function(t) {
+// var e = "";
+// return e += t.protocol || "", e += t.slashes ? "//" : "", e += t.auth ? t.auth + "@" : "", e += t.hostname && t.hostname.indexOf(":") !== -1 ? "[" + t.hostname + "]" : t.hostname || "", e += t.port ? ":" + t.port : "", e += t.pathname || "", e += t.search || "", e += t.hash || ""
+// }
+// }, {}],
+// 59: [function(t, e, i) {
+// "use strict";
+// e.exports.encode = t("./encode"), e.exports.decode = t("./decode"), e.exports.format = t("./format"), e.exports.parse = t("./parse")
+// }, {
+// "./decode": 56,
+// "./encode": 57,
+// "./format": 58,
+// "./parse": 60
+// }],
+// 60: [function(t, e, i) {
+// "use strict";
+
+// function n() {
+// this.protocol = null, this.slashes = null, this.auth = null, this.port = null, this.hostname = null, this.hash = null, this.search = null, this.pathname = null
+// }
+// function r(t, e) {
+// if (t && t instanceof n) return t;
+// var i = new n;
+// return i.parse(t, e), i
+// }
+// var o = /^([a-z0-9.+-]+:)/i,
+// a = /:[0-9]*$/,
+// s = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,
+// l = ["<", ">", '"', "`", " ", "\r", "\n", "\t"],
+// u = ["{", "}", "|", "\\", "^", "`"].concat(l),
+// c = ["'"].concat(u),
+// h = ["%", "/", "?", ";", "#"].concat(c),
+// d = ["/", "?", "#"],
+// p = 255,
+// f = /^[+a-z0-9A-Z_-]{0,63}$/,
+// m = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,
+// g = {
+// javascript: !0,
+// "javascript:": !0
+// },
+// v = {
+// http: !0,
+// https: !0,
+// ftp: !0,
+// gopher: !0,
+// file: !0,
+// "http:": !0,
+// "https:": !0,
+// "ftp:": !0,
+// "gopher:": !0,
+// "file:": !0
+// };
+// n.prototype.parse = function(t, e) {
+// var i, n, r, a, l, u = t;
+// if (u = u.trim(), !e && 1 === t.split("#").length) {
+// var c = s.exec(u);
+// if (c) return this.pathname = c[1], c[2] && (this.search = c[2]), this
+// }
+// var _ = o.exec(u);
+// if (_ && (_ = _[0], r = _.toLowerCase(), this.protocol = _, u = u.substr(_.length)), (e || _ || u.match(/^\/\/[^@\/]+@[^@\/]+/)) && (l = "//" === u.substr(0, 2), !l || _ && g[_] || (u = u.substr(2), this.slashes = !0)), !g[_] && (l || _ && !v[_])) {
+// var y = -1;
+// for (i = 0; i < d.length; i++) a = u.indexOf(d[i]), a !== -1 && (y === -1 || a < y) && (y = a);
+// var b, w;
+// for (w = y === -1 ? u.lastIndexOf("@") : u.lastIndexOf("@", y), w !== -1 && (b = u.slice(0, w), u = u.slice(w + 1), this.auth = b), y = -1, i = 0; i < h.length; i++) a = u.indexOf(h[i]), a !== -1 && (y === -1 || a < y) && (y = a);
+// y === -1 && (y = u.length), ":" === u[y - 1] && y--;
+// var C = u.slice(0, y);
+// u = u.slice(y), this.parseHost(C), this.hostname = this.hostname || "";
+// var x = "[" === this.hostname[0] && "]" === this.hostname[this.hostname.length - 1];
+// if (!x) {
+// var E = this.hostname.split(/\./);
+// for (i = 0, n = E.length; i < n; i++) {
+// var k = E[i];
+// if (k && !k.match(f)) {
+// for (var L = "", P = 0, D = k.length; P < D; P++) L += k.charCodeAt(P) > 127 ? "x" : k[P];
+// if (!L.match(f)) {
+// var T = E.slice(0, i),
+// S = E.slice(i + 1),
+// M = k.match(m);
+// M && (T.push(M[1]), S.unshift(M[2])), S.length && (u = S.join(".") + u), this.hostname = T.join(".");
+// break
+// }
+// }
+// }
+// }
+// this.hostname.length > p && (this.hostname = ""), x && (this.hostname = this.hostname.substr(1, this.hostname.length - 2))
+// }
+// var A = u.indexOf("#");
+// A !== -1 && (this.hash = u.substr(A), u = u.slice(0, A));
+// var O = u.indexOf("?");
+// return O !== -1 && (this.search = u.substr(O), u = u.slice(0, O)), u && (this.pathname = u), v[r] && this.hostname && !this.pathname && (this.pathname = ""), this
+// }, n.prototype.parseHost = function(t) {
+// var e = a.exec(t);
+// e && (e = e[0], ":" !== e && (this.port = e.substr(1)), t = t.substr(0, t.length - e.length)), t && (this.hostname = t)
+// }, e.exports = r
+// }, {}],
+// 61: [function(t, e, i) {
+// e.exports = /[\0-\x1F\x7F-\x9F]/
+// }, {}],
+// 62: [function(t, e, i) {
+// e.exports = /[\xAD\u0600-\u0605\u061C\u06DD\u070F\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804\uDCBD|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/
+// }, {}],
+// 63: [function(t, e, i) {
+// e.exports = /[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/
+// }, {}],
+// 64: [function(t, e, i) {
+// e.exports = /[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/
+// }, {}],
+// 65: [function(t, e, i) {
+// e.exports.Any = t("./properties/Any/regex"), e.exports.Cc = t("./categories/Cc/regex"), e.exports.Cf = t("./categories/Cf/regex"), e.exports.P = t("./categories/P/regex"), e.exports.Z = t("./categories/Z/regex")
+// }, {
+// "./categories/Cc/regex": 61,
+// "./categories/Cf/regex": 62,
+// "./categories/P/regex": 63,
+// "./categories/Z/regex": 64,
+// "./properties/Any/regex": 66
+// }],
+// 66: [function(t, e, i) {
+// e.exports = /[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/
+// }, {}],
+// 67: [function(t, e, i) {
+// "use strict";
+// e.exports = t("./lib/")
+// }, {
+// "./lib/": 9
+// }]
+// }, {}, [67])(67)
+// }), i("Core/KnockoutMarkdownBinding", ["markdown-it-sanitizer", "markdown-it"], function(t, e) {
+// "use strict";
+
+// function i(t) {
+// if (t instanceof HTMLAnchorElement && (t.target = "_blank"), t.childNodes && t.childNodes.length > 0) for (var e = 0; e < t.childNodes.length; ++e) i(t.childNodes[e])
+// }
+// var n = /<html(.|\s)*>(.|\s)*<\/html>/im,
+// r = new e({
+// html: !0,
+// linkify: !0
+// });
+// r.use(t, {
+// imageClass: "",
+// removeUnbalanced: !1,
+// removeUnknown: !1
+// });
+// var o = {
+// register: function(t) {
+// t.bindingHandlers.markdown = {
+// init: function() {
+// return {
+// controlsDescendantBindings: !0
+// }
+// },
+// update: function(e, o) {
+// for (; e.firstChild;) t.removeNode(e.firstChild);
+// var a, s = t.unwrap(o());
+// a = n.test(s) ? s : r.render(s);
+// var l = t.utils.parseHtmlFragment(a, e);
+// e.className = e.className + " markdown";
+// for (var u = 0; u < l.length; ++u) {
+// var c = l[u];
+// i(c), e.appendChild(c)
+// }
+// }
+// }
+// }
+// };
+// return o
+// }), !
+// function(t, e, n, r) {
+// "use strict";
+
+// function o(t, e, i) {
+// return setTimeout(c(t, i), e)
+// }
+// function a(t, e, i) {
+// return !!Array.isArray(t) && (s(t, i[e], i), !0)
+// }
+// function s(t, e, i) {
+// var n;
+// if (t) if (t.forEach) t.forEach(e, i);
+// else if (t.length !== r) for (n = 0; n < t.length;) e.call(i, t[n], n, t), n++;
+// else for (n in t) t.hasOwnProperty(n) && e.call(i, t[n], n, t)
+// }
+// function l(e, i, n) {
+// var r = "DEPRECATED METHOD: " + i + "\n" + n + " AT \n";
+// return function() {
+// var i = new Error("get-stack-trace"),
+// n = i && i.stack ? i.stack.replace(/^[^\(]+?[\n$]/gm, "").replace(/^\s+at\s+/gm, "").replace(/^Object.<anonymous>\s*\(/gm, "{anonymous}()@") : "Unknown Stack Trace",
+// o = t.console && (t.console.warn || t.console.log);
+// return o && o.call(t.console, r, n), e.apply(this, arguments)
+// }
+// }
+// function u(t, e, i) {
+// var n, r = e.prototype;
+// n = t.prototype = Object.create(r), n.constructor = t, n._super = r, i && dt(n, i)
+// }
+// function c(t, e) {
+// return function() {
+// return t.apply(e, arguments)
+// }
+// }
+// function h(t, e) {
+// return typeof t == mt ? t.apply(e ? e[0] || r : r, e) : t
+// }
+// function d(t, e) {
+// return t === r ? e : t
+// }
+// function p(t, e, i) {
+// s(v(e), function(e) {
+// t.addEventListener(e, i, !1)
+// })
+// }
+// function f(t, e, i) {
+// s(v(e), function(e) {
+// t.removeEventListener(e, i, !1)
+// })
+// }
+// function m(t, e) {
+// for (; t;) {
+// if (t == e) return !0;
+// t = t.parentNode
+// }
+// return !1
+// }
+// function g(t, e) {
+// return t.indexOf(e) > -1
+// }
+// function v(t) {
+// return t.trim().split(/\s+/g)
+// }
+// function _(t, e, i) {
+// if (t.indexOf && !i) return t.indexOf(e);
+// for (var n = 0; n < t.length;) {
+// if (i && t[n][i] == e || !i && t[n] === e) return n;
+// n++
+// }
+// return -1
+// }
+// function y(t) {
+// return Array.prototype.slice.call(t, 0)
+// }
+// function b(t, e, i) {
+// for (var n = [], r = [], o = 0; o < t.length;) {
+// var a = e ? t[o][e] : t[o];
+// _(r, a) < 0 && n.push(t[o]), r[o] = a, o++
+// }
+// return i && (n = e ? n.sort(function(t, i) {
+// return t[e] > i[e]
+// }) : n.sort()), n
+// }
+// function w(t, e) {
+// for (var i, n, o = e[0].toUpperCase() + e.slice(1), a = 0; a < pt.length;) {
+// if (i = pt[a], n = i ? i + o : e, n in t) return n;
+// a++
+// }
+// return r
+// }
+// function C() {
+// return wt++
+// }
+// function x(e) {
+// var i = e.ownerDocument || e;
+// return i.defaultView || i.parentWindow || t
+// }
+// function E(t, e) {
+// var i = this;
+// this.manager = t, this.callback = e, this.element = t.element, this.target = t.options.inputTarget, this.domHandler = function(e) {
+// h(t.options.enable, [t]) && i.handler(e)
+// }, this.init()
+// }
+// function k(t) {
+// var e, i = t.options.inputClass;
+// return new(e = i ? i : Et ? B : kt ? q : xt ? V : z)(t, L)
+// }
+// function L(t, e, i) {
+// var n = i.pointers.length,
+// r = i.changedPointers.length,
+// o = e & Mt && n - r === 0,
+// a = e & (Ot | Nt) && n - r === 0;
+// i.isFirst = !! o, i.isFinal = !! a, o && (t.session = {}), i.eventType = e, P(t, i), t.emit("hammer.input", i), t.recognize(i), t.session.prevInput = i
+// }
+// function P(t, e) {
+// var i = t.session,
+// n = e.pointers,
+// r = n.length;
+// i.firstInput || (i.firstInput = S(e)), r > 1 && !i.firstMultiple ? i.firstMultiple = S(e) : 1 === r && (i.firstMultiple = !1);
+// var o = i.firstInput,
+// a = i.firstMultiple,
+// s = a ? a.center : o.center,
+// l = e.center = M(n);
+// e.timeStamp = _t(), e.deltaTime = e.timeStamp - o.timeStamp, e.angle = I(s, l), e.distance = N(s, l), D(i, e), e.offsetDirection = O(e.deltaX, e.deltaY);
+// var u = A(e.deltaTime, e.deltaX, e.deltaY);
+// e.overallVelocityX = u.x, e.overallVelocityY = u.y, e.overallVelocity = vt(u.x) > vt(u.y) ? u.x : u.y, e.scale = a ? F(a.pointers, n) : 1, e.rotation = a ? R(a.pointers, n) : 0, e.maxPointers = i.prevInput ? e.pointers.length > i.prevInput.maxPointers ? e.pointers.length : i.prevInput.maxPointers : e.pointers.length, T(i, e);
+// var c = t.element;
+// m(e.srcEvent.target, c) && (c = e.srcEvent.target), e.target = c
+// }
+// function D(t, e) {
+// var i = e.center,
+// n = t.offsetDelta || {},
+// r = t.prevDelta || {},
+// o = t.prevInput || {};
+// e.eventType !== Mt && o.eventType !== Ot || (r = t.prevDelta = {
+// x: o.deltaX || 0,
+// y: o.deltaY || 0
+// }, n = t.offsetDelta = {
+// x: i.x,
+// y: i.y
+// }), e.deltaX = r.x + (i.x - n.x), e.deltaY = r.y + (i.y - n.y)
+// }
+// function T(t, e) {
+// var i, n, o, a, s = t.lastInterval || e,
+// l = e.timeStamp - s.timeStamp;
+// if (e.eventType != Nt && (l > St || s.velocity === r)) {
+// var u = e.deltaX - s.deltaX,
+// c = e.deltaY - s.deltaY,
+// h = A(l, u, c);
+// n = h.x, o = h.y, i = vt(h.x) > vt(h.y) ? h.x : h.y, a = O(u, c), t.lastInterval = e
+// } else i = s.velocity, n = s.velocityX, o = s.velocityY, a = s.direction;
+// e.velocity = i, e.velocityX = n, e.velocityY = o, e.direction = a
+// }
+// function S(t) {
+// for (var e = [], i = 0; i < t.pointers.length;) e[i] = {
+// clientX: gt(t.pointers[i].clientX),
+// clientY: gt(t.pointers[i].clientY)
+// }, i++;
+// return {
+// timeStamp: _t(),
+// pointers: e,
+// center: M(e),
+// deltaX: t.deltaX,
+// deltaY: t.deltaY
+// }
+// }
+// function M(t) {
+// var e = t.length;
+// if (1 === e) return {
+// x: gt(t[0].clientX),
+// y: gt(t[0].clientY)
+// };
+// for (var i = 0, n = 0, r = 0; e > r;) i += t[r].clientX, n += t[r].clientY, r++;
+// return {
+// x: gt(i / e),
+// y: gt(n / e)
+// }
+// }
+// function A(t, e, i) {
+// return {
+// x: e / t || 0,
+// y: i / t || 0
+// }
+// }
+// function O(t, e) {
+// return t === e ? It : vt(t) >= vt(e) ? 0 > t ? Rt : Ft : 0 > e ? zt : Bt
+// }
+// function N(t, e, i) {
+// i || (i = jt);
+// var n = e[i[0]] - t[i[0]],
+// r = e[i[1]] - t[i[1]];
+// return Math.sqrt(n * n + r * r)
+// }
+// function I(t, e, i) {
+// i || (i = jt);
+// var n = e[i[0]] - t[i[0]],
+// r = e[i[1]] - t[i[1]];
+// return 180 * Math.atan2(r, n) / Math.PI
+// }
+// function R(t, e) {
+// return I(e[1], e[0], Vt) + I(t[1], t[0], Vt)
+// }
+// function F(t, e) {
+// return N(e[0], e[1], Vt) / N(t[0], t[1], Vt)
+// }
+// function z() {
+// this.evEl = Zt, this.evWin = Gt, this.pressed = !1, E.apply(this, arguments)
+// }
+// function B() {
+// this.evEl = Kt, this.evWin = Yt, E.apply(this, arguments), this.store = this.manager.session.pointerEvents = []
+// }
+// function U() {
+// this.evTarget = Qt, this.evWin = te, this.started = !1, E.apply(this, arguments)
+// }
+// function H(t, e) {
+// var i = y(t.touches),
+// n = y(t.changedTouches);
+// return e & (Ot | Nt) && (i = b(i.concat(n), "identifier", !0)), [i, n]
+// }
+// function q() {
+// this.evTarget = ie, this.targetIds = {}, E.apply(this, arguments)
+// }
+// function j(t, e) {
+// var i = y(t.touches),
+// n = this.targetIds;
+// if (e & (Mt | At) && 1 === i.length) return n[i[0].identifier] = !0, [i, i];
+// var r, o, a = y(t.changedTouches),
+// s = [],
+// l = this.target;
+// if (o = i.filter(function(t) {
+// return m(t.target, l)
+// }), e === Mt) for (r = 0; r < o.length;) n[o[r].identifier] = !0, r++;
+// for (r = 0; r < a.length;) n[a[r].identifier] && s.push(a[r]), e & (Ot | Nt) && delete n[a[r].identifier], r++;
+// return s.length ? [b(o.concat(s), "identifier", !0), s] : void 0
+// }
+// function V() {
+// E.apply(this, arguments);
+// var t = c(this.handler, this);
+// this.touch = new q(this.manager, t), this.mouse = new z(this.manager, t), this.primaryTouch = null, this.lastTouches = []
+// }
+// function W(t, e) {
+// t & Mt ? (this.primaryTouch = e.changedPointers[0].identifier, Z.call(this, e)) : t & (Ot | Nt) && Z.call(this, e)
+// }
+// function Z(t) {
+// var e = t.changedPointers[0];
+// if (e.identifier === this.primaryTouch) {
+// var i = {
+// x: e.clientX,
+// y: e.clientY
+// };
+// this.lastTouches.push(i);
+// var n = this.lastTouches,
+// r = function() {
+// var t = n.indexOf(i);
+// t > -1 && n.splice(t, 1)
+// };
+// setTimeout(r, ne)
+// }
+// }
+// function G(t) {
+// for (var e = t.srcEvent.clientX, i = t.srcEvent.clientY, n = 0; n < this.lastTouches.length; n++) {
+// var r = this.lastTouches[n],
+// o = Math.abs(e - r.x),
+// a = Math.abs(i - r.y);
+// if (re >= o && re >= a) return !0
+// }
+// return !1
+// }
+// function $(t, e) {
+// this.manager = t, this.set(e)
+// }
+// function J(t) {
+// if (g(t, ce)) return ce;
+// var e = g(t, he),
+// i = g(t, de);
+// return e && i ? ce : e || i ? e ? he : de : g(t, ue) ? ue : le
+// }
+// function K() {
+// if (!ae) return !1;
+// var e = {},
+// i = t.CSS && t.CSS.supports;
+// return ["auto", "manipulation", "pan-y", "pan-x", "pan-x pan-y", "none"].forEach(function(n) {
+// e[n] = !i || t.CSS.supports("touch-action", n)
+// }), e
+// }
+// function Y(t) {
+// this.options = dt({}, this.defaults, t || {}), this.id = C(), this.manager = null, this.options.enable = d(this.options.enable, !0), this.state = fe, this.simultaneous = {}, this.requireFail = []
+// }
+// function X(t) {
+// return t & ye ? "cancel" : t & ve ? "end" : t & ge ? "move" : t & me ? "start" : ""
+// }
+// function Q(t) {
+// return t == Bt ? "down" : t == zt ? "up" : t == Rt ? "left" : t == Ft ? "right" : ""
+// }
+// function tt(t, e) {
+// var i = e.manager;
+// return i ? i.get(t) : t
+// }
+// function et() {
+// Y.apply(this, arguments)
+// }
+// function it() {
+// et.apply(this, arguments), this.pX = null, this.pY = null
+// }
+// function nt() {
+// et.apply(this, arguments)
+// }
+// function rt() {
+// Y.apply(this, arguments), this._timer = null, this._input = null
+// }
+// function ot() {
+// et.apply(this, arguments)
+// }
+// function at() {
+// et.apply(this, arguments)
+// }
+// function st() {
+// Y.apply(this, arguments), this.pTime = !1, this.pCenter = !1, this._timer = null, this._input = null, this.count = 0
+// }
+// function lt(t, e) {
+// return e = e || {}, e.recognizers = d(e.recognizers, lt.defaults.preset), new ut(t, e)
+// }
+// function ut(t, e) {
+// this.options = dt({}, lt.defaults, e || {}), this.options.inputTarget = this.options.inputTarget || t, this.handlers = {}, this.session = {}, this.recognizers = [], this.oldCssProps = {}, this.element = t, this.input = k(this), this.touchAction = new $(this, this.options.touchAction), ct(this, !0), s(this.options.recognizers, function(t) {
+// var e = this.add(new t[0](t[1]));
+// t[2] && e.recognizeWith(t[2]), t[3] && e.requireFailure(t[3])
+// }, this)
+// }
+// function ct(t, e) {
+// var i = t.element;
+// if (i.style) {
+// var n;
+// s(t.options.cssProps, function(r, o) {
+// n = w(i.style, o), e ? (t.oldCssProps[n] = i.style[n], i.style[n] = r) : i.style[n] = t.oldCssProps[n] || ""
+// }), e || (t.oldCssProps = {})
+// }
+// }
+// function ht(t, i) {
+// var n = e.createEvent("Event");
+// n.initEvent(t, !0, !0), n.gesture = i, i.target.dispatchEvent(n)
+// }
+// var dt, pt = ["", "webkit", "Moz", "MS", "ms", "o"],
+// ft = e.createElement("div"),
+// mt = "function",
+// gt = Math.round,
+// vt = Math.abs,
+// _t = Date.now;
+// dt = "function" != typeof Object.assign ?
+// function(t) {
+// if (t === r || null === t) throw new TypeError("Cannot convert undefined or null to object");
+// for (var e = Object(t), i = 1; i < arguments.length; i++) {
+// var n = arguments[i];
+// if (n !== r && null !== n) for (var o in n) n.hasOwnProperty(o) && (e[o] = n[o])
+// }
+// return e
+// } : Object.assign;
+// var yt = l(function(t, e, i) {
+// for (var n = Object.keys(e), o = 0; o < n.length;)(!i || i && t[n[o]] === r) && (t[n[o]] = e[n[o]]), o++;
+// return t
+// }, "extend", "Use `assign`."),
+// bt = l(function(t, e) {
+// return yt(t, e, !0)
+// }, "merge", "Use `assign`."),
+// wt = 1,
+// Ct = /mobile|tablet|ip(ad|hone|od)|android/i,
+// xt = "ontouchstart" in t,
+// Et = w(t, "PointerEvent") !== r,
+// kt = xt && Ct.test(navigator.userAgent),
+// Lt = "touch",
+// Pt = "pen",
+// Dt = "mouse",
+// Tt = "kinect",
+// St = 25,
+// Mt = 1,
+// At = 2,
+// Ot = 4,
+// Nt = 8,
+// It = 1,
+// Rt = 2,
+// Ft = 4,
+// zt = 8,
+// Bt = 16,
+// Ut = Rt | Ft,
+// Ht = zt | Bt,
+// qt = Ut | Ht,
+// jt = ["x", "y"],
+// Vt = ["clientX", "clientY"];
+// E.prototype = {
+// handler: function() {},
+// init: function() {
+// this.evEl && p(this.element, this.evEl, this.domHandler), this.evTarget && p(this.target, this.evTarget, this.domHandler), this.evWin && p(x(this.element), this.evWin, this.domHandler)
+// },
+// destroy: function() {
+// this.evEl && f(this.element, this.evEl, this.domHandler), this.evTarget && f(this.target, this.evTarget, this.domHandler), this.evWin && f(x(this.element), this.evWin, this.domHandler)
+// }
+// };
+// var Wt = {
+// mousedown: Mt,
+// mousemove: At,
+// mouseup: Ot
+// },
+// Zt = "mousedown",
+// Gt = "mousemove mouseup";
+// u(z, E, {
+// handler: function(t) {
+// var e = Wt[t.type];
+// e & Mt && 0 === t.button && (this.pressed = !0), e & At && 1 !== t.which && (e = Ot), this.pressed && (e & Ot && (this.pressed = !1), this.callback(this.manager, e, {
+// pointers: [t],
+// changedPointers: [t],
+// pointerType: Dt,
+// srcEvent: t
+// }))
+// }
+// });
+// var $t = {
+// pointerdown: Mt,
+// pointermove: At,
+// pointerup: Ot,
+// pointercancel: Nt,
+// pointerout: Nt
+// },
+// Jt = {
+// 2: Lt,
+// 3: Pt,
+// 4: Dt,
+// 5: Tt
+// },
+// Kt = "pointerdown",
+// Yt = "pointermove pointerup pointercancel";
+// t.MSPointerEvent && !t.PointerEvent && (Kt = "MSPointerDown", Yt = "MSPointerMove MSPointerUp MSPointerCancel"), u(B, E, {
+// handler: function(t) {
+// var e = this.store,
+// i = !1,
+// n = t.type.toLowerCase().replace("ms", ""),
+// r = $t[n],
+// o = Jt[t.pointerType] || t.pointerType,
+// a = o == Lt,
+// s = _(e, t.pointerId, "pointerId");
+// r & Mt && (0 === t.button || a) ? 0 > s && (e.push(t), s = e.length - 1) : r & (Ot | Nt) && (i = !0), 0 > s || (e[s] = t, this.callback(this.manager, r, {
+// pointers: e,
+// changedPointers: [t],
+// pointerType: o,
+// srcEvent: t
+// }), i && e.splice(s, 1))
+// }
+// });
+// var Xt = {
+// touchstart: Mt,
+// touchmove: At,
+// touchend: Ot,
+// touchcancel: Nt
+// },
+// Qt = "touchstart",
+// te = "touchstart touchmove touchend touchcancel";
+// u(U, E, {
+// handler: function(t) {
+// var e = Xt[t.type];
+// if (e === Mt && (this.started = !0), this.started) {
+// var i = H.call(this, t, e);
+// e & (Ot | Nt) && i[0].length - i[1].length === 0 && (this.started = !1), this.callback(this.manager, e, {
+// pointers: i[0],
+// changedPointers: i[1],
+// pointerType: Lt,
+// srcEvent: t
+// })
+// }
+// }
+// });
+// var ee = {
+// touchstart: Mt,
+// touchmove: At,
+// touchend: Ot,
+// touchcancel: Nt
+// },
+// ie = "touchstart touchmove touchend touchcancel";
+// u(q, E, {
+// handler: function(t) {
+// var e = ee[t.type],
+// i = j.call(this, t, e);
+// i && this.callback(this.manager, e, {
+// pointers: i[0],
+// changedPointers: i[1],
+// pointerType: Lt,
+// srcEvent: t
+// })
+// }
+// });
+// var ne = 2500,
+// re = 25;
+// u(V, E, {
+// handler: function(t, e, i) {
+// var n = i.pointerType == Lt,
+// r = i.pointerType == Dt;
+// if (!(r && i.sourceCapabilities && i.sourceCapabilities.firesTouchEvents)) {
+// if (n) W.call(this, e, i);
+// else if (r && G.call(this, i)) return;
+// this.callback(t, e, i)
+// }
+// },
+// destroy: function() {
+// this.touch.destroy(), this.mouse.destroy()
+// }
+// });
+// var oe = w(ft.style, "touchAction"),
+// ae = oe !== r,
+// se = "compute",
+// le = "auto",
+// ue = "manipulation",
+// ce = "none",
+// he = "pan-x",
+// de = "pan-y",
+// pe = K();
+// $.prototype = {
+// set: function(t) {
+// t == se && (t = this.compute()), ae && this.manager.element.style && pe[t] && (this.manager.element.style[oe] = t), this.actions = t.toLowerCase().trim()
+// },
+// update: function() {
+// this.set(this.manager.options.touchAction)
+// },
+// compute: function() {
+// var t = [];
+// return s(this.manager.recognizers, function(e) {
+// h(e.options.enable, [e]) && (t = t.concat(e.getTouchAction()))
+// }), J(t.join(" "))
+// },
+// preventDefaults: function(t) {
+// var e = t.srcEvent,
+// i = t.offsetDirection;
+// if (this.manager.session.prevented) return void e.preventDefault();
+// var n = this.actions,
+// r = g(n, ce) && !pe[ce],
+// o = g(n, de) && !pe[de],
+// a = g(n, he) && !pe[he];
+// if (r) {
+// var s = 1 === t.pointers.length,
+// l = t.distance < 2,
+// u = t.deltaTime < 250;
+// if (s && l && u) return
+// }
+// return a && o ? void 0 : r || o && i & Ut || a && i & Ht ? this.preventSrc(e) : void 0
+// },
+// preventSrc: function(t) {
+// this.manager.session.prevented = !0, t.preventDefault()
+// }
+// };
+// var fe = 1,
+// me = 2,
+// ge = 4,
+// ve = 8,
+// _e = ve,
+// ye = 16,
+// be = 32;
+// Y.prototype = {
+// defaults: {},
+// set: function(t) {
+// return dt(this.options, t), this.manager && this.manager.touchAction.update(), this
+// },
+// recognizeWith: function(t) {
+// if (a(t, "recognizeWith", this)) return this;
+// var e = this.simultaneous;
+// return t = tt(t, this), e[t.id] || (e[t.id] = t, t.recognizeWith(this)), this
+// },
+// dropRecognizeWith: function(t) {
+// return a(t, "dropRecognizeWith", this) ? this : (t = tt(t, this), delete this.simultaneous[t.id], this)
+// },
+// requireFailure: function(t) {
+// if (a(t, "requireFailure", this)) return this;
+// var e = this.requireFail;
+// return t = tt(t, this), -1 === _(e, t) && (e.push(t), t.requireFailure(this)), this
+// },
+// dropRequireFailure: function(t) {
+// if (a(t, "dropRequireFailure", this)) return this;
+// t = tt(t, this);
+// var e = _(this.requireFail, t);
+// return e > -1 && this.requireFail.splice(e, 1), this
+// },
+// hasRequireFailures: function() {
+// return this.requireFail.length > 0
+// },
+// canRecognizeWith: function(t) {
+// return !!this.simultaneous[t.id]
+// },
+// emit: function(t) {
+// function e(e) {
+// i.manager.emit(e, t)
+// }
+// var i = this,
+// n = this.state;
+// ve > n && e(i.options.event + X(n)), e(i.options.event), t.additionalEvent && e(t.additionalEvent), n >= ve && e(i.options.event + X(n))
+// },
+// tryEmit: function(t) {
+// return this.canEmit() ? this.emit(t) : void(this.state = be)
+// },
+// canEmit: function() {
+// for (var t = 0; t < this.requireFail.length;) {
+// if (!(this.requireFail[t].state & (be | fe))) return !1;
+// t++
+// }
+// return !0
+// },
+// recognize: function(t) {
+// var e = dt({}, t);
+// return h(this.options.enable, [this, e]) ? (this.state & (_e | ye | be) && (this.state = fe), this.state = this.process(e), void(this.state & (me | ge | ve | ye) && this.tryEmit(e))) : (this.reset(), void(this.state = be))
+// },
+// process: function(t) {},
+// getTouchAction: function() {},
+// reset: function() {}
+// }, u(et, Y, {
+// defaults: {
+// pointers: 1
+// },
+// attrTest: function(t) {
+// var e = this.options.pointers;
+// return 0 === e || t.pointers.length === e
+// },
+// process: function(t) {
+// var e = this.state,
+// i = t.eventType,
+// n = e & (me | ge),
+// r = this.attrTest(t);
+// return n && (i & Nt || !r) ? e | ye : n || r ? i & Ot ? e | ve : e & me ? e | ge : me : be
+// }
+// }), u(it, et, {
+// defaults: {
+// event: "pan",
+// threshold: 10,
+// pointers: 1,
+// direction: qt
+// },
+// getTouchAction: function() {
+// var t = this.options.direction,
+// e = [];
+// return t & Ut && e.push(de), t & Ht && e.push(he), e
+// },
+// directionTest: function(t) {
+// var e = this.options,
+// i = !0,
+// n = t.distance,
+// r = t.direction,
+// o = t.deltaX,
+// a = t.deltaY;
+// return r & e.direction || (e.direction & Ut ? (r = 0 === o ? It : 0 > o ? Rt : Ft, i = o != this.pX, n = Math.abs(t.deltaX)) : (r = 0 === a ? It : 0 > a ? zt : Bt, i = a != this.pY, n = Math.abs(t.deltaY))), t.direction = r, i && n > e.threshold && r & e.direction
+// },
+// attrTest: function(t) {
+// return et.prototype.attrTest.call(this, t) && (this.state & me || !(this.state & me) && this.directionTest(t))
+// },
+// emit: function(t) {
+// this.pX = t.deltaX, this.pY = t.deltaY;
+// var e = Q(t.direction);
+// e && (t.additionalEvent = this.options.event + e), this._super.emit.call(this, t)
+// }
+// }), u(nt, et, {
+// defaults: {
+// event: "pinch",
+// threshold: 0,
+// pointers: 2
+// },
+// getTouchAction: function() {
+// return [ce]
+// },
+// attrTest: function(t) {
+// return this._super.attrTest.call(this, t) && (Math.abs(t.scale - 1) > this.options.threshold || this.state & me)
+// },
+// emit: function(t) {
+// if (1 !== t.scale) {
+// var e = t.scale < 1 ? "in" : "out";
+// t.additionalEvent = this.options.event + e
+// }
+// this._super.emit.call(this, t)
+// }
+// }), u(rt, Y, {
+// defaults: {
+// event: "press",
+// pointers: 1,
+// time: 251,
+// threshold: 9
+// },
+// getTouchAction: function() {
+// return [le]
+// },
+// process: function(t) {
+// var e = this.options,
+// i = t.pointers.length === e.pointers,
+// n = t.distance < e.threshold,
+// r = t.deltaTime > e.time;
+// if (this._input = t, !n || !i || t.eventType & (Ot | Nt) && !r) this.reset();
+// else if (t.eventType & Mt) this.reset(), this._timer = o(function() {
+// this.state = _e, this.tryEmit()
+// }, e.time, this);
+// else if (t.eventType & Ot) return _e;
+// return be
+// },
+// reset: function() {
+// clearTimeout(this._timer)
+// },
+// emit: function(t) {
+// this.state === _e && (t && t.eventType & Ot ? this.manager.emit(this.options.event + "up", t) : (this._input.timeStamp = _t(), this.manager.emit(this.options.event, this._input)))
+// }
+// }), u(ot, et, {
+// defaults: {
+// event: "rotate",
+// threshold: 0,
+// pointers: 2
+// },
+// getTouchAction: function() {
+// return [ce]
+// },
+// attrTest: function(t) {
+// return this._super.attrTest.call(this, t) && (Math.abs(t.rotation) > this.options.threshold || this.state & me)
+// }
+// }), u(at, et, {
+// defaults: {
+// event: "swipe",
+// threshold: 10,
+// velocity: .3,
+// direction: Ut | Ht,
+// pointers: 1
+// },
+// getTouchAction: function() {
+// return it.prototype.getTouchAction.call(this)
+// },
+// attrTest: function(t) {
+// var e, i = this.options.direction;
+// return i & (Ut | Ht) ? e = t.overallVelocity : i & Ut ? e = t.overallVelocityX : i & Ht && (e = t.overallVelocityY), this._super.attrTest.call(this, t) && i & t.offsetDirection && t.distance > this.options.threshold && t.maxPointers == this.options.pointers && vt(e) > this.options.velocity && t.eventType & Ot
+// },
+// emit: function(t) {
+// var e = Q(t.offsetDirection);
+// e && this.manager.emit(this.options.event + e, t), this.manager.emit(this.options.event, t)
+// }
+// }), u(st, Y, {
+// defaults: {
+// event: "tap",
+// pointers: 1,
+// taps: 1,
+// interval: 300,
+// time: 250,
+// threshold: 9,
+// posThreshold: 10
+// },
+// getTouchAction: function() {
+// return [ue]
+// },
+// process: function(t) {
+// var e = this.options,
+// i = t.pointers.length === e.pointers,
+// n = t.distance < e.threshold,
+// r = t.deltaTime < e.time;
+// if (this.reset(), t.eventType & Mt && 0 === this.count) return this.failTimeout();
+// if (n && r && i) {
+// if (t.eventType != Ot) return this.failTimeout();
+// var a = !this.pTime || t.timeStamp - this.pTime < e.interval,
+// s = !this.pCenter || N(this.pCenter, t.center) < e.posThreshold;
+// this.pTime = t.timeStamp, this.pCenter = t.center, s && a ? this.count += 1 : this.count = 1, this._input = t;
+// var l = this.count % e.taps;
+// if (0 === l) return this.hasRequireFailures() ? (this._timer = o(function() {
+// this.state = _e, this.tryEmit()
+// }, e.interval, this), me) : _e
+// }
+// return be
+// },
+// failTimeout: function() {
+// return this._timer = o(function() {
+// this.state = be
+// }, this.options.interval, this), be
+// },
+// reset: function() {
+// clearTimeout(this._timer)
+// },
+// emit: function() {
+// this.state == _e && (this._input.tapCount = this.count, this.manager.emit(this.options.event, this._input))
+// }
+// }), lt.VERSION = "2.0.7", lt.defaults = {
+// domEvents: !1,
+// touchAction: se,
+// enable: !0,
+// inputTarget: null,
+// inputClass: null,
+// preset: [
+// [ot,
+// {
+// enable: !1
+// }],
+// [nt,
+// {
+// enable: !1
+// }, ["rotate"]],
+// [at,
+// {
+// direction: Ut
+// }],
+// [it,
+// {
+// direction: Ut
+// }, ["swipe"]],
+// [st],
+// [st,
+// {
+// event: "doubletap",
+// taps: 2
+// }, ["tap"]],
+// [rt]
+// ],
+// cssProps: {
+// userSelect: "none",
+// touchSelect: "none",
+// touchCallout: "none",
+// contentZooming: "none",
+// userDrag: "none",
+// tapHighlightColor: "rgba(0,0,0,0)"
+// }
+// };
+// var we = 1,
+// Ce = 2;
+// ut.prototype = {
+// set: function(t) {
+// return dt(this.options, t), t.touchAction && this.touchAction.update(), t.inputTarget && (this.input.destroy(), this.input.target = t.inputTarget, this.input.init()), this
+// },
+// stop: function(t) {
+// this.session.stopped = t ? Ce : we
+// },
+// recognize: function(t) {
+// var e = this.session;
+// if (!e.stopped) {
+// this.touchAction.preventDefaults(t);
+// var i, n = this.recognizers,
+// r = e.curRecognizer;
+// (!r || r && r.state & _e) && (r = e.curRecognizer = null);
+// for (var o = 0; o < n.length;) i = n[o], e.stopped === Ce || r && i != r && !i.canRecognizeWith(r) ? i.reset() : i.recognize(t), !r && i.state & (me | ge | ve) && (r = e.curRecognizer = i), o++
+// }
+// },
+// get: function(t) {
+// if (t instanceof Y) return t;
+// for (var e = this.recognizers, i = 0; i < e.length; i++) if (e[i].options.event == t) return e[i];
+// return null
+// },
+// add: function(t) {
+// if (a(t, "add", this)) return this;
+// var e = this.get(t.options.event);
+// return e && this.remove(e), this.recognizers.push(t), t.manager = this, this.touchAction.update(), t
+// },
+// remove: function(t) {
+// if (a(t, "remove", this)) return this;
+// if (t = this.get(t)) {
+// var e = this.recognizers,
+// i = _(e, t); - 1 !== i && (e.splice(i, 1), this.touchAction.update())
+// }
+// return this
+// },
+// on: function(t, e) {
+// if (t !== r && e !== r) {
+// var i = this.handlers;
+// return s(v(t), function(t) {
+// i[t] = i[t] || [], i[t].push(e)
+// }), this
+// }
+// },
+// off: function(t, e) {
+// if (t !== r) {
+// var i = this.handlers;
+// return s(v(t), function(t) {
+// e ? i[t] && i[t].splice(_(i[t], e), 1) : delete i[t]
+// }), this
+// }
+// },
+// emit: function(t, e) {
+// this.options.domEvents && ht(t, e);
+// var i = this.handlers[t] && this.handlers[t].slice();
+// if (i && i.length) {
+// e.type = t, e.preventDefault = function() {
+// e.srcEvent.preventDefault()
+// };
+// for (var n = 0; n < i.length;) i[n](e), n++
+// }
+// },
+// destroy: function() {
+// this.element && ct(this, !1), this.handlers = {}, this.session = {}, this.input.destroy(), this.element = null
+// }
+// }, dt(lt, {
+// INPUT_START: Mt,
+// INPUT_MOVE: At,
+// INPUT_END: Ot,
+// INPUT_CANCEL: Nt,
+// STATE_POSSIBLE: fe,
+// STATE_BEGAN: me,
+// STATE_CHANGED: ge,
+// STATE_ENDED: ve,
+// STATE_RECOGNIZED: _e,
+// STATE_CANCELLED: ye,
+// STATE_FAILED: be,
+// DIRECTION_NONE: It,
+// DIRECTION_LEFT: Rt,
+// DIRECTION_RIGHT: Ft,
+// DIRECTION_UP: zt,
+// DIRECTION_DOWN: Bt,
+// DIRECTION_HORIZONTAL: Ut,
+// DIRECTION_VERTICAL: Ht,
+// DIRECTION_ALL: qt,
+// Manager: ut,
+// Input: E,
+// TouchAction: $,
+// TouchInput: q,
+// MouseInput: z,
+// PointerEventInput: B,
+// TouchMouseInput: V,
+// SingleTouchInput: U,
+// Recognizer: Y,
+// AttrRecognizer: et,
+// Tap: st,
+// Pan: it,
+// Swipe: at,
+// Pinch: nt,
+// Rotate: ot,
+// Press: rt,
+// on: p,
+// off: f,
+// each: s,
+// merge: bt,
+// extend: yt,
+// assign: dt,
+// inherit: u,
+// bindFn: c,
+// prefixed: w
+// });
+// var xe = "undefined" != typeof t ? t : "undefined" != typeof self ? self : {};
+// xe.Hammer = lt, "function" == typeof i && i.amd ? i("Hammer", [], function() {
+// return lt
+// }) : "undefined" != typeof module && module.exports ? module.exports = lt : t[n] = lt
+// }(window, document, "Hammer"), i("Core/KnockoutHammerBinding", ["KnockoutES5", "Hammer"], function(t, e) {
+// "use strict";
+// var i = {
+// register: function(t) {
+// t.bindingHandlers.swipeLeft = {
+// init: function(i, n, r, o, a) {
+// var s = t.unwrap(n());
+// new e(i).on("swipeleft", function(t) {
+// var e = a.$data;
+// s.apply(e, arguments)
+// })
+// }
+// }, t.bindingHandlers.swipeRight = {
+// init: function(i, n, r, o, a) {
+// var s = t.unwrap(n());
+// new e(i).on("swiperight", function(t) {
+// var e = a.$data;
+// s.apply(e, arguments)
+// })
+// }
+// }
+// }
+// };
+// return i
+// }), i("Core/registerKnockoutBindings", ["Cesium/Widgets/SvgPathBindingHandler", "KnockoutES5", "Core/KnockoutMarkdownBinding", "Core/KnockoutHammerBinding"], function(t, e, i, n) {
+// "use strict";
+// var r = function() {
+// t.register(e), i.register(e), n.register(e), e.bindingHandlers.embeddedComponent = {
+// init: function(t, i, n, r, o) {
+// var a = e.unwrap(i());
+// return a.show(t), {
+// controlsDescendantBindings: !0
+// }
+// },
+// update: function(t, e, i, n, r) {}
+// }
+// };
+// return r
+// }), i("Core/createFragmentFromTemplate", [], function() {
+// "use strict";
+// var t = function(t) {
+// var e = document.createElement("div");
+// e.innerHTML = t;
+// for (var i = document.createDocumentFragment(); e.firstChild;) i.appendChild(e.firstChild);
+// return i
+// };
+// return t
+// }), i("Core/loadView", ["Cesium/Widgets/getElement", "KnockoutES5", "Core/createFragmentFromTemplate"], function(t, e, i) {
+// "use strict";
+// var n = function(n, r, o) {
+// r = t(r);
+// var a, s = i(n),
+// l = [];
+// for (a = 0; a < s.childNodes.length; ++a) l.push(s.childNodes[a]);
+// for (r.appendChild(s), a = 0; a < l.length; ++a) {
+// var u = l[a];
+// 1 !== u.nodeType && 8 !== u.nodeType || e.applyBindings(o, u)
+// }
+// return l
+// };
+// return n
+// }), !
+// function(t, e, n) {
+// var r = t.L,
+// o = {};
+// o.version = "0.7.7", "object" == typeof module && "object" == typeof module.exports ? module.exports = o : "function" == typeof i && i.amd && i("leaflet", o), o.noConflict = function() {
+// return t.L = r, this
+// }, t.L = o, o.Util = {
+// extend: function(t) {
+// var e, i, n, r, o = Array.prototype.slice.call(arguments, 1);
+// for (i = 0, n = o.length; n > i; i++) {
+// r = o[i] || {};
+// for (e in r) r.hasOwnProperty(e) && (t[e] = r[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, r;
+// if ("object" == typeof t) {
+// r = Array.prototype.slice.call(arguments, 3);
+// for (n in t) e.apply(i, [n, t[n]].concat(r));
+// return !0
+// }
+// return !1
+// },
+// limitExecByInterval: function(t, e, i) {
+// var n, r;
+// return function o() {
+// var a = arguments;
+// return n ? void(r = !0) : (n = !0, setTimeout(function() {
+// n = !1, r && (o.apply(i, a), r = !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 r in t) n.push(encodeURIComponent(i ? r.toUpperCase() : r) + "=" + encodeURIComponent(t[r]));
+// return (e && -1 !== e.indexOf("?") ? "&" : "?") + n.join("&")
+// },
+// template: function(t, e) {
+// return t.replace(/\{ *([\w_]+) *\}/g, function(t, i) {
+// var r = e[i];
+// if (r === n) throw new Error("No value provided for variable " + t);
+// return "function" == typeof r && (r = r(e)), r
+// })
+// },
+// 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, r = ["webkit", "moz", "o", "ms"];
+// for (i = 0; i < r.length && !n; i++) n = t[r[i] + e];
+// return n
+// }
+// function i(e) {
+// var i = +new Date,
+// r = Math.max(0, 16 - (i - n));
+// return n = i + r, t.setTimeout(e, r)
+// }
+// var n = 0,
+// r = t.requestAnimationFrame || e("RequestAnimationFrame") || i,
+// a = t.cancelAnimationFrame || e("CancelAnimationFrame") || e("CancelRequestAnimationFrame") ||
+// function(e) {
+// t.clearTimeout(e)
+// };
+// o.Util.requestAnimFrame = function(e, n, a, s) {
+// return e = o.bind(e, n), a && r === i ? void e() : r.call(t, e, s)
+// }, 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 r in this) this.hasOwnProperty(r) && "prototype" !== r && (e[r] = this[r]);
+// 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 a = "_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, r, s, l, u, c, h, d = this[a] = this[a] || {},
+// p = i && i !== this && o.stamp(i);
+// for (t = o.Util.splitWords(t), n = 0, r = t.length; r > n; n++) s = {
+// action: e,
+// context: i || this
+// }, l = t[n], p ? (u = l + "_idx", c = u + "_len", h = d[u] = d[u] || {}, h[p] || (h[p] = [], d[c] = (d[c] || 0) + 1), h[p].push(s)) : (d[l] = d[l] || [], d[l].push(s));
+// return this
+// },
+// hasEventListeners: function(t) {
+// var e = this[a];
+// 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[a]) return this;
+// if (!t) return this.clearAllEventListeners();
+// if (o.Util.invokeEach(t, this.removeEventListener, this, e, i)) return this;
+// var n, r, s, l, u, c, h, d, p, f = this[a],
+// m = i && i !== this && o.stamp(i);
+// for (t = o.Util.splitWords(t), n = 0, r = t.length; r > n; n++) if (s = t[n], c = s + "_idx", h = c + "_len", d = f[c], e) {
+// if (l = m && d ? d[m] : f[s]) {
+// for (u = l.length - 1; u >= 0; u--) l[u].action !== e || i && l[u].context !== i || (p = l.splice(u, 1), p[0].action = o.Util.falseFn);
+// i && d && 0 === l.length && (delete d[m], f[h]--)
+// }
+// } else delete f[s], delete f[c], delete f[h];
+// return this
+// },
+// clearAllEventListeners: function() {
+// return delete this[a], this
+// },
+// fireEvent: function(t, e) {
+// if (!this.hasEventListeners(t)) return this;
+// var i, n, r, s, l, u = o.Util.extend({}, e, {
+// type: t,
+// target: this
+// }),
+// c = this[a];
+// if (c[t]) for (i = c[t].slice(), n = 0, r = i.length; r > n; n++) i[n].action.call(i[n].context, u);
+// s = c[t + "_idx"];
+// for (l in s) if (i = s[l].slice()) for (n = 0, r = i.length; r > n; n++) i[n].action.call(i[n].context, u);
+// 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 i = "ActiveXObject" in t,
+// r = i && !e.addEventListener,
+// a = navigator.userAgent.toLowerCase(),
+// s = -1 !== a.indexOf("webkit"),
+// l = -1 !== a.indexOf("chrome"),
+// u = -1 !== a.indexOf("phantom"),
+// c = -1 !== a.indexOf("android"),
+// h = -1 !== a.search("android [23]"),
+// d = -1 !== a.indexOf("gecko"),
+// p = typeof orientation != n + "",
+// f = !t.PointerEvent && t.MSPointerEvent,
+// m = t.PointerEvent && t.navigator.pointerEnabled || f,
+// g = "devicePixelRatio" in t && t.devicePixelRatio > 1 || "matchMedia" in t && t.matchMedia("(min-resolution:144dpi)") && t.matchMedia("(min-resolution:144dpi)").matches,
+// v = e.documentElement,
+// _ = i && "transition" in v.style,
+// y = "WebKitCSSMatrix" in t && "m11" in new t.WebKitCSSMatrix && !h,
+// b = "MozPerspective" in v.style,
+// w = "OTransition" in v.style,
+// C = !t.L_DISABLE_3D && (_ || y || b || w) && !u,
+// x = !t.L_NO_TOUCH && !u && (m || "ontouchstart" in t || t.DocumentTouch && e instanceof t.DocumentTouch);
+// o.Browser = {
+// ie: i,
+// ielt9: r,
+// webkit: s,
+// gecko: d && !s && !t.opera && !i,
+// android: c,
+// android23: h,
+// chrome: l,
+// ie3d: _,
+// webkit3d: y,
+// gecko3d: b,
+// opera3d: w,
+// any3d: C,
+// mobile: p,
+// mobileWebkit: p && s,
+// mobileWebkit3d: p && y,
+// mobileOpera: p && t.opera,
+// touch: x,
+// msPointer: f,
+// pointer: m,
+// retina: g
+// }
+// }(), 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, i) {
+// return t instanceof o.Point ? t : o.Util.isArray(t) ? new o.Point(t[0], t[1]) : t === n || null === t ? t : new o.Point(t, e, i)
+// }, o.Bounds = function(t, e) {
+// if (t) for (var i = e ? [t, e] : t, n = 0, r = i.length; r > 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,
+// r = t.max,
+// a = r.x >= e.x && n.x <= i.x,
+// s = r.y >= e.y && n.y <= i.y;
+// return a && s
+// },
+// 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 r = e.defaultView.getComputedStyle(t, null);
+// n = r ? r[i] : null
+// }
+// return "auto" === n ? null : n
+// },
+// getViewportOffset: function(t) {
+// var i, n = 0,
+// r = 0,
+// a = t,
+// s = e.body,
+// l = e.documentElement;
+// do {
+// if (n += a.offsetTop || 0, r += a.offsetLeft || 0, n += parseInt(o.DomUtil.getStyle(a, "borderTopWidth"), 10) || 0, r += parseInt(o.DomUtil.getStyle(a, "borderLeftWidth"), 10) || 0, i = o.DomUtil.getStyle(a, "position"), a.offsetParent === s && "absolute" === i) break;
+// if ("fixed" === i) {
+// n += s.scrollTop || l.scrollTop || 0, r += s.scrollLeft || l.scrollLeft || 0;
+// break
+// }
+// if ("relative" === i && !a.offsetLeft) {
+// var u = o.DomUtil.getStyle(a, "width"),
+// c = o.DomUtil.getStyle(a, "max-width"),
+// h = a.getBoundingClientRect();
+// ("none" !== u || "none" !== c) && (r += h.left + a.clientLeft), n += h.top + (s.scrollTop || l.scrollTop || 0);
+// break
+// }
+// a = a.offsetParent
+// } while (a);
+// a = t;
+// do {
+// if (a === s) break;
+// n -= a.scrollTop || 0, r -= a.scrollLeft || 0, a = a.parentNode
+// } while (a);
+// return new o.Point(r, 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 r = e.createElement(t);
+// return r.className = i, n && n.appendChild(r), r
+// },
+// hasClass: function(t, e) {
+// if (t.classList !== n) return t.classList.contains(e);
+// var i = o.DomUtil._getClass(t);
+// return i.length > 0 && new RegExp("(^|\\s)" + e + "(\\s|$)").test(i)
+// },
+// addClass: function(t, e) {
+// if (t.classList !== n) for (var i = o.Util.splitWords(e), r = 0, a = i.length; a > r; r++) t.classList.add(i[r]);
+// else if (!o.DomUtil.hasClass(t, e)) {
+// var s = o.DomUtil._getClass(t);
+// o.DomUtil._setClass(t, (s ? s + " " : "") + e)
+// }
+// },
+// removeClass: function(t, e) {
+// t.classList !== n ? t.classList.remove(e) : o.DomUtil._setClass(t, o.Util.trim((" " + o.DomUtil._getClass(t) + " ").replace(" " + e + " ", " ")))
+// },
+// _setClass: function(t, e) {
+// t.className.baseVal === n ? t.className = e : t.className.baseVal = e
+// },
+// _getClass: function(t) {
+// return t.className.baseVal === n ? 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 (r) {
+// 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, i) {
+// 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, i !== n && (this.alt = parseFloat(i))
+// }, 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,
+// r = (t.lng - this.lng) * i,
+// a = this.lat * i,
+// s = t.lat * i,
+// l = Math.sin(n / 2),
+// u = Math.sin(r / 2),
+// c = l * l + u * u * Math.cos(a) * Math.cos(s);
+// return 2 * e * Math.atan2(Math.sqrt(c), Math.sqrt(1 - c))
+// },
+// 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 === n || null === t ? t : "object" == typeof t && "lat" in t ? new o.LatLng(t.lat, "lng" in t ? t.lng : t.lon) : e === n ? null : new o.LatLng(t, e)
+// }, o.LatLngBounds = function(t, e) {
+// if (t) for (var i = e ? [t, e] : t, n = 0, r = i.length; r > 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,
+// r = Math.abs(e.lng - i.lng) * t;
+// return new o.LatLngBounds(new o.LatLng(e.lat - n, e.lng - r), new o.LatLng(i.lat + n, i.lng + r))
+// },
+// 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,
+// r = this._northEast;
+// return t instanceof o.LatLngBounds ? (e = t.getSouthWest(), i = t.getNorthEast()) : e = i = t, e.lat >= n.lat && i.lat <= r.lat && e.lng >= n.lng && i.lng <= r.lng
+// },
+// intersects: function(t) {
+// t = o.latLngBounds(t);
+// var e = this._southWest,
+// i = this._northEast,
+// n = t.getSouthWest(),
+// r = t.getNorthEast(),
+// a = r.lat >= e.lat && n.lat <= i.lat,
+// s = r.lng >= e.lng && n.lng <= i.lng;
+// return a && s
+// },
+// 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()))
+// },
+// 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),
+// r = t.lng * e,
+// a = n * e;
+// return a = Math.log(Math.tan(Math.PI / 4 + a / 2)), new o.Point(r, 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 !== n && 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 === n ? 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),
+// r = this.getSize().divideBy(2),
+// a = t instanceof o.Point ? t : this.latLngToContainerPoint(t),
+// s = a.subtract(r).multiplyBy(1 - 1 / n),
+// l = this.containerPointToLatLng(r.add(s));
+// return this.setView(l, 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]),
+// r = this.getBoundsZoom(t, !1, i.add(n));
+// r = e.maxZoom ? Math.min(e.maxZoom, r) : r;
+// var a = n.subtract(i).divideBy(2),
+// s = this.project(t.getSouthWest(), r),
+// l = this.project(t.getNorthEast(), r),
+// u = this.unproject(s.add(l).divideBy(2).add(a), r);
+// return this.setView(u, r, 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
+// },
+// 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(),
+// r = i.divideBy(2).round(),
+// a = n.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(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 = n
+// }
+// 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 === n ? this._layersMinZoom === n ? 0 : this._layersMinZoom : this.options.minZoom
+// },
+// getMaxZoom: function() {
+// return this.options.maxZoom === n ? this._layersMaxZoom === n ? 1 / 0 : this._layersMaxZoom : this.options.maxZoom
+// },
+// getBoundsZoom: function(t, e, i) {
+// t = o.latLngBounds(t);
+// var n, r = this.getMinZoom() - (e ? 1 : 0),
+// a = this.getMaxZoom(),
+// s = this.getSize(),
+// l = t.getNorthWest(),
+// u = t.getSouthEast(),
+// c = !0;
+// i = o.point(i || [0, 0]);
+// do r++, n = this.project(u, r).subtract(this.project(l, r)).add(i), c = e ? n.x < s.x || n.y < s.y : s.contains(n);
+// while (c && a >= r);
+// return c && e ? null : e ? r : r - 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 === n ? this._zoom : e, this.options.crs.latLngToPoint(o.latLng(t), e)
+// },
+// unproject: function(t, e) {
+// return e = e === n ? 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 r = this._zoom !== e;
+// n || (this.fire("movestart"), r && 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"), (r || 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,
+// i = -(1 / 0),
+// r = this._getZoomSpan();
+// for (t in this._zoomBoundLayers) {
+// var o = this._zoomBoundLayers[t];
+// isNaN(o.options.minZoom) || (e = Math.min(e, o.options.minZoom)), isNaN(o.options.maxZoom) || (i = Math.max(i, o.options.maxZoom))
+// }
+// t === n ? this._layersMaxZoom = this._layersMinZoom = n : (this._layersMaxZoom = i, this._layersMinZoom = e), r !== 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, r = ["dblclick", "mousedown", "mouseup", "mouseenter", "mouseleave", "mousemove", "contextmenu"];
+// for (i = 0, n = r.length; n > i; i++) o.DomEvent[e](this._container, r[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),
+// r = this.layerPointToLatLng(n);
+// this.fire(e, {
+// latlng: r,
+// 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),
+// r = this.getSize().divideBy(2),
+// a = new o.Bounds(n.subtract(r), n.add(r)),
+// s = this._getBoundsOffset(a, i, e);
+// return this.unproject(n.add(s), 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),
+// r = this.project(e.getSouthEast(), i).subtract(t.max),
+// a = this._rebound(n.x, -r.x),
+// s = this._rebound(n.y, -r.y);
+// return new o.Point(a, s)
+// },
+// _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),
+// r = this.R_MAJOR,
+// a = this.R_MINOR,
+// s = t.lng * e * r,
+// l = n * e,
+// u = a / r,
+// c = Math.sqrt(1 - u * u),
+// h = c * Math.sin(l);
+// h = Math.pow((1 - h) / (1 + h), .5 * c);
+// var d = Math.tan(.5 * (.5 * Math.PI - l)) / h;
+// return l = -r * Math.log(d), new o.Point(s, l)
+// },
+// unproject: function(t) {
+// for (var e, i = o.LatLng.RAD_TO_DEG, n = this.R_MAJOR, r = this.R_MINOR, a = t.x * i / n, s = r / n, l = Math.sqrt(1 - s * s), u = Math.exp(-t.y / n), c = Math.PI / 2 - 2 * Math.atan(u), h = 15, d = 1e-7, p = h, f = .1; Math.abs(f) > d && --p > 0;) e = l * Math.sin(c), f = Math.PI / 2 - 2 * Math.atan(u * Math.pow((1 - e) / (1 + e), .5 * l)) - c, c += f;
+// return new o.LatLng(c * 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 !== n && (this._container.style.zIndex = this.options.zIndex)
+// },
+// _setAutoZIndex: function(t, e) {
+// var i, n, r, o = t.children,
+// a = -e(1 / 0, -(1 / 0));
+// for (n = 0, r = o.length; r > n; n++) o[n] !== this._container && (i = parseInt(o[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 r = o.bounds(e.min.divideBy(n)._floor(), e.max.divideBy(n)._floor());
+// this._addTilesFromCenterOut(r), (this.options.unloadInvisibleTiles || this.options.reuseTiles) && this._removeOtherTiles(r)
+// }
+// }
+// },
+// _addTilesFromCenterOut: function(t) {
+// var i, n, r, a = [],
+// s = t.getCenter();
+// for (i = t.min.y; i <= t.max.y; i++) for (n = t.min.x; n <= t.max.x; n++) r = new o.Point(n, i), this._tileShouldBeLoaded(r) && a.push(r);
+// var l = a.length;
+// if (0 !== l) {
+// a.sort(function(t, e) {
+// return t.distanceTo(s) - e.distanceTo(s)
+// });
+// var u = e.createDocumentFragment();
+// for (this._tilesToLoad || this.fire("loading"), this._tilesToLoad += l, n = 0; l > n; n++) this._addTile(a[n], u);
+// this._tileContainer.appendChild(u)
+// }
+// },
+// _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 = this._getTileSize(),
+// r = t.multiplyBy(n),
+// o = r.add([n, n]),
+// a = this._map.unproject(r),
+// s = this._map.unproject(o);
+// if (e.continuousWorld || e.noWrap || (a = a.wrap(), s = s.wrap()), !e.bounds.intersects([a, s])) return !1
+// }
+// return !0
+// },
+// _removeOtherTiles: function(t) {
+// var e, i, n, r;
+// for (r in this._tiles) e = r.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(r)
+// },
+// _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 !== n && 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;
+// e.detectRetina && o.Browser.retina ? i.width = i.height = 2 * n : i.width = i.height = n;
+// for (var r in e) this.options.hasOwnProperty(r) || "crs" === r || (i[r] = e[r]);
+// 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),
+// r = n.add([i, i]),
+// a = this._crs.project(e.unproject(n, t.z)),
+// s = this._crs.project(e.unproject(r, t.z)),
+// l = this._wmsVersion >= 1.3 && this._crs === o.CRS.EPSG4326 ? [s.y, a.x, a.y, s.x].join(",") : [a.x, s.y, s.x, a.y].join(","),
+// u = o.Util.template(this._url, {
+// s: this._getSubdomain(t)
+// });
+// return u + o.Util.getParamString(this.wmsParams, u, !0) + "&BBOX=" + l
+// },
+// 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),
+// r = this._bounds.getNorthWest(),
+// a = this._bounds.getSouthEast(),
+// s = e._latLngToNewLayerPoint(r, t.zoom, t.center),
+// l = e._latLngToNewLayerPoint(a, t.zoom, t.center)._subtract(s),
+// u = s._add(l._multiplyBy(.5 * (1 - 1 / n)));
+// i.style[o.DomUtil.TRANSFORM] = o.DomUtil.getTranslateString(u) + " 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,
+// r = o.point(n[e + "Size"]);
+// i = "shadow" === e ? o.point(n.shadowAnchor || n.iconAnchor) : o.point(n.iconAnchor), !i && r && (i = r.divideBy(2, !0)), t.className = "leaflet-marker-" + e + " " + n.className, i && (t.style.marginLeft = -i.x + "px", t.style.marginTop = -i.y + "px"), r && (t.style.width = r.x + "px", t.style.height = r.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, r, o, a = e.getElementsByTagName("script"),
+// s = /[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/;
+// for (t = 0, i = a.length; i > t; t++) if (n = a[t].src, r = n.match(s)) return o = n.split(s)[0], (o ? o + "/" : "") + "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() {
+// return this._icon && this._setPos(this._map.latLngToLayerPoint(this._latlng).round()), 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",
+// r = t.icon.createIcon(this._icon),
+// a = !1;
+// r !== this._icon && (this._icon && this._removeIcon(), a = !0, t.title && (r.title = t.title), t.alt && (r.alt = t.alt)), o.DomUtil.addClass(r, n), t.keyboard && (r.tabIndex = "0"), this._icon = r, this._initInteraction(), t.riseOnHover && o.DomEvent.on(r, "mouseover", this._bringToFront, this).on(r, "mouseout", this._resetZIndex, this);
+// var s = t.icon.createShadow(this._shadow),
+// l = !1;
+// s !== this._shadow && (this._removeShadow(), l = !0), s && o.DomUtil.addClass(s, n), this._shadow = s, t.opacity < 1 && this._updateOpacity();
+// var u = this._map._panes;
+// a && u.markerPane.appendChild(this._icon), s && l && u.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 n.html !== !1 ? i.innerHTML = n.html : i.innerHTML = "", 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 = "×", o.DomEvent.disableClickPropagation(t), o.DomEvent.on(t, "click", this._onCloseButtonClick, this));
+// var r = this._wrapper = o.DomUtil.create("div", e + "-content-wrapper", n);
+// o.DomEvent.disableClickPropagation(r), this._contentNode = o.DomUtil.create("div", e + "-content", r), o.DomEvent.disableScrollPropagation(this._contentNode), o.DomEvent.on(r, "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,
+// r = this.options.maxHeight,
+// a = "leaflet-popup-scrolled";
+// r && n > r ? (e.height = r + "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 r = t.layerPointToContainerPoint(n),
+// a = o.point(this.options.autoPanPadding),
+// s = o.point(this.options.autoPanPaddingTopLeft || a),
+// l = o.point(this.options.autoPanPaddingBottomRight || a),
+// u = t.getSize(),
+// c = 0,
+// h = 0;
+// r.x + i + l.x > u.x && (c = r.x + i - u.x + l.x), r.x - c - s.x < 0 && (c = r.x - s.x), r.y + e + l.y > u.y && (h = r.y + e - u.y + l.y), r.y - h - s.y < 0 && (h = r.y - s.y), (c || h) && t.fire("autopanstart").panBy([c, h])
+// }
+// },
+// _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, t._source = this) : 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)
+// },
+// 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]), "off" in 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()),
+// r = n.add(e.multiplyBy(1 + 2 * t)._round());
+// this._pathViewport = new o.Bounds(n, r)
+// }
+// }), 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._map && this.hasEventListeners(t.type)) {
+// var e = this._map,
+// i = e.mouseEventToContainerPoint(t),
+// n = e.containerPointToLayerPoint(i),
+// r = e.layerPointToLatLng(n);
+// this.fire(t.type, {
+// latlng: r,
+// 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,
+// r = i.y - e.y,
+// a = this._pathRoot,
+// s = this._panes.overlayPane;
+// o.Browser.mobileWebkit && s.removeChild(a), o.DomUtil.setPosition(a, e), a.setAttribute("width", n), a.setAttribute("height", r), a.setAttribute("viewBox", [e.x, e.y, n, r].join(" ")), o.Browser.mobileWebkit && s.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, i.dashArray ? t.dashStyle = o.Util.isArray(i.dashArray) ? i.dashArray.join(" ") : i.dashArray.replace(/( *, *)/g, " ") : t.dashStyle = "", 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), t.lineCap && (this._ctx.lineCap = t.lineCap), t.lineJoin && (this._ctx.lineJoin = t.lineJoin)
+// },
+// _drawPath: function() {
+// var t, e, i, n, r, 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++) r = this._parts[t][e], a = (0 === e ? "move" : "line") + "To", this._ctx[a](r.x, r.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.fillRule || "evenodd")), 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 dblclick contextmenu", this._fireMouseEvent, this))
+// },
+// _fireMouseEvent: function(t) {
+// this._containsPoint(t.layerPoint) && this.fire(t.type, 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 i = t.length,
+// r = typeof Uint8Array != n + "" ? Uint8Array : Array,
+// o = new r(i);
+// o[0] = o[i - 1] = 1, this._simplifyDPStep(t, o, e, 0, i - 1);
+// var a, s = [];
+// for (a = 0; i > a; a++) o[a] && s.push(t[a]);
+// return s
+// },
+// _simplifyDPStep: function(t, e, i, n, r) {
+// var o, a, s, l = 0;
+// for (a = n + 1; r - 1 >= a; a++) s = this._sqClosestPointOnSegment(t[a], t[n], t[r], !0), s > l && (o = a, l = s);
+// l > i && (e[o] = 1, this._simplifyDPStep(t, e, i, n, o), this._simplifyDPStep(t, e, i, o, r))
+// },
+// _reducePoints: function(t, e) {
+// for (var i = [t[0]], n = 1, r = 0, o = t.length; o > n; n++) this._sqDist(t[n], t[r]) > e && (i.push(t[n]), r = n);
+// return o - 1 > r && i.push(t[o - 1]), i
+// },
+// clipSegment: function(t, e, i, n) {
+// var r, o, a, s = n ? this._lastCode : this._getBitCode(t, i),
+// l = this._getBitCode(e, i);
+// for (this._lastCode = l;;) {
+// if (!(s | l)) return [t, e];
+// if (s & l) return !1;
+// r = s || l, o = this._getEdgeIntersection(t, e, r, i), a = this._getBitCode(o, i), r === s ? (t = o, s = a) : (e = o, l = a)
+// }
+// },
+// _getEdgeIntersection: function(t, e, i, n) {
+// var r = e.x - t.x,
+// a = e.y - t.y,
+// s = n.min,
+// l = n.max;
+// return 8 & i ? new o.Point(t.x + r * (l.y - t.y) / a, l.y) : 4 & i ? new o.Point(t.x + r * (s.y - t.y) / a, s.y) : 2 & i ? new o.Point(l.x, t.y + a * (l.x - t.x) / r) : 1 & i ? new o.Point(s.x, t.y + a * (s.x - t.x) / r) : 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 r, a = e.x,
+// s = e.y,
+// l = i.x - a,
+// u = i.y - s,
+// c = l * l + u * u;
+// return c > 0 && (r = ((t.x - a) * l + (t.y - s) * u) / c, r > 1 ? (a = i.x, s = i.y) : r > 0 && (a += l * r, s += u * r)), l = t.x - a, u = t.y - s, n ? l * l + u * u : new o.Point(a, s)
+// }
+// }, 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, r = this._parts, a = null, s = 0, l = r.length; l > s; s++) for (var u = r[s], c = 1, h = u.length; h > c; c++) {
+// e = u[c - 1], i = u[c];
+// 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, r = e ? t : [];
+// for (i = 0, n = t.length; n > i; i++) {
+// if (o.Util.isArray(t[i]) && "number" != typeof t[i][0]) return;
+// r[i] = o.latLng(t[i])
+// }
+// return r
+// },
+// _initEvents: function() {
+// o.Path.prototype._initEvents.call(this)
+// },
+// _getPathPartStr: function(t) {
+// for (var e, i = o.Path.VML, n = 0, r = t.length, a = ""; r > 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,
+// r = n.length;
+// if (this.options.noClip) return void(this._parts = [n]);
+// this._parts = [];
+// var a = this._parts,
+// s = this._map._pathViewport,
+// l = o.LineUtil;
+// for (t = 0, e = 0; r - 1 > t; t++) i = l.clipSegment(n[t], n[t + 1], s, t), i && (a[e] = a[e] || [], a[e].push(i[0]), (i[1] !== n[t + 1] || t === r - 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, r, a, s, l, u, c, h, d = [1, 4, 2, 8],
+// p = o.LineUtil;
+// for (n = 0, u = t.length; u > n; n++) t[n]._code = p._getBitCode(t[n], e);
+// for (a = 0; 4 > a; a++) {
+// for (c = d[a], i = [], n = 0, u = t.length, r = u - 1; u > n; r = n++) s = t[n], l = t[r], s._code & c ? l._code & c || (h = p._getEdgeIntersection(l, s, c, e), h._code = p._getBitCode(h, e), i.push(h)) : (l._code & c && (h = p._getEdgeIntersection(l, s, c, e), h._code = p._getBitCode(h, e), i.push(h)), i.push(s));
+// 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 r = o.PolyUtil.clipPolygon(this._parts[i], this._map._pathViewport);
+// r.length && e.push(r)
+// }
+// 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, r, a, s, l, u, c = this.options.weight / 2;
+// for (o.Browser.touch && (c += 10), i = 0, a = this._parts.length; a > i; i++) for (u = this._parts[i], n = 0, s = u.length, r = s - 1; s > n; r = n++) if ((e || 0 !== n) && (l = o.LineUtil.pointToSegmentDistance(t, u[r], u[n]), c >= l)) return !0;
+// return !1
+// }
+// } : {}), o.Polygon.include(o.Path.CANVAS ? {
+// _containsPoint: function(t) {
+// var e, i, n, r, a, s, l, u, c = !1;
+// if (o.Polyline.prototype._containsPoint.call(this, t, !0)) return !0;
+// for (r = 0, l = this._parts.length; l > r; r++) for (e = this._parts[r], a = 0, u = e.length, s = u - 1; u > a; s = a++) i = e[a], n = e[s], i.y > t.y != n.y > t.y && t.x < (n.x - i.x) * (t.y - i.y) / (n.y - i.y) + i.x && (c = !c);
+// return c
+// }
+// } : {}), 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, r = o.Util.isArray(t) ? t : t.features;
+// if (r) {
+// for (e = 0, i = r.length; i > e; e++) n = r[e], (n.geometries || n.geometry || n.features || n.coordinates) && this.addData(r[e]);
+// return this
+// }
+// var a = this.options;
+// if (!a.filter || a.filter(t)) {
+// var s = o.GeoJSON.geometryToLayer(t, a.pointToLayer, a.coordsToLatLng, a);
+// return s.feature = o.GeoJSON.asFeature(t), s.defaultOptions = s.options, this.resetStyle(s), a.onEachFeature && a.onEachFeature(t, s), this.addLayer(s)
+// }
+// },
+// 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 r, a, s, l, u = "Feature" === t.type ? t.geometry : t,
+// c = u.coordinates,
+// h = [];
+// switch (i = i || this.coordsToLatLng, u.type) {
+// case "Point":
+// return r = i(c), e ? e(t, r) : new o.Marker(r);
+// case "MultiPoint":
+// for (s = 0, l = c.length; l > s; s++) r = i(c[s]), h.push(e ? e(t, r) : new o.Marker(r));
+// return new o.FeatureGroup(h);
+// case "LineString":
+// return a = this.coordsToLatLngs(c, 0, i), new o.Polyline(a, n);
+// case "Polygon":
+// if (2 === c.length && !c[1].length) throw new Error("Invalid GeoJSON object.");
+// return a = this.coordsToLatLngs(c, 1, i), new o.Polygon(a, n);
+// case "MultiLineString":
+// return a = this.coordsToLatLngs(c, 1, i), new o.MultiPolyline(a, n);
+// case "MultiPolygon":
+// return a = this.coordsToLatLngs(c, 2, i), new o.MultiPolygon(a, n);
+// case "GeometryCollection":
+// for (s = 0, l = u.geometries.length; l > s; s++) h.push(this.geometryToLayer({
+// geometry: u.geometries[s],
+// type: "Feature",
+// properties: t.properties
+// }, e, i, n));
+// return new o.FeatureGroup(h);
+// 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, r, o, a = [];
+// for (r = 0, o = t.length; o > r; r++) n = e ? this.coordsToLatLngs(t[r], e - 1, i) : (i || this.coordsToLatLng)(t[r]), a.push(n);
+// return a
+// },
+// latLngToCoords: function(t) {
+// var e = [t.lng, t.lat];
+// return t.alt !== n && 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 s = {
+// toGeoJSON: function() {
+// return o.GeoJSON.getFeature(this, {
+// type: "Point",
+// coordinates: o.GeoJSON.latLngToCoords(this.getLatLng())
+// })
+// }
+// };
+// o.Marker.include(s), o.Circle.include(s), o.CircleMarker.include(s), 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 r = i && "GeometryCollection" === i.type;
+// return this.eachLayer(function(t) {
+// t.toGeoJSON && (e = t.toGeoJSON(), n.push(r ? e.geometry : o.GeoJSON.asFeature(e)))
+// }), r ? 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 r, a, s, l = o.stamp(i),
+// u = "_leaflet_" + e + l;
+// return t[u] ? this : (r = function(e) {
+// return i.call(n || t, e || o.DomEvent._getEvent())
+// }, o.Browser.pointer && 0 === e.indexOf("touch") ? this.addPointerListener(t, e, r, l) : (o.Browser.touch && "dblclick" === e && this.addDoubleTapListener && this.addDoubleTapListener(t, r, l), "addEventListener" in t ? "mousewheel" === e ? (t.addEventListener("DOMMouseScroll", r, !1), t.addEventListener(e, r, !1)) : "mouseenter" === e || "mouseleave" === e ? (a = r, s = "mouseenter" === e ? "mouseover" : "mouseout", r = function(e) {
+// return o.DomEvent._checkMouse(t, e) ? a(e) : void 0
+// }, t.addEventListener(s, r, !1)) : "click" === e && o.Browser.android ? (a = r, r = function(t) {
+// return o.DomEvent._filterClick(t, a)
+// }, t.addEventListener(e, r, !1)) : t.addEventListener(e, r, !1) : "attachEvent" in t && t.attachEvent("on" + e, r), t[u] = r, this))
+// },
+// removeListener: function(t, e, i) {
+// var n = o.stamp(i),
+// r = "_leaflet_" + e + n,
+// a = t[r];
+// 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[r] = 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),
+// r = n.subtract(this._startPoint);
+// (r.x || r.y) && (o.Browser.touch && Math.abs(r.x) + Math.abs(r.y) < 3 || (o.DomEvent.preventDefault(t), this._moved || (this.fire("dragstart"), this._moved = !0, this._startPos = o.DomUtil.getPosition(this._element).subtract(r), 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(r), 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,
+// r = (n - e + i) % t + e - i,
+// o = (n + e + i) % t - e - i,
+// a = Math.abs(r + i) < Math.abs(o + i) ? r : o;
+// this._draggable._newPos.x = a
+// },
+// _onDragEnd: function(t) {
+// var e = this._map,
+// i = e.options,
+// n = +new Date - this._lastTime,
+// r = !i.inertia || n > i.inertiaThreshold || !this._positions[0];
+// if (e.fire("dragend", t), r) e.fire("moveend");
+// else {
+// var a = this._lastPos.subtract(this._positions[0]),
+// s = (this._lastTime + n - this._times[0]) / 1e3,
+// l = i.easeLinearity,
+// u = a.multiplyBy(l / s),
+// c = u.distanceTo([0, 0]),
+// h = Math.min(i.inertiaMaxSpeed, c),
+// d = u.multiplyBy(h / c),
+// p = h / (i.inertiaDeceleration * l),
+// f = d.multiplyBy(-p / 2).round();
+// f.x && f.y ? (f = e._limitOffset(f, e.options.maxBounds), o.Util.requestAnimFrame(function() {
+// e.panBy(f, {
+// duration: p,
+// easeLinearity: l,
+// 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 r(t) {
+// var e;
+// if (o.Browser.pointer ? (f.push(t.pointerId), e = f.length) : e = t.touches.length, !(e > 1)) {
+// var i = Date.now(),
+// n = i - (s || i);
+// l = t.touches ? t.touches[0] : t, u = n > 0 && c >= n, s = i
+// }
+// }
+// function a(t) {
+// if (o.Browser.pointer) {
+// var e = f.indexOf(t.pointerId);
+// if (-1 === e) return;
+// f.splice(e, 1)
+// }
+// if (u) {
+// if (o.Browser.pointer) {
+// var n, r = {};
+// for (var a in l) n = l[a], "function" == typeof n ? r[a] = n.bind(l) : r[a] = n;
+// l = r
+// }
+// l.type = "dblclick", i(l), s = null
+// }
+// }
+// var s, l, u = !1,
+// c = 250,
+// h = "_leaflet_",
+// d = this._touchstart,
+// p = this._touchend,
+// f = [];
+// t[h + d + n] = r, t[h + p + n] = a;
+// var m = o.Browser.pointer ? e.documentElement : t;
+// return t.addEventListener(d, r, !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, r) {
+// var a = "_leaflet_",
+// s = this._pointers,
+// l = function(t) {
+// "mouse" !== t.pointerType && t.pointerType !== t.MSPOINTER_TYPE_MOUSE && o.DomEvent.preventDefault(t);
+// for (var e = !1, i = 0; i < s.length; i++) if (s[i].pointerId === t.pointerId) {
+// e = !0;
+// break
+// }
+// e || s.push(t), t.touches = s.slice(), t.changedTouches = [t], n(t)
+// };
+// if (t[a + "touchstart" + r] = l, t.addEventListener(this.POINTER_DOWN, l, !1), !this._pointerDocumentListener) {
+// var u = function(t) {
+// for (var e = 0; e < s.length; e++) if (s[e].pointerId === t.pointerId) {
+// s.splice(e, 1);
+// break
+// }
+// };
+// e.documentElement.addEventListener(this.POINTER_UP, u, !1), e.documentElement.addEventListener(this.POINTER_CANCEL, u, !1), this._pointerDocumentListener = !0
+// }
+// return this
+// },
+// addPointerListenerMove: function(t, e, i, n) {
+// function r(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 o = "_leaflet_",
+// a = this._pointers;
+// return t[o + "touchmove" + n] = r, t.addEventListener(this.POINTER_MOVE, r, !1), this
+// },
+// addPointerListenerEnd: function(t, e, i, n) {
+// var r = "_leaflet_",
+// o = this._pointers,
+// a = function(t) {
+// for (var e = 0; e < o.length; e++) if (o[e].pointerId === t.pointerId) {
+// o.splice(e, 1);
+// break
+// }
+// t.touches = o.slice(), t.changedTouches = [t], i(t)
+// };
+// return t[r + "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_",
+// r = t[n + e + i];
+// switch (e) {
+// case "touchstart":
+// t.removeEventListener(this.POINTER_DOWN, r, !1);
+// break;
+// case "touchmove":
+// t.removeEventListener(this.POINTER_MOVE, r, !1);
+// break;
+// case "touchend":
+// t.removeEventListener(this.POINTER_UP, r, !1), t.removeEventListener(this.POINTER_CANCEL, r, !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]),
+// r = i.mouseEventToLayerPoint(t.touches[1]),
+// a = i._getCenterLayerPoint();
+// this._startCenter = n.add(r)._divideBy(2), this._startDist = n.distanceTo(r), 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),
+// r = t.getZoom(),
+// a = t.getScaleZoom(this._scale) - r,
+// s = a > 0 ? Math.ceil(a) : Math.floor(a),
+// l = t._limitZoom(r + s),
+// u = t.getZoomScale(l) / this._scale;
+// t._animateZoom(n, l, i, u)
+// },
+// _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 r = e.createEvent("MouseEvents");
+// r._simulated = !0, n.target._simulatedClick = !0, r.initMouseEvent(i, !0, !0, t, 1, n.screenX, n.screenY, n.clientX, n.clientY, !1, !1, !1, !1, 0, null), n.target.dispatchEvent(r)
+// }
+// }), 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) && (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),
+// r = 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(r.x) - 4) + "px", i.style.height = Math.max(0, Math.abs(r.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,
+// r = i.scrollTop || n.scrollTop,
+// o = i.scrollLeft || n.scrollLeft;
+// this._map._container.focus(), t.scrollTo(o, r)
+// }
+// },
+// _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 = {},
+// r = this.keyCodes;
+// for (e = 0, i = r.left.length; i > e; e++) n[r.left[e]] = [-1 * t, 0];
+// for (e = 0, i = r.right.length; i > e; e++) n[r.right[e]] = [t, 0];
+// for (e = 0, i = r.down.length; i > e; e++) n[r.down[e]] = [0, t];
+// for (e = 0, i = r.up.length; i > e; e++) n[r.up[e]] = [0, -1 * t]
+// },
+// _setZoomOffset: function(t) {
+// var e, i, n = this._zoomKeys = {},
+// r = this.keyCodes;
+// for (e = 0, i = r.zoomIn.length; i > e; e++) n[r.zoomIn[e]] = t;
+// for (e = 0, i = r.zoomOut.length; i > e; e++) n[r.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, r) {
+// var a = i + t + " " + i + r;
+// e[t + r] = 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, r, a) {
+// var s = o.DomUtil.create("a", i, n);
+// s.innerHTML = t, s.href = "#", s.title = e;
+// var l = o.DomEvent.stopPropagation;
+// return o.DomEvent.on(s, "click", l).on(s, "mousedown", l).on(s, "dblclick", l).on(s, "click", o.DomEvent.preventDefault).on(s, "click", r, a).on(s, "click", this._refocusOnMap, a), s
+// },
+// _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,
+// r = this._map.getSize(),
+// o = this.options,
+// a = 0;
+// r.x > 0 && (a = n * (o.maxWidth / r.x)), this._updateScales(o, 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, r = 3.2808399 * t,
+// o = this._iScale;
+// r > 5280 ? (e = r / 5280, i = this._getRoundNum(e), o.style.width = this._getScaleWidth(i / e) + "px", o.innerHTML = i + " mi") : (n = this._getRoundNum(r), o.style.width = this._getScaleWidth(n / r) + "px", o.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 r = e.createElement("div");
+// return r.innerHTML = n, r.firstChild
+// },
+// _addItem: function(t) {
+// var i, n = e.createElement("label"),
+// r = this._map.hasLayer(t.layer);
+// t.overlay ? (i = e.createElement("input"), i.type = "checkbox", i.className = "leaflet-control-layers-selector", i.defaultChecked = r) : i = this._createRadioElement("leaflet-base-layers", r), 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 s = t.overlay ? this._overlaysList : this._baseLayersList;
+// return s.appendChild(n), n
+// },
+// _onInputClick: function() {
+// var t, e, i, n = this._form.getElementsByTagName("input"),
+// r = n.length;
+// for (this._handlingClick = !0, t = 0; r > 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, r = this._el,
+// a = t.getComputedStyle(r);
+// 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, i) {
+// if (e = e === n ? this._zoom : this._limitZoom(e), t = this._limitCenter(o.latLng(t), e, this.options.maxBounds), i = i || {}, this._panAnim && this._panAnim.stop(), this._loaded && !i.reset && i !== !0) {
+// i.animate !== n && (i.zoom = o.extend({
+// animate: i.animate
+// }, i.zoom), i.pan = o.extend({
+// animate: i.animate
+// }, i.pan));
+// var r = this._zoom !== e ? this._tryAnimatedZoom && this._tryAnimatedZoom(t, e, i.zoom) : this._tryAnimatedPan(t, i.pan);
+// if (r) 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)
+// }
+// }), 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),
+// r = this._getCenterOffset(t)._divideBy(1 - 1 / n),
+// o = this._getCenterLayerPoint()._add(r);
+// return !(i.animate !== !0 && !this.getSize().contains(r)) && (this.fire("movestart").fire("zoomstart"), this._animateZoom(t, e, o, n, null, !0), !0)
+// },
+// _animateZoom: function(t, e, i, n, r, a, s) {
+// s || (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: r,
+// backwards: a
+// }), setTimeout(o.bind(this._onZoomTransitionEnd, this), 250)
+// }, this)
+// },
+// _onZoomTransitionEnd: function() {
+// this._animatingZoom && (this._animatingZoom = !1, o.DomUtil.removeClass(this._mapPane, "leaflet-zoom-anim"), o.Util.requestAnimFrame(function() {
+// this._resetView(this._animateToCenter, this._animateToZoom, !0, !0), o.Draggable && (o.Draggable._disabled = !1)
+// }, this))
+// }
+// } : {}), 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],
+// r = o.DomUtil.getScaleString(t.scale, t.origin);
+// e.style[i] = t.backwards ? r + " " + n : n + " " + r
+// },
+// _endZoomAnim: function() {
+// var t = this._tileContainer,
+// e = this._bgBuffer;
+// t.style.visibility = "", t.parentNode.appendChild(t), o.Util.falseFn(e.offsetWidth);
+// var i = this._map.getZoom();
+// (i > this.options.maxZoom || i < this.options.minZoom) && this._clearBgBuffer(), 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"),
+// r = 0;
+// for (e = 0, i = n.length; i > e; e++) n[e].complete && r++;
+// return r / i
+// },
+// _stopLoadingImages: function(t) {
+// var e, i, n, r = Array.prototype.slice.call(t.getElementsByTagName("img"));
+// for (e = 0, i = r.length; i > e; e++) n = r[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),
+// r = 180 * t.coords.accuracy / 40075017,
+// a = r / Math.cos(o.LatLng.DEG_TO_RAD * e),
+// s = o.latLngBounds([e - r, i - a], [e + r, i + a]),
+// l = this._locateOptions;
+// if (l.setView) {
+// var u = Math.min(this.getBoundsZoom(s), l.maxZoom);
+// this.setView(n, u)
+// }
+// var c = {
+// latlng: n,
+// bounds: s,
+// timestamp: t.timestamp
+// };
+// for (var h in t.coords)"number" == typeof t.coords[h] && (c[h] = t.coords[h]);
+// this.fire("locationfound", c)
+// }
+// })
+// }(window, document), i("ViewModels/DistanceLegendViewModel", ["Cesium/Core/defined", "Cesium/Core/DeveloperError", "Cesium/Core/EllipsoidGeodesic", "Cesium/Core/Cartesian2", "Cesium/Core/getTimestamp", "Cesium/Core/EventHelper", "KnockoutES5", "Core/loadView", "leaflet"], function(t, e, i, n, r, o, a, s, l) {
+// "use strict";
+
+// function u(e, i) {
+// var o = r();
+// if (!(o < e._lastLegendUpdate + 250)) {
+// e._lastLegendUpdate = o;
+// var a = i.canvas.clientWidth,
+// s = i.canvas.clientHeight,
+// l = i.camera.getPickRay(new n(a / 2 | 0, s - 1)),
+// u = i.camera.getPickRay(new n(1 + a / 2 | 0, s - 1)),
+// c = i.globe,
+// h = c.pick(l, i),
+// f = c.pick(u, i);
+// if (!t(h) || !t(f)) return e.barWidth = void 0, void(e.distanceLabel = void 0);
+// var m = c.ellipsoid.cartesianToCartographic(h),
+// g = c.ellipsoid.cartesianToCartographic(f);
+// d.setEndPoints(m, g);
+// for (var v, _ = d.surfaceDistance, y = 100, b = p.length - 1; !t(v) && b >= 0; --b) p[b] / _ < y && (v = p[b]);
+// if (t(v)) {
+// var w;
+// w = v >= 1e3 ? (v / 1e3).toString() + " km" : v.toString() + " m", e.barWidth = v / _ | 0, e.distanceLabel = w
+// } else e.barWidth = void 0, e.distanceLabel = void 0
+// }
+// }
+// function c(t, e) {
+// var i = e.getSize().y / 2,
+// n = 100,
+// r = e.containerPointToLatLng([0, i]).distanceTo(e.containerPointToLatLng([n, i])),
+// o = l.control.scale()._getRoundNum(r),
+// a = o < 1e3 ? o + " m" : o / 1e3 + " km";
+// t.barWidth = o / r * n, t.distanceLabel = a
+// }
+// var h = function(i) {
+// function n() {
+// if (t(r.terria)) {
+// var e = r.terria.scene;
+// r._removeSubscription = e.postRender.addEventListener(function() {
+// u(this, e)
+// }, r)
+// } else if (t(r.terria.leaflet)) {
+// var i = r.terria.leaflet.map,
+// n = function() {
+// c(r, i)
+// };
+// r._removeSubscription = function() {
+// i.off("zoomend", n), i.off("moveend", n)
+// }, i.on("zoomend", n), i.on("moveend", n), c(r, i)
+// }
+// }
+// if (!t(i) || !t(i.terria)) throw new e("options.terria is required.");
+// this.terria = i.terria, this._removeSubscription = void 0, this._lastLegendUpdate = void 0, this.eventHelper = new o, this.distanceLabel = void 0, this.barWidth = void 0, a.track(this, ["distanceLabel", "barWidth"]), this.eventHelper.add(this.terria.afterWidgetChanged, function() {
+// t(this._removeSubscription) && (this._removeSubscription(), this._removeSubscription = void 0)
+// }, this);
+// var r = this;
+// n(), this.eventHelper.add(this.terria.afterWidgetChanged, function() {
+// n()
+// }, this)
+// };
+// h.prototype.destroy = function() {
+// this.eventHelper.removeAll()
+// }, h.prototype.show = function(t) {
+// var e = '<div class="distance-legend" data-bind="visible: distanceLabel && barWidth"><div class="distance-legend-label" data-bind="text: distanceLabel"></div><div class="distance-legend-scale-bar" data-bind="style: { width: barWidth + \'px\', left: (5 + (125 - barWidth) / 2) + \'px\' }"></div></div>';
+// s(e, t, this)
+// }, h.create = function(t) {
+// var e = new h(t);
+// return e.show(t.container), e
+// };
+// var d = new i,
+// p = [1, 2, 3, 5, 10, 20, 30, 50, 100, 200, 300, 500, 1e3, 2e3, 3e3, 5e3, 1e4, 2e4, 3e4, 5e4, 1e5, 2e5, 3e5, 5e5, 1e6, 2e6, 3e6, 5e6, 1e7, 2e7, 3e7, 5e7];
+// return h
+// }), i("ViewModels/UserInterfaceControl", ["Cesium/Core/defined", "Cesium/Core/defineProperties", "Cesium/Core/DeveloperError", "KnockoutES5"], function(t, e, i, n) {
+// "use strict";
+// var r = function(e) {
+// if (!t(e)) throw new i("terria is required");
+// this._terria = e, this.name = "Unnamed Control", this.text = void 0, this.svgIcon = void 0, this.svgHeight = void 0, this.svgWidth = void 0, this.cssClass = void 0, this.isActive = !1, n.track(this, ["name", "svgIcon", "svgHeight", "svgWidth", "cssClass", "isActive"])
+// };
+// return e(r.prototype, {
+// terria: {
+// get: function() {
+// return this._terria
+// }
+// },
+// hasText: {
+// get: function() {
+// return t(this.text) && "string" == typeof this.text
+// }
+// }
+// }), r.prototype.activate = function() {
+// throw new i("activate must be implemented in the derived class.")
+// }, r
+// }), i("ViewModels/NavigationControl", ["ViewModels/UserInterfaceControl"], function(t) {
+// "use strict";
+// var e = function(e) {
+// t.apply(this, arguments)
+// };
+// return e.prototype = Object.create(t.prototype), e
+// }), i("SvgPaths/svgReset", [], function() {
+// "use strict";
+// return "M 7.5,0 C 3.375,0 0,3.375 0,7.5 0,11.625 3.375,15 7.5,15 c 3.46875,0 6.375,-2.4375 7.21875,-5.625 l -1.96875,0 C 12,11.53125 9.9375,13.125 7.5,13.125 4.40625,13.125 1.875,10.59375 1.875,7.5 1.875,4.40625 4.40625,1.875 7.5,1.875 c 1.59375,0 2.90625,0.65625 3.9375,1.6875 l -3,3 6.5625,0 L 15,0 12.75,2.25 C 11.4375,0.84375 9.5625,0 7.5,0 z"
+// }), i("ViewModels/ResetViewNavigationControl", ["Cesium/Core/defined", "Cesium/Scene/Camera", "Cesium/Core/Rectangle", "Cesium/Core/Cartographic", "ViewModels/NavigationControl", "SvgPaths/svgReset"], function(t, e, i, n, r, o) {
+// "use strict";
+// var a = function(t) {
+// r.apply(this, arguments), this.name = "Reset View", this.svgIcon = o, this.svgHeight = 15, this.svgWidth = 15, this.cssClass = "navigation-control-icon-reset"
+// };
+// return a.prototype = Object.create(r.prototype), a.prototype.resetView = function() {
+// var r = this.terria.scene,
+// o = r.screenSpaceCameraController;
+// if (o.enableInputs) {
+// this.isActive = !0;
+// var a = r.camera;
+// if (t(this.terria.trackedEntity)) {
+// var s = this.terria.trackedEntity;
+// this.terria.trackedEntity = void 0, this.terria.trackedEntity = s
+// } else if (this.terria.options.defaultResetView) {
+// if (this.terria.options.defaultResetView && this.terria.options.defaultResetView instanceof n) a.flyTo({
+// destination: r.globe.ellipsoid.cartographicToCartesian(this.terria.options.defaultResetView)
+// });
+// else if (this.terria.options.defaultResetView && this.terria.options.defaultResetView instanceof i) try {
+// i.validate(this.terria.options.defaultResetView), a.flyTo({
+// destination: this.terria.options.defaultResetView
+// })
+// } catch (l) {
+// console.log("Cesium-navigation/ResetViewNavigationControl: options.defaultResetView Cesium rectangle is invalid!")
+// }
+// } else "function" == typeof a.flyHome ? a.flyHome(1) : a.flyTo({
+// destination: e.DEFAULT_VIEW_RECTANGLE,
+// duration: 1
+// });
+// this.isActive = !1
+// }
+// }, a.prototype.activate = function() {
+// this.resetView()
+// }, a
+// }), i("Core/Utils", ["Cesium/Core/defined", "Cesium/Core/Ray", "Cesium/Core/Cartesian3", "Cesium/Core/Cartographic", "Cesium/Core/ReferenceFrame", "Cesium/Scene/SceneMode"], function(t, e, i, n, r, o) {
+// "use strict";
+// var a = {},
+// s = new n,
+// l = new e;
+// return a.getCameraFocus = function(e, n, r) {
+// var a = e.scene,
+// u = a.camera;
+// if (a.mode != o.MORPHING && (t(r) || (r = new i), t(e.trackedEntity) ? r = e.trackedEntity.position.getValue(e.clock.currentTime, r) : (l.origin = u.positionWC, l.direction = u.directionWC, r = a.globe.pick(l, a, r)), t(r))) return a.mode == o.SCENE2D || a.mode == o.COLUMBUS_VIEW ? (r = u.worldToCameraCoordinatesPoint(r, r), n && (r = a.globe.ellipsoid.cartographicToCartesian(a.mapProjection.unproject(r, s), r))) : n || (r = u.worldToCameraCoordinatesPoint(r, r)), r
+// }, a
+// }), i("ViewModels/ZoomNavigationControl", ["Cesium/Core/defined", "Cesium/Core/Ray", "Cesium/Core/IntersectionTests", "Cesium/Core/Cartesian3", "Cesium/Scene/SceneMode", "ViewModels/NavigationControl", "Core/Utils"], function(t, e, i, n, r, o, a) {
+// "use strict";
+// var s = function(t, e) {
+// o.apply(this, arguments), this.name = "Zoom " + (e ? "In" : "Out"), this.text = e ? "+" : "-", this.cssClass = "navigation-control-icon-zoom-" + (e ? "in" : "out"), this.relativeAmount = 2, e && (this.relativeAmount = 1 / this.relativeAmount)
+// };
+// s.prototype.relativeAmount = 1, s.prototype = Object.create(o.prototype), s.prototype.activate = function() {
+// this.zoom(this.relativeAmount)
+// };
+// var l = new n;
+// return s.prototype.zoom = function(o) {
+// if (this.isActive = !0, t(this.terria)) {
+// var s = this.terria.scene,
+// u = s.screenSpaceCameraController;
+// if (!u.enableInputs || !u.enableZoom) return;
+// var c, h = s.camera;
+// switch (s.mode) {
+// case r.MORPHING:
+// break;
+// case r.SCENE2D:
+// h.zoomIn(h.positionCartographic.height * (1 - this.relativeAmount));
+// break;
+// default:
+// var d;
+// if (d = t(this.terria.trackedEntity) ? new n : a.getCameraFocus(this.terria, !1), t(d)) c = {
+// direction: h.direction,
+// up: h.up
+// };
+// else {
+// var p = new e(h.worldToCameraCoordinatesPoint(s.globe.ellipsoid.cartographicToCartesian(h.positionCartographic)), h.directionWC);
+// d = i.grazingAltitudeLocation(p, s.globe.ellipsoid), c = {
+// heading: h.heading,
+// pitch: h.pitch,
+// roll: h.roll
+// }
+// }
+// var f = n.subtract(h.position, d, l),
+// m = n.multiplyByScalar(f, o, f),
+// g = n.add(d, m, d);
+// t(this.terria.trackedEntity) || s.mode == r.COLUMBUS_VIEW ? h.position = g : h.flyTo({
+// destination: g,
+// orientation: c,
+// duration: .5,
+// convert: !1
+// })
+// }
+// }
+// this.isActive = !1
+// }, s
+// }), i("SvgPaths/svgCompassOuterRing", [], function() {
+// "use strict";
+// return "m 66.5625,0 0,15.15625 3.71875,0 0,-10.40625 5.5,10.40625 4.375,0 0,-15.15625 -3.71875,0 0,10.40625 L 70.9375,0 66.5625,0 z M 72.5,20.21875 c -28.867432,0 -52.28125,23.407738 -52.28125,52.28125 0,28.87351 23.413818,52.3125 52.28125,52.3125 28.86743,0 52.28125,-23.43899 52.28125,-52.3125 0,-28.873512 -23.41382,-52.28125 -52.28125,-52.28125 z m 0,1.75 c 13.842515,0 26.368948,5.558092 35.5,14.5625 l -11.03125,11 0.625,0.625 11.03125,-11 c 8.9199,9.108762 14.4375,21.579143 14.4375,35.34375 0,13.764606 -5.5176,26.22729 -14.4375,35.34375 l -11.03125,-11 -0.625,0.625 11.03125,11 c -9.130866,9.01087 -21.658601,14.59375 -35.5,14.59375 -13.801622,0 -26.321058,-5.53481 -35.4375,-14.5 l 11.125,-11.09375 c 6.277989,6.12179 14.857796,9.90625 24.3125,9.90625 19.241896,0 34.875,-15.629154 34.875,-34.875 0,-19.245847 -15.633104,-34.84375 -34.875,-34.84375 -9.454704,0 -18.034511,3.760884 -24.3125,9.875 L 37.0625,36.4375 C 46.179178,27.478444 58.696991,21.96875 72.5,21.96875 z m -0.875,0.84375 0,13.9375 1.75,0 0,-13.9375 -1.75,0 z M 36.46875,37.0625 47.5625,48.15625 C 41.429794,54.436565 37.65625,63.027539 37.65625,72.5 c 0,9.472461 3.773544,18.055746 9.90625,24.34375 L 36.46875,107.9375 c -8.96721,-9.1247 -14.5,-21.624886 -14.5,-35.4375 0,-13.812615 5.53279,-26.320526 14.5,-35.4375 z M 72.5,39.40625 c 18.297686,0 33.125,14.791695 33.125,33.09375 0,18.302054 -14.827314,33.125 -33.125,33.125 -18.297687,0 -33.09375,-14.822946 -33.09375,-33.125 0,-18.302056 14.796063,-33.09375 33.09375,-33.09375 z M 22.84375,71.625 l 0,1.75 13.96875,0 0,-1.75 -13.96875,0 z m 85.5625,0 0,1.75 14,0 0,-1.75 -14,0 z M 71.75,108.25 l 0,13.9375 1.71875,0 0,-13.9375 -1.71875,0 z"
+// }), i("SvgPaths/svgCompassGyro", [], function() {
+// "use strict";
+// return "m 72.71875,54.375 c -0.476702,0 -0.908208,0.245402 -1.21875,0.5625 -0.310542,0.317098 -0.551189,0.701933 -0.78125,1.1875 -0.172018,0.363062 -0.319101,0.791709 -0.46875,1.25 -6.91615,1.075544 -12.313231,6.656514 -13,13.625 -0.327516,0.117495 -0.661877,0.244642 -0.9375,0.375 -0.485434,0.22959 -0.901634,0.471239 -1.21875,0.78125 -0.317116,0.310011 -0.5625,0.742111 -0.5625,1.21875 l 0.03125,0 c 0,0.476639 0.245384,0.877489 0.5625,1.1875 0.317116,0.310011 0.702066,0.58291 1.1875,0.8125 0.35554,0.168155 0.771616,0.32165 1.21875,0.46875 1.370803,6.10004 6.420817,10.834127 12.71875,11.8125 0.146999,0.447079 0.30025,0.863113 0.46875,1.21875 0.230061,0.485567 0.470708,0.870402 0.78125,1.1875 0.310542,0.317098 0.742048,0.5625 1.21875,0.5625 0.476702,0 0.876958,-0.245402 1.1875,-0.5625 0.310542,-0.317098 0.582439,-0.701933 0.8125,-1.1875 0.172018,-0.363062 0.319101,-0.791709 0.46875,-1.25 6.249045,-1.017063 11.256351,-5.7184 12.625,-11.78125 0.447134,-0.1471 0.86321,-0.300595 1.21875,-0.46875 0.485434,-0.22959 0.901633,-0.502489 1.21875,-0.8125 0.317117,-0.310011 0.5625,-0.710861 0.5625,-1.1875 l -0.03125,0 c 0,-0.476639 -0.245383,-0.908739 -0.5625,-1.21875 C 89.901633,71.846239 89.516684,71.60459 89.03125,71.375 88.755626,71.244642 88.456123,71.117495 88.125,71 87.439949,64.078341 82.072807,58.503735 75.21875,57.375 c -0.15044,-0.461669 -0.326927,-0.884711 -0.5,-1.25 -0.230061,-0.485567 -0.501958,-0.870402 -0.8125,-1.1875 -0.310542,-0.317098 -0.710798,-0.5625 -1.1875,-0.5625 z m -0.0625,1.40625 c 0.03595,-0.01283 0.05968,0 0.0625,0 0.0056,0 0.04321,-0.02233 0.1875,0.125 0.144288,0.147334 0.34336,0.447188 0.53125,0.84375 0.06385,0.134761 0.123901,0.309578 0.1875,0.46875 -0.320353,-0.01957 -0.643524,-0.0625 -0.96875,-0.0625 -0.289073,0 -0.558569,0.04702 -0.84375,0.0625 C 71.8761,57.059578 71.936151,56.884761 72,56.75 c 0.18789,-0.396562 0.355712,-0.696416 0.5,-0.84375 0.07214,-0.07367 0.120304,-0.112167 0.15625,-0.125 z m 0,2.40625 c 0.448007,0 0.906196,0.05436 1.34375,0.09375 0.177011,0.592256 0.347655,1.271044 0.5,2.03125 0.475097,2.370753 0.807525,5.463852 0.9375,8.9375 -0.906869,-0.02852 -1.834463,-0.0625 -2.78125,-0.0625 -0.92298,0 -1.802327,0.03537 -2.6875,0.0625 0.138529,-3.473648 0.493653,-6.566747 0.96875,-8.9375 0.154684,-0.771878 0.320019,-1.463985 0.5,-2.0625 0.405568,-0.03377 0.804291,-0.0625 1.21875,-0.0625 z m -2.71875,0.28125 c -0.129732,0.498888 -0.259782,0.987558 -0.375,1.5625 -0.498513,2.487595 -0.838088,5.693299 -0.96875,9.25 -3.21363,0.15162 -6.119596,0.480068 -8.40625,0.9375 -0.682394,0.136509 -1.275579,0.279657 -1.84375,0.4375 0.799068,-6.135482 5.504716,-11.036454 11.59375,-12.1875 z M 75.5,58.5 c 6.043169,1.18408 10.705093,6.052712 11.5,12.15625 -0.569435,-0.155806 -1.200273,-0.302525 -1.875,-0.4375 -2.262525,-0.452605 -5.108535,-0.783809 -8.28125,-0.9375 -0.130662,-3.556701 -0.470237,-6.762405 -0.96875,-9.25 C 75.761959,59.467174 75.626981,58.990925 75.5,58.5 z m -2.84375,12.09375 c 0.959338,0 1.895843,0.03282 2.8125,0.0625 C 75.48165,71.267751 75.5,71.871028 75.5,72.5 c 0,1.228616 -0.01449,2.438313 -0.0625,3.59375 -0.897358,0.0284 -1.811972,0.0625 -2.75,0.0625 -0.927373,0 -1.831062,-0.03473 -2.71875,-0.0625 -0.05109,-1.155437 -0.0625,-2.365134 -0.0625,-3.59375 0,-0.628972 0.01741,-1.232249 0.03125,-1.84375 0.895269,-0.02827 1.783025,-0.0625 2.71875,-0.0625 z M 68.5625,70.6875 c -0.01243,0.60601 -0.03125,1.189946 -0.03125,1.8125 0,1.22431 0.01541,2.407837 0.0625,3.5625 -3.125243,-0.150329 -5.92077,-0.471558 -8.09375,-0.90625 -0.784983,-0.157031 -1.511491,-0.316471 -2.125,-0.5 -0.107878,-0.704096 -0.1875,-1.422089 -0.1875,-2.15625 0,-0.115714 0.02849,-0.228688 0.03125,-0.34375 0.643106,-0.20284 1.389577,-0.390377 2.25,-0.5625 2.166953,-0.433487 4.97905,-0.75541 8.09375,-0.90625 z m 8.3125,0.03125 c 3.075121,0.15271 5.824455,0.446046 7.96875,0.875 0.857478,0.171534 1.630962,0.360416 2.28125,0.5625 0.0027,0.114659 0,0.228443 0,0.34375 0,0.735827 -0.07914,1.450633 -0.1875,2.15625 -0.598568,0.180148 -1.29077,0.34562 -2.0625,0.5 -2.158064,0.431708 -4.932088,0.754666 -8.03125,0.90625 0.04709,-1.154663 0.0625,-2.33819 0.0625,-3.5625 0,-0.611824 -0.01924,-1.185379 -0.03125,-1.78125 z M 57.15625,72.5625 c 0.0023,0.572772 0.06082,1.131112 0.125,1.6875 -0.125327,-0.05123 -0.266577,-0.10497 -0.375,-0.15625 -0.396499,-0.187528 -0.665288,-0.387337 -0.8125,-0.53125 -0.147212,-0.143913 -0.15625,-0.182756 -0.15625,-0.1875 0,-0.0047 -0.02221,-0.07484 0.125,-0.21875 0.147212,-0.143913 0.447251,-0.312472 0.84375,-0.5 0.07123,-0.03369 0.171867,-0.06006 0.25,-0.09375 z m 31.03125,0 c 0.08201,0.03503 0.175941,0.05872 0.25,0.09375 0.396499,0.187528 0.665288,0.356087 0.8125,0.5 0.14725,0.14391 0.15625,0.21405 0.15625,0.21875 0,0.0047 -0.009,0.04359 -0.15625,0.1875 -0.147212,0.143913 -0.416001,0.343722 -0.8125,0.53125 -0.09755,0.04613 -0.233314,0.07889 -0.34375,0.125 0.06214,-0.546289 0.09144,-1.094215 0.09375,-1.65625 z m -29.5,3.625 c 0.479308,0.123125 0.983064,0.234089 1.53125,0.34375 2.301781,0.460458 5.229421,0.787224 8.46875,0.9375 0.167006,2.84339 0.46081,5.433176 0.875,7.5 0.115218,0.574942 0.245268,1.063612 0.375,1.5625 -5.463677,-1.028179 -9.833074,-5.091831 -11.25,-10.34375 z m 27.96875,0 C 85.247546,81.408945 80.919274,85.442932 75.5,86.5 c 0.126981,-0.490925 0.261959,-0.967174 0.375,-1.53125 0.41419,-2.066824 0.707994,-4.65661 0.875,-7.5 3.204493,-0.15162 6.088346,-0.480068 8.375,-0.9375 0.548186,-0.109661 1.051942,-0.220625 1.53125,-0.34375 z M 70.0625,77.53125 c 0.865391,0.02589 1.723666,0.03125 2.625,0.03125 0.912062,0 1.782843,-0.0048 2.65625,-0.03125 -0.165173,2.736408 -0.453252,5.207651 -0.84375,7.15625 -0.152345,0.760206 -0.322989,1.438994 -0.5,2.03125 -0.437447,0.03919 -0.895856,0.0625 -1.34375,0.0625 -0.414943,0 -0.812719,-0.02881 -1.21875,-0.0625 -0.177011,-0.592256 -0.347655,-1.271044 -0.5,-2.03125 -0.390498,-1.948599 -0.700644,-4.419842 -0.875,-7.15625 z m 1.75,10.28125 c 0.284911,0.01545 0.554954,0.03125 0.84375,0.03125 0.325029,0 0.648588,-0.01171 0.96875,-0.03125 -0.05999,0.148763 -0.127309,0.31046 -0.1875,0.4375 -0.18789,0.396562 -0.386962,0.696416 -0.53125,0.84375 -0.144288,0.147334 -0.181857,0.125 -0.1875,0.125 -0.0056,0 -0.07446,0.02233 -0.21875,-0.125 C 72.355712,88.946416 72.18789,88.646562 72,88.25 71.939809,88.12296 71.872486,87.961263 71.8125,87.8125 z"
+// }), i("SvgPaths/svgCompassRotationMarker", [], function() {
+// "use strict";
+// return "M 72.46875,22.03125 C 59.505873,22.050338 46.521615,27.004287 36.6875,36.875 L 47.84375,47.96875 C 61.521556,34.240041 83.442603,34.227389 97.125,47.90625 l 11.125,-11.125 C 98.401629,26.935424 85.431627,22.012162 72.46875,22.03125 z"
+// }), i("ViewModels/NavigationViewModel", ["Cesium/Core/defined", "Cesium/Core/Math", "Cesium/Core/getTimestamp", "Cesium/Core/EventHelper", "Cesium/Core/Transforms", "Cesium/Scene/SceneMode", "Cesium/Core/Cartesian2", "Cesium/Core/Cartesian3", "Cesium/Core/Matrix4", "Cesium/Core/BoundingSphere", "Cesium/Core/HeadingPitchRange", "KnockoutES5", "Core/loadView", "ViewModels/ResetViewNavigationControl", "ViewModels/ZoomNavigationControl", "SvgPaths/svgCompassOuterRing", "SvgPaths/svgCompassGyro", "SvgPaths/svgCompassRotationMarker", "Core/Utils"], function(t, e, i, n, r, o, a, s, l, u, c, h, d, p, f, m, g, v, _) {
+// "use strict";
+
+// function y(n, u, c) {
+// function h(t, i) {
+// var r = Math.atan2(-t.y, t.x);
+// n.orbitCursorAngle = e.zeroToTwoPi(r - e.PI_OVER_TWO);
+// var o = a.magnitude(t),
+// s = i / 2,
+// l = Math.min(o / s, 1),
+// u = .5 * l * l + .5;
+// n.orbitCursorOpacity = u
+// }
+// var d = n.terria.scene,
+// p = d.screenSpaceCameraController;
+// if (d.mode != o.MORPHING && p.enableInputs) {
+// switch (d.mode) {
+// case o.COLUMBUS_VIEW:
+// if (p.enableLook) break;
+// if (!p.enableTranslate || !p.enableTilt) return;
+// break;
+// case o.SCENE3D:
+// if (p.enableLook) break;
+// if (!p.enableTilt || !p.enableRotate) return;
+// break;
+// case o.SCENE2D:
+// if (!p.enableTranslate) return
+// }
+// document.removeEventListener("mousemove", n.orbitMouseMoveFunction, !1), document.removeEventListener("mouseup", n.orbitMouseUpFunction, !1), t(n.orbitTickFunction) && n.terria.clock.onTick.removeEventListener(n.orbitTickFunction), n.orbitMouseMoveFunction = void 0, n.orbitMouseUpFunction = void 0, n.orbitTickFunction = void 0, n.isOrbiting = !0, n.orbitLastTimestamp = i();
+// var f = d.camera;
+// if (t(n.terria.trackedEntity)) n.orbitFrame = void 0, n.orbitIsLook = !1;
+// else {
+// var m = _.getCameraFocus(n.terria, !0, k);
+// t(m) ? (n.orbitFrame = r.eastNorthUpToFixedFrame(m, d.globe.ellipsoid, E), n.orbitIsLook = !1) : (n.orbitFrame = r.eastNorthUpToFixedFrame(f.positionWC, d.globe.ellipsoid, E), n.orbitIsLook = !0)
+// }
+// n.orbitTickFunction = function(r) {
+// var a, u = i(),
+// c = u - n.orbitLastTimestamp,
+// h = 2.5 * (n.orbitCursorOpacity - .5) / 1e3,
+// p = c * h,
+// m = n.orbitCursorAngle + e.PI_OVER_TWO,
+// g = Math.cos(m) * p,
+// v = Math.sin(m) * p;
+// t(n.orbitFrame) && (a = l.clone(f.transform, x), f.lookAtTransform(n.orbitFrame)), d.mode == o.SCENE2D ? f.move(new s(g, v, 0), Math.max(d.canvas.clientWidth, d.canvas.clientHeight) / 100 * f.positionCartographic.height * p) : n.orbitIsLook ? (f.look(s.UNIT_Z, -g), f.look(f.right, -v)) : (f.rotateLeft(g), f.rotateUp(v)), t(n.orbitFrame) && f.lookAtTransform(a), n.orbitLastTimestamp = u
+// }, n.orbitMouseMoveFunction = function(t) {
+// var e = u.getBoundingClientRect(),
+// i = new a((e.right - e.left) / 2, (e.bottom - e.top) / 2),
+// n = new a(t.clientX - e.left, t.clientY - e.top),
+// r = a.subtract(n, i, C);
+// h(r, e.width)
+// }, n.orbitMouseUpFunction = function(e) {
+// n.isOrbiting = !1, document.removeEventListener("mousemove", n.orbitMouseMoveFunction, !1), document.removeEventListener("mouseup", n.orbitMouseUpFunction, !1), t(n.orbitTickFunction) && n.terria.clock.onTick.removeEventListener(n.orbitTickFunction), n.orbitMouseMoveFunction = void 0, n.orbitMouseUpFunction = void 0, n.orbitTickFunction = void 0
+// }, document.addEventListener("mousemove", n.orbitMouseMoveFunction, !1), document.addEventListener("mouseup", n.orbitMouseUpFunction, !1), n.terria.clock.onTick.addEventListener(n.orbitTickFunction), h(c, u.getBoundingClientRect().width)
+// }
+// }
+// function b(i, n, s) {
+// var u = i.terria.scene,
+// c = u.camera,
+// h = u.screenSpaceCameraController;
+// if (u.mode != o.MORPHING && u.mode != o.SCENE2D && h.enableInputs && (h.enableLook || u.mode != o.COLUMBUS_VIEW && (u.mode != o.SCENE3D || h.enableRotate))) {
+// if (document.removeEventListener("mousemove", i.rotateMouseMoveFunction, !1), document.removeEventListener("mouseup", i.rotateMouseUpFunction, !1), i.rotateMouseMoveFunction = void 0, i.rotateMouseUpFunction = void 0, i.isRotating = !0, i.rotateInitialCursorAngle = Math.atan2(-s.y, s.x), t(i.terria.trackedEntity)) i.rotateFrame = void 0, i.rotateIsLook = !1;
+// else {
+// var d = _.getCameraFocus(i.terria, !0, k);
+// t(d) && (u.mode != o.COLUMBUS_VIEW || h.enableLook || h.enableTranslate) ? (i.rotateFrame = r.eastNorthUpToFixedFrame(d, u.globe.ellipsoid, E), i.rotateIsLook = !1) : (i.rotateFrame = r.eastNorthUpToFixedFrame(c.positionWC, u.globe.ellipsoid, E), i.rotateIsLook = !0)
+// }
+// var p;
+// t(i.rotateFrame) && (p = l.clone(c.transform, x), c.lookAtTransform(i.rotateFrame)), i.rotateInitialCameraAngle = -c.heading, t(i.rotateFrame) && c.lookAtTransform(p), i.rotateMouseMoveFunction = function(r) {
+// var o, s = n.getBoundingClientRect(),
+// u = new a((s.right - s.left) / 2, (s.bottom - s.top) / 2),
+// c = new a(r.clientX - s.left, r.clientY - s.top),
+// h = a.subtract(c, u, C),
+// d = Math.atan2(-h.y, h.x),
+// p = d - i.rotateInitialCursorAngle,
+// f = e.zeroToTwoPi(i.rotateInitialCameraAngle - p),
+// m = i.terria.scene.camera;
+// t(i.rotateFrame) && (o = l.clone(m.transform, x), m.lookAtTransform(i.rotateFrame));
+// var g = -m.heading;
+// m.rotateRight(f - g), t(i.rotateFrame) && m.lookAtTransform(o)
+// }, i.rotateMouseUpFunction = function(t) {
+// i.isRotating = !1, document.removeEventListener("mousemove", i.rotateMouseMoveFunction, !1), document.removeEventListener("mouseup", i.rotateMouseUpFunction, !1), i.rotateMouseMoveFunction = void 0, i.rotateMouseUpFunction = void 0
+// }, document.addEventListener("mousemove", i.rotateMouseMoveFunction, !1), document.addEventListener("mouseup", i.rotateMouseUpFunction, !1)
+// }
+// }
+// var w = function(e) {
+// function i() {
+// t(r.terria) ? (r._unsubcribeFromPostRender && (r._unsubcribeFromPostRender(), r._unsubcribeFromPostRender = void 0), r.showCompass = !0, r._unsubcribeFromPostRender = r.terria.scene.postRender.addEventListener(function() {
+// r.heading = r.terria.scene.camera.heading
+// })) : (r._unsubcribeFromPostRender && (r._unsubcribeFromPostRender(), r._unsubcribeFromPostRender = void 0), r.showCompass = !1)
+// }
+// this.terria = e.terria, this.eventHelper = new n, this.controls = e.controls, t(this.controls) || (this.controls = [new f(this.terria, (!0)), new p(this.terria), new f(this.terria, (!1))]), this.svgCompassOuterRing = m, this.svgCompassGyro = g, this.svgCompassRotationMarker = v, this.showCompass = t(this.terria), this.heading = this.showCompass ? this.terria.scene.camera.heading : 0, this.isOrbiting = !1, this.orbitCursorAngle = 0, this.orbitCursorOpacity = 0, this.orbitLastTimestamp = 0, this.orbitFrame = void 0, this.orbitIsLook = !1, this.orbitMouseMoveFunction = void 0, this.orbitMouseUpFunction = void 0, this.isRotating = !1, this.rotateInitialCursorAngle = void 0, this.rotateFrame = void 0, this.rotateIsLook = !1, this.rotateMouseMoveFunction = void 0, this.rotateMouseUpFunction = void 0, this._unsubcribeFromPostRender = void 0, h.track(this, ["controls", "showCompass", "heading", "isOrbiting", "orbitCursorAngle", "isRotating"]);
+// var r = this;
+// this.eventHelper.add(this.terria.afterWidgetChanged, i, this), i()
+// };
+// w.prototype.destroy = function() {
+// this.eventHelper.removeAll()
+// }, w.prototype.show = function(t) {
+// var e = '<div class="compass" title="Drag outer ring: rotate view. Drag inner gyroscope: free orbit.Double-click: reset view.TIP: You can also free orbit by holding the CTRL key and dragging the map." data-bind="visible: showCompass, event: { mousedown: handleMouseDown, dblclick: handleDoubleClick }"><div class="compass-outer-ring-background"></div>' + " <div class=\"compass-rotation-marker\" data-bind=\"visible: isOrbiting, style: { transform: 'rotate(-' + orbitCursorAngle + 'rad)', '-webkit-transform': 'rotate(-' + orbitCursorAngle + 'rad)', opacity: orbitCursorOpacity }, cesiumSvgPath: { path: svgCompassRotationMarker, width: 145, height: 145 }\"></div> <div class=\"compass-outer-ring\" title=\"Click and drag to rotate the camera\" data-bind=\"style: { transform: 'rotate(-' + heading + 'rad)', '-webkit-transform': 'rotate(-' + heading + 'rad)' }, cesiumSvgPath: { path: svgCompassOuterRing, width: 145, height: 145 }\"></div> <div class=\"compass-gyro-background\"></div> <div class=\"compass-gyro\" data-bind=\"cesiumSvgPath: { path: svgCompassGyro, width: 145, height: 145 }, css: { 'compass-gyro-active': isOrbiting }\"></div></div><div class=\"navigation-controls\"><!-- ko foreach: controls --><div data-bind=\"click: activate, attr: { title: $data.name }, css: $root.isLastControl($data) ? 'navigation-control-last' : 'navigation-control' \"> <!-- ko if: $data.hasText --> <div data-bind=\"text: $data.text, css: $data.isActive ? 'navigation-control-icon-active ' + $data.cssClass : $data.cssClass\"></div> <!-- /ko --> <!-- ko ifnot: $data.hasText --> <div data-bind=\"cesiumSvgPath: { path: $data.svgIcon, width: $data.svgWidth, height: $data.svgHeight }, css: $data.isActive ? 'navigation-control-icon-active ' + $data.cssClass : $data.cssClass\"></div> <!-- /ko --> </div> <!-- /ko --></div>";
+// d(e, t, this)
+// }, w.prototype.add = function(t) {
+// this.controls.push(t)
+// }, w.prototype.remove = function(t) {
+// this.controls.remove(t)
+// }, w.prototype.isLastControl = function(t) {
+// return t === this.controls[this.controls.length - 1]
+// };
+// var C = new a;
+// w.prototype.handleMouseDown = function(t, e) {
+// var i = this.terria.scene;
+// if (i.mode == o.MORPHING) return !0;
+// var n = e.currentTarget,
+// r = e.currentTarget.getBoundingClientRect(),
+// s = r.width / 2,
+// l = new a((r.right - r.left) / 2, (r.bottom - r.top) / 2),
+// u = new a(e.clientX - r.left, e.clientY - r.top),
+// c = a.subtract(u, l, C),
+// h = a.magnitude(c),
+// d = h / s,
+// p = 145,
+// f = 50;
+// if (d < f / p) y(this, n, c);
+// else {
+// if (!(d < 1)) return !0;
+// b(this, n, c)
+// }
+// };
+// var x = new l,
+// E = new l,
+// k = new s;
+// return w.prototype.handleDoubleClick = function(i, n) {
+// var r = i.terria.scene,
+// a = r.camera,
+// l = r.screenSpaceCameraController;
+// if (r.mode == o.MORPHING || !l.enableInputs) return !0;
+// if (r.mode != o.COLUMBUS_VIEW || l.enableTranslate) {
+// if (r.mode == o.SCENE3D || r.mode == o.COLUMBUS_VIEW) {
+// if (!l.enableLook) return;
+// if (r.mode == o.SCENE3D && !l.enableRotate) return
+// }
+// var h = _.getCameraFocus(i.terria, !0, k);
+// if (!t(h)) return void this.controls[1].resetView();
+// var d = r.globe.ellipsoid.cartographicToCartesian(a.positionCartographic, new s),
+// p = r.globe.ellipsoid.geodeticSurfaceNormal(h),
+// f = new u(h, 0);
+// a.flyToBoundingSphere(f, {
+// offset: new c(0, e.PI_OVER_TWO - s.angleBetween(p, a.directionWC), s.distance(d, h)),
+// duration: 1.5
+// })
+// }
+// }, w.create = function(t) {
+// var e = new w(t);
+// return e.show(t.container), e
+// }, w
+// }), i("CesiumNavigation", ["Cesium/Core/defined", "Cesium/Core/defineProperties", "Cesium/Core/Event", "KnockoutES5", "Core/registerKnockoutBindings", "ViewModels/DistanceLegendViewModel", "ViewModels/NavigationViewModel"], function(t, e, i, n, r, o, a) {
+// "use strict";
+
+// function s(e, n) {
+// if (!t(e)) throw new DeveloperError("CesiumWidget or Viewer is required.");
+// var s = t(e.cesiumWidget) ? e.cesiumWidget : e,
+// l = document.createElement("div");
+// l.className = "cesium-widget-cesiumNavigationContainer", s.container.appendChild(l), this.terria = e, this.terria.options = n, this.terria.afterWidgetChanged = new i, this.terria.beforeWidgetChanged = new i, this.container = l, this.navigationDiv = document.createElement("div"), this.navigationDiv.setAttribute("id", "navigationDiv"), this.distanceLegendDiv = document.createElement("div"), this.navigationDiv.setAttribute("id", "distanceLegendDiv"), l.appendChild(this.navigationDiv), l.appendChild(this.distanceLegendDiv), r(), this.distanceLegendViewModel = o.create({
+// container: this.distanceLegendDiv,
+// terria: this.terria,
+// mapElement: l
+// }), this.navigationViewModel = a.create({
+// container: this.navigationDiv,
+// terria: this.terria
+// })
+// }
+// var l = function(t) {
+// s.apply(this, arguments), this._onDestroyListeners = []
+// };
+// return l.prototype.distanceLegendViewModel = void 0, l.prototype.navigationViewModel = void 0, l.prototype.navigationDiv = void 0, l.prototype.distanceLegendDiv = void 0, l.prototype.terria = void 0, l.prototype.container = void 0, l.prototype._onDestroyListeners = void 0, l.prototype.destroy = function() {
+// t(this.navigationViewModel) && this.navigationViewModel.destroy(), t(this.distanceLegendViewModel) && this.distanceLegendViewModel.destroy(), t(this.navigationDiv) && this.navigationDiv.parentNode.removeChild(this.navigationDiv), delete this.navigationDiv, t(this.distanceLegendDiv) && this.distanceLegendDiv.parentNode.removeChild(this.distanceLegendDiv), delete this.distanceLegendDiv, t(this.container) && this.container.parentNode.removeChild(this.container), delete this.container;
+// for (var e = 0; e < this._onDestroyListeners.length; e++) this._onDestroyListeners[e]()
+// }, l.prototype.addOnDestroyListener = function(t) {
+// "function" == typeof t && this._onDestroyListeners.push(t)
+// }, l
+// }), i("dummy/require-less/less/dummy", [], function() {}), i("viewerCesiumNavigationMixin", ["Cesium/Core/defined", "Cesium/Core/defineProperties", "Cesium/Core/DeveloperError", "CesiumNavigation", "dummy/require-less/less/dummy"], function(t, e, i, n) {
+// "use strict";
+
+// function r(n, r) {
+// if (!t(n)) throw new i("viewer is required.");
+// var a = o(n, r);
+// a.addOnDestroyListener(function(t) {
+// return function() {
+// delete t.cesiumNavigation
+// }
+// }(n)), e(n, {
+// cesiumNavigation: {
+// configurable: !0,
+// get: function() {
+// return n.cesiumWidget.cesiumNavigation
+// }
+// }
+// })
+// }
+// r.mixinWidget = function(t, e) {
+// return o.apply(void 0, arguments)
+// };
+// var o = function(i, r) {
+// var o = new n(i, r),
+// a = t(i.cesiumWidget) ? i.cesiumWidget : i;
+// return e(a, {
+// cesiumNavigation: {
+// configurable: !0,
+// get: function() {
+// return o
+// }
+// }
+// }), o.addOnDestroyListener(function(t) {
+// return function() {
+// delete t.cesiumNavigation
+// }
+// }(a)), o
+// };
+// return r
+// }), function(t) {
+// var e = document,
+// i = "appendChild",
+// n = "styleSheet",
+// r = e.createElement("style");
+// r.type = "text/css", e.getElementsByTagName("head")[0][i](r), r[n] ? r[n].cssText = t : r[i](e.createTextNode(t))
+// }(".full-window{position:absolute;top:0;left:0;right:0;bottom:0;margin:0;overflow:hidden;padding:0;-webkit-transition:left .25s ease-out;-moz-transition:left .25s ease-out;-ms-transition:left .25s ease-out;-o-transition:left .25s ease-out;transition:left .25s ease-out}.transparent-to-input{pointer-events:none}.opaque-to-input{pointer-events:auto}.clickable{cursor:pointer}.markdown a:hover,.markdown u,a:hover{text-decoration:underline}.modal,.modal-background{top:0;left:0;bottom:0;right:0}.modal-background{pointer-events:auto;background-color:rgba(0,0,0,.5);z-index:1000;position:fixed}.modal{position:absolute;margin:auto;background-color:#2f353c;max-height:100%;max-width:100%;font-family:'Roboto',sans-serif;color:#fff}.modal-header{background-color:rgba(0,0,0,.2);border-bottom:1px solid rgba(100,100,100,.6);font-size:15px;line-height:40px;margin:0}.modal-header h1{font-size:15px;color:#fff;margin-left:15px}.modal-content{margin-left:15px;margin-right:15px;margin-bottom:15px;padding-top:15px;overflow:auto}.modal-close-button{position:absolute;right:15px;cursor:pointer;font-size:18px;color:#fff}#ui{z-index:2100}@media print{.full-window{position:initial}}.markdown img{max-width:100%}.markdown svg{max-height:100%}.markdown fieldset,.markdown input,.markdown select,.markdown textarea{font-family:inherit;font-size:1rem;box-sizing:border-box;margin-top:0;margin-bottom:0}.markdown label{vertical-align:middle}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{font-family:inherit;font-weight:700;line-height:1.25;margin-top:1em;margin-bottom:.5em}.markdown h1{font-size:2rem}.markdown h2{font-size:1.5rem}.markdown h3{font-size:1.25rem}.markdown h4{font-size:1rem}.markdown h5{font-size:.875rem}.markdown h6{font-size:.75rem}.markdown dl,.markdown ol,.markdown p,.markdown ul{margin-top:0;margin-bottom:1rem}.markdown strong{font-weight:700}.markdown em{font-style:italic}.markdown small{font-size:80%}.markdown mark{color:#000;background:#ff0}.markdown s{text-decoration:line-through}.markdown ol{list-style:decimal inside}.markdown ul{list-style:disc inside}.markdown code,.markdown pre,.markdown samp{font-family:monospace;font-size:inherit}.markdown pre{margin-top:0;margin-bottom:1rem;overflow-x:scroll}.markdown a{color:#68adfe;text-decoration:none}.markdown code,.markdown pre{background-color:transparent;border-radius:3px}.markdown hr{border:0;border-bottom-style:solid;border-bottom-width:1px;border-bottom-color:rgba(0,0,0,.125)}.markdown .left-align{text-align:left}.markdown .center{text-align:center}.markdown .right-align{text-align:right}.markdown .justify{text-align:justify}.markdown .truncate{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.markdown ol.upper-roman{list-style-type:upper-roman}.markdown ol.lower-alpha{list-style-type:lower-alpha}.markdown ul.circle{list-style-type:circle}.markdown ul.square{list-style-type:square}.markdown .list-reset{list-style:none;padding-left:0}.floating,.floating-horizontal,.floating-vertical{pointer-events:auto;position:absolute;border-radius:15px;background-color:rgba(47,53,60,.8)}.floating-horizontal{padding-left:5px;padding-right:5px}.floating-vertical{padding-top:5px;padding-bottom:5px}@media print{.floating{display:none}}.distance-legend{pointer-events:auto;position:absolute;border-radius:15px;background-color:rgba(47,53,60,.8);padding-left:5px;padding-right:5px;right:25px;bottom:30px;height:30px;width:125px;border:1px solid rgba(255,255,255,.1);box-sizing:content-box}.distance-legend-label{display:inline-block;font-size:13px;font-weight:lighter;line-height:30px;color:#ffffff;text-shadow: 5px 2px 6px #000;width:125px;text-align:center}.distance-legend-scale-bar{border-left:1px solid #fff;border-right:1px solid #fff;border-bottom:1px solid #fff;position:absolute;height:10px;top:15px}@media print{.distance-legend{display:none}}@media screen and (max-width:700px),screen and (max-height:420px){.distance-legend{display:none}}.navigation-controls{position:absolute;right:30px;top:210px;width:30px;border:1px solid rgba(255,255,255,.1);font-weight:300;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navigation-control{cursor:pointer;border-bottom:1px solid #555}.naviagation-control:active{color:#fff}.navigation-control-last{cursor:pointer;border-bottom:0}.navigation-control-icon-zoom-in{padding-bottom:4px}.navigation-control-icon-zoom-in,.navigation-control-icon-zoom-out{position:relative;text-align:center;font-size:20px;color:#fff}.navigation-control-icon-reset{position:relative;left:10px;width:10px;height:10px;fill:rgba(255,255,255,.8);padding-top:6px;padding-bottom:6px;box-sizing:content-box}.compass,.compass-outer-ring{position:absolute;width:95px;height:95px}.compass{pointer-events:auto;right:0;overflow:hidden;top:100px}.compass-outer-ring{top:0;fill:rgba(255,255,255,.5)}.compass-outer-ring-background{position:absolute;top:14px;left:14px;width:44px;height:44px;border-radius:44px;border:12px solid rgba(47,53,60,.8);box-sizing:content-box}.compass-gyro{pointer-events:none;position:absolute;top:0;width:95px;height:95px;fill:#ccc}.compass-gyro-active,.compass-gyro-background:hover+.compass-gyro{fill:#68adfe}.compass-gyro-background{position:absolute;top:30px;left:30px;width:33px;height:33px;border-radius:33px;background-color:rgba(47,53,60,.8);border:1px solid rgba(255,255,255,.2);box-sizing:content-box}.compass-rotation-marker{position:absolute;top:0;width:95px;height:95px;fill:#68adfe}@media screen and (max-width:700px),screen and (max-height:420px){.compass,.navigation-controls{display:none}}@media print{.compass,.navigation-controls{display:none}}"), i("Cesium/Core/defined", function() {
+// return Cesium.defined
+// }), i("Cesium/Core/defineProperties", function() {
+// return Cesium.defineProperties
+// }), i("Cesium/Core/defaultValue", function() {
+// return Cesium.defaultValue
+// }), i("Cesium/Core/Event", function() {
+// return Cesium.Event
+// }), i("Cesium/Widgets/getElement", function() {
+// return Cesium.getElement
+// }), i("Cesium/Widgets/SvgPathBindingHandler", function() {
+// return Cesium.SvgPathBindingHandler
+// }), i("Cesium/Core/Ray", function() {
+// return Cesium.Ray
+// }), i("Cesium/Core/Cartesian3", function() {
+// return Cesium.Cartesian3
+// }), i("Cesium/Core/Cartographic", function() {
+// return Cesium.Cartographic
+// }), i("Cesium/Core/ReferenceFrame", function() {
+// return Cesium.ReferenceFrame
+// }), i("Cesium/Scene/SceneMode", function() {
+// return Cesium.SceneMode
+// }), i("Cesium/Core/DeveloperError", function() {
+// return Cesium.DeveloperError
+// }), i("Cesium/Core/EllipsoidGeodesic", function() {
+// return Cesium.EllipsoidGeodesic
+// }), i("Cesium/Core/Cartesian2", function() {
+// return Cesium.Cartesian2
+// }), i("Cesium/Core/getTimestamp", function() {
+// return Cesium.getTimestamp
+// }), i("Cesium/Core/EventHelper", function() {
+// return Cesium.EventHelper
+// }), i("Cesium/Core/Math", function() {
+// return Cesium.Math
+// }), i("Cesium/Core/Transforms", function() {
+// return Cesium.Transforms
+// }), i("Cesium/Core/Matrix4", function() {
+// return Cesium.Matrix4
+// }), i("Cesium/Core/BoundingSphere", function() {
+// return Cesium.BoundingSphere
+// }), i("Cesium/Core/HeadingPitchRange", function() {
+// return Cesium.HeadingPitchRange
+// }), i("Cesium/Scene/Camera", function() {
+// return Cesium.Camera
+// }), i("Cesium/Core/Rectangle", function() {
+// return Cesium.Rectangle
+// }), i("Cesium/Core/IntersectionTests", function() {
+// return Cesium.IntersectionTests
+// }), e("viewerCesiumNavigationMixin")
+// }), function(t, e) {
+// "function" == typeof define && define.amd ? define([], e) : "object" == typeof module && module.exports ? module.exports = e() : t.pointconvert = e();
+// }(this, function() {
+// var t = 52.35987755982988,
+// e = 3.141592653589793,
+// i = 6378245,
+// n = .006693421622965943,
+// r = function(t) {
+// var e = Number(t[0]),
+// i = Number(t[1]),
+// n = 52.35987755982988,
+// r = e - .0065,
+// o = i - .006,
+// a = Math.sqrt(r * r + o * o) - 2e-5 * Math.sin(o * n),
+// s = Math.atan2(o, r) - 3e-6 * Math.cos(r * n),
+// l = a * Math.cos(s),
+// u = a * Math.sin(s);
+// return l = Number(l.toFixed(6)), u = Number(u.toFixed(6)), [l, u]
+// },
+// o = function(e) {
+// var i = Number(e[0]),
+// n = Number(e[1]),
+// r = Math.sqrt(i * i + n * n) + 2e-5 * Math.sin(n * t),
+// o = Math.atan2(n, i) + 3e-6 * Math.cos(i * t),
+// a = r * Math.cos(o) + .0065,
+// s = r * Math.sin(o) + .006;
+// return a = Number(a.toFixed(6)), s = Number(s.toFixed(6)), [a, s]
+// },
+// a = function(t) {
+// var r = Number(t[0]),
+// o = Number(t[1]);
+// if (d(r, o)) return [r, o];
+// var a = c(r - 105, o - 35),
+// s = h(r - 105, o - 35),
+// l = o / 180 * e,
+// u = Math.sin(l);
+// u = 1 - n * u * u;
+// var p = Math.sqrt(u);
+// a = 180 * a / (i * (1 - n) / (u * p) * e), s = 180 * s / (i / p * Math.cos(l) * e);
+// var f = o + a,
+// m = r + s;
+// return m = Number(m.toFixed(6)), f = Number(f.toFixed(6)), [m, f]
+// },
+// s = function(t) {
+// var r = Number(t[0]),
+// o = Number(t[1]);
+// if (d(r, o)) return [r, o];
+// var a = c(r - 105, o - 35),
+// s = h(r - 105, o - 35),
+// l = o / 180 * e,
+// u = Math.sin(l);
+// u = 1 - n * u * u;
+// var p = Math.sqrt(u);
+// a = 180 * a / (i * (1 - n) / (u * p) * e), s = 180 * s / (i / p * Math.cos(l) * e), mglat = o + a, mglng = r + s;
+// var f = 2 * r - mglng,
+// m = 2 * o - mglat;
+// return f = Number(f.toFixed(6)), m = Number(m.toFixed(6)), [f, m]
+// },
+// l = function(t) {
+// return s(r(t))
+// },
+// u = function(t) {
+// return o(a(t))
+// },
+// c = function(t, i) {
+// var n = -100 + 2 * t + 3 * i + .2 * i * i + .1 * t * i + .2 * Math.sqrt(Math.abs(t));
+// return n += 2 * (20 * Math.sin(6 * t * e) + 20 * Math.sin(2 * t * e)) / 3, n += 2 * (20 * Math.sin(i * e) + 40 * Math.sin(i / 3 * e)) / 3, n += 2 * (160 * Math.sin(i / 12 * e) + 320 * Math.sin(i * e / 30)) / 3
+// },
+// h = function(t, i) {
+// var n = 300 + t + 2 * i + .1 * t * t + .1 * t * i + .1 * Math.sqrt(Math.abs(t));
+// return n += 2 * (20 * Math.sin(6 * t * e) + 20 * Math.sin(2 * t * e)) / 3, n += 2 * (20 * Math.sin(t * e) + 40 * Math.sin(t / 3 * e)) / 3, n += 2 * (150 * Math.sin(t / 12 * e) + 300 * Math.sin(t / 30 * e)) / 3
+// },
+// d = function(t, e) {
+// return t < 72.004 || t > 137.8347 || e < .8293 || e > 55.8271 || !1
+// },
+// p = function(t) {
+// var i = Number(t[0]),
+// n = Number(t[1]),
+// r = 20037508.34 * i / 180,
+// o = Math.log(Math.tan((90 + n) * e / 360)) / (e / 180);
+// return o = 20037508.34 * o / 180, r = Number(r.toFixed(2)), o = Number(o.toFixed(2)), [r, o]
+// },
+// f = function(t) {
+// var i = Number(t[0]),
+// n = Number(t[1]),
+// r = i / 20037508.34 * 180,
+// o = n / 20037508.34 * 180;
+// return o = 180 / e * (2 * Math.atan(Math.exp(o * e / 180)) - e / 2), r = Number(r.toFixed(6)), o = Number(o.toFixed(6)), [r, o]
+// };
+// return {
+// jwd2mct: p,
+// mct2jwd: f,
+// bd2gcj: r,
+// gcj2bd: o,
+// bd2wgs: l,
+// wgs2bd: u,
+// wgs2gcj: a,
+// gcj2wgs: s
+// }
+// }), function(t, e) {
+// "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e(t.L = {})
+// }(this, function(t) {
+// "use strict";
+
+// function e(t) {
+// var e, i, n, r;
+// for (i = 1, n = arguments.length; i < n; i++) {
+// r = arguments[i];
+// for (e in r) t[e] = r[e]
+// }
+// return t
+// }
+// function i(t, e) {
+// var i = Array.prototype.slice;
+// if (t.bind) return t.bind.apply(t, i.call(arguments, 1));
+// var n = i.call(arguments, 2);
+// return function() {
+// return t.apply(e, n.length ? n.concat(i.call(arguments)) : arguments)
+// }
+// }
+// function n(t) {
+// return t._leaflet_id = t._leaflet_id || ++Wt, t._leaflet_id
+// }
+// function r(t, e, i) {
+// var n, r, o, a;
+// return a = function() {
+// n = !1, r && (o.apply(i, r), r = !1)
+// }, o = function() {
+// n ? r = arguments : (t.apply(i, arguments), setTimeout(a, e), n = !0)
+// }
+// }
+// function o(t, e, i) {
+// var n = e[1],
+// r = e[0],
+// o = n - r;
+// return t === n && i ? t : ((t - r) % o + o) % o + r
+// }
+// function a() {
+// return !1
+// }
+// function s(t, e) {
+// var i = Math.pow(10, e || 5);
+// return Math.round(t * i) / i
+// }
+// function l(t) {
+// return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, "")
+// }
+// function u(t) {
+// return l(t).split(/\s+/)
+// }
+// function c(t, e) {
+// t.hasOwnProperty("options") || (t.options = t.options ? Vt(t.options) : {});
+// for (var i in e) t.options[i] = e[i];
+// return t.options
+// }
+// function h(t, e, i) {
+// var n = [];
+// for (var r in t) n.push(encodeURIComponent(i ? r.toUpperCase() : r) + "=" + encodeURIComponent(t[r]));
+// return (e && e.indexOf("?") !== -1 ? "&" : "?") + n.join("&")
+// }
+// function d(t, e) {
+// if (null != t && null != e) return t.replace(Zt, function(t, i) {
+// var n = e[i];
+// if (void 0 === n) throw new Error("No value provided for variable " + t);
+// return "function" == typeof n && (n = n(e)), n
+// })
+// }
+// function p(t, e) {
+// for (var i = 0; i < t.length; i++) if (t[i] === e) return i;
+// return -1
+// }
+// function f(t) {
+// return window["webkit" + t] || window["moz" + t] || window["ms" + t]
+// }
+// function m(t) {
+// var e = +new Date,
+// i = Math.max(0, 16 - (e - Jt));
+// return Jt = e + i, window.setTimeout(t, i)
+// }
+// function g(t, e, n) {
+// return n && Kt === m ? void t.call(e) : Kt.call(window, i(t, e))
+// }
+// function v(t) {
+// t && Yt.call(window, t)
+// }
+// function _() {}
+// function y(t) {
+// if (L && L.Mixin) {
+// t = Gt(t) ? t : [t];
+// for (var e = 0; e < t.length; e++) t[e] === 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 b(t, e, i) {
+// this.x = i ? Math.round(t) : t, this.y = i ? Math.round(e) : e
+// }
+// function w(t, e, i) {
+// return t instanceof b ? t : Gt(t) ? new b(t[0], t[1]) : void 0 === t || null === t ? t : "object" == typeof t && "x" in t && "y" in t ? new b(t.x, t.y) : new b(t, e, i)
+// }
+// function C(t, e) {
+// if (t) for (var i = e ? [t, e] : t, n = 0, r = i.length; n < r; n++) this.extend(i[n])
+// }
+// function x(t, e) {
+// return !t || t instanceof C ? t : new C(t, e)
+// }
+// function E(t, e) {
+// if (t) for (var i = e ? [t, e] : t, n = 0, r = i.length; n < r; n++) this.extend(i[n])
+// }
+// function k(t, e) {
+// return t instanceof E ? t : new E(t, e)
+// }
+// function P(t, e, i) {
+// if (isNaN(t) || isNaN(e)) throw new Error("Invalid LatLng object: (" + t + ", " + e + ")");
+// this.lat = +t, this.lng = +e, void 0 !== i && (this.alt = +i)
+// }
+// function D(t, e, i) {
+// return t instanceof P ? t : Gt(t) && "object" != typeof t[0] ? 3 === t.length ? new P(t[0], t[1], t[2]) : 2 === t.length ? new P(t[0], t[1]) : null : void 0 === t || null === t ? t : "object" == typeof t && "lat" in t ? new P(t.lat, "lng" in t ? t.lng : t.lon, t.alt) : void 0 === e ? null : new P(t, e, i)
+// }
+// function T(t, e, i, n) {
+// return Gt(t) ? (this._a = t[0], this._b = t[1], this._c = t[2], void(this._d = t[3])) : (this._a = t, this._b = e, this._c = i, void(this._d = n))
+// }
+// function S(t, e, i, n) {
+// return new T(t, e, i, n)
+// }
+// function M(t) {
+// return document.createElementNS("http://www.w3.org/2000/svg", t)
+// }
+// function A(t) {
+// return navigator.userAgent.toLowerCase().indexOf(t) >= 0
+// }
+// function O(t, e, i, n) {
+// return "touchstart" === e ? I(t, i, n) : "touchmove" === e ? U(t, i, n) : "touchend" === e && H(t, i, n), this
+// }
+// function N(t, e, i) {
+// var n = t["_leaflet_" + e + i];
+// return "touchstart" === e ? t.removeEventListener(He, n, !1) : "touchmove" === e ? t.removeEventListener(qe, n, !1) : "touchend" === e && (t.removeEventListener(je, n, !1), t.removeEventListener(Ve, n, !1)), this
+// }
+// function I(t, e, n) {
+// var r = i(function(t) {
+// if ("mouse" !== t.pointerType && t.pointerType !== t.MSPOINTER_TYPE_MOUSE && t.pointerType !== t.MSPOINTER_TYPE_MOUSE) {
+// if (!(We.indexOf(t.target.tagName) < 0)) return;
+// Y(t)
+// }
+// B(t, e)
+// });
+// t["_leaflet_touchstart" + n] = r, t.addEventListener(He, r, !1), Ge || (document.documentElement.addEventListener(He, R, !0), document.documentElement.addEventListener(qe, F, !0), document.documentElement.addEventListener(je, z, !0), document.documentElement.addEventListener(Ve, z, !0), Ge = !0)
+// }
+// function R(t) {
+// Ze[t.pointerId] = t, $e++
+// }
+// function F(t) {
+// Ze[t.pointerId] && (Ze[t.pointerId] = t)
+// }
+// function z(t) {
+// delete Ze[t.pointerId], $e--
+// }
+// function B(t, e) {
+// t.touches = [];
+// for (var i in Ze) t.touches.push(Ze[i]);
+// t.changedTouches = [t], e(t)
+// }
+// function U(t, e, i) {
+// var n = function(t) {
+// (t.pointerType !== t.MSPOINTER_TYPE_MOUSE && "mouse" !== t.pointerType || 0 !== t.buttons) && B(t, e)
+// };
+// t["_leaflet_touchmove" + i] = n, t.addEventListener(qe, n, !1)
+// }
+// function H(t, e, i) {
+// var n = function(t) {
+// B(t, e)
+// };
+// t["_leaflet_touchend" + i] = n, t.addEventListener(je, n, !1), t.addEventListener(Ve, n, !1)
+// }
+// function q(t, e, i) {
+// function n(t) {
+// var e;
+// if (Ae) {
+// if (!pe || "mouse" === t.pointerType) return;
+// e = $e
+// } else e = t.touches.length;
+// if (!(e > 1)) {
+// var i = Date.now(),
+// n = i - (o || i);
+// a = t.touches ? t.touches[0] : t, s = n > 0 && n <= l, o = i
+// }
+// }
+// function r(t) {
+// if (s && !a.cancelBubble) {
+// if (Ae) {
+// if (!pe || "mouse" === t.pointerType) return;
+// var i, n, r = {};
+// for (n in a) i = a[n], r[n] = i && i.bind ? i.bind(a) : i;
+// a = r
+// }
+// a.type = "dblclick", e(a), o = null
+// }
+// }
+// var o, a, s = !1,
+// l = 250;
+// return t[Ye + Je + i] = n, t[Ye + Ke + i] = r, t[Ye + "dblclick" + i] = e, t.addEventListener(Je, n, !1), t.addEventListener(Ke, r, !1), t.addEventListener("dblclick", e, !1), this
+// }
+// function j(t, e) {
+// var i = t[Ye + Je + e],
+// n = t[Ye + Ke + e],
+// r = t[Ye + "dblclick" + e];
+// return t.removeEventListener(Je, i, !1), t.removeEventListener(Ke, n, !1), pe || t.removeEventListener("dblclick", r, !1), this
+// }
+// function V(t, e, i, n) {
+// if ("object" == typeof e) for (var r in e) Z(t, r, e[r], i);
+// else {
+// e = u(e);
+// for (var o = 0, a = e.length; o < a; o++) Z(t, e[o], i, n)
+// }
+// return this
+// }
+// function W(t, e, i, n) {
+// if ("object" == typeof e) for (var r in e) G(t, r, e[r], i);
+// else if (e) {
+// e = u(e);
+// for (var o = 0, a = e.length; o < a; o++) G(t, e[o], i, n)
+// } else {
+// for (var s in t[Xe]) G(t, s, t[Xe][s]);
+// delete t[Xe]
+// }
+// return this
+// }
+// function Z(t, e, i, r) {
+// var o = e + n(i) + (r ? "_" + n(r) : "");
+// if (t[Xe] && t[Xe][o]) return this;
+// var a = function(e) {
+// return i.call(r || t, e || window.event)
+// },
+// s = a;
+// Ae && 0 === e.indexOf("touch") ? O(t, e, a, o) : !Oe || "dblclick" !== e || !q || Ae && _e ? "addEventListener" in t ? "mousewheel" === e ? t.addEventListener("onwheel" in t ? "wheel" : "mousewheel", a, !1) : "mouseenter" === e || "mouseleave" === e ? (a = function(e) {
+// e = e || window.event, nt(t, e) && s(e)
+// }, t.addEventListener("mouseenter" === e ? "mouseover" : "mouseout", a, !1)) : ("click" === e && me && (a = function(t) {
+// rt(t, s)
+// }), t.addEventListener(e, a, !1)) : "attachEvent" in t && t.attachEvent("on" + e, a) : q(t, a, o), t[Xe] = t[Xe] || {}, t[Xe][o] = a
+// }
+// function G(t, e, i, r) {
+// var o = e + n(i) + (r ? "_" + n(r) : ""),
+// a = t[Xe] && t[Xe][o];
+// return a ? (Ae && 0 === e.indexOf("touch") ? N(t, e, o) : Oe && "dblclick" === e && j ? j(t, o) : "removeEventListener" in t ? "mousewheel" === e ? t.removeEventListener("onwheel" in t ? "wheel" : "mousewheel", a, !1) : t.removeEventListener("mouseenter" === e ? "mouseover" : "mouseleave" === e ? "mouseout" : e, a, !1) : "detachEvent" in t && t.detachEvent("on" + e, a), void(t[Xe][o] = null)) : this
+// }
+// function $(t) {
+// return t.stopPropagation ? t.stopPropagation() : t.originalEvent ? t.originalEvent._stopped = !0 : t.cancelBubble = !0, it(t), this
+// }
+// function J(t) {
+// return Z(t, "mousewheel", $), this
+// }
+// function K(t) {
+// return V(t, "mousedown touchstart dblclick", $), Z(t, "click", et), this
+// }
+// function Y(t) {
+// return t.preventDefault ? t.preventDefault() : t.returnValue = !1, this
+// }
+// function X(t) {
+// return Y(t), $(t), this
+// }
+// function Q(t, e) {
+// if (!e) return new b(t.clientX, t.clientY);
+// var i = e.getBoundingClientRect();
+// return new b(t.clientX - i.left - e.clientLeft, t.clientY - i.top - e.clientTop)
+// }
+// function tt(t) {
+// return pe ? t.wheelDeltaY / 2 : t.deltaY && 0 === t.deltaMode ? -t.deltaY / Qe : 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 et(t) {
+// ti[t.type] = !0
+// }
+// function it(t) {
+// var e = ti[t.type];
+// return ti[t.type] = !1, e
+// }
+// function nt(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
+// }
+// function rt(t, e) {
+// var i = t.timeStamp || t.originalEvent && t.originalEvent.timeStamp,
+// n = re && i - re;
+// return n && n > 100 && n < 500 || t.target._simulatedClick && !t._simulated ? void X(t) : (re = i, void e(t))
+// }
+// function ot(t) {
+// return "string" == typeof t ? document.getElementById(t) : t
+// }
+// function at(t, e) {
+// var i = t.style[e] || t.currentStyle && t.currentStyle[e];
+// if ((!i || "auto" === i) && document.defaultView) {
+// var n = document.defaultView.getComputedStyle(t, null);
+// i = n ? n[e] : null
+// }
+// return "auto" === i ? null : i
+// }
+// function st(t, e, i) {
+// var n = document.createElement(t);
+// return n.className = e || "", i && i.appendChild(n), n
+// }
+// function lt(t) {
+// var e = t.parentNode;
+// e && e.removeChild(t)
+// }
+// function ut(t) {
+// for (; t.firstChild;) t.removeChild(t.firstChild)
+// }
+// function ct(t) {
+// var e = t.parentNode;
+// e.lastChild !== t && e.appendChild(t)
+// }
+// function ht(t) {
+// var e = t.parentNode;
+// e.firstChild !== t && e.insertBefore(t, e.firstChild)
+// }
+// function dt(t, e) {
+// if (void 0 !== t.classList) return t.classList.contains(e);
+// var i = gt(t);
+// return i.length > 0 && new RegExp("(^|\\s)" + e + "(\\s|$)").test(i)
+// }
+// function pt(t, e) {
+// if (void 0 !== t.classList) for (var i = u(e), n = 0, r = i.length; n < r; n++) t.classList.add(i[n]);
+// else if (!dt(t, e)) {
+// var o = gt(t);
+// mt(t, (o ? o + " " : "") + e)
+// }
+// }
+// function ft(t, e) {
+// void 0 !== t.classList ? t.classList.remove(e) : mt(t, l((" " + gt(t) + " ").replace(" " + e + " ", " ")))
+// }
+// function mt(t, e) {
+// void 0 === t.className.baseVal ? t.className = e : t.className.baseVal = e
+// }
+// function gt(t) {
+// return void 0 === t.className.baseVal ? t.className : t.className.baseVal
+// }
+// function vt(t, e) {
+// "opacity" in t.style ? t.style.opacity = e : "filter" in t.style && _t(t, e)
+// }
+// function _t(t, e) {
+// var i = !1,
+// n = "DXImageTransform.Microsoft.Alpha";
+// try {
+// i = t.filters.item(n)
+// } catch (r) {
+// if (1 === e) return
+// }
+// e = Math.round(100 * e), i ? (i.Enabled = 100 !== e, i.Opacity = e) : t.style.filter += " progid:" + n + "(opacity=" + e + ")"
+// }
+// function yt(t) {
+// for (var e = document.documentElement.style, i = 0; i < t.length; i++) if (t[i] in e) return t[i];
+// return !1
+// }
+// function bt(t, e, i) {
+// var n = e || new b(0, 0);
+// t.style[ii] = (Ee ? "translate(" + n.x + "px," + n.y + "px)" : "translate3d(" + n.x + "px," + n.y + "px,0)") + (i ? " scale(" + i + ")" : "")
+// }
+// function wt(t, e) {
+// t._leaflet_pos = e, Pe ? bt(t, e) : (t.style.left = e.x + "px", t.style.top = e.y + "px")
+// }
+// function Ct(t) {
+// return t._leaflet_pos || new b(0, 0)
+// }
+// function xt() {
+// V(window, "dragstart", Y)
+// }
+// function Et() {
+// W(window, "dragstart", Y)
+// }
+// function kt(t) {
+// for (; t.tabIndex === -1;) t = t.parentNode;
+// t.style && (Lt(), ai = t, si = t.style.outline, t.style.outline = "none", V(window, "keydown", Lt))
+// }
+// function Lt() {
+// ai && (ai.style.outline = si, ai = void 0, si = void 0, W(window, "keydown", Lt))
+// }
+// function Pt(t, e) {
+// if (!e || !t.length) return t.slice();
+// var i = e * e;
+// return t = At(t, i), t = St(t, i)
+// }
+// function Dt(t, e, i) {
+// return Math.sqrt(Ft(t, e, i, !0))
+// }
+// function Tt(t, e, i) {
+// return Ft(t, e, i)
+// }
+// function St(t, e) {
+// var i = t.length,
+// n = typeof Uint8Array != void 0 + "" ? Uint8Array : Array,
+// r = new n(i);
+// r[0] = r[i - 1] = 1, Mt(t, r, e, 0, i - 1);
+// var o, a = [];
+// for (o = 0; o < i; o++) r[o] && a.push(t[o]);
+// return a
+// }
+// function Mt(t, e, i, n, r) {
+// var o, a, s, l = 0;
+// for (a = n + 1; a <= r - 1; a++) s = Ft(t[a], t[n], t[r], !0), s > l && (o = a, l = s);
+// l > i && (e[o] = 1, Mt(t, e, i, n, o), Mt(t, e, i, o, r))
+// }
+// function At(t, e) {
+// for (var i = [t[0]], n = 1, r = 0, o = t.length; n < o; n++) Rt(t[n], t[r]) > e && (i.push(t[n]), r = n);
+// return r < o - 1 && i.push(t[o - 1]), i
+// }
+// function Ot(t, e, i, n, r) {
+// var o, a, s, l = n ? li : It(t, i),
+// u = It(e, i);
+// for (li = u;;) {
+// if (!(l | u)) return [t, e];
+// if (l & u) return !1;
+// o = l || u, a = Nt(t, e, o, i, r), s = It(a, i), o === l ? (t = a, l = s) : (e = a, u = s)
+// }
+// }
+// function Nt(t, e, i, n, r) {
+// var o, a, s = e.x - t.x,
+// l = e.y - t.y,
+// u = n.min,
+// c = n.max;
+// return 8 & i ? (o = t.x + s * (c.y - t.y) / l, a = c.y) : 4 & i ? (o = t.x + s * (u.y - t.y) / l, a = u.y) : 2 & i ? (o = c.x, a = t.y + l * (c.x - t.x) / s) : 1 & i && (o = u.x, a = t.y + l * (u.x - t.x) / s), new b(o, a, r)
+// }
+// function It(t, e) {
+// var i = 0;
+// return t.x < e.min.x ? i |= 1 : t.x > e.max.x && (i |= 2), t.y < e.min.y ? i |= 4 : t.y > e.max.y && (i |= 8), i
+// }
+// function Rt(t, e) {
+// var i = e.x - t.x,
+// n = e.y - t.y;
+// return i * i + n * n
+// }
+// function Ft(t, e, i, n) {
+// var r, o = e.x,
+// a = e.y,
+// s = i.x - o,
+// l = i.y - a,
+// u = s * s + l * l;
+// return u > 0 && (r = ((t.x - o) * s + (t.y - a) * l) / u, r > 1 ? (o = i.x, a = i.y) : r > 0 && (o += s * r, a += l * r)), s = t.x - o, l = t.y - a, n ? s * s + l * l : new b(o, a)
+// }
+// function zt(t) {
+// return !Gt(t[0]) || "object" != typeof t[0][0] && "undefined" != typeof t[0][0]
+// }
+// function Bt(t) {
+// return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."), zt(t)
+// }
+// function Ut(t, e, i) {
+// var n, r, o, a, s, l, u, c, h, d = [1, 4, 2, 8];
+// for (r = 0, u = t.length; r < u; r++) t[r]._code = It(t[r], e);
+// for (a = 0; a < 4; a++) {
+// for (c = d[a], n = [], r = 0, u = t.length, o = u - 1; r < u; o = r++) s = t[r], l = t[o], s._code & c ? l._code & c || (h = Nt(l, s, c, e, i), h._code = It(h, e), n.push(h)) : (l._code & c && (h = Nt(l, s, c, e, i), h._code = It(h, e), n.push(h)), n.push(s));
+// t = n
+// }
+// return t
+// }
+// function Ht() {
+// return window.L = gi, this
+// }
+// var qt = "1.2.0+HEAD.1ac320b",
+// jt = Object.freeze;
+// Object.freeze = function(t) {
+// return t
+// };
+// var Vt = Object.create ||
+// function() {
+// function t() {}
+// return function(e) {
+// return t.prototype = e, new t
+// }
+// }(), Wt = 0, Zt = /\{ *([\w_\-]+) *\}/g, Gt = Array.isArray ||
+// function(t) {
+// return "[object Array]" === Object.prototype.toString.call(t)
+// }, $t = "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=", Jt = 0, Kt = window.requestAnimationFrame || f("RequestAnimationFrame") || m, Yt = window.cancelAnimationFrame || f("CancelAnimationFrame") || f("CancelRequestAnimationFrame") ||
+// function(t) {
+// window.clearTimeout(t)
+// }, Xt = (Object.freeze || Object)({
+// freeze: jt,
+// extend: e,
+// create: Vt,
+// bind: i,
+// lastId: Wt,
+// stamp: n,
+// throttle: r,
+// wrapNum: o,
+// falseFn: a,
+// formatNum: s,
+// trim: l,
+// splitWords: u,
+// setOptions: c,
+// getParamString: h,
+// template: d,
+// isArray: Gt,
+// indexOf: p,
+// emptyImageUrl: $t,
+// requestFn: Kt,
+// cancelFn: Yt,
+// requestAnimFrame: g,
+// cancelAnimFrame: v
+// });
+// _.extend = function(t) {
+// var i = function() {
+// this.initialize && this.initialize.apply(this, arguments), this.callInitHooks()
+// },
+// n = i.__super__ = this.prototype,
+// r = Vt(n);
+// r.constructor = i, i.prototype = r;
+// for (var o in this) this.hasOwnProperty(o) && "prototype" !== o && "__super__" !== o && (i[o] = this[o]);
+// return t.statics && (e(i, t.statics), delete t.statics), t.includes && (y(t.includes), e.apply(null, [r].concat(t.includes)), delete t.includes), r.options && (t.options = e(Vt(r.options), t.options)), e(r, t), r._initHooks = [], r.callInitHooks = function() {
+// if (!this._initHooksCalled) {
+// n.callInitHooks && n.callInitHooks.call(this), this._initHooksCalled = !0;
+// for (var t = 0, e = r._initHooks.length; t < e; t++) r._initHooks[t].call(this)
+// }
+// }, i
+// }, _.include = function(t) {
+// return e(this.prototype, t), this
+// }, _.mergeOptions = function(t) {
+// return e(this.prototype.options, t), this
+// }, _.addInitHook = function(t) {
+// var e = Array.prototype.slice.call(arguments, 1),
+// i = "function" == typeof t ? t : function() {
+// this[t].apply(this, e)
+// };
+// return this.prototype._initHooks = this.prototype._initHooks || [], this.prototype._initHooks.push(i), this
+// };
+// var Qt = {
+// on: function(t, e, i) {
+// if ("object" == typeof t) for (var n in t) this._on(n, t[n], e);
+// else {
+// t = u(t);
+// for (var r = 0, o = t.length; r < o; r++) this._on(t[r], e, i)
+// }
+// return this
+// },
+// off: function(t, e, i) {
+// if (t) if ("object" == typeof t) for (var n in t) this._off(n, t[n], e);
+// else {
+// t = u(t);
+// for (var r = 0, o = t.length; r < o; r++) this._off(t[r], e, i)
+// } else delete this._events;
+// return this
+// },
+// _on: function(t, e, i) {
+// this._events = this._events || {};
+// var n = this._events[t];
+// n || (n = [], this._events[t] = n), i === this && (i = void 0);
+// for (var r = {
+// fn: e,
+// ctx: i
+// }, o = n, a = 0, s = o.length; a < s; a++) if (o[a].fn === e && o[a].ctx === i) return;
+// o.push(r)
+// },
+// _off: function(t, e, i) {
+// var n, r, o;
+// if (this._events && (n = this._events[t])) {
+// if (!e) {
+// for (r = 0, o = n.length; r < o; r++) n[r].fn = a;
+// return void delete this._events[t]
+// }
+// if (i === this && (i = void 0), n) for (r = 0, o = n.length; r < o; r++) {
+// var s = n[r];
+// if (s.ctx === i && s.fn === e) return s.fn = a, this._firingCount && (this._events[t] = n = n.slice()), void n.splice(r, 1)
+// }
+// }
+// },
+// fire: function(t, i, n) {
+// if (!this.listens(t, n)) return this;
+// var r = e({}, i, {
+// type: t,
+// target: this
+// });
+// if (this._events) {
+// var o = this._events[t];
+// if (o) {
+// this._firingCount = this._firingCount + 1 || 1;
+// for (var a = 0, s = o.length; a < s; a++) {
+// var l = o[a];
+// l.fn.call(l.ctx || this, r)
+// }
+// this._firingCount--
+// }
+// }
+// return n && this._propagateEvent(r), this
+// },
+// listens: function(t, e) {
+// var i = this._events && this._events[t];
+// if (i && i.length) return !0;
+// if (e) for (var n in this._eventParents) if (this._eventParents[n].listens(t, e)) return !0;
+// return !1
+// },
+// once: function(t, e, n) {
+// if ("object" == typeof t) {
+// for (var r in t) this.once(r, t[r], e);
+// return this
+// }
+// var o = i(function() {
+// this.off(t, e, n).off(t, o, n)
+// }, this);
+// return this.on(t, e, n).on(t, o, 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 i in this._eventParents) this._eventParents[i].fire(t.type, e({
+// layer: t.target
+// }, t), !0)
+// }
+// };
+// Qt.addEventListener = Qt.on, Qt.removeEventListener = Qt.clearAllEventListeners = Qt.off, Qt.addOneTimeEventListener = Qt.once, Qt.fireEvent = Qt.fire, Qt.hasEventListeners = Qt.listens;
+// var te = _.extend(Qt);
+// b.prototype = {
+// clone: function() {
+// return new b(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 b(this.x * t.x, this.y * t.y)
+// },
+// unscaleBy: function(t) {
+// return new b(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
+// },
+// distanceTo: function(t) {
+// t = w(t);
+// var e = t.x - this.x,
+// i = t.y - this.y;
+// return Math.sqrt(e * e + i * i)
+// },
+// equals: function(t) {
+// return t = w(t), 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(" + s(this.x) + ", " + s(this.y) + ")"
+// }
+// }, C.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 b((this.min.x + this.max.x) / 2, (this.min.y + this.max.y) / 2, t)
+// },
+// getBottomLeft: function() {
+// return new b(this.min.x, this.max.y)
+// },
+// getTopRight: function() {
+// return new b(this.max.x, this.min.y)
+// },
+// getTopLeft: function() {
+// return this.min
+// },
+// getBottomRight: function() {
+// return this.max
+// },
+// getSize: function() {
+// return this.max.subtract(this.min)
+// },
+// contains: function(t) {
+// var e, i;
+// return t = "number" == typeof t[0] || t instanceof b ? w(t) : x(t), t instanceof C ? (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 = x(t);
+// var e = this.min,
+// i = this.max,
+// n = t.min,
+// r = t.max,
+// o = r.x >= e.x && n.x <= i.x,
+// a = r.y >= e.y && n.y <= i.y;
+// return o && a
+// },
+// overlaps: function(t) {
+// t = x(t);
+// var e = this.min,
+// i = this.max,
+// n = t.min,
+// r = t.max,
+// o = r.x > e.x && n.x < i.x,
+// a = r.y > e.y && n.y < i.y;
+// return o && a
+// },
+// isValid: function() {
+// return !(!this.min || !this.max)
+// }
+// }, E.prototype = {
+// extend: function(t) {
+// var e, i, n = this._southWest,
+// r = this._northEast;
+// if (t instanceof P) e = t, i = t;
+// else {
+// if (!(t instanceof E)) return t ? this.extend(D(t) || k(t)) : this;
+// if (e = t._southWest, i = t._northEast, !e || !i) return this
+// }
+// return n || r ? (n.lat = Math.min(e.lat, n.lat), n.lng = Math.min(e.lng, n.lng), r.lat = Math.max(i.lat, r.lat), r.lng = Math.max(i.lng, r.lng)) : (this._southWest = new P(e.lat, e.lng), this._northEast = new P(i.lat, i.lng)), this
+// },
+// pad: function(t) {
+// var e = this._southWest,
+// i = this._northEast,
+// n = Math.abs(e.lat - i.lat) * t,
+// r = Math.abs(e.lng - i.lng) * t;
+// return new E(new P(e.lat - n, e.lng - r), new P(i.lat + n, i.lng + r))
+// },
+// getCenter: function() {
+// return new P((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 P(this.getNorth(), this.getWest())
+// },
+// getSouthEast: function() {
+// return new P(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 P || "lat" in t ? D(t) : k(t);
+// var e, i, n = this._southWest,
+// r = this._northEast;
+// return t instanceof E ? (e = t.getSouthWest(), i = t.getNorthEast()) : e = i = t, e.lat >= n.lat && i.lat <= r.lat && e.lng >= n.lng && i.lng <= r.lng
+// },
+// intersects: function(t) {
+// t = k(t);
+// var e = this._southWest,
+// i = this._northEast,
+// n = t.getSouthWest(),
+// r = t.getNorthEast(),
+// o = r.lat >= e.lat && n.lat <= i.lat,
+// a = r.lng >= e.lng && n.lng <= i.lng;
+// return o && a
+// },
+// overlaps: function(t) {
+// t = k(t);
+// var e = this._southWest,
+// i = this._northEast,
+// n = t.getSouthWest(),
+// r = t.getNorthEast(),
+// o = r.lat > e.lat && n.lat < i.lat,
+// a = r.lng > e.lng && n.lng < i.lng;
+// return o && a
+// },
+// toBBoxString: function() {
+// return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(",")
+// },
+// equals: function(t, e) {
+// return !!t && (t = k(t), this._southWest.equals(t.getSouthWest(), e) && this._northEast.equals(t.getNorthEast(), e))
+// },
+// isValid: function() {
+// return !(!this._southWest || !this._northEast)
+// }
+// }, P.prototype = {
+// equals: function(t, e) {
+// if (!t) return !1;
+// t = D(t);
+// var i = Math.max(Math.abs(this.lat - t.lat), Math.abs(this.lng - t.lng));
+// return i <= (void 0 === e ? 1e-9 : e)
+// },
+// toString: function(t) {
+// return "LatLng(" + s(this.lat, t) + ", " + s(this.lng, t) + ")"
+// },
+// distanceTo: function(t) {
+// return ie.distance(this, D(t))
+// },
+// wrap: function() {
+// return ie.wrapLatLng(this)
+// },
+// toBounds: function(t) {
+// var e = 180 * t / 40075017,
+// i = e / Math.cos(Math.PI / 180 * this.lat);
+// return k([this.lat - e, this.lng - i], [this.lat + e, this.lng + i])
+// },
+// clone: function() {
+// return new P(this.lat, this.lng, this.alt)
+// }
+// };
+// var ee = {
+// 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)
+// },
+// 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 e = this.projection.bounds,
+// i = this.scale(t),
+// n = this.transformation.transform(e.min, i),
+// r = this.transformation.transform(e.max, i);
+// return new C(n, r)
+// },
+// infinite: !1,
+// wrapLatLng: function(t) {
+// var e = this.wrapLng ? o(t.lng, this.wrapLng, !0) : t.lng,
+// i = this.wrapLat ? o(t.lat, this.wrapLat, !0) : t.lat,
+// n = t.alt;
+// return new P(i, e, n)
+// },
+// wrapLatLngBounds: function(t) {
+// var e = t.getCenter(),
+// i = this.wrapLatLng(e),
+// n = e.lat - i.lat,
+// r = e.lng - i.lng;
+// if (0 === n && 0 === r) return t;
+// var o = t.getSouthWest(),
+// a = t.getNorthEast(),
+// s = new P(o.lat - n, o.lng - r),
+// l = new P(a.lat - n, a.lng - r);
+// return new E(s, l)
+// }
+// },
+// ie = e({}, ee, {
+// wrapLng: [-180, 180],
+// R: 6371e3,
+// distance: function(t, e) {
+// var i = Math.PI / 180,
+// n = t.lat * i,
+// r = e.lat * i,
+// o = Math.sin(n) * Math.sin(r) + Math.cos(n) * Math.cos(r) * Math.cos((e.lng - t.lng) * i);
+// return this.R * Math.acos(Math.min(o, 1))
+// }
+// }),
+// ne = {
+// R: 6378137,
+// MAX_LATITUDE: 85.0511287798,
+// project: function(t) {
+// var e = Math.PI / 180,
+// i = this.MAX_LATITUDE,
+// n = Math.max(Math.min(i, t.lat), -i),
+// r = Math.sin(n * e);
+// return new b(this.R * t.lng * e, this.R * Math.log((1 + r) / (1 - r)) / 2)
+// },
+// unproject: function(t) {
+// var e = 180 / Math.PI;
+// return new P((2 * Math.atan(Math.exp(t.y / this.R)) - Math.PI / 2) * e, t.x * e / this.R)
+// },
+// bounds: function() {
+// var t = 6378137 * Math.PI;
+// return new C([-t, -t], [t, t])
+// }()
+// };
+// T.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 b((t.x / e - this._b) / this._a, (t.y / e - this._d) / this._c)
+// }
+// };
+// var re, oe, ae, se, le = e({}, ie, {
+// code: "EPSG:3857",
+// projection: ne,
+// transformation: function() {
+// var t = .5 / (Math.PI * ne.R);
+// return S(t, .5, -t, .5)
+// }()
+// }),
+// ue = e({}, le, {
+// code: "EPSG:900913"
+// }),
+// ce = document.documentElement.style,
+// he = "ActiveXObject" in window,
+// de = he && !document.addEventListener,
+// pe = "msLaunchUri" in navigator && !("documentMode" in document),
+// fe = A("webkit"),
+// me = A("android"),
+// ge = A("android 2") || A("android 3"),
+// ve = !! window.opera,
+// _e = A("chrome"),
+// ye = A("gecko") && !fe && !ve && !he,
+// be = !_e && A("safari"),
+// we = A("phantom"),
+// Ce = "OTransition" in ce,
+// xe = 0 === navigator.platform.indexOf("Win"),
+// Ee = he && "transition" in ce,
+// ke = "WebKitCSSMatrix" in window && "m11" in new window.WebKitCSSMatrix && !ge,
+// Le = "MozPerspective" in ce,
+// Pe = !window.L_DISABLE_3D && (Ee || ke || Le) && !Ce && !we,
+// De = "undefined" != typeof orientation || A("mobile"),
+// Te = De && fe,
+// Se = De && ke,
+// Me = !window.PointerEvent && window.MSPointerEvent,
+// Ae = !(!window.PointerEvent && !Me),
+// Oe = !window.L_NO_TOUCH && (Ae || "ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch),
+// Ne = De && ve,
+// Ie = De && ye,
+// Re = (window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI) > 1,
+// Fe = function() {
+// return !!document.createElement("canvas").getContext
+// }(),
+// ze = !(!document.createElementNS || !M("svg").createSVGRect),
+// Be = !ze &&
+// function() {
+// try {
+// var t = document.createElement("div");
+// t.innerHTML = '<v:shape adj="1"/>';
+// var e = t.firstChild;
+// return e.style.behavior = "url(#default#VML)", e && "object" == typeof e.adj
+// } catch (i) {
+// return !1
+// }
+// }(), Ue = (Object.freeze || Object)({
+// ie: he,
+// ielt9: de,
+// edge: pe,
+// webkit: fe,
+// android: me,
+// android23: ge,
+// opera: ve,
+// chrome: _e,
+// gecko: ye,
+// safari: be,
+// phantom: we,
+// opera12: Ce,
+// win: xe,
+// ie3d: Ee,
+// webkit3d: ke,
+// gecko3d: Le,
+// any3d: Pe,
+// mobile: De,
+// mobileWebkit: Te,
+// mobileWebkit3d: Se,
+// msPointer: Me,
+// pointer: Ae,
+// touch: Oe,
+// mobileOpera: Ne,
+// mobileGecko: Ie,
+// retina: Re,
+// canvas: Fe,
+// svg: ze,
+// vml: Be
+// }), He = Me ? "MSPointerDown" : "pointerdown", qe = Me ? "MSPointerMove" : "pointermove", je = Me ? "MSPointerUp" : "pointerup", Ve = Me ? "MSPointerCancel" : "pointercancel", We = ["INPUT", "SELECT", "OPTION"], Ze = {}, Ge = !1, $e = 0, Je = Me ? "MSPointerDown" : Ae ? "pointerdown" : "touchstart", Ke = Me ? "MSPointerUp" : Ae ? "pointerup" : "touchend", Ye = "_leaflet_", Xe = "_leaflet_events", Qe = xe && _e ? 2 * window.devicePixelRatio : ye ? window.devicePixelRatio : 1, ti = {}, ei = (Object.freeze || Object)({
+// on: V,
+// off: W,
+// stopPropagation: $,
+// disableScrollPropagation: J,
+// disableClickPropagation: K,
+// preventDefault: Y,
+// stop: X,
+// getMousePosition: Q,
+// getWheelDelta: tt,
+// fakeStop: et,
+// skipped: it,
+// isExternalTarget: nt,
+// addListener: V,
+// removeListener: W
+// }), ii = yt(["transform", "WebkitTransform", "OTransform", "MozTransform", "msTransform"]), ni = yt(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]), ri = "webkitTransition" === ni || "OTransition" === ni ? ni + "End" : "transitionend";
+// if ("onselectstart" in document) oe = function() {
+// V(window, "selectstart", Y)
+// }, ae = function() {
+// W(window, "selectstart", Y)
+// };
+// else {
+// var oi = yt(["userSelect", "WebkitUserSelect", "OUserSelect", "MozUserSelect", "msUserSelect"]);
+// oe = function() {
+// if (oi) {
+// var t = document.documentElement.style;
+// se = t[oi], t[oi] = "none"
+// }
+// }, ae = function() {
+// oi && (document.documentElement.style[oi] = se, se = void 0)
+// }
+// }
+// var ai, si, li, ui = (Object.freeze || Object)({
+// TRANSFORM: ii,
+// TRANSITION: ni,
+// TRANSITION_END: ri,
+// get: ot,
+// getStyle: at,
+// create: st,
+// remove: lt,
+// empty: ut,
+// toFront: ct,
+// toBack: ht,
+// hasClass: dt,
+// addClass: pt,
+// removeClass: ft,
+// setClass: mt,
+// getClass: gt,
+// setOpacity: vt,
+// testProp: yt,
+// setTransform: bt,
+// setPosition: wt,
+// getPosition: Ct,
+// disableTextSelection: oe,
+// enableTextSelection: ae,
+// disableImageDrag: xt,
+// enableImageDrag: Et,
+// preventOutline: kt,
+// restoreOutline: Lt
+// }),
+// ci = te.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 = Ct(t), this._offset = e.subtract(this._startPos), this._startTime = +new Date, this.fire("start"), this._animate()
+// },
+// stop: function() {
+// this._inProgress && (this._step(!0), this._complete())
+// },
+// _animate: function() {
+// this._animId = g(this._animate, this), this._step()
+// },
+// _step: function(t) {
+// var e = +new Date - this._startTime,
+// i = 1e3 * this._duration;
+// e < i ? this._runFrame(this._easeOut(e / i), t) : (this._runFrame(1), this._complete())
+// },
+// _runFrame: function(t, e) {
+// var i = this._startPos.add(this._offset.multiplyBy(t));
+// e && i._round(), wt(this._el, i), this.fire("step")
+// },
+// _complete: function() {
+// v(this._animId), this._inProgress = !1, this.fire("end")
+// },
+// _easeOut: function(t) {
+// return 1 - Math.pow(1 - t, this._easeOutPower)
+// }
+// }),
+// hi = ((Object.freeze || Object)({
+// simplify: Pt,
+// pointToSegmentDistance: Dt,
+// closestPointOnSegment: Tt,
+// clipSegment: Ot,
+// _getEdgeIntersection: Nt,
+// _getBitCode: It,
+// _sqClosestPointOnSegment: Ft,
+// isFlat: zt,
+// _flat: Bt
+// }), (Object.freeze || Object)({
+// clipPolygon: Ut
+// }), {
+// project: function(t) {
+// return new b(t.lng, t.lat)
+// },
+// unproject: function(t) {
+// return new P(t.y, t.x)
+// },
+// bounds: new C([-180, -90], [180, 90])
+// }),
+// di = {
+// R: 6378137,
+// R_MINOR: 6356752.314245179,
+// bounds: new C([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]),
+// project: function(t) {
+// var e = Math.PI / 180,
+// i = this.R,
+// n = t.lat * e,
+// r = this.R_MINOR / i,
+// o = Math.sqrt(1 - r * r),
+// a = o * Math.sin(n),
+// s = Math.tan(Math.PI / 4 - n / 2) / Math.pow((1 - a) / (1 + a), o / 2);
+// return n = -i * Math.log(Math.max(s, 1e-10)), new b(t.lng * e * i, n)
+// },
+// unproject: function(t) {
+// for (var e, i = 180 / Math.PI, n = this.R, r = this.R_MINOR / n, o = Math.sqrt(1 - r * r), a = Math.exp(-t.y / n), s = Math.PI / 2 - 2 * Math.atan(a), l = 0, u = .1; l < 15 && Math.abs(u) > 1e-7; l++) e = o * Math.sin(s), e = Math.pow((1 - e) / (1 + e), o / 2), u = Math.PI / 2 - 2 * Math.atan(a * e) - s, s += u;
+// return new P(s * i, t.x * i / n)
+// }
+// },
+// pi = ((Object.freeze || Object)({
+// LonLat: hi,
+// Mercator: di,
+// SphericalMercator: ne
+// }), e({}, ie, {
+// code: "EPSG:3395",
+// projection: di,
+// transformation: function() {
+// var t = .5 / (Math.PI * di.R);
+// return S(t, .5, -t, .5)
+// }()
+// })),
+// fi = e({}, ie, {
+// code: "EPSG:4326",
+// projection: hi,
+// transformation: S(1 / 180, 1, -1 / 180, .5)
+// }),
+// mi = e({}, ee, {
+// projection: hi,
+// transformation: S(1, 0, -1, 0),
+// scale: function(t) {
+// return Math.pow(2, t)
+// },
+// zoom: function(t) {
+// return Math.log(t) / Math.LN2
+// },
+// distance: function(t, e) {
+// var i = e.lng - t.lng,
+// n = e.lat - t.lat;
+// return Math.sqrt(i * i + n * n)
+// },
+// infinite: !0
+// });
+// ee.Earth = ie, ee.EPSG3395 = pi, ee.EPSG3857 = le, ee.EPSG900913 = ue, ee.EPSG4326 = fi, ee.Simple = mi;
+// var gi = window.L;
+// window.L = t, Object.freeze = jt, t.version = qt, t.noConflict = Ht, t.Browser = Ue, t.Evented = te, t.Util = Xt, t.Class = _, t.extend = e, t.bind = i, t.stamp = n, t.setOptions = c, t.DomEvent = ei, t.DomUtil = ui, t.PosAnimation = ci, t.Point = b, t.point = w, t.Bounds = C, t.bounds = x, t.Transformation = T, t.transformation = S, t.LatLng = P, t.latLng = D, t.LatLngBounds = E, t.latLngBounds = k, t.CRS = ee
+// }), function(t, e) {
+// "object" == typeof exports && "undefined" != typeof module ? e(exports, require("leaflet")) : "function" == typeof define && define.amd ? define(["exports", "leaflet"], e) : e((t.L = t.L || {}, t.L.esri = t.L.esri || {}), t.L)
+// }(this, function(t, e) {
+// "use strict";
+
+// function i(t) {
+// var e = "";
+// t.f = t.f || "json";
+// for (var i in t) if (t.hasOwnProperty(i)) {
+// var n, r = t[i],
+// o = Object.prototype.toString.call(r);
+// e.length && (e += "&"), n = "[object Array]" === o ? "[object Object]" === Object.prototype.toString.call(r[0]) ? JSON.stringify(r) : r.join(",") : "[object Object]" === o ? JSON.stringify(r) : "[object Date]" === o ? r.valueOf() : r, e += encodeURIComponent(i) + "=" + encodeURIComponent(n)
+// }
+// return e
+// }
+// function n(t, i) {
+// var n = new window.XMLHttpRequest;
+// return n.onerror = function(r) {
+// n.onreadystatechange = e.Util.falseFn, t.call(i, {
+// error: {
+// code: 500,
+// message: "XMLHttpRequest error"
+// }
+// }, null)
+// }, n.onreadystatechange = function() {
+// var r, o;
+// if (4 === n.readyState) {
+// try {
+// r = JSON.parse(n.responseText)
+// } catch (a) {
+// r = null, o = {
+// code: 500,
+// message: "Could not parse response as JSON. This could also be caused by a CORS or XMLHttpRequest error."
+// }
+// }!o && r.error && (o = r.error, r = null), n.onerror = e.Util.falseFn, t.call(i, o, r)
+// }
+// }, n.ontimeout = function() {
+// this.onerror()
+// }, n
+// }
+// function r(t, e, r, o) {
+// var a = n(r, o);
+// return a.open("POST", t), "undefined" != typeof o && null !== o && "undefined" != typeof o.options && (a.timeout = o.options.timeout), a.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), a.send(i(e)), a
+// }
+// function o(t, e, r, o) {
+// var a = n(r, o);
+// return a.open("GET", t + "?" + i(e), !0), "undefined" != typeof o && null !== o && "undefined" != typeof o.options && (a.timeout = o.options.timeout), a.send(null), a
+// }
+// function a(t, e, r, o) {
+// var a = i(e),
+// l = n(r, o),
+// u = (t + "?" + a).length;
+// if (u <= 2e3 && q.cors ? l.open("GET", t + "?" + a) : u > 2e3 && q.cors && (l.open("POST", t), l.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")), "undefined" != typeof o && null !== o && "undefined" != typeof o.options && (l.timeout = o.options.timeout), u <= 2e3 && q.cors) l.send(null);
+// else {
+// if (!(u > 2e3 && q.cors)) return u <= 2e3 && !q.cors ? s(t, e, r, o) : void S("a request to " + t + " was longer then 2000 characters and this browser cannot make a cross-domain post request. Please use a proxy http://esri.github.io/esri-leaflet/api-reference/request.html");
+// l.send(a)
+// }
+// return l
+// }
+// function s(t, n, r, o) {
+// window._EsriLeafletCallbacks = window._EsriLeafletCallbacks || {};
+// var a = "c" + V;
+// n.callback = "window._EsriLeafletCallbacks." + a, window._EsriLeafletCallbacks[a] = function(t) {
+// if (window._EsriLeafletCallbacks[a] !== !0) {
+// var e, i = Object.prototype.toString.call(t);
+// "[object Object]" !== i && "[object Array]" !== i && (e = {
+// error: {
+// code: 500,
+// message: "Expected array or object as JSONP response"
+// }
+// }, t = null), !e && t.error && (e = t, t = null), r.call(o, e, t), window._EsriLeafletCallbacks[a] = !0
+// }
+// };
+// var s = e.DomUtil.create("script", null, document.body);
+// return s.type = "text/javascript", s.src = t + "?" + i(n), s.id = a, V++, {
+// id: a,
+// url: s.src,
+// abort: function() {
+// window._EsriLeafletCallbacks._callback[a]({
+// code: 0,
+// message: "Request aborted."
+// })
+// }
+// }
+// }
+// function l(t, e) {
+// for (var i = 0; i < t.length; i++) if (t[i] !== e[i]) return !1;
+// return !0
+// }
+// function u(t) {
+// return l(t[0], t[t.length - 1]) || t.push(t[0]), t
+// }
+// function c(t) {
+// var e, i = 0,
+// n = 0,
+// r = t.length,
+// o = t[n];
+// for (n; n < r - 1; n++) e = t[n + 1], i += (e[0] - o[0]) * (e[1] + o[1]), o = e;
+// return i >= 0
+// }
+// function h(t, e, i, n) {
+// var r = (n[0] - i[0]) * (t[1] - i[1]) - (n[1] - i[1]) * (t[0] - i[0]),
+// o = (e[0] - t[0]) * (t[1] - i[1]) - (e[1] - t[1]) * (t[0] - i[0]),
+// a = (n[1] - i[1]) * (e[0] - t[0]) - (n[0] - i[0]) * (e[1] - t[1]);
+// if (0 !== a) {
+// var s = r / a,
+// l = o / a;
+// if (s >= 0 && s <= 1 && l >= 0 && l <= 1) return !0
+// }
+// return !1
+// }
+// function d(t, e) {
+// for (var i = 0; i < t.length - 1; i++) for (var n = 0; n < e.length - 1; n++) if (h(t[i], t[i + 1], e[n], e[n + 1])) return !0;
+// return !1
+// }
+// function p(t, e) {
+// for (var i = !1, n = -1, r = t.length, o = r - 1; ++n < r; o = n)(t[n][1] <= e[1] && e[1] < t[o][1] || t[o][1] <= e[1] && e[1] < t[n][1]) && e[0] < (t[o][0] - t[n][0]) * (e[1] - t[n][1]) / (t[o][1] - t[n][1]) + t[n][0] && (i = !i);
+// return i
+// }
+// function f(t, e) {
+// var i = d(t, e),
+// n = p(t, e[0]);
+// return !(i || !n)
+// }
+// function m(t) {
+// for (var e, i, n, r = [], o = [], a = 0; a < t.length; a++) {
+// var s = u(t[a].slice(0));
+// if (!(s.length < 4)) if (c(s)) {
+// var l = [s];
+// r.push(l)
+// } else o.push(s)
+// }
+// for (var h = []; o.length;) {
+// n = o.pop();
+// var p = !1;
+// for (e = r.length - 1; e >= 0; e--) if (i = r[e][0], f(i, n)) {
+// r[e].push(n), p = !0;
+// break
+// }
+// p || h.push(n)
+// }
+// for (; h.length;) {
+// n = h.pop();
+// var m = !1;
+// for (e = r.length - 1; e >= 0; e--) if (i = r[e][0], d(i, n)) {
+// r[e].push(n), m = !0;
+// break
+// }
+// m || r.push([n.reverse()])
+// }
+// return 1 === r.length ? {
+// type: "Polygon",
+// coordinates: r[0]
+// } : {
+// type: "MultiPolygon",
+// coordinates: r
+// }
+// }
+// function g(t) {
+// var e = [],
+// i = t.slice(0),
+// n = u(i.shift().slice(0));
+// if (n.length >= 4) {
+// c(n) || n.reverse(), e.push(n);
+// for (var r = 0; r < i.length; r++) {
+// var o = u(i[r].slice(0));
+// o.length >= 4 && (c(o) && o.reverse(), e.push(o))
+// }
+// }
+// return e
+// }
+// function v(t) {
+// for (var e = [], i = 0; i < t.length; i++) for (var n = g(t[i]), r = n.length - 1; r >= 0; r--) {
+// var o = n[r].slice(0);
+// e.push(o)
+// }
+// return e
+// }
+// function _(t) {
+// var e = {};
+// for (var i in t) t.hasOwnProperty(i) && (e[i] = t[i]);
+// return e
+// }
+// function y(t, e) {
+// var i = {};
+// return "number" == typeof t.x && "number" == typeof t.y && (i.type = "Point", i.coordinates = [t.x, t.y]), t.points && (i.type = "MultiPoint", i.coordinates = t.points.slice(0)), t.paths && (1 === t.paths.length ? (i.type = "LineString", i.coordinates = t.paths[0].slice(0)) : (i.type = "MultiLineString", i.coordinates = t.paths.slice(0))), t.rings && (i = m(t.rings.slice(0))), (t.geometry || t.attributes) && (i.type = "Feature", i.geometry = t.geometry ? y(t.geometry) : null, i.properties = t.attributes ? _(t.attributes) : null, t.attributes && (i.id = t.attributes[e] || t.attributes.OBJECTID || t.attributes.FID)), i
+// }
+// function b(t, e) {
+// e = e || "OBJECTID";
+// var i, n = {
+// wkid: 4326
+// },
+// r = {};
+// switch (t.type) {
+// case "Point":
+// r.x = t.coordinates[0], r.y = t.coordinates[1], r.spatialReference = n;
+// break;
+// case "MultiPoint":
+// r.points = t.coordinates.slice(0), r.spatialReference = n;
+// break;
+// case "LineString":
+// r.paths = [t.coordinates.slice(0)], r.spatialReference = n;
+// break;
+// case "MultiLineString":
+// r.paths = t.coordinates.slice(0), r.spatialReference = n;
+// break;
+// case "Polygon":
+// r.rings = g(t.coordinates.slice(0)), r.spatialReference = n;
+// break;
+// case "MultiPolygon":
+// r.rings = v(t.coordinates.slice(0)), r.spatialReference = n;
+// break;
+// case "Feature":
+// t.geometry && (r.geometry = b(t.geometry, e)), r.attributes = t.properties ? _(t.properties) : {}, t.id && (r.attributes[e] = t.id);
+// break;
+// case "FeatureCollection":
+// for (r = [], i = 0; i < t.features.length; i++) r.push(b(t.features[i], e));
+// break;
+// case "GeometryCollection":
+// for (r = [], i = 0; i < t.geometries.length; i++) r.push(b(t.geometries[i], e))
+// }
+// return r
+// }
+// function w(t, e) {
+// return b(t, e)
+// }
+// function C(t, e) {
+// return y(t, e)
+// }
+// function x(t) {
+// var e = {};
+// for (var i in t) t.hasOwnProperty(i) && (e[i] = t[i]);
+// return e
+// }
+// function E(t) {
+// if ("NaN" !== t.xmin && "NaN" !== t.ymin && "NaN" !== t.xmax && "NaN" !== t.ymax) {
+// var i = e.latLng(t.ymin, t.xmin),
+// n = e.latLng(t.ymax, t.xmax);
+// return e.latLngBounds(i, n)
+// }
+// return null
+// }
+// function k(t) {
+// return t = e.latLngBounds(t), {
+// xmin: t.getSouthWest().lng,
+// ymin: t.getSouthWest().lat,
+// xmax: t.getNorthEast().lng,
+// ymax: t.getNorthEast().lat,
+// spatialReference: {
+// wkid: 4326
+// }
+// }
+// }
+// function L(t, e) {
+// var i, n = t.features || t.results,
+// r = n.length;
+// if (e) i = e;
+// else if (t.objectIdFieldName) i = t.objectIdFieldName;
+// else if (t.fields) {
+// for (var o = 0; o <= t.fields.length - 1; o++) if ("esriFieldTypeOID" === t.fields[o].type) {
+// i = t.fields[o].name;
+// break
+// }
+// } else if (r) for (var a in n[0].attributes) if (a.match(/^(OBJECTID|FID|OID|ID)$/i)) {
+// i = a;
+// break
+// }
+// var s = {
+// type: "FeatureCollection",
+// features: []
+// };
+// if (r) for (var l = n.length - 1; l >= 0; l--) {
+// var u = C(n[l], i);
+// s.features.push(u)
+// }
+// return s
+// }
+// function P(t) {
+// return t = e.Util.trim(t), "/" !== t[t.length - 1] && (t += "/"), t
+// }
+// function D(t) {
+// return /^(?!.*utility\.arcgis\.com).*\.arcgis\.com.*FeatureServer/i.test(t)
+// }
+// function T(t) {
+// var e;
+// switch (t) {
+// case "Point":
+// e = "esriGeometryPoint";
+// break;
+// case "MultiPoint":
+// e = "esriGeometryMultipoint";
+// break;
+// case "LineString":
+// e = "esriGeometryPolyline";
+// break;
+// case "MultiLineString":
+// e = "esriGeometryPolyline";
+// break;
+// case "Polygon":
+// e = "esriGeometryPolygon";
+// break;
+// case "MultiPolygon":
+// e = "esriGeometryPolygon"
+// }
+// return e
+// }
+// function S() {
+// console && console.warn && console.warn.apply(console, arguments)
+// }
+// function M(t) {
+// return t.getSize().x - j.attributionWidthOffset + "px"
+// }
+// function A(t) {
+// if (t.attributionControl && !t.attributionControl._esriAttributionAdded) {
+// t.attributionControl.setPrefix('<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a> | Powered by <a href="https://www.esri.com">Esri</a>');
+// var i = document.createElement("style");
+// i.type = "text/css", i.innerHTML = ".esri-truncated-attribution:hover {white-space: normal;}", document.getElementsByTagName("head")[0].appendChild(i), e.DomUtil.addClass(t.attributionControl._container, "esri-truncated-attribution:hover");
+// var n = document.createElement("style");
+// n.type = "text/css", n.innerHTML = ".esri-truncated-attribution {vertical-align: -3px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;display: inline-block;transition: 0s white-space;transition-delay: 1s;max-width: " + M(t) + ";}", document.getElementsByTagName("head")[0].appendChild(n), e.DomUtil.addClass(t.attributionControl._container, "esri-truncated-attribution"), t.on("resize", function(e) {
+// t.attributionControl._container.style.maxWidth = M(e.target)
+// }), t.attributionControl._esriAttributionAdded = !0
+// }
+// }
+// function O(t, i) {
+// s(t, {}, e.Util.bind(function(t, n) {
+// if (!t) {
+// i._esriAttributions = [];
+// for (var r = 0; r < n.contributors.length; r++) for (var o = n.contributors[r], a = 0; a < o.coverageAreas.length; a++) {
+// var s = o.coverageAreas[a],
+// l = e.latLng(s.bbox[0], s.bbox[1]),
+// u = e.latLng(s.bbox[2], s.bbox[3]);
+// i._esriAttributions.push({
+// attribution: o.attribution,
+// score: s.score,
+// bounds: e.latLngBounds(l, u),
+// minZoom: s.zoomMin,
+// maxZoom: s.zoomMax
+// })
+// }
+// i._esriAttributions.sort(function(t, e) {
+// return e.score - t.score
+// });
+// var c = {
+// target: i
+// };
+// N(c)
+// }
+// }, this))
+// }
+// function N(t) {
+// var i = t.target,
+// n = i._esriAttributions;
+// if (i && i.attributionControl && n) {
+// for (var r = "", o = i.getBounds(), a = e.latLngBounds(o.getSouthWest().wrap(), o.getNorthEast().wrap()), s = i.getZoom(), l = 0; l < n.length; l++) {
+// var u = n[l],
+// c = u.attribution;
+// !r.match(c) && u.bounds.intersects(a) && s >= u.minZoom && s <= u.maxZoom && (r += ", " + c)
+// }
+// r = r.substr(2);
+// var h = i.attributionControl._container.querySelector(".esri-dynamic-attribution");
+// h.innerHTML = r, h.style.maxWidth = M(i), i.fire("attributionupdated", {
+// attribution: r
+// })
+// }
+// }
+// function I(t) {
+// return new $(t)
+// }
+// function R(t) {
+// return new J(t)
+// }
+// function F(t) {
+// return new K(t)
+// }
+// function z(t) {
+// return new Y(t)
+// }
+// var B = ("default" in e ? e["default"] : e, "2.0.8"),
+// U = window.XMLHttpRequest && "withCredentials" in new window.XMLHttpRequest,
+// H = "" === document.documentElement.style.pointerEvents,
+// q = {
+// cors: U,
+// pointerEvents: H
+// },
+// j = {
+// attributionWidthOffset: 55
+// },
+// V = 0,
+// W = q.cors ? o : s;
+// W.CORS = o, W.JSONP = s;
+// var Z = {
+// request: a,
+// get: W,
+// post: r
+// },
+// G = {
+// shallowClone: x,
+// warn: S,
+// cleanUrl: P,
+// isArcgisOnline: D,
+// geojsonTypeToArcGIS: T,
+// responseToFeatureCollection: L,
+// geojsonToArcGIS: w,
+// arcgisToGeoJSON: C,
+// boundsToExtent: k,
+// extentToBounds: E,
+// calcAttributionWidth: M,
+// setEsriAttribution: A,
+// _getAttributionData: O,
+// _updateMapAttribution: N
+// },
+// $ = e.Class.extend({
+// options: {
+// proxy: !1,
+// useCors: U
+// },
+// generateSetter: function(t, i) {
+// return e.Util.bind(function(e) {
+// return this.params[t] = e, this
+// }, i)
+// },
+// initialize: function(t) {
+// if (t.request && t.options ? (this._service = t, e.Util.setOptions(this, t.options)) : (e.Util.setOptions(this, t), this.options.url = P(t.url)), this.params = e.Util.extend({}, this.params || {}), this.setters) for (var i in this.setters) {
+// var n = this.setters[i];
+// this[i] = this.generateSetter(n, this)
+// }
+// },
+// token: function(t) {
+// return this._service ? this._service.authenticate(t) : this.params.token = t, this
+// },
+// request: function(t, e) {
+// return this._service ? this._service.request(this.path, this.params, t, e) : this._request("request", this.path, this.params, t, e)
+// },
+// _request: function(t, e, i, n, r) {
+// var o = this.options.proxy ? this.options.proxy + "?" + this.options.url + e : this.options.url + e;
+// return "get" !== t && "request" !== t || this.options.useCors ? Z[t](o, i, n, r) : Z.get.JSONP(o, i, n, r)
+// }
+// }),
+// J = $.extend({
+// setters: {
+// offset: "resultOffset",
+// limit: "resultRecordCount",
+// fields: "outFields",
+// precision: "geometryPrecision",
+// featureIds: "objectIds",
+// returnGeometry: "returnGeometry",
+// token: "token"
+// },
+// path: "query",
+// params: {
+// returnGeometry: !0,
+// where: "1=1",
+// outSr: 4326,
+// outFields: "*"
+// },
+// within: function(t) {
+// return this._setGeometry(t), this.params.spatialRel = "esriSpatialRelContains", this
+// },
+// intersects: function(t) {
+// return this._setGeometry(t), this.params.spatialRel = "esriSpatialRelIntersects", this
+// },
+// contains: function(t) {
+// return this._setGeometry(t), this.params.spatialRel = "esriSpatialRelWithin", this
+// },
+// crosses: function(t) {
+// return this._setGeometry(t), this.params.spatialRel = "esriSpatialRelCrosses", this
+// },
+// touches: function(t) {
+// return this._setGeometry(t), this.params.spatialRel = "esriSpatialRelTouches", this
+// },
+// overlaps: function(t) {
+// return this._setGeometry(t), this.params.spatialRel = "esriSpatialRelOverlaps", this
+// },
+// bboxIntersects: function(t) {
+// return this._setGeometry(t), this.params.spatialRel = "esriSpatialRelEnvelopeIntersects", this
+// },
+// indexIntersects: function(t) {
+// return this._setGeometry(t), this.params.spatialRel = "esriSpatialRelIndexIntersects", this
+// },
+// nearby: function(t, i) {
+// return t = e.latLng(t), this.params.geometry = [t.lng, t.lat], this.params.geometryType = "esriGeometryPoint", this.params.spatialRel = "esriSpatialRelIntersects", this.params.units = "esriSRUnit_Meter", this.params.distance = i, this.params.inSr = 4326, this
+// },
+// where: function(t) {
+// return this.params.where = t, this
+// },
+// between: function(t, e) {
+// return this.params.time = [t.valueOf(), e.valueOf()], this
+// },
+// simplify: function(t, e) {
+// var i = Math.abs(t.getBounds().getWest() - t.getBounds().getEast());
+// return this.params.maxAllowableOffset = i / t.getSize().y * e, this
+// },
+// orderBy: function(t, e) {
+// return e = e || "ASC", this.params.orderByFields = this.params.orderByFields ? this.params.orderByFields + "," : "", this.params.orderByFields += [t, e].join(" "), this
+// },
+// run: function(t, e) {
+// return this._cleanParams(), this.options.isModern || D(this.options.url) ? (this.params.f = "geojson", this.request(function(i, n) {
+// this._trapSQLerrors(i), t.call(e, i, n, n)
+// }, this)) : this.request(function(i, n) {
+// this._trapSQLerrors(i), t.call(e, i, n && L(n), n)
+// }, this)
+// },
+// count: function(t, e) {
+// return this._cleanParams(), this.params.returnCountOnly = !0, this.request(function(e, i) {
+// t.call(this, e, i && i.count, i)
+// }, e)
+// },
+// ids: function(t, e) {
+// return this._cleanParams(), this.params.returnIdsOnly = !0, this.request(function(e, i) {
+// t.call(this, e, i && i.objectIds, i)
+// }, e)
+// },
+// bounds: function(t, e) {
+// return this._cleanParams(), this.params.returnExtentOnly = !0, this.request(function(i, n) {
+// n && n.extent && E(n.extent) ? t.call(e, i, E(n.extent), n) : (i = {
+// message: "Invalid Bounds"
+// }, t.call(e, i, null, n))
+// }, e)
+// },
+// pixelSize: function(t) {
+// var i = e.point(t);
+// return this.params.pixelSize = [i.x, i.y], this
+// },
+// layer: function(t) {
+// return this.path = t + "/query", this
+// },
+// _trapSQLerrors: function(t) {
+// t && "400" === t.code && S("one common syntax error in query requests is encasing string values in double quotes instead of single quotes")
+// },
+// _cleanParams: function() {
+// delete this.params.returnIdsOnly, delete this.params.returnExtentOnly, delete this.params.returnCountOnly
+// },
+// _setGeometry: function(t) {
+// return this.params.inSr = 4326, t instanceof e.LatLngBounds ? (this.params.geometry = k(t), void(this.params.geometryType = "esriGeometryEnvelope")) : (t.getLatLng && (t = t.getLatLng()), t instanceof e.LatLng && (t = {
+// type: "Point",
+// coordinates: [t.lng, t.lat]
+// }), t instanceof e.GeoJSON && (t = t.getLayers()[0].feature.geometry, this.params.geometry = w(t), this.params.geometryType = T(t.type)), t.toGeoJSON && (t = t.toGeoJSON()), "Feature" === t.type && (t = t.geometry), "Point" === t.type || "LineString" === t.type || "Polygon" === t.type || "MultiPolygon" === t.type ? (this.params.geometry = w(t), void(this.params.geometryType = T(t.type))) : void S("invalid geometry passed to spatial query. Should be L.LatLng, L.LatLngBounds, L.Marker or a GeoJSON Point, Line, Polygon or MultiPolygon object"))
+// }
+// }),
+// K = $.extend({
+// setters: {
+// contains: "contains",
+// text: "searchText",
+// fields: "searchFields",
+// spatialReference: "sr",
+// sr: "sr",
+// layers: "layers",
+// returnGeometry: "returnGeometry",
+// maxAllowableOffset: "maxAllowableOffset",
+// precision: "geometryPrecision",
+// dynamicLayers: "dynamicLayers",
+// returnZ: "returnZ",
+// returnM: "returnM",
+// gdbVersion: "gdbVersion",
+// token: "token"
+// },
+// path: "find",
+// params: {
+// sr: 4326,
+// contains: !0,
+// returnGeometry: !0,
+// returnZ: !0,
+// returnM: !1
+// },
+// layerDefs: function(t, e) {
+// return this.params.layerDefs = this.params.layerDefs ? this.params.layerDefs + ";" : "", this.params.layerDefs += [t, e].join(":"), this
+// },
+// simplify: function(t, e) {
+// var i = Math.abs(t.getBounds().getWest() - t.getBounds().getEast());
+// return this.params.maxAllowableOffset = i / t.getSize().y * e, this
+// },
+// run: function(t, e) {
+// return this.request(function(i, n) {
+// t.call(e, i, n && L(n), n)
+// }, e)
+// }
+// }),
+// Y = $.extend({
+// path: "identify",
+// between: function(t, e) {
+// return this.params.time = [t.valueOf(), e.valueOf()], this
+// }
+// });
+// t.VERSION = B, t.Support = q, t.options = j, t.Util = G, t.get = W, t.post = r, t.request = a, t.Task = $, t.task = I, t.Query = J, t.query = R, t.Find = K, t.find = F, t.Identify = Y, t.identify = z
+// });
+// var mars3d = {
+// version: "1.1",
+// name: "Cesium三维地图框架",
+// author: "木遥(QQ:346819890)"
+// },
+// scope = "undefined" != typeof window ? window : "undefined" != typeof self ? self : {};
+// scope.mars3d = mars3d, function(t, e) {
+// "use strict";
+
+// function i(t) {
+// return "complete" === t.readyState || "loaded" === t.readyState
+// }
+// function n(t, i, n) {
+// var r = e.createElement("link");
+// r.rel = "stylesheet", a(r, n, "css"), r.async = !0, r.href = t, h.appendChild(r)
+// }
+// function r(t, i, n) {
+// var r = e.createElement("script");
+// r.charset = "utf-8", a(r, n, "js"), r.async = !i.sync, r.src = t, h.appendChild(r)
+// }
+// function o(t, e) {
+// var i;
+// t.sheet && (i = !0), setTimeout(function() {
+// i ? e() : o(t, e)
+// }, 20)
+// }
+// function a(t, e, n) {
+// function r() {
+// t.onload = t.onreadystatechange = null, t = null, e()
+// }
+// var a = "onload" in t,
+// s = "css" === n;
+// return !s || !d && a ? void(a ? (t.onload = r, t.onerror = function() {
+// t.onerror = null, "css" == n ? console.error("该css文件不存在:" + t.href) : console.error("该js文件不存在:" + t.src), r()
+// }) : t.onreadystatechange = function() {
+// i(t) && r()
+// }) : void setTimeout(function() {
+// o(t, e)
+// }, 1)
+// }
+// function s(t, e, i, o) {
+// function a() {
+// var i = e.indexOf(t);
+// i > -1 && e.splice(i, 1), 0 === e.length && o()
+// }
+// return t ? void(c.test(t) ? n(t, i, a) : r(t, i, a)) : void setTimeout(function() {
+// a()
+// })
+// }
+// function l(t, e, i) {
+// var n = function() {
+// i && i()
+// };
+// if (t = Array.prototype.slice.call(t || []), 0 === t.length) return void n();
+// for (var r = 0, o = t.length; r < o; r++) s(t[r], t, e, n)
+// }
+// function u(e, n) {
+// if (i(e)) n();
+// else {
+// var r = 1500,
+// o = !1;
+// t.addEventListener("load", function() {
+// o || (n(), o = !0)
+// }), setTimeout(function() {
+// o || (n(), o = !0)
+// }, r)
+// }
+// }
+// var c = new RegExp("\\.css"),
+// h = e.head || e.getElementsByTagName("head")[0],
+// d = +navigator.userAgent.replace(/.*(?:AppleWebKit|AndroidWebKit)\/?(\d+).*/i, "$1") < 536,
+// p = {
+// async: function(t, i) {
+// u(e, function() {
+// l(t, {}, i)
+// })
+// },
+// sync: function(t, i) {
+// u(e, function() {
+// l(t, {
+// sync: !0
+// }, i)
+// })
+// }
+// };
+// return t.Loader = p, p
+// }(window, document), mars3d.widget = function() {
+// function t(t, e, i) {
+// y = t, e = e || {}, x = i || "", C = [], _ = e.defaultOptions || {
+// windowOptions: {
+// position: "rt",
+// maxmin: !1,
+// resize: !0
+// },
+// autoDisable: !0,
+// disableOhter: !0
+// }, v = e.version, "time" == v && (v = (new Date).getTime());
+// var r = e.widgetsAtStart;
+// if (r && r.length > 0) for (var o = 0; o < r.length; o++) {
+// var a = r[o];
+// a.hasOwnProperty("uri") && "" != a.uri ? a.hasOwnProperty("visible") && !a.visible || (a.autoDisable = !1, a.openAtStart = !0, a._nodebug = !0, n(a), C.push(a)) : console.log("widget未配置uri:" + JSON.stringify(a))
+// }
+// // var s = e["debugger"];
+// if (s) {
+// var l = '<div id="widget-testbar" class="widgetbar no-print-view" > <div style="height: 30px; line-height:30px;"><b style="color: #4db3ff;">widget测试栏</b> <button type="button" onclick="mars3d.widget.removeDebugeBar();" class="btn btn-link btn-xs">关闭</button> </div> <button type="button" class="btn btn-info" onclick="mars3d.widget.disableAll()" ><i class="fa fa-globe"></i>漫游</button></div>';
+// $("body").append(l)
+// }
+// if (r = e.widgets, r && r.length > 0) for (var o = 0; o < r.length; o++) {
+// var a = r[o];
+// if ("group" == a.type) {
+// for (var l = ' <div class="btn-group dropup"> <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><i class="fa fa-align-justify"></i>' + a.name + ' <span class="caret"></span></button> <ul class="dropdown-menu">', u = 0; u < a.children.length; u++) {
+// var h = a.children[u];
+// n(h), l += " <li onclick=\"mars3d.widget.activate('" + h.uri + "'," + !h.disableOhter + ')" ><a href="#"><i class="fa fa-star"></i>' + h.name + "</a></li>", h.hasOwnProperty("uri") && "" != h.uri ? C.push(h) : console.log("widget未配置uri:" + JSON.stringify(h))
+// }
+// l += "</ul></div>", s && !a._nodebug && $("#widget-testbar").append(l)
+// } else {
+// if (n(a), s && !a._nodebug) {
+// var l = ' <button type="button" class="btn btn-primary" onclick="mars3d.widget.activate(\'' + a.uri + "'," + !a.disableOhter + ')" > <i class="fa fa-globe"></i>' + a.name + " </button>";
+// $("#widget-testbar").append(l)
+// }
+// if (!a.hasOwnProperty("uri") || "" == a.uri) {
+// console.log("widget未配置uri:" + JSON.stringify(a));
+// continue
+// }
+// C.push(a)
+// }
+// }
+// for (var o = 0; o < C.length; o++) {
+// var a = C[o];
+// a.openAtStart && E.push(a)
+// }
+// $(window).resize(function() {
+// for (var t = 0; t < C.length; t++) {
+// var e = C[t];
+// e._class && e._class.indexResize()
+// }
+// }), c()
+// }
+// function e() {
+// return i(_.windowOptions)
+// }
+// function i(t, e) {
+// if (null == t || "object" != typeof t) return t;
+// if (t.constructor != Object && t.constructor != Array) return t;
+// if (t.constructor == Date || t.constructor == RegExp || t.constructor == Function || t.constructor == String || t.constructor == Number || t.constructor == Boolean) return new t.constructor(t);
+// e = e || new t.constructor;
+// for (var n in t) e[n] = "undefined" == typeof e[n] ? i(t[n], null) : e[n];
+// return e
+// }
+// function n(t) {
+// if (_) for (var e in _)"windowOptions" == e || t.hasOwnProperty(e) || (t[e] = _[e]);
+// t.path = p(x + t.uri), t.name = t.name || t.label
+// }
+// function r(e, i) {
+// null == y && e.viewer && t(e.viewer), "string" == typeof e && (e = {
+// uri: e
+// }, null != i && (e.disableOhter = !i));
+// for (var r, o = 0; o < C.length; o++) {
+// var a = C[o];
+// if (e.uri == a.uri || a.id && e.uri == a.id) {
+// r = a;
+// for (var s in e)"uri" != s && (r[s] = e[s]);
+// break
+// }
+// }
+// return null == r && (n(e), r = e, C.push(e)), r.disableOhter && (r.reStart ? u() : u(r.uri)), r._class ? r._class.activateBase() : (E.push(r), 1 == E.length && c()), r
+// }
+// function o(t) {
+// for (var e = 0; e < C.length; e++) {
+// var i = C[e];
+// if (t == i.uri || t == i.id) return i
+// }
+// }
+// function a(t) {
+// var e = o(t);
+// return e ? e._class : null
+// }
+// function s(t) {
+// var e = a(t);
+// return null != e && e.isActivate
+// }
+// function l(t) {
+// for (var e = 0; e < C.length; e++) {
+// var i = C[e];
+// if (i._class && (t == i.uri || t == i.id)) {
+// i._class.disableBase();
+// break
+// }
+// }
+// }
+// function u(t) {
+// for (var e = 0; e < C.length; e++) {
+// var i = C[e];
+// i.autoDisable && (!t || t != i.uri && t != i.id) && i._class && i._class.disableBase()
+// }
+// }
+// function c() {
+// if (0 != E.length) {
+// if (w) return void setTimeout(c, 500);
+// w = !0, b = E[0];
+// var t = b.uri;
+// v && (t += t.indexOf("?") == -1 ? "?time=" + v : "&time=" + v), Loader.async([x + t], function() {
+// w = !1, E.shift(), c()
+// })
+// }
+// }
+// function h(t) {
+// if (null != b) return b._class = new t(b, y), b._class.activateBase(), b._class;
+// for (var e = d(), i = 0; i < C.length; i++) {
+// var n = C[i];
+// if (e.endsWith(n.uri)) return n._class = new t(n, y), n._class.activateBase(), n._class
+// }
+// }
+// function d() {
+// for (var t, e = document.scripts, i = e.length - 1; i >= 0; i--) if (t = e[i].src, null != t && "" != t && t.indexOf("widgets") != -1) return t;
+// return ""
+// }
+// function p(t) {
+// var e = t.lastIndexOf("/");
+// return t.substring(0, e + 1)
+// }
+// function f() {
+// $("#widget-testbar").remove()
+// }
+// function m() {
+// return v
+// }
+// function g() {
+// return x
+// }
+// var v, _, y, b, w, C = [],
+// x = "",
+// E = [];
+// return {
+// init: t,
+// isActivate: s,
+// activate: r,
+// disable: l,
+// disableAll: u,
+// getWidget: o,
+// getClass: a,
+// removeDebugeBar: f,
+// bindClass: h,
+// getDefWindowOptions: e,
+// getCacheVersion: m,
+// getBasePath: g
+// }
+// }(),
+// Cesium.defineProperties(ArcTileImageryProvider.prototype, {
+// url: {
+// get: function() {
+// return this._url
+// }
+// },
+// token: {
+// get: function() {
+// return this._token
+// }
+// },
+// proxy: {
+// get: function() {
+// return this._proxy
+// }
+// },
+// tileWidth: {
+// get: function() {
+// if (!this._ready) throw new DeveloperError("tileWidth must not be called before the imagery provider is ready.");
+// return this._tileWidth
+// }
+// },
+// tileHeight: {
+// get: function() {
+// if (!this._ready) throw new DeveloperError("tileHeight must not be called before the imagery provider is ready.");
+// return this._tileHeight
+// }
+// },
+// maximumLevel: {
+// get: function() {
+// if (!this._ready) throw new DeveloperError("maximumLevel must not be called before the imagery provider is ready.");
+// return this._maximumLevel
+// }
+// },
+// minimumLevel: {
+// get: function() {
+// if (!this._ready) throw new DeveloperError("minimumLevel must not be called before the imagery provider is ready.");
+// return 0
+// }
+// },
+// tilingScheme: {
+// get: function() {
+// if (!this._ready) throw new DeveloperError("tilingScheme must not be called before the imagery provider is ready.");
+// return this._tilingScheme
+// }
+// },
+// rectangle: {
+// get: function() {
+// if (!this._ready) throw new DeveloperError("rectangle must not be called before the imagery provider is ready.");
+// return this._rectangle
+// }
+// },
+// tileDiscardPolicy: {
+// get: function() {
+// if (!this._ready) throw new DeveloperError("tileDiscardPolicy must not be called before the imagery provider is ready.");
+// return this._tileDiscardPolicy
+// }
+// },
+// errorEvent: {
+// get: function() {
+// return this._errorEvent
+// }
+// },
+// ready: {
+// get: function() {
+// return this._ready
+// }
+// },
+// readyPromise: {
+// get: function() {
+// return this._readyPromise.promise
+// }
+// },
+// credit: {
+// get: function() {
+// return this._credit
+// }
+// },
+// usingPrecachedTiles: {
+// get: function() {
+// return this._useTiles
+// }
+// },
+// hasAlphaChannel: {
+// get: function() {
+// return !0
+// }
+// },
+// layers: {
+// get: function() {
+// return this._layers
+// }
+// }
+// }), ArcTileImageryProvider.prototype.getTileCredits = function(t, e, i) {}, ArcTileImageryProvider.prototype.padLeft0 = function(t, e) {
+// t = String(t);
+// for (var i = t.length; i < e;) t = "0" + t, i++;
+// return t
+// }, ArcTileImageryProvider.prototype.requestImage = function(t, e, i) {
+// if (!this._ready) throw new DeveloperError("requestImage must not be called before the imagery provider is ready.");
+// var n = "L" + this.padLeft0(i.toString(), 2),
+// r = "R" + this.padLeft0(e.toString(16), 8),
+// o = "C" + this.padLeft0(t.toString(16), 8);
+// this._isUpper && (n = n.toUpperCase(), r = r.toUpperCase(), o = o.toUpperCase());
+// var a = this._url + n + "/" + r + "/" + o + this._imgType;
+// return Cesium.ImageryProvider.loadImage(this, a)
+// }, mars3d.latlng = function() {
+// function t(t, e) {
+// var i, n = t.pick(e);
+// if (t.pickPositionSupported && Cesium.defined(n) && (i = t.pickPosition(e))) {
+// var r = t.globe.ellipsoid.cartesianToCartographic(i);
+// if (r.height > 0) return i
+// }
+// var o = t.camera.getPickRay(e);
+// return i = t.globe.pick(o, t)
+// }
+// function e(t, e) {
+// var n = t.scene,
+// r = i(n),
+// o = r;
+// if (!o) {
+// var a = n.globe,
+// s = n.camera.positionCartographic.clone(),
+// l = a.getHeight(s);
+// s.height = l || 0, o = Cesium.Ellipsoid.WGS84.cartographicToCartesian(s)
+// }
+// var u = Cesium.Cartographic.fromCartesian(o),
+// c = {};
+// return c.y = Number(Cesium.Math.toDegrees(u.latitude).toFixed(6)), c.x = Number(Cesium.Math.toDegrees(u.longitude).toFixed(6)), c.z = Number(u.height.toFixed(1)), e && (c = mars3d.map.point2wgs(c)), c
+// }
+// function i(t) {
+// const e = t.canvas, i = new Cesium.Cartesian2(e.clientWidth / 2, e.clientHeight / 2), n = t.camera.getPickRay(i), r = t.globe.pick(n, t);
+// return r || t.camera.pickEllipsoid(i)
+// }
+// function n(t, e) {
+// var i = {
+// xmin: 70,
+// xmax: 140,
+// ymin: 0,
+// ymax: 55
+// },
+// n = t.scene,
+// r = n.globe.ellipsoid,
+// o = n.canvas,
+// a = t.camera.pickEllipsoid(new Cesium.Cartesian2(0, 0), r);
+// if (a) {
+// var s = r.cartesianToCartographic(a);
+// i.xmin = Cesium.Math.toDegrees(s.longitude), i.ymax = Cesium.Math.toDegrees(s.latitude)
+// } else {
+// for (var l, u = o.width / 2, c = o.height / 2, h = 0; h <= c; h += 10) {
+// var d = h <= u ? h : u;
+// if (l = t.camera.pickEllipsoid(new Cesium.Cartesian2(d, h), r)) break
+// }
+// if (l) {
+// var s = r.cartesianToCartographic(l);
+// i.xmin = Cesium.Math.toDegrees(s.longitude), i.ymax = Cesium.Math.toDegrees(s.latitude)
+// }
+// }
+// var p = t.camera.pickEllipsoid(new Cesium.Cartesian2(o.width, o.height), r);
+// if (p) {
+// var f = r.cartesianToCartographic(p);
+// i.xmax = Cesium.Math.toDegrees(f.longitude), i.ymin = Cesium.Math.toDegrees(f.latitude)
+// } else {
+// for (var m, u = o.width / 2, c = o.height / 2, h = o.height; h >= c; h -= 10) {
+// var d = h >= u ? h : u;
+// if (m = t.camera.pickEllipsoid(new Cesium.Cartesian2(d, h), r)) break
+// }
+// if (m) {
+// var f = r.cartesianToCartographic(m);
+// i.xmax = Cesium.Math.toDegrees(f.longitude), i.ymin = Cesium.Math.toDegrees(f.latitude)
+// }
+// }
+// if (e) {
+// var g = mars3d.map.point2wgs({
+// x: i.xmin,
+// y: i.ymin
+// });
+// i.xmin = g.x, i.ymin = g.y;
+// var v = mars3d.map.point2wgs({
+// x: i.xmax,
+// y: i.ymax
+// });
+// i.xmax = v.x, i.ymax = v.y
+// }
+// return i
+// }
+// function r(t, e) {
+// var i = t.camera,
+// n = i.positionCartographic,
+// r = {};
+// return r.y = Number(Cesium.Math.toDegrees(n.latitude).toFixed(6)), r.x = Number(Cesium.Math.toDegrees(n.longitude).toFixed(6)), r.z = Number(n.height.toFixed(1)), r.heading = Number(Cesium.Math.toDegrees(i.heading).toFixed(1)), r.pitch = Number(Cesium.Math.toDegrees(i.pitch).toFixed(1)), r.roll = Number(Cesium.Math.toDegrees(i.roll).toFixed(1)), e && (r = mars3d.map.point2wgs(r)), r
+// }
+// return {
+// getCurrentMousePosition: t,
+// getCenter: e,
+// getExtent: n,
+// getCameraView: r
+// }
+// }(), mars3d.layer = function() {
+// function t(e, i, n, r) {
+// var o;
+// switch (e.url && (n && (e.url = e.url.replace("$serverURL$", n)), e.url = e.url.replace("$hostname$", location.hostname).replace("$host$", location.host)), e.type) {
+// case "group":
+// if (e.layers && e.layers.length > 0) {
+// for (var a = [], s = 0; s < e.layers.length; s++) {
+// var l = t(e.layers[s], i, n);
+// null != l && a.push(l)
+// }
+// e._layers = a, o = new mars3d.GroupLayer(e, i)
+// }
+// break;
+// case "www_bing":
+// case "www_osm":
+// case "www_google":
+// case "www_gaode":
+// case "www_tdt":
+// case "arcgis_cache":
+// case "arcgis":
+// case "arcgis_tile":
+// case "wmts":
+// case "tms":
+// case "wms":
+// case "xyz":
+// case "tile":
+// case "single":
+// case "image":
+// case "custom_tilecoord":
+// case "custom_grid":
+// o = new mars3d.TileLayer(e, i);
+// break;
+// case "custom_graticule":
+// o = new mars3d.GraticuleLayer(e, i);
+// break;
+// case "3dtiles":
+// o = new mars3d.Tiles3dLayer(e, i);
+// break;
+// case "gltf":
+// o = new mars3d.GltfLayer(e, i);
+// break;
+// case "arcgis_dynamic":
+// o = new mars3d.ArcFeatureLayer(e, i);
+// break;
+// case "geojson":
+// o = new mars3d.GeoJsonLayer(e, i)
+// }
+// if (r) {
+// var u = r(e, i, o);
+// u && (o = u)
+// }
+// return null == o ? "group" != e.type && console.log("配置中的图层未处理:" + JSON.stringify(e)) : e._layer = o, o
+// }
+// function e(t, e) {
+// t.url && (e && (t.url = t.url.replace("$serverURL$", e)), t.url = t.url.replace("$hostname$", location.hostname).replace("$host$", location.host));
+// var i = {};
+// for (var n in t) {
+// var r = t[n];
+// if (null != r) switch (n) {
+// default:
+// i[n] = r;
+// break;
+// case "crs":
+// "4326" == r || "EPSG4326" == r.toUpperCase() ? i.tilingScheme = new Cesium.GeographicTilingScheme({
+// numberOfLevelZeroTilesX: t.numberOfLevelZeroTilesX || 2,
+// numberOfLevelZeroTilesY: t.numberOfLevelZeroTilesY || 1
+// }) : i.tilingScheme = new Cesium.WebMercatorTilingScheme({
+// numberOfLevelZeroTilesX: t.numberOfLevelZeroTilesX || 1,
+// numberOfLevelZeroTilesY: t.numberOfLevelZeroTilesY || 1
+// });
+// break;
+// case "proxy":
+// i.proxy = new Cesium.DefaultProxy(r);
+// break;
+// case "rectangle":
+// i.rectangle = Cesium.Rectangle.fromDegrees(r.xmin, r.ymin, r.xmax, r.ymax)
+// }
+// }
+// var o;
+// switch (i.type) {
+// case "single":
+// case "image":
+// o = new Cesium.SingleTileImageryProvider(i);
+// break;
+// case "xyz":
+// case "tile":
+// o = new Cesium.UrlTemplateImageryProvider(i);
+// break;
+// case "wms":
+// o = new Cesium.WebMapServiceImageryProvider(i);
+// break;
+// case "tms":
+// i.url || (i.url = Cesium.buildModuleUrl("Assets/Textures/NaturalEarthII")), o = new Cesium.createTileMapServiceImageryProvider(i);
+// break;
+// case "wmts":
+// o = new Cesium.WebMapTileServiceImageryProvider(i);
+// break;
+// case "arcgis":
+// case "arcgis_tile":
+// o = new Cesium.ArcGisMapServerImageryProvider(i);
+// break;
+// case "arcgis_cache":
+// o = new ArcTileImageryProvider(i);
+// break;
+// case "www_tdt":
+// var a;
+// switch (i.layer) {
+// default:
+// case "vec_d":
+// a = "vec";
+// break;
+// case "vec_z":
+// a = "cva";
+// break;
+// case "img_d":
+// a = "img";
+// break;
+// case "img_z":
+// a = "cia";
+// break;
+// case "ter_d":
+// a = "ter";
+// break;
+// case "ter_z":
+// a = "cta"
+// }
+// var s = 18;
+// if ("4326" == t.crs) {
+// for (var l = new Array(s), u = 0; u <= s; u++) l[u] = (u + 1).toString();
+// o = new Cesium.WebMapTileServiceImageryProvider({
+// url: "http://t{s}.tianditu.com/" + a + "_c/wmts?service=WMTS&version=1.0.0&request=GetTile&tilematrix={TileMatrix}&layer=" + a + "&style={style}&tilerow={TileRow}&tilecol={TileCol}&tilematrixset={TileMatrixSet}&format=tiles",
+// layer: a,
+// style: "default",
+// format: "tiles",
+// tileMatrixSetID: "c",
+// subdomains: ["0", "1", "2", "3", "4", "5", "6", "7"],
+// tileMatrixLabels: l,
+// tilingScheme: new Cesium.GeographicTilingScheme,
+// maximumLevel: s,
+// proxy: i.proxy
+// })
+// } else {
+// for (var l = new Array(s), u = 0; u <= s; u++) l[u] = u.toString();
+// o = new Cesium.WebMapTileServiceImageryProvider({
+// url: "http://t{s}.tianditu.com/" + a + "_w/wmts?service=WMTS&version=1.0.0&request=GetTile&tilematrix={TileMatrix}&layer=" + a + "&style={style}&tilerow={TileRow}&tilecol={TileCol}&tilematrixset={TileMatrixSet}&format=tiles",
+// layer: a,
+// style: "default",
+// format: "tiles",
+// tileMatrixSetID: "w",
+// subdomains: ["0", "1", "2", "3", "4", "5", "6", "7"],
+// tileMatrixLabels: l,
+// tilingScheme: new Cesium.WebMercatorTilingScheme,
+// maximumLevel: s,
+// proxy: i.proxy
+// })
+// }
+// break;
+// case "www_gaode":
+// var c;
+// switch (i.layer) {
+// case "vec":
+// default:
+// c = "http://" + (i.bigfont ? "wprd" : "webrd") + "0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}";
+// break;
+// case "img_d":
+// c = "http://webst0{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}";
+// break;
+// case "img_z":
+// c = "http://webst0{s}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8";
+// break;
+// case "time":
+// var h = (new Date).getTime();
+// c = "http://tm.amap.com/trafficengine/mapabc/traffictile?v=1.0&;t=1&x={x}&y={y}&z={z}&&t=" + h
+// }
+// o = new Cesium.UrlTemplateImageryProvider({
+// url: c,
+// subdomains: ["1", "2", "3", "4"],
+// maximumLevel: 18,
+// proxy: i.proxy
+// });
+// break;
+// case "www_google":
+// var c;
+// switch (i.layer) {
+// case "vec":
+// default:
+// c = "http://mt{s}.google.cn/vt/lyrs=m@207000000&hl=zh-CN&gl=CN&src=app&x={x}&y={y}&z={z}&s=Galile";
+// break;
+// case "img_d":
+// c = "http://mt{s}.google.cn/vt/lyrs=s&hl=zh-CN&gl=CN&x={x}&y={y}&z={z}&s=Gali";
+// break;
+// case "img_z":
+// c = "http://mt{s}.google.cn/vt/imgtp=png32&lyrs=h@207000000&hl=zh-CN&gl=cn&x={x}&y={y}&z={z}&s=Galil";
+// break;
+// case "ter":
+// c = "http://mt{s}.google.cn/vt/lyrs=t@131,r@227000000&hl=zh-CN&gl=cn&x={x}&y={y}&z={z}&s=Galile"
+// }
+// o = new Cesium.UrlTemplateImageryProvider({
+// url: c,
+// subdomains: ["1", "2", "3"],
+// maximumLevel: 20,
+// proxy: i.proxy
+// });
+// break;
+// case "www_osm":
+// o = new Cesium.createOpenStreetMapImageryProvider({
+// url: "https://{s}.tile.openstreetmap.org/",
+// subdomains: ["a", "b", "c"],
+// maximumLevel: 18,
+// proxy: i.proxy
+// });
+// break;
+// case "www_bing":
+// var d = i.layer || Cesium.BingMapsStyle.Aerial;
+// o = new Cesium.BingMapsImageryProvider({
+// url: "https://dev.virtualearth.net",
+// key: "AtkX3zhnRe5fyGuLU30uZw8r3sxdBDnpQly7KfFTCB2rGlDgXBG3yr-qEiQEicEc",
+// mapStyle: d,
+// proxy: i.proxy
+// });
+// break;
+// case "custom_grid":
+// o = new Cesium.GridImageryProvider;
+// break;
+// case "custom_tilecoord":
+// o = new Cesium.TileCoordinatesImageryProvider;
+// break;
+// default:
+// console.log("config配置图层未处理:" + t)
+// }
+// return o
+// }
+// return {
+// createLayer: t,
+// createImageryProvider: e
+// }
+// }(), mars3d.popup = function() {
+// function t(t) {
+// s = t;
+// var i = '<div id="pupup-all-view" ></div>';
+// $("#" + s._container.id).append(i);
+// var n = new Cesium.ScreenSpaceEventHandler(s.scene.canvas);
+// n.setInputAction(e, Cesium.ScreenSpaceEventType.LEFT_CLICK), s.scene.postRender.addEventListener(r)
+// }
+// function e(t) {
+// var e = t.position,
+// n = s.scene.pick(e);
+// if (n && Cesium.defined(n.id)) {
+// var r = n.id;
+// if (!r.popup) return;
+// var a;
+// a = r.billboard || r.label || r.point ? n.primitive.position : mars3d.latlng.getCurrentMousePosition(s.scene, e), i(r, a)
+// } else o()
+// }
+// function i(t, e) {
+// if (null != t && null != t.popup) {
+// var i = "popup-" + t.id;
+// o(i), l[i] = {
+// popup: t.popup,
+// cartesian: e
+// };
+// var r;
+// r = "object" == typeof t.popup ? t.popup.html : t.popup, r = '<div id="' + i + '" class="cesium-popup"> <a class="cesium-popup-close-button cesium-popup-color" href="javascript:mars3d.popup.hide(\'' + i + '\')">×</a> <div class="cesium-popup-content-wrapper cesium-popup-background"> <div class="cesium-popup-content cesium-popup-color">' + r + '</div> </div> <div class="cesium-popup-tip-container"><div class="cesium-popup-tip cesium-popup-background"></div></div> </div>', $("#pupup-all-view").append(r);
+// var a = n(i, e, t.popup);
+// return a ? void 0 : void o(i)
+// }
+// }
+// function n(t, e, i) {
+// var n = Cesium.SceneTransforms.wgs84ToWindowCoordinates(s.scene, e);
+// if (null == n) return !1;
+// var r = $("#" + t),
+// o = n.x - r.width() / 2,
+// a = n.y - r.height();
+// return i && "object" == typeof i && i.anchor && (o += i.anchor[0], a += i.anchor[1]), r.css("transform", "translate3d(" + o + "px," + a + "px, 0)"), !0
+// }
+// function r() {
+// for (var t in l) {
+// var e = l[t];
+// n(t, e.cartesian, e.popup)
+// }
+// }
+// function o(t) {
+// !u && t ? ($("#" + t).remove(), delete l[t]) : ($("#pupup-all-view").empty(), l = {})
+// }
+// function a(t) {
+// u = t
+// }
+// var s, l = {},
+// u = !0;
+// return {
+// isOnly: a,
+// init: t,
+// show: i,
+// hide: o,
+// close: o
+// }
+// }(), mars3d.tooltip = function() {
+// function t(t) {
+// r = t;
+// var i = '<div id="tooltip-view" class="cesium-popup" style="display:none;"> <div class="cesium-popup-content-wrapper cesium-popup-background"> <div id="tooltip-content" class="cesium-popup-content cesium-popup-color"></div> </div> <div class="cesium-popup-tip-container"><div class="cesium-popup-tip cesium-popup-background"></div></div></div> ';
+// $("#" + r._container.id).append(i);
+// var n = new Cesium.ScreenSpaceEventHandler(r.scene.canvas);
+// n.setInputAction(e, Cesium.ScreenSpaceEventType.MOUSE_MOVE)
+// }
+// function e(t) {
+// var e = t.endPosition,
+// a = r.scene.pick(e);
+// if (a && Cesium.defined(a.id)) {
+// var s = a.id;
+// if (!s.tooltip) return void n();
+// if (s.billboard || s.label || s.point) {
+// if (o == s) return;
+// o = s
+// }
+// var l = mars3d.latlng.getCurrentMousePosition(r.scene, e);
+// i(s, l, e)
+// } else n()
+// }
+// function i(t, e, i) {
+// if (null != t && null != t.tooltip) {
+// if (null == i && (i = Cesium.SceneTransforms.wgs84ToWindowCoordinates(r.scene, e)), null == i) return void n();
+// var o, a = $("#tooltip-view");
+// o = "object" == typeof t.tooltip ? t.tooltip.html : t.tooltip, $("#tooltip-content").html(o), a.show();
+// var s = i.x - a.width() / 2,
+// l = i.y - a.height(),
+// u = t.tooltip;
+// u && "object" == typeof u && u.anchor && (s += u.anchor[0], l += u.anchor[1]), a.css("transform", "translate3d(" + s + "px," + l + "px, 0)")
+// }
+// }
+// function n() {
+// $("#tooltip-content").empty(), $("#tooltip-view").hide(), o = null
+// }
+// var r, o;
+// return {
+// init: t,
+// show: i,
+// hide: n,
+// close: n
+// }
+// }(), mars3d.geocoder = function() {
+// function t(t, i) {
+// o = t, l = i.citycode || "", $(".cesium-geocoder-input").attr("placeholder", "输入地名、坐标后按回车键查询"), a = o.geocoder.viewModel, a._searchCommand = Cesium.createCommand(function() {
+// n(), a.isSearchInProgress ? e() : r()
+// })
+// }
+// function e() {
+// a._isSearchInProgress = !1, Cesium.defined(a._geocodeInProgress) && (a._geocodeInProgress.cancel = !0, a._geocodeInProgress = void 0)
+// }
+// function i(t) {
+// a._scene.camera.flyTo({
+// destination: t,
+// complete: function() {
+// a._complete.raiseEvent()
+// },
+// duration: a._flightDuration,
+// endTransform: Cesium.Matrix4.IDENTITY
+// })
+// }
+// function n() {
+// if (Cesium.defined(a.entities)) for (var t = 0; t < a.entities.length; t++) o.entities.remove(a.entities[t]);
+// a.entities = []
+// }
+// function r() {
+// var t = a.searchText;
+// if (!/^\s*$/.test(t)) {
+// var e = t.match(/[^\s,\n]+/g);
+// if (2 === e.length || 3 === e.length) {
+// var r = +e[0],
+// s = +e[1],
+// u = 3 === e.length ? +e[2] : 300;
+// if (!isNaN(r) && !isNaN(s) && !isNaN(u)) return void i(Cesium.Cartesian3.fromDegrees(r, s, u))
+// }
+// a._isSearchInProgress = !0;
+// var c = "http://restapi.amap.com/v3/place/text?city=" + l + "&citylimit=true&key=57f8ebe12797a73fc5b87f5d4ef859b1&keywords=" + t,
+// h = Cesium.loadJson(c),
+// d = a._geocodeInProgress = Cesium.when(h, function(e) {
+// if (n(), a._searchText = t, !d.cancel) {
+// if (a._isSearchInProgress = !1, 0 == e.status) return void alert("请求失败(" + e.infocode + "):" + e.info);
+// if (0 === e.pois.length) return void alert("未查询到相关数据!");
+// for (var i, r = 0; r < e.pois.length; r++) {
+// var s = e.pois[r],
+// l = "<div>名称:" + s.name + "</div><div>地址:" + s.address + "</div><div>区域:" + s.pname + s.cityname + s.adname + "</div><div>类别:" + s.type + "</div>";
+// i = s.location.split(","), i = pointconvert.gcj2wgs(i);
+// var u = mars3d.map.point2map({
+// x: i[0],
+// y: i[1]
+// }),
+// c = o.entities.add({
+// id: r + "." + s.name,
+// position: Cesium.Cartesian3.fromDegrees(u.x, u.y),
+// point: {
+// color: new Cesium.Color.fromCssColorString("#3388ff"),
+// pixelSize: 10,
+// outlineColor: new Cesium.Color.fromCssColorString("#ffffff"),
+// outlineWidth: 2,
+// heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND
+// },
+// label: {
+// text: s.name,
+// font: "16px Helvetica",
+// style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+// fillColor: Cesium.Color.AZURE,
+// outlineColor: Cesium.Color.BLACK,
+// outlineWidth: 2,
+// horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
+// verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
+// pixelOffset: new Cesium.Cartesian2(0, (-10)),
+// heightReference: Cesium.HeightReference.CLAMP_TO_GROUND
+// },
+// data: s,
+// tooltip: {
+// html: l,
+// anchor: [0, -20]
+// }
+// });
+// a.entities.push(c)
+// }
+// o.flyTo(a.entities, {
+// duration: 3
+// })
+// }
+// }, function() {
+// return d.cancel ? void n() : (a._isSearchInProgress = !1, void(a.searchText = a._searchText + " (error)"))
+// })
+// }
+// }
+// var o, a, s = "cesium地图 查询POI工具栏",
+// l = "";
+// return {
+// name: s,
+// init: t
+// }
+// }(), mars3d.map = function() {
+// function t() {
+// return b
+// }
+// function e(t, e, i) {
+// w = t, C = e;
+// var r = {
+// animation: !1,
+// timeline: !1,
+// fullscreenButton: !0,
+// vrButton: !1,
+// geocoder: !1,
+// sceneModePicker: !1,
+// homeButton: !0,
+// navigationHelpButton: !0,
+// navigationInstructionsInitiallyVisible: !1,
+// infoBox: !0,
+// selectionIndicator: !1,
+// baseLayerPicker: !1
+// };
+// null == i && (i = {});
+// for (var o in r) i.hasOwnProperty(o) || (i[o] = r[o]);
+// Cesium.BingMapsApi.defaultKey = "AtkX3zhnRe5fyGuLU30uZw8r3sxdBDnpQly7KfFTCB2rGlDgXBG3yr-qEiQEicEc", C.crs = C.crs || "3857", x = C.crs;
+// var a = !1,
+// l = C.controls;
+// if (l) for (var o = 0; o < l.length; o++) {
+// var u = l[o];
+// if (!u.hasOwnProperty("visible") || u.visible) switch (u.type) {
+// case "geocoder":
+// i.geocoder = !0;
+// break;
+// case "mousezoom":
+// a = !0
+// }
+// }
+// C.terrain && C.terrain.visible && (i.terrainProvider = n()), null == i.imageryProvider && (i.imageryProvider = Cesium.createTileMapServiceImageryProvider({
+// url: Cesium.buildModuleUrl("Assets/Textures/NaturalEarthII")
+// })), b = new Cesium.Viewer(t, i), b.cesiumWidget.creditContainer.style.display = "none";
+// var f = C.basemaps;
+// if (f && f.length > 0) {
+// for (var m = b.imageryLayers, g = m.length, o = 0; o < g; o++) {
+// var v = m.get(0);
+// m.remove(v, !0)
+// }
+// for (var o = 0; o < f.length; o++) {
+// var u = f[o];
+// u.visible && u.crs && (x = u.crs), mars3d.layer.createLayer(u, b, e.serverURL, i.layerToMap)
+// }
+// }
+// b.homeButton && b.homeButton.viewModel.command.beforeExecute.addEventListener(function(t) {
+// s(), t.cancel = !0
+// }), s(null, {
+// duration: 0
+// });
+// var _;
+// b.scene.morphStart.addEventListener(function(t) {
+// _ = mars3d.latlng.getCameraView(b)
+// }), b.scene.morphComplete.addEventListener(function(t) {
+// setTimeout(function() {
+// s(_)
+// }, 100)
+// });
+// var f = C.operationallayers;
+// if (f && f.length > 0) for (var o = 0; o < f.length; o++) {
+// var u = f[o];
+// mars3d.layer.createLayer(u, b, e.serverURL, i.layerToMap)
+// }
+// var l = C.controls;
+// if (l) for (var o = 0; o < l.length; o++) {
+// var u = l[o];
+// if (!u.hasOwnProperty("visible") || u.visible) switch (u.type) {
+// case "location":
+// c(u);
+// break;
+// case "navigation":
+// d(u);
+// break;
+// case "geocoder":
+// mars3d.geocoder.init(b, u);
+// break;
+// case "msgbar":
+// h(u)
+// }
+// }
+// mars3d.popup.init(b), mars3d.tooltip.init(b);
+// var y = b.scene;
+// if (y.globe.baseColor = Cesium.Color.SILVER, C.style && (y.globe.depthTestAgainstTerrain = C.style.testTerrain, y.globe.enableLighting = C.style.lighting, y.skyAtmosphere && (y.skyAtmosphere.show = C.style.atmosphere), y.fog && (y.fog.enabled = C.style.fog)), y.screenSpaceCameraController.maximumZoomDistance = C.maxzoom || 2e7, y.screenSpaceCameraController.minimumZoomDistance = C.minzoom || 1, a && p()) {
+// $("#" + w).append('<div class="cesium-mousezoom"><div class="zoomimg"/></div>');
+// var E = new Cesium.ScreenSpaceEventHandler(y.canvas);
+// E.setInputAction(function(t) {
+// $(".cesium-mousezoom").addClass("cesium-mousezoom-visible"), setTimeout(function() {
+// $(".cesium-mousezoom").removeClass("cesium-mousezoom-visible")
+// }, 200)
+// }, Cesium.ScreenSpaceEventType.WHEEL), E.setInputAction(function(t) {
+// $(".cesium-mousezoom").css({
+// top: t.endPosition.y + "px",
+// left: t.endPosition.x + "px"
+// })
+// }, Cesium.ScreenSpaceEventType.MOUSE_MOVE)
+// }
+// if (b.navigationHelpButton) {
+// var k = $(".cesium-click-navigation-help .cesium-navigation-help-pan");
+// k.html("平移视图"), k.next().html("左键点击+拖动");
+// var L = $(".cesium-click-navigation-help .cesium-navigation-help-zoom");
+// L.html("缩放视图"), L.next().html("右键点击+拖动,"), L.next().next().html("或鼠标滚轮缩放");
+// var P = $(".cesium-click-navigation-help .cesium-navigation-help-rotate");
+// P.html("旋转视图"), P.next().html("中键点击+拖动,"), P.next().next().html("或按Ctrl键+左右键点击+拖动");
+// var k = $(".cesium-touch-navigation-help .cesium-navigation-help-pan");
+// k.html("平移视图"), k.next().html("一个手指拖动");
+// var L = $(".cesium-touch-navigation-help .cesium-navigation-help-zoom");
+// L.html("缩放视图"), L.next().html("两个手指拖动");
+// var P = $(".cesium-touch-navigation-help .cesium-navigation-help-rotate");
+// P.html("倾斜角度"), P.next().html("两指拖曳,同方向");
+// var D = $(".cesium-touch-navigation-help .cesium-navigation-help-tilt");
+// D.html("旋转视图"), D.next().html("两手指拖动,方向相反")
+// }
+// return b
+// }
+// function i(t, e) {
+// null == e && (e = "name");
+// var i = C.basemaps;
+// if (i && i.length > 0) for (var n = 0; n < i.length; n++) {
+// var r = i[n];
+// if (null != r && r[e] == t) return r._layer
+// }
+// if (i = C.operationallayers, i && i.length > 0) for (var n = 0; n < i.length; n++) {
+// var r = i[n];
+// if (null != r && r[e] == t) return r._layer
+// }
+// return null
+// }
+// function n() {
+// if (null == E) {
+// var t = C.terrain || {};
+// t.hasOwnProperty("requestWaterMask") || (t.requestWaterMask = !0), t.hasOwnProperty("requestVertexNormals") || (t.requestVertexNormals = !0), t.url ? (C.serverURL && (t.url = t.url.replace("$serverURL$", C.serverURL)), t.url = t.url.replace("$hostname$", location.hostname).replace("$host$", location.host)) : t.url = "http://assets.agi.com/stk-terrain/world", E = new Cesium.CesiumTerrainProvider(t)
+// }
+// return E
+// }
+// function r() {
+// return null != E && b.terrainProvider == E
+// }
+// function o(t) {
+// t ? b.terrainProvider = n() : b.terrainProvider = new Cesium.EllipsoidTerrainProvider({
+// ellipsoid: Cesium.Ellipsoid.WGS84
+// })
+// }
+// function a(t) {
+// return "number" == typeof t && t.constructor == Number
+// }
+// function s(t, e, i) {
+// if (null == e ? e = {} : a(e) && (e = {
+// duration: e
+// }), i && (e.complete = i), null == t && (e.isWgs84 = !0, t = C.extent || C.center), t.xmin && t.xmax && t.ymin && t.ymax) {
+// var n = t.xmin,
+// r = t.xmax,
+// o = t.ymin,
+// s = t.ymax;
+// if (e.isWgs84) {
+// var l = mars3d.map.point2map({
+// x: n,
+// y: o
+// });
+// n = l.x, o = l.y;
+// var u = mars3d.map.point2map({
+// x: r,
+// y: s
+// });
+// r = u.x, s = u.y
+// }
+// var c = Cesium.Rectangle.fromDegrees(n, o, r, s);
+// b.camera.flyTo({
+// destination: c,
+// duration: e.duration,
+// complete: e.complete
+// })
+// } else {
+// e.isWgs84 && (t = mars3d.map.point2map(t));
+// var h = e.minz || 2500;
+// b.camera.positionCartographic.height < h && (h = b.camera.positionCartographic.height), null != t.z && 0 != t.z && (h = t.z), b.camera.flyTo({
+// destination: Cesium.Cartesian3.fromDegrees(Number(t.x), Number(t.y), Number(h)),
+// orientation: {
+// heading: Cesium.Math.toRadians(t.heading || 0),
+// pitch: Cesium.Math.toRadians(t.pitch || -90),
+// roll: Cesium.Math.toRadians(t.roll || 0)
+// },
+// duration: e.duration,
+// complete: e.complete
+// })
+// }
+// }
+// function l() {
+// return L
+// }
+// function u(t, e) {
+// var i = e || mars3d.latlng.getCameraView(b);
+// L = !0, b.camera.setView({
+// destination: Cesium.Cartesian3.fromDegrees(-85.16, 13.71, 23e6)
+// }), b.camera.flyTo({
+// destination: Cesium.Cartesian3.fromDegrees(Number(i.x), Number(i.y), 23e6),
+// duration: 2,
+// easingFunction: Cesium.EasingFunction.LINEAR_NONE,
+// complete: function() {
+// var e = 1.2 * (i.z || 9e4) + 8e3;
+// e > 23e6 && (e = 23e6), b.camera.flyTo({
+// destination: Cesium.Cartesian3.fromDegrees(Number(i.x), Number(i.y), e),
+// complete: function() {
+// s(i, {
+// duration: 2,
+// complete: function() {
+// L = !1, t && t()
+// }
+// })
+// }
+// })
+// }
+// })
+// }
+// function c(t) {
+// document.getElementById("location_mars_jwd") || $("#" + w).prepend('<div id="location_mars_jwd" class="location-bar no-print" ></div>'), t.style ? $("#location_mars_jwd").css(t.style) : $("#location_mars_jwd").css({
+// left: "5px",
+// bottom: "2px"
+// });
+// var e = new Cesium.ScreenSpaceEventHandler(b.scene.canvas);
+// e.setInputAction(function(e) {
+// var i = mars3d.latlng.getCurrentMousePosition(b.scene, e.endPosition);
+// if (i) {
+// var n = Cesium.Cartographic.fromCartesian(i),
+// r = Cesium.Math.toDegrees(n.longitude),
+// o = Cesium.Math.toDegrees(n.latitude),
+// a = n.height;
+// if (t.coordinate && "wgs" == t.coordinate) {
+// var s = mars3d.map.point2wgs({
+// x: r,
+// y: o
+// });
+// r = s.x, o = s.y
+// }
+// var l = "经度:" + r.toFixed(6) + " 纬度:" + o.toFixed(6);
+// a > 0 && (l += " 高程:" + a.toFixed(1) + "米"), $("#location_mars_jwd").html(l)
+// } else $("#location_mars_jwd").html("")
+// }, Cesium.ScreenSpaceEventType.MOUSE_MOVE)
+// }
+// function h(t) {
+// function e() {
+// var e = mars3d.latlng.getCenter(b);
+// if (e) {
+// var i = !1;
+// for (var n in t.data) {
+// var r = t.data[n];
+// if (e.x >= r.xmin && e.x <= r.xmax && e.y >= r.ymin && e.y <= r.ymax) {
+// $("#mars_msgbar").html(r.msg), i = !0;
+// break
+// }
+// }
+// }
+// i || $("#mars_msgbar").html("")
+// }
+// null != t.data && 0 != t.data.length && (document.getElementById("mars_msgbar") || $("#" + w).prepend('<div id="mars_msgbar" class="location-bar no-print" ></div>'), t.style ? $("#mars_msgbar").css(t.style) : $("#mars_msgbar").css({
+// right: "30px",
+// bottom: "1px"
+// }), b.scene.camera.moveEnd.addEventListener(e))
+// }
+// function d(t) {
+// b.extend(Cesium.viewerCesiumNavigationMixin, {
+// defaultResetView: Cesium.Rectangle.fromDegrees(110, 20, 120, 30),
+// enableZoomControls: !0
+// }), $(".distance-legend").css("left", "-10px"), $(".distance-legend").css("bottom", "25px"), $(".distance-legend").css("border", "none"), $(".distance-legend").css("background", "rgba(0, 0, 0, 0)"), $(".navigation-controls").hide(), t.style ? $(".compass").css(t.style) : $(".compass").css({
+// top: "10px",
+// left: "10px"
+// })
+// }
+// function p() {
+// var t = navigator.userAgent.toLowerCase(),
+// e = "ipad" == t.match(/ipad/i),
+// i = "iphone" == t.match(/iphone/i),
+// n = "midp" == t.match(/midp/i),
+// r = "rv:1.2.3.4" == t.match(/rv:1.2.3.4/i),
+// o = "ucweb" == t.match(/ucweb/i),
+// a = "android" == t.match(/android/i),
+// s = "windows ce" == t.match(/windows ce/i),
+// l = "windows mobile" == t.match(/windows mobile/i);
+// return !(e || i || n || r || o || a || s || l)
+// }
+// function f() {
+// return x
+// }
+// function m(t) {
+// if ("gcj" == x) {
+// var e = pointconvert.wgs2gcj([t.x, t.y]),
+// i = v(t);
+// return i.x = e[0], i.y = e[1], i
+// }
+// return t
+// }
+// function g(t) {
+// if ("gcj" == x) {
+// var e = pointconvert.gcj2wgs([t.x, t.y]),
+// i = v(t);
+// return i.x = e[0], i.y = e[1], i
+// }
+// return t
+// }
+// function v(t, e) {
+// if (null == t || "object" != typeof t) return t;
+// if (t.constructor != Object && t.constructor != Array) return t;
+// if (t.constructor == Date || t.constructor == RegExp || t.constructor == Function || t.constructor == String || t.constructor == Number || t.constructor == Boolean) return new t.constructor(t);
+// e = e || new t.constructor;
+// for (var i in t) e[i] = "undefined" == typeof e[i] ? v(t[i], null) : e[i];
+// return e
+// }
+// function _(t, i, n) {
+// if (null == i) return void console.log("配置信息不能为空!");
+// var r = e(t.id, i, t),
+// o = {};
+// return o.config = i, r.gisdata = o, t.success && t.success(r, o, n), r
+// }
+// function y() {
+// var t = haoutil.system.getExplorerInfo();
+// if ("IE" == t.type && t.version < 11) return !1;
+// try {
+// var e, i = document.createElement("canvas"),
+// n = "undefined" != typeof WebGL2RenderingContext;
+// if (n && (e = i.getContext("webgl2") || i.getContext("experimental-webgl2") || void 0), null == e && (e = i.getContext("webgl") || i.getContext("experimental-webgl") || void 0), null == e) return !1
+// } catch (r) {
+// return !1
+// }
+// return !0
+// }
+// var b, w, C, x, E, k = "cesium地图 操作类",
+// L = !1;
+// return {
+// name: k,
+// init: e,
+// getMap: t,
+// getLayer: i,
+// centerAt: s,
+// openFlyAnimation: u,
+// isFlyAnimation: l,
+// hasTerrain: r,
+// updateTerrainProvider: o,
+// getCrs: f,
+// point2map: m,
+// point2wgs: g,
+// createMapByData: _,
+// webglreport: y
+// }
+// }(), mars3d.createMap = function(t) {
+// return t.url ? ($.ajax({
+// type: "get",
+// contentType: "application/json; charset=utf-8",
+// dataType: "json",
+// url: t.url,
+// timeout: 0,
+// success: function(e) {
+// var i = e.map3d;
+// e.serverURL && (i.serverURL = e.serverURL), t.serverURL && (i.serverURL = t.serverURL), mars3d.map.createMapByData(t, i, e)
+// },
+// error: function(e, i, n) {
+// console.log("Json文件" + t.url + "加载失败!"), haoutil.alert("Json文件" + t.url + "加载失败!")
+// }
+// }), null) : (t.serverURL && t.data && (t.data.serverURL = t.serverURL), mars3d.map.createMapByData(t, t.data))
+// }, mars3d.drawing = {}, mars3d.drawing.utils = {
+// createDragger: function(t, e) {
+// var i;
+// if (e.dragger) i = e.dragger;
+// else {
+// var n = Cesium.defaultValue(e.position, Cesium.Cartesian3.ZERO),
+// r = Cesium.defaultValue(e.dragIcon, "dragIcon.png");
+// i = t.entities.add({
+// position: n,
+// billboard: {
+// scale: 1,
+// heightReference: e.heightReference ? Cesium.HeightReference.CLAMP_TO_GROUND : Cesium.HeightReference.NONE,
+// image: r
+// }
+// })
+// }
+// return i._isDragger = !0, i.onDrag = Cesium.defaultValue(e.onDrag, null), i.horizontal = Cesium.defaultValue(e.horizontal, !0), i.vertical = Cesium.defaultValue(e.vertical, !1), i.verticalCtrl = Cesium.defaultValue(e.vertical, !1), i
+// },
+// getCoordinates: function(t) {
+// for (var e = [], i = 0; i < t.length; i++) {
+// var n = Cesium.Cartographic.fromCartesian(t[i]),
+// r = Number(Cesium.Math.toDegrees(n.longitude).toFixed(6)),
+// o = Number(Cesium.Math.toDegrees(n.latitude).toFixed(6)),
+// a = Number(n.height.toFixed(1));
+// e.push([r, o, a])
+// }
+// return e
+// },
+// getMaxHeightForPositions: function(t, e) {
+// null == e && (e = 0);
+// var i = e;
+// if (null == t || 0 == t.length) return i;
+// for (var n = (t[0], 0); n < t.length; n++) {
+// var r = Cesium.Cartographic.fromCartesian(t[n]);
+// r.height > i && (i = r.height)
+// }
+// return i
+// },
+// getPositionsWithHeight: function(t, e) {
+// if (t instanceof Array) {
+// for (var i = [], n = 0; n < t.length; n++) {
+// var r = Cesium.Ellipsoid.WGS84.cartesianToCartographic(t[n]),
+// o = {
+// lon: Cesium.Math.toDegrees(r.longitude),
+// lat: Cesium.Math.toDegrees(r.latitude),
+// hgt: Math.ceil(Number(r.height) + Number(e))
+// },
+// a = [Number(o.lon), Number(o.lat), Number(o.hgt)];
+// i = i.concat(a)
+// }
+// return Cesium.Cartesian3.fromDegreesArrayHeights(i)
+// }
+// var r = Cesium.Ellipsoid.WGS84.cartesianToCartographic(t),
+// s = Number(Cesium.Math.toDegrees(r.longitude).toFixed(6)),
+// l = Number(Cesium.Math.toDegrees(r.latitude).toFixed(6));
+// return Cesium.Cartesian3.fromDegrees(s, l, Number(r.height) + Number(e))
+// },
+// getZHeightPosition: function(t, e) {
+// var i = Cesium.Cartographic.fromCartesian(t),
+// n = Number(Cesium.Math.toDegrees(i.longitude)),
+// r = Number(Cesium.Math.toDegrees(i.latitude)),
+// o = Number(i.height.toFixed(2)),
+// a = Cesium.Cartographic.fromCartesian(e),
+// s = Number(Cesium.Math.toDegrees(a.longitude)),
+// l = Number(Cesium.Math.toDegrees(a.latitude)),
+// u = Number(a.height.toFixed(2));
+// return o > u ? Cesium.Cartesian3.fromDegrees(s, l, o) : Cesium.Cartesian3.fromDegrees(n, r, u)
+// },
+// getHDistance: function(t, e) {
+// var i = this.getZHeightPosition(t, e),
+// n = Cesium.Cartographic.fromCartesian(e),
+// r = Cesium.Cartographic.fromCartesian(i),
+// o = Cesium.Cartesian3.distance(t, i);
+// return Math.abs(Number(r.height) - Number(n.height)) < .01 && (o = Cesium.Cartesian3.distance(e, i)), o
+// },
+// getMidPosition: function(t, e) {
+// var i = Cesium.Cartographic.fromCartesian(t),
+// n = Number(Cesium.Math.toDegrees(i.longitude)),
+// r = Number(Cesium.Math.toDegrees(i.latitude)),
+// o = Number(i.height.toFixed(2)),
+// a = Cesium.Cartographic.fromCartesian(e),
+// s = Number(Cesium.Math.toDegrees(a.longitude)),
+// l = Number(Cesium.Math.toDegrees(a.latitude)),
+// u = Number(a.height.toFixed(2)),
+// c = (n + s) / 2,
+// h = (r + l) / 2,
+// d = (o + u) / 2;
+// return Cesium.Cartesian3.fromDegrees(c, h, d)
+// },
+// getPositionsFromJson: function(t) {
+// if (!t) return null;
+// switch (t.type) {
+// case "Point":
+// return this.lonLatToCartesian(t.coordinates[0]);
+// case "LineString":
+// return this.lonLatsToCartesians(t.coordinates);
+// case "Polygon":
+// return this.lonLatsToCartesians(t.coordinates[0]);
+// case "MultiPoint":
+// return this.lonLatsToCartesians(t.coordinates);
+// default:
+// throw new Error("Invalid GeoJSON object.")
+// }
+// },
+// lonLatToCartesian: function(t) {
+// return Cesium.Cartesian3.fromDegrees(Number(t[0]), Number(t[1]), Number(t[2] || 0))
+// },
+// lonLatsToCartesians: function(t) {
+// for (var e = [], i = 0; i < t.length; i++) {
+// var n = [Number(t[i][0]), Number(t[i][1]), Number(t[i][2] || 0)];
+// e = e.concat(n)
+// }
+// return Cesium.Cartesian3.fromDegreesArrayHeights(e)
+// },
+// normalizeJsonData: function(t) {
+// var e = {};
+// e.type = "FeatureCollection", e.features = [];
+// var i;
+// if (i = "string" == typeof t ? JSON.parse(t) : t, i instanceof Array) {
+// for (var n = 0; n < i.length; n++) {
+// var r = {
+// type: "Feature"
+// };
+// r.properties = i[n].properties || i[n].PROPERTIES, r.geometry = i[n].geometry || i[n].GEOMETRY, e.features.push(r)
+// }
+// return JSON.stringify(e)
+// }
+// if (t.features && t.features instanceof Array) return t
+// },
+// normalizeBusinessData: function(t) {
+// var e = {};
+// try {
+// e = JSON.parse(t)
+// } catch (i) {
+// return void haoutil.alert(i.name + ": " + i.message + " \n请确认json文件格式正确!!!")
+// }
+// for (var n = e.features, r = [], o = 0; o < n.length; o++) {
+// var a = n[o],
+// s = {
+// dataID: a.properties.attr.id,
+// dataType: a.properties.attr.type,
+// properties: a.properties,
+// geometry: a.geometry
+// };
+// r.push(s)
+// }
+// return JSON.stringify(r)
+// },
+// terrainPolyline: function(t) {
+// var e = t.viewer,
+// i = t.positions;
+// if (null == i || 0 == i.length) return void(t.calback && t.calback(i));
+// for (var n = Cesium.PolylinePipeline.generateArc({
+// positions: i,
+// granularity: t.granularity || 1e-5
+// }), r = [], o = e.scene.globe.ellipsoid, a = 0; a < n.length; a += 3) {
+// var s = Cesium.Cartesian3.unpack(n, a);
+// r.push(o.cartesianToCartographic(s))
+// }
+// var l = Cesium.Cartographic.fromCartesian(i[0]).height;
+// Cesium.when(Cesium.sampleTerrainMostDetailed(e.terrainProvider, r), function(e) {
+// for (var n = !1, r = t.offset || 2, a = 0; a < e.length; ++a) null == e[a].height ? n = !0 : l = e[a].height || 0, e[a].height = r + (e[a].height || l);
+// var s = o.cartographicArrayToCartesianArray(e);
+// t.calback ? t.calback(s, n) : i.setValue && i.setValue(s)
+// })
+// }
+// }, mars3d.drawing.DynamicProperty = function(t,type) {
+// this._type = type,this._value = void 0, this._hasClone = !1, this._hasEquals = !1, this._definitionChanged = new Cesium.Event, this._constant = !1, this.setValue(t)
+// }, Cesium.defineProperties(mars3d.drawing.DynamicProperty.prototype, {
+// isConstant: {
+// get: function() {
+// return this._constant
+// },
+// set: function(t) {
+// this._constant !== t && (this._constant = t, this._definitionChanged.raiseEvent(this))
+// }
+// },
+// definitionChanged: {
+// get: function() {
+// return this._definitionChanged
+// }
+// }
+// }), mars3d.drawing.DynamicProperty.prototype.getValue = function(t, e) {
+// if(this._type){
+// return {positions:this._value}
+// }
+// else{
+// return this._hasClone ? this._value.clone(e) : this._value
+// }
+// }, mars3d.drawing.DynamicProperty.prototype.setValue = function(t) {
+// var e = this._value;
+// if (e !== t) {
+// var i = Cesium.defined(t),
+// n = i && "function" == typeof t.clone,
+// r = i && "function" == typeof t.equals;
+// this._hasClone = n, this._hasEquals = r;
+// var o = !r || !t.equals(e);
+// o && (this._value = n ? t.clone() : t, this._definitionChanged.raiseEvent(this))
+// }
+// }, mars3d.drawing.DynamicProperty.prototype.equals = function(t) {
+// return this === t || t instanceof mars3d.drawing.DynamicProperty && (!this._hasEquals && this._value === t._value || this._hasEquals && this._value.equals(t._value))
+// }, mars3d.drawing.DynamicProperty.prototype.valueOf = function(t) {
+// return this._value
+// }, mars3d.drawing.DynamicProperty.prototype.toString = function(t) {
+// return String(this._value)
+// }, mars3d.drawing.EllipseEditor = function(t, e, i) {
+// this.viewer = t, this.entity = e, this.options = i, this.draggers = [], this.heightDraggers = [], this.initDraggers()
+// }, mars3d.drawing.EllipseEditor.prototype.initDraggers = function() {
+// var t = this,
+// e = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: this.options.dragIcon,
+// position: this.entity.position._value,
+// onDrag: function(e, i) {
+// var n = new Cesium.Cartesian3;
+// Cesium.Cartesian3.subtract(i, t.entity.position._value, n);
+// var r = Cesium.Cartographic.fromCartesian(i),
+// o = Number(r.height).toFixed(2);
+// t.entity.ellipse.height = new Cesium.ConstantProperty(r.height), t.entity.attribute.style.height = o, t.entity.position._value = i;
+// var a = new Cesium.Cartesian3;
+// Cesium.Cartesian3.add(e.majorDragger.position._value, n, a), e.majorDragger.position = new Cesium.ConstantProperty(a), Cesium.Cartesian3.add(e.minorDragger.position._value, n, a), e.minorDragger.position = new Cesium.ConstantProperty(a), void 0 != t.entity.attribute.style.extrudedHeight && t.updateHeightDraggers(), t.entity.changeEditing()
+// }
+// });
+// this.draggers.push(e);
+// var i = Cesium.EllipseGeometryLibrary.computeEllipsePositions({
+// center: this.entity.position._value,
+// semiMinorAxis: this.entity.ellipse.semiMinorAxis._value,
+// semiMajorAxis: this.entity.ellipse.semiMajorAxis._value,
+// rotation: Cesium.Math.toRadians(Number(this.entity.attribute.style.rotation || 0)),
+// granularity: 2
+// }, !0, !1),
+// n = new Cesium.Cartesian3(i.positions[0], i.positions[1], i.positions[2]),
+// r = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: this.options.dragIcon,
+// position: n,
+// onDrag: function(e, i) {
+// var n = Cesium.Cartesian3.distance(t.entity.position._value, i);
+// t.entity.ellipse.semiMajorAxis = new Cesium.ConstantProperty(n), t.entity.attribute.style.semiMajorAxis = Number(n).toFixed(2), void 0 != t.entity.attribute.style.extrudedHeight && t.updateHeightDraggers(), t.entity.changeEditing()
+// }
+// });
+// e.majorDragger = r, this.draggers.push(r);
+// var o = new Cesium.Cartesian3(i.positions[3], i.positions[4], i.positions[5]),
+// a = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: this.options.dragIcon,
+// position: o,
+// onDrag: function(e, i) {
+// var n = Cesium.Cartesian3.distance(t.entity.position._value, i);
+// t.entity.ellipse.semiMinorAxis = new Cesium.ConstantProperty(n), t.entity.attribute.style.semiMinorAxis = Number(n).toFixed(2), void 0 != t.entity.attribute.style.extrudedHeight && t.updateHeightDraggers(), t.entity.changeEditing()
+// }
+// });
+// e.minorDragger = a, this.draggers.push(a), void 0 != this.entity.attribute.style.extrudedHeight && this.initHeightDraggers()
+// }, mars3d.drawing.EllipseEditor.prototype.initHeightDraggers = function() {
+// var t = this,
+// e = Number(this.entity.attribute.style.extrudedHeight) - Number(this.entity.attribute.style.height),
+// i = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: this.options.dragIcon,
+// position: mars3d.drawing.utils.getPositionsWithHeight(this.entity.position._value, e),
+// onDrag: function(i, n) {
+// var r = new Cesium.Cartesian3;
+// Cesium.Cartesian3.subtract(n, t.entity.position._value, r);
+// var o = Cesium.Cartographic.fromCartesian(n),
+// a = Number(o.height).toFixed(2);
+// t.entity.position._value = n, t.entity.ellipse.extrudedHeight = new Cesium.ConstantProperty(Number(a) + Number(e)), t.entity.ellipse.height = new Cesium.ConstantProperty(o.height), t.entity.attribute.style.extrudedHeight = Number(a) + Number(e), t.entity.attribute.style.height = a, t.updateDraggers(), t.entity.changeEditing()
+// }
+// });
+// this.heightDraggers.push(i);
+// var n = Cesium.EllipseGeometryLibrary.computeEllipsePositions({
+// center: this.entity.position._value,
+// semiMinorAxis: this.entity.ellipse.semiMinorAxis._value,
+// semiMajorAxis: this.entity.ellipse.semiMajorAxis._value,
+// rotation: Cesium.Math.toRadians(Number(this.entity.attribute.style.rotation || 0)),
+// granularity: 2
+// }, !0, !1),
+// r = new Cesium.Cartesian3(n.positions[0], n.positions[1], n.positions[2]),
+// o = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: this.options.dragIcon,
+// position: mars3d.drawing.utils.getPositionsWithHeight(r, e),
+// onDrag: function(e, i) {
+// var n = Cesium.Cartographic.fromCartesian(i);
+// t.entity.ellipse.extrudedHeight = new Cesium.ConstantProperty(n.height), t.entity.attribute.style.extrudedHeight = Number(n.height).toFixed(2), t.updateHeightDraggers(), t.entity.changeEditing()
+// },
+// vertical: !0,
+// horizontal: !1
+// });
+// this.heightDraggers.push(o);
+// var a = new Cesium.Cartesian3(n.positions[3], n.positions[4], n.positions[5]),
+// s = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: this.options.dragIcon,
+// position: mars3d.drawing.utils.getPositionsWithHeight(a, e),
+// onDrag: function(e, i) {
+// var n = Cesium.Cartographic.fromCartesian(i);
+// t.entity.ellipse.extrudedHeight = new Cesium.ConstantProperty(n.height), t.entity.attribute.style.extrudedHeight = Number(n.height).toFixed(2), t.updateHeightDraggers(), t.entity.changeEditing()
+// },
+// vertical: !0,
+// horizontal: !1
+// });
+// this.heightDraggers.push(s)
+// }, mars3d.drawing.EllipseEditor.prototype.updateDraggers = function() {
+// this.destroy(), this.initDraggers()
+// }, mars3d.drawing.EllipseEditor.prototype.updateHeightDraggers = function() {
+// for (i = 0; i < this.heightDraggers.length; i++) this.viewer.entities.remove(this.heightDraggers[i]);
+// this.heightDraggers = [], this.initHeightDraggers()
+// }, mars3d.drawing.EllipseEditor.prototype.destroy = function() {
+// var t = 0;
+// for (t = 0; t < this.draggers.length; t++) this.viewer.entities.remove(this.draggers[t]);
+// if (this.draggers = [], void 0 != this.entity.attribute.style.extrudedHeight) {
+// for (t = 0; t < this.heightDraggers.length; t++) this.viewer.entities.remove(this.heightDraggers[t]);
+// this.heightDraggers = []
+// }
+// }, mars3d.drawing.EllipsoidEditor = function(t, e, i) {
+// this.viewer = t, this.entity = e, this.options = i, this.draggers = [], this.initDraggers()
+// }, mars3d.drawing.EllipsoidEditor.prototype.initDraggers = function() {
+// var t = this,
+// e = this.entity.position._value,
+// i = Number(this.entity.attribute.style.heightRadii) || 0,
+// n = Cesium.Cartographic.fromCartesian(e);
+// n.height += i;
+// var r = Cesium.Cartesian3.fromRadians(n.longitude, n.latitude, n.height),
+// o = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: this.options.dragIcon,
+// position: r,
+// onDrag: function(e, i) {
+// var n = new Cesium.Cartesian3;
+// Cesium.Cartesian3.subtract(i, t.entity.position._value, n);
+// var r = Cesium.Cartographic.fromCartesian(i),
+// o = Number(t.entity.attribute.style.heightRadii) || 0;
+// r.height -= o;
+// var a = Cesium.Cartesian3.fromRadians(r.longitude, r.latitude, r.height);
+// t.entity.position._value = a, t.entity.changeEditing()
+// }
+// });
+// this.draggers.push(o)
+// }, mars3d.drawing.EllipsoidEditor.prototype.updateDraggers = function() {
+// this.destroy(), this.initDraggers()
+// }, mars3d.drawing.EllipsoidEditor.prototype.destroy = function() {
+// var t = 0;
+// for (t = 0; t < this.draggers.length; t++) this.viewer.entities.remove(this.draggers[t]);
+// this.draggers = []
+// }, mars3d.drawing.ExtrudedPolygonEditor = function(t, e, i) {
+// this.viewer = t, this.entity = e, this.draggers = [], this.heightDraggers = [];
+// var n = this,
+// r = 0,
+// o = e.polygon.hierarchy._value;
+// for (e.polygon.hierarchy.isConstant = !1, r = 0; r < o.length; r++) {
+// var a = o[r];
+// if (void 0 != e.polygon.height) {
+// var s = Cesium.Cartographic.fromCartesian(a);
+// s.height += e.polygon.height._value, a = Cesium.Cartesian3.fromRadians(s.longitude, s.latitude, s.height)
+// }
+// var l = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: i.dragIcon,
+// position: a,
+// onDrag: function(t, i) {
+// t.positions[t.index] = i;
+// for (var r = e.polygon.hierarchy._value, o = r[0], a = 1; a < r.length; a++) {
+// var s = Cesium.Cartographic.fromCartesian(o),
+// l = Cesium.Cartographic.fromCartesian(r[a]);
+// Number(l.height) > Number(s.height) && (o = r[a])
+// }
+// var u = Number(e.polygon.extrudedHeight) - Number(Cesium.Cartographic.fromCartesian(o).height);
+// e.attribute.style.extrudedHeight = Number(u).toFixed(2), n.updateDraggers(), e.changeEditing()
+// }
+// });
+// l.index = r, l.positions = o, this.draggers.push(l)
+// }
+// if (e.polygon.extrudedHeight) for (r = 0; r < o.length; r++) {
+// var u = o[r],
+// c = Cesium.Cartographic.fromCartesian(u);
+// c.height = e.polygon.extrudedHeight._value;
+// var h = Cesium.Cartesian3.fromRadians(c.longitude, c.latitude, c.height),
+// l = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: i.dragIcon,
+// position: h,
+// onDrag: function(t, i) {
+// for (var r = n.entity.polygon.hierarchy._value, o = r[0], a = 1; a < r.length; a++) {
+// var s = Cesium.Cartographic.fromCartesian(o),
+// l = Cesium.Cartographic.fromCartesian(r[a]);
+// Number(l.height) > Number(s.height) && (o = r[a])
+// }
+// var u = Cesium.Cartographic.fromCartesian(i);
+// e.polygon.extrudedHeight = new Cesium.ConstantProperty(Number(u.height));
+// var c = Number(u.height) - Number(Cesium.Cartographic.fromCartesian(o).height);
+// e.attribute.style.extrudedHeight = Number(c).toFixed(2), n.updateDraggers(), e.changeEditing()
+// },
+// vertical: !0,
+// horizontal: !1
+// });
+// l.index = r, this.heightDraggers.push(l)
+// }
+// }, mars3d.drawing.ExtrudedPolygonEditor.prototype.updateDraggers = function() {
+// var t = this.entity.polygon.hierarchy._value,
+// e = this.entity.polygon.extrudedHeight._value,
+// i = 0;
+// void 0 != this.entity.polygon.height && (i = this.entity.polygon.height._value);
+// for (var n = 0; n < this.heightDraggers.length; n++) {
+// var r = t[n],
+// o = this.heightDraggers[n],
+// a = Cesium.Cartographic.fromCartesian(r);
+// a.height = e;
+// var s = Cesium.Cartesian3.fromRadians(a.longitude, a.latitude, a.height);
+// o.position = s;
+// var l = this.draggers[n],
+// u = Cesium.Cartographic.fromCartesian(r);
+// u.height += i, s = Cesium.Cartesian3.fromRadians(u.longitude, u.latitude, u.height), l.position = s
+// }
+// }, mars3d.drawing.ExtrudedPolygonEditor.prototype.destroy = function() {
+// var t = 0;
+// for (t = 0; t < this.draggers.length; t++) this.viewer.entities.remove(this.draggers[t]);
+// for (this.draggers = [], t = 0; t < this.heightDraggers.length; t++) this.viewer.entities.remove(this.heightDraggers[t]);
+// this.heightDraggers = []
+// }, mars3d.drawing.PointEditor = function(t, e, i) {
+// this.viewer = t, this.entity = e, this.draggers = [];
+// mars3d.drawing.utils.createDragger(this.viewer, {
+// dragger: e,
+// onDrag: function(t, i) {
+// var n = new Cesium.Cartesian3;
+// Cesium.Cartesian3.subtract(i, e.position._value, n), e.position._value = i, e.changeEditing()
+// }
+// })
+// }, mars3d.drawing.PointEditor.prototype.updateDraggers = function() {}, mars3d.drawing.PointEditor.prototype.destroy = function() {
+// this.draggers = []
+// }, mars3d.drawing.PolygonEditor = function(t, e, i) {
+// this.viewer = t, this.entity = e, this.draggers = [];
+// var n = e.polygon.hierarchy._value;
+// e.polygon.hierarchy.isConstant = !1;
+// for (var r = 0; r < n.length; r++) {
+// var o = n[r],
+// a = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: i.dragIcon,
+// position: o,
+// heightReference: !e.attribute.style.perPositionHeight,
+// onDrag: function(t, i) {
+// t.positions[t.index] = i, e.changeEditing()
+// }
+// });
+// a.index = r, a.positions = n, this.draggers.push(a)
+// }
+// }, mars3d.drawing.PolygonEditor.prototype.updateDraggers = function() {
+// for (var t = this.entity.polygon.hierarchy._value, e = 0; e < this.draggers.length; e++) {
+// var i = t[e];
+// this.draggers[e].position = i
+// }
+// }, mars3d.drawing.PolygonEditor.prototype.destroy = function() {
+// this.entity.polygon.hierarchy.isConstant = !0;
+// for (var t = 0; t < this.draggers.length; t++) this.viewer.entities.remove(this.draggers[t]);
+// this.draggers = []
+// }, mars3d.drawing.PolylineEditor = function(t, e, i) {
+// this.viewer = t, this.entity = e, this.draggers = [];
+// var n = e.polyline.positions._value;
+// e.polyline.positions.isConstant = !1;
+// for (var r = 0; r < n.length; r++) {
+// var o = n[r],
+// a = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: i.dragIcon,
+// position: o,
+// onDrag: function(t, i) {
+// n[t.index] = i, e.polyline.positions = n, e.changeEditing()
+// }
+// });
+// a.index = r, this.draggers.push(a)
+// }
+// }, mars3d.drawing.PolylineEditor.prototype.updateDraggers = function() {
+// for (var t = this.entity.polyline.positions.getValue(), e = 0; e < this.draggers.length; e++) {
+// var i = t[e];
+// this.draggers[e].position = i
+// }
+// }, mars3d.drawing.PolylineEditor.prototype.destroy = function() {
+// this.entity.polyline.positions.isConstant = !0;
+// for (var t = 0; t < this.draggers.length; t++) this.viewer.entities.remove(this.draggers[t]);
+// this.draggers = []
+// }, mars3d.drawing.PolylineVolumeEditor = function(t, e, i) {
+// this.viewer = t, this.entity = e, this.draggers = [];
+// var n = e.polylineVolume.positions.getValue();
+// e.polylineVolume.positions.isConstant = !1;
+// for (var r = 0; r < n.length; r++) {
+// var o = n[r],
+// a = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: i.dragIcon,
+// position: o,
+// onDrag: function(t, i) {
+// n[t.index] = i, e.polylineVolume.positions = n, e.changeEditing()
+// }
+// });
+// a.index = r, this.draggers.push(a)
+// }
+// }, mars3d.drawing.PolylineVolumeEditor.prototype.updateDraggers = function() {
+// for (var t = this.entity.polylineVolume.positions.getValue(), e = 0; e < this.draggers.length; e++) {
+// var i = t[e];
+// this.draggers[e].position = i
+// }
+// }, mars3d.drawing.PolylineVolumeEditor.prototype.destroy = function() {
+// this.entity.polylineVolume.positions.isConstant = !0;
+// for (var t = 0; t < this.draggers.length; t++) this.viewer.entities.remove(this.draggers[t]);
+// this.draggers = []
+// }, mars3d.drawing.RectangleEditor = function(t, e, i) {
+// this.viewer = t, this.entity = e, this.draggers = [];
+// var n = this.getDraggersPositions();
+// e.rectangle.coordinates.isConstant = !1;
+// for (var r = 0; r < n.length; r++) {
+// var o = n[r],
+// a = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: i.dragIcon,
+// position: o,
+// heightReference: !e.attribute.style.perPositionHeight,
+// onDrag: function(t, i) {
+// t.positions[t.index] = i;
+// var n;
+// n = 0 == t.index ? Cesium.Rectangle.fromCartesianArray([i, t.positions[1]]) : Cesium.Rectangle.fromCartesianArray([i, t.positions[0]]), e.rectangle.coordinates.setValue(n), e.changeEditing()
+// }
+// });
+// a.index = r, a.positions = n, this.draggers.push(a)
+// }
+// }, mars3d.drawing.RectangleEditor.prototype.updateDraggers = function() {
+// for (var t = this.getDraggersPositions(), e = 0; e < this.draggers.length; e++) {
+// var i = t[e];
+// this.draggers[e].position = i
+// }
+// }, mars3d.drawing.RectangleEditor.prototype.getDraggersPositions = function() {
+// var t = this.entity.rectangle.coordinates._value,
+// e = Cesium.Rectangle.northwest(t),
+// i = Cesium.Rectangle.southeast(t);
+// return Cesium.Cartesian3.fromRadiansArray([e.longitude, e.latitude, i.longitude, i.latitude])
+// }, mars3d.drawing.RectangleEditor.prototype.destroy = function() {
+// this.entity.rectangle.coordinates.isConstant = !0;
+// for (var t = 0; t < this.draggers.length; t++) this.viewer.entities.remove(this.draggers[t]);
+// this.draggers = []
+// }, mars3d.drawing.RectangleExtrudedEditor = function(t, e, i) {
+// this.viewer = t, this.entity = e, this.draggers = [], this.heightDraggers = [];
+// var n = this,
+// r = 0,
+// o = this.getDraggersPositions();
+// for (e.rectangle.coordinates.isConstant = !1, r = 0; r < o.length; r++) {
+// var a = o[r];
+// if (void 0 != e.rectangle.height) {
+// var s = Cesium.Cartographic.fromCartesian(a);
+// s.height += e.rectangle.height._value, a = Cesium.Cartesian3.fromRadians(s.longitude, s.latitude, s.height)
+// }
+// var l = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: i.dragIcon,
+// position: a,
+// onDrag: function(t, i) {
+// t.positions[t.index] = i;
+// var r;
+// r = 0 == t.index ? Cesium.Rectangle.fromCartesianArray([i, t.positions[1]]) : Cesium.Rectangle.fromCartesianArray([i, t.positions[0]]), e.rectangle.coordinates.setValue(r), n.updateDraggers(), e.changeEditing()
+// }
+// });
+// l.index = r, l.positions = o, this.draggers.push(l)
+// }
+// if (e.rectangle.extrudedHeight) for (r = 0; r < o.length; r++) {
+// var u = o[r],
+// s = Cesium.Cartographic.fromCartesian(u);
+// s.height += e.rectangle.extrudedHeight._value;
+// var a = Cesium.Cartesian3.fromRadians(s.longitude, s.latitude, s.height),
+// l = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: i.dragIcon,
+// position: a,
+// onDrag: function(t, i) {
+// var r = Cesium.Cartographic.fromCartesian(i);
+// e.rectangle.extrudedHeight = new Cesium.ConstantProperty(r.height);
+// var o = Number(r.height) - Number(e.rectangle.height);
+// e.attribute.style.extrudedHeight = Number(o).toFixed(2), n.updateDraggers(), e.changeEditing()
+// },
+// vertical: !0,
+// horizontal: !1
+// });
+// l.index = r, this.heightDraggers.push(l)
+// }
+// }, mars3d.drawing.RectangleExtrudedEditor.prototype.getDraggersPositions = function() {
+// var t = this.entity.rectangle.coordinates._value,
+// e = Cesium.Rectangle.northwest(t),
+// i = Cesium.Rectangle.southeast(t);
+// return Cesium.Cartesian3.fromRadiansArray([e.longitude, e.latitude, i.longitude, i.latitude])
+// }, mars3d.drawing.RectangleExtrudedEditor.prototype.updateDraggers = function() {
+// var t = this.getDraggersPositions(),
+// e = this.entity.rectangle.extrudedHeight._value,
+// i = 0;
+// void 0 != this.entity.rectangle.height && (i = this.entity.rectangle.height._value);
+// for (var n = 0; n < this.heightDraggers.length; n++) {
+// var r = t[n],
+// o = this.heightDraggers[n],
+// a = Cesium.Cartographic.fromCartesian(r);
+// a.height += e;
+// var s = Cesium.Cartesian3.fromRadians(a.longitude, a.latitude, a.height);
+// o.position = s;
+// var l = this.draggers[n],
+// u = Cesium.Cartographic.fromCartesian(r);
+// u.height += i, s = Cesium.Cartesian3.fromRadians(u.longitude, u.latitude, u.height), l.position = s
+// }
+// }, mars3d.drawing.RectangleExtrudedEditor.prototype.destroy = function() {
+// var t = 0;
+// for (t = 0; t < this.draggers.length; t++) this.viewer.entities.remove(this.draggers[t]);
+// for (this.draggers = [], t = 0; t < this.heightDraggers.length; t++) this.viewer.entities.remove(this.heightDraggers[t]);
+// this.heightDraggers = []
+// }, mars3d.drawing.WallEditor = function(t, e, i) {
+// this.viewer = t, this.entity = e, this.draggers = [], this.heightDraggers = [];
+// var n = this,
+// r = 0,
+// o = e.wall.positions._value;
+// for (e.wall.positions.isConstant = !1, r = 0; r < o.length; r++) {
+// var a = o[r],
+// s = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: i.dragIcon,
+// position: a,
+// onDrag: function(t, i) {
+// t.positions[t.index] = i, n.updateDraggers(), e.changeEditing()
+// }
+// });
+// s.index = r, s.positions = o, this.draggers.push(s)
+// }
+// if (e.wall.maximumHeights) for (r = 0; r < o.length; r++) {
+// var l = o[r],
+// u = Cesium.Cartographic.fromCartesian(l.clone());
+// u.height = e.wall.maximumHeights._value[r];
+// var a = Cesium.Cartesian3.fromRadians(u.longitude, u.latitude, u.height),
+// s = mars3d.drawing.utils.createDragger(this.viewer, {
+// dragIcon: i.dragIcon,
+// position: a,
+// onDrag: function(t, i) {
+// var r = Cesium.Cartographic.fromCartesian(i),
+// o = n.entity.wall.minimumHeights._value,
+// a = Number(r.height) - Number(o[t.index]);
+// e.attribute.style.extrudedHeight = a.toFixed(2), n.updateDraggers(), e.changeEditing()
+// },
+// vertical: !0,
+// horizontal: !1
+// });
+// s.index = r, this.heightDraggers.push(s)
+// }
+// }, mars3d.drawing.WallEditor.prototype.updateDraggers = function() {
+// for (var t = this.entity.wall.positions._value, e = this.entity.wall.minimumHeights._value, i = this.entity.wall.maximumHeights._value, n = 0; n < this.heightDraggers.length; n++) {
+// var r = t[n].clone(),
+// o = this.heightDraggers[n],
+// a = Cesium.Cartographic.fromCartesian(r);
+// e[n] = a.height, i[n] = Number(a.height) + Number(this.entity.attribute.style.extrudedHeight), o.position = mars3d.drawing.utils.getPositionsWithHeight(r, this.entity.attribute.style.extrudedHeight), this.draggers[n].position = r
+// }
+// }, mars3d.drawing.WallEditor.prototype.destroy = function() {
+// var t = 0;
+// for (t = 0; t < this.draggers.length; t++) this.viewer.entities.remove(this.draggers[t]);
+// for (this.draggers = [], t = 0; t < this.heightDraggers.length; t++) this.viewer.entities.remove(this.heightDraggers[t]);
+// this.heightDraggers = []
+// }, mars3d.drawing.BillboardControl = {
+// typename: "billboard",
+// startDraw: function(t, e) {
+// var i = this.attribute2Entity(e),
+// n = t.entities.add({
+// billboard: i,
+// attribute: e
+// });
+// return n
+// },
+// attribute2Entity: function(t, e) {
+// null == e && (e = {
+// scale: 1,
+// horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
+// verticalOrigin: Cesium.VerticalOrigin.BOTTOM
+// });
+// for (var i in t.style) {
+// var n = t.style[i];
+// switch (i) {
+// default:
+// e[i] = n;
+// break;
+// case "opacity":
+// e.color = new Cesium.Color.fromCssColorString("#FFFFFF").withAlpha(Number(n || 1));
+// break;
+// case "rotation":
+// e.rotation = Cesium.Math.toRadians(n)
+// }
+// }
+// return e
+// },
+// getEditor: function(t, e, i) {
+// return new mars3d.drawing.PointEditor(t, e, i)
+// },
+// setPositions: function(t, e) {
+// t.position = new mars3d.drawing.DynamicProperty(e)
+// },
+// getPositions: function(t) {
+// return [t.position._value]
+// },
+// getCoordinates: function(t) {
+// var e = this.getPositions(t),
+// i = mars3d.drawing.utils.getCoordinates(e);
+// return i
+// },
+// toGeoJSON: function(t) {
+// var e = this.getCoordinates(t);
+// return {
+// type: "Feature",
+// properties: t.attribute,
+// geometry: {
+// type: "Point",
+// coordinates: e
+// }
+// }
+// }
+// }, mars3d.drawing.EllipseControl = {
+// typename: "ellipse",
+// startDraw: function(t, e) {
+// var i = this.attribute2Entity(e),
+// n = t.entities.add({
+// ellipse: i,
+// attribute: e
+// });
+// return n
+// },
+// attribute2Entity: function(t, e) {
+// null == e && (e = {
+// show: !0,
+// fill: !0
+// });
+// for (var i in t.style) {
+// var n = t.style[i];
+// switch (i) {
+// default:
+// e[i] = n;
+// break;
+// case "opacity":
+// case "outlineOpacity":
+// break;
+// case "outlineColor":
+// e.outlineColor = new Cesium.Color.fromCssColorString(n || "#FFFF00").withAlpha(t.style.outlineOpacity || t.style.opacity || 1);
+// break;
+// case "color":
+// e.material = new Cesium.Color.fromCssColorString(n || "#FFFF00").withAlpha(Number(t.style.opacity || 1));
+// break;
+// case "rotation":
+// e.rotation = Cesium.Math.toRadians(n)
+// }
+// }
+// return e
+// },
+// getEditor: function(t, e, i) {
+// return new mars3d.drawing.EllipseEditor(t, e, i)
+// },
+// setPositions: function(t, e) {
+// t.position = new mars3d.drawing.DynamicProperty(e)
+// },
+// getPositions: function(t) {
+// return [t.position._value]
+// },
+// getCoordinates: function(t) {
+// var e = this.getPositions(t),
+// i = mars3d.drawing.utils.getCoordinates(e);
+// return i
+// },
+// toGeoJSON: function(t) {
+// var e = this.getCoordinates(t);
+// return {
+// type: "Feature",
+// properties: t.attribute,
+// geometry: {
+// type: "Point",
+// coordinates: e
+// }
+// }
+// }
+// }, mars3d.drawing.EllipsoidControl = {
+// typename: "ellipsoid",
+// startDraw: function(t, e) {
+// var i = this.attribute2Entity(e),
+// n = t.entities.add({
+// ellipsoid: i,
+// attribute: e
+// });
+// return n
+// },
+// attribute2Entity: function(t, e) {
+// null == e && (e = {
+// show: !0,
+// fill: !0
+// });
+// for (var i in t.style) {
+// var n = t.style[i];
+// switch (i) {
+// default:
+// e[i] = n;
+// break;
+// case "opacity":
+// case "outlineOpacity":
+// case "widthRadii":
+// case "heightRadii":
+// break;
+// case "outlineColor":
+// e.outlineColor = new Cesium.Color.fromCssColorString(n || "#FFFF00").withAlpha(t.style.outlineOpacity || t.style.opacity || 1);
+// break;
+// case "color":
+// e.material = new Cesium.Color.fromCssColorString(n || "#FFFF00").withAlpha(Number(t.style.opacity || 1));
+// break;
+// case "extentRadii":
+// var r = t.style.extentRadii || 100,
+// o = t.style.widthRadii || 100,
+// a = t.style.heightRadii || 100;
+// e.radii = new Cesium.Cartesian3(r, o, a)
+// }
+// }
+// return e
+// },
+// getEditor: function(t, e, i) {
+// return new mars3d.drawing.EllipsoidEditor(t, e, i)
+// },
+// setPositions: function(t, e) {
+// t.position = new mars3d.drawing.DynamicProperty(e)
+// },
+// getPositions: function(t) {
+// return [t.position._value]
+// },
+// getCoordinates: function(t) {
+// var e = this.getPositions(t),
+// i = mars3d.drawing.utils.getCoordinates(e);
+// return i
+// },
+// toGeoJSON: function(t) {
+// var e = this.getCoordinates(t);
+// return {
+// type: "Feature",
+// properties: t.attribute,
+// geometry: {
+// type: "Point",
+// coordinates: e
+// }
+// }
+// }
+// }, mars3d.drawing.LabelControl = {
+// typename: "label",
+// startDraw: function(t, e) {
+// var i = this.attribute2Entity(e),
+// n = t.entities.add({
+// label: i,
+// attribute: e
+// });
+// return n
+// },
+// attribute2Entity: function(t, e) {
+// null == e && (e = {
+// show: !0,
+// scale: 1,
+// horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
+// verticalOrigin: Cesium.VerticalOrigin.BOTTOM
+// });
+// for (var i in t.style) {
+// var n = t.style[i];
+// switch (i) {
+// default:
+// e[i] = n;
+// break;
+// case "font_style":
+// case "font_weight":
+// case "font_size":
+// case "font_family":
+// case "text":
+// break;
+// case "color":
+// e.fillColor = new Cesium.Color.fromCssColorString(n || "#FFFF00").withAlpha(Number(t.style.opacity || 1));
+// break;
+// case "border":
+// e.style = n ? Cesium.LabelStyle.FILL_AND_OUTLINE : Cesium.LabelStyle.FILL;
+// break;
+// case "border_color":
+// e.outlineColor = new Cesium.Color.fromCssColorString(n || "#FFFF00").withAlpha(Number(t.style.opacity || 1));
+// break;
+// case "border_width":
+// e.outlineWidth = n;
+// break;
+// case "background":
+// e.showBackground = n;
+// break;
+// case "background_color":
+// e.backgroundColor = new Cesium.Color.fromCssColorString(n || "#FFFF00").withAlpha(Number(t.style.opacity || 1));
+// break;
+// case "pixelOffset":
+// e.pixelOffset = new Cesium.Cartesian2(t.style.pixelOffset[0], t.style.pixelOffset[1])
+// }
+// }
+// e.text = (t.style.text || "文字").replace(new RegExp("<br />", "gm"), "\n");
+// var r = (t.style.font_style || "normal") + " small-caps " + (t.style.font_weight || "normal") + " " + (t.style.font_size || "30") + "px " + (t.style.font_family || "黑体");
+// return e.font = r, e
+// },
+// getEditor: function(t, e, i) {
+// return new mars3d.drawing.PointEditor(t, e, i)
+// },
+// setPositions: function(t, e) {
+// t.position = new mars3d.drawing.DynamicProperty(e)
+// },
+// getPositions: function(t) {
+// return [t.position._value]
+// },
+// getCoordinates: function(t) {
+// var e = this.getPositions(t),
+// i = mars3d.drawing.utils.getCoordinates(e);
+// return i
+// },
+// toGeoJSON: function(t) {
+// var e = this.getCoordinates(t);
+// return {
+// type: "Feature",
+// properties: t.attribute,
+// geometry: {
+// type: "Point",
+// coordinates: e
+// }
+// }
+// }
+// }, mars3d.drawing.ModelControl = {
+// typename: "model",
+// startDraw: function(t, e) {
+// var i = this.attribute2Entity(e),
+// n = t.entities.add({
+// model: i,
+// attribute: e
+// });
+// return n
+// },
+// attribute2Entity: function(t, e) {
+// null == e && (e = {
+// show: !0
+// });
+// for (var i in t.style) {
+// var n = t.style[i];
+// switch (i) {
+// default:
+// e[i] = n;
+// break;
+// case "silhouette":
+// case "silhouetteColor":
+// case "silhouetteAlpha":
+// case "silhouetteSize":
+// case "fill":
+// case "color":
+// case "opacity":
+// break;
+// case "modelUrl":
+// e.uri = n
+// }
+// }
+// return t.style.silhouette ? (e.silhouetteColor = new Cesium.Color.fromCssColorString(t.style.silhouetteColor || "#FFFFFF").withAlpha(Number(t.style.silhouetteAlpha || 1)), e.silhouetteSize = Number(t.style.silhouetteSize || 1)) : e.silhouetteSize = 0, t.style.fill ? e.color = new Cesium.Color.fromCssColorString(t.style.color || "#FFFFFF").withAlpha(Number(t.style.opacity || 1)) : e.color = new Cesium.Color.fromCssColorString("#FFFFFF").withAlpha(Number(t.style.opacity || 1)), e
+// },
+// attribute2Model: function(t, e) {
+// var i = Cesium.Math.toRadians(Number(e.attribute.style.heading || 0)),
+// n = Cesium.Math.toRadians(Number(e.attribute.style.pitch || 0)),
+// r = Cesium.Math.toRadians(Number(e.attribute.style.roll || 0)),
+// o = new Cesium.HeadingPitchRoll(i, n, r);
+// e.orientation && (e.orientation = Cesium.Transforms.headingPitchRollQuaternion(e.position._value, o))
+// },
+// getEditor: function(t, e, i) {
+// return new mars3d.drawing.PointEditor(t, e, i)
+// },
+// setPositions: function(t, e) {
+// t.position = new mars3d.drawing.DynamicProperty(e);
+// var i = Cesium.Math.toRadians(Number(t.attribute.style.heading || 0)),
+// n = Cesium.Math.toRadians(Number(t.attribute.style.pitch || 0)),
+// r = Cesium.Math.toRadians(Number(t.attribute.style.roll || 0)),
+// o = new Cesium.HeadingPitchRoll(i, n, r);
+// t.orientation = Cesium.Transforms.headingPitchRollQuaternion(t.position._value, o)
+// },
+// getPositions: function(t) {
+// return [t.position._value]
+// },
+// getCoordinates: function(t) {
+// var e = this.getPositions(t),
+// i = mars3d.drawing.utils.getCoordinates(e);
+// return i
+// },
+// toGeoJSON: function(t) {
+// var e = this.getCoordinates(t);
+// return {
+// type: "Feature",
+// properties: t.attribute,
+// geometry: {
+// type: "Point",
+// coordinates: e
+// }
+// }
+// }
+// }, mars3d.drawing.PointControl = {
+// typename: "point",
+// startDraw: function(t, e) {
+// var i = this.attribute2Entity(e),
+// n = t.entities.add({
+// point: i,
+// attribute: e
+// });
+// return n
+// },
+// attribute2Entity: function(t, e) {
+// null == e && (e = {
+// show: !0
+// });
+// for (var i in t.style) {
+// var n = t.style[i];
+// switch (i) {
+// default:
+// e[i] = n;
+// break;
+// case "opacity":
+// case "outlineOpacity":
+// break;
+// case "outlineColor":
+// e.outlineColor = new Cesium.Color.fromCssColorString(n || "#FFFF00").withAlpha(t.style.outlineOpacity || t.style.opacity || 1);
+// break;
+// case "color":
+// e.color = new Cesium.Color.fromCssColorString(n || "#FFFF00").withAlpha(Number(t.style.opacity || 1))
+// }
+// }
+// return t.style.outline || (e.outlineWidth = 0), e
+// },
+// getEditor: function(t, e, i) {
+// return new mars3d.drawing.PointEditor(t, e, i)
+// },
+// setPositions: function(t, e) {
+// t.position = new mars3d.drawing.DynamicProperty(e)
+// },
+// getPositions: function(t) {
+// return [t.position._value]
+// },
+// getCoordinates: function(t) {
+// var e = this.getPositions(t),
+// i = mars3d.drawing.utils.getCoordinates(e);
+// return i
+// },
+// toGeoJSON: function(t) {
+// var e = this.getCoordinates(t);
+// return {
+// type: "Feature",
+// properties: t.attribute,
+// geometry: {
+// type: "Point",
+// coordinates: e
+// }
+// }
+// }
+// }, mars3d.drawing.PolygonControl = {
+// typename: "polygon",
+// startDraw: function(t, e) {
+// var i = this.attribute2Entity(e),
+// n = t.entities.add({
+// polygon: i,
+// attribute: e
+// });
+// return n
+// },
+// attribute2Entity: function(t, e) {
+// null == e && (e = {
+// show: !0,
+// fill: !0,
+// hierarchy: new mars3d.drawing.DynamicProperty([],"polygon")
+// });
+// for (var i in t.style) {
+// var n = t.style[i];
+// switch (i) {
+// default:
+// e[i] = n;
+// break;
+// case "opacity":
+// case "outlineOpacity":
+// break;
+// case "outlineColor":
+// e.outlineColor = new Cesium.Color.fromCssColorString(n || "#FFFF00").withAlpha(t.style.outlineOpacity || t.style.opacity || 1);
+// break;
+// case "color":
+// e.material = new Cesium.Color.fromCssColorString(n || "#FFFF00").withAlpha(Number(t.style.opacity || 1));
+// break;
+// case "extrudedHeight":
+// var r = mars3d.drawing.utils.getMaxHeightForPositions(e.hierarchy._value);
+// e.extrudedHeight = Number(n) + r
+// }
+// }
+// return null == t.style.color && (e.material = Cesium.Color.fromRandom({
+// minimumGreen: .75,
+// maximumBlue: .75,
+// alpha: Number(t.style.opacity || 1)
+// })), e
+// },
+// getEditor: function(t, e, i) {
+// return e.polygon.extrudedHeight ? new mars3d.drawing.ExtrudedPolygonEditor(t, e, i) : new mars3d.drawing.PolygonEditor(t, e, i)
+// },
+// setPositions: function(t, e) {
+// if (t.polygon.hierarchy = new mars3d.drawing.DynamicProperty(e), t.attribute.style.extrudedHeight) {
+// var i = mars3d.drawing.utils.getMaxHeightForPositions(e);
+// t.polygon.extrudedHeight = i + Number(t.attribute.style.extrudedHeight)
+// }
+// },
+// getPositions: function(t) {
+// return t.polygon.hierarchy._value
+// },
+// getCoordinates: function(t) {
+// var e = this.getPositions(t),
+// i = mars3d.drawing.utils.getCoordinates(e);
+// return i
+// },
+// toGeoJSON: function(t) {
+// var e = this.getCoordinates(t),
+// i = e[0],
+// n = e[e.length - 1];
+// return i[0] == n[0] && i[1] == n[1] && i[2] == n[2] || e.push(i), {
+// type: "Feature",
+// properties: t.attribute,
+// geometry: {
+// type: "Polygon",
+// coordinates: [e]
+// }
+// }
+// }
+// }, mars3d.drawing.PolylineControl = {
+// typename: "polyline",
+// startDraw: function(t, e) {
+// var i = this.attribute2Entity(e),
+// n = t.entities.add({
+// polyline: i,
+// attribute: e
+// });
+// return n
+// },
+// attribute2Entity: function(t, e) {
+// null == e && (e = {
+// followSurface: !0,
+// positions: new mars3d.drawing.DynamicProperty([])
+// });
+// for (var i in t.style) {
+// var n = t.style[i];
+// switch (i) {
+// default:
+// e[i] = n;
+// break;
+// case "lineType":
+// case "color":
+// case "opacity":
+// case "outline":
+// case "outlineWidth":
+// case "outlineColor":
+// case "outlineOpacity":
+// }
+// }
+// var r = new Cesium.Color.fromCssColorString(t.style.color || "#FFFF00").withAlpha(Number(t.style.opacity || 1));
+// switch (t.style.lineType) {
+// default:
+// case "solid":
+// t.style.outline ? e.material = new Cesium.PolylineOutlineMaterialProperty({
+// color: r,
+// outlineWidth: Number(t.style.outlineWidth || 1),
+// outlineColor: new Cesium.Color.fromCssColorString(t.style.outlineColor || "#FFFF00").withAlpha(Number(t.style.outlineOpacity || t.style.opacity || 1))
+// }) : e.material = r;
+// break;
+// case "dash":
+// e.material = new Cesium.PolylineDashMaterialProperty({
+// color: r
+// })
+// }
+// return e
+// },
+// getEditor: function(t, e, i) {
+// return new mars3d.drawing.PolylineEditor(t, e, i)
+// },
+// setPositions: function(t, e) {
+// t.polyline.positions.setValue(e)
+// },
+// getPositions: function(t) {
+// return t.polyline.positions._value
+// },
+// getCoordinates: function(t) {
+// var e = this.getPositions(t),
+// i = mars3d.drawing.utils.getCoordinates(e);
+// return i
+// },
+// toGeoJSON: function(t) {
+// var e = this.getCoordinates(t);
+// return {
+// type: "Feature",
+// properties: t.attribute,
+// geometry: {
+// type: "LineString",
+// coordinates: e
+// }
+// }
+// }
+// }, mars3d.drawing.PolylineVolumeControl = {
+// typename: "polylineVolume",
+// startDraw: function(t, e) {
+// var i = this.attribute2Entity(e),
+// n = t.entities.add({
+// polylineVolume: i,
+// attribute: e
+// });
+// return n
+// },
+// attribute2Entity: function(t, e) {
+// null == e && (e = {
+// positions: new mars3d.drawing.DynamicProperty([])
+// });
+// for (var i in t.style) {
+// var n = t.style[i];
+// switch (i) {
+// default:
+// e[i] = n;
+// break;
+// case "opacity":
+// case "outlineOpacity":
+// case "radius":
+// case "shape":
+// break;
+// case "outlineColor":
+// e.outlineColor = new Cesium.Color.fromCssColorString(n || "#FFFF00").withAlpha(t.style.outlineOpacity || t.style.opacity || 1);
+// break;
+// case "color":
+// e.material = new Cesium.Color.fromCssColorString(n || "#FFFF00").withAlpha(Number(t.style.opacity || 1))
+// }
+// }
+// switch (t.style.radius = t.style.radius || 10, t.style.shape) {
+// default:
+// case "pipeline":
+// e.shape = this._getCorridorShape1(t.style.radius);
+// break;
+// case "circle":
+// e.shape = this._getCorridorShape2(t.style.radius);
+// break;
+// case "star":
+// e.shape = this._getCorridorShape3(t.style.radius)
+// }
+// return e
+// },
+// _getCorridorShape1: function(t) {
+// for (var e = t / 3, i = 0, n = 360, r = [], o = i; o <= n; o++) {
+// var a = Cesium.Math.toRadians(o);
+// r.push(new Cesium.Cartesian2(t * Math.cos(a), t * Math.sin(a)))
+// }
+// for (var o = n; o >= i; o--) {
+// var a = Cesium.Math.toRadians(o);
+// r.push(new Cesium.Cartesian2((t - e) * Math.cos(a), (t - e) * Math.sin(a)))
+// }
+// return r
+// },
+// _getCorridorShape2: function(t) {
+// for (var e = 0, i = 360, n = [], r = e; r <= i; r++) {
+// var o = Cesium.Math.toRadians(r);
+// n.push(new Cesium.Cartesian2(t * Math.cos(o), t * Math.sin(o)))
+// }
+// return n
+// },
+// _getCorridorShape3: function(t, e) {
+// for (var e = e || 6, i = Math.PI / e, n = 2 * e, r = new Array(n), o = 0; o < n; o++) {
+// var a = o % 2 === 0 ? t : t / 3;
+// r[o] = new Cesium.Cartesian2(Math.cos(o * i) * a, Math.sin(o * i) * a)
+// }
+// return r
+// },
+// getEditor: function(t, e, i) {
+// return new mars3d.drawing.PolylineVolumeEditor(t, e, i)
+// },
+// setPositions: function(t, e) {
+// t.polylineVolume.positions = e
+// },
+// getPositions: function(t) {
+// return t.polylineVolume.positions._value
+// },
+// getCoordinates: function(t) {
+// var e = this.getPositions(t),
+// i = mars3d.drawing.utils.getCoordinates(e);
+// return i
+// },
+// toGeoJSON: function(t) {
+// var e = this.getCoordinates(t);
+// return {
+// type: "Feature",
+// properties: t.attribute,
+// geometry: {
+// type: "LineString",
+// coordinates: e
+// }
+// }
+// }
+// }, mars3d.drawing.RectangleControl = {
+// typename: "rectangle",
+// startDraw: function(t, e) {
+// var i = this.attribute2Entity(e),
+// n = t.entities.add({
+// rectangle: i,
+// attribute: e
+// });
+// return n
+// },
+// attribute2Entity: function(t, e) {
+// if (!e) {
+// var i = Cesium.Rectangle.fromDegrees(78.654473, 34.878143, 78.654673, 34.878316);
+// e = {
+// show: !0,
+// fill: !0,
+// closeTop: !0,
+// closeBottom: !0,
+// coordinates: i
+// }
+// }
+// for (var n in t.style) {
+// var r = t.style[n];
+// switch (n) {
+// default:
+// e[n] = r;
+// break;
+// case "opacity":
+// case "outlineOpacity":
+// break;
+// case "outlineColor":
+// e.outlineColor = new Cesium.Color.fromCssColorString(r || "#FFFF00").withAlpha(t.style.outlineOpacity || t.style.opacity || 1);
+// break;
+// case "height":
+// e.height = Number(r), e.extrudedHeight = Number(t.style.extrudedHeight) + Number(r);
+// break;
+// case "extrudedHeight":
+// e.extrudedHeight = Number(e.height) + Number(r);
+// break;
+// case "color":
+// e.material = new Cesium.Color.fromCssColorString(r || "#FFFF00").withAlpha(Number(t.style.opacity || 1));
+// break;
+// case "image":
+// e.material = t.style.image;
+// break;
+// case "rotation":
+// e.rotation = Cesium.Math.toRadians(r), t.style.stRotation || (e.stRotation = Cesium.Math.toRadians(r));
+// break;
+// case "stRotation":
+// e.stRotation = Cesium.Math.toRadians(r)
+// }
+// }
+// return null == e.material && (e.material = Cesium.Color.fromRandom({
+// minimumGreen: .75,
+// maximumBlue: .75,
+// alpha: Number(t.style.opacity || 1)
+// })), e
+// },
+// getEditor: function(t, e, i) {
+// return e.rectangle.extrudedHeight ? new mars3d.drawing.RectangleExtrudedEditor(t, e, i) : new mars3d.drawing.RectangleEditor(t, e, i)
+// },
+// setPositions: function(t, e) {
+// e instanceof Array && (e = Cesium.Rectangle.fromCartesianArray(e)), t.rectangle.coordinates.setValue(e)
+// },
+// getPositions: function(t) {
+// return t.rectangle.coordinates
+// },
+// getCoordinates: function(t) {
+// var e = this.getDiagonalPositions(t),
+// i = mars3d.drawing.utils.getCoordinates(e);
+// return i
+// },
+// getDiagonalPositions: function(t) {
+// var e = t.rectangle.coordinates._value,
+// i = Cesium.Rectangle.northwest(e),
+// n = Cesium.Rectangle.southeast(e);
+// return Cesium.Cartesian3.fromRadiansArray([i.longitude, i.latitude, n.longitude, n.latitude])
+// },
+// toGeoJSON: function(t) {
+// var e = this.getCoordinates(t);
+// return {
+// type: "Feature",
+// properties: t.attribute,
+// geometry: {
+// type: "MultiPoint",
+// coordinates: e
+// }
+// }
+// }
+// }, mars3d.drawing.WallControl = {
+// typename: "wall",
+// startDraw: function(t, e) {
+// var i = this.attribute2Entity(e),
+// n = t.entities.add({
+// wall: i,
+// attribute: e
+// });
+// return n
+// },
+// attribute2Entity: function(t, e) {
+// e || (e = {
+// show: !0,
+// fill: !0,
+// minimumHeights: [],
+// maximumHeights: [],
+// positions: new mars3d.drawing.DynamicProperty([])
+// });
+// for (var i in t.style) {
+// var n = t.style[i];
+// switch (i) {
+// default:
+// e[i] = n;
+// break;
+// case "opacity":
+// case "outlineOpacity":
+// break;
+// case "outlineColor":
+// e.outlineColor = new Cesium.Color.fromCssColorString(n || "#FFFF00").withAlpha(t.style.outlineOpacity || t.style.opacity || 1);
+// break;
+// case "color":
+// e.material = new Cesium.Color.fromCssColorString(n || "#FFFF00").withAlpha(Number(t.style.opacity || 1))
+// }
+// }
+// return null == e.material && (e.material = Cesium.Color.fromRandom({
+// minimumGreen: .75,
+// maximumBlue: .75,
+// alpha: Number(t.style.opacity || 1)
+// })), e
+// },
+// getEditor: function(t, e, i) {
+// return new mars3d.drawing.WallEditor(t, e, i)
+// },
+// setPositions: function(t, e) {
+// if (t.wall.positions = new mars3d.drawing.DynamicProperty(e), t.wall.maximumHeights && t.wall.minimumHeights) for (var i = 0; i < e.length; i++) {
+// var n = Cesium.Cartographic.fromCartesian(e[i]);
+// t.wall.minimumHeights._value[i] = Number(n.height), t.wall.maximumHeights._value[i] = Number(n.height) + Number(t.attribute.style.extrudedHeight)
+// }
+// },
+// getPositions: function(t) {
+// return t.wall.positions._value
+// },
+// setMaximumHeights: function(t, e) {
+// t.wall.maximumHeights = new mars3d.drawing.DynamicProperty(e)
+// },
+// getMaximumHeights: function(t) {
+// return t.wall.maximumHeights._value
+// },
+// setMinimumHeights: function(t, e) {
+// t.wall.minimumHeights = new mars3d.drawing.DynamicProperty(e)
+// },
+// getMinimumHeights: function(t) {
+// return t.wall.minimumHeights._value
+// },
+// getCoordinates: function(t) {
+// var e = this.getPositions(t),
+// i = mars3d.drawing.utils.getCoordinates(e);
+// return i
+// },
+// toGeoJSON: function(t) {
+// var e = this.getCoordinates(t);
+// return {
+// type: "Feature",
+// properties: t.attribute,
+// geometry: {
+// type: "LineString",
+// coordinates: e
+// }
+// }
+// }
+// }, mars3d.drawing.EventControl = function(t) {
+// this.viewer = t, t.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK), t.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)
+// }, mars3d.drawing.EventControl.prototype.createDrawPointHandler = function(t) {
+// var e = this;
+// t.inProgress = !0;
+// var i = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas);
+// return i.setInputAction(function(n) {
+// var r = mars3d.latlng.getCurrentMousePosition(e.viewer.scene, n.position);
+// r && (t.updatePositions(r), t.inProgress = !1, t.stopDrawing(), t.startEditing(), i.destroy(), e.drawHandler = null)
+// }, Cesium.ScreenSpaceEventType.LEFT_CLICK), this.drawHandler = i, i
+// },
+
+// mars3d.drawing.EventControl.prototype.createDrawPolylineHandler = function(t, e) {
+// var i = this;
+// t.inProgress = !0;
+// var n = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas);
+// return n.lastPointTemporary = !1, n.setInputAction(function(r) {
+// var o = mars3d.latlng.getCurrentMousePosition(i.viewer.scene, r.position);
+// o && (n.lastPointTemporary && e.pop(), e.push(o), n.lastPointTemporary = !1, t.attribute && t.attribute.minMaxPoints && (e.length == t.attribute.minMaxPoints.min && e.length == t.attribute.minMaxPoints.max || t.attribute.minMaxPoints.isSuper && 4 == e.length) && (t.inProgress = !1, n.destroy(), i.drawHandler = null, t.stopDrawing(), t.startEditing()), t.changeDrawing())
+// }, Cesium.ScreenSpaceEventType.LEFT_CLICK), n.setInputAction(function(r) {
+// if (r.endPosition) {
+// var o = mars3d.latlng.getCurrentMousePosition(i.viewer.scene, r.endPosition);
+// o && (n.lastPointTemporary && e.pop(), e.push(o), n.lastPointTemporary = !0, t.moveDrawing())
+// }
+// }, Cesium.ScreenSpaceEventType.MOUSE_MOVE), n.setInputAction(function(r) {
+// t.inProgress = !1, n.destroy(), i.drawHandler = null, e.pop(), t.stopDrawing(), t.startEditing()
+// }, Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK), this.drawHandler = n, n
+// },
+
+// mars3d.drawing.EventControl.prototype.createDrawPolygonHandler = function(t, e) {
+// var i = this;
+// t.inProgress = !0;
+// var n = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas);
+// return n.lastPointTemporary = !1, n.setInputAction(function(r) {
+// var o = mars3d.latlng.getCurrentMousePosition(i.viewer.scene, r.position);
+// if (o) {
+// if (n.lastPointTemporary && e.pop(), e.push(o), t.attribute.style.extrudedHeight) {
+// var a = mars3d.drawing.utils.getMaxHeightForPositions(e);
+// t.polygon.extrudedHeight = a + Number(t.attribute.style.extrudedHeight)
+// }
+// n.lastPointTemporary = !1, t.changeDrawing()
+// }
+// }, Cesium.ScreenSpaceEventType.LEFT_CLICK), n.setInputAction(function(r) {
+// if (r.endPosition) {
+// var o = mars3d.latlng.getCurrentMousePosition(i.viewer.scene, r.endPosition);
+// if (o) {
+// if (n.lastPointTemporary && e.pop(), e.push(o), t.attribute.style.extrudedHeight) {
+// var a = mars3d.drawing.utils.getMaxHeightForPositions(e);
+// t.polygon.extrudedHeight = a + Number(t.attribute.style.extrudedHeight)
+// }
+// n.lastPointTemporary = !0, t.moveDrawing()
+// }
+// }
+// }, Cesium.ScreenSpaceEventType.MOUSE_MOVE), n.setInputAction(function(r) {
+// t.inProgress = !1, n.destroy(), i.drawHandler = null, e.pop(), t.stopDrawing(), t.startEditing()
+// }, Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK), this.drawHandler = n, n
+// }, mars3d.drawing.EventControl.prototype.createTwoPointsModelHandler = function(t, e) {
+// var i = this;
+// t.inProgress = !0;
+// var n = [],
+// r = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas);
+// return r.lastPointTemporary = !1, r.setInputAction(function(o) {
+// var a = mars3d.latlng.getCurrentMousePosition(i.viewer.scene, o.position);
+// if (a) {
+// if (r.lastPointTemporary && n.pop(), n.push(a), 1 == n.length && t.attribute.style.extrudedHeight) {
+// var s = Number(Cesium.Cartographic.fromCartesian(a).height).toFixed(2);
+// t.rectangle.height = Number(s), t.rectangle.extrudedHeight = Number(s) + Number(t.attribute.style.extrudedHeight), t.attribute.style.height = Number(s)
+// }
+// if (2 == n.length) {
+// var l = Cesium.Rectangle.fromCartesianArray(n);
+// e.setValue(l)
+// }
+// r.lastPointTemporary = !1, t.changeDrawing(), 2 == n.length && (t.inProgress = !1, r.destroy(), i.drawHandler = null, t.stopDrawing(), t.startEditing())
+// }
+// }, Cesium.ScreenSpaceEventType.LEFT_CLICK), r.setInputAction(function(o) {
+// if (o.endPosition) {
+// var a = mars3d.latlng.getCurrentMousePosition(i.viewer.scene, o.endPosition);
+// if (a) {
+// if (r.lastPointTemporary && n.pop(), n.push(a), 2 == n.length) {
+// var s = Cesium.Rectangle.fromCartesianArray(n);
+// e.setValue(s)
+// }
+// r.lastPointTemporary = !0, t.moveDrawing()
+// }
+// }
+// }, Cesium.ScreenSpaceEventType.MOUSE_MOVE), this.drawHandler = r, r
+// }, mars3d.drawing.EventControl.prototype.createDrawWallHandler = function(t, e, i, n) {
+// var r = this;
+// t.inProgress = !0;
+// var o = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas);
+// return o.lastPointTemporary = !1, o.setInputAction(function(a) {
+// var s = mars3d.latlng.getCurrentMousePosition(r.viewer.scene, a.position);
+// if (s) {
+// o.lastPointTemporary && (e.pop(), i.pop(), n.pop()), e.push(s);
+// var l = Cesium.Cartographic.fromCartesian(s),
+// u = Number(l.height).toFixed(2),
+// c = Number(u) + Number(t.attribute.style.extrudedHeight);
+// i.push(u), n.push(c), o.lastPointTemporary = !1, t.changeDrawing()
+// }
+// }, Cesium.ScreenSpaceEventType.LEFT_CLICK), o.setInputAction(function(a) {
+// if (a.endPosition) {
+// var s = mars3d.latlng.getCurrentMousePosition(r.viewer.scene, a.endPosition);
+// if (s) {
+// o.lastPointTemporary && (e.pop(), i.pop(), n.pop()), e.push(s);
+// var l = Cesium.Cartographic.fromCartesian(s),
+// u = Number(l.height).toFixed(2),
+// c = Number(u) + Number(t.attribute.style.extrudedHeight);
+// i.push(u), n.push(c), o.lastPointTemporary = !0, t.moveDrawing()
+// }
+// }
+// }, Cesium.ScreenSpaceEventType.MOUSE_MOVE), o.setInputAction(function(a) {
+// t.inProgress = !1, o.destroy(), r.drawHandler = null, e.pop(), i.pop(), n.pop(), t.stopDrawing(), t.startEditing()
+// }, Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK), this.drawHandler = o, o
+// }, mars3d.drawing.EventControl.prototype.destroyDrawHandler = function() {
+// this.drawHandler && (this.drawHandler.destroy(), this.drawHandler = null)
+// }, mars3d.drawing.EventControl.prototype.createEditSelectHandler = function(t) {
+// var e = this,
+// i = new Cesium.ScreenSpaceEventHandler(this.viewer.canvas);
+// i.setInputAction(function(i) {
+// var n = e.viewer.scene.pick(i.position),
+// r = null;
+// if (Cesium.defined(n)) {
+// var o = Cesium.defaultValue(n.id, n.primitive.id);
+// if (o instanceof Cesium.Entity) {
+// var a = Cesium.defaultValue(o.inProgress, !1);
+// a || (r = o)
+// }
+// }
+// t(r)
+// }, Cesium.ScreenSpaceEventType.LEFT_CLICK), this.selectHandler = i
+// }, mars3d.drawing.EventControl.prototype.createEditDraggerHandler = function() {
+// var t = new Cesium.ScreenSpaceEventHandler(this.viewer.canvas);
+// t.dragger = null;
+// var e = this;
+// t.setInputAction(function(i) {
+// var n = e.viewer.scene.pick(i.position);
+// if (Cesium.defined(n)) {
+// var r = n.id;
+// r && Cesium.defaultValue(r._isDragger, !1) && (r.billboard && (r.billboard.scale_src = r.billboard.scale._value, r.billboard.scale._value = 1.2 * r.billboard.scale_src), t.dragger = r, e.viewer.scene.screenSpaceCameraController.enableRotate = !1, e.viewer.scene.screenSpaceCameraController.enableTilt = !1, e.viewer.scene.screenSpaceCameraController.enableTranslate = !1)
+// }
+// }, Cesium.ScreenSpaceEventType.LEFT_DOWN), t.setInputAction(function(i) {
+// var n = e.viewer.scene.pick(i.position);
+// if (Cesium.defined(n)) {
+// var r = n.id;
+// r && Cesium.defaultValue(r._isDragger, !1) && (r.billboard && (r.billboard.scale_src = r.billboard.scale._value, r.billboard.scale._value = 1.2 * r.billboard.scale_src), t.dragger = r, e.viewer.scene.screenSpaceCameraController.enableRotate = !1, e.viewer.scene.screenSpaceCameraController.enableTilt = !1, e.viewer.scene.screenSpaceCameraController.enableTranslate = !1)
+// }
+// }, Cesium.ScreenSpaceEventType.LEFT_DOWN, Cesium.KeyboardEventModifier.CTRL), t.setInputAction(function(n) {
+// if (t.dragger) {
+// if (t.dragger.horizontal) {
+// var r;
+// if (t.dragger.model) {
+// var o = e.viewer.scene,
+// a = o.pick(n.endPosition);
+// if (Cesium.defined(a) && a.id == t.dragger) {
+// var s = o.camera.getPickRay(n.endPosition);
+// r = o.globe.pick(s, o)
+// }
+// }
+// null == r && (r = mars3d.latlng.getCurrentMousePosition(e.viewer.scene, n.endPosition)), r && (t.dragger.position = r, t.dragger.onDrag && t.dragger.onDrag(t.dragger, r))
+// }
+// if (t.dragger.vertical) {
+// var l = n.endPosition.y - n.startPosition.y,
+// u = t.dragger.position._value,
+// c = new Cesium.EllipsoidTangentPlane(u);
+// i.center = u, i.radius = 1;
+// var h = e.viewer.scene.frameState.camera.getPixelSize(i, e.viewer.scene.frameState.context.drawingBufferWidth, e.viewer.scene.frameState.context.drawingBufferHeight),
+// d = new Cesium.Cartesian3;
+// Cesium.Cartesian3.multiplyByScalar(c.zAxis, -l * h, d);
+// var p = Cesium.Cartesian3.clone(u);
+// Cesium.Cartesian3.add(u, d, p), t.dragger.position = p, t.dragger.onDrag && t.dragger.onDrag(t.dragger, p)
+// }
+// }
+// }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
+// var i = new Cesium.BoundingSphere;
+// t.setInputAction(function(n) {
+// if (t.dragger && t.dragger.verticalCtrl) {
+// var r = n.endPosition.y - n.startPosition.y,
+// o = t.dragger.position._value,
+// a = new Cesium.EllipsoidTangentPlane(o);
+// i.center = o, i.radius = 1;
+// var s = e.viewer.scene.frameState.camera.getPixelSize(i, e.viewer.scene.frameState.context.drawingBufferWidth, e.viewer.scene.frameState.context.drawingBufferHeight),
+// l = new Cesium.Cartesian3;
+// Cesium.Cartesian3.multiplyByScalar(a.zAxis, -r * s, l);
+// var u = Cesium.Cartesian3.clone(o);
+// Cesium.Cartesian3.add(o, l, u), t.dragger.position = u, t.dragger.onDrag && t.dragger.onDrag(t.dragger, u)
+// }
+// }, Cesium.ScreenSpaceEventType.MOUSE_MOVE, Cesium.KeyboardEventModifier.CTRL), t.setInputAction(function() {
+// t.dragger && (t.dragger.billboard && (t.dragger.billboard.scale._value = t.dragger.billboard.scale_src), t.dragger = null, e.viewer.scene.screenSpaceCameraController.enableRotate = !0, e.viewer.scene.screenSpaceCameraController.enableTilt = !0, e.viewer.scene.screenSpaceCameraController.enableTranslate = !0)
+// }, Cesium.ScreenSpaceEventType.LEFT_UP), t.setInputAction(function() {
+// t.dragger && (t.dragger.billboard && (t.dragger.billboard.scale._value = t.dragger.billboard.scale_src), t.dragger = null, e.viewer.scene.screenSpaceCameraController.enableRotate = !0, e.viewer.scene.screenSpaceCameraController.enableTilt = !0, e.viewer.scene.screenSpaceCameraController.enableTranslate = !0)
+// }, Cesium.ScreenSpaceEventType.LEFT_UP, Cesium.KeyboardEventModifier.CTRL), this.draggerHandler = t
+// }, mars3d.drawing.EventControl.prototype.destroyEditHandler = function() {
+// this.selectHandler && (this.selectHandler.destroy(), this.selectHandler = null), this.draggerHandler && (this.draggerHandler.destroy(), this.draggerHandler = null)
+// }, mars3d.Draw = function(t) {
+// function e(e) {
+// L = e, e ? (k.createEditSelectHandler(function(e) {
+// x && x.inProgress || (e !== x ? (x && x.stopEditing && (x.stopEditing(), x = null), x = e, x && x.startEditing && x.startEditing()) : t.onStopEditing && "function" == typeof t.onStopEditing && t.onStopEditing())
+// }), k.createEditDraggerHandler()) : (n(), k.destroyEditHandler())
+// }
+// function i(t) {
+// if (n(), null == t || null == t.type) throw "请传入需要绘制的类型参数";
+// t.style = t.style || {}, t.attr = t.attr || {};
+// var e = t.type;
+// if (null == b[e]) throw "传入的[" + e + "]类型参数有误";
+// var i = b[e].startDraw(w, t);
+// switch (e) {
+// case "label":
+// case "point":
+// case "billboard":
+// case "model":
+// case "ellipse":
+// case "ellipsoid":
+// k.createDrawPointHandler(i);
+// break;
+// case "polyline":
+// case "polylineVolume":
+// k.createDrawPolylineHandler(i, b[e].getPositions(i));
+// break;
+// case "polygon":
+// k.createDrawPolygonHandler(i, b[e].getPositions(i));
+// break;
+// case "rectangle":
+// case "extrudedRectangle":
+// case "measureHeight":
+// k.createTwoPointsModelHandler(i, b[e].getPositions(i));
+// break;
+// case "wall":
+// var r = b[e].getPositions(i),
+// o = b[e].getMinimumHeights(i),
+// s = b[e].getMaximumHeights(i);
+// k.createDrawWallHandler(i, r, o, s)
+// }
+// return a(i), E.push(i), i.startDrawing(), x = i, i
+// }
+// function n() {
+// return k.destroyDrawHandler(), x && x.inProgress && (x.stopDrawing(), w.entities.remove(x), y(E, x)), x && (x.stopEditing(), x = null), this
+// }
+// function r(t) {
+// if (null != x && null != t) {
+// t.style = t.style || {}, t.attr = t.attr || {};
+// var e = x.attribute.type;
+// return b[e].attribute2Entity(t, x[e]), "model" == e && b[e].attribute2Model(t, x), x.attribute = t, "ellipse" != e && "polygon" != e && "wall" != e && "rectangle" != e || x.editor.updateDraggers(), x
+// }
+// }
+// function o(t) {
+// if (null != x && null != t) {
+// var e = x.attribute.type;
+// return b[e].setPositions(x, t), x.editor.updateDraggers(), x
+// }
+// }
+// function a(e) {
+// e.startDrawing = function() {
+// $(".cesium-viewer").css("cursor", "crosshair");
+// var e = this;
+// t.onStartDrawing && "function" == typeof t.onStartDrawing && t.onStartDrawing(e)
+// }, e.changeDrawing = function() {
+// var e = this;
+// t.onChangeDrawing && "function" == typeof t.onChangeDrawing && t.onChangeDrawing(e)
+// }, e.moveDrawing = function() {
+// var e = this;
+// t.onMoveDrawing && "function" == typeof t.onMoveDrawing && t.onMoveDrawing(e)
+// }, e.stopDrawing = function() {
+// $(".cesium-viewer").css("cursor", "");
+// var e = this;
+// t.onStopDrawing && "function" == typeof t.onStopDrawing && t.onStopDrawing(e)
+// }, e.startEditing = function() {
+// if (L) {
+// var e = this;
+// if (null == e.editor) {
+// var i = e.attribute.type;
+// e.editor = b[i].getEditor(w, e, {
+// dragIcon: C
+// })
+// }
+// t.onStartEditing && "function" == typeof t.onStartEditing && t.onStartEditing(e)
+// }
+// }, e.stopEditing = function() {
+// var e = this;
+// e.editor && (e.editor.destroy(), e.editor = null), t.onStopEditing && "function" == typeof t.onStopEditing && t.onStopEditing()
+// }, e.changeEditing = function() {
+// var e = this;
+// t.onChangeEditing && "function" == typeof t.onChangeEditing && t.onChangeEditing(e)
+// }, e.updatePositions = function(t) {
+// var e = this,
+// i = e.attribute.type;
+// if ("ellipse" == i) {
+// var n = Cesium.Cartographic.fromCartesian(t).height;
+// if (e.attribute.style.height = Number(Number(n).toFixed(2)), e.ellipse.height._value = Number(Number(n).toFixed(2)), e.attribute.style.extrudedHeight) {
+// var r = Number(n) + Number(e.attribute.style.extrudedHeight);
+// e.ellipse.extrudedHeight._value = Number(r.toFixed(2)), e.attribute.style.extrudedHeight = Number(r.toFixed(2))
+// }
+// }
+// b[i].setPositions(x, t)
+// }
+// }
+// function s(t) {
+// null != t && (t.stopEditing(), y(E, t), w.entities.remove(t))
+// }
+// function l() {
+// x && (x.stopEditing(), y(E, x), w.entities.remove(x), x = null)
+// }
+// function u() {
+// n();
+// for (var t = 0; t < E.length; t++) {
+// var e = E[t];
+// e.stopEditing(), w.entities.remove(e)
+// }
+// E = []
+// }
+// function c(t) {
+// var e = t.attribute.type,
+// i = b[e].getCoordinates(t);
+// return i
+// }
+// function h(t) {
+// var e = t.attribute.type,
+// i = b[e].getPositions(t);
+// return i
+// }
+// function d(t, e) {
+// var i = t.attribute.type,
+// e = b[i].setPositions(t, e)
+// }
+// function p() {
+// return E.length > 0
+// }
+// function f() {
+// return E
+// }
+// function m() {
+// if (0 == E.length) return "";
+// for (var t = [], e = 0; e < E.length; e++) {
+// var i = E[e],
+// n = i.attribute.type,
+// r = b[n].toGeoJSON(i);
+// t.push(r)
+// }
+// var r = {
+// type: "FeatureCollection",
+// features: t
+// };
+// return JSON.stringify(r)
+// }
+// function g(t, e, i) {
+// var n = t;
+// try {
+// v(t) && (n = JSON.parse(t))
+// } catch (r) {
+// return void haoutil.alert(r.name + ": " + r.message + " \n请确认json文件格式正确!!!")
+// }
+// e && u();
+// for (var o = n.features, s = 0; s < o.length; s++) {
+// var l = o[s],
+// c = l.properties.type,
+// h = b[c].startDraw(w, l.properties),
+// d = mars3d.drawing.utils.getPositionsFromJson(l.geometry);
+// b[c].setPositions(h, d), a(h), E.push(h)
+// }
+// return i && w.flyTo(E, {
+// duration: 3
+// }), E
+// }
+// function v(t) {
+// return "string" == typeof t && t.constructor == String
+// }
+// function _(t, e, i) {
+// var n = t;
+// try {
+// v(t) && (n = JSON.parse(t))
+// } catch (r) {
+// return void haoutil.alert(r.name + ": " + r.message + " \n请确认json文件格式正确!!!")
+// }
+// if (!(n instanceof Array)) return void haoutil.alert("请确认json文件格式正确!!!");
+// i && u();
+// for (var o = 0; o < n.length; o++) {
+// var s = n[o];
+// if (!s.x || !s.y) return void haoutil.alert(r.name + ": " + r.message + " \n请确认json文件格式正确!!!");
+// var l = {
+// id: s.id || s.ID || "",
+// name: s.name || s.NAME || "",
+// remark: s.remark || s.REMA || ""
+// },
+// c = {
+// type: e.type || "billboard",
+// attr: l,
+// style: e.style
+// },
+// h = Cesium.Cartesian3.fromDegrees(s.x, s.y, s.z || 0),
+// d = b[c.type].startDraw(w, c);
+// b[c.type].setPositions(d, h), a(d), E.push(d)
+// }
+// return E
+// }
+// function y(t, e) {
+// for (var i = 0; i < t.length; i++) if (t[i] == e) {
+// t.splice(i, 1);
+// break
+// }
+// }
+// var b = {
+// billboard: mars3d.drawing.BillboardControl,
+// label: mars3d.drawing.LabelControl,
+// ellipse: mars3d.drawing.EllipseControl,
+// polyline: mars3d.drawing.PolylineControl,
+// polylineVolume: mars3d.drawing.PolylineVolumeControl,
+// polygon: mars3d.drawing.PolygonControl,
+// ellipsoid: mars3d.drawing.EllipsoidControl,
+// wall: mars3d.drawing.WallControl,
+// point: mars3d.drawing.PointControl,
+// rectangle: mars3d.drawing.RectangleControl,
+// model: mars3d.drawing.ModelControl
+// },
+// w = t.viewer,
+// C = (w.scene, t.dragIcon),
+// x = null,
+// E = [],
+// k = new mars3d.drawing.EventControl(w),
+// L = t.hasEdit;
+// return e(t.hasEdit), {
+// startDraw: i,
+// stopDraw: n,
+// updateAttribute: r,
+// updateGeometry: o,
+// toGeoJSON: m,
+// jsonToEntity: g,
+// markersInfoToEntity: _,
+// deleteEntity: s,
+// deleteCurrentEntity: l,
+// deleteAll: u,
+// hasDraw: p,
+// hasEdit: e,
+// getEntitys: f,
+// getCoordinates: c,
+// getPositions: h,
+// setPositions: d
+// }
+// }, mars3d.Measure = function(t) {
+// function e(t) {
+// // debugger;
+// r(), h = "length", t = t || {}, t.type = h, t.hasOwnProperty("terrain") || (t.terrain = !0), p.start(t)
+// }
+// function i(t) {
+// r(), h = "area", t = t || {}, t.type = h, f.start(t)
+// }
+// function n(t) {
+// r(), t = t || {}, t.hasOwnProperty("isSuper") && !t.isSuper ? (h = "height", t.type = h, m.start(t)) : (h = "super_height", t.type = h, g.start(t))
+// }
+// function r() {
+// p.clearLastNoEnd(), f.clearLastNoEnd(), m.clearLastNoEnd(), g.clearLastNoEnd(), d.stopDraw()
+// }
+// function o() {
+// h = "", r();
+// for (var t = d.getEntitys(), e = 0; e < t.length; e++) {
+// var i = t[e];
+// if (i._totalLable && (u.entities.remove(i._totalLable), delete i._totalLable), i._arrLables) {
+// var n = i._arrLables;
+// if (n && n.length > 0) for (var e in n) u.entities.remove(n[e]);
+// delete i._arrLables
+// }
+// }
+// t = [];
+// var o = u.entities.values;
+// for (var e in o) {
+// var i = o[e];
+// i.label && i.isMarsMeasureLabel && t.push(i)
+// }
+// for (var e = 0; e < t.length; e++) {
+// var i = t[e];
+// u.entities.remove(i)
+// }
+// d.deleteAll()
+// }
+// function a(t, e) {
+// var i = u.entities.values;
+// for (var n in i) {
+// var r = i[n];
+// if (r.label && r.isMarsMeasureLabel && r.attribute && r.attribute.value) {
+// if (r.attribute.type != t) continue;
+// "area" == t ? r.label.text._value = (r.attribute.textEx || "") + s(r.attribute.value, e) : r._label.text._value = (r.attribute.textEx || "") + l(r.attribute.value, e)
+// }
+// }
+// }
+// function s(t, e) {
+// if (null == t) return "";
+// null != e && "auto" != e || (e = t < 1e6 ? "m" : "km");
+// var i = "";
+// switch (e) {
+// default:
+// case "m":
+// i = t.toFixed(2) + " 平方米";
+// break;
+// case "km":
+// i = (t / 1e6).toFixed(2) + " 平方公里";
+// break;
+// case "mu":
+// i = (.0015 * t).toFixed(2) + " 亩";
+// break;
+// case "ha":
+// i = (1e-4 * t).toFixed(2) + " 公顷"
+// }
+// return i
+// }
+// function l(t, e) {
+// // debugger;
+// if (null == t) return "";
+// null != e && "auto" != e || (e = t < 1e3 ? "m" : "km");
+// var i = "";
+// switch (e) {
+// default:
+// case "m":
+// i = t.toFixed(2) + " 米";
+// break;
+// case "km":
+// i = (.001 * t).toFixed(2) + " 公里";
+// break;
+// case "mile":
+// i = (54e-5 * t).toFixed(2) + " 海里";
+// break;
+// case "zhang":
+// i = (.3 * t).toFixed(2) + " 丈"
+// }
+// return i
+// }
+// var u = t.viewer,
+// c = t.font || "16px SimHei",
+// h = "",
+// d = new mars3d.Draw({
+// viewer: u,
+// hasEdit: !1,
+// onChangeDrawing: function(t) {
+// switch (h) {
+// case "length":
+// p.showAddPointLength(t);
+// break;
+// case "area":
+// f.showAddPointLength(t);
+// break;
+// case "height":
+// m.showAddPointLength(t);
+// break;
+// case "super_height":
+// g.showAddPointLength(t)
+// }
+// },
+// onMoveDrawing: function(t) {
+// switch (h) {
+// case "length":
+// p.showMoveDrawing(t);
+// break;
+// case "area":
+// f.showMoveDrawing(t);
+// break;
+// case "height":
+// m.showMoveDrawing(t);
+// break;
+// case "super_height":
+// g.showMoveDrawing(t)
+// }
+// },
+// onStopDrawing: function(t) {
+// switch (h) {
+// case "length":
+// p.showDrawEnd(t);
+// break;
+// case "area":
+// f.showDrawEnd(t);
+// break;
+// case "height":
+// m.showDrawEnd(t);
+// break;
+// case "super_height":
+// g.showDrawEnd(t)
+// }
+// }
+// }),
+// p = {
+// options: null,
+// arrLables: [],
+// totalLable: null,
+// clearLastNoEnd: function() {
+// if (null != this.totalLable && u.entities.remove(this.totalLable), this.arrLables && this.arrLables.length > 0) {
+// var t = this.arrLables;
+// if (t && t.length > 0) for (var e in t) u.entities.remove(t[e])
+// }
+// this.totalLable = null, this.arrLables = []
+// },
+// start: function(t) {
+// // debugger;
+// this.options = t, this.totalLable = u.entities.add({
+// label: {
+// style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+// fillColor: Cesium.Color.AZURE,
+// verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
+// eyeOffset: new Cesium.Cartesian3(0, 0, (-20)),
+// outlineColor: Cesium.Color.BLACK,
+// outlineWidth: 3,
+// font: c,
+// show: !1
+// },
+// isMarsMeasureLabel: !0,
+// attribute: {
+// unit: this.options.unit,
+// type: this.options.type
+// }
+// }), this.arrLables = [], d.startDraw({
+// type: "polyline",
+// style: {
+// color: "#ffff00",
+// width: 3
+// }
+// })
+// },
+// showAddPointLength: function(t) {
+// var e = d.getPositions(t),
+// i = u.entities.add({
+// position: e[e.length - 1],
+// label: {
+// style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+// fillColor: Cesium.Color.AZURE,
+// outlineColor: Cesium.Color.BLACK,
+// outlineWidth: 3,
+// verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
+// eyeOffset: new Cesium.Cartesian3(0, 0, (-20)),
+// font: c,
+// show: !0
+// },
+// isMarsMeasureLabel: !0,
+// attribute: {
+// unit: this.options.unit,
+// type: this.options.type
+// }
+// });
+// if (1 == e.length) i.label.text = "起点";
+// else {
+// var n = this.getLength(e),
+// r = l(n, this.options.unit);
+// i.label.text = r, i.attribute.value = n, this.getLength([e[e.length - 2], e[e.length - 1]]) < 5 && (i.show = !1)
+// }
+// this.arrLables.push(i)
+// },
+// showMoveDrawing: function(t) {
+// var e = d.getPositions(t);
+// if (!(e.length < 2)) {
+// var i = this.getLength(e),
+// n = l(i, this.options.unit);
+// this.totalLable.position = e[e.length - 1], this.totalLable.label.text = "全长:" + n, this.totalLable.label.show = !0, this.totalLable.attribute.value = i, this.totalLable.attribute.textEx = "全长:", this.options.calback && this.options.calback(n, i)
+// }
+// },
+// showDrawEnd: function(t) {
+// var e = d.getPositions(t),
+// i = this.arrLables.length - e.length;
+// if (i >= 0) {
+// for (var n = this.arrLables.length - 1; n >= e.length - 1; n--) u.entities.remove(this.arrLables[n]);
+// this.arrLables.splice(e.length - 1, i + 1)
+// }
+// t._totalLable = this.totalLable, t._arrLables = this.arrLables, this.totalLable = null, this.arrLables = [], this.updateLengthForTerrain(t)
+// },
+// updateLengthForTerrain: function(t) {
+// function e() {
+// s++;
+// var h = [n[s - 1], n[s]];
+// mars3d.drawing.utils.terrainPolyline({
+// viewer: u,
+// positions: h,
+// calback: function(u, d) {
+// if (c = d ? 1 == s ? c.concat(h) : c.concat([n[s]]) : c.concat(u), s >= n.length - 1) {
+// if (t.polyline.positions.setValue(c), o) {
+// var p = i.getLength(c),
+// f = l(p, a);
+// o.label.text = "全长:" + f, o.attribute.value = p, i.options.calback && i.options.calback(f, p)
+// }
+// } else {
+// var p = i.getLength(u),
+// f = l(p, a),
+// m = r[s];
+// m.label.text = f, m.attribute.value = p, e()
+// }
+// }
+// })
+// }
+// if (this.options.terrain && null != t.polyline) {
+// var i = this,
+// n = t.polyline.positions.getValue(),
+// r = t._arrLables,
+// o = t._totalLable,
+// a = o && o.unit,
+// s = 0,
+// c = [];
+// e()
+// }
+// },
+// getLength: function(t) {
+// for (var e = 0, i = 0, n = t.length - 1; i < n; i++) e += Cesium.Cartesian3.distance(t[i], t[i + 1]);
+// return e
+// }
+// },
+// f = {
+// options: null,
+// totalLable: null,
+// clearLastNoEnd: function() {
+// null != this.totalLable && u.entities.remove(this.totalLable), this.totalLable = null
+// },
+// start: function(t) {
+// this.options = t,
+// this.totalLable = u.entities.add({
+// label: {
+// style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+// fillColor: Cesium.Color.AZURE,
+// outlineColor: Cesium.Color.BLACK,
+// heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
+// outlineWidth: 3,
+// verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
+// eyeOffset: new Cesium.Cartesian3(0, 0, (-20)),
+// font: c,
+// show: !1
+// },
+// isMarsMeasureLabel: !0,
+// attribute: {
+// unit: this.options.unit,
+// type: this.options.type
+// }
+// }),
+
+// d.startDraw({
+// type: "polygon",
+// style: {
+// color: "#ffff00",
+// outline: !0,
+// outlineColor: "#ffff00",
+// outlineWidth: 4,
+// opacity: .4
+// }
+// })
+// },
+// showAddPointLength: function(t) {},
+// showMoveDrawing: function(t) {
+// var e = d.getPositions(t);
+// if (!(e.length < 3)) {
+// var i = mars3d.drawing.PolygonControl.toGeoJSON(t),
+// n = turf.area(i),
+// r = s(n, this.options.unit),
+// o = turf.centerOfMass(i),
+// a = mars3d.drawing.utils.getMaxHeightForPositions(e),
+// l = Cesium.Cartesian3.fromDegrees(o.geometry.coordinates[0], o.geometry.coordinates[1], a + 1);
+// this.totalLable.position = l, this.totalLable.label.text = "面积:" + r, this.totalLable.label.show = !0, this.totalLable.attribute.value = n, this.totalLable.attribute.textEx = "面积:", this.options.calback && this.options.calback(r, n)
+// }
+// },
+// showDrawEnd: function(t) {
+// if (null != t.polygon) {
+// var e = t.polygon.hierarchy.getValue();
+// $.each(e, function(t, e) {
+// e.z = e.z + 1
+// }), t._totalLable = this.totalLable, this.totalLable = null
+// }
+// }
+// },
+// m = {
+// options: null,
+// totalLable: null,
+// clearLastNoEnd: function() {
+// null != this.totalLable && u.entities.remove(this.totalLable), this.totalLable = null
+// },
+// start: function(t) {
+// this.options = t, this.totalLable = u.entities.add({
+// label: {
+// style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+// fillColor: Cesium.Color.AZURE,
+// outlineColor: Cesium.Color.BLACK,
+// outlineWidth: 3,
+// font: c,
+// show: !1
+// },
+// isMarsMeasureLabel: !0,
+// attribute: {
+// unit: this.options.unit,
+// type: this.options.type
+// }
+// }), d.startDraw({
+// type: "polyline",
+// minMaxPoints: {
+// min: 2,
+// max: 2,
+// isSuper: !1
+// },
+// style: {
+// color: "#ffff00",
+// width: 3
+// }
+// })
+// },
+// showAddPointLength: function(t) {},
+// showMoveDrawing: function(t) {
+// var e = d.getPositions(t);
+// if (!(e.length < 2)) {
+// var i = Cesium.Cartographic.fromCartesian(e[0]),
+// n = Cesium.Cartographic.fromCartesian(e[1]),
+// r = Math.abs(n.height - i.height),
+// o = l(r, this.options.unit);
+// this.totalLable.position = mars3d.drawing.utils.getMidPosition(e[0], e[1]), this.totalLable.label.text = "高度差:" + o, this.totalLable.label.show = !0, this.totalLable.attribute.value = r, this.totalLable.attribute.textEx = "高度差:", this.options.calback && this.options.calback(o, r)
+// }
+// },
+// showDrawEnd: function(t) {
+// t._totalLable = this.totalLable, this.totalLable = null
+// }
+// },
+// g = {
+// options: null,
+// totalLable: null,
+// xLable: null,
+// hLable: null,
+// clearLastNoEnd: function() {
+// null != this.totalLable && u.entities.remove(this.totalLable), null != this.xLable && u.entities.remove(this.xLable), null != this.hLable && u.entities.remove(this.hLable), this.totalLable = null, this.xLable = null, this.hLable = null
+// },
+// start: function(t) {
+// this.options = t, this.totalLable = u.entities.add({
+// label: {
+// style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+// fillColor: Cesium.Color.AZURE,
+// outlineColor: Cesium.Color.BLACK,
+// outlineWidth: 3,
+// font: c,
+// show: !1,
+// pixelOffset: new Cesium.Cartesian2((-40), 0)
+// },
+// isMarsMeasureLabel: !0,
+// attribute: {
+// unit: this.options.unit,
+// type: this.options.type
+// }
+// }), this.xLable = u.entities.add({
+// label: {
+// style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+// fillColor: Cesium.Color.AZURE,
+// outlineColor: Cesium.Color.BLACK,
+// outlineWidth: 3,
+// font: c,
+// show: !1,
+// pixelOffset: new Cesium.Cartesian2((-40), 0)
+// },
+// isMarsMeasureLabel: !0,
+// attribute: {
+// unit: this.options.unit,
+// type: this.options.type
+// }
+// }), this.hLable = u.entities.add({
+// label: {
+// style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+// fillColor: Cesium.Color.AZURE,
+// outlineColor: Cesium.Color.BLACK,
+// outlineWidth: 3,
+// font: c,
+// show: !1,
+// pixelOffset: new Cesium.Cartesian2((-40), 0)
+// },
+// isMarsMeasureLabel: !0,
+// attribute: {
+// unit: this.options.unit,
+// type: this.options.type
+// }
+// }), d.startDraw({
+// type: "polyline",
+// minMaxPoints: {
+// min: 2,
+// max: 2,
+// isSuper: !0
+// },
+// style: {
+// color: "#ffff00",
+// width: 3
+// }
+// })
+// },
+// showAddPointLength: function(t) {
+// var e = d.getPositions(t);
+// if (4 == e.length) {
+// var i = e[3].clone();
+// e.pop(), e.pop(), e.pop(), e.push(i)
+// }
+// if (2 == e.length) {
+// var n = mars3d.drawing.utils.getZHeightPosition(e[0], e[1]),
+// r = mars3d.drawing.utils.getHDistance(e[0], e[1]);
+// r > 3 && (e.push(n), e.push(e[0]))
+// }
+// this.showSuperHeight(e)
+// },
+// showMoveDrawing: function(t) {
+// var e = d.getPositions(t);
+// if (4 == e.length) {
+// var i = e[3].clone();
+// e.pop(), e.pop(), e.pop(), e.push(i)
+// }
+// if (2 == e.length) {
+// var n = mars3d.drawing.utils.getZHeightPosition(e[0], e[1]),
+// r = mars3d.drawing.utils.getHDistance(e[0], e[1]);
+// r > 3 && (e.push(n), e.push(e[0]))
+// }
+// this.showSuperHeight(e)
+// },
+// showDrawEnd: function(t) {
+// t._arrLables = [this.totalLable, this.hLable, this.xLable], this.totalLable = null, this.hLable = null, this.xLable = null
+// },
+// showSuperHeight: function(t) {
+// var e, i, n, r;
+// if (4 == t.length) {
+// var o, a, s = mars3d.drawing.utils.getMidPosition(t[0], t[1]),
+// u = Cesium.Cartographic.fromCartesian(t[0]),
+// c = Cesium.Cartographic.fromCartesian(t[1]),
+// h = Cesium.Cartographic.fromCartesian(t[2]);
+// tempHeight = c.height - h.height, r = c.height - u.height, n = Cesium.Cartesian3.distance(t[0], t[1]), r > -1 && r < 1 ? (a = t[1], this.updateSuperHeightLabel(this.totalLable, a, "高度差", r), this.updateSuperHeightLabel(this.hLable, s, "长度", n)) : (tempHeight > -.1 && tempHeight < .1 ? (o = mars3d.drawing.utils.getMidPosition(t[2], t[1]), a = mars3d.drawing.utils.getMidPosition(t[2], t[3]), i = Cesium.Cartesian3.distance(t[1], t[2]), e = Cesium.Cartesian3.distance(t[3], t[2])) : (a = mars3d.drawing.utils.getMidPosition(t[2], t[1]), o = mars3d.drawing.utils.getMidPosition(t[2], t[3]), i = Cesium.Cartesian3.distance(t[3], t[2]), e = Cesium.Cartesian3.distance(t[1], t[2])), this.updateSuperHeightLabel(this.totalLable, a, "高度差", e), this.updateSuperHeightLabel(this.xLable, o, "水平距离", i), this.updateSuperHeightLabel(this.hLable, s, "长度", n))
+// } else if (2 == t.length) {
+// e = Cesium.Cartesian3.distance(t[1], t[0]);
+// var a = mars3d.drawing.utils.getMidPosition(t[0], t[1]);
+// xLable.label.show && (xLable.label.show = !1, hLable.label.show = !1), this.updateSuperHeightLabel(this.totalLable, a, "高度差", e)
+// }
+// var d = l(e, this.options.unit);
+// this.options.calback && this.options.calback(d, e)
+// },
+// updateSuperHeightLabel: function(t, e, i, n) {
+// null != t && (t.position = e, t.label.text = i + ":" + l(n, this.options.unit), t.label.show = !0, t.attribute.value = n, t.attribute.textEx = i + ":")
+// }
+// };
+// return {
+// measuerLength: e,
+// measureHeight: n,
+// measureArea: i,
+// updateUnit: a,
+// clearMeasure: o,
+// formatArea: s,
+// formatLength: l
+// }
+// };
\ No newline at end of file
diff --git a/widgets/plotting/nls/es/strings.js b/widgets/plotting/nls/es/strings.js
new file mode 100644
index 0000000..72d8114
--- /dev/null
+++ b/widgets/plotting/nls/es/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ _widgetLabel: "plotting"
+ })
+);
\ No newline at end of file
diff --git a/widgets/plotting/nls/strings.js b/widgets/plotting/nls/strings.js
new file mode 100644
index 0000000..853dda8
--- /dev/null
+++ b/widgets/plotting/nls/strings.js
@@ -0,0 +1,7 @@
+define({
+ root: ({
+ _widgetLabel: "plotting"
+ }),
+ "es": 1,
+ "zh-cn": 1
+});
\ No newline at end of file
diff --git a/widgets/plotting/nls/zh-cn/strings.js b/widgets/plotting/nls/zh-cn/strings.js
new file mode 100644
index 0000000..73c5590
--- /dev/null
+++ b/widgets/plotting/nls/zh-cn/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ _widgetLabel: "要素标绘"
+ })
+);
\ No newline at end of file
--
Gitblit v1.9.3