Files
sdk4.0/static/3rdparty/viewerCesiumNavigationMixin.min.js

20757 lines
714 KiB
JavaScript
Raw Permalink Normal View History

2025-07-03 13:54:01 +08:00
;(function(root, factory) {
'use strict'
if (typeof define === 'function' && define.amd) {
define([], factory)
}
Cesium['viewerCesiumNavigationMixin'] = factory()
})(
typeof window !== 'undefined'
? window
: typeof self !== 'undefined'
? self
: this,
function() {
var requirejs, require, define
;(function(undef) {
var main,
req,
makeMap,
handlers,
defined = {},
waiting = {},
config = {},
defining = {},
hasOwn = Object.prototype.hasOwnProperty,
aps = [].slice,
jsSuffixRegExp = /\.js$/
function hasProp(obj, prop) {
return hasOwn.call(obj, prop)
}
function normalize(name, baseName) {
var nameParts,
nameSegment,
mapValue,
foundMap,
lastIndex,
foundI,
foundStarMap,
starI,
i,
j,
part,
normalizedBaseParts,
baseParts = baseName && baseName.split('/'),
map = config.map,
starMap = (map && map['*']) || {}
if (name) {
name = name.split('/')
lastIndex = name.length - 1
if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {
name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '')
}
if (name[0].charAt(0) === '.' && baseParts) {
normalizedBaseParts = baseParts.slice(0, baseParts.length - 1)
name = normalizedBaseParts.concat(name)
}
for (i = 0; i < name.length; i++) {
part = name[i]
if (part === '.') {
name.splice(i, 1)
i -= 1
} else if (part === '..') {
if (
i === 0 ||
(i === 1 && name[2] === '..') ||
name[i - 1] === '..'
) {
continue
} else if (i > 0) {
name.splice(i - 1, 2)
i -= 2
}
}
}
name = name.join('/')
}
if ((baseParts || starMap) && map) {
nameParts = name.split('/')
for (i = nameParts.length; i > 0; i -= 1) {
nameSegment = nameParts.slice(0, i).join('/')
if (baseParts) {
for (j = baseParts.length; j > 0; j -= 1) {
mapValue = map[baseParts.slice(0, j).join('/')]
if (mapValue) {
mapValue = mapValue[nameSegment]
if (mapValue) {
foundMap = mapValue
foundI = i
break
}
}
}
}
if (foundMap) {
break
}
if (!foundStarMap && starMap && starMap[nameSegment]) {
foundStarMap = starMap[nameSegment]
starI = i
}
}
if (!foundMap && foundStarMap) {
foundMap = foundStarMap
foundI = starI
}
if (foundMap) {
nameParts.splice(0, foundI, foundMap)
name = nameParts.join('/')
}
}
return name
}
function makeRequire(relName, forceSync) {
return function() {
var args = aps.call(arguments, 0)
if (typeof args[0] !== 'string' && args.length === 1) {
args.push(null)
}
return req.apply(undef, args.concat([relName, forceSync]))
}
}
function makeNormalize(relName) {
return function(name) {
return normalize(name, relName)
}
}
function makeLoad(depName) {
return function(value) {
defined[depName] = value
}
}
function callDep(name) {
if (hasProp(waiting, name)) {
var args = waiting[name]
delete waiting[name]
defining[name] = true
main.apply(undef, args)
}
if (!hasProp(defined, name) && !hasProp(defining, name)) {
throw new Error('No ' + name)
}
return defined[name]
}
function splitPrefix(name) {
var prefix,
index = name ? name.indexOf('!') : -1
if (index > -1) {
prefix = name.substring(0, index)
name = name.substring(index + 1, name.length)
}
return [prefix, name]
}
makeMap = function(name, relName) {
var plugin,
parts = splitPrefix(name),
prefix = parts[0]
name = parts[1]
if (prefix) {
prefix = normalize(prefix, relName)
plugin = callDep(prefix)
}
if (prefix) {
if (plugin && plugin.normalize) {
name = plugin.normalize(name, makeNormalize(relName))
} else {
name = normalize(name, relName)
}
} else {
name = normalize(name, relName)
parts = splitPrefix(name)
prefix = parts[0]
name = parts[1]
if (prefix) {
plugin = callDep(prefix)
}
}
return {
f: prefix ? prefix + '!' + name : name,
n: name,
pr: prefix,
p: plugin
}
}
function makeConfig(name) {
return function() {
return (config && config.config && config.config[name]) || {}
}
}
handlers = {
require: function(name) {
return makeRequire(name)
},
exports: function(name) {
var e = defined[name]
if (typeof e !== 'undefined') {
return e
} else {
return (defined[name] = {})
}
},
module: function(name) {
return {
id: name,
uri: '',
exports: defined[name],
config: makeConfig(name)
}
}
}
main = function(name, deps, callback, relName) {
var cjsModule,
depName,
ret,
map,
i,
args = [],
callbackType = typeof callback,
usingExports
relName = relName || name
if (callbackType === 'undefined' || callbackType === 'function') {
deps =
!deps.length && callback.length
? ['require', 'exports', 'module']
: deps
for (i = 0; i < deps.length; i += 1) {
map = makeMap(deps[i], relName)
depName = map.f
if (depName === 'require') {
args[i] = handlers.require(name)
} else if (depName === 'exports') {
args[i] = handlers.exports(name)
usingExports = true
} else if (depName === 'module') {
cjsModule = args[i] = handlers.module(name)
} else if (
hasProp(defined, depName) ||
hasProp(waiting, depName) ||
hasProp(defining, depName)
) {
args[i] = callDep(depName)
} else if (map.p) {
map.p.load(
map.n,
makeRequire(relName, true),
makeLoad(depName),
{}
)
args[i] = defined[depName]
} else {
throw new Error(name + ' missing ' + depName)
}
}
ret = callback ? callback.apply(defined[name], args) : undefined
if (name) {
if (
cjsModule &&
cjsModule.exports !== undef &&
cjsModule.exports !== defined[name]
) {
defined[name] = cjsModule.exports
} else if (ret !== undef || !usingExports) {
defined[name] = ret
}
}
} else if (name) {
defined[name] = callback
}
}
requirejs = require = req = function(
deps,
callback,
relName,
forceSync,
alt
) {
if (typeof deps === 'string') {
if (handlers[deps]) {
return handlers[deps](callback)
}
return callDep(makeMap(deps, callback).f)
} else if (!deps.splice) {
config = deps
if (config.deps) {
req(config.deps, config.callback)
}
if (!callback) {
return
}
if (callback.splice) {
deps = callback
callback = relName
relName = null
} else {
deps = undef
}
}
callback = callback || function() {}
if (typeof relName === 'function') {
relName = forceSync
forceSync = alt
}
if (forceSync) {
main(undef, deps, callback, relName)
} else {
setTimeout(function() {
main(undef, deps, callback, relName)
}, 4)
}
return req
}
req.config = function(cfg) {
return req(cfg)
}
requirejs._defined = defined
define = function(name, deps, callback) {
if (typeof name !== 'string') {
throw new Error(
'See almond README: incorrect module build, no module name'
)
}
if (!deps.splice) {
callback = deps
deps = []
}
if (!hasProp(defined, name) && !hasProp(waiting, name)) {
waiting[name] = [name, deps, callback]
}
}
define.amd = { jQuery: true }
})()
define('almond', function() {})
;(function() {
;(function(n) {
var x = this || (0, eval)('this'),
u = x.document,
M = x.navigator,
v = x.jQuery,
F = x.JSON
;(function(n) {
'function' === typeof define && define.amd
? define('knockout', ['exports', 'require'], n)
: 'object' === typeof exports && 'object' === typeof module
? n(module.exports || exports)
: n((x.ko = {}))
})(function(N, O) {
function J(a, c) {
return null === a || typeof a in T ? a === c : !1
}
function U(b, c) {
var d
return function() {
d ||
(d = a.a.setTimeout(function() {
d = n
b()
}, c))
}
}
function V(b, c) {
var d
return function() {
clearTimeout(d)
d = a.a.setTimeout(b, c)
}
}
function W(a, c) {
c && c !== I
? 'beforeChange' === c
? this.Kb(a)
: this.Ha(a, c)
: this.Lb(a)
}
function X(a, c) {
null !== c && c.k && c.k()
}
function Y(a, c) {
var d = this.Hc,
e = d[s]
e.R ||
(this.lb && this.Ma[c]
? (d.Pb(c, a, this.Ma[c]), (this.Ma[c] = null), --this.lb)
: e.r[c] || d.Pb(c, a, e.s ? { ia: a } : d.uc(a)))
}
function K(b, c, d, e) {
a.d[b] = {
init: function(b, g, k, l, m) {
var h, r
a.m(
function() {
var q = a.a.c(g()),
p = !d !== !q,
A = !r
if (A || c || p !== h)
A && a.va.Aa() && (r = a.a.ua(a.f.childNodes(b), !0)),
p
? (A || a.f.da(b, a.a.ua(r)),
a.eb(e ? e(m, q) : m, b))
: a.f.xa(b),
(h = p)
},
null,
{ i: b }
)
return { controlsDescendantBindings: !0 }
}
}
a.h.ta[b] = !1
a.f.Z[b] = !0
}
var a = 'undefined' !== typeof N ? N : {}
a.b = function(b, c) {
for (var d = b.split('.'), e = a, f = 0; f < d.length - 1; f++)
e = e[d[f]]
e[d[d.length - 1]] = c
}
a.G = function(a, c, d) {
a[c] = d
}
a.version = '3.4.0'
a.b('version', a.version)
a.options = { deferUpdates: !1, useOnlyNativeEvents: !1 }
a.a = (function() {
function b(a, b) {
for (var c in a) a.hasOwnProperty(c) && b(c, a[c])
}
function c(a, b) {
if (b) for (var c in b) b.hasOwnProperty(c) && (a[c] = b[c])
return a
}
function d(a, b) {
a.__proto__ = b
return a
}
function e(b, c, d, e) {
var h = b[c].match(r) || []
a.a.q(d.match(r), function(b) {
a.a.pa(h, b, e)
})
b[c] = h.join(' ')
}
var f = { __proto__: [] } instanceof Array,
g = 'function' === typeof Symbol,
k = {},
l = {}
k[
M && /Firefox\/2/i.test(M.userAgent)
? 'KeyboardEvent'
: 'UIEvents'
] = ['keyup', 'keydown', 'keypress']
k.MouseEvents = 'click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave'.split(
' '
)
b(k, function(a, b) {
if (b.length)
for (var c = 0, d = b.length; c < d; c++) l[b[c]] = a
})
var m = { propertychange: !0 },
h =
u &&
(function() {
for (
var a = 3,
b = u.createElement('div'),
c = b.getElementsByTagName('i');
(b.innerHTML =
'<!--[if gt IE ' + ++a + ']><i></i><![endif]-->'),
c[0];
);
return 4 < a ? a : n
})(),
r = /\S+/g
return {
cc: ['authenticity_token', /^__RequestVerificationToken(_.*)?$/],
q: function(a, b) {
for (var c = 0, d = a.length; c < d; c++) b(a[c], c)
},
o: function(a, b) {
if ('function' == typeof Array.prototype.indexOf)
return Array.prototype.indexOf.call(a, b)
for (var c = 0, d = a.length; c < d; c++)
if (a[c] === b) return c
return -1
},
Sb: function(a, b, c) {
for (var d = 0, e = a.length; d < e; d++)
if (b.call(c, a[d], d)) return a[d]
return null
},
La: function(b, c) {
var d = a.a.o(b, c)
0 < d ? b.splice(d, 1) : 0 === d && b.shift()
},
Tb: function(b) {
b = b || []
for (var c = [], d = 0, e = b.length; d < e; d++)
0 > a.a.o(c, b[d]) && c.push(b[d])
return c
},
fb: function(a, b) {
a = a || []
for (var c = [], d = 0, e = a.length; d < e; d++)
c.push(b(a[d], d))
return c
},
Ka: function(a, b) {
a = a || []
for (var c = [], d = 0, e = a.length; d < e; d++)
b(a[d], d) && c.push(a[d])
return c
},
ra: function(a, b) {
if (b instanceof Array) a.push.apply(a, b)
else for (var c = 0, d = b.length; c < d; c++) a.push(b[c])
return a
},
pa: function(b, c, d) {
var e = a.a.o(a.a.zb(b), c)
0 > e ? d && b.push(c) : d || b.splice(e, 1)
},
ka: f,
extend: c,
Xa: d,
Ya: f ? d : c,
D: b,
Ca: function(a, b) {
if (!a) return a
var c = {},
d
for (d in a) a.hasOwnProperty(d) && (c[d] = b(a[d], d, a))
return c
},
ob: function(b) {
for (; b.firstChild; ) a.removeNode(b.firstChild)
},
jc: function(b) {
b = a.a.V(b)
for (
var c = ((b[0] && b[0].ownerDocument) || u).createElement(
'div'
),
d = 0,
e = b.length;
d < e;
d++
)
c.appendChild(a.$(b[d]))
return c
},
ua: function(b, c) {
for (var d = 0, e = b.length, h = []; d < e; d++) {
var m = b[d].cloneNode(!0)
h.push(c ? a.$(m) : m)
}
return h
},
da: function(b, c) {
a.a.ob(b)
if (c)
for (var d = 0, e = c.length; d < e; d++) b.appendChild(c[d])
},
qc: function(b, c) {
var d = b.nodeType ? [b] : b
if (0 < d.length) {
for (
var e = d[0], h = e.parentNode, m = 0, l = c.length;
m < l;
m++
)
h.insertBefore(c[m], e)
m = 0
for (l = d.length; m < l; m++) a.removeNode(d[m])
}
},
za: function(a, b) {
if (a.length) {
for (
b = (8 === b.nodeType && b.parentNode) || b;
a.length && a[0].parentNode !== b;
)
a.splice(0, 1)
for (; 1 < a.length && a[a.length - 1].parentNode !== b; )
a.length--
if (1 < a.length) {
var c = a[0],
d = a[a.length - 1]
for (a.length = 0; c !== d; ) a.push(c), (c = c.nextSibling)
a.push(d)
}
}
return a
},
sc: function(a, b) {
7 > h ? a.setAttribute('selected', b) : (a.selected = b)
},
$a: function(a) {
return null === a || a === n
? ''
: a.trim
? a.trim()
: a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, '')
},
nd: function(a, b) {
a = a || ''
return b.length > a.length ? !1 : a.substring(0, b.length) === b
},
Mc: function(a, b) {
if (a === b) return !0
if (11 === a.nodeType) return !1
if (b.contains)
return b.contains(3 === a.nodeType ? a.parentNode : a)
if (b.compareDocumentPosition)
return 16 == (b.compareDocumentPosition(a) & 16)
for (; a && a != b; ) a = a.parentNode
return !!a
},
nb: function(b) {
return a.a.Mc(b, b.ownerDocument.documentElement)
},
Qb: function(b) {
return !!a.a.Sb(b, a.a.nb)
},
A: function(a) {
return a && a.tagName && a.tagName.toLowerCase()
},
Wb: function(b) {
return a.onError
? function() {
try {
return b.apply(this, arguments)
} catch (c) {
throw (a.onError && a.onError(c), c)
}
}
: b
},
setTimeout: function(b, c) {
return setTimeout(a.a.Wb(b), c)
},
$b: function(b) {
setTimeout(function() {
a.onError && a.onError(b)
throw b
}, 0)
},
p: function(b, c, d) {
var e = a.a.Wb(d)
d = h && m[c]
if (a.options.useOnlyNativeEvents || d || !v)
if (d || 'function' != typeof b.addEventListener)
if ('undefined' != typeof b.attachEvent) {
var l = function(a) {
e.call(b, a)
},
f = 'on' + c
b.attachEvent(f, l)
a.a.F.oa(b, function() {
b.detachEvent(f, l)
})
} else
throw Error(
"Browser doesn't support addEventListener or attachEvent"
)
else b.addEventListener(c, e, !1)
else v(b).bind(c, e)
},
Da: function(b, c) {
if (!b || !b.nodeType)
throw Error(
'element must be a DOM node when calling triggerEvent'
)
var d
'input' === a.a.A(b) && b.type && 'click' == c.toLowerCase()
? ((d = b.type), (d = 'checkbox' == d || 'radio' == d))
: (d = !1)
if (a.options.useOnlyNativeEvents || !v || d)
if ('function' == typeof u.createEvent)
if ('function' == typeof b.dispatchEvent)
(d = u.createEvent(l[c] || 'HTMLEvents')),
d.initEvent(
c,
!0,
!0,
x,
0,
0,
0,
0,
0,
!1,
!1,
!1,
!1,
0,
b
),
b.dispatchEvent(d)
else
throw Error(
"The supplied element doesn't support dispatchEvent"
)
else if (d && b.click) b.click()
else if ('undefined' != typeof b.fireEvent)
b.fireEvent('on' + c)
else throw Error("Browser doesn't support triggering events")
else v(b).trigger(c)
},
c: function(b) {
return a.H(b) ? b() : b
},
zb: function(b) {
return a.H(b) ? b.t() : b
},
bb: function(b, c, d) {
var h
c &&
('object' === typeof b.classList
? ((h = b.classList[d ? 'add' : 'remove']),
a.a.q(c.match(r), function(a) {
h.call(b.classList, a)
}))
: 'string' === typeof b.className.baseVal
? e(b.className, 'baseVal', c, d)
: e(b, 'className', c, d))
},
Za: function(b, c) {
var d = a.a.c(c)
if (null === d || d === n) d = ''
var e = a.f.firstChild(b)
!e || 3 != e.nodeType || a.f.nextSibling(e)
? a.f.da(b, [b.ownerDocument.createTextNode(d)])
: (e.data = d)
a.a.Rc(b)
},
rc: function(a, b) {
a.name = b
if (7 >= h)
try {
a.mergeAttributes(
u.createElement("<input name='" + a.name + "'/>"),
!1
)
} catch (c) {}
},
Rc: function(a) {
9 <= h &&
((a = 1 == a.nodeType ? a : a.parentNode),
a.style && (a.style.zoom = a.style.zoom))
},
Nc: function(a) {
if (h) {
var b = a.style.width
a.style.width = 0
a.style.width = b
}
},
hd: function(b, c) {
b = a.a.c(b)
c = a.a.c(c)
for (var d = [], e = b; e <= c; e++) d.push(e)
return d
},
V: function(a) {
for (var b = [], c = 0, d = a.length; c < d; c++) b.push(a[c])
return b
},
Yb: function(a) {
return g ? Symbol(a) : a
},
rd: 6 === h,
sd: 7 === h,
C: h,
ec: function(b, c) {
for (
var d = a.a
.V(b.getElementsByTagName('input'))
.concat(a.a.V(b.getElementsByTagName('textarea'))),
e =
'string' == typeof c
? function(a) {
return a.name === c
}
: function(a) {
return c.test(a.name)
},
h = [],
m = d.length - 1;
0 <= m;
m--
)
e(d[m]) && h.push(d[m])
return h
},
ed: function(b) {
return 'string' == typeof b && (b = a.a.$a(b))
? F && F.parse
? F.parse(b)
: new Function('return ' + b)()
: null
},
Eb: function(b, c, d) {
if (!F || !F.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 F.stringify(a.a.c(b), c, d)
},
fd: function(c, d, e) {
e = e || {}
var h = e.params || {},
m = e.includeFields || this.cc,
l = c
if ('object' == typeof c && 'form' === a.a.A(c))
for (var l = c.action, f = m.length - 1; 0 <= f; f--)
for (var g = a.a.ec(c, m[f]), k = g.length - 1; 0 <= k; k--)
h[g[k].name] = g[k].value
d = a.a.c(d)
var r = u.createElement('form')
r.style.display = 'none'
r.action = l
r.method = 'post'
for (var n in d)
(c = u.createElement('input')),
(c.type = 'hidden'),
(c.name = n),
(c.value = a.a.Eb(a.a.c(d[n]))),
r.appendChild(c)
b(h, function(a, b) {
var c = u.createElement('input')
c.type = 'hidden'
c.name = a
c.value = b
r.appendChild(c)
})
u.body.appendChild(r)
e.submitter ? e.submitter(r) : r.submit()
setTimeout(function() {
r.parentNode.removeChild(r)
}, 0)
}
}
})()
a.b('utils', a.a)
a.b('utils.arrayForEach', a.a.q)
a.b('utils.arrayFirst', a.a.Sb)
a.b('utils.arrayFilter', a.a.Ka)
a.b('utils.arrayGetDistinctValues', a.a.Tb)
a.b('utils.arrayIndexOf', a.a.o)
a.b('utils.arrayMap', a.a.fb)
a.b('utils.arrayPushAll', a.a.ra)
a.b('utils.arrayRemoveItem', a.a.La)
a.b('utils.extend', a.a.extend)
a.b('utils.fieldsIncludedWithJsonPost', a.a.cc)
a.b('utils.getFormFields', a.a.ec)
a.b('utils.peekObservable', a.a.zb)
a.b('utils.postJson', a.a.fd)
a.b('utils.parseJson', a.a.ed)
a.b('utils.registerEventHandler', a.a.p)
a.b('utils.stringifyJson', a.a.Eb)
a.b('utils.range', a.a.hd)
a.b('utils.toggleDomNodeCssClass', a.a.bb)
a.b('utils.triggerEvent', a.a.Da)
a.b('utils.unwrapObservable', a.a.c)
a.b('utils.objectForEach', a.a.D)
a.b('utils.addOrRemoveItem', a.a.pa)
a.b('utils.setTextContent', a.a.Za)
a.b('unwrap', a.a.c)
Function.prototype.bind ||
(Function.prototype.bind = function(a) {
var c = this
if (1 === arguments.length)
return function() {
return c.apply(a, arguments)
}
var d = Array.prototype.slice.call(arguments, 1)
return function() {
var e = d.slice(0)
e.push.apply(e, arguments)
return c.apply(a, e)
}
})
a.a.e = new (function() {
function a(b, g) {
var k = b[d]
if (!k || 'null' === k || !e[k]) {
if (!g) return n
k = b[d] = 'ko' + c++
e[k] = {}
}
return e[k]
}
var c = 0,
d = '__ko__' + new Date().getTime(),
e = {}
return {
get: function(c, d) {
var e = a(c, !1)
return e === n ? n : e[d]
},
set: function(c, d, e) {
if (e !== n || a(c, !1) !== n) a(c, !0)[d] = e
},
clear: function(a) {
var b = a[d]
return b ? (delete e[b], (a[d] = null), !0) : !1
},
I: function() {
return c++ + d
}
}
})()
a.b('utils.domData', a.a.e)
a.b('utils.domData.clear', a.a.e.clear)
a.a.F = new (function() {
function b(b, c) {
var e = a.a.e.get(b, d)
e === n && c && ((e = []), a.a.e.set(b, d, e))
return e
}
function c(d) {
var e = b(d, !1)
if (e) for (var e = e.slice(0), l = 0; l < e.length; l++) e[l](d)
a.a.e.clear(d)
a.a.F.cleanExternalData(d)
if (f[d.nodeType])
for (e = d.firstChild; (d = e); )
(e = d.nextSibling), 8 === d.nodeType && c(d)
}
var d = a.a.e.I(),
e = { 1: !0, 8: !0, 9: !0 },
f = { 1: !0, 9: !0 }
return {
oa: function(a, c) {
if ('function' != typeof c)
throw Error('Callback must be a function')
b(a, !0).push(c)
},
pc: function(c, e) {
var l = b(c, !1)
l && (a.a.La(l, e), 0 == l.length && a.a.e.set(c, d, n))
},
$: function(b) {
if (e[b.nodeType] && (c(b), f[b.nodeType])) {
var d = []
a.a.ra(d, b.getElementsByTagName('*'))
for (var l = 0, m = d.length; l < m; l++) c(d[l])
}
return b
},
removeNode: function(b) {
a.$(b)
b.parentNode && b.parentNode.removeChild(b)
},
cleanExternalData: function(a) {
v && 'function' == typeof v.cleanData && v.cleanData([a])
}
}
})()
a.$ = a.a.F.$
a.removeNode = a.a.F.removeNode
a.b('cleanNode', a.$)
a.b('removeNode', a.removeNode)
a.b('utils.domNodeDisposal', a.a.F)
a.b('utils.domNodeDisposal.addDisposeCallback', a.a.F.oa)
a.b('utils.domNodeDisposal.removeDisposeCallback', a.a.F.pc)
;(function() {
var b = [0, '', ''],
c = [1, '<table>', '</table>'],
d = [3, '<table><tbody><tr>', '</tr></tbody></table>'],
e = [1, "<select multiple='multiple'>", '</select>'],
f = {
thead: c,
tbody: c,
tfoot: c,
tr: [2, '<table><tbody>', '</tbody></table>'],
td: d,
th: d,
option: e,
optgroup: e
},
g = 8 >= a.a.C
a.a.ma = function(c, d) {
var e
if (v)
if (v.parseHTML) e = v.parseHTML(c, d) || []
else {
if ((e = v.clean([c], d)) && e[0]) {
for (
var h = e[0];
h.parentNode && 11 !== h.parentNode.nodeType;
)
h = h.parentNode
h.parentNode && h.parentNode.removeChild(h)
}
}
else {
;(e = d) || (e = u)
var h = e.parentWindow || e.defaultView || x,
r = a.a.$a(c).toLowerCase(),
q = e.createElement('div'),
p
p = ((r = r.match(/^<([a-z]+)[ >]/)) && f[r[1]]) || b
r = p[0]
p = 'ignored<div>' + p[1] + c + p[2] + '</div>'
'function' == typeof h.innerShiv
? q.appendChild(h.innerShiv(p))
: (g && e.appendChild(q),
(q.innerHTML = p),
g && q.parentNode.removeChild(q))
for (; r--; ) q = q.lastChild
e = a.a.V(q.lastChild.childNodes)
}
return e
}
a.a.Cb = function(b, c) {
a.a.ob(b)
c = a.a.c(c)
if (null !== c && c !== n)
if (('string' != typeof c && (c = c.toString()), v))
v(b).html(c)
else
for (
var d = a.a.ma(c, b.ownerDocument), e = 0;
e < d.length;
e++
)
b.appendChild(d[e])
}
})()
a.b('utils.parseHtmlFragment', a.a.ma)
a.b('utils.setHtml', a.a.Cb)
a.M = (function() {
function b(c, e) {
if (c)
if (8 == c.nodeType) {
var f = a.M.lc(c.nodeValue)
null != f && e.push({ Lc: c, cd: f })
} else if (1 == c.nodeType)
for (var f = 0, g = c.childNodes, k = g.length; f < k; f++)
b(g[f], e)
}
var c = {}
return {
wb: function(a) {
if ('function' != typeof a)
throw Error(
'You can only pass a function to ko.memoization.memoize()'
)
var b =
((4294967296 * (1 + Math.random())) | 0)
.toString(16)
.substring(1) +
((4294967296 * (1 + Math.random())) | 0)
.toString(16)
.substring(1)
c[b] = a
return '<!--[ko_memo:' + b + ']-->'
},
xc: function(a, b) {
var f = c[a]
if (f === n)
throw Error(
"Couldn't find any memo with ID " +
a +
". Perhaps it's already been unmemoized."
)
try {
return f.apply(null, b || []), !0
} finally {
delete c[a]
}
},
yc: function(c, e) {
var f = []
b(c, f)
for (var g = 0, k = f.length; g < k; g++) {
var l = f[g].Lc,
m = [l]
e && a.a.ra(m, e)
a.M.xc(f[g].cd, m)
l.nodeValue = ''
l.parentNode && l.parentNode.removeChild(l)
}
},
lc: function(a) {
return (a = a.match(/^\[ko_memo\:(.*?)\]$/)) ? a[1] : null
}
}
})()
a.b('memoization', a.M)
a.b('memoization.memoize', a.M.wb)
a.b('memoization.unmemoize', a.M.xc)
a.b('memoization.parseMemoText', a.M.lc)
a.b('memoization.unmemoizeDomNodeAndDescendants', a.M.yc)
a.Y = (function() {
function b() {
if (e)
for (var b = e, c = 0, m; g < e; )
if ((m = d[g++])) {
if (g > b) {
if (5e3 <= ++c) {
g = e
a.a.$b(
Error(
"'Too much recursion' after processing " +
c +
' task groups.'
)
)
break
}
b = e
}
try {
m()
} catch (h) {
a.a.$b(h)
}
}
}
function c() {
b()
g = e = d.length = 0
}
var d = [],
e = 0,
f = 1,
g = 0
return {
scheduler: x.MutationObserver
? (function(a) {
var b = u.createElement('div')
new MutationObserver(a).observe(b, { attributes: !0 })
return function() {
b.classList.toggle('foo')
}
})(c)
: u && 'onreadystatechange' in u.createElement('script')
? function(a) {
var b = u.createElement('script')
b.onreadystatechange = function() {
b.onreadystatechange = null
u.documentElement.removeChild(b)
b = null
a()
}
u.documentElement.appendChild(b)
}
: function(a) {
setTimeout(a, 0)
},
Wa: function(b) {
e || a.Y.scheduler(c)
d[e++] = b
return f++
},
cancel: function(a) {
a -= f - e
a >= g && a < e && (d[a] = null)
},
resetForTesting: function() {
var a = e - g
g = e = d.length = 0
return a
},
md: b
}
})()
a.b('tasks', a.Y)
a.b('tasks.schedule', a.Y.Wa)
a.b('tasks.runEarly', a.Y.md)
a.ya = {
throttle: function(b, c) {
b.throttleEvaluation = c
var d = null
return a.B({
read: b,
write: function(e) {
clearTimeout(d)
d = a.a.setTimeout(function() {
b(e)
}, c)
}
})
},
rateLimit: function(a, c) {
var d, e, f
'number' == typeof c ? (d = c) : ((d = c.timeout), (e = c.method))
a.cb = !1
f = 'notifyWhenChangesStop' == e ? V : U
a.Ta(function(a) {
return f(a, d)
})
},
deferred: function(b, c) {
if (!0 !== c)
throw Error(
"The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled."
)
b.cb ||
((b.cb = !0),
b.Ta(function(c) {
var e
return function() {
a.Y.cancel(e)
e = a.Y.Wa(c)
b.notifySubscribers(n, 'dirty')
}
}))
},
notify: function(a, c) {
a.equalityComparer = 'always' == c ? null : J
}
}
var T = { undefined: 1, boolean: 1, number: 1, string: 1 }
a.b('extenders', a.ya)
a.vc = function(b, c, d) {
this.ia = b
this.gb = c
this.Kc = d
this.R = !1
a.G(this, 'dispose', this.k)
}
a.vc.prototype.k = function() {
this.R = !0
this.Kc()
}
a.J = function() {
a.a.Ya(this, D)
D.rb(this)
}
var I = 'change',
D = {
rb: function(a) {
a.K = {}
a.Nb = 1
},
X: function(b, c, d) {
var e = this
d = d || I
var f = new a.vc(e, c ? b.bind(c) : b, function() {
a.a.La(e.K[d], f)
e.Ia && e.Ia(d)
})
e.sa && e.sa(d)
e.K[d] || (e.K[d] = [])
e.K[d].push(f)
return f
},
notifySubscribers: function(b, c) {
c = c || I
c === I && this.zc()
if (this.Pa(c))
try {
a.l.Ub()
for (var d = this.K[c].slice(0), e = 0, f; (f = d[e]); ++e)
f.R || f.gb(b)
} finally {
a.l.end()
}
},
Na: function() {
return this.Nb
},
Uc: function(a) {
return this.Na() !== a
},
zc: function() {
++this.Nb
},
Ta: function(b) {
var c = this,
d = a.H(c),
e,
f,
g
c.Ha ||
((c.Ha = c.notifySubscribers), (c.notifySubscribers = W))
var k = b(function() {
c.Mb = !1
d && g === c && (g = c())
e = !1
c.tb(f, g) && c.Ha((f = g))
})
c.Lb = function(a) {
c.Mb = e = !0
g = a
k()
}
c.Kb = function(a) {
e || ((f = a), c.Ha(a, 'beforeChange'))
}
},
Pa: function(a) {
return this.K[a] && this.K[a].length
},
Sc: function(b) {
if (b) return (this.K[b] && this.K[b].length) || 0
var c = 0
a.a.D(this.K, function(a, b) {
'dirty' !== a && (c += b.length)
})
return c
},
tb: function(a, c) {
return !this.equalityComparer || !this.equalityComparer(a, c)
},
extend: function(b) {
var c = this
b &&
a.a.D(b, function(b, e) {
var f = a.ya[b]
'function' == typeof f && (c = f(c, e) || c)
})
return c
}
}
a.G(D, 'subscribe', D.X)
a.G(D, 'extend', D.extend)
a.G(D, 'getSubscriptionsCount', D.Sc)
a.a.ka && a.a.Xa(D, Function.prototype)
a.J.fn = D
a.hc = function(a) {
return (
null != a &&
'function' == typeof a.X &&
'function' == typeof a.notifySubscribers
)
}
a.b('subscribable', a.J)
a.b('isSubscribable', a.hc)
a.va = a.l = (function() {
function b(a) {
d.push(e)
e = a
}
function c() {
e = d.pop()
}
var d = [],
e,
f = 0
return {
Ub: b,
end: c,
oc: function(b) {
if (e) {
if (!a.hc(b))
throw Error(
'Only subscribable things can act as dependencies'
)
e.gb.call(e.Gc, b, b.Cc || (b.Cc = ++f))
}
},
w: function(a, d, e) {
try {
return b(), a.apply(d, e || [])
} finally {
c()
}
},
Aa: function() {
if (e) return e.m.Aa()
},
Sa: function() {
if (e) return e.Sa
}
}
})()
a.b('computedContext', a.va)
a.b('computedContext.getDependenciesCount', a.va.Aa)
a.b('computedContext.isInitial', a.va.Sa)
a.b('ignoreDependencies', (a.qd = a.l.w))
var E = a.a.Yb('_latestValue')
a.N = function(b) {
function c() {
if (0 < arguments.length)
return (
c.tb(c[E], arguments[0]) &&
(c.ga(), (c[E] = arguments[0]), c.fa()),
this
)
a.l.oc(c)
return c[E]
}
c[E] = b
a.a.ka || a.a.extend(c, a.J.fn)
a.J.fn.rb(c)
a.a.Ya(c, B)
a.options.deferUpdates && a.ya.deferred(c, !0)
return c
}
var B = {
equalityComparer: J,
t: function() {
return this[E]
},
fa: function() {
this.notifySubscribers(this[E])
},
ga: function() {
this.notifySubscribers(this[E], 'beforeChange')
}
}
a.a.ka && a.a.Xa(B, a.J.fn)
var H = (a.N.gd = '__ko_proto__')
B[H] = a.N
a.Oa = function(b, c) {
return null === b || b === n || b[H] === n
? !1
: b[H] === c
? !0
: a.Oa(b[H], c)
}
a.H = function(b) {
return a.Oa(b, a.N)
}
a.Ba = function(b) {
return ('function' == typeof b && b[H] === a.N) ||
('function' == typeof b && b[H] === a.B && b.Vc)
? !0
: !1
}
a.b('observable', a.N)
a.b('isObservable', a.H)
a.b('isWriteableObservable', a.Ba)
a.b('isWritableObservable', a.Ba)
a.b('observable.fn', B)
a.G(B, 'peek', B.t)
a.G(B, 'valueHasMutated', B.fa)
a.G(B, 'valueWillMutate', B.ga)
a.la = function(b) {
b = b || []
if ('object' != typeof b || !('length' in b))
throw Error(
'The argument passed when initializing an observable array must be an array, or null, or undefined.'
)
b = a.N(b)
a.a.Ya(b, a.la.fn)
return b.extend({ trackArrayChanges: !0 })
}
a.la.fn = {
remove: function(b) {
for (
var c = this.t(),
d = [],
e =
'function' != typeof b || a.H(b)
? function(a) {
return a === b
}
: b,
f = 0;
f < c.length;
f++
) {
var g = c[f]
e(g) &&
(0 === d.length && this.ga(), d.push(g), c.splice(f, 1), f--)
}
d.length && this.fa()
return d
},
removeAll: function(b) {
if (b === n) {
var c = this.t(),
d = c.slice(0)
this.ga()
c.splice(0, c.length)
this.fa()
return d
}
return b
? this.remove(function(c) {
return 0 <= a.a.o(b, c)
})
: []
},
destroy: function(b) {
var c = this.t(),
d =
'function' != typeof b || a.H(b)
? function(a) {
return a === b
}
: b
this.ga()
for (var e = c.length - 1; 0 <= e; e--)
d(c[e]) && (c[e]._destroy = !0)
this.fa()
},
destroyAll: function(b) {
return b === n
? this.destroy(function() {
return !0
})
: b
? this.destroy(function(c) {
return 0 <= a.a.o(b, c)
})
: []
},
indexOf: function(b) {
var c = this()
return a.a.o(c, b)
},
replace: function(a, c) {
var d = this.indexOf(a)
0 <= d && (this.ga(), (this.t()[d] = c), this.fa())
}
}
a.a.ka && a.a.Xa(a.la.fn, a.N.fn)
a.a.q(
'pop push reverse shift sort splice unshift'.split(' '),
function(b) {
a.la.fn[b] = function() {
var a = this.t()
this.ga()
this.Vb(a, b, arguments)
var d = a[b].apply(a, arguments)
this.fa()
return d === a ? this : d
}
}
)
a.a.q(['slice'], function(b) {
a.la.fn[b] = function() {
var a = this()
return a[b].apply(a, arguments)
}
})
a.b('observableArray', a.la)
a.ya.trackArrayChanges = function(b, c) {
function d() {
if (!e) {
e = !0
var c = b.notifySubscribers
b.notifySubscribers = function(a, b) {
;(b && b !== I) || ++k
return c.apply(this, arguments)
}
var d = [].concat(b.t() || [])
f = null
g = b.X(function(c) {
c = [].concat(c || [])
if (b.Pa('arrayChange')) {
var e
if (!f || 1 < k) f = a.a.ib(d, c, b.hb)
e = f
}
d = c
f = null
k = 0
e && e.length && b.notifySubscribers(e, 'arrayChange')
})
}
}
b.hb = {}
c && 'object' == typeof c && a.a.extend(b.hb, c)
b.hb.sparse = !0
if (!b.Vb) {
var e = !1,
f = null,
g,
k = 0,
l = b.sa,
m = b.Ia
b.sa = function(a) {
l && l.call(b, a)
'arrayChange' === a && d()
}
b.Ia = function(a) {
m && m.call(b, a)
'arrayChange' !== a || b.Pa('arrayChange') || (g.k(), (e = !1))
}
b.Vb = function(b, c, d) {
function m(a, b, c) {
return (l[l.length] = { status: a, value: b, index: c })
}
if (e && !k) {
var l = [],
g = b.length,
t = d.length,
G = 0
switch (c) {
case 'push':
G = g
case 'unshift':
for (c = 0; c < t; c++) m('added', d[c], G + c)
break
case 'pop':
G = g - 1
case 'shift':
g && m('deleted', b[G], G)
break
case 'splice':
c = Math.min(Math.max(0, 0 > d[0] ? g + d[0] : d[0]), g)
for (
var g = 1 === t ? g : Math.min(c + (d[1] || 0), g),
t = c + t - 2,
G = Math.max(g, t),
P = [],
n = [],
Q = 2;
c < G;
++c, ++Q
)
c < g && n.push(m('deleted', b[c], c)),
c < t && P.push(m('added', d[Q], c))
a.a.dc(n, P)
break
default:
return
}
f = l
}
}
}
}
var s = a.a.Yb('_state')
a.m = a.B = function(b, c, d) {
function e() {
if (0 < arguments.length) {
if ('function' === typeof f) f.apply(g.pb, arguments)
else
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 this
}
a.l.oc(e)
;(g.S || (g.s && e.Qa())) && e.aa()
return g.T
}
'object' === typeof b ? (d = b) : ((d = d || {}), b && (d.read = b))
if ('function' != typeof d.read)
throw Error(
'Pass a function that returns the value of the ko.computed'
)
var f = d.write,
g = {
T: n,
S: !0,
Ra: !1,
Fb: !1,
R: !1,
Va: !1,
s: !1,
jd: d.read,
pb: c || d.owner,
i: d.disposeWhenNodeIsRemoved || d.i || null,
wa: d.disposeWhen || d.wa,
mb: null,
r: {},
L: 0,
bc: null
}
e[s] = g
e.Vc = 'function' === typeof f
a.a.ka || a.a.extend(e, a.J.fn)
a.J.fn.rb(e)
a.a.Ya(e, z)
d.pure
? ((g.Va = !0), (g.s = !0), a.a.extend(e, $))
: d.deferEvaluation && a.a.extend(e, aa)
a.options.deferUpdates && a.ya.deferred(e, !0)
g.i && ((g.Fb = !0), g.i.nodeType || (g.i = null))
g.s || d.deferEvaluation || e.aa()
g.i &&
e.ba() &&
a.a.F.oa(
g.i,
(g.mb = function() {
e.k()
})
)
return e
}
var z = {
equalityComparer: J,
Aa: function() {
return this[s].L
},
Pb: function(a, c, d) {
if (this[s].Va && c === this)
throw Error(
"A 'pure' computed must not be called recursively"
)
this[s].r[a] = d
d.Ga = this[s].L++
d.na = c.Na()
},
Qa: function() {
var a,
c,
d = this[s].r
for (a in d)
if (d.hasOwnProperty(a) && ((c = d[a]), c.ia.Uc(c.na)))
return !0
},
bd: function() {
this.Fa && !this[s].Ra && this.Fa()
},
ba: function() {
return this[s].S || 0 < this[s].L
},
ld: function() {
this.Mb || this.ac()
},
uc: function(a) {
if (a.cb && !this[s].i) {
var c = a.X(this.bd, this, 'dirty'),
d = a.X(this.ld, this)
return {
ia: a,
k: function() {
c.k()
d.k()
}
}
}
return a.X(this.ac, this)
},
ac: function() {
var b = this,
c = b.throttleEvaluation
c && 0 <= c
? (clearTimeout(this[s].bc),
(this[s].bc = a.a.setTimeout(function() {
b.aa(!0)
}, c)))
: b.Fa
? b.Fa()
: b.aa(!0)
},
aa: function(b) {
var c = this[s],
d = c.wa
if (!c.Ra && !c.R) {
if ((c.i && !a.a.nb(c.i)) || (d && d())) {
if (!c.Fb) {
this.k()
return
}
} else c.Fb = !1
c.Ra = !0
try {
this.Qc(b)
} finally {
c.Ra = !1
}
c.L || this.k()
}
},
Qc: function(b) {
var c = this[s],
d = c.Va ? n : !c.L,
e = { Hc: this, Ma: c.r, lb: c.L }
a.l.Ub({ Gc: e, gb: Y, m: this, Sa: d })
c.r = {}
c.L = 0
e = this.Pc(c, e)
this.tb(c.T, e) &&
(c.s || this.notifySubscribers(c.T, 'beforeChange'),
(c.T = e),
c.s ? this.zc() : b && this.notifySubscribers(c.T))
d && this.notifySubscribers(c.T, 'awake')
},
Pc: function(b, c) {
try {
var d = b.jd
return b.pb ? d.call(b.pb) : d()
} finally {
a.l.end(), c.lb && !b.s && a.a.D(c.Ma, X), (b.S = !1)
}
},
t: function() {
var a = this[s]
;((a.S && !a.L) || (a.s && this.Qa())) && this.aa()
return a.T
},
Ta: function(b) {
a.J.fn.Ta.call(this, b)
this.Fa = function() {
this.Kb(this[s].T)
this[s].S = !0
this.Lb(this)
}
},
k: function() {
var b = this[s]
!b.s &&
b.r &&
a.a.D(b.r, function(a, b) {
b.k && b.k()
})
b.i && b.mb && a.a.F.pc(b.i, b.mb)
b.r = null
b.L = 0
b.R = !0
b.S = !1
b.s = !1
b.i = null
}
},
$ = {
sa: function(b) {
var c = this,
d = c[s]
if (!d.R && d.s && 'change' == b) {
d.s = !1
if (d.S || c.Qa()) (d.r = null), (d.L = 0), (d.S = !0), c.aa()
else {
var e = []
a.a.D(d.r, function(a, b) {
e[b.Ga] = a
})
a.a.q(e, function(a, b) {
var e = d.r[a],
l = c.uc(e.ia)
l.Ga = b
l.na = e.na
d.r[a] = l
})
}
d.R || c.notifySubscribers(d.T, 'awake')
}
},
Ia: function(b) {
var c = this[s]
c.R ||
'change' != b ||
this.Pa('change') ||
(a.a.D(c.r, function(a, b) {
b.k && ((c.r[a] = { ia: b.ia, Ga: b.Ga, na: b.na }), b.k())
}),
(c.s = !0),
this.notifySubscribers(n, 'asleep'))
},
Na: function() {
var b = this[s]
b.s && (b.S || this.Qa()) && this.aa()
return a.J.fn.Na.call(this)
}
},
aa = {
sa: function(a) {
;('change' != a && 'beforeChange' != a) || this.t()
}
}
a.a.ka && a.a.Xa(z, a.J.fn)
var R = a.N.gd
a.m[R] = a.N
z[R] = a.m
a.Xc = function(b) {
return a.Oa(b, a.m)
}
a.Yc = function(b) {
return a.Oa(b, a.m) && b[s] && b[s].Va
}
a.b('computed', a.m)
a.b('dependentObservable', a.m)
a.b('isComputed', a.Xc)
a.b('isPureComputed', a.Yc)
a.b('computed.fn', z)
a.G(z, 'peek', z.t)
a.G(z, 'dispose', z.k)
a.G(z, 'isActive', z.ba)
a.G(z, 'getDependenciesCount', z.Aa)
a.nc = function(b, c) {
if ('function' === typeof b) return a.m(b, c, { pure: !0 })
b = a.a.extend({}, b)
b.pure = !0
return a.m(b, c)
}
a.b('pureComputed', a.nc)
;(function() {
function b(a, f, g) {
g = g || new d()
a = f(a)
if (
'object' != typeof a ||
null === a ||
a === n ||
a instanceof RegExp ||
a instanceof Date ||
a instanceof String ||
a instanceof Number ||
a instanceof Boolean
)
return a
var k = a instanceof Array ? [] : {}
g.save(a, k)
c(a, function(c) {
var d = f(a[c])
switch (typeof d) {
case 'boolean':
case 'number':
case 'string':
case 'function':
k[c] = d
break
case 'object':
case 'undefined':
var h = g.get(d)
k[c] = h !== n ? h : b(d, f, g)
}
})
return k
}
function c(a, b) {
if (a instanceof Array) {
for (var c = 0; c < a.length; c++) b(c)
'function' == typeof a.toJSON && b('toJSON')
} else for (c in a) b(c)
}
function d() {
this.keys = []
this.Ib = []
}
a.wc = function(c) {
if (0 == arguments.length)
throw Error(
'When calling ko.toJS, pass the object you want to convert.'
)
return b(c, function(b) {
for (var c = 0; a.H(b) && 10 > c; c++) b = b()
return b
})
}
a.toJSON = function(b, c, d) {
b = a.wc(b)
return a.a.Eb(b, c, d)
}
d.prototype = {
save: function(b, c) {
var d = a.a.o(this.keys, b)
0 <= d ? (this.Ib[d] = c) : (this.keys.push(b), this.Ib.push(c))
},
get: function(b) {
b = a.a.o(this.keys, b)
return 0 <= b ? this.Ib[b] : n
}
}
})()
a.b('toJS', a.wc)
a.b('toJSON', a.toJSON)
;(function() {
a.j = {
u: function(b) {
switch (a.a.A(b)) {
case 'option':
return !0 === b.__ko__hasDomDataOptionValue__
? a.a.e.get(b, a.d.options.xb)
: 7 >= a.a.C
? b.getAttributeNode('value') &&
b.getAttributeNode('value').specified
? b.value
: b.text
: b.value
case 'select':
return 0 <= b.selectedIndex
? a.j.u(b.options[b.selectedIndex])
: n
default:
return b.value
}
},
ha: function(b, c, d) {
switch (a.a.A(b)) {
case 'option':
switch (typeof c) {
case 'string':
a.a.e.set(b, a.d.options.xb, n)
'__ko__hasDomDataOptionValue__' in b &&
delete b.__ko__hasDomDataOptionValue__
b.value = c
break
default:
a.a.e.set(b, a.d.options.xb, c),
(b.__ko__hasDomDataOptionValue__ = !0),
(b.value = 'number' === typeof c ? c : '')
}
break
case 'select':
if ('' === c || null === c) c = n
for (var e = -1, f = 0, g = b.options.length, k; f < g; ++f)
if (
((k = a.j.u(b.options[f])),
k == c || ('' == k && c === n))
) {
e = f
break
}
if (d || 0 <= e || (c === n && 1 < b.size))
b.selectedIndex = e
break
default:
if (null === c || c === n) c = ''
b.value = c
}
}
}
})()
a.b('selectExtensions', a.j)
a.b('selectExtensions.readValue', a.j.u)
a.b('selectExtensions.writeValue', a.j.ha)
a.h = (function() {
function b(b) {
b = a.a.$a(b)
123 === b.charCodeAt(0) && (b = b.slice(1, -1))
var c = [],
d = b.match(e),
r,
k = [],
p = 0
if (d) {
d.push(',')
for (var A = 0, y; (y = d[A]); ++A) {
var t = y.charCodeAt(0)
if (44 === t) {
if (0 >= p) {
c.push(
r && k.length
? { key: r, value: k.join('') }
: { unknown: r || k.join('') }
)
r = p = 0
k = []
continue
}
} else if (58 === t) {
if (!p && !r && 1 === k.length) {
r = k.pop()
continue
}
} else
47 === t && A && 1 < y.length
? (t = d[A - 1].match(f)) &&
!g[t[0]] &&
((b = b.substr(b.indexOf(y) + 1)),
(d = b.match(e)),
d.push(','),
(A = -1),
(y = '/'))
: 40 === t || 123 === t || 91 === t
? ++p
: 41 === t || 125 === t || 93 === t
? --p
: r ||
k.length ||
(34 !== t && 39 !== t) ||
(y = y.slice(1, -1))
k.push(y)
}
}
return c
}
var c = ['true', 'false', 'null', 'undefined'],
d = /^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,
e = RegExp(
'"(?:[^"\\\\]|\\\\.)*"|\'(?:[^\'\\\\]|\\\\.)*\'|/(?:[^/\\\\]|\\\\.)*/w*|[^\\s:,/][^,"\'{}()/:[\\]]*[^\\s,"\'{}()/:[\\]]|[^\\s]',
'g'
),
f = /[\])"'A-Za-z0-9_$]+$/,
g = { in: 1, return: 1, typeof: 1 },
k = {}
return {
ta: [],
ea: k,
yb: b,
Ua: function(e, m) {
function h(b, e) {
var m
if (!A) {
var l = a.getBindingHandler(b)
if (l && l.preprocess && !(e = l.preprocess(e, b, h)))
return
if ((l = k[b]))
(m = e),
0 <= a.a.o(c, m)
? (m = !1)
: ((l = m.match(d)),
(m =
null === l
? !1
: l[1]
? 'Object(' + l[1] + ')' + l[2]
: m)),
(l = m)
l && g.push("'" + b + "':function(_z){" + m + '=_z}')
}
p && (e = 'function(){return ' + e + ' }')
f.push("'" + b + "':" + e)
}
m = m || {}
var f = [],
g = [],
p = m.valueAccessors,
A = m.bindingParams,
y = 'string' === typeof e ? b(e) : e
a.a.q(y, function(a) {
h(a.key || a.unknown, a.value)
})
g.length && h('_ko_property_writers', '{' + g.join(',') + ' }')
return f.join(',')
},
ad: function(a, b) {
for (var c = 0; c < a.length; c++) if (a[c].key == b) return !0
return !1
},
Ea: function(b, c, d, e, f) {
if (b && a.H(b)) !a.Ba(b) || (f && b.t() === e) || b(e)
else if ((b = c.get('_ko_property_writers')) && b[d]) b[d](e)
}
}
})()
a.b('expressionRewriting', a.h)
a.b('expressionRewriting.bindingRewriteValidators', a.h.ta)
a.b('expressionRewriting.parseObjectLiteral', a.h.yb)
a.b('expressionRewriting.preProcessBindings', a.h.Ua)
a.b('expressionRewriting._twoWayBindings', a.h.ea)
a.b('jsonExpressionRewriting', a.h)
a.b('jsonExpressionRewriting.insertPropertyAccessorsIntoJson', a.h.Ua)
;(function() {
function b(a) {
return 8 == a.nodeType && g.test(f ? a.text : a.nodeValue)
}
function c(a) {
return 8 == a.nodeType && k.test(f ? a.text : a.nodeValue)
}
function d(a, d) {
for (var e = a, f = 1, l = []; (e = e.nextSibling); ) {
if (c(e) && (f--, 0 === f)) return l
l.push(e)
b(e) && f++
}
if (!d)
throw Error(
'Cannot find closing comment tag to match: ' + a.nodeValue
)
return null
}
function e(a, b) {
var c = d(a, b)
return c
? 0 < c.length
? c[c.length - 1].nextSibling
: a.nextSibling
: null
}
var f = u && '<!--test-->' === u.createComment('test').text,
g = f
? /^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/
: /^\s*ko(?:\s+([\s\S]+))?\s*$/,
k = f ? /^\x3c!--\s*\/ko\s*--\x3e$/ : /^\s*\/ko\s*$/,
l = { ul: !0, ol: !0 }
a.f = {
Z: {},
childNodes: function(a) {
return b(a) ? d(a) : a.childNodes
},
xa: function(c) {
if (b(c)) {
c = a.f.childNodes(c)
for (var d = 0, e = c.length; d < e; d++) a.removeNode(c[d])
} else a.a.ob(c)
},
da: function(c, d) {
if (b(c)) {
a.f.xa(c)
for (var e = c.nextSibling, f = 0, l = d.length; f < l; f++)
e.parentNode.insertBefore(d[f], e)
} else a.a.da(c, d)
},
mc: function(a, c) {
b(a)
? a.parentNode.insertBefore(c, a.nextSibling)
: a.firstChild
? a.insertBefore(c, a.firstChild)
: a.appendChild(c)
},
gc: function(c, d, e) {
e
? b(c)
? c.parentNode.insertBefore(d, e.nextSibling)
: e.nextSibling
? c.insertBefore(d, e.nextSibling)
: c.appendChild(d)
: a.f.mc(c, d)
},
firstChild: function(a) {
return b(a)
? !a.nextSibling || c(a.nextSibling)
? null
: a.nextSibling
: a.firstChild
},
nextSibling: function(a) {
b(a) && (a = e(a))
return a.nextSibling && c(a.nextSibling) ? null : a.nextSibling
},
Tc: b,
pd: function(a) {
return (a = (f ? a.text : a.nodeValue).match(g)) ? a[1] : null
},
kc: function(d) {
if (l[a.a.A(d)]) {
var h = d.firstChild
if (h) {
do
if (1 === h.nodeType) {
var f
f = h.firstChild
var g = null
if (f) {
do
if (g) g.push(f)
else if (b(f)) {
var k = e(f, !0)
k ? (f = k) : (g = [f])
} else c(f) && (g = [f])
while ((f = f.nextSibling))
}
if ((f = g))
for (g = h.nextSibling, k = 0; k < f.length; k++)
g ? d.insertBefore(f[k], g) : d.appendChild(f[k])
}
while ((h = h.nextSibling))
}
}
}
}
})()
a.b('virtualElements', a.f)
a.b('virtualElements.allowedBindings', a.f.Z)
a.b('virtualElements.emptyNode', a.f.xa)
a.b('virtualElements.insertAfter', a.f.gc)
a.b('virtualElements.prepend', a.f.mc)
a.b('virtualElements.setDomNodeChildren', a.f.da)
;(function() {
a.Q = function() {
this.Fc = {}
}
a.a.extend(a.Q.prototype, {
nodeHasBindings: function(b) {
switch (b.nodeType) {
case 1:
return (
null != b.getAttribute('data-bind') ||
a.g.getComponentNameForNode(b)
)
case 8:
return a.f.Tc(b)
default:
return !1
}
},
getBindings: function(b, c) {
var d = this.getBindingsString(b, c),
d = d ? this.parseBindingsString(d, c, b) : null
return a.g.Ob(d, b, c, !1)
},
getBindingAccessors: function(b, c) {
var d = this.getBindingsString(b, c),
d = d
? this.parseBindingsString(d, c, b, { valueAccessors: !0 })
: null
return a.g.Ob(d, b, c, !0)
},
getBindingsString: function(b) {
switch (b.nodeType) {
case 1:
return b.getAttribute('data-bind')
case 8:
return a.f.pd(b)
default:
return null
}
},
parseBindingsString: function(b, c, d, e) {
try {
var f = this.Fc,
g = b + ((e && e.valueAccessors) || ''),
k
if (!(k = f[g])) {
var l,
m =
'with($context){with($data||{}){return{' +
a.h.Ua(b, e) +
'}}}'
l = new Function('$context', '$element', m)
k = f[g] = l
}
return k(c, d)
} catch (h) {
throw ((h.message =
'Unable to parse bindings.\nBindings value: ' +
b +
'\nMessage: ' +
h.message),
h)
}
}
})
a.Q.instance = new a.Q()
})()
a.b('bindingProvider', a.Q)
;(function() {
function b(a) {
return function() {
return a
}
}
function c(a) {
return a()
}
function d(b) {
return a.a.Ca(a.l.w(b), function(a, c) {
return function() {
return b()[c]
}
})
}
function e(c, e, h) {
return 'function' === typeof c
? d(c.bind(null, e, h))
: a.a.Ca(c, b)
}
function f(a, b) {
return d(this.getBindings.bind(this, a, b))
}
function g(b, c, d) {
var e,
h = a.f.firstChild(c),
f = a.Q.instance,
m = f.preprocessNode
if (m) {
for (; (e = h); ) (h = a.f.nextSibling(e)), m.call(f, e)
h = a.f.firstChild(c)
}
for (; (e = h); ) (h = a.f.nextSibling(e)), k(b, e, d)
}
function k(b, c, d) {
var e = !0,
h = 1 === c.nodeType
h && a.f.kc(c)
if ((h && d) || a.Q.instance.nodeHasBindings(c))
e = m(c, null, b, d).shouldBindDescendants
e && !r[a.a.A(c)] && g(b, c, !h)
}
function l(b) {
var c = [],
d = {},
e = []
a.a.D(b, function Z(h) {
if (!d[h]) {
var f = a.getBindingHandler(h)
f &&
(f.after &&
(e.push(h),
a.a.q(f.after, function(c) {
if (b[c]) {
if (-1 !== a.a.o(e, c))
throw Error(
'Cannot combine the following bindings, because they have a cyclic dependency: ' +
e.join(', ')
)
Z(c)
}
}),
e.length--),
c.push({ key: h, fc: f }))
d[h] = !0
}
})
return c
}
function m(b, d, e, h) {
var m = a.a.e.get(b, q)
if (!d) {
if (m)
throw Error(
'You cannot apply bindings multiple times to the same element.'
)
a.a.e.set(b, q, !0)
}
!m && h && a.tc(b, e)
var g
if (d && 'function' !== typeof d) g = d
else {
var k = a.Q.instance,
r = k.getBindingAccessors || f,
p = a.B(
function() {
;(g = d ? d(e, b) : r.call(k, b, e)) && e.P && e.P()
return g
},
null,
{ i: b }
)
;(g && p.ba()) || (p = null)
}
var u
if (g) {
var v = p
? function(a) {
return function() {
return c(p()[a])
}
}
: function(a) {
return g[a]
},
s = function() {
return a.a.Ca(p ? p() : g, c)
}
s.get = function(a) {
return g[a] && c(v(a))
}
s.has = function(a) {
return a in g
}
h = l(g)
a.a.q(h, function(c) {
var d = c.fc.init,
h = c.fc.update,
f = c.key
if (8 === b.nodeType && !a.f.Z[f])
throw Error(
"The binding '" +
f +
"' cannot be used with virtual elements"
)
try {
'function' == typeof d &&
a.l.w(function() {
var a = d(b, v(f), s, e.$data, e)
if (a && a.controlsDescendantBindings) {
if (u !== n)
throw Error(
'Multiple bindings (' +
u +
' and ' +
f +
') are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.'
)
u = f
}
}),
'function' == typeof h &&
a.B(
function() {
h(b, v(f), s, e.$data, e)
},
null,
{ i: b }
)
} catch (m) {
throw ((m.message =
'Unable to process binding "' +
f +
': ' +
g[f] +
'"\nMessage: ' +
m.message),
m)
}
})
}
return { shouldBindDescendants: u === n }
}
function h(b) {
return b && b instanceof a.U ? b : new a.U(b)
}
a.d = {}
var r = { script: !0, textarea: !0, template: !0 }
a.getBindingHandler = function(b) {
return a.d[b]
}
a.U = function(b, c, d, e) {
var h = this,
f = 'function' == typeof b && !a.H(b),
m,
g = a.B(
function() {
var m = f ? b() : b,
l = a.a.c(m)
c
? (c.P && c.P(), a.a.extend(h, c), g && (h.P = g))
: ((h.$parents = []), (h.$root = l), (h.ko = a))
h.$rawData = m
h.$data = l
d && (h[d] = l)
e && e(h, c, l)
return h.$data
},
null,
{
wa: function() {
return m && !a.a.Qb(m)
},
i: !0
}
)
g.ba() &&
((h.P = g),
(g.equalityComparer = null),
(m = []),
(g.Ac = function(b) {
m.push(b)
a.a.F.oa(b, function(b) {
a.a.La(m, b)
m.length || (g.k(), (h.P = g = n))
})
}))
}
a.U.prototype.createChildContext = function(b, c, d) {
return new a.U(b, this, c, function(a, b) {
a.$parentContext = b
a.$parent = b.$data
a.$parents = (b.$parents || []).slice(0)
a.$parents.unshift(a.$parent)
d && d(a)
})
}
a.U.prototype.extend = function(b) {
return new a.U(this.P || this.$data, this, null, function(c, d) {
c.$rawData = d.$rawData
a.a.extend(c, 'function' == typeof b ? b() : b)
})
}
var q = a.a.e.I(),
p = a.a.e.I()
a.tc = function(b, c) {
if (2 == arguments.length) a.a.e.set(b, p, c), c.P && c.P.Ac(b)
else return a.a.e.get(b, p)
}
a.Ja = function(b, c, d) {
1 === b.nodeType && a.f.kc(b)
return m(b, c, h(d), !0)
}
a.Dc = function(b, c, d) {
d = h(d)
return a.Ja(b, e(c, d, b), d)
}
a.eb = function(a, b) {
;(1 !== b.nodeType && 8 !== b.nodeType) || g(h(a), b, !0)
}
a.Rb = function(a, b) {
!v && x.jQuery && (v = x.jQuery)
if (b && 1 !== b.nodeType && 8 !== b.nodeType)
throw Error(
'ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node'
)
b = b || x.document.body
k(h(a), b, !0)
}
a.kb = function(b) {
switch (b.nodeType) {
case 1:
case 8:
var c = a.tc(b)
if (c) return c
if (b.parentNode) return a.kb(b.parentNode)
}
return n
}
a.Jc = function(b) {
return (b = a.kb(b)) ? b.$data : n
}
a.b('bindingHandlers', a.d)
a.b('applyBindings', a.Rb)
a.b('applyBindingsToDescendants', a.eb)
a.b('applyBindingAccessorsToNode', a.Ja)
a.b('applyBindingsToNode', a.Dc)
a.b('contextFor', a.kb)
a.b('dataFor', a.Jc)
})()
;(function(b) {
function c(c, e) {
var m = f.hasOwnProperty(c) ? f[c] : b,
h
m
? m.X(e)
: ((m = f[c] = new a.J()),
m.X(e),
d(c, function(b, d) {
var e = !(!d || !d.synchronous)
g[c] = { definition: b, Zc: e }
delete f[c]
h || e
? m.notifySubscribers(b)
: a.Y.Wa(function() {
m.notifySubscribers(b)
})
}),
(h = !0))
}
function d(a, b) {
e('getConfig', [a], function(c) {
c
? e('loadComponent', [a, c], function(a) {
b(a, c)
})
: b(null, null)
})
}
function e(c, d, f, h) {
h || (h = a.g.loaders.slice(0))
var g = h.shift()
if (g) {
var q = g[c]
if (q) {
var p = !1
if (
q.apply(
g,
d.concat(function(a) {
p ? f(null) : null !== a ? f(a) : e(c, d, f, h)
})
) !== b &&
((p = !0), !g.suppressLoaderExceptions)
)
throw Error(
'Component loaders must supply values by invoking the callback, not by returning values synchronously.'
)
} else e(c, d, f, h)
} else f(null)
}
var f = {},
g = {}
a.g = {
get: function(d, e) {
var f = g.hasOwnProperty(d) ? g[d] : b
f
? f.Zc
? a.l.w(function() {
e(f.definition)
})
: a.Y.Wa(function() {
e(f.definition)
})
: c(d, e)
},
Xb: function(a) {
delete g[a]
},
Jb: e
}
a.g.loaders = []
a.b('components', a.g)
a.b('components.get', a.g.get)
a.b('components.clearCachedDefinition', a.g.Xb)
})()
;(function() {
function b(b, c, d, e) {
function g() {
0 === --y && e(k)
}
var k = {},
y = 2,
t = d.template
d = d.viewModel
t
? f(c, t, function(c) {
a.g.Jb('loadTemplate', [b, c], function(a) {
k.template = a
g()
})
})
: g()
d
? f(c, d, function(c) {
a.g.Jb('loadViewModel', [b, c], function(a) {
k[l] = a
g()
})
})
: g()
}
function c(a, b, d) {
if ('function' === typeof b)
d(function(a) {
return new b(a)
})
else if ('function' === typeof b[l]) d(b[l])
else if ('instance' in b) {
var e = b.instance
d(function() {
return e
})
} else
'viewModel' in b
? c(a, b.viewModel, d)
: a('Unknown viewModel value: ' + b)
}
function d(b) {
switch (a.a.A(b)) {
case 'script':
return a.a.ma(b.text)
case 'textarea':
return a.a.ma(b.value)
case 'template':
if (e(b.content)) return a.a.ua(b.content.childNodes)
}
return a.a.ua(b.childNodes)
}
function e(a) {
return x.DocumentFragment
? a instanceof DocumentFragment
: a && 11 === a.nodeType
}
function f(a, b, c) {
'string' === typeof b.require
? O || x.require
? (O || x.require)([b.require], c)
: a('Uses require, but no AMD loader is present')
: c(b)
}
function g(a) {
return function(b) {
throw Error("Component '" + a + "': " + b)
}
}
var k = {}
a.g.register = function(b, c) {
if (!c) throw Error('Invalid configuration for ' + b)
if (a.g.ub(b))
throw Error('Component ' + b + ' is already registered')
k[b] = c
}
a.g.ub = function(a) {
return k.hasOwnProperty(a)
}
a.g.od = function(b) {
delete k[b]
a.g.Xb(b)
}
a.g.Zb = {
getConfig: function(a, b) {
b(k.hasOwnProperty(a) ? k[a] : null)
},
loadComponent: function(a, c, d) {
var e = g(a)
f(e, c, function(c) {
b(a, e, c, d)
})
},
loadTemplate: function(b, c, f) {
b = g(b)
if ('string' === typeof c) f(a.a.ma(c))
else if (c instanceof Array) f(c)
else if (e(c)) f(a.a.V(c.childNodes))
else if (c.element)
if (
((c = c.element),
x.HTMLElement
? c instanceof HTMLElement
: c && c.tagName && 1 === c.nodeType)
)
f(d(c))
else if ('string' === typeof c) {
var l = u.getElementById(c)
l ? f(d(l)) : b('Cannot find element with ID ' + c)
} else b('Unknown element type: ' + c)
else b('Unknown template value: ' + c)
},
loadViewModel: function(a, b, d) {
c(g(a), b, d)
}
}
var l = 'createViewModel'
a.b('components.register', a.g.register)
a.b('components.isRegistered', a.g.ub)
a.b('components.unregister', a.g.od)
a.b('components.defaultLoader', a.g.Zb)
a.g.loaders.push(a.g.Zb)
a.g.Bc = k
})()
;(function() {
function b(b, e) {
var f = b.getAttribute('params')
if (f) {
var f = c.parseBindingsString(f, e, b, {
valueAccessors: !0,
bindingParams: !0
}),
f = a.a.Ca(f, function(c) {
return a.m(c, null, { i: b })
}),
g = a.a.Ca(f, function(c) {
var e = c.t()
return c.ba()
? a.m({
read: function() {
return a.a.c(c())
},
write:
a.Ba(e) &&
function(a) {
c()(a)
},
i: b
})
: e
})
g.hasOwnProperty('$raw') || (g.$raw = f)
return g
}
return { $raw: {} }
}
a.g.getComponentNameForNode = function(b) {
var c = a.a.A(b)
if (
a.g.ub(c) &&
(-1 != c.indexOf('-') ||
'[object HTMLUnknownElement]' == '' + b ||
(8 >= a.a.C && b.tagName === c))
)
return c
}
a.g.Ob = function(c, e, f, g) {
if (1 === e.nodeType) {
var k = a.g.getComponentNameForNode(e)
if (k) {
c = c || {}
if (c.component)
throw Error(
'Cannot use the "component" binding on a custom element matching a component'
)
var l = { name: k, params: b(e, f) }
c.component = g
? function() {
return l
}
: l
}
}
return c
}
var c = new a.Q()
9 > a.a.C &&
((a.g.register = (function(a) {
return function(b) {
u.createElement(b)
return a.apply(this, arguments)
}
})(a.g.register)),
(u.createDocumentFragment = (function(b) {
return function() {
var c = b(),
f = a.g.Bc,
g
for (g in f) f.hasOwnProperty(g) && c.createElement(g)
return c
}
})(u.createDocumentFragment)))
})()
;(function(b) {
function c(b, c, d) {
c = c.template
if (!c) throw Error("Component '" + b + "' has no template")
b = a.a.ua(c)
a.f.da(d, b)
}
function d(a, b, c, d) {
var e = a.createViewModel
return e ? e.call(a, d, { element: b, templateNodes: c }) : d
}
var e = 0
a.d.component = {
init: function(f, g, k, l, m) {
function h() {
var a = r && r.dispose
'function' === typeof a && a.call(r)
q = r = null
}
var r,
q,
p = a.a.V(a.f.childNodes(f))
a.a.F.oa(f, h)
a.m(
function() {
var l = a.a.c(g()),
k,
t
'string' === typeof l
? (k = l)
: ((k = a.a.c(l.name)), (t = a.a.c(l.params)))
if (!k) throw Error('No component name specified')
var n = (q = ++e)
a.g.get(k, function(e) {
if (q === n) {
h()
if (!e) throw Error("Unknown component '" + k + "'")
c(k, e, f)
var g = d(e, f, p, t)
e = m.createChildContext(g, b, function(a) {
a.$component = g
a.$componentTemplateNodes = p
})
r = g
a.eb(e, f)
}
})
},
null,
{ i: f }
)
return { controlsDescendantBindings: !0 }
}
}
a.f.Z.component = !0
})()
var S = { class: 'className', for: 'htmlFor' }
a.d.attr = {
update: function(b, c) {
var d = a.a.c(c()) || {}
a.a.D(d, function(c, d) {
d = a.a.c(d)
var g = !1 === d || null === d || d === n
g && b.removeAttribute(c)
8 >= a.a.C && c in S
? ((c = S[c]), g ? b.removeAttribute(c) : (b[c] = d))
: g || b.setAttribute(c, d.toString())
'name' === c && a.a.rc(b, g ? '' : d.toString())
})
}
}
;(function() {
a.d.checked = {
after: ['value', 'attr'],
init: function(b, c, d) {
function e() {
var e = b.checked,
f = p ? g() : e
if (!a.va.Sa() && (!l || e)) {
var m = a.l.w(c)
if (h) {
var k = r ? m.t() : m
q !== f
? (e && (a.a.pa(k, f, !0), a.a.pa(k, q, !1)), (q = f))
: a.a.pa(k, f, e)
r && a.Ba(m) && m(k)
} else a.h.Ea(m, d, 'checked', f, !0)
}
}
function f() {
var d = a.a.c(c())
b.checked = h ? 0 <= a.a.o(d, g()) : k ? d : g() === d
}
var g = a.nc(function() {
return d.has('checkedValue')
? a.a.c(d.get('checkedValue'))
: d.has('value')
? a.a.c(d.get('value'))
: b.value
}),
k = 'checkbox' == b.type,
l = 'radio' == b.type
if (k || l) {
var m = c(),
h = k && a.a.c(m) instanceof Array,
r = !(h && m.push && m.splice),
q = h ? g() : n,
p = l || h
l &&
!b.name &&
a.d.uniqueName.init(b, function() {
return !0
})
a.m(e, null, { i: b })
a.a.p(b, 'click', e)
a.m(f, null, { i: b })
m = n
}
}
}
a.h.ea.checked = !0
a.d.checkedValue = {
update: function(b, c) {
b.value = a.a.c(c())
}
}
})()
a.d.css = {
update: function(b, c) {
var d = a.a.c(c())
null !== d && 'object' == typeof d
? a.a.D(d, function(c, d) {
d = a.a.c(d)
a.a.bb(b, c, d)
})
: ((d = a.a.$a(String(d || ''))),
a.a.bb(b, b.__ko__cssValue, !1),
(b.__ko__cssValue = d),
a.a.bb(b, d, !0))
}
}
a.d.enable = {
update: function(b, c) {
var d = a.a.c(c())
d && b.disabled
? b.removeAttribute('disabled')
: d || b.disabled || (b.disabled = !0)
}
}
a.d.disable = {
update: function(b, c) {
a.d.enable.update(b, function() {
return !a.a.c(c())
})
}
}
a.d.event = {
init: function(b, c, d, e, f) {
var g = c() || {}
a.a.D(g, function(g) {
'string' == typeof g &&
a.a.p(b, g, function(b) {
var m,
h = c()[g]
if (h) {
try {
var r = a.a.V(arguments)
e = f.$data
r.unshift(e)
m = h.apply(e, r)
} finally {
!0 !== m &&
(b.preventDefault
? b.preventDefault()
: (b.returnValue = !1))
}
!1 === d.get(g + 'Bubble') &&
((b.cancelBubble = !0),
b.stopPropagation && b.stopPropagation())
}
})
})
}
}
a.d.foreach = {
ic: function(b) {
return function() {
var c = b(),
d = a.a.zb(c)
if (!d || 'number' == typeof d.length)
return { foreach: c, templateEngine: a.W.sb }
a.a.c(c)
return {
foreach: d.data,
as: d.as,
includeDestroyed: d.includeDestroyed,
afterAdd: d.afterAdd,
beforeRemove: d.beforeRemove,
afterRender: d.afterRender,
beforeMove: d.beforeMove,
afterMove: d.afterMove,
templateEngine: a.W.sb
}
}
},
init: function(b, c) {
return a.d.template.init(b, a.d.foreach.ic(c))
},
update: function(b, c, d, e, f) {
return a.d.template.update(b, a.d.foreach.ic(c), d, e, f)
}
}
a.h.ta.foreach = !1
a.f.Z.foreach = !0
a.d.hasfocus = {
init: function(b, c, d) {
function e(e) {
b.__ko_hasfocusUpdating = !0
var f = b.ownerDocument
if ('activeElement' in f) {
var g
try {
g = f.activeElement
} catch (h) {
g = f.body
}
e = g === b
}
f = c()
a.h.Ea(f, d, 'hasfocus', e, !0)
b.__ko_hasfocusLastValue = e
b.__ko_hasfocusUpdating = !1
}
var f = e.bind(null, !0),
g = e.bind(null, !1)
a.a.p(b, 'focus', f)
a.a.p(b, 'focusin', f)
a.a.p(b, 'blur', g)
a.a.p(b, 'focusout', g)
},
update: function(b, c) {
var d = !!a.a.c(c())
b.__ko_hasfocusUpdating ||
b.__ko_hasfocusLastValue === d ||
(d ? b.focus() : b.blur(),
!d && b.__ko_hasfocusLastValue && b.ownerDocument.body.focus(),
a.l.w(a.a.Da, null, [b, d ? 'focusin' : 'focusout']))
}
}
a.h.ea.hasfocus = !0
a.d.hasFocus = a.d.hasfocus
a.h.ea.hasFocus = !0
a.d.html = {
init: function() {
return { controlsDescendantBindings: !0 }
},
update: function(b, c) {
a.a.Cb(b, c())
}
}
K('if')
K('ifnot', !1, !0)
K('with', !0, !1, function(a, c) {
return a.createChildContext(c)
})
var L = {}
a.d.options = {
init: function(b) {
if ('select' !== a.a.A(b))
throw Error('options binding applies only to SELECT elements')
for (; 0 < b.length; ) b.remove(0)
return { controlsDescendantBindings: !0 }
},
update: function(b, c, d) {
function e() {
return a.a.Ka(b.options, function(a) {
return a.selected
})
}
function f(a, b, c) {
var d = typeof b
return 'function' == d ? b(a) : 'string' == d ? a[b] : c
}
function g(c, e) {
if (A && h) a.j.ha(b, a.a.c(d.get('value')), !0)
else if (p.length) {
var f = 0 <= a.a.o(p, a.j.u(e[0]))
a.a.sc(e[0], f)
A && !f && a.l.w(a.a.Da, null, [b, 'change'])
}
}
var k = b.multiple,
l = 0 != b.length && k ? b.scrollTop : null,
m = a.a.c(c()),
h = d.get('valueAllowUnset') && d.has('value'),
r = d.get('optionsIncludeDestroyed')
c = {}
var q,
p = []
h ||
(k
? (p = a.a.fb(e(), a.j.u))
: 0 <= b.selectedIndex &&
p.push(a.j.u(b.options[b.selectedIndex])))
m &&
('undefined' == typeof m.length && (m = [m]),
(q = a.a.Ka(m, function(b) {
return r || b === n || null === b || !a.a.c(b._destroy)
})),
d.has('optionsCaption') &&
((m = a.a.c(d.get('optionsCaption'))),
null !== m && m !== n && q.unshift(L)))
var A = !1
c.beforeRemove = function(a) {
b.removeChild(a)
}
m = g
d.has('optionsAfterRender') &&
'function' == typeof d.get('optionsAfterRender') &&
(m = function(b, c) {
g(0, c)
a.l.w(d.get('optionsAfterRender'), null, [
c[0],
b !== L ? b : n
])
})
a.a.Bb(
b,
q,
function(c, e, g) {
g.length &&
((p = !h && g[0].selected ? [a.j.u(g[0])] : []), (A = !0))
e = b.ownerDocument.createElement('option')
c === L
? (a.a.Za(e, d.get('optionsCaption')), a.j.ha(e, n))
: ((g = f(c, d.get('optionsValue'), c)),
a.j.ha(e, a.a.c(g)),
(c = f(c, d.get('optionsText'), g)),
a.a.Za(e, c))
return [e]
},
c,
m
)
a.l.w(function() {
h
? a.j.ha(b, a.a.c(d.get('value')), !0)
: (k
? p.length && e().length < p.length
: p.length && 0 <= b.selectedIndex
? a.j.u(b.options[b.selectedIndex]) !== p[0]
: p.length || 0 <= b.selectedIndex) && a.a.Da(b, 'change')
})
a.a.Nc(b)
l && 20 < Math.abs(l - b.scrollTop) && (b.scrollTop = l)
}
}
a.d.options.xb = a.a.e.I()
a.d.selectedOptions = {
after: ['options', 'foreach'],
init: function(b, c, d) {
a.a.p(b, 'change', function() {
var e = c(),
f = []
a.a.q(b.getElementsByTagName('option'), function(b) {
b.selected && f.push(a.j.u(b))
})
a.h.Ea(e, d, 'selectedOptions', f)
})
},
update: function(b, c) {
if ('select' != a.a.A(b))
throw Error('values binding applies only to SELECT elements')
var d = a.a.c(c()),
e = b.scrollTop
d &&
'number' == typeof d.length &&
a.a.q(b.getElementsByTagName('option'), function(b) {
var c = 0 <= a.a.o(d, a.j.u(b))
b.selected != c && a.a.sc(b, c)
})
b.scrollTop = e
}
}
a.h.ea.selectedOptions = !0
a.d.style = {
update: function(b, c) {
var d = a.a.c(c() || {})
a.a.D(d, function(c, d) {
d = a.a.c(d)
if (null === d || d === n || !1 === d) d = ''
b.style[c] = d
})
}
}
a.d.submit = {
init: function(b, c, d, e, f) {
if ('function' != typeof c())
throw Error('The value for a submit binding must be a function')
a.a.p(b, 'submit', function(a) {
var d,
e = c()
try {
d = e.call(f.$data, b)
} finally {
!0 !== d &&
(a.preventDefault
? a.preventDefault()
: (a.returnValue = !1))
}
})
}
}
a.d.text = {
init: function() {
return { controlsDescendantBindings: !0 }
},
update: function(b, c) {
a.a.Za(b, c())
}
}
a.f.Z.text = !0
;(function() {
if (x && x.navigator)
var b = function(a) {
if (a) return parseFloat(a[1])
},
c = x.opera && x.opera.version && parseInt(x.opera.version()),
d = x.navigator.userAgent,
e = b(d.match(/^(?:(?!chrome).)*version\/([^ ]*) safari/i)),
f = b(d.match(/Firefox\/([^ ]*)/))
if (10 > a.a.C)
var g = a.a.e.I(),
k = a.a.e.I(),
l = function(b) {
var c = this.activeElement
;(c = c && a.a.e.get(c, k)) && c(b)
},
m = function(b, c) {
var d = b.ownerDocument
a.a.e.get(d, g) ||
(a.a.e.set(d, g, !0), a.a.p(d, 'selectionchange', l))
a.a.e.set(b, k, c)
}
a.d.textInput = {
init: function(b, d, g) {
function l(c, d) {
a.a.p(b, c, d)
}
function k() {
var c = a.a.c(d())
if (null === c || c === n) c = ''
v !== n && c === v
? a.a.setTimeout(k, 4)
: b.value !== c && ((u = c), (b.value = c))
}
function y() {
s || ((v = b.value), (s = a.a.setTimeout(t, 4)))
}
function t() {
clearTimeout(s)
v = s = n
var c = b.value
u !== c && ((u = c), a.h.Ea(d(), g, 'textInput', c))
}
var u = b.value,
s,
v,
x = 9 == a.a.C ? y : t
10 > a.a.C
? (l('propertychange', function(a) {
'value' === a.propertyName && x(a)
}),
8 == a.a.C && (l('keyup', t), l('keydown', t)),
8 <= a.a.C && (m(b, x), l('dragend', y)))
: (l('input', t),
5 > e && 'textarea' === a.a.A(b)
? (l('keydown', y), l('paste', y), l('cut', y))
: 11 > c
? l('keydown', y)
: 4 > f &&
(l('DOMAutoComplete', t),
l('dragdrop', t),
l('drop', t)))
l('change', t)
a.m(k, null, { i: b })
}
}
a.h.ea.textInput = !0
a.d.textinput = {
preprocess: function(a, b, c) {
c('textInput', a)
}
}
})()
a.d.uniqueName = {
init: function(b, c) {
if (c()) {
var d = 'ko_unique_' + ++a.d.uniqueName.Ic
a.a.rc(b, d)
}
}
}
a.d.uniqueName.Ic = 0
a.d.value = {
after: ['options', 'foreach'],
init: function(b, c, d) {
if (
'input' != b.tagName.toLowerCase() ||
('checkbox' != b.type && 'radio' != b.type)
) {
var e = ['change'],
f = d.get('valueUpdate'),
g = !1,
k = null
f &&
('string' == typeof f && (f = [f]),
a.a.ra(e, f),
(e = a.a.Tb(e)))
var l = function() {
k = null
g = !1
var e = c(),
f = a.j.u(b)
a.h.Ea(e, d, 'value', f)
}
!a.a.C ||
'input' != b.tagName.toLowerCase() ||
'text' != b.type ||
'off' == b.autocomplete ||
(b.form && 'off' == b.form.autocomplete) ||
-1 != a.a.o(e, 'propertychange') ||
(a.a.p(b, 'propertychange', function() {
g = !0
}),
a.a.p(b, 'focus', function() {
g = !1
}),
a.a.p(b, 'blur', function() {
g && l()
}))
a.a.q(e, function(c) {
var d = l
a.a.nd(c, 'after') &&
((d = function() {
k = a.j.u(b)
a.a.setTimeout(l, 0)
}),
(c = c.substring(5)))
a.a.p(b, c, d)
})
var m = function() {
var e = a.a.c(c()),
f = a.j.u(b)
if (null !== k && e === k) a.a.setTimeout(m, 0)
else if (e !== f)
if ('select' === a.a.A(b)) {
var g = d.get('valueAllowUnset'),
f = function() {
a.j.ha(b, e, g)
}
f()
g || e === a.j.u(b)
? a.a.setTimeout(f, 0)
: a.l.w(a.a.Da, null, [b, 'change'])
} else a.j.ha(b, e)
}
a.m(m, null, { i: b })
} else a.Ja(b, { checkedValue: c })
},
update: function() {}
}
a.h.ea.value = !0
a.d.visible = {
update: function(b, c) {
var d = a.a.c(c()),
e = 'none' != b.style.display
d && !e
? (b.style.display = '')
: !d && e && (b.style.display = 'none')
}
}
;(function(b) {
a.d[b] = {
init: function(c, d, e, f, g) {
return a.d.event.init.call(
this,
c,
function() {
var a = {}
a[b] = d()
return a
},
e,
f,
g
)
}
}
})('click')
a.O = function() {}
a.O.prototype.renderTemplateSource = function() {
throw Error('Override renderTemplateSource')
}
a.O.prototype.createJavaScriptEvaluatorBlock = function() {
throw Error('Override createJavaScriptEvaluatorBlock')
}
a.O.prototype.makeTemplateSource = function(b, c) {
if ('string' == typeof b) {
c = c || u
var d = c.getElementById(b)
if (!d) throw Error('Cannot find template with ID ' + b)
return new a.v.n(d)
}
if (1 == b.nodeType || 8 == b.nodeType) return new a.v.qa(b)
throw Error('Unknown template type: ' + b)
}
a.O.prototype.renderTemplate = function(a, c, d, e) {
a = this.makeTemplateSource(a, e)
return this.renderTemplateSource(a, c, d, e)
}
a.O.prototype.isTemplateRewritten = function(a, c) {
return !1 === this.allowTemplateRewriting
? !0
: this.makeTemplateSource(a, c).data('isRewritten')
}
a.O.prototype.rewriteTemplate = function(a, c, d) {
a = this.makeTemplateSource(a, d)
c = c(a.text())
a.text(c)
a.data('isRewritten', !0)
}
a.b('templateEngine', a.O)
a.Gb = (function() {
function b(b, c, d, k) {
b = a.h.yb(b)
for (var l = a.h.ta, m = 0; m < b.length; m++) {
var h = b[m].key
if (l.hasOwnProperty(h)) {
var r = l[h]
if ('function' === typeof r) {
if ((h = r(b[m].value))) throw Error(h)
} else if (!r)
throw Error(
"This template engine does not support the '" +
h +
"' binding within its templates"
)
}
}
d =
'ko.__tr_ambtns(function($context,$element){return(function(){return{ ' +
a.h.Ua(b, { valueAccessors: !0 }) +
" } })()},'" +
d.toLowerCase() +
"')"
return k.createJavaScriptEvaluatorBlock(d) + c
}
var c = /(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,
d = /\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g
return {
Oc: function(b, c, d) {
c.isTemplateRewritten(b, d) ||
c.rewriteTemplate(
b,
function(b) {
return a.Gb.dd(b, c)
},
d
)
},
dd: function(a, f) {
return a
.replace(c, function(a, c, d, e, h) {
return b(h, c, d, f)
})
.replace(d, function(a, c) {
return b(c, '<!-- ko -->', '#comment', f)
})
},
Ec: function(b, c) {
return a.M.wb(function(d, k) {
var l = d.nextSibling
l && l.nodeName.toLowerCase() === c && a.Ja(l, b, k)
})
}
}
})()
a.b('__tr_ambtns', a.Gb.Ec)
;(function() {
a.v = {}
a.v.n = function(b) {
if ((this.n = b)) {
var c = a.a.A(b)
this.ab =
'script' === c
? 1
: 'textarea' === c
? 2
: 'template' == c && b.content && 11 === b.content.nodeType
? 3
: 4
}
}
a.v.n.prototype.text = function() {
var b =
1 === this.ab ? 'text' : 2 === this.ab ? 'value' : 'innerHTML'
if (0 == arguments.length) return this.n[b]
var c = arguments[0]
'innerHTML' === b ? a.a.Cb(this.n, c) : (this.n[b] = c)
}
var b = a.a.e.I() + '_'
a.v.n.prototype.data = function(c) {
if (1 === arguments.length) return a.a.e.get(this.n, b + c)
a.a.e.set(this.n, b + c, arguments[1])
}
var c = a.a.e.I()
a.v.n.prototype.nodes = function() {
var b = this.n
if (0 == arguments.length)
return (
(a.a.e.get(b, c) || {}).jb ||
(3 === this.ab ? b.content : 4 === this.ab ? b : n)
)
a.a.e.set(b, c, { jb: arguments[0] })
}
a.v.qa = function(a) {
this.n = a
}
a.v.qa.prototype = new a.v.n()
a.v.qa.prototype.text = function() {
if (0 == arguments.length) {
var b = a.a.e.get(this.n, c) || {}
b.Hb === n && b.jb && (b.Hb = b.jb.innerHTML)
return b.Hb
}
a.a.e.set(this.n, c, { Hb: arguments[0] })
}
a.b('templateSources', a.v)
a.b('templateSources.domElement', a.v.n)
a.b('templateSources.anonymousTemplate', a.v.qa)
})()
;(function() {
function b(b, c, d) {
var e
for (c = a.f.nextSibling(c); b && (e = b) !== c; )
(b = a.f.nextSibling(e)), d(e, b)
}
function c(c, d) {
if (c.length) {
var e = c[0],
f = c[c.length - 1],
g = e.parentNode,
k = a.Q.instance,
n = k.preprocessNode
if (n) {
b(e, f, function(a, b) {
var c = a.previousSibling,
d = n.call(k, a)
d &&
(a === e && (e = d[0] || b),
a === f && (f = d[d.length - 1] || c))
})
c.length = 0
if (!e) return
e === f ? c.push(e) : (c.push(e, f), a.a.za(c, g))
}
b(e, f, function(b) {
;(1 !== b.nodeType && 8 !== b.nodeType) || a.Rb(d, b)
})
b(e, f, function(b) {
;(1 !== b.nodeType && 8 !== b.nodeType) || a.M.yc(b, [d])
})
a.a.za(c, g)
}
}
function d(a) {
return a.nodeType ? a : 0 < a.length ? a[0] : null
}
function e(b, e, f, k, q) {
q = q || {}
var p = ((b && d(b)) || f || {}).ownerDocument,
n = q.templateEngine || g
a.Gb.Oc(f, n, p)
f = n.renderTemplate(f, k, q, p)
if (
'number' != typeof f.length ||
(0 < f.length && 'number' != typeof f[0].nodeType)
)
throw Error('Template engine must return an array of DOM nodes')
p = !1
switch (e) {
case 'replaceChildren':
a.f.da(b, f)
p = !0
break
case 'replaceNode':
a.a.qc(b, f)
p = !0
break
case 'ignoreTargetNode':
break
default:
throw Error('Unknown renderMode: ' + e)
}
p &&
(c(f, k),
q.afterRender && a.l.w(q.afterRender, null, [f, k.$data]))
return f
}
function f(b, c, d) {
return a.H(b) ? b() : 'function' === typeof b ? b(c, d) : b
}
var g
a.Db = function(b) {
if (b != n && !(b instanceof a.O))
throw Error(
'templateEngine must inherit from ko.templateEngine'
)
g = b
}
a.Ab = function(b, c, h, k, q) {
h = h || {}
if ((h.templateEngine || g) == n)
throw Error(
'Set a template engine before calling renderTemplate'
)
q = q || 'replaceChildren'
if (k) {
var p = d(k)
return a.B(
function() {
var g = c && c instanceof a.U ? c : new a.U(a.a.c(c)),
n = f(b, g.$data, g),
g = e(k, q, n, g, h)
'replaceNode' == q && ((k = g), (p = d(k)))
},
null,
{
wa: function() {
return !p || !a.a.nb(p)
},
i: p && 'replaceNode' == q ? p.parentNode : p
}
)
}
return a.M.wb(function(d) {
a.Ab(b, c, h, d, 'replaceNode')
})
}
a.kd = function(b, d, g, k, q) {
function p(a, b) {
c(b, s)
g.afterRender && g.afterRender(b, a)
s = null
}
function u(a, c) {
s = q.createChildContext(a, g.as, function(a) {
a.$index = c
})
var d = f(b, a, s)
return e(null, 'ignoreTargetNode', d, s, g)
}
var s
return a.B(
function() {
var b = a.a.c(d) || []
'undefined' == typeof b.length && (b = [b])
b = a.a.Ka(b, function(b) {
return (
g.includeDestroyed ||
b === n ||
null === b ||
!a.a.c(b._destroy)
)
})
a.l.w(a.a.Bb, null, [k, b, u, g, p])
},
null,
{ i: k }
)
}
var k = a.a.e.I()
a.d.template = {
init: function(b, c) {
var d = a.a.c(c())
if ('string' == typeof d || d.name) a.f.xa(b)
else {
if ('nodes' in d) {
if (((d = d.nodes || []), a.H(d)))
throw Error(
'The "nodes" option must be a plain, non-observable array.'
)
} else d = a.f.childNodes(b)
d = a.a.jc(d)
new a.v.qa(b).nodes(d)
}
return { controlsDescendantBindings: !0 }
},
update: function(b, c, d, e, f) {
var g = c(),
s
c = a.a.c(g)
d = !0
e = null
'string' == typeof c
? (c = {})
: ((g = c.name),
'if' in c && (d = a.a.c(c['if'])),
d && 'ifnot' in c && (d = !a.a.c(c.ifnot)),
(s = a.a.c(c.data)))
'foreach' in c
? (e = a.kd(g || b, (d && c.foreach) || [], c, b, f))
: d
? ((f = 'data' in c ? f.createChildContext(s, c.as) : f),
(e = a.Ab(g || b, f, c, b)))
: a.f.xa(b)
f = e
;(s = a.a.e.get(b, k)) && 'function' == typeof s.k && s.k()
a.a.e.set(b, k, f && f.ba() ? f : n)
}
}
a.h.ta.template = function(b) {
b = a.h.yb(b)
return (1 == b.length && b[0].unknown) || a.h.ad(b, 'name')
? null
: 'This template engine does not support anonymous templates nested within its templates'
}
a.f.Z.template = !0
})()
a.b('setTemplateEngine', a.Db)
a.b('renderTemplate', a.Ab)
a.a.dc = function(a, c, d) {
if (a.length && c.length) {
var e, f, g, k, l
for (e = f = 0; (!d || e < d) && (k = a[f]); ++f) {
for (g = 0; (l = c[g]); ++g)
if (k.value === l.value) {
k.moved = l.index
l.moved = k.index
c.splice(g, 1)
e = g = 0
break
}
e += g
}
}
}
a.a.ib = (function() {
function b(b, d, e, f, g) {
var k = Math.min,
l = Math.max,
m = [],
h,
n = b.length,
q,
p = d.length,
s = p - n || 1,
u = n + p + 1,
t,
v,
x
for (h = 0; h <= n; h++)
for (
v = t, m.push((t = [])), x = k(p, h + s), q = l(0, h - 1);
q <= x;
q++
)
t[q] = q
? h
? b[h - 1] === d[q - 1]
? v[q - 1]
: k(v[q] || u, t[q - 1] || u) + 1
: q + 1
: h + 1
k = []
l = []
s = []
h = n
for (q = p; h || q; )
(p = m[h][q] - 1),
q && p === m[h][q - 1]
? l.push(
(k[k.length] = {
status: e,
value: d[--q],
index: q
})
)
: h && p === m[h - 1][q]
? s.push(
(k[k.length] = {
status: f,
value: b[--h],
index: h
})
)
: (--q,
--h,
g.sparse || k.push({ status: 'retained', value: d[q] }))
a.a.dc(s, l, !g.dontLimitMoves && 10 * n)
return k.reverse()
}
return function(a, d, e) {
e = 'boolean' === typeof e ? { dontLimitMoves: e } : e || {}
a = a || []
d = d || []
return a.length < d.length
? b(a, d, 'added', 'deleted', e)
: b(d, a, 'deleted', 'added', e)
}
})()
a.b('utils.compareArrays', a.a.ib)
;(function() {
function b(b, c, d, k, l) {
var m = [],
h = a.B(
function() {
var h = c(d, l, a.a.za(m, b)) || []
0 < m.length &&
(a.a.qc(m, h), k && a.l.w(k, null, [d, h, l]))
m.length = 0
a.a.ra(m, h)
},
null,
{
i: b,
wa: function() {
return !a.a.Qb(m)
}
}
)
return { ca: m, B: h.ba() ? h : n }
}
var c = a.a.e.I(),
d = a.a.e.I()
a.a.Bb = function(e, f, g, k, l) {
function m(b, c) {
w = q[c]
v !== c && (D[b] = w)
w.qb(v++)
a.a.za(w.ca, e)
u.push(w)
z.push(w)
}
function h(b, c) {
if (b)
for (var d = 0, e = c.length; d < e; d++)
c[d] &&
a.a.q(c[d].ca, function(a) {
b(a, d, c[d].ja)
})
}
f = f || []
k = k || {}
var r = a.a.e.get(e, c) === n,
q = a.a.e.get(e, c) || [],
p = a.a.fb(q, function(a) {
return a.ja
}),
s = a.a.ib(p, f, k.dontLimitMoves),
u = [],
t = 0,
v = 0,
x = [],
z = []
f = []
for (var D = [], p = [], w, C = 0, B, E; (B = s[C]); C++)
switch (((E = B.moved), B.status)) {
case 'deleted':
E === n &&
((w = q[t]),
w.B && (w.B.k(), (w.B = n)),
a.a.za(w.ca, e).length &&
(k.beforeRemove &&
(u.push(w),
z.push(w),
w.ja === d ? (w = null) : (f[C] = w)),
w && x.push.apply(x, w.ca)))
t++
break
case 'retained':
m(C, t++)
break
case 'added':
E !== n
? m(C, E)
: ((w = { ja: B.value, qb: a.N(v++) }),
u.push(w),
z.push(w),
r || (p[C] = w))
}
a.a.e.set(e, c, u)
h(k.beforeMove, D)
a.a.q(x, k.beforeRemove ? a.$ : a.removeNode)
for (var C = 0, r = a.f.firstChild(e), F; (w = z[C]); C++) {
w.ca || a.a.extend(w, b(e, g, w.ja, l, w.qb))
for (t = 0; (s = w.ca[t]); r = s.nextSibling, F = s, t++)
s !== r && a.f.gc(e, s, F)
!w.Wc && l && (l(w.ja, w.ca, w.qb), (w.Wc = !0))
}
h(k.beforeRemove, f)
for (C = 0; C < f.length; ++C) f[C] && (f[C].ja = d)
h(k.afterMove, D)
h(k.afterAdd, p)
}
})()
a.b('utils.setDomNodeChildrenFromArrayMapping', a.a.Bb)
a.W = function() {
this.allowTemplateRewriting = !1
}
a.W.prototype = new a.O()
a.W.prototype.renderTemplateSource = function(b, c, d, e) {
if ((c = (9 > a.a.C ? 0 : b.nodes) ? b.nodes() : null))
return a.a.V(c.cloneNode(!0).childNodes)
b = b.text()
return a.a.ma(b, e)
}
a.W.sb = new a.W()
a.Db(a.W.sb)
a.b('nativeTemplateEngine', a.W)
;(function() {
a.vb = function() {
var a = (this.$c = (function() {
if (!v || !v.tmpl) return 0
try {
if (0 <= v.tmpl.tag.tmpl.open.toString().indexOf('__'))
return 2
} catch (a) {}
return 1
})())
this.renderTemplateSource = function(b, e, f, g) {
g = g || u
f = f || {}
if (2 > a)
throw Error(
'Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.'
)
var k = b.data('precompiled')
k ||
((k = b.text() || ''),
(k = v.template(
null,
'{{ko_with $item.koBindingContext}}' + k + '{{/ko_with}}'
)),
b.data('precompiled', k))
b = [e.$data]
e = v.extend({ koBindingContext: e }, f.templateOptions)
e = v.tmpl(k, b, e)
e.appendTo(g.createElement('div'))
v.fragments = {}
return e
}
this.createJavaScriptEvaluatorBlock = function(a) {
return '{{ko_code ((function() { return ' + a + ' })()) }}'
}
this.addTemplate = function(a, b) {
u.write(
"<script type='text/html' id='" + a + "'>" + b + '</script>'
)
}
0 < a &&
((v.tmpl.tag.ko_code = { open: "__.push($1 || '');" }),
(v.tmpl.tag.ko_with = {
open: 'with($1) {',
close: '} '
}))
}
a.vb.prototype = new a.O()
var b = new a.vb()
0 < b.$c && a.Db(b)
a.b('jqueryTmplTemplateEngine', a.vb)
})()
})
})()
})()
!(function(a, b) {
'use strict'
function c(a, b) {
if (!a || 'object' != typeof a)
throw new Error(
'When calling ko.track, you must pass an object as the first parameter.'
)
var c
return (
i(b)
? ((b.deep = b.deep || !1),
(b.fields = b.fields || Object.getOwnPropertyNames(a)),
(b.lazy = b.lazy || !1),
h(a, b.fields, b))
: ((c = b || Object.getOwnPropertyNames(a)), h(a, c, {})),
a
)
}
function d(a) {
return a.name
? a.name
: (a
.toString()
.trim()
.match(A) || [])[1]
}
function e(a) {
return a && 'object' == typeof a && 'Object' === d(a.constructor)
}
function f(a, c, d) {
var e = w.isObservable(a),
f = !e && Array.isArray(a),
g = e ? a : f ? w.observableArray(a) : w.observable(a)
return (
(d[c] = function() {
return g
}),
(f || (e && 'push' in g)) && m(w, g),
{
configurable: !0,
enumerable: !0,
get: g,
set: w.isWriteableObservable(g) ? g : b
}
)
}
function g(a, b, c) {
function d(a, b) {
return e
? b
? e(a)
: e
: Array.isArray(a)
? ((e = w.observableArray(a)), m(w, e), e)
: (e = w.observable(a))
}
if (w.isObservable(a)) return f(a, b, c)
var e
return (
(c[b] = function() {
return d(a)
}),
{
configurable: !0,
enumerable: !0,
get: function() {
return d(a)()
},
set: function(a) {
d(a, !0)
}
}
)
}
function h(a, b, c) {
if (b.length) {
var d = j(a, !0),
i = {}
b.forEach(function(b) {
if (
!(b in d) &&
Object.getOwnPropertyDescriptor(a, b).configurable !== !1
) {
var j = a[b]
;(i[b] = (c.lazy ? g : f)(j, b, d)),
c.deep && e(j) && h(j, Object.keys(j), c)
}
}),
Object.defineProperties(a, i)
}
}
function i(a) {
return !!a && 'object' == typeof a && a.constructor === Object
}
function j(a, b) {
x || (x = z())
var c = x.get(a)
return !c && b && ((c = {}), x.set(a, c)), c
}
function k(a, b) {
if (x)
if (1 === arguments.length) x['delete'](a)
else {
var c = j(a, !1)
c &&
b.forEach(function(a) {
delete c[a]
})
}
}
function l(a, b, d) {
var e = this,
f = { owner: a, deferEvaluation: !0 }
if ('function' == typeof d) f.read = d
else {
if ('value' in d)
throw new Error(
'For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.'
)
if ('function' != typeof d.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".'
)
;(f.read = d.get), (f.write = d.set)
}
return (a[b] = e.computed(f)), c.call(e, a, [b]), a
}
function m(a, b) {
var c = null
a.computed(function() {
c && (c.dispose(), (c = null))
var d = b()
d instanceof Array && (c = n(a, b, d))
})
}
function n(a, b, c) {
var d = o(a, c)
return d.subscribe(b)
}
function o(a, b) {
y || (y = z())
var c = y.get(b)
if (!c) {
;(c = new a.subscribable()), y.set(b, c)
var d = {}
p(b, c, d), q(a, b, c, d)
}
return c
}
function p(a, b, c) {
;[
'pop',
'push',
'reverse',
'shift',
'sort',
'splice',
'unshift'
].forEach(function(d) {
var e = a[d]
a[d] = function() {
var a = e.apply(this, arguments)
return c.pause !== !0 && b.notifySubscribers(this), a
}
})
}
function q(a, b, c, d) {
;['remove', 'removeAll', 'destroy', 'destroyAll', 'replace'].forEach(
function(e) {
Object.defineProperty(b, e, {
enumerable: !1,
value: function() {
var f
d.pause = !0
try {
f = a.observableArray.fn[e].apply(
a.observableArray(b),
arguments
)
} finally {
d.pause = !1
}
return c.notifySubscribers(b), f
}
})
}
)
}
function r(a, b) {
if (!a || 'object' != typeof a) return null
var c = j(a, !1)
return c && b in c ? c[b]() : null
}
function s(a, b) {
if (!a || 'object' != typeof a) return !1
var c = j(a, !1)
return !!c && b in c
}
function t(a, b) {
var c = r(a, b)
c && c.valueHasMutated()
}
function u(a) {
;(a.track = c),
(a.untrack = k),
(a.getObservable = r),
(a.valueHasMutated = t),
(a.defineProperty = l),
(a.es5 = {
getAllObservablesForObject: j,
notifyWhenPresentOrFutureArrayValuesMutate: m,
isTracked: s
})
}
function v() {
if ('object' == typeof exports && 'object' == typeof module) {
w = require('knockout')
var b = require('../lib/weakmap')
u(w),
(z = function() {
return new b()
}),
(module.exports = w)
} else
'function' == typeof define && define.amd
? define('KnockoutES5', ['knockout'], function(b) {
return (
(w = b),
u(b),
(z = function() {
return new a.WeakMap()
}),
b
)
})
: 'ko' in a &&
((w = a.ko),
u(a.ko),
(z = function() {
return new a.WeakMap()
}))
}
var w,
x,
y,
z,
A = /^function\s*([^\s(]+)/
v()
})(this),
void (function(a, b, c) {
function d(a, b, c) {
return (
'function' == typeof b && ((c = b), (b = e(c).replace(/_$/, ''))),
j(a, b, {
configurable: !0,
writable: !0,
value: c
})
)
}
function e(a) {
return 'function' != typeof a
? ''
: '_name' in a
? a._name
: 'name' in a
? a.name
: k.call(a).match(n)[1]
}
function f(a, b) {
return (b._name = a), b
}
function g(a) {
function b(b, e) {
return (
e || 2 === arguments.length
? d.set(b, e)
: ((e = d.get(b)), e === c && ((e = a(b)), d.set(b, e))),
e
)
}
var d = new p()
return a || (a = q), b
}
var h = Object.getOwnPropertyNames,
i =
'object' == typeof window ? Object.getOwnPropertyNames(window) : [],
j = Object.defineProperty,
k = Function.prototype.toString,
l = Object.create,
m = Object.prototype.hasOwnProperty,
n = /^\n?function\s?(\w*)?_?\(/,
o = (function() {
function a() {
var a = g(),
c = {}
this.unlock = function(d) {
var e = n(d)
if (m.call(e, a)) return e[a](c)
var f = l(null, b)
return (
j(e, a, {
value: function(a) {
return a === c ? f : void 0
}
}),
f
)
}
}
var b = { value: { writable: !0, value: c } },
e = l(null),
g = function() {
var a = Math.random()
.toString(36)
.slice(2)
return a in e ? g() : (e[a] = a)
},
k = g(),
n = function(a) {
if (m.call(a, k)) return a[k]
if (!Object.isExtensible(a))
throw new TypeError('Object must be extensible')
var b = l(null)
return j(a, k, { value: b }), b
}
return (
d(
Object,
f('getOwnPropertyNames', function(a) {
var b,
c = Object(a)
if (
c !== Window.prototype &&
'toString' in c &&
'[object Window]' === c.toString()
)
try {
b = h(a)
} catch (d) {
b = i
}
else b = h(a)
return m.call(a, k) && b.splice(b.indexOf(k), 1), b
})
),
d(
a.prototype,
f('get', function(a) {
return this.unlock(a).value
})
),
d(
a.prototype,
f('set', function(a, b) {
this.unlock(a).value = b
})
),
a
)
})(),
p = (function(g) {
function h(b) {
return this === a || null == this || this === h.prototype
? new h(b)
: (p(this, new o()), void r(this, b))
}
function i(a) {
n(a)
var d = q(this).get(a)
return d === b ? c : d
}
function j(a, d) {
n(a), q(this).set(a, d === c ? b : d)
}
function k(a) {
return n(a), q(this).get(a) !== c
}
function l(a) {
n(a)
var b = q(this),
d = b.get(a) !== c
return b.set(a, c), d
}
function m() {
return q(this), '[object WeakMap]'
}
var n = function(a) {
if (
null == a ||
('object' != typeof a && 'function' != typeof a)
)
throw new TypeError('Invalid WeakMap key')
},
p = function(a, b) {
var c = g.unlock(a)
if (c.value) throw new TypeError('Object is already a WeakMap')
c.value = b
},
q = function(a) {
var b = g.unlock(a).value
if (!b) throw new TypeError('WeakMap is not generic')
return b
},
r = function(a, b) {
null !== b &&
'object' == typeof b &&
'function' == typeof b.forEach &&
b.forEach(function(c, d) {
c instanceof Array &&
2 === c.length &&
j.call(a, b[d][0], b[d][1])
})
}
;(i._name = 'get'),
(j._name = 'set'),
(k._name = 'has'),
(m._name = 'toString')
var s = ('' + Object).split('Object'),
t = f('toString', function() {
return s[0] + e(this) + s[1]
})
d(t, t)
var u =
{ __proto__: [] } instanceof Array
? function(a) {
a.__proto__ = t
}
: function(a) {
d(a, t)
}
return (
u(h),
[m, i, j, k, l].forEach(function(a) {
d(h.prototype, a), u(a)
}),
h
)
})(new o()),
q = Object.create
? function() {
return Object.create(null)
}
: function() {
return {}
}
'undefined' != typeof module
? (module.exports = p)
: 'undefined' != typeof exports
? (exports.WeakMap = p)
: 'WeakMap' in a || (a.WeakMap = p),
(p.createStorage = g),
a.WeakMap && (a.WeakMap.createStorage = g)
})(
(function() {
return this
})()
)
!(function(e) {
if ('object' == typeof exports && 'undefined' != typeof module)
module.exports = e()
else if ('function' == typeof define && define.amd)
define('markdown-it-sanitizer', [], e)
else {
var t
;(t =
'undefined' != typeof window
? window
: 'undefined' != typeof global
? global
: 'undefined' != typeof self
? self
: this),
(t.markdownitSanitizer = e())
}
})(function() {
return (function e(t, n, r) {
function o(l, f) {
if (!n[l]) {
if (!t[l]) {
var a = 'function' == typeof require && require
if (!f && a) return a(l, !0)
if (i) return i(l, !0)
var s = new Error("Cannot find module '" + l + "'")
throw ((s.code = 'MODULE_NOT_FOUND'), s)
}
var u = (n[l] = { exports: {} })
t[l][0].call(
u.exports,
function(e) {
var n = t[l][1][e]
return o(n ? n : e)
},
u,
u.exports,
e,
t,
n,
r
)
}
return n[l].exports
}
for (
var i = 'function' == typeof require && require, l = 0;
l < r.length;
l++
)
o(r[l])
return o
})(
{
1: [
function(e, t, n) {
'use strict'
t.exports = function(e, t) {
function n(e) {
var t = l.match(e)
return t &&
1 === t.length &&
0 === t[0].index &&
t[0].lastIndex === e.length
? t[0].url
: null
}
function r(e) {
var t = '<a\\shref="([^"<>]*)"(?:\\stitle="([^"<>]*)")?>',
r = RegExp(t, 'i'),
o = '<img\\s([^<>]*src="[^"<>]*"[^<>]*)\\s?\\/?>',
i = RegExp(o, 'i')
return (e = e.replace(/<[^<>]*>?/gi, function(e) {
var t, o, l, a, u
if (/(^<->|^<-\s|^<3\s)/.test(e)) return e
if ((t = e.match(i))) {
var m = t[1]
if (
((o = n(m.match(/src="([^"<>]*)"/i)[1])),
(l = m.match(/alt="([^"<>]*)"/i)),
(l = l && 'undefined' != typeof l[1] ? l[1] : ''),
(a = m.match(/title="([^"<>]*)"/i)),
(a = a && 'undefined' != typeof a[1] ? a[1] : ''),
o && /^https?:\/\//i.test(o))
)
return '' !== c
? '<img src="' +
o +
'" alt="' +
l +
'" title="' +
a +
'" class="' +
c +
'">'
: '<img src="' +
o +
'" alt="' +
l +
'" title="' +
a +
'">'
}
return (
(u = d.indexOf('a')),
(t = e.match(r)),
t &&
((a = 'undefined' != typeof t[2] ? t[2] : ''),
(o = n(t[1])),
o && /^(?:https?:\/\/|ftp:\/\/|mailto:|xmpp:)/i.test(o))
? ((p = !0),
(h[u] += 1),
'<a href="' +
o +
'" title="' +
a +
'" target="_blank">')
: (t = /<\/a>/i.test(e))
? ((p = !0),
(h[u] -= 1),
h[u] < 0 && (g[u] = !0),
'</a>')
: (t = e.match(/<(br|hr)\s?\/?>/i))
? '<' + t[1].toLowerCase() + '>'
: ((t = e.match(
/<(\/?)(b|blockquote|code|em|h[1-6]|li|ol(?: start="\d+")?|p|pre|s|sub|sup|strong|ul)>/i
)),
t && !/<\/ol start="\d+"/i.test(e)
? ((p = !0),
(u = d.indexOf(t[2].toLowerCase().split(' ')[0])),
'/' === t[1] ? (h[u] -= 1) : (h[u] += 1),
h[u] < 0 && (g[u] = !0),
'<' + t[1] + t[2].toLowerCase() + '>')
: s === !0
? ''
: f(e))
)
}))
}
function o(e) {
var t, n, o
for (a = 0; a < d.length; a++) h[a] = 0
for (a = 0; a < d.length; a++) g[a] = !1
for (p = !1, n = 0; n < e.tokens.length; n++)
if (
('html_block' === e.tokens[n].type &&
(e.tokens[n].content = r(e.tokens[n].content)),
'inline' === e.tokens[n].type)
)
for (o = e.tokens[n].children, t = 0; t < o.length; t++)
'html_inline' === o[t].type &&
(o[t].content = r(o[t].content))
}
function i(e) {
function t(e, t) {
var n, r
return (
(n =
'a' === t
? RegExp(
'<a href="[^"<>]*" title="[^"<>]*" target="_blank">',
'g'
)
: 'ol' === t
? /<ol(?: start="\d+")?>/g
: RegExp('<' + t + '>', 'g')),
(r = RegExp('</' + t + '>', 'g')),
u === !0
? ((e = e.replace(n, '')), (e = e.replace(r, '')))
: ((e = e.replace(n, function(e) {
return f(e)
})),
(e = e.replace(r, function(e) {
return f(e)
}))),
e
)
}
function n(e) {
var n
for (n = 0; n < d.length; n++)
g[n] === !0 && (e = t(e, d[n]))
return e
}
if (p !== !1) {
var r, o
for (a = 0; a < d.length; a++) 0 !== h[a] && (g[a] = !0)
for (r = 0; r < e.tokens.length; r++)
if ('html_block' !== e.tokens[r].type) {
if ('inline' === e.tokens[r].type)
for (
o = e.tokens[r].children, a = 0;
a < o.length;
a++
)
'html_inline' === o[a].type &&
(o[a].content = n(o[a].content))
} else e.tokens[r].content = n(e.tokens[r].content)
}
}
var l = e.linkify,
f = e.utils.escapeHtml
t = t ? t : {}
var a,
s =
'undefined' != typeof t.removeUnknown
? t.removeUnknown
: !1,
u =
'undefined' != typeof t.removeUnbalanced
? t.removeUnbalanced
: !1,
c = 'undefined' != typeof t.imageClass ? t.imageClass : '',
p = !1,
d = [
'a',
'b',
'blockquote',
'code',
'em',
'h1',
'h2',
'h3',
'h4',
'h5',
'h6',
'li',
'ol',
'p',
'pre',
's',
'sub',
'sup',
'strong',
'ul'
],
h = new Array(d.length),
g = new Array(d.length)
for (a = 0; a < d.length; a++) h[a] = 0
for (a = 0; a < d.length; a++) g[a] = !1
e.core.ruler.after('linkify', 'sanitize_inline', o),
e.core.ruler.after('sanitize_inline', 'sanitize_balance', i)
}
},
{}
]
},
{},
[1]
)(1)
})
!(function(e) {
if ('object' == typeof exports && 'undefined' != typeof module)
module.exports = e()
else if ('function' == typeof define && define.amd)
define('markdown-it', [], e)
else {
var r
;(r =
'undefined' != typeof window
? window
: 'undefined' != typeof global
? global
: 'undefined' != typeof self
? self
: this),
(r.markdownit = e())
}
})(function() {
var e
return (function r(e, t, n) {
function s(i, a) {
if (!t[i]) {
if (!e[i]) {
var c = 'function' == typeof require && require
if (!a && c) return c(i, !0)
if (o) return o(i, !0)
var l = new Error("Cannot find module '" + i + "'")
throw ((l.code = 'MODULE_NOT_FOUND'), l)
}
var u = (t[i] = { exports: {} })
e[i][0].call(
u.exports,
function(r) {
var t = e[i][1][r]
return s(t ? t : r)
},
u,
u.exports,
r,
e,
t,
n
)
}
return t[i].exports
}
for (
var o = 'function' == typeof require && require, i = 0;
i < n.length;
i++
)
s(n[i])
return s
})(
{
1: [
function(e, r, t) {
'use strict'
r.exports = e('entities/maps/entities.json')
},
{ 'entities/maps/entities.json': 53 }
],
2: [
function(e, r, t) {
'use strict'
r.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(e, r, t) {
'use strict'
var n = '[a-zA-Z_:][a-zA-Z0-9:._-]*',
s = '[^"\'=<>`\\x00-\\x20]+',
o = "'[^']*'",
i = '"[^"]*"',
a = '(?:' + s + '|' + o + '|' + i + ')',
c = '(?:\\s+' + n + '(?:\\s*=\\s*' + a + ')?)',
l = '<[A-Za-z][A-Za-z0-9\\-]*' + c + '*\\s*\\/?>',
u = '<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>',
p = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->',
h = '<[?].*?[?]>',
f = '<![A-Z]+\\s+[^>]*>',
d = '<!\\[CDATA\\[[\\s\\S]*?\\]\\]>',
m = new RegExp(
'^(?:' +
l +
'|' +
u +
'|' +
p +
'|' +
h +
'|' +
f +
'|' +
d +
')'
),
_ = new RegExp('^(?:' + l + '|' + u + ')')
;(r.exports.HTML_TAG_RE = m),
(r.exports.HTML_OPEN_CLOSE_TAG_RE = _)
},
{}
],
4: [
function(e, r, t) {
'use strict'
function n(e) {
return Object.prototype.toString.call(e)
}
function s(e) {
return '[object String]' === n(e)
}
function o(e, r) {
return x.call(e, r)
}
function i(e) {
var r = Array.prototype.slice.call(arguments, 1)
return (
r.forEach(function(r) {
if (r) {
if ('object' != typeof r)
throw new TypeError(r + 'must be object')
Object.keys(r).forEach(function(t) {
e[t] = r[t]
})
}
}),
e
)
}
function a(e, r, t) {
return [].concat(e.slice(0, r), t, e.slice(r + 1))
}
function c(e) {
return (
!(e >= 55296 && e <= 57343) &&
!(e >= 64976 && e <= 65007) &&
65535 !== (65535 & e) &&
65534 !== (65535 & e) &&
!(e >= 0 && e <= 8) &&
11 !== e &&
!(e >= 14 && e <= 31) &&
!(e >= 127 && e <= 159) &&
!(e > 1114111)
)
}
function l(e) {
if (e > 65535) {
e -= 65536
var r = 55296 + (e >> 10),
t = 56320 + (1023 & e)
return String.fromCharCode(r, t)
}
return String.fromCharCode(e)
}
function u(e, r) {
var t = 0
return o(D, r)
? D[r]
: 35 === r.charCodeAt(0) &&
w.test(r) &&
((t =
'x' === r[1].toLowerCase()
? parseInt(r.slice(2), 16)
: parseInt(r.slice(1), 10)),
c(t))
? l(t)
: e
}
function p(e) {
return e.indexOf('\\') < 0 ? e : e.replace(y, '$1')
}
function h(e) {
return e.indexOf('\\') < 0 && e.indexOf('&') < 0
? e
: e.replace(A, function(e, r, t) {
return r ? r : u(e, t)
})
}
function f(e) {
return S[e]
}
function d(e) {
return q.test(e) ? e.replace(E, f) : e
}
function m(e) {
return e.replace(F, '\\$&')
}
function _(e) {
switch (e) {
case 9:
case 32:
return !0
}
return !1
}
function g(e) {
if (e >= 8192 && e <= 8202) return !0
switch (e) {
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 k(e) {
return z.test(e)
}
function b(e) {
switch (e) {
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 v(e) {
return e
.trim()
.replace(/\s+/g, ' ')
.toUpperCase()
}
var x = Object.prototype.hasOwnProperty,
y = /\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,
C = /&([a-z#][a-z0-9]{1,31});/gi,
A = new RegExp(y.source + '|' + C.source, 'gi'),
w = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,
D = e('./entities'),
q = /[&<>"]/,
E = /[&<>"]/g,
S = { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;' },
F = /[.?*+^$[\]\\(){}|-]/g,
z = e('uc.micro/categories/P/regex')
;(t.lib = {}),
(t.lib.mdurl = e('mdurl')),
(t.lib.ucmicro = e('uc.micro')),
(t.assign = i),
(t.isString = s),
(t.has = o),
(t.unescapeMd = p),
(t.unescapeAll = h),
(t.isValidEntityCode = c),
(t.fromCodePoint = l),
(t.escapeHtml = d),
(t.arrayReplaceAt = a),
(t.isSpace = _),
(t.isWhiteSpace = g),
(t.isMdAsciiPunct = b),
(t.isPunctChar = k),
(t.escapeRE = m),
(t.normalizeReference = v)
},
{
'./entities': 1,
mdurl: 59,
'uc.micro': 65,
'uc.micro/categories/P/regex': 63
}
],
5: [
function(e, r, t) {
'use strict'
;(t.parseLinkLabel = e('./parse_link_label')),
(t.parseLinkDestination = e('./parse_link_destination')),
(t.parseLinkTitle = e('./parse_link_title'))
},
{
'./parse_link_destination': 6,
'./parse_link_label': 7,
'./parse_link_title': 8
}
],
6: [
function(e, r, t) {
'use strict'
var n = e('../common/utils').isSpace,
s = e('../common/utils').unescapeAll
r.exports = function(e, r, t) {
var o,
i,
a = 0,
c = r,
l = { ok: !1, pos: 0, lines: 0, str: '' }
if (60 === e.charCodeAt(r)) {
for (r++; r < t; ) {
if (((o = e.charCodeAt(r)), 10 === o || n(o))) return l
if (62 === o)
return (
(l.pos = r + 1),
(l.str = s(e.slice(c + 1, r))),
(l.ok = !0),
l
)
92 === o && r + 1 < t ? (r += 2) : r++
}
return l
}
for (
i = 0;
r < t &&
((o = e.charCodeAt(r)), 32 !== o) &&
!(o < 32 || 127 === o);
)
if (92 === o && r + 1 < t) r += 2
else {
if (40 === o && (i++, i > 1)) break
if (41 === o && (i--, i < 0)) break
r++
}
return c === r
? l
: ((l.str = s(e.slice(c, r))),
(l.lines = a),
(l.pos = r),
(l.ok = !0),
l)
}
},
{ '../common/utils': 4 }
],
7: [
function(e, r, t) {
'use strict'
r.exports = function(e, r, t) {
var n,
s,
o,
i,
a = -1,
c = e.posMax,
l = e.pos
for (e.pos = r + 1, n = 1; e.pos < c; ) {
if (
((o = e.src.charCodeAt(e.pos)), 93 === o && (n--, 0 === n))
) {
s = !0
break
}
if (((i = e.pos), e.md.inline.skipToken(e), 91 === o))
if (i === e.pos - 1) n++
else if (t) return (e.pos = l), -1
}
return s && (a = e.pos), (e.pos = l), a
}
},
{}
],
8: [
function(e, r, t) {
'use strict'
var n = e('../common/utils').unescapeAll
r.exports = function(e, r, t) {
var s,
o,
i = 0,
a = r,
c = { ok: !1, pos: 0, lines: 0, str: '' }
if (r >= t) return c
if (((o = e.charCodeAt(r)), 34 !== o && 39 !== o && 40 !== o))
return c
for (r++, 40 === o && (o = 41); r < t; ) {
if (((s = e.charCodeAt(r)), s === o))
return (
(c.pos = r + 1),
(c.lines = i),
(c.str = n(e.slice(a + 1, r))),
(c.ok = !0),
c
)
10 === s
? i++
: 92 === s &&
r + 1 < t &&
(r++, 10 === e.charCodeAt(r) && i++),
r++
}
return c
}
},
{ '../common/utils': 4 }
],
9: [
function(e, r, t) {
'use strict'
function n(e) {
var r = e.trim().toLowerCase()
return !g.test(r) || !!k.test(r)
}
function s(e) {
var r = d.parse(e, !0)
if (r.hostname && (!r.protocol || b.indexOf(r.protocol) >= 0))
try {
r.hostname = m.toASCII(r.hostname)
} catch (t) {}
return d.encode(d.format(r))
}
function o(e) {
var r = d.parse(e, !0)
if (r.hostname && (!r.protocol || b.indexOf(r.protocol) >= 0))
try {
r.hostname = m.toUnicode(r.hostname)
} catch (t) {}
return d.decode(d.format(r))
}
function i(e, r) {
return this instanceof i
? (r || a.isString(e) || ((r = e || {}), (e = 'default')),
(this.inline = new h()),
(this.block = new p()),
(this.core = new u()),
(this.renderer = new l()),
(this.linkify = new f()),
(this.validateLink = n),
(this.normalizeLink = s),
(this.normalizeLinkText = o),
(this.utils = a),
(this.helpers = c),
(this.options = {}),
this.configure(e),
void (r && this.set(r)))
: new i(e, r)
}
var a = e('./common/utils'),
c = e('./helpers'),
l = e('./renderer'),
u = e('./parser_core'),
p = e('./parser_block'),
h = e('./parser_inline'),
f = e('linkify-it'),
d = e('mdurl'),
m = e('punycode'),
_ = {
default: e('./presets/default'),
zero: e('./presets/zero'),
commonmark: e('./presets/commonmark')
},
g = /^(vbscript|javascript|file|data):/,
k = /^data:image\/(gif|png|jpeg|webp);/,
b = ['http:', 'https:', 'mailto:']
;(i.prototype.set = function(e) {
return a.assign(this.options, e), this
}),
(i.prototype.configure = function(e) {
var r,
t = this
if (a.isString(e) && ((r = e), (e = _[r]), !e))
throw new Error(
'Wrong `markdown-it` preset "' + r + '", check name'
)
if (!e)
throw new Error(
"Wrong `markdown-it` preset, can't be empty"
)
return (
e.options && t.set(e.options),
e.components &&
Object.keys(e.components).forEach(function(r) {
e.components[r].rules &&
t[r].ruler.enableOnly(e.components[r].rules),
e.components[r].rules2 &&
t[r].ruler2.enableOnly(e.components[r].rules2)
}),
this
)
}),
(i.prototype.enable = function(e, r) {
var t = []
Array.isArray(e) || (e = [e]),
['core', 'block', 'inline'].forEach(function(r) {
t = t.concat(this[r].ruler.enable(e, !0))
}, this),
(t = t.concat(this.inline.ruler2.enable(e, !0)))
var n = e.filter(function(e) {
return t.indexOf(e) < 0
})
if (n.length && !r)
throw new Error(
'MarkdownIt. Failed to enable unknown rule(s): ' + n
)
return this
}),
(i.prototype.disable = function(e, r) {
var t = []
Array.isArray(e) || (e = [e]),
['core', 'block', 'inline'].forEach(function(r) {
t = t.concat(this[r].ruler.disable(e, !0))
}, this),
(t = t.concat(this.inline.ruler2.disable(e, !0)))
var n = e.filter(function(e) {
return t.indexOf(e) < 0
})
if (n.length && !r)
throw new Error(
'MarkdownIt. Failed to disable unknown rule(s): ' + n
)
return this
}),
(i.prototype.use = function(e) {
var r = [this].concat(
Array.prototype.slice.call(arguments, 1)
)
return e.apply(e, r), this
}),
(i.prototype.parse = function(e, r) {
var t = new this.core.State(e, this, r)
return this.core.process(t), t.tokens
}),
(i.prototype.render = function(e, r) {
return (
(r = r || {}),
this.renderer.render(this.parse(e, r), this.options, r)
)
}),
(i.prototype.parseInline = function(e, r) {
var t = new this.core.State(e, this, r)
return (t.inlineMode = !0), this.core.process(t), t.tokens
}),
(i.prototype.renderInline = function(e, r) {
return (
(r = r || {}),
this.renderer.render(
this.parseInline(e, r),
this.options,
r
)
)
}),
(r.exports = i)
},
{
'./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(e, r, t) {
'use strict'
function n() {
this.ruler = new s()
for (var e = 0; e < o.length; e++)
this.ruler.push(o[e][0], o[e][1], {
alt: (o[e][2] || []).slice()
})
}
var s = e('./ruler'),
o = [
[
'table',
e('./rules_block/table'),
['paragraph', 'reference']
],
['code', e('./rules_block/code')],
[
'fence',
e('./rules_block/fence'),
['paragraph', 'reference', 'blockquote', 'list']
],
[
'blockquote',
e('./rules_block/blockquote'),
['paragraph', 'reference', 'list']
],
[
'hr',
e('./rules_block/hr'),
['paragraph', 'reference', 'blockquote', 'list']
],
[
'list',
e('./rules_block/list'),
['paragraph', 'reference', 'blockquote']
],
['reference', e('./rules_block/reference')],
[
'heading',
e('./rules_block/heading'),
['paragraph', 'reference', 'blockquote']
],
['lheading', e('./rules_block/lheading')],
[
'html_block',
e('./rules_block/html_block'),
['paragraph', 'reference', 'blockquote']
],
['paragraph', e('./rules_block/paragraph')]
]
;(n.prototype.tokenize = function(e, r, t) {
for (
var n,
s,
o = this.ruler.getRules(''),
i = o.length,
a = r,
c = !1,
l = e.md.options.maxNesting;
a < t &&
((e.line = a = e.skipEmptyLines(a)), !(a >= t)) &&
!(e.sCount[a] < e.blkIndent);
) {
if (e.level >= l) {
e.line = t
break
}
for (s = 0; s < i && !(n = o[s](e, a, t, !1)); s++);
if (
((e.tight = !c),
e.isEmpty(e.line - 1) && (c = !0),
(a = e.line),
a < t && e.isEmpty(a))
) {
if (
((c = !0),
a++,
a < t && 'list' === e.parentType && e.isEmpty(a))
)
break
e.line = a
}
}
}),
(n.prototype.parse = function(e, r, t, n) {
var s
e &&
((s = new this.State(e, r, t, n)),
this.tokenize(s, s.line, s.lineMax))
}),
(n.prototype.State = e('./rules_block/state_block')),
(r.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(e, r, t) {
'use strict'
function n() {
this.ruler = new s()
for (var e = 0; e < o.length; e++)
this.ruler.push(o[e][0], o[e][1])
}
var s = e('./ruler'),
o = [
['normalize', e('./rules_core/normalize')],
['block', e('./rules_core/block')],
['inline', e('./rules_core/inline')],
['linkify', e('./rules_core/linkify')],
['replacements', e('./rules_core/replacements')],
['smartquotes', e('./rules_core/smartquotes')]
]
;(n.prototype.process = function(e) {
var r, t, n
for (
n = this.ruler.getRules(''), r = 0, t = n.length;
r < t;
r++
)
n[r](e)
}),
(n.prototype.State = e('./rules_core/state_core')),
(r.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(e, r, t) {
'use strict'
function n() {
var e
for (this.ruler = new s(), e = 0; e < o.length; e++)
this.ruler.push(o[e][0], o[e][1])
for (this.ruler2 = new s(), e = 0; e < i.length; e++)
this.ruler2.push(i[e][0], i[e][1])
}
var s = e('./ruler'),
o = [
['text', e('./rules_inline/text')],
['newline', e('./rules_inline/newline')],
['escape', e('./rules_inline/escape')],
['backticks', e('./rules_inline/backticks')],
['strikethrough', e('./rules_inline/strikethrough').tokenize],
['emphasis', e('./rules_inline/emphasis').tokenize],
['link', e('./rules_inline/link')],
['image', e('./rules_inline/image')],
['autolink', e('./rules_inline/autolink')],
['html_inline', e('./rules_inline/html_inline')],
['entity', e('./rules_inline/entity')]
],
i = [
['balance_pairs', e('./rules_inline/balance_pairs')],
[
'strikethrough',
e('./rules_inline/strikethrough').postProcess
],
['emphasis', e('./rules_inline/emphasis').postProcess],
['text_collapse', e('./rules_inline/text_collapse')]
]
;(n.prototype.skipToken = function(e) {
var r,
t,
n = e.pos,
s = this.ruler.getRules(''),
o = s.length,
i = e.md.options.maxNesting,
a = e.cache
if ('undefined' != typeof a[n]) return void (e.pos = a[n])
if (e.level < i)
for (
t = 0;
t < o && (e.level++, (r = s[t](e, !0)), e.level--, !r);
t++
);
else e.pos = e.posMax
r || e.pos++, (a[n] = e.pos)
}),
(n.prototype.tokenize = function(e) {
for (
var r,
t,
n = this.ruler.getRules(''),
s = n.length,
o = e.posMax,
i = e.md.options.maxNesting;
e.pos < o;
) {
if (e.level < i)
for (t = 0; t < s && !(r = n[t](e, !1)); t++);
if (r) {
if (e.pos >= o) break
} else e.pending += e.src[e.pos++]
}
e.pending && e.pushPending()
}),
(n.prototype.parse = function(e, r, t, n) {
var s,
o,
i,
a = new this.State(e, r, t, n)
for (
this.tokenize(a),
o = this.ruler2.getRules(''),
i = o.length,
s = 0;
s < i;
s++
)
o[s](a)
}),
(n.prototype.State = e('./rules_inline/state_inline')),
(r.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(e, r, t) {
'use strict'
r.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(e, r, t) {
'use strict'
r.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(e, r, t) {
'use strict'
r.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(e, r, t) {
'use strict'
function n() {
this.rules = s({}, a)
}
var s = e('./common/utils').assign,
o = e('./common/utils').unescapeAll,
i = e('./common/utils').escapeHtml,
a = {}
;(a.code_inline = function(e, r, t, n, s) {
var o = e[r],
a = s.renderAttrs(o)
return (
'<code' +
(a ? ' ' + a : '') +
'>' +
i(e[r].content) +
'</code>'
)
}),
(a.code_block = function(e, r, t, n, s) {
var o = e[r],
a = s.renderAttrs(o)
return (
'<pre' +
(a ? ' ' + a : '') +
'><code>' +
i(e[r].content) +
'</code></pre>\n'
)
}),
(a.fence = function(e, r, t, n, s) {
var a,
c,
l,
u,
p = e[r],
h = p.info ? o(p.info).trim() : '',
f = ''
return (
h && (f = h.split(/\s+/g)[0]),
(a = t.highlight
? t.highlight(p.content, f) || i(p.content)
: i(p.content)),
0 === a.indexOf('<pre')
? a + '\n'
: h
? ((c = p.attrIndex('class')),
(l = p.attrs ? p.attrs.slice() : []),
c < 0
? l.push(['class', t.langPrefix + f])
: (l[c] += ' ' + t.langPrefix + f),
(u = { attrs: l }),
'<pre><code' +
s.renderAttrs(u) +
'>' +
a +
'</code></pre>\n')
: '<pre><code' +
s.renderAttrs(p) +
'>' +
a +
'</code></pre>\n'
)
}),
(a.image = function(e, r, t, n, s) {
var o = e[r]
return (
(o.attrs[o.attrIndex('alt')][1] = s.renderInlineAsText(
o.children,
t,
n
)),
s.renderToken(e, r, t)
)
}),
(a.hardbreak = function(e, r, t) {
return t.xhtmlOut ? '<br />\n' : '<br>\n'
}),
(a.softbreak = function(e, r, t) {
return t.breaks ? (t.xhtmlOut ? '<br />\n' : '<br>\n') : '\n'
}),
(a.text = function(e, r) {
return i(e[r].content)
}),
(a.html_block = function(e, r) {
return e[r].content
}),
(a.html_inline = function(e, r) {
return e[r].content
}),
(n.prototype.renderAttrs = function(e) {
var r, t, n
if (!e.attrs) return ''
for (n = '', r = 0, t = e.attrs.length; r < t; r++)
n += ' ' + i(e.attrs[r][0]) + '="' + i(e.attrs[r][1]) + '"'
return n
}),
(n.prototype.renderToken = function(e, r, t) {
var n,
s = '',
o = !1,
i = e[r]
return i.hidden
? ''
: (i.block &&
i.nesting !== -1 &&
r &&
e[r - 1].hidden &&
(s += '\n'),
(s += (i.nesting === -1 ? '</' : '<') + i.tag),
(s += this.renderAttrs(i)),
0 === i.nesting && t.xhtmlOut && (s += ' /'),
i.block &&
((o = !0),
1 === i.nesting &&
r + 1 < e.length &&
((n = e[r + 1]),
'inline' === n.type || n.hidden
? (o = !1)
: n.nesting === -1 && n.tag === i.tag && (o = !1))),
(s += o ? '>\n' : '>'))
}),
(n.prototype.renderInline = function(e, r, t) {
for (
var n, s = '', o = this.rules, i = 0, a = e.length;
i < a;
i++
)
(n = e[i].type),
(s +=
'undefined' != typeof o[n]
? o[n](e, i, r, t, this)
: this.renderToken(e, i, r))
return s
}),
(n.prototype.renderInlineAsText = function(e, r, t) {
for (var n = '', s = 0, o = e.length; s < o; s++)
'text' === e[s].type
? (n += e[s].content)
: 'image' === e[s].type &&
(n += this.renderInlineAsText(e[s].children, r, t))
return n
}),
(n.prototype.render = function(e, r, t) {
var n,
s,
o,
i = '',
a = this.rules
for (n = 0, s = e.length; n < s; n++)
(o = e[n].type),
(i +=
'inline' === o
? this.renderInline(e[n].children, r, t)
: 'undefined' != typeof a[o]
? a[e[n].type](e, n, r, t, this)
: this.renderToken(e, n, r, t))
return i
}),
(r.exports = n)
},
{ './common/utils': 4 }
],
17: [
function(e, r, t) {
'use strict'
function n() {
;(this.__rules__ = []), (this.__cache__ = null)
}
;(n.prototype.__find__ = function(e) {
for (var r = 0; r < this.__rules__.length; r++)
if (this.__rules__[r].name === e) return r
return -1
}),
(n.prototype.__compile__ = function() {
var e = this,
r = ['']
e.__rules__.forEach(function(e) {
e.enabled &&
e.alt.forEach(function(e) {
r.indexOf(e) < 0 && r.push(e)
})
}),
(e.__cache__ = {}),
r.forEach(function(r) {
;(e.__cache__[r] = []),
e.__rules__.forEach(function(t) {
t.enabled &&
((r && t.alt.indexOf(r) < 0) ||
e.__cache__[r].push(t.fn))
})
})
}),
(n.prototype.at = function(e, r, t) {
var n = this.__find__(e),
s = t || {}
if (n === -1) throw new Error('Parser rule not found: ' + e)
;(this.__rules__[n].fn = r),
(this.__rules__[n].alt = s.alt || []),
(this.__cache__ = null)
}),
(n.prototype.before = function(e, r, t, n) {
var s = this.__find__(e),
o = n || {}
if (s === -1) throw new Error('Parser rule not found: ' + e)
this.__rules__.splice(s, 0, {
name: r,
enabled: !0,
fn: t,
alt: o.alt || []
}),
(this.__cache__ = null)
}),
(n.prototype.after = function(e, r, t, n) {
var s = this.__find__(e),
o = n || {}
if (s === -1) throw new Error('Parser rule not found: ' + e)
this.__rules__.splice(s + 1, 0, {
name: r,
enabled: !0,
fn: t,
alt: o.alt || []
}),
(this.__cache__ = null)
}),
(n.prototype.push = function(e, r, t) {
var n = t || {}
this.__rules__.push({
name: e,
enabled: !0,
fn: r,
alt: n.alt || []
}),
(this.__cache__ = null)
}),
(n.prototype.enable = function(e, r) {
Array.isArray(e) || (e = [e])
var t = []
return (
e.forEach(function(e) {
var n = this.__find__(e)
if (n < 0) {
if (r) return
throw new Error('Rules manager: invalid rule name ' + e)
}
;(this.__rules__[n].enabled = !0), t.push(e)
}, this),
(this.__cache__ = null),
t
)
}),
(n.prototype.enableOnly = function(e, r) {
Array.isArray(e) || (e = [e]),
this.__rules__.forEach(function(e) {
e.enabled = !1
}),
this.enable(e, r)
}),
(n.prototype.disable = function(e, r) {
Array.isArray(e) || (e = [e])
var t = []
return (
e.forEach(function(e) {
var n = this.__find__(e)
if (n < 0) {
if (r) return
throw new Error('Rules manager: invalid rule name ' + e)
}
;(this.__rules__[n].enabled = !1), t.push(e)
}, this),
(this.__cache__ = null),
t
)
}),
(n.prototype.getRules = function(e) {
return (
null === this.__cache__ && this.__compile__(),
this.__cache__[e] || []
)
}),
(r.exports = n)
},
{}
],
18: [
function(e, r, t) {
'use strict'
var n = e('../common/utils').isSpace
r.exports = function(e, r, t, s) {
var o,
i,
a,
c,
l,
u,
p,
h,
f,
d,
m,
_,
g,
k,
b,
v,
x = e.bMarks[r] + e.tShift[r],
y = e.eMarks[r]
if (62 !== e.src.charCodeAt(x++)) return !1
if (s) return !0
for (
32 === e.src.charCodeAt(x) && x++,
u = e.blkIndent,
e.blkIndent = 0,
f = d = e.sCount[r] + x - (e.bMarks[r] + e.tShift[r]),
l = [e.bMarks[r]],
e.bMarks[r] = x;
x < y && ((m = e.src.charCodeAt(x)), n(m));
)
9 === m ? (d += 4 - (d % 4)) : d++, x++
for (
i = x >= y,
c = [e.sCount[r]],
e.sCount[r] = d - f,
a = [e.tShift[r]],
e.tShift[r] = x - e.bMarks[r],
_ = e.md.block.ruler.getRules('blockquote'),
o = r + 1;
o < t &&
!(e.sCount[o] < u) &&
((x = e.bMarks[o] + e.tShift[o]),
(y = e.eMarks[o]),
!(x >= y));
o++
)
if (62 !== e.src.charCodeAt(x++)) {
if (i) break
for (v = !1, k = 0, b = _.length; k < b; k++)
if (_[k](e, o, t, !0)) {
v = !0
break
}
if (v) break
l.push(e.bMarks[o]),
a.push(e.tShift[o]),
c.push(e.sCount[o]),
(e.sCount[o] = -1)
} else {
for (
32 === e.src.charCodeAt(x) && x++,
f = d = e.sCount[o] + x - (e.bMarks[o] + e.tShift[o]),
l.push(e.bMarks[o]),
e.bMarks[o] = x;
x < y && ((m = e.src.charCodeAt(x)), n(m));
)
9 === m ? (d += 4 - (d % 4)) : d++, x++
;(i = x >= y),
c.push(e.sCount[o]),
(e.sCount[o] = d - f),
a.push(e.tShift[o]),
(e.tShift[o] = x - e.bMarks[o])
}
for (
p = e.parentType,
e.parentType = 'blockquote',
g = e.push('blockquote_open', 'blockquote', 1),
g.markup = '>',
g.map = h = [r, 0],
e.md.block.tokenize(e, r, o),
g = e.push('blockquote_close', 'blockquote', -1),
g.markup = '>',
e.parentType = p,
h[1] = e.line,
k = 0;
k < a.length;
k++
)
(e.bMarks[k + r] = l[k]),
(e.tShift[k + r] = a[k]),
(e.sCount[k + r] = c[k])
return (e.blkIndent = u), !0
}
},
{ '../common/utils': 4 }
],
19: [
function(e, r, t) {
'use strict'
r.exports = function(e, r, t) {
var n,
s,
o,
i = 0
if (e.sCount[r] - e.blkIndent < 4) return !1
for (s = n = r + 1; n < t; )
if (e.isEmpty(n)) {
if ((i++, i >= 2 && 'list' === e.parentType)) break
n++
} else {
if (((i = 0), !(e.sCount[n] - e.blkIndent >= 4))) break
n++, (s = n)
}
return (
(e.line = s),
(o = e.push('code_block', 'code', 0)),
(o.content = e.getLines(r, s, 4 + e.blkIndent, !0)),
(o.map = [r, e.line]),
!0
)
}
},
{}
],
20: [
function(e, r, t) {
'use strict'
r.exports = function(e, r, t, n) {
var s,
o,
i,
a,
c,
l,
u,
p = !1,
h = e.bMarks[r] + e.tShift[r],
f = e.eMarks[r]
if (h + 3 > f) return !1
if (((s = e.src.charCodeAt(h)), 126 !== s && 96 !== s))
return !1
if (((c = h), (h = e.skipChars(h, s)), (o = h - c), o < 3))
return !1
if (
((u = e.src.slice(c, h)),
(i = e.src.slice(h, f)),
i.indexOf('`') >= 0)
)
return !1
if (n) return !0
for (
a = r;
(a++, !(a >= t)) &&
((h = c = e.bMarks[a] + e.tShift[a]),
(f = e.eMarks[a]),
!(h < f && e.sCount[a] < e.blkIndent));
)
if (
e.src.charCodeAt(h) === s &&
!(
e.sCount[a] - e.blkIndent >= 4 ||
((h = e.skipChars(h, s)),
h - c < o || ((h = e.skipSpaces(h)), h < f))
)
) {
p = !0
break
}
return (
(o = e.sCount[r]),
(e.line = a + (p ? 1 : 0)),
(l = e.push('fence', 'code', 0)),
(l.info = i),
(l.content = e.getLines(r + 1, a, o, !0)),
(l.markup = u),
(l.map = [r, e.line]),
!0
)
}
},
{}
],
21: [
function(e, r, t) {
'use strict'
var n = e('../common/utils').isSpace
r.exports = function(e, r, t, s) {
var o,
i,
a,
c,
l = e.bMarks[r] + e.tShift[r],
u = e.eMarks[r]
if (((o = e.src.charCodeAt(l)), 35 !== o || l >= u)) return !1
for (
i = 1, o = e.src.charCodeAt(++l);
35 === o && l < u && i <= 6;
)
i++, (o = e.src.charCodeAt(++l))
return (
!(i > 6 || (l < u && 32 !== o)) &&
(!!s ||
((u = e.skipSpacesBack(u, l)),
(a = e.skipCharsBack(u, 35, l)),
a > l && n(e.src.charCodeAt(a - 1)) && (u = a),
(e.line = r + 1),
(c = e.push('heading_open', 'h' + String(i), 1)),
(c.markup = '########'.slice(0, i)),
(c.map = [r, e.line]),
(c = e.push('inline', '', 0)),
(c.content = e.src.slice(l, u).trim()),
(c.map = [r, e.line]),
(c.children = []),
(c = e.push('heading_close', 'h' + String(i), -1)),
(c.markup = '########'.slice(0, i)),
!0))
)
}
},
{ '../common/utils': 4 }
],
22: [
function(e, r, t) {
'use strict'
var n = e('../common/utils').isSpace
r.exports = function(e, r, t, s) {
var o,
i,
a,
c,
l = e.bMarks[r] + e.tShift[r],
u = e.eMarks[r]
if (
((o = e.src.charCodeAt(l++)),
42 !== o && 45 !== o && 95 !== o)
)
return !1
for (i = 1; l < u; ) {
if (((a = e.src.charCodeAt(l++)), a !== o && !n(a))) return !1
a === o && i++
}
return (
!(i < 3) &&
(!!s ||
((e.line = r + 1),
(c = e.push('hr', 'hr', 0)),
(c.map = [r, e.line]),
(c.markup = Array(i + 1).join(String.fromCharCode(o))),
!0))
)
}
},
{ '../common/utils': 4 }
],
23: [
function(e, r, t) {
'use strict'
var n = e('../common/html_blocks'),
s = e('../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(s.source + '\\s*$'), /^$/, !1]
]
r.exports = function(e, r, t, n) {
var s,
i,
a,
c,
l = e.bMarks[r] + e.tShift[r],
u = e.eMarks[r]
if (!e.md.options.html) return !1
if (60 !== e.src.charCodeAt(l)) return !1
for (
c = e.src.slice(l, u), s = 0;
s < o.length && !o[s][0].test(c);
s++
);
if (s === o.length) return !1
if (n) return o[s][2]
if (((i = r + 1), !o[s][1].test(c)))
for (; i < t && !(e.sCount[i] < e.blkIndent); i++)
if (
((l = e.bMarks[i] + e.tShift[i]),
(u = e.eMarks[i]),
(c = e.src.slice(l, u)),
o[s][1].test(c))
) {
0 !== c.length && i++
break
}
return (
(e.line = i),
(a = e.push('html_block', '', 0)),
(a.map = [r, i]),
(a.content = e.getLines(r, i, e.blkIndent, !0)),
!0
)
}
},
{ '../common/html_blocks': 2, '../common/html_re': 3 }
],
24: [
function(e, r, t) {
'use strict'
r.exports = function(e, r, t) {
for (
var n,
s,
o,
i,
a,
c,
l,
u,
p,
h = r + 1,
f = e.md.block.ruler.getRules('paragraph');
h < t && !e.isEmpty(h);
h++
)
if (!(e.sCount[h] - e.blkIndent > 3)) {
if (
e.sCount[h] >= e.blkIndent &&
((c = e.bMarks[h] + e.tShift[h]),
(l = e.eMarks[h]),
c < l &&
((p = e.src.charCodeAt(c)),
(45 === p || 61 === p) &&
((c = e.skipChars(c, p)),
(c = e.skipSpaces(c)),
c >= l)))
) {
u = 61 === p ? 1 : 2
break
}
if (!(e.sCount[h] < 0)) {
for (s = !1, o = 0, i = f.length; o < i; o++)
if (f[o](e, h, t, !0)) {
s = !0
break
}
if (s) break
}
}
return (
!!u &&
((n = e.getLines(r, h, e.blkIndent, !1).trim()),
(e.line = h + 1),
(a = e.push('heading_open', 'h' + String(u), 1)),
(a.markup = String.fromCharCode(p)),
(a.map = [r, e.line]),
(a = e.push('inline', '', 0)),
(a.content = n),
(a.map = [r, e.line - 1]),
(a.children = []),
(a = e.push('heading_close', 'h' + String(u), -1)),
(a.markup = String.fromCharCode(p)),
!0)
)
}
},
{}
],
25: [
function(e, r, t) {
'use strict'
function n(e, r) {
var t, n, s, o
return (
(n = e.bMarks[r] + e.tShift[r]),
(s = e.eMarks[r]),
(t = e.src.charCodeAt(n++)),
42 !== t && 45 !== t && 43 !== t
? -1
: n < s && ((o = e.src.charCodeAt(n)), !i(o))
? -1
: n
)
}
function s(e, r) {
var t,
n = e.bMarks[r] + e.tShift[r],
s = n,
o = e.eMarks[r]
if (s + 1 >= o) return -1
if (((t = e.src.charCodeAt(s++)), t < 48 || t > 57)) return -1
for (;;) {
if (s >= o) return -1
t = e.src.charCodeAt(s++)
{
if (!(t >= 48 && t <= 57)) {
if (41 === t || 46 === t) break
return -1
}
if (s - n >= 10) return -1
}
}
return s < o && ((t = e.src.charCodeAt(s)), !i(t)) ? -1 : s
}
function o(e, r) {
var t,
n,
s = e.level + 2
for (t = r + 2, n = e.tokens.length - 2; t < n; t++)
e.tokens[t].level === s &&
'paragraph_open' === e.tokens[t].type &&
((e.tokens[t + 2].hidden = !0),
(e.tokens[t].hidden = !0),
(t += 2))
}
var i = e('../common/utils').isSpace
r.exports = function(e, r, t, a) {
var c,
l,
u,
p,
h,
f,
d,
m,
_,
g,
k,
b,
v,
x,
y,
C,
A,
w,
D,
q,
E,
S,
F,
z,
L,
T,
R,
M,
I = !0
if ((k = s(e, r)) >= 0) w = !0
else {
if (!((k = n(e, r)) >= 0)) return !1
w = !1
}
if (((A = e.src.charCodeAt(k - 1)), a)) return !0
for (
q = e.tokens.length,
w
? ((g = e.bMarks[r] + e.tShift[r]),
(C = Number(e.src.substr(g, k - g - 1))),
(L = e.push('ordered_list_open', 'ol', 1)),
1 !== C && (L.attrs = [['start', C]]))
: (L = e.push('bullet_list_open', 'ul', 1)),
L.map = S = [r, 0],
L.markup = String.fromCharCode(A),
c = r,
E = !1,
z = e.md.block.ruler.getRules('list');
c < t;
) {
for (
v = k,
x = e.eMarks[c],
l = u = e.sCount[c] + k - (e.bMarks[r] + e.tShift[r]);
v < x && ((b = e.src.charCodeAt(v)), i(b));
)
9 === b ? (u += 4 - (u % 4)) : u++, v++
if (
((D = v),
(y = D >= x ? 1 : u - l),
y > 4 && (y = 1),
(p = l + y),
(L = e.push('list_item_open', 'li', 1)),
(L.markup = String.fromCharCode(A)),
(L.map = F = [r, 0]),
(f = e.blkIndent),
(m = e.tight),
(h = e.tShift[r]),
(d = e.sCount[r]),
(_ = e.parentType),
(e.blkIndent = p),
(e.tight = !0),
(e.parentType = 'list'),
(e.tShift[r] = D - e.bMarks[r]),
(e.sCount[r] = u),
D >= x && e.isEmpty(r + 1)
? (e.line = Math.min(e.line + 2, t))
: e.md.block.tokenize(e, r, t, !0),
(e.tight && !E) || (I = !1),
(E = e.line - r > 1 && e.isEmpty(e.line - 1)),
(e.blkIndent = f),
(e.tShift[r] = h),
(e.sCount[r] = d),
(e.tight = m),
(e.parentType = _),
(L = e.push('list_item_close', 'li', -1)),
(L.markup = String.fromCharCode(A)),
(c = r = e.line),
(F[1] = c),
(D = e.bMarks[r]),
c >= t)
)
break
if (e.isEmpty(c)) break
if (e.sCount[c] < e.blkIndent) break
for (M = !1, T = 0, R = z.length; T < R; T++)
if (z[T](e, c, t, !0)) {
M = !0
break
}
if (M) break
if (w) {
if (((k = s(e, c)), k < 0)) break
} else if (((k = n(e, c)), k < 0)) break
if (A !== e.src.charCodeAt(k - 1)) break
}
return (
(L = w
? e.push('ordered_list_close', 'ol', -1)
: e.push('bullet_list_close', 'ul', -1)),
(L.markup = String.fromCharCode(A)),
(S[1] = c),
(e.line = c),
I && o(e, q),
!0
)
}
},
{ '../common/utils': 4 }
],
26: [
function(e, r, t) {
'use strict'
r.exports = function(e, r) {
for (
var t,
n,
s,
o,
i,
a = r + 1,
c = e.md.block.ruler.getRules('paragraph'),
l = e.lineMax;
a < l && !e.isEmpty(a);
a++
)
if (!(e.sCount[a] - e.blkIndent > 3 || e.sCount[a] < 0)) {
for (n = !1, s = 0, o = c.length; s < o; s++)
if (c[s](e, a, l, !0)) {
n = !0
break
}
if (n) break
}
return (
(t = e.getLines(r, a, e.blkIndent, !1).trim()),
(e.line = a),
(i = e.push('paragraph_open', 'p', 1)),
(i.map = [r, e.line]),
(i = e.push('inline', '', 0)),
(i.content = t),
(i.map = [r, e.line]),
(i.children = []),
(i = e.push('paragraph_close', 'p', -1)),
!0
)
}
},
{}
],
27: [
function(e, r, t) {
'use strict'
var n = e('../helpers/parse_link_destination'),
s = e('../helpers/parse_link_title'),
o = e('../common/utils').normalizeReference,
i = e('../common/utils').isSpace
r.exports = function(e, r, t, a) {
var c,
l,
u,
p,
h,
f,
d,
m,
_,
g,
k,
b,
v,
x,
y,
C = 0,
A = e.bMarks[r] + e.tShift[r],
w = e.eMarks[r],
D = r + 1
if (91 !== e.src.charCodeAt(A)) return !1
for (; ++A < w; )
if (
93 === e.src.charCodeAt(A) &&
92 !== e.src.charCodeAt(A - 1)
) {
if (A + 1 === w) return !1
if (58 !== e.src.charCodeAt(A + 1)) return !1
break
}
for (
p = e.lineMax, x = e.md.block.ruler.getRules('reference');
D < p && !e.isEmpty(D);
D++
)
if (!(e.sCount[D] - e.blkIndent > 3 || e.sCount[D] < 0)) {
for (v = !1, f = 0, d = x.length; f < d; f++)
if (x[f](e, D, p, !0)) {
v = !0
break
}
if (v) break
}
for (
b = e.getLines(r, D, e.blkIndent, !1).trim(),
w = b.length,
A = 1;
A < w;
A++
) {
if (((c = b.charCodeAt(A)), 91 === c)) return !1
if (93 === c) {
_ = A
break
}
10 === c
? C++
: 92 === c && (A++, A < w && 10 === b.charCodeAt(A) && C++)
}
if (_ < 0 || 58 !== b.charCodeAt(_ + 1)) return !1
for (A = _ + 2; A < w; A++)
if (((c = b.charCodeAt(A)), 10 === c)) C++
else if (!i(c)) break
if (((g = n(b, A, w)), !g.ok)) return !1
if (((h = e.md.normalizeLink(g.str)), !e.md.validateLink(h)))
return !1
for (A = g.pos, C += g.lines, l = A, u = C, k = A; A < w; A++)
if (((c = b.charCodeAt(A)), 10 === c)) C++
else if (!i(c)) break
for (
g = s(b, A, w),
A < w && k !== A && g.ok
? ((y = g.str), (A = g.pos), (C += g.lines))
: ((y = ''), (A = l), (C = u));
A < w && ((c = b.charCodeAt(A)), i(c));
)
A++
if (A < w && 10 !== b.charCodeAt(A) && y)
for (
y = '', A = l, C = u;
A < w && ((c = b.charCodeAt(A)), i(c));
)
A++
return (
!(A < w && 10 !== b.charCodeAt(A)) &&
!!(m = o(b.slice(1, _))) &&
(!!a ||
('undefined' == typeof e.env.references &&
(e.env.references = {}),
'undefined' == typeof e.env.references[m] &&
(e.env.references[m] = {
title: y,
href: h
}),
(e.line = r + C + 1),
!0))
)
}
},
{
'../common/utils': 4,
'../helpers/parse_link_destination': 6,
'../helpers/parse_link_title': 8
}
],
28: [
function(e, r, t) {
'use strict'
function n(e, r, t, n) {
var s, i, a, c, l, u, p, h
for (
this.src = e,
this.md = r,
this.env = t,
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 = '',
i = this.src,
h = !1,
a = c = u = p = 0,
l = i.length;
c < l;
c++
) {
if (((s = i.charCodeAt(c)), !h)) {
if (o(s)) {
u++, 9 === s ? (p += 4 - (p % 4)) : p++
continue
}
h = !0
}
;(10 !== s && c !== l - 1) ||
(10 !== s && c++,
this.bMarks.push(a),
this.eMarks.push(c),
this.tShift.push(u),
this.sCount.push(p),
(h = !1),
(u = 0),
(p = 0),
(a = c + 1))
}
this.bMarks.push(i.length),
this.eMarks.push(i.length),
this.tShift.push(0),
this.sCount.push(0),
(this.lineMax = this.bMarks.length - 1)
}
var s = e('../token'),
o = e('../common/utils').isSpace
;(n.prototype.push = function(e, r, t) {
var n = new s(e, r, t)
return (
(n.block = !0),
t < 0 && this.level--,
(n.level = this.level),
t > 0 && this.level++,
this.tokens.push(n),
n
)
}),
(n.prototype.isEmpty = function(e) {
return this.bMarks[e] + this.tShift[e] >= this.eMarks[e]
}),
(n.prototype.skipEmptyLines = function(e) {
for (
var r = this.lineMax;
e < r &&
!(this.bMarks[e] + this.tShift[e] < this.eMarks[e]);
e++
);
return e
}),
(n.prototype.skipSpaces = function(e) {
for (
var r, t = this.src.length;
e < t && ((r = this.src.charCodeAt(e)), o(r));
e++
);
return e
}),
(n.prototype.skipSpacesBack = function(e, r) {
if (e <= r) return e
for (; e > r; ) if (!o(this.src.charCodeAt(--e))) return e + 1
return e
}),
(n.prototype.skipChars = function(e, r) {
for (
var t = this.src.length;
e < t && this.src.charCodeAt(e) === r;
e++
);
return e
}),
(n.prototype.skipCharsBack = function(e, r, t) {
if (e <= t) return e
for (; e > t; )
if (r !== this.src.charCodeAt(--e)) return e + 1
return e
}),
(n.prototype.getLines = function(e, r, t, n) {
var s,
i,
a,
c,
l,
u,
p,
h = e
if (e >= r) return ''
for (u = new Array(r - e), s = 0; h < r; h++, s++) {
for (
i = 0,
p = c = this.bMarks[h],
l =
h + 1 < r || n ? this.eMarks[h] + 1 : this.eMarks[h];
c < l && i < t;
) {
if (((a = this.src.charCodeAt(c)), o(a)))
9 === a ? (i += 4 - (i % 4)) : i++
else {
if (!(c - p < this.tShift[h])) break
i++
}
c++
}
u[s] = this.src.slice(c, l)
}
return u.join('')
}),
(n.prototype.Token = s),
(r.exports = n)
},
{ '../common/utils': 4, '../token': 51 }
],
29: [
function(e, r, t) {
'use strict'
function n(e, r) {
var t = e.bMarks[r] + e.blkIndent,
n = e.eMarks[r]
return e.src.substr(t, n - t)
}
function s(e) {
var r,
t = [],
n = 0,
s = e.length,
o = 0,
i = 0,
a = !1,
c = 0
for (r = e.charCodeAt(n); n < s; )
96 === r && o % 2 === 0
? ((a = !a), (c = n))
: 124 !== r || o % 2 !== 0 || a
? 92 === r
? o++
: (o = 0)
: (t.push(e.substring(i, n)), (i = n + 1)),
n++,
n === s && a && ((a = !1), (n = c + 1)),
(r = e.charCodeAt(n))
return t.push(e.substring(i)), t
}
r.exports = function(e, r, t, o) {
var i, a, c, l, u, p, h, f, d, m, _, g
if (r + 2 > t) return !1
if (((u = r + 1), e.sCount[u] < e.blkIndent)) return !1
if (((c = e.bMarks[u] + e.tShift[u]), c >= e.eMarks[u]))
return !1
if (
((i = e.src.charCodeAt(c)), 124 !== i && 45 !== i && 58 !== i)
)
return !1
if (((a = n(e, r + 1)), !/^[-:| ]+$/.test(a))) return !1
for (p = a.split('|'), d = [], l = 0; l < p.length; l++) {
if (((m = p[l].trim()), !m)) {
if (0 === l || l === p.length - 1) continue
return !1
}
if (!/^:?-+:?$/.test(m)) return !1
58 === m.charCodeAt(m.length - 1)
? d.push(58 === m.charCodeAt(0) ? 'center' : 'right')
: 58 === m.charCodeAt(0)
? d.push('left')
: d.push('')
}
if (((a = n(e, r).trim()), a.indexOf('|') === -1)) return !1
if (
((p = s(a.replace(/^\||\|$/g, ''))),
(h = p.length),
h > d.length)
)
return !1
if (o) return !0
for (
f = e.push('table_open', 'table', 1),
f.map = _ = [r, 0],
f = e.push('thead_open', 'thead', 1),
f.map = [r, r + 1],
f = e.push('tr_open', 'tr', 1),
f.map = [r, r + 1],
l = 0;
l < p.length;
l++
)
(f = e.push('th_open', 'th', 1)),
(f.map = [r, r + 1]),
d[l] && (f.attrs = [['style', 'text-align:' + d[l]]]),
(f = e.push('inline', '', 0)),
(f.content = p[l].trim()),
(f.map = [r, r + 1]),
(f.children = []),
(f = e.push('th_close', 'th', -1))
for (
f = e.push('tr_close', 'tr', -1),
f = e.push('thead_close', 'thead', -1),
f = e.push('tbody_open', 'tbody', 1),
f.map = g = [r + 2, 0],
u = r + 2;
u < t &&
!(e.sCount[u] < e.blkIndent) &&
((a = n(e, u)), a.indexOf('|') !== -1);
u++
) {
for (
p = s(a.replace(/^\||\|\s*$/g, '')),
f = e.push('tr_open', 'tr', 1),
l = 0;
l < h;
l++
)
(f = e.push('td_open', 'td', 1)),
d[l] && (f.attrs = [['style', 'text-align:' + d[l]]]),
(f = e.push('inline', '', 0)),
(f.content = p[l] ? p[l].trim() : ''),
(f.children = []),
(f = e.push('td_close', 'td', -1))
f = e.push('tr_close', 'tr', -1)
}
return (
(f = e.push('tbody_close', 'tbody', -1)),
(f = e.push('table_close', 'table', -1)),
(_[1] = g[1] = u),
(e.line = u),
!0
)
}
},
{}
],
30: [
function(e, r, t) {
'use strict'
r.exports = function(e) {
var r
e.inlineMode
? ((r = new e.Token('inline', '', 0)),
(r.content = e.src),
(r.map = [0, 1]),
(r.children = []),
e.tokens.push(r))
: e.md.block.parse(e.src, e.md, e.env, e.tokens)
}
},
{}
],
31: [
function(e, r, t) {
'use strict'
r.exports = function(e) {
var r,
t,
n,
s = e.tokens
for (t = 0, n = s.length; t < n; t++)
(r = s[t]),
'inline' === r.type &&
e.md.inline.parse(r.content, e.md, e.env, r.children)
}
},
{}
],
32: [
function(e, r, t) {
'use strict'
function n(e) {
return /^<a[>\s]/i.test(e)
}
function s(e) {
return /^<\/a\s*>/i.test(e)
}
var o = e('../common/utils').arrayReplaceAt
r.exports = function(e) {
var r,
t,
i,
a,
c,
l,
u,
p,
h,
f,
d,
m,
_,
g,
k,
b,
v,
x = e.tokens
if (e.md.options.linkify)
for (t = 0, i = x.length; t < i; t++)
if (
'inline' === x[t].type &&
e.md.linkify.pretest(x[t].content)
)
for (
a = x[t].children, _ = 0, r = a.length - 1;
r >= 0;
r--
)
if (((l = a[r]), 'link_close' !== l.type)) {
if (
('html_inline' === l.type &&
(n(l.content) && _ > 0 && _--,
s(l.content) && _++),
!(_ > 0) &&
'text' === l.type &&
e.md.linkify.test(l.content))
) {
for (
h = l.content,
v = e.md.linkify.match(h),
u = [],
m = l.level,
d = 0,
p = 0;
p < v.length;
p++
)
(g = v[p].url),
(k = e.md.normalizeLink(g)),
e.md.validateLink(k) &&
((b = v[p].text),
(b = v[p].schema
? 'mailto:' !== v[p].schema ||
/^mailto:/i.test(b)
? e.md.normalizeLinkText(b)
: e.md
.normalizeLinkText('mailto:' + b)
.replace(/^mailto:/, '')
: e.md
.normalizeLinkText('http://' + b)
.replace(/^http:\/\//, '')),
(f = v[p].index),
f > d &&
((c = new e.Token('text', '', 0)),
(c.content = h.slice(d, f)),
(c.level = m),
u.push(c)),
(c = new e.Token('link_open', 'a', 1)),
(c.attrs = [['href', k]]),
(c.level = m++),
(c.markup = 'linkify'),
(c.info = 'auto'),
u.push(c),
(c = new e.Token('text', '', 0)),
(c.content = b),
(c.level = m),
u.push(c),
(c = new e.Token('link_close', 'a', -1)),
(c.level = --m),
(c.markup = 'linkify'),
(c.info = 'auto'),
u.push(c),
(d = v[p].lastIndex))
d < h.length &&
((c = new e.Token('text', '', 0)),
(c.content = h.slice(d)),
(c.level = m),
u.push(c)),
(x[t].children = a = o(a, r, u))
}
} else
for (
r--;
a[r].level !== l.level && 'link_open' !== a[r].type;
)
r--
}
},
{ '../common/utils': 4 }
],
33: [
function(e, r, t) {
'use strict'
var n = /\r[\n\u0085]?|[\u2424\u2028\u0085]/g,
s = /\u0000/g
r.exports = function(e) {
var r
;(r = e.src.replace(n, '\n')),
(r = r.replace(s, '<27>')),
(e.src = r)
}
},
{}
],
34: [
function(e, r, t) {
'use strict'
function n(e, r) {
return l[r.toLowerCase()]
}
function s(e) {
var r, t
for (r = e.length - 1; r >= 0; r--)
(t = e[r]),
'text' === t.type && (t.content = t.content.replace(c, n))
}
function o(e) {
var r, t
for (r = e.length - 1; r >= 0; r--)
(t = e[r]),
'text' === t.type &&
i.test(t.content) &&
(t.content = t.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 i = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/,
a = /\((c|tm|r|p)\)/i,
c = /\((c|tm|r|p)\)/gi,
l = { c: '©', r: '®', p: '§', tm: '™' }
r.exports = function(e) {
var r
if (e.md.options.typographer)
for (r = e.tokens.length - 1; r >= 0; r--)
'inline' === e.tokens[r].type &&
(a.test(e.tokens[r].content) && s(e.tokens[r].children),
i.test(e.tokens[r].content) && o(e.tokens[r].children))
}
},
{}
],
35: [
function(e, r, t) {
'use strict'
function n(e, r, t) {
return e.substr(0, r) + t + e.substr(r + 1)
}
function s(e, r) {
var t,
s,
c,
p,
h,
f,
d,
m,
_,
g,
k,
b,
v,
x,
y,
C,
A,
w,
D,
q,
E
for (D = [], t = 0; t < e.length; t++) {
for (
s = e[t], d = e[t].level, A = D.length - 1;
A >= 0 && !(D[A].level <= d);
A--
);
if (((D.length = A + 1), 'text' === s.type)) {
;(c = s.content), (h = 0), (f = c.length)
e: for (; h < f && ((l.lastIndex = h), (p = l.exec(c))); ) {
if (
((y = C = !0),
(h = p.index + 1),
(w = "'" === p[0]),
(_ = 32),
p.index - 1 >= 0)
)
_ = c.charCodeAt(p.index - 1)
else
for (A = t - 1; A >= 0; A--)
if ('text' === e[A].type) {
_ = e[A].content.charCodeAt(e[A].content.length - 1)
break
}
if (((g = 32), h < f)) g = c.charCodeAt(h)
else
for (A = t + 1; A < e.length; A++)
if ('text' === e[A].type) {
g = e[A].content.charCodeAt(0)
break
}
if (
((k = a(_) || i(String.fromCharCode(_))),
(b = a(g) || i(String.fromCharCode(g))),
(v = o(_)),
(x = o(g)),
x ? (y = !1) : b && (v || k || (y = !1)),
v ? (C = !1) : k && (x || b || (C = !1)),
34 === g &&
'"' === p[0] &&
_ >= 48 &&
_ <= 57 &&
(C = y = !1),
y && C && ((y = !1), (C = b)),
y || C)
) {
if (C)
for (
A = D.length - 1;
A >= 0 && ((m = D[A]), !(D[A].level < d));
A--
)
if (m.single === w && D[A].level === d) {
;(m = D[A]),
w
? ((q = r.md.options.quotes[2]),
(E = r.md.options.quotes[3]))
: ((q = r.md.options.quotes[0]),
(E = r.md.options.quotes[1])),
(s.content = n(s.content, p.index, E)),
(e[m.token].content = n(
e[m.token].content,
m.pos,
q
)),
(h += E.length - 1),
m.token === t && (h += q.length - 1),
(c = s.content),
(f = c.length),
(D.length = A)
continue e
}
y
? D.push({
token: t,
pos: p.index,
single: w,
level: d
})
: C && w && (s.content = n(s.content, p.index, u))
} else w && (s.content = n(s.content, p.index, u))
}
}
}
}
var o = e('../common/utils').isWhiteSpace,
i = e('../common/utils').isPunctChar,
a = e('../common/utils').isMdAsciiPunct,
c = /['"]/,
l = /['"]/g,
u = ''
r.exports = function(e) {
var r
if (e.md.options.typographer)
for (r = e.tokens.length - 1; r >= 0; r--)
'inline' === e.tokens[r].type &&
c.test(e.tokens[r].content) &&
s(e.tokens[r].children, e)
}
},
{ '../common/utils': 4 }
],
36: [
function(e, r, t) {
'use strict'
function n(e, r, t) {
;(this.src = e),
(this.env = t),
(this.tokens = []),
(this.inlineMode = !1),
(this.md = r)
}
var s = e('../token')
;(n.prototype.Token = s), (r.exports = n)
},
{ '../token': 51 }
],
37: [
function(e, r, t) {
'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])?)*)>/,
s = /^<([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)>/
r.exports = function(e, r) {
var t,
o,
i,
a,
c,
l,
u = e.pos
return (
60 === e.src.charCodeAt(u) &&
((t = e.src.slice(u)),
!(t.indexOf('>') < 0) &&
(s.test(t)
? ((o = t.match(s)),
(a = o[0].slice(1, -1)),
(c = e.md.normalizeLink(a)),
!!e.md.validateLink(c) &&
(r ||
((l = e.push('link_open', 'a', 1)),
(l.attrs = [['href', c]]),
(l.markup = 'autolink'),
(l.info = 'auto'),
(l = e.push('text', '', 0)),
(l.content = e.md.normalizeLinkText(a)),
(l = e.push('link_close', 'a', -1)),
(l.markup = 'autolink'),
(l.info = 'auto')),
(e.pos += o[0].length),
!0))
: !!n.test(t) &&
((i = t.match(n)),
(a = i[0].slice(1, -1)),
(c = e.md.normalizeLink('mailto:' + a)),
!!e.md.validateLink(c) &&
(r ||
((l = e.push('link_open', 'a', 1)),
(l.attrs = [['href', c]]),
(l.markup = 'autolink'),
(l.info = 'auto'),
(l = e.push('text', '', 0)),
(l.content = e.md.normalizeLinkText(a)),
(l = e.push('link_close', 'a', -1)),
(l.markup = 'autolink'),
(l.info = 'auto')),
(e.pos += i[0].length),
!0))))
)
}
},
{}
],
38: [
function(e, r, t) {
'use strict'
r.exports = function(e, r) {
var t,
n,
s,
o,
i,
a,
c = e.pos,
l = e.src.charCodeAt(c)
if (96 !== l) return !1
for (
t = c, c++, n = e.posMax;
c < n && 96 === e.src.charCodeAt(c);
)
c++
for (
s = e.src.slice(t, c), o = i = c;
(o = e.src.indexOf('`', i)) !== -1;
) {
for (i = o + 1; i < n && 96 === e.src.charCodeAt(i); ) i++
if (i - o === s.length)
return (
r ||
((a = e.push('code_inline', 'code', 0)),
(a.markup = s),
(a.content = e.src
.slice(c, o)
.replace(/[ \n]+/g, ' ')
.trim())),
(e.pos = i),
!0
)
}
return r || (e.pending += s), (e.pos += s.length), !0
}
},
{}
],
39: [
function(e, r, t) {
'use strict'
r.exports = function(e) {
var r,
t,
n,
s,
o = e.delimiters,
i = e.delimiters.length
for (r = 0; r < i; r++)
if (((n = o[r]), n.close))
for (t = r - n.jump - 1; t >= 0; ) {
if (
((s = o[t]),
s.open &&
s.marker === n.marker &&
s.end < 0 &&
s.level === n.level)
) {
;(n.jump = r - t),
(n.open = !1),
(s.end = r),
(s.jump = 0)
break
}
t -= s.jump + 1
}
}
},
{}
],
40: [
function(e, r, t) {
'use strict'
;(r.exports.tokenize = function(e, r) {
var t,
n,
s,
o = e.pos,
i = e.src.charCodeAt(o)
if (r) return !1
if (95 !== i && 42 !== i) return !1
for (
n = e.scanDelims(e.pos, 42 === i), t = 0;
t < n.length;
t++
)
(s = e.push('text', '', 0)),
(s.content = String.fromCharCode(i)),
e.delimiters.push({
marker: i,
jump: t,
token: e.tokens.length - 1,
level: e.level,
end: -1,
open: n.can_open,
close: n.can_close
})
return (e.pos += n.length), !0
}),
(r.exports.postProcess = function(e) {
var r,
t,
n,
s,
o,
i,
a = e.delimiters,
c = e.delimiters.length
for (r = 0; r < c; r++)
(t = a[r]),
(95 !== t.marker && 42 !== t.marker) ||
(t.end !== -1 &&
((n = a[t.end]),
(i =
r + 1 < c &&
a[r + 1].end === t.end - 1 &&
a[r + 1].token === t.token + 1 &&
a[t.end - 1].token === n.token - 1 &&
a[r + 1].marker === t.marker),
(o = String.fromCharCode(t.marker)),
(s = e.tokens[t.token]),
(s.type = i ? 'strong_open' : 'em_open'),
(s.tag = i ? 'strong' : 'em'),
(s.nesting = 1),
(s.markup = i ? o + o : o),
(s.content = ''),
(s = e.tokens[n.token]),
(s.type = i ? 'strong_close' : 'em_close'),
(s.tag = i ? 'strong' : 'em'),
(s.nesting = -1),
(s.markup = i ? o + o : o),
(s.content = ''),
i &&
((e.tokens[a[r + 1].token].content = ''),
(e.tokens[a[t.end - 1].token].content = ''),
r++)))
})
},
{}
],
41: [
function(e, r, t) {
'use strict'
var n = e('../common/entities'),
s = e('../common/utils').has,
o = e('../common/utils').isValidEntityCode,
i = e('../common/utils').fromCodePoint,
a = /^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i,
c = /^&([a-z][a-z0-9]{1,31});/i
r.exports = function(e, r) {
var t,
l,
u,
p = e.pos,
h = e.posMax
if (38 !== e.src.charCodeAt(p)) return !1
if (p + 1 < h)
if (((t = e.src.charCodeAt(p + 1)), 35 === t)) {
if ((u = e.src.slice(p).match(a)))
return (
r ||
((l =
'x' === u[1][0].toLowerCase()
? parseInt(u[1].slice(1), 16)
: parseInt(u[1], 10)),
(e.pending += i(o(l) ? l : 65533))),
(e.pos += u[0].length),
!0
)
} else if (((u = e.src.slice(p).match(c)), u && s(n, u[1])))
return (
r || (e.pending += n[u[1]]), (e.pos += u[0].length), !0
)
return r || (e.pending += '&'), e.pos++, !0
}
},
{ '../common/entities': 1, '../common/utils': 4 }
],
42: [
function(e, r, t) {
'use strict'
for (
var n = e('../common/utils').isSpace, s = [], o = 0;
o < 256;
o++
)
s.push(0)
'\\!"#$%&\'()*+,./:;<=>?@[]^_`{|}~-'
.split('')
.forEach(function(e) {
s[e.charCodeAt(0)] = 1
}),
(r.exports = function(e, r) {
var t,
o = e.pos,
i = e.posMax
if (92 !== e.src.charCodeAt(o)) return !1
if ((o++, o < i)) {
if (((t = e.src.charCodeAt(o)), t < 256 && 0 !== s[t]))
return r || (e.pending += e.src[o]), (e.pos += 2), !0
if (10 === t) {
for (
r || e.push('hardbreak', 'br', 0), o++;
o < i && ((t = e.src.charCodeAt(o)), n(t));
)
o++
return (e.pos = o), !0
}
}
return r || (e.pending += '\\'), e.pos++, !0
})
},
{ '../common/utils': 4 }
],
43: [
function(e, r, t) {
'use strict'
function n(e) {
var r = 32 | e
return r >= 97 && r <= 122
}
var s = e('../common/html_re').HTML_TAG_RE
r.exports = function(e, r) {
var t,
o,
i,
a,
c = e.pos
return (
!!e.md.options.html &&
((i = e.posMax),
!(60 !== e.src.charCodeAt(c) || c + 2 >= i) &&
((t = e.src.charCodeAt(c + 1)),
!(33 !== t && 63 !== t && 47 !== t && !n(t)) &&
!!(o = e.src.slice(c).match(s)) &&
(r ||
((a = e.push('html_inline', '', 0)),
(a.content = e.src.slice(c, c + o[0].length))),
(e.pos += o[0].length),
!0)))
)
}
},
{ '../common/html_re': 3 }
],
44: [
function(e, r, t) {
'use strict'
var n = e('../helpers/parse_link_label'),
s = e('../helpers/parse_link_destination'),
o = e('../helpers/parse_link_title'),
i = e('../common/utils').normalizeReference,
a = e('../common/utils').isSpace
r.exports = function(e, r) {
var t,
c,
l,
u,
p,
h,
f,
d,
m,
_,
g,
k,
b,
v = '',
x = e.pos,
y = e.posMax
if (33 !== e.src.charCodeAt(e.pos)) return !1
if (91 !== e.src.charCodeAt(e.pos + 1)) return !1
if (((h = e.pos + 2), (p = n(e, e.pos + 1, !1)), p < 0))
return !1
if (((f = p + 1), f < y && 40 === e.src.charCodeAt(f))) {
for (
f++;
f < y && ((c = e.src.charCodeAt(f)), a(c) || 10 === c);
f++
);
if (f >= y) return !1
for (
b = f,
m = s(e.src, f, e.posMax),
m.ok &&
((v = e.md.normalizeLink(m.str)),
e.md.validateLink(v) ? (f = m.pos) : (v = '')),
b = f;
f < y && ((c = e.src.charCodeAt(f)), a(c) || 10 === c);
f++
);
if (((m = o(e.src, f, e.posMax)), f < y && b !== f && m.ok))
for (
_ = m.str, f = m.pos;
f < y && ((c = e.src.charCodeAt(f)), a(c) || 10 === c);
f++
);
else _ = ''
if (f >= y || 41 !== e.src.charCodeAt(f))
return (e.pos = x), !1
f++
} else {
if ('undefined' == typeof e.env.references) return !1
if (
(f < y && 91 === e.src.charCodeAt(f)
? ((b = f + 1),
(f = n(e, f)),
f >= 0 ? (u = e.src.slice(b, f++)) : (f = p + 1))
: (f = p + 1),
u || (u = e.src.slice(h, p)),
(d = e.env.references[i(u)]),
!d)
)
return (e.pos = x), !1
;(v = d.href), (_ = d.title)
}
return (
r ||
((l = e.src.slice(h, p)),
e.md.inline.parse(l, e.md, e.env, (k = [])),
(g = e.push('image', 'img', 0)),
(g.attrs = t = [
['src', v],
['alt', '']
]),
(g.children = k),
(g.content = l),
_ && t.push(['title', _])),
(e.pos = f),
(e.posMax = y),
!0
)
}
},
{
'../common/utils': 4,
'../helpers/parse_link_destination': 6,
'../helpers/parse_link_label': 7,
'../helpers/parse_link_title': 8
}
],
45: [
function(e, r, t) {
'use strict'
var n = e('../helpers/parse_link_label'),
s = e('../helpers/parse_link_destination'),
o = e('../helpers/parse_link_title'),
i = e('../common/utils').normalizeReference,
a = e('../common/utils').isSpace
r.exports = function(e, r) {
var t,
c,
l,
u,
p,
h,
f,
d,
m,
_,
g = '',
k = e.pos,
b = e.posMax,
v = e.pos
if (91 !== e.src.charCodeAt(e.pos)) return !1
if (((p = e.pos + 1), (u = n(e, e.pos, !0)), u < 0)) return !1
if (((h = u + 1), h < b && 40 === e.src.charCodeAt(h))) {
for (
h++;
h < b && ((c = e.src.charCodeAt(h)), a(c) || 10 === c);
h++
);
if (h >= b) return !1
for (
v = h,
f = s(e.src, h, e.posMax),
f.ok &&
((g = e.md.normalizeLink(f.str)),
e.md.validateLink(g) ? (h = f.pos) : (g = '')),
v = h;
h < b && ((c = e.src.charCodeAt(h)), a(c) || 10 === c);
h++
);
if (((f = o(e.src, h, e.posMax)), h < b && v !== h && f.ok))
for (
m = f.str, h = f.pos;
h < b && ((c = e.src.charCodeAt(h)), a(c) || 10 === c);
h++
);
else m = ''
if (h >= b || 41 !== e.src.charCodeAt(h))
return (e.pos = k), !1
h++
} else {
if ('undefined' == typeof e.env.references) return !1
if (
(h < b && 91 === e.src.charCodeAt(h)
? ((v = h + 1),
(h = n(e, h)),
h >= 0 ? (l = e.src.slice(v, h++)) : (h = u + 1))
: (h = u + 1),
l || (l = e.src.slice(p, u)),
(d = e.env.references[i(l)]),
!d)
)
return (e.pos = k), !1
;(g = d.href), (m = d.title)
}
return (
r ||
((e.pos = p),
(e.posMax = u),
(_ = e.push('link_open', 'a', 1)),
(_.attrs = t = [['href', g]]),
m && t.push(['title', m]),
e.md.inline.tokenize(e),
(_ = e.push('link_close', 'a', -1))),
(e.pos = h),
(e.posMax = b),
!0
)
}
},
{
'../common/utils': 4,
'../helpers/parse_link_destination': 6,
'../helpers/parse_link_label': 7,
'../helpers/parse_link_title': 8
}
],
46: [
function(e, r, t) {
'use strict'
r.exports = function(e, r) {
var t,
n,
s = e.pos
if (10 !== e.src.charCodeAt(s)) return !1
for (
t = e.pending.length - 1,
n = e.posMax,
r ||
(t >= 0 && 32 === e.pending.charCodeAt(t)
? t >= 1 && 32 === e.pending.charCodeAt(t - 1)
? ((e.pending = e.pending.replace(/ +$/, '')),
e.push('hardbreak', 'br', 0))
: ((e.pending = e.pending.slice(0, -1)),
e.push('softbreak', 'br', 0))
: e.push('softbreak', 'br', 0)),
s++;
s < n && 32 === e.src.charCodeAt(s);
)
s++
return (e.pos = s), !0
}
},
{}
],
47: [
function(e, r, t) {
'use strict'
function n(e, r, t, n) {
;(this.src = e),
(this.env = t),
(this.md = r),
(this.tokens = n),
(this.pos = 0),
(this.posMax = this.src.length),
(this.level = 0),
(this.pending = ''),
(this.pendingLevel = 0),
(this.cache = {}),
(this.delimiters = [])
}
var s = e('../token'),
o = e('../common/utils').isWhiteSpace,
i = e('../common/utils').isPunctChar,
a = e('../common/utils').isMdAsciiPunct
;(n.prototype.pushPending = function() {
var e = new s('text', '', 0)
return (
(e.content = this.pending),
(e.level = this.pendingLevel),
this.tokens.push(e),
(this.pending = ''),
e
)
}),
(n.prototype.push = function(e, r, t) {
this.pending && this.pushPending()
var n = new s(e, r, t)
return (
t < 0 && this.level--,
(n.level = this.level),
t > 0 && this.level++,
(this.pendingLevel = this.level),
this.tokens.push(n),
n
)
}),
(n.prototype.scanDelims = function(e, r) {
var t,
n,
s,
c,
l,
u,
p,
h,
f,
d = e,
m = !0,
_ = !0,
g = this.posMax,
k = this.src.charCodeAt(e)
for (
t = e > 0 ? this.src.charCodeAt(e - 1) : 32;
d < g && this.src.charCodeAt(d) === k;
)
d++
return (
(s = d - e),
(n = d < g ? this.src.charCodeAt(d) : 32),
(p = a(t) || i(String.fromCharCode(t))),
(f = a(n) || i(String.fromCharCode(n))),
(u = o(t)),
(h = o(n)),
h ? (m = !1) : f && (u || p || (m = !1)),
u ? (_ = !1) : p && (h || f || (_ = !1)),
r
? ((c = m), (l = _))
: ((c = m && (!_ || p)), (l = _ && (!m || f))),
{
can_open: c,
can_close: l,
length: s
}
)
}),
(n.prototype.Token = s),
(r.exports = n)
},
{ '../common/utils': 4, '../token': 51 }
],
48: [
function(e, r, t) {
'use strict'
;(r.exports.tokenize = function(e, r) {
var t,
n,
s,
o,
i,
a = e.pos,
c = e.src.charCodeAt(a)
if (r) return !1
if (126 !== c) return !1
if (
((n = e.scanDelims(e.pos, !0)),
(o = n.length),
(i = String.fromCharCode(c)),
o < 2)
)
return !1
for (
o % 2 && ((s = e.push('text', '', 0)), (s.content = i), o--),
t = 0;
t < o;
t += 2
)
(s = e.push('text', '', 0)),
(s.content = i + i),
e.delimiters.push({
marker: c,
jump: t,
token: e.tokens.length - 1,
level: e.level,
end: -1,
open: n.can_open,
close: n.can_close
})
return (e.pos += n.length), !0
}),
(r.exports.postProcess = function(e) {
var r,
t,
n,
s,
o,
i = [],
a = e.delimiters,
c = e.delimiters.length
for (r = 0; r < c; r++)
(n = a[r]),
126 === n.marker &&
n.end !== -1 &&
((s = a[n.end]),
(o = e.tokens[n.token]),
(o.type = 's_open'),
(o.tag = 's'),
(o.nesting = 1),
(o.markup = '~~'),
(o.content = ''),
(o = e.tokens[s.token]),
(o.type = 's_close'),
(o.tag = 's'),
(o.nesting = -1),
(o.markup = '~~'),
(o.content = ''),
'text' === e.tokens[s.token - 1].type &&
'~' === e.tokens[s.token - 1].content &&
i.push(s.token - 1))
for (; i.length; ) {
for (
r = i.pop(), t = r + 1;
t < e.tokens.length && 's_close' === e.tokens[t].type;
)
t++
t--,
r !== t &&
((o = e.tokens[t]),
(e.tokens[t] = e.tokens[r]),
(e.tokens[r] = o))
}
})
},
{}
],
49: [
function(e, r, t) {
'use strict'
function n(e) {
switch (e) {
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
}
}
r.exports = function(e, r) {
for (var t = e.pos; t < e.posMax && !n(e.src.charCodeAt(t)); )
t++
return (
t !== e.pos &&
(r || (e.pending += e.src.slice(e.pos, t)), (e.pos = t), !0)
)
}
},
{}
],
50: [
function(e, r, t) {
'use strict'
r.exports = function(e) {
var r,
t,
n = 0,
s = e.tokens,
o = e.tokens.length
for (r = t = 0; r < o; r++)
(n += s[r].nesting),
(s[r].level = n),
'text' === s[r].type &&
r + 1 < o &&
'text' === s[r + 1].type
? (s[r + 1].content = s[r].content + s[r + 1].content)
: (r !== t && (s[t] = s[r]), t++)
r !== t && (s.length = t)
}
},
{}
],
51: [
function(e, r, t) {
'use strict'
function n(e, r, t) {
;(this.type = e),
(this.tag = r),
(this.attrs = null),
(this.map = null),
(this.nesting = t),
(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(e) {
var r, t, n
if (!this.attrs) return -1
for (r = this.attrs, t = 0, n = r.length; t < n; t++)
if (r[t][0] === e) return t
return -1
}),
(n.prototype.attrPush = function(e) {
this.attrs ? this.attrs.push(e) : (this.attrs = [e])
}),
(n.prototype.attrSet = function(e, r) {
var t = this.attrIndex(e),
n = [e, r]
t < 0 ? this.attrPush(n) : (this.attrs[t] = n)
}),
(n.prototype.attrGet = function(e) {
var r = this.attrIndex(e),
t = null
return r >= 0 && (t = this.attrs[r][1]), t
}),
(n.prototype.attrJoin = function(e, r) {
var t = this.attrIndex(e)
t < 0
? this.attrPush([e, r])
: (this.attrs[t][1] = this.attrs[t][1] + ' ' + r)
}),
(r.exports = n)
},
{}
],
52: [
function(r, t, n) {
;(function(r) {
!(function(s) {
function o(e) {
throw new RangeError(R[e])
}
function i(e, r) {
for (var t = e.length, n = []; t--; ) n[t] = r(e[t])
return n
}
function a(e, r) {
var t = e.split('@'),
n = ''
t.length > 1 && ((n = t[0] + '@'), (e = t[1])),
(e = e.replace(T, '.'))
var s = e.split('.'),
o = i(s, r).join('.')
return n + o
}
function c(e) {
for (var r, t, n = [], s = 0, o = e.length; s < o; )
(r = e.charCodeAt(s++)),
r >= 55296 && r <= 56319 && s < o
? ((t = e.charCodeAt(s++)),
56320 == (64512 & t)
? n.push(((1023 & r) << 10) + (1023 & t) + 65536)
: (n.push(r), s--))
: n.push(r)
return n
}
function l(e) {
return i(e, function(e) {
var r = ''
return (
e > 65535 &&
((e -= 65536),
(r += B(((e >>> 10) & 1023) | 55296)),
(e = 56320 | (1023 & e))),
(r += B(e))
)
}).join('')
}
function u(e) {
return e - 48 < 10
? e - 22
: e - 65 < 26
? e - 65
: e - 97 < 26
? e - 97
: C
}
function p(e, r) {
return e + 22 + 75 * (e < 26) - ((0 != r) << 5)
}
function h(e, r, t) {
var n = 0
for (
e = t ? I(e / q) : e >> 1, e += I(e / r);
e > (M * w) >> 1;
n += C
)
e = I(e / M)
return I(n + ((M + 1) * e) / (e + D))
}
function f(e) {
var r,
t,
n,
s,
i,
a,
c,
p,
f,
d,
m = [],
_ = e.length,
g = 0,
k = S,
b = E
for (
t = e.lastIndexOf(F), t < 0 && (t = 0), n = 0;
n < t;
++n
)
e.charCodeAt(n) >= 128 && o('not-basic'),
m.push(e.charCodeAt(n))
for (s = t > 0 ? t + 1 : 0; s < _; ) {
for (
i = g, a = 1, c = C;
s >= _ && o('invalid-input'),
(p = u(e.charCodeAt(s++))),
(p >= C || p > I((y - g) / a)) && o('overflow'),
(g += p * a),
(f = c <= b ? A : c >= b + w ? w : c - b),
!(p < f);
c += C
)
(d = C - f), a > I(y / d) && o('overflow'), (a *= d)
;(r = m.length + 1),
(b = h(g - i, r, 0 == i)),
I(g / r) > y - k && o('overflow'),
(k += I(g / r)),
(g %= r),
m.splice(g++, 0, k)
}
return l(m)
}
function d(e) {
var r,
t,
n,
s,
i,
a,
l,
u,
f,
d,
m,
_,
g,
k,
b,
v = []
for (
e = c(e), _ = e.length, r = S, t = 0, i = E, a = 0;
a < _;
++a
)
(m = e[a]), m < 128 && v.push(B(m))
for (n = s = v.length, s && v.push(F); n < _; ) {
for (l = y, a = 0; a < _; ++a)
(m = e[a]), m >= r && m < l && (l = m)
for (
g = n + 1,
l - r > I((y - t) / g) && o('overflow'),
t += (l - r) * g,
r = l,
a = 0;
a < _;
++a
)
if (
((m = e[a]),
m < r && ++t > y && o('overflow'),
m == r)
) {
for (
u = t, f = C;
(d = f <= i ? A : f >= i + w ? w : f - i), !(u < d);
f += C
)
(b = u - d),
(k = C - d),
v.push(B(p(d + (b % k), 0))),
(u = I(b / k))
v.push(B(p(u, 0))),
(i = h(t, g, n == s)),
(t = 0),
++n
}
++t, ++r
}
return v.join('')
}
function m(e) {
return a(e, function(e) {
return z.test(e) ? f(e.slice(4).toLowerCase()) : e
})
}
function _(e) {
return a(e, function(e) {
return L.test(e) ? 'xn--' + d(e) : e
})
}
var g = 'object' == typeof n && n && !n.nodeType && n,
k = 'object' == typeof t && t && !t.nodeType && t,
b = 'object' == typeof r && r
;(b.global !== b && b.window !== b && b.self !== b) || (s = b)
var v,
x,
y = 2147483647,
C = 36,
A = 1,
w = 26,
D = 38,
q = 700,
E = 72,
S = 128,
F = '-',
z = /^xn--/,
L = /[^\x20-\x7E]/,
T = /[\x2E\u3002\uFF0E\uFF61]/g,
R = {
overflow:
'Overflow: input needs wider integers to process',
'not-basic':
'Illegal input >= 0x80 (not a basic code point)',
'invalid-input': 'Invalid input'
},
M = C - A,
I = Math.floor,
B = String.fromCharCode
if (
((v = {
version: '1.4.1',
ucs2: { decode: c, encode: l },
decode: f,
encode: d,
toASCII: _,
toUnicode: m
}),
'function' == typeof e && 'object' == typeof e.amd && e.amd)
)
e('punycode', function() {
return v
})
else if (g && k)
if (t.exports == g) k.exports = v
else for (x in v) v.hasOwnProperty(x) && (g[x] = v[x])
else s.punycode = v
})(this)
}.call(
this,
'undefined' != typeof global
? global
: 'undefined' != typeof self
? self
: 'undefined' != typeof window
? window
: {}
))
},
{}
],
53: [
function(e, r, t) {
r.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: ' ',
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(e, r, t) {
'use strict'
function n(e) {
var r = Array.prototype.slice.call(arguments, 1)
return (
r.forEach(function(r) {
r &&
Object.keys(r).forEach(function(t) {
e[t] = r[t]
})
}),
e
)
}
function s(e) {
return Object.prototype.toString.call(e)
}
function o(e) {
return '[object String]' === s(e)
}
function i(e) {
return '[object Object]' === s(e)
}
function a(e) {
return '[object RegExp]' === s(e)
}
function c(e) {
return '[object Function]' === s(e)
}
function l(e) {
return e.replace(/[.?*+^$[\]\\(){}|-]/g, '\\$&')
}
function u(e) {
return Object.keys(e || {}).reduce(function(e, r) {
return e || k.hasOwnProperty(r)
}, !1)
}
function p(e) {
;(e.__index__ = -1), (e.__text_cache__ = '')
}
function h(e) {
return function(r, t) {
var n = r.slice(t)
return e.test(n) ? n.match(e)[0].length : 0
}
}
function f() {
return function(e, r) {
r.normalize(e)
}
}
function d(r) {
function t(e) {
return e.replace('%TLDS%', s.src_tlds)
}
function n(e, r) {
throw new Error(
'(LinkifyIt) Invalid schema "' + e + '": ' + r
)
}
var s = (r.re = e('./lib/re')(r.__opts__)),
u = r.__tlds__.slice()
r.onCompile(),
r.__tlds_replaced__ || u.push(v),
u.push(s.src_xn),
(s.src_tlds = u.join('|')),
(s.email_fuzzy = RegExp(t(s.tpl_email_fuzzy), 'i')),
(s.link_fuzzy = RegExp(t(s.tpl_link_fuzzy), 'i')),
(s.link_no_ip_fuzzy = RegExp(t(s.tpl_link_no_ip_fuzzy), 'i')),
(s.host_fuzzy_test = RegExp(t(s.tpl_host_fuzzy_test), 'i'))
var d = []
;(r.__compiled__ = {}),
Object.keys(r.__schemas__).forEach(function(e) {
var t = r.__schemas__[e]
if (null !== t) {
var s = { validate: null, link: null }
return (
(r.__compiled__[e] = s),
i(t)
? (a(t.validate)
? (s.validate = h(t.validate))
: c(t.validate)
? (s.validate = t.validate)
: n(e, t),
void (c(t.normalize)
? (s.normalize = t.normalize)
: t.normalize
? n(e, t)
: (s.normalize = f())))
: o(t)
? void d.push(e)
: void n(e, t)
)
}
}),
d.forEach(function(e) {
r.__compiled__[r.__schemas__[e]] &&
((r.__compiled__[e].validate =
r.__compiled__[r.__schemas__[e]].validate),
(r.__compiled__[e].normalize =
r.__compiled__[r.__schemas__[e]].normalize))
}),
(r.__compiled__[''] = { validate: null, normalize: f() })
var m = Object.keys(r.__compiled__)
.filter(function(e) {
return e.length > 0 && r.__compiled__[e]
})
.map(l)
.join('|')
;(r.re.schema_test = RegExp(
'(^|(?!_)(?:[><]|' + s.src_ZPCc + '))(' + m + ')',
'i'
)),
(r.re.schema_search = RegExp(
'(^|(?!_)(?:[><]|' + s.src_ZPCc + '))(' + m + ')',
'ig'
)),
(r.re.pretest = RegExp(
'(' +
r.re.schema_test.source +
')|(' +
r.re.host_fuzzy_test.source +
')|@',
'i'
)),
p(r)
}
function m(e, r) {
var t = e.__index__,
n = e.__last_index__,
s = e.__text_cache__.slice(t, n)
;(this.schema = e.__schema__.toLowerCase()),
(this.index = t + r),
(this.lastIndex = n + r),
(this.raw = s),
(this.text = s),
(this.url = s)
}
function _(e, r) {
var t = new m(e, r)
return e.__compiled__[t.schema].normalize(t, e), t
}
function g(e, r) {
return this instanceof g
? (r || (u(e) && ((r = e), (e = {}))),
(this.__opts__ = n({}, k, r)),
(this.__index__ = -1),
(this.__last_index__ = -1),
(this.__schema__ = ''),
(this.__text_cache__ = ''),
(this.__schemas__ = n({}, b, e)),
(this.__compiled__ = {}),
(this.__tlds__ = x),
(this.__tlds_replaced__ = !1),
(this.re = {}),
void d(this))
: new g(e, r)
}
var k = { fuzzyLink: !0, fuzzyEmail: !0, fuzzyIP: !1 },
b = {
'http:': {
validate: function(e, r, t) {
var n = e.slice(r)
return (
t.re.http ||
(t.re.http = new RegExp(
'^\\/\\/' +
t.re.src_auth +
t.re.src_host_port_strict +
t.re.src_path,
'i'
)),
t.re.http.test(n) ? n.match(t.re.http)[0].length : 0
)
}
},
'https:': 'http:',
'ftp:': 'http:',
'//': {
validate: function(e, r, t) {
var n = e.slice(r)
return (
t.re.no_http ||
(t.re.no_http = new RegExp(
'^' +
t.re.src_auth +
'(?:localhost|(?:(?:' +
t.re.src_domain +
')\\.)+' +
t.re.src_domain_root +
')' +
t.re.src_port +
t.re.src_host_terminator +
t.re.src_path,
'i'
)),
t.re.no_http.test(n)
? r >= 3 && ':' === e[r - 3]
? 0
: r >= 3 && '/' === e[r - 3]
? 0
: n.match(t.re.no_http)[0].length
: 0
)
}
},
'mailto:': {
validate: function(e, r, t) {
var n = e.slice(r)
return (
t.re.mailto ||
(t.re.mailto = new RegExp(
'^' +
t.re.src_email_name +
'@' +
t.re.src_host_strict,
'i'
)),
t.re.mailto.test(n) ? n.match(t.re.mailto)[0].length : 0
)
}
}
},
v =
'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]',
x = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split(
'|'
)
;(g.prototype.add = function(e, r) {
return (this.__schemas__[e] = r), d(this), this
}),
(g.prototype.set = function(e) {
return (this.__opts__ = n(this.__opts__, e)), this
}),
(g.prototype.test = function(e) {
if (
((this.__text_cache__ = e),
(this.__index__ = -1),
!e.length)
)
return !1
var r, t, n, s, o, i, a, c, l
if (this.re.schema_test.test(e))
for (
a = this.re.schema_search, a.lastIndex = 0;
null !== (r = a.exec(e));
)
if ((s = this.testSchemaAt(e, r[2], a.lastIndex))) {
;(this.__schema__ = r[2]),
(this.__index__ = r.index + r[1].length),
(this.__last_index__ = r.index + r[0].length + s)
break
}
return (
this.__opts__.fuzzyLink &&
this.__compiled__['http:'] &&
((c = e.search(this.re.host_fuzzy_test)),
c >= 0 &&
(this.__index__ < 0 || c < this.__index__) &&
null !==
(t = e.match(
this.__opts__.fuzzyIP
? this.re.link_fuzzy
: this.re.link_no_ip_fuzzy
)) &&
((o = t.index + t[1].length),
(this.__index__ < 0 || o < this.__index__) &&
((this.__schema__ = ''),
(this.__index__ = o),
(this.__last_index__ = t.index + t[0].length)))),
this.__opts__.fuzzyEmail &&
this.__compiled__['mailto:'] &&
((l = e.indexOf('@')),
l >= 0 &&
null !== (n = e.match(this.re.email_fuzzy)) &&
((o = n.index + n[1].length),
(i = n.index + n[0].length),
(this.__index__ < 0 ||
o < this.__index__ ||
(o === this.__index__ && i > this.__last_index__)) &&
((this.__schema__ = 'mailto:'),
(this.__index__ = o),
(this.__last_index__ = i)))),
this.__index__ >= 0
)
}),
(g.prototype.pretest = function(e) {
return this.re.pretest.test(e)
}),
(g.prototype.testSchemaAt = function(e, r, t) {
return this.__compiled__[r.toLowerCase()]
? this.__compiled__[r.toLowerCase()].validate(e, t, this)
: 0
}),
(g.prototype.match = function(e) {
var r = 0,
t = []
this.__index__ >= 0 &&
this.__text_cache__ === e &&
(t.push(_(this, r)), (r = this.__last_index__))
for (var n = r ? e.slice(r) : e; this.test(n); )
t.push(_(this, r)),
(n = n.slice(this.__last_index__)),
(r += this.__last_index__)
return t.length ? t : null
}),
(g.prototype.tlds = function(e, r) {
return (
(e = Array.isArray(e) ? e : [e]),
r
? ((this.__tlds__ = this.__tlds__
.concat(e)
.sort()
.filter(function(e, r, t) {
return e !== t[r - 1]
})
.reverse()),
d(this),
this)
: ((this.__tlds__ = e.slice()),
(this.__tlds_replaced__ = !0),
d(this),
this)
)
}),
(g.prototype.normalize = function(e) {
e.schema || (e.url = 'http://' + e.url),
'mailto:' !== e.schema ||
/^mailto:/i.test(e.url) ||
(e.url = 'mailto:' + e.url)
}),
(g.prototype.onCompile = function() {}),
(r.exports = g)
},
{ './lib/re': 55 }
],
55: [
function(e, r, t) {
'use strict'
r.exports = function(r) {
var t = {}
return (
(t.src_Any = e('uc.micro/properties/Any/regex').source),
(t.src_Cc = e('uc.micro/categories/Cc/regex').source),
(t.src_Z = e('uc.micro/categories/Z/regex').source),
(t.src_P = e('uc.micro/categories/P/regex').source),
(t.src_ZPCc = [t.src_Z, t.src_P, t.src_Cc].join('|')),
(t.src_ZCc = [t.src_Z, t.src_Cc].join('|')),
(t.src_pseudo_letter =
'(?:(?!>|<|' + t.src_ZPCc + ')' + t.src_Any + ')'),
(t.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]?)'),
(t.src_auth = '(?:(?:(?!' + t.src_ZCc + '|[@/]).)+@)?'),
(t.src_port =
'(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?'),
(t.src_host_terminator =
'(?=$|>|<|' +
t.src_ZPCc +
')(?!-|_|:\\d|\\.-|\\.(?!$|' +
t.src_ZPCc +
'))'),
(t.src_path =
'(?:[/?#](?:(?!' +
t.src_ZCc +
'|[()[\\]{}.,"\'?!\\-<>]).|\\[(?:(?!' +
t.src_ZCc +
'|\\]).)*\\]|\\((?:(?!' +
t.src_ZCc +
'|[)]).)*\\)|\\{(?:(?!' +
t.src_ZCc +
'|[}]).)*\\}|\\"(?:(?!' +
t.src_ZCc +
'|["]).)+\\"|\\\'(?:(?!' +
t.src_ZCc +
"|[']).)+\\'|\\'(?=" +
t.src_pseudo_letter +
'|[-]).|\\.{2,3}[a-zA-Z0-9%/]|\\.(?!' +
t.src_ZCc +
'|[.]).|' +
(r && r['---'] ? '\\-(?!--(?:[^-]|$))(?:-*)|' : '\\-+|') +
'\\,(?!' +
t.src_ZCc +
').|\\!(?!' +
t.src_ZCc +
'|[!]).|\\?(?!' +
t.src_ZCc +
'|[?]).)+|\\/)?'),
(t.src_email_name = '[\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]+'),
(t.src_xn = 'xn--[a-z0-9\\-]{1,59}'),
(t.src_domain_root =
'(?:' + t.src_xn + '|' + t.src_pseudo_letter + '{1,63})'),
(t.src_domain =
'(?:' +
t.src_xn +
'|(?:' +
t.src_pseudo_letter +
')|(?:' +
t.src_pseudo_letter +
'(?:-(?!-)|' +
t.src_pseudo_letter +
'){0,61}' +
t.src_pseudo_letter +
'))'),
(t.src_host =
'(?:(?:(?:(?:' +
t.src_domain +
')\\.)*' +
t.src_domain_root +
'))'),
(t.tpl_host_fuzzy =
'(?:' +
t.src_ip4 +
'|(?:(?:(?:' +
t.src_domain +
')\\.)+(?:%TLDS%)))'),
(t.tpl_host_no_ip_fuzzy =
'(?:(?:(?:' + t.src_domain + ')\\.)+(?:%TLDS%))'),
(t.src_host_strict = t.src_host + t.src_host_terminator),
(t.tpl_host_fuzzy_strict =
t.tpl_host_fuzzy + t.src_host_terminator),
(t.src_host_port_strict =
t.src_host + t.src_port + t.src_host_terminator),
(t.tpl_host_port_fuzzy_strict =
t.tpl_host_fuzzy + t.src_port + t.src_host_terminator),
(t.tpl_host_port_no_ip_fuzzy_strict =
t.tpl_host_no_ip_fuzzy +
t.src_port +
t.src_host_terminator),
(t.tpl_host_fuzzy_test =
'localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:' +
t.src_ZPCc +
'|>|$))'),
(t.tpl_email_fuzzy =
'(^|<|>|\\(|' +
t.src_ZCc +
')(' +
t.src_email_name +
'@' +
t.tpl_host_fuzzy_strict +
')'),
(t.tpl_link_fuzzy =
'(^|(?![.:/\\-_@])(?:[$+<=>^`|]|' +
t.src_ZPCc +
'))((?![$+<=>^`|])' +
t.tpl_host_port_fuzzy_strict +
t.src_path +
')'),
(t.tpl_link_no_ip_fuzzy =
'(^|(?![.:/\\-_@])(?:[$+<=>^`|]|' +
t.src_ZPCc +
'))((?![$+<=>^`|])' +
t.tpl_host_port_no_ip_fuzzy_strict +
t.src_path +
')'),
t
)
}
},
{
'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(e, r, t) {
'use strict'
function n(e) {
var r,
t,
n = o[e]
if (n) return n
for (n = o[e] = [], r = 0; r < 128; r++)
(t = String.fromCharCode(r)), n.push(t)
for (r = 0; r < e.length; r++)
(t = e.charCodeAt(r)),
(n[t] =
'%' + ('0' + t.toString(16).toUpperCase()).slice(-2))
return n
}
function s(e, r) {
var t
return (
'string' != typeof r && (r = s.defaultChars),
(t = n(r)),
e.replace(/(%[a-f0-9]{2})+/gi, function(e) {
var r,
n,
s,
o,
i,
a,
c,
l = ''
for (r = 0, n = e.length; r < n; r += 3)
(s = parseInt(e.slice(r + 1, r + 3), 16)),
s < 128
? (l += t[s])
: 192 === (224 & s) &&
r + 3 < n &&
((o = parseInt(e.slice(r + 4, r + 6), 16)),
128 === (192 & o))
? ((c = ((s << 6) & 1984) | (63 & o)),
(l += c < 128 ? '<27><>' : String.fromCharCode(c)),
(r += 3))
: 224 === (240 & s) &&
r + 6 < n &&
((o = parseInt(e.slice(r + 4, r + 6), 16)),
(i = parseInt(e.slice(r + 7, r + 9), 16)),
128 === (192 & o) && 128 === (192 & i))
? ((c =
((s << 12) & 61440) |
((o << 6) & 4032) |
(63 & i)),
(l +=
c < 2048 || (c >= 55296 && c <= 57343)
? '<27><><EFBFBD>'
: String.fromCharCode(c)),
(r += 6))
: 240 === (248 & s) &&
r + 9 < n &&
((o = parseInt(e.slice(r + 4, r + 6), 16)),
(i = parseInt(e.slice(r + 7, r + 9), 16)),
(a = parseInt(e.slice(r + 10, r + 12), 16)),
128 === (192 & o) &&
128 === (192 & i) &&
128 === (192 & a))
? ((c =
((s << 18) & 1835008) |
((o << 12) & 258048) |
((i << 6) & 4032) |
(63 & a)),
c < 65536 || c > 1114111
? (l += '<27><><EFBFBD><EFBFBD>')
: ((c -= 65536),
(l += String.fromCharCode(
55296 + (c >> 10),
56320 + (1023 & c)
))),
(r += 9))
: (l += '<27>')
return l
})
)
}
var o = {}
;(s.defaultChars = ';/?:@&=+$,#'),
(s.componentChars = ''),
(r.exports = s)
},
{}
],
57: [
function(e, r, t) {
'use strict'
function n(e) {
var r,
t,
n = o[e]
if (n) return n
for (n = o[e] = [], r = 0; r < 128; r++)
(t = String.fromCharCode(r)),
/^[0-9a-z]$/i.test(t)
? n.push(t)
: n.push(
'%' + ('0' + r.toString(16).toUpperCase()).slice(-2)
)
for (r = 0; r < e.length; r++) n[e.charCodeAt(r)] = e[r]
return n
}
function s(e, r, t) {
var o,
i,
a,
c,
l,
u = ''
for (
'string' != typeof r && ((t = r), (r = s.defaultChars)),
'undefined' == typeof t && (t = !0),
l = n(r),
o = 0,
i = e.length;
o < i;
o++
)
if (
((a = e.charCodeAt(o)),
t &&
37 === a &&
o + 2 < i &&
/^[0-9a-f]{2}$/i.test(e.slice(o + 1, o + 3)))
)
(u += e.slice(o, o + 3)), (o += 2)
else if (a < 128) u += l[a]
else if (a >= 55296 && a <= 57343) {
if (
a >= 55296 &&
a <= 56319 &&
o + 1 < i &&
((c = e.charCodeAt(o + 1)), c >= 56320 && c <= 57343)
) {
;(u += encodeURIComponent(e[o] + e[o + 1])), o++
continue
}
u += '%EF%BF%BD'
} else u += encodeURIComponent(e[o])
return u
}
var o = {}
;(s.defaultChars = ";/?:@&=+$,-_.!~*'()#"),
(s.componentChars = "-_.!~*'()"),
(r.exports = s)
},
{}
],
58: [
function(e, r, t) {
'use strict'
r.exports = function(e) {
var r = ''
return (
(r += e.protocol || ''),
(r += e.slashes ? '//' : ''),
(r += e.auth ? e.auth + '@' : ''),
(r +=
e.hostname && e.hostname.indexOf(':') !== -1
? '[' + e.hostname + ']'
: e.hostname || ''),
(r += e.port ? ':' + e.port : ''),
(r += e.pathname || ''),
(r += e.search || ''),
(r += e.hash || '')
)
}
},
{}
],
59: [
function(e, r, t) {
'use strict'
;(r.exports.encode = e('./encode')),
(r.exports.decode = e('./decode')),
(r.exports.format = e('./format')),
(r.exports.parse = e('./parse'))
},
{ './decode': 56, './encode': 57, './format': 58, './parse': 60 }
],
60: [
function(e, r, t) {
'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 s(e, r) {
if (e && e instanceof n) return e
var t = new n()
return t.parse(e, r), t
}
var o = /^([a-z0-9.+-]+:)/i,
i = /:[0-9]*$/,
a = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,
c = ['<', '>', '"', '`', ' ', '\r', '\n', ' '],
l = ['{', '}', '|', '\\', '^', '`'].concat(c),
u = ["'"].concat(l),
p = ['%', '/', '?', ';', '#'].concat(u),
h = ['/', '?', '#'],
f = 255,
d = /^[+a-z0-9A-Z_-]{0,63}$/,
m = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,
_ = { javascript: !0, 'javascript:': !0 },
g = {
http: !0,
https: !0,
ftp: !0,
gopher: !0,
file: !0,
'http:': !0,
'https:': !0,
'ftp:': !0,
'gopher:': !0,
'file:': !0
}
;(n.prototype.parse = function(e, r) {
var t,
n,
s,
i,
c,
l = e
if (((l = l.trim()), !r && 1 === e.split('#').length)) {
var u = a.exec(l)
if (u)
return (
(this.pathname = u[1]), u[2] && (this.search = u[2]), this
)
}
var k = o.exec(l)
if (
(k &&
((k = k[0]),
(s = k.toLowerCase()),
(this.protocol = k),
(l = l.substr(k.length))),
(r || k || l.match(/^\/\/[^@\/]+@[^@\/]+/)) &&
((c = '//' === l.substr(0, 2)),
!c ||
(k && _[k]) ||
((l = l.substr(2)), (this.slashes = !0))),
!_[k] && (c || (k && !g[k])))
) {
var b = -1
for (t = 0; t < h.length; t++)
(i = l.indexOf(h[t])),
i !== -1 && (b === -1 || i < b) && (b = i)
var v, x
for (
x = b === -1 ? l.lastIndexOf('@') : l.lastIndexOf('@', b),
x !== -1 &&
((v = l.slice(0, x)),
(l = l.slice(x + 1)),
(this.auth = v)),
b = -1,
t = 0;
t < p.length;
t++
)
(i = l.indexOf(p[t])),
i !== -1 && (b === -1 || i < b) && (b = i)
b === -1 && (b = l.length), ':' === l[b - 1] && b--
var y = l.slice(0, b)
;(l = l.slice(b)),
this.parseHost(y),
(this.hostname = this.hostname || '')
var C =
'[' === this.hostname[0] &&
']' === this.hostname[this.hostname.length - 1]
if (!C) {
var A = this.hostname.split(/\./)
for (t = 0, n = A.length; t < n; t++) {
var w = A[t]
if (w && !w.match(d)) {
for (var D = '', q = 0, E = w.length; q < E; q++)
D += w.charCodeAt(q) > 127 ? 'x' : w[q]
if (!D.match(d)) {
var S = A.slice(0, t),
F = A.slice(t + 1),
z = w.match(m)
z && (S.push(z[1]), F.unshift(z[2])),
F.length && (l = F.join('.') + l),
(this.hostname = S.join('.'))
break
}
}
}
}
this.hostname.length > f && (this.hostname = ''),
C &&
(this.hostname = this.hostname.substr(
1,
this.hostname.length - 2
))
}
var L = l.indexOf('#')
L !== -1 && ((this.hash = l.substr(L)), (l = l.slice(0, L)))
var T = l.indexOf('?')
return (
T !== -1 &&
((this.search = l.substr(T)), (l = l.slice(0, T))),
l && (this.pathname = l),
g[s] &&
this.hostname &&
!this.pathname &&
(this.pathname = ''),
this
)
}),
(n.prototype.parseHost = function(e) {
var r = i.exec(e)
r &&
((r = r[0]),
':' !== r && (this.port = r.substr(1)),
(e = e.substr(0, e.length - r.length))),
e && (this.hostname = e)
}),
(r.exports = s)
},
{}
],
61: [
function(e, r, t) {
r.exports = /[\0-\x1F\x7F-\x9F]/
},
{}
],
62: [
function(e, r, t) {
r.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(e, r, t) {
r.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(e, r, t) {
r.exports = /[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/
},
{}
],
65: [
function(e, r, t) {
;(r.exports.Any = e('./properties/Any/regex')),
(r.exports.Cc = e('./categories/Cc/regex')),
(r.exports.Cf = e('./categories/Cf/regex')),
(r.exports.P = e('./categories/P/regex')),
(r.exports.Z = e('./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(e, r, t) {
r.exports = /[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/
},
{}
],
67: [
function(e, r, t) {
'use strict'
r.exports = e('./lib/')
},
{ './lib/': 9 }
]
},
{},
[67]
)(67)
})
define('Core/KnockoutMarkdownBinding', [
'markdown-it-sanitizer',
'markdown-it'
], function(MarkdownItSanitizer, MarkdownIt) {
'use strict'
var htmlTagRegex = /<html(.|\s)*>(.|\s)*<\/html>/im
var md = new MarkdownIt({ html: true, linkify: true })
md.use(MarkdownItSanitizer, {
imageClass: '',
removeUnbalanced: false,
removeUnknown: false
})
var KnockoutMarkdownBinding = {
register: function(Knockout) {
Knockout.bindingHandlers.markdown = {
init: function() {
return { controlsDescendantBindings: true }
},
update: function(element, valueAccessor) {
while (element.firstChild) {
Knockout.removeNode(element.firstChild)
}
var rawText = Knockout.unwrap(valueAccessor())
var html
if (htmlTagRegex.test(rawText)) {
html = rawText
} else {
html = md.render(rawText)
}
var nodes = Knockout.utils.parseHtmlFragment(html, element)
element.className = element.className + ' markdown'
for (var i = 0; i < nodes.length; ++i) {
var node = nodes[i]
setAnchorTargets(node)
element.appendChild(node)
}
}
}
}
}
function setAnchorTargets(element) {
if (element instanceof HTMLAnchorElement) {
element.target = '_blank'
}
if (element.childNodes && element.childNodes.length > 0) {
for (var i = 0; i < element.childNodes.length; ++i) {
setAnchorTargets(element.childNodes[i])
}
}
}
return KnockoutMarkdownBinding
})
!(function(a, b, c, d) {
'use strict'
function e(a, b, c) {
return setTimeout(j(a, c), b)
}
function f(a, b, c) {
return Array.isArray(a) ? (g(a, c[b], c), !0) : !1
}
function g(a, b, c) {
var e
if (a)
if (a.forEach) a.forEach(b, c)
else if (a.length !== d)
for (e = 0; e < a.length; ) b.call(c, a[e], e, a), e++
else for (e in a) a.hasOwnProperty(e) && b.call(c, a[e], e, a)
}
function h(b, c, d) {
var e = 'DEPRECATED METHOD: ' + c + '\n' + d + ' AT \n'
return function() {
var c = new Error('get-stack-trace'),
d =
c && c.stack
? c.stack
.replace(/^[^\(]+?[\n$]/gm, '')
.replace(/^\s+at\s+/gm, '')
.replace(/^Object.<anonymous>\s*\(/gm, '{anonymous}()@')
: 'Unknown Stack Trace',
f = a.console && (a.console.warn || a.console.log)
return f && f.call(a.console, e, d), b.apply(this, arguments)
}
}
function i(a, b, c) {
var d,
e = b.prototype
;(d = a.prototype = Object.create(e)),
(d.constructor = a),
(d._super = e),
c && la(d, c)
}
function j(a, b) {
return function() {
return a.apply(b, arguments)
}
}
function k(a, b) {
return typeof a == oa ? a.apply(b ? b[0] || d : d, b) : a
}
function l(a, b) {
return a === d ? b : a
}
function m(a, b, c) {
g(q(b), function(b) {
a.addEventListener(b, c, !1)
})
}
function n(a, b, c) {
g(q(b), function(b) {
a.removeEventListener(b, c, !1)
})
}
function o(a, b) {
for (; a; ) {
if (a == b) return !0
a = a.parentNode
}
return !1
}
function p(a, b) {
return a.indexOf(b) > -1
}
function q(a) {
return a.trim().split(/\s+/g)
}
function r(a, b, c) {
if (a.indexOf && !c) return a.indexOf(b)
for (var d = 0; d < a.length; ) {
if ((c && a[d][c] == b) || (!c && a[d] === b)) return d
d++
}
return -1
}
function s(a) {
return Array.prototype.slice.call(a, 0)
}
function t(a, b, c) {
for (var d = [], e = [], f = 0; f < a.length; ) {
var g = b ? a[f][b] : a[f]
r(e, g) < 0 && d.push(a[f]), (e[f] = g), f++
}
return (
c &&
(d = b
? d.sort(function(a, c) {
return a[b] > c[b]
})
: d.sort()),
d
)
}
function u(a, b) {
for (
var c, e, f = b[0].toUpperCase() + b.slice(1), g = 0;
g < ma.length;
) {
if (((c = ma[g]), (e = c ? c + f : b), e in a)) return e
g++
}
return d
}
function v() {
return ua++
}
function w(b) {
var c = b.ownerDocument || b
return c.defaultView || c.parentWindow || a
}
function x(a, b) {
var c = this
;(this.manager = a),
(this.callback = b),
(this.element = a.element),
(this.target = a.options.inputTarget),
(this.domHandler = function(b) {
k(a.options.enable, [a]) && c.handler(b)
}),
this.init()
}
function y(a) {
var b,
c = a.options.inputClass
return new (b = c ? c : xa ? M : ya ? P : wa ? R : L)(a, z)
}
function z(a, b, c) {
var d = c.pointers.length,
e = c.changedPointers.length,
f = b & Ea && d - e === 0,
g = b & (Ga | Ha) && d - e === 0
;(c.isFirst = !!f),
(c.isFinal = !!g),
f && (a.session = {}),
(c.eventType = b),
A(a, c),
a.emit('hammer.input', c),
a.recognize(c),
(a.session.prevInput = c)
}
function A(a, b) {
var c = a.session,
d = b.pointers,
e = d.length
c.firstInput || (c.firstInput = D(b)),
e > 1 && !c.firstMultiple
? (c.firstMultiple = D(b))
: 1 === e && (c.firstMultiple = !1)
var f = c.firstInput,
g = c.firstMultiple,
h = g ? g.center : f.center,
i = (b.center = E(d))
;(b.timeStamp = ra()),
(b.deltaTime = b.timeStamp - f.timeStamp),
(b.angle = I(h, i)),
(b.distance = H(h, i)),
B(c, b),
(b.offsetDirection = G(b.deltaX, b.deltaY))
var j = F(b.deltaTime, b.deltaX, b.deltaY)
;(b.overallVelocityX = j.x),
(b.overallVelocityY = j.y),
(b.overallVelocity = qa(j.x) > qa(j.y) ? j.x : j.y),
(b.scale = g ? K(g.pointers, d) : 1),
(b.rotation = g ? J(g.pointers, d) : 0),
(b.maxPointers = c.prevInput
? b.pointers.length > c.prevInput.maxPointers
? b.pointers.length
: c.prevInput.maxPointers
: b.pointers.length),
C(c, b)
var k = a.element
o(b.srcEvent.target, k) && (k = b.srcEvent.target), (b.target = k)
}
function B(a, b) {
var c = b.center,
d = a.offsetDelta || {},
e = a.prevDelta || {},
f = a.prevInput || {}
;(b.eventType !== Ea && f.eventType !== Ga) ||
((e = a.prevDelta = {
x: f.deltaX || 0,
y: f.deltaY || 0
}),
(d = a.offsetDelta = { x: c.x, y: c.y })),
(b.deltaX = e.x + (c.x - d.x)),
(b.deltaY = e.y + (c.y - d.y))
}
function C(a, b) {
var c,
e,
f,
g,
h = a.lastInterval || b,
i = b.timeStamp - h.timeStamp
if (b.eventType != Ha && (i > Da || h.velocity === d)) {
var j = b.deltaX - h.deltaX,
k = b.deltaY - h.deltaY,
l = F(i, j, k)
;(e = l.x),
(f = l.y),
(c = qa(l.x) > qa(l.y) ? l.x : l.y),
(g = G(j, k)),
(a.lastInterval = b)
} else
(c = h.velocity),
(e = h.velocityX),
(f = h.velocityY),
(g = h.direction)
;(b.velocity = c),
(b.velocityX = e),
(b.velocityY = f),
(b.direction = g)
}
function D(a) {
for (var b = [], c = 0; c < a.pointers.length; )
(b[c] = {
clientX: pa(a.pointers[c].clientX),
clientY: pa(a.pointers[c].clientY)
}),
c++
return {
timeStamp: ra(),
pointers: b,
center: E(b),
deltaX: a.deltaX,
deltaY: a.deltaY
}
}
function E(a) {
var b = a.length
if (1 === b) return { x: pa(a[0].clientX), y: pa(a[0].clientY) }
for (var c = 0, d = 0, e = 0; b > e; )
(c += a[e].clientX), (d += a[e].clientY), e++
return { x: pa(c / b), y: pa(d / b) }
}
function F(a, b, c) {
return { x: b / a || 0, y: c / a || 0 }
}
function G(a, b) {
return a === b
? Ia
: qa(a) >= qa(b)
? 0 > a
? Ja
: Ka
: 0 > b
? La
: Ma
}
function H(a, b, c) {
c || (c = Qa)
var d = b[c[0]] - a[c[0]],
e = b[c[1]] - a[c[1]]
return Math.sqrt(d * d + e * e)
}
function I(a, b, c) {
c || (c = Qa)
var d = b[c[0]] - a[c[0]],
e = b[c[1]] - a[c[1]]
return (180 * Math.atan2(e, d)) / Math.PI
}
function J(a, b) {
return I(b[1], b[0], Ra) + I(a[1], a[0], Ra)
}
function K(a, b) {
return H(b[0], b[1], Ra) / H(a[0], a[1], Ra)
}
function L() {
;(this.evEl = Ta),
(this.evWin = Ua),
(this.pressed = !1),
x.apply(this, arguments)
}
function M() {
;(this.evEl = Xa),
(this.evWin = Ya),
x.apply(this, arguments),
(this.store = this.manager.session.pointerEvents = [])
}
function N() {
;(this.evTarget = $a),
(this.evWin = _a),
(this.started = !1),
x.apply(this, arguments)
}
function O(a, b) {
var c = s(a.touches),
d = s(a.changedTouches)
return b & (Ga | Ha) && (c = t(c.concat(d), 'identifier', !0)), [c, d]
}
function P() {
;(this.evTarget = bb), (this.targetIds = {}), x.apply(this, arguments)
}
function Q(a, b) {
var c = s(a.touches),
d = this.targetIds
if (b & (Ea | Fa) && 1 === c.length)
return (d[c[0].identifier] = !0), [c, c]
var e,
f,
g = s(a.changedTouches),
h = [],
i = this.target
if (
((f = c.filter(function(a) {
return o(a.target, i)
})),
b === Ea)
)
for (e = 0; e < f.length; ) (d[f[e].identifier] = !0), e++
for (e = 0; e < g.length; )
d[g[e].identifier] && h.push(g[e]),
b & (Ga | Ha) && delete d[g[e].identifier],
e++
return h.length ? [t(f.concat(h), 'identifier', !0), h] : void 0
}
function R() {
x.apply(this, arguments)
var a = j(this.handler, this)
;(this.touch = new P(this.manager, a)),
(this.mouse = new L(this.manager, a)),
(this.primaryTouch = null),
(this.lastTouches = [])
}
function S(a, b) {
a & Ea
? ((this.primaryTouch = b.changedPointers[0].identifier),
T.call(this, b))
: a & (Ga | Ha) && T.call(this, b)
}
function T(a) {
var b = a.changedPointers[0]
if (b.identifier === this.primaryTouch) {
var c = { x: b.clientX, y: b.clientY }
this.lastTouches.push(c)
var d = this.lastTouches,
e = function() {
var a = d.indexOf(c)
a > -1 && d.splice(a, 1)
}
setTimeout(e, cb)
}
}
function U(a) {
for (
var b = a.srcEvent.clientX, c = a.srcEvent.clientY, d = 0;
d < this.lastTouches.length;
d++
) {
var e = this.lastTouches[d],
f = Math.abs(b - e.x),
g = Math.abs(c - e.y)
if (db >= f && db >= g) return !0
}
return !1
}
function V(a, b) {
;(this.manager = a), this.set(b)
}
function W(a) {
if (p(a, jb)) return jb
var b = p(a, kb),
c = p(a, lb)
return b && c ? jb : b || c ? (b ? kb : lb) : p(a, ib) ? ib : hb
}
function X() {
if (!fb) return !1
var b = {},
c = a.CSS && a.CSS.supports
return (
[
'auto',
'manipulation',
'pan-y',
'pan-x',
'pan-x pan-y',
'none'
].forEach(function(d) {
b[d] = c ? a.CSS.supports('touch-action', d) : !0
}),
b
)
}
function Y(a) {
;(this.options = la({}, this.defaults, a || {})),
(this.id = v()),
(this.manager = null),
(this.options.enable = l(this.options.enable, !0)),
(this.state = nb),
(this.simultaneous = {}),
(this.requireFail = [])
}
function Z(a) {
return a & sb
? 'cancel'
: a & qb
? 'end'
: a & pb
? 'move'
: a & ob
? 'start'
: ''
}
function $(a) {
return a == Ma
? 'down'
: a == La
? 'up'
: a == Ja
? 'left'
: a == Ka
? 'right'
: ''
}
function _(a, b) {
var c = b.manager
return c ? c.get(a) : a
}
function aa() {
Y.apply(this, arguments)
}
function ba() {
aa.apply(this, arguments), (this.pX = null), (this.pY = null)
}
function ca() {
aa.apply(this, arguments)
}
function da() {
Y.apply(this, arguments), (this._timer = null), (this._input = null)
}
function ea() {
aa.apply(this, arguments)
}
function fa() {
aa.apply(this, arguments)
}
function ga() {
Y.apply(this, arguments),
(this.pTime = !1),
(this.pCenter = !1),
(this._timer = null),
(this._input = null),
(this.count = 0)
}
function ha(a, b) {
return (
(b = b || {}),
(b.recognizers = l(b.recognizers, ha.defaults.preset)),
new ia(a, b)
)
}
function ia(a, b) {
;(this.options = la({}, ha.defaults, b || {})),
(this.options.inputTarget = this.options.inputTarget || a),
(this.handlers = {}),
(this.session = {}),
(this.recognizers = []),
(this.oldCssProps = {}),
(this.element = a),
(this.input = y(this)),
(this.touchAction = new V(this, this.options.touchAction)),
ja(this, !0),
g(
this.options.recognizers,
function(a) {
var b = this.add(new a[0](a[1]))
a[2] && b.recognizeWith(a[2]), a[3] && b.requireFailure(a[3])
},
this
)
}
function ja(a, b) {
var c = a.element
if (c.style) {
var d
g(a.options.cssProps, function(e, f) {
;(d = u(c.style, f)),
b
? ((a.oldCssProps[d] = c.style[d]), (c.style[d] = e))
: (c.style[d] = a.oldCssProps[d] || '')
}),
b || (a.oldCssProps = {})
}
}
function ka(a, c) {
var d = b.createEvent('Event')
d.initEvent(a, !0, !0), (d.gesture = c), c.target.dispatchEvent(d)
}
var la,
ma = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'],
na = b.createElement('div'),
oa = 'function',
pa = Math.round,
qa = Math.abs,
ra = Date.now
la =
'function' != typeof Object.assign
? function(a) {
if (a === d || null === a)
throw new TypeError(
'Cannot convert undefined or null to object'
)
for (var b = Object(a), c = 1; c < arguments.length; c++) {
var e = arguments[c]
if (e !== d && null !== e)
for (var f in e) e.hasOwnProperty(f) && (b[f] = e[f])
}
return b
}
: Object.assign
var sa = h(
function(a, b, c) {
for (var e = Object.keys(b), f = 0; f < e.length; )
(!c || (c && a[e[f]] === d)) && (a[e[f]] = b[e[f]]), f++
return a
},
'extend',
'Use `assign`.'
),
ta = h(
function(a, b) {
return sa(a, b, !0)
},
'merge',
'Use `assign`.'
),
ua = 1,
va = /mobile|tablet|ip(ad|hone|od)|android/i,
wa = 'ontouchstart' in a,
xa = u(a, 'PointerEvent') !== d,
ya = wa && va.test(navigator.userAgent),
za = 'touch',
Aa = 'pen',
Ba = 'mouse',
Ca = 'kinect',
Da = 25,
Ea = 1,
Fa = 2,
Ga = 4,
Ha = 8,
Ia = 1,
Ja = 2,
Ka = 4,
La = 8,
Ma = 16,
Na = Ja | Ka,
Oa = La | Ma,
Pa = Na | Oa,
Qa = ['x', 'y'],
Ra = ['clientX', 'clientY']
x.prototype = {
handler: function() {},
init: function() {
this.evEl && m(this.element, this.evEl, this.domHandler),
this.evTarget && m(this.target, this.evTarget, this.domHandler),
this.evWin && m(w(this.element), this.evWin, this.domHandler)
},
destroy: function() {
this.evEl && n(this.element, this.evEl, this.domHandler),
this.evTarget && n(this.target, this.evTarget, this.domHandler),
this.evWin && n(w(this.element), this.evWin, this.domHandler)
}
}
var Sa = { mousedown: Ea, mousemove: Fa, mouseup: Ga },
Ta = 'mousedown',
Ua = 'mousemove mouseup'
i(L, x, {
handler: function(a) {
var b = Sa[a.type]
b & Ea && 0 === a.button && (this.pressed = !0),
b & Fa && 1 !== a.which && (b = Ga),
this.pressed &&
(b & Ga && (this.pressed = !1),
this.callback(this.manager, b, {
pointers: [a],
changedPointers: [a],
pointerType: Ba,
srcEvent: a
}))
}
})
var Va = {
pointerdown: Ea,
pointermove: Fa,
pointerup: Ga,
pointercancel: Ha,
pointerout: Ha
},
Wa = { 2: za, 3: Aa, 4: Ba, 5: Ca },
Xa = 'pointerdown',
Ya = 'pointermove pointerup pointercancel'
a.MSPointerEvent &&
!a.PointerEvent &&
((Xa = 'MSPointerDown'),
(Ya = 'MSPointerMove MSPointerUp MSPointerCancel')),
i(M, x, {
handler: function(a) {
var b = this.store,
c = !1,
d = a.type.toLowerCase().replace('ms', ''),
e = Va[d],
f = Wa[a.pointerType] || a.pointerType,
g = f == za,
h = r(b, a.pointerId, 'pointerId')
e & Ea && (0 === a.button || g)
? 0 > h && (b.push(a), (h = b.length - 1))
: e & (Ga | Ha) && (c = !0),
0 > h ||
((b[h] = a),
this.callback(this.manager, e, {
pointers: b,
changedPointers: [a],
pointerType: f,
srcEvent: a
}),
c && b.splice(h, 1))
}
})
var Za = { touchstart: Ea, touchmove: Fa, touchend: Ga, touchcancel: Ha },
$a = 'touchstart',
_a = 'touchstart touchmove touchend touchcancel'
i(N, x, {
handler: function(a) {
var b = Za[a.type]
if ((b === Ea && (this.started = !0), this.started)) {
var c = O.call(this, a, b)
b & (Ga | Ha) &&
c[0].length - c[1].length === 0 &&
(this.started = !1),
this.callback(this.manager, b, {
pointers: c[0],
changedPointers: c[1],
pointerType: za,
srcEvent: a
})
}
}
})
var ab = { touchstart: Ea, touchmove: Fa, touchend: Ga, touchcancel: Ha },
bb = 'touchstart touchmove touchend touchcancel'
i(P, x, {
handler: function(a) {
var b = ab[a.type],
c = Q.call(this, a, b)
c &&
this.callback(this.manager, b, {
pointers: c[0],
changedPointers: c[1],
pointerType: za,
srcEvent: a
})
}
})
var cb = 2500,
db = 25
i(R, x, {
handler: function(a, b, c) {
var d = c.pointerType == za,
e = c.pointerType == Ba
if (
!(
e &&
c.sourceCapabilities &&
c.sourceCapabilities.firesTouchEvents
)
) {
if (d) S.call(this, b, c)
else if (e && U.call(this, c)) return
this.callback(a, b, c)
}
},
destroy: function() {
this.touch.destroy(), this.mouse.destroy()
}
})
var eb = u(na.style, 'touchAction'),
fb = eb !== d,
gb = 'compute',
hb = 'auto',
ib = 'manipulation',
jb = 'none',
kb = 'pan-x',
lb = 'pan-y',
mb = X()
V.prototype = {
set: function(a) {
a == gb && (a = this.compute()),
fb &&
this.manager.element.style &&
mb[a] &&
(this.manager.element.style[eb] = a),
(this.actions = a.toLowerCase().trim())
},
update: function() {
this.set(this.manager.options.touchAction)
},
compute: function() {
var a = []
return (
g(this.manager.recognizers, function(b) {
k(b.options.enable, [b]) && (a = a.concat(b.getTouchAction()))
}),
W(a.join(' '))
)
},
preventDefaults: function(a) {
var b = a.srcEvent,
c = a.offsetDirection
if (this.manager.session.prevented) return void b.preventDefault()
var d = this.actions,
e = p(d, jb) && !mb[jb],
f = p(d, lb) && !mb[lb],
g = p(d, kb) && !mb[kb]
if (e) {
var h = 1 === a.pointers.length,
i = a.distance < 2,
j = a.deltaTime < 250
if (h && i && j) return
}
return g && f
? void 0
: e || (f && c & Na) || (g && c & Oa)
? this.preventSrc(b)
: void 0
},
preventSrc: function(a) {
;(this.manager.session.prevented = !0), a.preventDefault()
}
}
var nb = 1,
ob = 2,
pb = 4,
qb = 8,
rb = qb,
sb = 16,
tb = 32
;(Y.prototype = {
defaults: {},
set: function(a) {
return (
la(this.options, a),
this.manager && this.manager.touchAction.update(),
this
)
},
recognizeWith: function(a) {
if (f(a, 'recognizeWith', this)) return this
var b = this.simultaneous
return (
(a = _(a, this)),
b[a.id] || ((b[a.id] = a), a.recognizeWith(this)),
this
)
},
dropRecognizeWith: function(a) {
return f(a, 'dropRecognizeWith', this)
? this
: ((a = _(a, this)), delete this.simultaneous[a.id], this)
},
requireFailure: function(a) {
if (f(a, 'requireFailure', this)) return this
var b = this.requireFail
return (
(a = _(a, this)),
-1 === r(b, a) && (b.push(a), a.requireFailure(this)),
this
)
},
dropRequireFailure: function(a) {
if (f(a, 'dropRequireFailure', this)) return this
a = _(a, this)
var b = r(this.requireFail, a)
return b > -1 && this.requireFail.splice(b, 1), this
},
hasRequireFailures: function() {
return this.requireFail.length > 0
},
canRecognizeWith: function(a) {
return !!this.simultaneous[a.id]
},
emit: function(a) {
function b(b) {
c.manager.emit(b, a)
}
var c = this,
d = this.state
qb > d && b(c.options.event + Z(d)),
b(c.options.event),
a.additionalEvent && b(a.additionalEvent),
d >= qb && b(c.options.event + Z(d))
},
tryEmit: function(a) {
return this.canEmit() ? this.emit(a) : void (this.state = tb)
},
canEmit: function() {
for (var a = 0; a < this.requireFail.length; ) {
if (!(this.requireFail[a].state & (tb | nb))) return !1
a++
}
return !0
},
recognize: function(a) {
var b = la({}, a)
return k(this.options.enable, [this, b])
? (this.state & (rb | sb | tb) && (this.state = nb),
(this.state = this.process(b)),
void (this.state & (ob | pb | qb | sb) && this.tryEmit(b)))
: (this.reset(), void (this.state = tb))
},
process: function(a) {},
getTouchAction: function() {},
reset: function() {}
}),
i(aa, Y, {
defaults: { pointers: 1 },
attrTest: function(a) {
var b = this.options.pointers
return 0 === b || a.pointers.length === b
},
process: function(a) {
var b = this.state,
c = a.eventType,
d = b & (ob | pb),
e = this.attrTest(a)
return d && (c & Ha || !e)
? b | sb
: d || e
? c & Ga
? b | qb
: b & ob
? b | pb
: ob
: tb
}
}),
i(ba, aa, {
defaults: { event: 'pan', threshold: 10, pointers: 1, direction: Pa },
getTouchAction: function() {
var a = this.options.direction,
b = []
return a & Na && b.push(lb), a & Oa && b.push(kb), b
},
directionTest: function(a) {
var b = this.options,
c = !0,
d = a.distance,
e = a.direction,
f = a.deltaX,
g = a.deltaY
return (
e & b.direction ||
(b.direction & Na
? ((e = 0 === f ? Ia : 0 > f ? Ja : Ka),
(c = f != this.pX),
(d = Math.abs(a.deltaX)))
: ((e = 0 === g ? Ia : 0 > g ? La : Ma),
(c = g != this.pY),
(d = Math.abs(a.deltaY)))),
(a.direction = e),
c && d > b.threshold && e & b.direction
)
},
attrTest: function(a) {
return (
aa.prototype.attrTest.call(this, a) &&
(this.state & ob || (!(this.state & ob) && this.directionTest(a)))
)
},
emit: function(a) {
;(this.pX = a.deltaX), (this.pY = a.deltaY)
var b = $(a.direction)
b && (a.additionalEvent = this.options.event + b),
this._super.emit.call(this, a)
}
}),
i(ca, aa, {
defaults: { event: 'pinch', threshold: 0, pointers: 2 },
getTouchAction: function() {
return [jb]
},
attrTest: function(a) {
return (
this._super.attrTest.call(this, a) &&
(Math.abs(a.scale - 1) > this.options.threshold ||
this.state & ob)
)
},
emit: function(a) {
if (1 !== a.scale) {
var b = a.scale < 1 ? 'in' : 'out'
a.additionalEvent = this.options.event + b
}
this._super.emit.call(this, a)
}
}),
i(da, Y, {
defaults: { event: 'press', pointers: 1, time: 251, threshold: 9 },
getTouchAction: function() {
return [hb]
},
process: function(a) {
var b = this.options,
c = a.pointers.length === b.pointers,
d = a.distance < b.threshold,
f = a.deltaTime > b.time
if (
((this._input = a), !d || !c || (a.eventType & (Ga | Ha) && !f))
)
this.reset()
else if (a.eventType & Ea)
this.reset(),
(this._timer = e(
function() {
;(this.state = rb), this.tryEmit()
},
b.time,
this
))
else if (a.eventType & Ga) return rb
return tb
},
reset: function() {
clearTimeout(this._timer)
},
emit: function(a) {
this.state === rb &&
(a && a.eventType & Ga
? this.manager.emit(this.options.event + 'up', a)
: ((this._input.timeStamp = ra()),
this.manager.emit(this.options.event, this._input)))
}
}),
i(ea, aa, {
defaults: { event: 'rotate', threshold: 0, pointers: 2 },
getTouchAction: function() {
return [jb]
},
attrTest: function(a) {
return (
this._super.attrTest.call(this, a) &&
(Math.abs(a.rotation) > this.options.threshold || this.state & ob)
)
}
}),
i(fa, aa, {
defaults: {
event: 'swipe',
threshold: 10,
velocity: 0.3,
direction: Na | Oa,
pointers: 1
},
getTouchAction: function() {
return ba.prototype.getTouchAction.call(this)
},
attrTest: function(a) {
var b,
c = this.options.direction
return (
c & (Na | Oa)
? (b = a.overallVelocity)
: c & Na
? (b = a.overallVelocityX)
: c & Oa && (b = a.overallVelocityY),
this._super.attrTest.call(this, a) &&
c & a.offsetDirection &&
a.distance > this.options.threshold &&
a.maxPointers == this.options.pointers &&
qa(b) > this.options.velocity &&
a.eventType & Ga
)
},
emit: function(a) {
var b = $(a.offsetDirection)
b && this.manager.emit(this.options.event + b, a),
this.manager.emit(this.options.event, a)
}
}),
i(ga, Y, {
defaults: {
event: 'tap',
pointers: 1,
taps: 1,
interval: 300,
time: 250,
threshold: 9,
posThreshold: 10
},
getTouchAction: function() {
return [ib]
},
process: function(a) {
var b = this.options,
c = a.pointers.length === b.pointers,
d = a.distance < b.threshold,
f = a.deltaTime < b.time
if ((this.reset(), a.eventType & Ea && 0 === this.count))
return this.failTimeout()
if (d && f && c) {
if (a.eventType != Ga) return this.failTimeout()
var g = this.pTime ? a.timeStamp - this.pTime < b.interval : !0,
h = !this.pCenter || H(this.pCenter, a.center) < b.posThreshold
;(this.pTime = a.timeStamp),
(this.pCenter = a.center),
h && g ? (this.count += 1) : (this.count = 1),
(this._input = a)
var i = this.count % b.taps
if (0 === i)
return this.hasRequireFailures()
? ((this._timer = e(
function() {
;(this.state = rb), this.tryEmit()
},
b.interval,
this
)),
ob)
: rb
}
return tb
},
failTimeout: function() {
return (
(this._timer = e(
function() {
this.state = tb
},
this.options.interval,
this
)),
tb
)
},
reset: function() {
clearTimeout(this._timer)
},
emit: function() {
this.state == rb &&
((this._input.tapCount = this.count),
this.manager.emit(this.options.event, this._input))
}
}),
(ha.VERSION = '2.0.7'),
(ha.defaults = {
domEvents: !1,
touchAction: gb,
enable: !0,
inputTarget: null,
inputClass: null,
preset: [
[ea, { enable: !1 }],
[ca, { enable: !1 }, ['rotate']],
[fa, { direction: Na }],
[ba, { direction: Na }, ['swipe']],
[ga],
[
ga,
{
event: 'doubletap',
taps: 2
},
['tap']
],
[da]
],
cssProps: {
userSelect: 'none',
touchSelect: 'none',
touchCallout: 'none',
contentZooming: 'none',
userDrag: 'none',
tapHighlightColor: 'rgba(0,0,0,0)'
}
})
var ub = 1,
vb = 2
;(ia.prototype = {
set: function(a) {
return (
la(this.options, a),
a.touchAction && this.touchAction.update(),
a.inputTarget &&
(this.input.destroy(),
(this.input.target = a.inputTarget),
this.input.init()),
this
)
},
stop: function(a) {
this.session.stopped = a ? vb : ub
},
recognize: function(a) {
var b = this.session
if (!b.stopped) {
this.touchAction.preventDefaults(a)
var c,
d = this.recognizers,
e = b.curRecognizer
;(!e || (e && e.state & rb)) && (e = b.curRecognizer = null)
for (var f = 0; f < d.length; )
(c = d[f]),
b.stopped === vb || (e && c != e && !c.canRecognizeWith(e))
? c.reset()
: c.recognize(a),
!e && c.state & (ob | pb | qb) && (e = b.curRecognizer = c),
f++
}
},
get: function(a) {
if (a instanceof Y) return a
for (var b = this.recognizers, c = 0; c < b.length; c++)
if (b[c].options.event == a) return b[c]
return null
},
add: function(a) {
if (f(a, 'add', this)) return this
var b = this.get(a.options.event)
return (
b && this.remove(b),
this.recognizers.push(a),
(a.manager = this),
this.touchAction.update(),
a
)
},
remove: function(a) {
if (f(a, 'remove', this)) return this
if ((a = this.get(a))) {
var b = this.recognizers,
c = r(b, a)
;-1 !== c && (b.splice(c, 1), this.touchAction.update())
}
return this
},
on: function(a, b) {
if (a !== d && b !== d) {
var c = this.handlers
return (
g(q(a), function(a) {
;(c[a] = c[a] || []), c[a].push(b)
}),
this
)
}
},
off: function(a, b) {
if (a !== d) {
var c = this.handlers
return (
g(q(a), function(a) {
b ? c[a] && c[a].splice(r(c[a], b), 1) : delete c[a]
}),
this
)
}
},
emit: function(a, b) {
this.options.domEvents && ka(a, b)
var c = this.handlers[a] && this.handlers[a].slice()
if (c && c.length) {
;(b.type = a),
(b.preventDefault = function() {
b.srcEvent.preventDefault()
})
for (var d = 0; d < c.length; ) c[d](b), d++
}
},
destroy: function() {
this.element && ja(this, !1),
(this.handlers = {}),
(this.session = {}),
this.input.destroy(),
(this.element = null)
}
}),
la(ha, {
INPUT_START: Ea,
INPUT_MOVE: Fa,
INPUT_END: Ga,
INPUT_CANCEL: Ha,
STATE_POSSIBLE: nb,
STATE_BEGAN: ob,
STATE_CHANGED: pb,
STATE_ENDED: qb,
STATE_RECOGNIZED: rb,
STATE_CANCELLED: sb,
STATE_FAILED: tb,
DIRECTION_NONE: Ia,
DIRECTION_LEFT: Ja,
DIRECTION_RIGHT: Ka,
DIRECTION_UP: La,
DIRECTION_DOWN: Ma,
DIRECTION_HORIZONTAL: Na,
DIRECTION_VERTICAL: Oa,
DIRECTION_ALL: Pa,
Manager: ia,
Input: x,
TouchAction: V,
TouchInput: P,
MouseInput: L,
PointerEventInput: M,
TouchMouseInput: R,
SingleTouchInput: N,
Recognizer: Y,
AttrRecognizer: aa,
Tap: ga,
Pan: ba,
Swipe: fa,
Pinch: ca,
Rotate: ea,
Press: da,
on: m,
off: n,
each: g,
merge: ta,
extend: sa,
assign: la,
inherit: i,
bindFn: j,
prefixed: u
})
var wb =
'undefined' != typeof a ? a : 'undefined' != typeof self ? self : {}
;(wb.Hammer = ha),
'function' == typeof define && define.amd
? define('Hammer', [], function() {
return ha
})
: 'undefined' != typeof module && module.exports
? (module.exports = ha)
: (a[c] = ha)
})(window, document, 'Hammer')
define('Core/KnockoutHammerBinding', ['KnockoutES5', 'Hammer'], function(
Knockout,
Hammer
) {
'use strict'
var KnockoutHammerBinding = {
register: function(Knockout) {
Knockout.bindingHandlers.swipeLeft = {
init: function(
element,
valueAccessor,
allBindings,
viewModel,
bindingContext
) {
var f = Knockout.unwrap(valueAccessor())
new Hammer(element).on('swipeleft', function(e) {
var viewModel = bindingContext.$data
f.apply(viewModel, arguments)
})
}
}
Knockout.bindingHandlers.swipeRight = {
init: function(
element,
valueAccessor,
allBindings,
viewModel,
bindingContext
) {
var f = Knockout.unwrap(valueAccessor())
new Hammer(element).on('swiperight', function(e) {
var viewModel = bindingContext.$data
f.apply(viewModel, arguments)
})
}
}
}
}
return KnockoutHammerBinding
})
define('Core/registerKnockoutBindings', [
'Cesium/Widgets/SvgPathBindingHandler',
'KnockoutES5',
'Core/KnockoutMarkdownBinding',
'Core/KnockoutHammerBinding'
], function(
SvgPathBindingHandler,
Knockout,
KnockoutMarkdownBinding,
KnockoutHammerBinding
) {
'use strict'
var registerKnockoutBindings = function() {
SvgPathBindingHandler.register(Knockout)
KnockoutMarkdownBinding.register(Knockout)
KnockoutHammerBinding.register(Knockout)
Knockout.bindingHandlers.embeddedComponent = {
init: function(
element,
valueAccessor,
allBindings,
viewModel,
bindingContext
) {
var component = Knockout.unwrap(valueAccessor())
component.show(element)
return { controlsDescendantBindings: true }
},
update: function(
element,
valueAccessor,
allBindings,
viewModel,
bindingContext
) {}
}
}
return registerKnockoutBindings
})
define('Core/createFragmentFromTemplate', [], function() {
'use strict'
var createFragmentFromTemplate = function(htmlString) {
var holder = document.createElement('div')
holder.innerHTML = htmlString
var fragment = document.createDocumentFragment()
while (holder.firstChild) {
fragment.appendChild(holder.firstChild)
}
return fragment
}
return createFragmentFromTemplate
})
define('Core/loadView', [
'Cesium/Widgets/getElement',
'KnockoutES5',
'Core/createFragmentFromTemplate'
], function(getElement, Knockout, createFragmentFromTemplate) {
'use strict'
var loadView = function(htmlString, container, viewModel) {
container = getElement(container)
var fragment = createFragmentFromTemplate(htmlString)
var nodes = []
var i
for (i = 0; i < fragment.childNodes.length; ++i) {
nodes.push(fragment.childNodes[i])
}
container.appendChild(fragment)
for (i = 0; i < nodes.length; ++i) {
var node = nodes[i]
if (node.nodeType === 1 || node.nodeType === 8) {
Knockout.applyBindings(viewModel, node)
}
}
return nodes
}
return loadView
})
!(function(t, e, i) {
var n = t.L,
o = {}
;(o.version = '0.7.7'),
'object' == typeof module && 'object' == typeof module.exports
? (module.exports = o)
: 'function' == typeof define && define.amd && define('leaflet', o),
(o.noConflict = function() {
return (t.L = n), this
}),
(t.L = o),
(o.Util = {
extend: function(t) {
var e,
i,
n,
o,
s = Array.prototype.slice.call(arguments, 1)
for (i = 0, n = s.length; n > i; i++) {
o = s[i] || {}
for (e in o) o.hasOwnProperty(e) && (t[e] = o[e])
}
return t
},
bind: function(t, e) {
var i =
arguments.length > 2
? Array.prototype.slice.call(arguments, 2)
: null
return function() {
return t.apply(e, i || arguments)
}
},
stamp: (function() {
var t = 0,
e = '_leaflet_id'
return function(i) {
return (i[e] = i[e] || ++t), i[e]
}
})(),
invokeEach: function(t, e, i) {
var n, o
if ('object' == typeof t) {
o = Array.prototype.slice.call(arguments, 3)
for (n in t) e.apply(i, [n, t[n]].concat(o))
return !0
}
return !1
},
limitExecByInterval: function(t, e, i) {
var n, o
return function s() {
var a = arguments
return n
? void (o = !0)
: ((n = !0),
setTimeout(function() {
;(n = !1), o && (s.apply(i, a), (o = !1))
}, e),
void t.apply(i, a))
}
},
falseFn: function() {
return !1
},
formatNum: function(t, e) {
var i = Math.pow(10, e || 5)
return Math.round(t * i) / i
},
trim: function(t) {
return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, '')
},
splitWords: function(t) {
return o.Util.trim(t).split(/\s+/)
},
setOptions: function(t, e) {
return (t.options = o.extend({}, t.options, e)), t.options
},
getParamString: function(t, e, i) {
var n = []
for (var o in t)
n.push(
encodeURIComponent(i ? o.toUpperCase() : o) +
'=' +
encodeURIComponent(t[o])
)
return (e && -1 !== e.indexOf('?') ? '&' : '?') + n.join('&')
},
template: function(t, e) {
return t.replace(/\{ *([\w_]+) *\}/g, function(t, n) {
var o = e[n]
if (o === i)
throw new Error('No value provided for variable ' + t)
return 'function' == typeof o && (o = o(e)), o
})
},
isArray:
Array.isArray ||
function(t) {
return '[object Array]' === Object.prototype.toString.call(t)
},
emptyImageUrl:
'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='
}),
(function() {
function e(e) {
var i,
n,
o = ['webkit', 'moz', 'o', 'ms']
for (i = 0; i < o.length && !n; i++) n = t[o[i] + e]
return n
}
function i(e) {
var i = +new Date(),
o = Math.max(0, 16 - (i - n))
return (n = i + o), t.setTimeout(e, o)
}
var n = 0,
s = t.requestAnimationFrame || e('RequestAnimationFrame') || i,
a =
t.cancelAnimationFrame ||
e('CancelAnimationFrame') ||
e('CancelRequestAnimationFrame') ||
function(e) {
t.clearTimeout(e)
}
;(o.Util.requestAnimFrame = function(e, n, a, r) {
return (e = o.bind(e, n)), a && s === i ? void e() : s.call(t, e, r)
}),
(o.Util.cancelAnimFrame = function(e) {
e && a.call(t, e)
})
})(),
(o.extend = o.Util.extend),
(o.bind = o.Util.bind),
(o.stamp = o.Util.stamp),
(o.setOptions = o.Util.setOptions),
(o.Class = function() {}),
(o.Class.extend = function(t) {
var e = function() {
this.initialize && this.initialize.apply(this, arguments),
this._initHooks && this.callInitHooks()
},
i = function() {}
i.prototype = this.prototype
var n = new i()
;(n.constructor = e), (e.prototype = n)
for (var s in this)
this.hasOwnProperty(s) && 'prototype' !== s && (e[s] = this[s])
t.statics && (o.extend(e, t.statics), delete t.statics),
t.includes &&
(o.Util.extend.apply(null, [n].concat(t.includes)),
delete t.includes),
t.options &&
n.options &&
(t.options = o.extend({}, n.options, t.options)),
o.extend(n, t),
(n._initHooks = [])
var a = this
return (
(e.__super__ = a.prototype),
(n.callInitHooks = function() {
if (!this._initHooksCalled) {
a.prototype.callInitHooks &&
a.prototype.callInitHooks.call(this),
(this._initHooksCalled = !0)
for (var t = 0, e = n._initHooks.length; e > t; t++)
n._initHooks[t].call(this)
}
}),
e
)
}),
(o.Class.include = function(t) {
o.extend(this.prototype, t)
}),
(o.Class.mergeOptions = function(t) {
o.extend(this.prototype.options, t)
}),
(o.Class.addInitHook = function(t) {
var e = Array.prototype.slice.call(arguments, 1),
i =
'function' == typeof t
? t
: function() {
this[t].apply(this, e)
}
;(this.prototype._initHooks = this.prototype._initHooks || []),
this.prototype._initHooks.push(i)
})
var s = '_leaflet_events'
;(o.Mixin = {}),
(o.Mixin.Events = {
addEventListener: function(t, e, i) {
if (o.Util.invokeEach(t, this.addEventListener, this, e, i))
return this
var n,
a,
r,
h,
l,
u,
c,
d = (this[s] = this[s] || {}),
p = i && i !== this && o.stamp(i)
for (t = o.Util.splitWords(t), n = 0, a = t.length; a > n; n++)
(r = {
action: e,
context: i || this
}),
(h = t[n]),
p
? ((l = h + '_idx'),
(u = l + '_len'),
(c = d[l] = d[l] || {}),
c[p] || ((c[p] = []), (d[u] = (d[u] || 0) + 1)),
c[p].push(r))
: ((d[h] = d[h] || []), d[h].push(r))
return this
},
hasEventListeners: function(t) {
var e = this[s]
return (
!!e &&
((t in e && e[t].length > 0) ||
(t + '_idx' in e && e[t + '_idx_len'] > 0))
)
},
removeEventListener: function(t, e, i) {
if (!this[s]) return this
if (!t) return this.clearAllEventListeners()
if (o.Util.invokeEach(t, this.removeEventListener, this, e, i))
return this
var n,
a,
r,
h,
l,
u,
c,
d,
p,
_ = this[s],
m = i && i !== this && o.stamp(i)
for (t = o.Util.splitWords(t), n = 0, a = t.length; a > n; n++)
if (
((r = t[n]), (u = r + '_idx'), (c = u + '_len'), (d = _[u]), e)
) {
if ((h = m && d ? d[m] : _[r])) {
for (l = h.length - 1; l >= 0; l--)
h[l].action !== e ||
(i && h[l].context !== i) ||
((p = h.splice(l, 1)), (p[0].action = o.Util.falseFn))
i && d && 0 === h.length && (delete d[m], _[c]--)
}
} else delete _[r], delete _[u], delete _[c]
return this
},
clearAllEventListeners: function() {
return delete this[s], this
},
fireEvent: function(t, e) {
if (!this.hasEventListeners(t)) return this
var i,
n,
a,
r,
h,
l = o.Util.extend({}, e, { type: t, target: this }),
u = this[s]
if (u[t])
for (i = u[t].slice(), n = 0, a = i.length; a > n; n++)
i[n].action.call(i[n].context, l)
r = u[t + '_idx']
for (h in r)
if ((i = r[h].slice()))
for (n = 0, a = i.length; a > n; n++)
i[n].action.call(i[n].context, l)
return this
},
addOneTimeEventListener: function(t, e, i) {
if (o.Util.invokeEach(t, this.addOneTimeEventListener, this, e, i))
return this
var n = o.bind(function() {
this.removeEventListener(t, e, i).removeEventListener(t, n, i)
}, this)
return this.addEventListener(t, e, i).addEventListener(t, n, i)
}
}),
(o.Mixin.Events.on = o.Mixin.Events.addEventListener),
(o.Mixin.Events.off = o.Mixin.Events.removeEventListener),
(o.Mixin.Events.once = o.Mixin.Events.addOneTimeEventListener),
(o.Mixin.Events.fire = o.Mixin.Events.fireEvent),
(function() {
var n = 'ActiveXObject' in t,
s = n && !e.addEventListener,
a = navigator.userAgent.toLowerCase(),
r = -1 !== a.indexOf('webkit'),
h = -1 !== a.indexOf('chrome'),
l = -1 !== a.indexOf('phantom'),
u = -1 !== a.indexOf('android'),
c = -1 !== a.search('android [23]'),
d = -1 !== a.indexOf('gecko'),
p = typeof orientation != i + '',
_ = !t.PointerEvent && t.MSPointerEvent,
m = (t.PointerEvent && t.navigator.pointerEnabled) || _,
f =
('devicePixelRatio' in t && t.devicePixelRatio > 1) ||
('matchMedia' in t &&
t.matchMedia('(min-resolution:144dpi)') &&
t.matchMedia('(min-resolution:144dpi)').matches),
g = e.documentElement,
v = n && 'transition' in g.style,
y =
'WebKitCSSMatrix' in t && 'm11' in new t.WebKitCSSMatrix() && !c,
P = 'MozPerspective' in g.style,
L = 'OTransition' in g.style,
x = !t.L_DISABLE_3D && (v || y || P || L) && !l,
w =
!t.L_NO_TOUCH &&
!l &&
(m ||
'ontouchstart' in t ||
(t.DocumentTouch && e instanceof t.DocumentTouch))
o.Browser = {
ie: n,
ielt9: s,
webkit: r,
gecko: d && !r && !t.opera && !n,
android: u,
android23: c,
chrome: h,
ie3d: v,
webkit3d: y,
gecko3d: P,
opera3d: L,
any3d: x,
mobile: p,
mobileWebkit: p && r,
mobileWebkit3d: p && y,
mobileOpera: p && t.opera,
touch: w,
msPointer: _,
pointer: m,
retina: f
}
})(),
(o.Point = function(t, e, i) {
;(this.x = i ? Math.round(t) : t), (this.y = i ? Math.round(e) : e)
}),
(o.Point.prototype = {
clone: function() {
return new o.Point(this.x, this.y)
},
add: function(t) {
return this.clone()._add(o.point(t))
},
_add: function(t) {
return (this.x += t.x), (this.y += t.y), this
},
subtract: function(t) {
return this.clone()._subtract(o.point(t))
},
_subtract: function(t) {
return (this.x -= t.x), (this.y -= t.y), this
},
divideBy: function(t) {
return this.clone()._divideBy(t)
},
_divideBy: function(t) {
return (this.x /= t), (this.y /= t), this
},
multiplyBy: function(t) {
return this.clone()._multiplyBy(t)
},
_multiplyBy: function(t) {
return (this.x *= t), (this.y *= t), this
},
round: function() {
return this.clone()._round()
},
_round: function() {
return (
(this.x = Math.round(this.x)), (this.y = Math.round(this.y)), this
)
},
floor: function() {
return this.clone()._floor()
},
_floor: function() {
return (
(this.x = Math.floor(this.x)), (this.y = Math.floor(this.y)), this
)
},
distanceTo: function(t) {
t = o.point(t)
var e = t.x - this.x,
i = t.y - this.y
return Math.sqrt(e * e + i * i)
},
equals: function(t) {
return (t = o.point(t)), t.x === this.x && t.y === this.y
},
contains: function(t) {
return (
(t = o.point(t)),
Math.abs(t.x) <= Math.abs(this.x) &&
Math.abs(t.y) <= Math.abs(this.y)
)
},
toString: function() {
return (
'Point(' +
o.Util.formatNum(this.x) +
', ' +
o.Util.formatNum(this.y) +
')'
)
}
}),
(o.point = function(t, e, n) {
return t instanceof o.Point
? t
: o.Util.isArray(t)
? new o.Point(t[0], t[1])
: t === i || null === t
? t
: new o.Point(t, e, n)
}),
(o.Bounds = function(t, e) {
if (t)
for (var i = e ? [t, e] : t, n = 0, o = i.length; o > n; n++)
this.extend(i[n])
}),
(o.Bounds.prototype = {
extend: function(t) {
return (
(t = o.point(t)),
this.min || this.max
? ((this.min.x = Math.min(t.x, this.min.x)),
(this.max.x = Math.max(t.x, this.max.x)),
(this.min.y = Math.min(t.y, this.min.y)),
(this.max.y = Math.max(t.y, this.max.y)))
: ((this.min = t.clone()), (this.max = t.clone())),
this
)
},
getCenter: function(t) {
return new o.Point(
(this.min.x + this.max.x) / 2,
(this.min.y + this.max.y) / 2,
t
)
},
getBottomLeft: function() {
return new o.Point(this.min.x, this.max.y)
},
getTopRight: function() {
return new o.Point(this.max.x, this.min.y)
},
getSize: function() {
return this.max.subtract(this.min)
},
contains: function(t) {
var e, i
return (
(t =
'number' == typeof t[0] || t instanceof o.Point
? o.point(t)
: o.bounds(t)),
t instanceof o.Bounds ? ((e = t.min), (i = t.max)) : (e = i = t),
e.x >= this.min.x &&
i.x <= this.max.x &&
e.y >= this.min.y &&
i.y <= this.max.y
)
},
intersects: function(t) {
t = o.bounds(t)
var e = this.min,
i = this.max,
n = t.min,
s = t.max,
a = s.x >= e.x && n.x <= i.x,
r = s.y >= e.y && n.y <= i.y
return a && r
},
isValid: function() {
return !(!this.min || !this.max)
}
}),
(o.bounds = function(t, e) {
return !t || t instanceof o.Bounds ? t : new o.Bounds(t, e)
}),
(o.Transformation = function(t, e, i, n) {
;(this._a = t), (this._b = e), (this._c = i), (this._d = n)
}),
(o.Transformation.prototype = {
transform: function(t, e) {
return this._transform(t.clone(), e)
},
_transform: function(t, e) {
return (
(e = e || 1),
(t.x = e * (this._a * t.x + this._b)),
(t.y = e * (this._c * t.y + this._d)),
t
)
},
untransform: function(t, e) {
return (
(e = e || 1),
new o.Point(
(t.x / e - this._b) / this._a,
(t.y / e - this._d) / this._c
)
)
}
}),
(o.DomUtil = {
get: function(t) {
return 'string' == typeof t ? e.getElementById(t) : t
},
getStyle: function(t, i) {
var n = t.style[i]
if (
(!n && t.currentStyle && (n = t.currentStyle[i]),
(!n || 'auto' === n) && e.defaultView)
) {
var o = e.defaultView.getComputedStyle(t, null)
n = o ? o[i] : null
}
return 'auto' === n ? null : n
},
getViewportOffset: function(t) {
var i,
n = 0,
s = 0,
a = t,
r = e.body,
h = e.documentElement
do {
if (
((n += a.offsetTop || 0),
(s += a.offsetLeft || 0),
(n +=
parseInt(o.DomUtil.getStyle(a, 'borderTopWidth'), 10) || 0),
(s +=
parseInt(o.DomUtil.getStyle(a, 'borderLeftWidth'), 10) || 0),
(i = o.DomUtil.getStyle(a, 'position')),
a.offsetParent === r && 'absolute' === i)
)
break
if ('fixed' === i) {
;(n += r.scrollTop || h.scrollTop || 0),
(s += r.scrollLeft || h.scrollLeft || 0)
break
}
if ('relative' === i && !a.offsetLeft) {
var l = o.DomUtil.getStyle(a, 'width'),
u = o.DomUtil.getStyle(a, 'max-width'),
c = a.getBoundingClientRect()
;('none' !== l || 'none' !== u) && (s += c.left + a.clientLeft),
(n += c.top + (r.scrollTop || h.scrollTop || 0))
break
}
a = a.offsetParent
} while (a)
a = t
do {
if (a === r) break
;(n -= a.scrollTop || 0),
(s -= a.scrollLeft || 0),
(a = a.parentNode)
} while (a)
return new o.Point(s, n)
},
documentIsLtr: function() {
return (
o.DomUtil._docIsLtrCached ||
((o.DomUtil._docIsLtrCached = !0),
(o.DomUtil._docIsLtr =
'ltr' === o.DomUtil.getStyle(e.body, 'direction'))),
o.DomUtil._docIsLtr
)
},
create: function(t, i, n) {
var o = e.createElement(t)
return (o.className = i), n && n.appendChild(o), o
},
hasClass: function(t, e) {
if (t.classList !== i) return t.classList.contains(e)
var n = o.DomUtil._getClass(t)
return n.length > 0 && new RegExp('(^|\\s)' + e + '(\\s|$)').test(n)
},
addClass: function(t, e) {
if (t.classList !== i)
for (
var n = o.Util.splitWords(e), s = 0, a = n.length;
a > s;
s++
)
t.classList.add(n[s])
else if (!o.DomUtil.hasClass(t, e)) {
var r = o.DomUtil._getClass(t)
o.DomUtil._setClass(t, (r ? r + ' ' : '') + e)
}
},
removeClass: function(t, e) {
t.classList !== i
? t.classList.remove(e)
: o.DomUtil._setClass(
t,
o.Util.trim(
(' ' + o.DomUtil._getClass(t) + ' ').replace(
' ' + e + ' ',
' '
)
)
)
},
_setClass: function(t, e) {
t.className.baseVal === i
? (t.className = e)
: (t.className.baseVal = e)
},
_getClass: function(t) {
return t.className.baseVal === i ? t.className : t.className.baseVal
},
setOpacity: function(t, e) {
if ('opacity' in t.style) t.style.opacity = e
else if ('filter' in t.style) {
var i = !1,
n = 'DXImageTransform.Microsoft.Alpha'
try {
i = t.filters.item(n)
} catch (o) {
if (1 === e) return
}
;(e = Math.round(100 * e)),
i
? ((i.Enabled = 100 !== e), (i.Opacity = e))
: (t.style.filter += ' progid:' + n + '(opacity=' + e + ')')
}
},
testProp: function(t) {
for (var i = e.documentElement.style, n = 0; n < t.length; n++)
if (t[n] in i) return t[n]
return !1
},
getTranslateString: function(t) {
var e = o.Browser.webkit3d,
i = 'translate' + (e ? '3d' : '') + '(',
n = (e ? ',0' : '') + ')'
return i + t.x + 'px,' + t.y + 'px' + n
},
getScaleString: function(t, e) {
var i = o.DomUtil.getTranslateString(e.add(e.multiplyBy(-1 * t))),
n = ' scale(' + t + ') '
return i + n
},
setPosition: function(t, e, i) {
;(t._leaflet_pos = e),
!i && o.Browser.any3d
? (t.style[o.DomUtil.TRANSFORM] = o.DomUtil.getTranslateString(
e
))
: ((t.style.left = e.x + 'px'), (t.style.top = e.y + 'px'))
},
getPosition: function(t) {
return t._leaflet_pos
}
}),
(o.DomUtil.TRANSFORM = o.DomUtil.testProp([
'transform',
'WebkitTransform',
'OTransform',
'MozTransform',
'msTransform'
])),
(o.DomUtil.TRANSITION = o.DomUtil.testProp([
'webkitTransition',
'transition',
'OTransition',
'MozTransition',
'msTransition'
])),
(o.DomUtil.TRANSITION_END =
'webkitTransition' === o.DomUtil.TRANSITION ||
'OTransition' === o.DomUtil.TRANSITION
? o.DomUtil.TRANSITION + 'End'
: 'transitionend'),
(function() {
if ('onselectstart' in e)
o.extend(o.DomUtil, {
disableTextSelection: function() {
o.DomEvent.on(t, 'selectstart', o.DomEvent.preventDefault)
},
enableTextSelection: function() {
o.DomEvent.off(t, 'selectstart', o.DomEvent.preventDefault)
}
})
else {
var i = o.DomUtil.testProp([
'userSelect',
'WebkitUserSelect',
'OUserSelect',
'MozUserSelect',
'msUserSelect'
])
o.extend(o.DomUtil, {
disableTextSelection: function() {
if (i) {
var t = e.documentElement.style
;(this._userSelect = t[i]), (t[i] = 'none')
}
},
enableTextSelection: function() {
i &&
((e.documentElement.style[i] = this._userSelect),
delete this._userSelect)
}
})
}
o.extend(o.DomUtil, {
disableImageDrag: function() {
o.DomEvent.on(t, 'dragstart', o.DomEvent.preventDefault)
},
enableImageDrag: function() {
o.DomEvent.off(t, 'dragstart', o.DomEvent.preventDefault)
}
})
})(),
(o.LatLng = function(t, e, n) {
if (((t = parseFloat(t)), (e = parseFloat(e)), isNaN(t) || isNaN(e)))
throw new Error('Invalid LatLng object: (' + t + ', ' + e + ')')
;(this.lat = t), (this.lng = e), n !== i && (this.alt = parseFloat(n))
}),
o.extend(o.LatLng, {
DEG_TO_RAD: Math.PI / 180,
RAD_TO_DEG: 180 / Math.PI,
MAX_MARGIN: 1e-9
}),
(o.LatLng.prototype = {
equals: function(t) {
if (!t) return !1
t = o.latLng(t)
var e = Math.max(
Math.abs(this.lat - t.lat),
Math.abs(this.lng - t.lng)
)
return e <= o.LatLng.MAX_MARGIN
},
toString: function(t) {
return (
'LatLng(' +
o.Util.formatNum(this.lat, t) +
', ' +
o.Util.formatNum(this.lng, t) +
')'
)
},
distanceTo: function(t) {
t = o.latLng(t)
var e = 6378137,
i = o.LatLng.DEG_TO_RAD,
n = (t.lat - this.lat) * i,
s = (t.lng - this.lng) * i,
a = this.lat * i,
r = t.lat * i,
h = Math.sin(n / 2),
l = Math.sin(s / 2),
u = h * h + l * l * Math.cos(a) * Math.cos(r)
return 2 * e * Math.atan2(Math.sqrt(u), Math.sqrt(1 - u))
},
wrap: function(t, e) {
var i = this.lng
return (
(t = t || -180),
(e = e || 180),
(i = ((i + e) % (e - t)) + (t > i || i === e ? e : t)),
new o.LatLng(this.lat, i)
)
}
}),
(o.latLng = function(t, e) {
return t instanceof o.LatLng
? t
: o.Util.isArray(t)
? 'number' == typeof t[0] || 'string' == typeof t[0]
? new o.LatLng(t[0], t[1], t[2])
: null
: t === i || null === t
? t
: 'object' == typeof t && 'lat' in t
? new o.LatLng(t.lat, 'lng' in t ? t.lng : t.lon)
: e === i
? null
: new o.LatLng(t, e)
}),
(o.LatLngBounds = function(t, e) {
if (t)
for (var i = e ? [t, e] : t, n = 0, o = i.length; o > n; n++)
this.extend(i[n])
}),
(o.LatLngBounds.prototype = {
extend: function(t) {
if (!t) return this
var e = o.latLng(t)
return (
(t = null !== e ? e : o.latLngBounds(t)),
t instanceof o.LatLng
? this._southWest || this._northEast
? ((this._southWest.lat = Math.min(
t.lat,
this._southWest.lat
)),
(this._southWest.lng = Math.min(
t.lng,
this._southWest.lng
)),
(this._northEast.lat = Math.max(
t.lat,
this._northEast.lat
)),
(this._northEast.lng = Math.max(
t.lng,
this._northEast.lng
)))
: ((this._southWest = new o.LatLng(t.lat, t.lng)),
(this._northEast = new o.LatLng(t.lat, t.lng)))
: t instanceof o.LatLngBounds &&
(this.extend(t._southWest), this.extend(t._northEast)),
this
)
},
pad: function(t) {
var e = this._southWest,
i = this._northEast,
n = Math.abs(e.lat - i.lat) * t,
s = Math.abs(e.lng - i.lng) * t
return new o.LatLngBounds(
new o.LatLng(e.lat - n, e.lng - s),
new o.LatLng(i.lat + n, i.lng + s)
)
},
getCenter: function() {
return new o.LatLng(
(this._southWest.lat + this._northEast.lat) / 2,
(this._southWest.lng + this._northEast.lng) / 2
)
},
getSouthWest: function() {
return this._southWest
},
getNorthEast: function() {
return this._northEast
},
getNorthWest: function() {
return new o.LatLng(this.getNorth(), this.getWest())
},
getSouthEast: function() {
return new o.LatLng(this.getSouth(), this.getEast())
},
getWest: function() {
return this._southWest.lng
},
getSouth: function() {
return this._southWest.lat
},
getEast: function() {
return this._northEast.lng
},
getNorth: function() {
return this._northEast.lat
},
contains: function(t) {
t =
'number' == typeof t[0] || t instanceof o.LatLng
? o.latLng(t)
: o.latLngBounds(t)
var e,
i,
n = this._southWest,
s = this._northEast
return (
t instanceof o.LatLngBounds
? ((e = t.getSouthWest()), (i = t.getNorthEast()))
: (e = i = t),
e.lat >= n.lat &&
i.lat <= s.lat &&
e.lng >= n.lng &&
i.lng <= s.lng
)
},
intersects: function(t) {
t = o.latLngBounds(t)
var e = this._southWest,
i = this._northEast,
n = t.getSouthWest(),
s = t.getNorthEast(),
a = s.lat >= e.lat && n.lat <= i.lat,
r = s.lng >= e.lng && n.lng <= i.lng
return a && r
},
toBBoxString: function() {
return [
this.getWest(),
this.getSouth(),
this.getEast(),
this.getNorth()
].join(',')
},
equals: function(t) {
return t
? ((t = o.latLngBounds(t)),
this._southWest.equals(t.getSouthWest()) &&
this._northEast.equals(t.getNorthEast()))
: !1
},
isValid: function() {
return !(!this._southWest || !this._northEast)
}
}),
(o.latLngBounds = function(t, e) {
return !t || t instanceof o.LatLngBounds
? t
: new o.LatLngBounds(t, e)
}),
(o.Projection = {}),
(o.Projection.SphericalMercator = {
MAX_LATITUDE: 85.0511287798,
project: function(t) {
var e = o.LatLng.DEG_TO_RAD,
i = this.MAX_LATITUDE,
n = Math.max(Math.min(i, t.lat), -i),
s = t.lng * e,
a = n * e
return (
(a = Math.log(Math.tan(Math.PI / 4 + a / 2))), new o.Point(s, a)
)
},
unproject: function(t) {
var e = o.LatLng.RAD_TO_DEG,
i = t.x * e,
n = (2 * Math.atan(Math.exp(t.y)) - Math.PI / 2) * e
return new o.LatLng(n, i)
}
}),
(o.Projection.LonLat = {
project: function(t) {
return new o.Point(t.lng, t.lat)
},
unproject: function(t) {
return new o.LatLng(t.y, t.x)
}
}),
(o.CRS = {
latLngToPoint: function(t, e) {
var i = this.projection.project(t),
n = this.scale(e)
return this.transformation._transform(i, n)
},
pointToLatLng: function(t, e) {
var i = this.scale(e),
n = this.transformation.untransform(t, i)
return this.projection.unproject(n)
},
project: function(t) {
return this.projection.project(t)
},
scale: function(t) {
return 256 * Math.pow(2, t)
},
getSize: function(t) {
var e = this.scale(t)
return o.point(e, e)
}
}),
(o.CRS.Simple = o.extend({}, o.CRS, {
projection: o.Projection.LonLat,
transformation: new o.Transformation(1, 0, -1, 0),
scale: function(t) {
return Math.pow(2, t)
}
})),
(o.CRS.EPSG3857 = o.extend({}, o.CRS, {
code: 'EPSG:3857',
projection: o.Projection.SphericalMercator,
transformation: new o.Transformation(
0.5 / Math.PI,
0.5,
-0.5 / Math.PI,
0.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, 0.5, -1 / 360, 0.5)
})),
(o.Map = o.Class.extend({
includes: o.Mixin.Events,
options: {
crs: o.CRS.EPSG3857,
fadeAnimation: o.DomUtil.TRANSITION && !o.Browser.android23,
trackResize: !0,
markerZoomAnimation: o.DomUtil.TRANSITION && o.Browser.any3d
},
initialize: function(t, e) {
;(e = o.setOptions(this, e)),
this._initContainer(t),
this._initLayout(),
(this._onResize = o.bind(this._onResize, this)),
this._initEvents(),
e.maxBounds && this.setMaxBounds(e.maxBounds),
e.center &&
e.zoom !== i &&
this.setView(o.latLng(e.center), e.zoom, { reset: !0 }),
(this._handlers = []),
(this._layers = {}),
(this._zoomBoundLayers = {}),
(this._tileLayersNum = 0),
this.callInitHooks(),
this._addLayers(e.layers)
},
setView: function(t, e) {
return (
(e = e === i ? this.getZoom() : e),
this._resetView(o.latLng(t), this._limitZoom(e)),
this
)
},
setZoom: function(t, e) {
return this._loaded
? this.setView(this.getCenter(), t, { zoom: e })
: ((this._zoom = this._limitZoom(t)), this)
},
zoomIn: function(t, e) {
return this.setZoom(this._zoom + (t || 1), e)
},
zoomOut: function(t, e) {
return this.setZoom(this._zoom - (t || 1), e)
},
setZoomAround: function(t, e, i) {
var n = this.getZoomScale(e),
s = this.getSize().divideBy(2),
a = t instanceof o.Point ? t : this.latLngToContainerPoint(t),
r = a.subtract(s).multiplyBy(1 - 1 / n),
h = this.containerPointToLatLng(s.add(r))
return this.setView(h, e, { zoom: i })
},
fitBounds: function(t, e) {
;(e = e || {}),
(t = t.getBounds ? t.getBounds() : o.latLngBounds(t))
var i = o.point(e.paddingTopLeft || e.padding || [0, 0]),
n = o.point(e.paddingBottomRight || e.padding || [0, 0]),
s = this.getBoundsZoom(t, !1, i.add(n))
s = e.maxZoom ? Math.min(e.maxZoom, s) : s
var a = n.subtract(i).divideBy(2),
r = this.project(t.getSouthWest(), s),
h = this.project(t.getNorthEast(), s),
l = this.unproject(
r
.add(h)
.divideBy(2)
.add(a),
s
)
return this.setView(l, s, e)
},
fitWorld: function(t) {
return this.fitBounds(
[
[-90, -180],
[90, 180]
],
t
)
},
panTo: function(t, e) {
return this.setView(t, this._zoom, { pan: e })
},
panBy: function(t) {
return (
this.fire('movestart'),
this._rawPanBy(o.point(t)),
this.fire('move'),
this.fire('moveend')
)
},
setMaxBounds: function(t) {
return (
(t = o.latLngBounds(t)),
(this.options.maxBounds = t),
t
? (this._loaded && this._panInsideMaxBounds(),
this.on('moveend', this._panInsideMaxBounds, this))
: this.off('moveend', this._panInsideMaxBounds, this)
)
},
panInsideBounds: function(t, e) {
var i = this.getCenter(),
n = this._limitCenter(i, this._zoom, t)
return i.equals(n) ? this : this.panTo(n, e)
},
addLayer: function(t) {
var e = o.stamp(t)
return this._layers[e]
? this
: ((this._layers[e] = t),
!t.options ||
(isNaN(t.options.maxZoom) && isNaN(t.options.minZoom)) ||
((this._zoomBoundLayers[e] = t), this._updateZoomLevels()),
this.options.zoomAnimation &&
o.TileLayer &&
t instanceof o.TileLayer &&
(this._tileLayersNum++,
this._tileLayersToLoad++,
t.on('load', this._onTileLayerLoad, this)),
this._loaded && this._layerAdd(t),
this)
},
removeLayer: function(t) {
var e = o.stamp(t)
return this._layers[e]
? (this._loaded && t.onRemove(this),
delete this._layers[e],
this._loaded && this.fire('layerremove', { layer: t }),
this._zoomBoundLayers[e] &&
(delete this._zoomBoundLayers[e], this._updateZoomLevels()),
this.options.zoomAnimation &&
o.TileLayer &&
t instanceof o.TileLayer &&
(this._tileLayersNum--,
this._tileLayersToLoad--,
t.off('load', this._onTileLayerLoad, this)),
this)
: this
},
hasLayer: function(t) {
return t ? o.stamp(t) in this._layers : !1
},
eachLayer: function(t, e) {
for (var i in this._layers) t.call(e, this._layers[i])
return this
},
invalidateSize: function(t) {
if (!this._loaded) return this
t = o.extend(
{ animate: !1, pan: !0 },
t === !0 ? { animate: !0 } : t
)
var e = this.getSize()
;(this._sizeChanged = !0), (this._initialCenter = null)
var i = this.getSize(),
n = e.divideBy(2).round(),
s = i.divideBy(2).round(),
a = n.subtract(s)
return a.x || a.y
? (t.animate && t.pan
? this.panBy(a)
: (t.pan && this._rawPanBy(a),
this.fire('move'),
t.debounceMoveend
? (clearTimeout(this._sizeTimer),
(this._sizeTimer = setTimeout(
o.bind(this.fire, this, 'moveend'),
200
)))
: this.fire('moveend')),
this.fire('resize', {
oldSize: e,
newSize: i
}))
: this
},
addHandler: function(t, e) {
if (!e) return this
var i = (this[t] = new e(this))
return this._handlers.push(i), this.options[t] && i.enable(), this
},
remove: function() {
this._loaded && this.fire('unload'), this._initEvents('off')
try {
delete this._container._leaflet
} catch (t) {
this._container._leaflet = i
}
return (
this._clearPanes(),
this._clearControlPos && this._clearControlPos(),
this._clearHandlers(),
this
)
},
getCenter: function() {
return (
this._checkIfLoaded(),
this._initialCenter && !this._moved()
? this._initialCenter
: this.layerPointToLatLng(this._getCenterLayerPoint())
)
},
getZoom: function() {
return this._zoom
},
getBounds: function() {
var t = this.getPixelBounds(),
e = this.unproject(t.getBottomLeft()),
i = this.unproject(t.getTopRight())
return new o.LatLngBounds(e, i)
},
getMinZoom: function() {
return this.options.minZoom === i
? this._layersMinZoom === i
? 0
: this._layersMinZoom
: this.options.minZoom
},
getMaxZoom: function() {
return this.options.maxZoom === i
? this._layersMaxZoom === i
? 1 / 0
: this._layersMaxZoom
: this.options.maxZoom
},
getBoundsZoom: function(t, e, i) {
t = o.latLngBounds(t)
var n,
s = this.getMinZoom() - (e ? 1 : 0),
a = this.getMaxZoom(),
r = this.getSize(),
h = t.getNorthWest(),
l = t.getSouthEast(),
u = !0
i = o.point(i || [0, 0])
do
s++,
(n = this.project(l, s)
.subtract(this.project(h, s))
.add(i)),
(u = e ? n.x < r.x || n.y < r.y : r.contains(n))
while (u && a >= s)
return u && e ? null : e ? s : s - 1
},
getSize: function() {
return (
(!this._size || this._sizeChanged) &&
((this._size = new o.Point(
this._container.clientWidth,
this._container.clientHeight
)),
(this._sizeChanged = !1)),
this._size.clone()
)
},
getPixelBounds: function() {
var t = this._getTopLeftPoint()
return new o.Bounds(t, t.add(this.getSize()))
},
getPixelOrigin: function() {
return this._checkIfLoaded(), this._initialTopLeftPoint
},
getPanes: function() {
return this._panes
},
getContainer: function() {
return this._container
},
getZoomScale: function(t) {
var e = this.options.crs
return e.scale(t) / e.scale(this._zoom)
},
getScaleZoom: function(t) {
return this._zoom + Math.log(t) / Math.LN2
},
project: function(t, e) {
return (
(e = e === i ? this._zoom : e),
this.options.crs.latLngToPoint(o.latLng(t), e)
)
},
unproject: function(t, e) {
return (
(e = e === i ? this._zoom : e),
this.options.crs.pointToLatLng(o.point(t), e)
)
},
layerPointToLatLng: function(t) {
var e = o.point(t).add(this.getPixelOrigin())
return this.unproject(e)
},
latLngToLayerPoint: function(t) {
var e = this.project(o.latLng(t))._round()
return e._subtract(this.getPixelOrigin())
},
containerPointToLayerPoint: function(t) {
return o.point(t).subtract(this._getMapPanePos())
},
layerPointToContainerPoint: function(t) {
return o.point(t).add(this._getMapPanePos())
},
containerPointToLatLng: function(t) {
var e = this.containerPointToLayerPoint(o.point(t))
return this.layerPointToLatLng(e)
},
latLngToContainerPoint: function(t) {
return this.layerPointToContainerPoint(
this.latLngToLayerPoint(o.latLng(t))
)
},
mouseEventToContainerPoint: function(t) {
return o.DomEvent.getMousePosition(t, this._container)
},
mouseEventToLayerPoint: function(t) {
return this.containerPointToLayerPoint(
this.mouseEventToContainerPoint(t)
)
},
mouseEventToLatLng: function(t) {
return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))
},
_initContainer: function(t) {
var e = (this._container = o.DomUtil.get(t))
if (!e) throw new Error('Map container not found.')
if (e._leaflet)
throw new Error('Map container is already initialized.')
e._leaflet = !0
},
_initLayout: function() {
var t = this._container
o.DomUtil.addClass(
t,
'leaflet-container' +
(o.Browser.touch ? ' leaflet-touch' : '') +
(o.Browser.retina ? ' leaflet-retina' : '') +
(o.Browser.ielt9 ? ' leaflet-oldie' : '') +
(this.options.fadeAnimation ? ' leaflet-fade-anim' : '')
)
var e = o.DomUtil.getStyle(t, 'position')
'absolute' !== e &&
'relative' !== e &&
'fixed' !== e &&
(t.style.position = 'relative'),
this._initPanes(),
this._initControlPos && this._initControlPos()
},
_initPanes: function() {
var t = (this._panes = {})
;(this._mapPane = t.mapPane = this._createPane(
'leaflet-map-pane',
this._container
)),
(this._tilePane = t.tilePane = this._createPane(
'leaflet-tile-pane',
this._mapPane
)),
(t.objectsPane = this._createPane(
'leaflet-objects-pane',
this._mapPane
)),
(t.shadowPane = this._createPane('leaflet-shadow-pane')),
(t.overlayPane = this._createPane('leaflet-overlay-pane')),
(t.markerPane = this._createPane('leaflet-marker-pane')),
(t.popupPane = this._createPane('leaflet-popup-pane'))
var e = ' leaflet-zoom-hide'
this.options.markerZoomAnimation ||
(o.DomUtil.addClass(t.markerPane, e),
o.DomUtil.addClass(t.shadowPane, e),
o.DomUtil.addClass(t.popupPane, e))
},
_createPane: function(t, e) {
return o.DomUtil.create('div', t, e || this._panes.objectsPane)
},
_clearPanes: function() {
this._container.removeChild(this._mapPane)
},
_addLayers: function(t) {
t = t ? (o.Util.isArray(t) ? t : [t]) : []
for (var e = 0, i = t.length; i > e; e++) this.addLayer(t[e])
},
_resetView: function(t, e, i, n) {
var s = this._zoom !== e
n || (this.fire('movestart'), s && this.fire('zoomstart')),
(this._zoom = e),
(this._initialCenter = t),
(this._initialTopLeftPoint = this._getNewTopLeftPoint(t)),
i
? this._initialTopLeftPoint._add(this._getMapPanePos())
: o.DomUtil.setPosition(this._mapPane, new o.Point(0, 0)),
(this._tileLayersToLoad = this._tileLayersNum)
var a = !this._loaded
;(this._loaded = !0),
this.fire('viewreset', { hard: !i }),
a && (this.fire('load'), this.eachLayer(this._layerAdd, this)),
this.fire('move'),
(s || n) && this.fire('zoomend'),
this.fire('moveend', { hard: !i })
},
_rawPanBy: function(t) {
o.DomUtil.setPosition(
this._mapPane,
this._getMapPanePos().subtract(t)
)
},
_getZoomSpan: function() {
return this.getMaxZoom() - this.getMinZoom()
},
_updateZoomLevels: function() {
var t,
e = 1 / 0,
n = -(1 / 0),
o = this._getZoomSpan()
for (t in this._zoomBoundLayers) {
var s = this._zoomBoundLayers[t]
isNaN(s.options.minZoom) || (e = Math.min(e, s.options.minZoom)),
isNaN(s.options.maxZoom) || (n = Math.max(n, s.options.maxZoom))
}
t === i
? (this._layersMaxZoom = this._layersMinZoom = i)
: ((this._layersMaxZoom = n), (this._layersMinZoom = e)),
o !== this._getZoomSpan() && this.fire('zoomlevelschange')
},
_panInsideMaxBounds: function() {
this.panInsideBounds(this.options.maxBounds)
},
_checkIfLoaded: function() {
if (!this._loaded) throw new Error('Set map center and zoom first.')
},
_initEvents: function(e) {
if (o.DomEvent) {
;(e = e || 'on'),
o.DomEvent[e](
this._container,
'click',
this._onMouseClick,
this
)
var i,
n,
s = [
'dblclick',
'mousedown',
'mouseup',
'mouseenter',
'mouseleave',
'mousemove',
'contextmenu'
]
for (i = 0, n = s.length; n > i; i++)
o.DomEvent[e](this._container, s[i], this._fireMouseEvent, this)
this.options.trackResize &&
o.DomEvent[e](t, 'resize', this._onResize, this)
}
},
_onResize: function() {
o.Util.cancelAnimFrame(this._resizeRequest),
(this._resizeRequest = o.Util.requestAnimFrame(
function() {
this.invalidateSize({ debounceMoveend: !0 })
},
this,
!1,
this._container
))
},
_onMouseClick: function(t) {
!this._loaded ||
(!t._simulated &&
((this.dragging && this.dragging.moved()) ||
(this.boxZoom && this.boxZoom.moved()))) ||
o.DomEvent._skipped(t) ||
(this.fire('preclick'), this._fireMouseEvent(t))
},
_fireMouseEvent: function(t) {
if (this._loaded && !o.DomEvent._skipped(t)) {
var e = t.type
if (
((e =
'mouseenter' === e
? 'mouseover'
: 'mouseleave' === e
? 'mouseout'
: e),
this.hasEventListeners(e))
) {
'contextmenu' === e && o.DomEvent.preventDefault(t)
var i = this.mouseEventToContainerPoint(t),
n = this.containerPointToLayerPoint(i),
s = this.layerPointToLatLng(n)
this.fire(e, {
latlng: s,
layerPoint: n,
containerPoint: i,
originalEvent: t
})
}
}
},
_onTileLayerLoad: function() {
this._tileLayersToLoad--,
this._tileLayersNum &&
!this._tileLayersToLoad &&
this.fire('tilelayersload')
},
_clearHandlers: function() {
for (var t = 0, e = this._handlers.length; e > t; t++)
this._handlers[t].disable()
},
whenReady: function(t, e) {
return (
this._loaded ? t.call(e || this, this) : this.on('load', t, e),
this
)
},
_layerAdd: function(t) {
t.onAdd(this), this.fire('layeradd', { layer: t })
},
_getMapPanePos: function() {
return o.DomUtil.getPosition(this._mapPane)
},
_moved: function() {
var t = this._getMapPanePos()
return t && !t.equals([0, 0])
},
_getTopLeftPoint: function() {
return this.getPixelOrigin().subtract(this._getMapPanePos())
},
_getNewTopLeftPoint: function(t, e) {
var i = this.getSize()._divideBy(2)
return this.project(t, e)
._subtract(i)
._round()
},
_latLngToNewLayerPoint: function(t, e, i) {
var n = this._getNewTopLeftPoint(i, e).add(this._getMapPanePos())
return this.project(t, e)._subtract(n)
},
_getCenterLayerPoint: function() {
return this.containerPointToLayerPoint(this.getSize()._divideBy(2))
},
_getCenterOffset: function(t) {
return this.latLngToLayerPoint(t).subtract(
this._getCenterLayerPoint()
)
},
_limitCenter: function(t, e, i) {
if (!i) return t
var n = this.project(t, e),
s = this.getSize().divideBy(2),
a = new o.Bounds(n.subtract(s), n.add(s)),
r = this._getBoundsOffset(a, i, e)
return this.unproject(n.add(r), e)
},
_limitOffset: function(t, e) {
if (!e) return t
var i = this.getPixelBounds(),
n = new o.Bounds(i.min.add(t), i.max.add(t))
return t.add(this._getBoundsOffset(n, e))
},
_getBoundsOffset: function(t, e, i) {
var n = this.project(e.getNorthWest(), i).subtract(t.min),
s = this.project(e.getSouthEast(), i).subtract(t.max),
a = this._rebound(n.x, -s.x),
r = this._rebound(n.y, -s.y)
return new o.Point(a, r)
},
_rebound: function(t, e) {
return t + e > 0
? Math.round(t - e) / 2
: Math.max(0, Math.ceil(t)) - Math.max(0, Math.floor(e))
},
_limitZoom: function(t) {
var e = this.getMinZoom(),
i = this.getMaxZoom()
return Math.max(e, Math.min(i, t))
}
})),
(o.map = function(t, e) {
return new o.Map(t, e)
}),
(o.Projection.Mercator = {
MAX_LATITUDE: 85.0840591556,
R_MINOR: 6356752.314245179,
R_MAJOR: 6378137,
project: function(t) {
var e = o.LatLng.DEG_TO_RAD,
i = this.MAX_LATITUDE,
n = Math.max(Math.min(i, t.lat), -i),
s = this.R_MAJOR,
a = this.R_MINOR,
r = t.lng * e * s,
h = n * e,
l = a / s,
u = Math.sqrt(1 - l * l),
c = u * Math.sin(h)
c = Math.pow((1 - c) / (1 + c), 0.5 * u)
var d = Math.tan(0.5 * (0.5 * Math.PI - h)) / c
return (h = -s * Math.log(d)), new o.Point(r, h)
},
unproject: function(t) {
for (
var e,
i = o.LatLng.RAD_TO_DEG,
n = this.R_MAJOR,
s = this.R_MINOR,
a = (t.x * i) / n,
r = s / n,
h = Math.sqrt(1 - r * r),
l = Math.exp(-t.y / n),
u = Math.PI / 2 - 2 * Math.atan(l),
c = 15,
d = 1e-7,
p = c,
_ = 0.1;
Math.abs(_) > d && --p > 0;
)
(e = h * Math.sin(u)),
(_ =
Math.PI / 2 -
2 * Math.atan(l * Math.pow((1 - e) / (1 + e), 0.5 * h)) -
u),
(u += _)
return new o.LatLng(u * i, a)
}
}),
(o.CRS.EPSG3395 = o.extend({}, o.CRS, {
code: 'EPSG:3395',
projection: o.Projection.Mercator,
transformation: (function() {
var t = o.Projection.Mercator,
e = t.R_MAJOR,
i = 0.5 / (Math.PI * e)
return new o.Transformation(i, 0.5, -i, 0.5)
})()
})),
(o.TileLayer = o.Class.extend({
includes: o.Mixin.Events,
options: {
minZoom: 0,
maxZoom: 18,
tileSize: 256,
subdomains: 'abc',
errorTileUrl: '',
attribution: '',
zoomOffset: 0,
opacity: 1,
unloadInvisibleTiles: o.Browser.mobile,
updateWhenIdle: o.Browser.mobile
},
initialize: function(t, e) {
;(e = o.setOptions(this, e)),
e.detectRetina &&
o.Browser.retina &&
e.maxZoom > 0 &&
((e.tileSize = Math.floor(e.tileSize / 2)),
e.zoomOffset++,
e.minZoom > 0 && e.minZoom--,
this.options.maxZoom--),
e.bounds && (e.bounds = o.latLngBounds(e.bounds)),
(this._url = t)
var i = this.options.subdomains
'string' == typeof i && (this.options.subdomains = i.split(''))
},
onAdd: function(t) {
;(this._map = t),
(this._animated = t._zoomAnimated),
this._initContainer(),
t.on(
{
viewreset: this._reset,
moveend: this._update
},
this
),
this._animated &&
t.on(
{
zoomanim: this._animateZoom,
zoomend: this._endZoomAnim
},
this
),
this.options.updateWhenIdle ||
((this._limitedUpdate = o.Util.limitExecByInterval(
this._update,
150,
this
)),
t.on('move', this._limitedUpdate, this)),
this._reset(),
this._update()
},
addTo: function(t) {
return t.addLayer(this), this
},
onRemove: function(t) {
this._container.parentNode.removeChild(this._container),
t.off(
{
viewreset: this._reset,
moveend: this._update
},
this
),
this._animated &&
t.off(
{
zoomanim: this._animateZoom,
zoomend: this._endZoomAnim
},
this
),
this.options.updateWhenIdle ||
t.off('move', this._limitedUpdate, this),
(this._container = null),
(this._map = null)
},
bringToFront: function() {
var t = this._map._panes.tilePane
return (
this._container &&
(t.appendChild(this._container),
this._setAutoZIndex(t, Math.max)),
this
)
},
bringToBack: function() {
var t = this._map._panes.tilePane
return (
this._container &&
(t.insertBefore(this._container, t.firstChild),
this._setAutoZIndex(t, Math.min)),
this
)
},
getAttribution: function() {
return this.options.attribution
},
getContainer: function() {
return this._container
},
setOpacity: function(t) {
return (
(this.options.opacity = t),
this._map && this._updateOpacity(),
this
)
},
setZIndex: function(t) {
return (this.options.zIndex = t), this._updateZIndex(), this
},
setUrl: function(t, e) {
return (this._url = t), e || this.redraw(), this
},
redraw: function() {
return (
this._map && (this._reset({ hard: !0 }), this._update()), this
)
},
_updateZIndex: function() {
this._container &&
this.options.zIndex !== i &&
(this._container.style.zIndex = this.options.zIndex)
},
_setAutoZIndex: function(t, e) {
var i,
n,
o,
s = t.children,
a = -e(1 / 0, -(1 / 0))
for (n = 0, o = s.length; o > n; n++)
s[n] !== this._container &&
((i = parseInt(s[n].style.zIndex, 10)),
isNaN(i) || (a = e(a, i)))
this.options.zIndex = this._container.style.zIndex =
(isFinite(a) ? a : 0) + e(1, -1)
},
_updateOpacity: function() {
var t,
e = this._tiles
if (o.Browser.ielt9)
for (t in e) o.DomUtil.setOpacity(e[t], this.options.opacity)
else o.DomUtil.setOpacity(this._container, this.options.opacity)
},
_initContainer: function() {
var t = this._map._panes.tilePane
if (!this._container) {
if (
((this._container = o.DomUtil.create('div', 'leaflet-layer')),
this._updateZIndex(),
this._animated)
) {
var e = 'leaflet-tile-container'
;(this._bgBuffer = o.DomUtil.create('div', e, this._container)),
(this._tileContainer = o.DomUtil.create(
'div',
e,
this._container
))
} else this._tileContainer = this._container
t.appendChild(this._container),
this.options.opacity < 1 && this._updateOpacity()
}
},
_reset: function(t) {
for (var e in this._tiles)
this.fire('tileunload', { tile: this._tiles[e] })
;(this._tiles = {}),
(this._tilesToLoad = 0),
this.options.reuseTiles && (this._unusedTiles = []),
(this._tileContainer.innerHTML = ''),
this._animated && t && t.hard && this._clearBgBuffer(),
this._initContainer()
},
_getTileSize: function() {
var t = this._map,
e = t.getZoom() + this.options.zoomOffset,
i = this.options.maxNativeZoom,
n = this.options.tileSize
return (
i &&
e > i &&
(n = Math.round((t.getZoomScale(e) / t.getZoomScale(i)) * n)),
n
)
},
_update: function() {
if (this._map) {
var t = this._map,
e = t.getPixelBounds(),
i = t.getZoom(),
n = this._getTileSize()
if (!(i > this.options.maxZoom || i < this.options.minZoom)) {
var s = o.bounds(
e.min.divideBy(n)._floor(),
e.max.divideBy(n)._floor()
)
this._addTilesFromCenterOut(s),
(this.options.unloadInvisibleTiles ||
this.options.reuseTiles) &&
this._removeOtherTiles(s)
}
}
},
_addTilesFromCenterOut: function(t) {
var i,
n,
s,
a = [],
r = t.getCenter()
for (i = t.min.y; i <= t.max.y; i++)
for (n = t.min.x; n <= t.max.x; n++)
(s = new o.Point(n, i)),
this._tileShouldBeLoaded(s) && a.push(s)
var h = a.length
if (0 !== h) {
a.sort(function(t, e) {
return t.distanceTo(r) - e.distanceTo(r)
})
var l = e.createDocumentFragment()
for (
this._tilesToLoad || this.fire('loading'),
this._tilesToLoad += h,
n = 0;
h > n;
n++
)
this._addTile(a[n], l)
this._tileContainer.appendChild(l)
}
},
_tileShouldBeLoaded: function(t) {
if (t.x + ':' + t.y in this._tiles) return !1
var e = this.options
if (!e.continuousWorld) {
var i = this._getWrapTileNum()
if (
(e.noWrap && (t.x < 0 || t.x >= i.x)) ||
t.y < 0 ||
t.y >= i.y
)
return !1
}
if (e.bounds) {
var n = this._getTileSize(),
o = t.multiplyBy(n),
s = o.add([n, n]),
a = this._map.unproject(o),
r = this._map.unproject(s)
if (
(e.continuousWorld ||
e.noWrap ||
((a = a.wrap()), (r = r.wrap())),
!e.bounds.intersects([a, r]))
)
return !1
}
return !0
},
_removeOtherTiles: function(t) {
var e, i, n, o
for (o in this._tiles)
(e = o.split(':')),
(i = parseInt(e[0], 10)),
(n = parseInt(e[1], 10)),
(i < t.min.x || i > t.max.x || n < t.min.y || n > t.max.y) &&
this._removeTile(o)
},
_removeTile: function(t) {
var e = this._tiles[t]
this.fire('tileunload', {
tile: e,
url: e.src
}),
this.options.reuseTiles
? (o.DomUtil.removeClass(e, 'leaflet-tile-loaded'),
this._unusedTiles.push(e))
: e.parentNode === this._tileContainer &&
this._tileContainer.removeChild(e),
o.Browser.android ||
((e.onload = null), (e.src = o.Util.emptyImageUrl)),
delete this._tiles[t]
},
_addTile: function(t, e) {
var i = this._getTilePos(t),
n = this._getTile()
o.DomUtil.setPosition(n, i, o.Browser.chrome),
(this._tiles[t.x + ':' + t.y] = n),
this._loadTile(n, t),
n.parentNode !== this._tileContainer && e.appendChild(n)
},
_getZoomForUrl: function() {
var t = this.options,
e = this._map.getZoom()
return (
t.zoomReverse && (e = t.maxZoom - e),
(e += t.zoomOffset),
t.maxNativeZoom ? Math.min(e, t.maxNativeZoom) : e
)
},
_getTilePos: function(t) {
var e = this._map.getPixelOrigin(),
i = this._getTileSize()
return t.multiplyBy(i).subtract(e)
},
getTileUrl: function(t) {
return o.Util.template(
this._url,
o.extend(
{ s: this._getSubdomain(t), z: t.z, x: t.x, y: t.y },
this.options
)
)
},
_getWrapTileNum: function() {
var t = this._map.options.crs,
e = t.getSize(this._map.getZoom())
return e.divideBy(this._getTileSize())._floor()
},
_adjustTilePoint: function(t) {
var e = this._getWrapTileNum()
this.options.continuousWorld ||
this.options.noWrap ||
(t.x = ((t.x % e.x) + e.x) % e.x),
this.options.tms && (t.y = e.y - t.y - 1),
(t.z = this._getZoomForUrl())
},
_getSubdomain: function(t) {
var e = Math.abs(t.x + t.y) % this.options.subdomains.length
return this.options.subdomains[e]
},
_getTile: function() {
if (this.options.reuseTiles && this._unusedTiles.length > 0) {
var t = this._unusedTiles.pop()
return this._resetTile(t), t
}
return this._createTile()
},
_resetTile: function() {},
_createTile: function() {
var t = o.DomUtil.create('img', 'leaflet-tile')
return (
(t.style.width = t.style.height = this._getTileSize() + 'px'),
(t.galleryimg = 'no'),
(t.onselectstart = t.onmousemove = o.Util.falseFn),
o.Browser.ielt9 &&
this.options.opacity !== i &&
o.DomUtil.setOpacity(t, this.options.opacity),
o.Browser.mobileWebkit3d &&
(t.style.WebkitBackfaceVisibility = 'hidden'),
t
)
},
_loadTile: function(t, e) {
;(t._layer = this),
(t.onload = this._tileOnLoad),
(t.onerror = this._tileOnError),
this._adjustTilePoint(e),
(t.src = this.getTileUrl(e)),
this.fire('tileloadstart', {
tile: t,
url: t.src
})
},
_tileLoaded: function() {
this._tilesToLoad--,
this._animated &&
o.DomUtil.addClass(
this._tileContainer,
'leaflet-zoom-animated'
),
this._tilesToLoad ||
(this.fire('load'),
this._animated &&
(clearTimeout(this._clearBgBufferTimer),
(this._clearBgBufferTimer = setTimeout(
o.bind(this._clearBgBuffer, this),
500
))))
},
_tileOnLoad: function() {
var t = this._layer
this.src !== o.Util.emptyImageUrl &&
(o.DomUtil.addClass(this, 'leaflet-tile-loaded'),
t.fire('tileload', {
tile: this,
url: this.src
})),
t._tileLoaded()
},
_tileOnError: function() {
var t = this._layer
t.fire('tileerror', { tile: this, url: this.src })
var e = t.options.errorTileUrl
e && (this.src = e), t._tileLoaded()
}
})),
(o.tileLayer = function(t, e) {
return new o.TileLayer(t, e)
}),
(o.TileLayer.WMS = o.TileLayer.extend({
defaultWmsParams: {
service: 'WMS',
request: 'GetMap',
version: '1.1.1',
layers: '',
styles: '',
format: 'image/jpeg',
transparent: !1
},
initialize: function(t, e) {
this._url = t
var i = o.extend({}, this.defaultWmsParams),
n = e.tileSize || this.options.tileSize
e.detectRetina && o.Browser.retina
? (i.width = i.height = 2 * n)
: (i.width = i.height = n)
for (var s in e)
this.options.hasOwnProperty(s) || 'crs' === s || (i[s] = e[s])
;(this.wmsParams = i), o.setOptions(this, e)
},
onAdd: function(t) {
;(this._crs = this.options.crs || t.options.crs),
(this._wmsVersion = parseFloat(this.wmsParams.version))
var e = this._wmsVersion >= 1.3 ? 'crs' : 'srs'
;(this.wmsParams[e] = this._crs.code),
o.TileLayer.prototype.onAdd.call(this, t)
},
getTileUrl: function(t) {
var e = this._map,
i = this.options.tileSize,
n = t.multiplyBy(i),
s = n.add([i, i]),
a = this._crs.project(e.unproject(n, t.z)),
r = this._crs.project(e.unproject(s, t.z)),
h =
this._wmsVersion >= 1.3 && this._crs === o.CRS.EPSG4326
? [r.y, a.x, a.y, r.x].join(',')
: [a.x, r.y, r.x, a.y].join(','),
l = o.Util.template(this._url, { s: this._getSubdomain(t) })
return (
l + o.Util.getParamString(this.wmsParams, l, !0) + '&BBOX=' + h
)
},
setParams: function(t, e) {
return o.extend(this.wmsParams, t), e || this.redraw(), this
}
})),
(o.tileLayer.wms = function(t, e) {
return new o.TileLayer.WMS(t, e)
}),
(o.TileLayer.Canvas = o.TileLayer.extend({
options: { async: !1 },
initialize: function(t) {
o.setOptions(this, t)
},
redraw: function() {
this._map && (this._reset({ hard: !0 }), this._update())
for (var t in this._tiles) this._redrawTile(this._tiles[t])
return this
},
_redrawTile: function(t) {
this.drawTile(t, t._tilePoint, this._map._zoom)
},
_createTile: function() {
var t = o.DomUtil.create('canvas', 'leaflet-tile')
return (
(t.width = t.height = this.options.tileSize),
(t.onselectstart = t.onmousemove = o.Util.falseFn),
t
)
},
_loadTile: function(t, e) {
;(t._layer = this),
(t._tilePoint = e),
this._redrawTile(t),
this.options.async || this.tileDrawn(t)
},
drawTile: function() {},
tileDrawn: function(t) {
this._tileOnLoad.call(t)
}
})),
(o.tileLayer.canvas = function(t) {
return new o.TileLayer.Canvas(t)
}),
(o.ImageOverlay = o.Class.extend({
includes: o.Mixin.Events,
options: { opacity: 1 },
initialize: function(t, e, i) {
;(this._url = t),
(this._bounds = o.latLngBounds(e)),
o.setOptions(this, i)
},
onAdd: function(t) {
;(this._map = t),
this._image || this._initImage(),
t._panes.overlayPane.appendChild(this._image),
t.on('viewreset', this._reset, this),
t.options.zoomAnimation &&
o.Browser.any3d &&
t.on('zoomanim', this._animateZoom, this),
this._reset()
},
onRemove: function(t) {
t.getPanes().overlayPane.removeChild(this._image),
t.off('viewreset', this._reset, this),
t.options.zoomAnimation &&
t.off('zoomanim', this._animateZoom, this)
},
addTo: function(t) {
return t.addLayer(this), this
},
setOpacity: function(t) {
return (this.options.opacity = t), this._updateOpacity(), this
},
bringToFront: function() {
return (
this._image &&
this._map._panes.overlayPane.appendChild(this._image),
this
)
},
bringToBack: function() {
var t = this._map._panes.overlayPane
return (
this._image && t.insertBefore(this._image, t.firstChild), this
)
},
setUrl: function(t) {
;(this._url = t), (this._image.src = this._url)
},
getAttribution: function() {
return this.options.attribution
},
_initImage: function() {
;(this._image = o.DomUtil.create('img', 'leaflet-image-layer')),
this._map.options.zoomAnimation && o.Browser.any3d
? o.DomUtil.addClass(this._image, 'leaflet-zoom-animated')
: o.DomUtil.addClass(this._image, 'leaflet-zoom-hide'),
this._updateOpacity(),
o.extend(this._image, {
galleryimg: 'no',
onselectstart: o.Util.falseFn,
onmousemove: o.Util.falseFn,
onload: o.bind(this._onImageLoad, this),
src: this._url
})
},
_animateZoom: function(t) {
var e = this._map,
i = this._image,
n = e.getZoomScale(t.zoom),
s = this._bounds.getNorthWest(),
a = this._bounds.getSouthEast(),
r = e._latLngToNewLayerPoint(s, t.zoom, t.center),
h = e._latLngToNewLayerPoint(a, t.zoom, t.center)._subtract(r),
l = r._add(h._multiplyBy(0.5 * (1 - 1 / n)))
i.style[o.DomUtil.TRANSFORM] =
o.DomUtil.getTranslateString(l) + ' scale(' + n + ') '
},
_reset: function() {
var t = this._image,
e = this._map.latLngToLayerPoint(this._bounds.getNorthWest()),
i = this._map
.latLngToLayerPoint(this._bounds.getSouthEast())
._subtract(e)
o.DomUtil.setPosition(t, e),
(t.style.width = i.x + 'px'),
(t.style.height = i.y + 'px')
},
_onImageLoad: function() {
this.fire('load')
},
_updateOpacity: function() {
o.DomUtil.setOpacity(this._image, this.options.opacity)
}
})),
(o.imageOverlay = function(t, e, i) {
return new o.ImageOverlay(t, e, i)
}),
(o.Icon = o.Class.extend({
options: { className: '' },
initialize: function(t) {
o.setOptions(this, t)
},
createIcon: function(t) {
return this._createIcon('icon', t)
},
createShadow: function(t) {
return this._createIcon('shadow', t)
},
_createIcon: function(t, e) {
var i = this._getIconUrl(t)
if (!i) {
if ('icon' === t)
throw new Error(
'iconUrl not set in Icon options (see the docs).'
)
return null
}
var n
return (
(n =
e && 'IMG' === e.tagName
? this._createImg(i, e)
: this._createImg(i)),
this._setIconStyles(n, t),
n
)
},
_setIconStyles: function(t, e) {
var i,
n = this.options,
s = o.point(n[e + 'Size'])
;(i =
'shadow' === e
? o.point(n.shadowAnchor || n.iconAnchor)
: o.point(n.iconAnchor)),
!i && s && (i = s.divideBy(2, !0)),
(t.className = 'leaflet-marker-' + e + ' ' + n.className),
i &&
((t.style.marginLeft = -i.x + 'px'),
(t.style.marginTop = -i.y + 'px')),
s && ((t.style.width = s.x + 'px'), (t.style.height = s.y + 'px'))
},
_createImg: function(t, i) {
return (i = i || e.createElement('img')), (i.src = t), i
},
_getIconUrl: function(t) {
return o.Browser.retina && this.options[t + 'RetinaUrl']
? this.options[t + 'RetinaUrl']
: this.options[t + 'Url']
}
})),
(o.icon = function(t) {
return new o.Icon(t)
}),
(o.Icon.Default = o.Icon.extend({
options: {
iconSize: [25, 41],
iconAnchor: [12, 41],
popupAnchor: [1, -34],
shadowSize: [41, 41]
},
_getIconUrl: function(t) {
var e = t + 'Url'
if (this.options[e]) return this.options[e]
o.Browser.retina && 'icon' === t && (t += '-2x')
var i = o.Icon.Default.imagePath
if (!i)
throw new Error(
"Couldn't autodetect L.Icon.Default.imagePath, set it manually."
)
return i + '/marker-' + t + '.png'
}
})),
(o.Icon.Default.imagePath = (function() {
var t,
i,
n,
o,
s,
a = e.getElementsByTagName('script'),
r = /[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/
for (t = 0, i = a.length; i > t; t++)
if (((n = a[t].src), (o = n.match(r))))
return (s = n.split(r)[0]), (s ? s + '/' : '') + 'images'
})()),
(o.Marker = o.Class.extend({
includes: o.Mixin.Events,
options: {
icon: new o.Icon.Default(),
title: '',
alt: '',
clickable: !0,
draggable: !1,
keyboard: !0,
zIndexOffset: 0,
opacity: 1,
riseOnHover: !1,
riseOffset: 250
},
initialize: function(t, e) {
o.setOptions(this, e), (this._latlng = o.latLng(t))
},
onAdd: function(t) {
;(this._map = t),
t.on('viewreset', this.update, this),
this._initIcon(),
this.update(),
this.fire('add'),
t.options.zoomAnimation &&
t.options.markerZoomAnimation &&
t.on('zoomanim', this._animateZoom, this)
},
addTo: function(t) {
return t.addLayer(this), this
},
onRemove: function(t) {
this.dragging && this.dragging.disable(),
this._removeIcon(),
this._removeShadow(),
this.fire('remove'),
t.off(
{
viewreset: this.update,
zoomanim: this._animateZoom
},
this
),
(this._map = null)
},
getLatLng: function() {
return this._latlng
},
setLatLng: function(t) {
return (
(this._latlng = o.latLng(t)),
this.update(),
this.fire('move', { latlng: this._latlng })
)
},
setZIndexOffset: function(t) {
return (this.options.zIndexOffset = t), this.update(), this
},
setIcon: function(t) {
return (
(this.options.icon = t),
this._map && (this._initIcon(), this.update()),
this._popup && this.bindPopup(this._popup),
this
)
},
update: function() {
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',
s = t.icon.createIcon(this._icon),
a = !1
s !== this._icon &&
(this._icon && this._removeIcon(),
(a = !0),
t.title && (s.title = t.title),
t.alt && (s.alt = t.alt)),
o.DomUtil.addClass(s, n),
t.keyboard && (s.tabIndex = '0'),
(this._icon = s),
this._initInteraction(),
t.riseOnHover &&
o.DomEvent.on(s, 'mouseover', this._bringToFront, this).on(
s,
'mouseout',
this._resetZIndex,
this
)
var r = t.icon.createShadow(this._shadow),
h = !1
r !== this._shadow && (this._removeShadow(), (h = !0)),
r && o.DomUtil.addClass(r, n),
(this._shadow = r),
t.opacity < 1 && this._updateOpacity()
var l = this._map._panes
a && l.markerPane.appendChild(this._icon),
r && h && l.shadowPane.appendChild(this._shadow)
},
_removeIcon: function() {
this.options.riseOnHover &&
o.DomEvent.off(this._icon, 'mouseover', this._bringToFront).off(
this._icon,
'mouseout',
this._resetZIndex
),
this._map._panes.markerPane.removeChild(this._icon),
(this._icon = null)
},
_removeShadow: function() {
this._shadow &&
this._map._panes.shadowPane.removeChild(this._shadow),
(this._shadow = null)
},
_setPos: function(t) {
o.DomUtil.setPosition(this._icon, t),
this._shadow && o.DomUtil.setPosition(this._shadow, t),
(this._zIndex = t.y + this.options.zIndexOffset),
this._resetZIndex()
},
_updateZIndex: function(t) {
this._icon.style.zIndex = this._zIndex + t
},
_animateZoom: function(t) {
var e = this._map
._latLngToNewLayerPoint(this._latlng, t.zoom, t.center)
.round()
this._setPos(e)
},
_initInteraction: function() {
if (this.options.clickable) {
var t = this._icon,
e = [
'dblclick',
'mousedown',
'mouseover',
'mouseout',
'contextmenu'
]
o.DomUtil.addClass(t, 'leaflet-clickable'),
o.DomEvent.on(t, 'click', this._onMouseClick, this),
o.DomEvent.on(t, 'keypress', this._onKeyPress, this)
for (var i = 0; i < e.length; i++)
o.DomEvent.on(t, e[i], this._fireMouseEvent, this)
o.Handler.MarkerDrag &&
((this.dragging = new o.Handler.MarkerDrag(this)),
this.options.draggable && this.dragging.enable())
}
},
_onMouseClick: function(t) {
var e = this.dragging && this.dragging.moved()
;(this.hasEventListeners(t.type) || e) &&
o.DomEvent.stopPropagation(t),
e ||
(((this.dragging && this.dragging._enabled) ||
!this._map.dragging ||
!this._map.dragging.moved()) &&
this.fire(t.type, {
originalEvent: t,
latlng: this._latlng
}))
},
_onKeyPress: function(t) {
13 === t.keyCode &&
this.fire('click', { originalEvent: t, latlng: this._latlng })
},
_fireMouseEvent: function(t) {
this.fire(t.type, {
originalEvent: t,
latlng: this._latlng
}),
'contextmenu' === t.type &&
this.hasEventListeners(t.type) &&
o.DomEvent.preventDefault(t),
'mousedown' !== t.type
? o.DomEvent.stopPropagation(t)
: o.DomEvent.preventDefault(t)
},
setOpacity: function(t) {
return (
(this.options.opacity = t),
this._map && this._updateOpacity(),
this
)
},
_updateOpacity: function() {
o.DomUtil.setOpacity(this._icon, this.options.opacity),
this._shadow &&
o.DomUtil.setOpacity(this._shadow, this.options.opacity)
},
_bringToFront: function() {
this._updateZIndex(this.options.riseOffset)
},
_resetZIndex: function() {
this._updateZIndex(0)
}
})),
(o.marker = function(t, e) {
return new o.Marker(t, e)
}),
(o.DivIcon = o.Icon.extend({
options: {
iconSize: [12, 12],
className: 'leaflet-div-icon',
html: !1
},
createIcon: function(t) {
var i = t && 'DIV' === t.tagName ? t : e.createElement('div'),
n = this.options
return (
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 = '&#215;'),
o.DomEvent.disableClickPropagation(t),
o.DomEvent.on(t, 'click', this._onCloseButtonClick, this))
var s = (this._wrapper = o.DomUtil.create(
'div',
e + '-content-wrapper',
n
))
o.DomEvent.disableClickPropagation(s),
(this._contentNode = o.DomUtil.create('div', e + '-content', s)),
o.DomEvent.disableScrollPropagation(this._contentNode),
o.DomEvent.on(s, 'contextmenu', o.DomEvent.stopPropagation),
(this._tipContainer = o.DomUtil.create(
'div',
e + '-tip-container',
n
)),
(this._tip = o.DomUtil.create(
'div',
e + '-tip',
this._tipContainer
))
},
_updateContent: function() {
if (this._content) {
if ('string' == typeof this._content)
this._contentNode.innerHTML = this._content
else {
for (; this._contentNode.hasChildNodes(); )
this._contentNode.removeChild(this._contentNode.firstChild)
this._contentNode.appendChild(this._content)
}
this.fire('contentupdate')
}
},
_updateLayout: function() {
var t = this._contentNode,
e = t.style
;(e.width = ''), (e.whiteSpace = 'nowrap')
var i = t.offsetWidth
;(i = Math.min(i, this.options.maxWidth)),
(i = Math.max(i, this.options.minWidth)),
(e.width = i + 1 + 'px'),
(e.whiteSpace = ''),
(e.height = '')
var n = t.offsetHeight,
s = this.options.maxHeight,
a = 'leaflet-popup-scrolled'
s && n > s
? ((e.height = s + 'px'), o.DomUtil.addClass(t, a))
: o.DomUtil.removeClass(t, a),
(this._containerWidth = this._container.offsetWidth)
},
_updatePosition: function() {
if (this._map) {
var t = this._map.latLngToLayerPoint(this._latlng),
e = this._animated,
i = o.point(this.options.offset)
e && o.DomUtil.setPosition(this._container, t),
(this._containerBottom = -i.y - (e ? 0 : t.y)),
(this._containerLeft =
-Math.round(this._containerWidth / 2) + i.x + (e ? 0 : t.x)),
(this._container.style.bottom = this._containerBottom + 'px'),
(this._container.style.left = this._containerLeft + 'px')
}
},
_zoomAnimation: function(t) {
var e = this._map._latLngToNewLayerPoint(
this._latlng,
t.zoom,
t.center
)
o.DomUtil.setPosition(this._container, e)
},
_adjustPan: function() {
if (this.options.autoPan) {
var t = this._map,
e = this._container.offsetHeight,
i = this._containerWidth,
n = new o.Point(this._containerLeft, -e - this._containerBottom)
this._animated && n._add(o.DomUtil.getPosition(this._container))
var s = t.layerPointToContainerPoint(n),
a = o.point(this.options.autoPanPadding),
r = o.point(this.options.autoPanPaddingTopLeft || a),
h = o.point(this.options.autoPanPaddingBottomRight || a),
l = t.getSize(),
u = 0,
c = 0
s.x + i + h.x > l.x && (u = s.x + i - l.x + h.x),
s.x - u - r.x < 0 && (u = s.x - r.x),
s.y + e + h.y > l.y && (c = s.y + e - l.y + h.y),
s.y - c - r.y < 0 && (c = s.y - r.y),
(u || c) && t.fire('autopanstart').panBy([u, c])
}
},
_onCloseButtonClick: function(t) {
this._close(), o.DomEvent.stop(t)
}
})),
(o.popup = function(t, e) {
return new o.Popup(t, e)
}),
o.Map.include({
openPopup: function(t, e, i) {
if ((this.closePopup(), !(t instanceof o.Popup))) {
var n = t
t = new o.Popup(i).setLatLng(e).setContent(n)
}
return (t._isOpen = !0), (this._popup = t), this.addLayer(t)
},
closePopup: function(t) {
return (
(t && t !== this._popup) ||
((t = this._popup), (this._popup = null)),
t && (this.removeLayer(t), (t._isOpen = !1)),
this
)
}
}),
o.Marker.include({
openPopup: function() {
return (
this._popup &&
this._map &&
!this._map.hasLayer(this._popup) &&
(this._popup.setLatLng(this._latlng),
this._map.openPopup(this._popup)),
this
)
},
closePopup: function() {
return this._popup && this._popup._close(), this
},
togglePopup: function() {
return (
this._popup &&
(this._popup._isOpen ? this.closePopup() : this.openPopup()),
this
)
},
bindPopup: function(t, e) {
var i = o.point(this.options.icon.options.popupAnchor || [0, 0])
return (
(i = i.add(o.Popup.prototype.options.offset)),
e && e.offset && (i = i.add(e.offset)),
(e = o.extend({ offset: i }, e)),
this._popupHandlersAdded ||
(this.on('click', this.togglePopup, this)
.on('remove', this.closePopup, this)
.on('move', this._movePopup, this),
(this._popupHandlersAdded = !0)),
t instanceof o.Popup
? (o.setOptions(t, e), (this._popup = t), (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
: !1
},
clearLayers: function() {
return this.eachLayer(this.removeLayer, this), this
},
invoke: function(t) {
var e,
i,
n = Array.prototype.slice.call(arguments, 1)
for (e in this._layers)
(i = this._layers[e]), i[t] && i[t].apply(i, n)
return this
},
onAdd: function(t) {
;(this._map = t), this.eachLayer(t.addLayer, t)
},
onRemove: function(t) {
this.eachLayer(t.removeLayer, t), (this._map = null)
},
addTo: function(t) {
return t.addLayer(this), this
},
eachLayer: function(t, e) {
for (var i in this._layers) t.call(e, this._layers[i])
return this
},
getLayer: function(t) {
return this._layers[t]
},
getLayers: function() {
var t = []
for (var e in this._layers) t.push(this._layers[e])
return t
},
setZIndex: function(t) {
return this.invoke('setZIndex', t)
},
getLayerId: function(t) {
return o.stamp(t)
}
})),
(o.layerGroup = function(t) {
return new o.LayerGroup(t)
}),
(o.FeatureGroup = o.LayerGroup.extend({
includes: o.Mixin.Events,
statics: {
EVENTS:
'click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose'
},
addLayer: function(t) {
return this.hasLayer(t)
? this
: ('on' in t &&
t.on(o.FeatureGroup.EVENTS, this._propagateEvent, this),
o.LayerGroup.prototype.addLayer.call(this, t),
this._popupContent &&
t.bindPopup &&
t.bindPopup(this._popupContent, this._popupOptions),
this.fire('layeradd', { layer: t }))
},
removeLayer: function(t) {
return this.hasLayer(t)
? (t in this._layers && (t = this._layers[t]),
'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(0.5, i))
})()
},
options: {
stroke: !0,
color: '#0033ff',
dashArray: null,
lineCap: null,
lineJoin: null,
weight: 5,
opacity: 0.5,
fill: !1,
fillColor: null,
fillOpacity: 0.2,
clickable: !0
},
initialize: function(t) {
o.setOptions(this, t)
},
onAdd: function(t) {
;(this._map = t),
this._container || (this._initElements(), this._initEvents()),
this.projectLatlngs(),
this._updatePath(),
this._container &&
this._map._pathRoot.appendChild(this._container),
this.fire('add'),
t.on(
{
viewreset: this.projectLatlngs,
moveend: this._updatePath
},
this
)
},
addTo: function(t) {
return t.addLayer(this), this
},
onRemove: function(t) {
t._pathRoot.removeChild(this._container),
this.fire('remove'),
(this._map = null),
o.Browser.vml &&
((this._container = null),
(this._stroke = null),
(this._fill = null)),
t.off(
{
viewreset: this.projectLatlngs,
moveend: this._updatePath
},
this
)
},
projectLatlngs: function() {},
setStyle: function(t) {
return (
o.setOptions(this, t),
this._container && this._updateStyle(),
this
)
},
redraw: function() {
return (
this._map && (this.projectLatlngs(), this._updatePath()), this
)
}
})),
o.Map.include({
_updatePathViewport: function() {
var t = o.Path.CLIP_PADDING,
e = this.getSize(),
i = o.DomUtil.getPosition(this._mapPane),
n = i.multiplyBy(-1)._subtract(e.multiplyBy(t)._round()),
s = n.add(e.multiplyBy(1 + 2 * t)._round())
this._pathViewport = new o.Bounds(n, s)
}
}),
(o.Path.SVG_NS = 'http://www.w3.org/2000/svg'),
(o.Browser.svg = !(
!e.createElementNS ||
!e.createElementNS(o.Path.SVG_NS, 'svg').createSVGRect
)),
(o.Path = o.Path.extend({
statics: { SVG: o.Browser.svg },
bringToFront: function() {
var t = this._map._pathRoot,
e = this._container
return e && t.lastChild !== e && t.appendChild(e), this
},
bringToBack: function() {
var t = this._map._pathRoot,
e = this._container,
i = t.firstChild
return e && i !== e && t.insertBefore(e, i), this
},
getPathString: function() {},
_createElement: function(t) {
return e.createElementNS(o.Path.SVG_NS, t)
},
_initElements: function() {
this._map._initPathRoot(), this._initPath(), this._initStyle()
},
_initPath: function() {
;(this._container = this._createElement('g')),
(this._path = this._createElement('path')),
this.options.className &&
o.DomUtil.addClass(this._path, this.options.className),
this._container.appendChild(this._path)
},
_initStyle: function() {
this.options.stroke &&
(this._path.setAttribute('stroke-linejoin', 'round'),
this._path.setAttribute('stroke-linecap', 'round')),
this.options.fill &&
this._path.setAttribute('fill-rule', 'evenodd'),
this.options.pointerEvents &&
this._path.setAttribute(
'pointer-events',
this.options.pointerEvents
),
this.options.clickable ||
this.options.pointerEvents ||
this._path.setAttribute('pointer-events', 'none'),
this._updateStyle()
},
_updateStyle: function() {
this.options.stroke
? (this._path.setAttribute('stroke', this.options.color),
this._path.setAttribute('stroke-opacity', this.options.opacity),
this._path.setAttribute('stroke-width', this.options.weight),
this.options.dashArray
? this._path.setAttribute(
'stroke-dasharray',
this.options.dashArray
)
: this._path.removeAttribute('stroke-dasharray'),
this.options.lineCap &&
this._path.setAttribute(
'stroke-linecap',
this.options.lineCap
),
this.options.lineJoin &&
this._path.setAttribute(
'stroke-linejoin',
this.options.lineJoin
))
: this._path.setAttribute('stroke', 'none'),
this.options.fill
? (this._path.setAttribute(
'fill',
this.options.fillColor || this.options.color
),
this._path.setAttribute(
'fill-opacity',
this.options.fillOpacity
))
: this._path.setAttribute('fill', 'none')
},
_updatePath: function() {
var t = this.getPathString()
t || (t = 'M0 0'), this._path.setAttribute('d', t)
},
_initEvents: function() {
if (this.options.clickable) {
;(o.Browser.svg || !o.Browser.vml) &&
o.DomUtil.addClass(this._path, 'leaflet-clickable'),
o.DomEvent.on(
this._container,
'click',
this._onMouseClick,
this
)
for (
var t = [
'dblclick',
'mousedown',
'mouseover',
'mouseout',
'mousemove',
'contextmenu'
],
e = 0;
e < t.length;
e++
)
o.DomEvent.on(this._container, t[e], this._fireMouseEvent, this)
}
},
_onMouseClick: function(t) {
;(this._map.dragging && this._map.dragging.moved()) ||
this._fireMouseEvent(t)
},
_fireMouseEvent: function(t) {
if (this._map && this.hasEventListeners(t.type)) {
var e = this._map,
i = e.mouseEventToContainerPoint(t),
n = e.containerPointToLayerPoint(i),
s = e.layerPointToLatLng(n)
this.fire(t.type, {
latlng: s,
layerPoint: n,
containerPoint: i,
originalEvent: t
}),
'contextmenu' === t.type && o.DomEvent.preventDefault(t),
'mousemove' !== t.type && o.DomEvent.stopPropagation(t)
}
}
})),
o.Map.include({
_initPathRoot: function() {
this._pathRoot ||
((this._pathRoot = o.Path.prototype._createElement('svg')),
this._panes.overlayPane.appendChild(this._pathRoot),
this.options.zoomAnimation && o.Browser.any3d
? (o.DomUtil.addClass(this._pathRoot, 'leaflet-zoom-animated'),
this.on({
zoomanim: this._animatePathZoom,
zoomend: this._endPathZoom
}))
: o.DomUtil.addClass(this._pathRoot, 'leaflet-zoom-hide'),
this.on('moveend', this._updateSvgViewport),
this._updateSvgViewport())
},
_animatePathZoom: function(t) {
var e = this.getZoomScale(t.zoom),
i = this._getCenterOffset(t.center)
._multiplyBy(-e)
._add(this._pathViewport.min)
;(this._pathRoot.style[o.DomUtil.TRANSFORM] =
o.DomUtil.getTranslateString(i) + ' scale(' + e + ') '),
(this._pathZooming = !0)
},
_endPathZoom: function() {
this._pathZooming = !1
},
_updateSvgViewport: function() {
if (!this._pathZooming) {
this._updatePathViewport()
var t = this._pathViewport,
e = t.min,
i = t.max,
n = i.x - e.x,
s = i.y - e.y,
a = this._pathRoot,
r = this._panes.overlayPane
o.Browser.mobileWebkit && r.removeChild(a),
o.DomUtil.setPosition(a, e),
a.setAttribute('width', n),
a.setAttribute('height', s),
a.setAttribute('viewBox', [e.x, e.y, n, s].join(' ')),
o.Browser.mobileWebkit && r.appendChild(a)
}
}
}),
o.Path.include({
bindPopup: function(t, e) {
return (
t instanceof o.Popup
? (this._popup = t)
: ((!this._popup || e) && (this._popup = new o.Popup(e, this)),
this._popup.setContent(t)),
this._popupHandlersAdded ||
(this.on('click', this._openPopup, this).on(
'remove',
this.closePopup,
this
),
(this._popupHandlersAdded = !0)),
this
)
},
unbindPopup: function() {
return (
this._popup &&
((this._popup = null),
this.off('click', this._openPopup).off(
'remove',
this.closePopup
),
(this._popupHandlersAdded = !1)),
this
)
},
openPopup: function(t) {
return (
this._popup &&
((t =
t ||
this._latlng ||
this._latlngs[Math.floor(this._latlngs.length / 2)]),
this._openPopup({ latlng: t })),
this
)
},
closePopup: function() {
return this._popup && this._popup._close(), this
},
_openPopup: function(t) {
this._popup.setLatLng(t.latlng), this._map.openPopup(this._popup)
}
}),
(o.Browser.vml =
!o.Browser.svg &&
(function() {
try {
var t = e.createElement('div')
t.innerHTML = '<v:shape adj="1"/>'
var i = t.firstChild
return (
(i.style.behavior = 'url(#default#VML)'),
i && 'object' == typeof i.adj
)
} catch (n) {
return !1
}
})()),
(o.Path =
o.Browser.svg || !o.Browser.vml
? o.Path
: o.Path.extend({
statics: { VML: !0, CLIP_PADDING: 0.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, s, a
for (
this._ctx.beginPath(), t = 0, i = this._parts.length;
i > t;
t++
) {
for (e = 0, n = this._parts[t].length; n > e; e++)
(s = this._parts[t][e]),
(a = (0 === e ? 'move' : 'line') + 'To'),
this._ctx[a](s.x, s.y)
this instanceof o.Polygon && this._ctx.closePath()
}
},
_checkIfEmpty: function() {
return !this._parts.length
},
_updatePath: function() {
if (!this._checkIfEmpty()) {
var t = this._ctx,
e = this.options
this._drawPath(),
t.save(),
this._updateStyle(),
e.fill &&
((t.globalAlpha = e.fillOpacity),
t.fill(e.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 n = t.length,
o = typeof Uint8Array != i + '' ? Uint8Array : Array,
s = new o(n)
;(s[0] = s[n - 1] = 1), this._simplifyDPStep(t, s, e, 0, n - 1)
var a,
r = []
for (a = 0; n > a; a++) s[a] && r.push(t[a])
return r
},
_simplifyDPStep: function(t, e, i, n, o) {
var s,
a,
r,
h = 0
for (a = n + 1; o - 1 >= a; a++)
(r = this._sqClosestPointOnSegment(t[a], t[n], t[o], !0)),
r > h && ((s = a), (h = r))
h > i &&
((e[s] = 1),
this._simplifyDPStep(t, e, i, n, s),
this._simplifyDPStep(t, e, i, s, o))
},
_reducePoints: function(t, e) {
for (var i = [t[0]], n = 1, o = 0, s = t.length; s > n; n++)
this._sqDist(t[n], t[o]) > e && (i.push(t[n]), (o = n))
return s - 1 > o && i.push(t[s - 1]), i
},
clipSegment: function(t, e, i, n) {
var o,
s,
a,
r = n ? this._lastCode : this._getBitCode(t, i),
h = this._getBitCode(e, i)
for (this._lastCode = h; ; ) {
if (!(r | h)) return [t, e]
if (r & h) return !1
;(o = r || h),
(s = this._getEdgeIntersection(t, e, o, i)),
(a = this._getBitCode(s, i)),
o === r ? ((t = s), (r = a)) : ((e = s), (h = a))
}
},
_getEdgeIntersection: function(t, e, i, n) {
var s = e.x - t.x,
a = e.y - t.y,
r = n.min,
h = n.max
return 8 & i
? new o.Point(t.x + (s * (h.y - t.y)) / a, h.y)
: 4 & i
? new o.Point(t.x + (s * (r.y - t.y)) / a, r.y)
: 2 & i
? new o.Point(h.x, t.y + (a * (h.x - t.x)) / s)
: 1 & i
? new o.Point(r.x, t.y + (a * (r.x - t.x)) / s)
: void 0
},
_getBitCode: function(t, e) {
var i = 0
return (
t.x < e.min.x ? (i |= 1) : t.x > e.max.x && (i |= 2),
t.y < e.min.y ? (i |= 4) : t.y > e.max.y && (i |= 8),
i
)
},
_sqDist: function(t, e) {
var i = e.x - t.x,
n = e.y - t.y
return i * i + n * n
},
_sqClosestPointOnSegment: function(t, e, i, n) {
var s,
a = e.x,
r = e.y,
h = i.x - a,
l = i.y - r,
u = h * h + l * l
return (
u > 0 &&
((s = ((t.x - a) * h + (t.y - r) * l) / u),
s > 1
? ((a = i.x), (r = i.y))
: s > 0 && ((a += h * s), (r += l * s))),
(h = t.x - a),
(l = t.y - r),
n ? h * h + l * l : new o.Point(a, r)
)
}
}),
(o.Polyline = o.Path.extend({
initialize: function(t, e) {
o.Path.prototype.initialize.call(this, e),
(this._latlngs = this._convertLatLngs(t))
},
options: { smoothFactor: 1, noClip: !1 },
projectLatlngs: function() {
this._originalPoints = []
for (var t = 0, e = this._latlngs.length; e > t; t++)
this._originalPoints[t] = this._map.latLngToLayerPoint(
this._latlngs[t]
)
},
getPathString: function() {
for (var t = 0, e = this._parts.length, i = ''; e > t; t++)
i += this._getPathPartStr(this._parts[t])
return i
},
getLatLngs: function() {
return this._latlngs
},
setLatLngs: function(t) {
return (this._latlngs = this._convertLatLngs(t)), this.redraw()
},
addLatLng: function(t) {
return this._latlngs.push(o.latLng(t)), this.redraw()
},
spliceLatLngs: function() {
var t = [].splice.apply(this._latlngs, arguments)
return this._convertLatLngs(this._latlngs, !0), this.redraw(), t
},
closestLayerPoint: function(t) {
for (
var e,
i,
n = 1 / 0,
s = this._parts,
a = null,
r = 0,
h = s.length;
h > r;
r++
)
for (var l = s[r], u = 1, c = l.length; c > u; u++) {
;(e = l[u - 1]), (i = l[u])
var d = o.LineUtil._sqClosestPointOnSegment(t, e, i, !0)
n > d &&
((n = d), (a = o.LineUtil._sqClosestPointOnSegment(t, e, i)))
}
return a && (a.distance = Math.sqrt(n)), a
},
getBounds: function() {
return new o.LatLngBounds(this.getLatLngs())
},
_convertLatLngs: function(t, e) {
var i,
n,
s = e ? t : []
for (i = 0, n = t.length; n > i; i++) {
if (o.Util.isArray(t[i]) && 'number' != typeof t[i][0]) return
s[i] = o.latLng(t[i])
}
return s
},
_initEvents: function() {
o.Path.prototype._initEvents.call(this)
},
_getPathPartStr: function(t) {
for (var e, i = o.Path.VML, n = 0, s = t.length, a = ''; s > n; n++)
(e = t[n]),
i && e._round(),
(a += (n ? 'L' : 'M') + e.x + ' ' + e.y)
return a
},
_clipPoints: function() {
var t,
e,
i,
n = this._originalPoints,
s = n.length
if (this.options.noClip) return void (this._parts = [n])
this._parts = []
var a = this._parts,
r = this._map._pathViewport,
h = o.LineUtil
for (t = 0, e = 0; s - 1 > t; t++)
(i = h.clipSegment(n[t], n[t + 1], r, t)),
i &&
((a[e] = a[e] || []),
a[e].push(i[0]),
(i[1] !== n[t + 1] || t === s - 2) && (a[e].push(i[1]), e++))
},
_simplifyPoints: function() {
for (
var t = this._parts, e = o.LineUtil, i = 0, n = t.length;
n > i;
i++
)
t[i] = e.simplify(t[i], this.options.smoothFactor)
},
_updatePath: function() {
this._map &&
(this._clipPoints(),
this._simplifyPoints(),
o.Path.prototype._updatePath.call(this))
}
})),
(o.polyline = function(t, e) {
return new o.Polyline(t, e)
}),
(o.PolyUtil = {}),
(o.PolyUtil.clipPolygon = function(t, e) {
var i,
n,
s,
a,
r,
h,
l,
u,
c,
d = [1, 4, 2, 8],
p = o.LineUtil
for (n = 0, l = t.length; l > n; n++)
t[n]._code = p._getBitCode(t[n], e)
for (a = 0; 4 > a; a++) {
for (
u = d[a], i = [], n = 0, l = t.length, s = l - 1;
l > n;
s = n++
)
(r = t[n]),
(h = t[s]),
r._code & u
? h._code & u ||
((c = p._getEdgeIntersection(h, r, u, e)),
(c._code = p._getBitCode(c, e)),
i.push(c))
: (h._code & u &&
((c = p._getEdgeIntersection(h, r, u, e)),
(c._code = p._getBitCode(c, e)),
i.push(c)),
i.push(r))
t = i
}
return t
}),
(o.Polygon = o.Polyline.extend({
options: { fill: !0 },
initialize: function(t, e) {
o.Polyline.prototype.initialize.call(this, t, e),
this._initWithHoles(t)
},
_initWithHoles: function(t) {
var e, i, n
if (t && o.Util.isArray(t[0]) && 'number' != typeof t[0][0])
for (
this._latlngs = this._convertLatLngs(t[0]),
this._holes = t.slice(1),
e = 0,
i = this._holes.length;
i > e;
e++
)
(n = this._holes[e] = this._convertLatLngs(this._holes[e])),
n[0].equals(n[n.length - 1]) && n.pop()
;(t = this._latlngs),
t.length >= 2 && t[0].equals(t[t.length - 1]) && t.pop()
},
projectLatlngs: function() {
if (
(o.Polyline.prototype.projectLatlngs.call(this),
(this._holePoints = []),
this._holes)
) {
var t, e, i, n
for (t = 0, i = this._holes.length; i > t; t++)
for (
this._holePoints[t] = [], e = 0, n = this._holes[t].length;
n > e;
e++
)
this._holePoints[t][e] = this._map.latLngToLayerPoint(
this._holes[t][e]
)
}
},
setLatLngs: function(t) {
return t && o.Util.isArray(t[0]) && 'number' != typeof t[0][0]
? (this._initWithHoles(t), this.redraw())
: o.Polyline.prototype.setLatLngs.call(this, t)
},
_clipPoints: function() {
var t = this._originalPoints,
e = []
if (
((this._parts = [t].concat(this._holePoints)),
!this.options.noClip)
) {
for (var i = 0, n = this._parts.length; n > i; i++) {
var s = o.PolyUtil.clipPolygon(
this._parts[i],
this._map._pathViewport
)
s.length && e.push(s)
}
this._parts = e
}
},
_getPathPartStr: function(t) {
var e = o.Polyline.prototype._getPathPartStr.call(this, t)
return e + (o.Browser.svg ? 'z' : 'x')
}
})),
(o.polygon = function(t, e) {
return new o.Polygon(t, e)
}),
(function() {
function t(t) {
return o.FeatureGroup.extend({
initialize: function(t, e) {
;(this._layers = {}), (this._options = e), this.setLatLngs(t)
},
setLatLngs: function(e) {
var i = 0,
n = e.length
for (
this.eachLayer(function(t) {
n > i ? t.setLatLngs(e[i++]) : this.removeLayer(t)
}, this);
n > i;
)
this.addLayer(new t(e[i++], this._options))
return this
},
getLatLngs: function() {
var t = []
return (
this.eachLayer(function(e) {
t.push(e.getLatLngs())
}),
t
)
}
})
}
;(o.MultiPolyline = t(o.Polyline)),
(o.MultiPolygon = t(o.Polygon)),
(o.multiPolyline = function(t, e) {
return new o.MultiPolyline(t, e)
}),
(o.multiPolygon = function(t, e) {
return new o.MultiPolygon(t, e)
})
})(),
(o.Rectangle = o.Polygon.extend({
initialize: function(t, e) {
o.Polygon.prototype.initialize.call(
this,
this._boundsToLatLngs(t),
e
)
},
setBounds: function(t) {
this.setLatLngs(this._boundsToLatLngs(t))
},
_boundsToLatLngs: function(t) {
return (
(t = o.latLngBounds(t)),
[
t.getSouthWest(),
t.getNorthWest(),
t.getNorthEast(),
t.getSouthEast()
]
)
}
})),
(o.rectangle = function(t, e) {
return new o.Rectangle(t, e)
}),
(o.Circle = o.Path.extend({
initialize: function(t, e, i) {
o.Path.prototype.initialize.call(this, i),
(this._latlng = o.latLng(t)),
(this._mRadius = e)
},
options: { fill: !0 },
setLatLng: function(t) {
return (this._latlng = o.latLng(t)), this.redraw()
},
setRadius: function(t) {
return (this._mRadius = t), this.redraw()
},
projectLatlngs: function() {
var t = this._getLngRadius(),
e = this._latlng,
i = this._map.latLngToLayerPoint([e.lat, e.lng - t])
;(this._point = this._map.latLngToLayerPoint(e)),
(this._radius = Math.max(this._point.x - i.x, 1))
},
getBounds: function() {
var t = this._getLngRadius(),
e = (this._mRadius / 40075017) * 360,
i = this._latlng
return new o.LatLngBounds(
[i.lat - e, i.lng - t],
[i.lat + e, i.lng + t]
)
},
getLatLng: function() {
return this._latlng
},
getPathString: function() {
var t = this._point,
e = this._radius
return this._checkIfEmpty()
? ''
: o.Browser.svg
? 'M' +
t.x +
',' +
(t.y - e) +
'A' +
e +
',' +
e +
',0,1,1,' +
(t.x - 0.1) +
',' +
(t.y - e) +
' z'
: (t._round(),
(e = Math.round(e)),
'AL ' + t.x + ',' + t.y + ' ' + e + ',' + e + ' 0,23592600')
},
getRadius: function() {
return this._mRadius
},
_getLatRadius: function() {
return (this._mRadius / 40075017) * 360
},
_getLngRadius: function() {
return (
this._getLatRadius() /
Math.cos(o.LatLng.DEG_TO_RAD * this._latlng.lat)
)
},
_checkIfEmpty: function() {
if (!this._map) return !1
var t = this._map._pathViewport,
e = this._radius,
i = this._point
return (
i.x - e > t.max.x ||
i.y - e > t.max.y ||
i.x + e < t.min.x ||
i.y + e < t.min.y
)
}
})),
(o.circle = function(t, e, i) {
return new o.Circle(t, e, i)
}),
(o.CircleMarker = o.Circle.extend({
options: { radius: 10, weight: 2 },
initialize: function(t, e) {
o.Circle.prototype.initialize.call(this, t, null, e),
(this._radius = this.options.radius)
},
projectLatlngs: function() {
this._point = this._map.latLngToLayerPoint(this._latlng)
},
_updateStyle: function() {
o.Circle.prototype._updateStyle.call(this),
this.setRadius(this.options.radius)
},
setLatLng: function(t) {
return (
o.Circle.prototype.setLatLng.call(this, t),
this._popup && this._popup._isOpen && this._popup.setLatLng(t),
this
)
},
setRadius: function(t) {
return (this.options.radius = this._radius = t), this.redraw()
},
getRadius: function() {
return this._radius
}
})),
(o.circleMarker = function(t, e) {
return new o.CircleMarker(t, e)
}),
o.Polyline.include(
o.Path.CANVAS
? {
_containsPoint: function(t, e) {
var i,
n,
s,
a,
r,
h,
l,
u = this.options.weight / 2
for (
o.Browser.touch && (u += 10), i = 0, a = this._parts.length;
a > i;
i++
)
for (
l = this._parts[i], n = 0, r = l.length, s = r - 1;
r > n;
s = n++
)
if (
(e || 0 !== n) &&
((h = o.LineUtil.pointToSegmentDistance(t, l[s], l[n])),
u >= h)
)
return !0
return !1
}
}
: {}
),
o.Polygon.include(
o.Path.CANVAS
? {
_containsPoint: function(t) {
var e,
i,
n,
s,
a,
r,
h,
l,
u = !1
if (o.Polyline.prototype._containsPoint.call(this, t, !0))
return !0
for (s = 0, h = this._parts.length; h > s; s++)
for (
e = this._parts[s], a = 0, l = e.length, r = l - 1;
l > a;
r = a++
)
(i = e[a]),
(n = e[r]),
i.y > t.y != n.y > t.y &&
t.x <
((n.x - i.x) * (t.y - i.y)) / (n.y - i.y) + i.x &&
(u = !u)
return u
}
}
: {}
),
o.Circle.include(
o.Path.CANVAS
? {
_drawPath: function() {
var t = this._point
this._ctx.beginPath(),
this._ctx.arc(t.x, t.y, this._radius, 0, 2 * Math.PI, !1)
},
_containsPoint: function(t) {
var e = this._point,
i = this.options.stroke ? this.options.weight / 2 : 0
return t.distanceTo(e) <= this._radius + i
}
}
: {}
),
o.CircleMarker.include(
o.Path.CANVAS
? {
_updateStyle: function() {
o.Path.prototype._updateStyle.call(this)
}
}
: {}
),
(o.GeoJSON = o.FeatureGroup.extend({
initialize: function(t, e) {
o.setOptions(this, e), (this._layers = {}), t && this.addData(t)
},
addData: function(t) {
var e,
i,
n,
s = o.Util.isArray(t) ? t : t.features
if (s) {
for (e = 0, i = s.length; i > e; e++)
(n = s[e]),
(n.geometries || n.geometry || n.features || n.coordinates) &&
this.addData(s[e])
return this
}
var a = this.options
if (!a.filter || a.filter(t)) {
var r = o.GeoJSON.geometryToLayer(
t,
a.pointToLayer,
a.coordsToLatLng,
a
)
return (
(r.feature = o.GeoJSON.asFeature(t)),
(r.defaultOptions = r.options),
this.resetStyle(r),
a.onEachFeature && a.onEachFeature(t, r),
this.addLayer(r)
)
}
},
resetStyle: function(t) {
var e = this.options.style
e &&
(o.Util.extend(t.options, t.defaultOptions),
this._setLayerStyle(t, e))
},
setStyle: function(t) {
this.eachLayer(function(e) {
this._setLayerStyle(e, t)
}, this)
},
_setLayerStyle: function(t, e) {
'function' == typeof e && (e = e(t.feature)),
t.setStyle && t.setStyle(e)
}
})),
o.extend(o.GeoJSON, {
geometryToLayer: function(t, e, i, n) {
var s,
a,
r,
h,
l = 'Feature' === t.type ? t.geometry : t,
u = l.coordinates,
c = []
switch (((i = i || this.coordsToLatLng), l.type)) {
case 'Point':
return (s = i(u)), e ? e(t, s) : new o.Marker(s)
case 'MultiPoint':
for (r = 0, h = u.length; h > r; r++)
(s = i(u[r])), c.push(e ? e(t, s) : new o.Marker(s))
return new o.FeatureGroup(c)
case 'LineString':
return (a = this.coordsToLatLngs(u, 0, i)), new o.Polyline(a, n)
case 'Polygon':
if (2 === u.length && !u[1].length)
throw new Error('Invalid GeoJSON object.')
return (a = this.coordsToLatLngs(u, 1, i)), new o.Polygon(a, n)
case 'MultiLineString':
return (
(a = this.coordsToLatLngs(u, 1, i)), new o.MultiPolyline(a, n)
)
case 'MultiPolygon':
return (
(a = this.coordsToLatLngs(u, 2, i)), new o.MultiPolygon(a, n)
)
case 'GeometryCollection':
for (r = 0, h = l.geometries.length; h > r; r++)
c.push(
this.geometryToLayer(
{
geometry: l.geometries[r],
type: 'Feature',
properties: t.properties
},
e,
i,
n
)
)
return new o.FeatureGroup(c)
default:
throw new Error('Invalid GeoJSON object.')
}
},
coordsToLatLng: function(t) {
return new o.LatLng(t[1], t[0], t[2])
},
coordsToLatLngs: function(t, e, i) {
var n,
o,
s,
a = []
for (o = 0, s = t.length; s > o; o++)
(n = e
? this.coordsToLatLngs(t[o], e - 1, i)
: (i || this.coordsToLatLng)(t[o])),
a.push(n)
return a
},
latLngToCoords: function(t) {
var e = [t.lng, t.lat]
return t.alt !== i && e.push(t.alt), e
},
latLngsToCoords: function(t) {
for (var e = [], i = 0, n = t.length; n > i; i++)
e.push(o.GeoJSON.latLngToCoords(t[i]))
return e
},
getFeature: function(t, e) {
return t.feature
? o.extend({}, t.feature, { geometry: e })
: o.GeoJSON.asFeature(e)
},
asFeature: function(t) {
return 'Feature' === t.type
? t
: { type: 'Feature', properties: {}, geometry: t }
}
})
var a = {
toGeoJSON: function() {
return o.GeoJSON.getFeature(this, {
type: 'Point',
coordinates: o.GeoJSON.latLngToCoords(this.getLatLng())
})
}
}
o.Marker.include(a),
o.Circle.include(a),
o.CircleMarker.include(a),
o.Polyline.include({
toGeoJSON: function() {
return o.GeoJSON.getFeature(this, {
type: 'LineString',
coordinates: o.GeoJSON.latLngsToCoords(this.getLatLngs())
})
}
}),
o.Polygon.include({
toGeoJSON: function() {
var t,
e,
i,
n = [o.GeoJSON.latLngsToCoords(this.getLatLngs())]
if ((n[0].push(n[0][0]), this._holes))
for (t = 0, e = this._holes.length; e > t; t++)
(i = o.GeoJSON.latLngsToCoords(this._holes[t])),
i.push(i[0]),
n.push(i)
return o.GeoJSON.getFeature(this, {
type: 'Polygon',
coordinates: n
})
}
}),
(function() {
function t(t) {
return function() {
var e = []
return (
this.eachLayer(function(t) {
e.push(t.toGeoJSON().geometry.coordinates)
}),
o.GeoJSON.getFeature(this, { type: t, coordinates: e })
)
}
}
o.MultiPolyline.include({ toGeoJSON: t('MultiLineString') }),
o.MultiPolygon.include({ toGeoJSON: t('MultiPolygon') }),
o.LayerGroup.include({
toGeoJSON: function() {
var e,
i = this.feature && this.feature.geometry,
n = []
if (i && 'MultiPoint' === i.type)
return t('MultiPoint').call(this)
var s = i && 'GeometryCollection' === i.type
return (
this.eachLayer(function(t) {
t.toGeoJSON &&
((e = t.toGeoJSON()),
n.push(s ? e.geometry : o.GeoJSON.asFeature(e)))
}),
s
? o.GeoJSON.getFeature(this, {
geometries: n,
type: 'GeometryCollection'
})
: {
type: 'FeatureCollection',
features: n
}
)
}
})
})(),
(o.geoJson = function(t, e) {
return new o.GeoJSON(t, e)
}),
(o.DomEvent = {
addListener: function(t, e, i, n) {
var s,
a,
r,
h = o.stamp(i),
l = '_leaflet_' + e + h
return t[l]
? this
: ((s = function(e) {
return i.call(n || t, e || o.DomEvent._getEvent())
}),
o.Browser.pointer && 0 === e.indexOf('touch')
? this.addPointerListener(t, e, s, h)
: (o.Browser.touch &&
'dblclick' === e &&
this.addDoubleTapListener &&
this.addDoubleTapListener(t, s, h),
'addEventListener' in t
? 'mousewheel' === e
? (t.addEventListener('DOMMouseScroll', s, !1),
t.addEventListener(e, s, !1))
: 'mouseenter' === e || 'mouseleave' === e
? ((a = s),
(r = 'mouseenter' === e ? 'mouseover' : 'mouseout'),
(s = function(e) {
return o.DomEvent._checkMouse(t, e) ? a(e) : void 0
}),
t.addEventListener(r, s, !1))
: 'click' === e && o.Browser.android
? ((a = s),
(s = function(t) {
return o.DomEvent._filterClick(t, a)
}),
t.addEventListener(e, s, !1))
: t.addEventListener(e, s, !1)
: 'attachEvent' in t && t.attachEvent('on' + e, s),
(t[l] = s),
this))
},
removeListener: function(t, e, i) {
var n = o.stamp(i),
s = '_leaflet_' + e + n,
a = t[s]
return a
? (o.Browser.pointer && 0 === e.indexOf('touch')
? this.removePointerListener(t, e, n)
: o.Browser.touch &&
'dblclick' === e &&
this.removeDoubleTapListener
? this.removeDoubleTapListener(t, n)
: 'removeEventListener' in t
? 'mousewheel' === e
? (t.removeEventListener('DOMMouseScroll', a, !1),
t.removeEventListener(e, a, !1))
: 'mouseenter' === e || 'mouseleave' === e
? t.removeEventListener(
'mouseenter' === e ? 'mouseover' : 'mouseout',
a,
!1
)
: t.removeEventListener(e, a, !1)
: 'detachEvent' in t && t.detachEvent('on' + e, a),
(t[s] = null),
this)
: this
},
stopPropagation: function(t) {
return (
t.stopPropagation ? t.stopPropagation() : (t.cancelBubble = !0),
o.DomEvent._skipped(t),
this
)
},
disableScrollPropagation: function(t) {
var e = o.DomEvent.stopPropagation
return o.DomEvent.on(t, 'mousewheel', e).on(
t,
'MozMousePixelScroll',
e
)
},
disableClickPropagation: function(t) {
for (
var e = o.DomEvent.stopPropagation,
i = o.Draggable.START.length - 1;
i >= 0;
i--
)
o.DomEvent.on(t, o.Draggable.START[i], e)
return o.DomEvent.on(t, 'click', o.DomEvent._fakeStop).on(
t,
'dblclick',
e
)
},
preventDefault: function(t) {
return (
t.preventDefault ? t.preventDefault() : (t.returnValue = !1), this
)
},
stop: function(t) {
return o.DomEvent.preventDefault(t).stopPropagation(t)
},
getMousePosition: function(t, e) {
if (!e) return new o.Point(t.clientX, t.clientY)
var i = e.getBoundingClientRect()
return new o.Point(
t.clientX - i.left - e.clientLeft,
t.clientY - i.top - e.clientTop
)
},
getWheelDelta: function(t) {
var e = 0
return (
t.wheelDelta && (e = t.wheelDelta / 120),
t.detail && (e = -t.detail / 3),
e
)
},
_skipEvents: {},
_fakeStop: function(t) {
o.DomEvent._skipEvents[t.type] = !0
},
_skipped: function(t) {
var e = this._skipEvents[t.type]
return (this._skipEvents[t.type] = !1), e
},
_checkMouse: function(t, e) {
var i = e.relatedTarget
if (!i) return !0
try {
for (; i && i !== t; ) i = i.parentNode
} catch (n) {
return !1
}
return i !== t
},
_getEvent: function() {
var e = t.event
if (!e)
for (
var i = arguments.callee.caller;
i && ((e = i.arguments[0]), !e || t.Event !== e.constructor);
)
i = i.caller
return e
},
_filterClick: function(t, e) {
var i = t.timeStamp || t.originalEvent.timeStamp,
n = o.DomEvent._lastClick && i - o.DomEvent._lastClick
return (n && n > 100 && 500 > n) ||
(t.target._simulatedClick && !t._simulated)
? void o.DomEvent.stop(t)
: ((o.DomEvent._lastClick = i), e(t))
}
}),
(o.DomEvent.on = o.DomEvent.addListener),
(o.DomEvent.off = o.DomEvent.removeListener),
(o.Draggable = o.Class.extend({
includes: o.Mixin.Events,
statics: {
START: o.Browser.touch
? ['touchstart', 'mousedown']
: ['mousedown'],
END: {
mousedown: 'mouseup',
touchstart: 'touchend',
pointerdown: 'touchend',
MSPointerDown: 'touchend'
},
MOVE: {
mousedown: 'mousemove',
touchstart: 'touchmove',
pointerdown: 'touchmove',
MSPointerDown: 'touchmove'
}
},
initialize: function(t, e) {
;(this._element = t), (this._dragStartTarget = e || t)
},
enable: function() {
if (!this._enabled) {
for (var t = o.Draggable.START.length - 1; t >= 0; t--)
o.DomEvent.on(
this._dragStartTarget,
o.Draggable.START[t],
this._onDown,
this
)
this._enabled = !0
}
},
disable: function() {
if (this._enabled) {
for (var t = o.Draggable.START.length - 1; t >= 0; t--)
o.DomEvent.off(
this._dragStartTarget,
o.Draggable.START[t],
this._onDown,
this
)
;(this._enabled = !1), (this._moved = !1)
}
},
_onDown: function(t) {
if (
((this._moved = !1),
!t.shiftKey &&
(1 === t.which || 1 === t.button || t.touches) &&
(o.DomEvent.stopPropagation(t),
!o.Draggable._disabled &&
(o.DomUtil.disableImageDrag(),
o.DomUtil.disableTextSelection(),
!this._moving)))
) {
var i = t.touches ? t.touches[0] : t
;(this._startPoint = new o.Point(i.clientX, i.clientY)),
(this._startPos = this._newPos = o.DomUtil.getPosition(
this._element
)),
o.DomEvent.on(
e,
o.Draggable.MOVE[t.type],
this._onMove,
this
).on(e, o.Draggable.END[t.type], this._onUp, this)
}
},
_onMove: function(t) {
if (t.touches && t.touches.length > 1)
return void (this._moved = !0)
var i = t.touches && 1 === t.touches.length ? t.touches[0] : t,
n = new o.Point(i.clientX, i.clientY),
s = n.subtract(this._startPoint)
;(s.x || s.y) &&
((o.Browser.touch && Math.abs(s.x) + Math.abs(s.y) < 3) ||
(o.DomEvent.preventDefault(t),
this._moved ||
(this.fire('dragstart'),
(this._moved = !0),
(this._startPos = o.DomUtil.getPosition(
this._element
).subtract(s)),
o.DomUtil.addClass(e.body, 'leaflet-dragging'),
(this._lastTarget = t.target || t.srcElement),
o.DomUtil.addClass(this._lastTarget, 'leaflet-drag-target')),
(this._newPos = this._startPos.add(s)),
(this._moving = !0),
o.Util.cancelAnimFrame(this._animRequest),
(this._animRequest = o.Util.requestAnimFrame(
this._updatePosition,
this,
!0,
this._dragStartTarget
))))
},
_updatePosition: function() {
this.fire('predrag'),
o.DomUtil.setPosition(this._element, this._newPos),
this.fire('drag')
},
_onUp: function() {
o.DomUtil.removeClass(e.body, 'leaflet-dragging'),
this._lastTarget &&
(o.DomUtil.removeClass(this._lastTarget, 'leaflet-drag-target'),
(this._lastTarget = null))
for (var t in o.Draggable.MOVE)
o.DomEvent.off(e, o.Draggable.MOVE[t], this._onMove).off(
e,
o.Draggable.END[t],
this._onUp
)
o.DomUtil.enableImageDrag(),
o.DomUtil.enableTextSelection(),
this._moved &&
this._moving &&
(o.Util.cancelAnimFrame(this._animRequest),
this.fire('dragend', {
distance: this._newPos.distanceTo(this._startPos)
})),
(this._moving = !1)
}
})),
(o.Handler = o.Class.extend({
initialize: function(t) {
this._map = t
},
enable: function() {
this._enabled || ((this._enabled = !0), this.addHooks())
},
disable: function() {
this._enabled && ((this._enabled = !1), this.removeHooks())
},
enabled: function() {
return !!this._enabled
}
})),
o.Map.mergeOptions({
dragging: !0,
inertia: !o.Browser.android23,
inertiaDeceleration: 3400,
inertiaMaxSpeed: 1 / 0,
inertiaThreshold: o.Browser.touch ? 32 : 18,
easeLinearity: 0.25,
worldCopyJump: !1
}),
(o.Map.Drag = o.Handler.extend({
addHooks: function() {
if (!this._draggable) {
var t = this._map
;(this._draggable = new o.Draggable(t._mapPane, t._container)),
this._draggable.on(
{
dragstart: this._onDragStart,
drag: this._onDrag,
dragend: this._onDragEnd
},
this
),
t.options.worldCopyJump &&
(this._draggable.on('predrag', this._onPreDrag, this),
t.on('viewreset', this._onViewReset, this),
t.whenReady(this._onViewReset, this))
}
this._draggable.enable()
},
removeHooks: function() {
this._draggable.disable()
},
moved: function() {
return this._draggable && this._draggable._moved
},
_onDragStart: function() {
var t = this._map
t._panAnim && t._panAnim.stop(),
t.fire('movestart').fire('dragstart'),
t.options.inertia && ((this._positions = []), (this._times = []))
},
_onDrag: function() {
if (this._map.options.inertia) {
var t = (this._lastTime = +new Date()),
e = (this._lastPos = this._draggable._newPos)
this._positions.push(e),
this._times.push(t),
t - this._times[0] > 200 &&
(this._positions.shift(), this._times.shift())
}
this._map.fire('move').fire('drag')
},
_onViewReset: function() {
var t = this._map.getSize()._divideBy(2),
e = this._map.latLngToLayerPoint([0, 0])
;(this._initialWorldOffset = e.subtract(t).x),
(this._worldWidth = this._map.project([0, 180]).x)
},
_onPreDrag: function() {
var t = this._worldWidth,
e = Math.round(t / 2),
i = this._initialWorldOffset,
n = this._draggable._newPos.x,
o = ((n - e + i) % t) + e - i,
s = ((n + e + i) % t) - e - i,
a = Math.abs(o + i) < Math.abs(s + i) ? o : s
this._draggable._newPos.x = a
},
_onDragEnd: function(t) {
var e = this._map,
i = e.options,
n = +new Date() - this._lastTime,
s = !i.inertia || n > i.inertiaThreshold || !this._positions[0]
if ((e.fire('dragend', t), s)) e.fire('moveend')
else {
var a = this._lastPos.subtract(this._positions[0]),
r = (this._lastTime + n - this._times[0]) / 1e3,
h = i.easeLinearity,
l = a.multiplyBy(h / r),
u = l.distanceTo([0, 0]),
c = Math.min(i.inertiaMaxSpeed, u),
d = l.multiplyBy(c / u),
p = c / (i.inertiaDeceleration * h),
_ = d.multiplyBy(-p / 2).round()
_.x && _.y
? ((_ = e._limitOffset(_, e.options.maxBounds)),
o.Util.requestAnimFrame(function() {
e.panBy(_, {
duration: p,
easeLinearity: h,
noMoveStart: !0
})
}))
: e.fire('moveend')
}
}
})),
o.Map.addInitHook('addHandler', 'dragging', o.Map.Drag),
o.Map.mergeOptions({ doubleClickZoom: !0 }),
(o.Map.DoubleClickZoom = o.Handler.extend({
addHooks: function() {
this._map.on('dblclick', this._onDoubleClick, this)
},
removeHooks: function() {
this._map.off('dblclick', this._onDoubleClick, this)
},
_onDoubleClick: function(t) {
var e = this._map,
i = e.getZoom() + (t.originalEvent.shiftKey ? -1 : 1)
'center' === e.options.doubleClickZoom
? e.setZoom(i)
: e.setZoomAround(t.containerPoint, i)
}
})),
o.Map.addInitHook(
'addHandler',
'doubleClickZoom',
o.Map.DoubleClickZoom
),
o.Map.mergeOptions({ scrollWheelZoom: !0 }),
(o.Map.ScrollWheelZoom = o.Handler.extend({
addHooks: function() {
o.DomEvent.on(
this._map._container,
'mousewheel',
this._onWheelScroll,
this
),
o.DomEvent.on(
this._map._container,
'MozMousePixelScroll',
o.DomEvent.preventDefault
),
(this._delta = 0)
},
removeHooks: function() {
o.DomEvent.off(
this._map._container,
'mousewheel',
this._onWheelScroll
),
o.DomEvent.off(
this._map._container,
'MozMousePixelScroll',
o.DomEvent.preventDefault
)
},
_onWheelScroll: function(t) {
var e = o.DomEvent.getWheelDelta(t)
;(this._delta += e),
(this._lastMousePos = this._map.mouseEventToContainerPoint(t)),
this._startTime || (this._startTime = +new Date())
var i = Math.max(40 - (+new Date() - this._startTime), 0)
clearTimeout(this._timer),
(this._timer = setTimeout(o.bind(this._performZoom, this), i)),
o.DomEvent.preventDefault(t),
o.DomEvent.stopPropagation(t)
},
_performZoom: function() {
var t = this._map,
e = this._delta,
i = t.getZoom()
;(e = e > 0 ? Math.ceil(e) : Math.floor(e)),
(e = Math.max(Math.min(e, 4), -4)),
(e = t._limitZoom(i + e) - i),
(this._delta = 0),
(this._startTime = null),
e &&
('center' === t.options.scrollWheelZoom
? t.setZoom(i + e)
: t.setZoomAround(this._lastMousePos, i + e))
}
})),
o.Map.addInitHook(
'addHandler',
'scrollWheelZoom',
o.Map.ScrollWheelZoom
),
o.extend(o.DomEvent, {
_touchstart: o.Browser.msPointer
? 'MSPointerDown'
: o.Browser.pointer
? 'pointerdown'
: 'touchstart',
_touchend: o.Browser.msPointer
? 'MSPointerUp'
: o.Browser.pointer
? 'pointerup'
: 'touchend',
addDoubleTapListener: function(t, i, n) {
function s(t) {
var e
if (
(o.Browser.pointer
? (_.push(t.pointerId), (e = _.length))
: (e = t.touches.length),
!(e > 1))
) {
var i = Date.now(),
n = i - (r || i)
;(h = t.touches ? t.touches[0] : t),
(l = n > 0 && u >= n),
(r = i)
}
}
function a(t) {
if (o.Browser.pointer) {
var e = _.indexOf(t.pointerId)
if (-1 === e) return
_.splice(e, 1)
}
if (l) {
if (o.Browser.pointer) {
var n,
s = {}
for (var a in h)
(n = h[a]),
'function' == typeof n ? (s[a] = n.bind(h)) : (s[a] = n)
h = s
}
;(h.type = 'dblclick'), i(h), (r = null)
}
}
var r,
h,
l = !1,
u = 250,
c = '_leaflet_',
d = this._touchstart,
p = this._touchend,
_ = []
;(t[c + d + n] = s), (t[c + p + n] = a)
var m = o.Browser.pointer ? e.documentElement : t
return (
t.addEventListener(d, s, !1),
m.addEventListener(p, a, !1),
o.Browser.pointer &&
m.addEventListener(o.DomEvent.POINTER_CANCEL, a, !1),
this
)
},
removeDoubleTapListener: function(t, i) {
var n = '_leaflet_'
return (
t.removeEventListener(
this._touchstart,
t[n + this._touchstart + i],
!1
),
(o.Browser.pointer ? e.documentElement : t).removeEventListener(
this._touchend,
t[n + this._touchend + i],
!1
),
o.Browser.pointer &&
e.documentElement.removeEventListener(
o.DomEvent.POINTER_CANCEL,
t[n + this._touchend + i],
!1
),
this
)
}
}),
o.extend(o.DomEvent, {
POINTER_DOWN: o.Browser.msPointer ? 'MSPointerDown' : 'pointerdown',
POINTER_MOVE: o.Browser.msPointer ? 'MSPointerMove' : 'pointermove',
POINTER_UP: o.Browser.msPointer ? 'MSPointerUp' : 'pointerup',
POINTER_CANCEL: o.Browser.msPointer
? 'MSPointerCancel'
: 'pointercancel',
_pointers: [],
_pointerDocumentListener: !1,
addPointerListener: function(t, e, i, n) {
switch (e) {
case 'touchstart':
return this.addPointerListenerStart(t, e, i, n)
case 'touchend':
return this.addPointerListenerEnd(t, e, i, n)
case 'touchmove':
return this.addPointerListenerMove(t, e, i, n)
default:
throw 'Unknown touch event type'
}
},
addPointerListenerStart: function(t, i, n, s) {
var a = '_leaflet_',
r = this._pointers,
h = function(t) {
'mouse' !== t.pointerType &&
t.pointerType !== t.MSPOINTER_TYPE_MOUSE &&
o.DomEvent.preventDefault(t)
for (var e = !1, i = 0; i < r.length; i++)
if (r[i].pointerId === t.pointerId) {
e = !0
break
}
e || r.push(t),
(t.touches = r.slice()),
(t.changedTouches = [t]),
n(t)
}
if (
((t[a + 'touchstart' + s] = h),
t.addEventListener(this.POINTER_DOWN, h, !1),
!this._pointerDocumentListener)
) {
var l = function(t) {
for (var e = 0; e < r.length; e++)
if (r[e].pointerId === t.pointerId) {
r.splice(e, 1)
break
}
}
e.documentElement.addEventListener(this.POINTER_UP, l, !1),
e.documentElement.addEventListener(this.POINTER_CANCEL, l, !1),
(this._pointerDocumentListener = !0)
}
return this
},
addPointerListenerMove: function(t, e, i, n) {
function o(t) {
if (
(t.pointerType !== t.MSPOINTER_TYPE_MOUSE &&
'mouse' !== t.pointerType) ||
0 !== t.buttons
) {
for (var e = 0; e < a.length; e++)
if (a[e].pointerId === t.pointerId) {
a[e] = t
break
}
;(t.touches = a.slice()), (t.changedTouches = [t]), i(t)
}
}
var s = '_leaflet_',
a = this._pointers
return (
(t[s + 'touchmove' + n] = o),
t.addEventListener(this.POINTER_MOVE, o, !1),
this
)
},
addPointerListenerEnd: function(t, e, i, n) {
var o = '_leaflet_',
s = this._pointers,
a = function(t) {
for (var e = 0; e < s.length; e++)
if (s[e].pointerId === t.pointerId) {
s.splice(e, 1)
break
}
;(t.touches = s.slice()), (t.changedTouches = [t]), i(t)
}
return (
(t[o + 'touchend' + n] = a),
t.addEventListener(this.POINTER_UP, a, !1),
t.addEventListener(this.POINTER_CANCEL, a, !1),
this
)
},
removePointerListener: function(t, e, i) {
var n = '_leaflet_',
o = t[n + e + i]
switch (e) {
case 'touchstart':
t.removeEventListener(this.POINTER_DOWN, o, !1)
break
case 'touchmove':
t.removeEventListener(this.POINTER_MOVE, o, !1)
break
case 'touchend':
t.removeEventListener(this.POINTER_UP, o, !1),
t.removeEventListener(this.POINTER_CANCEL, o, !1)
}
return this
}
}),
o.Map.mergeOptions({
touchZoom: o.Browser.touch && !o.Browser.android23,
bounceAtZoomLimits: !0
}),
(o.Map.TouchZoom = o.Handler.extend({
addHooks: function() {
o.DomEvent.on(
this._map._container,
'touchstart',
this._onTouchStart,
this
)
},
removeHooks: function() {
o.DomEvent.off(
this._map._container,
'touchstart',
this._onTouchStart,
this
)
},
_onTouchStart: function(t) {
var i = this._map
if (
t.touches &&
2 === t.touches.length &&
!i._animatingZoom &&
!this._zooming
) {
var n = i.mouseEventToLayerPoint(t.touches[0]),
s = i.mouseEventToLayerPoint(t.touches[1]),
a = i._getCenterLayerPoint()
;(this._startCenter = n.add(s)._divideBy(2)),
(this._startDist = n.distanceTo(s)),
(this._moved = !1),
(this._zooming = !0),
(this._centerOffset = a.subtract(this._startCenter)),
i._panAnim && i._panAnim.stop(),
o.DomEvent.on(e, 'touchmove', this._onTouchMove, this).on(
e,
'touchend',
this._onTouchEnd,
this
),
o.DomEvent.preventDefault(t)
}
},
_onTouchMove: function(t) {
var e = this._map
if (t.touches && 2 === t.touches.length && this._zooming) {
var i = e.mouseEventToLayerPoint(t.touches[0]),
n = e.mouseEventToLayerPoint(t.touches[1])
;(this._scale = i.distanceTo(n) / this._startDist),
(this._delta = i
._add(n)
._divideBy(2)
._subtract(this._startCenter)),
1 !== this._scale &&
(e.options.bounceAtZoomLimits ||
!(
(e.getZoom() === e.getMinZoom() && this._scale < 1) ||
(e.getZoom() === e.getMaxZoom() && this._scale > 1)
)) &&
(this._moved ||
(o.DomUtil.addClass(e._mapPane, 'leaflet-touching'),
e.fire('movestart').fire('zoomstart'),
(this._moved = !0)),
o.Util.cancelAnimFrame(this._animRequest),
(this._animRequest = o.Util.requestAnimFrame(
this._updateOnMove,
this,
!0,
this._map._container
)),
o.DomEvent.preventDefault(t))
}
},
_updateOnMove: function() {
var t = this._map,
e = this._getScaleOrigin(),
i = t.layerPointToLatLng(e),
n = t.getScaleZoom(this._scale)
t._animateZoom(
i,
n,
this._startCenter,
this._scale,
this._delta,
!1,
!0
)
},
_onTouchEnd: function() {
if (!this._moved || !this._zooming) return void (this._zooming = !1)
var t = this._map
;(this._zooming = !1),
o.DomUtil.removeClass(t._mapPane, 'leaflet-touching'),
o.Util.cancelAnimFrame(this._animRequest),
o.DomEvent.off(e, 'touchmove', this._onTouchMove).off(
e,
'touchend',
this._onTouchEnd
)
var i = this._getScaleOrigin(),
n = t.layerPointToLatLng(i),
s = t.getZoom(),
a = t.getScaleZoom(this._scale) - s,
r = a > 0 ? Math.ceil(a) : Math.floor(a),
h = t._limitZoom(s + r),
l = t.getZoomScale(h) / this._scale
t._animateZoom(n, h, i, l)
},
_getScaleOrigin: function() {
var t = this._centerOffset
.subtract(this._delta)
.divideBy(this._scale)
return this._startCenter.add(t)
}
})),
o.Map.addInitHook('addHandler', 'touchZoom', o.Map.TouchZoom),
o.Map.mergeOptions({
tap: !0,
tapTolerance: 15
}),
(o.Map.Tap = o.Handler.extend({
addHooks: function() {
o.DomEvent.on(
this._map._container,
'touchstart',
this._onDown,
this
)
},
removeHooks: function() {
o.DomEvent.off(
this._map._container,
'touchstart',
this._onDown,
this
)
},
_onDown: function(t) {
if (t.touches) {
if (
(o.DomEvent.preventDefault(t),
(this._fireClick = !0),
t.touches.length > 1)
)
return (
(this._fireClick = !1), void clearTimeout(this._holdTimeout)
)
var i = t.touches[0],
n = i.target
;(this._startPos = this._newPos = new o.Point(
i.clientX,
i.clientY
)),
n.tagName &&
'a' === n.tagName.toLowerCase() &&
o.DomUtil.addClass(n, 'leaflet-active'),
(this._holdTimeout = setTimeout(
o.bind(function() {
this._isTapValid() &&
((this._fireClick = !1),
this._onUp(),
this._simulateEvent('contextmenu', i))
}, this),
1e3
)),
o.DomEvent.on(e, 'touchmove', this._onMove, this).on(
e,
'touchend',
this._onUp,
this
)
}
},
_onUp: function(t) {
if (
(clearTimeout(this._holdTimeout),
o.DomEvent.off(e, 'touchmove', this._onMove, this).off(
e,
'touchend',
this._onUp,
this
),
this._fireClick && t && t.changedTouches)
) {
var i = t.changedTouches[0],
n = i.target
n &&
n.tagName &&
'a' === n.tagName.toLowerCase() &&
o.DomUtil.removeClass(n, 'leaflet-active'),
this._isTapValid() && this._simulateEvent('click', i)
}
},
_isTapValid: function() {
return (
this._newPos.distanceTo(this._startPos) <=
this._map.options.tapTolerance
)
},
_onMove: function(t) {
var e = t.touches[0]
this._newPos = new o.Point(e.clientX, e.clientY)
},
_simulateEvent: function(i, n) {
var o = e.createEvent('MouseEvents')
;(o._simulated = !0),
(n.target._simulatedClick = !0),
o.initMouseEvent(
i,
!0,
!0,
t,
1,
n.screenX,
n.screenY,
n.clientX,
n.clientY,
!1,
!1,
!1,
!1,
0,
null
),
n.target.dispatchEvent(o)
}
})),
o.Browser.touch &&
!o.Browser.pointer &&
o.Map.addInitHook('addHandler', 'tap', o.Map.Tap),
o.Map.mergeOptions({ boxZoom: !0 }),
(o.Map.BoxZoom = o.Handler.extend({
initialize: function(t) {
;(this._map = t),
(this._container = t._container),
(this._pane = t._panes.overlayPane),
(this._moved = !1)
},
addHooks: function() {
o.DomEvent.on(this._container, 'mousedown', this._onMouseDown, this)
},
removeHooks: function() {
o.DomEvent.off(this._container, 'mousedown', this._onMouseDown),
(this._moved = !1)
},
moved: function() {
return this._moved
},
_onMouseDown: function(t) {
return (
(this._moved = !1),
!t.shiftKey || (1 !== t.which && 1 !== t.button)
? !1
: (o.DomUtil.disableTextSelection(),
o.DomUtil.disableImageDrag(),
(this._startLayerPoint = this._map.mouseEventToLayerPoint(t)),
void o.DomEvent.on(e, 'mousemove', this._onMouseMove, this)
.on(e, 'mouseup', this._onMouseUp, this)
.on(e, 'keydown', this._onKeyDown, this))
)
},
_onMouseMove: function(t) {
this._moved ||
((this._box = o.DomUtil.create(
'div',
'leaflet-zoom-box',
this._pane
)),
o.DomUtil.setPosition(this._box, this._startLayerPoint),
(this._container.style.cursor = 'crosshair'),
this._map.fire('boxzoomstart'))
var e = this._startLayerPoint,
i = this._box,
n = this._map.mouseEventToLayerPoint(t),
s = n.subtract(e),
a = new o.Point(Math.min(n.x, e.x), Math.min(n.y, e.y))
o.DomUtil.setPosition(i, a),
(this._moved = !0),
(i.style.width = Math.max(0, Math.abs(s.x) - 4) + 'px'),
(i.style.height = Math.max(0, Math.abs(s.y) - 4) + 'px')
},
_finish: function() {
this._moved &&
(this._pane.removeChild(this._box),
(this._container.style.cursor = '')),
o.DomUtil.enableTextSelection(),
o.DomUtil.enableImageDrag(),
o.DomEvent.off(e, 'mousemove', this._onMouseMove)
.off(e, 'mouseup', this._onMouseUp)
.off(e, 'keydown', this._onKeyDown)
},
_onMouseUp: function(t) {
this._finish()
var e = this._map,
i = e.mouseEventToLayerPoint(t)
if (!this._startLayerPoint.equals(i)) {
var n = new o.LatLngBounds(
e.layerPointToLatLng(this._startLayerPoint),
e.layerPointToLatLng(i)
)
e.fitBounds(n), e.fire('boxzoomend', { boxZoomBounds: n })
}
},
_onKeyDown: function(t) {
27 === t.keyCode && this._finish()
}
})),
o.Map.addInitHook('addHandler', 'boxZoom', o.Map.BoxZoom),
o.Map.mergeOptions({
keyboard: !0,
keyboardPanOffset: 80,
keyboardZoomOffset: 1
}),
(o.Map.Keyboard = o.Handler.extend({
keyCodes: {
left: [37],
right: [39],
down: [40],
up: [38],
zoomIn: [187, 107, 61, 171],
zoomOut: [189, 109, 173]
},
initialize: function(t) {
;(this._map = t),
this._setPanOffset(t.options.keyboardPanOffset),
this._setZoomOffset(t.options.keyboardZoomOffset)
},
addHooks: function() {
var t = this._map._container
;-1 === t.tabIndex && (t.tabIndex = '0'),
o.DomEvent.on(t, 'focus', this._onFocus, this)
.on(t, 'blur', this._onBlur, this)
.on(t, 'mousedown', this._onMouseDown, this),
this._map
.on('focus', this._addHooks, this)
.on('blur', this._removeHooks, this)
},
removeHooks: function() {
this._removeHooks()
var t = this._map._container
o.DomEvent.off(t, 'focus', this._onFocus, this)
.off(t, 'blur', this._onBlur, this)
.off(t, 'mousedown', this._onMouseDown, this),
this._map
.off('focus', this._addHooks, this)
.off('blur', this._removeHooks, this)
},
_onMouseDown: function() {
if (!this._focused) {
var i = e.body,
n = e.documentElement,
o = i.scrollTop || n.scrollTop,
s = i.scrollLeft || n.scrollLeft
this._map._container.focus(), t.scrollTo(s, o)
}
},
_onFocus: function() {
;(this._focused = !0), this._map.fire('focus')
},
_onBlur: function() {
;(this._focused = !1), this._map.fire('blur')
},
_setPanOffset: function(t) {
var e,
i,
n = (this._panKeys = {}),
o = this.keyCodes
for (e = 0, i = o.left.length; i > e; e++)
n[o.left[e]] = [-1 * t, 0]
for (e = 0, i = o.right.length; i > e; e++) n[o.right[e]] = [t, 0]
for (e = 0, i = o.down.length; i > e; e++) n[o.down[e]] = [0, t]
for (e = 0, i = o.up.length; i > e; e++) n[o.up[e]] = [0, -1 * t]
},
_setZoomOffset: function(t) {
var e,
i,
n = (this._zoomKeys = {}),
o = this.keyCodes
for (e = 0, i = o.zoomIn.length; i > e; e++) n[o.zoomIn[e]] = t
for (e = 0, i = o.zoomOut.length; i > e; e++) n[o.zoomOut[e]] = -t
},
_addHooks: function() {
o.DomEvent.on(e, 'keydown', this._onKeyDown, this)
},
_removeHooks: function() {
o.DomEvent.off(e, 'keydown', this._onKeyDown, this)
},
_onKeyDown: function(t) {
var e = t.keyCode,
i = this._map
if (e in this._panKeys) {
if (i._panAnim && i._panAnim._inProgress) return
i.panBy(this._panKeys[e]),
i.options.maxBounds && i.panInsideBounds(i.options.maxBounds)
} else {
if (!(e in this._zoomKeys)) return
i.setZoom(i.getZoom() + this._zoomKeys[e])
}
o.DomEvent.stop(t)
}
})),
o.Map.addInitHook('addHandler', 'keyboard', o.Map.Keyboard),
(o.Handler.MarkerDrag = o.Handler.extend({
initialize: function(t) {
this._marker = t
},
addHooks: function() {
var t = this._marker._icon
this._draggable || (this._draggable = new o.Draggable(t, t)),
this._draggable
.on('dragstart', this._onDragStart, this)
.on('drag', this._onDrag, this)
.on('dragend', this._onDragEnd, this),
this._draggable.enable(),
o.DomUtil.addClass(this._marker._icon, 'leaflet-marker-draggable')
},
removeHooks: function() {
this._draggable
.off('dragstart', this._onDragStart, this)
.off('drag', this._onDrag, this)
.off('dragend', this._onDragEnd, this),
this._draggable.disable(),
o.DomUtil.removeClass(
this._marker._icon,
'leaflet-marker-draggable'
)
},
moved: function() {
return this._draggable && this._draggable._moved
},
_onDragStart: function() {
this._marker
.closePopup()
.fire('movestart')
.fire('dragstart')
},
_onDrag: function() {
var t = this._marker,
e = t._shadow,
i = o.DomUtil.getPosition(t._icon),
n = t._map.layerPointToLatLng(i)
e && o.DomUtil.setPosition(e, i),
(t._latlng = n),
t.fire('move', { latlng: n }).fire('drag')
},
_onDragEnd: function(t) {
this._marker.fire('moveend').fire('dragend', t)
}
})),
(o.Control = o.Class.extend({
options: { position: 'topright' },
initialize: function(t) {
o.setOptions(this, t)
},
getPosition: function() {
return this.options.position
},
setPosition: function(t) {
var e = this._map
return (
e && e.removeControl(this),
(this.options.position = t),
e && e.addControl(this),
this
)
},
getContainer: function() {
return this._container
},
addTo: function(t) {
this._map = t
var e = (this._container = this.onAdd(t)),
i = this.getPosition(),
n = t._controlCorners[i]
return (
o.DomUtil.addClass(e, 'leaflet-control'),
-1 !== i.indexOf('bottom')
? n.insertBefore(e, n.firstChild)
: n.appendChild(e),
this
)
},
removeFrom: function(t) {
var e = this.getPosition(),
i = t._controlCorners[e]
return (
i.removeChild(this._container),
(this._map = null),
this.onRemove && this.onRemove(t),
this
)
},
_refocusOnMap: function() {
this._map && this._map.getContainer().focus()
}
})),
(o.control = function(t) {
return new o.Control(t)
}),
o.Map.include({
addControl: function(t) {
return t.addTo(this), this
},
removeControl: function(t) {
return t.removeFrom(this), this
},
_initControlPos: function() {
function t(t, s) {
var a = i + t + ' ' + i + s
e[t + s] = o.DomUtil.create('div', a, n)
}
var e = (this._controlCorners = {}),
i = 'leaflet-',
n = (this._controlContainer = o.DomUtil.create(
'div',
i + 'control-container',
this._container
))
t('top', 'left'),
t('top', 'right'),
t('bottom', 'left'),
t('bottom', 'right')
},
_clearControlPos: function() {
this._container.removeChild(this._controlContainer)
}
}),
(o.Control.Zoom = o.Control.extend({
options: {
position: 'topleft',
zoomInText: '+',
zoomInTitle: '放大',
zoomOutText: '-',
zoomOutTitle: '缩小'
},
onAdd: function(t) {
var e = 'leaflet-control-zoom',
i = o.DomUtil.create('div', e + ' leaflet-bar')
return (
(this._map = t),
(this._zoomInButton = this._createButton(
this.options.zoomInText,
this.options.zoomInTitle,
e + '-in',
i,
this._zoomIn,
this
)),
(this._zoomOutButton = this._createButton(
this.options.zoomOutText,
this.options.zoomOutTitle,
e + '-out',
i,
this._zoomOut,
this
)),
this._updateDisabled(),
t.on('zoomend zoomlevelschange', this._updateDisabled, this),
i
)
},
onRemove: function(t) {
t.off('zoomend zoomlevelschange', this._updateDisabled, this)
},
_zoomIn: function(t) {
this._map.zoomIn(t.shiftKey ? 3 : 1)
},
_zoomOut: function(t) {
this._map.zoomOut(t.shiftKey ? 3 : 1)
},
_createButton: function(t, e, i, n, s, a) {
var r = o.DomUtil.create('a', i, n)
;(r.innerHTML = t), (r.href = '#'), (r.title = e)
var h = o.DomEvent.stopPropagation
return (
o.DomEvent.on(r, 'click', h)
.on(r, 'mousedown', h)
.on(r, 'dblclick', h)
.on(r, 'click', o.DomEvent.preventDefault)
.on(r, 'click', s, a)
.on(r, 'click', this._refocusOnMap, a),
r
)
},
_updateDisabled: function() {
var t = this._map,
e = 'leaflet-disabled'
o.DomUtil.removeClass(this._zoomInButton, e),
o.DomUtil.removeClass(this._zoomOutButton, e),
t._zoom === t.getMinZoom() &&
o.DomUtil.addClass(this._zoomOutButton, e),
t._zoom === t.getMaxZoom() &&
o.DomUtil.addClass(this._zoomInButton, e)
}
})),
o.Map.mergeOptions({ zoomControl: !0 }),
o.Map.addInitHook(function() {
this.options.zoomControl &&
((this.zoomControl = new o.Control.Zoom()),
this.addControl(this.zoomControl))
}),
(o.control.zoom = function(t) {
return new o.Control.Zoom(t)
}),
(o.Control.Attribution = o.Control.extend({
options: {
position: 'bottomright',
prefix:
'<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'
},
initialize: function(t) {
o.setOptions(this, t), (this._attributions = {})
},
onAdd: function(t) {
;(this._container = o.DomUtil.create(
'div',
'leaflet-control-attribution'
)),
o.DomEvent.disableClickPropagation(this._container)
for (var e in t._layers)
t._layers[e].getAttribution &&
this.addAttribution(t._layers[e].getAttribution())
return (
t
.on('layeradd', this._onLayerAdd, this)
.on('layerremove', this._onLayerRemove, this),
this._update(),
this._container
)
},
onRemove: function(t) {
t.off('layeradd', this._onLayerAdd).off(
'layerremove',
this._onLayerRemove
)
},
setPrefix: function(t) {
return (this.options.prefix = t), this._update(), this
},
addAttribution: function(t) {
return t
? (this._attributions[t] || (this._attributions[t] = 0),
this._attributions[t]++,
this._update(),
this)
: void 0
},
removeAttribution: function(t) {
return t
? (this._attributions[t] &&
(this._attributions[t]--, this._update()),
this)
: void 0
},
_update: function() {
if (this._map) {
var t = []
for (var e in this._attributions)
this._attributions[e] && t.push(e)
var i = []
this.options.prefix && i.push(this.options.prefix),
t.length && i.push(t.join(', ')),
(this._container.innerHTML = i.join(' | '))
}
},
_onLayerAdd: function(t) {
t.layer.getAttribution &&
this.addAttribution(t.layer.getAttribution())
},
_onLayerRemove: function(t) {
t.layer.getAttribution &&
this.removeAttribution(t.layer.getAttribution())
}
})),
o.Map.mergeOptions({ attributionControl: !0 }),
o.Map.addInitHook(function() {
this.options.attributionControl &&
(this.attributionControl = new o.Control.Attribution().addTo(this))
}),
(o.control.attribution = function(t) {
return new o.Control.Attribution(t)
}),
(o.Control.Scale = o.Control.extend({
options: {
position: 'bottomleft',
maxWidth: 100,
metric: !0,
imperial: !0,
updateWhenIdle: !1
},
onAdd: function(t) {
this._map = t
var e = 'leaflet-control-scale',
i = o.DomUtil.create('div', e),
n = this.options
return (
this._addScales(n, e, i),
t.on(n.updateWhenIdle ? 'moveend' : 'move', this._update, this),
t.whenReady(this._update, this),
i
)
},
onRemove: function(t) {
t.off(
this.options.updateWhenIdle ? 'moveend' : 'move',
this._update,
this
)
},
_addScales: function(t, e, i) {
t.metric &&
(this._mScale = o.DomUtil.create('div', e + '-line', i)),
t.imperial &&
(this._iScale = o.DomUtil.create('div', e + '-line', i))
},
_update: function() {
var t = this._map.getBounds(),
e = t.getCenter().lat,
i = 6378137 * Math.PI * Math.cos((e * Math.PI) / 180),
n = (i * (t.getNorthEast().lng - t.getSouthWest().lng)) / 180,
o = this._map.getSize(),
s = this.options,
a = 0
o.x > 0 && (a = n * (s.maxWidth / o.x)), this._updateScales(s, a)
},
_updateScales: function(t, e) {
t.metric && e && this._updateMetric(e),
t.imperial && e && this._updateImperial(e)
},
_updateMetric: function(t) {
var e = this._getRoundNum(t)
;(this._mScale.style.width = this._getScaleWidth(e / t) + 'px'),
(this._mScale.innerHTML = 1e3 > e ? e + ' m' : e / 1e3 + ' km')
},
_updateImperial: function(t) {
var e,
i,
n,
o = 3.2808399 * t,
s = this._iScale
o > 5280
? ((e = o / 5280),
(i = this._getRoundNum(e)),
(s.style.width = this._getScaleWidth(i / e) + 'px'),
(s.innerHTML = i + ' mi'))
: ((n = this._getRoundNum(o)),
(s.style.width = this._getScaleWidth(n / o) + 'px'),
(s.innerHTML = n + ' ft'))
},
_getScaleWidth: function(t) {
return Math.round(this.options.maxWidth * t) - 10
},
_getRoundNum: function(t) {
var e = Math.pow(10, (Math.floor(t) + '').length - 1),
i = t / e
return (
(i = i >= 10 ? 10 : i >= 5 ? 5 : i >= 3 ? 3 : i >= 2 ? 2 : 1),
e * i
)
}
})),
(o.control.scale = function(t) {
return new o.Control.Scale(t)
}),
(o.Control.Layers = o.Control.extend({
options: { collapsed: !0, position: 'topright', autoZIndex: !0 },
initialize: function(t, e, i) {
o.setOptions(this, i),
(this._layers = {}),
(this._lastZIndex = 0),
(this._handlingClick = !1)
for (var n in t) this._addLayer(t[n], n)
for (n in e) this._addLayer(e[n], n, !0)
},
onAdd: function(t) {
return (
this._initLayout(),
this._update(),
t
.on('layeradd', this._onLayerChange, this)
.on('layerremove', this._onLayerChange, this),
this._container
)
},
onRemove: function(t) {
t.off('layeradd', this._onLayerChange, this).off(
'layerremove',
this._onLayerChange,
this
)
},
addBaseLayer: function(t, e) {
return this._addLayer(t, e), this._update(), this
},
addOverlay: function(t, e) {
return this._addLayer(t, e, !0), this._update(), this
},
removeLayer: function(t) {
var e = o.stamp(t)
return delete this._layers[e], this._update(), this
},
_initLayout: function() {
var t = 'leaflet-control-layers',
e = (this._container = o.DomUtil.create('div', t))
e.setAttribute('aria-haspopup', !0),
o.Browser.touch
? o.DomEvent.on(e, 'click', o.DomEvent.stopPropagation)
: o.DomEvent.disableClickPropagation(
e
).disableScrollPropagation(e)
var i = (this._form = o.DomUtil.create('form', t + '-list'))
if (this.options.collapsed) {
o.Browser.android ||
o.DomEvent.on(e, 'mouseover', this._expand, this).on(
e,
'mouseout',
this._collapse,
this
)
var n = (this._layersLink = o.DomUtil.create(
'a',
t + '-toggle',
e
))
;(n.href = '#'),
(n.title = 'Layers'),
o.Browser.touch
? o.DomEvent.on(n, 'click', o.DomEvent.stop).on(
n,
'click',
this._expand,
this
)
: o.DomEvent.on(n, 'focus', this._expand, this),
o.DomEvent.on(
i,
'click',
function() {
setTimeout(o.bind(this._onInputClick, this), 0)
},
this
),
this._map.on('click', this._collapse, this)
} else this._expand()
;(this._baseLayersList = o.DomUtil.create('div', t + '-base', i)),
(this._separator = o.DomUtil.create('div', t + '-separator', i)),
(this._overlaysList = o.DomUtil.create(
'div',
t + '-overlays',
i
)),
e.appendChild(i)
},
_addLayer: function(t, e, i) {
var n = o.stamp(t)
;(this._layers[n] = {
layer: t,
name: e,
overlay: i
}),
this.options.autoZIndex &&
t.setZIndex &&
(this._lastZIndex++, t.setZIndex(this._lastZIndex))
},
_update: function() {
if (this._container) {
;(this._baseLayersList.innerHTML = ''),
(this._overlaysList.innerHTML = '')
var t,
e,
i = !1,
n = !1
for (t in this._layers)
(e = this._layers[t]),
this._addItem(e),
(n = n || e.overlay),
(i = i || !e.overlay)
this._separator.style.display = n && i ? '' : 'none'
}
},
_onLayerChange: function(t) {
var e = this._layers[o.stamp(t.layer)]
if (e) {
this._handlingClick || this._update()
var i = e.overlay
? 'layeradd' === t.type
? 'overlayadd'
: 'overlayremove'
: 'layeradd' === t.type
? 'baselayerchange'
: null
i && this._map.fire(i, e)
}
},
_createRadioElement: function(t, i) {
var n =
'<input type="radio" class="leaflet-control-layers-selector" name="' +
t +
'"'
i && (n += ' checked="checked"'), (n += '/>')
var o = e.createElement('div')
return (o.innerHTML = n), o.firstChild
},
_addItem: function(t) {
var i,
n = e.createElement('label'),
s = this._map.hasLayer(t.layer)
t.overlay
? ((i = e.createElement('input')),
(i.type = 'checkbox'),
(i.className = 'leaflet-control-layers-selector'),
(i.defaultChecked = s))
: (i = this._createRadioElement('leaflet-base-layers', s)),
(i.layerId = o.stamp(t.layer)),
o.DomEvent.on(i, 'click', this._onInputClick, this)
var a = e.createElement('span')
;(a.innerHTML = ' ' + t.name), n.appendChild(i), n.appendChild(a)
var r = t.overlay ? this._overlaysList : this._baseLayersList
return r.appendChild(n), n
},
_onInputClick: function() {
var t,
e,
i,
n = this._form.getElementsByTagName('input'),
o = n.length
for (this._handlingClick = !0, t = 0; o > t; t++)
(e = n[t]),
(i = this._layers[e.layerId]),
e.checked && !this._map.hasLayer(i.layer)
? this._map.addLayer(i.layer)
: !e.checked &&
this._map.hasLayer(i.layer) &&
this._map.removeLayer(i.layer)
;(this._handlingClick = !1), this._refocusOnMap()
},
_expand: function() {
o.DomUtil.addClass(
this._container,
'leaflet-control-layers-expanded'
)
},
_collapse: function() {
this._container.className = this._container.className.replace(
' leaflet-control-layers-expanded',
''
)
}
})),
(o.control.layers = function(t, e, i) {
return new o.Control.Layers(t, e, i)
}),
(o.PosAnimation = o.Class.extend({
includes: o.Mixin.Events,
run: function(t, e, i, n) {
this.stop(),
(this._el = t),
(this._inProgress = !0),
(this._newPos = e),
this.fire('start'),
(t.style[o.DomUtil.TRANSITION] =
'all ' +
(i || 0.25) +
's cubic-bezier(0,0,' +
(n || 0.5) +
',1)'),
o.DomEvent.on(
t,
o.DomUtil.TRANSITION_END,
this._onTransitionEnd,
this
),
o.DomUtil.setPosition(t, e),
o.Util.falseFn(t.offsetWidth),
(this._stepTimer = setInterval(o.bind(this._onStep, this), 50))
},
stop: function() {
this._inProgress &&
(o.DomUtil.setPosition(this._el, this._getPos()),
this._onTransitionEnd(),
o.Util.falseFn(this._el.offsetWidth))
},
_onStep: function() {
var t = this._getPos()
return t
? ((this._el._leaflet_pos = t), void this.fire('step'))
: void this._onTransitionEnd()
},
_transformRe: /([-+]?(?:\d*\.)?\d+)\D*, ([-+]?(?:\d*\.)?\d+)\D*\)/,
_getPos: function() {
var e,
i,
n,
s = this._el,
a = t.getComputedStyle(s)
if (o.Browser.any3d) {
if (((n = a[o.DomUtil.TRANSFORM].match(this._transformRe)), !n))
return
;(e = parseFloat(n[1])), (i = parseFloat(n[2]))
} else (e = parseFloat(a.left)), (i = parseFloat(a.top))
return new o.Point(e, i, !0)
},
_onTransitionEnd: function() {
o.DomEvent.off(
this._el,
o.DomUtil.TRANSITION_END,
this._onTransitionEnd,
this
),
this._inProgress &&
((this._inProgress = !1),
(this._el.style[o.DomUtil.TRANSITION] = ''),
(this._el._leaflet_pos = this._newPos),
clearInterval(this._stepTimer),
this.fire('step').fire('end'))
}
})),
o.Map.include({
setView: function(t, e, n) {
if (
((e = e === i ? this._zoom : this._limitZoom(e)),
(t = this._limitCenter(o.latLng(t), e, this.options.maxBounds)),
(n = n || {}),
this._panAnim && this._panAnim.stop(),
this._loaded && !n.reset && n !== !0)
) {
n.animate !== i &&
((n.zoom = o.extend({ animate: n.animate }, n.zoom)),
(n.pan = o.extend({ animate: n.animate }, n.pan)))
var s =
this._zoom !== e
? this._tryAnimatedZoom && this._tryAnimatedZoom(t, e, n.zoom)
: this._tryAnimatedPan(t, n.pan)
if (s) return clearTimeout(this._sizeTimer), this
}
return this._resetView(t, e), this
},
panBy: function(t, e) {
if (((t = o.point(t).round()), (e = e || {}), !t.x && !t.y))
return this
if (
(this._panAnim ||
((this._panAnim = new o.PosAnimation()),
this._panAnim.on(
{
step: this._onPanTransitionStep,
end: this._onPanTransitionEnd
},
this
)),
e.noMoveStart || this.fire('movestart'),
e.animate !== !1)
) {
o.DomUtil.addClass(this._mapPane, 'leaflet-pan-anim')
var i = this._getMapPanePos().subtract(t)
this._panAnim.run(
this._mapPane,
i,
e.duration || 0.25,
e.easeLinearity
)
} else this._rawPanBy(t), this.fire('move').fire('moveend')
return this
},
_onPanTransitionStep: function() {
this.fire('move')
},
_onPanTransitionEnd: function() {
o.DomUtil.removeClass(this._mapPane, 'leaflet-pan-anim'),
this.fire('moveend')
},
_tryAnimatedPan: function(t, e) {
var i = this._getCenterOffset(t)._floor()
return (e && e.animate) === !0 || this.getSize().contains(i)
? (this.panBy(i, e), !0)
: !1
}
}),
(o.PosAnimation = o.DomUtil.TRANSITION
? o.PosAnimation
: o.PosAnimation.extend({
run: function(t, e, i, n) {
this.stop(),
(this._el = t),
(this._inProgress = !0),
(this._duration = i || 0.25),
(this._easeOutPower = 1 / Math.max(n || 0.5, 0.2)),
(this._startPos = o.DomUtil.getPosition(t)),
(this._offset = e.subtract(this._startPos)),
(this._startTime = +new Date()),
this.fire('start'),
this._animate()
},
stop: function() {
this._inProgress && (this._step(), this._complete())
},
_animate: function() {
;(this._animId = o.Util.requestAnimFrame(this._animate, this)),
this._step()
},
_step: function() {
var t = +new Date() - this._startTime,
e = 1e3 * this._duration
e > t
? this._runFrame(this._easeOut(t / e))
: (this._runFrame(1), this._complete())
},
_runFrame: function(t) {
var e = this._startPos.add(this._offset.multiplyBy(t))
o.DomUtil.setPosition(this._el, e), this.fire('step')
},
_complete: function() {
o.Util.cancelAnimFrame(this._animId),
(this._inProgress = !1),
this.fire('end')
},
_easeOut: function(t) {
return 1 - Math.pow(1 - t, this._easeOutPower)
}
})),
o.Map.mergeOptions({
zoomAnimation: !0,
zoomAnimationThreshold: 4
}),
o.DomUtil.TRANSITION &&
o.Map.addInitHook(function() {
;(this._zoomAnimated =
this.options.zoomAnimation &&
o.DomUtil.TRANSITION &&
o.Browser.any3d &&
!o.Browser.android23 &&
!o.Browser.mobileOpera),
this._zoomAnimated &&
o.DomEvent.on(
this._mapPane,
o.DomUtil.TRANSITION_END,
this._catchTransitionEnd,
this
)
}),
o.Map.include(
o.DomUtil.TRANSITION
? {
_catchTransitionEnd: function(t) {
this._animatingZoom &&
t.propertyName.indexOf('transform') >= 0 &&
this._onZoomTransitionEnd()
},
_nothingToAnimate: function() {
return !this._container.getElementsByClassName(
'leaflet-zoom-animated'
).length
},
_tryAnimatedZoom: function(t, e, i) {
if (this._animatingZoom) return !0
if (
((i = i || {}),
!this._zoomAnimated ||
i.animate === !1 ||
this._nothingToAnimate() ||
Math.abs(e - this._zoom) >
this.options.zoomAnimationThreshold)
)
return !1
var n = this.getZoomScale(e),
o = this._getCenterOffset(t)._divideBy(1 - 1 / n),
s = this._getCenterLayerPoint()._add(o)
return i.animate === !0 || this.getSize().contains(o)
? (this.fire('movestart').fire('zoomstart'),
this._animateZoom(t, e, s, n, null, !0),
!0)
: !1
},
_animateZoom: function(t, e, i, n, s, a, r) {
r || (this._animatingZoom = !0),
o.DomUtil.addClass(this._mapPane, 'leaflet-zoom-anim'),
(this._animateToCenter = t),
(this._animateToZoom = e),
o.Draggable && (o.Draggable._disabled = !0),
o.Util.requestAnimFrame(function() {
this.fire('zoomanim', {
center: t,
zoom: e,
origin: i,
scale: n,
delta: s,
backwards: a
}),
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],
s = o.DomUtil.getScaleString(t.scale, t.origin)
e.style[i] = t.backwards ? s + ' ' + n : n + ' ' + s
},
_endZoomAnim: function() {
var t = this._tileContainer,
e = this._bgBuffer
;(t.style.visibility = ''),
t.parentNode.appendChild(t),
o.Util.falseFn(e.offsetWidth)
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 > 0.5 && 0.5 > n
? ((t.style.visibility = 'hidden'),
void this._stopLoadingImages(t))
: ((e.style.visibility = 'hidden'),
(e.style[o.DomUtil.TRANSFORM] = ''),
(this._tileContainer = e),
(e = this._bgBuffer = t),
this._stopLoadingImages(e),
void clearTimeout(this._clearBgBufferTimer))
},
_getLoadedTilesPercentage: function(t) {
var e,
i,
n = t.getElementsByTagName('img'),
o = 0
for (e = 0, i = n.length; i > e; e++) n[e].complete && o++
return o / i
},
_stopLoadingImages: function(t) {
var e,
i,
n,
s = Array.prototype.slice.call(t.getElementsByTagName('img'))
for (e = 0, i = s.length; i > e; e++)
(n = s[e]),
n.complete ||
((n.onload = o.Util.falseFn),
(n.onerror = o.Util.falseFn),
(n.src = o.Util.emptyImageUrl),
n.parentNode.removeChild(n))
}
}),
o.Map.include({
_defaultLocateOptions: {
watch: !1,
setView: !1,
maxZoom: 1 / 0,
timeout: 1e4,
maximumAge: 0,
enableHighAccuracy: !1
},
locate: function(t) {
if (
((t = this._locateOptions = o.extend(
this._defaultLocateOptions,
t
)),
!navigator.geolocation)
)
return (
this._handleGeolocationError({
code: 0,
message: 'Geolocation not supported.'
}),
this
)
var e = o.bind(this._handleGeolocationResponse, this),
i = o.bind(this._handleGeolocationError, this)
return (
t.watch
? (this._locationWatchId = navigator.geolocation.watchPosition(
e,
i,
t
))
: navigator.geolocation.getCurrentPosition(e, i, t),
this
)
},
stopLocate: function() {
return (
navigator.geolocation &&
navigator.geolocation.clearWatch(this._locationWatchId),
this._locateOptions && (this._locateOptions.setView = !1),
this
)
},
_handleGeolocationError: function(t) {
var e = t.code,
i =
t.message ||
(1 === e
? 'permission denied'
: 2 === e
? 'position unavailable'
: 'timeout')
this._locateOptions.setView && !this._loaded && this.fitWorld(),
this.fire('locationerror', {
code: e,
message: 'Geolocation error: ' + i + '.'
})
},
_handleGeolocationResponse: function(t) {
var e = t.coords.latitude,
i = t.coords.longitude,
n = new o.LatLng(e, i),
s = (180 * t.coords.accuracy) / 40075017,
a = s / Math.cos(o.LatLng.DEG_TO_RAD * e),
r = o.latLngBounds([e - s, i - a], [e + s, i + a]),
h = this._locateOptions
if (h.setView) {
var l = Math.min(this.getBoundsZoom(r), h.maxZoom)
this.setView(n, l)
}
var u = { latlng: n, bounds: r, timestamp: t.timestamp }
for (var c in t.coords)
'number' == typeof t.coords[c] && (u[c] = t.coords[c])
this.fire('locationfound', u)
}
})
})(window, document)
define('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(
defined,
DeveloperError,
EllipsoidGeodesic,
Cartesian2,
getTimestamp,
EventHelper,
Knockout,
loadView,
leaflet
) {
'use strict'
var DistanceLegendViewModel = function(options) {
if (!defined(options) || !defined(options.terria)) {
throw new DeveloperError('options.terria is required.')
}
this.terria = options.terria
this._removeSubscription = undefined
this._lastLegendUpdate = undefined
this.eventHelper = new EventHelper()
this.distanceLabel = undefined
this.barWidth = undefined
Knockout.track(this, ['distanceLabel', 'barWidth'])
this.eventHelper.add(
this.terria.afterWidgetChanged,
function() {
if (defined(this._removeSubscription)) {
this._removeSubscription()
this._removeSubscription = undefined
}
},
this
)
var that = this
function addUpdateSubscription() {
if (defined(that.terria)) {
var scene = that.terria.scene
that._removeSubscription = scene.postRender.addEventListener(
function() {
updateDistanceLegendCesium(this, scene)
},
that
)
} else if (defined(that.terria.leaflet)) {
var map = that.terria.leaflet.map
var potentialChangeCallback = function potentialChangeCallback() {
updateDistanceLegendLeaflet(that, map)
}
that._removeSubscription = function() {
map.off('zoomend', potentialChangeCallback)
map.off('moveend', potentialChangeCallback)
}
map.on('zoomend', potentialChangeCallback)
map.on('moveend', potentialChangeCallback)
updateDistanceLegendLeaflet(that, map)
}
}
addUpdateSubscription()
this.eventHelper.add(
this.terria.afterWidgetChanged,
function() {
addUpdateSubscription()
},
this
)
}
DistanceLegendViewModel.prototype.destroy = function() {
this.eventHelper.removeAll()
}
DistanceLegendViewModel.prototype.show = function(container) {
var testing =
'<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>'
loadView(testing, container, this)
}
DistanceLegendViewModel.create = function(options) {
var result = new DistanceLegendViewModel(options)
result.show(options.container)
return result
}
var geodesic = new EllipsoidGeodesic()
var distances = [
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
]
function updateDistanceLegendCesium(viewModel, scene) {
var now = getTimestamp()
if (now < viewModel._lastLegendUpdate + 250) {
return
}
viewModel._lastLegendUpdate = now
var width = scene.canvas.clientWidth
var height = scene.canvas.clientHeight
var left = scene.camera.getPickRay(
new Cartesian2((width / 2) | 0, height - 1)
)
var right = scene.camera.getPickRay(
new Cartesian2((1 + width / 2) | 0, height - 1)
)
var globe = scene.globe
var leftPosition = globe.pick(left, scene)
var rightPosition = globe.pick(right, scene)
if (!defined(leftPosition) || !defined(rightPosition)) {
viewModel.barWidth = undefined
viewModel.distanceLabel = undefined
return
}
var leftCartographic = globe.ellipsoid.cartesianToCartographic(
leftPosition
)
var rightCartographic = globe.ellipsoid.cartesianToCartographic(
rightPosition
)
geodesic.setEndPoints(leftCartographic, rightCartographic)
var pixelDistance = geodesic.surfaceDistance
var maxBarWidth = 100
var distance
for (var i = distances.length - 1; !defined(distance) && i >= 0; --i) {
if (distances[i] / pixelDistance < maxBarWidth) {
distance = distances[i]
}
}
if (defined(distance)) {
var label
if (distance >= 1e3) {
label = (distance / 1e3).toString() + ' km'
} else {
label = distance.toString() + ' m'
}
viewModel.barWidth = (distance / pixelDistance) | 0
viewModel.distanceLabel = label
} else {
viewModel.barWidth = undefined
viewModel.distanceLabel = undefined
}
}
function updateDistanceLegendLeaflet(viewModel, map) {
var halfHeight = map.getSize().y / 2
var maxPixelWidth = 100
var maxMeters = map
.containerPointToLatLng([0, halfHeight])
.distanceTo(map.containerPointToLatLng([maxPixelWidth, halfHeight]))
var meters = leaflet.control.scale()._getRoundNum(maxMeters)
var label = meters < 1e3 ? meters + ' m' : meters / 1e3 + ' km'
viewModel.barWidth = (meters / maxMeters) * maxPixelWidth
viewModel.distanceLabel = label
}
return DistanceLegendViewModel
})
define('ViewModels/UserInterfaceControl', [
'Cesium/Core/defined',
'Cesium/Core/defineProperties',
'Cesium/Core/DeveloperError',
'KnockoutES5'
], function(defined, defineProperties, DeveloperError, Knockout) {
'use strict'
var UserInterfaceControl = function(terria) {
if (!defined(terria)) {
throw new DeveloperError('terria is required')
}
this._terria = terria
this.name = 'Unnamed Control'
this.text = undefined
this.svgIcon = undefined
this.svgHeight = undefined
this.svgWidth = undefined
this.cssClass = undefined
this.isActive = false
Knockout.track(this, [
'name',
'svgIcon',
'svgHeight',
'svgWidth',
'cssClass',
'isActive'
])
}
Object.defineProperties(UserInterfaceControl.prototype, {
terria: {
get: function() {
return this._terria
}
},
hasText: {
get: function() {
return defined(this.text) && typeof this.text === 'string'
}
}
})
UserInterfaceControl.prototype.activate = function() {
throw new DeveloperError(
'activate must be implemented in the derived class.'
)
}
return UserInterfaceControl
})
define('ViewModels/NavigationControl', [
'ViewModels/UserInterfaceControl'
], function(UserInterfaceControl) {
'use strict'
var NavigationControl = function(terria) {
UserInterfaceControl.apply(this, arguments)
}
NavigationControl.prototype = Object.create(
UserInterfaceControl.prototype
)
return NavigationControl
})
define('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'
})
define('ViewModels/ResetViewNavigationControl', [
'Cesium/Core/defined',
'Cesium/Scene/Camera',
'Cesium/Core/Rectangle',
'Cesium/Core/Cartographic',
'ViewModels/NavigationControl',
'SvgPaths/svgReset'
], function(
defined,
Camera,
Rectangle,
Cartographic,
NavigationControl,
svgReset
) {
'use strict'
var ResetViewNavigationControl = function(terria) {
NavigationControl.apply(this, arguments)
this.name = '重置'
this.svgIcon = svgReset
this.svgHeight = 15
this.svgWidth = 15
this.cssClass = 'navigation-control-icon-reset'
}
ResetViewNavigationControl.prototype = Object.create(
NavigationControl.prototype
)
ResetViewNavigationControl.prototype.resetView = function() {
var scene = this.terria.scene
var sscc = scene.screenSpaceCameraController
if (!sscc.enableInputs) {
return
}
this.isActive = true
var camera = scene.camera
if (defined(this.terria.trackedEntity)) {
var trackedEntity = this.terria.trackedEntity
this.terria.trackedEntity = undefined
this.terria.trackedEntity = trackedEntity
} else {
if (this.terria.options && this.terria.options.defaultResetView) {
if (
this.terria.options.defaultResetView &&
this.terria.options.defaultResetView instanceof Cartographic
) {
camera.flyTo({
destination: scene.globe.ellipsoid.cartographicToCartesian(
this.terria.options.defaultResetView
)
})
} else if (
this.terria.options.defaultResetView &&
this.terria.options.defaultResetView instanceof Rectangle
) {
try {
Rectangle.validate(this.terria.options.defaultResetView)
camera.flyTo({
destination: this.terria.options.defaultResetView
})
} catch (e) {
console.log(
'Cesium-navigation/ResetViewNavigationControl: options.defaultResetView Cesium rectangle is invalid!'
)
}
}
// } else if (this.terria.CAMERA_DEFAULT_VIEW_RECTANGLE) {
// let destination = this.terria.CAMERA_DEFAULT_VIEW_RECTANGLE.destination
// let orientation = this.terria.CAMERA_DEFAULT_VIEW_RECTANGLE.orientation
// camera.flyTo({
// destination: Cesium.Cartesian3.fromDegrees(destination.lng, destination.lat, destination.alt),
// orientation: {
// heading: Cesium.Math.toRadians(orientation.heading || 0),
// pitch: Cesium.Math.toRadians(orientation.pitch || 0),
// roll: Cesium.Math.toRadians(orientation.roll || 0)
// },
// duration: 1
// })
} else if (typeof camera.flyHome === 'function') {
camera.flyHome(1)
} else {
camera.flyTo({
destination: Camera.DEFAULT_VIEW_RECTANGLE,
duration: 1
})
}
}
this.isActive = false
}
ResetViewNavigationControl.prototype.activate = function() {
this.resetView()
}
return ResetViewNavigationControl
})
define('Core/Utils', [
'Cesium/Core/defined',
'Cesium/Core/Ray',
'Cesium/Core/Cartesian3',
'Cesium/Core/Cartographic',
'Cesium/Core/ReferenceFrame',
'Cesium/Scene/SceneMode'
], function(
defined,
Ray,
Cartesian3,
Cartographic,
ReferenceFrame,
SceneMode
) {
'use strict'
var Utils = {}
var unprojectedScratch = new Cartographic()
var rayScratch = new Ray()
Utils.getCameraFocus = function(terria, inWorldCoordinates, result) {
var scene = terria.scene
var camera = scene.camera
if (scene.mode == SceneMode.MORPHING) {
return undefined
}
if (!defined(result)) {
result = new Cartesian3()
}
if (defined(terria.trackedEntity)) {
result = terria.trackedEntity.position.getValue(
terria.clock.currentTime,
result
)
} else {
rayScratch.origin = camera.positionWC
rayScratch.direction = camera.directionWC
result = scene.globe.pick(rayScratch, scene, result)
}
if (!defined(result)) {
return undefined
}
if (
scene.mode == SceneMode.SCENE2D ||
scene.mode == SceneMode.COLUMBUS_VIEW
) {
result = camera.worldToCameraCoordinatesPoint(result, result)
if (inWorldCoordinates) {
result = scene.globe.ellipsoid.cartographicToCartesian(
scene.mapProjection.unproject(result, unprojectedScratch),
result
)
}
} else {
if (!inWorldCoordinates) {
result = camera.worldToCameraCoordinatesPoint(result, result)
}
}
return result
}
return Utils
})
define('ViewModels/ZoomNavigationControl', [
'Cesium/Core/defined',
'Cesium/Core/Ray',
'Cesium/Core/IntersectionTests',
'Cesium/Core/Cartesian3',
'Cesium/Scene/SceneMode',
'ViewModels/NavigationControl',
'Core/Utils'
], function(
defined,
Ray,
IntersectionTests,
Cartesian3,
SceneMode,
NavigationControl,
Utils
) {
'use strict'
var ZoomNavigationControl = function(terria, zoomIn) {
NavigationControl.apply(this, arguments)
this.name = zoomIn
this.text = zoomIn == '放大' ? '+' : '-'
this.cssClass =
'navigation-control-icon-zoom-' + (zoomIn == '缩小' ? 'in' : 'out')
this.relativeAmount = 2
if (zoomIn == '放大') {
this.relativeAmount = 1 / this.relativeAmount
}
}
ZoomNavigationControl.prototype.relativeAmount = 1
ZoomNavigationControl.prototype = Object.create(
NavigationControl.prototype
)
ZoomNavigationControl.prototype.activate = function() {
this.zoom(this.relativeAmount)
}
var cartesian3Scratch = new Cartesian3()
ZoomNavigationControl.prototype.zoom = function(relativeAmount) {
this.isActive = true
if (defined(this.terria)) {
var scene = this.terria.scene
var sscc = scene.screenSpaceCameraController
if (!sscc.enableInputs || !sscc.enableZoom) {
return
}
var camera = scene.camera
var orientation
switch (scene.mode) {
case SceneMode.MORPHING:
break
case SceneMode.SCENE2D:
camera.zoomIn(
camera.positionCartographic.height * (1 - this.relativeAmount)
)
break
default:
var focus
if (defined(this.terria.trackedEntity)) {
focus = new Cartesian3()
} else {
focus = Utils.getCameraFocus(this.terria, false)
}
if (!defined(focus)) {
var ray = new Ray(
camera.worldToCameraCoordinatesPoint(
scene.globe.ellipsoid.cartographicToCartesian(
camera.positionCartographic
)
),
camera.directionWC
)
focus = IntersectionTests.grazingAltitudeLocation(
ray,
scene.globe.ellipsoid
)
orientation = {
heading: camera.heading,
pitch: camera.pitch,
roll: camera.roll
}
} else {
orientation = { direction: camera.direction, up: camera.up }
}
var direction = Cartesian3.subtract(
camera.position,
focus,
cartesian3Scratch
)
var movementVector = Cartesian3.multiplyByScalar(
direction,
relativeAmount,
direction
)
var endPosition = Cartesian3.add(focus, movementVector, focus)
if (
defined(this.terria.trackedEntity) ||
scene.mode == SceneMode.COLUMBUS_VIEW
) {
camera.position = endPosition
} else {
camera.flyTo({
destination: endPosition,
orientation: orientation,
duration: 0.5,
convert: false
})
}
}
}
this.isActive = false
}
return ZoomNavigationControl
})
define('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'
})
define('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.15466
})
define('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'
})
define('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(
defined,
CesiumMath,
getTimestamp,
EventHelper,
Transforms,
SceneMode,
Cartesian2,
Cartesian3,
Matrix4,
BoundingSphere,
HeadingPitchRange,
Knockout,
loadView,
ResetViewNavigationControl,
ZoomNavigationControl,
svgCompassOuterRing,
svgCompassGyro,
svgCompassRotationMarker,
Utils
) {
'use strict'
var NavigationViewModel = function(options) {
this.terria = options.terria
this.eventHelper = new EventHelper()
this.controls = options.controls
if (!defined(this.controls)) {
this.controls = [
new ZoomNavigationControl(this.terria, '放大'),
new ResetViewNavigationControl(this.terria),
new ZoomNavigationControl(this.terria, '缩小')
]
}
this.svgCompassOuterRing = svgCompassOuterRing
this.svgCompassGyro = svgCompassGyro
this.svgCompassRotationMarker = svgCompassRotationMarker
this.showCompass = defined(this.terria)
this.heading = this.showCompass ? this.terria.scene.camera.heading : 0
this.isOrbiting = false
this.orbitCursorAngle = 0
this.orbitCursorOpacity = 0
this.orbitLastTimestamp = 0
this.orbitFrame = undefined
this.orbitIsLook = false
this.orbitMouseMoveFunction = undefined
this.orbitMouseUpFunction = undefined
this.isRotating = false
this.rotateInitialCursorAngle = undefined
this.rotateFrame = undefined
this.rotateIsLook = false
this.rotateMouseMoveFunction = undefined
this.rotateMouseUpFunction = undefined
this._unsubcribeFromPostRender = undefined
Knockout.track(this, [
'controls',
'showCompass',
'heading',
'isOrbiting',
'orbitCursorAngle',
'isRotating'
])
var that = this
function widgetChange() {
if (defined(that.terria)) {
if (that._unsubcribeFromPostRender) {
that._unsubcribeFromPostRender()
that._unsubcribeFromPostRender = undefined
}
that.showCompass = true
that._unsubcribeFromPostRender = that.terria.scene.postRender.addEventListener(
function() {
that.heading = that.terria.scene.camera.heading
}
)
} else {
if (that._unsubcribeFromPostRender) {
that._unsubcribeFromPostRender()
that._unsubcribeFromPostRender = undefined
}
that.showCompass = false
}
}
this.eventHelper.add(this.terria.afterWidgetChanged, widgetChange, this)
widgetChange()
}
NavigationViewModel.prototype.destroy = function() {
this.eventHelper.removeAll()
}
NavigationViewModel.prototype.show = function(container) {
var testing =
'<div class="compass" title="拖动外圈:旋转视图,' +
'拖动内陀螺仪:自由轨道,' +
'双击:重置视图,' +
'提示您还可以按住CTRL键并拖动地图来释放轨道." 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=\"单击并拖动以旋转相机\" 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>'
loadView(testing, container, this)
}
NavigationViewModel.prototype.add = function(control) {
this.controls.push(control)
}
NavigationViewModel.prototype.remove = function(control) {
this.controls.remove(control)
}
NavigationViewModel.prototype.isLastControl = function(control) {
return control === this.controls[this.controls.length - 1]
}
var vectorScratch = new Cartesian2()
NavigationViewModel.prototype.handleMouseDown = function(viewModel, e) {
var scene = this.terria.scene
if (scene.mode == SceneMode.MORPHING) {
return true
}
var compassElement = e.currentTarget
var compassRectangle = e.currentTarget.getBoundingClientRect()
var maxDistance = compassRectangle.width / 2
var center = new Cartesian2(
(compassRectangle.right - compassRectangle.left) / 2,
(compassRectangle.bottom - compassRectangle.top) / 2
)
var clickLocation = new Cartesian2(
e.clientX - compassRectangle.left,
e.clientY - compassRectangle.top
)
var vector = Cartesian2.subtract(clickLocation, center, vectorScratch)
var distanceFromCenter = Cartesian2.magnitude(vector)
var distanceFraction = distanceFromCenter / maxDistance
var nominalTotalRadius = 145
var norminalGyroRadius = 50
if (distanceFraction < norminalGyroRadius / nominalTotalRadius) {
orbit(this, compassElement, vector)
} else if (distanceFraction < 1) {
rotate(this, compassElement, vector)
} else {
return true
}
}
var oldTransformScratch = new Matrix4()
var newTransformScratch = new Matrix4()
var centerScratch = new Cartesian3()
NavigationViewModel.prototype.handleDoubleClick = function(viewModel, e) {
var scene = viewModel.terria.scene
var camera = scene.camera
var sscc = scene.screenSpaceCameraController
if (scene.mode == SceneMode.MORPHING || !sscc.enableInputs) {
return true
}
if (scene.mode == SceneMode.COLUMBUS_VIEW && !sscc.enableTranslate) {
return
}
if (
scene.mode == SceneMode.SCENE3D ||
scene.mode == SceneMode.COLUMBUS_VIEW
) {
if (!sscc.enableLook) {
return
}
if (scene.mode == SceneMode.SCENE3D) {
if (!sscc.enableRotate) {
return
}
}
}
var center = Utils.getCameraFocus(viewModel.terria, true, centerScratch)
if (!defined(center)) {
this.controls[1].resetView()
return
}
var cameraPosition = scene.globe.ellipsoid.cartographicToCartesian(
camera.positionCartographic,
new Cartesian3()
)
var surfaceNormal = scene.globe.ellipsoid.geodeticSurfaceNormal(center)
var focusBoundingSphere = new BoundingSphere(center, 0)
camera.flyToBoundingSphere(focusBoundingSphere, {
offset: new HeadingPitchRange(
0,
CesiumMath.PI_OVER_TWO -
Cartesian3.angleBetween(surfaceNormal, camera.directionWC),
Cartesian3.distance(cameraPosition, center)
),
duration: 1.5
})
}
NavigationViewModel.create = function(options) {
var result = new NavigationViewModel(options)
result.show(options.container)
return result
}
function orbit(viewModel, compassElement, cursorVector) {
var scene = viewModel.terria.scene
var sscc = scene.screenSpaceCameraController
if (scene.mode == SceneMode.MORPHING || !sscc.enableInputs) {
return
}
switch (scene.mode) {
case SceneMode.COLUMBUS_VIEW:
if (sscc.enableLook) {
break
}
if (!sscc.enableTranslate || !sscc.enableTilt) {
return
}
break
case SceneMode.SCENE3D:
if (sscc.enableLook) {
break
}
if (!sscc.enableTilt || !sscc.enableRotate) {
return
}
break
case SceneMode.SCENE2D:
if (!sscc.enableTranslate) {
return
}
break
}
document.removeEventListener(
'mousemove',
viewModel.orbitMouseMoveFunction,
false
)
document.removeEventListener(
'mouseup',
viewModel.orbitMouseUpFunction,
false
)
if (defined(viewModel.orbitTickFunction)) {
viewModel.terria.clock.onTick.removeEventListener(
viewModel.orbitTickFunction
)
}
viewModel.orbitMouseMoveFunction = undefined
viewModel.orbitMouseUpFunction = undefined
viewModel.orbitTickFunction = undefined
viewModel.isOrbiting = true
viewModel.orbitLastTimestamp = getTimestamp()
var camera = scene.camera
if (defined(viewModel.terria.trackedEntity)) {
viewModel.orbitFrame = undefined
viewModel.orbitIsLook = false
} else {
var center = Utils.getCameraFocus(
viewModel.terria,
true,
centerScratch
)
if (!defined(center)) {
viewModel.orbitFrame = Transforms.eastNorthUpToFixedFrame(
camera.positionWC,
scene.globe.ellipsoid,
newTransformScratch
)
viewModel.orbitIsLook = true
} else {
viewModel.orbitFrame = Transforms.eastNorthUpToFixedFrame(
center,
scene.globe.ellipsoid,
newTransformScratch
)
viewModel.orbitIsLook = false
}
}
viewModel.orbitTickFunction = function(e) {
var timestamp = getTimestamp()
var deltaT = timestamp - viewModel.orbitLastTimestamp
var rate = ((viewModel.orbitCursorOpacity - 0.5) * 2.5) / 1e3
var distance = deltaT * rate
var angle = viewModel.orbitCursorAngle + CesiumMath.PI_OVER_TWO
var x = Math.cos(angle) * distance
var y = Math.sin(angle) * distance
var oldTransform
if (defined(viewModel.orbitFrame)) {
oldTransform = Matrix4.clone(camera.transform, oldTransformScratch)
camera.lookAtTransform(viewModel.orbitFrame)
}
if (scene.mode == SceneMode.SCENE2D) {
camera.move(
new Cartesian3(x, y, 0),
(Math.max(scene.canvas.clientWidth, scene.canvas.clientHeight) /
100) *
camera.positionCartographic.height *
distance
)
} else {
if (viewModel.orbitIsLook) {
camera.look(Cartesian3.UNIT_Z, -x)
camera.look(camera.right, -y)
} else {
camera.rotateLeft(x)
camera.rotateUp(y)
}
}
if (defined(viewModel.orbitFrame)) {
camera.lookAtTransform(oldTransform)
}
viewModel.orbitLastTimestamp = timestamp
}
function updateAngleAndOpacity(vector, compassWidth) {
var angle = Math.atan2(-vector.y, vector.x)
viewModel.orbitCursorAngle = CesiumMath.zeroToTwoPi(
angle - CesiumMath.PI_OVER_TWO
)
var distance = Cartesian2.magnitude(vector)
var maxDistance = compassWidth / 2
var distanceFraction = Math.min(distance / maxDistance, 1)
var easedOpacity = 0.5 * distanceFraction * distanceFraction + 0.5
viewModel.orbitCursorOpacity = easedOpacity
}
viewModel.orbitMouseMoveFunction = function(e) {
var compassRectangle = compassElement.getBoundingClientRect()
var center = new Cartesian2(
(compassRectangle.right - compassRectangle.left) / 2,
(compassRectangle.bottom - compassRectangle.top) / 2
)
var clickLocation = new Cartesian2(
e.clientX - compassRectangle.left,
e.clientY - compassRectangle.top
)
var vector = Cartesian2.subtract(clickLocation, center, vectorScratch)
updateAngleAndOpacity(vector, compassRectangle.width)
}
viewModel.orbitMouseUpFunction = function(e) {
viewModel.isOrbiting = false
document.removeEventListener(
'mousemove',
viewModel.orbitMouseMoveFunction,
false
)
document.removeEventListener(
'mouseup',
viewModel.orbitMouseUpFunction,
false
)
if (defined(viewModel.orbitTickFunction)) {
viewModel.terria.clock.onTick.removeEventListener(
viewModel.orbitTickFunction
)
}
viewModel.orbitMouseMoveFunction = undefined
viewModel.orbitMouseUpFunction = undefined
viewModel.orbitTickFunction = undefined
}
document.addEventListener(
'mousemove',
viewModel.orbitMouseMoveFunction,
false
)
document.addEventListener(
'mouseup',
viewModel.orbitMouseUpFunction,
false
)
viewModel.terria.clock.onTick.addEventListener(
viewModel.orbitTickFunction
)
updateAngleAndOpacity(
cursorVector,
compassElement.getBoundingClientRect().width
)
}
function rotate(viewModel, compassElement, cursorVector) {
var scene = viewModel.terria.scene
var camera = scene.camera
var sscc = scene.screenSpaceCameraController
if (
scene.mode == SceneMode.MORPHING ||
scene.mode == SceneMode.SCENE2D ||
!sscc.enableInputs
) {
return
}
if (
!sscc.enableLook &&
(scene.mode == SceneMode.COLUMBUS_VIEW ||
(scene.mode == SceneMode.SCENE3D && !sscc.enableRotate))
) {
return
}
document.removeEventListener(
'mousemove',
viewModel.rotateMouseMoveFunction,
false
)
document.removeEventListener(
'mouseup',
viewModel.rotateMouseUpFunction,
false
)
viewModel.rotateMouseMoveFunction = undefined
viewModel.rotateMouseUpFunction = undefined
viewModel.isRotating = true
viewModel.rotateInitialCursorAngle = Math.atan2(
-cursorVector.y,
cursorVector.x
)
if (defined(viewModel.terria.trackedEntity)) {
viewModel.rotateFrame = undefined
viewModel.rotateIsLook = false
} else {
var viewCenter = Utils.getCameraFocus(
viewModel.terria,
true,
centerScratch
)
if (
!defined(viewCenter) ||
(scene.mode == SceneMode.COLUMBUS_VIEW &&
!sscc.enableLook &&
!sscc.enableTranslate)
) {
viewModel.rotateFrame = Transforms.eastNorthUpToFixedFrame(
camera.positionWC,
scene.globe.ellipsoid,
newTransformScratch
)
viewModel.rotateIsLook = true
} else {
viewModel.rotateFrame = Transforms.eastNorthUpToFixedFrame(
viewCenter,
scene.globe.ellipsoid,
newTransformScratch
)
viewModel.rotateIsLook = false
}
}
var oldTransform
if (defined(viewModel.rotateFrame)) {
oldTransform = Matrix4.clone(camera.transform, oldTransformScratch)
camera.lookAtTransform(viewModel.rotateFrame)
}
viewModel.rotateInitialCameraAngle = -camera.heading
if (defined(viewModel.rotateFrame)) {
camera.lookAtTransform(oldTransform)
}
viewModel.rotateMouseMoveFunction = function(e) {
var compassRectangle = compassElement.getBoundingClientRect()
var center = new Cartesian2(
(compassRectangle.right - compassRectangle.left) / 2,
(compassRectangle.bottom - compassRectangle.top) / 2
)
var clickLocation = new Cartesian2(
e.clientX - compassRectangle.left,
e.clientY - compassRectangle.top
)
var vector = Cartesian2.subtract(clickLocation, center, vectorScratch)
var angle = Math.atan2(-vector.y, vector.x)
var angleDifference = angle - viewModel.rotateInitialCursorAngle
var newCameraAngle = CesiumMath.zeroToTwoPi(
viewModel.rotateInitialCameraAngle - angleDifference
)
var camera = viewModel.terria.scene.camera
var oldTransform
if (defined(viewModel.rotateFrame)) {
oldTransform = Matrix4.clone(camera.transform, oldTransformScratch)
camera.lookAtTransform(viewModel.rotateFrame)
}
var currentCameraAngle = -camera.heading
camera.rotateRight(newCameraAngle - currentCameraAngle)
if (defined(viewModel.rotateFrame)) {
camera.lookAtTransform(oldTransform)
}
}
viewModel.rotateMouseUpFunction = function(e) {
viewModel.isRotating = false
document.removeEventListener(
'mousemove',
viewModel.rotateMouseMoveFunction,
false
)
document.removeEventListener(
'mouseup',
viewModel.rotateMouseUpFunction,
false
)
viewModel.rotateMouseMoveFunction = undefined
viewModel.rotateMouseUpFunction = undefined
}
document.addEventListener(
'mousemove',
viewModel.rotateMouseMoveFunction,
false
)
document.addEventListener(
'mouseup',
viewModel.rotateMouseUpFunction,
false
)
}
return NavigationViewModel
})
define('CesiumNavigation', [
'Cesium/Core/defined',
'Cesium/Core/defineProperties',
'Cesium/Core/Event',
'KnockoutES5',
'Core/registerKnockoutBindings',
'ViewModels/DistanceLegendViewModel',
'ViewModels/NavigationViewModel'
], function(
defined,
defineProperties,
CesiumEvent,
Knockout,
registerKnockoutBindings,
DistanceLegendViewModel,
NavigationViewModel
) {
'use strict'
var CesiumNavigation = function(viewerCesiumWidget) {
initialize.apply(this, arguments)
this._onDestroyListeners = []
}
CesiumNavigation.prototype.distanceLegendViewModel = undefined
CesiumNavigation.prototype.navigationViewModel = undefined
CesiumNavigation.prototype.navigationDiv = undefined
CesiumNavigation.prototype.distanceLegendDiv = undefined
CesiumNavigation.prototype.terria = undefined
CesiumNavigation.prototype.container = undefined
CesiumNavigation.prototype._onDestroyListeners = undefined
CesiumNavigation.prototype.destroy = function() {
if (defined(this.navigationViewModel)) {
this.navigationViewModel.destroy()
}
if (defined(this.distanceLegendViewModel)) {
this.distanceLegendViewModel.destroy()
}
if (defined(this.navigationDiv)) {
this.navigationDiv.parentNode.removeChild(this.navigationDiv)
}
delete this.navigationDiv
if (defined(this.distanceLegendDiv)) {
this.distanceLegendDiv.parentNode.removeChild(this.distanceLegendDiv)
}
delete this.distanceLegendDiv
if (defined(this.container)) {
this.container.parentNode.removeChild(this.container)
}
delete this.container
for (var i = 0; i < this._onDestroyListeners.length; i++) {
this._onDestroyListeners[i]()
}
}
CesiumNavigation.prototype.addOnDestroyListener = function(callback) {
if (typeof callback === 'function') {
this._onDestroyListeners.push(callback)
}
}
function initialize(viewerCesiumWidget, options) {
if (!defined(viewerCesiumWidget)) {
throw new DeveloperError('CesiumWidget or Viewer is required.')
}
var cesiumWidget = defined(viewerCesiumWidget.cesiumWidget)
? viewerCesiumWidget.cesiumWidget
: viewerCesiumWidget
var container = document.createElement('div')
container.className = 'cesium-widget-cesiumNavigationContainer'
cesiumWidget.container.appendChild(container)
this.terria = viewerCesiumWidget
this.terria.options = options
this.terria.afterWidgetChanged = new CesiumEvent()
this.terria.beforeWidgetChanged = new CesiumEvent()
this.container = container
this.navigationDiv = document.createElement('div')
this.navigationDiv.setAttribute('id', 'navigationDiv')
this.distanceLegendDiv = document.createElement('div')
this.navigationDiv.setAttribute('id', 'distanceLegendDiv')
container.appendChild(this.navigationDiv)
container.appendChild(this.distanceLegendDiv)
registerKnockoutBindings()
this.distanceLegendViewModel = DistanceLegendViewModel.create({
container: this.distanceLegendDiv,
terria: this.terria,
mapElement: container
})
this.navigationViewModel = NavigationViewModel.create({
container: this.navigationDiv,
terria: this.terria
})
}
return CesiumNavigation
})
define('dummy/require-less/less/dummy', [], function() {})
define('viewerCesiumNavigationMixin', [
'Cesium/Core/defined',
'Cesium/Core/defineProperties',
'Cesium/Core/DeveloperError',
'CesiumNavigation',
'dummy/require-less/less/dummy'
], function(defined, defineProperties, DeveloperError, CesiumNavigation) {
'use strict'
function viewerCesiumNavigationMixin(viewer, options) {
if (!defined(viewer)) {
throw new DeveloperError('viewer is required.')
}
var cesiumNavigation = init(viewer, options)
cesiumNavigation.addOnDestroyListener(
(function(viewer) {
return function() {
delete viewer.cesiumNavigation
}
})(viewer)
)
Object.defineProperties(viewer, {
cesiumNavigation: {
configurable: true,
get: function() {
return viewer.cesiumWidget.cesiumNavigation
}
}
})
}
viewerCesiumNavigationMixin.mixinWidget = function(
cesiumWidget,
options
) {
return init.apply(undefined, arguments)
}
var init = function(viewerCesiumWidget, options) {
var cesiumNavigation = new CesiumNavigation(viewerCesiumWidget, options)
var cesiumWidget = defined(viewerCesiumWidget.cesiumWidget)
? viewerCesiumWidget.cesiumWidget
: viewerCesiumWidget
Object.defineProperties(cesiumWidget, {
cesiumNavigation: {
configurable: true,
get: function() {
return cesiumNavigation
}
}
})
cesiumNavigation.addOnDestroyListener(
(function(cesiumWidget) {
return function() {
delete cesiumWidget.cesiumNavigation
}
})(cesiumWidget)
)
return cesiumNavigation
}
return viewerCesiumNavigationMixin
})
;(function(c) {
var d = document,
a = 'appendChild',
i = 'styleSheet',
s = d.createElement('style')
s.type = 'text/css'
d.getElementsByTagName('head')[0][a](s)
s[i] ? (s[i].cssText = c) : s[a](d.createTextNode(c))
})(
".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:94px;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-family:'Roboto',sans-serif;font-size:14px;font-weight:lighter;line-height:30px;color:#fff;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{background:rgb(54,60,66,0.4);transform:scale(1.2);display:flex;position:absolute;left:42px;top:24
)
define('Cesium/Core/defined', function() {
return Cesium['defined']
})
define('Cesium/Core/defineProperties', function() {
return Cesium['defineProperties']
})
define('Cesium/Core/defaultValue', function() {
return Cesium['defaultValue']
})
define('Cesium/Core/Event', function() {
return Cesium['Event']
})
define('Cesium/Widgets/getElement', function() {
return Cesium['getElement']
})
define('Cesium/Widgets/SvgPathBindingHandler', function() {
return Cesium['SvgPathBindingHandler']
})
define('Cesium/Core/Ray', function() {
return Cesium['Ray']
})
define('Cesium/Core/Cartesian3', function() {
return Cesium['Cartesian3']
})
define('Cesium/Core/Cartographic', function() {
return Cesium['Cartographic']
})
define('Cesium/Core/ReferenceFrame', function() {
return Cesium['ReferenceFrame']
})
define('Cesium/Scene/SceneMode', function() {
return Cesium['SceneMode']
})
define('Cesium/Core/DeveloperError', function() {
return Cesium['DeveloperError']
})
define('Cesium/Core/EllipsoidGeodesic', function() {
return Cesium['EllipsoidGeodesic']
})
define('Cesium/Core/Cartesian2', function() {
return Cesium['Cartesian2']
})
define('Cesium/Core/getTimestamp', function() {
return Cesium['getTimestamp']
})
define('Cesium/Core/EventHelper', function() {
return Cesium['EventHelper']
})
define('Cesium/Core/Math', function() {
return Cesium['Math']
})
define('Cesium/Core/Transforms', function() {
return Cesium['Transforms']
})
define('Cesium/Core/Matrix4', function() {
return Cesium['Matrix4']
})
define('Cesium/Core/BoundingSphere', function() {
return Cesium['BoundingSphere']
})
define('Cesium/Core/HeadingPitchRange', function() {
return Cesium['HeadingPitchRange']
})
define('Cesium/Scene/Camera', function() {
return Cesium['Camera']
})
define('Cesium/Core/Rectangle', function() {
return Cesium['Rectangle']
})
define('Cesium/Core/IntersectionTests', function() {
return Cesium['IntersectionTests']
})
return require('viewerCesiumNavigationMixin')
}
)