PageSourceSearch

https://www.werkstatt-schall.de/js/power/app.js

js werkstatt-schall.de collected 2026-10-07 05:42:52 UTC 1,088,807 bytes, 9,857 lines download raw bytes

vendor: 16,723 bytes, lines 1-204
1! function(global, factory) { "use strict"; "object" == typeof module && "object" == typeof module.exports ? module.exports = global.document ? factory(global, !0) : function(w) { if (!w.document) throw new Error("jQuery requires a window with a document"); return factory(w) } : factory(global) }("undefined" != typeof window ? window : this, function(window, noGlobal) {
2    "use strict";
3
4    function DOMEval(code, doc) {
5        doc = doc || document;
6        var script = doc.createElement("script");
7        script.text = code, doc.head.appendChild(script).parentNode.removeChild(script)
8    }
9
10    function isArrayLike(obj) {
11        var length = !!obj && "length" in obj && obj.length,
12            type = jQuery.type(obj);
13        return "function" !== type && !jQuery.isWindow(obj) && ("array" === type || 0 === length || "number" == typeof length && length > 0 && length - 1 in obj)
14    }
15
16    function winnow(elements, qualifier, not) { return jQuery.isFunction(qualifier) ? jQuery.grep(elements, function(elem, i) { return !!qualifier.call(elem, i, elem) !== not }) : qualifier.nodeType ? jQuery.grep(elements, function(elem) { return elem === qualifier !== not }) : "string" != typeof qualifier ? jQuery.grep(elements, function(elem) { return indexOf.call(qualifier, elem) > -1 !== not }) : risSimple.test(qualifier) ? jQuery.filter(qualifier, elements, not) : (qualifier = jQuery.filter(qualifier, elements), jQuery.grep(elements, function(elem) { return indexOf.call(qualifier, elem) > -1 !== not && 1 === elem.nodeType })) }
17
18    function sibling(cur, dir) {
19        for (;
20            (cur = cur[dir]) && 1 !== cur.nodeType;);
21        return cur
22    }
23
24    function createOptions(options) { var object = {}; return jQuery.each(options.match(rnothtmlwhite) || [], function(_, flag) { object[flag] = !0 }), object }
25
26    function Identity(v) { return v }
27
28    function Thrower(ex) { throw ex }
29
30    function adoptValue(value, resolve, reject) { var method; try { value && jQuery.isFunction(method = value.promise) ? method.call(value).done(resolve).fail(reject) : value && jQuery.isFunction(method = value.then) ? method.call(value, resolve, reject) : resolve.call(void 0, value) } catch (value) { reject.call(void 0, value) } }
31
32    function completed() { document.removeEventListener("DOMContentLoaded", completed), window.removeEventListener("load", completed), jQuery.ready() }
33
34    function Data() { this.expando = jQuery.expando + Data.uid++ }
35
36    function getData(data) { return "true" === data || "false" !== data && ("null" === data ? null : data === +data + "" ? +data : rbrace.test(data) ? JSON.parse(data) : data) }
37
38    function dataAttr(elem, key, data) {
39        var name;
40        if (void 0 === data && 1 === elem.nodeType)
41            if (name = "data-" + key.replace(rmultiDash, "-$&").toLowerCase(), data = elem.getAttribute(name), "string" == typeof data) {
42                try { data = getData(data) } catch (e) {}
43                dataUser.set(elem, key, data)
44            } else data = void 0;
45        return data
46    }
47
48    function adjustCSS(elem, prop, valueParts, tween) {
49        var adjusted, scale = 1,
50            maxIterations = 20,
51            currentValue = tween ? function() { return tween.cur() } : function() { return jQuery.css(elem, prop, "") },
52            initial = currentValue(),
53            unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? "" : "px"),
54            initialInUnit = (jQuery.cssNumber[prop] || "px" !== unit && +initial) && rcssNum.exec(jQuery.css(elem, prop));
55        if (initialInUnit && initialInUnit[3] !== unit) {
56            unit = unit || initialInUnit[3], valueParts = valueParts || [], initialInUnit = +initial || 1;
57            do scale = scale || ".5", initialInUnit /= scale, jQuery.style(elem, prop, initialInUnit + unit); while (scale !== (scale = currentValue() / initial) && 1 !== scale && --maxIterations)
58        }
59        return valueParts && (initialInUnit = +initialInUnit || +initial || 0, adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2], tween && (tween.unit = unit, tween.start = initialInUnit, tween.end = adjusted)), adjusted
60    }
61
62    function getDefaultDisplay(elem) {
63        var temp, doc = elem.ownerDocument,
64            nodeName = elem.nodeName,
65            display = defaultDisplayMap[nodeName];
66        return display ? display : (temp = doc.body.appendChild(doc.createElement(nodeName)), display = jQuery.css(temp, "display"), temp.parentNode.removeChild(temp), "none" === display && (display = "block"), defaultDisplayMap[nodeName] = display, display)
67    }
68
69    function showHide(elements, show) { for (var display, elem, values = [], index = 0, length = elements.length; index < length; index++) elem = elements[index], elem.style && (display = elem.style.display, show ? ("none" === display && (values[index] = dataPriv.get(elem, "display") || null, values[index] || (elem.style.display = "")), "" === elem.style.display && isHiddenWithinTree(elem) && (values[index] = getDefaultDisplay(elem))) : "none" !== display && (values[index] = "none", dataPriv.set(elem, "display", display))); for (index = 0; index < length; index++) null != values[index] && (elements[index].style.display = values[index]); return elements }
70
71    function getAll(context, tag) { var ret; return ret = "undefined" != typeof context.getElementsByTagName ? context.getElementsByTagName(tag || "*") : "undefined" != typeof context.querySelectorAll ? context.querySelectorAll(tag || "*") : [], void 0 === tag || tag && jQuery.nodeName(context, tag) ? jQuery.merge([context], ret) : ret }
72
73    function setGlobalEval(elems, refElements) { for (var i = 0, l = elems.length; i < l; i++) dataPriv.set(elems[i], "globalEval", !refElements || dataPriv.get(refElements[i], "globalEval")) }
74
75    function buildFragment(elems, context, scripts, selection, ignored) {
76        for (var elem, tmp, tag, wrap, contains, j, fragment = context.createDocumentFragment(), nodes = [], i = 0, l = elems.length; i < l; i++)
77            if (elem = elems[i], elem || 0 === elem)
78                if ("object" === jQuery.type(elem)) jQuery.merge(nodes, elem.nodeType ? [elem] : elem);
79                else if (rhtml.test(elem)) {
80            for (tmp = tmp || fragment.appendChild(context.createElement("div")), tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase(), wrap = wrapMap[tag] || wrapMap._default, tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2], j = wrap[0]; j--;) tmp = tmp.lastChild;
81            jQuery.merge(nodes, tmp.childNodes), tmp = fragment.firstChild, tmp.textContent = ""
82        } else nodes.push(context.createTextNode(elem));
83        for (fragment.textContent = "", i = 0; elem = nodes[i++];)
84            if (selection && jQuery.inArray(elem, selection) > -1) ignored && ignored.push(elem);
85            else if (contains = jQuery.contains(elem.ownerDocument, elem), tmp = getAll(fragment.appendChild(elem), "script"), contains && setGlobalEval(tmp), scripts)
86            for (j = 0; elem = tmp[j++];) rscriptType.test(elem.type || "") && scripts.push(elem);
87        return fragment
88    }
89
90    function returnTrue() { return !0 }
91
92    function returnFalse() { return !1 }
93
94    function safeActiveElement() { try { return document.activeElement } catch (err) {} }
95
96    function on(elem, types, selector, data, fn, one) {
97        var origFn, type;
98        if ("object" == typeof types) { "string" != typeof selector && (data = data || selector, selector = void 0); for (type in types) on(elem, type, selector, data, types[type], one); return elem }
99        if (null == data && null == fn ? (fn = selector, data = selector = void 0) : null == fn && ("string" == typeof selector ? (fn = data, data = void 0) : (fn = data, data = selector, selector = void 0)), fn === !1) fn = returnFalse;
100        else if (!fn) return elem;
101        return 1 === one && (origFn = fn, fn = function(event) { return jQuery().off(event), origFn.apply(this, arguments) }, fn.guid = origFn.guid || (origFn.guid = jQuery.guid++)), elem.each(function() { jQuery.event.add(this, types, fn, data, selector) })
102    }
103
104    function manipulationTarget(elem, content) { return jQuery.nodeName(elem, "table") && jQuery.nodeName(11 !== content.nodeType ? content : content.firstChild, "tr") ? elem.getElementsByTagName("tbody")[0] || elem : elem }
105
106    function disableScript(elem) { return elem.type = (null !== elem.getAttribute("type")) + "/" + elem.type, elem }
107
108    function restoreScript(elem) { var match = rscriptTypeMasked.exec(elem.type); return match ? elem.type = match[1] : elem.removeAttribute("type"), elem }
109
110    function cloneCopyEvent(src, dest) {
111        var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
112        if (1 === dest.nodeType) {
113            if (dataPriv.hasData(src) && (pdataOld = dataPriv.access(src), pdataCur = dataPriv.set(dest, pdataOld), events = pdataOld.events)) {
114                delete pdataCur.handle, pdataCur.events = {};
115                for (type in events)
116                    for (i = 0, l = events[type].length; i < l; i++) jQuery.event.add(dest, type, events[type][i])
117            }
118            dataUser.hasData(src) && (udataOld = dataUser.access(src), udataCur = jQuery.extend({}, udataOld), dataUser.set(dest, udataCur))
119        }
120    }
121
122    function fixInput(src, dest) { var nodeName = dest.nodeName.toLowerCase(); "input" === nodeName && rcheckableType.test(src.type) ? dest.checked = src.checked : "input" !== nodeName && "textarea" !== nodeName || (dest.defaultValue = src.defaultValue) }
123
124    function domManip(collection, args, callback, ignored) {
125        args = concat.apply([], args);
126        var fragment, first, scripts, hasScripts, node, doc, i = 0,
127            l = collection.length,
128            iNoClone = l - 1,
129            value = args[0],
130            isFunction = jQuery.isFunction(value);
131        if (isFunction || l > 1 && "string" == typeof value && !support.checkClone && rchecked.test(value)) return collection.each(function(index) {
132            var self = collection.eq(index);
133            isFunction && (args[0] = value.call(this, index, self.html())), domManip(self, args, callback, ignored)
134        });
135        if (l && (fragment = buildFragment(args, collection[0].ownerDocument, !1, collection, ignored), first = fragment.firstChild, 1 === fragment.childNodes.length && (fragment = first), first || ignored)) {
136            for (scripts = jQuery.map(getAll(fragment, "script"), disableScript), hasScripts = scripts.length; i < l; i++) node = fragment, i !== iNoClone && (node = jQuery.clone(node, !0, !0), hasScripts && jQuery.merge(scripts, getAll(node, "script"))), callback.call(collection[i], node, i);
137            if (hasScripts)
138                for (doc = scripts[scripts.length - 1].ownerDocument, jQuery.map(scripts, restoreScript), i = 0; i < hasScripts; i++) node = scripts[i], rscriptType.test(node.type || "") && !dataPriv.access(node, "globalEval") && jQuery.contains(doc, node) && (node.src ? jQuery._evalUrl && jQuery._evalUrl(node.src) : DOMEval(node.textContent.replace(rcleanScript, ""), doc))
139        }
140        return collection
141    }
142
143    function remove(elem, selector, keepData) { for (var node, nodes = selector ? jQuery.filter(selector, elem) : elem, i = 0; null != (node = nodes[i]); i++) keepData || 1 !== node.nodeType || jQuery.cleanData(getAll(node)), node.parentNode && (keepData && jQuery.contains(node.ownerDocument, node) && setGlobalEval(getAll(node, "script")), node.parentNode.removeChild(node)); return elem }
144
145    function curCSS(elem, name, computed) { var width, minWidth, maxWidth, ret, style = elem.style; return computed = computed || getStyles(elem), computed && (ret = computed.getPropertyValue(name) || computed[name], "" !== ret || jQuery.contains(elem.ownerDocument, elem) || (ret = jQuery.style(elem, name)), !support.pixelMarginRight() && rnumnonpx.test(ret) && rmargin.test(name) && (width = style.width, minWidth = style.minWidth, maxWidth = style.maxWidth, style.minWidth = style.maxWidth = style.width = ret, ret = computed.width, style.width = width, style.minWidth = minWidth, style.maxWidth = maxWidth)), void 0 !== ret ? ret + "" : ret }
146
147    function addGetHookIf(conditionFn, hookFn) { return { get: function() { return conditionFn() ? void delete this.get : (this.get = hookFn).apply(this, arguments) } } }
148
149    function vendorPropName(name) {
150        if (name in emptyStyle) return name;
151        for (var capName = name[0].toUpperCase() + name.slice(1), i = cssPrefixes.length; i--;)
152            if (name = cssPrefixes[i] + capName, name in emptyStyle) return name
153    }
154
155    function setPositiveNumber(elem, value, subtract) { var matches = rcssNum.exec(value); return matches ? Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px") : value }
156
157    function augmentWidthOrHeight(elem, name, extra, isBorderBox, styles) { var i, val = 0; for (i = extra === (isBorderBox ? "border" : "content") ? 4 : "width" === name ? 1 : 0; i < 4; i += 2) "margin" === extra && (val += jQuery.css(elem, extra + cssExpand[i], !0, styles)), isBorderBox ? ("content" === extra && (val -= jQuery.css(elem, "padding" + cssExpand[i], !0, styles)), "margin" !== extra && (val -= jQuery.css(elem, "border" + cssExpand[i] + "Width", !0, styles))) : (val += jQuery.css(elem, "padding" + cssExpand[i], !0, styles), "padding" !== extra && (val += jQuery.css(elem, "border" + cssExpand[i] + "Width", !0, styles))); return val }
158
159    function getWidthOrHeight(elem, name, extra) {
160        var val, valueIsBorderBox = !0,
161            styles = getStyles(elem),
162            isBorderBox = "border-box" === jQuery.css(elem, "boxSizing", !1, styles);
163        if (elem.getClientRects().length && (val = elem.getBoundingClientRect()[name]), val <= 0 || null == val) {
164            if (val = curCSS(elem, name, styles), (val < 0 || null == val) && (val = elem.style[name]), rnumnonpx.test(val)) return val;
165            valueIsBorderBox = isBorderBox && (support.boxSizingReliable() || val === elem.style[name]), val = parseFloat(val) || 0
166        }
167        return val + augmentWidthOrHeight(elem, name, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox, styles) + "px"
168    }
169
170    function Tween(elem, options, prop, end, easing) { return new Tween.prototype.init(elem, options, prop, end, easing) }
171
172    function raf() { timerId && (window.requestAnimationFrame(raf), jQuery.fx.tick()) }
173
174    function createFxNow() { return window.setTimeout(function() { fxNow = void 0 }), fxNow = jQuery.now() }
175
176    function genFx(type, includeWidth) {
177        var which, i = 0,
178            attrs = { height: type };
179        for (includeWidth = includeWidth ? 1 : 0; i < 4; i += 2 - includeWidth) which = cssExpand[i], attrs["margin" + which] = attrs["padding" + which] = type;
180        return includeWidth && (attrs.opacity = attrs.width = type), attrs
181    }
182
183    function createTween(value, prop, animation) {
184        for (var tween, collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners["*"]), index = 0, length = collection.length; index < length; index++)
185            if (tween = collection[index].call(animation, prop, value)) return tween
186    }
187
188    function defaultPrefilter(elem, props, opts) {
189        var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, isBox = "width" in props || "height" in props,
190            anim = this,
191            orig = {},
192            style = elem.style,
193            hidden = elem.nodeType && isHiddenWithinTree(elem),
194            dataShow = dataPriv.get(elem, "fxshow");
195        opts.queue || (hooks = jQuery._queueHooks(elem, "fx"), null == hooks.unqueued && (hooks.unqueued = 0, oldfire = hooks.empty.fire, hooks.empty.fire = function() { hooks.unqueued || oldfire() }), hooks.unqueued++, anim.always(function() { anim.always(function() { hooks.unqueued--, jQuery.queue(elem, "fx").length || hooks.empty.fire() }) }));
196        for (prop in props)
197            if (value = props[prop], rfxtypes.test(value)) {
198                if (delete props[prop], toggle = toggle || "toggle" === value, value === (hidden ? "hide" : "show")) {
199                    if ("show" !== value || !dataShow || void 0 === dataShow[prop]) continue;
200                    hidden = !0
201                }
202                orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop)
203            }
204        if (propTween = !jQuery.isEmptyObject(props), propTween || !jQuery.isEmptyObject(orig)) { isBox && 1 === elem.nodeType && (opts.overflow = [style.overflow, style.overflowX, style.overflowY], restoreDisplay = dataShow && dataShow.display, null == restoreDisplay && (restoreDisplay = dataPriv.get(elem, "dis
204play")), display = jQuery.css(elem, "display"), "none" === display && (restoreDisplay ? display = restoreDisplay : (showHide([elem], !0), restoreDisplay = elem.style.display || restoreDisplay, display = jQuery.css(elem, "display"), showHide([elem]))), ("inline" === display || "inline-block" === display && null != restoreDisplay) && "none" === jQuery.css(elem, "float") && (propTween || (anim.done(function() { style.display = restoreDisplay }), null == restoreDisplay && (display = style.display, restoreDisplay = "none" === display ? "" : display)), style.display = "inline-block")), opts.overflow && (style.overflow = "hidden", anim.always(function() { style.overflow = opts.overflow[0], style.overflowX = opts.overflow[1], style.overflowY = opts.overflow[2] })), propTween = !1; for (prop in orig) propTween || (dataShow ? "hidden" in dataShow && (hidden = dataShow.hidden) : dataShow = dataPriv.access(elem, "fxshow", { display: restoreDisplay }), toggle && (dataShow.hidden = !hidden), hidden && showHide([elem], !0), anim.done(function() { hidden || showHide([elem]), dataPriv.remove(elem, "fxshow"); for (prop in orig) jQuery.style(elem, prop, orig[prop]) })), propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim), prop in dataShow || (dataShow[prop] = propTween.start, hidden && (propTween.end = propTween.start, propTween.start = 0)) }
205    }
206
207    function propFilter(props, specialEasing) {
208        var index, name, easing, value, hooks;
209        for (index in props)
210            if (name = jQuery.camelCase(index), easing = specialEasing[n
vendor: 9,068 bytes, lines 210-335
210ame], value = props[index], jQuery.isArray(value) && (easing = value[1], value = props[index] = value[0]), index !== name && (props[name] = value, delete props[index]), hooks = jQuery.cssHooks[name], hooks && "expand" in hooks) { value = hooks.expand(value), delete props[name]; for (index in value) index in props || (props[index] = value[index], specialEasing[index] = easing) } else specialEasing[name] = easing
211    }
212
213    function Animation(elem, properties, options) {
214        var result, stopped, index = 0,
215            length = Animation.prefilters.length,
216            deferred = jQuery.Deferred().always(function() { delete tick.elem }),
217            tick = function() { if (stopped) return !1; for (var currentTime = fxNow || createFxNow(), remaining = Math.max(0, animation.startTime + animation.duration - currentTime), temp = remaining / animation.duration || 0, percent = 1 - temp, index = 0, length = animation.tweens.length; index < length; index++) animation.tweens[index].run(percent); return deferred.notifyWith(elem, [animation, percent, remaining]), percent < 1 && length ? remaining : (deferred.resolveWith(elem, [animation]), !1) },
218            animation = deferred.promise({
219                elem: elem,
220                props: jQuery.extend({}, properties),
221                opts: jQuery.extend(!0, { specialEasing: {}, easing: jQuery.easing._default }, options),
222                originalProperties: properties,
223                originalOptions: options,
224                startTime: fxNow || createFxNow(),
225                duration: options.duration,
226                tweens: [],
227                createTween: function(prop, end) { var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing); return animation.tweens.push(tween), tween },
228                stop: function(gotoEnd) {
229                    var index = 0,
230                        length = gotoEnd ? animation.tweens.length : 0;
231                    if (stopped) return this;
232                    for (stopped = !0; index < length; index++) animation.tweens[index].run(1);
233                    return gotoEnd ? (deferred.notifyWith(elem, [animation, 1, 0]), deferred.resolveWith(elem, [animation, gotoEnd])) : deferred.rejectWith(elem, [animation, gotoEnd]), this
234                }
235            }),
236            props = animation.props;
237        for (propFilter(props, animation.opts.specialEasing); index < length; index++)
238            if (result = Animation.prefilters[index].call(animation, elem, props, animation.opts)) return jQuery.isFunction(result.stop) && (jQuery._queueHooks(animation.elem, animation.opts.queue).stop = jQuery.proxy(result.stop, result)), result;
239        return jQuery.map(props, createTween, animation), jQuery.isFunction(animation.opts.start) && animation.opts.start.call(elem, animation), jQuery.fx.timer(jQuery.extend(tick, { elem: elem, anim: animation, queue: animation.opts.queue })), animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always)
240    }
241
242    function stripAndCollapse(value) { var tokens = value.match(rnothtmlwhite) || []; return tokens.join(" ") }
243
244    function getClass(elem) { return elem.getAttribute && elem.getAttribute("class") || "" }
245
246    function buildParams(prefix, obj, traditional, add) {
247        var name;
248        if (jQuery.isArray(obj)) jQuery.each(obj, function(i, v) { traditional || rbracket.test(prefix) ? add(prefix, v) : buildParams(prefix + "[" + ("object" == typeof v && null != v ? i : "") + "]", v, traditional, add) });
249        else if (traditional || "object" !== jQuery.type(obj)) add(prefix, obj);
250        else
251            for (name in obj) buildParams(prefix + "[" + name + "]", obj[name], traditional, add)
252    }
253
254    function addToPrefiltersOrTransports(structure) {
255        return function(dataTypeExpression, func) {
256            "string" != typeof dataTypeExpression && (func = dataTypeExpression, dataTypeExpression = "*");
257            var dataType, i = 0,
258                dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];
259            if (jQuery.isFunction(func))
260                for (; dataType = dataTypes[i++];) "+" === dataType[0] ? (dataType = dataType.slice(1) || "*", (structure[dataType] = structure[dataType] || []).unshift(func)) : (structure[dataType] = structure[dataType] || []).push(func)
261        }
262    }
263
264    function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
265        function inspect(dataType) { var selected; return inspected[dataType] = !0, jQuery.each(structure[dataType] || [], function(_, prefilterOrFactory) { var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR); return "string" != typeof dataTypeOrTransport || seekingTransport || inspected[dataTypeOrTransport] ? seekingTransport ? !(selected = dataTypeOrTransport) : void 0 : (options.dataTypes.unshift(dataTypeOrTransport), inspect(dataTypeOrTransport), !1) }), selected }
266        var inspected = {},
267            seekingTransport = structure === transports;
268        return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*")
269    }
270
271    function ajaxExtend(target, src) { var key, deep, flatOptions = jQuery.ajaxSettings.flatOptions || {}; for (key in src) void 0 !== src[key] && ((flatOptions[key] ? target : deep || (deep = {}))[key] = src[key]); return deep && jQuery.extend(!0, target, deep), target }
272
273    function ajaxHandleResponses(s, jqXHR, responses) {
274        for (var ct, type, finalDataType, firstDataType, contents = s.contents, dataTypes = s.dataTypes;
275            "*" === dataTypes[0];) dataTypes.shift(), void 0 === ct && (ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"));
276        if (ct)
277            for (type in contents)
278                if (contents[type] && contents[type].test(ct)) { dataTypes.unshift(type); break }
279        if (dataTypes[0] in responses) finalDataType = dataTypes[0];
280        else {
281            for (type in responses) {
282                if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) { finalDataType = type; break }
283                firstDataType || (firstDataType = type)
284            }
285            finalDataType = finalDataType || firstDataType
286        }
287        if (finalDataType) return finalDataType !== dataTypes[0] && dataTypes.unshift(finalDataType), responses[finalDataType]
288    }
289
290    function ajaxConvert(s, response, jqXHR, isSuccess) {
291        var conv2, current, conv, tmp, prev, converters = {},
292            dataTypes = s.dataTypes.slice();
293        if (dataTypes[1])
294            for (conv in s.converters) converters[conv.toLowerCase()] = s.converters[conv];
295        for (current = dataTypes.shift(); current;)
296            if (s.responseFields[current] && (jqXHR[s.responseFields[current]] = response), !prev && isSuccess && s.dataFilter && (response = s.dataFilter(response, s.dataType)), prev = current, current = dataTypes.shift())
297                if ("*" === current) current = prev;
298                else if ("*" !== prev && prev !== current) {
299            if (conv = converters[prev + " " + current] || converters["* " + current], !conv)
300                for (conv2 in converters)
301                    if (tmp = conv2.split(" "), tmp[1] === current && (conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]])) { conv === !0 ? conv = converters[conv2] : converters[conv2] !== !0 && (current = tmp[0], dataTypes.unshift(tmp[1])); break }
302            if (conv !== !0)
303                if (conv && s.throws) response = conv(response);
304                else try { response = conv(response) } catch (e) { return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current } }
305        }
306        return { state: "success", data: response }
307    }
308
309    function getWindow(elem) { return jQuery.isWindow(elem) ? elem : 9 === elem.nodeType && elem.defaultView }
310    var arr = [],
311        document = window.document,
312        getProto = Object.getPrototypeOf,
313        slice = arr.slice,
314        concat = arr.concat,
315        push = arr.push,
316        indexOf = arr.indexOf,
317        class2type = {},
318        toString = class2type.toString,
319        hasOwn = class2type.hasOwnProperty,
320        fnToString = hasOwn.toString,
321        ObjectFunctionString = fnToString.call(Object),
322        support = {},
323        version = "3.1.1",
324        jQuery = function(selector, context) { return new jQuery.fn.init(selector, context) },
325        rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
326        rmsPrefix = /^-ms-/,
327        rdashAlpha = /-([a-z])/g,
328        fcamelCase = function(all, letter) { return letter.toUpperCase() };
329    jQuery.fn = jQuery.prototype = {
330        jquery: version,
331        constructor: jQuery,
332        length: 0,
333        toArray: function() { return slice.call(this) },
334        get: function(num) { return null == num ? slice.call(this) : num < 0 ? this[num + this.length] : this[num] },
335        pushStack: function(elems) { var ret = jQuery.merge(this.constructor(), elems);
vendor: 4,274 bytes, lines 335-386
335 return ret.prevObject = this, ret },
336        each: function(callback) { return jQuery.each(this, callback) },
337        map: function(callback) { return this.pushStack(jQuery.map(this, function(elem, i) { return callback.call(elem, i, elem) })) },
338        slice: function() { return this.pushStack(slice.apply(this, arguments)) },
339        first: function() { return this.eq(0) },
340        last: function() { return this.eq(-1) },
341        eq: function(i) {
342            var len = this.length,
343                j = +i + (i < 0 ? len : 0);
344            return this.pushStack(j >= 0 && j < len ? [this[j]] : [])
345        },
346        end: function() { return this.prevObject || this.constructor() },
347        push: push,
348        sort: arr.sort,
349        splice: arr.splice
350    }, jQuery.extend = jQuery.fn.extend = function() {
351        var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {},
352            i = 1,
353            length = arguments.length,
354            deep = !1;
355        for ("boolean" == typeof target && (deep = target, target = arguments[i] || {}, i++), "object" == typeof target || jQuery.isFunction(target) || (target = {}), i === length && (target = this, i--); i < length; i++)
356            if (null != (options = arguments[i]))
357                for (name in options) src = target[name], copy = options[name], target !== copy && (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy))) ? (copyIsArray ? (copyIsArray = !1, clone = src && jQuery.isArray(src) ? src : []) : clone = src && jQuery.isPlainObject(src) ? src : {}, target[name] = jQuery.extend(deep, clone, copy)) : void 0 !== copy && (target[name] = copy));
358        return target
359    }, jQuery.extend({
360        expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""),
361        isReady: !0,
362        error: function(msg) { throw new Error(msg) },
363        noop: function() {},
364        isFunction: function(obj) { return "function" === jQuery.type(obj) },
365        isArray: Array.isArray,
366        isWindow: function(obj) { return null != obj && obj === obj.window },
367        isNumeric: function(obj) { var type = jQuery.type(obj); return ("number" === type || "string" === type) && !isNaN(obj - parseFloat(obj)) },
368        isPlainObject: function(obj) { var proto, Ctor; return !(!obj || "[object Object]" !== toString.call(obj)) && (!(proto = getProto(obj)) || (Ctor = hasOwn.call(proto, "constructor") && proto.constructor, "function" == typeof Ctor && fnToString.call(Ctor) === ObjectFunctionString)) },
369        isEmptyObject: function(obj) { var name; for (name in obj) return !1; return !0 },
370        type: function(obj) { return null == obj ? obj + "" : "object" == typeof obj || "function" == typeof obj ? class2type[toString.call(obj)] || "object" : typeof obj },
371        globalEval: function(code) { DOMEval(code) },
372        camelCase: function(string) { return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase) },
373        nodeName: function(elem, name) { return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase() },
374        each: function(obj, callback) {
375            var length, i = 0;
376            if (isArrayLike(obj))
377                for (length = obj.length; i < length && callback.call(obj[i], i, obj[i]) !== !1; i++);
378            else
379                for (i in obj)
380                    if (callback.call(obj[i], i, obj[i]) === !1) break; return obj
381        },
382        trim: function(text) { return null == text ? "" : (text + "").replace(rtrim, "") },
383        makeArray: function(arr, results) { var ret = results || []; return null != arr && (isArrayLike(Object(arr)) ? jQuery.merge(ret, "string" == typeof arr ? [arr] : arr) : push.call(ret, arr)), ret },
384        inArray: function(elem, arr, i) { return null == arr ? -1 : indexOf.call(arr, elem, i) },
385        merge: function(first, second) { for (var len = +second.length, j = 0, i = first.length; j < len; j++) first[i++] = second[j]; return first.length = i, first },
386        grep: function(elems, callback, invert) { for (var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; i < length; i++) callbackInverse = !callback(elems[i], i), callbackInverse !== callbackExpect && matches.push(elems[i]); return matches },
vendor: 14,344 bytes, lines 387-564
387        map: function(elems, callback, arg) {
388            var length, value, i = 0,
389                ret = [];
390            if (isArrayLike(elems))
391                for (length = elems.length; i < length; i++) value = callback(elems[i], i, arg), null != value && ret.push(value);
392            else
393                for (i in elems) value = callback(elems[i], i, arg), null != value && ret.push(value);
394            return concat.apply([], ret)
395        },
396        guid: 1,
397        proxy: function(fn, context) { var tmp, args, proxy; if ("string" == typeof context && (tmp = fn[context], context = fn, fn = tmp), jQuery.isFunction(fn)) return args = slice.call(arguments, 2), proxy = function() { return fn.apply(context || this, args.concat(slice.call(arguments))) }, proxy.guid = fn.guid = fn.guid || jQuery.guid++, proxy },
398        now: Date.now,
399        support: support
400    }), "function" == typeof Symbol && (jQuery.fn[Symbol.iterator] = arr[Symbol.iterator]), jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(i, name) { class2type["[object " + name + "]"] = name.toLowerCase() });
401    var Sizzle = function(window) {
402        function Sizzle(selector, context, results, seed) {
403            var m, i, elem, nid, match, groups, newSelector, newContext = context && context.ownerDocument,
404                nodeType = context ? context.nodeType : 9;
405            if (results = results || [], "string" != typeof selector || !selector || 1 !== nodeType && 9 !== nodeType && 11 !== nodeType) return results;
406            if (!seed && ((context ? context.ownerDocument || context : preferredDoc) !== document && setDocument(context), context = context || document, documentIsHTML)) {
407                if (11 !== nodeType && (match = rquickExpr.exec(selector)))
408                    if (m = match[1]) { if (9 === nodeType) { if (!(elem = context.getElementById(m))) return results; if (elem.id === m) return results.push(elem), results } else if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) return results.push(elem), results } else { if (match[2]) return push.apply(results, context.getElementsByTagName(selector)), results; if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) return push.apply(results, context.getElementsByClassName(m)), results }
409                if (support.qsa && !compilerCache[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {
410                    if (1 !== nodeType) newContext = context, newSelector = selector;
411                    else if ("object" !== context.nodeName.toLowerCase()) {
412                        for ((nid = context.getAttribute("id")) ? nid = nid.replace(rcssescape, fcssescape) : context.setAttribute("id", nid = expando), groups = tokenize(selector), i = groups.length; i--;) groups[i] = "#" + nid + " " + toSelector(groups[i]);
413                        newSelector = groups.join(","), newContext = rsibling.test(selector) && testContext(context.parentNode) || context
414                    }
415                    if (newSelector) try { return push.apply(results, newContext.querySelectorAll(newSelector)), results } catch (qsaError) {} finally { nid === expando && context.removeAttribute("id") }
416                }
417            }
418            return select(selector.replace(rtrim, "$1"), context, results, seed)
419        }
420
421        function createCache() {
422            function cache(key, value) { return keys.push(key + " ") > Expr.cacheLength && delete cache[keys.shift()], cache[key + " "] = value }
423            var keys = [];
424            return cache
425        }
426
427        function markFunction(fn) { return fn[expando] = !0, fn }
428
429        function assert(fn) { var el = document.createElement("fieldset"); try { return !!fn(el) } catch (e) { return !1 } finally { el.parentNode && el.parentNode.removeChild(el), el = null } }
430
431        function addHandle(attrs, handler) { for (var arr = attrs.split("|"), i = arr.length; i--;) Expr.attrHandle[arr[i]] = handler }
432
433        function siblingCheck(a, b) {
434            var cur = b && a,
435                diff = cur && 1 === a.nodeType && 1 === b.nodeType && a.sourceIndex - b.sourceIndex;
436            if (diff) return diff;
437            if (cur)
438                for (; cur = cur.nextSibling;)
439                    if (cur === b) return -1;
440            return a ? 1 : -1
441        }
442
443        function createInputPseudo(type) { return function(elem) { var name = elem.nodeName.toLowerCase(); return "input" === name && elem.type === type } }
444
445        function createButtonPseudo(type) { return function(elem) { var name = elem.nodeName.toLowerCase(); return ("input" === name || "button" === name) && elem.type === type } }
446
447        function createDisabledPseudo(disabled) { return function(elem) { return "form" in elem ? elem.parentNode && elem.disabled === !1 ? "label" in elem ? "label" in elem.parentNode ? elem.parentNode.disabled === disabled : elem.disabled === disabled : elem.isDisabled === disabled || elem.isDisabled !== !disabled && disabledAncestor(elem) === disabled : elem.disabled === disabled : "label" in elem && elem.disabled === disabled } }
448
449        function createPositionalPseudo(fn) { return markFunction(function(argument) { return argument = +argument, markFunction(function(seed, matches) { for (var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length; i--;) seed[j = matchIndexes[i]] && (seed[j] = !(matches[j] = seed[j])) }) }) }
450
451        function testContext(context) { return context && "undefined" != typeof context.getElementsByTagName && context }
452
453        function setFilters() {}
454
455        function toSelector(tokens) { for (var i = 0, len = tokens.length, selector = ""; i < len; i++) selector += tokens[i].value; return selector }
456
457        function addCombinator(matcher, combinator, base) {
458            var dir = combinator.dir,
459                skip = combinator.next,
460                key = skip || dir,
461                checkNonElements = base && "parentNode" === key,
462                doneName = done++;
463            return combinator.first ? function(elem, context, xml) {
464                for (; elem = elem[dir];)
465                    if (1 === elem.nodeType || checkNonElements) return matcher(elem, context, xml);
466                return !1
467            } : function(elem, context, xml) {
468                var oldCache, uniqueCache, outerCache, newCache = [dirruns, doneName];
469                if (xml) {
470                    for (; elem = elem[dir];)
471                        if ((1 === elem.nodeType || checkNonElements) && matcher(elem, context, xml)) return !0
472                } else
473                    for (; elem = elem[dir];)
474                        if (1 === elem.nodeType || checkNonElements)
475                            if (outerCache = elem[expando] || (elem[expando] = {}), uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {}), skip && skip === elem.nodeName.toLowerCase()) elem = elem[dir] || elem;
476                            else { if ((oldCache = uniqueCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) return newCache[2] = oldCache[2]; if (uniqueCache[key] = newCache, newCache[2] = matcher(elem, context, xml)) return !0 } return !1
477            }
478        }
479
480        function elementMatcher(matchers) {
481            return matchers.length > 1 ? function(elem, context, xml) {
482                for (var i = matchers.length; i--;)
483                    if (!matchers[i](elem, context, xml)) return !1;
484                return !0
485            } : matchers[0]
486        }
487
488        function multipleContexts(selector, contexts, results) { for (var i = 0, len = contexts.length; i < len; i++) Sizzle(selector, contexts[i], results); return results }
489
490        function condense(unmatched, map, filter, context, xml) { for (var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = null != map; i < len; i++)(elem = unmatched[i]) && (filter && !filter(elem, context, xml) || (newUnmatched.push(elem), mapped && map.push(i))); return newUnmatched }
491
492        function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
493            return postFilter && !postFilter[expando] && (postFilter = setMatcher(postFilter)), postFinder && !postFinder[expando] && (postFinder = setMatcher(postFinder, postSelector)), markFunction(function(seed, results, context, xml) {
494                var temp, i, elem, preMap = [],
495                    postMap = [],
496                    preexisting = results.length,
497                    elems = seed || multipleContexts(selector || "*", context.nodeType ? [context] : context, []),
498                    matcherIn = !preFilter || !seed && selector ? elems : condense(elems, preMap, preFilter, context, xml),
499                    matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn;
500                if (matcher && matcher(matcherIn, matcherOut, context, xml), postFilter)
501                    for (temp = condense(matcherOut, postMap), postFilter(temp, [], context, xml), i = temp.length; i--;)(elem = temp[i]) && (matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem));
502                if (seed) {
503                    if (postFinder || preFilter) {
504                        if (postFinder) {
505                            for (temp = [], i = matcherOut.length; i--;)(elem = matcherOut[i]) && temp.push(matcherIn[i] = elem);
506                            postFinder(null, matcherOut = [], temp, xml)
507                        }
508                        for (i = matcherOut.length; i--;)(elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1 && (seed[temp] = !(results[temp] = elem))
509                    }
510                } else matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut), postFinder ? postFinder(null, results, matcherOut, xml) : push.apply(results, matcherOut)
511            })
512        }
513
514        function matcherFromTokens(tokens) {
515            for (var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[" "], i = leadingRelative ? 1 : 0, matchContext = addCombinator(function(elem) { return elem === checkContext }, implicitRelative, !0), matchAnyContext = addCombinator(function(elem) { return indexOf(checkContext, elem) > -1 }, implicitRelative, !0), matchers = [function(elem, context, xml) { var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); return checkContext = null, ret }]; i < len; i++)
516                if (matcher = Expr.relative[tokens[i].type]) matchers = [addCombinator(elementMatcher(matchers), matcher)];
517                else {
518                    if (matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches), matcher[expando]) { for (j = ++i; j < len && !Expr.relative[tokens[j].type]; j++); return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1).concat({ value: " " === tokens[i - 2].type ? "*" : "" })).replace(rtrim, "$1"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens)) }
519                    matchers.push(matcher)
520                }
521            return elementMatcher(matchers)
522        }
523
524        function matcherFromGroupMatchers(elementMatchers, setMatchers) {
525            var bySet = setMatchers.length > 0,
526                byElement = elementMatchers.length > 0,
527                superMatcher = function(seed, context, xml, results, outermost) {
528                    var elem, j, matcher, matchedCount = 0,
529                        i = "0",
530                        unmatched = seed && [],
531                        setMatched = [],
532                        contextBackup = outermostContext,
533                        elems = seed || byElement && Expr.find.TAG("*", outermost),
534                        dirrunsUnique = dirruns += null == contextBackup ? 1 : Math.random() || .1,
535                        len = elems.length;
536                    for (outermost && (outermostContext = context === document || context || outermost); i !== len && null != (elem = elems[i]); i++) {
537                        if (byElement && elem) {
538                            for (j = 0, context || elem.ownerDocument === document || (setDocument(elem), xml = !documentIsHTML); matcher = elementMatchers[j++];)
539                                if (matcher(elem, context || document, xml)) { results.push(elem); break }
540                            outermost && (dirruns = dirrunsUnique)
541                        }
542                        bySet && ((elem = !matcher && elem) && matchedCount--, seed && unmatched.push(elem))
543                    }
544                    if (matchedCount += i, bySet && i !== matchedCount) {
545                        for (j = 0; matcher = setMatchers[j++];) matcher(unmatched, setMatched, context, xml);
546                        if (seed) {
547                            if (matchedCount > 0)
548                                for (; i--;) unmatched[i] || setMatched[i] || (setMatched[i] = pop.call(results));
549                            setMatched = condense(setMatched)
550                        }
551                        push.apply(results, setMatched), outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1 && Sizzle.uniqueSort(results)
552                    }
553                    return outermost && (dirruns = dirrunsUnique, outermostContext = contextBackup), unmatched
554                };
555            return bySet ? markFunction(superMatcher) : superMatcher
556        }
557        var i, support, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, setDocument, document, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains, expando = "sizzle" + 1 * new Date,
558            preferredDoc = window.document,
559            dirruns = 0,
560            done = 0,
561            classCache = createCache(),
562            tokenCache = createCache(),
563            compilerCache = createCache(),
564            sortOrder = function(a, b) { return a === b && (hasDupl
vendor: 8,846 bytes, lines 564-630
564icate = !0), 0 },
565            hasOwn = {}.hasOwnProperty,
566            arr = [],
567            pop = arr.pop,
568            push_native = arr.push,
569            push = arr.push,
570            slice = arr.slice,
571            indexOf = function(list, elem) {
572                for (var i = 0, len = list.length; i < len; i++)
573                    if (list[i] === elem) return i;
574                return -1
575            },
576            booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
577            whitespace = "[\\x20\\t\\r\\n\\f]",
578            identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
579            attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + "*([*^$|!~]?=)" + whitespace + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]",
580            pseudos = ":(" + identifier + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|.*)\\)|)",
581            rwhitespace = new RegExp(whitespace + "+", "g"),
582            rtrim = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"),
583            rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"),
584            rcombinators = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"),
585            rattributeQuotes = new RegExp("=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g"),
586            rpseudo = new RegExp(pseudos),
587            ridentifier = new RegExp("^" + identifier + "$"),
588            matchExpr = { ID: new RegExp("^#(" + identifier + ")"), CLASS: new RegExp("^\\.(" + identifier + ")"), TAG: new RegExp("^(" + identifier + "|[*])"), ATTR: new RegExp("^" + attributes), PSEUDO: new RegExp("^" + pseudos), CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"), bool: new RegExp("^(?:" + booleans + ")$", "i"), needsContext: new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i") },
589            rinputs = /^(?:input|select|textarea|button)$/i,
590            rheader = /^h\d$/i,
591            rnative = /^[^{]+\{\s*\[native \w/,
592            rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
593            rsibling = /[+~]/,
594            runescape = new RegExp("\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig"),
595            funescape = function(_, escaped, escapedWhitespace) { var high = "0x" + escaped - 65536; return high !== high || escapedWhitespace ? escaped : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, 1023 & high | 56320) },
596            rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
597            fcssescape = function(ch, asCodePoint) { return asCodePoint ? "\0" === ch ? "�" : ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " " : "\\" + ch },
598            unloadHandler = function() { setDocument() },
599            disabledAncestor = addCombinator(function(elem) { return elem.disabled === !0 && ("form" in elem || "label" in elem) }, { dir: "parentNode", next: "legend" });
600        try { push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes), arr[preferredDoc.childNodes.length].nodeType } catch (e) {
601            push = {
602                apply: arr.length ? function(target, els) { push_native.apply(target, slice.call(els)) } : function(target, els) {
603                    for (var j = target.length, i = 0; target[j++] = els[i++];);
604                    target.length = j - 1
605                }
606            }
607        }
608        support = Sizzle.support = {}, isXML = Sizzle.isXML = function(elem) { var documentElement = elem && (elem.ownerDocument || elem).documentElement; return !!documentElement && "HTML" !== documentElement.nodeName }, setDocument = Sizzle.setDocument = function(node) {
609            var hasCompare, subWindow, doc = node ? node.ownerDocument || node : preferredDoc;
610            return doc !== document && 9 === doc.nodeType && doc.documentElement ? (document = doc, docElem = document.documentElement, documentIsHTML = !isXML(document), preferredDoc !== document && (subWindow = document.defaultView) && subWindow.top !== subWindow && (subWindow.addEventListener ? subWindow.addEventListener("unload", unloadHandler, !1) : subWindow.attachEvent && subWindow.attachEvent("onunload", unloadHandler)), support.attributes = assert(function(el) { return el.className = "i", !el.getAttribute("className") }), support.getElementsByTagName = assert(function(el) { return el.appendChild(document.createComment("")), !el.getElementsByTagName("*").length }), support.getElementsByClassName = rnative.test(document.getElementsByClassName), support.getById = assert(function(el) { return docElem.appendChild(el).id = expando, !document.getElementsByName || !document.getElementsByName(expando).length }), support.getById ? (Expr.filter.ID = function(id) { var attrId = id.replace(runescape, funescape); return function(elem) { return elem.getAttribute("id") === attrId } }, Expr.find.ID = function(id, context) { if ("undefined" != typeof context.getElementById && documentIsHTML) { var elem = context.getElementById(id); return elem ? [elem] : [] } }) : (Expr.filter.ID = function(id) { var attrId = id.replace(runescape, funescape); return function(elem) { var node = "undefined" != typeof elem.getAttributeNode && elem.getAttributeNode("id"); return node && node.value === attrId } }, Expr.find.ID = function(id, context) {
611                if ("undefined" != typeof context.getElementById && documentIsHTML) {
612                    var node, i, elems, elem = context.getElementById(id);
613                    if (elem) {
614                        if (node = elem.getAttributeNode("id"), node && node.value === id) return [elem];
615                        for (elems = context.getElementsByName(id), i = 0; elem = elems[i++];)
616                            if (node = elem.getAttributeNode("id"), node && node.value === id) return [elem]
617                    }
618                    return []
619                }
620            }), Expr.find.TAG = support.getElementsByTagName ? function(tag, context) { return "undefined" != typeof context.getElementsByTagName ? context.getElementsByTagName(tag) : support.qsa ? context.querySelectorAll(tag) : void 0 } : function(tag, context) {
621                var elem, tmp = [],
622                    i = 0,
623                    results = context.getElementsByTagName(tag);
624                if ("*" === tag) { for (; elem = results[i++];) 1 === elem.nodeType && tmp.push(elem); return tmp }
625                return results
626            }, Expr.find.CLASS = support.getElementsByClassName && function(className, context) { if ("undefined" != typeof context.getElementsByClassName && documentIsHTML) return context.getElementsByClassName(className) }, rbuggyMatches = [], rbuggyQSA = [], (support.qsa = rnative.test(document.querySelectorAll)) && (assert(function(el) { docElem.appendChild(el).innerHTML = "<a id='" + expando + "'></a><select id='" + expando + "-\r\\' msallowcapture=''><option selected=''></option></select>", el.querySelectorAll("[msallowcapture^='']").length && rbuggyQSA.push("[*^$]=" + whitespace + "*(?:''|\"\")"), el.querySelectorAll("[selected]").length || rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")"), el.querySelectorAll("[id~=" + expando + "-]").length || rbuggyQSA.push("~="), el.querySelectorAll(":checked").length || rbuggyQSA.push(":checked"), el.querySelectorAll("a#" + expando + "+*").length || rbuggyQSA.push(".#.+[+~]") }), assert(function(el) {
627                el.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
628                var input = document.createElement("input");
629                input.setAttribute("type", "hidden"), el.appendChild(input).setAttribute("name", "D"), el.querySelectorAll("[name=d]").length && rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?="), 2 !== el.querySelectorAll(":enabled").length && rbuggyQSA.push(":enabled", ":disabled"), docElem.appendChild(el).disabled = !0, 2 !== el.querySelectorAll(":disabled").length && rbuggyQSA.push(":enabled", ":disabled"), el.querySelectorAll("*,:x"), rbuggyQSA.push(",.*:")
630            })), (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) && assert(function(el) { support.disconnectedMatch = matches.call(el, "*"), matches.call(el, "[s!='']:x"), rbuggyMatches.push("!=", pseudos) }
vendor: 20,613 bytes, lines 630-800
630), rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|")), rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|")), hasCompare = rnative.test(docElem.compareDocumentPosition), contains = hasCompare || rnative.test(docElem.contains) ? function(a, b) {
631                var adown = 9 === a.nodeType ? a.documentElement : a,
632                    bup = b && b.parentNode;
633                return a === bup || !(!bup || 1 !== bup.nodeType || !(adown.contains ? adown.contains(bup) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(bup)))
634            } : function(a, b) {
635                if (b)
636                    for (; b = b.parentNode;)
637                        if (b === a) return !0;
638                return !1
639            }, sortOrder = hasCompare ? function(a, b) { if (a === b) return hasDuplicate = !0, 0; var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; return compare ? compare : (compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1, 1 & compare || !support.sortDetached && b.compareDocumentPosition(a) === compare ? a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ? -1 : b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0 : 4 & compare ? -1 : 1) } : function(a, b) {
640                if (a === b) return hasDuplicate = !0, 0;
641                var cur, i = 0,
642                    aup = a.parentNode,
643                    bup = b.parentNode,
644                    ap = [a],
645                    bp = [b];
646                if (!aup || !bup) return a === document ? -1 : b === document ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;
647                if (aup === bup) return siblingCheck(a, b);
648                for (cur = a; cur = cur.parentNode;) ap.unshift(cur);
649                for (cur = b; cur = cur.parentNode;) bp.unshift(cur);
650                for (; ap[i] === bp[i];) i++;
651                return i ? siblingCheck(ap[i], bp[i]) : ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0
652            }, document) : document
653        }, Sizzle.matches = function(expr, elements) { return Sizzle(expr, null, null, elements) }, Sizzle.matchesSelector = function(elem, expr) {
654            if ((elem.ownerDocument || elem) !== document && setDocument(elem), expr = expr.replace(rattributeQuotes, "='$1']"), support.matchesSelector && documentIsHTML && !compilerCache[expr + " "] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) try { var ret = matches.call(elem, expr); if (ret || support.disconnectedMatch || elem.document && 11 !== elem.document.nodeType) return ret } catch (e) {}
655            return Sizzle(expr, document, null, [elem]).length > 0
656        }, Sizzle.contains = function(context, elem) { return (context.ownerDocument || context) !== document && setDocument(context), contains(context, elem) }, Sizzle.attr = function(elem, name) {
657            (elem.ownerDocument || elem) !== document && setDocument(elem);
658            var fn = Expr.attrHandle[name.toLowerCase()],
659                val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : void 0;
660            return void 0 !== val ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null
661        }, Sizzle.escape = function(sel) { return (sel + "").replace(rcssescape, fcssescape) }, Sizzle.error = function(msg) { throw new Error("Syntax error, unrecognized expression: " + msg) }, Sizzle.uniqueSort = function(results) {
662            var elem, duplicates = [],
663                j = 0,
664                i = 0;
665            if (hasDuplicate = !support.detectDuplicates, sortInput = !support.sortStable && results.slice(0), results.sort(sortOrder), hasDuplicate) { for (; elem = results[i++];) elem === results[i] && (j = duplicates.push(i)); for (; j--;) results.splice(duplicates[j], 1) }
666            return sortInput = null, results
667        }, getText = Sizzle.getText = function(elem) {
668            var node, ret = "",
669                i = 0,
670                nodeType = elem.nodeType;
671            if (nodeType) { if (1 === nodeType || 9 === nodeType || 11 === nodeType) { if ("string" == typeof elem.textContent) return elem.textContent; for (elem = elem.firstChild; elem; elem = elem.nextSibling) ret += getText(elem) } else if (3 === nodeType || 4 === nodeType) return elem.nodeValue } else
672                for (; node = elem[i++];) ret += getText(node);
673            return ret
674        }, Expr = Sizzle.selectors = {
675            cacheLength: 50,
676            createPseudo: markFunction,
677            match: matchExpr,
678            attrHandle: {},
679            find: {},
680            relative: { ">": { dir: "parentNode", first: !0 }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: !0 }, "~": { dir: "previousSibling" } },
681            preFilter: { ATTR: function(match) { return match[1] = match[1].replace(runescape, funescape), match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape), "~=" === match[2] && (match[3] = " " + match[3] + " "), match.slice(0, 4) }, CHILD: function(match) { return match[1] = match[1].toLowerCase(), "nth" === match[1].slice(0, 3) ? (match[3] || Sizzle.error(match[0]), match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * ("even" === match[3] || "odd" === match[3])), match[5] = +(match[7] + match[8] || "odd" === match[3])) : match[3] && Sizzle.error(match[0]), match }, PSEUDO: function(match) { var excess, unquoted = !match[6] && match[2]; return matchExpr.CHILD.test(match[0]) ? null : (match[3] ? match[2] = match[4] || match[5] || "" : unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, !0)) && (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length) && (match[0] = match[0].slice(0, excess), match[2] = unquoted.slice(0, excess)), match.slice(0, 3)) } },
682            filter: {
683                TAG: function(nodeNameSelector) { var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase(); return "*" === nodeNameSelector ? function() { return !0 } : function(elem) { return elem.nodeName && elem.nodeName.toLowerCase() === nodeName } },
684                CLASS: function(className) { var pattern = classCache[className + " "]; return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function(elem) { return pattern.test("string" == typeof elem.className && elem.className || "undefined" != typeof elem.getAttribute && elem.getAttribute("class") || "") }) },
685                ATTR: function(name, operator, check) { return function(elem) { var result = Sizzle.attr(elem, name); return null == result ? "!=" === operator : !operator || (result += "", "=" === operator ? result === check : "!=" === operator ? result !== check : "^=" === operator ? check && 0 === result.indexOf(check) : "*=" === operator ? check && result.indexOf(check) > -1 : "$=" === operator ? check && result.slice(-check.length) === check : "~=" === operator ? (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1 : "|=" === operator && (result === check || result.slice(0, check.length + 1) === check + "-")) } },
686                CHILD: function(type, what, argument, first, last) {
687                    var simple = "nth" !== type.slice(0, 3),
688                        forward = "last" !== type.slice(-4),
689                        ofType = "of-type" === what;
690                    return 1 === first && 0 === last ? function(elem) { return !!elem.parentNode } : function(elem, context, xml) {
691                        var cache, uniqueCache, outerCache, node, nodeIndex, start, dir = simple !== forward ? "nextSibling" : "previousSibling",
692                            parent = elem.parentNode,
693                            name = ofType && elem.nodeName.toLowerCase(),
694                            useCache = !xml && !ofType,
695                            diff = !1;
696                        if (parent) {
697                            if (simple) {
698                                for (; dir;) {
699                                    for (node = elem; node = node[dir];)
700                                        if (ofType ? node.nodeName.toLowerCase() === name : 1 === node.nodeType) return !1;
701                                    start = dir = "only" === type && !start && "nextSibling"
702                                }
703                                return !0
704                            }
705                            if (start = [forward ? parent.firstChild : parent.lastChild], forward && useCache) {
706                                for (node = parent, outerCache = node[expando] || (node[expando] = {}), uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {}), cache = uniqueCache[type] || [], nodeIndex = cache[0] === dirruns && cache[1], diff = nodeIndex && cache[2], node = nodeIndex && parent.childNodes[nodeIndex]; node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop();)
707                                    if (1 === node.nodeType && ++diff && node === elem) { uniqueCache[type] = [dirruns, nodeIndex, diff]; break }
708                            } else if (useCache && (node = elem, outerCache = node[expando] || (node[expando] = {}), uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {}), cache = uniqueCache[type] || [], nodeIndex = cache[0] === dirruns && cache[1], diff = nodeIndex), diff === !1)
709                                for (;
710                                    (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) && ((ofType ? node.nodeName.toLowerCase() !== name : 1 !== node.nodeType) || !++diff || (useCache && (outerCache = node[expando] || (node[expando] = {}), uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {}), uniqueCache[type] = [dirruns, diff]), node !== elem)););
711                            return diff -= last, diff === first || diff % first === 0 && diff / first >= 0
712                        }
713                    }
714                },
715                PSEUDO: function(pseudo, argument) { var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error("unsupported pseudo: " + pseudo); return fn[expando] ? fn(argument) : fn.length > 1 ? (args = [pseudo, pseudo, "", argument], Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function(seed, matches) { for (var idx, matched = fn(seed, argument), i = matched.length; i--;) idx = indexOf(seed, matched[i]), seed[idx] = !(matches[idx] = matched[i]) }) : function(elem) { return fn(elem, 0, args) }) : fn }
716            },
717            pseudos: {
718                not: markFunction(function(selector) {
719                    var input = [],
720                        results = [],
721                        matcher = compile(selector.replace(rtrim, "$1"));
722                    return matcher[expando] ? markFunction(function(seed, matches, context, xml) { for (var elem, unmatched = matcher(seed, null, xml, []), i = seed.length; i--;)(elem = unmatched[i]) && (seed[i] = !(matches[i] = elem)) }) : function(elem, context, xml) { return input[0] = elem, matcher(input, null, xml, results), input[0] = null, !results.pop() }
723                }),
724                has: markFunction(function(selector) { return function(elem) { return Sizzle(selector, elem).length > 0 } }),
725                contains: markFunction(function(text) {
726                    return text = text.replace(runescape, funescape),
727                        function(elem) { return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1 }
728                }),
729                lang: markFunction(function(lang) {
730                    return ridentifier.test(lang || "") || Sizzle.error("unsupported lang: " + lang), lang = lang.replace(runescape, funescape).toLowerCase(),
731                        function(elem) {
732                            var elemLang;
733                            do
734                                if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) return elemLang = elemLang.toLowerCase(), elemLang === lang || 0 === elemLang.indexOf(lang + "-");
735                            while ((elem = elem.parentNode) && 1 === elem.nodeType);
736                            return !1
737                        }
738                }),
739                target: function(elem) { var hash = window.location && window.location.hash; return hash && hash.slice(1) === elem.id },
740                root: function(elem) { return elem === docElem },
741                focus: function(elem) { return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex) },
742                enabled: createDisabledPseudo(!1),
743                disabled: createDisabledPseudo(!0),
744                checked: function(elem) { var nodeName = elem.nodeName.toLowerCase(); return "input" === nodeName && !!elem.checked || "option" === nodeName && !!elem.selected },
745                selected: function(elem) { return elem.parentNode && elem.parentNode.selectedIndex, elem.selected === !0 },
746                empty: function(elem) {
747                    for (elem = elem.firstChild; elem; elem = elem.nextSibling)
748                        if (elem.nodeType < 6) return !1;
749                    return !0
750                },
751                parent: function(elem) { return !Expr.pseudos.empty(elem) },
752                header: function(elem) { return rheader.test(elem.nodeName) },
753                input: function(elem) { return rinputs.test(elem.nodeName) },
754                button: function(elem) { var name = elem.nodeName.toLowerCase(); return "input" === name && "button" === elem.type || "button" === name },
755                text: function(elem) { var attr; return "input" === elem.nodeName.toLowerCase() && "text" === elem.type && (null == (attr = elem.getAttribute("type")) || "text" === attr.toLowerCase()) },
756                first: createPositionalPseudo(function() { return [0] }),
757                last: createPositionalPseudo(function(matchIndexes, length) { return [length - 1] }),
758                eq: createPositionalPseudo(function(matchIndexes, length, argument) { return [argument < 0 ? argument + length : argument] }),
759                even: createPositionalPseudo(function(matchIndexes, length) { for (var i = 0; i < length; i += 2) matchIndexes.push(i); return matchIndexes }),
760                odd: createPositionalPseudo(function(matchIndexes, length) { for (var i = 1; i < length; i += 2) matchIndexes.push(i); return matchIndexes }),
761                lt: createPositionalPseudo(function(matchIndexes, length, argument) { for (var i = argument < 0 ? argument + length : argument; --i >= 0;) matchIndexes.push(i); return matchIndexes }),
762                gt: createPositionalPseudo(function(matchIndexes, length, argument) { for (var i = argument < 0 ? argument + length : argument; ++i < length;) matchIndexes.push(i); return matchIndexes })
763            }
764        }, Expr.pseudos.nth = Expr.pseudos.eq;
765        for (i in { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 }) Expr.pseudos[i] = createInputPseudo(i);
766        for (i in { submit: !0, reset: !0 }) Expr.pseudos[i] = createButtonPseudo(i);
767        return setFilters.prototype = Expr.filters = Expr.pseudos, Expr.setFilters = new setFilters, tokenize = Sizzle.tokenize = function(selector, parseOnly) { var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + " "]; if (cached) return parseOnly ? 0 : cached.slice(0); for (soFar = selector, groups = [], preFilters = Expr.preFilter; soFar;) { matched && !(match = rcomma.exec(soFar)) || (match && (soFar = soFar.slice(match[0].length) || soFar), groups.push(tokens = [])), matched = !1, (match = rcombinators.exec(soFar)) && (matched = match.shift(), tokens.push({ value: matched, type: match[0].replace(rtrim, " ") }), soFar = soFar.slice(matched.length)); for (type in Expr.filter) !(match = matchExpr[type].exec(soFar)) || preFilters[type] && !(match = preFilters[type](match)) || (matched = match.shift(), tokens.push({ value: matched, type: type, matches: match }), soFar = soFar.slice(matched.length)); if (!matched) break } return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0) }, compile = Sizzle.compile = function(selector, match) {
768            var i, setMatchers = [],
769                elementMatchers = [],
770                cached = compilerCache[selector + " "];
771            if (!cached) {
772                for (match || (match = tokenize(selector)), i = match.length; i--;) cached = matcherFromTokens(match[i]), cached[expando] ? setMatchers.push(cached) : elementMatchers.push(cached);
773                cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)), cached.selector = selector
774            }
775            return cached
776        }, select = Sizzle.select = function(selector, context, results, seed) {
777            var i, tokens, token, type, find, compiled = "function" == typeof selector && selector,
778                match = !seed && tokenize(selector = compiled.selector || selector);
779            if (results = results || [], 1 === match.length) {
780                if (tokens = match[0] = match[0].slice(0), tokens.length > 2 && "ID" === (token = tokens[0]).type && 9 === context.nodeType && documentIsHTML && Expr.relative[tokens[1].type]) {
781                    if (context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0], !context) return results;
782                    compiled && (context = context.parentNode), selector = selector.slice(tokens.shift().value.length)
783                }
784                for (i = matchExpr.needsContext.test(selector) ? 0 : tokens.length; i-- && (token = tokens[i], !Expr.relative[type = token.type]);)
785                    if ((find = Expr.find[type]) && (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context))) { if (tokens.splice(i, 1), selector = seed.length && toSelector(tokens), !selector) return push.apply(results, seed), results; break }
786            }
787            return (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context), results
788        }, support.sortStable = expando.split("").sort(sortOrder).join("") === expando, support.detectDuplicates = !!hasDuplicate, setDocument(), support.sortDetached = assert(function(el) { return 1 & el.compareDocumentPosition(document.createElement("fieldset")) }), assert(function(el) { return el.innerHTML = "<a href='#'></a>", "#" === el.firstChild.getAttribute("href") }) || addHandle("type|href|height|width", function(elem, name, isXML) { if (!isXML) return elem.getAttribute(name, "type" === name.toLowerCase() ? 1 : 2) }), support.attributes && assert(function(el) { return el.innerHTML = "<input/>", el.firstChild.setAttribute("value", ""), "" === el.firstChild.getAttribute("value") }) || addHandle("value", function(elem, name, isXML) { if (!isXML && "input" === elem.nodeName.toLowerCase()) return elem.defaultValue }), assert(function(el) { return null == el.getAttribute("disabled") }) || addHandle(booleans, function(elem, name, isXML) { var val; if (!isXML) return elem[name] === !0 ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null }), Sizzle
789    }(window);
790    jQuery.find = Sizzle, jQuery.expr = Sizzle.selectors, jQuery.expr[":"] = jQuery.expr.pseudos, jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort, jQuery.text = Sizzle.getText, jQuery.isXMLDoc = Sizzle.isXML, jQuery.contains = Sizzle.contains, jQuery.escapeSelector = Sizzle.escape;
791    var dir = function(elem, dir, until) {
792            for (var matched = [], truncate = void 0 !== until;
793                (elem = elem[dir]) && 9 !== elem.nodeType;)
794                if (1 === elem.nodeType) {
795                    if (truncate && jQuery(elem).is(until)) break;
796                    matched.push(elem)
797                }
798            return matched
799        },
800        siblings = function(n, elem) { for (var matched = []; n; n = n.nextSibling) 1 === n.nodeType && n !== elem && matched.push(n); return matched },
vendor: 20,435 bytes, lines 801-1025
801        rneedsContext = jQuery.expr.match.needsContext,
802        rsingleTag = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,
803        risSimple = /^.[^:#\[\.,]*$/;
804    jQuery.filter = function(expr, elems, not) { var elem = elems[0]; return not && (expr = ":not(" + expr + ")"), 1 === elems.length && 1 === elem.nodeType ? jQuery.find.matchesSelector(elem, expr) ? [elem] : [] : jQuery.find.matches(expr, jQuery.grep(elems, function(elem) { return 1 === elem.nodeType })) }, jQuery.fn.extend({
805        find: function(selector) {
806            var i, ret, len = this.length,
807                self = this;
808            if ("string" != typeof selector) return this.pushStack(jQuery(selector).filter(function() {
809                for (i = 0; i < len; i++)
810                    if (jQuery.contains(self[i], this)) return !0
811            }));
812            for (ret = this.pushStack([]), i = 0; i < len; i++) jQuery.find(selector, self[i], ret);
813            return len > 1 ? jQuery.uniqueSort(ret) : ret
814        },
815        filter: function(selector) { return this.pushStack(winnow(this, selector || [], !1)) },
816        not: function(selector) { return this.pushStack(winnow(this, selector || [], !0)) },
817        is: function(selector) { return !!winnow(this, "string" == typeof selector && rneedsContext.test(selector) ? jQuery(selector) : selector || [], !1).length }
818    });
819    var rootjQuery, rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
820        init = jQuery.fn.init = function(selector, context, root) {
821            var match, elem;
822            if (!selector) return this;
823            if (root = root || rootjQuery, "string" == typeof selector) {
824                if (match = "<" === selector[0] && ">" === selector[selector.length - 1] && selector.length >= 3 ? [null, selector, null] : rquickExpr.exec(selector), !match || !match[1] && context) return !context || context.jquery ? (context || root).find(selector) : this.constructor(context).find(selector);
825                if (match[1]) {
826                    if (context = context instanceof jQuery ? context[0] : context, jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, !0)), rsingleTag.test(match[1]) && jQuery.isPlainObject(context))
827                        for (match in context) jQuery.isFunction(this[match]) ? this[match](context[match]) : this.attr(match, context[match]);
828                    return this
829                }
830                return elem = document.getElementById(match[2]), elem && (this[0] = elem, this.length = 1), this
831            }
832            return selector.nodeType ? (this[0] = selector, this.length = 1, this) : jQuery.isFunction(selector) ? void 0 !== root.ready ? root.ready(selector) : selector(jQuery) : jQuery.makeArray(selector, this)
833        };
834    init.prototype = jQuery.fn, rootjQuery = jQuery(document);
835    var rparentsprev = /^(?:parents|prev(?:Until|All))/,
836        guaranteedUnique = { children: !0, contents: !0, next: !0, prev: !0 };
837    jQuery.fn.extend({
838        has: function(target) {
839            var targets = jQuery(target, this),
840                l = targets.length;
841            return this.filter(function() {
842                for (var i = 0; i < l; i++)
843                    if (jQuery.contains(this, targets[i])) return !0
844            })
845        },
846        closest: function(selectors, context) {
847            var cur, i = 0,
848                l = this.length,
849                matched = [],
850                targets = "string" != typeof selectors && jQuery(selectors);
851            if (!rneedsContext.test(selectors))
852                for (; i < l; i++)
853                    for (cur = this[i]; cur && cur !== context; cur = cur.parentNode)
854                        if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : 1 === cur.nodeType && jQuery.find.matchesSelector(cur, selectors))) { matched.push(cur); break }
855            return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched)
856        },
857        index: function(elem) { return elem ? "string" == typeof elem ? indexOf.call(jQuery(elem), this[0]) : indexOf.call(this, elem.jquery ? elem[0] : elem) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1 },
858        add: function(selector, context) { return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context)))) },
859        addBack: function(selector) { return this.add(null == selector ? this.prevObject : this.prevObject.filter(selector)) }
860    }), jQuery.each({ parent: function(elem) { var parent = elem.parentNode; return parent && 11 !== parent.nodeType ? parent : null }, parents: function(elem) { return dir(elem, "parentNode") }, parentsUntil: function(elem, i, until) { return dir(elem, "parentNode", until) }, next: function(elem) { return sibling(elem, "nextSibling") }, prev: function(elem) { return sibling(elem, "previousSibling") }, nextAll: function(elem) { return dir(elem, "nextSibling") }, prevAll: function(elem) { return dir(elem, "previousSibling") }, nextUntil: function(elem, i, until) { return dir(elem, "nextSibling", until) }, prevUntil: function(elem, i, until) { return dir(elem, "previousSibling", until) }, siblings: function(elem) { return siblings((elem.parentNode || {}).firstChild, elem) }, children: function(elem) { return siblings(elem.firstChild) }, contents: function(elem) { return elem.contentDocument || jQuery.merge([], elem.childNodes) } }, function(name, fn) { jQuery.fn[name] = function(until, selector) { var matched = jQuery.map(this, fn, until); return "Until" !== name.slice(-5) && (selector = until), selector && "string" == typeof selector && (matched = jQuery.filter(selector, matched)), this.length > 1 && (guaranteedUnique[name] || jQuery.uniqueSort(matched), rparentsprev.test(name) && matched.reverse()), this.pushStack(matched) } });
861    var rnothtmlwhite = /[^\x20\t\r\n\f]+/g;
862    jQuery.Callbacks = function(options) {
863        options = "string" == typeof options ? createOptions(options) : jQuery.extend({}, options);
864        var firing, memory, fired, locked, list = [],
865            queue = [],
866            firingIndex = -1,
867            fire = function() {
868                for (locked = options.once, fired = firing = !0; queue.length; firingIndex = -1)
869                    for (memory = queue.shift(); ++firingIndex < list.length;) list[firingIndex].apply(memory[0], memory[1]) === !1 && options.stopOnFalse && (firingIndex = list.length, memory = !1);
870                options.memory || (memory = !1), firing = !1, locked && (list = memory ? [] : "")
871            },
872            self = {
873                add: function() { return list && (memory && !firing && (firingIndex = list.length - 1, queue.push(memory)), function add(args) { jQuery.each(args, function(_, arg) { jQuery.isFunction(arg) ? options.unique && self.has(arg) || list.push(arg) : arg && arg.length && "string" !== jQuery.type(arg) && add(arg) }) }(arguments), memory && !firing && fire()), this },
874                remove: function() {
875                    return jQuery.each(arguments, function(_, arg) {
876                        for (var index;
877                            (index = jQuery.inArray(arg, list, index)) > -1;) list.splice(index, 1), index <= firingIndex && firingIndex--
878                    }), this
879                },
880                has: function(fn) { return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0 },
881                empty: function() { return list && (list = []), this },
882                disable: function() { return locked = queue = [], list = memory = "", this },
883                disabled: function() { return !list },
884                lock: function() { return locked = queue = [], memory || firing || (list = memory = ""), this },
885                locked: function() { return !!locked },
886                fireWith: function(context, args) {
887                    return locked || (args = args || [], args = [context, args.slice ? args.slice() : args],
888                        queue.push(args), firing || fire()), this
889                },
890                fire: function() { return self.fireWith(this, arguments), this },
891                fired: function() { return !!fired }
892            };
893        return self
894    }, jQuery.extend({
895        Deferred: function(func) {
896            var tuples = [
897                    ["notify", "progress", jQuery.Callbacks("memory"), jQuery.Callbacks("memory"), 2],
898                    ["resolve", "done", jQuery.Callbacks("once memory"), jQuery.Callbacks("once memory"), 0, "resolved"],
899                    ["reject", "fail", jQuery.Callbacks("once memory"), jQuery.Callbacks("once memory"), 1, "rejected"]
900                ],
901                state = "pending",
902                promise = {
903                    state: function() { return state },
904                    always: function() { return deferred.done(arguments).fail(arguments), this },
905                    catch: function(fn) { return promise.then(null, fn) },
906                    pipe: function() {
907                        var fns = arguments;
908                        return jQuery.Deferred(function(newDefer) {
909                            jQuery.each(tuples, function(i, tuple) {
910                                var fn = jQuery.isFunction(fns[tuple[4]]) && fns[tuple[4]];
911                                deferred[tuple[1]](function() {
912                                    var returned = fn && fn.apply(this, arguments);
913                                    returned && jQuery.isFunction(returned.promise) ? returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject) : newDefer[tuple[0] + "With"](this, fn ? [returned] : arguments)
914                                })
915                            }), fns = null
916                        }).promise()
917                    },
918                    then: function(onFulfilled, onRejected, onProgress) {
919                        function resolve(depth, deferred, handler, special) {
920                            return function() {
921                                var that = this,
922                                    args = arguments,
923                                    mightThrow = function() {
924                                        var returned, then;
925                                        if (!(depth < maxDepth)) {
926                                            if (returned = handler.apply(that, args), returned === deferred.promise()) throw new TypeError("Thenable self-resolution");
927                                            then = returned && ("object" == typeof returned || "function" == typeof returned) && returned.then, jQuery.isFunction(then) ? special ? then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special)) : (maxDepth++, then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith))) : (handler !== Identity && (that = void 0, args = [returned]), (special || deferred.resolveWith)(that, args))
928                                        }
929                                    },
930                                    process = special ? mightThrow : function() { try { mightThrow() } catch (e) { jQuery.Deferred.exceptionHook && jQuery.Deferred.exceptionHook(e, process.stackTrace), depth + 1 >= maxDepth && (handler !== Thrower && (that = void 0, args = [e]), deferred.rejectWith(that, args)) } };
931                                depth ? process() : (jQuery.Deferred.getStackHook && (process.stackTrace = jQuery.Deferred.getStackHook()), window.setTimeout(process))
932                            }
933                        }
934                        var maxDepth = 0;
935                        return jQuery.Deferred(function(newDefer) { tuples[0][3].add(resolve(0, newDefer, jQuery.isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith)), tuples[1][3].add(resolve(0, newDefer, jQuery.isFunction(onFulfilled) ? onFulfilled : Identity)), tuples[2][3].add(resolve(0, newDefer, jQuery.isFunction(onRejected) ? onRejected : Thrower)) }).promise()
936                    },
937                    promise: function(obj) { return null != obj ? jQuery.extend(obj, promise) : promise }
938                },
939                deferred = {};
940            return jQuery.each(tuples, function(i, tuple) {
941                var list = tuple[2],
942                    stateString = tuple[5];
943                promise[tuple[1]] = list.add, stateString && list.add(function() { state = stateString }, tuples[3 - i][2].disable, tuples[0][2].lock), list.add(tuple[3].fire), deferred[tuple[0]] = function() { return deferred[tuple[0] + "With"](this === deferred ? void 0 : this, arguments), this }, deferred[tuple[0] + "With"] = list.fireWith
944            }), promise.promise(deferred), func && func.call(deferred, deferred), deferred
945        },
946        when: function(singleValue) {
947            var remaining = arguments.length,
948                i = remaining,
949                resolveContexts = Array(i),
950                resolveValues = slice.call(arguments),
951                master = jQuery.Deferred(),
952                updateFunc = function(i) { return function(value) { resolveContexts[i] = this, resolveValues[i] = arguments.length > 1 ? slice.call(arguments) : value, --remaining || master.resolveWith(resolveContexts, resolveValues) } };
953            if (remaining <= 1 && (adoptValue(singleValue, master.done(updateFunc(i)).resolve, master.reject), "pending" === master.state() || jQuery.isFunction(resolveValues[i] && resolveValues[i].then))) return master.then();
954            for (; i--;) adoptValue(resolveValues[i], updateFunc(i), master.reject);
955            return master.promise()
956        }
957    });
958    var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
959    jQuery.Deferred.exceptionHook = function(error, stack) { window.console && window.console.warn && error && rerrorNames.test(error.name) && window.console.warn("jQuery.Deferred exception: " + error.message, error.stack, stack) }, jQuery.readyException = function(error) { window.setTimeout(function() { throw error }) };
960    var readyList = jQuery.Deferred();
961    jQuery.fn.ready = function(fn) { return readyList.then(fn).catch(function(error) { jQuery.readyException(error) }), this }, jQuery.extend({
962        isReady: !1,
963        readyWait: 1,
964        holdReady: function(hold) { hold ? jQuery.readyWait++ : jQuery.ready(!0) },
965        ready: function(wait) {
966            (wait === !0 ? --jQuery.readyWait : jQuery.isReady) || (jQuery.isReady = !0, wait !== !0 && --jQuery.readyWait > 0 || readyList.resolveWith(document, [jQuery]))
967        }
968    }), jQuery.ready.then = readyList.then, "complete" === document.readyState || "loading" !== document.readyState && !document.documentElement.doScroll ? window.setTimeout(jQuery.ready) : (document.addEventListener("DOMContentLoaded", completed), window.addEventListener("load", completed));
969    var access = function(elems, fn, key, value, chainable, emptyGet, raw) {
970            var i = 0,
971                len = elems.length,
972                bulk = null == key;
973            if ("object" === jQuery.type(key)) { chainable = !0; for (i in key) access(elems, fn, i, key[i], !0, emptyGet, raw) } else if (void 0 !== value && (chainable = !0, jQuery.isFunction(value) || (raw = !0), bulk && (raw ? (fn.call(elems, value), fn = null) : (bulk = fn, fn = function(elem, key, value) { return bulk.call(jQuery(elem), value) })), fn))
974                for (; i < len; i++) fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));
975            return chainable ? elems : bulk ? fn.call(elems) : len ? fn(elems[0], key) : emptyGet
976        },
977        acceptData = function(owner) { return 1 === owner.nodeType || 9 === owner.nodeType || !+owner.nodeType };
978    Data.uid = 1, Data.prototype = {
979        cache: function(owner) { var value = owner[this.expando]; return value || (value = {}, acceptData(owner) && (owner.nodeType ? owner[this.expando] = value : Object.defineProperty(owner, this.expando, { value: value, configurable: !0 }))), value },
980        set: function(owner, data, value) {
981            var prop, cache = this.cache(owner);
982            if ("string" == typeof data) cache[jQuery.camelCase(data)] = value;
983            else
984                for (prop in data) cache[jQuery.camelCase(prop)] = data[prop];
985            return cache
986        },
987        get: function(owner, key) { return void 0 === key ? this.cache(owner) : owner[this.expando] && owner[this.expando][jQuery.camelCase(key)] },
988        access: function(owner, key, value) { return void 0 === key || key && "string" == typeof key && void 0 === value ? this.get(owner, key) : (this.set(owner, key, value), void 0 !== value ? value : key) },
989        remove: function(owner, key) { var i, cache = owner[this.expando]; if (void 0 !== cache) { if (void 0 !== key) { jQuery.isArray(key) ? key = key.map(jQuery.camelCase) : (key = jQuery.camelCase(key), key = key in cache ? [key] : key.match(rnothtmlwhite) || []), i = key.length; for (; i--;) delete cache[key[i]] }(void 0 === key || jQuery.isEmptyObject(cache)) && (owner.nodeType ? owner[this.expando] = void 0 : delete owner[this.expando]) } },
990        hasData: function(owner) { var cache = owner[this.expando]; return void 0 !== cache && !jQuery.isEmptyObject(cache) }
991    };
992    var dataPriv = new Data,
993        dataUser = new Data,
994        rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
995        rmultiDash = /[A-Z]/g;
996    jQuery.extend({ hasData: function(elem) { return dataUser.hasData(elem) || dataPriv.hasData(elem) }, data: function(elem, name, data) { return dataUser.access(elem, name, data) }, removeData: function(elem, name) { dataUser.remove(elem, name) }, _data: function(elem, name, data) { return dataPriv.access(elem, name, data) }, _removeData: function(elem, name) { dataPriv.remove(elem, name) } }), jQuery.fn.extend({
997        data: function(key, value) {
998            var i, name, data, elem = this[0],
999                attrs = elem && elem.attributes;
1000            if (void 0 === key) {
1001                if (this.length && (data = dataUser.get(elem), 1 === elem.nodeType && !dataPriv.get(elem, "hasDataAttrs"))) {
1002                    for (i = attrs.length; i--;) attrs[i] && (name = attrs[i].name, 0 === name.indexOf("data-") && (name = jQuery.camelCase(name.slice(5)), dataAttr(elem, name, data[name])));
1003                    dataPriv.set(elem, "hasDataAttrs", !0)
1004                }
1005                return data
1006            }
1007            return "object" == typeof key ? this.each(function() { dataUser.set(this, key) }) : access(this, function(value) { var data; if (elem && void 0 === value) { if (data = dataUser.get(elem, key), void 0 !== data) return data; if (data = dataAttr(elem, key), void 0 !== data) return data } else this.each(function() { dataUser.set(this, key, value) }) }, null, value, arguments.length > 1, null, !0)
1008        },
1009        removeData: function(key) { return this.each(function() { dataUser.remove(this, key) }) }
1010    }), jQuery.extend({
1011        queue: function(elem, type, data) { var queue; if (elem) return type = (type || "fx") + "queue", queue = dataPriv.get(elem, type), data && (!queue || jQuery.isArray(data) ? queue = dataPriv.access(elem, type, jQuery.makeArray(data)) : queue.push(data)), queue || [] },
1012        dequeue: function(elem, type) {
1013            type = type || "fx";
1014            var queue = jQuery.queue(elem, type),
1015                startLength = queue.length,
1016                fn = queue.shift(),
1017                hooks = jQuery._queueHooks(elem, type),
1018                next = function() { jQuery.dequeue(elem, type) };
1019            "inprogress" === fn && (fn = queue.shift(), startLength--), fn && ("fx" === type && queue.unshift("inprogress"), delete hooks.stop, fn.call(elem, next, hooks)), !startLength && hooks && hooks.empty.fire()
1020        },
1021        _queueHooks: function(elem, type) { var key = type + "queueHooks"; return dataPriv.get(elem, key) || dataPriv.access(elem, key, { empty: jQuery.Callbacks("once memory").add(function() { dataPriv.remove(elem, [type + "queue", key]) }) }) }
1022    }), jQuery.fn.extend({
1023        queue: function(type, data) {
1024            var setter = 2;
1025            return "string" != typeof type && (data = type, type = "fx", setter--), arguments.length < setter ? jQuery.queue(this[0], type) : void 0 === data ? this 
vendor: 7,204 bytes, lines 1025-1092
1025: this.each(function() {
1026                var queue = jQuery.queue(this, type, data);
1027                jQuery._queueHooks(this, type), "fx" === type && "inprogress" !== queue[0] && jQuery.dequeue(this, type)
1028            })
1029        },
1030        dequeue: function(type) { return this.each(function() { jQuery.dequeue(this, type) }) },
1031        clearQueue: function(type) { return this.queue(type || "fx", []) },
1032        promise: function(type, obj) {
1033            var tmp, count = 1,
1034                defer = jQuery.Deferred(),
1035                elements = this,
1036                i = this.length,
1037                resolve = function() {--count || defer.resolveWith(elements, [elements]) };
1038            for ("string" != typeof type && (obj = type, type = void 0), type = type || "fx"; i--;) tmp = dataPriv.get(elements[i], type + "queueHooks"), tmp && tmp.empty && (count++, tmp.empty.add(resolve));
1039            return resolve(), defer.promise(obj)
1040        }
1041    });
1042    var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
1043        rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i"),
1044        cssExpand = ["Top", "Right", "Bottom", "Left"],
1045        isHiddenWithinTree = function(elem, el) { return elem = el || elem, "none" === elem.style.display || "" === elem.style.display && jQuery.contains(elem.ownerDocument, elem) && "none" === jQuery.css(elem, "display") },
1046        swap = function(elem, options, callback, args) {
1047            var ret, name, old = {};
1048            for (name in options) old[name] = elem.style[name], elem.style[name] = options[name];
1049            ret = callback.apply(elem, args || []);
1050            for (name in options) elem.style[name] = old[name];
1051            return ret
1052        },
1053        defaultDisplayMap = {};
1054    jQuery.fn.extend({ show: function() { return showHide(this, !0) }, hide: function() { return showHide(this) }, toggle: function(state) { return "boolean" == typeof state ? state ? this.show() : this.hide() : this.each(function() { isHiddenWithinTree(this) ? jQuery(this).show() : jQuery(this).hide() }) } });
1055    var rcheckableType = /^(?:checkbox|radio)$/i,
1056        rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]+)/i,
1057        rscriptType = /^$|\/(?:java|ecma)script/i,
1058        wrapMap = { option: [1, "<select multiple='multiple'>", "</select>"], thead: [1, "<table>", "</table>"], col: [2, "<table><colgroup>", "</colgroup></table>"], tr: [2, "<table><tbody>", "</tbody></table>"], td: [3, "<table><tbody><tr>", "</tr></tbody></table>"], _default: [0, "", ""] };
1059    wrapMap.optgroup = wrapMap.option, wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead, wrapMap.th = wrapMap.td;
1060    var rhtml = /<|&#?\w+;/;
1061    ! function() {
1062        var fragment = document.createDocumentFragment(),
1063            div = fragment.appendChild(document.createElement("div")),
1064            input = document.createElement("input");
1065        input.setAttribute("type", "radio"), input.setAttribute("checked", "checked"), input.setAttribute("name", "t"), div.appendChild(input), support.checkClone = div.cloneNode(!0).cloneNode(!0).lastChild.checked, div.innerHTML = "<textarea>x</textarea>", support.noCloneChecked = !!div.cloneNode(!0).lastChild.defaultValue
1066    }();
1067    var documentElement = document.documentElement,
1068        rkeyEvent = /^key/,
1069        rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
1070        rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
1071    jQuery.event = {
1072        global: {},
1073        add: function(elem, types, handler, data, selector) {
1074            var handleObjIn, eventHandle, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.get(elem);
1075            if (elemData)
1076                for (handler.handler && (handleObjIn = handler, handler = handleObjIn.handler, selector = handleObjIn.selector), selector && jQuery.find.matchesSelector(documentElement, selector), handler.guid || (handler.guid = jQuery.guid++), (events = elemData.events) || (events = elemData.events = {}), (eventHandle = elemData.handle) || (eventHandle = elemData.handle = function(e) { return "undefined" != typeof jQuery && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : void 0 }), types = (types || "").match(rnothtmlwhite) || [""], t = types.length; t--;) tmp = rtypenamespace.exec(types[t]) || [], type = origType = tmp[1], namespaces = (tmp[2] || "").split(".").sort(), type && (special = jQuery.event.special[type] || {}, type = (selector ? special.delegateType : special.bindType) || type, special = jQuery.event.special[type] || {}, handleObj = jQuery.extend({ type: type, origType: origType, data: data, handler: handler, guid: handler.guid, selector: selector, needsContext: selector && jQuery.expr.match.needsContext.test(selector), namespace: namespaces.join(".") }, handleObjIn), (handlers = events[type]) || (handlers = events[type] = [], handlers.delegateCount = 0, special.setup && special.setup.call(elem, data, namespaces, eventHandle) !== !1 || elem.addEventListener && elem.addEventListener(type, eventHandle)), special.add && (special.add.call(elem, handleObj), handleObj.handler.guid || (handleObj.handler.guid = handler.guid)), selector ? handlers.splice(handlers.delegateCount++, 0, handleObj) : handlers.push(handleObj), jQuery.event.global[type] = !0)
1077        },
1078        remove: function(elem, types, handler, selector, mappedTypes) {
1079            var j, origCount, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.hasData(elem) && dataPriv.get(elem);
1080            if (elemData && (events = elemData.events)) {
1081                for (types = (types || "").match(rnothtmlwhite) || [""], t = types.length; t--;)
1082                    if (tmp = rtypenamespace.exec(types[t]) || [], type = origType = tmp[1], namespaces = (tmp[2] || "").split(".").sort(), type) {
1083                        for (special = jQuery.event.special[type] || {}, type = (selector ? special.delegateType : special.bindType) || type, handlers = events[type] || [], tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)"), origCount = j = handlers.length; j--;) handleObj = handlers[j], !mappedTypes && origType !== handleObj.origType || handler && handler.guid !== handleObj.guid || tmp && !tmp.test(handleObj.namespace) || selector && selector !== handleObj.selector && ("**" !== selector || !handleObj.selector) || (handlers.splice(j, 1), handleObj.selector && handlers.delegateCount--, special.remove && special.remove.call(elem, handleObj));
1084                        origCount && !handlers.length && (special.teardown && special.teardown.call(elem, namespaces, elemData.handle) !== !1 || jQuery.removeEvent(elem, type, elemData.handle), delete events[type])
1085                    } else
1086                        for (type in events) jQuery.event.remove(elem, type + types[t], handler, selector, !0);
1087                jQuery.isEmptyObject(events) && dataPriv.remove(elem, "handle events")
1088            }
1089        },
1090        dispatch: function(nativeEvent) {
1091            var i, j, ret, matched, handleObj, handlerQueue, event = jQuery.event.fix(nativeEvent),
1092                args = new Array(arguments.length),
1093                handlers = (dataPriv.get(this, "events") || {})[event.type] || [],
1094                special = jQuery.event.special[event.type] || {};
1095            for (args[0] = event, i = 1; i < arguments.length; i++) args[i] = arguments[i];
1096            if (event.delegateTarget = this, !special.preDispatch || special.preDispatch.call(this, event) !== !1) {
1097                for (handlerQueue = jQuery.event.handlers.call(this, event, handlers), i = 0;
1098                    (matched = handlerQueue[i++]) && !event.isPropagationStopped();)
1099                    for (event.currentTarget = matched.elem, j = 0;
1100                        (handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped();) event.rnamespace && !event.rnamespace.test(handleObj.namespace) || (event.handleObj = handleObj, event.data = handleObj.data, ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args), void 0 !== ret && (event.result = ret) === !1 && (event.preventDefault(), event.stopPropagation()));
1101                return special.postDispatch && special.postDispatch.call(this, event), event.result
1102            }
1103        },
1104        handlers: function(event, handlers) {
1105            var i, handleObj, sel, matchedHandlers, matchedSelectors, handlerQueue = [],
1106                delegateCount = handlers.delegateCount,
1107                cur = event.target;
1108            if (delegateCount && cur.nodeType && !("click" === event.type && event.button >= 1))
1109                for (; cur !== this; cur = cur.parentNode || this)
1110                    if (1 === cur.nodeType && ("click" !== event.type || cur.disabled !== !0)) {
1111                        for (matchedHandlers = [], matchedSelectors = {}, i = 0; i < delegateCount; i++) handleObj = handlers[i], sel = handleObj.selector + " ", void 0 === matchedSelectors[sel] && (matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length), matchedSelectors[sel] && matchedHandlers.push(handleObj);
1112                        matchedHandlers.length && handlerQueue.push({ elem: cur, handlers: matchedHandlers })
1113                    }
1114            return cur = this, delegateCount < handlers.length && handlerQueue.push({ elem: cur, handlers: handlers.slice(delegateCount) }), handlerQueue
1115        },
vendor: 25,009 bytes, lines 1116-1338
1116        addProp: function(name, hook) { Object.defineProperty(jQuery.Event.prototype, name, { enumerable: !0, configurable: !0, get: jQuery.isFunction(hook) ? function() { if (this.originalEvent) return hook(this.originalEvent) } : function() { if (this.originalEvent) return this.originalEvent[name] }, set: function(value) { Object.defineProperty(this, name, { enumerable: !0, configurable: !0, writable: !0, value: value }) } }) },
1117        fix: function(originalEvent) { return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent) },
1118        special: { load: { noBubble: !0 }, focus: { trigger: function() { if (this !== safeActiveElement() && this.focus) return this.focus(), !1 }, delegateType: "focusin" }, blur: { trigger: function() { if (this === safeActiveElement() && this.blur) return this.blur(), !1 }, delegateType: "focusout" }, click: { trigger: function() { if ("checkbox" === this.type && this.click && jQuery.nodeName(this, "input")) return this.click(), !1 }, _default: function(event) { return jQuery.nodeName(event.target, "a") } }, beforeunload: { postDispatch: function(event) { void 0 !== event.result && event.originalEvent && (event.originalEvent.returnValue = event.result) } } }
1119    }, jQuery.removeEvent = function(elem, type, handle) { elem.removeEventListener && elem.removeEventListener(type, handle) }, jQuery.Event = function(src, props) { return this instanceof jQuery.Event ? (src && src.type ? (this.originalEvent = src, this.type = src.type, this.isDefaultPrevented = src.defaultPrevented || void 0 === src.defaultPrevented && src.returnValue === !1 ? returnTrue : returnFalse, this.target = src.target && 3 === src.target.nodeType ? src.target.parentNode : src.target, this.currentTarget = src.currentTarget, this.relatedTarget = src.relatedTarget) : this.type = src, props && jQuery.extend(this, props), this.timeStamp = src && src.timeStamp || jQuery.now(), void(this[jQuery.expando] = !0)) : new jQuery.Event(src, props) }, jQuery.Event.prototype = {
1120        constructor: jQuery.Event,
1121        isDefaultPrevented: returnFalse,
1122        isPropagationStopped: returnFalse,
1123        isImmediatePropagationStopped: returnFalse,
1124        isSimulated: !1,
1125        preventDefault: function() {
1126            var e = this.originalEvent;
1127            this.isDefaultPrevented = returnTrue, e && !this.isSimulated && e.preventDefault()
1128        },
1129        stopPropagation: function() {
1130            var e = this.originalEvent;
1131            this.isPropagationStopped = returnTrue, e && !this.isSimulated && e.stopPropagation()
1132        },
1133        stopImmediatePropagation: function() {
1134            var e = this.originalEvent;
1135            this.isImmediatePropagationStopped = returnTrue, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation()
1136        }
1137    }, jQuery.each({ altKey: !0, bubbles: !0, cancelable: !0, changedTouches: !0, ctrlKey: !0, detail: !0, eventPhase: !0, metaKey: !0, pageX: !0, pageY: !0, shiftKey: !0, view: !0, char: !0, charCode: !0, key: !0, keyCode: !0, button: !0, buttons: !0, clientX: !0, clientY: !0, offsetX: !0, offsetY: !0, pointerId: !0, pointerType: !0, screenX: !0, screenY: !0, targetTouches: !0, toElement: !0, touches: !0, which: function(event) { var button = event.button; return null == event.which && rkeyEvent.test(event.type) ? null != event.charCode ? event.charCode : event.keyCode : !event.which && void 0 !== button && rmouseEvent.test(event.type) ? 1 & button ? 1 : 2 & button ? 3 : 4 & button ? 2 : 0 : event.which } }, jQuery.event.addProp), jQuery.each({ mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }, function(orig, fix) {
1138        jQuery.event.special[orig] = {
1139            delegateType: fix,
1140            bindType: fix,
1141            handle: function(event) {
1142                var ret, target = this,
1143                    related = event.relatedTarget,
1144                    handleObj = event.handleObj;
1145                return related && (related === target || jQuery.contains(target, related)) || (event.type = handleObj.origType, ret = handleObj.handler.apply(this, arguments), event.type = fix), ret
1146            }
1147        }
1148    }), jQuery.fn.extend({ on: function(types, selector, data, fn) { return on(this, types, selector, data, fn) }, one: function(types, selector, data, fn) { return on(this, types, selector, data, fn, 1) }, off: function(types, selector, fn) { var handleObj, type; if (types && types.preventDefault && types.handleObj) return handleObj = types.handleObj, jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler), this; if ("object" == typeof types) { for (type in types) this.off(type, selector, types[type]); return this } return selector !== !1 && "function" != typeof selector || (fn = selector, selector = void 0), fn === !1 && (fn = returnFalse), this.each(function() { jQuery.event.remove(this, types, fn, selector) }) } });
1149    var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
1150        rnoInnerhtml = /<script|<style|<link/i,
1151        rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
1152        rscriptTypeMasked = /^true\/(.*)/,
1153        rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
1154    jQuery.extend({
1155        htmlPrefilter: function(html) { return html.replace(rxhtmlTag, "<$1></$2>") },
1156        clone: function(elem, dataAndEvents, deepDataAndEvents) {
1157            var i, l, srcElements, destElements, clone = elem.cloneNode(!0),
1158                inPage = jQuery.contains(elem.ownerDocument, elem);
1159            if (!(support.noCloneChecked || 1 !== elem.nodeType && 11 !== elem.nodeType || jQuery.isXMLDoc(elem)))
1160                for (destElements = getAll(clone), srcElements = getAll(elem), i = 0, l = srcElements.length; i < l; i++) fixInput(srcElements[i], destElements[i]);
1161            if (dataAndEvents)
1162                if (deepDataAndEvents)
1163                    for (srcElements = srcElements || getAll(elem), destElements = destElements || getAll(clone), i = 0, l = srcElements.length; i < l; i++) cloneCopyEvent(srcElements[i], destElements[i]);
1164                else cloneCopyEvent(elem, clone);
1165            return destElements = getAll(clone, "script"), destElements.length > 0 && setGlobalEval(destElements, !inPage && getAll(elem, "script")), clone
1166        },
1167        cleanData: function(elems) {
1168            for (var data, elem, type, special = jQuery.event.special, i = 0; void 0 !== (elem = elems[i]); i++)
1169                if (acceptData(elem)) {
1170                    if (data = elem[dataPriv.expando]) {
1171                        if (data.events)
1172                            for (type in data.events) special[type] ? jQuery.event.remove(elem, type) : jQuery.removeEvent(elem, type, data.handle);
1173                        elem[dataPriv.expando] = void 0
1174                    }
1175                    elem[dataUser.expando] && (elem[dataUser.expando] = void 0)
1176                }
1177        }
1178    }), jQuery.fn.extend({
1179        detach: function(selector) { return remove(this, selector, !0) },
1180        remove: function(selector) { return remove(this, selector) },
1181        text: function(value) { return access(this, function(value) { return void 0 === value ? jQuery.text(this) : this.empty().each(function() { 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = value) }) }, null, value, arguments.length) },
1182        append: function() {
1183            return domManip(this, arguments, function(elem) {
1184                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
1185                    var target = manipulationTarget(this, elem);
1186                    target.appendChild(elem)
1187                }
1188            })
1189        },
1190        prepend: function() {
1191            return domManip(this, arguments, function(elem) {
1192                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
1193                    var target = manipulationTarget(this, elem);
1194                    target.insertBefore(elem, target.firstChild)
1195                }
1196            })
1197        },
1198        before: function() { return domManip(this, arguments, function(elem) { this.parentNode && this.parentNode.insertBefore(elem, this) }) },
1199        after: function() { return domManip(this, arguments, function(elem) { this.parentNode && this.parentNode.insertBefore(elem, this.nextSibling) }) },
1200        empty: function() { for (var elem, i = 0; null != (elem = this[i]); i++) 1 === elem.nodeType && (jQuery.cleanData(getAll(elem, !1)), elem.textContent = ""); return this },
1201        clone: function(dataAndEvents, deepDataAndEvents) { return dataAndEvents = null != dataAndEvents && dataAndEvents, deepDataAndEvents = null == deepDataAndEvents ? dataAndEvents : deepDataAndEvents, this.map(function() { return jQuery.clone(this, dataAndEvents, deepDataAndEvents) }) },
1202        html: function(value) {
1203            return access(this, function(value) {
1204                var elem = this[0] || {},
1205                    i = 0,
1206                    l = this.length;
1207                if (void 0 === value && 1 === elem.nodeType) return elem.innerHTML;
1208                if ("string" == typeof value && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || ["", ""])[1].toLowerCase()]) {
1209                    value = jQuery.htmlPrefilter(value);
1210                    try {
1211                        for (; i < l; i++) elem = this[i] || {}, 1 === elem.nodeType && (jQuery.cleanData(getAll(elem, !1)), elem.innerHTML = value);
1212                        elem = 0
1213                    } catch (e) {}
1214                }
1215                elem && this.empty().append(value)
1216            }, null, value, arguments.length)
1217        },
1218        replaceWith: function() {
1219            var ignored = [];
1220            return domManip(this, arguments, function(elem) {
1221                var parent = this.parentNode;
1222                jQuery.inArray(this, ignored) < 0 && (jQuery.cleanData(getAll(this)), parent && parent.replaceChild(elem, this))
1223            }, ignored)
1224        }
1225    }), jQuery.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function(name, original) { jQuery.fn[name] = function(selector) { for (var elems, ret = [], insert = jQuery(selector), last = insert.length - 1, i = 0; i <= last; i++) elems = i === last ? this : this.clone(!0), jQuery(insert[i])[original](elems), push.apply(ret, elems.get()); return this.pushStack(ret) } });
1226    var rmargin = /^margin/,
1227        rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i"),
1228        getStyles = function(elem) { var view = elem.ownerDocument.defaultView; return view && view.opener || (view = window), view.getComputedStyle(elem) };
1229    ! function() {
1230        function computeStyleTests() {
1231            if (div) {
1232                div.style.cssText = "box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%", div.innerHTML = "", documentElement.appendChild(container);
1233                var divStyle = window.getComputedStyle(div);
1234                pixelPositionVal = "1%" !== divStyle.top, reliableMarginLeftVal = "2px" === divStyle.marginLeft, boxSizingReliableVal = "4px" === divStyle.width, div.style.marginRight = "50%", pixelMarginRightVal = "4px" === divStyle.marginRight, documentElement.removeChild(container), div = null
1235            }
1236        }
1237        var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, container = document.createElement("div"),
1238            div = document.createElement("div");
1239        div.style && (div.style.backgroundClip = "content-box", div.cloneNode(!0).style.backgroundClip = "", support.clearCloneStyle = "content-box" === div.style.backgroundClip, container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute", container.appendChild(div), jQuery.extend(support, { pixelPosition: function() { return computeStyleTests(), pixelPositionVal }, boxSizingReliable: function() { return computeStyleTests(), boxSizingReliableVal }, pixelMarginRight: function() { return computeStyleTests(), pixelMarginRightVal }, reliableMarginLeft: function() { return computeStyleTests(), reliableMarginLeftVal } }))
1240    }();
1241    var rdisplayswap = /^(none|table(?!-c[ea]).+)/,
1242        cssShow = { position: "absolute", visibility: "hidden", display: "block" },
1243        cssNormalTransform = { letterSpacing: "0", fontWeight: "400" },
1244        cssPrefixes = ["Webkit", "Moz", "ms"],
1245        emptyStyle = document.createElement("div").style;
1246    jQuery.extend({
1247        cssHooks: { opacity: { get: function(elem, computed) { if (computed) { var ret = curCSS(elem, "opacity"); return "" === ret ? "1" : ret } } } },
1248        cssNumber: { animationIterationCount: !0, columnCount: !0, fillOpacity: !0, flexGrow: !0, flexShrink: !0, fontWeight: !0, lineHeight: !0, opacity: !0, order: !0, orphans: !0, widows: !0, zIndex: !0, zoom: !0 },
1249        cssProps: { float: "cssFloat" },
1250        style: function(elem, name, value, extra) {
1251            if (elem && 3 !== elem.nodeType && 8 !== elem.nodeType && elem.style) {
1252                var ret, type, hooks, origName = jQuery.camelCase(name),
1253                    style = elem.style;
1254                return name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(origName) || origName), hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName], void 0 === value ? hooks && "get" in hooks && void 0 !== (ret = hooks.get(elem, !1, extra)) ? ret : style[name] : (type = typeof value, "string" === type && (ret = rcssNum.exec(value)) && ret[1] && (value = adjustCSS(elem, name, ret), type = "number"), null != value && value === value && ("number" === type && (value += ret && ret[3] || (jQuery.cssNumber[origName] ? "" : "px")), support.clearCloneStyle || "" !== value || 0 !== name.indexOf("background") || (style[name] = "inherit"), hooks && "set" in hooks && void 0 === (value = hooks.set(elem, value, extra)) || (style[name] = value)), void 0)
1255            }
1256        },
1257        css: function(elem, name, extra, styles) { var val, num, hooks, origName = jQuery.camelCase(name); return name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(origName) || origName), hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName], hooks && "get" in hooks && (val = hooks.get(elem, !0, extra)), void 0 === val && (val = curCSS(elem, name, styles)), "normal" === val && name in cssNormalTransform && (val = cssNormalTransform[name]), "" === extra || extra ? (num = parseFloat(val), extra === !0 || isFinite(num) ? num || 0 : val) : val }
1258    }), jQuery.each(["height", "width"], function(i, name) {
1259        jQuery.cssHooks[name] = {
1260            get: function(elem, computed, extra) { if (computed) return !rdisplayswap.test(jQuery.css(elem, "display")) || elem.getClientRects().length && elem.getBoundingClientRect().width ? getWidthOrHeight(elem, name, extra) : swap(elem, cssShow, function() { return getWidthOrHeight(elem, name, extra) }) },
1261            set: function(elem, value, extra) {
1262                var matches, styles = extra && getStyles(elem),
1263                    subtract = extra && augmentWidthOrHeight(elem, name, extra, "border-box" === jQuery.css(elem, "boxSizing", !1, styles), styles);
1264                return subtract && (matches = rcssNum.exec(value)) && "px" !== (matches[3] || "px") && (elem.style[name] = value, value = jQuery.css(elem, name)), setPositiveNumber(elem, value, subtract)
1265            }
1266        }
1267    }), jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function(elem, computed) { if (computed) return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, { marginLeft: 0 }, function() { return elem.getBoundingClientRect().left })) + "px" }), jQuery.each({ margin: "", padding: "", border: "Width" }, function(prefix, suffix) { jQuery.cssHooks[prefix + suffix] = { expand: function(value) { for (var i = 0, expanded = {}, parts = "string" == typeof value ? value.split(" ") : [value]; i < 4; i++) expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0]; return expanded } }, rmargin.test(prefix) || (jQuery.cssHooks[prefix + suffix].set = setPositiveNumber) }), jQuery.fn.extend({
1268        css: function(name, value) {
1269            return access(this, function(elem, name, value) {
1270                var styles, len, map = {},
1271                    i = 0;
1272                if (jQuery.isArray(name)) { for (styles = getStyles(elem), len = name.length; i < len; i++) map[name[i]] = jQuery.css(elem, name[i], !1, styles); return map }
1273                return void 0 !== value ? jQuery.style(elem, name, value) : jQuery.css(elem, name)
1274            }, name, value, arguments.length > 1)
1275        }
1276    }), jQuery.Tween = Tween, Tween.prototype = { constructor: Tween, init: function(elem, options, prop, end, easing, unit) { this.elem = elem, this.prop = prop, this.easing = easing || jQuery.easing._default, this.options = options, this.start = this.now = this.cur(), this.end = end, this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px") }, cur: function() { var hooks = Tween.propHooks[this.prop]; return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this) }, run: function(percent) { var eased, hooks = Tween.propHooks[this.prop]; return this.options.duration ? this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration) : this.pos = eased = percent, this.now = (this.end - this.start) * eased + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), hooks && hooks.set ? hooks.set(this) : Tween.propHooks._default.set(this), this } }, Tween.prototype.init.prototype = Tween.prototype, Tween.propHooks = { _default: { get: function(tween) { var result; return 1 !== tween.elem.nodeType || null != tween.elem[tween.prop] && null == tween.elem.style[tween.prop] ? tween.elem[tween.prop] : (result = jQuery.css(tween.elem, tween.prop, ""), result && "auto" !== result ? result : 0) }, set: function(tween) { jQuery.fx.step[tween.prop] ? jQuery.fx.step[tween.prop](tween) : 1 !== tween.elem.nodeType || null == tween.elem.style[jQuery.cssProps[tween.prop]] && !jQuery.cssHooks[tween.prop] ? tween.elem[tween.prop] = tween.now : jQuery.style(tween.elem, tween.prop, tween.now + tween.unit) } } }, Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { set: function(tween) { tween.elem.nodeType && tween.elem.parentNode && (tween.elem[tween.prop] = tween.now) } }, jQuery.easing = { linear: function(p) { return p }, swing: function(p) { return .5 - Math.cos(p * Math.PI) / 2 }, _default: "swing" }, jQuery.fx = Tween.prototype.init, jQuery.fx.step = {};
1277    var fxNow, timerId, rfxtypes = /^(?:toggle|show|hide)$/,
1278        rrun = /queueHooks$/;
1279    jQuery.Animation = jQuery.extend(Animation, {
1280            tweeners: {
1281                "*": [function(prop, value) {
1282                    var tween = this.createTween(prop, value);
1283                    return adjustCSS(tween.elem, prop, rcssNum.exec(value), tween),
1284                        tween
1285                }]
1286            },
1287            tweener: function(props, callback) { jQuery.isFunction(props) ? (callback = props, props = ["*"]) : props = props.match(rnothtmlwhite); for (var prop, index = 0, length = props.length; index < length; index++) prop = props[index], Animation.tweeners[prop] = Animation.tweeners[prop] || [], Animation.tweeners[prop].unshift(callback) },
1288            prefilters: [defaultPrefilter],
1289            prefilter: function(callback, prepend) { prepend ? Animation.prefilters.unshift(callback) : Animation.prefilters.push(callback) }
1290        }), jQuery.speed = function(speed, easing, fn) { var opt = speed && "object" == typeof speed ? jQuery.extend({}, speed) : { complete: fn || !fn && easing || jQuery.isFunction(speed) && speed, duration: speed, easing: fn && easing || easing && !jQuery.isFunction(easing) && easing }; return jQuery.fx.off || document.hidden ? opt.duration = 0 : "number" != typeof opt.duration && (opt.duration in jQuery.fx.speeds ? opt.duration = jQuery.fx.speeds[opt.duration] : opt.duration = jQuery.fx.speeds._default), null != opt.queue && opt.queue !== !0 || (opt.queue = "fx"), opt.old = opt.complete, opt.complete = function() { jQuery.isFunction(opt.old) && opt.old.call(this), opt.queue && jQuery.dequeue(this, opt.queue) }, opt }, jQuery.fn.extend({
1291            fadeTo: function(speed, to, easing, callback) { return this.filter(isHiddenWithinTree).css("opacity", 0).show().end().animate({ opacity: to }, speed, easing, callback) },
1292            animate: function(prop, speed, easing, callback) {
1293                var empty = jQuery.isEmptyObject(prop),
1294                    optall = jQuery.speed(speed, easing, callback),
1295                    doAnimation = function() {
1296                        var anim = Animation(this, jQuery.extend({}, prop), optall);
1297                        (empty || dataPriv.get(this, "finish")) && anim.stop(!0)
1298                    };
1299                return doAnimation.finish = doAnimation, empty || optall.queue === !1 ? this.each(doAnimation) : this.queue(optall.queue, doAnimation)
1300            },
1301            stop: function(type, clearQueue, gotoEnd) {
1302                var stopQueue = function(hooks) {
1303                    var stop = hooks.stop;
1304                    delete hooks.stop, stop(gotoEnd)
1305                };
1306                return "string" != typeof type && (gotoEnd = clearQueue, clearQueue = type, type = void 0), clearQueue && type !== !1 && this.queue(type || "fx", []), this.each(function() {
1307                    var dequeue = !0,
1308                        index = null != type && type + "queueHooks",
1309                        timers = jQuery.timers,
1310                        data = dataPriv.get(this);
1311                    if (index) data[index] && data[index].stop && stopQueue(data[index]);
1312                    else
1313                        for (index in data) data[index] && data[index].stop && rrun.test(index) && stopQueue(data[index]);
1314                    for (index = timers.length; index--;) timers[index].elem !== this || null != type && timers[index].queue !== type || (timers[index].anim.stop(gotoEnd), dequeue = !1, timers.splice(index, 1));
1315                    !dequeue && gotoEnd || jQuery.dequeue(this, type)
1316                })
1317            },
1318            finish: function(type) {
1319                return type !== !1 && (type = type || "fx"), this.each(function() {
1320                    var index, data = dataPriv.get(this),
1321                        queue = data[type + "queue"],
1322                        hooks = data[type + "queueHooks"],
1323                        timers = jQuery.timers,
1324                        length = queue ? queue.length : 0;
1325                    for (data.finish = !0, jQuery.queue(this, type, []), hooks && hooks.stop && hooks.stop.call(this, !0), index = timers.length; index--;) timers[index].elem === this && timers[index].queue === type && (timers[index].anim.stop(!0), timers.splice(index, 1));
1326                    for (index = 0; index < length; index++) queue[index] && queue[index].finish && queue[index].finish.call(this);
1327                    delete data.finish
1328                })
1329            }
1330        }), jQuery.each(["toggle", "show", "hide"], function(i, name) {
1331            var cssFn = jQuery.fn[name];
1332            jQuery.fn[name] = function(speed, easing, callback) { return null == speed || "boolean" == typeof speed ? cssFn.apply(this, arguments) : this.animate(genFx(name, !0), speed, easing, callback) }
1333        }), jQuery.each({ slideDown: genFx("show"), slideUp: genFx("hide"), slideToggle: genFx("toggle"), fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" }, fadeToggle: { opacity: "toggle" } }, function(name, props) { jQuery.fn[name] = function(speed, easing, callback) { return this.animate(props, speed, easing, callback) } }), jQuery.timers = [], jQuery.fx.tick = function() {
1334            var timer, i = 0,
1335                timers = jQuery.timers;
1336            for (fxNow = jQuery.now(); i < timers.length; i++) timer = timers[i], timer() || timers[i] !== timer || timers.splice(i--, 1);
1337            timers.length || jQuery.fx.stop(), fxNow = void 0
1338        }, jQuery.fx.timer = function(timer) { jQuery.timers.push(timer), timer() ? jQuery.fx.start() : jQuery.timers.pop() }, jQuery.fx.interval = 13, jQuery.fx.start = function() { timerId || (timerId = window.requestAnimationFrame ? window.requestAnimationFrame(raf) : window.setInterval(jQuery.fx.tick, jQuery.fx.interval)) }, jQuery.fx.stop = function() { window.cancelAnimationFrame ? window.cancelAnimationFrame(timerId) : window.clearInterval(timerId), timerId = null }, jQuery.fx.speeds = { slow: 600, fast: 200, _default: 400 }
vendor: 8,401 bytes, lines 1338-1420
1338, jQuery.fn.delay = function(time, type) {
1339            return time = jQuery.fx ? jQuery.fx.speeds[time] || time : time, type = type || "fx", this.queue(type, function(next, hooks) {
1340                var timeout = window.setTimeout(next, time);
1341                hooks.stop = function() { window.clearTimeout(timeout) }
1342            })
1343        },
1344        function() {
1345            var input = document.createElement("input"),
1346                select = document.createElement("select"),
1347                opt = select.appendChild(document.createElement("option"));
1348            input.type = "checkbox", support.checkOn = "" !== input.value, support.optSelected = opt.selected, input = document.createElement("input"), input.value = "t", input.type = "radio", support.radioValue = "t" === input.value
1349        }();
1350    var boolHook, attrHandle = jQuery.expr.attrHandle;
1351    jQuery.fn.extend({ attr: function(name, value) { return access(this, jQuery.attr, name, value, arguments.length > 1) }, removeAttr: function(name) { return this.each(function() { jQuery.removeAttr(this, name) }) } }), jQuery.extend({
1352        attr: function(elem, name, value) { var ret, hooks, nType = elem.nodeType; if (3 !== nType && 8 !== nType && 2 !== nType) return "undefined" == typeof elem.getAttribute ? jQuery.prop(elem, name, value) : (1 === nType && jQuery.isXMLDoc(elem) || (hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : void 0)), void 0 !== value ? null === value ? void jQuery.removeAttr(elem, name) : hooks && "set" in hooks && void 0 !== (ret = hooks.set(elem, value, name)) ? ret : (elem.setAttribute(name, value + ""), value) : hooks && "get" in hooks && null !== (ret = hooks.get(elem, name)) ? ret : (ret = jQuery.find.attr(elem, name), null == ret ? void 0 : ret)) },
1353        attrHooks: { type: { set: function(elem, value) { if (!support.radioValue && "radio" === value && jQuery.nodeName(elem, "input")) { var val = elem.value; return elem.setAttribute("type", value), val && (elem.value = val), value } } } },
1354        removeAttr: function(elem, value) {
1355            var name, i = 0,
1356                attrNames = value && value.match(rnothtmlwhite);
1357            if (attrNames && 1 === elem.nodeType)
1358                for (; name = attrNames[i++];) elem.removeAttribute(name)
1359        }
1360    }), boolHook = { set: function(elem, value, name) { return value === !1 ? jQuery.removeAttr(elem, name) : elem.setAttribute(name, name), name } }, jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function(i, name) {
1361        var getter = attrHandle[name] || jQuery.find.attr;
1362        attrHandle[name] = function(elem, name, isXML) { var ret, handle, lowercaseName = name.toLowerCase(); return isXML || (handle = attrHandle[lowercaseName], attrHandle[lowercaseName] = ret, ret = null != getter(elem, name, isXML) ? lowercaseName : null, attrHandle[lowercaseName] = handle), ret }
1363    });
1364    var rfocusable = /^(?:input|select|textarea|button)$/i,
1365        rclickable = /^(?:a|area)$/i;
1366    jQuery.fn.extend({ prop: function(name, value) { return access(this, jQuery.prop, name, value, arguments.length > 1) }, removeProp: function(name) { return this.each(function() { delete this[jQuery.propFix[name] || name] }) } }), jQuery.extend({ prop: function(elem, name, value) { var ret, hooks, nType = elem.nodeType; if (3 !== nType && 8 !== nType && 2 !== nType) return 1 === nType && jQuery.isXMLDoc(elem) || (name = jQuery.propFix[name] || name, hooks = jQuery.propHooks[name]), void 0 !== value ? hooks && "set" in hooks && void 0 !== (ret = hooks.set(elem, value, name)) ? ret : elem[name] = value : hooks && "get" in hooks && null !== (ret = hooks.get(elem, name)) ? ret : elem[name] }, propHooks: { tabIndex: { get: function(elem) { var tabindex = jQuery.find.attr(elem, "tabindex"); return tabindex ? parseInt(tabindex, 10) : rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href ? 0 : -1 } } }, propFix: { for: "htmlFor", class: "className" } }), support.optSelected || (jQuery.propHooks.selected = {
1367        get: function(elem) { var parent = elem.parentNode; return parent && parent.parentNode && parent.parentNode.selectedIndex, null },
1368        set: function(elem) {
1369            var parent = elem.parentNode;
1370            parent && (parent.selectedIndex, parent.parentNode && parent.parentNode.selectedIndex)
1371        }
1372    }), jQuery.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() { jQuery.propFix[this.toLowerCase()] = this }), jQuery.fn.extend({
1373        addClass: function(value) {
1374            var classes, elem, cur, curValue, clazz, j, finalValue, i = 0;
1375            if (jQuery.isFunction(value)) return this.each(function(j) { jQuery(this).addClass(value.call(this, j, getClass(this))) });
1376            if ("string" == typeof value && value)
1377                for (classes = value.match(rnothtmlwhite) || []; elem = this[i++];)
1378                    if (curValue = getClass(elem), cur = 1 === elem.nodeType && " " + stripAndCollapse(curValue) + " ") {
1379                        for (j = 0; clazz = classes[j++];) cur.indexOf(" " + clazz + " ") < 0 && (cur += clazz + " ");
1380                        finalValue = stripAndCollapse(cur), curValue !== finalValue && elem.setAttribute("class", finalValue)
1381                    }
1382            return this
1383        },
1384        removeClass: function(value) {
1385            var classes, elem, cur, curValue, clazz, j, finalValue, i = 0;
1386            if (jQuery.isFunction(value)) return this.each(function(j) { jQuery(this).removeClass(value.call(this, j, getClass(this))) });
1387            if (!arguments.length) return this.attr("class", "");
1388            if ("string" == typeof value && value)
1389                for (classes = value.match(rnothtmlwhite) || []; elem = this[i++];)
1390                    if (curValue = getClass(elem), cur = 1 === elem.nodeType && " " + stripAndCollapse(curValue) + " ") {
1391                        for (j = 0; clazz = classes[j++];)
1392                            for (; cur.indexOf(" " + clazz + " ") > -1;) cur = cur.replace(" " + clazz + " ", " ");
1393                        finalValue = stripAndCollapse(cur), curValue !== finalValue && elem.setAttribute("class", finalValue)
1394                    }
1395            return this
1396        },
1397        toggleClass: function(value, stateVal) {
1398            var type = typeof value;
1399            return "boolean" == typeof stateVal && "string" === type ? stateVal ? this.addClass(value) : this.removeClass(value) : jQuery.isFunction(value) ? this.each(function(i) { jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal) }) : this.each(function() {
1400                var className, i, self, classNames;
1401                if ("string" === type)
1402                    for (i = 0, self = jQuery(this), classNames = value.match(rnothtmlwhite) || []; className = classNames[i++];) self.hasClass(className) ? self.removeClass(className) : self.addClass(className);
1403                else void 0 !== value && "boolean" !== type || (className = getClass(this), className && dataPriv.set(this, "__className__", className), this.setAttribute && this.setAttribute("class", className || value === !1 ? "" : dataPriv.get(this, "__className__") || ""))
1404            })
1405        },
1406        hasClass: function(selector) {
1407            var className, elem, i = 0;
1408            for (className = " " + selector + " "; elem = this[i++];)
1409                if (1 === elem.nodeType && (" " + stripAndCollapse(getClass(elem)) + " ").indexOf(className) > -1) return !0;
1410            return !1
1411        }
1412    });
1413    var rreturn = /\r/g;
1414    jQuery.fn.extend({
1415        val: function(value) {
1416            var hooks, ret, isFunction, elem = this[0]; {
1417                if (arguments.length) return isFunction = jQuery.isFunction(value), this.each(function(i) {
1418                    var val;
1419                    1 === this.nodeType && (val = isFunction ? value.call(this, i, jQuery(this).val()) : value, null == val ? val = "" : "number" == typeof val ? val += "" : jQuery.isArray(val) && (val = jQuery.map(val, function(value) { return null == value ? "" : value + "" })), hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()], hooks && "set" in hooks && void 0 !== hooks.set(this, val, "value") || (this.value = val))
1420                });
vendor: 29,405 bytes, lines 1421-1634
1421                if (elem) return hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()], hooks && "get" in hooks && void 0 !== (ret = hooks.get(elem, "value")) ? ret : (ret = elem.value, "string" == typeof ret ? ret.replace(rreturn, "") : null == ret ? "" : ret)
1422            }
1423        }
1424    }), jQuery.extend({
1425        valHooks: {
1426            option: { get: function(elem) { var val = jQuery.find.attr(elem, "value"); return null != val ? val : stripAndCollapse(jQuery.text(elem)) } },
1427            select: {
1428                get: function(elem) {
1429                    var value, option, i, options = elem.options,
1430                        index = elem.selectedIndex,
1431                        one = "select-one" === elem.type,
1432                        values = one ? null : [],
1433                        max = one ? index + 1 : options.length;
1434                    for (i = index < 0 ? max : one ? index : 0; i < max; i++)
1435                        if (option = options[i], (option.selected || i === index) && !option.disabled && (!option.parentNode.disabled || !jQuery.nodeName(option.parentNode, "optgroup"))) {
1436                            if (value = jQuery(option).val(), one) return value;
1437                            values.push(value)
1438                        }
1439                    return values
1440                },
1441                set: function(elem, value) { for (var optionSet, option, options = elem.options, values = jQuery.makeArray(value), i = options.length; i--;) option = options[i], (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) && (optionSet = !0); return optionSet || (elem.selectedIndex = -1), values }
1442            }
1443        }
1444    }), jQuery.each(["radio", "checkbox"], function() { jQuery.valHooks[this] = { set: function(elem, value) { if (jQuery.isArray(value)) return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1 } }, support.checkOn || (jQuery.valHooks[this].get = function(elem) { return null === elem.getAttribute("value") ? "on" : elem.value }) });
1445    var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
1446    jQuery.extend(jQuery.event, {
1447        trigger: function(event, data, elem, onlyHandlers) {
1448            var i, cur, tmp, bubbleType, ontype, handle, special, eventPath = [elem || document],
1449                type = hasOwn.call(event, "type") ? event.type : event,
1450                namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
1451            if (cur = tmp = elem = elem || document, 3 !== elem.nodeType && 8 !== elem.nodeType && !rfocusMorph.test(type + jQuery.event.triggered) && (type.indexOf(".") > -1 && (namespaces = type.split("."), type = namespaces.shift(), namespaces.sort()), ontype = type.indexOf(":") < 0 && "on" + type, event = event[jQuery.expando] ? event : new jQuery.Event(type, "object" == typeof event && event), event.isTrigger = onlyHandlers ? 2 : 3, event.namespace = namespaces.join("."), event.rnamespace = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, event.result = void 0, event.target || (event.target = elem), data = null == data ? [event] : jQuery.makeArray(data, [event]), special = jQuery.event.special[type] || {}, onlyHandlers || !special.trigger || special.trigger.apply(elem, data) !== !1)) {
1452                if (!onlyHandlers && !special.noBubble && !jQuery.isWindow(elem)) {
1453                    for (bubbleType = special.delegateType || type, rfocusMorph.test(bubbleType + type) || (cur = cur.parentNode); cur; cur = cur.parentNode) eventPath.push(cur), tmp = cur;
1454                    tmp === (elem.ownerDocument || document) && eventPath.push(tmp.defaultView || tmp.parentWindow || window)
1455                }
1456                for (i = 0;
1457                    (cur = eventPath[i++]) && !event.isPropagationStopped();) event.type = i > 1 ? bubbleType : special.bindType || type, handle = (dataPriv.get(cur, "events") || {})[event.type] && dataPriv.get(cur, "handle"), handle && handle.apply(cur, data), handle = ontype && cur[ontype], handle && handle.apply && acceptData(cur) && (event.result = handle.apply(cur, data), event.result === !1 && event.preventDefault());
1458                return event.type = type, onlyHandlers || event.isDefaultPrevented() || special._default && special._default.apply(eventPath.pop(), data) !== !1 || !acceptData(elem) || ontype && jQuery.isFunction(elem[type]) && !jQuery.isWindow(elem) && (tmp = elem[ontype], tmp && (elem[ontype] = null), jQuery.event.triggered = type, elem[type](), jQuery.event.triggered = void 0, tmp && (elem[ontype] = tmp)), event.result
1459            }
1460        },
1461        simulate: function(type, elem, event) {
1462            var e = jQuery.extend(new jQuery.Event, event, { type: type, isSimulated: !0 });
1463            jQuery.event.trigger(e, null, elem)
1464        }
1465    }), jQuery.fn.extend({ trigger: function(type, data) { return this.each(function() { jQuery.event.trigger(type, data, this) }) }, triggerHandler: function(type, data) { var elem = this[0]; if (elem) return jQuery.event.trigger(type, data, elem, !0) } }), jQuery.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function(i, name) { jQuery.fn[name] = function(data, fn) { return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name) } }), jQuery.fn.extend({ hover: function(fnOver, fnOut) { return this.mouseenter(fnOver).mouseleave(fnOut || fnOver) } }), support.focusin = "onfocusin" in window, support.focusin || jQuery.each({ focus: "focusin", blur: "focusout" }, function(orig, fix) {
1466        var handler = function(event) { jQuery.event.simulate(fix, event.target, jQuery.event.fix(event)) };
1467        jQuery.event.special[fix] = {
1468            setup: function() {
1469                var doc = this.ownerDocument || this,
1470                    attaches = dataPriv.access(doc, fix);
1471                attaches || doc.addEventListener(orig, handler, !0), dataPriv.access(doc, fix, (attaches || 0) + 1)
1472            },
1473            teardown: function() {
1474                var doc = this.ownerDocument || this,
1475                    attaches = dataPriv.access(doc, fix) - 1;
1476                attaches ? dataPriv.access(doc, fix, attaches) : (doc.removeEventListener(orig, handler, !0), dataPriv.remove(doc, fix))
1477            }
1478        }
1479    });
1480    var location = window.location,
1481        nonce = jQuery.now(),
1482        rquery = /\?/;
1483    jQuery.parseXML = function(data) { var xml; if (!data || "string" != typeof data) return null; try { xml = (new window.DOMParser).parseFromString(data, "text/xml") } catch (e) { xml = void 0 } return xml && !xml.getElementsByTagName("parsererror").length || jQuery.error("Invalid XML: " + data), xml };
1484    var rbracket = /\[\]$/,
1485        rCRLF = /\r?\n/g,
1486        rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
1487        rsubmittable = /^(?:input|select|textarea|keygen)/i;
1488    jQuery.param = function(a, traditional) {
1489        var prefix, s = [],
1490            add = function(key, valueOrFunction) {
1491                var value = jQuery.isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;
1492                s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(null == value ? "" : value)
1493            };
1494        if (jQuery.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) jQuery.each(a, function() { add(this.name, this.value) });
1495        else
1496            for (prefix in a) buildParams(prefix, a[prefix], traditional, add);
1497        return s.join("&")
1498    }, jQuery.fn.extend({ serialize: function() { return jQuery.param(this.serializeArray()) }, serializeArray: function() { return this.map(function() { var elements = jQuery.prop(this, "elements"); return elements ? jQuery.makeArray(elements) : this }).filter(function() { var type = this.type; return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type)) }).map(function(i, elem) { var val = jQuery(this).val(); return null == val ? null : jQuery.isArray(val) ? jQuery.map(val, function(val) { return { name: elem.name, value: val.replace(rCRLF, "\r\n") } }) : { name: elem.name, value: val.replace(rCRLF, "\r\n") } }).get() } });
1499    var r20 = /%20/g,
1500        rhash = /#.*$/,
1501        rantiCache = /([?&])_=[^&]*/,
1502        rheaders = /^(.*?):[ \t]*([^\r\n]*)$/gm,
1503        rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
1504        rnoContent = /^(?:GET|HEAD)$/,
1505        rprotocol = /^\/\//,
1506        prefilters = {},
1507        transports = {},
1508        allTypes = "*/".concat("*"),
1509        originAnchor = document.createElement("a");
1510    originAnchor.href = location.href, jQuery.extend({
1511        active: 0,
1512        lastModified: {},
1513        etag: {},
1514        ajaxSettings: { url: location.href, type: "GET", isLocal: rlocalProtocol.test(location.protocol), global: !0, processData: !0, async: !0, contentType: "application/x-www-form-urlencoded; charset=UTF-8", accepts: { "*": allTypes, text: "text/plain", html: "text/html", xml: "application/xml, text/xml", json: "application/json, text/javascript" }, contents: { xml: /\bxml\b/, html: /\bhtml/, json: /\bjson\b/ }, responseFields: { xml: "responseXML", text: "responseText", json: "responseJSON" }, converters: { "* text": String, "text html": !0, "text json": JSON.parse, "text xml": jQuery.parseXML }, flatOptions: { url: !0, context: !0 } },
1515        ajaxSetup: function(target, settings) { return settings ? ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : ajaxExtend(jQuery.ajaxSettings, target) },
1516        ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
1517        ajaxTransport: addToPrefiltersOrTransports(transports),
1518        ajax: function(url, options) {
1519            function done(status, nativeStatusText, responses, headers) {
1520                var isSuccess, success, error, response, modified, statusText = nativeStatusText;
1521                completed || (completed = !0, timeoutTimer && window.clearTimeout(timeoutTimer), transport = void 0, responseHeadersString = headers || "", jqXHR.readyState = status > 0 ? 4 : 0, isSuccess = status >= 200 && status < 300 || 304 === status, responses && (response = ajaxHandleResponses(s, jqXHR, responses)), response = ajaxConvert(s, response, jqXHR, isSuccess), isSuccess ? (s.ifModified && (modified = jqXHR.getResponseHeader("Last-Modified"), modified && (jQuery.lastModified[cacheURL] = modified), modified = jqXHR.getResponseHeader("etag"), modified && (jQuery.etag[cacheURL] = modified)), 204 === status || "HEAD" === s.type ? statusText = "nocontent" : 304 === status ? statusText = "notmodified" : (statusText = response.state, success = response.data, error = response.error, isSuccess = !error)) : (error = statusText, !status && statusText || (statusText = "error", status < 0 && (status = 0))), jqXHR.status = status, jqXHR.statusText = (nativeStatusText || statusText) + "", isSuccess ? deferred.resolveWith(callbackContext, [success, statusText, jqXHR]) : deferred.rejectWith(callbackContext, [jqXHR, statusText, error]), jqXHR.statusCode(statusCode), statusCode = void 0, fireGlobals && globalEventContext.trigger(isSuccess ? "ajaxSuccess" : "ajaxError", [jqXHR, s, isSuccess ? success : error]), completeDeferred.fireWith(callbackContext, [jqXHR, statusText]), fireGlobals && (globalEventContext.trigger("ajaxComplete", [jqXHR, s]), --jQuery.active || jQuery.event.trigger("ajaxStop")))
1522            }
1523            "object" == typeof url && (options = url, url = void 0), options = options || {};
1524            var transport, cacheURL, responseHeadersString, responseHeaders, timeoutTimer, urlAnchor, completed, fireGlobals, i, uncached, s = jQuery.ajaxSetup({}, options),
1525                callbackContext = s.context || s,
1526                globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,
1527                deferred = jQuery.Deferred(),
1528                completeDeferred = jQuery.Callbacks("once memory"),
1529                statusCode = s.statusCode || {},
1530                requestHeaders = {},
1531                requestHeadersNames = {},
1532                strAbort = "canceled",
1533                jqXHR = {
1534                    readyState: 0,
1535                    getResponseHeader: function(key) {
1536                        var match;
1537                        if (completed) {
1538                            if (!responseHeaders)
1539                                for (responseHeaders = {}; match = rheaders.exec(responseHeadersString);) responseHeaders[match[1].toLowerCase()] = match[2];
1540                            match = responseHeaders[key.toLowerCase()]
1541                        }
1542                        return null == match ? null : match
1543                    },
1544                    getAllResponseHeaders: function() { return completed ? responseHeadersString : null },
1545                    setRequestHeader: function(name, value) { return null == completed && (name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name, requestHeaders[name] = value), this },
1546                    overrideMimeType: function(type) { return null == completed && (s.mimeType = type), this },
1547                    statusCode: function(map) {
1548                        var code;
1549                        if (map)
1550                            if (completed) jqXHR.always(map[jqXHR.status]);
1551                            else
1552                                for (code in map) statusCode[code] = [statusCode[code], map[code]];
1553                        return this
1554                    },
1555                    abort: function(statusText) { var finalText = statusText || strAbort; return transport && transport.abort(finalText), done(0, finalText), this }
1556                };
1557            if (deferred.promise(jqXHR), s.url = ((url || s.url || location.href) + "").replace(rprotocol, location.protocol + "//"), s.type = options.method || options.type || s.method || s.type, s.dataTypes = (s.dataType || "*").toLowerCase().match(rnothtmlwhite) || [""], null == s.crossDomain) { urlAnchor = document.createElement("a"); try { urlAnchor.href = s.url, urlAnchor.href = urlAnchor.href, s.crossDomain = originAnchor.protocol + "//" + originAnchor.host != urlAnchor.protocol + "//" + urlAnchor.host } catch (e) { s.crossDomain = !0 } }
1558            if (s.data && s.processData && "string" != typeof s.data && (s.data = jQuery.param(s.data, s.traditional)), inspectPrefiltersOrTransports(prefilters, s, options, jqXHR), completed) return jqXHR;
1559            fireGlobals = jQuery.event && s.global, fireGlobals && 0 === jQuery.active++ && jQuery.event.trigger("ajaxStart"), s.type = s.type.toUpperCase(), s.hasContent = !rnoContent.test(s.type), cacheURL = s.url.replace(rhash, ""), s.hasContent ? s.data && s.processData && 0 === (s.contentType || "").indexOf("application/x-www-form-urlencoded") && (s.data = s.data.replace(r20, "+")) : (uncached = s.url.slice(cacheURL.length), s.data && (cacheURL += (rquery.test(cacheURL) ? "&" : "?") + s.data, delete s.data), s.cache === !1 && (cacheURL = cacheURL.replace(rantiCache, "$1"), uncached = (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce++ + uncached), s.url = cacheURL + uncached), s.ifModified && (jQuery.lastModified[cacheURL] && jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[cacheURL]), jQuery.etag[cacheURL] && jqXHR.setRequestHeader("If-None-Match", jQuery.etag[cacheURL])), (s.data && s.hasContent && s.contentType !== !1 || options.contentType) && jqXHR.setRequestHeader("Content-Type", s.contentType), jqXHR.setRequestHeader("Accept", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + ("*" !== s.dataTypes[0] ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"]);
1560            for (i in s.headers) jqXHR.setRequestHeader(i, s.headers[i]);
1561            if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === !1 || completed)) return jqXHR.abort();
1562            if (strAbort = "abort", completeDeferred.add(s.complete), jqXHR.done(s.success), jqXHR.fail(s.error), transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR)) {
1563                if (jqXHR.readyState = 1, fireGlobals && globalEventContext.trigger("ajaxSend", [jqXHR, s]), completed) return jqXHR;
1564                s.async && s.timeout > 0 && (timeoutTimer = window.setTimeout(function() { jqXHR.abort("timeout") }, s.timeout));
1565                try { completed = !1, transport.send(requestHeaders, done) } catch (e) {
1566                    if (completed) throw e;
1567                    done(-1, e)
1568                }
1569            } else done(-1, "No Transport");
1570            return jqXHR
1571        },
1572        getJSON: function(url, data, callback) { return jQuery.get(url, data, callback, "json") },
1573        getScript: function(url, callback) { return jQuery.get(url, void 0, callback, "script") }
1574    }), jQuery.each(["get", "post"], function(i, method) { jQuery[method] = function(url, data, callback, type) { return jQuery.isFunction(data) && (type = type || callback, callback = data, data = void 0), jQuery.ajax(jQuery.extend({ url: url, type: method, dataType: type, data: data, success: callback }, jQuery.isPlainObject(url) && url)) } }), jQuery._evalUrl = function(url) { return jQuery.ajax({ url: url, type: "GET", dataType: "script", cache: !0, async: !1, global: !1, throws: !0 }) }, jQuery.fn.extend({
1575        wrapAll: function(html) { var wrap; return this[0] && (jQuery.isFunction(html) && (html = html.call(this[0])), wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && wrap.insertBefore(this[0]), wrap.map(function() { for (var elem = this; elem.firstElementChild;) elem = elem.firstElementChild; return elem }).append(this)), this },
1576        wrapInner: function(html) {
1577            return jQuery.isFunction(html) ? this.each(function(i) { jQuery(this).wrapInner(html.call(this, i)) }) : this.each(function() {
1578                var self = jQuery(this),
1579                    contents = self.contents();
1580                contents.length ? contents.wrapAll(html) : self.append(html)
1581            })
1582        },
1583        wrap: function(html) { var isFunction = jQuery.isFunction(html); return this.each(function(i) { jQuery(this).wrapAll(isFunction ? html.call(this, i) : html) }) },
1584        unwrap: function(selector) { return this.parent(selector).not("body").each(function() { jQuery(this).replaceWith(this.childNodes) }), this }
1585    }), jQuery.expr.pseudos.hidden = function(elem) { return !jQuery.expr.pseudos.visible(elem) }, jQuery.expr.pseudos.visible = function(elem) { return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length) }, jQuery.ajaxSettings.xhr = function() { try { return new window.XMLHttpRequest } catch (e) {} };
1586    var xhrSuccessStatus = { 0: 200, 1223: 204 },
1587        xhrSupported = jQuery.ajaxSettings.xhr();
1588    support.cors = !!xhrSupported && "withCredentials" in xhrSupported, support.ajax = xhrSupported = !!xhrSupported, jQuery.ajaxTransport(function(options) {
1589        var callback, errorCallback;
1590        if (support.cors || xhrSupported && !options.crossDomain) return {
1591            send: function(headers, complete) {
1592                var i, xhr = options.xhr();
1593                if (xhr.open(options.type, options.url, options.async, options.username, options.password), options.xhrFields)
1594                    for (i in options.xhrFields) xhr[i] = options.xhrFields[i];
1595                options.mimeType && xhr.overrideMimeType && xhr.overrideMimeType(options.mimeType), options.crossDomain || headers["X-Requested-With"] || (headers["X-Requested-With"] = "XMLHttpRequest");
1596                for (i in headers) xhr.setRequestHeader(i, headers[i]);
1597                callback = function(type) { return function() { callback && (callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.onreadystatechange = null, "abort" === type ? xhr.abort() : "error" === type ? "number" != typeof xhr.status ? complete(0, "error") : complete(xhr.status, xhr.statusText) : complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, "text" !== (xhr.responseType || "text") || "string" != typeof xhr.responseText ? { binary: xhr.response } : { text: xhr.responseText }, xhr.getAllResponseHeaders())) } }, xhr.onload = callback(), errorCallback = xhr.onerror = callback("error"), void 0 !== xhr.onabort ? xhr.onabort = errorCallback : xhr.onreadystatechange = function() { 4 === xhr.readyState && window.setTimeout(function() { callback && errorCallback() }) }, callback = callback("abort");
1598                try { xhr.send(options.hasContent && options.data || null) } catch (e) { if (callback) throw e }
1599            },
1600            abort: function() { callback && callback() }
1601        }
1602    }), jQuery.ajaxPrefilter(function(s) { s.crossDomain && (s.contents.script = !1) }), jQuery.ajaxSetup({ accepts: { script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" }, contents: { script: /\b(?:java|ecma)script\b/ }, converters: { "text script": function(text) { return jQuery.globalEval(text), text } } }), jQuery.ajaxPrefilter("script", function(s) { void 0 === s.cache && (s.cache = !1), s.crossDomain && (s.type = "GET") }), jQuery.ajaxTransport("script", function(s) { if (s.crossDomain) { var script, callback; return { send: function(_, complete) { script = jQuery("<script>").prop({ charset: s.scriptCharset, src: s.url }).on("load error", callback = function(evt) { script.remove(), callback = null, evt && complete("error" === evt.type ? 404 : 200, evt.type) }), document.head.appendChild(script[0]) }, abort: function() { callback && callback() } } } });
1603    var oldCallbacks = [],
1604        rjsonp = /(=)\?(?=&|$)|\?\?/;
1605    jQuery.ajaxSetup({ jsonp: "callback", jsonpCallback: function() { var callback = oldCallbacks.pop() || jQuery.expando + "_" + nonce++; return this[callback] = !0, callback } }), jQuery.ajaxPrefilter("json jsonp", function(s, originalSettings, jqXHR) { var callbackName, overwritten, responseContainer, jsonProp = s.jsonp !== !1 && (rjsonp.test(s.url) ? "url" : "string" == typeof s.data && 0 === (s.contentType || "").indexOf("application/x-www-form-urlencoded") && rjsonp.test(s.data) && "data"); if (jsonProp || "jsonp" === s.dataTypes[0]) return callbackName = s.jsonpCallback = jQuery.isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback, jsonProp ? s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName) : s.jsonp !== !1 && (s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName), s.converters["script json"] = function() { return responseContainer || jQuery.error(callbackName + " was not called"), responseContainer[0] }, s.dataTypes[0] = "json", overwritten = window[callbackName], window[callbackName] = function() { responseContainer = arguments }, jqXHR.always(function() { void 0 === overwritten ? jQuery(window).removeProp(callbackName) : window[callbackName] = overwritten, s[callbackName] && (s.jsonpCallback = originalSettings.jsonpCallback, oldCallbacks.push(callbackName)), responseContainer && jQuery.isFunction(overwritten) && overwritten(responseContainer[0]), responseContainer = overwritten = void 0 }), "script" }), support.createHTMLDocument = function() { var body = document.implementation.createHTMLDocument("").body; return body.innerHTML = "<form></form><form></form>", 2 === body.childNodes.length }(), jQuery.parseHTML = function(data, context, keepScripts) { if ("string" != typeof data) return []; "boolean" == typeof context && (keepScripts = context, context = !1); var base, parsed, scripts; return context || (support.createHTMLDocument ? (context = document.implementation.createHTMLDocument(""), base = context.createElement("base"), base.href = document.location.href, context.head.appendChild(base)) : context = document), parsed = rsingleTag.exec(data), scripts = !keepScripts && [], parsed ? [context.createElement(parsed[1])] : (parsed = buildFragment([data], context, scripts), scripts && scripts.length && jQuery(scripts).remove(), jQuery.merge([], parsed.childNodes)) }, jQuery.fn.load = function(url, params, callback) {
1606        var selector, type, response, self = this,
1607            off = url.indexOf(" ");
1608        return off > -1 && (selector = stripAndCollapse(url.slice(off)), url = url.slice(0, off)), jQuery.isFunction(params) ? (callback = params, params = void 0) : params && "object" == typeof params && (type = "POST"), self.length > 0 && jQuery.ajax({ url: url, type: type || "GET", dataType: "html", data: params }).done(function(responseText) { response = arguments, self.html(selector ? jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector) : responseText) }).always(callback && function(jqXHR, status) { self.each(function() { callback.apply(this, response || [jqXHR.responseText, status, jqXHR]) }) }), this
1609    }, jQuery.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(i, type) { jQuery.fn[type] = function(fn) { return this.on(type, fn) } }), jQuery.expr.pseudos.animated = function(elem) { return jQuery.grep(jQuery.timers, function(fn) { return elem === fn.elem }).length }, jQuery.offset = {
1610        setOffset: function(elem, options, i) {
1611            var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, position = jQuery.css(elem, "position"),
1612                curElem = jQuery(elem),
1613                props = {};
1614            "static" === position && (elem.style.position = "relative"), curOffset = curElem.offset(), curCSSTop = jQuery.css(elem, "top"), curCSSLeft = jQuery.css(elem, "left"), calculatePosition = ("absolute" === position || "fixed" === position) && (curCSSTop + curCSSLeft).indexOf("auto") > -1, calculatePosition ? (curPosition = curElem.position(), curTop = curPosition.top, curLeft = curPosition.left) : (curTop = parseFloat(curCSSTop) || 0, curLeft = parseFloat(curCSSLeft) || 0), jQuery.isFunction(options) && (options = options.call(elem, i, jQuery.extend({}, curOffset))), null != options.top && (props.top = options.top - curOffset.top + curTop), null != options.left && (props.left = options.left - curOffset.left + curLeft), "using" in options ? options.using.call(elem, props) : curElem.css(props)
1615        }
1616    }, jQuery.fn.extend({
1617        offset: function(options) { if (arguments.length) return void 0 === options ? this : this.each(function(i) { jQuery.offset.setOffset(this, options, i) }); var docElem, win, rect, doc, elem = this[0]; if (elem) return elem.getClientRects().length ? (rect = elem.getBoundingClientRect(), rect.width || rect.height ? (doc = elem.ownerDocument, win = getWindow(doc), docElem = doc.documentElement, { top: rect.top + win.pageYOffset - docElem.clientTop, left: rect.left + win.pageXOffset - docElem.clientLeft }) : rect) : { top: 0, left: 0 } },
1618        position: function() {
1619            if (this[0]) {
1620                var offsetParent, offset, elem = this[0],
1621                    parentOffset = { top: 0, left: 0 };
1622                return "fixed" === jQuery.css(elem, "position") ? offset = elem.getBoundingClientRect() : (offsetParent = this.offsetParent(), offset = this.offset(), jQuery.nodeName(offsetParent[0], "html") || (parentOffset = offsetParent.offset()), parentOffset = { top: parentOffset.top + jQuery.css(offsetParent[0], "borderTopWidth", !0), left: parentOffset.left + jQuery.css(offsetParent[0], "borderLeftWidth", !0) }), { top: offset.top - parentOffset.top - jQuery.css(elem, "marginTop", !0), left: offset.left - parentOffset.left - jQuery.css(elem, "marginLeft", !0) }
1623            }
1624        },
1625        offsetParent: function() { return this.map(function() { for (var offsetParent = this.offsetParent; offsetParent && "static" === jQuery.css(offsetParent, "position");) offsetParent = offsetParent.offsetParent; return offsetParent || documentElement }) }
1626    }), jQuery.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(method, prop) {
1627        var top = "pageYOffset" === prop;
1628        jQuery.fn[method] = function(val) { return access(this, function(elem, method, val) { var win = getWindow(elem); return void 0 === val ? win ? win[prop] : elem[method] : void(win ? win.scrollTo(top ? win.pageXOffset : val, top ? val : win.pageYOffset) : elem[method] = val) }, method, val, arguments.length) }
1629    }), jQuery.each(["top", "left"], function(i, prop) { jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function(elem, computed) { if (computed) return computed = curCSS(elem, prop), rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + "px" : computed }) }), jQuery.each({ Height: "height", Width: "width" }, function(name, type) {
1630        jQuery.each({ padding: "inner" + name, content: type, "": "outer" + name }, function(defaultExtra, funcName) {
1631            jQuery.fn[funcName] = function(margin, value) {
1632                var chainable = arguments.length && (defaultExtra || "boolean" != typeof margin),
1633                    extra = defaultExtra || (margin === !0 || value === !0 ? "margin" : "border");
1634                return access(this, function(elem, type, value) { var doc; return jQuery.isWindow(elem) ? 0 === funcName.indexOf("outer") ? elem["inner" + n
1634ame] : elem.document.documentElement["client" + name] : 9 === elem.nodeType ? (doc = elem.documentElement, Math.max(elem.body["scroll" + name], doc["scroll" + name], elem.body["offset" + name], doc["offset" + name], doc["client" + name])) : void 0 === value ? jQuery.css(elem, type, extra) : jQuery.style(elem, type, value, extra) }, type, chainable ? margin : void 0, chainable)
1635            }
1636        })
1637    }), jQuery.fn.extend({ bind: function(types, data, fn) { return this.on(types, null, data, fn) }, unbind: function(types, fn) { return this.off(types, null, fn) }, delegate: function(selector, types, data, fn) { return this.on(types, selector, data, fn) }, undelegate: function(selector, types, fn) { return 1 === arguments.length ? this.off(selector, "**") : this.off(types, selector || "**", fn) } }), jQuery.parseJSON = JSON.parse, "function" == typeof define && define.amd && define("jquery", [], function() { return jQuery });
1638    var _jQuery = window.jQuery,
1639        _$ = window.$;
1640    return jQuery.noConflict = function(deep) { return window.$ === jQuery && (window.$ = _$), deep && window.jQuery === jQuery && (window.jQuery = _jQuery), jQuery }, noGlobal || (window.jQuery = window.$ = jQuery), jQuery
1641}),
1642function(jQuery, window) {
1643    "use strict";
1644
1645    function migrateWarn(msg) {
1646        var console = window.console;
1647        warnedAbout[msg] || (warnedAbout[msg] = !0, jQuery.migrateWarnings.push(msg), console && console.warn && !jQuery.migrateMute && (console.warn("JQMIGRATE: " + msg), jQuery.migrateTrace && console.trace && console.trace()))
1648    }
1649
1650    function migrateWarnProp(obj, prop, value, msg) { Object.defineProperty(obj, prop, { configurable: !0, enumerable: !0, get: function() { return migrateWarn(msg), value } }) }
1651    jQuery.migrateVersion = "3.0.0", jQuery.migrateMute = !0,
1652        function() {
1653            var log = window.console && window.console.log && function() { window.console.log.apply(window.console, arguments) },
1654                rbadVersions = /^[12]\./;
1655            log && (jQuery && !rbadVersions.test(jQuery.fn.jquery) || log("JQMIGRATE: jQuery 3.0.0+ REQUIRED"), jQuery.migrateWarnings && log("JQMIGRATE: Migrate plugin loaded multiple times"), jQuery.migrateMute || log("JQMIGRATE: Migrate is installed" + (jQuery.migrateMute ? "" : " with logging active") + ", version " + jQuery.migrateVersion))
1656        }();
1657    var warnedAbout = {};
1658    jQuery.migrateWarnings = [], void 0 === jQuery.migrateTrace && (jQuery.migrateTrace = !0), jQuery.migrateReset = function() { warnedAbout = {}, jQuery.migrateWarnings.length = 0 }, "BackCompat" === document.compatMode && migrateWarn("jQuery is not compatible with Quirks Mode");
1659    var oldInit = jQuery.fn.init,
1660        oldIsNumeric = jQuery.isNumeric,
1661        oldFind = jQuery.find,
1662        rattrHashTest = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,
1663        rattrHashGlob = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g;
1664    jQuery.fn.init = function(arg1) { var args = Array.prototype.slice.call(arguments); return "string" == typeof arg1 && "#" === arg1 && (migrateWarn("jQuery( '#' ) is not a valid selector"), args[0] = []), oldInit.apply(this, args) }, jQuery.fn.init.prototype = jQuery.fn, jQuery.find = function(selector) {
1665        var args = Array.prototype.slice.call(arguments);
1666        if ("string" == typeof selector && rattrHashTest.test(selector)) try { document.querySelector(selector) } catch (err1) { selector = selector.replace(rattrHashGlob, function(_, attr, op, value) { return "[" + attr + op + '"' + value + '"]' }); try { document.querySelector(selector), migrateWarn("Attribute selector with '#' must be quoted: " + args[0]), args[0] = selector } catch (err2) { migrateWarn("Attribute selector with '#' was not fixed: " + args[0]) } }
1667        return oldFind.apply(this, args)
1668    };
1669    var findProp;
1670    for (findProp in oldFind) Object.prototype.hasOwnProperty.call(oldFind, findProp) && (jQuery.find[findProp] = oldFind[findProp]);
1671    jQuery.fn.size = function() { return migrateWarn("jQuery.fn.size() is deprecated; use the .length property"), this.length }, jQuery.parseJSON = function() { return migrateWarn("jQuery.parseJSON is deprecated; use JSON.parse"), JSON.parse.apply(null, arguments) }, jQuery.isNumeric = function(val) {
1672        function isNumeric2(obj) { var realStringObj = obj && obj.toString(); return !jQuery.isArray(obj) && realStringObj - parseFloat(realStringObj) + 1 >= 0 }
1673        var newValue = oldIsNumeric(val),
1674            oldValue = isNumeric2(val);
1675        return newValue !== oldValue && migrateWarn("jQuery.isNumeric() should not be called on constructed objects"), oldValue
1676    }, migrateWarnProp(jQuery, "unique", jQuery.uniqueSort, "jQuery.unique is deprecated, use jQuery.uniqueSort"), migrateWarnProp(jQuery.expr, "filters", jQuery.expr.pseudos, "jQuery.expr.filters is now jQuery.expr.pseudos"), migrateWarnProp(jQuery.expr, ":", jQuery.expr.pseudos, 'jQuery.expr[":"] is now jQuery.expr.pseudos');
1677    var oldAjax = jQuery.ajax;
1678    jQuery.ajax = function() { var jQXHR = oldAjax.apply(this, arguments); return jQXHR.promise && (migrateWarnProp(jQXHR, "success", jQXHR.done, "jQXHR.success is deprecated and removed"), migrateWarnProp(jQXHR, "error", jQXHR.fail, "jQXHR.error is deprecated and removed"), migrateWarnProp(jQXHR, "complete", jQXHR.always, "jQXHR.complete is deprecated and removed")), jQXHR };
1679    var oldRemoveAttr = jQuery.fn.removeAttr,
1680        oldToggleClass = jQuery.fn.toggleClass,
1681        rmatchNonSpace = /\S+/g;
1682    jQuery.fn.removeAttr = function(name) { var self = this; return jQuery.each(name.match(rmatchNonSpace), function(i, attr) { jQuery.expr.match.bool.test(attr) && (migrateWarn("jQuery.fn.removeAttr no longer sets boolean properties: " + attr), self.prop(attr, !1)) }), oldRemoveAttr.apply(this, arguments) }, jQuery.fn.toggleClass = function(state) {
1683        return void 0 !== state && "boolean" != typeof state ? oldToggleClass.apply(this, arguments) : (migrateWarn("jQuery.fn.toggleClass( boolean ) is deprecated"), this.each(function() {
1684            var className = this.getAttribute && this.getAttribute("class") || "";
1685            className && jQuery.data(this, "__className__", className), this.setAttribute && this.setAttribute("class", className || state === !1 ? "" : jQuery.data(this, "__className__") || "")
1686        }))
1687    };
1688    var internalSwapCall = !1;
1689    jQuery.swap && jQuery.each(["height", "width", "reliableMarginRight"], function(_, name) {
1690        var oldHook = jQuery.cssHooks[name] && jQuery.cssHooks[name].get;
1691        oldHook && (jQuery.cssHooks[name].get = function() { var ret; return internalSwapCall = !0, ret = oldHook.apply(this, arguments), internalSwapCall = !1, ret })
1692    }), jQuery.swap = function(elem, options, callback, args) {
1693        var ret, name, old = {};
1694        internalSwapCall || migrateWarn("jQuery.swap() is undocumented and deprecated");
1695        for (name in options) old[name] = elem.style[name], elem.style[name] = options[name];
1696        ret = callback.apply(elem, args || []);
1697        for (name in options) elem.style[name] = old[name];
1698        return ret
1699    };
1700    var oldData = jQuery.data;
1701    jQuery.data = function(elem, name, value) { var curData; return name && name !== jQuery.camelCase(name) && (curData = jQuery.hasData(elem) && oldData.call(this, elem), curData && name in curData) ? (migrateWarn("jQuery.data() always sets/gets camelCased names: " + name), arguments.length > 2 && (curData[name] = value), curData[name]) : oldData.apply(this, arguments) };
1702    var oldTweenRun = jQuery.Tween.prototype.run;
1703    jQuery.Tween.prototype.run = function(percent) { jQuery.easing[this.easing].length > 1 && (migrateWarn('easing function "jQuery.easing.' + this.easing.toString() + '" should use only first argument'), jQuery.easing[this.easing] = jQuery.easing[this.easing].bind(jQuery.easing, percent, this.options.duration * percent, 0, 1, this.options.duration)), oldTweenRun.apply(this, arguments) };
1704    var oldLoad = jQuery.fn.load,
1705        originalFix = jQuery.event.fix;
1706    jQuery.event.props = [], jQuery.event.fixHooks = {}, jQuery.event.fix = function(originalEvent) {
1707        var event, type = originalEvent.type,
1708            fixHook = this.fixHooks[type],
1709            props = jQuery.event.props;
1710        if (props.length)
1711            for (migrateWarn("jQuery.event.props are deprecated and removed: " + props.join()); props.length;) jQuery.event.addProp(props.pop());
1712        if (fixHook && !fixHook._migrated_ && (fixHook._migrated_ = !0, migrateWarn("jQuery.event.fixHooks are deprecated and removed: " + type), (props = fixHook.props) && props.length))
1713            for (; props.length;) jQuery.event.addProp(props.pop());
1714        return event = originalFix.call(this, originalEvent), fixHook && fixHook.filter ? fixHook.filter(event, originalEvent) : event
1715    }, jQuery.each(["load", "unload", "error"], function(_, name) { jQuery.fn[name] = function() { var args = Array.prototype.slice.call(arguments, 0); return "load" === name && "string" == typeof args[0] ? oldLoad.apply(this, args) : (migrateWarn("jQuery.fn." + name + "() is deprecated"), args.splice(0, 0, name), arguments.length ? this.on.apply(this, args) : (this.triggerHandler.apply(this, args), this)) } }), jQuery(function() { jQuery(document).triggerHandler("ready") }), jQuery.event.special.ready = { setup: function() { this === document && migrateWarn("'ready' event is deprecated") } }, jQuery.fn.extend({ bind: function(types, data, fn) { return migrateWarn("jQuery.fn.bind() is deprecated"), this.on(types, null, data, fn) }, unbind: function(types, fn) { return migrateWarn("jQuery.fn.unbind() is deprecated"), this.off(types, null, fn) }, delegate: function(selector, types, data, fn) { return migrateWarn("jQuery.fn.delegate() is deprecated"), this.on(types, selector, data, fn) }, undelegate: function(selector, types, fn) { return migrateWarn("jQuery.fn.undelegate() is deprecated"), 1 === arguments.length ? this.off(selector, "**") : this.off(types, selector || "**", fn) } });
1716    var oldOffset = jQuery.fn.offset;
1717    jQuery.fn.offset = function() {
1718        var docElem, elem = this[0],
1719            origin = { top: 0, left: 0 };
1720        return elem && elem.nodeType ? (docElem = (elem.ownerDocument || document).documentElement, jQuery.contains(docElem, elem) ? oldOffset.apply(this, arguments) : (migrateWarn("jQuery.fn.offset() requires an element connected to a document"), origin)) : (migrateWarn("jQuery.fn.offset() requires a valid DOM element"), origin)
1721    };
1722    var oldParam = jQuery.param;
1723    jQuery.param = function(data, traditional) { var ajaxTraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; return void 0 === traditional && ajaxTraditional && (migrateWarn("jQuery.param() no longer uses jQuery.ajaxSettings.traditional"), traditional = ajaxTraditional), oldParam.call(this, data, traditional) };
1724    var oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;
1725    jQuery.fn.andSelf = function() { return migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"), oldSelf.apply(this, arguments) };
1726    var oldDeferred = jQuery.Deferred,
1727        tuples = [
1728            ["resolve", "done", jQuery.Callbacks("once memory"), jQuery.Callbacks("once memory"), "resolved"],
1729            ["reject", "fail", jQuery.Callbacks("once memory"), jQuery.Callbacks("once memory"), "rejected"],
1730            ["notify", "progress", jQuery.Callbacks("memory"), jQuery.Callbacks("memory")]
1731        ];
1732    jQuery.Deferred = function(func) {
1733        var deferred = oldDeferred(),
1734            promise = deferred.promise();
1735        return deferred.pipe = promise.pipe = function() {
1736            var fns = arguments;
1737            return migrateWarn("deferred.pipe() is deprecated"), jQuery.Deferred(function(newDefer) {
1738                jQuery.each(tuples, function(i, tuple) {
1739                    var fn = jQuery.isFunction(fns[i]) && fns[i];
1740                    deferred[tuple[1]](function() {
1741                        var returned = fn && fn.apply(this, arguments);
1742                        returned && jQuery.isFunction(returned.promise) ? returned.promise().done(newDefer.resolve).fail(newDefer.reject).progress(newDefer.notify) : newDefer[tuple[0] + "With"](this === promise ? newDefer.promise() : this, fn ? [returned] : arguments)
1743                    })
1744                }), fns = null
1745            }).promise()
1746        }, func && func.call(deferred, deferred), deferred
1747    }
1748}(jQuery, window),
1749function($) { $.fn.closestChild = function(selector) { var $children, $results; return $children = this.children(), 0 === $children.length ? $() : ($results = $children.filter(selector), $results.length > 0 ? $results : $children.closestChild(selector)) } }(window.jQuery),
1750function() {
1751    "use strict";
1752
1753    function EventEmitter() {}
1754
1755    function indexOfListener(listeners, listener) {
1756        for (var i = listeners.length; i--;)
1757            if (listeners[i].listener === listener) return i;
1758        return -1
1759    }
1760
1761    function alias(name) { return function() { return this[name].apply(this, arguments) } }
1762    var proto = EventEmitter.prototype,
1763        exports = this,
1764        originalGlobalValue = exports.EventEmitter;
1765    proto.getListeners = function(evt) { var response, key, events = this._getEvents(); if (evt instanceof RegExp) { response = {}; for (key in events) events.hasOwnProperty(key) && evt.test(key) && (response[key] = events[key]) } else response = events[evt] || (events[evt] = []); return response }, proto.flattenListeners = function(listeners) { var i, flatListeners = []; for (i = 0; i < listeners.length; i += 1) flatListeners.push(listeners[i].listener); return flatListeners }, proto.getListenersAsObject = function(evt) { var response, listeners = this.getListeners(evt); return listeners instanceof Array && (response = {}, response[evt] = listeners), response || listeners }, proto.addListener = function(evt, listener) {
1766        var key, listeners = this.getListenersAsObject(evt),
1767            listenerIsWrapped = "object" == typeof listener;
1768        for (key in listeners) listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1 && listeners[key].push(listenerIsWrapped ? listener : { listener: listener, once: !1 });
1769        return this
1770    }, proto.on = alias("addListener"), proto.addOnceListener = function(evt, listener) { return this.addListener(evt, { listener: listener, once: !0 }) }, proto.once = alias("addOnceListener"), proto.defineEvent = function(evt) { return this.getListeners(evt), this }, proto.defineEvents = function(evts) { for (var i = 0; i < evts.length; i += 1) this.defineEvent(evts[i]); return this }, proto.removeListener = function(evt, listener) { var index, key, listeners = this.getListenersAsObject(evt); for (key in listeners) listeners.hasOwnProperty(key) && (index = indexOfListener(listeners[key], listener), index !== -1 && listeners[key].splice(index, 1)); return this }, proto.off = alias("removeListener"), proto.addListeners = function(evt, listeners) { return this.manipulateListeners(!1, evt, listeners) }, proto.removeListeners = function(evt, listeners) { return this.manipulateListeners(!0, evt, listeners) }, proto.manipulateListeners = function(remove, evt, listeners) {
1771        var i, value, single = remove ? this.removeListener : this.addListener,
1772            multiple = remove ? this.removeListeners : this.addListeners;
1773        if ("object" != typeof evt || evt instanceof RegExp)
1774            for (i = listeners.length; i--;) single.call(this, evt, listeners[i]);
1775        else
1776            for (i in evt) evt.hasOwnProperty(i) && (value = evt[i]) && ("function" == typeof value ? single.call(this, i, value) : multiple.call(this, i, value));
1777        return this
1778    }, proto.removeEvent = function(evt) {
1779        var key, type = typeof evt,
1780            events = this._getEvents();
1781        if ("string" === type) delete events[evt];
1782        else if (evt instanceof RegExp)
1783            for (key in events) events.hasOwnProperty(key) && evt.test(key) && delete events[key];
1784        else delete this._events;
1785        return this
1786    }, proto.removeAllListeners = alias("removeEvent"), proto.emitEvent = function(evt, args) {
1787        var listeners, listener, i, key, response, listenersMap = this.getListenersAsObject(evt);
1788        for (key in listenersMap)
1789   
1789         if (listenersMap.hasOwnProperty(key))
1790                for (listeners = listenersMap[key].slice(0), i = listeners.length; i--;) listener = listeners[i], listener.once === !0 && this.removeListener(evt, listener.listener), response = listener.listener.apply(this, args || []), response === this._getOnceReturnValue() && this.removeListener(evt, listener.listener);
1791        return this
1792    }, proto.trigger = alias("emitEvent"), proto.emit = function(evt) { var args = Array.prototype.slice.call(arguments, 1); return this.emitEvent(evt, args) }, proto.setOnceReturnValue = function(value) { return this._onceReturnValue = value, this }, proto._getOnceReturnValue = function() { return !this.hasOwnProperty("_onceReturnValue") || this._onceReturnValue }, proto._getEvents = function() { return this._events || (this._events = {}) }, EventEmitter.noConflict = function() { return exports.EventEmitter = originalGlobalValue, EventEmitter }, "function" == typeof define && define.amd ? define("eventEmitter/EventEmitter", [], function() { return EventEmitter }) : "object" == typeof module && module.exports ? module.exports = EventEmitter : exports.EventEmitter = EventEmitter
1793}.call(this),
1794    function(window, factory) { "use strict"; "function" == typeof define && define.amd ? define(["eventEmitter/EventEmitter"], function(EventEmitter) { return factory(window, EventEmitter) }) : "object" == typeof module && module.exports ? module.exports = factory(window, require("wolfy87-eventemitter")) : window.imagesLoaded = factory(window, window.EventEmitter) }(window, function(window, EventEmitter) {
1795        function extend(a, b) { for (var prop in b) a[prop] = b[prop]; return a }
1796
1797        function makeArray(obj) {
1798            var ary = [];
1799            if (Array.isArray(obj)) ary = obj;
1800            else if ("number" == typeof obj.length)
1801                for (var i = 0; i < obj.length; i++) ary.push(obj[i]);
1802            else ary.push(obj);
1803            return ary
1804        }
1805
1806        function ImagesLoaded(elem, options, onAlways) { return this instanceof ImagesLoaded ? ("string" == typeof elem && (elem = document.querySelectorAll(elem)), this.elements = makeArray(elem), this.options = extend({}, this.options), "function" == typeof options ? onAlways = options : extend(this.options, options), onAlways && this.on("always", onAlways), this.getImages(), $ && (this.jqDeferred = new $.Deferred), void setTimeout(function() { this.check() }.bind(this))) : new ImagesLoaded(elem, options, onAlways) }
1807
1808        function LoadingImage(img) { this.img = img }
1809
1810        function Background(url, element) { this.url = url, this.element = element, this.img = new Image }
1811        var $ = window.jQuery,
1812            console = window.console;
1813        ImagesLoaded.prototype = Object.create(EventEmitter.prototype), ImagesLoaded.prototype.options = {}, ImagesLoaded.prototype.getImages = function() { this.images = [], this.elements.forEach(this.addElementImages, this) }, ImagesLoaded.prototype.addElementImages = function(elem) {
1814            "IMG" == elem.nodeName && this.addImage(elem), this.options.background === !0 && this.addElementBackgroundImages(elem);
1815            var nodeType = elem.nodeType;
1816            if (nodeType && elementNodeTypes[nodeType]) {
1817                for (var childImgs = elem.querySelectorAll("img"), i = 0; i < childImgs.length; i++) {
1818                    var img = childImgs[i];
1819                    this.addImage(img)
1820                }
1821                if ("string" == typeof this.options.background) {
1822                    var children = elem.querySelectorAll(this.options.background);
1823                    for (i = 0; i < children.length; i++) {
1824                        var child = children[i];
1825                        this.addElementBackgroundImages(child)
1826                    }
1827                }
1828            }
1829        };
1830        var elementNodeTypes = { 1: !0, 9: !0, 11: !0 };
1831        return ImagesLoaded.prototype.addElementBackgroundImages = function(elem) {
1832            var style = getComputedStyle(elem);
1833            if (style)
1834                for (var reURL = /url\((['"])?(.*?)\1\)/gi, matches = reURL.exec(style.backgroundImage); null !== matches;) {
1835                    var url = matches && matches[2];
1836                    url && this.addBackground(url, elem), matches = reURL.exec(style.backgroundImage)
1837                }
1838        }, ImagesLoaded.prototype.addImage = function(img) {
1839            var loadingImage = new LoadingImage(img);
1840            this.images.push(loadingImage)
1841        }, ImagesLoaded.prototype.addBackground = function(url, elem) {
1842            var background = new Background(url, elem);
1843            this.images.push(background)
1844        }, ImagesLoaded.prototype.check = function() {
1845            function onProgress(image, elem, message) { setTimeout(function() { _this.progress(image, elem, message) }) }
1846            var _this = this;
1847            return this.progressedCount = 0, this.hasAnyBroken = !1, this.images.length ? void this.images.forEach(function(loadingImage) { loadingImage.once("progress", onProgress), loadingImage.check() }) : void this.complete()
1848        }, ImagesLoaded.prototype.progress = function(image, elem, message) { this.progressedCount++, this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded, this.emit("progress", this, image, elem), this.jqDeferred && this.jqDeferred.notify && this.jqDeferred.notify(this, image), this.progressedCount == this.images.length && this.complete(), this.options.debug && console && console.log("progress: " + message, image, elem) }, ImagesLoaded.prototype.complete = function() {
1849            var eventName = this.hasAnyBroken ? "fail" : "done";
1850            if (this.isComplete = !0, this.emit(eventName, this), this.emit("always", this), this.jqDeferred) {
1851                var jqMethod = this.hasAnyBroken ? "reject" : "resolve";
1852                this.jqDeferred[jqMethod](this)
1853            }
1854        }, LoadingImage.prototype = Object.create(EventEmitter.prototype), Lo
1854adingImage.prototype.check = function() { var isComplete = this.getIsImageComplete(); return isComplete ? void this.confirm(0 !== this.img.naturalWidth, "naturalWidth") : (this.proxyImage = new Image, this.proxyImage.addEventListener("load", this), this.proxyImage.addEventListener("error", this), this.img.addEventListener("load", this), this.img.addEventListener("error", this), void(this.proxyImage.src = this.img.src)) }, LoadingImage.prototype.getIsImageComplete = function() { return this.img.complete && void 0 !== this.img.naturalWidth }, LoadingImage.prototype.confirm = function(isLoaded, message) { this.isLoaded = isLoaded, this.emit("progress", this, this.img, message) }, LoadingImage.prototype.handleEvent = function(event) {
1855            var method = "on" + event.type;
1856            this[method] && this[method](event)
1857        }, LoadingImage.prototype.onload = function() { this.confirm(!0, "onload"), this.unbindEvents() }, LoadingImage.prototype.onerror = function() { this.confirm(!1, "onerror"), this.unbindEvents() }, LoadingImage.prototype.unbindEvents = function() { this.proxyImage.removeEventListener("load", this), this.proxyImage.removeEventListener("error", this), this.img.removeEventListener("load", this), this.img.removeEventListener("error", this) }
1857, Background.prototype = Object.create(LoadingImage.prototype), Background.prototype.check = function() {
1858            this.img.addEventListener("load", this), this.img.addEventListener("error", this), this.img.src = this.url;
1859            var isComplete = this.getIsImageComplete();
1860            isComplete && (this.confirm(0 !== this.img.naturalWidth, "naturalWidth"), this.unbindEvents())
1861        }, Background.prototype.unbindEvents = function() { this.img.addEventListener("load", this), this.img.addEventListener("error", this) }, Background.prototype.confirm = function(isLoaded, message) { this.isLoaded = isLoaded, this.emit("progress", this, this.element, message) }, ImagesLoaded.makeJQueryPlugin = function(jQuery) { jQuery = jQuery || window.jQuery, jQuery && ($ = jQuery, $.fn.imagesLoaded = function(options, callback) { var instance = new ImagesLoaded(this, options, callback); return instance.jqDeferred.promise($(this)) }) }, ImagesLoaded.makeJQueryPlugin(), ImagesLoaded
1862    }),
1863    function() {
1864        function addMapEntry(map, pair) { return map.set(pair[0], pair[1]), map }
1865
1866        function addSetEntry(set, value) { return set.add(value), set }
1867
1868        function apply(func, thisArg, args) {
1869            var length = args.length;
1870            switch (length) {
1871                case 0:
1872                    return func.call(thisArg);
1873                case 1:
1874                    return func.call(thisArg, args[0]);
1875                case 2:
1876                    return func.call(thisArg, args[0], args[1]);
1877                case 3:
1878                    return func.call(thisArg, args[0], args[1], args[2])
1879            }
1880            return func.apply(thisArg, args)
1881        }
1882
1883        function arrayAggregator(array, setter, iteratee, accumulator) {
1884            for (var index = -1, length = array.length; ++index < length;) {
1885                var value = array[index];
1886                setter(accumulator, value, iteratee(value), array)
1887            }
1888            return accumulator
1889        }
1890
1891        function arrayConcat(array, other) { for (var index = -1, length = array.length, othIndex = -1, othLength = other.length, result = Array(length + othLength); ++index < length;) result[index] = array[index]; for (; ++othIndex < othLength;) result[index++] = other[othIndex]; return result }
1892
1893        function arrayEach(array, iteratee) { for (var index = -1, length = array.length; ++index < length && iteratee(array[index], index, array) !== !1;); return array }
1894
1895        function arrayEachRight(array, iteratee) { for (var length = array.length; length-- && iteratee(array[length], length, array) !== !1;); return array }
1896
1897        function arrayEvery(array, predicate) {
1898            for (var index = -1, length = array.length; ++index < length;)
1899                if (!predicate(array[index], index, array)) return !1;
1900            return !0
1901        }
1902
1903        function arrayFilter(array, predicate) {
1904            for (var index = -1, length = array.length, resIndex = -1, result = []; ++index < length;) {
1905                var value = array[index];
1906                predicate(value, index, array) && (result[++resIndex] = value)
1907            }
1908            return result
1909        }
1910
1911        function arrayIncludes(array, value) { return !!array.length && baseIndexOf(array, value, 0) > -1 }
1912
1913        function arrayIncludesWith(array, value, comparator) {
1914            for (var index = -1, length = array.length; ++index < length;)
1915                if (comparator(value, array[index])) return !0;
1916            return !1
1917        }
1918
1919        function arrayMap(array, iteratee) { for (var index = -1, length = array.length, result = Array(length); ++index < length;) result[index] = iteratee(array[index], index, array); return result }
1920
1921        function arrayPush(array, values) { for (var index = -1, length = values.length, offset = array.length; ++index < length;) array[offset + index] = values[index]; return array }
1922
1923        function arrayReduce(array, iteratee, accumulator, initAccum) {
1924            var index = -1,
1925                length = array.length;
1926            for (initAccum && length && (accumulator = array[++index]); ++index < length;) accumulator = iteratee(accumulator, array[index], index, array);
1927            return accumulator
1928        }
1929
1930        function arrayReduceRight(array, iteratee, accumulator, initAccum) { var length = array.length; for (initAccum && length && (accumulator = array[--length]); length--;) accumulator = iteratee(accumulator, array[length], length, array); return accumulator }
1931
1932        function arraySome(array, predicate) {
1933            for (var index = -1, length = array.length; ++index < length;)
1934                if (predicate(array[index], index, array)) return !0;
1935            return !1
1936        }
1937
1938        function baseExtremum(array, iteratee, comparator) {
1939            for (var index = -1, length = array.length; ++index < length;) {
1940                var value = array[index],
1941                    current = iteratee(value);
1942                if (null != current && (computed === undefined ? current === current : comparator(current, computed))) var computed = current,
1943                    result = value
1944            }
1945            return result
1946        }
1947
1948        function baseFind(collection, predicate, eachFunc, retKey) { var result; return eachFunc(collection, function(value, key, collection) { if (predicate(value, key, collection)) return result = retKey ? key : value, !1 }), result }
1949
1950        function baseFindIndex(array, predicate, fromRight) {
1951            for (var length = array.length, index = fromRight ? length : -1; fromRight ? index-- : ++index < length;)
1952                if (predicate(array[index], index, array)) return index;
1953            return -1
1954        }
1955
1956        function baseIndexOf(array, value, fromIndex) {
1957            if (value !== value) return indexOfNaN(array, fromIndex);
1958            for (var index = fromIndex - 1, length = array.length; ++index < length;)
1959                if (array[index] === value) return index;
1960            return -1
1961        }
1962
1963        function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { return eachFunc(collection, function(value, index, collection) { accumulator = initAccum ? (initAccum = !1, value) : iteratee(accumulator, value, index, collection) }), accumulator }
1964
1965        function baseSortBy(array, comparer) { var length = array.length; for (array.sort(comparer); length--;) array[length] = array[length].value; return array }
1966
1967        function baseSum(array, iteratee) {
1968            for (var result, index = -1, length = array.length; ++index < length;) {
1969                var current = iteratee(array[index]);
1970                current !== undefined && (result = result === undefined ? current : result + current)
1971            }
1972            return result
1973        }
1974
1975        function baseTimes(n, iteratee) { for (var index = -1, result = Array(n); ++index < n;) result[index] = iteratee(index); return result }
1976
1977        function baseToPairs(object, props) { return arrayMap(props, function(key) { return [key, object[key]] }) }
1978
1979        function baseUnary(func) { return function(value) { return func(value) } }
1980
1981        function baseValues(object, props) { return arrayMap(props, function(key) { return object[key] }) }
1982
1983        function charsStartIndex(strSymbols, chrSymbols) { for (var index = -1, length = strSymbols.length; ++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0
1983) > -1;); return index }
1984
1985        function charsEndIndex(strSymbols, chrSymbols) { for (var index = strSymbols.length; index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1;); return index }
1986
1987        function checkGlobal(value) { return value && value.Object === Object ? value : null }
1988
1989        function compareAscending(value, other) {
1990            if (value !== other) {
1991                var valIsNull = null === value,
1992                    valIsUndef = value === undefined,
1993                    valIsReflexive = value === value,
1994                    othIsNull = null === other,
1995                    othIsUndef = other === undefined,
1996                    othIsReflexive = other === other;
1997                if (value > other && !othIsNull || !valIsReflexive || valIsNull && !othIsUndef && othIsReflexive || valIsUndef && othIsReflexive) return 1;
1998                if (value < other && !valIsNull || !othIsReflexive || othIsNull && !valIsUndef && valIsReflexive || othIsUndef && valIsReflexive) return -1
1999            }
2000            return 0
2001        }
2002
2003        function compareMultiple(object, other, orders) { for (var index = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length; ++index < length;) { var result = compareAscending(objCriteria[index], othCriteria[index]); if (result) { if (index >= ordersLength) return result; var order = orders[index]; return result * ("desc" == order ? -1 : 1) } } return object.index - other.index }
2004
2005        function deburrLetter(letter) { return deburredLetters[letter] }
2006
2007        function escapeHtmlChar(chr) { return htmlEscapes[chr] }
2008
2009        function escapeStringChar(chr) { return "\\" + stringEscapes[chr] }
2010
2011        function indexOfNaN(array, fromIndex, fromRight) { for (var length = array.length, index = fromIndex + (fromRight ? 0 : -1); fromRight ? index-- : ++index < length;) { var other = array[index]; if (other !== other) return index } return -1 }
2012
2013        function isHostObject(value) {
2014            var result = !1;
2015            if (null != value && "function" != typeof value.toString) try { result = !!(value + "") } catch (e) {}
2016            return result
2017        }
2018
2019        function isIndex(value, length) { return value = "number" == typeof value || reIsUint.test(value) ? +value : -1, length = null == length ? MAX_SAFE_INTEGER : length, value > -1 && value % 1 == 0 && value < length }
2020
2021        function iteratorToArray(iterator) { for (var data, result = []; !(data = iterator.next()).done;) result.push(data.value); return result }
2022
2023        function mapToArray(map) {
2024            var index = -1,
2025                result = Array(map.size);
2026            return map.forEach(function(value, key) { result[++index] = [key, value] }), result
2027        }
2028
2029        function replaceHolders(array, placeholder) { for (var index = -1, length = array.length, resIndex = -1, result = []; ++index < length;) array[index] === placeholder && (array[index] = PLACEHOLDER, result[++resIndex] = index); return result }
2030
2031        function setToArray(set) {
2032            var index = -1,
2033                result = Array(set.size);
2034            return set.forEach(function(value) { result[++index] = value }), result
2035        }
2036
2037        function stringSize(string) { if (!string || !reHasComplexSymbol.test(string)) return string.length; for (var result = reComplexSymbol.lastIndex = 0; reComplexSymbol.test(string);) result++; return result }
2038
2039        function stringToArray(string) { return string.match(reComplexSymbol) }
2040
2041        function unescapeHtmlChar(chr) { return htmlUnescapes[chr] }
2042
2043        function runInContext(context) {
2044            function lodash(value) { if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { if (value instanceof LodashWrapper) return value; if (hasOwnProperty.call(value, "__wrapped__")) return wrapperClone(value) } return new LodashWrapper(value) }
2045
2046            function baseLodash() {}
2047
2048            function LodashWrapper(value, chainAll) { this.__wrapped__ = value, this.__actions__ = [], this.__chain__ = !!chainAll, this.__index__ = 0, this.__values__ = undefined }
2049
2050            function LazyWrapper(value) { this.__wrapped__ = value, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = MAX_ARRAY_LENGTH, this.__views__ = [] }
2051
2052            function lazyClone() { var result = new LazyWrapper(this.__wrapped__); return result.__actions__ = copyArray(this.__actions__), result.__dir__ = this.__dir__, result.__filtered__ = this.__filtered__, result.__iteratees__ = copyArray(this.__iteratees__), result.__takeCount__ = this.__takeCount__, result.__views__ = copyArray(this.__views__), result }
2053
2054            function lazyReverse() {
2055                if (this.__filtered__) {
2056                    var result = new LazyWrapper(this);
2057                    result.__dir__ = -1, result.__filtered__ = !0
2058                } else result = this.clone(), result.__dir__ *= -1;
2059                return result
2060            }
2061
2062            function lazyValue() {
2063                var array = this.__wrapped__.value(),
2064                    dir = this.__dir__,
2065                    isArr = isArray(array),
2066                    isRight = dir < 0,
2067                    arrLength = isArr ? array.length : 0,
2068                    view = getView(0, arrLength, this.__views__),
2069                    start = view.start,
2070                    end = view.end,
2071                    length = end - start,
2072                    index = isRight ? end : start - 1,
2073                    iteratees = this.__iteratees__,
2074                    iterLength = iteratees.length,
2075                    resIndex = 0,
2076                    takeCount = nativeMin(length, this.__takeCount__);
2077                if (!isArr || arrLength < LARGE_ARRAY_SIZE || arrLength == length && takeCount == length) return baseWrapperValue(array, this.__actions__);
2078                var result = [];
2079                outer: for (; length-- && resIndex < takeCount;) {
2080                    index += dir;
2081                    for (var iterIndex = -1, value = array[index]; ++iterIndex < iterLength;) {
2082                        var data = iteratees[iterIndex],
2083                            iteratee = data.iteratee,
2084                            type = data.type,
2085                            computed = iteratee(value);
2086                        if (type == LAZY_MAP_FLAG) value = computed;
2087                        else if (!computed) { if (type == LAZY_FILTER_FLAG) continue outer; break outer }
2088                    }
2089                    result[resIndex++] = value
2090                }
2091                return result
2092            }
2093
2094            function Hash() {}
2095
2096            function hashDelete(hash, key) { return hashHas(hash, key) && delete hash[key] }
2097
2098            function hashGet(hash, key) { if (nativeCreate) { var result = hash[key]; return result === HASH_UNDEFINED ? undefined : result } return hasOwnProperty.call(hash, key) ? hash[key] : undefined }
2099
2100            function hashHas(hash, key) { return nativeCreate ? hash[key] !== undefined : hasOwnProperty.call(hash, key) }
2101
2102            function hashSet(hash, key, value) { hash[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value }
2103
2104            function MapCache(values) {
2105                var index = -1,
2106                    length = values ? values.length : 0;
2107                for (this.clear(); ++index < length;) {
2108                    var entry = values[index];
2109                    this.set(entry[0], entry[1])
2110                }
2111            }
2112
2113            function mapClear() { this.__data__ = { hash: new Hash, map: Map ? new Map : [], string: new Hash } }
2114
2115            function mapDelete(key) { var data = this.__data__;
2115 return isKeyable(key) ? hashDelete("string" == typeof key ? data.string : data.hash, key) : Map ? data.map.delete(key) : assocDelete(data.map, key) }
2116
2117            function mapGet(key) { var data = this.__data__; return isKeyable(key) ? hashGet("string" == typeof key ? data.string : data.hash, key) : Map ? data.map.get(key) : assocGet(data.map, key) }
2118
2119            function mapHas(key) { var data = this.__data__; return isKeyable(key) ? hashHas("string" == typeof key ? data.string : data.hash, key) : Map ? data.map.has(key) : assocHas(data.map, key) }
2120
2121            function mapSet(key, value) { var data = this.__data__; return isKeyable(key) ? hashSet("string" == typeof key ? data.string : data.hash, key, value) : Map ? data.map.set(key, value) : assocSet(data.map, key, value), this }
2122
2123            function SetCache(values) {
2124                var index = -1,
2125                    length = values ? values.length : 0;
2126                for (this.__data__ = new MapCache; ++index < length;) this.push(values[index])
2127            }
2128
2129            function cacheHas(cache, value) {
2130                var map = cache.__data__;
2131                if (isKeyable(value)) {
2132                    var data = map.__data__,
2133                        hash = "string" == typeof value ? data.string : data.hash;
2134                    return hash[value] === HASH_UNDEFINED
2135                }
2136                return map.has(value)
2137            }
2138
2139            function cachePush(value) {
2140                var map = this.__data__;
2141                if (isKeyable(value)) {
2142                    var data = map.__data__,
2143                        hash = "string" == typeof value ? data.string : data.hash;
2144                    hash[value] = HASH_UNDEFINED
2145                } else map.set(value, HASH_UNDEFINED)
2146            }
2147
2148            function Stack(values) {
2149                var index = -1,
2150                    length = values ? values.length : 0;
2151                for (this.clear(); ++index < length;) {
2152                    var entry = values[index];
2153                    this.set(entry[0], entry[1])
2154                }
2155            }
2156
2157            function stackClear() { this.__data__ = { array: [], map: null } }
2158
2159            function stackDelete(key) {
2160                var data = this.__data__,
2161                    array = data.array;
2162                return array ? assocDelete(array, key) : data.map.delete(key)
2163            }
2164
2165            function stackGet(key) {
2166                var data = this.__data__,
2167                    array = data.array;
2168                return array ? assocGet(array, key) : data.map.get(key)
2169            }
2170
2171            function stackHas(key) {
2172                var data = this.__data__,
2173                    array = data.array;
2174                return array ? assocHas(array, key) : data.map.has(key)
2175            }
2176
2177            function stackSet(key, value) {
2178                var data = this.__data__,
2179                    array = data.array;
2180                array && (array.length < LARGE_ARRAY_SIZE - 1 ? assocSet(array, key, value) : (data.array = null, data.map = new MapCache(array)));
2181                var map = data.map;
2182                return map && map.set(key, value), this
2183            }
2184
2185            function assocDelete(array, key) { var index = assocIndexOf(array, key); if (index < 0) return !1; var lastIndex = array.length - 1; return index == lastIndex ? array.pop() : splice.call(array, index, 1), !0 }
2186
2187            function assocGet(array, key) { var index = assocIndexOf(array, key); return index < 0 ? undefined : array[index][1] }
2188
2189            function assocHas(array, key) { return assocIndexOf(array, key) > -1 }
2190
2191            function assocIndexOf(array, key) {
2192                for (var length = array.length; length--;)
2193                    if (eq(array[length][0], key)) return length;
2194                return -1
2195            }
2196
2197            function assocSet(array, key, value) {
2198                var index = assocIndexOf(array, key);
2199                index < 0 ? array.push([key, value]) : array[index][1] = value
2200            }
2201
2202            function assignInDefaults(objValue, srcValue, key, object) { return objValue === undefined || eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key) ? srcValue : objValue }
2203
2204            function assignMergeValue(object, key, value) {
2205                (value === undefined || eq(object[key], value)) && ("number" != typeof key || value !== undefined || key in object) || (object[key] = value)
2206            }
2207
2208            function assignValue(object, key, value) {
2209                var objValue = object[key];
2210                eq(objValue, value) && (!eq(objValue, objectProto[key]) || hasOwnProperty.call(object, key)) && (value !== undefined || key in object) || (object[key] = value)
2211            }
2212
2213            function baseAggregator(collection, setter, iteratee, accumulator) { return baseEach(collection, function(value, key, collection) { setter(accumulator, value, iteratee(value), collection) }), accumulator }
2214
2215            function baseAssign(object, source) { return object && copyObject(source, keys(source), object) }
2216
2217            function baseAt(object, paths) { for (var index = -1, isNil = null == object, length = paths.length, result = Array(length); ++index < length;) result[index] = isNil ? undefined : get(object, paths[index]); return result }
2218
2219            function baseClamp(number, lower, upper) { return number === number && (upper !== undefined && (number = number <= upper ? number : upper), lower !== undefined && (number = number >= lower ? number : lower)), number }
2220
2221            function baseClone(value, isDeep, customizer, key, object, stack) {
2222                var result;
2223                if (customizer && (result = object ? customizer(value, key, object, stack) : customizer(value)), result !== undefined) return result;
2224                if (!isObject(value)) return value;
2225                var isArr = isArray(value);
2226                if (isArr) { if (result = initCloneArray(value), !isDeep) return copyArray(value, result) } else {
2227                    var tag = getTag(value),
2228                        isFunc = tag == funcTag || tag == genTag;
2229                    if (tag != objectTag && tag != argsTag && (!isFunc || object)) return cloneableTags[tag] ? initCloneByTag(value, tag, isDeep) : object ? value : {};
2230                    if (isHostObject(value)) return object ? value : {};
2231                    if (result = initCloneObject(isFunc ? {} : value), !isDeep) return copySymbols(value, baseAssign(result, value))
2232                }
2233                stack || (stack = new Stack);
2234                var stacked = stack.get(value);
2235                return stacked ? stacked : (stack.set(value, result), (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) { assignValue(result, key, baseClone(subValue, isDeep, customizer, key, value, stack)) }), isArr ? result : copySymbols(value, result))
2236            }
2237
2238            function baseConforms(source) {
2239                var props = keys(source),
2240                    length = props.length;
2241                return function(object) {
2242                    if (null == object) return !length;
2243                    for (var index = length; index--;) {
2244                        var key = props[index],
2245                            predicate = source[key],
2246                            value = object[key];
2247                        if (value === undefined && !(key in Object(object)) || !predicate(value)) return !1
2248                    }
2249                    return !0
2250                }
2251            }
2252
2253            function baseDelay(func, wait, args) { if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT); return setTimeout(function() { func.apply(undefined, args) }, wait) }
2254
2255            function baseDifference(array, values, iteratee, comparator) {
2256                var index = -1,
2257                    includes = arrayIncludes,
2258                    isCommon = !0,
2259                    length = array.length,
2260                    result = [],
2261                    valuesLength = values.length;
2262                if (!length) return result;
2263                iteratee && (values = arrayMap(values, baseUnary(iteratee))), comparator ? (includes = arrayIncludesWith, isCommon = !1) : values.length >= LARGE_ARRAY_SIZE && (includes = cacheHas, isCommon = !1, values = new SetCache(values));
2264                outer: for (; ++index < length;) {
2265                    var value = array[index],
2266                        computed = iteratee ? iteratee(value) : value;
2267                    if (isCommon && computed === computed) {
2268                        for (var valuesIndex = valuesLength; valuesIndex--;)
2269                            if (values[valuesIndex] === computed) continue outer;
2270                        result.push(value)
2271                    } else includes(values, computed, comparator) || result.push(value)
2272                }
2273                return result
2274            }
2275
2276            function baseEvery(collection, predicate) { var result = !0; return baseEach(collection, function(value, index, collection) { return result = !!predicate(value, index, collection) }), result }
2277
2278            function baseFill(array, value, start, end) { var length = array.length; for (start = toInteger(start), start < 0 && (start = -start > length ? 0 : length + start), end = end === undefined || end > length ? length : toInteger(end), end < 0 && (end += length), end = start > end ? 0 : toLength(end); start < end;) array[start++] = value; return array }
2279
2280            function baseFilter(collection, predicate) { var result = []; return baseEach(collection, function(value, index, collection) { predicate(value, index, collection) && result.push(value) }), result }
2281
2282            function baseFlatten(array, isDeep, isStrict, result) {
2283                result || (result = []);
2284                for (var index = -1, length = array.length; ++index < length;) {
2285                    var value = array[index];
2286                    isArrayLikeObject(value) && (isStrict || isArray(value) || isArguments(value)) ? isDeep ? baseFlatten(value, isDeep, isStrict, result) : arrayPush(result, value) : isStrict || (result[result.length] = value)
2287                }
2288                return result
2289            }
2290
2291            function baseForIn(object, iteratee) { return null == object ? object : baseFor(object, iteratee, keysIn) }
2292
2293            function baseForOwn(object, iteratee) { return object && baseFor(object, iteratee, keys) }
2294
2295            function baseForOwnRight(object, iteratee) { return object && baseForRight(object, iteratee, keys) }
2296
2297            function baseFunctions(object, props) { return arrayFilter(props, function(key) { return isFunction(object[key]) }) }
2298
2299            function baseGet(object, path) { path = isKey(path, object) ? [path + ""] : baseToPath(path); for (var index = 0, length = path.length; null != object && index < length;) object = object[path[index++]]; return index && index == length ? object : undefined }
2300
2301            function baseHas(object, key) { return hasOwnProperty.call(object, key) || "object" == typeof object && key in object && null === getPrototypeOf(object) }
2302
2303            function baseHasIn(object, key) { return key in Object(object) }
2304
2305            function baseInRange(number, start, end) { return number >= nativeMin(start, end) && number < nativeMax(start, end) }
2306
2307            function baseIntersection(arrays, iteratee, comparator) {
2308                for (var includes = comparator ? arrayIncludesWith : arrayIncludes, othLength = arrays.length, othIndex = othLength, caches = Array(othLength), result = []; othIndex--;) {
2309                    var array = arrays[othIndex];
2310                    othIndex && iteratee && (array = arrayMap(array, baseUnary(iteratee))), caches[othIndex] = !comparator && (iteratee || array.length >
2310= 120) ? new SetCache(othIndex && array) : undefined
2311                }
2312                array = arrays[0];
2313                var index = -1,
2314                    length = array.length,
2315                    seen = caches[0];
2316                outer: for (; ++index < length;) {
2317                    var value = array[index],
2318                        computed = iteratee ? iteratee(value) : value;
2319                    if (!(seen ? cacheHas(seen, computed) : includes(result, computed, comparator))) {
2320                        for (var othIndex = othLength; --othIndex;) { var cache = caches[othIndex]; if (!(cache ? cacheHas(cache, computed) : includes(arrays[othIndex], computed, comparator))) continue outer }
2321                        seen && seen.push(computed), result.push(value)
2322                    }
2323                }
2324                return result
2325            }
2326
2327            function baseInverter(object, setter, iteratee, accumulator) { return baseForOwn(object, function(value, key, object) { setter(accumulator, iteratee(value), key, object) }), accumulator }
2328
2329            function baseInvoke(object, path, args) { isKey(path, object) || (path = baseToPath(path), object = parent(object, path), path = last(path)); var func = null == object ? object : object[path]; return null == func ? undefined : apply(func, object, args) }
2330
2331            function baseIsEqual(value, other, customizer, bitmask, stack) { return value === other || (null == value || null == other || !isObject(value) && !isObjectLike(other) ? value !== value && other !== other : baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack)) }
2332
2333            function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {
2334                var objIsArr = isArray(object),
2335                    othIsArr = isArray(other),
2336                    objTag = arrayTag,
2337                    othTag = arrayTag;
2338                objIsArr || (objTag = getTag(object), objTag == argsTag ? objTag = objectTag : objTag != objectTag && (objIsArr = isTypedArray(object))), othIsArr || (othTag = getTag(other), othTag == argsTag ? othTag = objectTag : othTag != objectTag && (othIsArr = isTypedArray(other)));
2339                var objIsObj = objTag == objectTag && !isHostObject(object),
2340                    othIsObj = othTag == objectTag && !isHostObject(other),
2341                    isSameTag = objTag == othTag;
2342                if (isSameTag && !objIsArr && !objIsObj) return equalByTag(object, other, objTag, equalFunc, customizer, bitmask);
2343                var isPartial = bitmask & PARTIAL_COMPARE_FLAG;
2344                if (!isPartial) {
2345                    var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"),
2346                        othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
2347                    if (objIsWrapped || othIsWrapped) return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, bitmask, stack)
2348                }
2349                return !!isSameTag && (stack || (stack = new Stack), (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, bitmask, stack))
2350            }
2351
2352            function baseIsMatch(object, source, matchData, customizer) {
2353                var index = matchData.length,
2354                    length = index,
2355                    noCustomizer = !customizer;
2356                if (null == object) return !length;
2357                for (object = Object(object); index--;) { var data = matchData[index]; if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) return !1 }
2358                for (; ++index < length;) {
2359                    data = matchData[index];
2360                    var key = data[0],
2361                        objValue = object[key],
2362                        srcValue = data[1];
2363                    if (noCustomizer && data[2]) { if (objValue === undefined && !(key in object)) return !1 } else {
2364                        var stack = new Stack,
2365                            result = customizer ? customizer(objValue, srcValue, key, object, source, stack) : undefined;
2366                        if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) : result)) return !1
2367                    }
2368                }
2369                return !0
2370            }
2371
2372            function baseIteratee(value) { var type = typeof value; return "function" == type ? value : null == value ? identity : "object" == type ? isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value) : property(value) }
2373
2374            function baseKeys(object) { return nativeKeys(Object(object)) }
2375
2376            function baseKeysIn(object) { object = null == object ? object : Object(object); var result = []; for (var key in object) result.push(key); return result }
2377
2378            function baseMap(collection, iteratee) {
2379                var index = -1,
2380                    result = isArrayLike(collection) ? Array(collection.length) : [];
2381                return baseEach(collection, function(value, key, collection) { result[++index] = iteratee(value, key, collection) }), result
2382            }
2383
2384            function baseMatches(source) {
2385                var matchData = getMatchData(source);
2386                if (1 == matchData.length && matchData[0][2]) {
2387                    var key = matchData[0][0],
2388                        value = matchData[0][1];
2389                    return function(object) { return null != object && (object[key] === value && (value !== undefined || key in Object(object))) }
2390                }
2391                return function(object) { return object === source || baseIsMatch(object, source, matchData) }
2392            }
2393
2394            function baseMatchesProperty(path, srcValue) { return function(object) { var objValue = get(object, path); return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG) } }
2395
2396            function baseMerge(object, source, srcIndex, customizer, stack) {
2397                if (object !== source) {
2398                    var props = isArray(source) || isTypedArray(source) ? undefined : keysIn(source);
2399                    arrayEach(props || source, function(srcValue, key) {
2400                        if (props && (key = srcValue, srcValue = source[key]), isObject(srcValue)) stack || (stack = new Stack), baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
2401                        else {
2402                            var newValue = customizer ? customizer(object[key], srcValue, key + "", object, source, stack) : undefined;
2403                            newValue === undefined && (newValue = srcValue), assignMergeValue(object, key, newValue)
2404                        }
2405                    })
2406                }
2407            }
2408
2409            function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
2410                var objValue = object[key],
2411                    srcValue = source[key],
2412                    stacked = stack.get(srcValue);
2413                if (stacked) return void assignMergeValue(object, key, stacked);
2414                var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined,
2415                    isCommon = newValue === undefined;
2416                isCommon && (newValue = srcValue, isArray(srcValue) || isTypedArray(srcValue) ? isArray(objValue) ? newValue = srcIndex ? copyArray(objValue) : objValue : isArrayLikeObject(objValue) ? newValue = copyArray(objValue) : (isCommon = !1, newValue = baseClone(srcValue)) : isPlainObject(srcValue) || isArguments(srcValue) ? isArguments(objValue) ? newValue = toPlainObject(objValue) : !isObject(objValue) || srcIndex && isFunction(objValue) ? (isCommon = !1, newValue = baseClone(srcValue)) : newValue = srcIndex ? baseClone(objValue) : objValue : isCommon = !1), stack.set(srcValue, newValue), isCommon && mergeFunc(newValue, srcValue, srcIndex, customizer, stack), assignMergeValue(object, key, newValue)
2417            }
2418
2419            function baseOrderBy(collection, iteratees, orders) {
2420                var index = -1,
2421                    toIteratee = getIteratee();
2422                iteratees = arrayMap(iteratees.length ? iteratees : Array(1), function(iteratee) { return toIteratee(iteratee) });
2423                var result = baseMap(collection, function(value, key, collection) { var criteria = arrayMap(iteratees, function(iteratee) { return iteratee(value) }); return { criteria: criteria, index: ++index, value: value } });
2424                return baseSortBy(result, function(object, other) { return compareMultiple(object, other, orders) })
2425            }
2426
2427            function basePick(object, props) { return object = Object(object), arrayReduce(props, function(result, key) { return key in object && (result[key] = object[key]), result }, {}) }
2428
2429            function basePickBy(object, predicate) { var result = {}; return baseForIn(object, function(value, key) { predicate(value, key) && (result[key] = value) }), result }
2430
2431            function baseProperty(key) { return function(object) { return null == object ? undefined : object[key] } }
2432
2433            function basePropertyDeep(path) { return function(object) { return baseGet(object, path) } }
2434
2435            function basePullAll(array, values) { return basePullAllBy(array, values) }
2436
2437            function basePullAllBy(array, values, iteratee) {
2438                var index = -1,
2439                    length = values.length,
2440                    seen = array;
2441                for (iteratee && (seen = arrayMap(array, function(value) { return iteratee(value) })); ++index < length;)
2442                    for (var fromIndex = 0, value = values[index], computed = iteratee ? iteratee(value) : value;
2443                        (fromIndex = baseIndexOf(seen, computed, fromIndex)) > -1;) seen !== array && splice.call(seen, fromIndex, 1), splice.call(array, fromIndex, 1);
2444                return array
2445            }
2446
2447            function basePullAt(array, indexes) {
2448                for (var length = array ? indexes.length : 0, lastIndex = length - 1; length--;) {
2449                    var index = indexes[length];
2450                    if (lastIndex == length || index != previous) {
2451                        var previous = index;
2452                        if (isIndex(index)) splice.call(array, index, 1);
2453                        else if (isKey(index, array)) delete array[index];
2454                        else {
2455                            var path = baseToPath(index),
2456                                object = parent(array, path);
2457                            null != object && delete object[last(path)]
2458                        }
2459                    }
2460                }
2461                return array
2462            }
2463
2464            function baseRandom(lower, upper) { return lower + nativeFloor(nativeRandom() * (upper - lower + 1)) }
2465
2466            function baseRange(start, end, step, fromRight) { for (var index = -1, length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), result = Array(length); length--;) result[fromRight ? length : ++index] = start, start += step; return result }
2467
2468            function baseSet(object, path, value, customizer) {
2469                path = isKey(path, object) ? [path + ""] : baseToPath(path);
2470                for (var index = -1, length = path.length, lastIndex = length - 1, nested = object; null != nested && ++index < length;) {
2471                    var key = path[index];
2472                    if (isObject(nested)) {
2473                        var newValue = value;
2474                        if (index != lastIndex) {
2475                            var objValue = nested[key];
2476                            newValue = customizer ? customizer(objValue, key, nested) : undefined, newValue === undefined && (newValue = null == objValue ? isIndex(path[index + 1]) ? [] : {} : objValue)
2477                        }
2478                        assignValue(nested, key, newValue)
2479                    }
2480                    nested = nested[key]
2481                }
2482                return object
2483            }
2484
2485            function baseSlice(array, start, end) {
2486                var index = -1,
2487                    length = array.length;
2488                start < 0 && (start = -start > length ? 0 : length + start), end = end > length ? length : end, end < 0 && (end += length), length = start > end ? 0 : end - start >>> 0, start >>>= 0;
2489                for (var result = Array(length); ++index < length;) result[index] = array[index + start];
2490                return result
2491            }
2492
2493            function baseSome(collection, predicate) { var result; return baseEach(collection, function(value, index, collection) { return result = predicate(value, index, collection), !result }), !!result }
2494
2495            function baseSortedIndex(array, value, retHighest) {
2496                var low = 0,
2497                    high = array ? array.length : low;
2498                if ("number" == typeof value && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
2499                    for (; low < high;) {
2500                        var mid = low + high >>> 1,
2501                            computed = array[mid];
2502                        (retHighest ? computed <= value : computed < value) && null !== computed ? low = mid + 1 : high = mid
2503                    }
2504                    return high
2505                }
2506                return baseSortedIndexBy(array, value, identity, retHighest)
2507            }
2508
2509            function baseSortedIndexBy(array, value, iteratee, retHighest) {
2510                value = iteratee(value);
2511                for (var low = 0, high = array ? array.length : 0, valIsNaN = value !== value, valIsNull = null === value, valIsUndef = value === undefined; low < high;) {
2512                    var mid = nativeFloor((low + high) / 2),
2513                        computed = iteratee(array[mid]),
2514                        isDef = computed !== undefined,
2515                        isReflexive = computed === computed;
2516                    if (valIsNaN) var setLow = isReflexive || retHighest;
2517                    else setLow = valIsNull ? isReflexive && isDef && (retHighest || null != computed) : valIsUndef ? isReflexive && (retHighest || isDef) : null != computed && (retHighest ? computed <= value : computed < value);
2518                    setLow ? low = mid + 1 : high = mid
2519                }
2520                return nativeMin(high, MAX_ARRAY_INDEX)
2521            }
2522
2523            function baseSortedUniq(array) { return baseSortedUniqBy(array) }
2524
2525            function baseSortedUniqBy(array, iteratee) { for (var index = 0, length = array.length, value = array[0], computed = iteratee ? iteratee(value) : value, seen = computed, resIndex = 0, result = [value]; ++index < length;) value = array[index], computed = iteratee ? iteratee(value) : value, eq(computed, seen) || (seen = computed, result[++resIndex] = value); return result }
2526
2527            function baseToPath(value) { return isArray(value) ? value : stringToPath(value) }
2528
2529            function baseUniq(array, iteratee, comparator) {
2530                var index = -1,
2531                    includes = arrayIncludes,
2532                    length = array.length,
2533                    isCommon = !0,
2534                    result = [],
2535                    seen = result;
2536                if (comparator) isCommon = !1, includes = arrayIncludesWith;
2537                else if (length >= LARGE_ARRAY_SIZE) {
2538                    var set = iteratee ? null : createSet(array);
2539                    if (set) return setToArray(set);
2540                    isCommon = !1, includes = cacheHas, seen = new SetCache
2541                } else seen = iteratee ? [] : result;
2542                outer: for (; ++index < length;) {
2543                    var value = array[index],
2544                        computed = iteratee ? iteratee(value) : value;
2545                    if (isCommon && computed === computed) {
2546                        for (var seenIndex = seen.length; seenIndex--;)
2547                            if (seen[seenIndex] === computed) continue outer;
2548                        iteratee && seen.push(computed), result.push(value)
2549                    } else includes(seen, computed, comparator) || (seen !== result && seen.push(computed), result.push(value))
2550                }
2551                return result
2552            }
2553
2554            function baseUnset(object, path) { path = isKey(path, object) ? [path + ""] : baseToPath(path), object = parent(object, path); var key = last(path); return null == object || !has(object, key) || delete object[key] }
2555
2556            function baseWhile(array, predicate, isDrop, fromRight) {
2557                for (var length = array.length, index = fromRight ? length : -1;
2558                    (fromRight ? index-- : ++index < length) && predicate(array[index], index, array););
2559                return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : baseSlice(array, fromRight ? index + 1 : 0, fromRight ? length : index)
2560            }
2561
2562            function baseWrapperValue(value, actions) { var result = value; return result instanceof LazyWrapper && (result = result.value()), arrayReduce(actions, function(result, action) { return action.func.apply(action.thisArg, arrayPush([result], action.args
2562)) }, result) }
2563
2564            function baseXor(arrays, iteratee, comparator) { for (var index = -1, length = arrays.length; ++index < length;) var result = result ? arrayPush(baseDifference(result, arrays[index], iteratee, comparator), baseDifference(arrays[index], result, iteratee, comparator)) : arrays[index]; return result && result.length ? baseUniq(result, iteratee, comparator) : [] }
2565
2566            function baseZipObject(props, values, assignFunc) { for (var index = -1, length = props.length, valsLength = values.length, result = {}; ++index < length;) assignFunc(result, props[index], index < valsLength ? values[index] : undefined); return result }
2567
2568            function cloneBuffer(buffer) {
2569                var Ctor = buffer.constructor,
2570                    result = new Ctor(buffer.byteLength),
2571                    view = new Uint8Array(result);
2572                return view.set(new Uint8Array(buffer)), result
2573            }
2574
2575            function cloneMap(map) { var Ctor = map.constructor; return arrayReduce(mapToArray(map), addMapEntry, new Ctor) }
2576
2577            function cloneRegExp(regexp) {
2578                var Ctor = regexp.constructor,
2579                    result = new Ctor(regexp.source, reFlags.exec(regexp));
2580                return result.lastIndex = regexp.lastIndex, result
2581            }
2582
2583            function cloneSet(set) { var Ctor = set.constructor; return arrayReduce(setToArray(set), addSetEntry, new Ctor) }
2584
2585            function cloneSymbol(symbol) { return Symbol ? Object(symbolValueOf.call(symbol)) : {} }
2586
2587            function cloneTypedArray(typedArray, isDeep) {
2588                var buffer = typedArray.buffer,
2589                    Ctor = typedArray.constructor;
2590                return new Ctor(isDeep ? cloneBuffer(buffer) : buffer, typedArray.byteOffset, typedArray.length)
2591            }
2592
2593            function composeArgs(args, partials, holders) { for (var holdersLength = holders.length, argsIndex = -1, argsLength = nativeMax(args.length - holdersLength, 0), leftIndex = -1, leftLength = partials.length, result = Array(leftLength + argsLength); ++leftIndex < leftLength;) result[leftIndex] = partials[leftIndex]; for (; ++argsIndex < holdersLength;) result[holders[argsIndex]] = args[argsIndex]; for (; argsLength--;) result[leftIndex++] = args[argsIndex++]; return result }
2594
2595            function composeArgsRight(args, partials, holders) { for (var holdersIndex = -1, holdersLength = holders.length, argsIndex = -1, argsLength = nativeMax(args.length - holdersLength, 0), rightIndex = -1, rightLength = partials.length, result = Array(argsLength + rightLength); ++argsIndex < argsLength;) result[argsIndex] = args[argsIndex]; for (var offset = argsIndex; ++rightIndex < rightLength;) result[offset + rightIndex] = partials[rightIndex]; for (; ++holdersIndex < holdersLength;) result[offset + holders[holdersIndex]] = args[argsIndex++]; return result }
2596
2597            function copyArray(source, array) {
2598                var index = -1,
2599                    length = source.length;
2600                for (array || (array = Array(length)); ++index < length;) array[index] = source[index];
2601                return array
2602            }
2603
2604            function copyObject(source, props, object) { return copyObjectWith(source, props, object) }
2605
2606            function copyObjectWith(source, props, object, customizer) {
2607                object || (object = {});
2608                for (var index = -1, length = props.length; ++index < length;) {
2609                    var key = props[index],
2610                        newValue = customizer ? customizer(object[key], source[key], key, object, source) : source[key];
2611                    assignValue(object, key, newValue)
2612                }
2613                return object
2614            }
2615
2616            function copySymbols(source, object) { return copyObject(source, getSymbols(source), object) }
2617
2618            function createAggregator(setter, initializer) {
2619                return function(collection, iteratee) {
2620                    var func = isArray(collection) ? arrayAggregator : baseAggregator,
2621                        accumulator = initializer ? initializer() : {};
2622                    return func(collection, setter, getIteratee(iteratee), accumulator)
2623                }
2624            }
2625
2626            function createAssigner(assigner) {
2627                return rest(function(object, sources) {
2628                    var index = -1,
2629                        length = sources.length,
2630                        customizer = length > 1 ? sources[length - 1] : undefined,
2631                        guard = length > 2 ? sources[2] : undefined;
2632                    for (customizer = "function" == typeof customizer ? (length--, customizer) : undefined, guard && isIterateeCall(sources[0], sources[1], guard) && (customizer = length < 3 ? undefined : customizer, length = 1), object = Object(object); ++index < length;) {
2633                        var source = sources[index];
2634                        source && assigner(object, source, index, customizer)
2635                    }
2636                    return object
2637                })
2638            }
2639
2640            function createBaseEach(eachFunc, fromRight) {
2641                return function(collection, iteratee) {
2642                    if (null == collection) return collection;
2643                    if (!isArrayLike(collection)) return eachFunc(collection, iteratee);
2644                    for (var length = collection.length, index = fromRight ? length : -1, iterable = Object(collection);
2645                        (fromRight ? index-- : ++index < length) && iteratee(iterable[index], index, iterable) !== !1;);
2646                    return collection
2647                }
2648            }
2649
2650            function createBaseFor(fromRight) { return function(object, iteratee, keysFunc) { for (var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length; length--;) { var key = props[fromRight ? length : ++index]; if (iteratee(iterable[key], key, iterable) === !1) break } return object } }
2651
2652            function createBaseWrapper(func, bitmask, thisArg) {
2653                function wrapper() { var fn = this && this !== root && this instanceof wrapper ? Ctor : func; return fn.apply(isBind ? thisArg : this, arguments) }
2654                var isBind = bitmask & BIND_FLAG,
2655                    Ctor = createCtorWrapper(func);
2656                return wrapper
2657            }
2658
2659            function createCaseFirst(methodName) {
2660                return function(string) {
2661                    string = toString(string);
2662                    var strSymbols = reHasComplexSymbol.test(string) ? stringToArray(string) : undefined,
2663                        chr = strSymbols ? strSymbols[0] : string.charAt(0),
2664                        trailing = strSymbols ? strSymbols.slice(1).join("") : string.slice(1);
2665                    return chr[methodName]() + trailing
2666                }
2667            }
2668
2669            function createCompounder(callback) { return function(string) { return arrayReduce(words(deburr(string)), callback, "") } }
2670
2671            function createCtorWrapper(Ctor) {
2672                return function() {
2673                    var args = arguments;
2674                    switch (args.length) {
2675                        case 0:
2676                            return new Ctor;
2677                        case 1:
2678                            return new Ctor(args[0]);
2679                        case 2:
2680                            return new Ctor(args[0], args[1]);
2681                        case 3:
2682                            return new Ctor(args[0], args[1], args[2]);
2683                        case 4:
2684                            return new Ctor(args[0], args[1], args[2], args[3]);
2685                        case 5:
2686                            return new Ctor(args[0], args[1], args[2], args[3], args[4]);
2687                        case 6:
2688                            return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
2689                        case 7:
2690                            return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6])
2691                    }
2692                    var thisBinding = baseCreate(Ctor.prototype),
2693                        result = Ctor.apply(thisBinding, args);
2694                    return isObject(result) ? result : thisBinding
2695                }
2696            }
2697
2698            function createCurryWrapper(func, bitmask, arity) {
2699                function wrapper() { for (var length = arguments.length, index = length, args = Array(length), fn = this && this !== root && this instanceof wrapper ? Ctor : func, placeholder = lodash.placeholder || wrapper.placeholder; index--;) args[index] = arguments[index]; var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder); return length -= holders.length, length < arity ? createRecurryWrapper(func, bitmask, createHybridWrapper, placeholder, undefined, args, holders, undefined, undefined, arity - length) : apply(fn, this, args) }
2700                var Ctor = createCtorWrapper(func);
2701                return wrapper
2702            }
2703
2704            function createFlow(fromRight) {
2705                return rest(function(funcs) {
2706                    funcs = baseFlatten(funcs);
2707                    var length = funcs.length,
2708                        index = length,
2709                        prereq = LodashWrapper.prototype.thru;
2710                    for (fromRight && funcs.reverse(); index--;) { var func = funcs[index]; if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT); if (prereq && !wrapper && "wrapper" == getFuncName(func)) var wrapper = new LodashWrapper([], !0) }
2711                    for (index = wrapper ? index : length; ++index < length;) {
2712                        func = funcs[index];
2713                        var funcName = getFuncName(func),
2714                            data = "wrapper" == funcName ? getData(func) : undefined;
2715                        wrapper = data && isLaziable(data[0]) && data[1] == (ARY_FLAG | CURRY_FLAG | PARTIAL_FLAG | REARG_FLAG) && !data[4].length && 1 == data[9] ? wrapper[getFuncName(data[0])].apply(wrapper, data[3]) : 1 == func.length && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func)
2716                    }
2717                    return function() {
2718                        var args = arguments,
2719                            value = args[0];
2720                        if (wrapper && 1 == args.length && isArray(value) && value.length >= LARGE_ARRAY_SIZE) return wrapper.plant(value).value();
2721                        for (var index = 0, result = length ? funcs[index].apply(this, args) : value; ++index < length;) result = funcs[index].call(this, result);
2722                        return result
2723                    }
2724                })
2725            }
2726
2727            function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
2728                function wrapper() {
2729                    for (var length = arguments.length, index = length, args = Array(length); index--;) args[index] = arguments[index];
2730                    if (partials && (args = composeArgs(args, partials, holders)), partialsRight && (args = composeArgsRight(args, partialsRight, holdersRight)), isCurry || isCurryRight) {
2731                        var placeholder = lodash.placeholder || wrapper.placeholder,
2732                            argsHolders = replaceHolders(args, placeholder);
2733                        if (length -= argsHolders.length, length < arity) return createRecurryWrapper(func, bitmask, createHybridWrapper, placeholder, thisArg, args, argsHolders, argPos, ary, arity - length)
2734                    }
2735                    var thisBinding = isBind ? thisArg : this,
2736                        fn = isBindKey ? thisBinding[func] : func;
2737                    return argPos ? args = reorder(args, argPos) : isFlip && args.length > 1 && args.reverse(), isAry && ary < args.length && (args.length = ary), this && this !== root && this instanceof wrapper && (fn = Ctor || createCtorWrapper(fn)), fn.apply(thisBinding, args
2737)
2738                }
2739                var isAry = bitmask & ARY_FLAG,
2740                    isBind = bitmask & BIND_FLAG,
2741                    isBindKey = bitmask & BIND_KEY_FLAG,
2742                    isCurry = bitmask & CURRY_FLAG,
2743                    isCurryRight = bitmask & CURRY_RIGHT_FLAG,
2744                    isFlip = bitmask & FLIP_FLAG,
2745                    Ctor = isBindKey ? undefined : createCtorWrapper(func);
2746                return wrapper
2747            }
2748
2749            function createInverter(setter, toIteratee) { return function(object, iteratee) { return baseInverter(object, setter, toIteratee(iteratee), {}) } }
2750
2751            function createOver(arrayFunc) { return rest(function(iteratees) { return iteratees = arrayMap(baseFlatten(iteratees), getIteratee()), rest(function(args) { var thisArg = this; return arrayFunc(iteratees, function(iteratee) { return apply(iteratee, thisArg, args) }) }) }) }
2752
2753            function createPadding(string, length, chars) {
2754                length = toInteger(length);
2755                var strLength = stringSize(string);
2756                if (!length || strLength >= length) return "";
2757                var padLength = length - strLength;
2758                chars = chars === undefined ? " " : chars + "";
2759                var result = repeat(chars, nativeCeil(padLength / stringSize(chars)));
2760                return reHasComplexSymbol.test(chars) ? stringToArray(result).slice(0, padLength).join("") : result.slice(0, padLength)
2761            }
2762
2763            function createPartialWrapper(func, bitmask, thisArg, partials) {
2764                function wrapper() { for (var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array(leftLength + argsLength), fn = this && this !== root && this instanceof wrapper ? Ctor : func; ++leftIndex < leftLength;) args[leftIndex] = partials[leftIndex]; for (; argsLength--;) args[leftIndex++] = arguments[++argsIndex]; return apply(fn, isBind ? thisArg : this, args) }
2765                var isBind = bitmask & BIND_FLAG,
2766                    Ctor = createCtorWrapper(func);
2767                return wrapper
2768            }
2769
2770            function createRange(fromRight) { return function(start, end, step) { return step && "number" != typeof step && isIterateeCall(start, end, step) && (end = step = undefined), start = toNumber(start), start = start === start ? start : 0, end === undefined ? (end = start, start = 0) : end = toNumber(end) || 0, step = step === undefined ? start < end ? 1 : -1 : toNumber(step) || 0, baseRange(start, end, step, fromRight) } }
2771
2772            function createRecurryWrapper(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
2773                var isCurry = bitmask & CURRY_FLAG,
2774                    newArgPos = argPos ? copyArray(argPos) : undefined,
2775                    newsHolders = isCurry ? holders : undefined,
2776                    newHoldersRight = isCurry ? undefined : holders,
2777                    newPartials = isCurry ? partials : undefined,
2778                    newPartialsRight = isCurry ? undefined : partials;
2779                bitmask |= isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG, bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG), bitmask & CURRY_BOUND_FLAG || (bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG));
2780                var newData = [func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, arity],
2781                    result = wrapFunc.apply(undefined, newData);
2782                return isLaziable(func) && setData(result, newData), result.placeholder = placeholder, result
2783            }
2784
2785            function createRound(methodName) {
2786                var func = Math[methodName];
2787                return function(number, precision) {
2788                    if (number = toNumber(number), precision = toInteger(precision)) {
2789                        var pair = (toString(number) + "e").split("e"),
2790                            value = func(pair[0] + "e" + (+pair[1] + precision));
2791                        return pair = (toString(value) + "e").split("e"), +(pair[0] + "e" + (+pair[1] - precision))
2792                    }
2793                    return func(number)
2794                }
2795            }
2796
2797            function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
2798                var isBindKey = bitmask & BIND_KEY_FLAG;
2799                if (!isBindKey && "function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
2800                var length = partials ? partials.length : 0;
2801                if (length || (bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG), partials = holders = undefined), ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0), arity = arity === undefined ? arity : toInteger(arity), length -= holders ? holders.length : 0, bitmask & PARTIAL_RIGHT_FLAG) {
2802                    var partialsRight = partials,
2803                        holdersRight = holders;
2804                    partials = holders = undefined
2805                }
2806                var data = isBindKey ? undefined : getData(func),
2807                    newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];
2808                if (data && mergeData(newData, data), func = newData[0], bitmask = newData[1], thisArg = newData[2], partials = newData[3], holders = newData[4], arity = newData[9] = null == newData[9] ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0), !arity && bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG) && (bitmask &= ~(CURRY_FLAG | CURRY_RIGHT_FLAG)), bitmask && bitmask != BIND_FLAG) result = bitmask == CURRY_FLAG || bitmask == CURRY_RIGHT_FLAG ? createCurryWrapper(func, bitmask, arity) : bitmask != PARTIAL_FLAG && bitmask != (BIND_FLAG | PARTIAL_FLAG) || holders.length ? createHybridWrapper.apply(undefined, newData) : createParti
2808alWrapper(func, bitmask, thisArg, partials);
2809                else var result = createBaseWrapper(func, bitmask, thisArg);
2810                var setter = data ? baseSetData : setData;
2811                return setter(result, newData)
2812            }
2813
2814            function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
2815                var index = -1,
2816                    isPartial = bitmask & PARTIAL_COMPARE_FLAG,
2817                    isUnordered = bitmask & UNORDERED_COMPARE_FLAG,
2818                    arrLength = array.length,
2819                    othLength = other.length;
2820                if (arrLength != othLength && !(isPartial && othLength > arrLength)) return !1;
2821                var stacked = stack.get(array);
2822                if (stacked) return stacked == other;
2823                var result = !0;
2824                for (stack.set(array, other); ++index < arrLength;) {
2825                    var arrValue = array[index],
2826                        othValue = other[index];
2827                    if (customizer) var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
2828                    if (compared !== undefined) {
2829                        if (compared) continue;
2830                        result = !1;
2831                        break
2832                    }
2833                    if (isUnordered) { if (!arraySome(other, function(othValue) { return arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack) })) { result = !1; break } } else if (arrValue !== othValue && !equalFunc(arrValue, othValue, customizer, bitmask, stack)) { result = !1; break }
2834                }
2835                return stack.delete(array), result
2836            }
2837
2838            function equalByTag(object, other, tag, equalFunc, customizer, bitmask) {
2839                switch (tag) {
2840                    case arrayBufferTag:
2841                        return !(object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other)));
2842                    case boolTag:
2843                    case dateTag:
2844                        return +object == +other;
2845                    case errorTag:
2846                        return object.name == other.name && object.message == other.message;
2847                    case numberTag:
2848                        return object != +object ? other != +other : object == +other;
2849                    case regexpTag:
2850                    case stringTag:
2851                        return object == other + "";
2852                    case mapTag:
2853                        var convert = mapToArray;
2854                    case setTag:
2855                        var isPartial = bitmask & PARTIAL_COMPARE_FLAG;
2856                        return convert || (convert = setToArray), (isPartial || object.size == other.size) && equalFunc(convert(object), convert(other), customizer, bitmask | UNORDERED_COMPARE_FLAG);
2857                    case symbolTag:
2858                        return !!Symbol && symbolValueOf.call(object) == symbolValueOf.call(other)
2859                }
2860                return !1
2861            }
2862
2863            function equalObjects(object, other, equalFunc, customizer, bitmask, stack) {
2864                var isPartial = bitmask & PARTIAL_COMPARE_FLAG,
2865                    objProps = keys(object),
2866                    objLength = objProps.length,
2867                    othProps = keys(other),
2868                    othLength = othProps.length;
2869                if (objLength != othLength && !isPartial) return !1;
2870                for (var index = objLength; index--;) { var key = objProps[index]; if (!(isPartial ? key in other : baseHas(other, key))) return !1 }
2871                var stacked = stack.get(object);
2872                if (stacked) return stacked == other;
2873                var result = !0;
2874                stack.set(object, other);
2875                for (var skipCtor = isPartial; ++index < objLength;) {
2876                    key = objProps[index];
2877                    var objValue = object[key],
2878                        othValue = other[key];
2879                    if (customizer) var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
2880                    if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack) : compared)) { result = !1; break }
2881                    skipCtor || (skipCtor = "constructor" == key)
2882                }
2883                if (result && !skipCtor) {
2884                    var objCtor = object.constructor,
2885                        othCtor = other.constructor;
2886                    objCtor != othCtor && "constructor" in object && "constructor" in other && !("function" == typeof objCtor && objCtor instanceof objCtor && "function" == typeof othCtor && othCtor instanceof othCtor) && (result = !1)
2887                }
2888                return stack.delete(object), result
2889            }
2890
2891            function getFuncName(func) {
2892                for (var result = func.name + "", array = realNames[result], length = hasOwnProperty.call(realNames, result) ? array.length : 0; length--;) {
2893                    var data = array[length],
2894                        otherFunc = data.func;
2895                    if (null == otherFunc || otherFunc == func) return data.name
2896                }
2897                return result
2898            }
2899
2900            function getIteratee() { var result = lodash.iteratee || iteratee; return result = result === iteratee ? baseIteratee : result, arguments.length ? result(arguments[0], arguments[1]) : result }
2901
2902            function getMatchData(object) { for (var result = toPairs(object), length = result.length; length--;) result[length][2] = isStrictComparable(result[length][1]); return result }
2903
2904            function getNative(object, key) { var value = null == object ? undefined : object[key]; return isNative(value) ? value : undefined }
2905
2906            function getTag(value) { return objectToString.call(value) }
2907
2908            function getView(start, end, transforms) {
2909                for (var index = -1, length = transforms.length; ++index < length;) {
2910                    var data = transforms[index],
2911                        size = data.size;
2912                    switch (data.type) {
2913                        case "drop":
2914                            start += size;
2915                            break;
2916                        case "dropRight":
2917                            end -= size;
2918                            break;
2919                        case "take":
2920                            end = nativeMin(end, start + size);
2921                            break;
2922                        case "takeRight":
2923                            start = nativeMax(start, end - size)
2924                    }
2925                }
2926                return { start: start, end: end }
2927            }
2928
2929            function hasPath(object, path, hasFunc) {
2930                if (null == object) return !1;
2931                var result = hasFunc(object, path);
2932                result || isKey(path) || (path = baseToPath(path), object = parent(object, path), null != object && (path = last(path), result = hasFunc(object, path)));
2933                var length = object ? object.length : undefined;
2934                return result || !!length && isLength(length) && isIndex(path, length) && (isArray(object) || isString(object) || isArguments(object))
2935            }
2936
2937            function initCloneArray(array) {
2938                var length = array.length,
2939                    result = array.constructor(length);
2940                return length && "string" == typeof array[0] && hasOwnProperty.call(array, "index") && (result.index = array.index, result.input = array.input), result
2941            }
2942
2943            function initCloneObject(object) { if (isPrototype(object)) return {}; var Ctor = object.constructor; return baseCreate(isFunction(Ctor) ? Ctor.prototype : undefined) }
2944
2945            function initCloneByTag(object, tag, isDeep) {
2946                var Ctor = object.constructor;
2947                switch (tag) {
2948                    case arrayBufferTag:
2949                        return cloneBuffer(object);
2950                    case boolTag:
2951                    case dateTag:
2952                        return new Ctor(+object);
2953                    case float32Tag:
2954                    case float64Tag:
2955                    case int8Tag:
2956                    case int16Tag:
2957                    case int32Tag:
2958                    case uint8Tag:
2959                    case uint8ClampedTag:
2960                    case uint16Tag:
2961                    case uint32Tag:
2962                        return cloneTypedArray(object, isDeep);
2963                    case mapTag:
2964                        return cloneMap(object);
2965                    case numberTag:
2966                    case stringTag:
2967                        return new Ctor(object);
2968                    case regexpTag:
2969                        return cloneRegExp(object);
2970                    case setTag:
2971                        return cloneSet(object);
2972                    case symbolTag:
2973                        return cloneSymbol(object)
2974                }
2975            }
2976
2977            function indexKeys(object) { var length = object ? object.length : undefined; return isLength(length) && (isArray(object) || isString(object) || isArguments(object)) ? baseTimes(length, String) : null }
2978
2979            function isIterateeCall(value, index, object) { if (!isObject(object)) return !1; var type = typeof index; return !!("number" == type ? isArrayLike(object) && isIndex(index, object.length) : "string" == type && index in object) && eq(object[index], value) }
2980
2981            function isKey(value, object) { return "number" == typeof value || !isArray(value) && (reIsPlainProp.test(value) || !reIsDeepProp.test(value) || null != object && value in Object(object)) }
2982
2983            function isKeyable(value) { var type = typeof value; return "number" == type || "boolean" == type || "string" == type && "__proto__" !== value || null == value }
2984
2985            function isLaziable(func) {
2986                var funcName = getFuncName(func),
2987                    other = lodash[funcName];
2988                if ("function" != typeof other || !(funcName in LazyWrapper.prototype)) return !1;
2989                if (func === other) return !0;
2990                var data = getData(other);
2991                return !!data && func === data[0]
2992            }
2993
2994            function isPrototype(value) {
2995                var Ctor = value && value.constructor,
2996                    proto = "function" == typeof Ctor && Ctor.prototype || objectProto;
2997                return value === proto
2998            }
2999
3000            function isStrictComparable(value) { return value === value && !isObject(value) }
3001
3002            function mergeData(data, source) {
3003                var bitmask = data[1],
3004                    srcBitmask = source[1],
3005                    newBitmask = bitmask | srcBitmask,
3006                    isCommon = newBitmask < (BIND_FLAG | BIND_KEY_FLAG | ARY_FLAG),
3007                    isCombo = srcBitmask == ARY_FLAG && bitmask == CURRY_FLAG || srcBitmask == ARY_FLAG && bitmask == REARG_FLAG && data[7].length <= source[8] || srcBitmask == (ARY_FLAG | REARG_FLAG) && source[7].length <= source[8] && bitmask == CURRY_FLAG;
3008                if (!isCommon && !isCombo) return data;
3009                srcBitmask & BIND_FLAG && (data[2] = source[2], newBitmask |= bitmask & BIND_FLAG ? 0 : CURRY_BOUND_FLAG);
3010                var value = source[3];
3011                if (value) {
3012                    var partials = data[3];
3013                    data[3] = partials ? composeArgs(partials, value, source[4]) : copyArray(value), data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : copyArray(source[4])
3014                }
3015                return value = source[5], value && (partials = data[5], data[5] = partials ? composeArgsRight(partials, value, source[6]) : copyArray(value), data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : copyArray(source[6])), value = source[7], value && (data[7] = copyArray(value)), srcBitmask & ARY_FLAG && (data[8] = null == data[8] ? source[8] : nativeMin(data[8], source[8])), null == data[9] && (data[9] = source[9]), data[0] = source[0], data[1] = newBitmask, data
3016            }
3017
3018            function mergeDefaults(objValue, srcValue, key, object, source, stack) { return isObject(objValue) && isObject(srcValue) && (stack.set(srcValue, objValue), baseMerge(objValue, srcValue, undefined, mergeDefaults, stack)), objValue }
3019
3020            function parent(object, path) { return 1 == path.length ? object : get(object, baseSlice(path, 0, -1)) }
3021
3022            function reorder(array, indexes) {
3023                for (var arrLength = array.length, length = nativeMin(indexe
3023s.length, arrLength), oldArray = copyArray(array); length--;) {
3024                    var index = indexes[length];
3025                    array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined
3026                }
3027                return array
3028            }
3029
3030            function stringToPath(string) { var result = []; return toString(string).replace(rePropName, function(match, number, quote, string) { result.push(quote ? string.replace(reEscapeChar, "$1") : number || match) }), result }
3031
3032            function toArrayLikeObject(value) { return isArrayLikeObject(value) ? value : [] }
3033
3034            function toFunction(value) { return "function" == typeof value ? value : identity }
3035
3036            function wrapperClone(wrapper) { if (wrapper instanceof LazyWrapper) return wrapper.clone(); var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); return result.__actions__ = copyArray(wrapper.__actions__), result.__index__ = wrapper.__index__, result.__values__ = wrapper.__values__, result }
3037
3038            function chunk(array, size) { size = nativeMax(toInteger(size), 0); var length = array ? array.length : 0; if (!length || size < 1) return []; for (var index = 0, resIndex = -1, result = Array(nativeCeil(length / size)); index < length;) result[++resIndex] = baseSlice(array, index, index += size); return result }
3039
3040            function compact(array) {
3041                for (var index = -1, length = array ? array.length : 0, resIndex = -1, result = []; ++index < length;) {
3042                    var value = array[index];
3043                    value && (result[++resIndex] = value)
3044                }
3045                return result
3046            }
3047
3048            function drop(array, n, guard) { var length = array ? array.length : 0; return length ? (n = guard || n === undefined ? 1 : toInteger(n), baseSlice(array, n < 0 ? 0 : n, length)) : [] }
3049
3050            function dropRight(array, n, guard) { var length = array ? array.length : 0; return length ? (n = guard || n === undefined ? 1 : toInteger(n), n = length - n, baseSlice(array, 0, n < 0 ? 0 : n)) : [] }
3051
3052            function dropRightWhile(array, predicate) { return array && array.length ? baseWhile(array, getIteratee(predicate, 3), !0, !0) : [] }
3053
3054            function dropWhile(array, predicate) { return array && array.length ? baseWhile(array, getIteratee(predicate, 3), !0) : [] }
3055
3056            function fill(array, value, start, end) { var length = array ? array.length : 0; return length ? (start && "number" != typeof start && isIterateeCall(array, value, start) && (start = 0, end = length), baseFill(array, value, start, end)) : [] }
3057
3058            function findIndex(array, predicate) { return array && array.length ? baseFindIndex(array, getIteratee(predicate, 3)) : -1 }
3059
3060            function findLastIndex(array, predicate) { return array && array.length ? baseFindIndex(array, getIteratee(predicate, 3), !0) : -1 }
3061
3062            function flatten(array) { var length = array ? array.length : 0; return length ? baseFlatten(array) : [] }
3063
3064            function flattenDeep(array) { var length = array ? array.length : 0; return length ? baseFlatten(array, !0) : [] }
3065
3066            function fromPairs(pairs) {
3067                for (var index = -1, length = pairs ? pairs.length : 0, result = {}; ++index < length;) {
3068                    var pair = pairs[index];
3069                    result[pair[0]] = pair[1]
3070                }
3071                return result
3072            }
3073
3074            function head(array) { return array ? array[0] : undefined }
3075
3076            function indexOf(array, value, fromIndex) { var length = array ? array.length : 0; return length ? (fromIndex = toInteger(fromIndex), fromIndex < 0 && (fromIndex = nativeMax(length + fromIndex, 0)), baseIndexOf(array, value, fromIndex)) : -1 }
3077
3078            function initial(array) { return dropRight(array, 1) }
3079
3080            function join(array, separator) { return array ? nativeJoin.call(array, separator) : "" }
3081
3082            function last(array) { var length = array ? array.length : 0; return length ? array[length - 1] : undefined }
3083
3084            function lastIndexOf(array, value, fromIndex) {
3085                var length = array ? array.length : 0;
3086                if (!length) return -1;
3087                var index = length;
3088                if (fromIndex !== undefined && (index = toInteger(fromIndex), index = (index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1)) + 1), value !== value) return indexOfNaN(array, index, !0);
3089                for (; index--;)
3090                    if (array[index] === value) return index;
3091                return -1
3092            }
3093
3094            function pullAll(array, values) { return array && array.length && values && values.length ? basePullAll(array, values) : array }
3095
3096            function pullAllBy(array, values, iteratee) { return array && array.length && values && values.length ? basePullAllBy(array, values, getIteratee(iteratee)) : array }
3097
3098            function remove(array, predicate) {
3099                var result = [];
3100                if (!array || !array.length) return result;
3101                var index = -1,
3102                    indexes = [],
3103                    length = array.length;
3104                for (predicate = getIteratee(predicate, 3); ++index < length;) {
3105                    var value = array[index];
3106                    predicate(value, index, array) && (result.push(value), indexes.push(index))
3107                }
3108                return basePullAt(array, indexes), result
3109            }
3110
3111            function reverse(array) { return array ? nativeReverse.call(array) : array }
3112
3113            function slice(array, start, end) { var length = array ? array.length : 0; return length ? (end && "number" != typeof end && isIterateeCall(array, start, end) ? (start = 0, end = length) : (start = null == start ? 0 : toInteger(start), end = end === undefined ? length : toInteger(end)), baseSlice(array, start, end)) : [] }
3114
3115            function sortedIndex(array, value) { return baseSortedIndex(array, value) }
3116
3117            function sortedIndexBy(array, value, iteratee) { return baseSortedIndexBy(array, value, getIteratee(iteratee)) }
3118
3119            function sortedIndexOf(array, value) { var length = array ? array.length : 0; if (length) { var index = baseSortedIndex(array, value); if (index < length && eq(array[index], value)) return index } return -1 }
3120
3121            function sortedLastIndex(array, value) { return baseSortedIndex(array, value, !0) }
3122
3123            function sortedLastIndexBy(array, value, iteratee) { return baseSortedIndexBy(array, value, getIteratee(iteratee), !0) }
3124
3125            function sortedLastIndexOf(array, value) { var length = array ? array.length : 0; if (length) { var index = baseSortedIndex(array, value, !0) - 1; if (eq(array[index], value)) return index } return -1 }
3126
3127            function sortedUniq(array) { return array && array.length ? baseSortedUniq(array) : [] }
3128
3129            function sortedUniqBy(array, iteratee) { return array && array.length ? baseSortedUniqBy(array, getIteratee(iteratee)) : [] }
3130
3131            function tail(array) { return drop(array, 1) }
3132
3133            function take(array, n, guard) { return array && array.length ? (n = guard || n === undefined ? 1 : toInteger(n), baseSlice(array, 0, n < 0 ? 0 : n)) : [] }
3134
3135            function takeRight(array, n, guard) { var length = array ? array.length : 0; return length ? (n = guard || n === undefined ? 1 : toInteger(n), n = length - n, baseSlice(array, n < 0 ? 0 : n, length)) : [] }
3136
3137            function takeRightWhile(array, predicate) { return array && array.length ? baseWhile(array, getIteratee(predicate, 3), !1, !0) : [] }
3138
3139            function takeWhile(array, predicate) { return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : [] }
3140
3141            function uniq(array) { return array && array.length ? baseUniq(array) : [] }
3142
3143            function uniqBy(array, iteratee) { return array && array.length ? baseUniq(array, getIteratee(iteratee)) : [] }
3144
3145            function uniqWith(array, comparator) { return array && array.length ? baseUniq(array, undefined, c
3145omparator) : [] }
3146
3147            function unzip(array) { if (!array || !array.length) return []; var length = 0; return array = arrayFilter(array, function(group) { if (isArrayLikeObject(group)) return length = nativeMax(group.length, length), !0 }), baseTimes(length, function(index) { return arrayMap(array, baseProperty(index)) }) }
3148
3149            function unzipWith(array, iteratee) { if (!array || !array.length) return []; var result = unzip(array); return null == iteratee ? result : arrayMap(result, function(group) { return apply(iteratee, undefined, group) }) }
3150
3151            function zipObject(props, values) { return baseZipObject(props || [], values || [], assignValue) }
3152
3153            function zipObjectDeep(props, values) { return baseZipObject(props || [], values || [], baseSet) }
3154
3155            function chain(value) { var result = lodash(value); return result.__chain__ = !0, result }
3156
3157            function tap(value, interceptor) { return interceptor(value), value }
3158
3159            function thru(value, interceptor) { return interceptor(value) }
3160
3161            function wrapperChain() { return chain(this) }
3162
3163            function wrapperCommit() { return new LodashWrapper(this.value(), this.__chain__) }
3164
3165            function wrapperFlatMap(iteratee) { return this.map(iteratee).flatten() }
3166
3167            function wrapperNext() {
3168                this.__values__ === undefined && (this.__values__ = toArray(this.value()));
3169                var done = this.__index__ >= this.__values__.length,
3170                    value = done ? undefined : this.__values__[this.__index__++];
3171                return { done: done, value: value }
3172            }
3173
3174            function wrapperToIterator() { return this }
3175
3176            function wrapperPlant(value) {
3177                for (var result, parent = this; parent instanceof baseLodash;) {
3178                    var clone = wrapperClone(parent);
3179                    clone.__index__ = 0, clone.__values__ = undefined, result ? previous.__wrapped__ = clone : result = clone;
3180                    var previous = clone;
3181                    parent = parent.__wrapped__
3182                }
3183                return previous.__wrapped__ = value, result
3184            }
3185
3186            function wrapperReverse() { var value = this.__wrapped__; if (value instanceof LazyWrapper) { var wrapped = value;
3186 return this.__actions__.length && (wrapped = new LazyWrapper(this)), wrapped = wrapped.reverse(), wrapped.__actions__.push({ func: thru, args: [reverse], thisArg: undefined }), new LodashWrapper(wrapped, this.__chain__) } return this.thru(reverse) }
3187
3188            function wrapperValue() { return baseWrapperValue(this.__wrapped__, this.__actions__) }
3189
3190            function every(collection, predicate, guard) { var func = isArray(collection) ? arrayEvery : baseEvery; return guard && isIterateeCall(collection, predicate, guard) && (predicate = undefined), func(collection, getIteratee(predicate, 3)) }
3191
3192            function filter(collection, predicate) { var func = isArray(collection) ? arrayFilter : baseFilter; return func(collection, getIteratee(predicate, 3)) }
3193
3194            function find(collection, predicate) { if (predicate = getIteratee(predicate, 3), isArray(collection)) { var index = baseFindIndex(collection, predicate); return index > -1 ? collection[index] : undefined } return baseFind(collection, predicate, baseEach) }
3195
3196            function findLast(collection, predicate) { if (predicate = getIteratee(predicate, 3), isArray(collection)) { var index = baseFindIndex(collection, predicate, !0); return index > -1 ? collection[index] : undefined } return baseFind(collection, predicate, baseEachRight) }
3197
3198            function flatMap(collection, iteratee) { return baseFlatten(map(collection, iteratee)) }
3199
3200            function forEach(collection, iteratee) { return "function" == typeof iteratee && isArray(collection) ? arrayEach(collection, iteratee) : baseEach(collection, toFunction(iteratee)) }
3201
3202            function forEachRight(collection, iteratee) { return "function" == typeof iteratee && isArray(collection) ? arrayEachRight(collection, iteratee) : baseEachRight(collection, toFunction(iteratee)) }
3203
3204            function includes(collection, value, fromIndex, guard) { collection = isArrayLike(collection) ? collection : values(collection), fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0; var length = collection.length; return fromIndex < 0 && (fromIndex = nativeMax(length + fromIndex, 0)), isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1 }
3205
3206            function map(collection, iteratee) { var func = isArray(collection) ? arrayMap : baseMap; return func(collection, getIteratee(iteratee, 3)) }
3207
3208            function orderBy(collection, iteratees, orders, guard) { return null == collection ? [] : (isArray(iteratees) || (iteratees = null == iteratees ? [] : [iteratees]), orders = guard ? undefined : orders, isArray(orders) || (orders = null == orders ? [] : [orders]), baseOrderBy(collection, iteratees, orders)) }
3209
3210            function reduce(collection, iteratee, accumulator) {
3211                var func = isArray(collection) ? arrayReduce : baseReduce,
3212                    initAccum = arguments.length < 3;
3213                return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach)
3214            }
3215
3216            function reduceRight(collection, iteratee, accumulator) {
3217                var func = isArray(collection) ? arrayReduceRight : baseReduce,
3218                    initAccum = arguments.length < 3;
3219                return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight)
3220            }
3221
3222            function reject(collection, predicate) { var func = isArray(collection) ? arrayFilter : baseFilter; return predicate = getIteratee(predicate, 3), func(collection, function(value, index, collection) { return !predicate(value, index, collection) }) }
3223
3224            function sample(collection) {
3225                var array = isArrayLike(collection) ? collection : values(collection),
3226                    length = array.length;
3227                return length > 0 ? array[baseRandom(0, length - 1)] : undefined
3228            }
3229
3230            function sampleSize(collection, n) {
3231                var index = -1,
3232                    result = toArray(collection),
3233                    length = result.length,
3234                    lastIndex = length - 1;
3235                for (n = baseClamp(toInteger(n), 0, length); ++index < n;) {
3236                    var rand = baseRandom(index, lastIndex),
3237                        value = result[rand];
3238                    result[rand] = result[index], result[index] = value
3239                }
3240                return result.length = n, result
3241            }
3242
3243            function shuffle(collection) { return sampleSize(collection, MAX_ARRAY_LENGTH) }
3244
3245            function size(collection) { if (null == collection) return 0; if (isArrayLike(collection)) { var result = collection.length; return result && isString(collection) ? stringSize(collection) : result } return keys(collection).length }
3246
3247            function some(collection, predicate, guard) { var func = isArray(collection) ? arraySome : baseSome; return guard && isIterateeCall(collection, predicate, guard) && (predicate = undefined), func(collection, getIteratee(predicate, 3)) }
3248
3249            function after(n, func) {
3250                if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
3251                return n = toInteger(n),
3252                    function() { if (--n < 1) return func.apply(this, arguments) }
3253            }
3254
3255            function ary(func, n, guard) { return n = guard ? undefined : n, n = func && null == n ? func.length : n, createWrapper(func, ARY_FLAG, undefined, undefined, undefined, undefined, n) }
3256
3257            function before(n, func) {
3258                var result;
3259                if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
3260                return n = toInteger(n),
3261                    function() { return --n > 0 && (result = func.apply(this, arguments)), n <= 1 && (func = undefined), result }
3262            }
3263
3264            function curry(func, arity, guard) { arity = guard ? undefined : arity; var result = createWrapper(func, CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); return result.placeholder = lodash.placeholder || curry.placeholder, result }
3265
3266            function curryRight(func, arity, guard) { arity = guard ? undefined : arity; var result = createWrapper(func, CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); return result.placeholder = lodash.placeholder || curryRight.placeholder, result }
3267
3268            function debounce(func, wait, options) {
3269                function cancel() { timeoutId && clearTimeout(timeoutId), maxTimeoutId && clearTimeout(maxTimeoutId), lastCalled = 0, args = maxTimeoutId = thisArg = timeoutId = trailingCall = undefined }
3270
3271                function complete(isCalled, id) { id && clearTimeout(id), maxTimeoutId = timeoutId = trailingCall = undefined, isCalled && (lastCalled = now(), result = func.apply(thisArg, args), timeoutId || maxTimeoutId || (args = thisArg = undefined)) }
3272
3273                function delayed() {
3274                    var remaining = wait - (now() - stamp);
3275                    remaining <= 0 || remaining > wait ? complete(trailingCall, maxTimeoutId) : timeoutId = setTimeout(delayed, remaining)
3276                }
3277
3278                function flush() { return (timeoutId && trailingCall || maxTimeoutId && trailing) && (result = func.apply(thisArg, args)), cancel(), result }
3279
3280                function maxDelayed() { complete(trailing, timeoutId) }
3281
3282                function debounced() {
3283                    if (args = arguments, stamp = now(), thisArg = this, trailingCall = trailing && (timeoutId || !leading), maxWait === !1) var leadingCall = leading && !timeoutId;
3284                    else {
3285                        maxTimeoutId || leading || (lastCalled = stamp);
3286                        var remaining = maxWait - (stamp - lastCalled),
3287                            isCalled = remaining <= 0 || remaining > maxWait;
3288                        isCalled ? (maxTimeoutId && (maxTimeoutId = clearTimeout(maxTimeoutId)), lastCalled = stamp, result = func.apply(thisArg, args)) : maxTimeoutId || (maxTimeoutId = setTimeout(maxDelayed, remaining))
3289                    }
3290                    return isCalled && timeoutId ? timeoutId = clearTimeout(timeoutId) : timeoutId || wait === maxWait || (timeoutId = setTimeout(delayed, wait)), leadingCall && (isCalled = !0, result = func.apply(thisArg, args)), !isCalled || timeoutId || maxTimeoutId || (args = thisArg = undefined), result
3291                }
3292                var args, maxTimeoutId, result, stamp, thisArg, timeoutId, trailingCall, lastCalled = 0,
3293                    leading = !1,
3294                    maxWait = !1,
3295                    trailing = !0;
3296                if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
3297                return wait = toNumber(wait) || 0, isObject(options) && (leading = !!options.leading, maxWait = "maxWait" in options && nativeMax(toNumber(options.maxWait) || 0, wait), trailing = "trailing" in options ? !!options.trailing : trailing), debounced.cancel = cancel, debounced.flush = flush, debounced
3298            }
3299
3300            function flip(func) { return createWrapper(func, FLIP_FLAG) }
3301
3302            function memoize(func, resolver) {
3303                if ("function" != typeof func || resolver && "function" != typeof resolver) throw new TypeError(FUNC_ERROR_TEXT);
3304                var memoized = function() {
3305                    var args = arguments,
3306                        key = resolver ? resolver.apply(this, args) : args[0],
3307                        cache = memoized.cache;
3308                    if (cache.has(key)) return cache.get(key);
3309                    var result = func.apply(this, args);
3310                    return memoized.cache = cache.set(key, result), result
3311                };
3312                return memoized.cache = new memoize.Cache, memoized
3313            }
3314
3315            function negate(predicate) { if ("function" != typeof predicate) throw new TypeError(FUNC_ERROR_TEXT); return function() { return !predicate.apply(this, arguments) } }
3316
3317            function once(func) { return before(2, func) }
3318
3319            function rest(func, start) {
3320                if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
3321                return start = nativeMax(start === undefined ? func.length - 1 : toInteger(start), 0),
3322                    function() {
3323                        for (var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array(length); ++index < length;) array[index] = args[start + index];
3324                        switch (start) {
3325                            case 0:
3326                                return func.call(this, array);
3327                            case 1:
3328                                return func.call(this, args[0], array);
3329                            case 2:
3330                                return func.call(this, args[0], args[1], array)
3331                        }
3332                        var otherArgs = Array(start + 1);
3333                        for (index = -1; ++index < start;) otherArgs[index] = args[index];
3334                        return otherArgs[start] = array, apply(func, this, otherArgs)
3335                    }
3336            }
3337
3338            function spread(func, start) {
3339                if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
3340                return start = start === undefined ? 0 : nativeMax(toInteger(start), 0), rest(function(args) {
3341                    var array = args[start],
3342                        otherArgs = args.slice(0, start);
3343                    return array && arrayPush(otherArgs, array), apply(func, this, otherArgs)
3344                })
3345            }
3346
3347            function throttle(func, wait, options) {
3348                var leading = !0,
3349                    trailing = !0;
3350                if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
3351                return isObject(options) && (leading = "leading" in options ? !!options.leading : leading, trailing = "trailing" in options ? !!options.trailing : trailing), debounce(func, wait, { leading: leading, maxWait: wait, trailing: trailing })
3352            }
3353
3354            function unary(func) { return ary(func, 1) }
3355
3356            function wrap(value, wrapper) { return wrapper = null == wrapper ? identity : wrapper, partial(wrapper, value) }
3357
3358            function clone(value) { return baseClone(value) }
3359
3360            function cloneWith(value, customizer) { return baseClone(value, !1, customizer) }
3361
3362            function cloneDeep(value) { return baseClone(value, !0) }
3363
3364            function cloneDeepWith(value, customizer) { return baseClone(value, !0, customizer) }
3365
3366            function eq(value, other) { return value === other || value !== value && other !== other }
3367
3368            function gt(value, other) { return value > other }
3369
3370            function gte(value, other) { return value >= other }
3371
3372            function isArguments(value) { return isArrayLikeObject(value) && hasOwnProperty.call(value, "callee") && (!propertyIsEnumerable.call(value, "callee") || objectToString.call(value) == argsTag) }
3373
3374            function isArrayLike(value) { return null != value && !("function" == typeof value && isFunction(value)) && isLength(getLength(value)) }
3375
3376            function isArrayLikeObject(value) { return isObjectLike(value) && isArrayLike(value) }
3377
3378            function isBoolean(value) { return value === !0 || value === !1 || isObjectLike(value) && objectToString.call(value) == boolTag }
3379
3380            function isDate(value) { return isObjectLike(value) && objectToString.call(value) == dateTag }
3381
3382            function isElement(value) { return !!value && 1 === value.nodeType && isObjectLike(value) && !isPlainObject(value) }
3383
3384            function isEmpty(value) {
3385                if (isArrayLike(value) && (isArray(value) || isString(value) || isFunction(value.splice) || isArguments(value))) return !value.length;
3386                for (var key in value)
3387                    if (hasOwnProperty.call(value, key)) return !1;
3388                return !0
3389            }
3390
3391            function isEqual(value, other) { return baseIsEqual(value, other) }
3392
3393            function isEqualWith(value, other, customizer) { customizer = "function" == typeof customizer ? customizer : undefined; var result = customizer ? customizer(value, other) : undefined; return result === undefined ? baseIsEqual(value, other, customizer) : !!result }
3394
3395            function isError(value) { return isObjectLike(value) && "string" == typeof value.message && objectToString.call(value) == errorTag }
3396
3397            function isFinite(value) { return "number" == typeof value && nativeIsFinite(value) }
3398
3399            function isFunction(value) { var tag = isObject(value) ? objectToString.call(value) : ""; return tag == funcTag || tag == genTag }
3400
3401            function isInteger(value) { return "number" == typeof value && value == toInteger(value) }
3402
3403            function isLength(value) { return "number" == typeof value && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER }
3404
3405            function isObject(value) { var type = typeof value; return !!value && ("object" == type || "function" == type) }
3406
3407            function isObjectLike(value) { return !!value && "object" == typeof value }
3408
3409            function isMatch(object, source) { return object === source || baseIsMatch(object, source, getMatchData(source)) }
3410
3411            function isMatchWith(object, source, customizer) { return customizer = "function" == typeof customizer ? customizer : undefined, baseIsMatch(object, source, getMatchData(source), customizer) }
3412
3413            function isNaN(value) { return isNumber(value) && value != +value }
3414
3415            function isNative(value) { return null != value && (isFunction(value) ? reIsNative.test(funcToString.call(value)) : isObjectLike(value) && (isHostOb
3415ject(value) ? reIsNative : reIsHostCtor).test(value)) }
3416
3417            function isNull(value) { return null === value }
3418
3419            function isNil(value) { return null == value }
3420
3421            function isNumber(value) { return "number" == typeof value || isObjectLike(value) && objectToString.call(value) == numberTag }
3422
3423            function isPlainObject(value) { if (!isObjectLike(value) || objectToString.call(value) != objectTag || isHostObject(value)) return !1; var proto = objectProto; if ("function" == typeof value.constructor && (proto = getPrototypeOf(value)), null === proto) return !0; var Ctor = proto.constructor; return "function" == typeof Ctor && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString }
3424
3425            function isRegExp(value) { return isObject(value) && objectToString.call(value) == regexpTag }
3426
3427            function isSafeInteger(value) { return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER }
3428
3429            function isString(value) { return "string" == typeof value || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag }
3430
3431            function isSymbol(value) { return "symbol" == typeof value || isObjectLike(value) && objectToString.call(value) == symbolTag }
3432
3433            function isTypedArray(value) { return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)] }
3434
3435            function isUndefined(value) { return value === undefined }
3436
3437            function lt(value, other) { return value < other }
3438
3439            function lte(value, other) { return value <= other }
3440
3441            function toArray(value) {
3442                if (!value) return [];
3443                if (isArrayLike(value)) return isString(value) ? stringToArray(value) : copyArray(value);
3444                if (iteratorSymbol && value[iteratorSymbol]) return iteratorToArray(value[iteratorSymbol]());
3445                var tag = getTag(value),
3446                    func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values;
3447                return func(value)
3448            }
3449
3450            function toInteger(value) { if (!value) return 0 === value ? value : 0; if (value = toNumber(value), value === INFINITY || value === -INFINITY) { var sign = value < 0 ? -1 : 1; return sign * MAX_INTEGER } var remainder = value % 1; return value === value ? remainder ? value - remainder : value : 0 }
3451
3452            function toLength(value) { return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0 }
3453
3454            function toNumber(value) {
3455                if (isObject(value)) {
3456                    var other = isFunction(value.valueOf) ? value.valueOf() : value;
3457                    value = isObject(other) ? other + "" : other
3458                }
3459                if ("string" != typeof value) return 0 === value ? value : +value;
3460                value = value.replace(reTrim, "");
3461                var isBinary = reIsBinary.test(value);
3462                return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value
3463            }
3464
3465            function toPlainObject(value) { return copyObject(value, keysIn(value)) }
3466
3467            function toSafeInteger(value) { return baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) }
3468
3469            function toString(value) { if ("string" == typeof value) return value; if (null == value) return ""; if (isSymbol(value)) return Symbol ? symbolToString.call(value) : ""; var result = value + ""; return "0" == result && 1 / value == -INFINITY ? "-0" : result }
3470
3471            function create(prototype, properties) { var result = baseCreate(prototype); return properties ? baseAssign(result, properties) : result }
3472
3473            function findKey(object, predicate) { return baseFind(object, getIteratee(predicate, 3), baseForOwn, !0) }
3474
3475            function findLastKey(object, predicate) {
3476                return baseFind(object, getIteratee(predicate, 3), baseForOwnRight, !0);
3477            }
3478
3479            function forIn(object, iteratee) { return null == object ? object : baseFor(object, toFunction(iteratee), keysIn) }
3480
3481            function forInRight(object, iteratee) { return null == object ? object : baseForRight(object, toFunction(iteratee), keysIn) }
3482
3483            function forOwn(object, iteratee) { return object && baseForOwn(object, toFunction(iteratee)) }
3484
3485            function forOwnRight(object, iteratee) { return object && baseForOwnRight(object, toFunction(iteratee)) }
3486
3487            function functions(object) { return null == object ? [] : baseFunctions(object, keys(object)) }
3488
3489            function functionsIn(object) { return null == object ? [] : baseFunctions(object, keysIn(object)) }
3490
3491            function get(object, path, defaultValue) { var result = null == object ? undefined : baseGet(object, path); return result === undefined ? defaultValue : result }
3492
3493            function has(object, path) { return hasPath(object, path, baseHas) }
3494
3495            function hasIn(object, path) { return hasPath(object, path, baseHasIn) }
3496
3497            function keys(object) {
3498                var isProto = isPrototype(object);
3499                if (!isProto && !isArrayLike(object)) return baseKeys(object);
3500                var indexes = indexKeys(object),
3501                    skipIndexes = !!indexes,
3502                    result = indexes || [],
3503                    length = result.length;
3504                for (var key in object) !baseHas(object, key) || skipIndexes && ("length" == key || isIndex(key, length)) || isProto && "constructor" == key || result.push(key);
3505                return result
3506            }
3507
3508            function keysIn(object) {
3509                for (var index = -1, isProto = isPrototype(object), props = baseKeysIn(object), propsLength = props.length, indexes = indexKeys(object), skipIndexes = !!indexes, result = indexes || [], length = result.length; ++index < propsLength;) {
3510                    var key = props[index];
3511                    skipIndexes && ("length" == key || isIndex(key, length)) || "constructor" == key && (isProto || !hasOwnProperty.call(object, key)) || result.push(key)
3512                }
3513                return result
3514            }
3515
3516            function mapKeys(object, iteratee) { var result = {}; return iteratee = getIteratee(iteratee, 3), baseForOwn(object, function(value, key, object) { result[iteratee(value, key, object)] = value }), result }
3517
3518            function mapValues(object, iteratee) { var result = {}; return iteratee = getIteratee(iteratee, 3), baseForOwn(object, function(value, key, object) { result[key] = iteratee(value, key, object) }), result }
3519
3520            function omitBy(object, predicate) { return predicate = getIteratee(predicate, 2), basePickBy(object, function(value, key) { return !predicate(value, key) }) }
3521
3522            function pickBy(object, predicate) { return null == object ? {} : basePickBy(object, getIteratee(predicate, 2)) }
3523
3524            function result(object, path, defaultValue) {
3525                if (isKey(path, object)) result = null == object ? undefined : object[path];
3526                else {
3527                    path = baseToPath(path);
3528                    var result = get(object, path);
3529                    object = parent(object, path)
3530                }
3531                return result === undefined && (result = defaultValue), isFunction(result) ? result.call(object) : result
3532            }
3533
3534            function set(object, path, value) { return null == object ? object : baseSet(object, path, value) }
3535
3536            function setWith(object, path, value, customizer) { return customizer = "function" == typeof customizer ? customizer : undefined, null == object ? object : baseSet(object, path, value, customizer) }
3537
3538            function toPairs(object) { return baseToPairs(object, keys(object)) }
3539
3540            function toPairsIn(object) { return baseToPairs(object, keysIn(object)) }
3541
3542            function transform(object, iteratee, accumulator) {
3543                var isArr = isArray(object) || isTypedArray(object);
3544                if (iteratee = getIteratee(iteratee, 4), null == accumulator)
3545                    if (isArr || isObject(object)) {
3546                        var Ctor = object.constructor;
3547                        accumulator = isArr ? isArray(object) ? new Ctor : [] : baseCreate(isFunction(Ctor) ? Ctor.prototype : undefined)
3548                    } else accumulator = {};
3549                return (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) { return iteratee(accumulator, value, index, object) }), accumulator
3550            }
3551
3552            function unset(object, path) { return null == object || baseUnset(object, path) }
3553
3554            function values(object) { return object ? baseValues(object, keys(object)) : [] }
3555
3556            function valuesIn(object) { return null == object ? baseValues(object, keysIn(object)) : [] }
3557
3558            function clamp(number, lower, upper) { return upper === undefined && (upper = lower, lower = undefined), upper !== undefined && (upper = toNumber(upper), upper = upper === upper ? upper : 0), lower !== undefined && (lower = toNumber(lower), lower = lower === lower ? lower : 0), baseClamp(toNumber(number), lower, upper) }
3559
3560            function inRange(number, start, end) { return start = toNumber(start) || 0, end === undefined ? (end = start, start = 0) : end = toNumber(end) || 0, number = toNumber(number), baseInRange(number, start, end) }
3561
3562            function random(lower, upper, floating) {
3563                if (floating && "boolean" != typeof floating && isIterateeCall(lower, upper, floating) && (upper = floating = undefined), floating === undefined && ("boolean" == typeof upper ? (floating = upper, upper = undefined) : "boolean" == typeof lower && (floating = lower, lower = undefined)), lower === undefined && upper === undefined ? (lower = 0, upper = 1) : (lower = toNumber(lower) || 0, upper === undefined ? (upper = lower, lower = 0) : upper = toNumber(upper) || 0), lower > upper) {
3564                    var temp = lower;
3565                    lower = upper, upper = temp
3566                }
3567                if (floating || lower % 1 || upper % 1) { var rand = nativeRandom(); return nativeMin(lower + rand * (upper - lower + freeParseFloat("1e-" + ((rand + "").length - 1))), upper) }
3568                return baseRandom(lower, upper)
3569            }
3570
3571            function capitalize(string) { return upperFirst(toString(string).toLowerCase()) }
3572
3573            function deburr(string) { return string = toString(string), string && string.replace(reLatin1, deburrLetter).replace(reComboMark, "") }
3574
3575            function endsWith(string, target, position) { string = toString(string), target = "string" == typeof target ? target : target + ""; var length = string.length; return position = position === undefined ? length : baseClamp(toInteger(position), 0, length), position -= target.length, position >= 0 && string.indexOf(target, position) == position }
3576
3577            function escape(string) { return string = toString(string), string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string }
3578
3579            function escapeRegExp(string) { return string = toString(string), string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string }
3580
3581            function pad(string, length, chars) {
3582                string = toString(string), length = toInteger(length);
3583                var strLength = stringSize(string);
3584                if (!length || strLength >= length) return string;
3585                var mid = (length - strLength) / 2,
3586                    leftLength = nativeFloor(mid),
3587                    rightLength = nativeCeil(mid);
3588                return createPadding("", leftLength, chars) + string + createPadding("", rightLength, chars)
3589            }
3590
3591            function padEnd(string, length, chars) { return string = toString(string), string + createPadding(string, length, chars) }
3592
3593            function padStart(string, length, chars) { return string = toString(string), createPadding(string, length, chars) + string }
3594
3595            function parseInt(string, radix, guard) { return guard || null == radix ? radix = 0 : radix && (radix = +radix), string = toString(string).replace(reTrim, ""), nativeParseInt(string, radix || (reHasHexPrefix.test(string) ? 16 : 10)) }
3596
3597            function repeat(string, n) {
3598                string = toString(string), n = toInteger(n);
3599                var result = "";
3600                if (!string || n < 1 || n > MAX_SAFE_INTEGER) return result;
3601                do n % 2 && (result += string), n = nativeFloor(n / 2), string += string; while (n);
3602                return result
3603            }
3604
3605            function replace() {
3606                var args = arguments,
3607                    string = toString(args[0]);
3608                return args.length < 3 ? string : string.replace(args[1], args[2])
3609            }
3610
3611            function split(string, separator, limit) { return toString(string).split(separator, limit) }
3612
3613            function startsWith(string, target, position) { return string = toString(string), position = baseClamp(toInteger(position), 0, string.length), str
3613ing.lastIndexOf(target, position) == position }
3614
3615            function template(string, options, guard) {
3616                var settings = lodash.templateSettings;
3617                guard && isIterateeCall(string, options, guard) && (options = undefined), string = toString(string), options = assignInWith({}, options, settings, assignInDefaults);
3618                var isEscaping, isEvaluating, imports = assignInWith({}, options.imports, settings.imports, assignInDefaults),
3619                    importsKeys = keys(imports),
3620                    importsValues = baseValues(imports, importsKeys),
3621                    index = 0,
3622                    interpolate = options.interpolate || reNoMatch,
3623                    source = "__p += '",
3624                    reDelimiters = RegExp((options.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$", "g"),
3625                    sourceURL = "//# sourceURL=" + ("sourceURL" in options ? options.sourceURL : "lodash.templateSources[" + ++templateCounter + "]") + "\n";
3626                string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) { return interpolateValue || (interpolateValue = esTemplateValue), source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar), escapeValue && (isEscaping = !0, source += "' +\n__e(" + escapeValue + ") +\n'"), evaluateValue && (isEvaluating = !0, source += "';\n" + evaluateValue + ";\n__p += '"), interpolateValue && (source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"), index = offset + match.length, match }), source += "';\n";
3627                var variable = options.variable;
3628                variable || (source = "with (obj) {\n" + source + "\n}\n"), source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;"), source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}";
3629                var result = attempt(function() { return Function(importsKeys, sourceURL + "return " + source).apply(undefined, importsValues) });
3630                if (result.source = source, isError(result)) throw result;
3631                return result
3632            }
3633
3634            function toLower(value) { return toString(value).toLowerCase() }
3635
3636            function toUpper(value) { return toString(value).toUpperCase() }
3637
3638            function trim(string, chars, guard) {
3639                if (string = toString(string), !string) return string;
3640                if (guard || chars === undefined) return string.replace(reTrim, "");
3641                if (chars += "", !chars) return string;
3642                var strSymbols = stringToArray(string),
3643                    chrSymbols = stringToArray(chars);
3644                return strSymbols.slice(charsStartIndex(strSymbols, chrSymbols), charsEndIndex(strSymbols, chrSymbols) + 1).join("")
3645            }
3646
3647            function trimEnd(string, chars, guard) { if (string = toString(string), !string) return string; if (guard || chars === undefined) return string.replace(reTrimEnd, ""); if (chars += "", !chars) return string; var strSymbols = stringToArray(string); return strSymbols.slice(0, charsEndIndex(strSymbols, stringToArray(chars)) + 1).join("") }
3648
3649            function trimStart(string, chars, guard) { if (string = toString(string), !string) return string; if (guard || chars === undefined) return string.replace(reTrimStart, ""); if (chars += "", !chars) return string; var strSymbols = stringToArray(string); return strSymbols.slice(charsStartIndex(strSymbols, stringToArray(chars))).join("") }
3650
3651            function truncate(string, options) {
3652                var length = DEFAULT_TRUNC_LENGTH,
3653                    omission = DEFAULT_TRUNC_OMISSION;
3654                if (isObject(options)) {
3655                    var separator = "separator" in options ? options.separator : separator;
3656                    length = "length" in options ? toInteger(options.length) : length, omission = "omission" in options ? toString(options.omission) : omission
3657                }
3658                string = toString(string);
3659                var strLength = string.length;
3660                if (reHasComplexSymbol.test(string)) {
3661                    var strSymbols = stringToArray(string);
3662                    strLength = strSymbols.length
3663                }
3664                if (length >= strLength) return string;
3665                var end = length - stringSize(omission);
3666                if (end < 1) return omission;
3667                var result = strSymbols ? strSymbols.slice(0, end).join("") : string.slice(0, end);
3668                if (separator === undefined) return result + omission;
3669                if (strSymbols && (end += result.length - end), isRegExp(separator)) {
3670                    if (string.slice(end).search(separator)) {
3671                        var match, substring = result;
3672                        for (separator.global || (separator = RegExp(separator.source, toString(reFlags.exec(separator)) + "g")), separator.lastIndex = 0; match = separator.exec(substring);) var newEnd = match.index;
3673                        result = result.slice(0, newEnd === undefined ? end : newEnd)
3674                    }
3675                } else if (string.indexOf(separator, end) != end) {
3676                    var index = result.lastIndexOf(separator);
3677                    index > -1 && (result = result.slice(0, index))
3678                }
3679                return result + omission
3680            }
3681
3682            function unescape(string) { return string = toString(string), string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string }
3683
3684            function words(string, pattern, guard) { return string = toString(string), pattern = guard ? undefined : pattern, pattern === undefined && (pattern = reHasComplexWord.test(string) ? reComplexWord : reBasicWord), string.match(pattern) || [] }
3685
3686            function cond(pairs) {
3687                var length = pairs ? pairs.length : 0,
3688                    toIteratee = getIteratee();
3689                return pairs = length ? arrayMap(pairs, function(pair) { if ("function" != typeof pair[1]) throw new TypeError(FUNC_ERROR_TEXT); return [toIteratee(pair[0]), pair[1]] }) : [], rest(function(args) { for (var index = -1; ++index < length;) { var pair = pairs[index]; if (apply(pair[0], this, args)) return apply(pair[1], this, args) } })
3690            }
3691
3692            function conforms(source) { return baseConforms(baseClone(source, !0)) }
3693
3694            function constant(value) { return function() { return value } }
3695
3696            function identity(value) { return value }
3697
3698            function iteratee(func) { return baseIteratee("function" == typeof func ? func : baseClone(func, !0)) }
3699
3700            function matches(source) { return baseMatches(baseClone(source, !0)) }
3701
3702            function matchesProperty(path, srcValue) { return baseMatchesProperty(path, baseClone(srcValue, !0)) }
3703
3704            function mixin(object, source, options) {
3705                var props = keys(source),
3706                    methodNames = baseFunctions(source, props);
3707                null != options || isObject(source) && (methodNames.length || !props.length) || (options = source, source = object, object = this, methodNames = baseFunctions(source, keys(source)));
3708                var chain = !(isObject(options) && "chain" in options) || options.chain,
3709                    isFunc = isFunction(object);
3710                return arrayEach(methodNames, function(methodName) {
3711                    var func = source[methodName];
3712                    object[methodName] = func, isFunc && (object.prototype[methodName] = function() {
3713                        var chainAll = this.__chain__;
3714                        if (chain || chainAll) {
3715                            var result = object(this.__wrapped__),
3716                                actions = result.__actions__ = copyArray(this.__actions__);
3717                            return actions.push({ func: func, args: arguments, thisArg: object }), result.__chain__ = chainAll, result
3718                        }
3719                        return func.apply(object, arrayPush([this.value()], arguments))
3720                    })
3721                }), object
3722            }
3723
3724            function noConflict() { return root._ === this && (root._ = oldDash), this }
3725
3726            function noop() {}
3727
3728            function nthArg(n) {
3729                return n = toInteger(n),
3730                    function() { return arguments[n] }
3731            }
3732
3733            function property(path) { return isKey(path) ? baseProperty(path) : basePropertyDeep(path) }
3734
3735            function propertyOf(object) { return function(path) { return null == object ? undefined : baseGet(object, path) } }
3736
3737            function times(n, iteratee) {
3738                if (n = toInteger(n), n < 1 || n > MAX_SAFE_INTEGER) return [];
3739                var index = MAX_ARRAY_LENGTH,
3740                    length = nativeMin(n, MAX_ARRAY_LENGTH);
3741                iteratee = toFunction(iteratee), n -= MAX_ARRAY_LENGTH;
3742                for (var result = baseTimes(length, iteratee); ++index < n;) iteratee(index);
3743                return result
3744            }
3745
3746            function toPath(value) { return isArray(value) ? arrayMap(value, String) : stringToPath(value) }
3747
3748            function uniqueId(prefix) { var id = ++idCounter; return toString(prefix) + id }
3749
3750            function add(augend, addend) { var result; return augend !== undefined && (result = augend), addend !== undefined && (result = result === undefined ? addend : result + addend), result }
3751
3752            function max(array) { return array && array.length ? baseExtremum(array, identity, gt) : undefined }
3753
3754            function maxBy(array, iteratee) { return array && array.length ? baseExtremum(array, getIteratee(iteratee), gt) : undefined }
3755
3756            function mean(array) { return sum(array) / (array ? array.length : 0) }
3757
3758            function min(array) { return array && array.length ? baseExtremum(array, identity, lt) : undefined }
3759
3760            function minBy(array, iteratee) { return array && array.length ? baseExtremum(array, getIteratee(iteratee), lt) : undefined }
3761
3762            function subtract(minuend, subtrahend) { var result; return minuend !== undefined && (result = minuend), subtrahend !== undefined && (result = result === undefined ? subtrahend : result - subtrahend), result }
3763
3764            function sum(array) { return array && array.length ? baseSum(array, identity) : 0 }
3765
3766            function sumBy(array, iteratee) { return array && array.length ? baseSum(array, getIteratee(iteratee)) : 0 }
3767            context = context ? _.defaults({}, context, _.pick(root, contextProps)) : root;
3768            var Date = context.Date,
3769                Error = context.Error,
3770                Math = context.Math,
3771                RegExp = context.RegExp,
3772                TypeError = context.TypeError,
3773                arrayProto = context.Array.prototype,
3774                objectProto = context.Object.prototype,
3775                funcToString = context.Function.prototype.toString,
3776                hasOwnProperty = objectProto.hasOwnProperty,
3777                idCounter = 0,
3778                objectCtorString = funcToString.call(Object),
3779                objectToString = objectProto.toString,
3780                oldDash = root._,
3781                reIsNative = RegExp("^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
3782                Reflect = context.Reflect,
3783                Symbol = context.Symbol,
3784                Uint8Array = context.Uint8Array,
3785                clearTimeout = context.clearTimeout,
3786                enumerate = Reflect ? Reflect.enumerate : undefined,
3787                getPrototypeOf = Object.getPrototypeOf,
3788                getOwnPropertySymbols = Object.getOwnPropertySymbols,
3789                iteratorSymbol = "symbol" == typeof(iteratorSymbol = Symbol && Symbol.iterator) ? iteratorSymbol : undefined,
3790                propertyIsEnumerable = objectProto.propertyIsEnumerable,
3791                setTimeout = context.setTimeout,
3792                splice = arrayProto.splice,
3793                nativeCeil = Math.ceil,
3794                nativeFloor = Math.floor,
3795                nativeIsFinite = context.isFinite,
3796                nativeJoin = arrayProto.join,
3797                nativeKeys = Object.keys,
3798                nativeMax = Math.max,
3799                nativeMin = Math.min,
3800                nativeParseInt = context.parseInt,
3801                nativeRandom = Math.random,
3802                nativeReverse = arrayProto.reverse,
3803                Map = getNative(context, "Map"),
3804                Set = getNative(context, "Set"),
3805                WeakMap = getNative(context, "WeakMap"),
3806                nativeCreate = getNative(Object, "create"),
3807                metaMap = WeakMap && new WeakMap,
3808                mapCtorString = Map ? funcToString.call(Map) : "",
3809                setCtorString = Set ? funcToString.call(Set) : "",
3810                symbolProto = Symbol ? Symbol.prototype : undefined,
3811                symbolValueOf = Symbol ? symbolProto.valueOf : undefined,
3812                symbolToString = Symbol ? symbolProto.toString : undefined,
3813                realNames = {};
3814            lodash.templateSettings = { escape: reEscape, evaluate: reEvaluate, interpolate: reInterpolate, variable: "", imports: { _: lodash } };
3815            var baseCreate = function() {
3816                    function object() {}
3817                    return function(prototype) {
3818                        if (isObject(prototype)) {
3819                            object.prototype = prototype;
3820                            var result = new object;
3821                            object.prototype = undefined
3822                        }
3823                        return result || {}
3824                    }
3825                }(),
3826                baseEach = createBaseEach(baseForOwn),
3827                baseEachRight = createBaseEach(baseForOwnRight, !0),
3828                baseFor = createBaseFor(),
3829                baseForRight = createBaseFor(!0);
3830            enumerate && !propertyIsEnumerable.call({ valueOf: 1 }, "valueOf") && (baseKeysIn = function(object) { return iteratorToArray(enumerate(object)) });
3831            var baseSetData = metaMap ? function(func, data) { return metaMap.set(func, data), func } : identity,
3832                createSet = Set && 2 === new Set([1, 2]).size ? function(values) { return new Set(values) } : noop,
3833                getData = metaMap ? function(func) { return metaMap.get(func) } : noop,
3834                getLength = baseProperty("length"),
3835                getSymbols = getOwnPropertySymbols || function() { return [] };
3836            (Map && getTag(new Map) != mapTag || Set && getTag(new Set) != setTag) && (getTag = function(value) {
3837                var result = objectToString.call(value),
3838                    Ctor = result == objectTag ? value.constructor : null,
3839                    ctorString = "function" == typeof Ctor ? funcToString.call(Ctor) : "";
3840                if (ctorString) { if (ctorString == mapCtorString) return mapTag; if (ctorString == setCtorString) return setTag }
3841                return result
3842            });
3843            var setData = function() {
3844                    var count = 0,
3845                        lastCalled = 0;
3846                    return function(key, value) {
3847                        var stamp = now(),
3848                            remaining = HOT_SPAN - (stamp - lastCalled);
3849                        if (lastCalled = stamp, remaining > 0) { if (++count >= HOT_COUNT) return key } else count = 0;
3850                        return baseSetData(key, value)
3851                    }
3852                }(),
3853                concat = rest(function(array, values) { return isArray(array) || (array = null == array ? [] : [Object(array)]), values = baseFlatten(values), arrayConcat(array, values) }),
3854                difference = rest(function(array, values) { return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values, !1, !0)) : [] }),
3855                differenceBy = rest(function(array, values) { var iteratee = last(values); return isArrayLikeObject(iteratee) && (iteratee = undefined), isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values, !1, !0), getIteratee(iteratee)) : [] }),
3856                differenceWith = rest(function(array, values) { var comparator = last(values); return isArrayLikeObject(comparator) && (comparator = undefined), isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values, !1, !0), undefined, c
3856omparator) : [] }),
3857                intersection = rest(function(arrays) { var mapped = arrayMap(arrays, toArrayLikeObject); return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : [] }),
3858                intersectionBy = rest(function(arrays) {
3859                    var iteratee = last(arrays),
3860                        mapped = arrayMap(arrays, toArrayLikeObject);
3861                    return iteratee === last(mapped) ? iteratee = undefined : mapped.pop(), mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee)) : []
3862                }),
3863                intersectionWith = rest(function(arrays) {
3864                    var comparator = last(arrays),
3865                        mapped = arrayMap(arrays, toArrayLikeObject);
3866                    return comparator === last(mapped) ? comparator = undefined : mapped.pop(), mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined, comparator) : []
3867                }),
3868                pull = rest(pullAll),
3869                pullAt = rest(function(array, indexes) { indexes = arrayMap(baseFlatten(indexes), String); var result = baseAt(array, indexes); return basePullAt(array, indexes.sort(compareAscending)), result }),
3870                union = rest(function(arrays) { return baseUniq(baseFlatten(arrays, !1, !0)) }),
3871                unionBy = rest(function(arrays) { var iteratee = last(arrays); return isArrayLikeObject(iteratee) && (iteratee = undefined), baseUniq(baseFlatten(arrays, !1, !0), getIteratee(iteratee)) }),
3872                unionWith = rest(function(arrays) { var comparator = last(arrays); return isArrayLikeObject(comparator) && (comparator = undefined), baseUniq(baseFlatten(arrays, !1, !0), undefined, comparator) }),
3873                without = rest(function(array, values) { return isArrayLikeObject(array) ? baseDifference(array, values) : [] }),
3874                xor = rest(function(arrays) { return baseXor(arrayFilter(arrays, isArrayLikeObject)) }),
3875                xorBy = rest(function(arrays) { var iteratee = last(arrays); return isArrayLikeObject(iteratee) && (iteratee = undefined), baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee)) }),
3876                xorWith = rest(function(arrays) { var comparator = last(arrays); return isArrayLikeObject(comparator) && (comparator = undefined), baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator) }),
3877                zip = rest(unzip),
3878                zipWith = rest(function(arrays) {
3879                    var length = arrays.length,
3880                        iteratee = length > 1 ? arrays[length - 1] : undefined;
3881                    return iteratee = "function" == typeof iteratee ? (arrays.pop(), iteratee) : undefined, unzipWith(arrays, iteratee)
3882                }),
3883                wrapperAt = rest(function(paths) {
3884                    paths = baseFlatten(paths);
3885                    var length = paths.length,
3886                        start = length ? paths[0] : 0,
3887                        value = this.__wrapped__,
3888                        interceptor = function(object) { return baseAt(object, paths) };
3889                    return !(length > 1 || this.__actions__.length) && value instanceof LazyWrapper && isIndex(start) ? (value = value.slice(start, +start + (length ? 1 : 0)), value.__actions__.push({ func: thru, args: [interceptor], thisArg: undefined }), new LodashWrapper(value, this.__chain__).thru(function(array) { return length && !array.length && array.push(undefined), array })) : this.thru(interceptor)
3890                }),
3891                countBy = createAggregator(function(result, value, key) { hasOwnProperty.call(result, key) ? ++result[key] : result[key] = 1 }),
3892                groupBy = createAggregator(function(result, value, key) { hasOwnProperty.call(result, key) ? result[key].push(value) : result[key] = [value] }),
3893                invokeMap = rest(function(collection, path, args) {
3894                    var index = -1,
3895                        isFunc = "function" == typeof path,
3896                        isProp = isKey(path),
3897                        result = isArrayLike(collection) ? Array(collection.length) : [];
3898                    return baseEach(collection, function(value) {
3899                        var func = isFunc ? path : isProp && null != value ? value[path] : undefined;
3900                        result[++index] = func ? apply(func, value, args
3900) : baseInvoke(value, path, args)
3901                    }), result
3902                }),
3903                keyBy = createAggregator(function(result, value, key) { result[key] = value }),
3904                partition = createAggregator(function(result, value, key) { result[key ? 0 : 1].push(value) }, function() {
3905                    return [
3906                        [],
3907                        []
3908                    ]
3909                }),
3910                sortBy = rest(function(collection, iteratees) { if (null == collection) return []; var length = iteratees.length; return length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1]) ? iteratees = [] : length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2]) && (iteratees.length = 1), baseOrderBy(collection, baseFlatten(iteratees), []) }),
3911                now = Date.now,
3912                bind = rest(function(func, thisArg, partials) {
3913                    var bitmask = BIND_FLAG;
3914                    if (partials.length) {
3915                        var placeholder = lodash.placeholder || bind.placeholder,
3916                            holders = replaceHolders(partials, placeholder);
3917                        bitmask |= PARTIAL_FLAG
3918                    }
3919                    return createWrapper(func, bitmask, thisArg, partials, holders)
3920                }),
3921                bindKey = rest(function(object, key, partials) {
3922                    var bitmask = BIND_FLAG | BIND_KEY_FLAG;
3923                    if (partials.length) {
3924                        var placeholder = lodash.placeholder || bindKey.placeholder,
3925                            holders = replaceHolders(partials, placeholder);
3926                        bitmask |= PARTIAL_FLAG
3927                    }
3928                    return createWrapper(key, bitmask, object, partials, holders)
3929                }),
3930                defer = rest(function(func, args) { return baseDelay(func, 1, args) }),
3931                delay = rest(function(func, wait, args) { return baseDelay(func, toNumber(wait) || 0, args) }),
3932                overArgs = rest(function(func, transforms) { transforms = arrayMap(baseFlatten(transforms), getIteratee()); var funcsLength = transforms.length; return rest(function(args) { for (var index = -1, length = nativeMin(args.length, funcsLength); ++index < length;) args[index] = transforms[index].call(this, args[index]); return apply(func, this, args) }) }),
3933                partial = rest(function(func, partials) {
3934                    var placeholder = lodash.placeholder || partial.placeholder,
3935                        holders = replaceHolders(partials, placeholder);
3936                    return createWrapper(func, PARTIAL_FLAG, undefined, partials, holders)
3937                }),
3938                partialRight = rest(function(func, partials) {
3939                    var placeholder = lodash.placeholder || partialRight.placeholder,
3940                        holders = replaceHolders(partials, placeholder);
3941                    return createWrapper(func, PARTIAL_RIGHT_FLAG, undefined, partials, holders)
3942                }),
3943                rearg = rest(function(func, indexes) { return createWrapper(func, REARG_FLAG, undefined, undefined, undefined, baseFlatten(indexes)) }),
3944                isArray = Array.isArray,
3945                assign = createAssigner(function(object, source) { copyObject(source, keys(source), object) }),
3946                assignIn = createAssigner(function(object, source) { copyObject(source, keysIn(source), object) }),
3947                assignInWith = createAssigner(function(object, source, srcIndex, customizer) { copyObjectWith(source, keysIn(source), object, customizer) }),
3948                assignWith = createAssigner(function(object, source, srcIndex, customizer) { copyObjectWith(source, keys(source), object, customizer) }),
3949                at = rest(function(object, paths) { return baseAt(object, baseFlatten(paths)) }),
3950                defaults = rest(function(args) { return args.push(undefined, assignInDefaults), apply(assignInWith, undefined, args) }),
3951                defaultsDeep = rest(function(args) { return args.push(undefined, mergeDefaults), apply(mergeWith, undefined, args) }),
3952                invert = createInverter(function(result, value, key) { result[value] = key }, constant(identity)),
3953                invertBy = createInverter(function(result, value, key) { hasOwnProperty.call(result, value) ? result[value].push(key) : result[value] = [key] }, getIteratee),
3954                invoke = rest(baseInvoke),
3955                merge = createAssigner(function(object, source, srcIndex) { baseMerge(object, source, srcIndex) }),
3956                mergeWith = createAssigner(function(object, source, srcIndex, customizer) { baseMerge(object, source, srcIndex, customizer) }),
3957                omit = rest(function(object, props) { return null == object ? {} : (props = arrayMap(baseFlatten(props), String), basePick(object, baseDifference(keysIn(object), props))) }),
3958                pick = rest(function(object, props) { return null == object ? {} : basePick(object, baseFlatten(props)) }),
3959                camelCase = createCompounder(function(result, word, index) { return word = word.toLowerCase(), result + (index ? capitalize(word) : word) }),
3960                kebabCase = createCompounder(function(result, word, index) { return result + (index ? "-" : "") + word.toLowerCase() }),
3961                lowerCase = createCompounder(function(result, word, index) { return result + (index ? " " : "") + word.toLowerCase() }),
3962                lowerFirst = createCaseFirst("toLowerCase"),
3963                upperFirst = createCaseFirst("toUpperCase"),
3964                snakeCase = createCompounder(function(result, word, index) { return result + (index ? "_" : "") + word.toLowerCase() }),
3965                startCase = createCompounder(function(result, word, index) { return result + (index ? " " : "") + capitalize(word) }),
3966                upperCase = createCompounder(function(result, word, index) { return result + (index ? " " : "") + word.toUpperCase() }),
3967                attempt = rest(function(func, args) { try { return apply(func, undefined, args) } catch (e) { return isObject(e) ? e : new Error(e) } }),
3968                bindAll = rest(function(object, methodNames) { return arrayEach(baseFlatten(methodNames), function(key) { object[key] = bind(object[key], object) }), object }),
3969                flow = createFlow(),
3970                flowRight = createFlow(!0),
3971                method = rest(function(path, args) { return function(object) { return baseInvoke(object, path, args) } }),
3972                methodOf = rest(function(object, args) { return function(path) { return baseInvoke(object, path, args) } }),
3973                over = createOver(arrayMap),
3974                overEvery = createOver(arrayEvery),
3975                overSome = createOver(arraySome),
3976                range = createRange(),
3977                rangeRight = createRange(!0),
3978                ceil = createRound("ceil"),
3979                floor = createRound("floor"),
3980                round = createRound("round");
3981            return lodash.prototype = baseLodash.prototype, LodashWrapper.prototype = baseCreate(baseLodash.prototype), LodashWrapper.prototype.constructor = LodashWrapper, LazyWrapper.prototype = baseCreate(baseLodash.prototype), LazyWrapper.prototype.constructor = LazyWrapper, Hash.prototype = nativeCreate ? nativeCreate(null) : objectProto, MapCache.prototype.clear = mapClear, MapCache.prototype.delete = mapDelete, MapCache.prototype.get = mapGet, MapCache.prototype.has = mapHas, MapCache.prototype.set = mapSet, SetCache.prototype.push = cachePush, Stack.prototype.clear = stackClear, Stack.prototype.delete = stackDelete, Stack.prototype.get = stackGet, Stack.prototype.has = stackHas, Stack.prototype.set = stackSet, memoize.Cache = MapCache, lodash.after = after, lodash.ary = ary, lodash.assign = assign, lodash.assignIn = assignIn, lodash.assignInWith = assignInWith, lodash.assignWith = assignWith, lodash.at = at, lodash.before = before, lodash.bind = bind, lodash.bindAll = bindAll, lodash.bindKey = bindKey, lodash.chain = chain, lodash.chunk = chunk, lodash.compact = compact, lodash.concat = concat, lodash.cond = cond, lodash.conforms = conforms, lodash.constant = constant, lodash.countBy = countBy, lodash.create = create, lodash.curry = curry, lodash.curryRight = curryRight, lodash.debounce = debounce, lodash.defaults = defaults, lodash.defaultsDeep = defaultsDeep, lodash.defer = defer, lodash.delay = delay, lodash.difference = difference, lodash.differenceBy = differenceBy, lodash.differenceWith = differenceWith, lodash.drop = drop, lodash.dropRight = dropRight, lodash.dropRightWhile = dropRightWhile, lodash.dropWhile = dropWhile, lodash.fill = fill, lodash.filter = filter, lodash.flatMap = flatMap, lodash.flatten = flatten, lodash.flattenDeep = flattenDeep, lodash.flip = flip, lodash.flow = flow, lodash.flowRight = flowRight, lodash.fromPairs = fromPairs, lodash.functions = functions, lodash.functionsIn = functionsIn, lodash.groupBy = groupBy, lodash.initial = initial, lodash.intersection = intersection, lodash.intersectionBy = intersectionBy, lodash.intersectionWith = intersectionWith, lodash.invert = invert, lodash.invertBy = invertBy, lodash.invokeMap = invokeMap, lodash.iteratee = iteratee, lodash.keyBy = keyBy, lodash.keys = keys, lodash.keysIn = keysIn, lodash.map = map, lodash.mapKeys = mapKeys, lodash.mapValues = mapValues, lodash.matches = matches, lodash.matchesProperty = matchesProperty, lodash.memoize = memoize, lodash.merge = merge, lodash.mergeWith = mergeWith, lodash.method = method, lodash.methodOf = methodOf, lodash.mixin = mixin, lodash.negate = negate, lodash.nthArg = nthArg, lodash.omit = omit, lodash.omitBy = omitBy, lodash.once = once, lodash.orderBy = orderBy, lodash.over = over, lodash.overArgs = overArgs, lodash.overEvery = overEvery, lodash.overSome = overSome, lodash.partial = partial, lodash.partialRight = partialRight, lodash.partition = partition, lodash.pick = pick, lodash.pickBy = pickBy, lodash.property = property, lodash.propertyOf = propertyOf, lodash.pull = pull, lodash.pullAll = pullAll, lodash.pullAllBy = pullAllBy, lodash.pullAt = pullAt, lodash.range = range, lodash.rangeRight = rangeRight, lodash.rearg = rearg, lodash.reject = reject, lodash.remove = remove, lodash.rest = rest, lodash.reverse = reverse, lodash.sampleSize = sampleSize, lodash.set = set, lodash.setWith = setWith, lodash.shuffle = shuffle, lodash.slice = slice, lodash.sortBy = sortBy, lodash.sortedUniq = sortedUniq, lodash.sortedUniqBy = sortedUniqBy, lodash.split = split, lodash.spread = spread, lodash.tail = tail, lodash.take = take, lodash.takeRight = takeRight, lodash.takeRightWhile = takeRightWhile, lodash.takeWhile = takeWhile, lodash.tap = tap, lodash.throttle = throttle, lodash.thru = thru, lodash.toArray = toArray, lodash.toPairs = toPairs, lodash.toPairsIn = toPairsIn, lodash.toPath = toPath, lodash.toPlainObject = toPlainObject, lodash.transform = transform, lodash.unary = unary, lodash.union = union, lodash.unionBy = unionBy, lodash.unionWith = unionWith, lodash.uniq = uniq, lodash.uniqBy = uniqBy, lodash.uniqWith = uniqWith, lodash.unset = unset, lodash.unzip = unzip, lodash.unzipWith = unzipWith, lodash.values = values, lodash.valuesIn = valuesIn, lodash.without = without, lodash.words = words, lodash.wrap = wrap, lodash.xor = xor, lodash.xorBy = xorBy, lodash.xorWith = xorWith, lodash.zip = zip, lodash.zipObject = zipObject, lodash.zipObjectDeep = zipObjectDeep, lodash.zipWith = zipWith, lodash.extend = assignIn, lodash.extendWith = assignInWith, mixin(lodash, lodash), lodash.add = add, lodash.attempt = attempt, lodash.camelCase = camelCase, lodash.capitalize = capitalize, lodash.ceil = ceil, lodash.clamp = clamp, lodash.clone = clone, lodash.cloneDeep = cloneDeep, lodash.cloneDeepWith = cloneDeepWith, lodash.cloneWith = cloneWith, lodash.deburr = deburr, lodash.endsWith = endsWith, lodash.eq = eq, lodash.escape = escape, lodash.escapeRegExp = escapeRegExp, lodash.every = every, lodash.find = find, lodash.findIndex = findIndex, lodash.findKey = findKey, lodash.findLast = findLast, lodash.findLastIndex = findLastIndex, lodash.findLastKey = findLastKey, lodash.floor = floor, lodash.forEac
vendor: 4,214 bytes, lines 3981-3990
3981h = forEach, lodash.forEachRight = forEachRight, lodash.forIn = forIn, lodash.forInRight = forInRight, lodash.forOwn = forOwn, lodash.forOwnRight = forOwnRight, lodash.get = get, lodash.gt = gt, lodash.gte = gte, lodash.has = has, lodash.hasIn = hasIn, lodash.head = head, lodash.identity = identity, lodash.includes = includes, lodash.indexOf = indexOf, lodash.inRange = inRange, lodash.invoke = invoke, lodash.isArguments = isArguments,
3982                lodash.isArray = isArray, lodash.isArrayLike = isArrayLike, lodash.isArrayLikeObject = isArrayLikeObject, lodash.isBoolean = isBoolean, lodash.isDate = isDate, lodash.isElement = isElement, lodash.isEmpty = isEmpty, lodash.isEqual = isEqual, lodash.isEqualWith = isEqualWith, lodash.isError = isError, lodash.isFinite = isFinite, lodash.isFunction = isFunction, lodash.isInteger = isInteger, lodash.isLength = isLength, lodash.isMatch = isMatch, lodash.isMatchWith = isMatchWith, lodash.isNaN = isNaN, lodash.isNative = isNative, lodash.isNil = isNil, lodash.isNull = isNull, lodash.isNumber = isNumber, lodash.isObject = isObject, lodash.isObjectLike = isObjectLike, lodash.isPlainObject = isPlainObject, lodash.isRegExp = isRegExp, lodash.isSafeInteger = isSafeInteger, lodash.isString = isString, lodash.isSymbol = isSymbol, lodash.isTypedArray = isTypedArray, lodash.isUndefined = isUndefined, lodash.join = join, lodash.kebabCase = kebabCase, lodash.last = last, lodash.lastIndexOf = lastIndexOf, lodash.lowerCase = lowerCase, lodash.lowerFirst = lowerFirst, lodash.lt = lt, lodash.lte = lte, lodash.max = max, lodash.maxBy = maxBy, lodash.mean = mean, lodash.min = min, lodash.minBy = minBy, lodash.noConflict = noConflict, lodash.noop = noop, lodash.now = now, lodash.pad = pad, lodash.padEnd = padEnd, lodash.padStart = padStart, lodash.parseInt = parseInt, lodash.random = random, lodash.reduce = reduce, lodash.reduceRight = reduceRight, lodash.repeat = repeat, lodash.replace = replace, lodash.result = result, lodash.round = round, lodash.runInContext = runInContext, lodash.sample = sample, lodash.size = size, lodash.snakeCase = snakeCase, lodash.some = some, lodash.sortedIndex = sortedIndex, lodash.sortedIndexBy = sortedIndexBy, lodash.sortedIndexOf = sortedIndexOf, lodash.sortedLastIndex = sortedLastIndex, lodash.sortedLastIndexBy = sortedLastIndexBy, lodash.sortedLastIndexOf = sortedLastIndexOf, lodash.startCase = startCase, lodash.startsWith = startsWith, lodash.subtract = subtract, lodash.sum = sum, lodash.sumBy = sumBy, lodash.template = template, lodash.times = times, lodash.toInteger = toInteger, lodash.toLength = toLength, lodash.toLower = toLower, lodash.toNumber = toNumber, lodash.toSafeInteger = toSafeInteger, lodash.toString = toString, lodash.toUpper = toUpper, lodash.trim = trim, lodash.trimEnd = trimEnd, lodash.trimStart = trimStart, lodash.truncate = truncate, lodash.unescape = unescape, lodash.uniqueId = uniqueId, lodash.upperCase = upperCase, lodash.upperFirst = upperFirst, lodash.each = forEach, lodash.eachRight = forEachRight, lodash.first = head, mixin(lodash, function() { var source = {}; return baseForOwn(lodash, function(func, methodName) { hasOwnProperty.call(lodash.prototype, methodName) || (source[methodName] = func) }), source }(), { chain: !1 }), lodash.VERSION = VERSION, arrayEach(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(methodName) { lodash[methodName].placeholder = lodash }), arrayEach(["drop", "take"], function(methodName, index) {
3983                    LazyWrapper.prototype[methodName] = function(n) {
3984                        var filtered = this.__filtered__;
3985                        if (filtered && !index) return new LazyWrapper(this);
3986                        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);
3987                        var result = this.clone();
3988                        return filtered ? result.__takeCount__ = nativeMin(n, result.__takeCount__) : result.__views__.push({ size: nativeMin(n, MAX_ARRAY_LENGTH), type: methodName + (result.__dir__ < 0 ? "Right" : "") }), result
3989                    }, LazyWrapper.prototype[methodName + "Right"] = function(n) { return this.reverse()[methodName](n).reverse() }
3990                }
vendor: 3,456 bytes, lines 3990-4014
3990), arrayEach(["filter", "map", "takeWhile"], function(methodName, index) {
3991                    var type = index + 1,
3992                        isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
3993                    LazyWrapper.prototype[methodName] = function(iteratee) { var result = this.clone(); return result.__iteratees__.push({ iteratee: getIteratee(iteratee, 3), type: type }), result.__filtered__ = result.__filtered__ || isFilter, result }
3994                }), arrayEach(["head", "last"], function(methodName, index) {
3995                    var takeName = "take" + (index ? "Right" : "");
3996                    LazyWrapper.prototype[methodName] = function() { return this[takeName](1).value()[0] }
3997                }), arrayEach(["initial", "tail"], function(methodName, index) {
3998                    var dropName = "drop" + (index ? "" : "Right");
3999                    LazyWrapper.prototype[methodName] = function() { return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1) }
4000                }), LazyWrapper.prototype.compact = function() { return this.filter(identity) }, LazyWrapper.prototype.find = function(predicate) { return this.filter(predicate).head() }, LazyWrapper.prototype.findLast = function(predicate) { return this.reverse().find(predicate) }, LazyWrapper.prototype.invokeMap = rest(function(path, args) { return "function" == typeof path ? new LazyWrapper(this) : this.map(function(value) { return baseInvoke(value, path, args) }) }), LazyWrapper.prototype.reject = function(predicate) { return predicate = getIteratee(predicate, 3), this.filter(function(value) { return !predicate(value) }) }, LazyWrapper.prototype.slice = function(start, end) { start = toInteger(start); var result = this; return result.__filtered__ && (start > 0 || end < 0) ? new LazyWrapper(result) : (start < 0 ? result = result.takeRight(-start) : start && (result = result.drop(start)), end !== undefined && (end = toInteger(end), result = end < 0 ? result.dropRight(-end) : result.take(end - start)), result) }, LazyWrapper.prototype.takeRightWhile = function(predicate) { return this.reverse().takeWhile(predicate).reverse() }, LazyWrapper.prototype.toArray = function() { return this.take(MAX_ARRAY_LENGTH) }, baseForOwn(LazyWrapper.prototype, function(func, methodName) {
4001                    var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),
4002                        isTaker = /^(?:head|last)$/.test(methodName),
4003                        lodashFunc = lodash[isTaker ? "take" + ("last" == methodName ? "Right" : "") : methodName],
4004                        retUnwrapped = isTaker || /^find/.test(methodName);
4005                    lodashFunc && (lodash.prototype[methodName] = function() {
4006                        var value = this.__wrapped__,
4007                            args = isTaker ? [1] : arguments,
4008                            isLazy = value instanceof LazyWrapper,
4009                            iteratee = args[0],
4010                            useLazy = isLazy || isArray(value),
4011                            interceptor = function(value) { var result = lodashFunc.apply(lodash, arrayPush([value], args)); return isTaker && chainAll ? result[0] : result };
4012                        useLazy && checkIteratee && "function" == typeof iteratee && 1 != iteratee.length && (isLazy = useLazy = !1);
4013                        var chainAll = this.__chain__,
4014                            isHybrid = !!this.__actions__.length,
4015                            isUnwrapped = retUnwrapped && !chainAll,
4016                            onlyLazy = isLazy && !isHybrid;
4017                        if (!retUnwrapped && useLazy) { value = onlyLazy ? value : new LazyWrapper(this); var result = func.apply(value, args); return result.__actions__.push({ func: thru, args: [interceptor], thisArg: undefined }), new LodashWrapper(result, chainAll) }
4018                        return isUnwrapped && onlyLazy ? func.apply(this, args) : (result = this.thru(interceptor), isUnwrapped ? isTaker ? result.value()[0] : result.value() : result)
4019                    })
4020                }), arrayEach(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) {
4021                    var func = arrayProto[methodName],
4022                        chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru",
4023                        retUnwrapped = /^(?:pop|shift)$/.test(methodName);
4024                    lodash.prototype[methodName] = function() { var args = arguments; return retUnwrapped && !this.__chain__ ? func.apply(this.value(), args) : this[chainName](function(value) { return func.apply(value, args) }) }
4025                }), baseForOwn(LazyWrapper.prototype, function(func, methodName) {
4026                    var lodashFunc = lodash[methodName];
4027                    if (lodashFunc) {
4028                        var key = lodashFunc.name + "",
4029                            names = realNames[key] || (realNames[key] = []);
4030                        names.push({ name: methodName, func: lodashFunc })
4031                    }
4032                }), realNames[createHybridWrapper(undefined, BIND_KEY_FLAG).name] = [{ name: "wrapper", func: undefined }], LazyWrapper.prototype.clone = lazyClone, LazyWrapper.prototype.reverse = lazyReverse, LazyWrapper.prototype.value = lazyValue, lodash.prototype.at = wrapperAt, lodash.prototype.chain = wrapperChain, lodash.prototype.commit = wrapperCommit, lodash.prototype.flatMap = wrapperFlatMap, lodash.prototype.next = wrapperNext, lodash.prototype.plant = wrapperPlant, lodash.prototype.reverse = wrapperReverse, lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue, iteratorSymbol && (lodash.prototype[iteratorSymbol] = wrapperToIterator), lodash
4033        }
4034        var undefined, VERSION = "4.2.1",
4035            BIND_FLAG = 1,
4036            BIND_KEY_FLAG = 2,
4037            CURRY_BOUND_FLAG = 4,
4038            CURRY_FLAG = 8,
4039            CURRY_RIGHT_FLAG = 16,
4040            PARTIAL_FLAG = 32,
4041            PARTIAL_RIGHT_FLAG = 64,
4042            ARY_FLAG = 128,
4043            REARG_FLAG = 256,
4044            FLIP_FLAG = 512,
4045            UNORDERED_COMPARE_FLAG = 1,
4046            PARTIAL_COMPARE_FLAG = 2,
4047            DEFAULT_TRUNC_LENGTH = 30,
4048            DEFAULT_TRUNC_OMISSION = "...",
4049            HOT_COUNT = 150,
4050            HOT_SPAN = 16,
4051            LARGE_ARRAY_SIZE = 200,
4052            LAZY_FILTER_FLAG = 1,
4053            LAZY_MAP_FLAG = 2,
4054            LAZY_WHILE_FLAG = 3,
4055            FUNC_ERROR_TEXT = "Expected a function",
4056            HASH_UNDEFINED = "__lodash_hash_undefined__",
4057            INFINITY = 1 / 0,
4058            MAX_SAFE_INTEGER = 9007199254740991,
4059            MAX_INTEGER = 1.7976931348623157e308,
4060            NAN = NaN,
4061            MAX_ARRAY_LENGTH = 4294967295,
4062            MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
4063            HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1,
4064            PLACEHOLDER = "__lodash_placeholder__",
4065            argsTag = "[object Arguments]",
4066            arrayTag = "[object Array]",
4067            boolTag = "[object Boolean]",
4068            dateTag = "[object Date]",
4069            errorTag = "[object Error]",
4070            funcTag = "[object Function]",
4071            genTag = "[object GeneratorFunction]",
4072            mapTag = "[object Map]",
4073            numberTag = "[object Number]",
4074            objectTag = "[object Object]",
4075            regexpTag = "[object RegExp]",
4076            setTag = "[object Set]",
4077            stringTag = "[object String]",
4078            symbolTag = "[object Symbol]",
4079            weakMapTag = "[object WeakMap]",
4080            arrayBufferTag = "[object ArrayBuffer]",
4081            float32Tag = "[object Float32Array]",
vendor: 4,389 bytes, lines 4082-4156
4082            float64Tag = "[object Float64Array]",
4083            int8Tag = "[object Int8Array]",
4084            int16Tag = "[object Int16Array]",
4085            int32Tag = "[object Int32Array]",
4086            uint8Tag = "[object Uint8Array]",
4087            uint8ClampedTag = "[object Uint8ClampedArray]",
4088            uint16Tag = "[object Uint16Array]",
4089            uint32Tag = "[object Uint32Array]",
4090            reEmptyStringLeading = /\b__p \+= '';/g,
4091            reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
4092            reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g,
4093            reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g,
4094            reUnescapedHtml = /[&<>"'`]/g,
4095            reHasEscapedHtml = RegExp(reEscapedHtml.source),
4096            reHasUnescapedHtml = RegExp(reUnescapedHtml.source),
4097            reEscape = /<%-([\s\S]+?)%>/g,
4098            reEvaluate = /<%([\s\S]+?)%>/g,
4099            reInterpolate = /<%=([\s\S]+?)%>/g,
4100            reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
4101            reIsPlainProp = /^\w*$/,
4102            rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g,
4103            reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
4104            reHasRegExpChar = RegExp(reRegExpChar.source),
4105            reTrim = /^\s+|\s+$/g,
4106            reTrimStart = /^\s+/,
4107            reTrimEnd = /\s+$/,
4108            reEscapeChar = /\\(\\)?/g,
4109            reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,
4110            reFlags = /\w*$/,
4111            reHasHexPrefix = /^0x/i,
4112            reIsBadHex = /^[-+]0x[0-9a-f]+$/i,
4113            reIsBinary = /^0b[01]+$/i,
4114            reIsHostCtor = /^\[object .+?Constructor\]$/,
4115            reIsOctal = /^0o[0-7]+$/i,
4116            reIsUint = /^(?:0|[1-9]\d*)$/,
4117            reLatin1 = /[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,
4118            reNoMatch = /($^)/,
4119            reUnescapedString = /['\n\r\u2028\u2029\\]/g,
4120            rsAstralRange = "\\ud800-\\udfff",
4121            rsComboMarksRange = "\\u0300-\\u036f\\ufe20-\\ufe23",
4122            rsComboSymbolsRange = "\\u20d0-\\u20f0",
4123            rsDingbatRange = "\\u2700-\\u27bf",
4124            rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff",
4125            rsMathOpRange = "\\xac\\xb1\\xd7\\xf7",
4126            rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",
4127            rsQuoteRange = "\\u2018\\u2019\\u201c\\u201d",
4128            rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",
4129            rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde",
4130            rsVarRange = "\\ufe0e\\ufe0f",
4131            rsBreakRange = rsMathOpRange + rsNonCharRange + rsQuoteRange + rsSpaceRange,
4132            rsAstral = "[" + rsAstralRange + "]",
4133            rsBreak = "[" + rsBreakRange + "]",
4134            rsCombo = "[" + rsComboMarksRange + rsComboSymbolsRange + "]",
4135            rsDigits = "\\d+",
4136            rsDingbat = "[" + rsDingbatRange + "]",
4137            rsLower = "[" + rsLowerRange + "]",
4138            rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]",
4139            rsFitz = "\\ud83c[\\udffb-\\udfff]",
4140            rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")",
4141            rsNonAstral = "[^" + rsAstralRange + "]",
4142            rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}",
4143            rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]",
4144            rsUpper = "[" + rsUpperRange + "]",
4145            rsZWJ = "\\u200d",
4146            rsLowerMisc = "(?:" + rsLower + "|" + rsMisc + ")",
4147            rsUpperMisc = "(?:" + rsUpper + "|" + rsMisc + ")",
4148            reOptMod = rsModifier + "?",
4149            rsOptVar = "[" + rsVarRange + "]?",
4150            rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*",
4151            rsSeq = rsOptVar + reOptMod + rsOptJoin,
4152            rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq,
4153            rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")",
4154            reComboMark = RegExp(rsCombo, "g"),
4155            reComplexSymbol = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g"),
4156            reHasComplexSymbol = RegExp("[" + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbol
4156sRange + rsVarRange + "]"),
4157            reBasicWord = /[a-zA-Z0-9]+/g,
4158            reComplexWord = RegExp([rsUpper + "?" + rsLower + "+(?=" + [rsBreak, rsUpper, "$"].join("|") + ")", rsUpperMisc + "+(?=" + [rsBreak, rsUpper + rsLowerMisc, "$"].join("|") + ")", rsUpper + "?" + rsLowerMisc + "+", rsUpper + "+", rsDigits, rsEmoji].join("|"), "g"),
4159            reHasComplexWord = /[a-z][A-Z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,
4160            contextProps = ["Array", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Reflect", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"],
4161            templateCounter = -1,
4162            typedArrayTags = {};
4163        typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = !0, typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = !1;
4164        var cloneableTags = {};
4165        cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = !0, cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = !1;
4166        var deburredLetters = { "À": "A", "Á": "A", "Â": "A", "Ã": "A", "Ä": "A", "Å": "A", "à ": "a", "á": "a", "â": "a", "ã": "a", "ä": "a", "å": "a", "Ç": "C", "ç": "c", "Ð": "D", "ð": "d", "È": "E", "É": "E", "Ê": "E", "Ë": "E", "è": "e", "é": "e", "ê": "e", "ë": "e", "Ì": "I", "Í": "I", "Î": "I", "Ï": "I", "ì": "i", "í": "i", "î": "i", "ï": "i", "Ñ": "N", "ñ": "n", "Ò": "O", "Ó": "O", "Ô": "O", "Õ": "O", "Ö": "O", "Ø": "O", "ò": "o", "ó": "o", "ô": "o", "õ": "o", "ö": "o", "ø": "o", "Ù": "U", "Ú": "U", "Û": "U", "Ü": "U", "ù": "u", "ú": "u", "û": "u", "ü": "u", "Ý": "Y", "ý": "y", "ÿ": "y", "Æ": "Ae", "æ": "ae", "Þ": "Th", "þ": "th", "ß": "ss" },
4167            htmlEscapes = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;", "`": "&#96;" },
4168            htmlUnescapes = { "&amp;": "&", "&lt;": "<", "&gt;": ">", "&quot;": '"', "&#39;": "'", "&#96;": "`" },
4169            objectTypes = { function: !0, object: !0 },
4170            stringEscapes = { "\\": "\\", "'": "'", "\n": "n", "\r": "r", "\u2028": "u2028", "\u2029": "u2029" },
4171            freeParseFloat = parseFloat,
4172            freeParseInt = parseInt,
4173            freeExports = objectTypes[typeof exports] && exports && !exports.nodeType ? exports : null,
4174            freeModule = objectTypes[typeof module] && module && !module.nodeType ? module : null,
4175            freeGlobal = checkGlobal(freeExports && freeModule && "object" == typeof global && global),
4176            freeSelf = checkGlobal(objectTypes[typeof self] && self),
4177            freeWindow = checkGlobal(objectTypes[typeof window] && window),
4178            moduleExports = freeModule && freeModule.exports === freeExports ? freeExports : null,
4179            thisGlobal = checkGlobal(objectTypes[typeof this] && this),
4180            root = freeGlobal || freeWindow !== (thisGlobal && thisGlobal.window) && freeWindow || freeSelf || thisGlobal || Function("return this")(),
4181            _ = runInContext();
4182        (freeWindow || freeSelf || {})._ = _, "function" == typeof define && "object" == typeof define.amd && define.amd ? define(function() { return _ }) : freeExports && freeModule ? (moduleExports && ((freeModule.exports = _)._ = _), freeExports._ = _) : root._ = _
4183    }.call(this),
4184    function(window) {
4185        function isArraylike(obj) {
4186            var length = obj.length,
4187                type = $.type(obj);
4188            return "function" !== type && !$.isWindow(obj) && (!(1 !== obj.nodeType || !length) || ("array" === type || 0 === length || "number" == typeof length && length > 0 && length - 1 in obj))
4189        }
4190        if (!window.jQuery) {
4191            var $ = function(selector, context) { return new $.fn.init(selector, context) };
4192            $.isWindow = function(obj) { return null != obj && obj == obj.window }, $.type = function(obj) { return null == obj ? obj + "" : "object" == typeof obj || "function" == typeof obj ? class2type[toString.call(obj)] || "object" : typeof obj }, $.isArray = Array.isArray || function(obj) { return "array" === $.type(obj) }, $.isPlainObject = function(obj) { var key; if (!obj || "object" !== $.type(obj) || obj.nodeType || $.isWindow(obj)) return !1; try { if (obj.constructor && !hasOwn.call(obj, "constructor") && !hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) return !1 } catch (e) { return !1 } for (key in obj); return void 0 === key || hasOwn.call(obj, key) }, $.each = function(obj, callback, args) {
4193                var value, i = 0,
4194                    length = obj.length,
4195                    isArray = isArraylike(obj);
4196                if (args) {
4197                    if (isArray)
4198                        for (; i < length && (value = callback.apply(obj[i], args), value !== !1); i++);
4199                    else
4200                        for (i in obj)
4201                            if (value = callback.apply(obj[i], args), value === !1) break
4202                } else if (isArray)
4203                    for (; i < length && (value = callback.call(obj[i], i, obj[i]), value !== !1); i++);
4204                else
4205                    for (i in obj)
4206                        if (value = callback.call(obj[i], i, obj[i]), value === !1) break; return obj
4207            }, $.data = function(node, key, value) {
4208                if (void 0 === value) {
4209                    var id = node[$.expando],
vendor: 77,257 bytes, lines 4210-4905
4210                        store = id && cache[id];
4211                    if (void 0 === key) return store;
4212                    if (store && key in store) return store[key]
4213                } else if (void 0 !== key) { var id = node[$.expando] || (node[$.expando] = ++$.uuid); return cache[id] = cache[id] || {}, cache[id][key] = value, value }
4214            }, $.removeData = function(node, keys) {
4215                var id = node[$.expando],
4216                    store = id && cache[id];
4217                store && $.each(keys, function(_, key) { delete store[key] })
4218            }, $.extend = function() {
4219                var src, copyIsArray, copy, name, options, clone, target = arguments[0] || {},
4220                    i = 1,
4221                    length = arguments.length,
4222                    deep = !1;
4223                for ("boolean" == typeof target && (deep = target, target = arguments[i] || {}, i++), "object" != typeof target && "function" !== $.type(target) && (target = {}), i === length && (target = this, i--); i < length; i++)
4224                    if (null != (options = arguments[i]))
4225                        for (name in options) src = target[name], copy = options[name], target !== copy && (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy))) ? (copyIsArray ? (copyIsArray = !1, clone = src && $.isArray(src) ? src : []) : clone = src && $.isPlainObject(src) ? src : {}, target[name] = $.extend(deep, clone, copy)) : void 0 !== copy && (target[name] = copy));
4226                return target
4227            }, $.queue = function(elem, type, data) {
4228                function $makeArray(arr, results) {
4229                    var ret = results || [];
4230                    return null != arr && (isArraylike(Object(arr)) ? ! function(first, second) {
4231                        for (var len = +second.length, j = 0, i = first.length; j < len;) first[i++] = second[j++];
4232                        if (len !== len)
4233                            for (; void 0 !== second[j];) first[i++] = second[j++];
4234                        return first.length = i, first
4235                    }(ret, "string" == typeof arr ? [arr] : arr) : [].push.call(ret, arr)), ret
4236                }
4237                if (elem) { type = (type || "fx") + "queue"; var q = $.data(elem, type); return data ? (!q || $.isArray(data) ? q = $.data(elem, type, $makeArray(data)) : q.push(data), q) : q || [] }
4238            }, $.dequeue = function(elems, type) {
4239                $.each(elems.nodeType ? [elems] : elems, function(i, elem) {
4240                    type = type || "fx";
4241                    var queue = $.queue(elem, type),
4242                        fn = queue.shift();
4243                    "inprogress" === fn && (fn = queue.shift()), fn && ("fx" === type && queue.unshift("inprogress"), fn.call(elem, function() { $.dequeue(elem, type) }))
4244                })
4245            }, $.fn = $.prototype = {
4246                init: function(selector) { if (selector.nodeType) return this[0] = selector, this; throw new Error("Not a DOM node.") },
4247                offset: function() { var box = this[0].getBoundingClientRect ? this[0].getBoundingClientRect() : { top: 0, left: 0 }; return { top: box.top + (window.pageYOffset || document.scrollTop || 0) - (document.clientTop || 0), left: box.left + (window.pageXOffset || document.scrollLeft || 0) - (document.clientLeft || 0) } },
4248                position: function() {
4249                    function offsetParent() { for (var offsetParent = this.offsetParent || document; offsetParent && "html" === !offsetParent.nodeType.toLowerCase && "static" === offsetParent.style.position;) offsetParent = offsetParent.offsetParent; return offsetParent || document }
4250                    var elem = this[0],
4251                        offsetParent = offsetParent.apply(elem),
4252                        offset = this.offset(),
4253                        parentOffset = /^(?:body|html)$/i.test(offsetParent.nodeName) ? { top: 0, left: 0 } : $(offsetParent).offset();
4254                    return offset.top -= parseFloat(elem.style.marginTop) || 0, offset.left -= parseFloat(elem.style.marginLeft) || 0, offsetParent.style && (parentOffset.top += parseFloat(offsetParent.style.borderTopWidth) || 0, parentOffset.left += parseFloat(offsetParent.style.borderLeftWidth) || 0), { top: offset.top - parentOffset.top, left: offset.left - parentOffset.left }
4255                }
4256            };
4257            var cache = {};
4258            $.expando = "velocity" + (new Date).getTime(), $.uuid = 0;
4259            for (var class2type = {}, hasOwn = class2type.hasOwnProperty, toString = class2type.toString, types = "Boolean Number String Function Array Date RegExp Object Error".split(" "), i = 0; i < types.length; i++) class2type["[object " + types[i] + "]"] = types[i].toLowerCase();
4260            $.fn.init.prototype = $.fn, window.Velocity = { Utilities: $ }
4261        }
4262    }(window),
4263    function(factory) { "object" == typeof module && "object" == typeof module.exports ? module.exports = factory() : "function" == typeof define && define.amd ? define(factory) : factory() }(function() {
4264        return function(global, window, document, undefined) {
4265            function compactSparseArray(array) {
4266                for (var index = -1, length = array ? array.length : 0, result = []; ++index < length;) {
4267                    var value = array[index];
4268                    value && result.push(value)
4269                }
4270                return result
4271            }
4272
4273            function sanitizeElements(elements) { return Type.isWrapped(elements) ? elements = [].slice.call(elements) : Type.isNode(elements) && (elements = [elements]), elements }
4274
4275            function Data(element) { var response = $.data(element, "velocity"); return null === response ? undefined : response }
4276
4277            function generateStep(steps) { return function(p) { return Math.round(p * steps) * (1 / steps) } }
4278
4279            function generateBezier(mX1, mY1, mX2, mY2) {
4280                function A(aA1, aA2) { return 1 - 3 * aA2 + 3 * aA1 }
4281
4282                function B(aA1, aA2) { return 3 * aA2 - 6 * aA1 }
4283
4284                function C(aA1) { return 3 * aA1 }
4285
4286                function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }
4287
4288                function getSlope(aT, aA1, aA2) { return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1) }
4289
4290                function newtonRaphsonIterate(aX, aGuessT) {
4291                    for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
4292                        var currentSlope = getSlope(aGuessT, mX1, mX2);
4293                        if (0 === currentSlope) return aGuessT;
4294                        var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
4295                        aGuessT -= currentX / currentSlope
4296                    }
4297                    return aGuessT
4298                }
4299
4300                function calcSampleValues() { for (var i = 0; i < kSplineTableSize; ++i) mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2) }
4301
4302                function binarySubdivide(aX, aA, aB) {
4303                    var currentX, currentT, i = 0;
4304                    do currentT = aA + (aB - aA) / 2, currentX = calcBezier(currentT, mX1, mX2) - aX, currentX > 0 ? aB = currentT : aA = currentT; while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
4305                    return currentT
4306                }
4307
4308                function getTForX(aX) {
4309                    for (var intervalStart = 0, currentSample = 1, lastSample = kSplineTableSize - 1; currentSample != lastSample && mSampleValues[currentSample] <= aX; ++currentSample) intervalStart += kSampleStepSize;
4310                    --currentSample;
4311                    var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]),
4312                        guessForT = intervalStart + dist * kSampleStepSize,
4313                        initialSlope = getSlope(guessForT, mX1, mX2);
4314                    return initialSlope >= NEWTON_MIN_SLOPE ? newtonRaphsonIterate(aX, guessForT) : 0 == initialSlope ? guessForT : binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize)
4315                }
4316
4317                function precompute() { _precomputed = !0, mX1 == mY1 && mX2 == mY2 || calcSampleValues() }
4318                var NEWTON_ITERATIONS = 4,
4319                    NEWTON_MIN_SLOPE = .001,
4320                    SUBDIVISION_PRECISION = 1e-7,
4321                    SUBDIVISION_MAX_ITERATIONS = 10,
4322                    kSplineTableSize = 11,
4323                    kSampleStepSize = 1 / (kSplineTableSize - 1),
4324                    float32ArraySupported = "Float32Array" in window;
4325                if (4 !== arguments.length) return !1;
4326                for (var i = 0; i < 4; ++i)
4327                    if ("number" != typeof arguments[i] || isNaN(arguments[i]) || !isFinite(arguments[i])) return !1;
4328                mX1 = Math.min(mX1, 1), mX2 = Math.min(mX2, 1), mX1 = Math.max(mX1, 0), mX2 = Math.max(mX2, 0);
4329                var mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize),
4330                    _precomputed = !1,
4331                    f = function(aX) { return _precomputed || precompute(), mX1 === mY1 && mX2 === mY2 ? aX : 0 === aX ? 0 : 1 === aX ? 1 : calcBezier(getTForX(aX), mY1, mY2) };
4332                f.getControlPoints = function() { return [{ x: mX1, y: mY1 }, { x: mX2, y: mY2 }] };
4333                var str = "generateBezier(" + [mX1, mY1, mX2, mY2] + ")";
4334                return f.toString = function() { return str }, f
4335            }
4336
4337            function getEasing(value, duration) { var easing = value; return Type.isString(value) ? Velocity.Easings[value] || (easing = !1) : easing = Type.isArray(value) && 1 === value.length ? generateStep.apply(null, value) : Type.isArray(value) && 2 === value.length ? generateSpringRK4.apply(null, value.concat([duration])) : !(!Type.isArray(value) || 4 !== value.length) && generateBezier.apply(null, value), easing === !1 && (easing = Velocity.Easings[Velocity.defaults.easing] ? Velocity.defaults.easing : EASING_DEFAULT), easing }
4338
4339            function tick(timestamp) {
4340                if (timestamp) {
4341                    var timeCurrent = (new Date).getTime(),
4342                        callsLength = Velocity.State.calls.length;
4343                    callsLength > 1e4 && (Velocity.State.calls = compactSparseArray(Velocity.State.calls));
4344                    for (var i = 0; i < callsLength; i++)
4345                        if (Velocity.State.calls[i]) {
4346                            var callContainer = Velocity.State.calls[i],
4347                                call = callContainer[0],
4348                                opts = callContainer[2],
4349                                timeStart = callContainer[3],
4350                                firstTick = !!timeStart,
4351                                tweenDummyValue = null;
4352                            timeStart || (timeStart = Velocity.State.calls[i][3] = timeCurrent - 16);
4353                            for (var percentComplete = Math.min((timeCurrent - timeStart) / opts.duration, 1), j = 0, callLength = call.length; j < callLength; j++) {
4354                                var tweensContainer = call[j],
4355                                    element = tweensContainer.element;
4356                                if (Data(element)) {
4357                                    var transformPropertyExists = !1;
4358                                    if (opts.display !== undefined && null !== opts.display && "none" !== opts.display) {
4359                                        if ("flex" === opts.display) {
4360                                            var flexValues = ["-webkit-box", "-moz-box", "-ms-flexbox", "-webkit-flex"];
4361                                            $.each(flexValues, function(i, flexValue) { CSS.setPropertyValue(element, "display", flexValue) })
4362                                        }
4363                                        CSS.setPropertyValue(element, "display", opts.display)
4364                                    }
4365                                    opts.visibility !== undefined && "hidden" !== opts.visibility && CSS.setPropertyValue(element, "visibility", opts.visibility);
4366                                    for (var property in tweensContainer)
4367                                        if ("element" !== property) {
4368                                            var currentValue, tween = tweensContainer[property],
4369                                                easing = Type.isString(tween.easing) ? Velocity.Easings[tween.easing] : tween.easing;
4370                                            if (1 === percentComplete) currentValue = tween.endValue;
4371                                            else { var tweenDelta = tween.endValue - tween.startValue; if (currentValue = tween.startValue + tweenDelta * easing(percentComplete, opts, tweenDelta), !firstTick && currentValue === tween.currentValue) continue }
4372                                            if (tween.currentValue = currentValue, "tween" === property) tweenDummyValue = currentValue;
4373                                            else {
4374                                                if (CSS.Hooks.registered[property]) {
4375                                                    var hookRoot = CSS.Hooks.getRoot(property),
4376                                                        rootPropertyValueCache = Data(element).rootPropertyValueCache[hookRoot];
4377                                                    rootPropertyValueCache && (tween.rootPropertyValue = rootPropertyValueCache)
4378                                                }
4379                                                var adjustedSetData = CSS.setPropertyValue(element, property, tween.currentValue + (0 === parseFloat(currentValue) ? "" : tween.unitType), tween.rootPropertyValue, tween.scrollData);
4380                                                CSS.Hooks.registered[property] && (CSS.Normalizations.registered[hookRoot] ? Data(element).rootPropertyValueCache[hookRoot] = CSS.Normalizations.registered[hookRoot]("extract", null, adjustedSetData[1]) : Data(element).rootPropertyValueCache[hookRoot] = adjustedSetData[1]), "transform" === adjustedSetData[0] && (transformPropertyExists = !0)
4381                                            }
4382                                        }
4383                                    opts.mobileHA && Data(element).transformCache.translate3d === undefined && (Data(element).transformCache.translate3d = "(0px, 0px, 0px)", transformPropertyExists = !0), transformPropertyExists && CSS.flushTransformCache(element)
4384                                }
4385                            }
4386                            opts.display !== undefined && "none" !== opts.display && (Velocity.State.calls[i][2].display = !1), opts.visibility !== undefined && "hidden" !== opts.visibility && (Velocity.State.calls[i][2].visibility = !1), opts.progress && opts.progress.call(callContainer[1], callContainer[1], percentComplete, Math.max(0, timeStart + opts.duration - timeCurrent), timeStart, tweenDummyValue), 1 === percentComplete && completeCall(i)
4387                        }
4388                }
4389                Velocity.State.isTicking && ticker(tick)
4390            }
4391
4392            function completeCall(callIndex, isStopped) {
4393                if (!Velocity.State.calls[callIndex]) return !1;
4394                for (var call = Velocity.State.calls[callIndex][0], elements = Velocity.State.calls[callIndex][1], opts = Velocity.State.calls[callIndex][2], resolver = Velocity.State.calls[callIndex][4], remainingCallsExist = !1, i = 0, callLength = call.length; i < callLength; i++) {
4395                    var element = call[i].element;
4396                    if (isStopped || opts.loop || ("none" === opts.display && CSS.setPropertyValue(element, "display", opts.display), "hidden" === opts.visibility && CSS.setPropertyValue(element, "visibility", opts.visibility)), opts.loop !== !0 && ($.queue(element)[1] === undefined || !/\.velocityQueueEntryFlag/i.test($.queue(element)[1])) && Data(element)) {
4397                        Data(element).isAnimating = !1, Data(element).rootPropertyValueCache = {};
4398                        var transformHAPropertyExists = !1;
4399                        $.each(CSS.Lists.transforms3D, function(i, transformName) {
4400                            var defaultValue = /^scale/.test(transformName) ? 1 : 0,
4401                                currentValue = Data(element).transformCache[transformName];
4402                            Data(element).transformCache[transformName] !== undefined && new RegExp("^\\(" + defaultValue + "[^.]").test(currentValue) && (transformHAPropertyExists = !0, delete Data(element).transformCache[transformName])
4403                        }), opts.mobileHA && (transformHAPropertyExists = !0, delete Data(element).transformCache.translate3d), transformHAPropertyExists && CSS.flushTransformCache(element), CSS.Values.removeClass(element, "velocity-animating")
4404                    }
4405                    if (!isStopped && opts.complete && !opts.loop && i === callLength - 1) try { opts.complete.call(elements, elements) } catch (error) { setTimeout(function() { throw error }, 1) }
4406                    resolver && opts.loop !== !0 && resolver(elements), Data(element) && opts.loop === !0 && !isStopped && ($.each(Data(element).tweensContainer, function(propertyName, tweenContainer) { /^rotate/.test(propertyName) && 360 === parseFloat(tweenContainer.endValue) && (tweenContainer.endValue = 0, tweenContainer.startValue = 360), /^backgroundPosition/.test(propertyName) && 100 === parseFloat(tweenContainer.endValue) && "%" === tweenContainer.unitType && (tweenContainer.endValue = 0, tweenContainer.startValue = 100) }), Velocity(element, "reverse", { loop: !0, delay: opts.delay })), opts.queue !== !1 && $.dequeue(element, opts.queue)
4407                }
4408                Velocity.State.calls[callIndex] = !1;
4409                for (var j = 0, callsLength = Velocity.State.calls.length; j < callsLength; j++)
4410                    if (Velocity.State.calls[j] !== !1) { remainingCallsExist = !0; break }
4411                remainingCallsExist === !1 && (Velocity.State.isTicking = !1, delete Velocity.State.calls, Velocity.State.calls = [])
4412            }
4413            var $, IE = function() { if (document.documentMode) return document.documentMode; for (var i = 7; i > 4; i--) { var div = document.createElement("div"); if (div.innerHTML = "<!--[if IE " + i + "]><span></span><![endif]-->", div.getElementsByTagName("span").length) return div = null, i } return undefined }(),
4414                rAFShim = function() { var timeLast = 0; return window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) { var timeDelta, timeCurrent = (new Date).getTime(); return timeDelta = Math.max(0, 16 - (timeCurrent - timeLast)), timeLast = timeCurrent + timeDelta, setTimeout(function() { callback(timeCurrent + timeDelta) }, timeDelta) } }(),
4415                Type = { isString: function(variable) { return "string" == typeof variable }, isArray: Array.isArray || function(variable) { return "[object Array]" === Object.prototype.toString.call(variable) }, isFunction: function(variable) { return "[object Function]" === Object.prototype.toString.call(variable) }, isNode: function(variable) { return variable && variable.nodeType }, isNodeList: function(variable) { return "object" == typeof variable && /^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(variable)) && variable.length !== undefined && (0 === variable.length || "object" == typeof variable[0] && variable[0].nodeType > 0) }, isWrapped: function(variable) { return variable && (variable.jquery || window.Zepto && window.Zepto.zepto.isZ(variable)) }, isSVG: function(variable) { return window.SVGElement && variable instanceof window.SVGElement }, isEmptyObject: function(variable) { for (var name in variable) return !1; return !0 } },
4416                isJQuery = !1;
4417            if (global.fn && global.fn.jquery ? ($ = global, isJQuery = !0) : $ = window.Velocity.Utilities, IE <= 8 && !isJQuery) throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");
4418            if (IE <= 7) return void(jQuery.fn.velocity = jQuery.fn.animate);
4419            var DURATION_DEFAULT = 400,
4420                EASING_DEFAULT = "swing",
4421                Velocity = { State: { isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), isAndroid: /Android/i.test(navigator.userAgent), isGingerbread: /Android 2\.3\.[3-7]/i.test(navigator.userAgent), isChrome: window.chrome, isFirefox: /Firefox/i.test(navigator.userAgent), prefixElement: document.createElement("div"), prefixMatches: {}, scrollAnchor: null, scrollPropertyLeft: null, scrollPropertyTop: null, isTicking: !1, calls: [] }, CSS: {}, Utilities: $, Redirects: {}, Easings: {}, Promise: window.Promise, defaults: { queue: "", duration: DURATION_DEFAULT, easing: EASING_DEFAULT, begin: undefined, complete: undefined, progress: undefined, display: undefined, visibility: undefined, loop: !1, delay: !1, mobileHA: !0, _cacheValues: !0 }, init: function(element) { $.data(element, "velocity", { isSVG: Type.isSVG(element), isAnimating: !1, computedStyle: null, tweensContainer: null, rootPropertyValueCache: {}, transformCache: {} }) }, hook: null, mock: !1, version: { major: 1, minor: 2, patch: 2 }, debug: !1 };
4422            window.pageYOffset !== undefined ? (Velocity.State.scrollAnchor = window,
4423                Velocity.State.scrollPropertyLeft = "pageXOffset", Velocity.State.scrollPropertyTop = "pageYOffset") : (Velocity.State.scrollAnchor = document.documentElement || document.body.parentNode || document.body, Velocity.State.scrollPropertyLeft = "scrollLeft", Velocity.State.scrollPropertyTop = "scrollTop");
4424            var generateSpringRK4 = function() {
4425                function springAccelerationForState(state) { return -state.tension * state.x - state.friction * state.v }
4426
4427                function springEvaluateStateWithDerivative(initialState, dt, derivative) { var state = { x: initialState.x + derivative.dx * dt, v: initialState.v + derivative.dv * dt, tension: initialState.tension, friction: initialState.friction }; return { dx: state.v, dv: springAccelerationForState(state) } }
4428
4429                function springIntegrateState(state, dt) {
4430                    var a = { dx: state.v, dv: springAccelerationForState(state) },
4431                        b = springEvaluateStateWithDerivative(state, .5 * dt, a),
4432                        c = springEvaluateStateWithDerivative(state, .5 * dt, b),
4433                        d = springEvaluateStateWithDerivative(state, dt, c),
4434                        dxdt = 1 / 6 * (a.dx + 2 * (b.dx + c.dx) + d.dx),
4435                        dvdt = 1 / 6 * (a.dv + 2 * (b.dv + c.dv) + d.dv);
4436                    return state.x = state.x + dxdt * dt, state.v = state.v + dvdt * dt, state
4437                }
4438                return function springRK4Factory(tension, friction, duration) {
4439                    var have_duration, dt, last_state, initState = { x: -1, v: 0, tension: null, friction: null },
4440                        path = [0],
4441                        time_lapsed = 0,
4442                        tolerance = 1e-4,
4443                        DT = .016;
4444                    for (tension = parseFloat(tension) || 500, friction = parseFloat(friction) || 20, duration = duration || null, initState.tension = tension, initState.friction = friction, have_duration = null !== duration, have_duration ? (time_lapsed = springRK4Factory(tension, friction), dt = time_lapsed / duration * DT) : dt = DT;;)
4445                        if (last_state = springIntegrateState(last_state || initState, dt), path.push(1 + last_state.x), time_lapsed += 16, !(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) break;
4446                    return have_duration ? function(percentComplete) { return path[percentComplete * (path.length - 1) | 0] } : time_lapsed
4447                }
4448            }();
4449            Velocity.Easings = { linear: function(p) { return p }, swing: function(p) { return .5 - Math.cos(p * Math.PI) / 2 }, spring: function(p) { return 1 - Math.cos(4.5 * p * Math.PI) * Math.exp(6 * -p) } }, $.each([
4450                ["ease", [.25, .1, .25, 1]],
4451                ["ease-in", [.42, 0, 1, 1]],
4452                ["ease-out", [0, 0, .58, 1]],
4453                ["ease-in-out", [.42, 0, .58, 1]],
4454                ["easeInSine", [.47, 0, .745, .715]],
4455                ["easeOutSine", [.39, .575, .565, 1]],
4456                ["easeInOutSine", [.445, .05, .55, .95]],
4457                ["easeInQuad", [.55, .085, .68, .53]],
4458                ["easeOutQuad", [.25, .46, .45, .94]],
4459                ["easeInOutQuad", [.455, .03, .515, .955]],
4460                ["easeInCubic", [.55, .055, .675, .19]],
4461                ["easeOutCubic", [.215, .61, .355, 1]],
4462                ["easeInOutCubic", [.645, .045, .355, 1]],
4463                ["easeInQuart", [.895, .03, .685, .22]],
4464                ["easeOutQuart", [.165, .84, .44, 1]],
4465                ["easeInOutQuart", [.77, 0, .175, 1]],
4466                ["easeInQuint", [.755, .05, .855, .06]],
4467                ["easeOutQuint", [.23, 1, .32, 1]],
4468                ["easeInOutQuint", [.86, 0, .07, 1]],
4469                ["easeInExpo", [.95, .05, .795, .035]],
4470                ["easeOutExpo", [.19, 1, .22, 1]],
4471                ["easeInOutExpo", [1, 0, 0, 1]],
4472                ["easeInCirc", [.6, .04, .98, .335]],
4473                ["easeOutCirc", [.075, .82, .165, 1]],
4474                ["easeInOutCirc", [.785, .135, .15, .86]]
4475            ], function(i, easingArray) { Velocity.Easings[easingArray[0]] = generateBezier.apply(null, easingArray[1]) });
4476            var CSS = Velocity.CSS = {
4477                RegEx: { isHex: /^#([A-f\d]{3}){1,2}$/i, valueUnwrap: /^[A-z]+\((.*)\)$/i, wrappedValueAlreadyExtracted: /[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/, valueSplit: /([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi },
4478                Lists: { colors: ["fill", "stroke", "stopColor", "color", "backgroundColor", "borderColor", "borderTopColor", "borderRightColor", "borderBottomColor", "borderLeftColor", "outlineColor"], transformsBase: ["translateX", "translateY", "scale", "scaleX", "scaleY", "skewX", "skewY", "rotateZ"], transforms3D: ["transformPerspective", "translateZ", "scaleZ", "rotateX", "rotateY"] },
4479                Hooks: {
4480                    templates: { textShadow: ["Color X Y Blur", "black 0px 0px 0px"], boxShadow: ["Color X Y Blur Spread", "black 0px 0px 0px 0px"], clip: ["Top Right Bottom Left", "0px 0px 0px 0px"], backgroundPosition: ["X Y", "0% 0%"], transformOrigin: ["X Y Z", "50% 50% 0px"], perspectiveOrigin: ["X Y", "50% 50%"] },
4481                    registered: {},
4482                    register: function() {
4483                        for (var i = 0; i < CSS.Lists.colors.length; i++) {
4484                            var rgbComponents = "color" === CSS.Lists.colors[i] ? "0 0 0 1" : "255 255 255 1";
4485                            CSS.Hooks.templates[CSS.Lists.colors[i]] = ["Red Green Blue Alpha", rgbComponents]
4486                        }
4487                        var rootProperty, hookTemplate, hookNames;
4488                        if (IE)
4489                            for (rootProperty in CSS.Hooks.templates) { hookTemplate = CSS.Hooks.templates[rootProperty], hookNames = hookTemplate[0].split(" "); var defaultValues = hookTemplate[1].match(CSS.RegEx.valueSplit); "Color" === hookNames[0] && (hookNames.push(hookNames.shift()), defaultValues.push(defaultValues.shift()), CSS.Hooks.templates[rootProperty] = [hookNames.join(" "), defaultValues.join(" ")]) }
4490                        for (rootProperty in CSS.Hooks.templates) {
4491                            hookTemplate = CSS.Hooks.templates[rootProperty], hookNames = hookTemplate[0].split(" ");
4492                            for (var i in hookNames) {
4493                                var fullHookName = rootProperty + hookNames[i],
4494                                    hookPosition = i;
4495                                CSS.Hooks.registered[fullHookName] = [rootProperty, hookPosition]
4496                            }
4497                        }
4498                    },
4499                    getRoot: function(property) { var hookData = CSS.Hooks.registered[property]; return hookData ? hookData[0] : property },
4500                    cleanRootPropertyValue: function(rootProperty, rootPropertyValue) { return CSS.RegEx.valueUnwrap.test(rootPropertyValue) && (rootPropertyValue = rootPropertyValue.match(CSS.RegEx.valueUnwrap)[1]), CSS.Values.isCSSNullValue(rootPropertyValue) && (rootPropertyValue = CSS.Hooks.templates[rootProperty][1]), rootPropertyValue },
4501                    extractValue: function(fullHookName, rootPropertyValue) {
4502                        var hookData = CSS.Hooks.registered[fullHookName];
4503                        if (hookData) {
4504                            var hookRoot = hookData[0],
4505                                hookPosition = hookData[1];
4506                            return rootPropertyValue = CSS.Hooks.cleanRootPropertyValue(hookRoot, rootPropertyValue), rootPropertyValue.toString().match(CSS.RegEx.valueSplit)[hookPosition]
4507                        }
4508                        return rootPropertyValue
4509                    },
4510                    injectValue: function(fullHookName, hookValue, rootPropertyValue) {
4511                        var hookData = CSS.Hooks.registered[fullHookName];
4512                        if (hookData) {
4513                            var rootPropertyValueParts, rootPropertyValueUpdated, hookRoot = hookData[0],
4514                                hookPosition = hookData[1];
4515                            return rootPropertyValue = CSS.Hooks.cleanRootPropertyValue(hookRoot, rootPropertyValue), rootPropertyValueParts = rootPropertyValue.toString().match(CSS.RegEx.valueSplit), rootPropertyValueParts[hookPosition] = hookValue, rootPropertyValueUpdated = rootPropertyValueParts.join(" ")
4516                        }
4517                        return rootPropertyValue
4518                    }
4519                },
4520                Normalizations: {
4521                    registered: {
4522                        clip: function(type, element, propertyValue) {
4523                            switch (type) {
4524                                case "name":
4525                                    return "clip";
4526                                case "extract":
4527                                    var extracted;
4528                                    return CSS.RegEx.wrappedValueAlreadyExtracted.test(propertyValue) ? extracted = propertyValue : (extracted = propertyValue.toString().match(CSS.RegEx.valueUnwrap), extracted = extracted ? extracted[1].replace(/,(\s+)?/g, " ") : propertyValue), extracted;
4529                                case "inject":
4530                                    return "rect(" + propertyValue + ")"
4531                            }
4532                        },
4533                        blur: function(type, element, propertyValue) {
4534                            switch (type) {
4535                                case "name":
4536                                    return Velocity.State.isFirefox ? "filter" : "-webkit-filter";
4537                                case "extract":
4538                                    var extracted = parseFloat(propertyValue);
4539                                    if (!extracted && 0 !== extracted) {
4540                                        var blurComponent = propertyValue.toString().match(/blur\(([0-9]+[A-z]+)\)/i);
4541                                        extracted = blurComponent ? blurComponent[1] : 0
4542                                    }
4543                                    return extracted;
4544                                case "inject":
4545                                    return parseFloat(propertyValue) ? "blur(" + propertyValue + ")" : "none"
4546                            }
4547                        },
4548                        opacity: function(type, element, propertyValue) {
4549                            if (IE <= 8) switch (type) {
4550                                case "name":
4551                                    return "filter";
4552                                case "extract":
4553                                    var extracted = propertyValue.toString().match(/alpha\(opacity=(.*)\)/i);
4554                                    return propertyValue = extracted ? extracted[1] / 100 : 1;
4555                                case "inject":
4556                                    return element.style.zoom = 1, parseFloat(propertyValue) >= 1 ? "" : "alpha(opacity=" + parseInt(100 * parseFloat(propertyValue), 10) + ")"
4557                            } else switch (type) {
4558                                case "name":
4559                                    return "opacity";
4560                                case "extract":
4561                                    return propertyValue;
4562                                case "inject":
4563                                    return propertyValue
4564                            }
4565                        }
4566                    },
4567                    register: function() {
4568                        IE <= 9 || Velocity.State.isGingerbread || (CSS.Lists.transformsBase = CSS.Lists.transformsBase.concat(CSS.Lists.transforms3D));
4569                        for (var i = 0; i < CSS.Lists.transformsBase.length; i++) ! function() {
4570                            var transformName = CSS.Lists.transformsBase[i];
4571                            CSS.Normalizations.registered[transformName] = function(type, element, propertyValue) {
4572                                switch (type) {
4573                                    case "name":
4574                                        return "transform";
4575                                    case "extract":
4576                                        return Data(element) === undefined || Data(element).transformCache[transformName] === undefined ? /^scale/i.test(transformName) ? 1 : 0 : Data(element).transformCache[transformName].replace(/[()]/g, "");
4577                                    case "inject":
4578                                        var invalid = !1;
4579                                        switch (transformName.substr(0, transformName.length - 1)) {
4580                                            case "translate":
4581                                                invalid = !/(%|px|em|rem|vw|vh|\d)$/i.test(propertyValue);
4582                                                break;
4583                                            case "scal":
4584                                            case "scale":
4585                                                Velocity.State.isAndroid && Data(element).transformCache[transformName] === undefined && propertyValue < 1 && (propertyValue = 1), invalid = !/(\d)$/i.test(propertyValue);
4586                                                break;
4587                                            case "skew":
4588                                                invalid = !/(deg|\d)$/i.test(propertyValue);
4589                                                break;
4590                                            case "rotate":
4591                                                invalid = !/(deg|\d)$/i.test(propertyValue)
4592                                        }
4593                                        return invalid || (Data(element).transformCache[transformName] = "(" + propertyValue + ")"), Data(element).transformCache[transformName]
4594                                }
4595                            }
4596                        }();
4597                        for (var i = 0; i < CSS.Lists.colors.length; i++) ! function() {
4598                            var colorName = CSS.Lists.colors[i];
4599                            CSS.Normalizations.registered[colorName] = function(type, element, propertyValue) {
4600                                switch (type) {
4601                                    case "name":
4602                                        return colorName;
4603                                    case "extract":
4604                                        var extracted;
4605                                        if (CSS.RegEx.wrappedValueAlreadyExtracted.test(propertyValue)) extracted = propertyValue;
4606                                        else { var converted, colorNames = { black: "rgb(0, 0, 0)", blue: "rgb(0, 0, 255)", gray: "rgb(128, 128, 128)", green: "rgb(0, 128, 0)", red: "rgb(255, 0, 0)", white: "rgb(255, 255, 255)" }; /^[A-z]+$/i.test(propertyValue) ? converted = colorNames[propertyValue] !== undefined ? colorNames[propertyValue] : colorNames.black : CSS.RegEx.isHex.test(propertyValue) ? converted = "rgb(" + CSS.Values.hexToRgb(propertyValue).join(" ") + ")" : /^rgba?\(/i.test(propertyValue) || (converted = colorNames.black), extracted = (converted || propertyValue).toString().match(CSS.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g, " ") }
4607                                        return IE <= 8 || 3 !== extracted.split(" ").length || (extracted += " 1"), extracted;
4608                                    case "inject":
4609                                        return IE <= 8 ? 4 === propertyValue.split(" ").length && (propertyValue = propertyValue.split(/\s+/).slice(0, 3).join(" ")) : 3 === propertyValue.split(" ").length && (propertyValue += " 1"), (IE <= 8 ? "rgb" : "rgba") + "(" + propertyValue.replace(/\s+/g, ",").replace(/\.(\d)+(?=,)/g, "") + ")"
4610                                }
4611                            }
4612                        }()
4613                    }
4614                },
4615                Names: { camelCase: function(property) { return property.replace(/-(\w)/g, function(match, subMatch) { return subMatch.toUpperCase() }) }, SVGAttribute: function(property) { var SVGAttributes = "width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2"; return (IE || Velocity.State.isAndroid && !Velocity.State.isChrome) && (SVGAttributes += "|transform"), new RegExp("^(" + SVGAttributes + ")$", "i").test(property) }, prefixCheck: function(property) { if (Velocity.State.prefixMatches[property]) return [Velocity.State.prefixMatches[property], !0]; for (var vendors = ["", "Webkit", "Moz", "ms", "O"], i = 0, vendorsLength = vendors.length; i < vendorsLength; i++) { var propertyPrefixed; if (propertyPrefixed = 0 === i ? property : vendors[i] + property.replace(/^\w/, function(match) { return match.toUpperCase() }), Type.isString(Velocity.State.prefixElement.style[propertyPrefixed])) return Velocity.State.prefixMatches[property] = propertyPrefixed, [propertyPrefixed, !0] } return [property, !1] } },
4616                Values: {
4617                    hexToRgb: function(hex) {
4618                        var rgbParts, shortformRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i,
4619                            longformRegex = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;
4620                        return hex = hex.replace(shortformRegex, function(m, r, g, b) { return r + r + g + g + b + b }), rgbParts = longformRegex.exec(hex), rgbParts ? [parseInt(rgbParts[1], 16), parseInt(rgbParts[2], 16), parseInt(rgbParts[3], 16)] : [0, 0, 0]
4621                    },
4622                    isCSSNullValue: function(value) { return 0 == value || /^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(value) },
4623                    getUnitType: function(property) { return /^(rotate|skew)/i.test(property) ? "deg" : /(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(property) ? "" : "px" },
4624                    getDisplayType: function(element) { var tagName = element && element.tagName.toString().toLowerCase(); return /^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(tagName) ? "inline" : /^(li)$/i.test(tagName) ? "list-item" : /^(tr)$/i.test(tagName) ? "table-row" : /^(table)$/i.test(tagName) ? "table" : /^(tbody)$/i.test(tagName) ? "table-row-group" : "block" },
4625                    addClass: function(element, className) { element.classList ? element.classList.add(className) : element.className += (element.className.length ? " " : "") + className },
4626                    removeClass: function(element, className) { element.classList ? element.classList.remove(className) : element.className = element.className.toString().replace(new RegExp("(^|\\s)" + className.split(" ").join("|") + "(\\s|$)", "gi"), " ") }
4627                },
4628                getPropertyValue: function(element, property, rootPropertyValue, forceStyleLookup) {
4629                    function computePropertyValue(element, property) {
4630                        function revertDisplay() { toggleDisplay && CSS.setPropertyValue(element, "display", "none") }
4631                        var computedValue = 0;
4632                        if (IE <= 8) computedValue = $.css(element, property);
4633                        else {
4634                            var toggleDisplay = !1;
4635                            if (/^(width|height)$/.test(property) && 0 === CSS.getPropertyValue(element, "display") && (toggleDisplay = !0, CSS.setPropertyValue(element, "display", CSS.Values.getDisplayType(element))), !forceStyleLookup) { if ("height" === property && "border-box" !== CSS.getPropertyValue(element, "boxSizing").toString().toLowerCase()) { var contentBoxHeight = element.offsetHeight - (parseFloat(CSS.getPropertyValue(element, "borderTopWidth")) || 0) - (parseFloat(CSS.getPropertyValue(element, "borderBottomWidth")) || 0) - (parseFloat(CSS.getPropertyValue(element, "paddingTop")) || 0) - (parseFloat(CSS.getPropertyValue(element, "paddingBottom")) || 0); return revertDisplay(), contentBoxHeight } if ("width" === property && "border-box" !== CSS.getPropertyValue(element, "boxSizing").toString().toLowerCase()) { var contentBoxWidth = element.offsetWidth - (parseFloat(CSS.getPropertyValue(element, "borderLeftWidth")) || 0) - (parseFloat(CSS.getPropertyValue(element, "borderRightWidth")) || 0) - (parseFloat(CSS.getPropertyValue(element, "paddingLeft")) || 0) - (parseFloat(CSS.getPropertyValue(element, "paddingRight")) || 0); return revertDisplay(), contentBoxWidth } }
4636                            var computedStyle;
4637                            computedStyle = Data(element) === undefined ? window.getComputedStyle(element, null) : Data(element).computedStyle ? Data(element).computedStyle : Data(element).computedStyle = window.getComputedStyle(element, null), "borderColor" === property && (property = "borderTopColor"), computedValue = 9 === IE && "filter" === property ? computedStyle.getPropertyValue(property) : computedStyle[property], "" !== computedValue && null !== computedValue || (computedValue = element.style[property]), revertDisplay()
4638                        }
4639                        if ("auto" === computedValue && /^(top|right|bottom|left)$/i.test(property)) {
4640                            var position = computePropertyValue(element, "position");
4641                            ("fixed" === position || "absolute" === position && /top|left/i.test(property)) && (computedValue = $(element).position()[property] + "px")
4642                        }
4643                        return computedValue
4644                    }
4645                    var propertyValue;
4646                    if (CSS.Hooks.registered[property]) {
4647                        var hook = property,
4648                            hookRoot = CSS.Hooks.getRoot(hook);
4649                        rootPropertyValue === undefined && (rootPropertyValue = CSS.getPropertyValue(element, CSS.Names.prefixCheck(hookRoot)[0])), CSS.Normalizations.registered[hookRoot] && (rootPropertyValue = CSS.Normalizations.registered[hookRoot]("extract", element, rootPropertyValue)), propertyValue = CSS.Hooks.extractValue(hook, rootPropertyValue)
4650                    } else if (CSS.Normalizations.registered[property]) {
4651                        var normalizedPropertyName, normalizedPropertyValue;
4652                        normalizedPropertyName = CSS.Normalizations.registered[property]("name", element), "transform" !== normalizedPropertyName && (normalizedPropertyValue = computePropertyValue(element, CSS.Names.prefixCheck(normalizedPropertyName)[0]), CSS.Values.isCSSNullValue(normalizedPropertyValue) && CSS.Hooks.templates[property] && (normalizedPropertyValue = CSS.Hooks.templates[property][1])), propertyValue = CSS.Normalizations.registered[property]("extract", element, normalizedPropertyValue)
4653                    }
4654                    if (!/^[\d-]/.test(propertyValue))
4655                        if (Data(element) && Data(element).isSVG && CSS.Names.SVGAttribute(property))
4656                            if (/^(height|width)$/i.test(property)) try { propertyValue = element.getBBox()[property] } catch (error) { propertyValue = 0 } else propertyValue = element.getAttribute(property);
4657                            else propertyValue = computePropertyValue(element, CSS.Names.prefixCheck(property)[0]);
4658                    return CSS.Values.isCSSNullValue(propertyValue) && (propertyValue = 0), Velocity.debug >= 2 && console.log("Get " + property + ": " + propertyValue), propertyValue
4659                },
4660                setPropertyValue: function(element, property, propertyValue, rootPropertyValue, scrollData) {
4661                    var propertyName = property;
4662                    if ("scroll" === property) scrollData.container ? scrollData.container["scroll" + scrollData.direction] = propertyValue : "Left" === scrollData.direction ? window.scrollTo(propertyValue, scrollData.alternateValue) : window.scrollTo(scrollData.alternateValue, propertyValue);
4663                    else if (CSS.Normalizations.registered[property] && "transform" === CSS.Normalizations.registered[property]("name", element)) CSS.Normalizations.registered[property]("inject", element, propertyValue), propertyName = "transform", propertyValue = Data(element).transformCache[property];
4664                    else {
4665                        if (CSS.Hooks.registered[property]) {
4666                            var hookName = property,
4667                                hookRoot = CSS.Hooks.getRoot(property);
4668                            rootPropertyValue = rootPropertyValue || CSS.getPropertyValue(element, hookRoot), propertyValue = CSS.Hooks.injectValue(hookName, propertyValue, rootPropertyValue), property = hookRoot
4669                        }
4670                        if (CSS.Normalizations.registered[property] && (propertyValue = CSS.Normalizations.registered[property]("inject", element, propertyValue), property = CSS.Normalizations.registered[property]("name", element)), propertyName = CSS.Names.prefixCheck(property)[0], IE <= 8) try { element.style[propertyName] = propertyValue } catch (error) { Velocity.debug && console.log("Browser does not support [" + propertyValue + "] for [" + propertyName + "]") } else Data(element) && Data(element).isSVG && CSS.Names.SVGAttribute(property) ? element.setAttribute(property, propertyValue) : element.style[propertyName] = propertyValue;
4671                        Velocity.debug >= 2 && console.log("Set " + property + " (" + propertyName + "): " + propertyValue)
4672                    }
4673                    return [propertyName, propertyValue]
4674                },
4675                flushTransformCache: function(element) {
4676                    function getTransformFloat(transformProperty) { return parseFloat(CSS.getPropertyValue(element, transformProperty)) }
4677                    var transformString = "";
4678                    if ((IE || Velocity.State.isAndroid && !Velocity.State.isChrome) && Data(element).isSVG) {
4679                        var SVGTransforms = { translate: [getTransformFloat("translateX"), getTransformFloat("translateY")], skewX: [getTransformFloat("skewX")], skewY: [getTransformFloat("skewY")], scale: 1 !== getTransformFloat("scale") ? [getTransformFloat("scale"), getTransformFloat("scale")] : [getTransformFloat("scaleX"), getTransformFloat("scaleY")], rotate: [getTransformFloat("rotateZ"), 0, 0] };
4680                        $.each(Data(element).transformCache, function(transformName) { /^translate/i.test(transformName) ? transformName = "translate" : /^scale/i.test(transformName) ? transformName = "scale" : /^rotate/i.test(transformName) && (transformName = "rotate"), SVGTransforms[transformName] && (transformString += transformName + "(" + SVGTransforms[transformName].join(" ") + ") ", delete SVGTransforms[transformName]) })
4681                    } else {
4682                        var transformValue, perspective;
4683                        $.each(Data(element).transformCache, function(transformName) { return transformValue = Data(element).transformCache[transformName], "transformPerspective" === transformName ? (perspective = transformValue, !0) : (9 === IE && "rotateZ" === transformName && (transformName = "rotate"), void(transformString += transformName + transformValue + " ")) }), perspective && (transformString = "perspective" + perspective + " " + transformString)
4684                    }
4685                    CSS.setPropertyValue(element, "transform", transformString)
4686                }
4687            };
4688            CSS.Hooks.register(), CSS.Normalizations.register(), Velocity.hook = function(elements, arg2, arg3) {
4689                var value = undefined;
4690                return elements = sanitizeElements(elements), $.each(elements, function(i, element) {
4691                    if (Data(element) === undefined && Velocity.init(element), arg3 === undefined) value === undefined && (value = Velocity.CSS.getPropertyValue(element, arg2));
4692                    else { var adjustedSet = Velocity.CSS.setPropertyValue(element, arg2, arg3); "transform" === adjustedSet[0] && Velocity.CSS.flushTransformCache(element), value = adjustedSet }
4693                }), value
4694            };
4695            var animate = function() {
4696                function getChain() { return isUtility ? promiseData.promise || null : elementsWrapped }
4697
4698                function processElement() {
4699                    function buildQueue(next) {
4700                        function parsePropertyValue(valueData, skipResolvingEasing) {
4701                            var endValue = undefined,
4702                                easing = undefined,
4703                                startValue = undefined;
4704                            return Type.isArray(valueData) ? (endValue = valueData[0], !Type.isArray(valueData[1]) && /^[\d-]/.test(valueData[1]) || Type.isFunction(valueData[1]) || CSS.RegEx.isHex.test(valueData[1]) ? startValue = valueData[1] : (Type.isString(valueData[1]) && !CSS.RegEx.isHex.test(valueData[1]) || Type.isArray(valueData[1])) && (easing = skipResolvingEasing ? valueData[1] : getEasing(valueData[1], opts.duration), valueData[2] !== undefined && (startValue = valueData[2]))) : endValue = valueData, skipResolvingEasing || (easing = easing || opts.easing), Type.isFunction(endValue) && (endValue = endValue.call(element, elementsIndex, elementsLength)), Type.isFunction(startValue) && (startValue = startValue.call(element, elementsIndex, elementsLength)), [endValue || 0, easing, startValue]
4705                        }
4706
4707                        function separateValue(property, value) { var unitType, numericValue; return numericValue = (value || "0").toString().toLowerCase().replace(/[%A-z]+$/, function(match) { return unitType = match, "" }), unitType || (unitType = CSS.Values.getUnitType(property)), [numericValue, unitType] }
4708
4709                        function calculateUnitRatios() {
4710                            var sameRatioIndicators = { myParent: element.parentNode || document.body, position: CSS.getPropertyValue(element, "position"), fontSize: CSS.getPropertyValue(element, "fontSize") },
4711                                samePercentRatio = sameRatioIndicators.position === callUnitConversionData.lastPosition && sameRatioIndicators.myParent === callUnitConversionData.lastParent,
4712                                sameEmRatio = sameRatioIndicators.fontSize === callUnitConversionData.lastFontSize;
4713                            callUnitConversionData.lastParent = sameRatioIndicators.myParent, callUnitConversionData.lastPosition = sameRatioIndicators.position, callUnitConversionData.lastFontSize = sameRatioIndicators.fontSize;
4714                            var measurement = 100,
4715                                unitRatios = {};
4716                            if (sameEmRatio && samePercentRatio) unitRatios.emToPx = callUnitConversionData.lastEmToPx, unitRatios.percentToPxWidth = callUnitConversionData.lastPercentToPxWidth, unitRatios.percentToPxHeight = callUnitConversionData.lastPercentToPxHeight;
4717                            else {
4718                                var dummy = Data(element).isSVG ? document.createElementNS("http://www.w3.org/2000/svg", "rect") : document.createElement("div");
4719                                Velocity.init(dummy), sameRatioIndicators.myParent.appendChild(dummy), $.each(["overflow", "overflowX", "overflowY"], function(i, property) { Velocity.CSS.setPropertyValue(dummy, property, "hidden") }), Velocity.CSS.setPropertyValue(dummy, "position", sameRatioIndicators.position), Velocity.CSS.setPropertyValue(dummy, "fontSize", sameRatioIndicators.fontSize), Velocity.CSS.setPropertyValue(dummy, "boxSizing", "content-box"), $.each(["minWidth", "maxWidth", "width", "minHeight", "maxHeight", "height"], function(i, property) { Velocity.CSS.setPropertyValue(dummy, property, measurement + "%") }), Velocity.CSS.setPropertyValue(dummy, "paddingLeft", measurement + "em"), unitRatios.percentToPxWidth = callUnitConversionData.lastPercentToPxWidth = (parseFloat(CSS.getPropertyValue(dummy, "width", null, !0)) || 1) / measurement, unitRatios.percentToPxHeight = callUnitConversionData.lastPercentToPxHeight = (parseFloat(CSS.getPropertyValue(dummy, "height", null, !0)) || 1) / measurement, unitRatios.emToPx = callUnitConversionData.lastEmToPx = (parseFloat(CSS.getPropertyValue(dummy, "paddingLeft")) || 1) / measurement, sameRatioIndicators.myParent.removeChild(dummy)
4720                            }
4721                            return null === callUnitConversionData.remToPx && (callUnitConversionData.remToPx = parseFloat(CSS.getPropertyValue(document.body, "fontSize")) || 16), null === callUnitConversionData.vwToPx && (callUnitConversionData.vwToPx = parseFloat(window.innerWidth) / 100, callUnitConversionData.vhToPx = parseFloat(window.innerHeight) / 100), unitRatios.remToPx = callUnitConversionData.remToPx, unitRatios.vwToPx = callUnitConversionData.vwToPx, unitRatios.vhToPx = callUnitConversionData.vhToPx, Velocity.debug >= 1 && console.log("Unit ratios: " + JSON.stringify(unitRatios), element), unitRatios
4722                        }
4723                        if (opts.begin && 0 === elementsIndex) try { opts.begin.call(elements, elements) } catch (error) { setTimeout(function() { throw error }, 1) }
4724                        if ("scroll" === action) {
4725                            var scrollPositionCurrent, scrollPositionCurrentAlternate, scrollPositionEnd, scrollDirection = /^x$/i.test(opts.axis) ? "Left" : "Top",
4726                                scrollOffset = parseFloat(opts.offset) || 0;
4727                            opts.container ? Type.isWrapped(opts.container) || Type.isNode(opts.container) ? (opts.container = opts.container[0] || opts.container, scrollPositionCurrent = opts.container["scroll" + scrollDirection], scrollPositionEnd = scrollPositionCurrent + $(element).position()[scrollDirection.toLowerCase()] + scrollOffset) : opts.container = null : (scrollPositionCurrent = Velocity.State.scrollAnchor[Velocity.State["scrollProperty" + scrollDirection]], scrollPositionCurrentAlternate = Velocity.State.scrollAnchor[Velocity.State["scrollProperty" + ("Left" === scrollDirection ? "Top" : "Left")]], scrollPositionEnd = $(element).offset()[scrollDirection.toLowerCase()] + scrollOffset), tweensContainer = { scroll: { rootPropertyValue: !1, startValue: scrollPositionCurrent, currentValue: scrollPositionCurrent, endValue: scrollPositionEnd, unitType: "", easing: opts.easing, scrollData: { container: opts.container, direction: scrollDirection, alternateValue: scrollPositionCurrentAlternate } }, element: element }, Velocity.debug && console.log("tweensContainer (scroll): ", tweensContainer.scroll, element)
4728                        } else if ("reverse" === action) {
4729                            if (!Data(element).tweensContainer) return void $.dequeue(element, opts.queue);
4730                            "none" === Data(element).opts.display && (Data(element).opts.display = "auto"), "hidden" === Data(element).opts.visibility && (Data(element).opts.visibility = "visible"), Data(element).opts.loop = !1, Data(element).opts.begin = null, Data(element).opts.complete = null, options.easing || delete opts.easing, options.duration || delete opts.duration, opts = $.extend({}, Data(element).opts, opts);
4731                            var lastTweensContainer = $.extend(!0, {}, Data(element).tweensContainer);
4732                            for (var lastTween in lastTweensContainer)
4733                                if ("element" !== lastTween) {
4734                                    var lastStartValue = lastTweensContainer[lastTween].startValue;
4735                                    lastTweensContainer[lastTween].startValue = lastTweensContainer[lastTween].currentValue = lastTweensContainer[lastTween].endValue, lastTweensContainer[lastTween].endValue = lastStartValue, Type.isEmptyObject(options) || (lastTweensContainer[lastTween].easing = opts.easing), Velocity.debug && console.log("reverse tweensContainer (" + lastTween + "): " + JSON.stringify(lastTweensContainer[lastTween]), element)
4736                                }
4737                            tweensContainer = lastTweensContainer
4738                        } else if ("start" === action) {
4739                            var lastTweensContainer;
4740                            Data(element).tweensContainer && Data(element).isAnimating === !0 && (lastTweensContainer = Data(element).tweensContainer), $.each(propertiesMap, function(property, value) {
4741                                if (RegExp("^" + CSS.Lists.colors.join("$|^") + "$").test(property)) {
4742                                    var valueData = parsePropertyValue(value, !0),
4743                                        endValue = valueData[0],
4744                                        easing = valueData[1],
4745                                        startValue = valueData[2];
4746                                    if (CSS.RegEx.isHex.test(endValue)) {
4747                                        for (var colorComponents = ["Red", "Green", "Blue"], endValueRGB = CSS.Values.hexToRgb(endValue), startValueRGB = startValue ? CSS.Values.hexToRgb(startValue) : undefined, i = 0; i < colorComponents.length; i++) {
4748                                            var dataArray = [endValueRGB[i]];
4749                                            easing && dataArray.push(easing), startValueRGB !== undefined && dataArray.push(startValueRGB[i]), propertiesMap[property + colorComponents[i]] = dataArray
4750                                        }
4751                                        delete propertiesMap[property]
4752                                    }
4753                                }
4754                            });
4755                            for (var property in propertiesMap) {
4756                                var valueData = parsePropertyValue(propertiesMap[property]),
4757                                    endValue = valueData[0],
4758                                    easing = valueData[1],
4759                                    startValue = valueData[2];
4760                                property = CSS.Names.camelCase(property);
4761                                var rootProperty = CSS.Hooks.getRoot(property),
4762                                    rootPropertyValue = !1;
4763                                if (Data(element).isSVG || "tween" === rootProperty || CSS.Names.prefixCheck(rootProperty)[1] !== !1 || CSS.Normalizations.registered[rootProperty] !== undefined) {
4764                                    (opts.display !== undefined && null !== opts.display && "none" !== opts.display || opts.visibility !== undefined && "hidden" !== opts.visibility) && /opacity|filter/.test(property) && !startValue && 0 !== endValue && (startValue = 0), opts._cacheValues && lastTweensContainer && lastTweensContainer[property] ? (startValue === undefined && (startValue = lastTweensContainer[property].endValue + lastTweensContainer[property].unitType), rootPropertyValue = Data(element).rootPropertyValueCache[rootProperty]) : CSS.Hooks.registered[property] ? startValue === undefined ? (rootPropertyValue = CSS.getPropertyValue(element, rootProperty), startValue = CSS.getPropertyValue(element, property, rootPropertyValue)) : rootPropertyValue = CSS.Hooks.templates[rootProperty][1] : startValue === undefined && (startValue = CSS.getPropertyValue(element, property));
4765                                    var separatedValue, endValueUnitType, startValueUnitType, operator = !1;
4766                                    if (separatedValue = separateValue(property, startValue), startValue = separatedValue[0], startValueUnitType = separatedValue[1], separatedValue = separateValue(property, endValue), endValue = separatedValue[0].replace(/^([+-\/*])=/, function(match, subMatch) { return operator = subMatch, "" }), endValueUnitType = separatedValue[1], startValue = parseFloat(startValue) || 0, endValue = parseFloat(endValue) || 0, "%" === endValueUnitType && (/^(fontSize|lineHeight)$/.test(property) ? (endValue /= 100, endValueUnitType = "em") : /^scale/.test(property) ? (endValue /= 100, endValueUnitType = "") : /(Red|Green|Blue)$/i.test(property) && (endValue = endValue / 100 * 255, endValueUnitType = "")), /[\/*]/.test(operator)) endValueUnitType = startValueUnitType;
4767                                    else if (startValueUnitType !== endValueUnitType && 0 !== startValue)
4768                                        if (0 === endValue) endValueUnitType = startValueUnitType;
4769                                        else {
4770                                            elementUnitConversionData = elementUnitConversionData || calculateUnitRatios();
4771                                            var axis = /margin|padding|left|right|width|text|word|letter/i.test(property) || /X$/.test(property) || "x" === property ? "x" : "y";
4772                                            switch (startValueUnitType) {
4773                                                case "%":
4774                                                    startValue *= "x" === axis ? elementUnitConversionData.percentToPxWidth : elementUnitConversionData.percentToPxHeight;
4775                                                    break;
4776                                                case "px":
4777                                                    break;
4778                                                default:
4779                                                    startValue *= elementUnitConversionData[startValueUnitType + "ToPx"]
4780                                            }
4781                                            switch (endValueUnitType) {
4782                                                case "%":
4783                                                    startValue *= 1 / ("x" === axis ? elementUnitConversionData.percentToPxWidth : elementUnitConversionData.percentToPxHeight);
4784                                                    break;
4785                                                case "px":
4786                                                    break;
4787                                                default:
4788                                                    startValue *= 1 / elementUnitConversionData[endValueUnitType + "ToPx"]
4789                                            }
4790                                        }
4791                                    switch (operator) {
4792                                        case "+":
4793                                            endValue = startValue + endValue;
4794                                            break;
4795                                        case "-":
4796                                            endValue = startValue - endValue;
4797                                            break;
4798                                        case "*":
4799                                            endValue *= startValue;
4800                                            break;
4801                                        case "/":
4802                                            endValue = startValue / endValue
4803                                    }
4804                                    tweensContainer[property] = { rootPropertyValue: rootPropertyValue, startValue: startValue, currentValue: startValue, endValue: endValue, unitType: endValueUnitType, easing: easing }, Velocity.debug && console.log("tweensContainer (" + property + "): " + JSON.stringify(tweensContainer[property]), element)
4805                                } else Velocity.debug && console.log("Skipping [" + rootProperty + "] due to a lack of browser support.")
4806                            }
4807                            tweensContainer.element = element
4808                        }
4809                        tweensContainer.element && (CSS.Values.addClass(element, "velocity-animating"), call.push(tweensContainer), "" === opts.queue && (Data(element).tweensContainer = tweensContainer, Data(element).opts = opts), Data(element).isAnimating = !0, elementsIndex === elementsLength - 1 ? (Velocity.State.calls.push([call, elements, opts, null, promiseData.resolver]), Velocity.State.isTicking === !1 && (Velocity.State.isTicking = !0, tick())) : elementsIndex++)
4810                    }
4811                    var elementUnitConversionData, element = this,
4812                        opts = $.extend({}, Velocity.defaults, options),
4813                        tweensContainer = {};
4814                    switch (Data(element) === undefined && Velocity.init(element), parseFloat(opts.delay) && opts.queue !== !1 && $.queue(element, opts.queue, function(next) { Velocity.velocityQueueEntryFlag = !0, Data(element).delayTimer = { setTimeout: setTimeout(next, parseFloat(opts.delay)), next: next } }), opts.duration.toString().toLowerCase()) {
4815                        case "fast":
4816                            opts.duration = 200;
4817                            break;
4818                        case "normal":
4819                            opts.duration = DURATION_DEFAULT;
4820                            break;
4821                        case "slow":
4822                            opts.duration = 600;
4823                            break;
4824                        default:
4825                            opts.duration = parseFloat(opts.duration) || 1
4826                    }
4827                    Velocity.mock !== !1 && (Velocity.mock === !0 ? opts.duration = opts.delay = 1 : (opts.duration *= parseFloat(Velocity.mock) || 1, opts.delay *= parseFloat(Velocity.mock) || 1)), opts.easing = getEasing(opts.easing, opts.duration), opts.begin && !Type.isFunction(opts.begin) && (opts.begin = null), opts.progress && !Type.isFunction(opts.progress) && (opts.progress = null), opts.complete && !Type.isFunction(opts.complete) && (opts.complete = null), opts.display !== undefined && null !== opts.display && (opts.display = opts.display.toString().toLowerCase(), "auto" === opts.display && (opts.display = Velocity.CSS.Values.getDisplayType(element))), opts.visibility !== undefined && null !== opts.visibility && (opts.visibility = opts.visibility.toString().toLowerCase()), opts.mobileHA = opts.mobileHA && Velocity.State.isMobile && !Velocity.State.isGingerbread, opts.queue === !1 ? opts.delay ? setTimeout(buildQueue, opts.delay) : buildQueue() : $.queue(element, opts.queue, function(next, clearQueue) { return clearQueue === !0 ? (promiseData.promise && promiseData.resolver(elements), !0) : (Velocity.velocityQueueEntryFlag = !0, void buildQueue(next)) }), "" !== opts.queue && "fx" !== opts.queue || "inprogress" === $.queue(element)[0] || $.dequeue(element)
4828                }
4829                var isUtility, elementsWrapped, argumentIndex, elements, propertiesMap, options, syntacticSugar = arguments[0] && (arguments[0].p || $.isPlainObject(arguments[0].properties) && !arguments[0].properties.names || Type.isString(arguments[0].properties));
4830                if (Type.isWrapped(this) ? (isUtility = !1, argumentIndex = 0, elements = this, elementsWrapped = this) : (isUtility = !0, argumentIndex = 1, elements = syntacticSugar ? arguments[0].elements || arguments[0].e : arguments[0]), elements = sanitizeElements(elements)) {
4831                    syntacticSugar ? (propertiesMap = arguments[0].properties || arguments[0].p, options = arguments[0].options || arguments[0].o) : (propertiesMap = arguments[argumentIndex], options = arguments[argumentIndex + 1]);
4832                    var elementsLength = elements.length,
4833                        elementsIndex = 0;
4834                    if (!/^(stop|finish|finishAll)$/i.test(propertiesMap) && !$.isPlainObject(options)) {
4835                        var startingArgumentPosition = argumentIndex + 1;
4836                        options = {};
4837                        for (var i = startingArgumentPosition; i < arguments.length; i++) Type.isArray(arguments[i]) || !/^(fast|normal|slow)$/i.test(arguments[i]) && !/^\d/.test(arguments[i]) ? Type.isString(arguments[i]) || Type.isArray(arguments[i]) ? options.easing = arguments[i] : Type.isFunction(arguments[i]) && (options.complete = arguments[i]) : options.duration = arguments[i]
4838                    }
4839                    var promiseData = { promise: null, resolver: null, rejecter: null };
4840                    isUtility && Velocity.Promise && (promiseData.promise = new Velocity.Promise(function(resolve, reject) { promiseData.resolver = resolve, promiseData.rejecter = reject }));
4841                    var action;
4842                    switch (propertiesMap) {
4843                        case "scroll":
4844                            action = "scroll";
4845                            break;
4846                        case "reverse":
4847                            action = "reverse";
4848                            break;
4849                        case "finish":
4850                        case "finishAll":
4851                        case "stop":
4852                            $.each(elements, function(i, element) { Data(element) && Data(element).delayTimer && (clearTimeout(Data(element).delayTimer.setTimeout), Data(element).delayTimer.next && Data(element).delayTimer.next(), delete Data(element).delayTimer), "finishAll" !== propertiesMap || options !== !0 && !Type.isString(options) || ($.each($.queue(element, Type.isString(options) ? options : ""), function(_, item) { Type.isFunction(item) && item() }), $.queue(element, Type.isString(options) ? options : "", [])) });
4853                            var callsToStop = [];
4854                            return $.each(Velocity.State.calls, function(i, activeCall) { activeCall && $.each(activeCall[1], function(k, activeElement) { var queueName = options === undefined ? "" : options; return queueName !== !0 && activeCall[2].queue !== queueName && (options !== undefined || activeCall[2].queue !== !1) || void $.each(elements, function(l, element) { element === activeElement && ((options === !0 || Type.isString(options)) && ($.each($.queue(element, Type.isString(options) ? options : ""), function(_, item) { Type.isFunction(item) && item(null, !0) }), $.queue(element, Type.isString(options) ? options : "", [])), "stop" === propertiesMap ? (Data(element) && Data(element).tweensContainer && queueName !== !1 && $.each(Data(element).tweensContainer, function(m, activeTween) { activeTween.endValue = activeTween.currentValue }), callsToStop.push(i)) : "finish" !== propertiesMap && "finishAll" !== propertiesMap || (activeCall[2].duration = 1)) }) }) }), "stop" === propertiesMap && ($.each(callsToStop, function(i, j) { completeCall(j, !0) }), promiseData.promise && promiseData.resolver(elements)), getChain();
4855                        default:
4856                            if (!$.isPlainObject(propertiesMap) || Type.isEmptyObject(propertiesMap)) {
4857                                if (Type.isString(propertiesMap) && Velocity.Redirects[propertiesMap]) {
4858                                    var opts = $.extend({}, options),
4859                                        durationOriginal = opts.duration,
4860                                        delayOriginal = opts.delay || 0;
4861                                    return opts.backwards === !0 && (elements = $.extend(!0, [], elements).reverse()), $.each(elements, function(elementIndex, element) { parseFloat(opts.stagger) ? opts.delay = delayOriginal + parseFloat(opts.stagger) * elementIndex : Type.isFunction(opts.stagger) && (opts.delay = delayOriginal + opts.stagger.call(element, elementIndex, elementsLength)), opts.drag && (opts.duration = parseFloat(durationOriginal) || (/^(callout|transition)/.test(propertiesMap) ? 1e3 : DURATION_DEFAULT), opts.duration = Math.max(opts.duration * (opts.backwards ? 1 - elementIndex / elementsLength : (elementIndex + 1) / elementsLength), .75 * opts.duration, 200)), Velocity.Redirects[propertiesMap].call(element, element, opts || {}, elementIndex, elementsLength, elements, promiseData.promise ? promiseData : undefined) }), getChain()
4862                                }
4863                                var abortError = "Velocity: First argument (" + propertiesMap + ") was not a property map, a known action, or a registered redirect. Aborting.";
4864                                return promiseData.promise ? promiseData.rejecter(new Error(abortError)) : console.log(abortError), getChain()
4865                            }
4866                            action = "start"
4867                    }
4868                    var callUnitConversionData = { lastParent: null, lastPosition: null, lastFontSize: null, lastPercentToPxWidth: null, lastPercentToPxHeight: null, lastEmToPx: null, remToPx: null, vwToPx: null, vhToPx: null },
4869                        call = [];
4870                    $.each(elements, function(i, element) { Type.isNode(element) && processElement.call(element) });
4871                    var reverseCallsCount, opts = $.extend({}, Velocity.defaults, options);
4872                    if (opts.loop = parseInt(opts.loop), reverseCallsCount = 2 * opts.loop - 1, opts.loop)
4873                        for (var x = 0; x < reverseCallsCount; x++) {
4874                            var reverseOptions = { delay: opts.delay, progress: opts.progress };
4875                            x === reverseCallsCount - 1 && (reverseOptions.display = opts.display, reverseOptions.visibility = opts.visibility, reverseOptions.complete = opts.complete), animate(elements, "reverse", reverseOptions)
4876                        }
4877                    return getChain()
4878                }
4879            };
4880            Velocity = $.extend(animate, Velocity), Velocity.animate = animate;
4881            var ticker = window.requestAnimationFrame || rAFShim;
4882            return Velocity.State.isMobile || document.hidden === undefined || document.addEventListener("visibilitychange", function() { document.hidden ? (ticker = function(callback) { return setTimeout(function() { callback(!0) }, 16) }, tick()) : ticker = window.requestAnimationFrame || rAFShim }), global.Velocity = Velocity, global !== window && (global.fn.velocity = animate, global.fn.velocity.defaults = Velocity.defaults), $.each(["Down", "Up"], function(i, direction) {
4883                Velocity.Redirects["slide" + direction] = function(element, options, elementsIndex, elementsSize, elements, promiseData) {
4884                    var opts = $.extend({}, options),
4885                        begin = opts.begin,
4886                        complete = opts.complete,
4887                        computedValues = { height: "", marginTop: "", marginBottom: "", paddingTop: "", paddingBottom: "" },
4888                        inlineValues = {};
4889                    opts.display === undefined && (opts.display = "Down" === direction ? "inline" === Velocity.CSS.Values.getDisplayType(element) ? "inline-block" : "block" : "none"), opts.begin = function() {
4890                        begin && begin.call(elements, elements);
4891                        for (var property in computedValues) {
4892                            inlineValues[property] = element.style[property];
4893                            var propertyValue = Velocity.CSS.getPropertyValue(element, property);
4894                            computedValues[property] = "Down" === direction ? [propertyValue, 0] : [0, propertyValue]
4895                        }
4896                        inlineValues.overflow = element.style.overflow, element.style.overflow = "hidden"
4897                    }, opts.complete = function() {
4898                        for (var property in inlineValues) element.style[property] = inlineValues[property];
4899                        complete && complete.call(elements, elements), promiseData && promiseData.resolver(elements)
4900                    }, Velocity(element, computedValues, opts)
4901                }
4902            }), $.each(["In", "Out"], function(i, direction) {
4903                Velocity.Redirects["fade" + direction] = function(element, options, elementsIndex, elementsSize, elements, promiseData) {
4904                    var opts = $.extend({}, options),
4905                        propertiesMap = { opacity: "In" === direction ? 1 : 0 },
4906                        originalComplete = opts.complete;
4907                    elementsIndex !== elementsSize - 1 ? opts.complete = opts.begin = null : opts.complete = function() { originalComplete && originalComplete.call(elements, elements), promiseData && promiseData.resolver(elements) }, opts.display === undefined && (opts.display = "In" === direction ? "auto" : "none"), Velocity(this, propertiesMap, opts)
4908                }
4909            }), Velocity
4910        }(window.jQuery || window.Zepto || window, window, document)
4911    }),
4912    function(factory) { "function" == typeof require && "object" == typeof exports ? module.exports = factory() : "function" == typeof define && define.amd ? define(["velocity"], factory) : factory() }(function() {
4913        return function(global, window, document, undefined) {
4914            function greaterSemver(primary, secondary) {
4915                var versionInts = [];
4916                return !(!primary || !secondary) && ($.each([primary, secondary], function(i, versionObject) {
4917                    var versionIntsComponents = [];
4918                    $.each(versionObject, function(component, value) {
4919                        for (; value.toString().length < 5;) value = "0" + value;
4920                        versionIntsComponents.push(value)
4921                    }), versionInts.push(versionIntsComponents.join(""))
4922                }), parseFloat(versionInts[0]) > parseFloat(versionInts[1]))
4923            }
4924            if (!global.Velocity || !global.Velocity.Utilities) return void(window.console && console.log("Velocity UI Pack: Velocity must be loaded first. Aborting."));
4925            var Velocity = global.Velocity,
4926                $ = Velocity.Utilities,
4927                velocityVersion = Velocity.version,
4928                requiredVersion = { major: 1, minor: 1, patch: 0 };
4929            if (greaterSemver(requiredVersion, velocityVersion)) { var abortError = "Velocity UI Pack: You need to update Velocity (jquery.velocity.js) to a newer version. Visit http://github.com/julianshapiro/velocity."; throw alert(abortError), new Error(abortError) }
4930            Velocity.RegisterEffect = Velocity.RegisterUI = function(effectName, properties) {
4931                function animateParentHeight(elements, direction, totalDuration, stagger) {
4932                    var parentNode, totalHeightDelta = 0;
4933                    $.each(elements.nodeType ? [elements] : elements, function(i, element) { stagger && (totalDuration += i * stagger), parentNode = element.parentNode, $.each(["height", "paddingTop", "paddingBottom", "marginTop", "marginBottom"], function(i, property) { totalHeightDelta += parseFloat(Velocity.CSS.getPropertyValue(element, property)) }) }), Velocity.animate(parentNode, { height: ("In" === direction ? "+" : "-") + "=" + totalHeightDelta }, { queue: !1, easing: "ease-in-out", duration: totalDuration * ("In" === direction ? .6 : 1) })
4934                }
4935                return Velocity.Redirects[effectName] = function(element, redirectOptions, elementsIndex, elementsSize, elements, promiseData) {
4936                    function injectFinalCallbacks() { redirectOptions.display !== undefined && "none" !== redirectOptions.display || !/Out$/.test(effectName) || $.each(elements.nodeType ? [elements] : elements, function(i, element) { Velocity.CSS.setPropertyValue(element, "display", "none") }), redirectOptions.complete && redirectOptions.complete.call(elements, elements), promiseData && promiseData.resolver(elements || element) }
4937                    var finalElement = elementsIndex === elementsSize - 1;
4938                    "function" == typeof properties.defaultDuration ? properties.defaultDuration = properties.defaultDuration.call(elements, elements) : properties.defaultDuration = parseFloat(properties.defaultDuration);
4939                    for (var callIndex = 0; callIndex < properties.calls.length; callIndex++) {
4940                        var call = properties.calls[callIndex],
4941                            propertyMap = call[0],
4942                            redirectDuration = redirectOptions.duration || properties.defaultDuration || 1e3,
4943                            durationPercentage = call[1],
4944                            callOptions = call[2] || {},
4945                            opts = {};
4946                        if (opts.duration = redirectDuration * (durationPercentage || 1), opts.queue = redirectOptions.queue || "", opts.easing = callOptions.easing || "ease", opts.delay 
vendor: 6,427 bytes, lines 4946-5060
4946= parseFloat(callOptions.delay) || 0, opts._cacheValues = callOptions._cacheValues || !0, 0 === callIndex) {
4947                            if (opts.delay += parseFloat(redirectOptions.delay) || 0, 0 === elementsIndex && (opts.begin = function() {
4948                                    redirectOptions.begin && redirectOptions.begin.call(elements, elements);
4949                                    var direction = effectName.match(/(In|Out)$/);
4950                                    direction && "In" === direction[0] && propertyMap.opacity !== undefined && $.each(elements.nodeType ? [elements] : elements, function(i, element) { Velocity.CSS.setPropertyValue(element, "opacity", 0) }), redirectOptions.animateParentHeight && direction && animateParentHeight(elements, direction[0], redirectDuration + opts.delay, redirectOptions.stagger)
4951                                }), null !== redirectOptions.display)
4952                                if (redirectOptions.display !== undefined && "none" !== redirectOptions.display) opts.display = redirectOptions.display;
4953                                else if (/In$/.test(effectName)) {
4954                                var defaultDisplay = Velocity.CSS.Values.getDisplayType(element);
4955                                opts.display = "inline" === defaultDisplay ? "inline-block" : defaultDisplay
4956                            }
4957                            redirectOptions.visibility && "hidden" !== redirectOptions.visibility && (opts.visibility = redirectOptions.visibility)
4958                        }
4959                        callIndex === properties.calls.length - 1 && (opts.complete = function() {
4960                            if (properties.reset) {
4961                                for (var resetProperty in properties.reset) {
4962                                    var resetValue = properties.reset[resetProperty];
4963                                    Velocity.CSS.Hooks.registered[resetProperty] !== undefined || "string" != typeof resetValue && "number" != typeof resetValue || (properties.reset[resetProperty] = [properties.reset[resetProperty], properties.reset[resetProperty]])
4964                                }
4965                                var resetOptions = { duration: 0, queue: !1 };
4966                                finalElement && (resetOptions.complete = injectFinalCallbacks), Velocity.animate(element, properties.reset, resetOptions)
4967                            } else finalElement && injectFinalCallbacks()
4968                        }, "hidden" === redirectOptions.visibility && (opts.visibility = redirectOptions.visibility)), Velocity.animate(element, propertyMap, opts)
4969                    }
4970                }, Velocity
4971            }, Velocity.RegisterEffect.packagedEffects = {
4972                "callout.bounce": {
4973                    defaultDuration: 550,
4974                    calls: [
4975                        [{ translateY: -30 }, .25],
4976                        [{ translateY: 0 }, .125],
4977                        [{ translateY: -15 }, .125],
4978                        [{ translateY: 0 }, .25]
4979                    ]
4980                },
4981                "callout.shake": {
4982                    defaultDuration: 800,
4983                    calls: [
4984                        [{ translateX: -11 }, .125],
4985                        [{ translateX: 11 }, .125],
4986                        [{ translateX: -11 }, .125],
4987                        [{ translateX: 11 }, .125],
4988                        [{ translateX: -11 }, .125],
4989                        [{ translateX: 11 }, .125],
4990                        [{ translateX: -11 }, .125],
4991                        [{ translateX: 0 }, .125]
4992                    ]
4993                },
4994                "callout.flash": {
4995                    defaultDuration: 1100,
4996                    calls: [
4997                        [{ opacity: [0, "easeInOutQuad", 1] }, .25],
4998                        [{ opacity: [1, "easeInOutQuad"] }, .25],
4999                        [{ opacity: [0, "easeInOutQuad"] }, .25],
5000                        [{ opacity: [1, "easeInOutQuad"] }, .25]
5001                    ]
5002                },
5003                "callout.pulse": {
5004                    defaultDuration: 825,
5005                    calls: [
5006                        [{ scaleX: 1.1, scaleY: 1.1 }, .5, { easing: "easeInExpo" }],
5007                        [{ scaleX: 1, scaleY: 1 }, .5]
5008                    ]
5009                },
5010                "callout.swing": {
5011                    defaultDuration: 950,
5012                    calls: [
5013                        [{ rotateZ: 15 }, .2],
5014                        [{ rotateZ: -10 }, .2],
5015                        [{ rotateZ: 5 }, .2],
5016                        [{ rotateZ: -5 }, .2],
5017                        [{ rotateZ: 0 }, .2]
5018                    ]
5019                },
5020                "callout.tada": {
5021                    defaultDuration: 1e3,
5022                    calls: [
5023                        [{ scaleX: .9, scaleY: .9, rotateZ: -3 }, .1],
5024                        [{ scaleX: 1.1, scaleY: 1.1, rotateZ: 3 }, .1],
5025                        [{ scaleX: 1.1, scaleY: 1.1, rotateZ: -3 }, .1],
5026                        ["reverse", .125],
5027                        ["reverse", .125],
5028                        ["reverse", .125],
5029                        ["reverse", .125],
5030                        ["reverse", .125],
5031                        [{ scaleX: 1, scaleY: 1, rotateZ: 0 }, .2]
5032                    ]
5033                },
5034                "transition.fadeIn": {
5035                    defaultDuration: 500,
5036                    calls: [
5037                        [{ opacity: [1, 0] }]
5038                    ]
5039                },
5040                "transition.fadeOut": {
5041                    defaultDuration: 500,
5042                    calls: [
5043                        [{ opacity: [0, 1] }]
5044                    ]
5045                },
5046                "transition.flipXIn": {
5047                    defaultDuration: 700,
5048                    calls: [
5049                        [{ opacity: [1, 0], transformPerspective: [800, 800], rotateY: [0, -55] }]
5050                    ],
5051                    reset: { transformPerspective: 0 }
5052                },
5053                "transition.flipXOut": {
5054                    defaultDuration: 700,
5055                    calls: [
5056                        [{ opacity: [0, 1], transformPerspective: [800, 800], rotateY: 55 }]
5057                    ],
5058                    reset: { transformPerspective: 0, rotateY: 0 }
5059                },
5060                "transition.flipYIn": {
vendor: 4,257 bytes, lines 5061-5142
5061                    defaultDuration: 800,
5062                    calls: [
5063                        [{ opacity: [1, 0], transformPerspective: [800, 800], rotateX: [0, -45] }]
5064                    ],
5065                    reset: { transformPerspective: 0 }
5066                },
5067                "transition.flipYOut": {
5068                    defaultDuration: 800,
5069                    calls: [
5070                        [{ opacity: [0, 1], transformPerspective: [800, 800], rotateX: 25 }]
5071                    ],
5072                    reset: { transformPerspective: 0, rotateX: 0 }
5073                },
5074                "transition.flipBounceXIn": {
5075                    defaultDuration: 900,
5076                    calls: [
5077                        [{ opacity: [.725, 0], transformPerspective: [400, 400], rotateY: [-10, 90] }, .5],
5078                        [{ opacity: .8, rotateY: 10 }, .25],
5079                        [{ opacity: 1, rotateY: 0 }, .25]
5080                    ],
5081                    reset: { transformPerspective: 0 }
5082                },
5083                "transition.flipBounceXOut": {
5084                    defaultDuration: 800,
5085                    calls: [
5086                        [{ opacity: [.9, 1], transformPerspective: [400, 400], rotateY: -10 }, .5],
5087                        [{ opacity: 0, rotateY: 90 }, .5]
5088                    ],
5089                    reset: { transformPerspective: 0, rotateY: 0 }
5090                },
5091                "transition.flipBounceYIn": {
5092                    defaultDuration: 850,
5093                    calls: [
5094                        [{ opacity: [.725, 0], transformPerspective: [400, 400], rotateX: [-10, 90] }, .5],
5095                        [{ opacity: .8, rotateX: 10 }, .25],
5096                        [{ opacity: 1, rotateX: 0 }, .25]
5097                    ],
5098                    reset: { transformPerspective: 0 }
5099                },
5100                "transition.flipBounceYOut": {
5101                    defaultDuration: 800,
5102                    calls: [
5103                        [{ opacity: [.9, 1], transformPerspective: [400, 400], rotateX: -15 }, .5],
5104                        [{ opacity: 0, rotateX: 90 }, .5]
5105                    ],
5106                    reset: { transformPerspective: 0, rotateX: 0 }
5107                },
5108                "transition.swoopIn": {
5109                    defaultDuration: 850,
5110                    calls: [
5111                        [{ opacity: [1, 0], transformOriginX: ["100%", "50%"], transformOriginY: ["100%", "100%"], scaleX: [1, 0], scaleY: [1, 0], translateX: [0, -700], translateZ: 0 }]
5112                    ],
5113                    reset: { transformOriginX: "50%", transformOriginY: "50%" }
5114                },
5115                "transition.swoopOut": {
5116                    defaultDuration: 850,
5117                    calls: [
5118                        [{ opacity: [0, 1], transformOriginX: ["50%", "100%"], transformOriginY: ["100%", "100%"], scaleX: 0, scaleY: 0, translateX: -700, translateZ: 0 }]
5119                    ],
5120                    reset: { transformOriginX: "50%", transformOriginY: "50%", scaleX: 1, scaleY: 1, translateX: 0 }
5121                },
5122                "transition.whirlIn": {
5123                    defaultDuration: 850,
5124                    calls: [
5125                        [{ opacity: [1, 0], transformOriginX: ["50%", "50%"], transformOriginY: ["50%", "50%"], scaleX: [1, 0], scaleY: [1, 0], rotateY: [0, 160] }, 1, { easing: "easeInOutSine" }]
5126                    ]
5127                },
5128                "transition.whirlOut": {
5129                    defaultDuration: 750,
5130                    calls: [
5131                        [{ opacity: [0, "easeInOutQuint", 1], transformOriginX: ["50%", "50%"], transformOriginY: ["50%", "50%"], scaleX: 0, scaleY: 0, rotateY: 160 }, 1, { easing: "swing" }]
5132                    ],
5133                    reset: { scaleX: 1, scaleY: 1, rotateY: 0 }
5134                },
5135                "transition.shrinkIn": {
5136                    defaultDuration: 750,
5137                    calls: [
5138                        [{ opacity: [1, 0], transformOriginX: ["50%", "50%"], transformOriginY: ["50%", "50%"], scaleX: [1, 1.5], scaleY: [1, 1.5], translateZ: 0 }]
5139                    ]
5140                },
5141                "transition.shrinkOut": {
5142                    defaultDuration: 600,
vendor: 4,524 bytes, lines 5143-5241
5143                    calls: [
5144                        [{ opacity: [0, 1], transformOriginX: ["50%", "50%"], transformOriginY: ["50%", "50%"], scaleX: 1.3, scaleY: 1.3, translateZ: 0 }]
5145                    ],
5146                    reset: { scaleX: 1, scaleY: 1 }
5147                },
5148                "transition.expandIn": {
5149                    defaultDuration: 700,
5150                    calls: [
5151                        [{ opacity: [1, 0], transformOriginX: ["50%", "50%"], transformOriginY: ["50%", "50%"], scaleX: [1, .625], scaleY: [1, .625], translateZ: 0 }]
5152                    ]
5153                },
5154                "transition.expandOut": {
5155                    defaultDuration: 700,
5156                    calls: [
5157                        [{ opacity: [0, 1], transformOriginX: ["50%", "50%"], transformOriginY: ["50%", "50%"], scaleX: .5, scaleY: .5, translateZ: 0 }]
5158                    ],
5159                    reset: { scaleX: 1, scaleY: 1 }
5160                },
5161                "transition.bounceIn": {
5162                    defaultDuration: 800,
5163                    calls: [
5164                        [{ opacity: [1, 0], scaleX: [1.05, .3], scaleY: [1.05, .3] }, .4],
5165                        [{ scaleX: .9, scaleY: .9, translateZ: 0 }, .2],
5166                        [{ scaleX: 1, scaleY: 1 }, .5]
5167                    ]
5168                },
5169                "transition.bounceOut": {
5170                    defaultDuration: 800,
5171                    calls: [
5172                        [{ scaleX: .95, scaleY: .95 }, .35],
5173                        [{ scaleX: 1.1, scaleY: 1.1, translateZ: 0 }, .35],
5174                        [{ opacity: [0, 1], scaleX: .3, scaleY: .3 }, .3]
5175                    ],
5176                    reset: { scaleX: 1, scaleY: 1 }
5177                },
5178                "transition.bounceUpIn": {
5179                    defaultDuration: 800,
5180                    calls: [
5181                        [{ opacity: [1, 0], translateY: [-30, 1e3] }, .6, { easing: "easeOutCirc" }],
5182                        [{ translateY: 10 }, .2],
5183                        [{ translateY: 0 }, .2]
5184                    ]
5185                },
5186                "transition.bounceUpOut": {
5187                    defaultDuration: 1e3,
5188                    calls: [
5189                        [{ translateY: 20 }, .2],
5190                        [{ opacity: [0, "easeInCirc", 1], translateY: -1e3 }, .8]
5191                    ],
5192                    reset: { translateY: 0 }
5193                },
5194                "transition.bounceDownIn": {
5195                    defaultDuration: 800,
5196                    calls: [
5197                        [{ opacity: [1, 0], translateY: [30, -1e3] }, .6, { easing: "easeOutCirc" }],
5198                        [{ translateY: -10 }, .2],
5199                        [{ translateY: 0 }, .2]
5200                    ]
5201                },
5202                "transition.bounceDownOut": {
5203                    defaultDuration: 1e3,
5204                    calls: [
5205                        [{ translateY: -20 }, .2],
5206                        [{ opacity: [0, "easeInCirc", 1], translateY: 1e3 }, .8]
5207                    ],
5208                    reset: { translateY: 0 }
5209                },
5210                "transition.bounceLeftIn": {
5211                    defaultDuration: 750,
5212                    calls: [
5213                        [{ opacity: [1, 0], translateX: [30, -1250] }, .6, { easing: "easeOutCirc" }],
5214                        [{ translateX: -10 }, .2],
5215                        [{ translateX: 0 }, .2]
5216                    ]
5217                },
5218                "transition.bounceLeftOut": {
5219                    defaultDuration: 750,
5220                    calls: [
5221                        [{ translateX: 30 }, .2],
5222                        [{ opacity: [0, "easeInCirc", 1], translateX: -1250 }, .8]
5223                    ],
5224                    reset: { translateX: 0 }
5225                },
5226                "transition.bounceRightIn": {
5227                    defaultDuration: 750,
5228                    calls: [
5229                        [{ opacity: [1, 0], translateX: [-30, 1250] }, .6, { easing: "easeOutCirc" }],
5230                        [{ translateX: 10 }, .2],
5231                        [{ translateX: 0 }, .2]
5232                    ]
5233                },
5234                "transition.bounceRightOut": {
5235                    defaultDuration: 750,
5236                    calls: [
5237                        [{ translateX: -30 }, .2],
5238                        [{ opacity: [0, "easeInCirc", 1], translateX: 1250 }, .8]
5239                    ],
5240                    reset: { translateX: 0 }
5241                },
5242                "transition.slideUpIn": {
5243                    defaultDuration: 900,
5244                    calls: [
5245                        [{ opacity: [1, 0], translateY: [0, 20], translateZ: 0 }]
5246                    ]
5247                },
5248                "transition.slideUpOut": {
5249                    defaultDuration: 900,
5250                    calls: [
5251                        [{ opacity: [0, 1], translateY: -20, translateZ: 0 }]
5252                    ],
5253                    reset: { translateY: 0 }
5254                },
5255                "transition.slideDownIn": {
5256                    defaultDuration: 900,
5257                    calls: [
5258                        [{ opacity: [1, 0], translateY: [0, -20], translateZ: 0 }]
5259                    ]
5260                },
5261                "transition.slideDownOut": {
5262                    defaultDuration: 900,
5263                    calls: [
5264                        [{ opacity: [0, 1], translateY: 20, translateZ: 0 }]
5265                    ],
5266                    reset: { translateY: 0 }
5267                },
5268                "transition.slideLeftIn": {
5269                    defaultDuration: 1e3,
5270                    calls: [
5271                        [{ opacity: [1, 0], translateX: [0, -20], translateZ: 0 }]
5272                    ]
5273                },
5274                "transition.slideLeftOut": {
5275                    defaultDuration: 1050,
5276                    calls: [
5277                        [{ opacity: [0, 1], translateX: -20, translateZ: 0 }]
5278                    ],
5279                    reset: { translateX: 0 }
5280                },
5281                "transition.slideRightIn": {
5282                    defaultDuration: 1e3,
5283                    calls: [
5284                        [{ opacity: [1, 0], translateX: [0, 20], translateZ: 0 }]
5285                    ]
5286                },
5287                "transition.slideRightOut": {
5288                    defaultDuration: 1050,
5289                    calls: [
5290                        [{ opacity: [0, 1], translateX: 20, translateZ: 0 }]
5291                    ],
5292                    reset: { translateX: 0 }
5293                },
5294                "transition.slideUpBigIn": {
5295                    defaultDuration: 850,
5296                    calls: [
5297                        [{ opacity: [1, 0], translateY: [0, 75], translateZ: 0 }]
5298                    ]
5299                },
5300                "transition.slideUpBigOut": {
5301                    defaultDuration: 800,
5302                    calls: [
5303                        [{ opacity: [0, 1], translateY: -75, translateZ: 0 }]
5304                    ],
5305                    reset: { translateY: 0 }
5306                },
5307                "transition.slideDownBigIn": {
5308                    defaultDuration: 850,
5309                    calls: [
5310                        [{ opacity: [1, 0], translateY: [0, -75], translateZ: 0 }]
5311                    ]
5312                },
5313                "transition.slideDownBigOut": {
5314                    defaultDuration: 800,
5315                    calls: [
5316                        [{ opacity: [0, 1], translateY: 75, translateZ: 0 }]
5317                    ],
5318                    reset: { translateY: 0 }
5319                },
5320                "transition.slideLeftBigIn": {
5321                    defaultDuration: 800,
5322                    calls: [
5323                        [{ opacity: [1, 0], translateX: [0, -75], translateZ: 0 }]
5324                    ]
5325                },
5326                "transition.slideLeftBigOut": {
5327                    defaultDuration: 750,
5328                    calls: [
5329                        [{ opacity: [0, 1], translateX: -75, translateZ: 0 }]
5330                    ],
5331                    reset: { translateX: 0 }
5332                },
5333                "transition.slideRightBigIn": {
5334                    defaultDuration: 800,
5335                    calls: [
5336                        [{ opacity: [1, 0], translateX: [0, 75], translateZ: 0 }]
5337                    ]
5338                },
5339                "transition.slideRightBigOut": {
5340                    defaultDuration: 750,
5341                    calls: [
5342                        [{ opacity: [0, 1], translateX: 75, translateZ: 0 }]
5343                    ],
5344                    reset: { translateX: 0 }
5345                },
5346                "transition.perspectiveUpIn": {
5347                    defaultDuration: 800,
5348                    calls: [
5349                        [{ opacity: [1, 0], transformPerspective: [800, 800], transformOriginX: [0, 0], transformOriginY: ["100%", "100%"], rotateX: [0, -180] }]
5350                    ],
5351                    reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%" }
5352                },
5353                "transition.perspectiveUpOut": {
5354                    defaultDuration: 850,
5355                    calls: [
5356                        [{ opacity: [0, 1], transformPerspective: [800, 800], transformOriginX: [0, 0], transformOriginY: ["100%", "100%"], rotateX: -180 }]
5357                    ],
5358                    reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%", rotateX: 0 }
5359                },
5360                "transition.perspectiveDownIn": {
5361                    defaultDuration: 800,
5362                    calls: [
5363                        [{ opacity: [1, 0], transformPerspective: [800, 800], transformOriginX: [0, 0], transformOriginY: [0, 0], rotateX: [0, 180] }]
5364                    ],
5365                    reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%" }
5366                },
5367                "transition.perspectiveDownOut": {
5368                    defaultDuration: 850,
5369                    calls: [
5370                        [{ opacity: [0, 1], transformPerspective: [800, 800], transformOriginX: [0, 0], transformOriginY: [0, 0], rotateX: 180 }]
5371                    ],
5372                    reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%", rotateX: 0 }
5373                },
5374                "transition.perspectiveLeftIn": {
5375                    defaultDuration: 950,
5376                    calls: [
5377                        [{ opacity: [1, 0], transformPerspective: [2e3, 2e3], transformOriginX: [0, 0], transformOriginY: [0, 0], rotateY: [0, -180] }]
5378                    ],
5379                    reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%" }
5380                },
5381                "transition.perspectiveLeftOut": {
5382                    defaultDuration: 950,
5383                    calls: [
5384                        [{ opacity: [0, 1], transformPerspective: [2e3, 2e3], transformOriginX: [0, 0], transformOriginY: [0, 0], rotateY: -180 }]
5385                    ],
5386                    reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%", rotateY: 0 }
5387                },
5388                "transition.perspectiveRightIn": {
5389                    defaultDuration: 950,
5390                    calls: [
5391                        [{ opacity: [1, 0], transformPerspective: [2e3, 2e3], transformOriginX: ["100%", "100%"], transformOriginY: [0, 0], rotateY: [0, 180] }]
5392                    ],
5393                    reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%" }
5394                },
5395                "transition.perspectiveRightOut": {
5396                    defaultDuration: 950,
5397                    calls: [
5398                        [{ opacity: [0, 1], transformPerspective: [2e3, 2e3], transformOriginX: ["100%", "100%"], transformOriginY: [0, 0], rotateY: 180 }]
5399                    ],
5400                    reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%", rotateY: 0 }
5401                }
5402            };
5403            for (var effectName in Velocity.RegisterEffect.packagedEffects) Velocity.RegisterEffect(effectName, Velocity.RegisterEffect.packagedEffects[effectName]);
5404            Velocity.RunSequence = function(originalSequence) {
5405                var sequence = $.extend(!0, [], originalSequence);
5406                sequence.length > 1 && ($.each(sequence.reverse(), function(i, currentCall) {
5407                    var nextCall = sequence[i + 1];
5408                    if (nextCall) {
5409                        var currentCallOptions = currentCall.o || currentCall.options,
5410                            nextCallOptions = nextCall.o || nextCall.options,
5411                            timing = currentCallOptions && currentCallOptions.sequenceQueue === !1 ? "begin" : "complete",
5412                            callbackOriginal = nextCallOptions && nextCallOptions[timing],
5413                            options = {};
5414                        options[timing] = function() {
5415                            var nextCallElements = nextCall.e || nextCall.elements,
5416                                elements = nextCallElements.nodeType ? [nextCallElements] : nextCallElements;
5417                            callbackOriginal && callbackOriginal.call(elements, elements), Velocity(currentCall)
5418                        }, nextCall.o ? nextCall.o = $.extend({}, nextCallOptions, options) : nextCall.options = $.extend({}, nextCallOptions, options)
5419                    }
5420                }), sequence.reverse()), Velocity(sequence[0])
5421            }
5422        }(window.jQuery || window.Zepto || window, window, document)
5423    }),
5424    function(global, factory) { "object" == typeof exports && "undefined" != typeof module ? module.exports = factory() : "function" == typeof define && define.amd ? define(factory) : global.moment = factory() }(this, function() {
5425        "use strict";
5426
5427        function utils_hooks__hooks() { return hookCallback.apply(null, arguments) }
5428
5429        function setHookCallback(callback) { hookCallback = callback }
5430
5431        function isArray(input) { return input instanceof Array || "[object Array]" === Object.prototype.toString.call(input) }
5432
5433        function isObject(input) { return null != input && "[object Object]" === Object.prototype.toString.call(input) }
5434
5435        function isObjectEmpty(obj) { var k; for (k in obj) return !1; return !0 }
5436
5437        function isDate(input) { return input instanceof Date || "[object Date]" === Object.prototype.toString.call(input) }
5438
5439        function map(arr, fn) { var i, res = []; for (i = 0; i < arr.length; ++i) res.push(fn(arr[i], i)); return res }
5440
5441        function hasOwnProp(a, b) { return Object.prototype.hasOwnProperty.call(a, b) }
5442
5443        function extend(a, b) { for (var i in b) hasOwnProp(b, i) && (a[i] = b[i]); return hasOwnProp(b, "toString") && (a.toString = b.toString), hasOwnProp(b, "valueOf") && (a.valueOf = b.valueOf), a }
5444
5445        function create_utc__createUTC(input, format, locale, strict) { return createLocalOrUTC(in
vendor: 6,388 bytes, lines 5445-5534
5445put, format, locale, strict, !0).utc() }
5446
5447        function defaultParsingFlags() { return { empty: !1, unusedTokens: [], unusedInput: [], overflow: -2, charsLeftOver: 0, nullInput: !1, invalidMonth: null, invalidFormat: !1, userInvalidated: !1, iso: !1, parsedDateParts: [], meridiem: null } }
5448
5449        function getParsingFlags(m) { return null == m._pf && (m._pf = defaultParsingFlags()), m._pf }
5450
5451        function valid__isValid(m) {
5452            if (null == m._isValid) {
5453                var flags = getParsingFlags(m),
5454                    parsedParts = some.call(flags.parsedDateParts, function(i) { return null != i }),
5455                    isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidMonth && !flags.invalidWeekday && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);
5456                if (m._strict && (isNowValid = isNowValid && 0 === flags.charsLeftOver && 0 === flags.unusedTokens.length && void 0 === flags.bigHour), null != Object.isFrozen && Object.isFrozen(m)) return isNowValid;
5457                m._isValid = isNowValid
5458            }
5459            return m._isValid
5460        }
5461
5462        function valid__createInvalid(flags) { var m = create_utc__createUTC(NaN); return null != flags ? extend(getParsingFlags(m), flags) : getParsingFlags(m).userInvalidated = !0, m }
5463
5464        function isUndefined(input) { return void 0 === input }
5465
5466        function copyConfig(to, from) {
5467            var i, prop, val;
5468            if (isUndefined(from._isAMomentObject) || (to._isAMomentObject = from._isAMomentObject), isUndefined(from._i) || (to._i = from._i), isUndefined(from._f) || (to._f = from._f), isUndefined(from._l) || (to._l = from._l), isUndefined(from._strict) || (to._strict = from._strict), isUndefined(from._tzm) || (to._tzm = from._tzm), isUndefined(from._isUTC) || (to._isUTC = from._isUTC), isUndefined(from._offset) || (to._offset = from._offset), isUndefined(from._pf) || (to._pf = getParsingFlags(from)), isUndefined(from._locale) || (to._locale = from._locale), momentProperties.length > 0)
5469                for (i in momentProperties) prop = momentProperties[i], val = from[prop], isUndefined(val) || (to[prop] = val);
5470            return to
5471        }
5472
5473        function Moment(config) { copyConfig(this, config), this._d = new Date(null != config._d ? config._d.getTime() : NaN), updateInProgress === !1 && (updateInProgress = !0, utils_hooks__hooks.updateOffset(this), updateInProgress = !1) }
5474
5475        function isMoment(obj) { return obj instanceof Moment || null != obj && null != obj._isAMomentObject }
5476
5477        function absFloor(number) { return number < 0 ? Math.ceil(number) || 0 : Math.floor(number) }
5478
5479        function toInt(argumentForCoercion) {
5480            var coercedNumber = +argumentForCoercion,
5481                value = 0;
5482            return 0 !== coercedNumber && isFinite(coercedNumber) && (value = absFloor(coercedNumber)), value
5483        }
5484
5485        function compareArrays(array1, array2, dontConvert) {
5486            var i, len = Math.min(array1.length, array2.length),
5487                lengthDiff = Math.abs(array1.length - array2.length),
5488                diffs = 0;
5489            for (i = 0; i < len; i++)(dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) && diffs++;
5490            return diffs + lengthDiff
5491        }
5492
5493        function warn(msg) { utils_hooks__hooks.suppressDeprecationWarnings === !1 && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + msg) }
5494
5495        function deprecate(msg, fn) {
5496            var firstTime = !0;
5497            return extend(function() {
5498                if (null != utils_hooks__hooks.deprecationHandler && utils_hooks__hooks.deprecationHandler(null, msg), firstTime) {
5499                    for (var arg, args = [], i = 0; i < arguments.length; i++) {
5500                        if (arg = "", "object" == typeof arguments[i]) {
5501                            arg += "\n[" + i + "] ";
5502                            for (var key in arguments[0]) arg += key + ": " + arguments[0][key] + ", ";
5503                            arg = arg.slice(0, -2)
5504                        } else arg = arguments[i];
5505                        args.push(arg)
5506                    }
5507                    warn(msg + "\nArguments: " + Array.prototype.slice.call(args).join("") + "\n" + (new Error).stack), firstTime = !1
5508                }
5509                return fn.apply(this, arguments)
5510            }, fn)
5511        }
5512
5513        function deprecateSimple(name, msg) { null != utils_hooks__hooks.deprecationHandler && utils_hooks__hooks.deprecationHandler(name, msg), deprecations[name] || (warn(msg), deprecations[name] = !0) }
5514
5515        function isFunction(input) { return input instanceof Function || "[object Function]" === Object.prototype.toString.call(input) }
5516
5517        function locale_set__set(config) {
5518            var prop, i;
5519            for (i in config) prop = config[i], isFunction(prop) ? this[i] = prop : this["_" + i] = prop;
5520            this._config = config, this._ordinalParseLenient = new RegExp(this._ordinalParse.source + "|" + /\d{1,2}/.source)
5521        }
5522
5523        function mergeConfigs(parentConfig, childConfig) { var prop, res = extend({}, parentConfig); for (prop in childConfig) hasOwnProp(childConfig, prop) && (isObject(parentConfig[prop]) && isObject(childConfig[prop]) ? (res[prop] = {}, extend(res[prop], parentConfig[prop]), extend(res[prop], childConfig[prop])) : null != childConfig[prop] ? res[prop] = childConfig[prop] : delete res[prop]); for (prop in parentConfig) hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop]) && (res[prop] = extend({}, res[prop])); return res }
5524
5525        function Locale(config) { null != config && this.set(config) }
5526
5527        function locale_calendar__calendar(key, mom, now) { var output = this._calendar[key] || this._calendar.sameElse; return isFunction(output) ? output.call(mom, now) : output }
5528
5529        function longDateFormat(key) {
5530            var format = this._longDateFormat[key],
5531                formatUpper = this._longDateFormat[key.toUpperCase()];
5532            return format || !formatUpper ? format : (this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function(val) { return val.slice(1) }), this._longDateFormat[key])
5533        }
5534
vendor: 44,105 bytes, lines 5535-5986
5535        function invalidDate() { return this._invalidDate }
5536
5537        function ordinal(number) { return this._ordinal.replace("%d", number) }
5538
5539        function relative__relativeTime(number, withoutSuffix, string, isFuture) { var output = this._relativeTime[string]; return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number) }
5540
5541        function pastFuture(diff, output) { var format = this._relativeTime[diff > 0 ? "future" : "past"]; return isFunction(format) ? format(output) : format.replace(/%s/i, output) }
5542
5543        function addUnitAlias(unit, shorthand) {
5544            var lowerCase = unit.toLowerCase();
5545            aliases[lowerCase] = aliases[lowerCase + "s"] = aliases[shorthand] = unit
5546        }
5547
5548        function normalizeUnits(units) { return "string" == typeof units ? aliases[units] || aliases[units.toLowerCase()] : void 0 }
5549
5550        function normalizeObjectUnits(inputObject) { var normalizedProp, prop, normalizedInput = {}; for (prop in inputObject) hasOwnProp(inputObject, prop) && (normalizedProp = normalizeUnits(prop), normalizedProp && (normalizedInput[normalizedProp] = inputObject[prop])); return normalizedInput }
5551
5552        function addUnitPriority(unit, priority) { priorities[unit] = priority }
5553
5554        function getPrioritizedUnits(unitsObj) { var units = []; for (var u in unitsObj) units.push({ unit: u, priority: priorities[u] }); return units.sort(function(a, b) { return a.priority - b.priority }), units }
5555
5556        function makeGetSet(unit, keepTime) { return function(value) { return null != value ? (get_set__set(this, unit, value), utils_hooks__hooks.updateOffset(this, keepTime), this) : get_set__get(this, unit) } }
5557
5558        function get_set__get(mom, unit) { return mom.isValid() ? mom._d["get" + (mom._isUTC ? "UTC" : "") + unit]() : NaN }
5559
5560        function get_set__set(mom, unit, value) { mom.isValid() && mom._d["set" + (mom._isUTC ? "UTC" : "") + unit](value) }
5561
5562        function stringGet(units) { return units = normalizeUnits(units), isFunction(this[units]) ? this[units]() : this }
5563
5564        function stringSet(units, value) { if ("object" == typeof units) { units = normalizeObjectUnits(units); for (var prioritized = getPrioritizedUnits(units), i = 0; i < prioritized.length; i++) this[prioritized[i].unit](units[prioritized[i].unit]) } else if (units = normalizeUnits(units), isFunction(this[units])) return this[units](value); return this }
5565
5566        function zeroFill(number, targetLength, forceSign) {
5567            var absNumber = "" + Math.abs(number),
5568                zerosToFill = targetLength - absNumber.length,
5569                sign = number >= 0;
5570            return (sign ? forceSign ? "+" : "" : "-") + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber
5571        }
5572
5573        function addFormatToken(token, padded, ordinal, callback) { var func = callback; "string" == typeof callback && (func = function() { return this[callback]() }), token && (formatTokenFunctions[token] = func), padded && (formatTokenFunctions[padded[0]] = function() { return zeroFill(func.apply(this, arguments), padded[1], padded[2]) }), ordinal && (formatTokenFunctions[ordinal] = function() { return this.localeData().ordinal(func.apply(this, arguments), token) }) }
5574
5575        function removeFormattingTokens(input) { return input.match(/\[[\s\S]/) ? input.replace(/^\[|\]$/g, "") : input.replace(/\\/g, "") }
5576
5577        function makeFormatFunction(format) { var i, length, array = format.match(formattingTokens); for (i = 0, length = array.length; i < length; i++) formatTokenFunctions[array[i]] ? array[i] = formatTokenFunctions[array[i]] : array[i] = removeFormattingTokens(array[i]); return function(mom) { var i, output = ""; for (i = 0; i < length; i++) output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; return output } }
5578
5579        function formatMoment(m, format) {
5580            return m.isValid() ? (format = expandFormat(format, m.localeData()),
5581                formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format), formatFunctions[format](m)) : m.localeData().invalidDate()
5582        }
5583
5584        function expandFormat(format, locale) {
5585            function replaceLongDateFormatTokens(input) { return locale.longDateFormat(input) || input }
5586            var i = 5;
5587            for (localFormattingTokens.lastIndex = 0; i >= 0 && localFormattingTokens.test(format);) format = format.replace(localFormattingTokens, replaceLongDateFormatTokens), localFormattingTokens.lastIndex = 0, i -= 1;
5588            return format
5589        }
5590
5591        function addRegexToken(token, regex, strictRegex) { regexes[token] = isFunction(regex) ? regex : function(isStrict, localeData) { return isStrict && strictRegex ? strictRegex : regex } }
5592
5593        function getParseRegexForToken(token, config) { return hasOwnProp(regexes, token) ? regexes[token](config._strict, config._locale) : new RegExp(unescapeFormat(token)) }
5594
5595        function unescapeFormat(s) { return regexEscape(s.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(matched, p1, p2, p3, p4) { return p1 || p2 || p3 || p4 })) }
5596
5597        function regexEscape(s) { return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") }
5598
5599        function addParseToken(token, callback) { var i, func = callback; for ("string" == typeof token && (token = [token]), "number" == typeof callback && (func = function(input, array) { array[callback] = toInt(input) }), i = 0; i < token.length; i++) tokens[token[i]] = func }
5600
5601        function addWeekParseToken(token, callback) { addParseToken(token, function(input, array, config, token) { config._w = config._w || {}, callback(input, config._w, config, token) }) }
5602
5603        function addTimeToArrayFromToken(token, input, config) { null != input && hasOwnProp(tokens, token) && tokens[token](input, config._a, config, token) }
5604
5605        function daysInMonth(year, month) { return new Date(Date.UTC(year, month + 1, 0)).getUTCDate() }
5606
5607        function localeMonths(m, format) { return m ? isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? "format" : "standalone"][m.month()] : this._months }
5608
5609        function localeMonthsShort(m, format) { return m ? isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? "format" : "standalone"][m.month()] : this._monthsShort }
5610
5611        function units_month__handleStrictParse(monthName, format, strict) {
5612            var i, ii, mom, llc = monthName.toLocaleLowerCase();
5613            if (!this._monthsParse)
5614                for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], i = 0; i < 12; ++i) mom = create_utc__createUTC([2e3, i]), this._shortMonthsParse[i] = this.monthsShort(mom, "").toLocaleLowerCase(), this._longMonthsParse[i] = this.months(mom, "").toLocaleLowerCase();
5615            return strict ? "MMM" === format ? (ii = indexOf.call(this._shortMonthsParse, llc), ii !== -1 ? ii : null) : (ii = indexOf.call(this._longMonthsParse, llc), ii !== -1 ? ii : null) : "MMM" === format ? (ii = indexOf.call(this._shortMonthsParse, llc), ii !== -1 ? ii : (ii = indexOf.call(this._longMonthsParse, llc), ii !== -1 ? ii : null)) : (ii = indexOf.call(this._longMonthsParse, llc), ii !== -1 ? ii : (ii = indexOf.call(this._shortMonthsParse, llc), ii !== -1 ? ii : null))
5616        }
5617
5618        function localeMonthsParse(monthName, format, strict) { var i, mom, regex; if (this._monthsParseExact) return units_month__handleStrictParse.call(this, monthName, format, strict); for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), i = 0; i < 12; i++) { if (mom = create_utc__createUTC([2e3, i]), strict && !this._longMonthsParse[i] && (this._longMonthsParse[i] = new RegExp("^" + this.months(mom, "").replace(".", "") + "$", "i"), this._shortMonthsParse[i] = new RegExp("^" + this.monthsShort(mom, "").replace(".", "") + "$", "i")), strict || this._monthsParse[i] || (regex = "^" + this.months(mom, "") + "|^" + this.monthsShort(mom, ""), this._monthsParse[i] = new RegExp(regex.replace(".", ""), "i")), strict && "MMMM" === format && this._longMonthsParse[i].test(monthName)) return i; if (strict && "MMM" === format && this._shortMonthsParse[i].test(monthName)) return i; if (!strict && this._monthsParse[i].test(monthName)) return i } }
5619
5620        function setMonth(mom, value) {
5621            var dayOfMonth;
5622            if (!mom.isValid()) return mom;
5623            if ("string" == typeof value)
5624                if (/^\d+$/.test(value)) value = toInt(value);
5625                else if (value = mom.localeData().monthsParse(value), "number" != typeof value) return mom;
5626            return dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)), mom._d["set" + (mom._isUTC ? "UTC" : "") + "Month"](value, dayOfMonth), mom
5627        }
5628
5629        function getSetMonth(value) { return null != value ? (setMonth(this, value), utils_hooks__hooks.updateOffset(this, !0), this) : get_set__get(this, "Month") }
5630
5631        function getDaysInMonth() { return daysInMonth(this.year(), this.month()) }
5632
5633        function monthsShortRegex(isStrict) { return this._monthsParseExact ? (hasOwnProp(this, "_monthsRegex") || computeMonthsParse.call(this), isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex) : (hasOwnProp(this, "_monthsShortRegex") || (this._monthsShortRegex = defaultMonthsShortRegex), this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex) }
5634
5635        function units_month__monthsRegex(isStrict) { return this._monthsParseExact ? (hasOwnProp(this, "_monthsRegex") || computeMonthsParse.call(this), isStrict ? this._monthsStrictRegex : this._monthsRegex) : (hasOwnProp(this, "_monthsRegex") || (this._monthsRegex = defaultMonthsRegex), this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex) }
5636
5637        function computeMonthsParse() {
5638            function cmpLenRev(a, b) { return b.length - a.length }
5639            var i, mom, shortPieces = [],
5640                longPieces = [],
5641                mixedPieces = [];
5642            for (i = 0; i < 12; i++) mom = create_utc__createUTC([2e3, i]), shortPieces.push(this.monthsShort(mom, "")), longPieces.push(this.months(mom, "")), mixedPieces.push(this.months(mom, "")), mixedPieces.push(this.monthsShort(mom, ""));
5643            for (shortPieces.sort(cmpLenRev), longPieces.sort(cmpLenRev), mixedPieces.sort(cmpLenRev), i = 0; i < 12; i++) shortPieces[i] = regexEscape(shortPieces[i]), longPieces[i] = regexEscape(longPieces[i]);
5644            for (i = 0; i < 24; i++) mixedPieces[i] = regexEscape(mixedPieces[i]);
5645            this._monthsRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp("^(" + longPieces.join("|") + ")", "i"), this._monthsShortStrictRegex = new RegExp("^(" + shortPieces.join("|") + ")", "i")
5646        }
5647
5648        function daysInYear(year) { return isLeapYear(year) ? 366 : 365 }
5649
5650        function isLeapYear(year) { return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0 }
5651
5652        function getIsLeapYear() { return isLeapYear(this.year()) }
5653
5654        function createDate(y, m, d, h, M, s, ms) { var date = new Date(y, m, d, h, M, s, ms); return y < 100 && y >= 0 && isFinite(date.getFullYear()) && date.setFullYear(y), date }
5655
5656        function createUTCDate(y) { var date = new Date(Date.UTC.apply(null, arguments)); return y < 100 && y >= 0 && isFinite(date.getUTCFullYear()) && date.setUTCFullYear(y), date }
5657
5658        function firstWeekOffset(year, dow, doy) {
5659            var fwd = 7 + dow - doy,
5660                fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
5661            return -fwdlw + fwd - 1
5662        }
5663
5664        function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
5665            var resYear, resDayOfYear, localWeekday = (7 + weekday - dow) % 7,
5666                weekOffset = firstWeekOffset(year, dow, doy),
5667                dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset;
5668            return dayOfYear <= 0 ? (resYear = year - 1, resDayOfYear = daysInYear(resYear) + dayOfYear) : dayOfYear > daysInYear(year) ? (resYear = year + 1, resDayOfYear = dayOfYear - daysInYear(year)) : (resYear = year, resDayOfYear = dayOfYear), { year: resYear, dayOfYear: resDayOfYear }
5669        }
5670
5671        function weekOfYear(mom, dow, doy) {
5672            var resWeek, resYear, weekOffset = firstWeekOffset(mom.year(), dow, doy),
5673                week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1;
5674            return week < 1 ? (resYear = mom.year() - 1, resWeek = week + weeksInYear(resYear, dow, doy)) : week > weeksInYear(mom.year(), dow, doy) ? (resWeek = week - weeksInYear(mom.year(), dow, doy), resYear = mom.year() + 1) : (resYear = mom.year(), resWeek = week), { week: resWeek, year: resYear }
5675        }
5676
5677        function weeksInYear(year, dow, doy) {
5678            var weekOffset = firstWeekOffset(year, dow, doy),
5679                weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
5680            return (daysInYear(year) - weekOffset + weekOffsetNext) / 7
5681        }
5682
5683        function localeWeek(mom) { return weekOfYear(mom, this._week.dow, this._week.doy).week }
5684
5685        function localeFirstDayOfWeek() { return this._week.dow }
5686
5687        function localeFirstDayOfYear() { return this._week.doy }
5688
5689        function getSetWeek(input) { var week = this.localeData().week(this); return null == input ? week : this.add(7 * (input - week), "d") }
5690
5691        function getSetISOWeek(input) { var week = weekOfYear(this, 1, 4).week; return null == input ? week : this.add(7 * (input - week), "d") }
5692
5693        function parseWeekday(input, locale) { return "string" != typeof input ? input : isNaN(input) ? (input = locale.weekdaysParse(input), "number" == typeof input ? input : null) : parseInt(input, 10) }
5694
5695        function parseIsoWeekday(input, locale) { return "string" == typeof input ? locale.weekdaysParse(input) % 7 || 7 : isNaN(input) ? null : input }
5696
5697        function localeWeekdays(m, format) { return m ? isArray(this._weekdays) ? this._weekdays[m.day()] : this._weekdays[this._weekdays.isFormat.test(format) ? "format" : "standalone"][m.day()] : this._weekdays }
5698
5699        function localeWeekdaysShort(m) { return m ? this._weekdaysShort[m.day()] : this._weekdaysShort }
5700
5701        function localeWeekdaysMin(m) { return m ? this._weekdaysMin[m.day()] : this._weekdaysMin }
5702
5703        function day_of_week__handleStrictParse(weekdayName, format, strict) {
5704            var i, ii, mom, llc = weekdayName.toLocaleLowerCase();
5705            if (!this._weekdaysParse)
5706                for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], i = 0; i < 7; ++i) mom = create_utc__createUTC([2e3, 1]).day(i), this._minWeekdaysParse[i] = this.weekdaysMin(mom, "").toLocaleLowerCase(), this._shortWeekdaysParse[i] = this.weekdaysShort(mom, "").toLocaleLowerCase(), this._weekdaysParse[i] = this.weekdays(mom, "").toLocaleLowerCase();
5707            return strict ? "dddd" === format ? (ii = indexOf.call(this._weekdaysParse, llc), ii !== -1 ? ii : null) : "ddd" === format ? (ii = indexOf.call(this._shortWeekdaysParse, llc), ii !== -1 ? ii : null) : (ii = indexOf.call(this._minWeekdaysParse, llc), ii !== -1 ? ii : null) : "dddd" === format ? (ii = indexOf.call(this._weekdaysParse, llc), ii !== -1 ? ii : (ii = indexOf.call(this._shortWeekdaysParse, llc), ii !== -1 ? ii : (ii = indexOf.call(this._minWeekdaysParse, llc), ii !== -1 ? ii : null))) : "ddd" === format ? (ii = indexOf.call(this._shortWeekdaysParse, llc), ii !== -1 ? ii : (ii = indexOf.call(this._weekdaysParse, llc), ii !== -1 ? ii : (ii = indexOf.call(this._minWeekdaysParse, llc), ii !== -1 ? ii : null))) : (ii = indexOf.call(this._minWeekdaysParse, llc), ii !== -1 ? ii : (ii = indexOf.call(this._weekdaysParse, llc), ii !== -1 ? ii : (ii = indexOf.call(this._shortWeekdaysParse, llc), ii !== -1 ? ii : null)))
5708        }
5709
5710        function localeWeekdaysParse(weekdayName, format, strict) { var i, mom, regex; if (this._weekdaysParseExact) return day_of_week__handleStrictParse.call(this, weekdayName, format, strict); for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), i = 0; i < 7; i++) { if (mom = create_utc__createUTC([2e3, 1]).day(i), strict && !this._fullWeekdaysParse[i] && (this._fullWeekdaysParse[i] = new RegExp("^" + this.weekdays(mom, "").replace(".", ".?") + "$", "i"), this._shortWeekdaysParse[i] = new RegExp("^" + this.weekdaysShort(mom, "").replace(".", ".?") + "$", "i"), this._minWeekdaysParse[i] = new RegExp("^" + this.weekdaysMin(mom, "").replace(".", ".?") + "$", "i")), this._weekdaysParse[i] || (regex = "^" + this.weekdays(mom, "") + "|^" + this.weekdaysShort(mom, "") + "|^" + this.weekdaysMin(mom, ""), this._weekdaysParse[i] = new RegExp(regex.replace(".", ""), "i")), strict && "dddd" === format && this._fullWeekdaysParse[i].test(weekdayName)) return i; if (strict && "ddd" === format && this._shortWeekdaysParse[i].test(weekdayName)) return i; if (strict && "dd" === format && this._minWeekdaysParse[i].test(weekdayName)) return i; if (!strict && this._weekdaysParse[i].test(weekdayName)) return i } }
5711
5712        function getSetDayOfWeek(input) { if (!this.isValid()) return null != input ? this : NaN; var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); return null != input ? (input = parseWeekday(input, this.localeData()), this.add(input - day, "d")) : day }
5713
5714        function getSetLocaleDayOfWeek(input) { if (!this.isValid()) return null != input ? this : NaN; var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; return null == input ? weekday : this.add(input - weekday, "d") }
5715
5716        function getSetISODayOfWeek(input) { if (!this.isValid()) return null != input ? this : NaN; if (null != input) { var weekday = parseIsoWeekday(input, this.localeData()); return this.day(this.day() % 7 ? weekday : weekday - 7) } return this.day() || 7 }
5717
5718        function weekdaysRegex(isStrict) { return this._weekdaysParseExact ? (hasOwnProp(this, "_weekdaysRegex") || computeWeekdaysParse.call(this), isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex) : (hasOwnProp(this, "_weekdaysRegex") || (this._weekdaysRegex = defaultWeekdaysRegex), this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex) }
5719
5720        function weekdaysShortRegex(isStrict) { return this._weekdaysParseExact ? (hasOwnProp(this, "_weekdaysRegex") || computeWeekdaysParse.call(this), isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (hasOwnProp(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = defaultWeekdaysShortRegex), this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) }
5721
5722        function weekdaysMinRegex(isStrict) { return this._weekdaysParseExact ? (hasOwnProp(this, "_weekdaysRegex") || computeWeekdaysParse.call(this), isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (hasOwnProp(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = defaultWeekdaysMinRegex), this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) }
5723
5724        function computeWeekdaysParse() {
5725            function cmpLenRev(a, b) { return b.length - a.length }
5726            var i, mom, minp, shortp, longp, minPieces = [],
5727                shortPieces = [],
5728                longPieces = [],
5729                mixedPieces = [];
5730            for (i = 0; i < 7; i++) mom = create_utc__createUTC([2e3, 1]).day(i), minp = this.weekdaysMin(mom, ""), shortp = this.weekdaysShort(mom, ""), longp = this.weekdays(mom, ""), minPieces.push(minp), shortPieces.push(shortp), longPieces.push(longp), mixedPieces.push(minp), mixedPieces.push(shortp), mixedPieces.push(longp);
5731            for (minPieces.sort(cmpLenRev), shortPieces.sort(cmpLenRev), longPieces.sort(cmpLenRev), mixedPieces.sort(cmpLenRev), i = 0; i < 7; i++) shortPieces[i] = regexEscape(shortPieces[i]), longPieces[i] = regexEscape(longPieces[i]), mixedPieces[i] = regexEscape(mixedPieces[i]);
5732            this._weekdaysRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + longPieces.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + shortPieces.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + minPieces.join("|") + ")", "i")
5733        }
5734
5735        function hFormat() { return this.hours() % 12 || 12 }
5736
5737        function kFormat() { return this.hours() || 24 }
5738
5739        function meridiem(token, lowercase) { addFormatToken(token, 0, 0, function() { return this.localeData().meridiem(this.hours(), this.minutes(), lowercase) }) }
5740
5741        function matchMeridiem(isStrict, locale) { return locale._meridiemParse }
5742
5743        function localeIsPM(input) { return "p" === (input + "").toLowerCase().charAt(0) }
5744
5745        function localeMeridiem(hours, minutes, isLower) { return hours > 11 ? isLower ? "pm" : "PM" : isLower ? "am" : "AM" }
5746
5747        function normalizeLocale(key) { return key ? key.toLowerCase().replace("_", "-") : key }
5748
5749        function chooseLocale(names) {
5750            for (var j, next, locale, split, i = 0; i < names.length;) {
5751                for (split = normalizeLocale(names[i]).split("-"), j = split.length, next = normalizeLocale(names[i + 1]), next = next ? next.split("-") : null; j > 0;) {
5752                    if (locale = loadLocale(split.slice(0, j).join("-"))) return locale;
5753                    if (next && next.length >= j && compareArrays(split, next, !0) >= j - 1) break;
5754                    j--
5755                }
5756                i++
5757            }
5758            return null
5759        }
5760
5761        function loadLocale(name) {
5762            var oldLocale = null;
5763            if (!locales[name] && "undefined" != typeof module && module && module.exports) try { oldLocale = globalLocale._abbr, require("./locale/" + name), locale_locales__getSetGlobalLocale(oldLocale) } catch (e) {}
5764            return locales[name]
5765        }
5766
5767        function locale_locales__getSetGlobalLocale(key, values) { var data; return key && (data = isUndefined(values) ? locale_locales__getLocale(key) : defineLocale(key, values), data && (globalLocale = data)), globalLocale._abbr }
5768
5769        function defineLocale(name, config) { if (null !== config) { var parentConfig = baseConfig; return config.abbr = name, null != locales[name] ? (deprecateSimple("defineLocaleOverride", "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."), parentConfig = locales[name]._config) : null != config.parentLocale && (null != locales[config.parentLocale] ? parentConfig = locales[config.parentLocale]._config : deprecateSimple("parentLocaleUndefined", "specified parentLocale is not defined yet. See http://momentjs.com/guides/#/warnings/parent-locale/")), locales[name] = new Locale(mergeConfigs(parentConfig, config)), locale_locales__getSetGlobalLocale(name), locales[name] } return delete locales[name], null }
5770
5771        function updateLocale(name, config) {
5772            if (null != config) {
5773                var locale, parentConfig = baseConfig;
5774                null != locales[name] && (parentConfig = locales[name]._config), config = mergeConfigs(parentConfig, config), locale = new Locale(config), locale.parentLocale = locales[name], locales[name] = locale, locale_locales__getSetGlobalLocale(name)
5775            } else null != locales[name] && (null != locales[name].parentLocale ? locales[name] = locales[name].parentLocale : null != locales[name] && delete locales[name]);
5776            return locales[name]
5777        }
5778
5779        function locale_locales__getLocale(key) {
5780            var locale;
5781            if (key && key._locale && key._locale._abbr && (key = key._locale._abbr), !key) return globalLocale;
5782            if (!isArray(key)) {
5783                if (locale = loadLocale(key)) return locale;
5784                key = [key]
5785            }
5786            return chooseLocale(key)
5787        }
5788
5789        function locale_locales__listLocales() { return keys(locales) }
5790
5791        function checkOverflow(m) { var overflow, a = m._a; return a && getParsingFlags(m).overflow === -2 && (overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || 24 === a[HOUR] && (0 !== a[MINUTE] || 0 !== a[SECOND] || 0 !== a[MILLISECOND]) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1, getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE) && (overflow = DATE), getParsingFlags(m)._overflowWeeks && overflow === -1 && (overflow = WEEK), getParsingFlags(m)._overflowWeekday && overflow === -1 && (overflow = WEEKDAY), getParsingFlags(m).overflow = overflow), m }
5792
5793        function configFromISO(config) {
5794            var i, l, allowTime, dateFormat, timeFormat, tzFormat, string = config._i,
5795                match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string);
5796            if (match) {
5797                for (getParsingFlags(config).iso = !0, i = 0, l = isoDates.length; i < l; i++)
5798                    if (isoDates[i][1].exec(match[1])) { dateFormat = isoDates[i][0], allowTime = isoDates[i][2] !== !1; break }
5799                if (null == dateFormat) return void(config._isValid = !1);
5800                if (match[3]) {
5801                    for (i = 0, l = isoTimes.length; i < l; i++)
5802                        if (isoTimes[i][1].exec(match[3])) { timeFormat = (match[2] || " ") + isoTimes[i][0]; break }
5803                    if (null == timeFormat) return void(config._isValid = !1)
5804                }
5805                if (!allowTime && null != timeFormat) return void(config._isValid = !1);
5806                if (match[4]) {
5807                    if (!tzRegex.exec(match[4])) return void(config._isValid = !1);
5808                    tzFormat = "Z"
5809                }
5810                config._f = dateFormat + (timeFormat || "") + (tzFormat || ""), configFromStringAndFormat(config)
5811            } else config._isValid = !1
5812        }
5813
5814        function configFromString(config) { var matched = aspNetJsonRegex.exec(config._i); return null !== matched ? void(config._d = new Date(+matched[1])) : (configFromISO(config), void(config._isValid === !1 && (delete config._isValid, utils_hooks__hooks.createFromInputFallback(config)))) }
5815
5816        function defaults(a, b, c) { return null != a ? a : null != b ? b : c }
5817
5818        function currentDateArray(config) { var nowValue = new Date(utils_hooks__hooks.now()); return config._useUTC ? [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()] : [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()] }
5819
5820        function configFromArray(config) {
5821            var i, date, currentDate, yearToUse, input = [];
5822            if (!config._d) {
5823                for (currentDate = currentDateArray(config), config._w && null == config._a[DATE] && null == config._a[MONTH] && dayOfYearFromWeekInfo(config), config._dayOfYear && (yearToUse = defaults(config._a[YEAR], currentDate[YEAR]), config._dayOfYear > daysInYear(yearToUse) && (getParsingFlags(config)._overflowDayOfYear = !0), date = createUTCDate(yearToUse, 0, config._dayOfYear), config._a[MONTH] = date.getUTCMonth(), config._a[DATE] = date.getUTCDate()), i = 0; i < 3 && null == config._a[i]; ++i) config._a[i] = input[i] = currentDate[i];
5824                for (; i < 7; i++) config._a[i] = input[i] = null == config._a[i] ? 2 === i ? 1 : 0 : config._a[i];
5825                24 === config._a[HOUR] && 0 === config._a[MINUTE] && 0 === config._a[SECOND] && 0 === config._a[MILLISECOND] && (config._nextDay = !0, config._a[HOUR] = 0), config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input), null != config._tzm && config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm), config._nextDay && (config._a[HOUR] = 24)
5826            }
5827        }
5828
5829        function dayOfYearFromWeekInfo(config) {
5830            var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
5831            w = config._w, null != w.GG || null != w.W || null != w.E ? (dow = 1, doy = 4, weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year), week = defaults(w.W, 1), weekday = defaults(w.E, 1), (weekday < 1 || weekday > 7) && (weekdayOverflow = !0)) : (dow = config._locale._week.dow, doy = config._locale._week.doy, weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year), week = defaults(w.w, 1), null != w.d ? (weekday = w.d, (weekday < 0 || weekday > 6) && (weekdayOverflow = !0)) : null != w.e ? (weekday = w.e + dow, (w.e < 0 || w.e > 6) && (weekdayOverflow = !0)) : weekday = dow), week < 1 || week > weeksInYear(weekYear, dow, doy) ? getParsingFlags(config)._overflowWeeks = !0 : null != weekdayOverflow ? getParsingFlags(config)._overflowWeekday = !0 : (temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), config._a[YEAR] = temp.year, config._dayOfYear = temp.dayOfYear)
5832        }
5833
5834        function configFromStringAndFormat(config) {
5835            if (config._f === utils_hooks__hooks.ISO_8601) return void configFromISO(config);
5836            config._a = [], getParsingFlags(config).empty = !0;
5837            var i, parsedInput, tokens, token, skipped, string = "" + config._i,
5838                stringLength = string.length,
5839                totalParsedInputLength = 0;
5840            for (tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [], i = 0; i < tokens.length; i++) token = tokens[i], parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0], parsedInput && (skipped = string.substr(0, string.indexOf(parsedInput)), skipped.length > 0 && getParsingFlags(config).unusedInput.push(skipped), string = string.slice(string.indexOf(parsedInput) + parsedInput.length), totalParsedInputLength += parsedInput.length), formatTokenFunctions[token] ? (parsedInput ? getParsingFlags(config).empty = !1 : getParsingFlags(config).unusedTokens.push(token), addTimeToArrayFromToken(token, parsedInput, config)) : config._strict && !parsedInput && getParsingFlags(config).unusedTokens.push(token);
5841            getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength, string.length > 0 && getParsingFlags(config).unusedInput.push(string), config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === !0 && config._a[HOUR] > 0 && (getParsingFlags(config).bigHour = void 0), getParsingFlags(config).parsedDateParts = config._a.slice(0), getParsingFlags(config).meridiem = config._meridiem, config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem), configFromArray(config), checkOverflow(config)
5842        }
5843
5844        function meridiemFixWrap(locale, hour, meridiem) { var isPm; return null == meridiem ? hour : null != locale.meridiemHour ? locale.meridiemHour(hour, meridiem) : null != locale.isPM ? (isPm = locale.isPM(meridiem), isPm && hour < 12 && (hour += 12), isPm || 12 !== hour || (hour = 0), hour) : hour }
5845
5846        function configFromStringAndArray(config) {
5847            var tempConfig, bestMoment, scoreToBeat, i, currentScore;
5848            if (0 === config._f.length) return getParsingFlags(config).invalidFormat = !0, void(config._d = new Date(NaN));
5849            for (i = 0; i < config._f.length; i++) currentScore = 0, tempConfig = copyConfig({}, config), null != config._useUTC && (tempConfig._useUTC = config._useUTC), tempConfig._f = config._f[i], configFromStringAndFormat(tempConfig), valid__isValid(tempConfig) && (currentScore += getParsingFlags(tempConfig).charsLeftOver, currentScore += 10 * getParsingFlags(tempConfig).unusedTokens.length, getParsingFlags(tempConfig).score = currentScore, (null == scoreToBeat || currentScore < scoreToBeat) && (scoreToBeat = currentScore, bestMoment = tempConfig));
5850            extend(config, bestMoment || tempConfig)
5851        }
5852
5853        function configFromObject(config) {
5854            if (!config._d) {
5855                var i = normalizeObjectUnits(config._i);
5856                config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function(obj) { return obj && parseInt(obj, 10) }), configFromArray(config)
5857            }
5858        }
5859
5860        function createFromConfig(config) { var res = new Moment(checkOverflow(prepareConfig(config))); return res._nextDay && (res.add(1, "d"), res._nextDay = void 0), res }
5861
5862        function prepareConfig(config) {
5863            var input = config._i,
5864                format = config._f;
5865            return config._locale = config._locale || locale_locales__getLocale(config._l), null === input || void 0 === format && "" === input ? valid__createInvalid({ nullInput: !0 }) : ("string" == typeof input && (config._i = input = config._locale.preparse(input)), isMoment(input) ? new Moment(checkOverflow(input)) : (isArray(format) ? configFromStringAndArray(config) : isDate(input) ? config._d = input : format ? configFromStringAndFormat(config) : configFromInput(config), valid__isValid(config) || (config._d = null), config))
5866        }
5867
5868        function configFromInput(config) {
5869            var input = config._i;
5870            void 0 === input ? config._d = new Date(utils_hooks__hooks.now()) : isDate(input) ? config._d = new Date(input.valueOf()) : "string" == typeof input ? configFromString(config) : isArray(input) ? (config._a = map(input.slice(0), function(obj) { return parseInt(obj, 10) }), configFromArray(config)) : "object" == typeof input ? configFromObject(config) : "number" == typeof input ? config._d = new Date(input) : utils_hooks__hooks.createFromInputFallback(config)
5871        }
5872
5873        function createLocalOrUTC(input, format, locale, strict, isUTC) { var c = {}; return "boolean" == typeof locale && (strict = locale, locale = void 0), (isObject(input) && isObjectEmpty(input) || isArray(input) && 0 === input.length) && (input = void 0), c._isAMomentObject = !0, c._useUTC = c._isUTC = isUTC, c._l = locale, c._i = input, c._f = format, c._strict = strict, createFromConfig(c) }
5874
5875        function local__createLocal(input, format, locale, strict) { return createLocalOrUTC(input, format, locale, strict, !1) }
5876
5877        function pickBy(fn, moments) { var res, i; if (1 === moments.length && isArray(moments[0]) && (moments = moments[0]), !moments.length) return local__createLocal(); for (res = moments[0], i = 1; i < moments.length; ++i) moments[i].isValid() && !moments[i][fn](res) || (res = moments[i]); return res }
5878
5879        function min() { var args = [].slice.call(arguments, 0); return pickBy("isBefore", args) }
5880
5881        function max() { var args = [].slice.call(arguments, 0); return pickBy("isAfter", args) }
5882
5883        function Duration(duration) {
5884            var normalizedInput = normalizeObjectUnits(duration),
5885                years = normalizedInput.year || 0,
5886                quarters = normalizedInput.quarter || 0,
5887                months = normalizedInput.month || 0,
5888                weeks = normalizedInput.week || 0,
5889                days = normalizedInput.day || 0,
5890                hours = normalizedInput.hour || 0,
5891                minutes = normalizedInput.minute || 0,
5892                seconds = normalizedInput.second || 0,
5893                milliseconds = normalizedInput.millisecond || 0;
5894            this._milliseconds = +milliseconds + 1e3 * seconds + 6e4 * minutes + 1e3 * hours * 60 * 60, this._days = +days + 7 * weeks, this._months = +months + 3 * quarters + 12 * years, this._data = {}, this._locale = locale_locales__getLocale(), this._bubble()
5895        }
5896
5897        function isDuration(obj) { return obj instanceof Duration }
5898
5899        function absRound(number) { return number < 0 ? Math.round(-1 * number) * -1 : Math.round(number) }
5900
5901        function offset(token, separator) {
5902            addFormatToken(token, 0, 0, function() {
5903                var offset = this.utcOffset(),
5904                    sign = "+";
5905                return offset < 0 && (offset = -offset, sign = "-"), sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2)
5906            })
5907        }
5908
5909        function offsetFromString(matcher, string) {
5910            var matches = (string || "").match(matcher) || [],
5911                chunk = matches[matches.length - 1] || [],
5912                parts = (chunk + "").match(chunkOffset) || ["-", 0, 0],
5913                minutes = +(60 * parts[1]) + toInt(parts[2]);
5914            return "+" === parts[0] ? minutes : -minutes
5915        }
5916
5917        function cloneWithOffset(input, model) { var res, diff; return model._isUTC ? (res = model.clone(), diff = (isMoment(input) || isDate(input) ? input.valueOf() : local__createLocal(input).valueOf()) - res.valueOf(), res._d.setTime(res._d.valueOf() + diff), utils_hooks__hooks.updateOffset(res, !1), res) : local__createLocal(input).local() }
5918
5919        function getDateOffset(m) { return 15 * -Math.round(m._d.getTimezoneOffset() / 15) }
5920
5921        function getSetOffset(input, keepLocalTime) { var localAdjust, offset = this._offset || 0; return this.isValid() ? null != input ? ("string" == typeof input ? input = offsetFromString(matchShortOffset, input) : Math.abs(input) < 16 && (input *= 60), !this._isUTC && keepLocalTime && (localAdjust = getDateOffset(this)), this._offset = input, this._isUTC = !0, null != localAdjust && this.add(localAdjust, "m"), offset !== input && (!keepLocalTime || this._changeInProgress ? add_subtract__addSubtract(this, create__createDuration(input - offset, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, utils_hooks__hooks.updateOffset(this, !0), this._changeInProgress = null)), this) : this._isUTC ? offset : getDateOffset(this) : null != input ? this : NaN }
5922
5923        function getSetZone(input, keepLocalTime) { return null != input ? ("string" != typeof input && (input = -input), this.utcOffset(input, keepLocalTime), this) : -this.utcOffset() }
5924
5925        function setOffsetToUTC(keepLocalTime) { return this.utcOffset(0, keepLocalTime) }
5926
5927        function setOffsetToLocal(keepLocalTime) { return this._isUTC && (this.utcOffset(0, keepLocalTime), this._isUTC = !1, keepLocalTime && this.subtract(getDateOffset(this), "m")), this }
5928
5929        function setOffsetToParsedOffset() {
5930            if (this._tzm) this.utcOffset(this._tzm);
5931            else if ("string" == typeof this._i) {
5932                var tZone = offsetFromString(matchOffset, this._i);
5933                0 === tZone ? this.utcOffset(0, !0) : this.utcOffset(offsetFromString(matchOffset, this._i))
5934            }
5935            return this
5936        }
5937
5938        function hasAlignedHourOffset(input) { return !!this.isValid() && (input = input ? local__createLocal(input).utcOffset() : 0, (this.utcOffset() - input) % 60 === 0) }
5939
5940        function isDaylightSavingTime() { return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() }
5941
5942        function isDaylightSavingTimeShifted() {
5943            if (!isUndefined(this._isDSTShifted)) return this._isDSTShifted;
5944            var c = {};
5945            if (copyConfig(c, this), c = prepareConfig(c), c._a) {
5946                var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a);
5947                this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0
5948            } else this._isDSTShifted = !1;
5949            return this._isDSTShifted
5950        }
5951
5952        function isLocal() { return !!this.isValid() && !this._isUTC }
5953
5954        function isUtcOffset() { return !!this.isValid() && this._isUTC }
5955
5956        function isUtc() { return !!this.isValid() && (this._isUTC && 0 === this._offset) }
5957
5958        function create__createDuration(input, key) {
5959            var sign, ret, diffRes, duration = input,
5960                match = null;
5961            return isDuration(input) ? duration = { ms: input._milliseconds, d: input._days, M: input._months } : "number" == typeof input ? (duration = {}, key ? duration[key] = input : duration.milliseconds = input) : (match = aspNetRegex.exec(input)) ? (sign = "-" === match[1] ? -1 : 1, duration = { y: 0, d: toInt(match[DATE]) * sign, h: toInt(match[HOUR]) * sign, m: toInt(match[MINUTE]) * sign, s: toInt(match[SECOND]) * sign, ms: toInt(absRound(1e3 * match[MILLISECOND])) * sign }) : (match = isoRegex.exec(input)) ? (sign = "-" === match[1] ? -1 : 1, duration = { y: parseIso(match[2], sign), M: parseIso(match[3], sign), w: parseIso(match[4], sign), d: parseIso(match[5], sign), h: parseIso(match[6], sign), m: parseIso(match[7], sign), s: parseIso(match[8], sign) }) : null == duration ? duration = {} : "object" == typeof duration && ("from" in duration || "to" in duration) && (diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to)), duration = {}, duration.ms = diffRes.milliseconds, duration.M = diffRes.months), ret = new Duration(duration), isDuration(input) && hasOwnProp(input, "_locale") && (ret._locale = input._locale), ret
5962        }
5963
5964        function parseIso(inp, sign) { var res = inp && parseFloat(inp.replace(",", ".")); return (isNaN(res) ? 0 : res) * sign }
5965
5966        function positiveMomentsDifference(base, other) { var res = { milliseconds: 0, months: 0 }; return res.months = other.month() - base.month() + 12 * (other.year() - base.year()), base.clone().add(res.months, "M").isAfter(other) && --res.months, res.milliseconds = +other - +base.clone().add(res.months, "M"), res }
5967
5968        function momentsDifference(base, other) { var res; return base.isValid() && other.isValid() ? (other = cloneWithOffset(other, base), base.isBefore(other) ? res = positiveMomentsDifference(base, other) : (res = positiveMomentsDifference(other, base), res.milliseconds = -res.milliseconds, res.months = -res.months), res) : { milliseconds: 0, months: 0 } }
5969
5970        function createAdder(direction, name) { return function(val, period) { var dur, tmp; return null === period || isNaN(+period) || (deprecateSimple(name, "moment()." + name + "(period, number) is deprecated. Please use moment()." + name + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), tmp = val, val = period, period = tmp), val = "string" == typeof val ? +val : val, dur = create__createDuration(val, period), add_subtract__addSubtract(this, dur, direction), this } }
5971
5972        function add_subtract__addSubtract(mom, duration, isAdding, updateOffset) {
5973            var milliseconds = duration._milliseconds,
5974                days = absRound(duration._days),
5975                months = absRound(duration._months);
5976            mom.isValid() && (updateOffset = null == updateOffset || updateOffset, milliseconds && mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding), days && get_set__set(mom, "Date", get_set__get(mom, "Date") + days * isAdding), months && setMonth(mom, get_set__get(mom, "Month") + months * isAdding),
5977                updateOffset && utils_hooks__hooks.updateOffset(mom, days || months))
5978        }
5979
5980        function getCalendarFormat(myMoment, now) { var diff = myMoment.diff(now, "days", !0); return diff < -6 ? "sameElse" : diff < -1 ? "lastWeek" : diff < 0 ? "lastDay" : diff < 1 ? "sameDay" : diff < 2 ? "nextDay" : diff < 7 ? "nextWeek" : "sameElse" }
5981
5982        function moment_calendar__calendar(time, formats) {
5983            var now = time || local__createLocal(),
5984                sod = cloneWithOffset(now, this).startOf("day"),
5985                format = utils_hooks__hooks.calendarFormat(this, sod) || "sameElse",
5986                output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);
vendor: 4,741 bytes, lines 5987-6030
5987            return this.format(output || this.localeData().calendar(format, this, local__createLocal(now)))
5988        }
5989
5990        function clone() { return new Moment(this) }
5991
5992        function isAfter(input, units) { var localInput = isMoment(input) ? input : local__createLocal(input); return !(!this.isValid() || !localInput.isValid()) && (units = normalizeUnits(isUndefined(units) ? "millisecond" : units), "millisecond" === units ? this.valueOf() > localInput.valueOf() : localInput.valueOf() < this.clone().startOf(units).valueOf()) }
5993
5994        function isBefore(input, units) { var localInput = isMoment(input) ? input : local__createLocal(input); return !(!this.isValid() || !localInput.isValid()) && (units = normalizeUnits(isUndefined(units) ? "millisecond" : units), "millisecond" === units ? this.valueOf() < localInput.valueOf() : this.clone().endOf(units).valueOf() < localInput.valueOf()) }
5995
5996        function isBetween(from, to, units, inclusivity) { return inclusivity = inclusivity || "()", ("(" === inclusivity[0] ? this.isAfter(from, units) : !this.isBefore(from, units)) && (")" === inclusivity[1] ? this.isBefore(to, units) : !this.isAfter(to, units)) }
5997
5998        function isSame(input, units) { var inputMs, localInput = isMoment(input) ? input : local__createLocal(input); return !(!this.isValid() || !localInput.isValid()) && (units = normalizeUnits(units || "millisecond"), "millisecond" === units ? this.valueOf() === localInput.valueOf() : (inputMs = localInput.valueOf(), this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf())) }
5999
6000        function isSameOrAfter(input, units) { return this.isSame(input, units) || this.isAfter(input, units) }
6001
6002        function isSameOrBefore(input, units) { return this.isSame(input, units) || this.isBefore(input, units) }
6003
6004        function diff(input, units, asFloat) { var that, zoneDelta, delta, output; return this.isValid() ? (that = cloneWithOffset(input, this), that.isValid() ? (zoneDelta = 6e4 * (that.utcOffset() - this.utcOffset()), units = normalizeUnits(units), "year" === units || "month" === units || "quarter" === units ? (output = monthDiff(this, that), "quarter" === units ? output /= 3 : "year" === units && (output /= 12)) : (delta = this - that, output = "second" === units ? delta / 1e3 : "minute" === units ? delta / 6e4 : "hour" === units ? delta / 36e5 : "day" === units ? (delta - zoneDelta) / 864e5 : "week" === units ? (delta - zoneDelta) / 6048e5 : delta), asFloat ? output : absFloor(output)) : NaN) : NaN }
6005
6006        function monthDiff(a, b) {
6007            var anchor2, adjust, wholeMonthDiff = 12 * (b.year() - a.year()) + (b.month() - a.month()),
6008                anchor = a.clone().add(wholeMonthDiff, "months");
6009            return b - anchor < 0 ? (anchor2 = a.clone().add(wholeMonthDiff - 1, "months"), adjust = (b - anchor) / (anchor - anchor2)) : (anchor2 = a.clone().add(wholeMonthDiff + 1, "months"), adjust = (b - anchor) / (anchor2 - anchor)), -(wholeMonthDiff + adjust) || 0
6010        }
6011
6012        function toString() { return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ") }
6013
6014        function moment_format__toISOString() { var m = this.clone().utc(); return 0 < m.year() && m.year() <= 9999 ? isFunction(Date.prototype.toISOString) ? this.toDate().toISOString() : formatMoment(m, "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]") : formatMoment(m, "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]") }
6015
6016        function moment_format__format(inputString) { inputString || (inputString = this.isUtc() ? utils_hooks__hooks.defaultFormatUtc : utils_hooks__hooks.defaultFormat); var output = formatMoment(this, inputString); return this.localeData().postformat(output) }
6017
6018        function from(time, withoutSuffix) { return this.isValid() && (isMoment(time) && time.isValid() || local__createLocal(time).isValid()) ? create__createDuration({ to: this, from: time }).locale(this.locale()).humanize(!withoutSuffix) : this.localeData().invalidDate() }
6019
6020        function fromNow(withoutSuffix) { return this.from(local__createLocal(), withoutSuffix) }
6021
6022        function to(time, withoutSuffix) { return this.isValid() && (isMoment(time) && time.isValid() || local__createLocal(time).isValid()) ? create__createDuration({ from: this, to: time }).locale(this.locale()).humanize(!withoutSuffix) : this.localeData().invalidDate() }
6023
6024        function toNow(withoutSuffix) { return this.to(local__createLocal(), withoutSuffix) }
6025
6026        function locale(key) { var newLocaleData; return void 0 === key ? this._locale._abbr : (newLocaleData = locale_locales__getLocale(key), null != newLocaleData && (this._locale = newLocaleData), this) }
6027
6028        function localeData() { return this._locale }
6029
6030        function startOf(units) {
vendor: 11,061 bytes, lines 6031-6203
6031            switch (units = normalizeUnits(units)) {
6032                case "year":
6033                    this.month(0);
6034                case "quarter":
6035                case "month":
6036                    this.date(1);
6037                case "week":
6038                case "isoWeek":
6039                case "day":
6040                case "date":
6041                    this.hours(0);
6042                case "hour":
6043                    this.minutes(0);
6044                case "minute":
6045                    this.seconds(0);
6046                case "second":
6047                    this.milliseconds(0)
6048            }
6049            return "week" === units && this.weekday(0), "isoWeek" === units && this.isoWeekday(1), "quarter" === units && this.month(3 * Math.floor(this.month() / 3)), this
6050        }
6051
6052        function endOf(units) { return units = normalizeUnits(units), void 0 === units || "millisecond" === units ? this : ("date" === units && (units = "day"), this.startOf(units).add(1, "isoWeek" === units ? "week" : units).subtract(1, "ms")) }
6053
6054        function to_type__valueOf() { return this._d.valueOf() - 6e4 * (this._offset || 0) }
6055
6056        function unix() { return Math.floor(this.valueOf() / 1e3) }
6057
6058        function toDate() { return new Date(this.valueOf()) }
6059
6060        function toArray() { var m = this; return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()] }
6061
6062        function toObject() { var m = this; return { years: m.year(), months: m.month(), date: m.date(), hours: m.hours(), minutes: m.minutes(), seconds: m.seconds(), milliseconds: m.milliseconds() } }
6063
6064        function toJSON() { return this.isValid() ? this.toISOString() : null }
6065
6066        function moment_valid__isValid() { return valid__isValid(this) }
6067
6068        function parsingFlags() { return extend({}, getParsingFlags(this)) }
6069
6070        function invalidAt() { return getParsingFlags(this).overflow }
6071
6072        function creationData() { return { input: this._i, format: this._f, locale: this._locale, isUTC: this._isUTC, strict: this._strict } }
6073
6074        function addWeekYearFormatToken(token, getter) { addFormatToken(0, [token, token.length], 0, getter) }
6075
6076        function getSetWeekYear(input) { return getSetWeekYearHelper.call(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy) }
6077
6078        function getSetISOWeekYear(input) { return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4) }
6079
6080        function getISOWeeksInYear() { return weeksInYear(this.year(), 1, 4) }
6081
6082        function getWeeksInYear() { var weekInfo = this.localeData()._week; return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy) }
6083
6084        function getSetWeekYearHelper(input, week, weekday, dow, doy) { var weeksTarget; return null == input ? weekOfYear(this, dow, doy).year : (weeksTarget = weeksInYear(input, dow, doy), week > weeksTarget && (week = weeksTarget), setWeekAll.call(this, input, week, weekday, dow, doy)) }
6085
6086        function setWeekAll(weekYear, week, weekday, dow, doy) {
6087            var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
6088                date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
6089            return this.year(date.getUTCFullYear()), this.month(date.getUTCMonth()), this.date(date.getUTCDate()), this
6090        }
6091
6092        function getSetQuarter(input) { return null == input ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (input - 1) + this.month() % 3) }
6093
6094        function getSetDayOfYear(input) { var dayOfYear = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1; return null == input ? dayOfYear : this.add(input - dayOfYear, "d") }
6095
6096        function parseMs(input, array) { array[MILLISECOND] = toInt(1e3 * ("0." + input)) }
6097
6098        function getZoneAbbr() { return this._isUTC ? "UTC" : "" }
6099
6100        function getZoneName() { return this._isUTC ? "Coordinated Universal Time" : "" }
6101
6102        function moment_moment__createUnix(input) { return local__createLocal(1e3 * input) }
6103
6104        function moment_moment__createInZone() { return local__createLocal.apply(null, arguments).parseZone() }
6105
6106        function preParsePostFormat(string) { return string }
6107
6108        function lists__get(format, index, field, setter) {
6109            var locale = locale_locales__getLocale(),
6110                utc = create_utc__createUTC().set(setter, index);
6111            return locale[field](utc, format)
6112        }
6113
6114        function listMonthsImpl(format, index, field) { if ("number" == typeof format && (index = format, format = void 0), format = format || "", null != index) return lists__get(format, index, field, "month"); var i, out = []; for (i = 0; i < 12; i++) out[i] = lists__get(format, i, field, "month"); return out }
6115
6116        function listWeekdaysImpl(localeSorted, format, index, field) {
6117            "boolean" == typeof localeSorted ? ("number" == typeof format && (index = format, format = void 0), format = format || "") : (format = localeSorted, index = format, localeSorted = !1, "number" == typeof format && (index = format, format = void 0), format = format || "");
6118            var locale = locale_locales__getLocale(),
6119                shift = localeSorted ? locale._week.dow : 0;
6120            if (null != index) return lists__get(format, (index + shift) % 7, field, "day");
6121            var i, out = [];
6122            for (i = 0; i < 7; i++) out[i] = lists__get(format, (i + shift) % 7, field, "day");
6123            return out
6124        }
6125
6126        function lists__listMonths(format, index) { return listMonthsImpl(format, index, "months") }
6127
6128        function lists__listMonthsShort(format, index) { return listMonthsImpl(format, index, "monthsShort") }
6129
6130        function lists__listWeekdays(localeSorted, format, index) { return listWeekdaysImpl(localeSorted, format, index, "weekdays") }
6131
6132        function lists__listWeekdaysShort(localeSorted, format, index) { return listWeekdaysImpl(localeSorted, format, index, "weekdaysShort") }
6133
6134        function lists__listWeekdaysMin(localeSorted, format, index) { return listWeekdaysImpl(localeSorted, format, index, "weekdaysMin") }
6135
6136        function duration_abs__abs() { var data = this._data; return this._milliseconds = mathAbs(this._milliseconds), this._days = mathAbs(this._days), this._months = mathAbs(this._months), data.milliseconds = mathAbs(data.milliseconds), data.seconds = mathAbs(data.seconds), data.minutes = mathAbs(data.minutes), data.hours = mathAbs(data.hours), data.months = mathAbs(data.months), data.years = mathAbs(data.years), this }
6137
6138        function duration_add_subtract__addSubtract(duration, input, value, direction) { var other = create__createDuration(input, value); return duration._milliseconds += direction * other._milliseconds, duration._days += direction * other._days, duration._months += direction * other._months, duration._bubble() }
6139
6140        function duration_add_subtract__add(input, value) { return duration_add_subtract__addSubtract(this, input, value, 1) }
6141
6142        function duration_add_subtract__subtract(input, value) { return duration_add_subtract__addSubtract(this, input, value, -1) }
6143
6144        function absCeil(number) { return number < 0 ? Math.floor(number) : Math.ceil(number) }
6145
6146        function bubble() {
6147            var seconds, minutes, hours, years, monthsFromDays, milliseconds = this._milliseconds,
6148                days = this._days,
6149                months = this._months,
6150                data = this._data;
6151            return milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0 || (milliseconds += 864e5 * absCeil(monthsToDays(months) + days), days = 0, months = 0), data.milliseconds = milliseconds % 1e3, seconds = absFloor(milliseconds / 1e3), data.seconds = seconds % 60, minutes = absFloor(seconds / 60), data.minutes = minutes % 60, hours = absFloor(minutes / 60), data.hours = hours % 24, days += absFloor(hours / 24), monthsFromDays = absFloor(daysToMonths(days)), months += monthsFromDays, days -= absCeil(monthsToDays(monthsFromDays)), years = absFloor(months / 12), months %= 12, data.days = days, data.months = months, data.years = years, this
6152        }
6153
6154        function daysToMonths(days) { return 4800 * days / 146097 }
6155
6156        function monthsToDays(months) { return 146097 * months / 4800 }
6157
6158        function as(units) {
6159            var days, months, milliseconds = this._milliseconds;
6160            if (units = normalizeUnits(units), "month" === units || "year" === units) return days = this._days + milliseconds / 864e5, months = this._months + daysToMonths(days), "month" === units ? months : months / 12;
6161            switch (days = this._days + Math.round(monthsToDays(this._months)), units) {
6162                case "week":
6163                    return days / 7 + milliseconds / 6048e5;
6164                case "day":
6165                    return days + milliseconds / 864e5;
6166                case "hour":
6167                    return 24 * days + milliseconds / 36e5;
6168                case "minute":
6169                    return 1440 * days + milliseconds / 6e4;
6170                case "second":
6171                    return 86400 * days + milliseconds / 1e3;
6172                case "millisecond":
6173                    return Math.floor(864e5 * days) + milliseconds;
6174                default:
6175                    throw new Error("Unknown unit " + units)
6176            }
6177        }
6178
6179        function duration_as__valueOf() { return this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * toInt(this._months / 12) }
6180
6181        function makeAs(alias) { return function() { return this.as(alias) } }
6182
6183        function duration_get__get(units) { return units = normalizeUnits(units), this[units + "s"]() }
6184
6185        function makeGetter(name) { return function() { return this._data[name] } }
6186
6187        function weeks() { return absFloor(this.days() / 7) }
6188
6189        function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture) }
6190
6191        function duration_humanize__relativeTime(posNegDuration, withoutSuffix, locale) {
6192            var duration = create__createDuration(posNegDuration).abs(),
6193                seconds = round(duration.as("s")),
6194                minutes = round(duration.as("m")),
6195                hours = round(duration.as("h")),
6196                days = round(duration.as("d")),
6197                months = round(duration.as("M")),
6198                years = round(duration.as("y")),
6199                a = seconds < thresholds.s && ["s", seconds] || minutes <= 1 && ["m"] || minutes < thresholds.m && ["mm", minutes] || hours <= 1 && ["h"] || hours < thresholds.h && ["hh", hours] || days <= 1 && ["d"] || days < thresholds.d && ["dd", days] || months <= 1 && ["M"] || months < thresholds.M && ["MM", months] || years <= 1 && ["y"] || ["yy", years];
6200            return a[2] = withoutSuffix, a[3] = +posNegDuration > 0, a[4] = locale, substituteTimeAgo.apply(null, a)
6201        }
6202
6203        function duration_humanize__getSetRelativeTimeRounding(rou
vendor: 21,762 bytes, lines 6203-6560
6203ndingFunction) { return void 0 === roundingFunction ? round : "function" == typeof roundingFunction && (round = roundingFunction, !0) }
6204
6205        function duration_humanize__getSetRelativeTimeThreshold(threshold, limit) { return void 0 !== thresholds[threshold] && (void 0 === limit ? thresholds[threshold] : (thresholds[threshold] = limit, !0)) }
6206
6207        function humanize(withSuffix) {
6208            var locale = this.localeData(),
6209                output = duration_humanize__relativeTime(this, !withSuffix, locale);
6210            return withSuffix && (output = locale.pastFuture(+this, output)), locale.postformat(output)
6211        }
6212
6213        function iso_string__toISOString() {
6214            var minutes, hours, years, seconds = iso_string__abs(this._milliseconds) / 1e3,
6215                days = iso_string__abs(this._days),
6216                months = iso_string__abs(this._months);
6217            minutes = absFloor(seconds / 60), hours = absFloor(minutes / 60), seconds %= 60, minutes %= 60, years = absFloor(months / 12), months %= 12;
6218            var Y = years,
6219                M = months,
6220                D = days,
6221                h = hours,
6222                m = minutes,
6223                s = seconds,
6224                total = this.asSeconds();
6225            return total ? (total < 0 ? "-" : "") + "P" + (Y ? Y + "Y" : "") + (M ? M + "M" : "") + (D ? D + "D" : "") + (h || m || s ? "T" : "") + (h ? h + "H" : "") + (m ? m + "M" : "") + (s ? s + "S" : "") : "P0D"
6226        }
6227
6228        function be__plural(word, num) { var forms = word.split("_"); return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2] }
6229
6230        function be__relativeTimeWithPlural(number, withoutSuffix, key) { var format = { mm: withoutSuffix ? "хвіліна_хвіліны_хвілін" : "хвіліну_хвіліны_хвілін", hh: withoutSuffix ? "гадзіна_гадзіны_гадзін" : "гадзіну_гадзіны_гадзін", dd: "дзень_дні_дзён", MM: "месяц_месяцы_месяцаў", yy: "год_гады_гадоў" }; return "m" === key ? withoutSuffix ? "хвіліна" : "хвіліну" : "h" === key ? withoutSuffix ? "гадзіна" : "гадзіну" : number + " " + be__plural(format[key], +number) }
6231
6232        function relativeTimeWithMutation(number, withoutSuffix, key) { var format = { mm: "munutenn", MM: "miz", dd: "devezh" }; return number + " " + mutation(format[key], number) }
6233
6234        function specialMutationForYears(number) {
6235            switch (lastNumber(number)) {
6236                case 1:
6237                case 3:
6238                case 4:
6239                case 5:
6240                case 9:
6241                    return number + " bloaz";
6242                default:
6243                    return number + " vloaz"
6244            }
6245        }
6246
6247        function lastNumber(number) { return number > 9 ? lastNumber(number % 10) : number }
6248
6249        function mutation(text, number) { return 2 === number ? softMutation(text) : text }
6250
6251        function softMutation(text) { var mutationTable = { m: "v", b: "v", d: "z" }; return void 0 === mutationTable[text.charAt(0)] ? text : mutationTable[text.charAt(0)] + text.substring(1) }
6252
6253        function bs__translate(number, withoutSuffix, key) {
6254            var result = number + " ";
6255            switch (key) {
6256                case "m":
6257                    return withoutSuffix ? "jedna minuta" : "jedne minute";
6258                case "mm":
6259                    return result += 1 === number ? "minuta" : 2 === number || 3 === number || 4 === number ? "minute" : "minuta";
6260                case "h":
6261                    return withoutSuffix ? "jedan sat" : "jednog sata";
6262                case "hh":
6263                    return result += 1 === number ? "sat" : 2 === number || 3 === number || 4 === number ? "sata" : "sati";
6264                case "dd":
6265                    return result += 1 === number ? "dan" : "dana";
6266                case "MM":
6267                    return result += 1 === number ? "mjesec" : 2 === number || 3 === number || 4 === number ? "mjeseca" : "mjeseci";
6268                case "yy":
6269                    return result += 1 === number ? "godina" : 2 === number || 3 === number || 4 === number ? "godine" : "godina"
6270            }
6271        }
6272
6273        function cs__plural(n) { return n > 1 && n < 5 && 1 !== ~~(n / 10) }
6274
6275        function cs__translate(number, withoutSuffix, key, isFuture) {
6276            var result = number + " ";
6277            switch (key) {
6278                case "s":
6279                    return withoutSuffix || isFuture ? "pár sekund" : "pár sekundami";
6280                case "m":
6281                    return withoutSuffix ? "minuta" : isFuture ? "minutu" : "minutou";
6282                case "mm":
6283                    return withoutSuffix || isFuture ? result + (cs__plural(number) ? "minuty" : "minut") : result + "minutami";
6284                case "h":
6285                    return withoutSuffix ? "hodina" : isFuture ? "hodinu" : "hodinou";
6286                case "hh":
6287                    return withoutSuffix || isFuture ? result + (cs__plural(number) ? "hodiny" : "hodin") : result + "hodinami";
6288                case "d":
6289                    return withoutSuffix || isFuture ? "den" : "dnem";
6290                case "dd":
6291                    return withoutSuffix || isFuture ? result + (cs__plural(number) ? "dny" : "dní") : result + "dny";
6292                case "M":
6293                    return withoutSuffix || isFuture ? "měsíc" : "měsícem";
6294                case "MM":
6295                    return withoutSuffix || isFuture ? result + (cs__plural(number) ? "měsíce" : "měsíců") : result + "měsíci";
6296                case "y":
6297                    return withoutSuffix || isFuture ? "rok" : "rokem";
6298                case "yy":
6299                    return withoutSuffix || isFuture ? result + (cs__plural(number) ? "roky" : "let") : result + "lety"
6300            }
6301        }
6302
6303        function de_at__processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { m: ["eine Minute", "einer Minute"], h: ["eine Stunde", "einer Stunde"], d: ["ein Tag", "einem Tag"], dd: [number + " Tage", number + " Tagen"], M: ["ein Monat", "einem Monat"], MM: [number + " Monate", number + " Monaten"], y: ["ein Jahr", "einem Jahr"], yy: [number + " Jahre", number + " Jahren"] }; return withoutSuffix ? format[key][0] : format[key][1] }
6304
6305        function de__processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { m: ["eine Minute", "einer Minute"], h: ["eine Stunde", "einer Stunde"], d: ["ein Tag", "einem Tag"], dd: [number + " Tage", number + " Tagen"], M: ["ein Monat", "einem Monat"], MM: [number + " Monate", number + " Monaten"], y: ["ein Jahr", "einem Jahr"], yy: [number + " Jahre", number + " Jahren"] }; return withoutSuffix ? format[key][0] : format[key][1] }
6306
6307        function et__processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { s: ["mõne sekundi", "mõni sekund", "paar sekundit"], m: ["ühe minuti", "üks minut"], mm: [number + " minuti", number + " minutit"], h: ["ühe tunni", "tund aega", "üks tund"], hh: [number + " tunni", number + " tundi"], d: ["ühe päeva", "üks päev"], M: ["kuu aja", "kuu aega", "üks kuu"], MM: [number + " kuu", number + " kuud"], y: ["ühe aasta", "aasta", "üks aasta"], yy: [number + " aasta", number + " aastat"] }; return withoutSuffix ? format[key][2] ? format[key][2] : format[key][1] : isFuture ? format[key][0] : format[key][1] }
6308
6309        function fi__translate(number, withoutSuffix, key, isFuture) {
6310            var result = "";
6311            switch (key) {
6312                case "s":
6313                    return isFuture ? "muutaman sekunnin" : "muutama sekunti";
6314                case "m":
6315                    return isFuture ? "minuutin" : "minuutti";
6316                case "mm":
6317                    result = isFuture ? "minuutin" : "minuuttia";
6318                    break;
6319                case "h":
6320                    return isFuture ? "tunnin" : "tunti";
6321                case "hh":
6322                    result = isFuture ? "tunnin" : "tuntia";
6323                    break;
6324                case "d":
6325                    return isFuture ? "päivän" : "päivä";
6326                case "dd":
6327                    result = isFuture ? "päivän" : "päivää";
6328                    break;
6329                case "M":
6330                    return isFuture ? "kuukauden" : "kuukausi";
6331                case "MM":
6332                    result = isFuture ? "kuukauden" : "kuukautta";
6333                    break;
6334                case "y":
6335                    return isFuture ? "vuoden" : "vuosi";
6336                case "yy":
6337                    result = isFuture ? "vuoden" : "vuotta"
6338            }
6339            return result = verbalNumber(number, isFuture) + " " + result
6340        }
6341
6342        function verbalNumber(number, isFuture) { return number < 10 ? isFuture ? numbersFuture[number] : numbersPast[number] : number }
6343
6344        function hr__translate(number, withoutSuffix, key) {
6345            var result = number + " ";
6346            switch (key) {
6347                case "m":
6348                    return withoutSuffix ? "jedna minuta" : "jedne minute";
6349                case "mm":
6350                    return result += 1 === number ? "minuta" : 2 === number || 3 === number || 4 === number ? "minute" : "minuta";
6351                case "h":
6352                    return withoutSuffix ? "jedan sat" : "jednog sata";
6353                case "hh":
6354                    return result += 1 === number ? "sat" : 2 === number || 3 === number || 4 === number ? "sata" : "sati";
6355                case "dd":
6356                    return result += 1 === number ? "dan" : "dana";
6357                case "MM":
6358                    return result += 1 === number ? "mjesec" : 2 === number || 3 === number || 4 === number ? "mjeseca" : "mjeseci";
6359                case "yy":
6360                    return result += 1 === number ? "godina" : 2 === number || 3 === number || 4 === number ? "godine" : "godina"
6361            }
6362        }
6363
6364        function hu__translate(number, withoutSuffix, key, isFuture) {
6365            var num = number;
6366            switch (key) {
6367                case "s":
6368                    return isFuture || withoutSuffix ? "néhány másodperc" : "néhány másodperce";
6369                case "m":
6370                    return "egy" + (isFuture || withoutSuffix ? " perc" : " perce");
6371                case "mm":
6372                    return num + (isFuture || withoutSuffix ? " perc" : " perce");
6373                case "h":
6374                    return "egy" + (isFuture || withoutSuffix ? " óra" : " órája");
6375                case "hh":
6376                    return num + (isFuture || withoutSuffix ? " óra" : " órája");
6377                case "d":
6378                    return "egy" + (isFuture || withoutSuffix ? " nap" : " napja");
6379                case "dd":
6380                    return num + (isFuture || withoutSuffix ? " nap" : " napja");
6381                case "M":
6382                    return "egy" + (isFuture || withoutSuffix ? " hónap" : " hónapja");
6383                case "MM":
6384                    return num + (isFuture || withoutSuffix ? " hónap" : " hónapja");
6385                case "y":
6386                    return "egy" + (isFuture || withoutSuffix ? " év" : " éve");
6387                case "yy":
6388                    return num + (isFuture || withoutSuffix ? " év" : " éve")
6389            }
6390            return ""
6391        }
6392
6393        function week(isFuture) { return (isFuture ? "" : "[múlt] ") + "[" + weekEndings[this.day()] + "] LT[-kor]" }
6394
6395        function is__plural(n) { return n % 100 === 11 || n % 10 !== 1 }
6396
6397        function is__translate(number, withoutSuffix, key, isFuture) {
6398            var result = number + " ";
6399            switch (key) {
6400                case "s":
6401                    return withoutSuffix || isFuture ? "nokkrar sekúndur" : "nokkrum sekúndum";
6402                case "m":
6403                    return withoutSuffix ? "mínúta" : "mínútu";
6404                case "mm":
6405                    return is__plural(number) ? result + (withoutSuffix || isFuture ? "mínútur" : "mínútum") : withoutSuffix ? result + "mínúta" : result + "mínútu";
6406                case "hh":
6407                    return is__plural(number) ? result + (withoutSuffix || isFuture ? "klukkustundir" : "klukkustundum") : result + "klukkustund";
6408                case "d":
6409                    return withoutSuffix ? "dagur" : isFuture ? "dag" : "degi";
6410                case "dd":
6411                    return is__plural(number) ? withoutSuffix ? result + "dagar" : result + (isFuture ? "daga" : "dögum") : withoutSuffix ? result + "dagur" : result + (isFuture ? "dag" : "degi");
6412                case "M":
6413                    return withoutSuffix ? "mánuður" : isFuture ? "mánuð" : "mánuði";
6414                case "MM":
6415                    return is__plural(number) ? withoutSuffix ? result + "mánuðir" : result + (isFuture ? "mánuði" : "mánuðum") : withoutSuffix ? result + "mánuður" : result + (isFuture ? "mánuð" : "mánuði");
6416                case "y":
6417                    return withoutSuffix || isFuture ? "ár" : "ári";
6418                case "yy":
6419                    return is__plural(number) ? result + (withoutSuffix || isFuture ? "ár" : "árum") : result + (withoutSuffix || isFuture ? "ár" : "ári")
6420            }
6421        }
6422
6423        function lb__processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { m: ["eng Minutt", "enger Minutt"], h: ["eng Stonn", "enger Stonn"], d: ["een Dag", "engem Dag"], M: ["ee Mount", "engem Mount"], y: ["ee Joer", "engem Joer"] }; return withoutSuffix ? format[key][0] : format[key][1] }
6424
6425        function processFutureTime(string) { var number = string.substr(0, string.indexOf(" ")); return eifelerRegelAppliesToNumber(number) ? "a " + string : "an " + string }
6426
6427        function processPastTime(string) { var number = string.substr(0, string.indexOf(" ")); return eifelerRegelAppliesToNumber(number) ? "viru " + string : "virun " + string }
6428
6429        function eifelerRegelAppliesToNumber(number) {
6430            if (number = parseInt(number, 10), isNaN(number)) return !1;
6431            if (number < 0) return !0;
6432            if (number < 10) return 4 <= number && number <= 7;
6433            if (number < 100) {
6434                var lastDigit = number % 10,
6435                    firstDigit = number / 10;
6436                return eifelerRegelAppliesToNumber(0 === lastDigit ? firstDigit : lastDigit)
6437            }
6438            if (number < 1e4) { for (; number >= 10;) number /= 10; return eifelerRegelAppliesToNumber(number) }
6439            return number /= 1e3, eifelerRegelAppliesToNumber(number)
6440        }
6441
6442        function translateSeconds(number, withoutSuffix, key, isFuture) { return withoutSuffix ? "kelios sekundės" : isFuture ? "kelių sekundžių" : "kelias sekundes" }
6443
6444        function translateSingular(number, withoutSuffix, key, isFuture) { return withoutSuffix ? forms(key)[0] : isFuture ? forms(key)[1] : forms(key)[2] }
6445
6446        function special(number) { return number % 10 === 0 || number > 10 && number < 20 }
6447
6448        function forms(key) { return lt__units[key].split("_") }
6449
6450        function lt__translate(number, withoutSuffix, key, isFuture) { var result = number + " "; return 1 === number ? result + translateSingular(number, withoutSuffix, key[0], isFuture) : withoutSuffix ? result + (special(number) ? forms(key)[1] : forms(key)[0]) : isFuture ? result + forms(key)[1] : result + (special(number) ? forms(key)[1] : forms(key)[2]) }
6451
6452        function lv__format(forms, number, withoutSuffix) { return withoutSuffix ? number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3] : number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1] }
6453
6454        function lv__relativeTimeWithPlural(number, withoutSuffix, key) { return number + " " + lv__format(lv__units[key], number, withoutSuffix) }
6455
6456        function relativeTimeWithSingular(number, withoutSuffix, key) { return lv__format(lv__units[key], number, withoutSuffix) }
6457
6458        function relativeSeconds(number, withoutSuffix) { return withoutSuffix ? "dažas sekundes" : "dažām sekundēm" }
6459
6460        function relativeTimeMr(number, withoutSuffix, string, isFuture) {
6461            var output = "";
6462            if (withoutSuffix) switch (string) {
6463                case "s":
6464                    output = "काही सेकंद";
6465                    break;
6466                case "m":
6467                    output = "एक मिनिट";
6468                    break;
6469                case "mm":
6470                    output = "%d मिनिटे";
6471                    break;
6472                case "h":
6473                    output = "एक तास";
6474                    break;
6475                case "hh":
6476                    output = "%d तास";
6477                    break;
6478                case "d":
6479                    output = "एक दिवस";
6480                    break;
6481                case "dd":
6482                    output = "%d दिवस";
6483                    break;
6484                case "M":
6485                    output = "एक महिना";
6486                    break;
6487                case "MM":
6488                    output = "%d महिने";
6489                    break;
6490                case "y":
6491                    output = "एक वर्ष";
6492                    break;
6493                case "yy":
6494                    output = "%d वर्षे"
6495            } else switch (string) {
6496                case "s":
6497                    output = "काही सेकंदां";
6498                    break;
6499                case "m":
6500                    output = "एका मिनिटा";
6501                    break;
6502                case "mm":
6503                    output = "%d मिनिटां";
6504                    break;
6505                case "h":
6506                    output = "एका तासा";
6507                    break;
6508                case "hh":
6509                    output = "%d तासां";
6510                    break;
6511                case "d":
6512                    output = "एका दिवसा";
6513                    break;
6514                case "dd":
6515                    output = "%d दिवसां";
6516                    break;
6517                case "M":
6518                    output = "एका महिन्या";
6519                    break;
6520                case "MM":
6521                    output = "%d महिन्यां";
6522                    break;
6523                case "y":
6524                    output = "एका वर्षा";
6525                    break;
6526                case "yy":
6527                    output = "%d वर्षां"
6528            }
6529            return output.replace(/%d/i, number)
6530        }
6531
6532        function pl__plural(n) { return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1 }
6533
6534        function pl__translate(number, withoutSuffix, key) {
6535            var result = number + " ";
6536            switch (key) {
6537                case "m":
6538                    return withoutSuffix ? "minuta" : "minutÄ™";
6539                case "mm":
6540                    return result + (pl__plural(number) ? "minuty" : "minut");
6541                case "h":
6542                    return withoutSuffix ? "godzina" : "godzinÄ™";
6543                case "hh":
6544                    return result + (pl__plural(number) ? "godziny" : "godzin");
6545                case "MM":
6546                    return result + (pl__plural(number) ? "miesiące" : "miesięcy");
6547                case "yy":
6548                    return result + (pl__plural(number) ? "lata" : "lat")
6549            }
6550        }
6551
6552        function ro__relativeTimeWithPlural(number, withoutSuffix, key) {
6553            var format = { mm: "minute", hh: "ore", dd: "zile", MM: "luni", yy: "ani" },
6554                separator = " ";
6555            return (number % 100 >= 20 || number >= 100 && number % 100 === 0) && (separator = " de "), number + separator + format[key]
6556        }
6557
6558        function ru__plural(word, num) { var forms = word.split("_"); return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2] }
6559
6560        function ru__relativeTimeWithPlural(number, withoutSuffix, key) { var format = { mm: withoutSuffix ? "минута_минуты_минут" : "минуту_минуты_минут", hh: "час_часа_часов", dd: "день_дня_дней", MM: "месяц_месяца_месяцев", yy: "год_года_
6560лет" }; return "m" === key ? withoutSuffix ? "минута" : "минуту" : number + " " + ru__plural(format[key], +number) }
6561
6562        function sk__plural(n) { return n > 1 && n < 5 }
6563
6564        function sk__translate(number, withoutSuffix, key, isFuture) {
6565            var result = number + " ";
6566            switch (key) {
6567                case "s":
6568                    return withoutSuffix || isFuture ? "pár sekúnd" : "pár sekundami";
6569                case "m":
6570                    return withoutSuffix ? "minúta" : isFuture ? "minútu" : "minútou";
6571                case "mm":
6572                    return withoutSuffix || isFuture ? result + (sk__plural(number) ? "minúty" : "minút") : result + "minútami";
6573                case "h":
6574                    return withoutSuffix ? "hodina" : isFuture ? "hodinu" : "hodinou";
6575                case "hh":
6576                    return withoutSuffix || isFuture ? result + (sk__plural(number) ? "hodiny" : "hodín") : result + "hodinami";
6577                case "d":
6578                    return withoutSuffix || isFuture ? "deň" : "dňom";
6579                case "dd":
6580                    return withoutSuffix || isFuture ? result + (sk__plural(number) ? "dni" : "dní") : result + "dňami";
6581                case "M":
6582                    return withoutSuffix || isFuture ? "mesiac" : "mesiacom";
6583                case "MM":
6584                    return withoutSuffix || isFuture ? result + (sk__plural(number) ? "mesiace" : "mesiacov") : result + "mesiacmi";
6585                case "y":
6586                    return withoutSuffix || isFuture ? "rok" : "rokom";
6587                case "yy":
6588                    return withoutSuffix || isFuture ? result + (sk__plural(number) ? "roky" : "rokov") : result + "rokmi"
6589            }
6590        }
6591
6592        function sl__processRelativeTime(number, withoutSuffix, key, isFuture) {
6593            var result = number + " ";
6594            switch (key) {
6595                case "s":
6596                    return withoutSuffix || isFuture ? "nekaj sekund" : "nekaj sekundami";
6597                case "m":
6598                    return withoutSuffix ? "ena minuta" : "eno minuto";
6599                case "mm":
6600                    return result += 1 === number ? withoutSuffix ? "minuta" : "minuto" : 2 === number ? withoutSuffix || isFuture ? "minuti" : "minutama" : number < 5 ? withoutSuffix || isFuture ? "minute" : "minutami" : withoutSuffix || isFuture ? "minut" : "minutami";
6601                case "h":
6602                    return withoutSuffix ? "ena ura" : "eno uro";
6603                case "hh":
6604                    return result += 1 === number ? withoutSuffix ? "ura" : "uro" : 2 === number ? withoutSuffix || isFuture ? "uri" : "urama" : number < 5 ? withoutSuffix || isFuture ? "ure" : "urami" : withoutSuffix || isFuture ? "ur" : "urami";
6605                case "d":
6606                    return withoutSuffix || isFuture ? "en dan" : "enim dnem";
6607                case "dd":
6608                    return result += 1 === number ? withoutSuffix || isFuture ? "dan" : "dnem" : 2 === number ? withoutSuffix || isFuture ? "dni" : "dnevoma" : withoutSuffix || isFuture ? "dni" : "dnevi";
6609                case "M":
6610                    return withoutSuffix || isFuture ? "en mesec" : "enim mesecem";
6611                case "MM":
6612                    return result += 1 === number ? withoutSuffix || isFuture ? "mesec" : "mesecem" : 2 === number ? withoutSuffix || isFuture ? "meseca" : "mesecema" : number < 5 ? withoutSuffix || isFuture ? "mesece" : "meseci" : withoutSuffix || isFuture ? "mesecev" : "meseci";
6613                case "y":
6614                    return withoutSuffix || isFuture ? "eno leto" : "enim letom";
6615                case "yy":
6616                    return result += 1 === number ? withoutSuffix || isFuture ? "leto" : "letom" : 2 === number ? withoutSuffix || isFuture ? "leti" : "letoma" : number < 5 ? withoutSuffix || isFuture ? "leta" : "leti" : withoutSuffix || isFuture ? "let" : "leti"
6617            }
6618        }
6619
6620        function translateFuture(output) { var time = output; return time = output.indexOf("jaj") !== -1 ? time.slice(0, -3) + "leS" : output.indexOf("jar") !== -1 ? time.slice(0, -3) + "waQ" : output.indexOf("DIS") !== -1 ? time.slice(0, -3) + "nem" : time + " pIq" }
6621
6622        function translatePast(output) { var time = output; return time = output.indexOf("jaj") !== -1 ? time.slice(0, -3) + "Hu’" : output.indexOf("jar") !== -1 ? time.slice(0, -3) + "wen" : output.indexOf("DIS") !== -1 ? time.slice(0, -3) + "ben" : time + " ret" }
6623
6624        function tlh__translate(number, withoutSuffix, string, isFuture) {
6625            var numberNoun = numberAsNoun(number);
6626            switch (string) {
6627                case "mm":
6628                    return numberNoun + " tup";
6629                case "hh":
6630                    return numberNoun + " rep";
6631                case "dd":
6632                    return numberNoun + " jaj";
6633                case "MM":
6634                    return numberNoun + " jar";
6635                case "yy":
6636                    return numberNoun + " DIS"
6637            }
6638        }
6639
6640        function numberAsNoun(number) {
6641            var hundred = Math.floor(number % 1e3 / 100),
6642                ten = Math.floor(number % 100 / 10),
6643                one = number % 10,
6644                word = "";
6645            return hundred > 0 && (word += numbersNouns[hundred] + "vatlh"), ten > 0 && (word += ("" !== word ? " " : "") + numbersNouns[ten] + "maH"), one > 0 && (word += ("" !== word ? " " : "") + numbersNouns[one]), "" === word ? "pagh" : word
6646        }
6647
6648        function tzl__processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { s: ["viensas secunds", "'iensas secunds"], m: ["'n míut", "'iens míut"], mm: [number + " míuts", "" + number + " míuts"], h: ["'n þora", "'iensa þora"], hh: [number + " þoras", "" + number + " þoras"], d: ["'n ziua", "'iensa ziua"], dd: [number + " ziuas", "" + number + " ziuas"], M: ["'n mes", "'iens mes"], MM: [number + " mesen", "" + number + " mesen"], y: ["'n ar", "'iens ar"], yy: [number + " ars", "" + number + " ars"] }; return isFuture ? format[key][0] : withoutSuffix ? format[key][0] : format[key][1] }
6649
6650        function uk__plural(word, num) { var forms = word.split("_"); return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2] }
6651
6652        function uk__relativeTimeWithPlural(number, withoutSuffix, key) { var format = { mm: withoutSuffix ? "хвилина_хвилини_хвилин" : "хвилину_хвилини_хвилин", hh: withoutSuffix ? "година_години_годин" : "годину_години_годин", dd: "день_дні_днів", MM: "місяць_місяці_місяців", yy: "рік_роки_років" }; return "m" === key ? withoutSuffix ? "хвилина" : "хвилину" : "h" === key ? withoutSuffix ? "година" : "годину" : number + " " + uk__plural(format[key], 
6652+number) }
6653
6654        function weekdaysCaseReplace(m, format) {
6655            var weekdays = { nominative: "неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"), accusative: "неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"), genitive: "неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_") },
6656                nounCase = /(\[[ВвУу]\]) ?dddd/.test(format) ? "accusative" : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format) ? "genitive" : "nominative";
6657            return weekdays[nounCase][m.day()]
6658        }
6659
6660        function processHoursFunction(str) { return function() { return str + "о" + (11 === this.hours() ? "б" : "") + "] LT" } }
6661        var hookCallback, some;
6662        some = Array.prototype.some ? Array.prototype.some : function(fun) {
6663            for (var t = Object(this), len = t.length >>> 0, i = 0; i < len; i++)
6664                if (i in t && fun.call(this, t[i], i, t)) return !0;
6665            return !1
6666        };
6667        var momentProperties = utils_hooks__hooks.momentProperties = [],
6668            updateInProgress = !1,
6669            deprecations = {};
6670        utils_hooks__hooks.suppressDeprecationWarnings = !1, utils_hooks__hooks.deprecationHandler = null;
6671        var keys;
6672        keys = Object.keys ? Object.keys : function(obj) { var i, res = []; for (i in obj) hasOwnProp(obj, i) && res.push(i); return res };
6673        var indexOf, defaultCalendar = { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" },
6674            defaultLongDateFormat = {
6675                LTS: "h:mm:ss A",
6676                LT: "h:mm A",
6677                L: "MM/DD/YYYY",
6678                LL: "MMMM D, YYYY",
6679                LLL: "MMMM D, YYYY h:mm A",
6680                LLLL: "dddd, MMMM D, YYYY h:mm A"
6681            },
6682            defaultInvalidDate = "Invalid date",
6683            defaultOrdinal = "%d",
6684            defaultOrdinalParse = /\d{1,2}/,
6685            defaultRelativeTime = { future: "in %s", past: "%s ago", s: "a few seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" },
6686            aliases = {},
6687            priorities = {},
6688            formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
6689            localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
6690            formatFunctions = {},
6691            formatTokenFunctions = {},
6692            match1 = /\d/,
6693            match2 = /\d\d/,
6694            match3 = /\d{3}/,
6695            match4 = /\d{4}/,
6696            match6 = /[+-]?\d{6}/,
6697            match1to2 = /\d\d?/,
6698            match3to4 = /\d\d\d\d?/,
6699            match5to6 = /\d\d\d\d\d\d?/,
6700            match1to3 = /\d{1,3}/,
6701            match1to4 = /\d{1,4}/,
6702            match1to6 = /[+-]?\d{1,6}/,
6703            matchUnsigned = /\d+/,
6704            matchSigned = /[+-]?\d+/,
6705            matchOffset = /Z|[+-]\d\d:?\d\d/gi,
6706            matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi,
6707            matchTimestamp = /[+-]?\d+(\.\d{1,3})?/,
6708            matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,
6709            regexes = {},
6710            tokens = {},
6711            YEAR = 0,
6712            MONTH = 1,
6713            DATE = 2,
6714            HOUR = 3,
6715            MINUTE = 4,
6716            SECOND = 5,
6717            MILLISECOND = 6,
6718            WEEK = 7,
6719            WEEKDAY = 8;
6720        indexOf = Array.prototype.indexOf ? Array.prototype.indexOf : function(o) {
6721            var i;
6722            for (i = 0; i < this.length; ++i)
6723                if (this[i] === o) return i;
6724            return -1
6725        }, addFormatToken("M", ["MM", 2], "Mo", function() { return this.month() + 1 }), addFormatToken("MMM", 0, 0, function(format) { return this.localeData().monthsShort(this, format) }), addFormatToken("MMMM", 0, 0, function(format) { return this.localeData().months(this, format) }), addUnitAlias("month", "M"), addUnitPriority("month", 8), addRegexToken("M", match1to2), addRegexToken("MM", match1to2, match2), addRegexToken("MMM", function(isStrict, locale) { return locale.monthsShortRegex(isStrict) }), addRegexToken("MMMM", function(isStrict, locale) { return locale.monthsRegex(isStrict) }), addParseToken(["M", "MM"], function(input, array) { array[MONTH] = toInt(input) - 1 }), addParseToken(["MMM", "MMMM"], function(input, array, config, token) {
vendor: 18,472 bytes, lines 6726-6822
6726            var month = config._locale.monthsParse(input, token, config._strict);
6727            null != month ? array[MONTH] = month : getParsingFlags(config).invalidMonth = input
6728        });
6729        var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/,
6730            defaultLocaleMonths = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
6731            defaultLocaleMonthsShort = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
6732            defaultMonthsShortRegex = matchWord,
6733            defaultMonthsRegex = matchWord;
6734        addFormatToken("Y", 0, 0, function() { var y = this.year(); return y <= 9999 ? "" + y : "+" + y }), addFormatToken(0, ["YY", 2], 0, function() { return this.year() % 100 }), addFormatToken(0, ["YYYY", 4], 0, "year"), addFormatToken(0, ["YYYYY", 5], 0, "year"), addFormatToken(0, ["YYYYYY", 6, !0], 0, "year"), addUnitAlias("year", "y"), addUnitPriority("year", 1), addRegexToken("Y", matchSigned), addRegexToken("YY", match1to2, match2), addRegexToken("YYYY", match1to4, match4), addRegexToken("YYYYY", match1to6, match6), addRegexToken("YYYYYY", match1to6, match6), addParseToken(["YYYYY", "YYYYYY"], YEAR), addParseToken("YYYY", function(input, array) { array[YEAR] = 2 === input.length ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input) }), addParseToken("YY", function(input, array) { array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input) }), addParseToken("Y", function(input, array) { array[YEAR] = parseInt(input, 10) }), utils_hooks__hooks.parseTwoDigitYear = function(input) { return toInt(input) + (toInt(input) > 68 ? 1900 : 2e3) };
6735        var getSetYear = makeGetSet("FullYear", !0);
6736        addFormatToken("w", ["ww", 2], "wo", "week"), addFormatToken("W", ["WW", 2], "Wo", "isoWeek"), addUnitAlias("week", "w"), addUnitAlias("isoWeek", "W"), addUnitPriority("week", 5), addUnitPriority("isoWeek", 5), addRegexToken("w", match1to2), addRegexToken("ww", match1to2, match2), addRegexToken("W", match1to2), addRegexToken("WW", match1to2, match2), addWeekParseToken(["w", "ww", "W", "WW"], function(input, week, config, token) { week[token.substr(0, 1)] = toInt(input) });
6737        var defaultLocaleWeek = { dow: 0, doy: 6 };
6738        addFormatToken("d", 0, "do", "day"), addFormatToken("dd", 0, 0, function(format) { return this.localeData().weekdaysMin(this, format) }), addFormatToken("ddd", 0, 0, function(format) { return this.localeData().weekdaysShort(this, format) }), addFormatToken("dddd", 0, 0, function(format) { return this.localeData().weekdays(this, format) }), addFormatToken("e", 0, 0, "weekday"), addFormatToken("E", 0, 0, "isoWeekday"), addUnitAlias("day", "d"), addUnitAlias("weekday", "e"), addUnitAlias("isoWeekday", "E"), addUnitPriority("day", 11), addUnitPriority("weekday", 11), addUnitPriority("isoWeekday", 11), addRegexToken("d", match1to2), addRegexToken("e", match1to2), addRegexToken("E", match1to2), addRegexToken("dd", function(isStrict, locale) { return locale.weekdaysMinRegex(isStrict) }), addRegexToken("ddd", function(isStrict, locale) { return locale.weekdaysShortRegex(isStrict) }), addRegexToken("dddd", function(isStrict, locale) { return locale.weekdaysRegex(isStrict) }), addWeekParseToken(["dd", "ddd", "dddd"], function(input, week, config, token) {
6739            var weekday = config._locale.weekdaysParse(input, token, config._strict);
6740            null != weekday ? week.d = weekday : getParsingFlags(config).invalidWeekday = input
6741        }), addWeekParseToken(["d", "e", "E"], function(input, week, config, token) { week[token] = toInt(input) });
6742        var defaultLocaleWeekdays = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
6743            defaultLocaleWeekdaysShort = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
6744            defaultLocaleWeekdaysMin = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
6745            defaultWeekdaysRegex = matchWord,
6746            defaultWeekdaysShortRegex = matchWord,
6747            defaultWeekdaysMinRegex = matchWord;
6748        addFormatToken("H", ["HH", 2], 0, "hour"), addFormatToken("h", ["hh", 2], 0, hFormat), addFormatToken("k", ["kk", 2], 0, kFormat), addFormatToken("hmm", 0, 0, function() { return "" + hFormat.apply(this) + zeroFill(this.minutes(), 2) }), addFormatToken("hmmss", 0, 0, function() { return "" + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2) }), addFormatToken("Hmm", 0, 0, function() { return "" + this.hours() + zeroFill(this.minutes(), 2) }), addFormatToken("Hmmss", 0, 0, function() { return "" + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2) }), meridiem("a", !0), meridiem("A", !1), addUnitAlias("hour", "h"), addUnitPriority("hour", 13), addRegexToken("a", matchMeridiem), addRegexToken("A", matchMeridiem), addRegexToken("H", match1to2), addRegexToken("h", match1to2), addRegexToken("HH", match1to2, match2), addRegexToken("hh", match1to2, match2), addRegexToken("hmm", match3to4), addRegexToken("hmmss", match5to6), addRegexToken("Hmm", match3to4), addRegexToken("Hmmss", match5to6), addParseToken(["H", "HH"], HOUR), addParseToken(["a", "A"], function(input, array, config) { config._isPm = config._locale.isPM(input), config._meridiem = input }), addParseToken(["h", "hh"], function(input, array, config) { array[HOUR] = toInt(input), getParsingFlags(config).bigHour = !0 }), addParseToken("hmm", function(input, array, config) {
6749            var pos = input.length - 2;
6750            array[HOUR] = toInt(input.substr(0, pos)), array[MINUTE] = toInt(input.substr(pos)), getParsingFlags(config).bigHour = !0
6751        }), addParseToken("hmmss", function(input, array, config) {
6752            var pos1 = input.length - 4,
6753                pos2 = input.length - 2;
6754            array[HOUR] = toInt(input.substr(0, pos1)), array[MINUTE] = toInt(input.substr(pos1, 2)), array[SECOND] = toInt(input.substr(pos2)), getParsingFlags(config).bigHour = !0
6755        }), addParseToken("Hmm", function(input, array, config) {
6756            var pos = input.length - 2;
6757            array[HOUR] = toInt(input.substr(0, pos)), array[MINUTE] = toInt(input.substr(pos))
6758        }), addParseToken("Hmmss", function(input, array, config) {
6759            var pos1 = input.length - 4,
6760                pos2 = input.length - 2;
6761            array[HOUR] = toInt(input.substr(0, pos1)), array[MINUTE] = toInt(input.substr(pos1, 2)), array[SECOND] = toInt(input.substr(pos2))
6762        });
6763        var globalLocale, defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
6764            getSetHour = makeGetSet("Hours", !0),
6765            baseConfig = { calendar: defaultCalendar, longDateFormat: defaultLongDateFormat, invalidDate: defaultInvalidDate, ordinal: defaultOrdinal, ordinalParse: defaultOrdinalParse, relativeTime: defaultRelativeTime, months: defaultLocaleMonths, monthsShort: defaultLocaleMonthsShort, week: defaultLocaleWeek, weekdays: defaultLocaleWeekdays, weekdaysMin: defaultLocaleWeekdaysMin, weekdaysShort: defaultLocaleWeekdaysShort, meridiemParse: defaultLocaleMeridiemParse },
6766            locales = {},
6767            extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,
6768            basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,
6769            tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
6770            isoDates = [
6771                ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/],
6772                ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/],
6773                ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/],
6774                ["GGGG-[W]WW", /\d{4}-W\d\d/, !1],
6775                ["YYYY-DDD", /\d{4}-\d{3}/],
6776                ["YYYY-MM", /\d{4}-\d\d/, !1],
6777                ["YYYYYYMMDD", /[+-]\d{10}/],
6778                ["YYYYMMDD", /\d{8}/],
6779                ["GGGG[W]WWE", /\d{4}W\d{3}/],
6780                ["GGGG[W]WW", /\d{4}W\d{2}/, !1],
6781                ["YYYYDDD", /\d{7}/]
6782            ],
6783            isoTimes = [
6784                ["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/],
6785                ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/],
6786                ["HH:mm:ss", /\d\d:\d\d:\d\d/],
6787                ["HH:mm", /\d\d:\d\d/],
6788                ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/],
6789                ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/],
6790                ["HHmmss", /\d\d\d\d\d\d/],
6791                ["HHmm", /\d\d\d\d/],
6792                ["HH", /\d\d/]
6793            ],
6794            aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
6795        utils_hooks__hooks.createFromInputFallback = deprecate("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", function(config) { config._d = new Date(config._i + (config._useUTC ? " UTC" : "")) }), utils_hooks__hooks.ISO_8601 = function() {};
6796        var prototypeMin = deprecate("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", function() { var other = local__createLocal.apply(null, arguments); return this.isValid() && other.isValid() ? other < this ? this : other : valid__createInvalid() }),
6797            prototypeMax = deprecate("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", function() { var other = local__createLocal.apply(null, arguments); return this.isValid() && other.isValid() ? other > this ? this : other : valid__createInvalid() }),
6798            now = function() { return Date.now ? Date.now() : +new Date };
6799        offset("Z", ":"), offset("ZZ", ""), addRegexToken("Z", matchShortOffset), addRegexToken("ZZ", matchShortOffset), addParseToken(["Z", "ZZ"], function(input, array, config) { config._useUTC = !0, config._tzm = offsetFromString(matchShortOffset, input) });
6800        var chunkOffset = /([\+\-]|\d\d)/gi;
6801        utils_hooks__hooks.updateOffset = function() {};
6802        var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,
6803            isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;
6804        create__createDuration.fn = Duration.prototype;
6805        var add_subtract__add = createAdder(1, "add"),
6806            add_subtract__subtract = createAdder(-1, "subtract");
6807        utils_hooks__hooks.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", utils_hooks__hooks.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]";
6808        var lang = deprecate("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", function(key) { return void 0 === key ? this.localeData() : this.locale(key) });
6809        addFormatToken(0, ["gg", 2], 0, function() { return this.weekYear() % 100 }), addFormatToken(0, ["GG", 2], 0, function() { return this.isoWeekYear() % 100 }), addWeekYearFormatToken("gggg", "weekYear"), addWeekYearFormatToken("ggggg", "weekYear"), addWeekYearFormatToken("GGGG", "isoWeekYear"), addWeekYearFormatToken("GGGGG", "isoWeekYear"), addUnitAlias("weekYear", "gg"), addUnitAlias("isoWeekYear", "GG"), addUnitPriority("weekYear", 1), addUnitPriority("isoWeekYear", 1), addRegexToken("G", matchSigned), addRegexToken("g", matchSigned), addRegexToken("GG", match1to2, match2), addRegexToken("gg", match1to2, match2), addRegexToken("GGGG", match1to4, match4), addRegexToken("gggg", match1to4, match4), addRegexToken("GGGGG", match1to6, match6), addRegexToken("ggggg", match1to6, match6), addWeekParseToken(["gggg", "ggggg", "GGGG", "GGGGG"], function(input, week, config, token) { week[token.substr(0, 2)] = toInt(input) }), addWeekParseToken(["gg", "GG"], function(input, week, config, token) { week[token] = utils_hooks__hooks.parseTwoDigitYear(input) }), addFormatToken("Q", 0, "Qo", "quarter"), addUnitAlias("quarter", "Q"), addUnitPriority("quarter", 7), addRegexToken("Q", match1), addParseToken("Q", function(input, array) { array[MONTH] = 3 * (toInt(input) - 1) }), addFormatToken("D", ["DD", 2], "Do", "date"), addUnitAlias("date", "D"), addUnitPriority("date", 9), addRegexToken("D", match1to2), addRegexToken("DD", match1to2, match2), addRegexToken("Do", function(isStrict, locale) { return isStrict ? locale._ordinalParse : locale._ordinalParseLenient }), addParseToken(["D", "DD"], DATE), addParseToken("Do", function(input, array) { array[DATE] = toInt(input.match(match1to2)[0], 10) });
6810        var getSetDayOfMonth = makeGetSet("Date", !0);
6811        addFormatToken("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), addUnitAlias("dayOfYear", "DDD"), addUnitPriority("dayOfYear", 4), addRegexToken("DDD", match1to3), addRegexToken("DDDD", match3), addParseToken(["DDD", "DDDD"], function(input, array, config) { config._dayOfYear = toInt(input) }), addFormatToken("m", ["mm", 2], 0, "minute"), addUnitAlias("minute", "m"), addUnitPriority("minute", 14), addRegexToken("m", match1to2), addRegexToken("mm", match1to2, match2), addParseToken(["m", "mm"], MINUTE);
6812        var getSetMinute = makeGetSet("Minutes", !1);
6813        addFormatToken("s", ["ss", 2], 0, "second"), addUnitAlias("second", "s"), addUnitPriority("second", 15), addRegexToken("s", match1to2), addRegexToken("ss", match1to2, match2), addParseToken(["s", "ss"], SECOND);
6814        var getSetSecond = makeGetSet("Seconds", !1);
6815        addFormatToken("S", 0, 0, function() { return ~~(this.millisecond() / 100) }), addFormatToken(0, ["SS", 2], 0, function() { return ~~(this.millisecond() / 10) }), addFormatToken(0, ["SSS", 3], 0, "millisecond"), addFormatToken(0, ["SSSS", 4], 0, function() { return 10 * this.millisecond() }), addFormatToken(0, ["SSSSS", 5], 0, function() { return 100 * this.millisecond() }), addFormatToken(0, ["SSSSSS", 6], 0, function() { return 1e3 * this.millisecond() }), addFormatToken(0, ["SSSSSSS", 7], 0, function() { return 1e4 * this.millisecond() }), addFormatToken(0, ["SSSSSSSS", 8], 0, function() { return 1e5 * this.millisecond() }), addFormatToken(0, ["SSSSSSSSS", 9], 0, function() { return 1e6 * this.millisecond() }), addUnitAlias("millisecond", "ms"), addUnitPriority("millisecond", 16), addRegexToken("S", match1to3, match1), addRegexToken("SS", match1to3, match2), addRegexToken("SSS", match1to3, match3);
6816        var token;
6817        for (token = "SSSS"; token.length <= 9; token += "S") addRegexToken(token, matchUnsigned);
6818        for (token = "S"; token.length <= 9; token += "S") addParseToken(token, parseMs);
6819        var getSetMillisecond = makeGetSet("Milliseconds", !1);
6820        addFormatToken("z", 0, 0, "zoneAbbr"), addFormatToken("zz", 0, 0, "zoneName");
6821        var momentPrototype__proto = Moment.prototype;
6822        momentPrototype__proto.add = add_subtract__add, momentPrototype__proto.calendar = moment_calendar__calendar, momentPrototype__proto.clone = clone, momentPrototype__proto.diff = diff, momentPrototype__proto.endOf = endOf, momentPrototype__proto.format = moment_format__format, momentPrototype__proto.from = from, momentPrototype__proto.fromNow = fromNow, momentPrototype__proto.to = to, momentPrototype__proto.toNow = toNow, momentPrototype__proto.get = stringGet, momentPrototype__proto.invalidAt = invalidAt, momentPrototype__proto.isAfter = isAfter, momentPrototype__proto.isBefore = isBefore, momentPrototype__proto.isBetween = isBetween, momentPrototype__proto.isSame = isSame, momentPrototype__proto.isSameOrAfter = isSameOrAfter, momentPrototype__proto.isSameOrBefore = isSameOrBefore, momentPrototype__proto.isValid = moment_valid__isValid, momentPrototype__proto.lang = lang, momentPrototype__proto.locale = locale, momentPrototype__proto.localeData = localeData, momentPrototype__proto.max = prototypeMax, momentPrototype__proto.min = prototypeMin, momentPrototype__proto.parsingFlags = parsingFlags, momentPrototype__proto.set = stringSet, momentPrototype__proto.startOf = startOf, momentPrototype__proto.subtract = add_subtract__subtract, momentPrototype__proto.toArray = toArray, momentPrototype__proto.toObject = toObject, momentPrototype__proto.toDate = toDate, momentPrototype__proto.toISOString = moment_format__toISOString, momentPrototype__proto.toJSON = toJSON, momentPrototype__proto.toString = toString, momentPrototype__proto.unix = unix, momentPrototype__proto.valueOf = to_type__valueOf, momentPrototype__proto.creationData = creationData, momentPrototype__proto.year = getSetYear, momentPrototype__proto.isLeapYear = getIsLeapYear, momentPrototype__proto.weekYear = getSetWeekYear, momentPrototype__proto.isoWeekYear = getSetISOWeekYear, momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter, momentPrototype__proto.month = getSetMonth, momentPrototype__proto.daysInMonth = getDaysInMonth, momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek, momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek, momentPrototype__proto.weeksInYear = getWeeksInYear, momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear, momentPrototype__proto.date = getSetDayOfMonth, momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek, momentPrototype__proto.weekday = getSetLocaleDayOfWeek, momentPrototype__proto.isoWeekday = getSetISODayOfWeek, momentPrototype__proto.dayOfYear = getSetDayOfYear, momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour, momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute, momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond, momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond, momentPrototype__proto.utcOffset = getSetOffset, momentPrototype__proto.utc = setOffsetToUTC, momentPrototype__proto.local = setOffsetToLocal, momentPrototype__proto.parseZone = setOffsetToParsedOffset, momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset, momentPrototype__proto.isDST = isDaylightSavingTime, momentPrototype__proto.isLocal = isLocal, momentPrototype__proto.isUtcOffset = isUtcOffset, momentPrototype__proto.isUtc = isUtc, momentPrototype__proto.isUTC = isUtc, momentPrototype__proto.zoneAbbr = getZoneAbbr, momentPrototype__proto.zoneName = getZoneName, momentPrototype__proto.dates = deprecate("dates accessor is deprecated. Use date instead.", get
vendor: 14,550 bytes, lines 6822-6866
6822SetDayOfMonth), momentPrototype__proto.months = deprecate("months accessor is deprecated. Use month instead", getSetMonth), momentPrototype__proto.years = deprecate("years accessor is deprecated. Use year instead", getSetYear), momentPrototype__proto.zone = deprecate("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", getSetZone), momentPrototype__proto.isDSTShifted = deprecate("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", isDaylightSavingTimeShifted);
6823        var momentPrototype = momentPrototype__proto,
6824            prototype__proto = Locale.prototype;
6825        prototype__proto.calendar = locale_calendar__calendar, prototype__proto.longDateFormat = longDateFormat, prototype__proto.invalidDate = invalidDate, prototype__proto.ordinal = ordinal, prototype__proto.preparse = preParsePostFormat, prototype__proto.postformat = preParsePostFormat, prototype__proto.relativeTime = relative__relativeTime, prototype__proto.pastFuture = pastFuture, prototype__proto.set = locale_set__set, prototype__proto.months = localeMonths, prototype__proto.monthsShort = localeMonthsShort, prototype__proto.monthsParse = localeMonthsParse, prototype__proto.monthsRegex = units_month__monthsRegex, prototype__proto.monthsShortRegex = monthsShortRegex, prototype__proto.week = localeWeek, prototype__proto.firstDayOfYear = localeFirstDayOfYear, prototype__proto.firstDayOfWeek = localeFirstDayOfWeek, prototype__proto.weekdays = localeWeekdays, prototype__proto.weekdaysMin = localeWeekdaysMin, prototype__proto.weekdaysShort = localeWeekdaysShort, prototype__proto.weekdaysParse = localeWeekdaysParse, prototype__proto.weekdaysRegex = weekdaysRegex, prototype__proto.weekdaysShortRegex = weekdaysShortRegex, prototype__proto.weekdaysMinRegex = weekdaysMinRegex, prototype__proto.isPM = localeIsPM, prototype__proto.meridiem = localeMeridiem, locale_locales__getSetGlobalLocale("en", {
6826            ordinalParse: /\d{1,2}(th|st|nd|rd)/,
6827            ordinal: function(number) {
6828                var b = number % 10,
6829                    output = 1 === toInt(number % 100 / 10) ? "th" : 1 === b ? "st" : 2 === b ? "nd" : 3 === b ? "rd" : "th";
6830                return number + output
6831            }
6832        }), utils_hooks__hooks.lang = deprecate("moment.lang is deprecated. Use moment.locale instead.", locale_locales__getSetGlobalLocale), utils_hooks__hooks.langData = deprecate("moment.langData is deprecated. Use moment.localeData instead.", locale_locales__getLocale);
6833        var mathAbs = Math.abs,
6834            asMilliseconds = makeAs("ms"),
6835            asSeconds = makeAs("s"),
6836            asMinutes = makeAs("m"),
6837            asHours = makeAs("h"),
6838            asDays = makeAs("d"),
6839            asWeeks = makeAs("w"),
6840            asMonths = makeAs("M"),
6841            asYears = makeAs("y"),
6842            milliseconds = makeGetter("milliseconds"),
6843            seconds = makeGetter("seconds"),
6844            minutes = makeGetter("minutes"),
6845            hours = makeGetter("hours"),
6846            days = makeGetter("days"),
6847            duration_get__months = makeGetter("months"),
6848            years = makeGetter("years"),
6849            round = Math.round,
6850            thresholds = { s: 45, m: 45, h: 22, d: 26, M: 11 },
6851            iso_string__abs = Math.abs,
6852            duration_prototype__proto = Duration.prototype;
6853        duration_prototype__proto.abs = duration_abs__abs, duration_prototype__proto.add = duration_add_subtract__add, duration_prototype__proto.subtract = duration_add_subtract__subtract, duration_prototype__proto.as = as, duration_prototype__proto.asMilliseconds = asMilliseconds, duration_prototype__proto.asSeconds = asSeconds, duration_prototype__proto.asMinutes = asMinutes, duration_prototype__proto.asHours = asHours, duration_prototype__proto.asDays = asDays, duration_prototype__proto.asWeeks = asWeeks, duration_prototype__proto.asMonths = asMonths, duration_prototype__proto.asYears = asYears, duration_prototype__proto.valueOf = duration_as__valueOf, duration_prototype__proto._bubble = bubble, duration_prototype__proto.get = duration_get__get, duration_prototype__proto.milliseconds = milliseconds, duration_prototype__proto.seconds = seconds, duration_prototype__proto.minutes = minutes, duration_prototype__proto.hours = hours, duration_prototype__proto.days = days, duration_prototype__proto.weeks = weeks, duration_prototype__proto.months = duration_get__months, duration_prototype__proto.years = years, duration_prototype__proto.humanize = humanize, duration_prototype__proto.toISOString = iso_string__toISOString, duration_prototype__proto.toString = iso_string__toISOString, duration_prototype__proto.toJSON = iso_string__toISOString, duration_prototype__proto.locale = locale, duration_prototype__proto.localeData = localeData, duration_prototype__proto.toIsoString = deprecate("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", iso_string__toISOString), duration_prototype__proto.lang = lang, addFormatToken("X", 0, 0, "unix"), addFormatToken("x", 0, 0, "valueOf"), addRegexToken("x", matchSigned), addRegexToken("X", matchTimestamp), addParseToken("X", function(input, array, config) { config._d = new Date(1e3 * parseFloat(input, 10)) }), addParseToken("x", function(input, array, config) { config._d = new Date(toInt(input)) }), utils_hooks__hooks.version = "2.15.1", setHookCallback(local__createLocal), utils_hooks__hooks.fn = momentPrototype, utils_hooks__hooks.min = min, utils_hooks__hooks.max = max, utils_hooks__hooks.now = now, utils_hooks__hooks.utc = create_utc__createUTC, utils_hooks__hooks.unix = moment_moment__createUnix, utils_hooks__hooks.months = lists__listMonths, utils_hooks__hooks.isDate = isDate, utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale, utils_hooks__hooks.invalid = valid__createInvalid, utils_hooks__hooks.duration = create__createDuration, utils_hooks__hooks.isMoment = isMoment, utils_hooks__hooks.weekdays = lists__listWeekdays, utils_hooks__hooks.parseZone = moment_moment__createInZone, utils_hooks__hooks.localeData = locale_locales__getLocale, utils_hooks__hooks.isDuration = isDuration, utils_hooks__hooks.monthsShort = lists__listMonthsShort, utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin, utils_hooks__hooks.defineLocale = defineLocale, utils_hooks__hooks.updateLocale = updateLocale, utils_hooks__hooks.locales = locale_locales__listLocales, utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort, utils_hooks__hooks.normalizeUnits = normalizeUnits, utils_hooks__hooks.relativeTimeRounding = duration_humanize__getSetRelativeTimeRounding, utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold, utils_hooks__hooks.calendarFormat = getCalendarFormat, utils_hooks__hooks.prototype = momentPrototype;
6854        var moment__default = utils_hooks__hooks,
6855            ar_ly__symbolMap = (moment__default.defineLocale("af", { months: "Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"), monthsShort: "Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"), weekdays: "Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"), weekdaysShort: "Son_Maa_Din_Woe_Don_Vry_Sat".split("_"), weekdaysMin: "So_Ma_Di_Wo_Do_Vr_Sa".split("_"), meridiemParse: /vm|nm/i, isPM: function(input) { return /^nm$/i.test(input) }, meridiem: function(hours, minutes, isLower) { return hours < 12 ? isLower ? "vm" : "VM" : isLower ? "nm" : "NM" }, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Vandag om] LT", nextDay: "[Môre om] LT", nextWeek: "dddd [om] LT", lastDay: "[Gister om] LT", lastWeek: "[Laas] dddd [om] LT", sameElse: "L" }, relativeTime: { future: "oor %s", past: "%s gelede", s: "'n paar sekondes", m: "'n minuut", mm: "%d minute", h: "'n uur", hh: "%d ure", d: "'n dag", dd: "%d dae", M: "'n maand", MM: "%d maande", y: "'n jaar", yy: "%d jaar" }, ordinalParse: /\d{1,2}(ste|de)/, ordinal: function(number) { return number + (1 === number || 8 === number || number >= 20 ? "ste" : "de") }, week: { dow: 1, doy: 4 } }), { 1: "1", 2: "2", 3: "3", 4: "4", 5: "5", 6: "6", 7: "7", 8: "8", 9: "9", 0: "0" }),
6856            ar_ly__pluralForm = function(n) { return 0 === n ? 0 : 1 === n ? 1 : 2 === n ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5 },
6857            ar_ly__plurals = { s: ["أقل من ثانية", "ثانية واحدة", ["ثانيتان", "ثانيتين"], "%d ثوان", "%d ثانية", "%d ثانية"], m: ["أقل من دقيقة", "دقيقة واحدة", ["دقيقتان", "دقيقتين"], "%d دقائق", "%d دقيقة", "%d دقيقة"], h: ["أقل من ساعة", "ساعة واحدة", ["ساعتان", "ساعتين"], "%d ساعات", "%d ساعة", "%d ساعة"], d: ["أقل من يوم", "يوم واحد", ["يومان", "يومين"], "%d أيام", "%d يومًا", "%d يوم"], M: ["أقل من شهر", "شهر واحد", ["شهران", "شهرين"], "%d أشهر", "%d شهرا", "%d شهر"], y: ["أقل من عام", "عام واحد", ["عامان", "عامين"], "%d أعوام", "%d عامًا", "%d عام"] },
6858            ar_ly__pluralize = function(u) {
6859                return function(number, withoutSuffix, string, isFuture) {
6860                    var f = ar_ly__pluralForm(number),
6861                        str = ar_ly__plurals[u][ar_ly__pluralForm(number)];
6862                    return 2 === f && (str = str[withoutSuffix ? 0 : 1]), str.replace(/%d/i, number)
6863                }
6864            },
6865            ar_ly__months = ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"],
6866            ar_sa__symbolMap = (moment__default.defineLocale("ar-ly", { months: ar_ly__months, monthsShort: ar_ly__months, weekdays: "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), weekdaysShort: "أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"), weekdaysMin: "ح_ن_ث_ر_خ_ج_س".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "D/‏M/‏YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, meridiemParse: /ص|م/, isPM: function(input) { return "م" === input }, meridiem: function(hour, minute, isLower) { return hour < 12 ? "ص" : "م" }, calendar: { sameDay: "[اليوم عند الساعة] LT", nextDay: "[غدًا عند الساعة] LT", nextWeek: "dddd [عند الساعة] LT", lastDay: "[أمس عند الساعة] LT", lastWeek: "dddd [عند الساعة] LT", sameElse: "L" }, relativeTime: { future: "بعد %s", past: "منذ %s", s: ar_ly__pluralize("s"), m: ar_ly__pluralize("m"), mm: ar_ly__pluralize("m"), h: ar_ly__pluralize("h"), hh: ar_ly__pluralize("h"), d: ar_ly__pluralize("d"), dd: ar_ly__pluralize("d"), M: ar_ly__pluralize("M"), MM: ar_ly__pluralize("M"), y: ar_ly__pluralize("y"), yy: ar_ly__pluralize("y") }, preparse: function(string) { return string.replace(/\u200f/g, "").replace(/،/g, ",") }, postformat: function(string) { return string.replace(/\d/g, function(match) { return ar_ly__symbolMap[match] }).replace(/,/g, "،") }, week: { dow: 6, doy: 12 } }), moment__default.defineLocale("ar-ma", { months: "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"), monthsShort: "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"), weekdays: "الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), weekdaysShort: "احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"), weekdaysMin: "ح_ن_ث_ر_خ_ج_س".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[اليوم على الساعة] LT", nextDay: "[غدا على الساعة] LT", nextWeek: "dddd [على الساعة] LT", lastDay: "[أمس على الساعة] LT", lastWeek: "dddd [على الساعة] LT", sameElse: "L" }, relativeTime: { future: "في %s", past: "منذ %s", s: "ثوان", m: "دقيقة", mm: "%d دقائق", h: "ساعة", hh: "%d ساعات", d: "يوم", dd: "%d أيام", M: "شهر", MM: "%d أشهر", y: "سنة", yy: "%d سنوات" }, week: { dow: 6, doy: 12 } }
vendor: 4,795 bytes, lines 6866-6868
6866), { 1: "Ù¡", 2: "Ù¢", 3: "Ù£", 4: "Ù¤", 5: "Ù¥", 6: "Ù¦", 7: "Ù§", 8: "Ù¨", 9: "Ù©", 0: "Ù " }),
6867            ar_sa__numberMap = { "Ù¡": "1", "Ù¢": "2", "Ù£": "3", "Ù¤": "4", "Ù¥": "5", "Ù¦": "6", "Ù§": "7", "Ù¨": "8", "Ù©": "9", "Ù ": "0" },
6868            ar__symbolMap = (moment__default.defineLocale("ar-sa", { months: "يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"), monthsShort: "يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"), weekdays: "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), weekdaysShort: "أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"), weekdaysMin: "ح_ن_ث_ر_خ_ج_س".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, meridiemParse: /ص|م/, isPM: function(input) { return "م" === input }, meridiem: function(hour, minute, isLower) { return hour < 12 ? "ص" : "م" }, calendar: { sameDay: "[اليوم على الساعة] LT", nextDay: "[غدا على الساعة] LT", nextWeek: "dddd [على الساعة] LT", lastDay: "[أمس على الساعة] LT", lastWeek: "dddd [على الساعة] LT", sameElse: "L" }, relativeTime: { future: "في %s", past: "منذ %s", s: "ثوان", m: "دقيقة", mm: "%d دقائق", h: "ساعة", hh: "%d ساعات", d: "يوم", dd: "%d أيام", M: "شهر", MM: "%d أشهر", y: "سنة", yy: "%d سنوات" }, preparse: function(string) { return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function(match) { return ar_sa__numberMap[match] }).replace(/،/g, ",") }, postformat: function(string) { return string.replace(/\d/g, function(match) { return ar_sa__symbolMap[match] }).replace(/,/g, "،") }, week: { dow: 6, doy: 12 } }), moment__default.defineLocale("ar-tn", { months: "جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"), monthsShort: "جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"), weekdays: "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), weekdaysShort: "أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"), weekdaysMin: "ح_ن_ث_ر_خ_ج_س".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[اليوم على الساعة] LT", nextDay: "[غدا على الساعة] LT", nextWeek: "dddd [على الساعة] LT", lastDay: "[أمس على الساعة] LT", lastWeek: "dddd [على الساعة] LT", sameElse: "L" }, relativeTime: { future: "في %s", past: "منذ %s", s: "ثوان", m: "دقيقة", mm: "%d دقائق", h: "ساعة", hh: "%d ساعات", d: "يوم", dd: "%d أيام", M: "شهر", MM: "%d أشهر", y: "سنة", yy: "%d سنوات" }, week: { dow: 1, doy: 4 } }
vendor: 8,007 bytes, lines 6868-6920
6868), { 1: "Ù¡", 2: "Ù¢", 3: "Ù£", 4: "Ù¤", 5: "Ù¥", 6: "Ù¦", 7: "Ù§", 8: "Ù¨", 9: "Ù©", 0: "Ù " }),
6869            ar__numberMap = { "Ù¡": "1", "Ù¢": "2", "Ù£": "3", "Ù¤": "4", "Ù¥": "5", "Ù¦": "6", "Ù§": "7", "Ù¨": "8", "Ù©": "9", "Ù ": "0" },
6870            ar__pluralForm = function(n) { return 0 === n ? 0 : 1 === n ? 1 : 2 === n ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5 },
6871            ar__plurals = { s: ["أقل من ثانية", "ثانية واحدة", ["ثانيتان", "ثانيتين"], "%d ثوان", "%d ثانية", "%d ثانية"], m: ["أقل من دقيقة", "دقيقة واحدة", ["دقيقتان", "دقيقتين"], "%d دقائق", "%d دقيقة", "%d دقيقة"], h: ["أقل من ساعة", "ساعة واحدة", ["ساعتان", "ساعتين"], "%d ساعات", "%d ساعة", "%d ساعة"], d: ["أقل من يوم", "يوم واحد", ["يومان", "يومين"], "%d أيام", "%d يومًا", "%d يوم"], M: ["أقل من شهر", "شهر واحد", ["شهران", "شهرين"], "%d أشهر", "%d شهرا", "%d شهر"], y: ["أقل من عام", "عام واحد", ["عامان", "عامين"], "%d أعوام", "%d عامًا", "%d عام"] },
6872            ar__pluralize = function(u) {
6873                return function(number, withoutSuffix, string, isFuture) {
6874                    var f = ar__pluralForm(number),
6875                        str = ar__plurals[u][ar__pluralForm(number)];
6876                    return 2 === f && (str = str[withoutSuffix ? 0 : 1]), str.replace(/%d/i, number)
6877                }
6878            },
6879            ar__months = ["كانون الثاني يناير", "شباط فبراير", "آذار مارس", "نيسان أبريل", "أيار مايو", "حزيران يونيو", "تموز يوليو", "آب أغسطس", "أيلول سبتمبر", "تشرين الأول أكتوبر", "تشرين الثاني نوفمبر", "كانون الأول ديسمبر"],
6880            az__suffixes = (moment__default.defineLocale("ar", {
6881                months: ar__months,
6882                monthsShort: ar__months,
6883                weekdays: "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
6884                weekdaysShort: "أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),
6885                weekdaysMin: "ح_ن_ث_ر_خ_ج_س".split("_"),
6886                weekdaysParseExact: !0,
6887                longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "D/‏M/‏YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" },
6888                meridiemParse: /ص|م/,
6889                isPM: function(input) { return "Ù…" === input },
6890                meridiem: function(hour, minute, isLower) { return hour < 12 ? "ص" : "م" },
6891                calendar: { sameDay: "[اليوم عند الساعة] LT", nextDay: "[غدًا عند الساعة] LT", nextWeek: "dddd [عند الساعة] LT", lastDay: "[أمس عند الساعة] LT", lastWeek: "dddd [عند الساعة] LT", sameElse: "L" },
6892                relativeTime: { future: "بعد %s", past: "منذ %s", s: ar__pluralize("s"), m: ar__pluralize("m"), mm: ar__pluralize("m"), h: ar__pluralize("h"), hh: ar__pluralize("h"), d: ar__pluralize("d"), dd: ar__pluralize("d"), M: ar__pluralize("M"), MM: ar__pluralize("M"), y: ar__pluralize("y"), yy: ar__pluralize("y") },
6893                preparse: function(string) { return string.replace(/\u200f/g, "").replace(/[١٢٣٤٥٦٧٨٩٠]/g, function(match) { return ar__numberMap[match] }).replace(/،/g, ",") },
6894                postformat: function(string) { return string.replace(/\d/g, function(match) { return ar__symbolMap[match] }).replace(/,/g, "،") },
6895                week: { dow: 6, doy: 12 }
6896            }), { 1: "-inci", 5: "-inci", 8: "-inci", 70: "-inci", 80: "-inci", 2: "-nci", 7: "-nci", 20: "-nci", 50: "-nci", 3: "-üncü", 4: "-üncü", 100: "-üncü", 6: "-ncı", 9: "-uncu", 10: "-uncu", 30: "-uncu", 60: "-ıncı", 90: "-ıncı" }),
6897            bn__symbolMap = (moment__default.defineLocale("az", {
6898                months: "yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),
6899                monthsShort: "yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),
6900                weekdays: "Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),
6901                weekdaysShort: "Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),
6902                weekdaysMin: "Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),
6903                weekdaysParseExact: !0,
6904                longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" },
6905                calendar: { sameDay: "[bugün saat] LT", nextDay: "[sabah saat] LT", nextWeek: "[gələn həftə] dddd [saat] LT", lastDay: "[dünən] LT", lastWeek: "[keçən həftə] dddd [saat] LT", sameElse: "L" },
6906                relativeTime: { future: "%s sonra", past: "%s əvvəl", s: "birneçə saniyyə", m: "bir dəqiqə", mm: "%d dəqiqə", h: "bir saat", hh: "%d saat", d: "bir gün", dd: "%d gün", M: "bir ay", MM: "%d ay", y: "bir il", yy: "%d il" },
6907                meridiemParse: /gecə|səhər|gündüz|axşam/,
6908                isPM: function(input) { return /^(gündüz|axşam)$/.test(input) },
6909                meridiem: function(hour, minute, isLower) { return hour < 4 ? "gecə" : hour < 12 ? "səhər" : hour < 17 ? "gündüz" : "axşam" },
6910                ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
6911                ordinal: function(number) {
6912                    if (0 === number) return number + "-ıncı";
6913                    var a = number % 10,
6914                        b = number % 100 - a,
6915                        c = number >= 100 ? 100 : null;
6916                    return number + (az__suffixes[a] || az__suffixes[b] || az__suffixes[c])
6917                },
6918                week: { dow: 1, doy: 7 }
6919            }), moment__default.defineLocale("be", {
6920                months: { format: "студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_
vendor: 5,019 bytes, lines 6920-6969
6920снежня".split("_"), standalone: "студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_") },
6921                monthsShort: "студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),
6922                weekdays: { format: "нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"), standalone: "нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"), isFormat: /\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/ },
6923                weekdaysShort: "нд_пн_ат_ср_чц_пт_сб".split("_"),
6924                weekdaysMin: "нд_пн_ат_ср_чц_пт_сб".split("_"),
6925                longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY г.", LLL: "D MMMM YYYY г., HH:mm", LLLL: "dddd, D MMMM YYYY г., HH:mm" },
6926                calendar: {
6927                    sameDay: "[Сёння ў] LT",
6928                    nextDay: "[Заўтра ў] LT",
6929                    lastDay: "[Учора ў] LT",
6930                    nextWeek: function() { return "[У] dddd [ў] LT" },
6931                    lastWeek: function() {
6932                        switch (this.day()) {
6933                            case 0:
6934                            case 3:
6935                            case 5:
6936                            case 6:
6937                                return "[У мінулую] dddd [ў] LT";
6938                            case 1:
6939                            case 2:
6940                            case 4:
6941                                return "[У мінулы] dddd [ў] LT"
6942                        }
6943                    },
6944                    sameElse: "L"
6945                },
6946                relativeTime: { future: "праз %s", past: "%s таму", s: "некалькі секунд", m: be__relativeTimeWithPlural, mm: be__relativeTimeWithPlural, h: be__relativeTimeWithPlural, hh: be__relativeTimeWithPlural, d: "дзень", dd: be__relativeTimeWithPlural, M: "месяц", MM: be__relativeTimeWithPlural, y: "год", yy: be__relativeTimeWithPlural },
6947                meridiemParse: /ночы|раніцы|дня|вечара/,
6948                isPM: function(input) { return /^(дня|вечара)$/.test(input) },
6949                meridiem: function(hour, minute, isLower) { return hour < 4 ? "ночы" : hour < 12 ? "раніцы" : hour < 17 ? "дня" : "вечара" },
6950                ordinalParse: /\d{1,2}-(і|ы|га)/,
6951                ordinal: function(number, period) {
6952                    switch (period) {
6953                        case "M":
6954                        case "d":
6955                        case "DDD":
6956                        case "w":
6957                        case "W":
6958                            return number % 10 !== 2 && number % 10 !== 3 || number % 100 === 12 || number % 100 === 13 ? number + "-Ñ‹" : number + "-Ñ–";
6959                        case "D":
6960                            return number + "-га";
6961                        default:
6962                            return number
6963                    }
6964                },
6965                week: { dow: 1, doy: 7 }
6966            }), moment__default.defineLocale("bg", {
6967                months: "януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),
6968                monthsShort: "янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),
6969                weekdays: "неделя_понеделник_вторник_сряда_
6969четвъртък_петък_събота".split("_"),
6970                weekdaysShort: "нед_пон_вто_сря_чет_пет_съб".split("_"),
6971                weekdaysMin: "нд_пн_вт_ср_чт_пт_сб".split("_"),
6972                longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "D.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY H:mm", LLLL: "dddd, D MMMM YYYY H:mm" },
6973                calendar: {
6974                    sameDay: "[Днес в] LT",
6975                    nextDay: "[Утре в] LT",
6976                    nextWeek: "dddd [в] LT",
6977                    lastDay: "[Вчера в] LT",
6978                    lastWeek: function() {
6979                        switch (this.day()) {
6980                            case 0:
6981                            case 3:
6982                            case 6:
6983                                return "[В изминалата] dddd [в] LT";
6984                            case 1:
6985                            case 2:
6986                            case 4:
6987                            case 5:
6988                                return "[В изминалия] dddd [в] LT"
6989                        }
6990                    },
6991                    sameElse: "L"
6992                },
6993                relativeTime: { future: "след %s", past: "преди %s", s: "няколко секунди", m: "минута", mm: "%d минути", h: "час", hh: "%d часа", d: "ден", dd: "%d дни", M: "месец", MM: "%d месеца", y: "година", yy: "%d години" },
6994                ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
6995                ordinal: function(number) {
6996                    var lastDigit = number % 10,
6997                        last2Digits = number % 100;
6998                    return 0 === number ? number + "-ев" : 0 === last2Digits ? number + "-ен" : last2Digits > 10 && last2Digits < 20 ? number + "-ти" : 1 === lastDigit ? number + "-ви" : 2 === lastDigit ? number + "-ри" : 7 === lastDigit || 8 === lastDigit ? number + "-ми" : number + "-ти"
6999                },
7000                week: { dow: 1, doy: 7 }
7001            }), { 1: "১", 2: "২", 3: "৩", 4: "৪", 5: "৫", 6: "৬", 7: "৭", 8: "৮", 9: "৯", 0: "০" }),
7002            bn__numberMap = { "১": "1", "২": "2", "৩": "3", "৪": "4", "৫": "5", "৬": "6", "৭": "7", "৮": "8", "৯": "9", "০": "0" },
7003            bo__symbolMap = (moment__default.defineLocale("bn", { months: "জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"), monthsShort: "জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"), weekdays: "রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"), weekdaysShort: "রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"), weekdaysMin: "রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"), longDateFormat: { LT: "A h:mm সময়", LTS: "A h:mm:ss সময়", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm সময়", LLLL: "dddd, D MMMM YYYY, A h:mm সময়" }, calendar: { sameDay: "[আজ] LT", nextDay: "[আগামীকাল] LT", nextWeek: "dddd, LT", lastDay: "[গতকাল] LT", lastWeek: "[গত] dddd, LT", sameElse: "L" }, relativeTime: { future: "%s পরে", past: "%s আগে", s: "কয়েক সেকেন্ড", m: "এক মিনিট", mm: "%d মিনিট", h: "এক ঘন্টা", hh: "%d ঘন্টা", d: "এক দিন", dd: "%d দিন", M: "এক মাস", MM: "%d মাস", y: "এক বছর", yy: "%d বছর" }, preparse: function(string) { return string.replace(/[১২৩৪àÂ
vendor: 6,432 bytes, lines 7003-7005
7003§Â«Ã Â§Â¬Ã Â§Â­Ã Â§Â®Ã Â§Â¯Ã Â§Â¦]/g, function(match) { return bn__numberMap[match] }) }, postformat: function(string) { return string.replace(/\d/g, function(match) { return bn__symbolMap[match] }) }, meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "রাত" === meridiem && hour >= 4 || "দুপুর" === meridiem && hour < 5 || "বিকাল" === meridiem ? hour + 12 : hour }, meridiem: function(hour, minute, isLower) { return hour < 4 ? "রাত" : hour < 10 ? "সকাল" : hour < 17 ? "দুপুর" : hour < 20 ? "বিকাল" : "রাত" }, week: { dow: 0, doy: 6 } }), { 1: "༡", 2: "༢", 3: "༣", 4: "༤", 5: "༥", 6: "༦", 7: "༧", 8: "༨", 9: "༩", 0: "༠" }),
7004            bo__numberMap = { "༡": "1", "༢": "2", "༣": "3", "༤": "4", "༥": "5", "༦": "6", "༧": "7", "༨": "8", "༩": "9", "༠": "0" },
7005            cs__months = (moment__default.defineLocale("bo", { months: "ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"), monthsShort: "ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"), weekdays: "གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"), weekdaysShort: "ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"), weekdaysMin: "ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"), longDateFormat: { LT: "A h:mm", LTS: "A h:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm", LLLL: "dddd, D MMMM YYYY, A h:mm" }, calendar: { sameDay: "[དི་རིང] LT", nextDay: "[སང་ཉིན] LT", nextWeek: "[བདུན་ཕྲག་རྗེས་མ], LT", lastDay: "[ཁ་སང] LT", lastWeek: "[བདུན་ཕྲག་མཐའ་མ] dddd, LT", sameElse: "L" }, relativeTime: { future: "%s ལ་", past: "%s སྔན་ལ", s: "ལམ་སང", m: "སྐར་མ་གཅིག", mm: "%d སྐར་མ", h: "ཆུ་ཚོད་གཅིག", hh: "%d ཆུ་ཚོད", d: "ཉིན་གཅིག", dd: "%d ཉིན་", M: "ཟླ་བ་གཅིག", MM: "%d ཟླ་བ", y: "ལོ་གཅིག", yy: "%d ལོ" }, preparse: function(string) { return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function(match) { return bo__numberMap[match] }) }, postformat: function(string) { return string.replace(/\d/g, function(match) { return bo__symbolMap[match] }) }, meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "མཚན་མོ" === meridiem && hour >= 4 || "ཉིན་གུང" === meridiem && hour < 5 || "དགོང་དག" === meridiem ? hour + 12 : hour }, meridiem: function(hour, minute, isLower) { return hour < 4 ? "མཚན་མོ" : hour < 10 ? "à½
7005žà½¼à½‚ས་ཀས" : hour < 17 ? "ཉིན་གུང" : hour < 20 ? "དགོང་དག" : "མཚན་མོ" }, week: { dow: 0, doy: 6 } }), moment__default.defineLocale("br", { months: "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"), monthsShort: "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"), weekdays: "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"), weekdaysShort: "Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"), weekdaysMin: "Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "h[e]mm A", LTS: "h[e]mm:ss A", L: "DD/MM/YYYY", LL: "D [a viz] MMMM YYYY", LLL: "D [a viz] MMMM YYYY h[e]mm A", LLLL: "dddd, D [a viz] MMMM YYYY h[e]mm A" }, calendar: { sameDay: "[Hiziv da] LT", nextDay: "[Warc'hoazh da] LT", nextWeek: "dddd [da] LT", lastDay: "[Dec'h da] LT", lastWeek: "dddd [paset da] LT", sameElse: "L" }, relativeTime: { future: "a-benn %s", past: "%s 'zo", s: "un nebeud segondennoù", m: "ur vunutenn", mm: relativeTimeWithMutation, h: "un eur", hh: "%d eur", d: "un devezh", dd: relativeTimeWithMutation, M: "ur miz", MM: relativeTimeWithMutation, y: "ur bloaz", yy: specialMutationForYears }, ordinalParse: /\d{1,2}(añ|vet)/, ordinal: function(number) { var output = 1 === number ? "añ" : "vet"; return number + output }, week: { dow: 1, doy: 4 } }), moment__default.defineLocale("bs", {
7006                months: "januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),
7007                monthsShort: "jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),
7008                monthsParseExact: !0,
7009                weekdays: "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),
7010                weekdaysShort: "ned._pon._uto._sri._čet._pet._sub.".split("_"),
7011                weekdaysMin: "ne_po_ut_sr_če_pe_su".split("_"),
7012                weekdaysParseExact: !0,
7013                longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd, D. MMMM YYYY H:mm" },
7014                calendar: {
7015                    sameDay: "[danas u] LT",
7016                    nextDay: "[sutra u] LT",
7017                    nextWeek: function() {
7018                        switch (this.day()) {
7019                            case 0:
7020                                return "[u] [nedjelju] [u] LT";
7021                            case 3:
7022                                return "[u] [srijedu] [u] LT";
7023                            case 6:
7024                                return "[u] [subotu] [u] LT";
7025                            case 1:
7026                            case 2:
7027                            case 4:
7028                            case 5:
7029                                return "[u] dddd [u] LT"
7030                        }
7031                    },
7032                    lastDay: "[jučer u] LT",
7033                    lastWeek: function() {
7034                        switch (this.day()) {
7035                            case 0:
7036                            case 3:
7037                                return "[prošlu] dddd [u] LT";
7038                            case 6:
7039                                return "[prošle] [subote] [u] LT";
7040                            case 1:
7041                            case 2:
7042                            case 4:
7043                            case 5:
7044                                return "[prošli] dddd [u] LT"
7045                        }
7046                    },
7047                    sameElse: "L"
7048                },
7049                relativeTime: { future: "za %s", past: "prije %s", s: "par sekundi", m: bs__translate, mm: bs__translate, h: bs__translate, hh: bs__translate, d: "dan", dd: bs__translate, M: "mjesec", MM: bs__translate, y: "godinu", yy: bs__translate },
7050                ordinalParse: /\d{1,2}\./,
7051                ordinal: "%d.",
7052                week: { dow: 1, doy: 7 }
7053            }), moment__default.defineLocale("ca", { months: "gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"), monthsShort: "gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"), monthsParseExact: !0, weekdays: "diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"), weekdaysShort: "dg._dl._dt._dc._dj._dv._ds.".split("_"), weekdaysMin: "Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY H:mm", LLLL: "dddd D MMMM YYYY H:mm" }, calendar: { sameDay: function() { return "[avui a " + (1 !== this.hours() ? "les" : "la") + "] LT" }, nextDay: function() { return "[demà a " + (1 !== this.hours() ? "les" : "la") + "] LT" }, nextWeek: function() { return "dddd [a " + (1 !== this.hours() ? "les" : "la") + "] LT" }, lastDay: function() { return "[ahir a " + (1 !== this.hours() ? "les" : "la") + "] LT" }, lastWeek: function() { return "[el] dddd [passat a " + (1 !== this.hours() ? "les" : "la") + "] LT" }, sameElse: "L" }, relativeTime: { future: "en %s", past: "fa %s", s: "uns segons", m: "un minut", mm: "%d minuts", h: "una hora", hh: "%d hores", d: "un dia", dd: "%d dies", M: "un mes", MM: "%d mesos", y: "un any", yy: "%d anys" }, ordinalParse: /\d{1,2}(r|n|t|è|a)/, ordinal: function(number, period) { var output = 1 === number ? "r" : 2 === number ? "n" : 3 === number ? "r" : 4 === number ? "t" : "è"; return "w" !== period && "W" !== period || (output = "a"), number + output }, week: { dow: 1, doy: 4 } }), "leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_")),
7054            cs__monthsShort = "led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),
7055            dv__months = (moment__default.defineLocale("cs", {
7056                months: cs__months,
7057                monthsShort: cs__monthsShort,
7058                monthsParse: function(months, monthsShort) { var i, _monthsParse = []; for (i = 0; i < 12; i++) _monthsParse[i] = new RegExp("^" + months[i] + "$|^" + monthsShort[i] + "$", "i"); return _monthsParse }(cs__months, cs__monthsShort),
7059                shortMonthsParse: function(monthsShort) { var i, _shortMonthsParse = []; for (i = 0; i < 12; i++) _shortMonthsParse[i] = new RegExp("^" + monthsShort[i] + "$", "i"); return _shortMonthsParse }(cs__monthsShort),
7060                longMonthsParse: function(months) { var i, _longMonthsParse = []; for (i = 0; i < 12; i++) _longMonthsParse[i] = new RegExp("^" + months[i] + "$", "i"); return _longMonthsParse }(cs__months),
7061                weekdays: "neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),
7062                weekdaysShort: "ne_po_út_st_čt_pá_so".split("_"),
7063                weekdaysMin: "ne_po_út_st_čt_pá_so".split("_"),
7064                longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd D. MMMM YYYY H:mm", l: "D. M. YYYY" },
7065                calendar: {
7066                    sameDay: "[dnes v] LT",
7067                    nextDay: "[zítra v] LT",
7068                    nextWeek: function() {
7069                        switch (this.day()) {
7070                            case 0:
7071                                return "[v neděli v] LT";
7072                            case 1:
7073                            case 2:
7074                                return "[v] dddd [v] LT";
7075                            case 3:
7076                                return "[ve středu v] LT";
7077                            case 4:
7078                                return "[ve čtvrtek v] LT";
7079                            case 5:
7080                                return "[v pátek v] LT";
7081                            case 6:
7082                                return "[v sobotu v] LT"
7083                        }
7084                    },
7085                    lastDay: "[včera v] LT",
7086                    lastWeek: function() {
7087                        switch (this.day()) {
7088                            case 0:
7089                                return "[minulou neděli v] LT";
7090                            case 1:
7091                            case 2:
7092                                return "[minulé] dddd [v] LT";
7093                            case 3:
7094                                return "[minulou středu v] LT";
7095                            case 4:
7096                            case 5:
7097                                return "[minulý] dddd [v] LT";
7098                            case 6:
7099                                return "[minulou sobotu v] LT"
7100                        }
7101                    },
7102                    sameElse: "L"
7103                },
7104                relativeTime: { future: "za %s", past: "před %s", s: cs__translate, m: cs__translate, mm: cs__translate, h: cs__translate, hh: cs__translate, d: cs__translate, dd: cs__translate, M: cs__translate, MM: cs__translate, y: cs__translate, yy: cs__translate },
7105                ordinalParse: /\d{1,2}\./,
7106                ordinal: "%d.",
7107                week: { dow: 1, doy: 4 }
7108            }), moment__default.defineLocale("cv", { months: "кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"), monthsShort: "кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"), weekdays: "вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"), weekdaysShort: "выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"), weekdaysMin: "вр_тн_ыт_юн_кҫ_эр_шм".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD-MM-YYYY", LL: "YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]", LLL: "YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm", LLLL: "dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm" }, calendar: { sameDay: "[Паян] LT [сехетре]", nextDay: "[Ыран] LT [сехетре]", lastDay: "[Ӗнер] LT [сехетре]", nextWeek: "[Ҫитес] dddd LT [сехетре]", lastWeek: "[Иртнӗ] dddd LT [сехетре]", sameElse: "L" }, relativeTime: { future: function(output) { var affix = /сехет$/i.exec(output) ? "рен" : /ҫул$/i.exec(output) ? "тан" : "ран"; return output + affix }
vendor: 21,527 bytes, lines 7108-7245
7108, past: "%s каялла", s: "пӗр-ик ҫеккунт", m: "пӗр минут", mm: "%d минут", h: "пӗр сехет", hh: "%d сехет", d: "пӗр кун", dd: "%d кун", M: "пӗр уйӑх", MM: "%d уйӑх", y: "пӗр ҫул", yy: "%d ҫул" }, ordinalParse: /\d{1,2}-мӗш/, ordinal: "%d-мӗш", week: { dow: 1, doy: 7 } }), moment__default.defineLocale("cy", {
7109                months: "Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),
7110                monthsShort: "Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),
7111                weekdays: "Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),
7112                weekdaysShort: "Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),
7113                weekdaysMin: "Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),
7114                weekdaysParseExact: !0,
7115                longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" },
7116                calendar: { sameDay: "[Heddiw am] LT", nextDay: "[Yfory am] LT", nextWeek: "dddd [am] LT", lastDay: "[Ddoe am] LT", lastWeek: "dddd [diwethaf am] LT", sameElse: "L" },
7117                relativeTime: { future: "mewn %s", past: "%s yn ôl", s: "ychydig eiliadau", m: "munud", mm: "%d munud", h: "awr", hh: "%d awr", d: "diwrnod", dd: "%d diwrnod", M: "mis", MM: "%d mis", y: "blwyddyn", yy: "%d flynedd" },
7118                ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
7119                ordinal: function(number) {
7120                    var b = number,
7121                        output = "",
7122                        lookup = ["", "af", "il", "ydd", "ydd", "ed", "ed", "ed", "fed", "fed", "fed", "eg", "fed", "eg", "eg", "fed", "eg", "eg", "fed", "eg", "fed"];
7123                    return b > 20 ? output = 40 === b || 50 === b || 60 === b || 80 === b || 100 === b ? "fed" : "ain" : b > 0 && (output = lookup[b]), number + output
7124                },
7125                week: { dow: 1, doy: 4 }
7126            }), moment__default.defineLocale("da", { months: "januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"), monthsShort: "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"), weekdays: "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"), weekdaysShort: "søn_man_tir_ons_tor_fre_lør".split("_"), weekdaysMin: "sø_ma_ti_on_to_fr_lø".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY HH:mm", LLLL: "dddd [d.] D. MMMM YYYY HH:mm" }, calendar: { sameDay: "[I dag kl.] LT", nextDay: "[I morgen kl.] LT", nextWeek: "dddd [kl.] LT", lastDay: "[I går kl.] LT", lastWeek: "[sidste] dddd [kl] LT", sameElse: "L" }, relativeTime: { future: "om %s", past: "%s siden", s: "få sekunder", m: "et minut", mm: "%d minutter", h: "en time", hh: "%d timer", d: "en dag", dd: "%d dage", M: "en måned", MM: "%d måneder", y: "et år", yy: "%d år" }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }), moment__default.defineLocale("de-at", { months: "Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), monthsShort: "Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"), monthsParseExact: !0, weekdays: "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"), weekdaysShort: "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"), weekdaysMin: "So_Mo_Di_Mi_Do_Fr_Sa".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY HH:mm", LLLL: "dddd, D. MMMM YYYY HH:mm" }, calendar: { sameDay: "[heute um] LT [Uhr]", sameElse: "L", nextDay: "[morgen um] LT [Uhr]", nextWeek: "dddd [um] LT [Uhr]", lastDay: "[gestern um] LT [Uhr]", lastWeek: "[letzten] dddd [um] LT [Uhr]" }, relativeTime: { future: "in %s", past: "vor %s", s: "ein paar Sekunden", m: de_at__processRelativeTime, mm: "%d Minuten", h: de_at__processRelativeTime, hh: "%d Stunden", d: de_at__processRelativeTime, dd: de_at__processRelativeTime, M: de_at__processRelativeTime, MM: de_at__processRelativeTime, y: de_at__processRelativeTime, yy: de_at__processRelativeTime }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }), moment__default.defineLocale("de", { months: "Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), monthsShort: "Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"), monthsParseExact: !0, weekdays: "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"), weekdaysShort: "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"), weekdaysMin: "So_Mo_Di_Mi_Do_Fr_Sa".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY HH:mm", LLLL: "dddd, D. MMMM YYYY HH:mm" }, calendar: { sameDay: "[heute um] LT [Uhr]", sameElse: "L", nextDay: "[morgen um] LT [Uhr]", nextWeek: "dddd [um] LT [Uhr]", lastDay: "[gestern um] LT [Uhr]", lastWeek: "[letzten] dddd [um] LT [Uhr]" }, relativeTime: { future: "in %s", past: "vor %s", s: "ein paar Sekunden", m: de__processRelativeTime, mm: "%d Minuten", h: de__processRelativeTime, hh: "%d Stunden", d: de__processRelativeTime, dd: de__processRelativeTime, M: de__processRelativeTime, MM: de__processRelativeTime, y: de__processRelativeTime, yy: de__processRelativeTime }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }), ["ޖެނުއަރީ", "ފެބްރުއަރީ", "މާރިޗު", "އޭޕްރީލު", "މޭ", "ޖޫން", "ޖުލައި", "އޯގަސްޓު", "ސެޕްޓެމްބަރު", "އޮކްޓޯބަރު", "ނޮވެމްބަރު", "ޑިސެމްބަރު"]),
7127            dv__weekdays = ["އާދިއްތަ", "ހޯމަ", "އަންގާރަ", "ބުދަ", "ބުރާސްފަތި", "ހުކުރު", "ހޮނިހިރު"],
7128            es_do__monthsShortDot = (moment__default.defineLocale("dv", { months: dv__months, monthsShort: dv__months, weekdays: dv__weekdays, weekdaysShort: dv__weekdays, weekdaysMin: "އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "D/M/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, meridiemParse: /މކ|މފ/, isPM: function(input) { return "މފ" === input }, meridiem: function(hour, minute, isLower) { return hour < 12 ? "މކ" : "މފ" }, calendar: { sameDay: "[މިއަދު] LT", nextDay: "[މާދަމާ] LT", nextWeek: "dddd LT", lastDay: "[އިއްޔެ] LT", lastWeek: "[ފާއިތުވި] dddd LT", sameElse: "L" }, relativeTime: { future: "ތެރޭގައި %s", past: "ކުރިން %s", s: "ސިކުންތުކޮޅެއް", m: "މިނިޓެއް", mm: "މިނިޓު %d", h: "ގަޑިއިރެއް", hh: "ގަޑިއިރު %d", d: "ދުވަހެއް", dd: "ދުވަސް %d", M: "މަހެއް", MM: "މަސް %d", y: "އަހަރެއް", yy: "އަހަރު %d" }, preparse: function(string) { return string.replace(/،/g, ",") }, postformat: function(string) { return string.replace(/,/g, "،") }, week: { dow: 7, doy: 12 } }), moment__default.defineLocale("el", {
7129                monthsNominativeEl: "Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),
7130                monthsGenitiveEl: "Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),
7131                months: function(momentToFormat, format) { return /D/.test(format.substring(0, format.indexOf("MMMM"))) ? this._monthsGenitiveEl[momentToFormat.month()] : this._monthsNominativeEl[momentToFormat.month()] },
7132                monthsShort: "Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),
7133                weekdays: "Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),
7134                weekdaysShort: "Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),
7135                weekdaysMin: "Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),
7136                meridiem: function(hours, minutes, isLower) { return hours > 11 ? isLower ? "μμ" : "ΜΜ" : isLower ? "πμ" : "ΠΜ" },
7137                isPM: function(input) { return "μ" === (input + "").toLowerCase()[0] },
7138                meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
7139                longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY h:mm A", LLLL: "dddd, D MMMM YYYY h:mm A" },
7140                calendarEl: {
7141                    sameDay: "[Σήμερα {}] LT",
7142                    nextDay: "[Αύριο {}] LT",
7143                    nextWeek: "dddd [{}] LT",
7144                    lastDay: "[Χθες {}] LT",
7145                    lastWeek: function() {
7146                        switch (this.day()) {
7147                            case 6:
7148                                return "[το προηγούμενο] dddd [{}] LT";
7149                            default:
7150                                return "[την προηγούμενη] dddd [{}] LT"
7151                        }
7152                    },
7153                    sameElse: "L"
7154                },
7155                calendar: function(key, mom) {
7156                    var output = this._calendarEl[key],
7157                        hours = mom && mom.hours();
7158                    return isFunction(output) && (output = output.apply(mom)), output.replace("{}", hours % 12 === 1 ? "στη" : "στις")
7159                },
7160                relativeTime: { future: "σε %s", past: "%s πριν", s: "λίγα δευτερόλεπτα", m: "ένα λεπτό", mm: "%d λεπτά", h: "μία ώρα", hh: "%d ώρες", d: "μία μέρα", dd: "%d μέρες", M: "ένας μήνας", MM: "%d μήνες", y: "ένας χρόνος", yy: "%d χρόνια" },
7161                ordinalParse: /\d{1,2}η/,
7162                ordinal: "%dη",
7163                week: { dow: 1, doy: 4 }
7164            }), moment__default.defineLocale("en-au", {
7165                months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
7166                monthsShort: "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
7167                weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
7168                weekdaysShort: "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
7169                weekdaysMin: "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
7170                longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY h:mm A", LLLL: "dddd, D MMMM YYYY h:mm A" },
7171                calendar: { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" },
7172                relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" },
7173                ordinalParse: /\d{1,2}(st|nd|rd|th)/,
7174                ordinal: function(number) {
7175                    var b = number % 10,
7176                        output = 1 === ~~(number % 100 / 10) ? "th" : 1 === b ? "st" : 2 === b ? "nd" : 3 === b ? "rd" : "th";
7177                    return number + output
7178                },
7179                week: { dow: 1, doy: 4 }
7180            }), moment__default.defineLocale("en-ca", {
7181                months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
7182                monthsShort: "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
7183                weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
7184                weekdaysShort: "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
7185                weekdaysMin: "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
7186                longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "YYYY-MM-DD", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY h:mm A", LLLL: "dddd, MMMM D, YYYY h:mm A" },
7187                calendar: { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" },
7188                relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" },
7189                ordinalParse: /\d{1,2}(st|nd|rd|th)/,
7190                ordinal: function(number) {
7191                    var b = number % 10,
7192                        output = 1 === ~~(number % 100 / 10) ? "th" : 1 === b ? "st" : 2 === b ? "nd" : 3 === b ? "rd" : "th";
7193                    return number + output
7194                }
7195            }), moment__default.defineLocale("en-gb", {
7196                months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
7197                monthsShort: "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
7198                weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
7199                weekdaysShort: "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
7200                weekdaysMin: "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
7201                longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" },
7202                calendar: { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" },
7203                relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" },
7204                ordinalParse: /\d{1,2}(st|nd|rd|th)/,
7205                ordinal: function(number) {
7206                    var b = number % 10,
7207                        output = 1 === ~~(number % 100 / 10) ? "th" : 1 === b ? "st" : 2 === b ? "nd" : 3 === b ? "rd" : "th";
7208                    return number + output
7209                },
7210                week: { dow: 1, doy: 4 }
7211            }), moment__default.defineLocale("en-ie", {
7212                months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
7213                monthsShort: "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
7214                weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
7215                weekdaysShort: "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
7216                weekdaysMin: "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
7217                longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD-MM-YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" },
7218                calendar: { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" },
7219                relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" },
7220                ordinalParse: /\d{1,2}(st|nd|rd|th)/,
7221                ordinal: function(number) {
7222                    var b = number % 10,
7223                        output = 1 === ~~(number % 100 / 10) ? "th" : 1 === b ? "st" : 2 === b ? "nd" : 3 === b ? "rd" : "th";
7224                    return number + output
7225                },
7226                week: { dow: 1, doy: 4 }
7227            }), moment__default.defineLocale("en-nz", {
7228                months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
7229                monthsShort: "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
7230                weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
7231                weekdaysShort: "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
7232                weekdaysMin: "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
7233                longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY h:mm A", LLLL: "dddd, D MMMM YYYY h:mm A" },
7234                calendar: { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" },
7235                relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" },
7236                ordinalParse: /\d{1,2}(st|nd|rd|th)/,
7237                ordinal: function(number) {
7238                    var b = number % 10,
7239                        output = 1 === ~~(number % 100 / 10) ? "th" : 1 === b ? "st" : 2 === b ? "nd" : 3 === b ? "rd" : "th";
7240                    return number + output
7241                },
7242                week: { dow: 1, doy: 4 }
7243            }), moment__default.defineLocale("eo", { months: "januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"), monthsShort: "jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"), weekdays: "Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"), weekdaysShort: "Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"), weekdaysMin: "Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY-MM-DD", LL: "D[-an de] MMMM, YYYY", LLL: "D[-an de] MMMM, YYYY HH:mm", LLLL: "dddd, [la] D[-an de] MMMM, YYYY HH:mm" }, meridiemParse: /[ap]\.t\.m/i, isPM: function(input) { return "p" === input.charAt(0).toLowerCase() }, meridiem: function(hours, minutes, isLower) { return hours > 11 ? isLower ? "p.t.m." : "P.T.M." : isLower ? "a.t.m." : "A.T.M." }, calendar: { sameDay: "[Hodiaŭ je] LT", nextDay: "[Morgaŭ je] LT", nextWeek: "dddd [je] LT", lastDay: "[Hieraŭ je] LT", lastWeek: "[pasinta] dddd [je] LT", sameElse: "L" }, relativeTime: { future: "je %s", past: "antaŭ %s", s: "sekundoj", m: "minuto", mm: "%d minutoj", h: "horo", hh: "%d horoj", d: "tago", dd: "%d tagoj", M: "monato", MM: "%d monatoj", y: "jaro", yy: "%d jaroj" }, ordinalParse: /\d{1,2}a/, ordinal: "%da", week: { dow: 1, doy: 7 } }), "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_")),
7244            es_do__monthsShort = "ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),
7245            es__monthsShortDot = (moment__default.defineLocale("es-do", { months: "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"), monthsShort: function(m, format) { return /-MMM-/.test(format) ? es_do__monthsShort[m.month()] : es_do__monthsShortDot[m.month()] }, monthsParseExact: !0, weekdays: "domingo_lunes_martes_miércoles_jueves_viernes_sábado".
vendor: 8,977 bytes, lines 7245-7265
7245split("_"), weekdaysShort: "dom._lun._mar._mié._jue._vie._sáb.".split("_"), weekdaysMin: "do_lu_ma_mi_ju_vi_sá".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "DD/MM/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY h:mm A", LLLL: "dddd, D [de] MMMM [de] YYYY h:mm A" }, calendar: { sameDay: function() { return "[hoy a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, nextDay: function() { return "[mañana a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, nextWeek: function() { return "dddd [a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, lastDay: function() { return "[ayer a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, lastWeek: function() { return "[el] dddd [pasado a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, sameElse: "L" }, relativeTime: { future: "en %s", past: "hace %s", s: "unos segundos", m: "un minuto", mm: "%d minutos", h: "una hora", hh: "%d horas", d: "un día", dd: "%d días", M: "un mes", MM: "%d meses", y: "un año", yy: "%d años" }, ordinalParse: /\d{1,2}º/, ordinal: "%dº", week: { dow: 1, doy: 4 } }), "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_")),
7246            es__monthsShort = "ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),
7247            fa__symbolMap = (moment__default.defineLocale("es", {
7248                months: "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),
7249                monthsShort: function(m, format) { return /-MMM-/.test(format) ? es__monthsShort[m.month()] : es__monthsShortDot[m.month()] },
7250                monthsParseExact: !0,
7251                weekdays: "domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),
7252                weekdaysShort: "dom._lun._mar._mié._jue._vie._sáb.".split("_"),
7253                weekdaysMin: "do_lu_ma_mi_ju_vi_sá".split("_"),
7254                weekdaysParseExact: !0,
7255                longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD/MM/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY H:mm", LLLL: "dddd, D [de] MMMM [de] YYYY H:mm" },
7256                calendar: { sameDay: function() { return "[hoy a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, nextDay: function() { return "[mañana a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, nextWeek: function() { return "dddd [a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, lastDay: function() { return "[ayer a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, lastWeek: function() { return "[el] dddd [pasado a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, sameElse: "L" },
7257                relativeTime: { future: "en %s", past: "hace %s", s: "unos segundos", m: "un minuto", mm: "%d minutos", h: "una hora", hh: "%d horas", d: "un día", dd: "%d días", M: "un mes", MM: "%d meses", y: "un año", yy: "%d años" },
7258                ordinalParse: /\d{1,2}º/,
7259                ordinal: "%dº",
7260                week: { dow: 1, doy: 4 }
7261            }), moment__default.defineLocale("et", { months: "jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"), monthsShort: "jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"), weekdays: "pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"), weekdaysShort: "P_E_T_K_N_R_L".split("_"), weekdaysMin: "P_E_T_K_N_R_L".split("_"), longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd, D. MMMM YYYY H:mm" }, calendar: { sameDay: "[Täna,] LT", nextDay: "[Homme,] LT", nextWeek: "[Järgmine] dddd LT", lastDay: "[Eile,] LT", lastWeek: "[Eelmine] dddd LT", sameElse: "L" }, relativeTime: { future: "%s pärast", past: "%s tagasi", s: et__processRelativeTime, m: et__processRelativeTime, mm: et__processRelativeTime, h: et__processRelativeTime, hh: et__processRelativeTime, d: et__processRelativeTime, dd: "%d päeva", M: et__processRelativeTime, MM: et__processRelativeTime, y: et__processRelativeTime, yy: et__processRelativeTime }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }), moment__default.defineLocale("eu", { months: "urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"), monthsShort: "urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"), monthsParseExact: !0, weekdays: "igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"), weekdaysShort: "ig._al._ar._az._og._ol._lr.".split("_"), weekdaysMin: "ig_al_ar_az_og_ol_lr".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY-MM-DD", LL: "YYYY[ko] MMMM[ren] D[a]", LLL: "YYYY[ko] MMMM[ren] D[a] HH:mm", LLLL: "dddd, YYYY[ko] MMMM[ren] D[a] HH:mm", l: "YYYY-M-D", ll: "YYYY[ko] MMM D[a]", lll: "YYYY[ko] MMM D[a] HH:mm", llll: "ddd, YYYY[ko] MMM D[a] HH:mm" }, calendar: { sameDay: "[gaur] LT[etan]", nextDay: "[bihar] LT[etan]", nextWeek: "dddd LT[etan]", lastDay: "[atzo] LT[etan]", lastWeek: "[aurreko] dddd LT[etan]", sameElse: "L" }, relativeTime: { future: "%s barru", past: "duela %s", s: "segundo batzuk", m: "minutu bat", mm: "%d minutu", h: "ordu bat", hh: "%d ordu", d: "egun bat", dd: "%d egun", M: "hilabete bat", MM: "%d hilabete", y: "urte bat", yy: "%d urte" }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 7 } }), { 1: "۱", 2: "۲", 3: "۳", 4: "۴", 5: "۵", 6: "۶", 7: "۷", 8: "۸", 9: "۹", 0: "۰" }),
7262            fa__numberMap = { "Û±": "1", "Û²": "2", "Û³": "3", "Û´": "4", "Ûµ": "5", "Û¶": "6", "Û·": "7", "Û¸": "8", "Û¹": "9", "Û°": "0" },
7263            numbersPast = (moment__default.defineLocale("fa", { months: "ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"), monthsShort: "ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"), weekdays: "یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"), weekdaysShort: "یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"), weekdaysMin: "ی_د_س_چ_پ_ج_ش".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, meridiemParse: /قبل از ظهر|بعد از ظهر/, isPM: function(input) { return /بعد از ظهر/.test(input) }, meridiem: function(hour, minute, isLower) { return hour < 12 ? "قبل از ظهر" : "بعد از ظهر" }, calendar: { sameDay: "[امروز ساعت] LT", nextDay: "[فردا ساعت] LT", nextWeek: "dddd [ساعت] LT", lastDay: "[دیروز ساعت] LT", lastWeek: "dddd [پیش] [ساعت] LT", sameElse: "L" }, relativeTime: { future: "در %s", past: "%s پیش", s: "چندین ثانیه", m: "یک دقیقه", mm: "%d دقیقه", h: "یک ساعت", hh: "%d ساعت", d: "یک روز", dd: "%d روز", M: "یک ماه", MM: "%d ماه", y: "یک سال", yy: "%d سال" }, preparse: function(string) { return string.replace(/[۰-۹]/g, function(match) { return fa__numberMap[match] }).replace(/،/g, ",") }, postformat: function(string) { return string.replace(/\d/g, function(match) { return fa__symbolMap[match] }).replace(/,/g, "،") }, ordinalParse: /\d{1,2}م/, ordinal: "%dم", week: { dow: 6, doy: 12 } }), "nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" ")),
7264            numbersFuture = ["nolla", "yhden", "kahden", "kolmen", "neljän", "viiden", "kuuden", numbersPast[7], numbersPast[8], numbersPast[9]],
7265            fy__monthsShortWithDots = (moment__default.defineLocale("fi", { months: "tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"), monthsShort: "tammi_helmi_maalis_huhti_touko_kesä_he
7265inä_elo_syys_loka_marras_joulu".split("_"), weekdays: "sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"), weekdaysShort: "su_ma_ti_ke_to_pe_la".split("_"), weekdaysMin: "su_ma_ti_ke_to_pe_la".split("_"), longDateFormat: { LT: "HH.mm", LTS: "HH.mm.ss", L: "DD.MM.YYYY", LL: "Do MMMM[ta] YYYY", LLL: "Do MMMM[ta] YYYY, [klo] HH.mm", LLLL: "dddd, Do MMMM[ta] YYYY, [klo] HH.mm", l: "D.M.YYYY", ll: "Do MMM YYYY", lll: "Do MMM YYYY, [klo] HH.mm", llll: "ddd, Do MMM YYYY, [klo] HH.mm" }, calendar: { sameDay: "[tänään] [klo] LT", nextDay: "[huomenna] [klo] LT", nextWeek: "dddd [klo] LT", lastDay: "[eilen] [klo] LT", lastWeek: "[viime] dddd[na] [klo] LT", sameElse: "L" }, relativeTime: { future: "%s päästä", past: "%s sitten", s: fi__translate, m: fi__translate, mm: fi__translate, h: fi__translate, hh: fi__translate, d: fi__translate, dd: fi__translate, M: fi__translate, MM: fi__translate, y: fi__translate, yy: fi__translate }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }), moment__default.defineLocale("fo", { months: "januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"), monthsShort: "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), weekdays: "sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"), weekdaysShort: "sun_mán_týs_mik_hós_frí_ley".split("_"), weekdaysMin: "su_má_tý_mi_hó_fr_le".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D. MMMM, YYYY HH:mm" }, calendar: { sameDay: "[Í dag kl.] LT", nextDay: "[Í morgin kl.] LT", nextWeek: "dddd [kl.] LT", lastDay: "[Í gjár kl.] LT", lastWeek: "[síðstu] dddd [kl] LT", sameElse: "L" }, relativeTime: { future: "um %s", past: "%s síðani", s: "fá sekund", m: "ein minutt", mm: "%d minuttir", h: "ein tími", hh: "%d tímar", d: "ein dagur", dd: "%d dagar", M: "ein mánaði", MM: "%d mánaðir", y: "eitt ár", yy: "%d ár" }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }), moment__default.defineLocale("fr-ca", { months: "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), monthsShort: "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), monthsParseExact: !0, weekdays: "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), weekdaysShort: "dim._lun._mar._mer._jeu._ven._sam.".split("_"), weekdaysMin: "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY-MM-DD", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Aujourd'hui à ] LT", nextDay: "[Demain à ] LT", nextWeek: "dddd [à ] LT", lastDay: "[Hier à ] LT", lastWeek: "dddd [dernier à ] LT", sameElse: "L" }, relativeTime: { future: "dans %s", past: "il y a %s", s: "quelques secondes", m: "une minute", mm: "%d minutes", h: "une heure", hh: "%d heures", d: "un jour", dd: "%d jours", M: "un mois", MM: "%d mois", y: "un an", yy: "%d ans" }, ordinalParse: /\d{1,2}(er|e)/, ordinal: function(number) { return number + (1 === number ? "er" : "e") } }), moment__default.defineLocale("fr-ch", { months: "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), monthsShort: "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), monthsParseExact: !0, weekdays: "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), weekdaysShort: "dim._lun._mar._mer._jeu._ven._sam.".split("_"), weekdaysMin: "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Aujourd'hui à ] LT", nextDay: "[Demain à ] LT", nextWeek: "dddd [à ] LT", lastDay: "[Hier à ] LT", lastWeek: "dddd [dernier à ] LT", sameElse: "L" }, relativeTime: { future: "dans %s", past: "il y a %s", s: "quelques secondes", m: "une minute", mm: "%d minutes", h: "une heure", hh: "%d heures", d: "un jour", dd: "%d jours", M: "un mois", MM: "%d mois", y: "un an", yy: "%d ans" }, ordinalParse: /\d{1,2}(er|e)/, ordinal: function(number) { return number + (1 === number ? "er" : "e") }, week: { dow: 1, doy: 4 } }), moment__default.defineLocale("fr", { months: "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), monthsShort: "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), monthsParseExact: !0, weekdays: "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), weekdaysShort: "dim._lun._mar._mer._jeu._ven._sam.".split("_"), weekdaysMin: "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Aujourd'hui à ] LT", nextDay: "[Demain à ] LT", nextWeek: "dddd [à ] LT", lastDay: "[Hier à ] LT", lastWeek: "dddd [dernier à ] LT", sameElse: "L" }, relativeTime: { future: "dans %s", past: "il y a %s", s: "quelques secondes", m: "une minute", mm: "%d minutes", h: "une heure", hh: "%d heures", d: "un jour", dd: "%d jours", M: "un mois", MM: "%d mois", y: "un an", yy: "%d ans" }, ordinalParse: /\d{1,2}(er|)/, ordinal: function(number) { return number + (1 === number ? "er" : "") }, week: { dow: 1, doy: 4 } }), "jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_")),
7266            fy__monthsShortWithoutDots = "jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),
7267            gd__months = (moment__default.defineLocale("fy", { months: "jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"), monthsShort: function(m, format) { return /-MMM-/.test(format) ? fy__monthsShortWithoutDots[m.month()] : fy__monthsShortWithDots[m.month()] }
vendor: 8,244 bytes, lines 7267-7274
7267, monthsParseExact: !0, weekdays: "snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"), weekdaysShort: "si._mo._ti._wo._to._fr._so.".split("_"), weekdaysMin: "Si_Mo_Ti_Wo_To_Fr_So".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD-MM-YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[hjoed om] LT", nextDay: "[moarn om] LT", nextWeek: "dddd [om] LT", lastDay: "[juster om] LT", lastWeek: "[ôfrûne] dddd [om] LT", sameElse: "L" }, relativeTime: { future: "oer %s", past: "%s lyn", s: "in pear sekonden", m: "ien minút", mm: "%d minuten", h: "ien oere", hh: "%d oeren", d: "ien dei", dd: "%d dagen", M: "ien moanne", MM: "%d moannen", y: "ien jier", yy: "%d jierren" }, ordinalParse: /\d{1,2}(ste|de)/, ordinal: function(number) { return number + (1 === number || 8 === number || number >= 20 ? "ste" : "de") }, week: { dow: 1, doy: 4 } }), ["Am Faoilleach", "An Gearran", "Am Mà rt", "An Giblean", "An Cèitean", "An t-Ògmhios", "An t-Iuchar", "An Lùnastal", "An t-Sultain", "An Dà mhair", "An t-Samhain", "An Dùbhlachd"]),
7268            gd__monthsShort = ["Faoi", "Gear", "Mà rt", "Gibl", "Cèit", "Ògmh", "Iuch", "Lùn", "Sult", "Dà mh", "Samh", "Dùbh"],
7269            gd__weekdays = ["Didòmhnaich", "Diluain", "Dimà irt", "Diciadain", "Diardaoin", "Dihaoine", "Disathairne"],
7270            weekdaysShort = ["Did", "Dil", "Dim", "Dic", "Dia", "Dih", "Dis"],
7271            weekdaysMin = ["Dò", "Lu", "Mà ", "Ci", "Ar", "Ha", "Sa"],
7272            hi__symbolMap = (moment__default.defineLocale("gd", { months: gd__months, monthsShort: gd__monthsShort, monthsParseExact: !0, weekdays: gd__weekdays, weekdaysShort: weekdaysShort, weekdaysMin: weekdaysMin, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[An-diugh aig] LT", nextDay: "[A-mà ireach aig] LT", nextWeek: "dddd [aig] LT", lastDay: "[An-dè aig] LT", lastWeek: "dddd [seo chaidh] [aig] LT", sameElse: "L" }, relativeTime: { future: "ann an %s", past: "bho chionn %s", s: "beagan diogan", m: "mionaid", mm: "%d mionaidean", h: "uair", hh: "%d uairean", d: "latha", dd: "%d latha", M: "mìos", MM: "%d mìosan", y: "bliadhna", yy: "%d bliadhna" }, ordinalParse: /\d{1,2}(d|na|mh)/, ordinal: function(number) { var output = 1 === number ? "d" : number % 10 === 2 ? "na" : "mh"; return number + output }, week: { dow: 1, doy: 4 } }), moment__default.defineLocale("gl", { months: "xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"), monthsShort: "xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"), monthsParseExact: !0, weekdays: "domingo_luns_martes_mércores_xoves_venres_sábado".split("_"), weekdaysShort: "dom._lun._mar._mér._xov._ven._sáb.".split("_"), weekdaysMin: "do_lu_ma_mé_xo_ve_sá".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD/MM/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY H:mm", LLLL: "dddd, D [de] MMMM [de] YYYY H:mm" }, calendar: { sameDay: function() { return "[hoxe " + (1 !== this.hours() ? "ás" : "á") + "] LT" }, nextDay: function() { return "[mañá " + (1 !== this.hours() ? "ás" : "á") + "] LT" }, nextWeek: function() { return "dddd [" + (1 !== this.hours() ? "ás" : "a") + "] LT" }, lastDay: function() { return "[onte " + (1 !== this.hours() ? "á" : "a") + "] LT" }, lastWeek: function() { return "[o] dddd [pasado " + (1 !== this.hours() ? "ás" : "a") + "] LT" }, sameElse: "L" }, relativeTime: { future: function(str) { return 0 === str.indexOf("un") ? "n" + str : "en " + str }, past: "hai %s", s: "uns segundos", m: "un minuto", mm: "%d minutos", h: "unha hora", hh: "%d horas", d: "un día", dd: "%d días", M: "un mes", MM: "%d meses", y: "un ano", yy: "%d anos" }, ordinalParse: /\d{1,2}º/, ordinal: "%dº", week: { dow: 1, doy: 4 } }), moment__default.defineLocale("he", { months: "×™× ×•××¨_פברואר_מרץ_אפריל_מאי_×™×•× ×™_יולי_אוגוסט_ספטמבר_אוקטובר_× ×•×‘×ž×‘×¨_דצמבר".split("_"), monthsShort: "×™× ×•×³_פבר׳_מרץ_אפר׳_מאי_×™×•× ×™_יולי_אוג׳_ספט׳_אוק׳_× ×•×‘×³_דצמ׳".split("_"), weekdays: "ראשון_×©× ×™_שלישי_רביעי_חמישי_שישי_שבת".split("_"), weekdaysShort: "א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"), weekdaysMin: "א_ב_×’_ד_×”_ו_ש".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D [ב]MMMM YYYY", LLL: "D [ב]MMMM YYYY HH:mm", LLLL: "dddd, D [ב]MMMM YYYY HH:mm", l: "D/M/YYYY", ll: "D MMM YYYY", lll: "D MMM YYYY HH:mm", llll: "ddd, D MMM YYYY HH:mm" }, calendar: { sameDay: "[היום ב־]LT", nextDay: "[מחר ב־]LT", nextWeek: "dddd [בשעה] LT", lastDay: "[אתמול ב־]LT", lastWeek: "[ביום] dddd [האחרון בשעה] LT", sameElse: "L" }, relativeTime: { future: "בעוד %s", past: "×œ×¤× ×™ %s", s: "מספר ×©× ×™×•×ª", m: "דקה", mm: "%d דקות", h: "שעה", hh: function(number) { return 2 === number ? "שעתיים" : number + " שעות" }, d: "יום", dd: function(number) { return 2 === number ? "יומיים" : number + " ימים" }, M: "חודש", MM: function(number) { return 2 === number ? "חודשיים" : number + " חודשים" }, y: "×©× ×”", yy: function(number) { return 2 === number ? "×©× ×ª×™×™×" : number % 10 === 0 && 10 !== number ? number + " ×©× ×”" : number + " ×©× ×™×" } }, meridiemParse: /אחה"צ|×œ×¤× ×”"צ|אחרי הצהריים|×œ×¤× ×™ הצהריים|×œ×¤× ×•×ª בוקר|בבוקר|בערב/i, isPM: function(input) { return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input) }, meridiem: function(hour, minute, isLower) { return hour < 5 ? "×œ×¤× ×•×ª בוקר" : hour < 10 ? "בבוקר" : hour < 12 ? isLower ? '×œ×¤× ×”"צ' : "×œ×¤× ×™ הצהריים" : hour < 18 ? isLower ? 'אחה"צ' : "אחרי הצהריים" : "בערב" } }), { 1: "१", 2: "२", 3: "३", 4: "४", 5: "५", 6: "६", 7: "७", 8: "८", 9: "९", 0: "०" }),
7273            hi__numberMap = { "१": "1", "२": "2", "३": "3", "४": "4", "५": "5", "६": "6", "७": "7", "८": "8", "९": "9", "०": "0" },
7274            weekEndings = (moment__default.defineLocale("hi", { months: "जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"), monthsShort: "जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"), monthsParseExact: !0, weekdays: "रविवार_
7274सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"), weekdaysShort: "रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"), weekdaysMin: "र_सो_मं_बु_गु_शु_श".split("_"), longDateFormat: { LT: "A h:mm बजे", LTS: "A h:mm:ss बजे", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm बजे", LLLL: "dddd, D MMMM YYYY, A h:mm बजे" }, calendar: { sameDay: "[आज] LT", nextDay: "[कल] LT", nextWeek: "dddd, LT", lastDay: "[कल] LT", lastWeek: "[पिछले] dddd, LT", sameElse: "L" }, relativeTime: { future: "%s में", past: "%s पहले", s: "कुछ ही क्षण", m: "एक मिनट", mm: "%d मिनट", h: "एक घंटा", hh: "%d घंटे", d: "एक दिन", dd: "%d दिन", M: "एक महीने", MM: "%d महीने", y: "एक वर्ष", yy: "%d वर्ष" }, preparse: function(string) { return string.replace(/[१२३४५६७८९०]/g, function(match) { return hi__numberMap[match] }) }, postformat: function(string) { return string.replace(/\d/g, function(match) { return hi__symbolMap[match] }) }, meridiemParse: /रात|सुबह|दोपहर|शाम/, meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "रात" === meridiem ? hour < 4 ? hour : hour + 12 : "सुबह" === meridiem ? hour : "दोपहर" === meridiem ? hour >= 10 ? hour : hour + 12 : "शाम" === meridiem ? hour + 12 : void 0 }, meridiem: function(hour, minute, isLower) { return hour < 4 ? "रात" : hour < 10 ? "सुबह" : hour < 17 ? "दोपहर" : hour < 20 ? "शाम" : "रात" }, week: { dow: 0, doy: 6 } }), moment__default.defineLocale("hr", {
7275                months: { format: "siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"), standalone: "siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_") },
7276                monthsShort: "sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),
7277                monthsParseExact: !0,
7278                weekdays: "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),
7279                weekdaysShort: "ned._pon._uto._sri._čet._pet._sub.".split("_"),
7280                weekdaysMin: "ne_po_ut_sr_če_pe_su".split("_"),
7281                weekdaysParseExact: !0,
7282                longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd, D. MMMM YYYY H:mm" },
7283                calendar: {
7284                    sameDay: "[danas u] LT",
7285                    nextDay: "[sutra u] LT",
7286                    nextWeek: function() {
7287                        switch (this.day()) {
7288                            case 0:
7289                                return "[u] [nedjelju] [u] LT";
7290                            case 3:
7291                                return "[u] [srijedu] [u] LT";
7292                            case 6:
7293                                return "[u] [subotu] [u] LT";
7294                            case 1:
7295                            case 2:
7296                            case 4:
7297                            case 5:
7298                                return "[u] dddd [u] LT"
7299                        }
7300                    },
7301                    lastDay: "[jučer u] LT",
7302                    lastWeek: function() {
7303                        switch (this.day()) {
7304                            case 0:
7305                            case 3:
7306                                return "[prošlu] dddd [u] LT";
7307                            case 6:
7308                                return "[prošle] [subote] [u] LT";
7309                            case 1:
7310                            case 2:
7311                            case 4:
7312                            case 5:
7313                                return "[prošli] dddd [u] LT"
7314                        }
7315                    },
7316                    sameElse: "L"
7317                },
7318                relativeTime: { future: "za %s", past: "prije %s", s: "par sekundi", m: hr__translate, mm: hr__translate, h: hr__translate, hh: hr__translate, d: "dan", dd: hr__translate, M: "mjesec", MM: hr__translate, y: "godinu", yy: hr__translate },
7319                ordinalParse: /\d{1,2}\./,
7320                ordinal: "%d.",
7321                week: { dow: 1, doy: 7 }
7322            }), "vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ")),
7323            kk__suffixes = (moment__default.defineLocale("hu", { months: "január_február_március_április_máju
7323s_június_július_augusztus_szeptember_október_november_december".split("_"), monthsShort: "jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"), weekdays: "vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"), weekdaysShort: "vas_hét_kedd_sze_csüt_pén_szo".split("_"), weekdaysMin: "v_h_k_sze_cs_p_szo".split("_"), longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "YYYY.MM.DD.", LL: "YYYY. MMMM D.", LLL: "YYYY. MMMM D. H:mm", LLLL: "YYYY. MMMM D., dddd H:mm" }, meridiemParse: /de|du/i, isPM: function(input) { return "u" === input.charAt(1).toLowerCase() }, meridiem: function(hours, minutes, isLower) { return hours < 12 ? isLower === !0 ? "de" : "DE" : isLower === !0 ? "du" : "DU" }, calendar: { sameDay: "[ma] LT[-kor]", nextDay: "[holnap] LT[-kor]", nextWeek: function() { return week.call(this, !0) }, lastDay: "[tegnap] LT[-kor]", lastWeek: function() { return week.call(this, !1) }, sameElse: "L" }, relativeTime: { future: "%s múlva", past: "%s", s: hu__translate, m: hu__translate, mm: hu__translate, h: hu__translate, hh: hu__translate, d: hu__translate, dd: hu__translate, M: hu__translate, MM: hu__translate, y: hu__translate, yy: hu__translate }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 7 } }), moment__default.defineLocale("hy-am", {
7324                months: { format: "Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€Õ«_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€Õ«_Õ´Õ¡Ö€Õ¿Õ«_Õ¡ÕºÖ€Õ«Õ¬Õ«_Õ´Õ¡ÕµÕ«Õ½Õ«_Õ°
vendor: 4,686 bytes, lines 7324-7348
7324Õ¸Ö‚Õ¶Õ«Õ½Õ«_Õ°Õ¸Ö‚Õ¬Õ«Õ½Õ«_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½Õ«_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«".split("_"), standalone: "Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€_Õ´Õ¡Ö€Õ¿_Õ¡ÕºÖ€Õ«Õ¬_Õ´Õ¡ÕµÕ«Õ½_Õ°Õ¸Ö‚Õ¶Õ«Õ½_Õ°Õ¸Ö‚Õ¬Õ«Õ½_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€".split("_") },
7325                monthsShort: "Õ°Õ¶Õ¾_ÖƒÕ¿Ö€_Õ´Ö€Õ¿_Õ¡ÕºÖ€_Õ´ÕµÕ½_Õ°Õ¶Õ½_Õ°Õ¬Õ½_Ö…Õ£Õ½_Õ½ÕºÕ¿_Õ°Õ¯Õ¿_Õ¶Õ´Õ¢_Õ¤Õ¯Õ¿".split("_"),
7326                weekdays: "Õ¯Õ«Ö€Õ¡Õ¯Õ«_Õ¥Ö€Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«_Õ¥Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ¹Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«_Õ¸Ö‚Ö€Õ¢Õ¡Õ©_Õ·Õ¡Õ¢Õ¡Õ©".split("_"),
7327                weekdaysShort: "Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©".split("_"),
7328                weekdaysMin: "Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©".split("_"),
7329                longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY Õ©.", LLL: "D MMMM YYYY Õ©., HH:mm", LLLL: "dddd, D MMMM YYYY Õ©., HH:mm" },
7330                calendar: { sameDay: "[այսօր] LT", nextDay: "[վաղը] LT", lastDay: "[երեկ] LT", nextWeek: function() { return "dddd [օրը ժամը] LT" }, lastWeek: function() { return "[անցած] dddd [օրը ժամը] LT" }, sameElse: "L" },
7331                relativeTime: { future: "%s Õ°Õ¥Õ¿Õ¸", past: "%s Õ¡Õ¼Õ¡Õ»", s: "Õ´Õ« Ö„Õ¡Õ¶Õ« Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶", m: "Ö€Õ¸ÕºÕ¥", mm: "%d Ö€Õ¸ÕºÕ¥", h: "ÕªÕ¡Õ´", hh: "%d ÕªÕ¡Õ´", d: "Ö…Ö€", dd: "%d Ö…Ö€", M: "Õ¡Õ´Õ«Õ½", MM: "%d Õ¡Õ´Õ«Õ½", y: "Õ¿Õ¡Ö€Õ«", yy: "%d Õ¿Õ¡Ö€Õ«" },
7332                meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
7333                isPM: function(input) { return /^(ցերեկվա|երեկոյան)$/.test(input) },
7334                meridiem: function(hour) { return hour < 4 ? "գիշերվա" : hour < 12 ? "առավոտվա" : hour < 17 ? "ցերեկվա" : "երեկոյան" },
7335                ordinalParse: /\d{1,2}|\d{1,2}-(Õ«Õ¶|Ö€Õ¤)/,
7336                ordinal: function(number, period) {
7337                    switch (period) {
7338                        case "DDD":
7339                        case "w":
7340                        case "W":
7341                        case "DDDo":
7342                            return 1 === number ? number + "-Õ«Õ¶" : number + "-Ö€Õ¤";
7343                        default:
7344                            return number
7345                    }
7346                },
7347                week: { dow: 1, doy: 7 }
7348            }), moment__default.defineLocale("id", { months: "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"), monthsShort: "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"), weekdays: "Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"), weekdaysShort: "Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"), weekdaysMin: "Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"), longDateFormat: { LT: "HH.mm", LTS: "HH.mm.ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY [pukul] HH.mm", LLLL: "dddd, D MMMM YYYY [pukul] HH.mm" }, meridiemParse: /pagi|siang|sore|malam/, meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "pagi" === meridiem ? hour : "siang" === meridiem ? hour >= 11 ? hour : hour + 12 : "sore" === meridiem || "malam" === meridiem ? hour + 12 : void 0 }, meridiem: function(hours, minutes, isLower) { return hours < 11 ? "pagi" : hours < 15 ? "siang" : hours < 19 ? "sore" : "malam" }, calendar: { sameDay: "[Hari ini pukul] LT", nextDay: "[Besok pukul] LT", nextWeek: "dddd [pukul] LT", lastDay: "[Kemarin pukul] LT", lastWeek: "dddd [lalu pukul] LT", sameElse: "L" }, relativeTime: { future: "dalam %s", past: "%s yang lalu", s: "beberapa detik", m: "semenit", mm: "%d menit", h: "sejam", hh: "%d j
7348am", d: "sehari", dd: "%d hari", M: "sebulan", MM: "%d bulan", y: "setahun", yy: "%d tahun" }, week: { dow: 1, doy: 7 } }), moment__default.defineLocale("is", { months: "janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"), monthsShort: "jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"), weekdays: "sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"), weekdaysShort: "sun_mán_þri_mið_fim_fös_lau".split("_"), weekdaysMin: "Su_Má_Þr_Mi_Fi_Fö_La".split("_"), longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY [kl.] H:mm", LLLL: "dddd, D. MMMM YYYY [kl.] H:mm" }, calendar: { sameDay: "[í dag kl.] LT", nextDay: "[á morgun kl.] LT", nextWeek: "dddd [kl.] LT", lastDay: "[í gær kl.] LT", lastWeek: "[síðasta] dddd [kl.] LT", sameElse: "L" }, relativeTime: { future: "eftir %s", past: "fyrir %s síðan", s: is__translate, m: is__translate, mm: is__translate, h: "klukkustund", hh: is__translate, d: is__translate, dd: is__translate, M: is__translate, MM: is__translate, y: is__translate, yy: is__translate }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }), moment__default.defineLocale("it", {
7349                months: "gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),
7350                monthsShort: "gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),
7351                weekdays: "Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),
7352                weekdaysShort: "Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),
7353                weekdaysMin: "Do_Lu_Ma_Me_Gi_Ve_Sa".split("_"),
7354                longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" },
7355                calendar: {
7356                    sameDay: "[Oggi alle] LT",
7357                    nextDay: "[Domani alle] LT",
7358                    nextWeek: "dddd [alle] LT",
7359                    lastDay: "[Ieri alle] LT",
7360                    lastWeek: function() {
7361                        switch (this.day()) {
7362                            case 0:
7363                                return "[la scorsa] dddd [alle] LT";
7364                            default:
7365                                return "[lo scorso] dddd [alle] LT"
7366                        }
7367                    },
7368                    sameElse: "L"
7369                },
7370                relativeTime: { future: function(s) { return (/^[0-9].+$/.test(s) ? "tra" : "in") + " " + s }, past: "%s fa", s: "alcuni secondi", m: "un minuto", mm: "%d minuti", h: "un'ora", hh: "%d ore", d: "un giorno", dd: "%d giorni", M: "un mese", MM: "%d mesi", y: "un anno", yy: "%d anni" },
7371                ordinalParse: /\d{1,2}º/,
7372                ordinal: "%dº",
7373                week: { dow: 1, doy: 4 }
7374            }), moment__default.defineLocale("ja", {
7375                months: "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
7376                monthsShort: "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
7377                weekdays: "日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),
7378                weekdaysShort: "日_月_火_水_木_金_土".split("_"),
7379                weekdaysMin: "日_月_火_水_木_金_土".split("_"),
7380                longDateFormat: { LT: "Ah時m分", LTS: "Ah時m分s秒", L: "YYYY/MM/DD", LL: "YYYY年M月D日", LLL: "YYYY年M月D日Ah時m分", LLLL: "YYYY年M月D日Ah時m分 dddd" },
7381                meridiemParse: /午前|午後/i,
7382                isPM: function(input) { return "午後" === input },
7383                meridiem: function(hour, minute, isLower) { return hour < 12 ? "午前" : "午後" },
7384                calendar: { sameDay: "[今日] LT", nextDay: "[明日] LT", nextWeek: "[来週]dddd LT", lastDay: "[昨日] LT", lastWeek: "[前週]dddd LT", sameElse: "L" },
7385                ordinalParse: /\d{1,2}æ—¥/,
7386                ordinal: function(number, period) {
7387                    switch (period) {
7388                        case "d":
7389                        case "D":
7390                        case "DDD":
7391                            return number + "æ—¥";
7392                        default:
7393                            return number
7394                    }
7395                },
7396                relativeTime: { future: "%s後", past: "%s前", s: "数秒", m: "1分", mm: "%d分", h: "1時間", hh: "%d時間", d: "1日", dd: "%d日", M: "1ヶ月", MM: "%dヶ月", y: "1年", yy: "%d年" }
7397            }), moment__default.defineLocale("jv", { months: "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"), monthsShort: "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"), weekdays: "Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"), weekdaysShort: "Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"), weekdaysMin: "Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"), longDateFormat: { LT: "HH.mm", LTS: "HH.mm.ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY [pukul] HH.mm", LLLL: "dddd, D MMMM YYYY [pukul] HH.mm" }, meridiemParse: /enjing|siyang|sonten|ndalu/, meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "enjing" === meridiem ? hour : "siyang" === meridiem ? hour >= 11 ? hour : hour + 12 : "sonten" === meridiem || "ndalu" === meridiem ? hour + 12 : void 0 }, meridiem: function(hours, minutes, isLower) { return hours < 11 ? "enjing" : hours < 15 ? "siyang" : hours < 19 ? "sonten" : "ndalu" }, calendar: { sameDay: "[Dinten puniko pukul] LT", nextDay: "[Mbenjang pukul] LT", nextWeek: "dddd [pukul] LT", lastDay: "[Kala wingi pukul] LT", lastWeek: "dddd [kepengker pukul] LT", sameElse: "L" }, relativeTime: { future: "wonten ing %s", past: "%s ingkang kepengker", s: "sawetawis detik", m: "setunggal menit", mm: "%d menit", h: "setunggal jam", hh: "%d j
7397am", d: "sedinten", dd: "%d dinten", M: "sewulan", MM: "%d wulan", y: "setaun", yy: "%d taun" }, week: { dow: 1, doy: 7 } }), moment__default.defineLocale("ka", { months: { standalone: "იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"), format: "იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_") }, monthsShort: "იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"), weekdays: { standalone: "კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"), format: "კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"), isFormat: /(წინა|შემდეგ)/ }, weekdaysShort: "კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"), weekdaysMin: "კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"), longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY h:mm A", LLLL: "dddd, D MMMM YYYY h:mm A" }, calendar: { sameDay: "[დღეს] LT[-ზე]", nextDay: "[ხვალ] LT[-ზე]", lastDay: "[გუშინ] LT[-ზე]", nextWeek: "[შემდეგ] dddd LT[-ზე]", lastWeek: "[წინა] dddd LT-ზე", sameElse: "L" }, relativeTime: { future: function(s) { return /(წამი|წუთი|საათი|წელი)/.test(s) ? s.replace(/ი$/, "ში") : s + "ში" }, past: function(s) { return /(წამი|წუთი|საათი|დღე|თვე)/.test(s) ? s.replace(/(ი|ე)$/, "ის წინ") : /წელი/.test(s) ? s.replace(/წელი$/, "წლის წინ") : void 0 }, s: "რამდენიმე წამი", m: "წუთი", mm: "%d წუთი", h: "საათი", hh: "%d საათი", d: "დღე", dd: "%d დღე", M: "თვე", MM: "%d თვე", y: "წელი", yy: "%d წელი" }, ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, ordinal: function(number) { return 0 === number ? number : 1 === number ? number + "-ლი" : number < 20 || number <= 100 && number % 20 === 0 || number % 100 === 0 ? "მე-" + number : number + "-ე" }, week: { dow: 1, doy: 7 } }), { 0: "-ші", 1: "-ші", 2: "-ші", 3: "-ші", 4: "-ші", 5: "-ші", 6: "-шы", 7: "-ші", 8: "-ші", 9: "-шы", 10: "-шы", 20: "-шы", 30: "-шы", 40: "-шы", 50: "-ші", 60: "-шы", 70: "-ші", 80: "-ші", 90: "-шы", 100: "-ші" }),
7398            ky__suffixes = (moment__default.defineLocale("kk", {
7399                months: "қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),
7400                monthsShort: "қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),
7401                weekdays: "жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),
7402                weekdaysShort: "жек_дүй_сей_сәр_бей_жұм_сен".split("_"),
7403                weekdaysMin: "жк_дй_сй_ср_бй_жм_сн".split("_"),
7404                longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" },
7405                calendar: { sameDay: "[Бүгін сағат] LT", nextDay: "[Ертең сағат] LT", nextWeek: "dddd [сағат] LT", lastDay: "[Кеше сағат] LT", lastWeek: "[Өткен аптаның] dddd [сағат] LT", sameElse: "L" },
7406                relativeTime: { future: "%s ішінде", past: "%s бұрын", s: "бірнеше секунд", m: "бір минут", mm: "%d минут", h: "бір сағат", hh: "%d сағат", d: "бір күн", dd: "%d күн", M: "бір ай", MM: "%d ай", y: "бір жыл", yy: "%d жыл" },
7407                ordinalParse: /\d{1,2}-(ші|шы)/,
7408                ordinal: function(number) {
7409                    var a = number % 10,
7410                        b = number >= 100 ? 100 : null;
7411                    return number + (kk__suffixes[number] || kk__suffixes[a] || kk__suffixes[b])
7412                },
7413                week: { dow: 1, doy: 7 }
7414            }), moment__default.defineLocale("km", { months: "មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"), monthsShort: "មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"), weekdays: "អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"), weekdaysShort: "អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"), weekdaysMin: "អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[ថ្ងៃនេះ ម៉ោង] LT", nextDay: "[ស្áž
7414¢áŸ‚ក ម៉ោង] LT", nextWeek: "dddd [ម៉ោង] LT", lastDay: "[ម្សិលមិញ ម៉ោង] LT", lastWeek: "dddd [សប្តាហ៍មុន] [ម៉ោង] LT", sameElse: "L" }, relativeTime: { future: "%sទៀត", past: "%sមុន", s: "ប៉ុន្មានវិនាទី", m: "មួយនាទី", mm: "%d នាទី", h: "មួយម៉ោង", hh: "%d ម៉ោង", d: "មួយថ្ងៃ", dd: "%d ថ្ងៃ", M: "មួយខែ", MM: "%d ខែ", y: "មួយឆ្នាំ", yy: "%d ឆ្នាំ" }, week: { dow: 1, doy: 4 } }), moment__default.defineLocale("ko", { months: "1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”".split("_"), monthsShort: "1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”".split("_"), weekdays: "일요일_월요일_화요일_수요일_목요일_금요일_í† ìš”ì¼".split("_"), weekdaysShort: "일_ì›”_í™”_수_목_금_í† ".split("_"), weekdaysMin: "일_ì›”_í™”_수_목_금_í† ".split("_"), longDateFormat: { LT: "A h시 më¶„", LTS: "A h시 më¶„ sì´ˆ", L: "YYYY.MM.DD", LL: "YYYYë…„ MMMM D일", LLL: "YYYYë…„ MMMM D일 A h시 më¶„", LLLL: "YYYYë…„ MMMM D일 dddd A h시 më¶„" }, calendar: { sameDay: "오늘 LT", nextDay: "내일 LT", nextWeek: "dddd LT", lastDay: "ì–´ì œ LT", lastWeek: "지난주 dddd LT", sameElse: "L" }, relativeTime: { future: "%s 후", past: "%s ì „", s: "몇 ì´ˆ", ss: "%dì´ˆ", m: "일분", mm: "%dë¶„", h: "한 시간", hh: "%d시간", d: "하루", dd: "%d일", M: "한 달", MM: "%d달", y: "일 ë…„", yy: "%dë…„" }, ordinalParse: /\d{1,2}일/, ordinal: "%d일", meridiemParse: /ì˜¤ì „|오후/, isPM: function(token) { return "오후" === token }, meridiem: function(hour, minute, isUpper) { return hour < 12 ? "ì˜¤ì „" : "오후" } }), {
7415                0: "-чү",
7416                1: "-чи",
7417                2: "-чи",
7418                3: "-чү",
7419                4: "-чү",
7420                5: "-чи",
7421                6: "-чы",
7422                7: "-чи",
7423                8: "-чи",
7424                9: "-чу",
7425                10: "-чу",
7426                20: "-чы",
7427                30: "-чу",
7428                40: "-чы",
7429                50: "-чү",
7430                60: "-чы",
7431                70: "-чи",
7432                80: "-чи",
7433                90: "-чу",
7434                100: "-чү"
7435            }),
7436            lt__units = (moment__default.defineLocale("ky", {
7437                months: "январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),
7438                monthsShort: "янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),
7439                weekdays: "Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_ИшÐÂ
vendor: 4,196 bytes, lines 7439-7481
7439µÃÂ¼ÃÂ±ÃÂ¸".split("_"),
7440                weekdaysShort: "Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),
7441                weekdaysMin: "Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),
7442                longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" },
7443                calendar: { sameDay: "[Бүгүн саат] LT", nextDay: "[Эртең саат] LT", nextWeek: "dddd [саат] LT", lastDay: "[Кече саат] LT", lastWeek: "[Өткен аптанын] dddd [күнү] [саат] LT", sameElse: "L" },
7444                relativeTime: { future: "%s ичинде", past: "%s мурун", s: "бирнече секунд", m: "бир мүнөт", mm: "%d мүнөт", h: "бир саат", hh: "%d саат", d: "бир күн", dd: "%d күн", M: "бир ай", MM: "%d ай", y: "бир жыл", yy: "%d жыл" },
7445                ordinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
7446                ordinal: function(number) {
7447                    var a = number % 10,
7448                        b = number >= 100 ? 100 : null;
7449                    return number + (ky__suffixes[number] || ky__suffixes[a] || ky__suffixes[b])
7450                },
7451                week: { dow: 1, doy: 7 }
7452            }), moment__default.defineLocale("lb", {
7453                months: "Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),
7454                monthsShort: "Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),
7455                monthsParseExact: !0,
7456                weekdays: "Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),
7457                weekdaysShort: "So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),
7458                weekdaysMin: "So_Mé_Dë_Më_Do_Fr_Sa".split("_"),
7459                weekdaysParseExact: !0,
7460                longDateFormat: { LT: "H:mm [Auer]", LTS: "H:mm:ss [Auer]", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm [Auer]", LLLL: "dddd, D. MMMM YYYY H:mm [Auer]" },
7461                calendar: {
7462                    sameDay: "[Haut um] LT",
7463                    sameElse: "L",
7464                    nextDay: "[Muer um] LT",
7465                    nextWeek: "dddd [um] LT",
7466                    lastDay: "[Gëschter um] LT",
7467                    lastWeek: function() {
7468                        switch (this.day()) {
7469                            case 2:
7470                            case 4:
7471                                return "[Leschten] dddd [um] LT";
7472                            default:
7473                                return "[Leschte] dddd [um] LT"
7474                        }
7475                    }
7476                },
7477                relativeTime: { future: processFutureTime, past: processPastTime, s: "e puer Sekonnen", m: lb__processRelativeTime, mm: "%d Minutten", h: lb__processRelativeTime, hh: "%d Stonnen", d: lb__processRelativeTime, dd: "%d Deeg", M: lb__processRelativeTime, MM: "%d Méint", y: lb__processRelativeTime, yy: "%d Joer" },
7478                ordinalParse: /\d{1,2}\./,
7479                ordinal: "%d.",
7480                week: { dow: 1, doy: 4 }
7481            }), moment__default.defineLocale("lo", { months: "ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"), monthsShort: "ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_àº
7481žàº¶àº”ສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"), weekdays: "ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"), weekdaysShort: "ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"), weekdaysMin: "ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "ວັນdddd D MMMM YYYY HH:mm" }, meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/, isPM: function(input) { return "ຕອນແລງ" === input }, meridiem: function(hour, minute, isLower) { return hour < 12 ? "ຕອນເຊົ້າ" : "ຕອນແລງ" }, calendar: { sameDay: "[ມື້ນີ້ເວລາ] LT", nextDay: "[ມື້ອື່ນເວລາ] LT", nextWeek: "[ວັນ]dddd[ໜ້າເວລາ] LT", lastDay: "[ມື້ວານນີ້ເວລາ] LT", lastWeek: "[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT", sameElse: "L" }, relativeTime: { future: "ອີກ %s", past: "%sຜ່ານມາ", s: "ບໍ່ເທົ່າໃດວິນາທີ", m: "1 ນາທີ", mm: "%d ນາທີ", h: "1 ຊົ່ວໂມງ", hh: "%d ຊົ່ວໂມງ", d: "1 ມື້", dd: "%d ມື້", M: "1 ເດືອນ", MM: "%d ເດືອນ", y: "1 ປີ", yy: "%d ປີ" }, ordinalParse: /(ທີ່)\d{1,2}/, ordinal: function(number) { return "ທີ່" + number } }), { m: "minutÄ—_minutÄ—s_minutÄ™", mm: "minutÄ—s_minučių_minutes", h: "valanda_valandos_valandÄ…", hh: "valandos_valandų_valandas", d: "diena_dienos_dienÄ…", dd: "dienos_dienų_dienas", M: "mÄ—nuo_mÄ—nesio_mÄ—nesį", MM: "mÄ—nesiai_mÄ—nesių_mÄ—nesius", y: "metai_metų_metus", yy: "metai_metų_metus" }),
7482            lv__units = (moment__default.defineLocale("lt", { months: { format: "sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"), standalone: "sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"), isFormat: /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?|MMMM?(\[[^\[\]]*\]|\s+)+D[oD]?/ }, monthsShort: "sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"), weekdays: { format: "sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"), standalone: "sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"), isFormat: /dddd HH:mm/ }, weekdaysShort: "Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"), weekdaysMin: "S_P_A_T_K_Pn_Š".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY-MM-DD", LL: "YYYY [m.] MMMM D [d.]", LLL: "YYYY [m.] MMMM D [d.], HH:mm [val.]", LLLL: "YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]", l: "YYYY-MM-DD", ll: "YYYY [m.] MMMM D [d.]", lll: "YYYY [m.] MMMM D [d.], HH:mm [val.]", llll: "YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]" }, calendar: { sameDay: "[Šiandien] LT", nextDay: "[Rytoj] LT", nextWeek: "dddd LT", lastDay: "[Vakar] LT", lastWeek: "[Praėjusį] dddd LT", sameElse: "L" }, relativeTime: { future: "po %s", past: "prieš %s", s: translateSeconds, m: translateSingular, mm: lt__translate, h: translateSingular, hh: lt__translate, d: translateSingular, dd: lt__translate, M: translateSingular, MM: lt__translate, y: translateSingular, yy: lt__translate }, ordinalParse: /\d{1,2}-oji/, ordinal: function(number) { return number + "-oji" }, week: { dow: 1, doy: 4 } }), { m: "minūtes_minūtēm_minūte_minūtes".split("_"), mm: "minūtes_minūtēm_minūte_minūtes".split("_"), h: "stundas_stundām_stunda_stundas".split("_"), hh: "stundas_stundām_stunda_stundas".split("_"), d: "dienas_die
vendor: 6,859 bytes, lines 7482-7522
7482nām_diena_dienas".split("_"), dd: "dienas_dienām_diena_dienas".split("_"), M: "mēneša_mēnešiem_mēnesis_mēneši".split("_"), MM: "mēneša_mēnešiem_mēnesis_mēneši".split("_"), y: "gada_gadiem_gads_gadi".split("_"), yy: "gada_gadiem_gads_gadi".split("_") }),
7483            me__translator = (moment__default.defineLocale("lv", { months: "janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"), monthsShort: "jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"), weekdays: "svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"), weekdaysShort: "Sv_P_O_T_C_Pk_S".split("_"), weekdaysMin: "Sv_P_O_T_C_Pk_S".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY.", LL: "YYYY. [gada] D. MMMM", LLL: "YYYY. [gada] D. MMMM, HH:mm", LLLL: "YYYY. [gada] D. MMMM, dddd, HH:mm" }, calendar: { sameDay: "[Šodien pulksten] LT", nextDay: "[Rīt pulksten] LT", nextWeek: "dddd [pulksten] LT", lastDay: "[Vakar pulksten] LT", lastWeek: "[Pagājušā] dddd [pulksten] LT", sameElse: "L" }, relativeTime: { future: "pēc %s", past: "pirms %s", s: relativeSeconds, m: relativeTimeWithSingular, mm: lv__relativeTimeWithPlural, h: relativeTimeWithSingular, hh: lv__relativeTimeWithPlural, d: relativeTimeWithSingular, dd: lv__relativeTimeWithPlural, M: relativeTimeWithSingular, MM: lv__relativeTimeWithPlural, y: relativeTimeWithSingular, yy: lv__relativeTimeWithPlural }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }), { words: { m: ["jedan minut", "jednog minuta"], mm: ["minut", "minuta", "minuta"], h: ["jedan sat", "jednog sata"], hh: ["sat", "sata", "sati"], dd: ["dan", "dana", "dana"], MM: ["mjesec", "mjeseca", "mjeseci"], yy: ["godina", "godine", "godina"] }, correctGrammaticalCase: function(number, wordKey) { return 1 === number ? wordKey[0] : number >= 2 && number <= 4 ? wordKey[1] : wordKey[2] }, translate: function(number, withoutSuffix, key) { var wordKey = me__translator.words[key]; return 1 === key.length ? withoutSuffix ? wordKey[0] : wordKey[1] : number + " " + me__translator.correctGrammaticalCase(number, wordKey) } }),
7484            mr__symbolMap = (moment__default.defineLocale("me", {
7485                months: "januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),
7486                monthsShort: "jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),
7487                monthsParseExact: !0,
7488                weekdays: "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),
7489                weekdaysShort: "ned._pon._uto._sri._čet._pet._sub.".split("_"),
7490                weekdaysMin: "ne_po_ut_sr_če_pe_su".split("_"),
7491                weekdaysParseExact: !0,
7492                longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd, D. MMMM YYYY H:mm" },
7493                calendar: {
7494                    sameDay: "[danas u] LT",
7495                    nextDay: "[sjutra u] LT",
7496                    nextWeek: function() {
7497                        switch (this.day()) {
7498                            case 0:
7499                                return "[u] [nedjelju] [u] LT";
7500                            case 3:
7501                                return "[u] [srijedu] [u] LT";
7502                            case 6:
7503                                return "[u] [subotu] [u] LT";
7504                            case 1:
7505                            case 2:
7506                            case 4:
7507                            case 5:
7508                                return "[u] dddd [u] LT"
7509                        }
7510                    },
7511                    lastDay: "[juče u] LT",
7512                    lastWeek: function() { var lastWeekDays = ["[prošle] [nedjelje] [u] LT", "[prošlog] [ponedjeljka] [u] LT", "[prošlog] [utorka] [u] LT", "[prošle] [srijede] [u] LT", "[prošlog] [četvrtka] [u] LT", "[prošlog] [petka] [u] LT", "[prošle] [subote] [u] LT"]; return lastWeekDays[this.day()] },
7513                    sameElse: "L"
7514                },
7515                relativeTime: { future: "za %s", past: "prije %s", s: "nekoliko sekundi", m: me__translator.translate, mm: me__translator.translate, h: me__translator.translate, hh: me__translator.translate, d: "dan", dd: me__translator.translate, M: "mjesec", MM: me__translator.translate, y: "godinu", yy: me__translator.translate },
7516                ordinalParse: /\d{1,2}\./,
7517                ordinal: "%d.",
7518                week: { dow: 1, doy: 7 }
7519            }), moment__default.defineLocale("mi", { months: "Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"), monthsShort: "Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"), monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i, weekdays: "Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"), weekdaysShort: "Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"), weekdaysMin: "Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY [i] HH:mm", LLLL: "dddd, D MMMM YYYY [i] HH:mm" }, calendar: { sameDay: "[i teie mahana, i] LT", nextDay: "[apopo i] LT", nextWeek: "dddd [i] LT", lastDay: "[inanahi i] LT", lastWeek: "dddd [whakamutunga i] LT", sameElse: "L" }, relativeTime: { future: "i roto i %s", past: "%s i mua", s: "te hēkona ruarua", m: "he meneti", mm: "%d meneti", h: "te haora", hh: "%d haora", d: "he ra", dd: "%d ra", M: "he marama", MM: "%d marama", y: "he tau", yy: "%d tau" }, ordinalParse: /\d{1,2}º/, ordinal: "%dº", week: { dow: 1, doy: 4 } }), moment__default.defineLocale("mk", {
7520                months: "јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),
7521                monthsShort: "јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),
7522                weekdays: "недела_понеделник_вторник_среда_
vendor: 7,352 bytes, lines 7522-7556
7522четврток_петок_сабота".split("_"),
7523                weekdaysShort: "нед_пон_вто_сре_чет_пет_саб".split("_"),
7524                weekdaysMin: "нe_пo_вт_ср_че_пе_сa".split("_"),
7525                longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "D.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY H:mm", LLLL: "dddd, D MMMM YYYY H:mm" },
7526                calendar: {
7527                    sameDay: "[Денес во] LT",
7528                    nextDay: "[Утре во] LT",
7529                    nextWeek: "[Во] dddd [во] LT",
7530                    lastDay: "[Вчера во] LT",
7531                    lastWeek: function() {
7532                        switch (this.day()) {
7533                            case 0:
7534                            case 3:
7535                            case 6:
7536                                return "[Изминатата] dddd [во] LT";
7537                            case 1:
7538                            case 2:
7539                            case 4:
7540                            case 5:
7541                                return "[Изминатиот] dddd [во] LT"
7542                        }
7543                    },
7544                    sameElse: "L"
7545                },
7546                relativeTime: { future: "после %s", past: "пред %s", s: "неколку секунди", m: "минута", mm: "%d минути", h: "час", hh: "%d часа", d: "ден", dd: "%d дена", M: "месец", MM: "%d месеци", y: "година", yy: "%d години" },
7547                ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
7548                ordinal: function(number) {
7549                    var lastDigit = number % 10,
7550                        last2Digits = number % 100;
7551                    return 0 === number ? number + "-ев" : 0 === last2Digits ? number + "-ен" : last2Digits > 10 && last2Digits < 20 ? number + "-ти" : 1 === lastDigit ? number + "-ви" : 2 === lastDigit ? number + "-ри" : 7 === lastDigit || 8 === lastDigit ? number + "-ми" : number + "-ти"
7552                },
7553                week: { dow: 1, doy: 7 }
7554            }), moment__default.defineLocale("ml", { months: "ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"), monthsShort: "ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"), monthsParseExact: !0, weekdays: "ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"), weekdaysShort: "ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"), weekdaysMin: "ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"), longDateFormat: { LT: "A h:mm -നു", LTS: "A h:mm:ss -നു", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm -നു", LLLL: "dddd, D MMMM YYYY, A h:mm -നു" }, calendar: { sameDay: "[ഇന്ന്] LT", nextDay: "[നാളെ] LT", nextWeek: "dddd, LT", lastDay: "[ഇന്നലെ] LT", lastWeek: "[കഴിഞ്ഞ] dddd, LT", sameElse: "L" }, relativeTime: { future: "%s കഴിഞ്ഞ്", past: "%s മുൻപ്", s: "അൽപ നിമിഷങ്ങൾ", m: "ഒരു മിനിറ്റ്", mm: "%d മിനിറ്റ്", h: "ഒരു മണിക്കൂർ", hh: "%d മണിക്കൂർ", d: "ഒരു ദിവസം", dd: "%d ദിവസം", M: "ഒരു മാസം", MM: "%d മാസം", y: "ഒരു വർഷം", yy: "%d വർഷം" }, meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "രാത്രി" === meridiem && hour >= 4 || "ഉച്ച കഴിഞ്ഞ്" === meridiem || "വൈകുന്നേരം" === meridiem ? hour + 12 : hour }, meridiem: function(hour, minute, isLower) { return hour < 4 ? "രാത്രി" : hour < 12 ? "രാവിലെ" : hour < 17 ? "ഉച്ച കഴിഞ്ഞ്" : hour < 20 ? "വൈകുന്നേരം" : "രാത്രി" } }), { 1: "१", 2: "२", 3: "३", 4: "४", 5: "५", 6: "६", 7: "७", 8: "८", 9: "९", 0: "०" }),
7555            mr__numberMap = { "१": "1", "२": "2", "३": "3", "४": "4", "५": "5", "६": "6", "७": "7", "८": "8", "९": "9", "०": "0" },
7556            my__symbolMap = (moment__default.defineLocale("mr", { months: "जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"), monthsShort: "जाने._
7556फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"), monthsParseExact: !0, weekdays: "रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"), weekdaysShort: "रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"), weekdaysMin: "र_सो_मं_बु_गु_शु_श".split("_"), longDateFormat: { LT: "A h:mm वाजता", LTS: "A h:mm:ss वाजता", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm वाजता", LLLL: "dddd, D MMMM YYYY, A h:mm वाजता" }, calendar: { sameDay: "[आज] LT", nextDay: "[उद्या] LT", nextWeek: "dddd, LT", lastDay: "[काल] LT", lastWeek: "[मागील] dddd, LT", sameElse: "L" }, relativeTime: { future: "%sमध्ये", past: "%sपूर्वी", s: relativeTimeMr, m: relativeTimeMr, mm: relativeTimeMr, h: relativeTimeMr, hh: relativeTimeMr, d: relativeTimeMr, dd: relativeTimeMr, M: relativeTimeMr, MM: relativeTimeMr, y: relativeTimeMr, yy: relativeTimeMr }, preparse: function(string) { return string.replace(/[१२३४५६७८९०]/g, function(match) { return mr__numberMap[match] }) }, postformat: function(string) { return string.replace(/\d/g, function(match) { return mr__symbolMap[match] }) }, meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "रात्री" === meridiem ? hour < 4 ? hour : hour + 12 : "सकाळी" === meridiem ? hour : "दुपारी" === meridiem ? hour >= 10 ? hour : hour + 12 : "सायंकाळी" === meridiem ? hour + 12 : void 0 }, meridiem: function(hour, minute, isLower) { return hour < 4 ? "रात्री" : hour < 10 ? "सकाळी" : hour < 17 ? "दुपारी" : hour < 20 ? "सायंकाळी" : "रात्री" }, week: { dow: 0, doy: 6 } }), moment__default.defineLocale("ms-my", { months: "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"), monthsShort: "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"), weekdays: "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"), weekdaysShort: "Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"), weekdaysMin: "Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"), longDateFormat: { LT: "HH.mm", LTS: "HH.mm.ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY [pukul] HH.mm", LLLL: "dddd, D MMMM YYYY [pukul] HH.mm" }, meridiemParse: /pagi|tengahari|petang|malam/, meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "pagi" === meridiem ? hour : "tengahari" === meridiem ? hour >= 11 ? hour : hour + 12 : "petang" === meridiem || "malam" === meridiem ? hour + 12 : void 0 }, meridiem: function(hours, minutes, isLower) { return hours < 11 ? "pagi" : hours < 15 ? "tengahari" : hours < 19 ? "petang" : "malam" }, calendar: { sameDay: "[Hari ini pukul] LT", nextDay: "[Esok pukul] LT", nextWeek: "dddd [pukul] LT", lastDay: "[Kelmarin pukul] LT", lastWeek: "dddd [lepas pukul] LT", sameElse: "L" }, relativeTime: { future: "dalam %s", past: "%s yang lepas", s: "beberapa saat", m: "seminit", mm: "%d minit", h: "sejam", hh: "%d j
7556am", d: "sehari", dd: "%d hari", M: "sebulan", MM: "%d bulan", y: "setahun", yy: "%d tahun" }, week: { dow: 1, doy: 7 } }), moment__default.defineLocale("ms", { months: "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"), monthsShort: "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"), weekdays: "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"), weekdaysShort: "Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"), weekdaysMin: "Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"), longDateFormat: { LT: "HH.mm", LTS: "HH.mm.ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY [pukul] HH.mm", LLLL: "dddd, D MMMM YYYY [pukul] HH.mm" }, meridiemParse: /pagi|tengahari|petang|malam/, meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "pagi" === meridiem ? hour : "tengahari" === meridiem ? hour >= 11 ? hour : hour + 12 : "petang" === meridiem || "malam" === meridiem ? hour + 12 : void 0 }, meridiem: function(hours, minutes, isLower) { return hours < 11 ? "pagi" : hours < 15 ? "tengahari" : hours < 19 ? "petang" : "malam" }, calendar: { sameDay: "[Hari ini pukul] LT", nextDay: "[Esok pukul] LT", nextWeek: "dddd [pukul] LT", lastDay: "[Kelmarin pukul] LT", lastWeek: "dddd [lepas pukul] LT", sameElse: "L" }, relativeTime: { future: "dalam %s", past: "%s yang lepas", s: "beberapa saat", m: "seminit", mm: "%d minit", h: "sejam", hh: "%d jam", d: "sehari", dd: "%d hari", M: "sebulan", MM: "%d bulan", y: "setahun", yy: "%d tahun" }, week: { dow: 1, doy: 7 } }), { 1: "၁", 2: "၂", 3: "၃", 4: "၄", 5: "၅", 6: "၆", 7: "၇", 8: "၈", 9: "၉", 0: "၀" }),
7557            my__numberMap = { "၁": "1", "၂": "2", "၃": "3", "၄": "4", "၅": "5", "၆": "6", "၇": "7", "၈": "8", "၉": "9", "၀": "0" },
7558            ne__symbolMap = (moment__default.defineLocale("my", { months: "ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"), monthsShort: "ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"), weekdays: "တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"), weekdaysShort: "နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"), weekdaysMin: "နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[ယနေ.] LT [မှာ]", nextDay: "[မနက်ဖြန်] LT [မှာ]", nextWeek: "dddd LT [မှာ]", lastDay: "[မနေ.က] LT [မှာ]", lastWeek: "[ပြီးခဲ့သော] dddd LT [မှာ]", sameElse: "L" }, relativeTime: { future: "လာမည့် %s မှာ", past: "လွန်ခဲ့သော %s က", s: "စက္ကန်.အနည်းငယ်", m: "တစ်မိနစ်", mm: "%d မိနစ်", h: "တစ်နာရီ", hh: "%d နာရီ", d: "တစ်ရက်", dd: "%d ရက်", M: "တစ်လ", MM: "%d လ", y: "တစ်နှစ်", yy: "%d နှစ်" }, preparse: function(string) { return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function(match) { return my__numberMap[match] }) }, postformat: function(string) { return string.replace(/\d/g, function(match) { return my__symbolMap[match] }) }, week: { dow: 1, doy: 4 } }), moment__default.defineLocale("nb", { months: "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), monthsShort: "jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"), monthsParseExact: !0, weekdays: "
7558søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"), weekdaysShort: "sø._ma._ti._on._to._fr._lø.".split("_"), weekdaysMin: "sø_ma_ti_on_to_fr_lø".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY [kl.] HH:mm", LLLL: "dddd D. MMMM YYYY [kl.] HH:mm" }, calendar: { sameDay: "[i dag kl.] LT", nextDay: "[i morgen kl.] LT", nextWeek: "dddd [kl.] LT", lastDay: "[i går kl.] LT", lastWeek: "[forrige] dddd [kl.] LT", sameElse: "L" }, relativeTime: { future: "om %s", past: "%s siden", s: "noen sekunder", m: "ett minutt", mm: "%d minutter", h: "en time", hh: "%d timer", d: "en dag", dd: "%d dager", M: "en måned", MM: "%d måneder", y: "ett år", yy: "%d år" }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }), { 1: "१", 2: "२", 3: "३", 4: "४", 5: "५", 6: "६", 7: "७", 8: "८", 9: "९", 0: "०" }),
7559            ne__numberMap = { "१": "1", "२": "2", "३": "3", "४": "4", "५": "5", "६": "6", "७": "7", "८": "8", "९": "9", "०": "0" },
7560            nl__monthsShortWithDots = (moment__default.defineLocale("ne", { months: "जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"), monthsShort: "जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"), monthsParseExact: !0, weekdays: "आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"), weekdaysShort: "आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"), weekdaysMin: "आ._सो._मं._बु._बि._शु._श.".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "Aको h:mm बजे", LTS: "Aको h:mm:ss बजे", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, Aको h:mm बजे", LLLL: "dddd, D MMMM YYYY, Aको h:mm बजे" }, preparse: function(string) { return string.replace(/[१२३४५६७८९०]/g, function(match) { return ne__numberMap[match] }) }, postformat: function(string) { return string.replace(/\d/g, function(match) { return ne__symbolMap[match] }) }, meridiemParse: /राति|बिहान|दिउँसो|साँझ/, meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "राति" === meridiem ? hour < 4 ? hour : hour + 12 : "बिहान" === meridiem ? hour : "दिउँसो" === meridiem ? hour >= 10 ? hour : hour + 12 : "साँझ" === meridiem ? hour + 12 : void 0 }, meridiem: function(hour, minute, isLower) { return hour < 3 ? "राति" : hour < 12 ? "बिहान" : hour < 16 ? "दिउँसो" : hour < 20 ? "साँझ" : "राति" }, calendar: { sameDay: "[आज] LT", nextDay: "[भोलि] LT", nextWeek: "[आउँदो] dddd[,] LT", lastDay: "[हिजो] LT", lastWeek: "[गएको] dddd[,] LT", sameElse: "L" }, relativeTime: { future: "%sमा", past: "%s अगाडि", s: "केही क्षण", m: "एक मिनेट", mm: "%d मिनेट", h: "एक घण्टा", hh: "%d घण्टा", d: "एक दिन", dd: "%d दिन", M: "एक महिना", MM: "%d महिना", y: "एक बर्ष", yy: "%d बर्ष" }, week: { dow: 0, doy: 6 } }), "jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_")),
7561            nl__monthsShortWithoutDots = "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),
7562            nl__monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i],
7563            nl__monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
7564            pa_in__symbolMap = (moment__default.defineLocale("nl", { months: "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"), monthsShort: function(m, format) { return /-MMM-/.test(format) ? nl__monthsShortWithoutDots[m.month()] : nl__monthsShortWithDots[m.month()] }, monthsRegex: nl__monthsRegex, monthsShortRegex: nl__monthsRegex, monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i, monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, monthsParse: nl__monthsParse, longMonthsParse: nl__monthsParse, shortMonthsParse: nl__monthsParse, weekdays: "zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"), weekdaysShort: "zo._ma._di._wo._do._vr._za.".split("_"), weekdaysMin: "Zo_Ma_Di_Wo_Do_Vr_Za".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD-MM-YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[vandaag om] LT", nextDay: "[morgen om] LT", nextWeek: "dddd [om] LT", lastDay: "[gisteren om] LT", lastWeek: "[afgelopen] dddd [om] LT", sameElse: "L" }, relativeTime: { future: "over %s", past: "%s geleden", s: "een paar seconden", m: "één minuut", mm: "%d minuten", h: "één uur", hh: "%d uur", d: "één dag", dd: "%d dagen", M: "één maand", MM: "%d maanden", y: "één jaar", yy: "%d jaar" }, ordinalParse: /\d{1,2}(ste|de)/, ordinal: function(number) { return number + (1 === number || 8 === number || number >= 20 ? "ste" : "de") }, week: { dow: 1, doy: 4 } }), moment__default.defineLocale("nn", { months: "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), monthsShort: "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), weekdays: "sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"), weekdaysShort: "sun_mån_tys_ons_tor_fre_lau".split("_"), weekdaysMin: "su_må_ty_on_to_fr_lø".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY [kl.] H:mm", LLLL: "dddd D. MMMM YYYY [kl.] HH:mm" }, calendar: { sameDay: "[I dag klokka] LT", nextDay: "[I morgon klokka] LT", nextWeek: "dddd [klokka] LT", lastDay: "[I går klokka] LT", lastWeek: "[Føregåande] dddd [klokka] LT", sameElse: "L" }, relativeTime: { future: "om %s", past: "%s sidan", s: "nokre sekund", m: "eit minutt", mm: "%d minutt", h: "ein time", hh: "%d timar", d: "ein dag", dd: "%d dagar", M: "ein månad", MM: "%d månader", y: "eit år", yy: "%d år" }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }), { 1: "੧", 2: "੨", 3: "੩", 4: "੪", 5: "੫", 6: "੬", 7: "੭", 8: "੮", 9: "੯", 0: "੦" }),
7565            pa_in__numberMap = { "੧": "1", "੨": "2", "੩": "3", "੪": "4", "੫": "5", "੬": "6", "੭": "7", "੮": "8", "੯": "9", "੦": "0" },
7566            monthsNominative = (moment__default.defineLocale("pa-in", { months: "ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"), monthsShort: "ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"), weekdays: "ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"), weekdaysShort: "ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"), weekdaysMin: "ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"), longDateFormat: { LT: "A h:mm ਵਜੇ", LTS: "A h:mm:ss ਵਜੇ", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm ਵਜੇ", LLLL: "dddd, D MMMM YYYY, A h:mm ਵਜੇ" }, calendar: { sameDay: "[ਅਜ] LT", nextDay: "[ਕਲ] LT", nextWeek: "dddd, LT", lastDay: "[ਕਲ] LT", lastWeek: "[ਪਿਛਲੇ] dddd, LT", sameElse: "L" }, relativeTime: { future: "%s ਵਿੱਚ", past: "%s ਪਿਛਲੇ", s: "ਕੁਝ ਸਕਿੰਟ", m: "ਇਕ ਮਿੰਟ", mm: "%d ਮਿੰਟ", h: "ਇੱਕ ਘੰਟਾ", hh: "%d ਘੰਟੇ", d: "ਇੱਕ ਦਿਨ", dd: "%d ਦਿਨ", M: "ਇੱਕ ਮਹੀਨਾ", MM: "%d ਮਹੀਨੇ", y: "ਇੱਕ ਸਾਲ", yy: "%d ਸਾਲ" }, preparse: function(string) { return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function(match) { return pa_in__numberMap[match] }) }, postformat: function(string) { return string.replace(/\d/g, function(match) { return pa_in__symbolMap[match] }) }, meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/, meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "ਰਾਤ" === meridiem ? hour < 4 ? hour : hour + 12 : "ਸਵੇਰ" === meridiem ? hour : "ਦੁਪਹਿਰ" === meridiem ? hour >= 10 ? hour : hour + 12 : "ਸ਼ਾਮ" === meridiem ? hour + 12 : void 0 }, meridiem: function(hour, minute, isLower) { return hour < 4 ? "ਰਾਤ" : hour < 10 ? "ਸਵੇਰ" : hour < 17 ? "ਦੁਪਹਿਰ" : hour < 20 ? "ਸ਼ਾਮ" : "ਰਾਤ" }, week: { dow: 0, doy: 6 } }), "styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_")),
7567            monthsSubjective = "stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),
7568            ru__monthsParse = (moment__default.defineLocale("pl", {
7569                months: function(momentToFormat, format) { return "" === format ? "(" + monthsSubjective[momentToFormat.month()] + "|" + monthsNominative[momentToFormat.month()] + ")" : /D MMMM/.test(format) ? monthsSubjective[momentToFormat.month()] : monthsNominative[momentToFormat.month()] },
7570                monthsShort: "sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),
7571                weekdays: "niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),
7572                weekdaysShort: "nie_pon_wt_śr_czw_pt_sb".split("_"),
7573                weekdaysMin: "Nd_Pn_Wt_Åšr_Cz_Pt_So".split("_"),
7574                longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" },
7575                calendar: {
7576                    sameDay: "[DziÅ› o] LT",
7577                    nextDay: "[Jutro o] LT",
7578                    nextWeek: "[W] dddd [o] LT",
7579                    lastDay: "[Wczoraj o] LT",
7580                    lastWeek: function() {
7581                        switch (this.day()) {
7582                            case 0:
7583                                return "[W zeszłą niedzielę o] LT";
7584                            case 3:
7585                                return "[W zeszłą środę o] LT";
7586                            case 6:
7587                                return "[W zeszłą sobotę o] LT";
7588                            default:
7589                                return "[W zeszły] dddd [o] LT"
7590                        }
7591                    },
7592                    sameElse: "L"
7593                },
7594                relativeTime: { future: "za %s", past: "%s temu", s: "kilka sekund", m: pl__translate, mm: pl__translate, h: pl__translate, hh: pl__translate, d: "1 dzień", dd: "%d dni", M: "miesiąc", MM: pl__translate, y: "rok", yy: pl__translate },
7595                ordinalParse: /\d{1,2}\./,
7596                ordinal: "%d.",
7597                week: { dow: 1, doy: 4 }
7598            }), moment__default.defineLocale("pt-br", { months: "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"), monthsShort: "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"), weekdays: "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".
7598split("_"), weekdaysShort: "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"), weekdaysMin: "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY [à s] HH:mm", LLLL: "dddd, D [de] MMMM [de] YYYY [à s] HH:mm" }, calendar: { sameDay: "[Hoje à s] LT", nextDay: "[Amanhã à s] LT", nextWeek: "dddd [à s] LT", lastDay: "[Ontem à s] LT", lastWeek: function() { return 0 === this.day() || 6 === this.day() ? "[Último] dddd [à s] LT" : "[Última] dddd [à s] LT" }, sameElse: "L" }, relativeTime: { future: "em %s", past: "%s atrás", s: "poucos segundos", m: "um minuto", mm: "%d minutos", h: "uma hora", hh: "%d horas", d: "um dia", dd: "%d dias", M: "um mês", MM: "%d meses", y: "um ano", yy: "%d anos" }, ordinalParse: /\d{1,2}º/, ordinal: "%dº" }), moment__default.defineLocale("pt", { months: "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"), monthsShort: "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"), weekdays: "Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"), weekdaysShort: "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"), weekdaysMin: "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY HH:mm", LLLL: "dddd, D [de] MMMM [de] YYYY HH:mm" }, calendar: { sameDay: "[Hoje à s] LT", nextDay: "[Amanhã à s] LT", nextWeek: "dddd [à s] LT", lastDay: "[Ontem à s] LT", lastWeek: function() { return 0 === this.day() || 6 === this.day() ? "[Último] dddd [à s] LT" : "[Última] dddd [à s] LT" }, sameElse: "L" }, relativeTime: { future: "em %s", past: "há %s", s: "segundos", m: "um minuto", mm: "%d minutos", h: "uma hora", hh: "%d horas", d: "um dia", dd: "%d dias", M: "um mês", MM: "%d meses", y: "um ano", yy: "%d anos" }, ordinalParse: /\d{1,2}º/, ordinal: "%dº", week: { dow: 1, doy: 4 } }), moment__default.defineLocale("ro", { months: "ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"), monthsShort: "ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"), monthsParseExact: !0, weekdays: "duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"), weekdaysShort: "Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"), weekdaysMin: "Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"), longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY H:mm", LLLL: "dddd, D MMMM YYYY H:mm" }, calendar: { sameDay: "[azi la] LT", nextDay: "[mâine la] LT", nextWeek: "dddd [la] LT", lastDay: "[ieri la] LT", lastWeek: "[fosta] dddd [la] LT", sameElse: "L" }, relativeTime: { future: "peste %s", past: "%s în urmă", s: "câteva secunde", m: "un minut", mm: ro__relativeTimeWithPlural, h: "o oră", hh: ro__relativeTimeWithPlural, d: "o zi", dd: ro__relativeTimeWithPlural, M: "o lună", MM: ro__relativeTimeWithPlural, y: "un an", yy: ro__relativeTimeWithPlural }, week: { dow: 1, doy: 7 } }), [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i]),
7599            sk__months = (moment__default.defineLocale("ru", {
7600                months: { format: "января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"), standalone: "январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_") },
7601                monthsShort: { format: "янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"), standalone: "янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_") },
7602                weekdays: { standalone: "воскресенье_понедельник_вторник_среда_
vendor: 6,822 bytes, lines 7602-7670
7602четверг_пятница_суббота".split("_"), format: "воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"), isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/ },
7603                weekdaysShort: "вс_пн_вт_ср_чт_пт_сб".split("_"),
7604                weekdaysMin: "вс_пн_вт_ср_чт_пт_сб".split("_"),
7605                monthsParse: ru__monthsParse,
7606                longMonthsParse: ru__monthsParse,
7607                shortMonthsParse: ru__monthsParse,
7608                monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
7609                monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
7610                monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
7611                monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
7612                longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY г.", LLL: "D MMMM YYYY г., HH:mm", LLLL: "dddd, D MMMM YYYY г., HH:mm" },
7613                calendar: {
7614                    sameDay: "[Сегодня в] LT",
7615                    nextDay: "[Завтра в] LT",
7616                    lastDay: "[Вчера в] LT",
7617                    nextWeek: function(now) {
7618                        if (now.week() === this.week()) return 2 === this.day() ? "[Во] dddd [в] LT" : "[В] dddd [в] LT";
7619                        switch (this.day()) {
7620                            case 0:
7621                                return "[В следующее] dddd [в] LT";
7622                            case 1:
7623                            case 2:
7624                            case 4:
7625                                return "[В следующий] dddd [в] LT";
7626                            case 3:
7627                            case 5:
7628                            case 6:
7629                                return "[В следующую] dddd [в] LT"
7630                        }
7631                    },
7632                    lastWeek: function(now) {
7633                        if (now.week() === this.week()) return 2 === this.day() ? "[Во] dddd [в] LT" : "[В] dddd [в] LT";
7634                        switch (this.day()) {
7635                            case 0:
7636                                return "[В прошлое] dddd [в] LT";
7637                            case 1:
7638                            case 2:
7639                            case 4:
7640                                return "[В прошлый] dddd [в] LT";
7641                            case 3:
7642                            case 5:
7643                            case 6:
7644                                return "[В прошлую] dddd [в] LT"
7645                        }
7646                    },
7647                    sameElse: "L"
7648                },
7649                relativeTime: { future: "через %s", past: "%s назад", s: "несколько секунд", m: ru__relativeTimeWithPlural, mm: ru__relativeTimeWithPlural, h: "час", hh: ru__relativeTimeWithPlural, d: "день", dd: ru__relativeTimeWithPlural, M: "месяц", MM: ru__relativeTimeWithPlural, y: "год", yy: ru__relativeTimeWithPlural },
7650                meridiemParse: /ночи|утра|дня|вечера/i,
7651                isPM: function(input) { return /^(дня|вечера)$/.test(input) },
7652                meridiem: function(hour, minute, isLower) { return hour < 4 ? "ночи" : hour < 12 ? "утра" : hour < 17 ? "дня" : "вечера" },
7653                ordinalParse: /\d{1,2}-(й|го|я)/,
7654                ordinal: function(number, period) {
7655                    switch (period) {
7656                        case "M":
7657                        case "d":
7658                        case "DDD":
7659                            return number + "-й";
7660                        case "D":
7661                            return number + "-го";
7662                        case "w":
7663                        case "W":
7664                            return number + "-я";
7665                        default:
7666                            return number
7667                    }
7668                },
7669                week: { dow: 1, doy: 7 }
7670            }), moment__default.defineLocale("se", { months: "ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"), monthsShort: "ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"), weekdays: "
7670sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"), weekdaysShort: "sotn_vuos_maŋ_gask_duor_bear_láv".split("_"), weekdaysMin: "s_v_m_g_d_b_L".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "MMMM D. [b.] YYYY", LLL: "MMMM D. [b.] YYYY [ti.] HH:mm", LLLL: "dddd, MMMM D. [b.] YYYY [ti.] HH:mm" }, calendar: { sameDay: "[otne ti] LT", nextDay: "[ihttin ti] LT", nextWeek: "dddd [ti] LT", lastDay: "[ikte ti] LT", lastWeek: "[ovddit] dddd [ti] LT", sameElse: "L" }, relativeTime: { future: "%s geažes", past: "maŋit %s", s: "moadde sekunddat", m: "okta minuhta", mm: "%d minuhtat", h: "okta diimmu", hh: "%d diimmut", d: "okta beaivi", dd: "%d beaivvit", M: "okta mánnu", MM: "%d mánut", y: "okta jahki", yy: "%d jagit" }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }), moment__default.defineLocale("si", { months: "ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"), monthsShort: "ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"), weekdays: "ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"), weekdaysShort: "ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"), weekdaysMin: "ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "a h:mm", LTS: "a h:mm:ss", L: "YYYY/MM/DD", LL: "YYYY MMMM D", LLL: "YYYY MMMM D, a h:mm", LLLL: "YYYY MMMM D [වැනි] dddd, a h:mm:ss" }, calendar: { sameDay: "[අද] LT[ට]", nextDay: "[හෙට] LT[ට]", nextWeek: "dddd LT[ට]", lastDay: "[ඊයේ] LT[ට]", lastWeek: "[පසුගිය] dddd LT[ට]", sameElse: "L" }, relativeTime: { future: "%sකින්", past: "%sකට පෙර", s: "තත්පර කිහිපය", m: "මිනිත්තුව", mm: "මිනිත්තු %d", h: "පැය", hh: "පැය %d", d: "දිනය", dd: "දින %d", M: "මාසය", MM: "මාස %d", y: "වසර", yy: "වසර %d" }, ordinalParse: /\d{1,2} වැනි/, ordinal: function(number) { return number + " වැනි" }, meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, isPM: function(input) { return "ප.ව." === input || "පස් වරු" === input }, meridiem: function(hours, minutes, isLower) { return hours > 11 ? isLower ? "ප.ව." : "පස් වරු" : isLower ? "පෙ.ව." : "පෙර වරු" } }), "január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_")),
7671            sk__monthsShort = "jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),
7672            sr_cyrl__translator = (moment__default.defineLocale("sk", {
7673                months: sk__months,
7674                monthsShort: sk__monthsShort,
7675                weekdays: "nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),
7676                weekdaysShort: "ne_po_ut_st_št_pi_so".split("_"),
7677                weekdaysMin: "ne_po_ut_st_št_pi_so".split("_"),
7678                longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd D. MMMM YYYY H:mm" },
7679                calendar: {
7680                    sameDay: "[dnes o] LT",
7681                    nextDay: "[zajtra o] LT",
7682                    nextWeek: function() {
7683                        switch (this.day()) {
7684                            case 0:
7685                                return "[v nedeľu o] LT";
7686                            case 1:
7687                            case 2:
7688                                return "[v] dddd [o] LT";
7689                            case 3:
7690                                return "[v stredu o] LT";
7691                            case 4:
7692                                return "[vo štvrtok o] LT";
7693                            case 5:
7694                                return "[v piatok o] LT";
7695                            case 6:
7696                                return "[v sobotu o] LT"
7697                        }
7698                    },
7699                    lastDay: "[včera o] LT",
7700                    lastWeek: function() {
7701                        switch (this.day()) {
7702                            case 0:
7703                                return "[minulú nedeľu o] LT";
7704                            case 1:
7705                            case 2:
7706                                return "[minulý] dddd [o] LT";
7707                            case 3:
7708                                return "[minulú stredu o] LT";
7709                            case 4:
7710                            case 5:
7711                                return "[minulý] dddd [o] LT";
7712                            case 6:
7713                                return "[minulú sobotu o] LT"
7714                        }
7715                    },
7716                    sameElse: "L"
7717                },
7718                relativeTime: { future: "za %s", past: "pred %s", s: sk__translate, m: sk__translate, mm: sk__translate, h: sk__translate, hh: sk__translate, d: sk__translate, dd: sk__translate, M: sk__translate, MM: sk__translate, y: sk__translate, yy: sk__translate },
7719                ordinalParse: /\d{1,2}\./,
7720                ordinal: "%d.",
7721                week: { dow: 1, doy: 4 }
7722            }), moment__default.defineLocale("sl", {
7723                months: "januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),
7724                monthsShort: "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),
7725                monthsParseExact: !0,
7726                weekdays: "nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),
7727                weekdaysShort: "ned._pon._tor._sre._čet._pet._sob.".split("_"),
7728                weekdaysMin: "ne_po_to_sr_če_pe_so".split("_"),
7729                weekdaysParseExact: !0,
7730                longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd, D. MMMM YYYY H:mm" },
7731                calendar: {
7732                    sameDay: "[danes ob] LT",
7733                    nextDay: "[jutri ob] LT",
7734                    nextWeek: function() {
7735                        switch (this.day()) {
7736                            case 0:
7737                                return "[v] [nedeljo] [ob] LT";
7738                            case 3:
7739                                return "[v] [sredo] [ob] LT";
7740                            case 6:
7741                                return "[v] [soboto] [ob] LT";
7742                            case 1:
7743                            case 2:
7744                            case 4:
7745                            case 5:
7746                                return "[v] dddd [ob] LT"
7747                        }
7748                    },
7749                    lastDay: "[včeraj ob] LT",
7750                    lastWeek: function() {
7751                        switch (this.day()) {
7752                            case 0:
7753                                return "[prejšnjo] [nedeljo] [ob] LT";
7754                            case 3:
7755                                return "[prejšnjo] [sredo] [ob] LT";
7756                            case 6:
7757                                return "[prejšnjo] [soboto] [ob] LT";
7758                            case 1:
7759                            case 2:
7760                            case 4:
7761                            case 5:
7762                                return "[prejšnji] dddd [ob] LT"
7763                        }
7764                    },
7765                    sameElse: "L"
7766                },
7767                relativeTime: { future: "čez %s", past: "pred %s", s: sl__processRelativeTime, m: sl__processRelativeTime, mm: sl__processRelativeTime, h: sl__processRelativeTime, hh: sl__processRelativeTime, d: sl__processRelativeTime, dd: sl__processRelativeTime, M: sl__processRelativeTime, MM: sl__processRelativeTime, y: sl__processRelativeTime, yy: sl__processRelativeTime },
7768                ordinalParse: /\d{1,2}\./,
7769                ordinal: "%d.",
7770                week: { dow: 1, doy: 7 }
7771            }), moment__default.defineLocale("sq", { months: "Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"), monthsShort: "Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"), weekdays: "E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"), weekdaysShort: "Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"), weekdaysMin: "D_H_Ma_Më_E_P_Sh".split("_"), weekdaysParseExact: !0, meridiemParse: /PD|MD/, isPM: function(input) { return "M" === input.charAt(0) }, meridiem: function(hours, minutes, isLower) { return hours < 12 ? "PD" : "MD" }, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }
vendor: 8,097 bytes, lines 7771-7843
7771, calendar: { sameDay: "[Sot në] LT", nextDay: "[Nesër në] LT", nextWeek: "dddd [në] LT", lastDay: "[Dje në] LT", lastWeek: "dddd [e kaluar në] LT", sameElse: "L" }, relativeTime: { future: "në %s", past: "%s më parë", s: "disa sekonda", m: "një minutë", mm: "%d minuta", h: "një orë", hh: "%d orë", d: "një ditë", dd: "%d ditë", M: "një muaj", MM: "%d muaj", y: "një vit", yy: "%d vite" }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }), { words: { m: ["један минут", "једне минуте"], mm: ["минут", "минуте", "минута"], h: ["један сат", "једног сата"], hh: ["сат", "сата", "сати"], dd: ["дан", "дана", "дана"], MM: ["месец", "месеца", "месеци"], yy: ["година", "године", "година"] }, correctGrammaticalCase: function(number, wordKey) { return 1 === number ? wordKey[0] : number >= 2 && number <= 4 ? wordKey[1] : wordKey[2] }, translate: function(number, withoutSuffix, key) { var wordKey = sr_cyrl__translator.words[key]; return 1 === key.length ? withoutSuffix ? wordKey[0] : wordKey[1] : number + " " + sr_cyrl__translator.correctGrammaticalCase(number, wordKey) } }),
7772            sr__translator = (moment__default.defineLocale("sr-cyrl", {
7773                months: "јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),
7774                monthsShort: "јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),
7775                monthsParseExact: !0,
7776                weekdays: "недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),
7777                weekdaysShort: "нед._пон._уто._сре._чет._пет._суб.".split("_"),
7778                weekdaysMin: "не_по_ут_ср_че_пе_су".split("_"),
7779                weekdaysParseExact: !0,
7780                longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd, D. MMMM YYYY H:mm" },
7781                calendar: {
7782                    sameDay: "[данас у] LT",
7783                    nextDay: "[сутра у] LT",
7784                    nextWeek: function() {
7785                        switch (this.day()) {
7786                            case 0:
7787                                return "[у] [недељу] [у] LT";
7788                            case 3:
7789                                return "[у] [среду] [у] LT";
7790                            case 6:
7791                                return "[у] [суботу] [у] LT";
7792                            case 1:
7793                            case 2:
7794                            case 4:
7795                            case 5:
7796                                return "[у] dddd [у] LT"
7797                        }
7798                    },
7799                    lastDay: "[јуче у] LT",
7800                    lastWeek: function() { var lastWeekDays = ["[прошле] [недеље] [у] LT", "[прошлог] [понедељка] [у] LT", "[прошлог] [уторка] [у] LT", "[прошле] [среде] [у] LT", "[прошлог] [четвртка] [у] LT", "[прошлог] [петка] [у] LT", "[прошле] [суботе] [у] LT"]; return lastWeekDays[this.day()] },
7801                    sameElse: "L"
7802                },
7803                relativeTime: { future: "за %s", past: "пре %s", s: "неколико секунди", m: sr_cyrl__translator.translate, mm: sr_cyrl__translator.translate, h: sr_cyrl__translator.translate, hh: sr_cyrl__translator.translate, d: "дан", dd: sr_cyrl__translator.translate, M: "месец", MM: sr_cyrl__translator.translate, y: "годину", yy: sr_cyrl__translator.translate },
7804                ordinalParse: /\d{1,2}\./,
7805                ordinal: "%d.",
7806                week: { dow: 1, doy: 7 }
7807            }), { words: { m: ["jedan minut", "jedne minute"], mm: ["minut", "minute", "minuta"], h: ["jedan sat", "jednog sata"], hh: ["sat", "sata", "sati"], dd: ["dan", "dana", "dana"], MM: ["mesec", "meseca", "meseci"], yy: ["godina", "godine", "godina"] }, correctGrammaticalCase: function(number, wordKey) { return 1 === number ? wordKey[0] : number >= 2 && number <= 4 ? wordKey[1] : wordKey[2] }, translate: function(number, withoutSuffix, key) { var wordKey = sr__translator.words[key]; return 1 === key.length ? withoutSuffix ? wordKey[0] : wordKey[1] : number + " " + sr__translator.correctGrammaticalCase(number, wordKey) } }),
7808            ta__symbolMap = (moment__default.defineLocale("sr", {
7809                months: "januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),
7810                monthsShort: "jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),
7811                monthsParseExact: !0,
7812                weekdays: "nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),
7813                weekdaysShort: "ned._pon._uto._sre._čet._pet._sub.".split("_"),
7814                weekdaysMin: "ne_po_ut_sr_če_pe_su".split("_"),
7815                weekdaysParseExact: !0,
7816                longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd, D. MMMM YYYY H:mm" },
7817                calendar: {
7818                    sameDay: "[danas u] LT",
7819                    nextDay: "[sutra u] LT",
7820                    nextWeek: function() {
7821                        switch (this.day()) {
7822                            case 0:
7823                                return "[u] [nedelju] [u] LT";
7824                            case 3:
7825                                return "[u] [sredu] [u] LT";
7826                            case 6:
7827                                return "[u] [subotu] [u] LT";
7828                            case 1:
7829                            case 2:
7830                            case 4:
7831                            case 5:
7832                                return "[u] dddd [u] LT"
7833                        }
7834                    },
7835                    lastDay: "[juče u] LT",
7836                    lastWeek: function() { var lastWeekDays = ["[prošle] [nedelje] [u] LT", "[prošlog] [ponedeljka] [u] LT", "[prošlog] [utorka] [u] LT", "[prošle] [srede] [u] LT", "[prošlog] [četvrtka] [u] LT", "[prošlog] [petka] [u] LT", "[prošle] [subote] [u] LT"]; return lastWeekDays[this.day()] },
7837                    sameElse: "L"
7838                },
7839                relativeTime: { future: "za %s", past: "pre %s", s: "nekoliko sekundi", m: sr__translator.translate, mm: sr__translator.translate, h: sr__translator.translate, hh: sr__translator.translate, d: "dan", dd: sr__translator.translate, M: "mesec", MM: sr__translator.translate, y: "godinu", yy: sr__translator.translate },
7840                ordinalParse: /\d{1,2}\./,
7841                ordinal: "%d.",
7842                week: { dow: 1, doy: 7 }
7843            }
vendor: 9,355 bytes, lines 7843-7861
7843), moment__default.defineLocale("ss", { months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"), monthsShort: "Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"), weekdays: "Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"), weekdaysShort: "Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"), weekdaysMin: "Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY h:mm A", LLLL: "dddd, D MMMM YYYY h:mm A" }, calendar: { sameDay: "[Namuhla nga] LT", nextDay: "[Kusasa nga] LT", nextWeek: "dddd [nga] LT", lastDay: "[Itolo nga] LT", lastWeek: "dddd [leliphelile] [nga] LT", sameElse: "L" }, relativeTime: { future: "nga %s", past: "wenteka nga %s", s: "emizuzwana lomcane", m: "umzuzu", mm: "%d emizuzu", h: "lihora", hh: "%d emahora", d: "lilanga", dd: "%d emalanga", M: "inyanga", MM: "%d tinyanga", y: "umnyaka", yy: "%d iminyaka" }, meridiemParse: /ekuseni|emini|entsambama|ebusuku/, meridiem: function(hours, minutes, isLower) { return hours < 11 ? "ekuseni" : hours < 15 ? "emini" : hours < 19 ? "entsambama" : "ebusuku" }, meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "ekuseni" === meridiem ? hour : "emini" === meridiem ? hour >= 11 ? hour : hour + 12 : "entsambama" === meridiem || "ebusuku" === meridiem ? 0 === hour ? 0 : hour + 12 : void 0 }, ordinalParse: /\d{1,2}/, ordinal: "%d", week: { dow: 1, doy: 4 } }), moment__default.defineLocale("sv", {
7844                months: "januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),
7845                monthsShort: "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),
7846                weekdays: "söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),
7847                weekdaysShort: "sön_mån_tis_ons_tor_fre_lör".split("_"),
7848                weekdaysMin: "sö_må_ti_on_to_fr_lö".split("_"),
7849                longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY-MM-DD", LL: "D MMMM YYYY", LLL: "D MMMM YYYY [kl.] HH:mm", LLLL: "dddd D MMMM YYYY [kl.] HH:mm", lll: "D MMM YYYY HH:mm", llll: "ddd D MMM YYYY HH:mm" },
7850                calendar: { sameDay: "[Idag] LT", nextDay: "[Imorgon] LT", lastDay: "[Igår] LT", nextWeek: "[På] dddd LT", lastWeek: "[I] dddd[s] LT", sameElse: "L" },
7851                relativeTime: { future: "om %s", past: "för %s sedan", s: "några sekunder", m: "en minut", mm: "%d minuter", h: "en timme", hh: "%d timmar", d: "en dag", dd: "%d dagar", M: "en månad", MM: "%d månader", y: "ett år", yy: "%d år" },
7852                ordinalParse: /\d{1,2}(e|a)/,
7853                ordinal: function(number) {
7854                    var b = number % 10,
7855                        output = 1 === ~~(number % 100 / 10) ? "e" : 1 === b ? "a" : 2 === b ? "a" : "e";
7856                    return number + output
7857                },
7858                week: { dow: 1, doy: 4 }
7859            }), moment__default.defineLocale("sw", { months: "Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"), monthsShort: "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"), weekdays: "Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"), weekdaysShort: "Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"), weekdaysMin: "J2_J3_J4_J5_Al_Ij_J1".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[leo saa] LT", nextDay: "[kesho saa] LT", nextWeek: "[wiki ijayo] dddd [saat] LT", lastDay: "[jana] LT", lastWeek: "[wiki iliyopita] dddd [saat] LT", sameElse: "L" }, relativeTime: { future: "%s baadaye", past: "tokea %s", s: "hivi punde", m: "dakika moja", mm: "dakika %d", h: "saa limoja", hh: "masaa %d", d: "siku moja", dd: "masiku %d", M: "mwezi mmoja", MM: "miezi %d", y: "mwaka mmoja", yy: "miaka %d" }, week: { dow: 1, doy: 7 } }), { 1: "௧", 2: "௨", 3: "௩", 4: "௪", 5: "௫", 6: "௬", 7: "௭", 8: "௮", 9: "௯", 0: "௦" }),
7860            ta__numberMap = { "௧": "1", "௨": "2", "௩": "3", "௪": "4", "௫": "5", "௬": "6", "௭": "7", "௮": "8", "௯": "9", "௦": "0" },
7861            numbersNouns = (moment__default.defineLocale("ta", { months: "ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"), monthsShort: "ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"), weekdays: "ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"), weekdaysShort: "ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"), weekdaysMin: "ஞா_தி_செ_பு_வி_வெ_ச".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, HH:mm", LLLL: "dddd, D MMMM YYYY, HH:mm" }, calendar: { sameDay: "[இன்று] LT", nextDay: "[நாளை] LT", nextWeek: "dddd, LT", lastDay: "[நேற்று] LT", lastWeek: "[கடந்த வாரம்] dddd, LT", sameElse: "L" }, relativeTime: { future: "%s இல்", past: "%s முன்", s: "ஒரு சில விநாடிகள்", m: "ஒரு நிமிடம்", mm: "%d நிமிடங்கள்", h: "ஒரு மணி நேரம்", hh: "%d மணி நேரம்", d: "ஒரு நாள்", dd: "%d நாட்கள்", M: "ஒரு மாதம்", MM: "%d மாதங்கள்", y: "ஒரு வருடம்", yy: "%d ஆண்டுகள்" }, ordinalParse: /\d{1,2}வது/, ordinal: function(number) { return number + "வது" }, preparse: function(string) { return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function(match) { return ta__numberMap[match] }) }, postformat: function(string) { return string.replace(/\d/g, function(match) { return ta__symbolMap[match] }) }, meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, meridiem: function(hour, minute, isLower) { return hour < 2 ? " யாமம்" : hour < 6 ? " வைகறை" : hour < 10 ? " காலை" : hour < 14 ? " நண்பகல்" : hour < 18 ? " எற்பாடு" : hour < 22 ? " மாலை" : " யாமம்" }, meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "யாமம்" === meridiem ? hour < 2 ? hour : hour + 12 : "வைகறை" === meridiem || "காலை" === meridiem ? hour : "நண்பகல்" === meridiem && hour >= 10 ? hour : hour + 12 }, week: { dow: 0, doy: 6 } }), moment__default.defineLocale("te", { months: "జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_
7861జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"), monthsShort: "జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"), monthsParseExact: !0, weekdays: "ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"), weekdaysShort: "ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"), weekdaysMin: "ఆ_సో_మం_బు_గు_శు_శ".split("_"), longDateFormat: { LT: "A h:mm", LTS: "A h:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm", LLLL: "dddd, D MMMM YYYY, A h:mm" }, calendar: { sameDay: "[నేడు] LT", nextDay: "[రేపు] LT", nextWeek: "dddd, LT", lastDay: "[నిన్న] LT", lastWeek: "[గత] dddd, LT", sameElse: "L" }, relativeTime: { future: "%s లో", past: "%s క్రితం", s: "కొన్ని క్షణాలు", m: "ఒక నిమిషం", mm: "%d నిమిషాలు", h: "ఒక గంట", hh: "%d గంటలు", d: "ఒక రోజు", dd: "%d రోజులు", M: "ఒక నెల", MM: "%d నెలలు", y: "ఒక సంవత్సరం", yy: "%d సంవత్సరాలు" }, ordinalParse: /\d{1,2}వ/, ordinal: "%dవ", meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/, meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "రాత్రి" === meridiem ? hour < 4 ? hour : hour + 12 : "ఉదయం" === meridiem ? hour : "మధ్యాహ్నం" === meridiem ? hour >= 10 ? hour : hour + 12 : "సాయంత్రం" === meridiem ? hour + 12 : void 0 }, meridiem: function(hour, minute, isLower) { return hour < 4 ? "రాత్రి" : hour < 10 ? "ఉదయం" : hour < 17 ? "మధ్యాహ్నం" : hour < 20 ? "సాయంత్రం" : "రాత్రి" }, week: { dow: 0, doy: 6 } }), moment__default.defineLocale("th", { months: "มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"), monthsShort: "ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"), monthsParseExact: !0, weekdays: "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"), weekdaysShort: "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"), weekdaysMin: "อา._จ._อ._พ._พฤ._ศ._ส.".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "YYYY/MM/DD", LL: "D MMMM YYYY", LLL: "D MMMM YYYY เวลา H:mm", LLLL: "วันddddที่ D MMMM YYYY เวลา H:mm" }, meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, isPM: function(input) { return "หลังเที่ยง" === input }, meridiem: function(hour, minute, isLower) { return hour < 12 ? "ก่อนเที่ยง" : "หลังเที่ยง" }, calendar: { sameDay: "[วันนี้ เวลา] LT", nextDay: "[พรุ่งนี้ เวลา] LT", nextWeek: "dddd[หน้า เวลา] LT", lastDay: "[เมื่อวานนี้ เวลา] LT", lastWeek: "[วัน]ddd
7861d[ที่แล้ว เวลา] LT", sameElse: "L" }, relativeTime: { future: "อีก %s", past: "%sที่แล้ว", s: "ไม่กี่วินาที", m: "1 นาที", mm: "%d นาที", h: "1 ชั่วโมง", hh: "%d ชั่วโมง", d: "1 วัน", dd: "%d วัน", M: "1 เดือน", MM: "%d เดือน", y: "1 ปี", yy: "%d ปี" } }), moment__default.defineLocale("tl-ph", { months: "Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"), monthsShort: "Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"), weekdays: "Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"), weekdaysShort: "Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"), weekdaysMin: "Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "MM/D/YYYY", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY HH:mm", LLLL: "dddd, MMMM DD, YYYY HH:mm" }, calendar: { sameDay: "[Ngayon sa] LT", nextDay: "[Bukas sa] LT", nextWeek: "dddd [sa] LT", lastDay: "[Kahapon sa] LT", lastWeek: "dddd [huling linggo] LT", sameElse: "L" }, relativeTime: { future: "sa loob ng %s", past: "%s ang nakalipas", s: "ilang segundo", m: "isang minuto", mm: "%d minuto", h: "isang oras", hh: "%d oras", d: "isang araw", dd: "%d araw", M: "isang buwan", MM: "%d buwan", y: "isang taon", yy: "%d taon" }, ordinalParse: /\d{1,2}/, ordinal: function(number) { return number }, week: { dow: 1, doy: 4 } }), "pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_")),
7862            tr__suffixes = (moment__default.defineLocale("tlh", { months: "tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"), monthsShort: "jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"), monthsParseExact: !0, weekdays: "lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"), weekdaysShort: "lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"), weekdaysMin: "lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[DaHjaj] LT", nextDay: "[wa’leS] LT", nextWeek: "LLL", lastDay: "[wa’Hu’] LT", lastWeek: "LLL", sameElse: "L" }, relativeTime: { future: translateFuture, past: translatePast, s: "puS lup", m: "wa’ tup", mm: tlh__translate, h: "wa’ rep", hh: tlh__translate, d: "wa’ jaj", dd: tlh__translate, M: "wa’ jar", MM: tlh__translate, y: "wa’ DIS", yy: tlh__translate }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }), { 1: "'inci", 5: "'inci", 8: "'inci", 70: "'inci", 80: "'inci", 2: "'nci", 7: "'nci", 20: "'nci", 50: "'nci", 3: "'üncü", 4: "'üncü", 100: "'üncü", 6: "'ncı", 9: "'uncu", 10: "'uncu", 30: "'uncu", 60: "'ıncı", 90: "'ıncı" }),
7863            moment_with_locales = (moment__default.defineLocale("tr", {
7864                months: "Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),
7865                monthsShort: "Oca_Åžub_Mar_Nis_May_Haz_Tem_AÄŸu_Eyl_Eki_Kas_Ara".split("_"),
7866                weekdays: "Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),
7867                weekdaysShort: "Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),
7868                weekdaysMin: "Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),
7869                longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" },
7870                calendar: { sameDay: "[bugün saat] LT", nextDay: "[yarın saat] LT", nextWeek: "[haftaya] dddd [saat] LT", lastDay: "[dün] LT", lastWeek: "[geçen hafta] dddd [saat] LT", sameElse: "L" },
7871                relativeTime: { future: "%s sonra", past: "%s önce", s: "birkaç saniye", m: "bir dakika", mm: "%d dakika", h: "bir saat", hh: "%d saat", d: "bir gün", dd: "%d gün", M: "bir ay", MM: "%d ay", y: "bir yıl", yy: "%d yıl" },
7872                ordinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,
7873                ordinal: function(number) {
7874                    if (0 === number) return number + "'ıncı";
7875                    var a = number % 10,
7876                        b = number % 100 - a,
7877                        c = number >= 100 ? 100 : null;
7878                    return number + (tr__suffixes[a] || tr__suffixes[b] || tr__suffixes[c])
7879                },
7880                week: { dow: 1, doy: 7 }
7881            }), moment__default.defineLocale("tzl", { months: "Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"), monthsShort: "Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"), weekdays: "Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"), weekdaysShort: "Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"), weekdaysMin: "Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"), longDateFormat: { LT: "HH.mm", LTS: "HH.mm.ss", L: "DD.MM.YYYY", LL: "D. MMMM [dallas] YYYY", LLL: "D. MMMM [dallas] YYYY HH.mm", LLLL: "dddd, [li] D. MMMM [dallas] YYYY HH.mm" }, meridiemParse: /d\'o|d\'a/i, isPM: function(input) { return "d'o" === input.toLowerCase() }, meridiem: function(hours, minutes, isLower) { return hours > 11 ? isLower ? "d'o" : "D'O" : isLower ? "d'a" : "D'A" }, calendar: { sameDay: "[oxhi à ] LT", nextDay: "[demà à ] LT", nextWeek: "dddd [à ] LT", lastDay: "[ieiri à ] LT", lastWeek: "[sür el] dddd [lasteu à ] LT", sameElse: "L" }, relativeTime: { future: "osprei %s", past: "ja%s", s: tzl__processRelativeTime, m: tzl__processRelativeTime, mm: tzl__processRelativeTime, h: tzl__processRelativeTime, hh: tzl__processRelativeTime, d: tzl__processRelativeTime, dd: tzl__processRelativeTime, M: tzl__processRelativeTime, MM: tzl__processRelativeTime, y: tzl__processRelativeTime, yy: tzl__processRelativeTime }, ordinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }), moment__default.defineLocale("tzm-latn", { months: "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_
7881šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"), monthsShort: "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"), weekdays: "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), weekdaysShort: "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), weekdaysMin: "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[asdkh g] LT", nextDay: "[aska g] LT", nextWeek: "dddd [g] LT", lastDay: "[assant g] LT", lastWeek: "dddd [g] LT", sameElse: "L" }, relativeTime: { future: "dadkh s yan %s", past: "yan %s", s: "imik", m: "minuḍ", mm: "%d minuḍ", h: "saɛa", hh: "%d tassaɛin", d: "ass", dd: "%d ossan", M: "ayowr", MM: "%d iyyirn", y: "asgas", yy: "%d isgasn" }, week: { dow: 6, doy: 12 } }), moment__default.defineLocale("tzm", { months: "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"), monthsShort: "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"), weekdays: "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), weekdaysShort: "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), weekdaysMin: "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[ⴰⵙⴷⵅ ⴴ] LT", nextDay: "[ⴰⵙⴽⴰ ⴴ] LT", nextWeek: "dddd [ⴴ] LT", lastDay: "[ⴰⵚⴰⵏⵜ ⴴ] LT", lastWeek: "dddd [ⴴ] LT", sameElse: "L" }, relativeTime: { future: "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s", past: "ⵢⴰⵏ %s", s: "ⵉⵎⵉⴽ", m: "ⵎⵉⵏⵓⴺ", mm: "%d ⵎⵉⵏⵓⴺ", h: "ⵙⴰⵄⴰ", hh: "%d ⵜⴰⵙⵙⴰⵄⵉⵏ", d: "ⴰⵙⵙ", dd: "%d oⵙⵙⴰⵏ", M: "ⴰⵢoⵓⵔ", MM: "%d ⵉⵢⵢⵉⵔⵏ", y: "ⴰⵙⴳⴰⵙ", yy: "%d ⵉⵙⴳⴰⵙⵏ" }, week: { dow: 6, doy: 12 } }), moment__default.defineLocale("uk", {
7882                months: { format: "січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_
vendor: 6,012 bytes, lines 7882-7928
7882грудня".split("_"), standalone: "січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_") },
7883                monthsShort: "січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),
7884                weekdays: weekdaysCaseReplace,
7885                weekdaysShort: "нд_пн_вт_ср_чт_пт_сб".split("_"),
7886                weekdaysMin: "нд_пн_вт_ср_чт_пт_сб".split("_"),
7887                longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY р.", LLL: "D MMMM YYYY р., HH:mm", LLLL: "dddd, D MMMM YYYY р., HH:mm" },
7888                calendar: {
7889                    sameDay: processHoursFunction("[Сьогодні "),
7890                    nextDay: processHoursFunction("[Завтра "),
7891                    lastDay: processHoursFunction("[Вчора "),
7892                    nextWeek: processHoursFunction("[У] dddd ["),
7893                    lastWeek: function() {
7894                        switch (this.day()) {
7895                            case 0:
7896                            case 3:
7897                            case 5:
7898                            case 6:
7899                                return processHoursFunction("[Минулої] dddd [").call(this);
7900                            case 1:
7901                            case 2:
7902                            case 4:
7903                                return processHoursFunction("[Минулого] dddd [").call(this)
7904                        }
7905                    },
7906                    sameElse: "L"
7907                },
7908                relativeTime: { future: "за %s", past: "%s тому", s: "декілька секунд", m: uk__relativeTimeWithPlural, mm: uk__relativeTimeWithPlural, h: "годину", hh: uk__relativeTimeWithPlural, d: "день", dd: uk__relativeTimeWithPlural, M: "місяць", MM: uk__relativeTimeWithPlural, y: "рік", yy: uk__relativeTimeWithPlural },
7909                meridiemParse: /ночі|ранку|дня|вечора/,
7910                isPM: function(input) { return /^(дня|вечора)$/.test(input) },
7911                meridiem: function(hour, minute, isLower) { return hour < 4 ? "ночі" : hour < 12 ? "ранку" : hour < 17 ? "дня" : "вечора" },
7912                ordinalParse: /\d{1,2}-(й|го)/,
7913                ordinal: function(number, period) {
7914                    switch (period) {
7915                        case "M":
7916                        case "d":
7917                        case "DDD":
7918                        case "w":
7919                        case "W":
7920                            return number + "-й";
7921                        case "D":
7922                            return number + "-го";
7923                        default:
7924                            return number
7925                    }
7926                },
7927                week: { dow: 1, doy: 7 }
7928            }), moment__default.defineLocale("uz", { months: "январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"), monthsShort: "янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"), weekdays: "Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"), weekdaysShort: "Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"), weekdaysMin: "Як_Ду_Се_Чо_Па_Жу_Ша".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "D MMMM YYYY, dddd HH:mm" }, calendar: { sameDay: "[Бугун соат] LT [да]", nextDay: "[Эртага] LT [да]", nextWeek: "dddd [куни соат] LT [да]", lastDay: "[Кеча соат] LT [да]", lastWeek: "[Утган] dddd [куни соат] LT [да]", sameElse: "L" }, relativeTime: { future: "Якин %s ичида", past: "Бир неча %s олдин", s: "фурсат", m: "бир дакика", mm: "%d дакика", h: "бир соат", hh: "%d соат", d: "бир кун", dd: "%d кун", M: "бир ой", MM: "%d ой", y: "бир йил", yy: "%d йил" }, week: { dow: 1, doy: 7 } }), moment__default.defineLocale("vi", { months: "tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"), monthsShort: "Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"), monthsParseExact: !0, weekdays: "chá»§ nhật_thứ hai_thứ ba_thứ tư_thứ nÄÆ
7928’m_thứ sáu_thứ bảy".split("_"), weekdaysShort: "CN_T2_T3_T4_T5_T6_T7".split("_"), weekdaysMin: "CN_T2_T3_T4_T5_T6_T7".split("_"), weekdaysParseExact: !0, meridiemParse: /sa|ch/i, isPM: function(input) { return /^ch$/i.test(input) }, meridiem: function(hours, minutes, isLower) { return hours < 12 ? isLower ? "sa" : "SA" : isLower ? "ch" : "CH" }, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM [năm] YYYY", LLL: "D MMMM [năm] YYYY HH:mm", LLLL: "dddd, D MMMM [năm] YYYY HH:mm", l: "DD/M/YYYY", ll: "D MMM YYYY", lll: "D MMM YYYY HH:mm", llll: "ddd, D MMM YYYY HH:mm" }, calendar: { sameDay: "[Hôm nay lúc] LT", nextDay: "[Ngà y mai lúc] LT", nextWeek: "dddd [tuần tá»›i lúc] LT", lastDay: "[Hôm qua lúc] LT", lastWeek: "dddd [tuần rồi lúc] LT", sameElse: "L" }, relativeTime: { future: "%s tá»›i", past: "%s trước", s: "và i giây", m: "má»™t phút", mm: "%d phút", h: "má»™t giờ", hh: "%d giờ", d: "má»™t ngà y", dd: "%d ngà y", M: "má»™t tháng", MM: "%d tháng", y: "má»™t năm", yy: "%d năm" }, ordinalParse: /\d{1,2}/, ordinal: function(number) { return number }, week: { dow: 1, doy: 4 } }), moment__default.defineLocale("x-pseudo", {
7929                months: "J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),
7930                monthsShort: "J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),
7931                monthsParseExact: !0,
7932                weekdays: "S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),
7933                weekdaysShort: "S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),
7934                weekdaysMin: "S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),
7935                weekdaysParseExact: !0,
7936                longDateFormat: { LT: "HH:mm", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" },
7937                calendar: { sameDay: "[T~ódá~ý át] LT", nextDay: "[T~ómó~rró~w át] LT", nextWeek: "dddd [át] LT", lastDay: "[Ý~ést~érdá~ý át] LT", lastWeek: "[L~ást] dddd [át] LT", sameElse: "L" },
7938                relativeTime: { future: "í~ñ %s", past: "%s á~gó", s: "á ~féw ~sécó~ñds", m: "á ~míñ~úté", mm: "%d m~íñú~tés", h: "á~ñ hó~úr", hh: "%d h~óúrs", d: "á ~dáý", dd: "%d d~áýs", M: "á ~móñ~th", MM: "%d m~óñt~hs", y: "á ~ýéár", yy: "%d ý~éárs" },
7939                ordinalParse: /\d{1,2}(th|st|nd|rd)/,
7940                ordinal: function(number) {
7941                    var b = number % 10,
7942                        output = 1 === ~~(number % 100 / 10) ? "th" : 1 === b ? "st" : 2 === b ? "nd" : 3 === b ? "rd" : "th";
7943                    return number + output
7944                },
7945                week: { dow: 1, doy: 4 }
7946            }), moment__default.defineLocale("zh-cn", {
7947                months: "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
7948                monthsShort: "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
7949                weekdays: "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
7950                weekdaysShort: "周日_周一_周二_周三_周四_周五_周六".split("_"),
7951                weekdaysMin: "日_一_二_三_四_五_六".split("_"),
7952                longDateFormat: { LT: "Ah点mm分", LTS: "Ah点m分s秒", L: "YYYY-MM-DD", LL: "YYYY年MMMD日", LLL: "YYYY年MMMD日Ah点mm分", LLLL: "YYYY年MMMD日ddddAh点mm分", l: "YYYY-MM-DD", ll: "YYYY年MMMD日", lll: "YYYY年MMMD日Ah点mm分", llll: "YYYY年MMMD日ddddAh点mm分" },
7953                meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
7954                meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "凌晨" === meridiem || "早上" === meridiem || "上午" === meridiem ? hour : "下午" === meridiem || "晚上" === meridiem ? hour + 12 : hour >= 11 ? hour : hour + 12 },
7955                meridiem: function(hour, minute, isLower) { var hm = 100 * hour + minute; return hm < 600 ? "凌晨" : hm < 900 ? "早上" : hm < 1130 ? "上午" : hm < 1230 ? "中午" : hm < 1800 ? "下午" : "晚上" },
7956                calendar: { sameDay: function() { return 0 === this.minutes() ? "[今天]Ah[点整]" : "[今天]LT" }, nextDay: function() { return 0 === this.minutes() ? "[明天]Ah[点整]" : "[明天]LT" }, lastDay: function() { return 0 === this.minutes() ? "[昨天]Ah[点整]" : "[昨天]LT" }, nextWeek: function() { var startOfWeek, prefix; return startOfWeek = moment__default().startOf("week"), prefix = this.diff(startOfWeek, "days") >= 7 ? "[下]" : "[本]", 0 === this.minutes() ? prefix + "dddAh点整" : prefix + "dddAh点mm" }, lastWeek: function() { var startOfWeek, prefix; return startOfWeek = moment__default().startOf("week"), prefix = this.unix() < startOfWeek.unix() ? "[上]" : "[本]", 0 === this.minutes() ? prefix + "dddAh点整" : prefix + "dddAh点mm" }, sameElse: "LL" },
7957                ordinalParse: /\d{1,2}(日|月|周)/,
7958                ordinal: function(number, period) {
7959                    switch (period) {
7960                        case "d":
7961                        case "D":
7962                        case "DDD":
7963                            return number + "æ—¥";
7964                        case "M":
7965                            return number + "月";
7966                        case "w":
7967                        case "W":
7968                            return number + "周";
7969                        default:
7970                            return number
7971                    }
7972                },
7973                relativeTime: { future: "%s内", past: "%s前", s: "å‡ ç§’", m: "1 分钟", mm: "%d 分钟", h: "1 小时", hh: "%d 小时", d: "1 天", dd: "%d 天", M: "1 个月", MM: "%d 个月", y: "1 å¹´", yy: "%d å¹´" },
7974                week: { dow: 1, doy: 4 }
7975            }), moment__default.defineLocale("zh-hk", {
7976                months: "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
7977                monthsShort: "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
7978                weekdays: "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
7979                weekdaysShort: "週日_週一_週二_週三_週四_週五_週六".split("_"),
7980                weekdaysMin: "日_一_二_三_四_五_六".split("_"),
7981                longDateFormat: { LT: "Ah點mm分", LTS: "Ah點m分s秒", L: "YYYY年MMMD日", LL: "YYYY年MMMD日", LLL: "YYYY年MMMD日Ah點mm分", LLLL: "YYYY年MMMD日ddddAh點mm分", l: "YYYY年MMMD日", ll: "YYYY年MMMD日", lll: "YYYY年MMMD日Ah點mm分", llll: "YYYY年MMMD日ddddAh點mm分" },
7982                meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
7983                meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "凌晨" === meridiem || "早上" === meridiem || "上午" === meridiem ? hour : "中午" === meridiem ? hour >= 11 ? hour : hour + 12 : "下午" === meridiem || "晚上" === meridiem ? hour + 12 : void 0 },
7984                meridiem: function(hour, minute, isLower) { var hm = 100 * hour + minute; return hm < 600 ? "凌晨" : hm < 900 ? "早上" : hm < 1130 ? "上午" : hm < 1230 ? "中午" : hm < 1800 ? "下午" : "晚上" },
7985                calendar: { sameDay: "[今天]LT", nextDay: "[明天]LT", nextWeek: "[下]ddddLT", lastDay: "[昨天]LT", lastWeek: "[上]ddd
7985dLT", sameElse: "L" },
7986                ordinalParse: /\d{1,2}(日|月|週)/,
7987                ordinal: function(number, period) {
7988                    switch (period) {
7989                        case "d":
7990                        case "D":
7991                        case "DDD":
7992                            return number + "æ—¥";
7993                        case "M":
7994                            return number + "月";
7995                        case "w":
7996                        case "W":
7997                            return number + "週";
7998                        default:
7999                            return number
8000                    }
8001                },
8002                relativeTime: { future: "%s內", past: "%s前", s: "幾秒", m: "1 分鐘", mm: "%d 分鐘", h: "1 小時", hh: "%d 小時", d: "1 天", dd: "%d 天", M: "1 個月", MM: "%d 個月", y: "1 年", yy: "%d 年" }
8003            }), moment__default.defineLocale("zh-tw", {
8004                months: "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
8005                monthsShort: "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
8006                weekdays: "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
8007                weekdaysShort: "週日_週一_週二_週三_週四_週五_週六".split("_"),
8008                weekdaysMin: "日_一_二_三_四_五_六".split("_"),
8009                longDateFormat: { LT: "Ah點mm分", LTS: "Ah點m分s秒", L: "YYYY年MMMD日", LL: "YYYY年MMMD日", LLL: "YYYY年MMMD日Ah點mm分", LLLL: "YYYY年MMMD日ddddAh點mm分", l: "YYYY年MMMD日", ll: "YYYY年MMMD日", lll: "YYYY年MMMD日Ah點mm分", llll: "YYYY年MMMD日ddddAh點mm分" },
8010                meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
8011                meridiemHour: function(hour, meridiem) { return 12 === hour && (hour = 0), "凌晨" === meridiem || "早上" === meridiem || "上午" === meridiem ? hour : "中午" === meridiem ? hour >= 11 ? hour : hour + 12 : "下午" === meridiem || "晚上" === meridiem ? hour + 12 : void 0 },
8012                meridiem: function(hour, minute, isLower) { var hm = 100 * hour + minute; return hm < 600 ? "凌晨" : hm < 900 ? "早上" : hm < 1130 ? "上午" : hm < 1230 ? "中午" : hm < 1800 ? "下午" : "晚上" },
8013                calendar: { sameDay: "[今天]LT", nextDay: "[明天]LT", nextWeek: "[下]ddddLT", lastDay: "[昨天]LT", lastWeek: "[上]ddddLT", sameElse: "L" },
8014                ordinalParse: /\d{1,2}(日|月|週)/,
8015                ordinal: function(number, period) {
8016                    switch (period) {
8017                        case "d":
8018                        case "D":
8019                        case "DDD":
8020                            return number + "æ—¥";
8021                        case "M":
8022                            return number + "月";
8023                        case "w":
8024                        case "W":
8025                            return number + "週";
8026                        default:
8027                            return number
8028                    }
8029                },
8030                relativeTime: { future: "%s內", past: "%s前", s: "幾秒", m: "1 分鐘", mm: "%d 分鐘", h: "1 小時", hh: "%d 小時", d: "1 天", dd: "%d 天", M: "1 個月", MM: "%d 個月", y: "1 年", yy: "%d 年" }
8031            }), moment__default);
8032        return moment_with_locales.locale("en"), moment_with_locales
8033    });
8034var DateFormatter;
8035! function() {
8036    "use strict";
8037    var _compare, _lpad, _extend, defaultSettings, DAY, HOUR;
8038    DAY = 864e5, HOUR = 3600, _compare = function(str1, str2) { return "string" == typeof str1 && "string" == typeof str2 && str1.toLowerCase() === str2.toLowerCase() }, _lpad = function(value, length, char) {
8039        var chr = char || "0",
8040            val = value.toString();
8041        return val.length < length ? _lpad(chr + val, length) : val
8042    }, _extend = function(out) {
8043        var i, obj;
8044        for (out = out || {}, i = 1; i < arguments.length; i++)
8045            if (obj = arguments[i])
8046                for (var key in obj) obj.hasOwnProperty(key) && ("object" == typeof obj[key] ? _extend(out[key], obj[key]) : out[key] = obj[key]);
8047        return out
8048    }, defaultSettings = {
8049        dateSettings: {
8050            days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
8051            daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
8052            months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "
8052November", "December"],
8053            monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
8054            meridiem: ["AM", "PM"],
8055            ordinal: function(number) {
8056                var n = number % 10,
8057                    suffixes = { 1: "st", 2: "nd", 3: "rd" };
8058                return 1 !== Math.floor(number % 100 / 10) && suffixes[n] ? suffixes[n] : "th"
8059            }
8060        },
8061        separators: /[ \-+\/\.T:@]/g,
8062        validParts: /[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,
8063        intParts: /[djwNzmnyYhHgGis]/g,
8064        tzParts: /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
8065        tzClip: /[^-+\dA-Z]/g
8066    }, DateFormatter = function(options) {
8067        var self = this,
8068            config = _extend(defaultSettings, options);
8069        self.dateSettings = config.dateSettings, self.separators = config.separators, self.validParts = config.validParts, self.intParts = config.intParts, self.tzParts = config.tzParts, self.tzClip = config.tzClip
8070    }, DateFormatter.prototype = {
8071        constructor: DateFormatter,
8072        parseDate: function(vDate, vFormat) {
8073            var vFormatParts, vDateParts, i, vDatePart, iDatePart, vMonth, vMeriIndex, vMeriOffset, len, mer, self = this,
8074                vDateFlag = !1,
8075                vTimeFlag = !1,
8076                vSettings = self.dateSettings,
8077                out = { date: null, year: null, month: null, day: null, hour: 0, min: 0, sec: 0 };
8078            if (vDate) {
8079                if (vDate instanceof Date) return vDate;
8080                if ("number" == typeof vDate) return new Date(vDate);
8081                if ("U" === vFormat) return i = parseInt(vDate), i ? new Date(1e3 * i) : vDate;
8082                if ("string" != typeof vDate) return "";
8083                if (vFormatParts = vFormat.match(self.validParts), !vFormatParts || 0 === vFormatParts.length) throw new Error("Invalid date format definition.");
8084                for (vDateParts = vDate.replace(self.separators, "\0").split("\0"), i = 0; i < vDateParts.length; i++) switch (vDatePart = vDateParts[i], iDatePart = parseInt(vDatePart), vFormatParts[i]) {
8085                    case "y":
8086                    case "Y":
8087                        len = vDatePart.length, 2 === len ? out.year = parseInt((iDatePart < 70 ? "20" : "19") + vDatePart) : 4 === len && (out.year = iDatePart), vDateFlag = !0;
8088                        break;
8089                    case "m":
8090                    case "n":
8091                    case "M":
8092                    case "F":
8093                        isNaN(vDatePart) ? (vMonth = vSettings.monthsShort.indexOf(vDatePart), vMonth > -1 && (out.month = vMonth + 1), vMonth = vSettings.months.indexOf(vDatePart), vMonth > -1 && (out.month = vMonth + 1)) : iDatePart >= 1 && iDatePart <= 12 && (out.month = iDatePart), vDateFlag = !0;
8094                        break;
8095                    case "d":
8096                    case "j":
8097                        iDatePart >= 1 && iDatePart <= 31 && (out.day = iDatePart), vDateFlag = !0;
8098                        break;
8099                    case "g":
8100                    case "h":
8101                        vMeriIndex = vFormatParts.indexOf("a") > -1 ? vFormatParts.indexOf("a") : vFormatParts.indexOf("A") > -1 ? vFormatParts.indexOf("A") : -1, mer = vDateParts[vMeriIndex], vMeriIndex > -1 ? (vMeriOffset = _compare(mer, vSettings.meridiem[0]) ? 0 : _compare(mer, vSettings.meridiem[1]) ? 12 : -1, iDatePart >= 1 && iDatePart <= 12 && vMeriOffset > -1 ? out.hour = iDatePart + vMeriOffset : iDatePart >= 0 && iDatePart <= 23 && (out.hour = iDatePart)) : iDatePart >= 0 && iDatePart <= 23 && (out.hour = iDatePart), vTimeFlag = !0;
8102                        break;
8103                    case "G":
8104                    case "H":
8105                        iDatePart >= 0 && iDatePart <= 23 && (out.hour = iDatePart), vTimeFlag = !0;
8106                        break;
8107                    case "i":
8108                        iDatePart >= 0 && iDatePart <= 59 && (out.min = iDatePart), vTimeFlag = !0;
8109                        break;
8110                    case "s":
8111                        iDatePart >= 0 && iDatePart <= 59 && (out.sec = iDatePart), vTimeFlag = !0
8112                }
8113                if (vDateFlag === !0 && out.year && out.month && out.day) out.date = new Date(out.year, out.month - 1, out.day, out.hour, out.min, out.sec, 0);
8114                else {
8115                    if (vTimeFlag !== !0) return !1;
8116                    out.date = new Date(0, 0, 0, out.hour, out.min, out.sec, 0)
8117                }
8118                return out.date
8119            }
8120        },
8121        guessDate: function(vDateStr, vFormat) {
8122            if ("string" != typeof vDateStr) return vDateStr;
8123            var vYear, i, iPart, iSec, self = this,
8124                vParts = vDateStr.replace(self.separators, "\0").split("\0"),
8125                vPattern = /^[djmn]/g,
8126                vFormatParts = vFormat.match(self.validParts),
8127                vDate = new Date,
8128                vDigit = 0;
8129            if (!vPattern.test(vFormatParts[0])) return vDateStr;
8130            for (i = 0; i < vParts.length; i++) {
8131                switch (vDigit = 2, iPart = vParts[i], iSec = parseInt(iPart.substr(0, 2)), i) {
8132                    case 0:
8133                        "m" === vFormatParts[0] || "n" === vFormatParts[0] ? vDate.setMonth(iSec - 1) : vDate.setDate(iSec);
8134                        break;
8135                    case 1:
8136                        "m" === vFormatParts[0] || "n" === vFormatParts[0] ? vDate.setDate(iSec) : vDate.setMonth(iSec - 1);
8137                        break;
8138                    case 2:
8139                        vYear = vDate.getFullYear(), iPart.length < 4 ? (vDate.setFullYear(parseInt(vYear.toString().substr(0, 4 - iPart.length) + iPart)), vDigit = iPart.length) : (vDate.setFullYear = parseInt(iPart.substr(0, 4)), vDigit = 4);
8140                        break;
8141                    case 3:
8142                        vDate.setHours(iSec);
8143                        break;
8144                    case 4:
8145                        vDate.setMinutes(iSec);
8146                        break;
8147                    case 5:
8148                        vDate.setSeconds(iSec)
8149                }
8150                iPart.substr(vDigit).length > 0 && vParts.splice(i + 1, 0, iPart.substr(vDigit))
8151            }
8152            return vDate
8153        },
8154        parseFormat: function(vChar, vDate) {
8155            var fmt, self = this,
8156                vSettings = self.dateSettings,
8157                backspace = /\\?(.?)/gi,
8158                doFormat = function(t, s) { return fmt[t] ? fmt[t]() : s };
8159            return fmt = {
8160                d: function() { return _lpad(fmt.j(), 2) },
8161                D: function() { return vSettings.daysShort[fmt.w()] },
8162                j: function() { return vDate.getDate() },
8163                l: function() { return vSettings.days[fmt.w()] },
8164                N: function() { return fmt.w() || 7 },
8165                w: function() { return vDate.getDay() },
8166                z: function() {
8167                    var a = new Date(fmt.Y(), fmt.n() - 1, fmt.j()),
8168                        b = new Date(fmt.Y(), 0, 1);
8169                    return Math.round((a - b) / DAY)
8170                },
8171                W: function() {
8172                    var a = new Date(fmt.Y(), fmt.n() - 1, fmt.j() - fmt.N() + 3),
8173                        b = new Date(a.getFullYear(), 0, 4);
8174                    return _lpad(1 + Math.round((a - b) / DAY / 7), 2)
8175                },
8176                F: function() { return vSettings.months[vDate.getMonth()] },
8177                m: function() { return _lpad(fmt.n(), 2) },
8178                M: function() { return vSettings.monthsShort[vDate.getMonth()] },
8179                n: function() { return vDate.getMonth() + 1 },
8180                t: function() { return new Date(fmt.Y(), fmt.n(), 0).getDate() },
8181                L: function() { var Y = fmt.Y(); return Y % 4 === 0 && Y % 100 !== 0 || Y % 400 === 0 ? 1 : 0 },
8182                o: function() {
8183                    var n = fmt.n(),
8184                        W = fmt.W(),
8185                        Y = fmt.Y();
8186                    return Y + (12 === n && W < 9 ? 1 : 1 === n && W > 9 ? -1 : 0)
8187                },
8188                Y: function() { return vDate.getFullYear() },
8189                y: function() { return fmt.Y().toString().slice(-2) },
8190                a: function() { return fmt.A().toLowerCase() },
8191                A: function() { var n = fmt.G() < 12 ? 0 : 1; return vSettings.meridiem[n] },
8192                B: function() {
8193                    var H = vDate.getUTCHours() * HOUR,
8194                        i = 60 * vDate.getUTCMinutes(),
8195                        s = vDate.getUTCSeconds();
8196                    return _lpad(Math.floor((H + i + s + HOUR) / 86.4) % 1e3, 3)
8197                },
8198                g: function() { return fmt.G() % 12 || 12 },
8199                G: function() { return vDate.getHours() },
8200                h: function() { return _lpad(fmt.g(), 2) },
8201                H: function() { return _lpad(fmt.G(), 2) },
8202                i: function() { return _lpad(vDate.getMinutes(), 2) },
8203                s: function() { return _lpad(vDate.getSeconds(), 2) },
8204                u: function() { return _lpad(1e3 * vDate.getMilliseconds(), 6) },
8205                e: function() { var str = /\((.*)\)/.exec(String(vDate))[1]; return str || "Coordinated Universal Time" },
8206                T: function() { var str = (String(vDate).match(self.tzParts) || [""]).pop().replace(self.tzClip, ""); return str || "UTC" },
8207                I: function() {
8208                    var a = new Date(fmt.Y(), 0),
8209                        c = Date.UTC(fmt.Y(), 0),
8210                        b = new Date(fmt.Y(), 6),
8211                        d = Date.UTC(fmt.Y(), 6);
8212                    return a - c !== b - d ? 1 : 0
8213                },
8214                O: function() {
8215                    var tzo = vDate.getTimezoneOffset(),
8216                        a = Math.abs(tzo);
8217                    return (tzo > 0 ? "-" : "+") + _lpad(100 * Math.floor(a / 60) + a % 60, 4)
8218                },
8219                P: function() { var O = fmt.O(); return O.substr(0, 3) + ":" + O.substr(3, 2) },
8220                Z: function() { return 60 * -vDate.getTimezoneOffset() },
8221                c: function() { return "Y-m-d\\TH:i:sP".replace(backspace, doFormat) },
8222                r: function() { return "D, d M Y H:i:s O".replace(backspace, doFormat) },
8223                U: function() { return vDate.getTime() / 1e3 || 0 }
8224            }, doFormat(vChar, vChar)
8225        },
8226        formatDate: function(vDate, vFormat) {
8227            var i, n, len, str, vChar, self = this,
8228                vDateStr = "";
8229            if ("string" == typeof vDate && (vDate = self.parseDate(vDate, vFormat), vDate === !1)) return !1;
8230            if (vDate instanceof Date) { for (len = vFormat.length, i = 0; i < len; i++) vChar = vFormat.charAt(i), "S" !== vChar && (str = self.parseFormat(vChar, vDate), i !== len - 1 && self.intParts.test(vChar) && "S" === vFormat.charAt(i + 1) && (n = parseInt(str), str += self.dateSettings.ordinal(n)), vDateStr += str); return vDateStr }
8231            return ""
8232        }
8233    }
8234}(),
8235function(factory) { "function" == typeof define && define.amd ? define(["jquery", "jquery-mousewheel"], factory) : "object" == typeof exports ? module.exports = factory : factory(jQuery) }(function($) {
8236    "use strict";
8237
8238    function HighlightedDate(date, desc, style) { this.date = date, this.desc = desc, this.style = style }
8239    var currentlyScrollingTimeDiv = !1,
8240        default_options = { i18n: { ar: { months: ["كانون الثاني", "شباط", "آذار", "نيسان", "مايو", "حزيران", "تموز", "آب", "أيلول", "تشرين الأول", "تشرين الثاني", "كانون الأول"], dayOfWeekShort: ["ن", "ث", "ع", "خ", "ج", "س", "ح"], dayOfWeek: ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", "الأحد"] }, ro: { months: ["Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"], dayOfWeekShort: ["Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ"], dayOfWeek: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă"] }, id: { months: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "
8240November", "Desember"], dayOfWeekShort: ["Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"], dayOfWeek: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"] }, is: { months: ["Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"], dayOfWeekShort: ["Sun", "Mán", "Þrið", "Mið", "Fim", "Fös", "Lau"], dayOfWeek: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur"] }, bg: { months: ["Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"], dayOfWeekShort: ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"], dayOfWeek: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота"] }, fa: { months: ["فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند"], dayOfWeekShort: ["یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه"], dayOfWeek: ["یک‌شنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنج‌شنبه", "جمعه", "شنبه", "یک‌شنبه"] }, ru: { months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"], dayOfWeekShort: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"], dayOfWeek: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"] }, uk: { months: ["Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"], dayOfWeekShort: ["Ндл", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Сбт"], dayOfWeek: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота"] }, en: { months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "
8240November", "December"], dayOfWeekShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] }, el: { months: ["Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"], dayOfWeekShort: ["Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ"], dayOfWeek: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"] }, de: { months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], dayOfWeekShort: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], dayOfWeek: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] }, nl: { months: ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"], dayOfWeekShort: ["zo", "ma", "di", "wo", "do", "vr", "za"], dayOfWeek: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"] }, tr: { months: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"], dayOfWeekShort: ["Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts"], dayOfWeek: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"] }, fr: { months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"], dayOfWeekShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"], dayOfWeek: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] }, es: { months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"], dayOfWeekShort: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"], dayOfWeek: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"] }, th: { months: ["มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"], dayOfWeekShort: ["อา.", "จ.", "อ.", "พ.", "พฤ.", "ศ.", "ส."], dayOfWeek: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"] }, pl: { months: ["styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień"], dayOfWeekShort: ["nd", "pn", "wt", "śr", "cz", "pt", "sb"], dayOfWeek: ["niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota"] }, pt: { months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], dayOfWeekShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab"], dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"] }, ch: { months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], dayOfWeekShort: ["日", "一", "二", "三", "四", "五", "六"] }, se: { months: ["Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "
8240November", "December"], dayOfWeekShort: ["Sön", "MÃ¥n", "Tis", "Ons", "Tor", "Fre", "Lör"] }, kr: { months: ["1ì›”", "2ì›”", "3ì›”", "4ì›”", "5ì›”", "6ì›”", "7ì›”", "8ì›”", "9ì›”", "10ì›”", "11ì›”", "12ì›”"], dayOfWeekShort: ["일", "ì›”", "í™”", "수", "목", "금", "í† "], dayOfWeek: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "í† ìš”ì¼"] }, it: { months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"], dayOfWeekShort: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"], dayOfWeek: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"] }, da: { months: ["January", "Februar", "Marts", "April", "Maj", "Juni", "July", "August", "September", "Oktober", "November", "December"], dayOfWeekShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"], dayOfWeek: ["søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"] }, no: { months: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"], dayOfWeekShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"], dayOfWeek: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"] }, ja: { months: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], dayOfWeekShort: ["æ—¥", "月", "火", "æ°´", "木", "金", "土"], dayOfWeek: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜"] }, vi: { months: ["Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12"], dayOfWeekShort: ["CN", "T2", "T3", "T4", "T5", "T6", "T7"], dayOfWeek: ["Chá»§ nhật", "Thứ hai", "Thứ ba", "Thứ tư", "Thứ năm", "Thứ sáu", "Thứ bảy"] }, sl: { months: ["Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"], dayOfWeekShort: ["Ned", "Pon", "Tor", "Sre", "ÄŒet", "Pet", "Sob"], dayOfWeek: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "ÄŒetrtek", "Petek", "Sobota"] }, cs: { months: ["Leden", "Únor", "BÅ™ezen", "Duben", "KvÄ›ten", "ÄŒerven", "ÄŒervenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"], dayOfWeekShort: ["Ne", "Po", "Út", "St", "ÄŒt", "Pá", "So"] }, hu: { months: ["Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"], dayOfWeekShort: ["Va", "Hé", "Ke", "Sze", "Cs", "Pé", "Szo"], dayOfWeek: ["vasárnap", "hétfÅ‘", "kedd", "szerda", "csütörtök", "péntek", "szombat"] }, az: { months: ["Yanvar", "Fevral", "Mart", "Aprel", "May", "Iyun", "Iyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"], dayOfWeekShort: ["B", "Be", "Ça", "Ç", "Ca", "C", "Åž"], dayOfWeek: ["Bazar", "Bazar ertÉ™si", "ÇərÅŸÉ™nbÉ™ axÅŸamı", "ÇərÅŸÉ™nbÉ™", "CümÉ™ axÅŸamı", "CümÉ™", "ŞənbÉ™"] }, bs: { months: ["Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"], dayOfWeekShort: ["Ned", "Pon", "Uto", "Sri", "ÄŒet", "Pet", "Sub"], dayOfWeek: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "ÄŒetvrtak", "Petak", "Subota"] }, ca: { months: ["Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"], dayOfWeekShort: ["Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds"], dayOfWeek: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"] }, "en-GB": { months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "
8240November", "December"], dayOfWeekShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] }, et: { months: ["Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember"], dayOfWeekShort: ["P", "E", "T", "K", "N", "R", "L"], dayOfWeek: ["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev"] }, eu: { months: ["Urtarrila", "Otsaila", "Martxoa", "Apirila", "Maiatza", "Ekaina", "Uztaila", "Abuztua", "Iraila", "Urria", "Azaroa", "Abendua"], dayOfWeekShort: ["Ig.", "Al.", "Ar.", "Az.", "Og.", "Or.", "La."], dayOfWeek: ["Igandea", "Astelehena", "Asteartea", "Asteazkena", "Osteguna", "Ostirala", "Larunbata"] }, fi: { months: ["Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu"], dayOfWeekShort: ["Su", "Ma", "Ti", "Ke", "To", "Pe", "La"], dayOfWeek: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"] }, gl: { months: ["Xan", "Feb", "Maz", "Abr", "Mai", "Xun", "Xul", "Ago", "Set", "Out", "Nov", "Dec"], dayOfWeekShort: ["Dom", "Lun", "Mar", "Mer", "Xov", "Ven", "Sab"], dayOfWeek: ["Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado"] }, hr: { months: ["Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"], dayOfWeekShort: ["Ned", "Pon", "Uto", "Sri", "ÄŒet", "Pet", "Sub"], dayOfWeek: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "ÄŒetvrtak", "Petak", "Subota"] }, ko: { months: ["1ì›”", "2ì›”", "3ì›”", "4ì›”", "5ì›”", "6ì›”", "7ì›”", "8ì›”", "9ì›”", "10ì›”", "11ì›”", "12ì›”"], dayOfWeekShort: ["일", "ì›”", "í™”", "수", "목", "금", "í† "], dayOfWeek: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "í† ìš”ì¼"] }, lt: { months: ["Sausio", "Vasario", "Kovo", "Balandžio", "Gegužės", "Birželio", "Liepos", "Rugpjūčio", "RugsÄ—jo", "Spalio", "Lapkričio", "Gruodžio"], dayOfWeekShort: ["Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Å eÅ¡"], dayOfWeek: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Å eÅ¡tadienis"] }, lv: { months: ["Janvāris", "Februāris", "Marts", "AprÄ«lis ", "Maijs", "JÅ«nijs", "JÅ«lijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"], dayOfWeekShort: ["Sv", "Pr", "Ot", "Tr", "Ct", "Pk", "St"], dayOfWeek: ["SvÄ“tdiena", "Pirmdiena", "Otrdiena", "TreÅ¡diena", "Ceturtdiena", "Piektdiena", "Sestdiena"] }, mk: { months: ["јануари", "февруари", "март", "април", "мај", "јуни", "јули", "август", "септември", "октомври", "ноември", "декември"], dayOfWeekShort: ["нед", "пон", "вто", "сре", "чет", "пет", "саб"], dayOfWeek: ["Недела", "Понеделник", "Вторник", "Среда", "Четврток", "Петок", "Сабота"] }, mn: { months: ["1-Ñ€ сар", "2-Ñ€ сар", "3-Ñ€ сар", "4-Ñ€ сар", "5-Ñ€ сар", "6-Ñ€ сар", "7-Ñ€ сар", "8-Ñ€ сар", "9-Ñ€ сар", "10-Ñ€ сар", "11-Ñ€ сар", "12-Ñ€ сар"], dayOfWeekShort: ["Дав", "Мяг", "Лха", "Пүр", "Бсн", "Бям", "Ням"], dayOfWeek: ["Даваа", "Мягмар", "Лхагва", "Пүрэв", "Баасан", "Бямба", "Ням"] }, "pt-BR": { months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], dayOfWeekShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"], dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"] }, sk: { months: ["Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "
8240November", "December"], dayOfWeekShort: ["Ne", "Po", "Ut", "St", "Å t", "Pi", "So"], dayOfWeek: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Å tvrtok", "Piatok", "Sobota"] }, sq: { months: ["Janar", "Shkurt", "Mars", "Prill", "Maj", "Qershor", "Korrik", "Gusht", "Shtator", "Tetor", "Nëntor", "Dhjetor"], dayOfWeekShort: ["Die", "Hën", "Mar", "Mër", "Enj", "Pre", "Shtu"], dayOfWeek: ["E Diel", "E Hënë", "E MartÄ“", "E Mërkurë", "E Enjte", "E Premte", "E Shtunë"] }, "sr-YU": { months: ["Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"], dayOfWeekShort: ["Ned", "Pon", "Uto", "Sre", "čet", "Pet", "Sub"], dayOfWeek: ["Nedelja", "Ponedeljak", "Utorak", "Sreda", "ÄŒetvrtak", "Petak", "Subota"] }, sr: { months: ["јануар", "фебруар", "март", "април", "мај", "јун", "јул", "август", "септембар", "октобар", "новембар", "децембар"], dayOfWeekShort: ["нед", "пон", "уто", "сре", "чет", "пет", "суб"], dayOfWeek: ["Недеља", "Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота"] }, sv: { months: ["Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"], dayOfWeekShort: ["Sön", "MÃ¥n", "Tis", "Ons", "Tor", "Fre", "Lör"], dayOfWeek: ["Söndag", "MÃ¥ndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag"] }, "zh-TW": { months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], dayOfWeekShort: ["æ—¥", "一", "二", "三", "å››", "五", "å…­"], dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"] }, zh: { months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], dayOfWeekShort: ["æ—¥", "一", "二", "三", "å››", "五", "å…­"], dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"] }, he: { months: ["×™× ואר", "פברואר", "מרץ", "אפריל", "מאי", "יו× ×™", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "× ובמבר", "דצמבר"], dayOfWeekShort: ["א'", "ב'", "×’'", "ד'", "×”'", "ו'", "שבת"], dayOfWeek: ["ראשון", "ש× ×™", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"] }, hy: { months: ["Õ€Õ¸Ö‚Õ¶Õ¾Õ¡Ö€", "Õ“Õ¥Õ¿Ö€Õ¾Õ¡Ö€", "Õ„Õ¡Ö€Õ¿", "Ô±ÕºÖ€Õ«Õ¬", "Õ„Õ¡ÕµÕ«Õ½", "Õ€Õ¸Ö‚Õ¶Õ«Õ½", "Õ€Õ¸Ö‚Õ¬Õ«Õ½", "Õ•Õ£Õ¸Õ½Õ¿Õ¸Õ½", "Սեպտեմբեր", "Õ€Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€", "Õ†Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€", "Ô´Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€"], dayOfWeekShort: ["Ô¿Õ«", "ÔµÖ€Õ¯", "ÔµÖ€Ö„", "Õ‰Õ¸Ö€", "Õ€Õ¶Õ£", "ÕˆÖ‚Ö€Õ¢", "Õ‡Õ¢Õ©"], dayOfWeek: ["Ô¿Õ«Ö€Õ¡Õ¯Õ«", "ÔµÖ€Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«", "ÔµÖ€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«", "Õ‰Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«", "Õ€Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«", "ÕˆÖ‚Ö€Õ¢Õ¡Õ©", "Õ‡Õ¡Õ¢Õ¡Õ©"] }, kg: { months: ["Үчтүн айы", "Бирдин айы", "Жалган Куран", "Чын Куран", "Бугу", "Кулжа", "Теке", "Баш Оона", "Аяк Оона", "Тогуздун айы", "Жетинин айы", "Бештин айы"], dayOfWeekShort: ["Жек", "Дүй", "Шей", "Шар", "Бей", "Жум", "ИшÐÂ
8240µ"], dayOfWeek: ["Жекшемб", "Дүйшөмб", "Шейшемб", "Шаршемб", "Бейшемби", "Жума", "Ишенб"] }, rm: { months: ["Schaner", "Favrer", "Mars", "Avrigl", "Matg", "Zercladur", "Fanadur", "Avust", "Settember", "October", "November", "December"], dayOfWeekShort: ["Du", "Gli", "Ma", "Me", "Gie", "Ve", "So"], dayOfWeek: ["Dumengia", "Glindesdi", "Mardi", "Mesemna", "Gievgia", "Venderdi", "Sonda"] }, ka: { months: ["იანვარი", "თებერვალი", "მარტი", "აპრილი", "მაისი", "ივნისი", "ივლისი", "აგვისტო", "სექტემბერი", "ოქტომბერი", "ნოემბერი", "დეკემბერი"], dayOfWeekShort: ["კვ", "ორშ", "სამშ", "ოთხ", "ხუთ", "პარ", "შაბ"], dayOfWeek: ["კვირა", "ორშაბათი", "სამშაბათი", "ოთხშაბათი", "ხუთშაბათი", "პარასკევი", "შაბათი"] } }, value: "", rtl: !1, format: "Y/m/d H:i", formatTime: "H:i", formatDate: "Y/m/d", startDate: !1, step: 60, monthChangeSpinner: !0, closeOnDateSelect: !1, closeOnTimeSelect: !0, closeOnWithoutClick: !0, closeOnInputClick: !0, timepicker: !0, datepicker: !0, weeks: !1, defaultTime: !1, defaultDate: !1, minDate: !1, maxDate: !1, minTime: !1, maxTime: !1, disabledMinTime: !1, disabledMaxTime: !1, allowTimes: [], opened: !1, initTime: !0, inline: !1, theme: "", onSelectDate: function() {}, onSelectTime: function() {}, onChangeMonth: function() {}, onGetWeekOfYear: function() {}, onChangeYear: function() {}, onChangeDateTime: function() {}, onShow: function() {}, onClose: function() {}, onGenerate: function() {}, withoutCopyright: !0, inverseButton: !1, hours12: !1, next: "xdsoft_next", prev: "xdsoft_prev", dayOfWeekStart: 0, parentID: "body", timeHeightInTimePicker: 25, timepickerScrollbar: !0, todayButton: !0, prevButton: !0, nextButton: !0, defaultSelect: !0, scrollMonth: !0, scrollTime: !0, scrollInput: !0, lazyInit: !1, mask: !1, validateOnBlur: !0, allowBlank: !0, yearStart: 1950, yearEnd: 2050, monthStart: 0, monthEnd: 11, style: "", id: "", fixed: !1, roundTime: "round", className: "", weekends: [], highlightedDates: [], highlightedPeriods: [], allowDates: [], allowDateRe: null, disabledDates: [], disabledWeekDays: [], yearOffset: 0, beforeShowDay: null, enterLikeTab: !0, showApplyButton: !1 },
8241        dateHelper = null,
8242        globalLocaleDefault = "en",
8243        globalLocale = "en",
8244        dateFormatterOptionsDefault = { meridiem: ["AM", "PM"] },
8245        initDateFormatter = function() {
8246            var locale = default_options.i18n[globalLocale],
8247                opts = { days: locale.dayOfWeek, daysShort: locale.dayOfWeekShort, months: locale.months, monthsShort: $.map(locale.months, function(n) { return n.substring(0, 3) }) };
8248            dateHelper = new DateFormatter({ dateSettings: $.extend({}, dateFormatterOptionsDefault, opts) })
8249        };
8250    $.datetimepicker = {
8251        setLocale: function(locale) {
8252            var newLocale = default_options.i18n[locale] ? locale : globalLocaleDefault;
8253            globalLocale != newLocale && (globalLocale = newLocale, initDateFormatter())
8254        },
8255        setDateFormatter: function(dateFormatter) { dateHelper = dateFormatter },
8256        RFC_2822: "D, d M Y H:i:s O",
8257        ATOM: "Y-m-dTH:i:sP",
8258        ISO_8601: "Y-m-dTH:i:sO",
8259        RFC_822: "D, d M y H:i:s O",
8260        RFC_850: "l, d-M-y H:i:s T",
8261        RFC_1036: "D, d M y H:i:s O",
8262        RFC_1123: "D, d M Y H:i:s O",
8263        RSS: "D, d M Y H:i:s O",
8264        W3C: "Y-m-dTH:i:sP"
8265    }, initDateFormatter(), window.getComputedStyle || (window.getComputedStyle = function(el, pseudo) { return this.el = el, this.getPropertyValue = function(prop) { var re = /(\-([a-z]){1})/g; return "float" === prop && (prop = "styleFloat"), re.test(prop) && (prop = prop.replace(re, function(a, b, c) { return c.toUpperCase() })), el.currentStyle[prop] || null }, this }), Array.prototype.indexOf || (Array.prototype.indexOf = function(obj, start) {
8266        var i, j;
8267        for (i = start || 0, j = this.length; i < j; i += 1)
8268            if (this[i] === obj) return i;
8269        return -1
8270    }), Date.prototype.countDaysInMonth = function() { return new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate() }, $.fn.xdsoftScroller = function(percent) {
8271        return this.each(function() {
8272            var timebox, parentHeight, height, scrollbar, scroller, timeboxparent = $(this),
8273                pointerEventToXY = function(e) { var touch, out = { x: 0, y: 0 }; return "touchstart" === e.type || "touchmove" === e.type || "touchend" === e.type || "touchcancel" === e.type ? (touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0], out.x = touch.clientX, out.y = touch.clientY) : "mousedown" !== e.type && "mouseup" !== e.type && "mousemove" !== e.type && "mouseover" !== e.type && "mouseout" !== e.type && "mouseenter" !== e.type && "mouseleave" !== e.type || (out.x = e.clientX, out.y = e.clientY), out },
8274                maximumOffset = 100,
8275                start = !1,
8276                startY = 0,
8277                startTop = 0,
8278                h1 = 0,
8279                touchStart = !1,
8280                startTopScroll = 0,
8281                calcOffset = function() {};
8282            return "hide" === percent ? void timeboxparent.find(".xdsoft_scrollbar").hide() : ($(this).hasClass("xdsoft_scroller_box") || (timebox = timeboxparent.children().eq(0), parentHeight = timeboxparent[0].clientHeight, height = timebox[0].offsetHeight, scrollbar = $('<div class="xdsoft_scrollbar"></div>
vendor: 6,016 bytes, lines 8282-8330
8282'), scroller = $('<div class="xdsoft_scroller"></div>'), scrollbar.append(scroller), timeboxparent.addClass("xdsoft_scroller_box").append(scrollbar), calcOffset = function(event) {
8283                var offset = pointerEventToXY(event).y - startY + startTopScroll;
8284                offset < 0 && (offset = 0), offset + scroller[0].offsetHeight > h1 && (offset = h1 - scroller[0].offsetHeight), timeboxparent.trigger("scroll_element.xdsoft_scroller", [maximumOffset ? offset / maximumOffset : 0])
8285            }, scroller.on("touchstart.xdsoft_scroller mousedown.xdsoft_scroller", function(event) { parentHeight || timeboxparent.trigger("resize_scroll.xdsoft_scroller", [percent]), startY = pointerEventToXY(event).y, startTopScroll = parseInt(scroller.css("margin-top"), 10), h1 = scrollbar[0].offsetHeight, "mousedown" === event.type || "touchstart" === event.type ? (document && $(document.body).addClass("xdsoft_noselect"), $([document.body, window]).on("touchend mouseup.xdsoft_scroller", function arguments_callee() { $([document.body, window]).off("touchend mouseup.xdsoft_scroller", arguments_callee).off("mousemove.xdsoft_scroller", calcOffset).removeClass("xdsoft_noselect") }), $(document.body).on("mousemove.xdsoft_scroller", calcOffset)) : (touchStart = !0, event.stopPropagation(), event.preventDefault()) }).on("touchmove", function(event) { touchStart && (event.preventDefault(), calcOffset(event)) }).on("touchend touchcancel", function() { touchStart = !1, startTopScroll = 0 }), timeboxparent.on("scroll_element.xdsoft_scroller", function(event, percentage) {
8286                parentHeight || timeboxparent.trigger("resize_scroll.xdsoft_scroller", [percentage, !0]),
8287                    percentage = percentage > 1 ? 1 : percentage < 0 || isNaN(percentage) ? 0 : percentage, scroller.css("margin-top", maximumOffset * percentage), setTimeout(function() { timebox.css("marginTop", -parseInt((timebox[0].offsetHeight - parentHeight) * percentage, 10)) }, 10)
8288            }).on("resize_scroll.xdsoft_scroller", function(event, percentage, noTriggerScroll) {
8289                var percent, sh;
8290                parentHeight = timeboxparent[0].clientHeight, height = timebox[0].offsetHeight, percent = parentHeight / height, sh = percent * scrollbar[0].offsetHeight, percent > 1 ? scroller.hide() : (scroller.show(), scroller.css("height", parseInt(sh > 10 ? sh : 10, 10)), maximumOffset = scrollbar[0].offsetHeight - scroller[0].offsetHeight, noTriggerScroll !== !0 && timeboxparent.trigger("scroll_element.xdsoft_scroller", [percentage || Math.abs(parseInt(timebox.css("marginTop"), 10)) / (height - parentHeight)]))
8291            }), timeboxparent.on("mousewheel", function(event) { var top = Math.abs(parseInt(timebox.css("marginTop"), 10)); return top -= 20 * event.deltaY, top < 0 && (top = 0), timeboxparent.trigger("scroll_element.xdsoft_scroller", [top / (height - parentHeight)]), event.stopPropagation(), !1 }), timeboxparent.on("touchstart", function(event) { start = pointerEventToXY(event), startTop = Math.abs(parseInt(timebox.css("marginTop"), 10)) }), timeboxparent.on("touchmove", function(event) {
8292                if (start) {
8293                    event.preventDefault();
8294                    var coord = pointerEventToXY(event);
8295                    timeboxparent.trigger("scroll_element.xdsoft_scroller", [(startTop - (coord.y - start.y)) / (height - parentHeight)])
8296                }
8297            }), timeboxparent.on("touchend touchcancel", function() { start = !1, startTop = 0 })), void timeboxparent.trigger("resize_scroll.xdsoft_scroller", [percent]))
8298        })
8299    }, $.fn.datetimepicker = function(opt, opt2) {
8300        var createDateTimePicker, destroyDateTimePicker, result = this,
8301            KEY0 = 48,
8302            KEY9 = 57,
8303            _KEY0 = 96,
8304            _KEY9 = 105,
8305            CTRLKEY = 17,
8306            DEL = 46,
8307            ENTER = 13,
8308            ESC = 27,
8309            BACKSPACE = 8,
8310            ARROWLEFT = 37,
8311            ARROWUP = 38,
8312            ARROWRIGHT = 39,
8313            ARROWDOWN = 40,
8314            TAB = 9,
8315            F5 = 116,
8316            AKEY = 65,
8317            CKEY = 67,
8318            VKEY = 86,
8319            ZKEY = 90,
8320            YKEY = 89,
8321            ctrlDown = !1,
8322            options = $.isPlainObject(opt) || !opt ? $.extend(!0, {}, default_options, opt) : $.extend(!0, {}, default_options),
8323            lazyInitTimer = 0,
8324            lazyInit = function(input) { input.on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart", function initOnActionCallback() { input.is(":disabled") || input.data("xdsoft_datetimepicker") || (clearTimeout(lazyInitTimer), lazyInitTimer = setTimeout(function() { input.data("xdsoft_datetimepicker") || createDateTimePicker(input), input.off("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart", initOnActionCallback).trigger("open.xdsoft") }, 100)) }) };
8325        return createDateTimePicker = function(input) {
8326            function getCurrentValue() { var time, ct = !1; return options.startDate ? ct = _xdsoft_datetime.strToDate(options.startDate) : (ct = options.value || (input && input.val && input.val() ? input.val() : ""), ct ? ct = _xdsoft_datetime.strToDateTime(ct) : options.defaultDate && (ct = _xdsoft_datetime.strToDateTime(options.defaultDate), options.defaultTime && (time = _xdsoft_datetime.strtotime(options.defaultTime), ct.setHours(time.getHours()), ct.setMinutes(time.getMinutes())))), ct && _xdsoft_datetime.isValidDate(ct) ? datetimepicker.data("changed", !0) : ct = "", ct || 0 }
8327
8328            function setMask(options) {
8329                var isValidValue = function(mask, value) { var reg = mask.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g, "\\$1").replace(/_/g, "{digit+}").replace(/([0-9]{1})/g, "{digit$1}").replace(/\{digit([0-9]{1})\}/g, "[0-$1_]{1}").replace(/\{digit[\+]\}/g, "[0-9_]{1}"); return new RegExp(reg).test(value) },
8330                    getCaretPos = function(input) { try { if (document.selection && document.selection.createRange) { var range = document.selection.createRange();
8330 return range.getBookmark().charCodeAt(2) - 2 } if (input.setSelectionRange) return input.selectionStart } catch (e) { return 0 } },
8331                    setCaretPos = function(node, pos) { if (node = "string" == typeof node || node instanceof String ? document.getElementById(node) : node, !node) return !1; if (node.createTextRange) { var textRange = node.createTextRange(); return textRange.collapse(!0), textRange.moveEnd("character", pos), textRange.moveStart("character", pos), textRange.select(), !0 } return !!node.setSelectionRange && (node.setSelectionRange(pos, pos), !0) };
8332                options.mask && input.off("keydown.xdsoft"), options.mask === !0 && ("undefined" != typeof moment ? options.mask = options.format.replace(/Y{4}/g, "9999").replace(/Y{2}/g, "99").replace(/M{2}/g, "19").replace(/D{2}/g, "39").replace(/H{2}/g, "29").replace(/m{2}/g, "59").replace(/s{2}/g, "59") : options.mask = options.format.replace(/Y/g, "9999").replace(/F/g, "9999").replace(/m/g, "19").replace(/d/g, "39").replace(/H/g, "29").replace(/i/g, "59").replace(/s/g, "59")), "string" === $.type(options.mask) && (isValidValue(options.mask, input.val()) || (input.val(options.mask.replace(/[0-9]/g, "_")), setCaretPos(input[0], 0)), input.on("keydown.xdsoft", function(event) {
8333                    var pos, digit, val = this.value,
8334                        key = event.which;
8335                    if (key >= KEY0 && key <= KEY9 || key >= _KEY0 && key <= _KEY9 || key === BACKSPACE || key === DEL) {
8336                        for (pos = getCaretPos(this), digit = key !== BACKSPACE && key !== DEL ? String.fromCharCode(_KEY0 <= key && key <= _KEY9 ? key - KEY0 : key) : "_", key !== BACKSPACE && key !== DEL || !pos || (pos -= 1, digit = "_");
8337                            /[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0;) pos += key === BACKSPACE || key === DEL ? -1 : 1;
8338                        if (val = val.substr(0, pos) + digit + val.substr(pos + 1), "" === $.trim(val)) val = options.mask.replace(/[0-9]/g, "_");
8339                        else if (pos === options.mask.length) return event.preventDefault(), !1;
8340                        for (pos += key === BACKSPACE || key === DEL ? 0 : 1;
8341                            /[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0;) pos += key === BACKSPACE || key === DEL ? -1 : 1;
8342                        isValidValue(options.mask, val) ? (this.value = val, setCaretPos(this, pos)) : "" === $.trim(val) ? this.value = options.mask.replace(/[0-9]/g, "_") : input.trigger("error_input.xdsoft")
8343                    } else if ([AKEY, CKEY, VKEY, ZKEY, YKEY].indexOf(key) !== -1 && ctrlDown || [ESC, ARROWUP, ARROWDOWN, ARROWLEFT, ARROWRIGHT, F5, CTRLKEY, TAB, ENTER].indexOf(key) !== -1) return !0;
8344                    return event.preventDefault(), !1
8345                }))
8346            }
8347            var XDSoft_datetime, xchangeTimer, timerclick, current_time_index, setPos, _xdsoft_datetime, forEachAncestorOf, datetimepicker = $('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'),
8348                xdsoft_copyright = $('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),
8349                datepicker = $('<div class="xdsoft_datepicker active"></div>'),
8350                month_picker = $('<div class="xdsoft_monthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button><div class="xdsoft_label xdsoft_month"><span></span><i></i></div><div class="xdsoft_label xdsoft_year"><span></span><i></i></div><button type="button" class="xdsoft_next"></button></div>'),
8351                calendar = $('<div class="xdsoft_calendar"></div>'),
8352                timepicker = $('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),
8353                timeboxparent = timepicker.find(".xdsoft_time_box").eq(0),
8354                timebox = $('<div class="xdsoft_time_variant"></div>'),
8355                applyButton = $('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),
8356                monthselect = $('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),
8357                yearselect = $('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),
8358                triggerAfterOpen = !1,
8359                timer = 0;
8360            options.id && datetimepicker.attr("id", options.id), options.style && datetimepicker.attr("style", options.style), options.weeks && datetimepicker.addClass("xdsoft_showweeks"), options.rtl && datetimepicker.addClass("xdsoft_rtl"), datetimepicker.addClass("xdsoft_" + options.theme), datetimepicker.addClass(options.className), month_picker.find(".xdsoft_month 
vendor: 18,577 bytes, lines 8360-8430
8360span").after(monthselect), month_picker.find(".xdsoft_year span").after(yearselect), month_picker.find(".xdsoft_month,.xdsoft_year").on("touchstart mousedown.xdsoft", function(event) {
8361                var items, i, select = $(this).find(".xdsoft_select").eq(0),
8362                    val = 0,
8363                    top = 0,
8364                    visible = select.is(":visible");
8365                for (month_picker.find(".xdsoft_select").hide(), _xdsoft_datetime.currentTime && (val = _xdsoft_datetime.currentTime[$(this).hasClass("xdsoft_month") ? "getMonth" : "getFullYear"]()), select[visible ? "hide" : "show"](), items = select.find("div.xdsoft_option"), i = 0; i < items.length && items.eq(i).data("value") !== val; i += 1) top += items[0].offsetHeight;
8366                return select.xdsoftScroller(top / (select.children()[0].offsetHeight - select[0].clientHeight)), event.stopPropagation(), !1
8367            }), month_picker.find(".xdsoft_select").xdsoftScroller().on("touchstart mousedown.xdsoft", function(event) { event.stopPropagation(), event.preventDefault() }).on("touchstart mousedown.xdsoft", ".xdsoft_option", function() {
8368                void 0 !== _xdsoft_datetime.currentTime && null !== _xdsoft_datetime.currentTime || (_xdsoft_datetime.currentTime = _xdsoft_datetime.now());
8369                var year = _xdsoft_datetime.currentTime.getFullYear();
8370                _xdsoft_datetime && _xdsoft_datetime.currentTime && _xdsoft_datetime.currentTime[$(this).parent().parent().hasClass("xdsoft_monthselect") ? "setMonth" : "setFullYear"]($(this).data("value")), $(this).parent().parent().hide(), datetimepicker.trigger("xchange.xdsoft"), options.onChangeMonth && $.isFunction(options.onChangeMonth) && options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data("input")), year !== _xdsoft_datetime.currentTime.getFullYear() && $.isFunction(options.onChangeYear) && options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data("input"))
8371            }), datetimepicker.getValue = function() { return _xdsoft_datetime.getCurrentTime() }, datetimepicker.setOptions = function(_options) {
8372                var highlightedDates = {};
8373                options = $.extend(!0, {}, options, _options), _options.allowTimes && $.isArray(_options.allowTimes) && _options.allowTimes.length && (options.allowTimes = $.extend(!0, [], _options.allowTimes)), _options.weekends && $.isArray(_options.weekends) && _options.weekends.length && (options.weekends = $.extend(!0, [], _options.weekends)), _options.allowDates && $.isArray(_options.allowDates) && _options.allowDates.length && (options.allowDates = $.extend(!0, [], _options.allowDates)), _options.allowDateRe && "[object String]" === Object.prototype.toString.call(_options.allowDateRe) && (options.allowDateRe = new RegExp(_options.allowDateRe)), _options.highlightedDates && $.isArray(_options.highlightedDates) && _options.highlightedDates.length && ($.each(_options.highlightedDates, function(index, value) {
8374                    var exDesc, splitData = $.map(value.split(","), $.trim),
8375                        hDate = new HighlightedDate(dateHelper.parseDate(splitData[0], options.formatDate), splitData[1], splitData[2]),
8376                        keyDate = dateHelper.formatDate(hDate.date, options.formatDate);
8377                    void 0 !== highlightedDates[keyDate] ? (exDesc = highlightedDates[keyDate].desc, exDesc && exDesc.length && hDate.desc && hDate.desc.length && (highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc)) : highlightedDates[keyDate] = hDate
8378                }), options.highlightedDates = $.extend(!0, [], highlightedDates)), _options.highlightedPeriods && $.isArray(_options.highlightedPeriods) && _options.highlightedPeriods.length && (highlightedDates = $.extend(!0, [], options.highlightedDates), $.each(_options.highlightedPeriods, function(index, value) {
8379                    var dateTest, dateEnd, desc, hDate, keyDate, exDesc, style;
8380                    if ($.isArray(value)) dateTest = value[0], dateEnd = value[1], desc = value[2], style = value[3];
8381                    else {
8382                        var splitData = $.map(value.split(","), $.trim);
8383                        dateTest = dateHelper.parseDate(splitData[0], options.formatDate), dateEnd = dateHelper.parseDate(splitData[1], options.formatDate), desc = splitData[2], style = splitData[3]
8384                    }
8385                    for (; dateTest <= dateEnd;) hDate = new HighlightedDate(dateTest, desc, style), keyDate = dateHelper.formatDate(dateTest, options.formatDate), dateTest.setDate(dateTest.getDate() + 1), void 0 !== highlightedDates[keyDate] ? (exDesc = highlightedDates[keyDate].desc, exDesc && exDesc.length && hDate.desc && hDate.desc.length && (highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc)) : highlightedDates[keyDate] = hDate
8386                }), options.highlightedDates = $.extend(!0, [], highlightedDates)), _options.disabledDates && $.isArray(_options.disabledDates) && _options.disabledDates.length && (options.disabledDates = $.extend(!0, [], _options.disabledDates)), _options.disabledWeekDays && $.isArray(_options.disabledWeekDays) && _options.disabledWeekDays.length && (options.disabledWeekDays = $.extend(!0, [], _options.disabledWeekDays)), !options.open && !options.opened || options.inline || input.trigger("open.xdsoft"), options.inline && (triggerAfterOpen = !0, datetimepicker.addClass("xdsoft_inline"), input.after(datetimepicker).hide()), options.inverseButton && (options.next = "xdsoft_prev", options.prev = "xdsoft_next"), options.datepicker ? datepicker.addClass("active") : datepicker.removeClass("active"), options.timepicker ? timepicker.addClass("active") : timepicker.removeClass("active"), options.value && (_xdsoft_datetime.setCurrentTime(options.value), input && input.val && input.val(_xdsoft_datetime.str)), isNaN(options.dayOfWeekStart) ? options.dayOfWeekStart = 0 : options.dayOfWeekStart = parseInt(options.dayOfWeekStart, 10) % 7, options.timepickerScrollbar || timeboxparent.xdsoftScroller("hide"), options.minDate && /^[\+\-](.*)$/.test(options.minDate) && (options.minDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.minDate), options.formatDate)), options.maxDate && /^[\+\-](.*)$/.test(options.maxDate) && (options.maxDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.maxDate), options.formatDate)), applyButton.toggle(options.showApplyButton), month_picker.find(".xdsoft_today_button").css("visibility", options.todayButton ? "visible" : "hidden"), month_picker.find("." + options.prev).css("visibility", options.prevButton ? "visible" : "hidden"), month_picker.find("." + options.next).css("visibility", options.nextButton ? "visible" : "hidden"), setMask(options), options.validateOnBlur && input.off("blur.xdsoft").on("blur.xdsoft", function() {
8387                    if (options.allowBlank && (!$.trim($(this).val()).length || "string" == typeof options.mask && $.trim($(this).val()) === options.mask.replace(/[0-9]/g, "_"))) $(this).val(null), datetimepicker.data("xdsoft_datetime").empty();
8388                    else {
8389                        var d = dateHelper.parseDate($(this).val(), options.format);
8390                        if (d) $(this).val(dateHelper.formatDate(d, options.format));
8391                        else {
8392                            var splittedHours = +[$(this).val()[0], $(this).val()[1]].join(""),
8393                                splittedMinutes = +[$(this).val()[2], $(this).val()[3]].join("");
8394                            !options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60 ? $(this).val([splittedHours, splittedMinutes].map(function(item) { return item > 9 ? item : "0" + item }).join(":")) : $(this).val(dateHelper.formatDate(_xdsoft_datetime.now(), options.format))
8395                        }
8396                        datetimepicker.data("xdsoft_datetime").setCurrentTime($(this).val())
8397                    }
8398                    datetimepicker.trigger("changedatetime.xdsoft"), datetimepicker.trigger("close.xdsoft")
8399                }), options.dayOfWeekStartPrev = 0 === options.dayOfWeekStart ? 6 : options.dayOfWeekStart - 1, datetimepicker.trigger("xchange.xdsoft").trigger("afterOpen.xdsoft")
8400            }, datetimepicker.data("options", options).on("touchstart mousedown.xdsoft", function(event) { return event.stopPropagation(), event.preventDefault(), yearselect.hide(), monthselect.hide(), !1 }), timeboxparent.append(timebox), timeboxparent.xdsoftScroller(), datetimepicker.on("afterOpen.xdsoft", function() { timeboxparent.xdsoftScroller() }), datetimepicker.append(datepicker).append(timepicker), options.withoutCopyright !== !0 && datetimepicker.append(xdsoft_copyright), datepicker.append(month_picker).append(calendar).append(applyButton), $(options.parentID).append(datetimepicker), XDSoft_datetime = function() {
8401                var _this = this;
8402                _this.now = function(norecursion) { var date, time, d = new Date; return !norecursion && options.defaultDate && (date = _this.strToDateTime(options.defaultDate), d.setFullYear(date.getFullYear()), d.setMonth(date.getMonth()), d.setDate(date.getDate())), options.yearOffset && d.setFullYear(d.getFullYear() + options.yearOffset), !norecursion && options.defaultTime && (time = _this.strtotime(options.defaultTime), d.setHours(time.getHours()), d.setMinutes(time.getMinutes())), d }, _this.isValidDate = function(d) { return "[object Date]" === Object.prototype.toString.call(d) && !isNaN(d.getTime()) }, _this.setCurrentTime = function(dTime, requireValidDate) { "string" == typeof dTime ? _this.currentTime = _this.strToDateTime(dTime) : _this.isValidDate(dTime) ? _this.currentTime = dTime : dTime || requireValidDate || !options.allowBlank ? _this.currentTime = _this.now() : _this.currentTime = null, datetimepicker.trigger("xchange.xdsoft") }, _this.empty = function() { _this.currentTime = null }, _this.getCurrentTime = function(dTime) { return _this.currentTime }, _this.nextMonth = function() { void 0 !== _this.currentTime && null !== _this.currentTime || (_this.currentTime = _this.now()); var year, month = _this.currentTime.getMonth() + 1; return 12 === month && (_this.currentTime.setFullYear(_this.currentTime.getFullYear() + 1), month = 0), year = _this.currentTime.getFullYear(), _this.currentTime.setDate(Math.min(new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(), _this.currentTime.getDate())), _this.currentTime.setMonth(month), options.onChangeMonth && $.isFunction(options.onChangeMonth) && options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data("input")), year !== _this.currentTime.getFullYear() && $.isFunction(options.onChangeYear) && options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data("input")), datetimepicker.trigger("xchange.xdsoft"), month }, _this.prevMonth = function() { void 0 !== _this.currentTime && null !== _this.currentTime || (_this.currentTime = _this.now()); var month = _this.currentTime.getMonth() - 1; return month === -1 && (_this.currentTime.setFullYear(_this.currentTime.getFullYear() - 1), month = 11), _this.currentTime.setDate(Math.min(new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(), _this.currentTime.getDate())), _this.currentTime.setMonth(month), options.onChangeMonth && $.isFunction(options.onChangeMonth) && options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data("input")), datetimepicker.trigger("xchange.xdsoft"), month }, _this.getWeekOfYear = function(datetime) { if (options.onGetWeekOfYear && $.isFunction(options.onGetWeekOfYear)) { var week = options.onGetWeekOfYear.call(datetimepicker, datetime); if ("undefined" != typeof week) return week } var onejan = new Date(datetime.getFullYear(), 0, 1); return 4 != onejan.getDay() && onejan.setMonth(0, 1 + (4 - onejan.getDay() + 7) % 7), Math.ceil(((datetime - onejan) / 864e5 + onejan.getDay() + 1) / 7) }, _this.strToDateTime = function(sDateTime) { var timeOffset, currentTime, tmpDate = []; return sDateTime && sDateTime instanceof Date && _this.isValidDate(sDateTime) ? sDateTime : (tmpDate = /^(\+|\-)(.*)$/.exec(sDateTime), tmpDate && (tmpDate[2] = dateHelper.parseDate(tmpDate[2], options.formatDate)), tmpDate && tmpDate[2] ? (timeOffset = tmpDate[2].getTime() - 6e4 * tmpDate[2].getTimezoneOffset(), currentTime = new Date(_this.now(!0).getTime() + parseInt(tmpDate[1] + "1", 10) * timeOffset)) : currentTime = sDateTime ? dateHelper.parseDate(sDateTime, options.format) : _this.now(), _this.isValidDate(currentTime) || (currentTime = _this.now()), currentTime) }, _this.strToDate = function(sDate) { if (sDate && sDate instanceof Date && _this.isValidDate(sDate)) return sDate; var currentTime = sDate ? dateHelper.parseDate(sDate, options.formatDate) : _this.now(!0); return _this.isValidDate(currentTime) || (currentTime = _this.now(!0)), currentTime }, _this.strtotime = function(sTime) { if (sTime && sTime instanceof Date && _this.isValidDate(sTime)) return sTime; var currentTime = sTime ? dateHelper.parseDate(sTime, options.formatTime) : _this.now(!0); return _this.isValidDate(currentTime) || (currentTime = _this.now(!0)), currentTime }, _this.str = function() { return dateHelper.formatDate(_this.currentTime, options.format) }, _this.currentTime = this.now()
8403            }, _xdsoft_datetime = new XDSoft_datetime, applyButton.on("touchend click", function(e) { e.preventDefault(), datetimepicker.data("changed", !0), _xdsoft_datetime.setCurrentTime(getCurrentValue()), input.val(_xdsoft_datetime.str()), datetimepicker.trigger("close.xdsoft") }), month_picker.find(".xdsoft_today_button").on("touchend mousedown.xdsoft", function() { datetimepicker.data("changed", !0), _xdsoft_datetime.setCurrentTime(0, !0), datetimepicker.trigger("afterOpen.xdsoft") }).on("dblclick.xdsoft", function() {
8404                var minDate, maxDate, currentDate = _xdsoft_datetime.getCurrentTime();
8405                currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()), minDate = _xdsoft_datetime.strToDate(options.minDate), minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()), currentDate < minDate || (maxDate = _xdsoft_datetime.strToDate(options.maxDate), maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()), currentDate > maxDate || (input.val(_xdsoft_datetime.str()), input.trigger("change"), datetimepicker.trigger("close.xdsoft")))
8406            }), month_picker.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft", function() {
8407                var $this = $(this),
8408                    timer = 0,
8409                    stop = !1;
8410                ! function arguments_callee1(v) { $this.hasClass(options.next) ? _xdsoft_datetime.nextMonth() : $this.hasClass(options.prev) && _xdsoft_datetime.prevMonth(), options.monthChangeSpinner && (stop || (timer = setTimeout(arguments_callee1, v || 100))) }(500), $([document.body, window]).on("touchend mouseup.xdsoft", function arguments_callee2() { clearTimeout(timer), stop = !0, $([document.body, window]).off("touchend mouseup.xdsoft", arguments_callee2) })
8411            }), timepicker.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft", function() {
8412                var $this = $(this),
8413                    timer = 0,
8414                    stop = !1,
8415                    period = 110;
8416                ! function arguments_callee4(v) {
8417                    var pheight = timeboxparent[0].clientHeight,
8418                        height = timebox[0].offsetHeight,
8419                        top = Math.abs(parseInt(timebox.css("marginTop"), 10));
8420                    $this.hasClass(options.next) && height - pheight - options.timeHeightInTimePicker >= top ? timebox.css("marginTop", "-" + (top + options.timeHeightInTimePicker) + "px") : $this.hasClass(options.prev) && top - options.timeHeightInTimePicker >= 0 && timebox.css("marginTop", "-" + (top - options.timeHeightInTimePicker) + "px"), timeboxparent.trigger("scroll_element.xdsoft_scroller", [Math.abs(parseInt(timebox[0].style.marginTop, 10) / (height - pheight))]), period = period > 10 ? 10 : period - 10, stop || (timer = setTimeout(arguments_callee4, v || period))
8421                }(500), $([document.body, window]).on("touchend mouseup.xdsoft", function arguments_callee5() { clearTimeout(timer), stop = !0, $([document.body, window]).off("touchend mouseup.xdsoft", arguments_callee5) })
8422            }), xchangeTimer = 0, datetimepicker.on("xchange.xdsoft", function(event) {
8423                clearTimeout(xchangeTimer), xchangeTimer = setTimeout(function() {
8424                    if (void 0 === _xdsoft_datetime.currentTime || null === _xdsoft_datetime.currentTime) {
8425                        if (options.allowBlank) return;
8426                        _xdsoft_datetime.currentTime = _xdsoft_datetime.now()
8427                    }
8428                    for (var j, hDate, day, d, y, m, w, customDateSettings, line_time, description, table = "", start = new Date(_xdsoft_datetime.currentTime.getFullYear(), _xdsoft_datetime.currentTime.getMonth(), 1, 12, 0, 0), i = 0, today = _xdsoft_datetime.now(), maxDate = !1, minDate = !1, classes = [], newRow = !0, time = "", h = ""; start.getDay() !== options.dayOfWeekStart;) start.setDate(start.getDate() - 1);
8429                    for (table += "<table><thead><tr>", options.weeks && (table += "<th></th>"), j = 0; j < 7; j += 1) table += "<th>" + options.i18n[globalLocale].dayOfWeekShort[(j + options.dayOfWeekStart) % 7] + "</th>";
8430                    for (table += "</tr></thead>", table += "<tbody>", options.maxDate !== !1 && (maxDate = _xdsoft_datetime.strToDate(options.maxDate), maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59, 59, 999)), options.minDate !== !1 && (minDate = _xdsoft_datetime.strToDate(options.minDate), minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())); i < _xdsoft_datetime.currentTime.countDaysInMonth() || start.getDay() !== options.dayOfWeekStart || _xdsoft_datetime.currentTime.getMonth() === start.getMonth();) classes = [], i += 1, day = start.getDay(), d = start.getDate(), y = start.getFullYear(), m = start.getMonth(), w = _xdsoft_datetime.getWeekOfYear(start), description = "", classes.push("xdsoft_date"), customDateSettings = options.beforeShowDay && $.isFunction(options.beforeShowDay.call) ? options.beforeShowDay.call(
8430datetimepicker, start) : null, options.allowDateRe && "[object RegExp]" === Object.prototype.toString.call(options.allowDateRe) ? options.allowDateRe.test(dateHelper.formatDate(start, options.formatDate)) || classes.push("xdsoft_disabled") : options.allowDates && options.allowDates.length > 0 ? options.allowDates.indexOf(dateHelper.formatDate(start, options.formatDate)) === -1 && classes.push("xdsoft_disabled") : maxDate !== !1 && start > maxDate || minDate !== !1 && start < minDate || customDateSettings && customDateSettings[0] === !1 ? classes.push("xdsoft_disabled") : options.disabledDates.indexOf(dateHelper.formatDate(start, options.formatDate)) !== -1 ? classes.push("xdsoft_disabled") : options.disabledWeekDays.indexOf(day) !== -1 ? classes.push("xdsoft_disabled") : input.is("[readonly]") && classes.push("xdsoft_disabled"), customDateSettings && "" !== customDateSettings[1] && classes.push(customDateSettings[1]), _xdsoft_datetime.currentTime.getMonth() !== m && classes.push("xdsoft_other_month"), (options.defaultSelect || datetimepicker.data("changed")) && dateHelper.formatDate(_xdsoft_datetime.currentTime, options.formatDate) === dateHelper.formatDate(start, options.formatDate) && classes.push("xdsoft_current"), dateHelper.formatDate(today, options.formatDate) === dateHelper.formatDate(start, options.formatDate) && classes.push("xdsoft_today"), 0 !== start.getDay() && 6 !== start.getDay() && options.weekends.indexOf(dateHelper.formatDate(start, options.formatDate)) === -1 || classes.push("xdsoft_weekend"), void 0 !== options.highlightedDates[dateHelper.formatDate(start, options.formatDate)] && (hDate = options.highlightedDates[dateHelper.formatDate(start, options.formatDate)], classes.push(void 0 === hDate.style ? "xdsoft_highlighted_default" : hDate.style), description = void 0 === hDate.desc ? "" : hDate.desc), options.beforeShowDay && $.isFunction(options.beforeShowDay) && classes.push(options.beforeShowDay(start)), newRow && (table += "<tr>", newRow = !1, options.weeks && (table += "<th>" + w + "</th>")), table += '<td data-date="' + d + '" data-month="' + m + '" data-year="' + y + '" class="xdsoft_date xdsoft_day_of_week' + start.getDay() + " " + classes.join(" ") + '" title="' + description + '"><div>' + d + "</div></td>", start.getDay() === options.dayOfWeekStartPrev && (table += "</tr>", newRow = !0), start.setDate(d + 1);
8431                    if (table += "</tbody></table>", calendar.html(table), month_picker.find(".xdsoft_label span").eq(0).text(options.i18n[globalLocale].months[_xdsoft_datetime.currentTime.getMonth()]), month_picker.find(".xdsoft_label span").eq(1).text(_xdsoft_datetime.currentTime.getFullYear()), time = "", h = "", m = "", line_time = function(h, m) {
8432                            var optionDateTime, current_time, now = _xdsoft_datetime.now(),
8433                                isALlowTimesInit = options.allowTimes && $.isArray(options.allowTimes) && options.allowTimes.length;
8434                            now.setHours(h), h = parseInt(now.getHours(), 10), now.setMinutes(m), m = parseInt(now.getMinutes(), 10), optionDateTime = new Date(_xdsoft_datetime.currentTime), optionDateTime.setHours(h), optionDateTime.setMinutes(m), classes = [], options.minDateTime !== !1 && options.minDateTime > optionDateTime || options.maxTime !== !1 && _xdsoft_datetime.strtotime(options.maxTime).getTime() < now.getTime() || options.minTime !== !1 && _xdsoft_datetime.strtotime(options.minTime).getTime() > now.getTime() ? classes.push("xdsoft_disabled") : options.minDateTime !== !1 && options.minDateTime > optionDateTime || options.disabledMinTime !== !1 && now.getTime() > _xdsoft_datetime.strtotime(options.disabledMinTime).getTime() && options.disabledMaxTime !== !1 && now.getTime() < _xdsoft_datetime.strtotime(options.disabledMaxTime).getTime() ? classes.push("xdsoft_disabled") : input.is("[readonly]") && classes.push("xdsoft_disabled"), current_time = new Date(_xdsoft_datetime.currentTime), current_time.setHours(parseInt(_xdsoft_datetime.currentTime.getHours(), 10)), isALlowTimesInit || current_time.setMinutes(Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step), (options.initTime || options.defaultSelect || datetimepicker.data("changed")) && current_time.getHours() === parseInt(h, 10) && (!isALlowTimesInit && options.step > 59 || current_time.getMinutes() === parseInt(m, 10)) && (options.defaultSelect || datetimepicker.data("changed") ? classes.push("xdsoft_current") : options.initTime && classes.push("xdsoft_init_time")), parseInt(today.getHours(), 10) === parseInt(h, 10) && parseInt(today.getMinutes(), 10) === parseInt(m, 10) && classes.push("xdsoft_today"), time += '<div class="xdsoft_time ' + classes.join(" ") + '" data-hour="' + h + '" data-minute="' + m + '">' + dateHelper.formatDate(now, options.formatTime) + "</div>"
8435                        }, options.allowTimes && $.isArray(options.allowTimes) && options.allowTimes.length)
8436                        for (i = 0; i < options.allowTimes.length; i += 1) h = _xdsoft_datetime.strtotime(options.allowTimes[i]).getHours(), m = _xdsoft_datetime.strtotime(options.allowTimes[i]).getMinutes(), line_time(h, m);
8437                    else
8438                        for (i = 0, j = 0; i < (options.hours12 ? 12 : 24); i += 1)
8439                            for (j = 0; j < 60; j += options.step) h = (i < 10 ? "0" : "") + i, m = (j < 10 ? "0" : "") + j, line_time(h, m);
8440                    for (timebox.html(time), opt = "", i = 0, i = parseInt(options.yearStart, 10) + options.yearOffset; i <= parseInt(options.yearEnd, 10) + options.yearOffset; i += 1) opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getFullYear() === i ? "xdsoft_current" : "") + '" data-value="' + i + '">' + i + "</div>";
8441                    for (yearselect.children().eq(0).html(opt), i = parseInt(options.monthStart, 10), opt = ""; i <= parseInt(options.monthEnd, 10); i += 1) opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getMonth() === i ? "xdsoft_current" : "") + '" data-value="' + i + '">' + options.i18n[globalLocale].months[i] + "</div>";
8442                    monthselect.children().eq(0).html(opt), $(datetimepicker).trigger("generate.xdsoft")
8443                }, 10), event.stopPropagation()
8444            }).on("afterOpen.xdsoft", function() {
8445                if (options.timepicker) {
8446                    var classType, pheight, height, top;
8447                    timebox.find(".xdsoft_current").length ? classType = ".xdsoft_current" : timebox.find(".xdsoft_init_time").length && (classType = ".xdsoft_init_time"), classType ? (pheight = timeboxparent[0].clientHeight, height = timebox[0].offsetHeight, top = timebox.find(classType).index() * options.timeHeightInTimePicker + 1, height - pheight < top && (top = height - pheight), timeboxparent.trigger("scroll_element.xdsoft_scroller", [parseInt(top, 10) / (height - pheight)])) : timeboxparent.trigger("scroll_element.xdsoft_scroller", [0])
8448                }
8449            }), timerclick = 0, calendar.on("touchend click.xdsoft", "td", function(xdevent) {
8450                xdevent.stopPropagation(), timerclick += 1;
8451                var $this = $(this),
8452                    currentTime = _xdsoft_datetime.currentTime;
8453                return void 0 !== currentTime && null !== currentTime || (_xdsoft_datetime.currentTime = _xdsoft_datetime.now(), currentTime = _xdsoft_datetime.currentTime), !$this.hasClass("xdsoft_disabled") && (currentTime.setDate(1), currentTime.setFullYear($this.data("year")), currentTime.setMonth($this.data("month")), currentTime.setDate($this.data("date")), datetimepicker.trigger("select.xdsoft", [currentTime]), input.val(_xdsoft_datetime.str()), options.onSelectDate && $.isFunction(options.onSelectDate) && options.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data("input"), xdevent), datetimepicker.data("changed", !0), datetimepicker.trigger("xchange.xdsoft"), datetimepicker.trigger("changedatetime.xdsoft"), (timerclick > 1 || options.closeOnDateSelect === !0 || options.closeOnDateSelect === !1 && !options.timepicker) && !options.inline && datetimepicker.trigger("close.xdsoft"), void setTimeout(function() { timerclick = 0 }, 200))
8454            }), timebox.on("touchmove", "div", function() { currentlyScrollingTimeDiv = !0 }).on("touchend click.xdsoft", "div", function(xdevent) {
8455                if (xdevent.stopPropagation(), currentlyScrollingTimeDiv) return void(currentlyScrollingTimeDiv = !1);
8456                var $this = $(this),
8457                    currentTime = _xdsoft_datetime.currentTime;
8458                return void 0 !== currentTime && null !== currentTime || (_xdsoft_datetime.currentTime = _xdsoft_datetime.now(), currentTime = _xdsoft_datetime.currentTime), !$this.hasClass("xdsoft_disabled") && (currentTime.setHours($this.data("hour")), currentTime.setMinutes($this.data("minute")), datetimepicker.trigger("select.xdsoft", [currentTime]), datetimepicker.data("input").val(_xdsoft_datetime.str()), options.onSelectTime && $.isFunction(options.onSelectTime) && options.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data("input"), xdevent), datetimepicker.data("changed", !0), datetimepicker.trigger("xchange.xdsoft"), datetimepicker.trigger("changedatetime.xdsoft"), void(options.inline !== !0 && options.closeOnTimeSelect === !0 && datetimepicker.trigger("close.xdsoft")))
8459            }), datepicker.on("mousewheel.xdsoft", function(event) { return !options.scrollMonth || (event.deltaY < 0 ? _xdsoft_datetime.nextMonth() : _xdsoft_datetime.prevMonth(), !1) }), input.on("mousewheel.xdsoft", function(event) {
8460                return !options.scrollInput || (!options.datepicker && options.timepicker ? (current_time_index = timebox.find(".xdsoft_current").length ? timebox.find(".xdsoft_current").eq(0).index() : 0, current_time_index + event.deltaY >= 0 && current_time_index + event.deltaY < timebox.children().length && (current_time_index += event.deltaY), timebox.children().eq(current_time_index).length && timebox.children().eq(current_time_index).trigger("mousedown"), !1) : options.datepicker && !options.timepicker ? (datepicker.trigger(event, [event.deltaY, event.deltaX, event.deltaY]), input.val && input.val(_xdsoft_datetime.str()), datetimepicker.trigger("changedatetime.xdsoft"), !1) : void 0)
8461            }), datetimepicker.on("changedatetime.xdsoft", function(event) {
8462                if (options.onChangeDateTime && $.isFunction(options.onChangeDateTime)) {
8463                    var $input = datetimepicker.data("input");
8464                    options.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input, event), delete options.value, $input.trigger("change")
8465                }
8466            }).on("generate.xdsoft", function() { options.onGenerate && $.isFunction(options.onGenerate) && options.onGenerate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data("input")), triggerAfterOpen && (datetimepicker.trigger("afterOpen.xdsoft"), triggerAfterOpen = !1) }).on("click.xdsoft", function(xdevent) { xdevent.stopPropagation() }
8466), current_time_index = 0, forEachAncestorOf = function(node, callback) {
8467                do
8468                    if (node = node.parentNode, callback(node) === !1) break;
8469                while ("HTML" !== node.nodeName)
8470            }, setPos = function() {
8471                var dateInputOffset, dateInputElem, verticalPosition, left, position, datetimepickerElem, dateInputHasFixedAncestor, $dateInput, windowWidth, verticalAnchorEdge, datetimepickerCss, windowHeight, windowScrollTop;
8472                if ($dateInput = datetimepicker.data("input"), dateInputOffset = $dateInput.offset(), dateInputElem = $dateInput[0], verticalAnchorEdge = "top", verticalPosition = dateInputOffset.top + dateInputElem.offsetHeight - 1, left = dateInputOffset.left, position = "absolute", windowWidth = $(window).width(), windowHeight = $(window).height(), windowScrollTop = $(window).scrollTop(), document.documentElement.clientWidth - dateInputOffset.left < datepicker.parent().outerWidth(!0)) {
8473                    var diff = datepicker.parent().outerWidth(!0) - dateInputElem.offsetWidth;
8474                    left -= diff
8475                }
8476                "rtl" === $dateInput.parent().css("direction") && (left -= datetimepicker.outerWidth() - $dateInput.outerWidth()), options.fixed ? (verticalPosition -= windowScrollTop, left -= $(window).scrollLeft(), position = "fixed") : (dateInputHasFixedAncestor = !1, forEachAncestorOf(dateInputElem, function(ancestorNode) { if ("fixed" === window.getComputedStyle(ancestorNode).getPropertyValue("position")) return dateInputHasFixedAncestor = !0, !1 }), dateInputHasFixedAncestor ? (position = "fixed", verticalPosition + datetimepicker.outerHeight() > windowHeight + windowScrollTop ? (verticalAnchorEdge = "bottom", verticalPosition = windowHeight + windowScrollTop - dateInputOffset.top) : verticalPosition -= windowScrollTop) : verticalPosition + dateInputElem.offsetHeight > windowHeight + windowScrollTop && (verticalPosition = dateInputOffset.top - dateInputElem.offsetHeight + 1), verticalPosition < 0 && (verticalPosition = 0), left + dateInputElem.offsetWidth > windowWidth && (left = windowWidth - dateInputElem.offsetWidth)), datetimepickerElem = datetimepicker[0], forEachAncestorOf(datetimepickerElem, function(ancestorNode) { var ancestorNodePosition; if (ancestorNodePosition = window.getComputedStyle(ancestorNode).getPropertyValue("position"), "relative" === ancestorNodePosition && windowWidth >= ancestorNode.offsetWidth) return left -= (windowWidth - ancestorNode.offsetWidth) / 2, !1 }), datetimepickerCss = { position: position, left: left, top: "", bottom: "" }, datetimepickerCss[verticalAnchorEdge] = verticalPosition, datetimepicker.css(datetimepickerCss)
8477            }, datetimepicker.on("open.xdsoft", function(event) {
8478                var onShow = !0;
8479                options.onShow && $.isFunction(options.onShow) && (onShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data("input"), event)), onShow !== !1 && (datetimepicker.show(), setPos(), $(window).off("resize.xdsoft", setPos).on("resize.xdsoft", setPos), options.closeOnWithoutClick && $([document.body, window]).on("touchstart mousedown.xdsoft", function arguments_callee6() { datetimepicker.trigger("close.xdsoft"), $([document.body, window]).off("touchstart mousedown.xdsoft", arguments_callee6) }))
8480            }).on("close.xdsoft", function(event) {
8481                var onClose = !0;
8482                month_picker.find(".xdsoft_month,.xdsoft_year").find(".xdsoft_select").hide(), options.onClose && $.isFunction(options.onClose) && (onClose = options.onClose.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data("input"), event)), onClose === !1 || options.opened || options.inline || datetimepicker.hide(), event.stopPropagation()
8483            }).on("toggle.xdsoft", function() { datetimepicker.is(":visible") ? datetimepicker.trigger("close.xdsoft") : datetimepicker.trigger("open.xdsoft") }).data("input", input), timer = 0, datetimepicker.data("xdsoft_datetime", _xdsoft_datetime), datetimepicker.setOptions(options), _xdsoft_datetime.setCurrentTime(getCurrentValue()), input.data("xdsoft_datetimepicker", datetimepicker).on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart", function() { input.is(":disabled") || input.data("xdsoft_datetimepicker").is(":visible") && options.closeOnInputClick || (clearTimeout(timer), timer = setTimeout(function() { input.is(":disabled") || (triggerAfterOpen = !0, _xdsoft_datetime.setCurrentTime(getCurrentValue(), !0), options.mask && setMask(options), datetimepicker.trigger("open.xdsoft")) }, 100)) }).on("keydown.xdsoft", function(event) { var elementSelector, key = event.which; return [ENTER].indexOf(key) !== -1 && options.enterLikeTab ? (elementSelector = $("input:visible,textarea:visible,button:visible,a:visible"), datetimepicker.trigger("close.xdsoft"), elementSelector.eq(elementSelector.index(this) + 1).focus(), !1) : [TAB].indexOf(key) !== -1 ? (datetimepicker.trigger("close.xdsoft"), !0) : void 0 }).on("blur.xdsoft", function() { datetimepicker.trigger("close.xdsoft") })
8484        }, destroyDateTimePicker = function(input) {
8485            var datetimepicker = input.data("xdsoft_datetimepicker");
8486            datetimepicker && (datetimepicker.data("xdsoft_datetime", null), datetimepicker.remove(), input.data("xdsoft_datetimepicker", null).off(".xdsoft"), $(window).off("resize.xdsoft"), $([window, document.body]).off("mousedown.xdsoft touchstart"), input.unmousewheel && input.unmousewheel())
8487        }, $(document).off("keydown.xdsoftctrl keyup.xdsoftctrl").on("keydown.xdsoftctrl", function(e) { e.keyCode === CTRLKEY && (ctrlDown = !0) }).on("keyup.xdsoftctrl", function(e) { e.keyCode === CTRLKEY && (ctrlDown = !1) }), this.each(function() {
8488            var $input, datetimepicker = $(this).data("xdsoft_datetimepicker");
8489            if (datetimepicker) {
8490                if ("string" === $.type(opt)) switch (opt) {
8491                    case "show":
8492                        $(this).select().focus(), datetimepicker.trigger("open.xdsoft");
8493                        break;
8494                    case "hide":
8495                        datetimepicker.trigger("close.xdsoft");
8496                        break;
8497                    case "toggle":
8498                        datetimepicker.trigger("toggle.xdsoft");
8499                        break;
8500                    case "destroy":
8501                        destroyDateTimePicker($(this));
8502                        break;
8503                    case "reset":
8504                        this.value = this.defaultValue, this.value && datetimepicker.data("xdsoft_datetime").isValidDate(dateHelper.parseDate(this.value, options.format)) || datetimepicker.data("changed", !1), datetimepicker.data("xdsoft_datetime").setCurrentTime(this.value);
8505                        break;
8506                    case "validate":
8507                        $input = datetimepicker.data("input"), $input.trigger("blur.xdsoft");
8508                        break;
8509                    default:
8510                        datetimepicker[opt] && $.isFunction(datetimepicker[opt]) && (result = datetimepicker[opt](opt2))
8511                } else datetimepicker.setOptions(opt);
8512                return 0
8513            }
8514            "string" !== $.type(opt) && (!options.lazyInit || options.open || options.inline ? createDateTimePicker($(this)) : lazyInit($(this)))
8515        }), result
8516    }, $.fn.datetimepicker.defaults = default_options
8517}),
8518function(factory) { "function" == typeof define && define.amd ? define(["jquery"], factory) : "object" == typeof exports ? module.exports = factory : factory(jQuery) }(function($) {
8519    function handler(event) {
8520        var orgEvent = event || window.event,
8521            args = slice.call(arguments, 1),
8522            delta = 0,
8523            deltaX = 0,
8524            deltaY = 0,
8525            absDelta = 0,
8526            offsetX = 0,
8527            offsetY = 0;
8528        if (event = $.event.fix(orgEvent), event.type = "mousewheel", "detail" in orgEvent && (deltaY = orgEvent.detail * -1), "wheelDelta" in orgEvent && (deltaY = orgEvent.wheelDelta), "wheelDeltaY" in orgEvent && (deltaY = orgEvent.wheelDeltaY), "wheelDeltaX" in orgEvent && (deltaX = orgEvent.wheelDeltaX * -1), "axis" in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS && (deltaX = deltaY * -1, deltaY = 0), delta = 0 === deltaY ? deltaX : deltaY, "deltaY" in orgEvent && (deltaY = orgEvent.deltaY * -1, delta = deltaY), "deltaX" in orgEvent && (deltaX = orgEvent.deltaX, 0 === deltaY && (delta = deltaX * -1)), 0 !== deltaY || 0 !== deltaX) {
8529            if (1 === orgEvent.deltaMode) {
8530                var lineHeight = $.data(this, "mousewheel-line-height");
8531                delta *= lineHeight, deltaY *= lineHeight, deltaX *= lineHeight
8532            } else if (2 === orgEvent.deltaMode) {
8533                var pageHeight = $.data(this, "mousewheel-page-height");
8534                delta *= pageHeight, deltaY *= pageHeight, deltaX *= pageHeight
8535            }
8536            if (absDelta = Math.max(Math.abs(deltaY), Math.abs(deltaX)), (!lowestDelta || absDelta < lowestDelta) && (lowestDelta = absDelta, shouldAdjustOldDeltas(orgEvent, absDelta) && (lowestDelta /= 40)), shouldAdjustOldDeltas(orgEvent, absDelta) && (delta /= 40, deltaX /= 40, deltaY /= 40), delta = Math[delta >= 1 ? "floor" : "ceil"](delta / lowestDelta), deltaX = Math[deltaX >= 1 ? "floor" : "ceil"](deltaX / lowestDelta), deltaY = Math[deltaY >= 1 ? "floor" : "ceil"](deltaY / lowestDelta), special.settings.normalizeOffset && this.getBoundingClientRect) {
8537                var boundingRect = this.getBoundingClientRect();
8538                offsetX = event.clientX - boundingRect.left, offsetY = event.clientY - boundingRect.top
8539            }
8540            return event.deltaX = deltaX, event.deltaY = deltaY, event.deltaFactor = lowestDelta, event.offsetX = offsetX, event.offsetY = offsetY, event.deltaMode = 0, args.unshift(event, delta, deltaX, deltaY), nullLowestDeltaT
8540imeout && clearTimeout(nullLowestDeltaTimeout), nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200), ($.event.dispatch || $.event.handle).apply(this, args)
8541        }
8542    }
8543
8544    function nullLowestDelta() { lowestDelta = null }
8545
8546    function shouldAdjustOldDeltas(orgEvent, absDelta) { return special.settings.adjustOldDeltas && "mousewheel" === orgEvent.type && absDelta % 120 === 0 }
8547    var nullLowestDeltaTimeout, lowestDelta, toFix = ["wheel", "mousewheel", "DOMMouseScroll", "MozMousePixelScroll"],
8548        toBind = "onwheel" in document || document.documentMode >= 9 ? ["wheel"] : ["mousewheel", "DomMouseScroll", "MozMousePixelScroll"],
8549        slice = Array.prototype.slice;
8550    if ($.event.fixHooks)
8551        for (var i = toFix.length; i;) $.event.fixHooks[toFix[--i]] = $.event.mouseHooks;
8552    var special = $.event.special.mousewheel = {
8553        version: "3.1.12",
8554        setup: function() {
8555            if (this.addEventListener)
8556                for (var i = toBind.length; i;) this.addEventListener(toBind[--i], handler, !1);
8557            else this.onmousewheel = handler;
8558            $.data(this, "mousewheel-line-height", special.getLineHeight(this)), $.data(this, "mousewheel-page-height", special.getPageHeight(this))
8559        },
8560        teardown: function() {
8561            if (this.removeEventListener)
8562                for (var i = toBind.length; i;) this.removeEventListener(toBind[--i], handler, !1);
8563            else this.onmousewheel = null;
8564            $.removeData(this, "mousewheel-line-height"), $.removeData(this, "mousewheel-page-height")
8565        },
8566        getLineHeight: function(elem) {
8567            var $elem = $(elem),
8568                $parent = $elem["offsetParent" in $.fn ? "offsetParent" : "parent"]();
8569            return $parent.length || ($parent = $("body")), parseInt($parent.css("fontSize"), 10) || parseInt($elem.css("fontSize"), 10) || 16
8570        },
8571        getPageHeight: function(elem) { return $(elem).height() },
8572        settings: { adjustOldDeltas: !0, normalizeOffset: !0 }
8573    };
8574    $.fn.extend({ mousewheel: function(fn) { return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel") }, unmousewheel: function(fn) { return this.unbind("mousewheel", fn) } })
8575}), jQuery(document).ready(function($) {
8576        $.event.special.mousewheel.getLineHeight = function(elem) {
8577            var $elem = $(elem),
8578                $parent = $elem["offsetParent" in $.fn ? "offsetParent" : "parent"]();
8579            return $parent.length || ($parent = $("body")), elem.ownerDocument ? parseInt($parent.css("fontSize"), 10) || parseInt($elem.css("fontSize"), 10) || 16 : 16
8580        }
8581    }), Function.prototype.bind || (Function.prototype.bind = function(oThis) {
8582        if ("function" != typeof this) throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
8583        var aArgs = Array.prototype.slice.call(arguments, 1),
8584            fToBind = this,
8585            fNOP = function() {},
8586            fBound = function() { return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments))) };
8587        return fNOP.prototype = this.prototype, fBound.prototype = new fNOP, fBound
8588    }),
8589    function() {
8590        var initializing = !1;
8591        this.Class = function() {}, this.Class._isClass = !0, this.Class._instances = [], this.Class._inheritors = [], this.Class.prototype._window = window, this.Class.prototype.observers = {}, this.Class.prototype.firedEvents = {}, this.Class.prototype.observe = function(event, observer, bind, to) {
8592            if (event.indexOf(" ") != -1) { for (var events = event.split(" "), i = 0; i < events.length; i++) this.observe(events[i], observer, bind, to); return this }
8593            return event in this.observers || (this.observers[event] = []), this.observers[event] || (this.observers[event] = []), "function" == typeof this.observers[event] && (this.observers[event] = [this.observers[event]]), this.observers[event].push(observer), bind && "once" in bind && bind.once(to || "destroy", function() {
8594                var index = this.observers[event].indexOf(observer);
8595                index !== -1 && this.observers[event].splice(index, 1)
8596            }.bind(this)), this
8597        }, this.Class.prototype.debounce = function(event, time, observer) { if (event.indexOf(" ") != -1) { for (var events = event.split(" "), i = 0; i < events.length; i++) this.debounce(events[i], time, observer); return this } return event in this.observers || (this.observers[event] = []), this.observers[event] || (this.observers[event] = []), "function" == typeof this.observers[event] && (this.observers[event] = [this.observers[event]]), this.observers[event].push({ observer: observer, debounceTimeout: null, debounceTime: time }), this }, this.Class.prototype.promise = function(event, observer, once, bind, to) { if (event.indexOf(" ") != -1) { for (var events = event.split(" "), i = 0; i < events.length; i++) this.promise(events[i], observer, once); return this } return event in this.firedEvents && (observer.apply(this, this.firedEvents[event]), once) ? this 
8597: (this[once ? "once" : "observe"](event, observer, bind, to), this) }, this.Class.prototype.once = function(event, observer, bind, to) {
8598            if (event.indexOf(" ") != -1) { for (var events = event.split(" "), i = 0; i < events.length; i++) this.once(events[i], observer); return this }
8599            return event in this.observers || (this.observers[event] = []), this.observers[event] || (this.observers[event] = []), "function" == typeof this.observers[event] && (this.observers[event] = [this.observers[event]]), this.observers[event].push({ observer: observer, delete: !0 }), bind && "once" in bind && bind.once(to || "destroy", function() {
8600                var index = this.observers[event].indexOf(observer);
8601                index !== -1 && this.observers[event].splice(index, 1)
8602            }.bind(this)), this
8603        }, this.Class.prototype.executeObservers = function(event, args) {
8604            if (!(event in this.observers)) return this;
8605            this.observers[event] || (this.observers[event] = []), "function" == typeof this.observers[event] && (this.observers[event] = [this.observers[event]]);
8606            for (var i = 0; i < this.observers[event].length; i++) {
8607                var observer = this.observers[event][i];
8608                if (observer) {
8609                    if ("function" == typeof observer) observer.apply(this, args);
8610                    else if ("delete" in observer && observer.delete) {
8611                        if (observer.observer.apply(this, args), !this.observers[event]) return this;
8612                        this.observers[event][i] = null
8613                    } else "debounceTimeout" in observer && (window.clearTimeout(observer.debounceTimeout), observer.debounceTimeout = window.setTimeout(function(observer, args) { return function() { observer.observer.apply(this, args) }.bind(this) }.bind(this)(observer, args), observer.debounceTime));
8614                    if (!(this.observers && event in this.observers)) return this
8615                }
8616            }
8617            return this
8618        }, this.Class.prototype.notify = function(event, args, deferred) {
8619            var i;
8620            if (deferred) return window.setTimeout(function() { this.notify(event, args) }.bind(this), 0), this;
8621            if (event.indexOf(" ") != -1) { var events = event.split(" "); for (i = 0; i < events.length; i++) this.notify(events[i], args); return this }
8622            if (this.firedEvents[event] = args, event + ":before" in this.observers && this.executeObservers(event + ":before", args), this.executeObservers(event, args), event + ":after" in this.observers && this.executeObservers(event + ":after", args), this.constructor._observers && this.constructor._observers.hasOwnProperty(event))
8623                for (i = 0; i < this.constructor._observers[event].length; i++) { var observer = this.constructor._observers[event][i]; "function" == typeof observer && observer.apply(this, args) }
8624            return this
8625        }, this.Class.prototype.hooks = {}, this.Class.prototype.hook = function(event, hook) { return event in this.hooks || (this.hooks[event] = []), this.hooks[event] || (this.hooks[event] = []), "function" == typeof this.hooks[event] && (this.hooks[event] = [this.hooks[event]]), this.hooks[event].push(hook), this }, this.Class.prototype.call = function(event, args) {
8626            var callReturn = !0;
8627            if (!(event in this.hooks)) return callReturn;
8628            this.hooks[event] || (this.hooks[event] = []), "function" == typeof this.hooks[event] && (this.hooks[event] = [this.hooks[event]]);
8629            for (var i = 0; i < this.hooks[event].length; i++) {
8630                var hookReturn = this.hooks[event][i].apply(this, args);
8631                callReturn = !(!callReturn || "undefined" == typeof hookReturn) && hookReturn
8632            }
8633            return callReturn
8634        }, this.Class.prototype.destroy = function() { this.notify("destroy"); for (var property in this) "function" == typeof this[property] ? this[property] = function() {} : "undefined" != typeof jQuery && this[property] instanceof jQuery ? this[property] = null : "object" == typeof this[property] ? this[property] = {} : _.isArray(this[property]) ? this[property] = [] : this[property] = null }, Class.extend = function(prop) {
8635            var _super = this.prototype;
8636            initializing = !0;
8637            var prototype = new this;
8638            initializing = !1;
8639            for (var name in prop) { var value = prop[name]; "function" == typeof prop[name] && "function" == typeof _super[name] && (value.base = _super[name]), prototype[name] = value }
8640            var Class = function() {
8641                if (!initializing) {
8642                    for (var name in this)(_.isPlainObject(this[name]) || _.isArray(this[name])) && (this[name] = _.cloneDeep(this[name]));
8643                    this._class = Class;
8644                    var args = Array.prototype.slice.call(arguments);
8645                    this.__wakeup && this.__wakeup.call(this, args), this.init && this.init.apply(this, args), Class._instances.push(this)
8646                }
8647            };
8648            return Class._isClass = !0, Class._instances = [], Class._inheritors = [], Class._observers = {}, Class.prototype = prototype, Class.prototype.constructor = Class, this._inheritors.push(Class), Class.getInstances = function(inheritors) {
8649                var instances = this._instances;
8650                if (inheritors)
8651                    for (var i = 0; i < this._inheritors.length; ++i) instances = instances.concat(this._inheritors[i].getInstances(!0));
8652                return instances
8653            }, Class.observe = function(event, observer) { if (event.indexOf(" ") != -1) { for (var events = event.split(" "), i = 0; i < events.length; i++) this.observe(events[i], observer); return this } return event in this._observers || (this._observers[event] = []), this._observers[event].push(observer), this }, Class.extend = arguments.callee.bind(Class), Class
8654        }, this.extendAvailable = function(candidates, object, parentize) {
8655            for (var i = 0; i < candidates.length; i++)
8656                if ("function" == typeof this[candidates[i]] && "Class" == this[candidates[i]].name) { var newObject = this[candidates[i]].extend(object); return parentize && (this[candidates[i]].prototype._window[candidates[i]] = newObject), newObject }
8657            return this.Class.extend(object)
8658        }
8659    }();
8660var File = Class.extend({
8661        id: "",
8662        created_at: !1,
8663        name: "",
8664        extension: "",
8665        domain: "",
8666        mime: "",
8667        type: "",
8668        size: null,
8669        width: null,
8670        height: null,
8671        displayWidth: null,
8672        displayHeight: null,
8673        rotation: null,
8674        cropX: null,
8675        cropY: null,
8676        cropWidth: null,
8677        cropHeight: null,
8678        blur: 0,
8679        grayscale: !1,
8680        url: "",
8681        thumbnail: "",
8682        internal: !1,
8683        in_use: !1,
8684        tags: [],
8685        aesthetic: null,
8686        init: function(properties) {
8687            if ("object" == typeof properties) _.merge(this, properties);
8688            else if ("string" == typeof properties) {
8689                var matches = properties.match(/(.*?)?(\/images\/([^\/]+)\/([0-9]+)\/(.*(\.[a-z]+)?))/i);
8690                if (matches) {
8691                    this.setDomain(matches[1] || ""), this.setUrl(matches[2].replace("/" + matches[3] + "/", "/0/"));
8692                    var display = matches[3].match(/^([0-9]+)(?:x([0-9]+))?/);
8693                    display && (this.setDisplayWidth(display[1]), this.setDisplayHeight(display[2]));
8694                    var cropping = matches[3].match(/(?:,|%2C)([0-9]+)x([0-9]+)(?:\+|%2B|%252B|%25252B)([\-0-9]+)(?:(?:\+|%2B|%252B|%25252B)([\-0-9]+))?/i);
8695                    cropping && (this.setCropX(cropping[3]), this.setCropY(cropping[4] || 0), this.setCropWidth(cropping[1]), this.setCropHeight(cropping[2]));
8696                    var rotation = matches[3].match(/(?:,|%2C)([\-0-9]+)(?:,|$)/i);
8697                    rotation && this.setRotation(parseInt(rotation[1]));
8698                    var filters = matches[3].match(/(?:,|%2C)(?:B([0-9]+))?(G)?$/i);
8699                    filters && (this.setBlur(parseInt(filters[1])), this.setGrayscale(!!filters[2])), this.setId(matches[4]), this.setName(matches[5]), this.setExtension(matches[6]), this.setInternal(!0)
8700                } else {
8701                    this.setUrl(properties), this.setInternal(!1);
8702                    var matches = properties.match(/(https?:\/\/([^\/]*))?(.*?([^\/]*(\.[a-z]+)$))/i);
8703                    matches && (this.setDomain(matches[1] || ""), this.setName(matches[4] || ""), this.setExtension(matches[5] || ""))
8704                }(this.getName() || "").match(/\.(pdf|doc|docx|xls|odt|ods|ppt)$/i) ? this.setType("document") : (this.getName() || "").match(/\.(?!jpg|jpeg|png|gif|tiff)[a-z0-9]+$/i) ? this.setType("unknown") : this.setType("image")
8705            }
8706            return this
8707        },
8708        is: function(file) { return !!(file && "id" in file) && file.id == this.id },
8709        getTags: function() { return this.tags },
8710        getAesthetic: function() { return this.aesthetic },
8711        getId: function() { return this.id },
8712        getCreatedAt: function() { return !!this.created_at && new Date(this.created_at.replace(/-/g, "/")) },
8713        getName: function() { return this.name },
8714        getExtension: function() { return this.extension },
8715        getDomain: function() { return this.domain },
8716        getMime: function() { return this.mime },
8717        getType: function() { return this.type },
8718        getWidth: function() { return this.width },
8719        getHeight: function() { return this.height },
8720        getDisplayWidth: function() { return this.displayWidth },
8721        getDisplayHeight: function() { return this.displayHeight },
8722        getRotation: function() { return this.rotation },
8723        getCropX: function() { return this.cropX },
8724        getCropY: function() { return this.cropY },
8725        getCropWidth: function() { return this.cropWidth },
8726        getCropHeight: function() { return this.cropHeight },
8727        getGrayscale: function() { return this.grayscale },
8728        getBlur: function() { return this.blur },
8729        isCropped: function() { return this.cropX !== !1 && "undefined" !== this.cropX && null !== this.cropX && "undefined" !== this.cropY && null !== this.cropY && "undefined" !== this.cropWidth && null !== this.cropWidth && "undefined" !== this.cropHeight && null !== this.cropHeight },
8730        isRotated: function() { return this.rotation },
8731        isModified: function() { return this.getDisplayWidth() || this.isCropped() || this.isRotated() || this.getBlur() || this.getGrayscale() },
8732        getSize: function(human) {
8733            if (human) {
8734                var units = ["B", "KB", "MB", "GB", "TB", "PB"],
8735                    size = this.size;
8736                for (i = 0; size > 1024; i++) size = Math.round(size / 10.24) / 100;
8737                return size + " " + units[i]
8738            }
8739            return this.size
8740        },
8741        getAspectRatio: function(uncropped) { return this.isCropped() && uncropped !== !1 ? this.getCropWidth() / (this.getCropHeight() || 1) : this.getWidth() / (this.getHeight() || 1) },
8742        getUrl: function() { return this.domain + this.url },
8743        getThumbnail: function() { return this.thumbnail },
8744        getInternal: function() { return this.internal },
8745        getInUse: function() { return this.in_use },
8746        getImageSize: function(width, height, uncropped, unrotated, unfiltered) { var url = this.getUrl(); if ("full" === width && (width = 0), "default" === width && (width = "undefined" != typeof viewport && viewport && "getImageDefaultWidth" in viewport ? viewport.getImageDefaultWidth() : 1200), "image" != this.getType() || !this.getId()) return url; var sizePath = height ? parseInt(width) + "x" + parseInt(height) : parseInt(width); return this.isCropped() && !uncropped && (sizePath += "%2C" + parseInt(this.getCropWidth()) + "x" + parseInt(this.getCropHeight()) + "%2B" + parseInt(this.getCropX()) + "%2B" + parseInt(this.getCropY())), this.isRotated() && !unrotated && (sizePath += "%2C" + this.getRotation()), !this.getBlur() && !this.getGrayscale() || unfiltered || (sizePath += "%2C", this.getBlur() && (sizePath += "B" + this.getBlur()), this.getGrayscale() && (sizePath += "G")), this.setDisplayWidth(parseInt(width)), height && this.setDisplayHeight(parseInt(height)), url.replace(/\/images\/[^\/]+\//, "/images/" + sizePath + "/") },
8747        shrink: function(maxSize, uncropped, unrotated, unfiltered) { return "image" == this.getType() && this.getId() ? (this.getWidth() && this.getHeight() && (this.getHeight() > this.getWidth() && (maxSize = this.getWidth() / this.getHeight() * maxSize), maxSize > this.getWidth() && (maxSize = this.getWidth())), this.getImageSize(maxSize, null, uncropped, unrotated, unfiltered)) : this.getUrl() },
8748        getLightboxImage: function() {
8749            var width = "undefined" != typeof viewport && viewport && "getImageDefaultWidth" in viewport ? viewport.getImageDefaultWidth() : 1200,
8750                rotationBefore = this.getRotation(),
8751                rotationLightbox = 90 * Math.round((this.getRotation() || 0) / 360 * 4);
8752            this.setRotation(rotationLightbox);
8753            var url = this.shrink(width, !0, !1, !0);
8754            return this.setRotation(rotationBefore), url
8755        },
8756        setId: function(id) { return this.id = id, this },
8757        setCreatedAt: function(created_at) { return this.created_at = created_at, this },
8758        setName: function(name) { return this.name = name, this },
8759        setExtension: function(extension) { return this.extension = extension, this },
8760        setDomain: function(domain) { return this.domain = domain, this },
8761        setMime: function(mime) { return this.mime = mime, this },
8762        setType: function(type) { return this.type = type, this },
8763        setSize: function(size) { return this.size = size, this },
8764        setWidth: function(width) { return this.width = width, this },
8765        setHeight: function(height) { return this.height = height, this },
8766        setDisplayWidth: function(width) { return this.displayWidth = width, this },
8767        setDisplayHeight: function(height) { return this.displayHeight = height, this },
8768        setUrl: function(url) { return this.url = url, this },
8769        setThumbnail: function(thumbnail) { return this.thumbnail = thumbnail, this },
8770        setInternal: function(internal) { return this.internal = internal, this },
8771        setInUse: function(in_use) { return this.in_use = in_use, this },
8772        setRotation: function(rotation) { return this.rotation = rotation, this },
8773        setCropX: function(cropX) { return this.cropX = cropX, this },
8774        setCropY: function(cropY) { return this.cropY = cropY, this },
8775        setCropWidth: function(cropWidth) { return this.cropWidth = cropWidth, this },
8776        setCropHeight: function(cropHeight) { return this.cropHeight = cropHeight, this },
8777        setCrop: function(cropX, cropY, cropWidth, cropHeight) { return cropX === !1 || 0 == cropX && 0 == cropY && cropWidth == this.getWidth() && cropHeight == this.getHeight() ? (this.cropX = !1, this.cropY = !1, this.cropWidth = !1, this.cropHeight = !1) : (this.cropX = cropX, this.cropY = cropY, this.cropWidth = cropWidth, this.cropHeight = cropHeight), this },
8778        setGrayscale: function(grayscale) { return this.grayscale = grayscale, this },
8779        setBlur: function(blur) { return this.blur = blur, this },
8780        autoCrop: function(aspectRatio) {
8781            var imageAspectRatio = (this.getCropWidth() || this.getWidth()) / (this.getCropHeight() || this.getHeight());
8782            if (imageAspectRatio.toFixed(4) == aspectRatio.toFixed(4));
8783            else if (this.getRotation() && 180 != Math.abs(this.getRotation())) {
8784                var largestRectangle = function(width, height, angle) {
8785                        angle *= Math.PI / 180;
8786                        var sideShort, sideLong, widthIsLonger = width >= height;
8787                        widthIsLonger ? (sideLong = width, sideShort = height) : (sideLong = height, sideShort = width);
8788                        var sinA = Math.abs(Math.sin(angle));
8789                        if (cosA = Math.abs(Math.cos(angle)), sideShort <= 2 * sinA * cosA * sideLong) { var x = .5 * sideShort; return widthIsLonger ? { width: x / sinA, height: x / cosA } : { width: x / cosA, height: x / sinA } }
8790                        var cos2a = cosA * cosA - sinA * sinA;
8791                        return { width: (width * cosA - height * sinA) / cos2a, height: (height * cosA - width * sinA) / cos2a }
8792                    },
8793                    cropArea = largestRectangle(this.getWidth(), this.getHeight(), this.getRotation());
8794                cropArea.ratio = cropArea.width / cropArea.height, aspectRatio > cropArea.ratio ? (this.setCropWidth(cropArea.width), this.setCropHeight(cropArea.width / aspectRatio)) : (this.setCropHeight(cropArea.height), this.setCropWidth(cropArea.height * aspectRatio)), this.setCropX(this.getWidth() / 2 - this.getCropWidth() / 2), this.setCropY(this.getHeight() / 2 - this.getCropHeight() / 2)
8795            } else if (aspectRatio > imageAspectRatio)
8796                if (this.isCropped()) {
8797                    var imageCropWidth = this.getCropHeight() * aspectRatio,
8798                        imageCropHeight = this.getCropHeight(),
8799                        imageCropX = this.getCropX(),
8800                        imageCropY = this.getCropY();
8801                    imageCropWidth > this.getWidth() && (imageCropWidth = this.getWidth(), imageCropHeight = this.getWidth() / aspectRatio);
8802                    var cropWidthDifference = imageCropWidth - this.getCropWidth(),
8803                        cropHeightDifference = this.getCropHeight() - imageCropHeight;
8804                    imageCropX -= cropWidthDifference / 2, imageCropY -= cropHeightDifference / 2, imageCropX = Math.max(0, Math.min(this.getWidth() - imageCropWidth, imageCropX)), imageCropY = Math.max(0, Math.min(this.getHeight() - imageCropHeight, imageCropY)), this.setCrop(imageCropX, imageCropY, imageCropWidth, imageCropHeight)
8805                } else {
8806                    var imageCropWidth = this.getWidth(),
8807                        imageCropHeight = this.getWidth() / aspectRatio,
8808                        imageCropY = this.getHeight() / 2 - imageCropHeight / 2;
8809                    this.setCrop(0, imageCropY, imageCropWidth, imageCropHeight)
8810                }
8811            else if (this.isCropped()) {
8812                var imageCropHeight = this.getCropWidth() / aspectRatio,
8813                    imageCropWidth = this.getCropWidth(),
8814                    imageCropX = this.getCropX(),
8815                    imageCropY = this.getCropY();
8816                imageCropHeight > this.getHeight() && (imageCropHeight = this.getHeight(), imageCropWidth = this.getHeight() * aspectRatio);
8817                var cropWidthDifference = this.getCropWidth() - imageCropWidth,
8818                    cropHeightDifference = imageCropHeight - this.getCropHeight();
8819                imageCropX -= cropWidthDifference / 2, imageCropY -= cropHeightDifference / 2, imageCropX = Math.max(0, Math.min(this.getWidth() - imageCropWidth, imageCropX)), imageCropY = Math.max(0, Math.min(this.getHeight() - imageCropHeight, imageCropY)), this.setCrop(imageCropX, imageCropY, imageCropWidth, imageCropHeight)
8820            } else {
8821                var imageCropHeight = this.getHeight(),
8822                    imageCropWidth = this.getHeight() * aspectRatio,
8823                    imageCropX = this.getWidth() / 2 - imageCropWidth / 2;
8824                this.setCrop(imageCropX, 0, imageCropWidth, imageCropHeight)
8825            }
8826            return this
8827        }
8828    }),
8829    cms = null,
8830    editor = null;
8831try { if (window.frameElement && window.frameElement.cms && window.frameElement.editor && window.parent && window.parent.window) { cms = window.frameElement.cms, editor = window.frameElement.editor; for (var prop in window.parent.window) window.parent.window.hasOwnProperty(prop) && "function" == typeof window.parent.window[prop] && "_isClass" in window.parent.window[prop] && (window[prop] = window.parent.window[prop]) } } catch (e) { console.error("Instantiation error:", e) }
8832var Page = extendAvailable(["Page"], {
8833        elements: [],
8834        current: !0,
8835        init: function() { return "ready" in this && this.ready(), this.initElements(), this },
8836        getAllElements: function() { return this.elements },
8837        initElements: function($elements) {
8838            return $elements || ($elements = $(".ed-element")), $elements.each(function(key, element) {
8839                if (!("element" in element && element.element)) {
8840                    var elementType = $(element).attr("class").replace("ed-element", "");
8841                    if (elementType = (elementType.match(/ed-(?!stranger|reference-)([a-z\-]+)/) || [null, null])[1], !elementType) return void console.warn("Couldn't find matching type for element: ", element);
8842                    if (elementType = "Element" + elementType.replace(/^([a-z])|\-([a-z])/g, function(match, first, second) { return (first || second).toUpperCase() }), elementType in window)
8843                        if ("undefined" != typeof cms && cms) try { new window[elementType](element) } catch (error) { cms.promise("ready", function() { cms.getWindow().onerror
8843(error, document.location.href, "initialization") }, !0) } else {
8844                            var elm = new window[elementType](element);
8845                            this.elements.push(elm), elm.once("destroy", function() {
8846                                var index = this.elements.indexOf(elm);
8847                                index !== -1 && this.elements.splice(index, 1)
8848                            }.bind(this))
8849                        }
8850                }
8851            }.bind(this)), this
8852        }
8853    }),
8854    Viewport = Class.extend({
8855        jQuery: jQuery,
8856        window: window,
8857        width: 0,
8858        height: 0,
8859        scrollTop: 0,
8860        scrollBottom: 0,
8861        scrollLeft: 0,
8862        scrollRight: 0,
8863        imageDefaultWidth: 1200,
8864        backgroundDefaultWidth: 1680,
8865        animationFrameSupported: !1,
8866        requestedAnimationFrames: [],
8867        requestFrameOnMousewheel: !0,
8868        init: function() {
8869            if (this.update(), this.bindEvents(), this.initOverlayLinks(), this.isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent), this.isTouch = !!("ontouchstart" in window || navigator.msMaxTouchPoints), this.isTouch) {
8870                this.isTouch = !1;
8871                var checkTouchSupport = function() { this.isTouch = !0, window.removeEventListener("touchstart", checkTouchSupport) }.bind(this);
8872                window.addEventListener("touchstart", checkTouchSupport)
8873            }
8874            return this
8875        },
8876        update: function() { return this.width = this.jQuery(window).width(), this.height = this.jQuery(window).height(), this.scrollTop = this.jQuery(window).scrollTop(), this.scrollBottom = this.scrollTop + this.height, this.scrollLeft = this.jQuery(window).scrollLeft(), this.scrollRight = this.scrollLeft + this.width, this },
8877        bindEvents: function() { return this.jQuery(this.window).on({ resize: function(event) { event.target == window && (this.width = this.jQuery(window).width(), this.height = this.jQuery(window).height(), this.notify("resize")) }.bind(this), scroll: function() { this.scrollTop = this.jQuery(window).scrollTop(), this.scrollBottom = this.scrollTop + this.height, this.scrollLeft = this.jQuery(window).scrollLeft(), this.scrollRight = this.scrollLeft + this.width, this.scrollStartTimeout ? window.clearTimeout(this.scrollStartTimeout) : this.notify("scroll.start"), this.scrollStartTimeout = window.setTimeout(function() { this.scrollStartTimeout = !1 }.bind(this), 1e3), this.notify("scroll"), this.requestAnimationFrame("scroll") }.bind(this), load: function() { this.notify("load") }.bind(this) }), this.observe("load:after resize:after", function() { this.width = this.jQuery(window).width(), this.height = this.jQuery(window).height() }.bind(this)), this.requestFrameOnMousewheel && this.jQuery(this.window).on("mousewheel DOMMouseScroll", function() { this.requestAnimationFrame("scroll") }.bind(this)), this },
8878        initOverlayLinks: function() {
8879            var self = this;
8880            return this.jQuery(document).on("click", ".wv-link-overlay", function(event) {
8881                event.preventDefault();
8882                var href = this.getAttribute("href");
8883                href && self.promise("api.magnific.ready", function() {
8884                    this.jQuery.magnificPopup.open({ items: { src: href }, type: "iframe", fixedContentPos: !1, callbacks: { open: function() { this.notify("overlay.open") }.bind(this), close: function() { this.notify("overlay.close") }.bind(this) } })
8885                }.bind(self), !0).requireMagnific()
8886            }), this
8887        },
8888        requestAnimationFrame: function(type) { return this.animationFrameSupported ? (this.requestedAnimationFrames.indexOf(type) === -1 && this.requestedAnimationFrames.push(type), this.animationFrameRequested || (this.animationFrameRequested = !0, this.window.requestAnimationFrame(this.animationFrame.bind(this))), this) : (this.notify("frame." + type), this) },
8889        animationFrame: function() { this.animationFrameRequested = !1; for (var i = 0; i < this.requestedAnimationFrames.length; i++) this.notify("frame." + this.requestedAnimationFrames[i]); return this.requestedAnimationFrames = [], this },
8890        getWidth: function() { return this.width },
8891        getHeight: function() { return this.height },
8892        getScrollTop: function() { return this.scrollTop },
8893        getScrollBottom: function() { return this.scrollBottom },
8894        getScrollLeft: function() { return this.scrollLeft },
8895        getScrollRight: function() { return this.scrollRight },
8896        setScrollTop: function(scrollTop) { return this.scrollTop = scrollTop, this.jQuery(this.window).scrollTop(scrollTop), this },
8897        setScrollLeft: function(scrollLeft) { return this.scrollLeft = scrollLeft, this.jQuery(this.window).scrollLeft(scrollLeft), this },
8898        getIsTouch: function() { return this.isTouch },
8899        getIsMobile: function() { return this.isMobile },
8900        getImageDefaultWidth: function() { return this.imageDefaultWidth },
8901        getBackgroundDefaultWidth: function() { return this.backgroundDefaultWidth },
8902        scrollTo: function(target, position, duration, offset) {
8903            position || (position = "top"), offset || (offset = 0), target instanceof ElementBase && "getMainElement" in target && (target = target.getMainElement());
8904            var originalOffset = offset,
8905                originalTarget = target;
8906            if (this.jQuery(".ed-element, #menu, #header, #navigation").filter(function(index, element) { var $element = $(element); return !!$element.is(":visible") && ("fixed" === $element.css("position") && !($element.height() > this.getHeight() / 2)) }.bind(this)).each(function(index, element) { parseInt(this.jQuery(element).css("top") || 0) < 10 && this.jQuery(element).width() >= Math.min(600, this.getWidth()) && (offset -= this.jQuery(element).outerHeight()) }.bind(this)), "object" == typeof target) {
8907                var $target = this.jQuery(target);
8908                if (!$target.is(":visible")) return this;
8909                target = $target.offset().top, "center" == position ? target += $target.outerHeight() / 2 : "bottom" == position && (target += $target.outerHeight())
8910            }
8911            return "center" == position ? target -= this.getHeight() / 2 : "bottom" == position && (target -= this.getHeight()), this.jQuery("html, body").stop(!0).animate({ scrollTop: target + offset }, duration || 0, function() { duration > 0 && this.scrollTo(originalTarget, position, 0, originalOffset) }.bind(this)), this
8912        },
8913        targetVisible: function(target, section) {
8914            var $target = target;
8915            $target = target instanceof ElementBase && "getMainElement" in target ? target.getMainElement() : this.jQuery(target);
8916            var offset = $target.offset().top,
8917                height = $target.height();
8918            return !section && offset + height > this.getScrollTop() && offset < this.getScrollBottom() || section === !0 || "full" == section && offset > this.getScrollTop() && offset + height < this.getScrollBottom() || "top" == section && offset > this.getScrollTop() && offset < this.getScrollBottom() || "bottom" == section && offset + height > this.getScrollTop() && offset + height < this.getScrollBottom()
8919        },
8920        getVisibleElements: function() {
8921            var $elements = this.jQuery(".ed-element:not(.wv-bg)"),
8922                result = [];
8923            return $elements.each(function(element) {
8924                var $elm = $(element),
8925                    offset = $elm.offset(),
8926                    height = $elm.height();
8927                offset.top + height > this.getScrollTop() && offset.top < this.getScrollBottom() && result.push($elm[0].element)
8928            }.bind(this)), result
8929        },
8930        getElementAtPosition: function(x, y) { if (!("elementFromPoint" in this.window.document)) return !1; "center" == x && (x = this.getWidth() / 2), "left" == x && (x = 1), "right" == x && (x = this.getWidth() - 1), "center" == y && (y = this.getHeight() / 2), "top" == y && (y = 1), "bottom" == y && (y = this.getHeight() - 1); var element = this.window.document.elementFromPoint(x, y); return !!element && this.jQuery(element) },
8931        getIsFixed: function($element) { return "HTML" !== $element.prop("tagName") && ("fixed" !== $element.css("position") ? this.getIsFixed($element.offsetParent()) : $element) },
8932        requireScript: function(url, callback) { var script = document.createElement("script"); return script.type = "text/javascript", script.readyState ? script.onreadystatechange = function() { "loaded" != script.readyState && "complete" != script.readyState || (script.onreadystatechange = null, "function" == typeof callback && callback()) }.bind(this) : script.onload = function() { "function" == typeof callback && callback() }.bind(this), script.src = url, document.getElementsByTagName("head")[0].appendChild(script), this },
8933        requireMapsApi: function() { if ("undefined" != typeof google && "maps" in google) return this.notify("api.maps.ready"); if (!this.mapsApiRequired) return this.mapsApiRequired = !0, this.requireScript("//maps.google.com/maps/api/js?key=" + Viewport.GOOGLE_MAPS_TOKEN, function() { this.notify("api.maps.ready") }.bind(this)), this },
8934        requireFlexslider: function() { if ("flexslider" in $) return this.notify("api.flexslider.ready"); if (!this.flexsliderRequired) return this.flexsliderRequired = !0, this.requireScript("/webcard/vendor/flexslider/jquery.flexslider.js", function() { this.notify("api.flexslider.ready") }.bind(this)), this },
8935        requireSlick: function() { if ("slick" in $) return this.notify("api.slick.ready"); if (!this.slickRequired) return this.slickRequired = !0, this.requireScript("/js/power/slick.min.js", function() { this.notify("api.slick.ready") }.bind(this)), this },
8936        requireMagnific: function() { if ("magnificPopup" in $) return this.notify("api.magnific.ready"); if (!this.magnificRequired) return this.magnificRequired = !0, this.requireScript("/webcard/vendor/magnific-popup/jquery.magnific-popup.min.js", function() { this.notify("api.magnific.ready") }.bind(this)), this }
8937    });
8938Viewport.GOOGLE_MAPS_TOKEN = "AIzaSyBTzXpnx9TPTScpuA9DL9jbGwPNYcnj-dU";
8939var Animations = Class.extend({
8940        elements: { all: [], load: [], scroll: [], grouped: {} },
8941        highestOffset: 0,
8942        lowestOffset: 0,
8943        forced: !1,
8944        init: function(elements) { return this.getEnabled() && this.start(elements), this.initGroups(), this.initTriggers(), viewport.observe("scroll", this.executeScroll.bind(this)), viewport.observe("resize", this.calculateOffsets.bind(this)), this.calculateOffsets(), this },
8945        setForced: function(forced) { return this.forced = forced, this },
8946        isForced: function() { return this.forced },
8947        reset: function() {
8948            for (var elements = this.getAllAnimatedElements(), i = 0; i < elements.length; i++) {
8949                var animation = elements[i].getAnimation(),
8950                    $target = elements[i].getAnimationTarget();
8951                switch ($target.velocity("finish").stop(!0), $target.css({ display: "", visibility: "" }), elements[i].wasAnimated(!1), animation.type) {
8952                    case "fade":
8953                        $target.css({ opacity: "" });
8954                        break;
8955                    case "slide":
8956                        $target.css({ overflow: "", height: "" });
8957                        break;
8958                    case "overlay":
8959                        viewport.promise("api.magnific.ready", function() { viewport.jQuery.magnificPopup.close(), $target.css({ position: "", width: "", maxWidth: "", textAlign: "", marginLeft: "", marginRight: "" }).removeClass("mfp-hide") })
8960                }
8961                this.updateTriggers(elements[i], !1)
8962            }
8963            return this
8964        },
8965        start: function(elements) { this.elements.all = [], this.elements.load = [], this.elements.scroll = [], this.elements.grouped = [], this.collectElements(elements), this.setInitialStatus(); for (var elements = this.getLoadAnimatedElements(), neededAnimations = 0, finishedAnimations = 0, i = 0; i < elements.length; i++) elements[i].getAnimatedParent() || (neededAnimations++, elements[i].once("animation.end", function() { finishedAnimations++, finishedAnimations >= neededAnimations && this.executeScroll() }.bind(this))); return window.setTimeout(function() { this.executeOnload(), neededAnimations || this.executeScroll() }.bind(this), 500), this },
8966        getEnabled: function() { return !!this.isForced() || !("undefined" != typeof editor && editor && !editor.getView().getPreview()) },
8967        getCompatibilityMode: function() {
8968            if (/iP(hone|od|ad)/.test(navigator.userAgent)) {
8969                var match = navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),
8970                    version = parseInt(match[1], 10);
8971                if (version < 9) return !0
8972            }
8973            return !1
8974        },
8975        collectElements: function(elements) {
8976            if ("undefined" == typeof elements || !elements) {
8977                if ("undefined" == typeof editor || !editor) return this;
8978                elements = editor.getAllElements()
8979            }
8980            for (var i = 0; i < elements.length; i++)
8981                if (!(this.elements.all.indexOf(elements[i]) >= 0)) {
8982                    var animation = elements[i].getAnimation();
8983                    animation && "none" != animation.type && (this.elements.all.push(elements[i]), "scroll" == animation.trigger ? this.elements.scroll.push(elements[i]) : "onload" == animation.trigger && this.elements.load.push(elements[i]), animation.group.name && (animation.group.name in this.elements.grouped || (this.elements.grouped[animation.group.name] = []), this.elements.grouped[animation.group.name].push(elements[i])))
8984                }
8985            return this
8986        },
8987        setInitialStatus: function(elements) {
8988            "undefined" != typeof elements && elements || (elements = this.getAllAnimatedElements());
8989            for (var i = 0; i < elements.length; i++) {
8990                var animation = elements[i].getAnimation(),
8991                    $target = elements[i].getAnimationTarget();
8992                animation && "none" != animation.type && "pulse" != animation.type && "flash" != animation.type && ("overlay" == animation.type ? ($target.hide(), this.updateTriggers(elements[i], !0)) : animation.initial && (!this.getCompatibilityMode() || "onload" != animation.trigger && "scroll" != animation.trigger) ? "hide" == animation.initial ? (animation.keepHeight ? $target.css("visibility", "hidden") : $target.hide(), this.updateTriggers(elements[i], !0)) : ($target.show(), this.updateTriggers(elements[i], !1)) : this.updateTriggers(elements[i], !1))
8993            }
8994            return this
8995        },
8996        initSubsequent: function(elements) { return this.collectElements(elements), this.setInitialStatus(elements), this },
8997        initGroups: function() {
8998            return viewport.observe("animation.start", function(element, reverse, trigger) {
8999                var animation = element.getAnimation();
9000                if (animation.group.name && animation.group.name != trigger)
9001                    for (var groupMembers = this.getGroupAnimatedElements(animation.group.name), i = 0; i < groupMembers.length; i++)
9002                        if (!groupMembers[i].is(element)) {
9003                            var memberAnimation = groupMembers[i].getAnimation();
9004                            memberAnimation && ("show" == memberAnimation.group.behavior[reverse ? "hide" : "show"] ? groupMembers[i].animate(!1, animation.group.name) : "hide" == memberAnimation.group.behavior[reverse ? "hide" : "show"] && groupMembers[i].animate(!0, animation.group.name))
9005                        }
9006            }.bind(this)), this
9007        },
9008        getScrollAnimatedElements: function() { return this.elements.scroll },
9009        getLoadAnimatedElements: function() { return this.elements.load },
9010        getGroupAnimatedElements: function(group) { return group && group in this.elements.grouped ? this.elements.grouped[group] : this.elements.grouped },
9011        getAllAnimatedElements: function() { return this.elements.all },
9012        executeScroll: function() {
9013            if (!this.getEnabled() || this.getCompatibilityMode()) return this;
9014            for (var elements = this.getScrollAnimatedElements(), i = 0; i < elements.length; i++)
9015                if (!elements[i].wasAnimated()) {
9016                    var hidden = "none" == elements[i].getElement().css("display");
9017                    elements[i].getElement().show();
9018                    var offset = elements[i].getElement().offset().top;
9019                    hidden && elements[i].getElement().css("display", "none"), viewport.getScrollBottom() > offset && elements[i].animate()
9020                }
9021            return this
9022        },
9023        executeOnload: function() {
9024            for (var elements = this.getLoadAnimatedElements(), i = 0; i < elements.length; i++)
9025                if (!(elements[i].wasAnimated() || this.getCompatibilityMode() && "overlay" != elements[i].getAnimation().type)) {
9026                    var parent = elements[i].getAnimatedParent();
9027                    parent && parent.getIsAnimated() ? parent.once("animation.start", function(element) { return function() { element.getElement().imagesLoaded({ background: !0 }, function() { window.setTimeout(function() { element.animate() }, 0) }) } }(elements[i])) : elements[i].getElement().imagesLoaded({ background: !0 }, function(element) { return function() { window.setTimeout(function() { element.animate() }, 0) } }(elements[i]))
9028                }
9029            return this
9030        },
9031        getTriggers: function(element) { return viewport.jQuery('.wv-link-elm[href="#' + element.getId(!0) + '"]') },
9032        updateTriggers: function(element, reverse) { var $triggers = this.getTriggers(element); return $triggers.length ? (reverse ? $triggers.removeClass("active") : $triggers.addClass("active"), this) : this },
9033        initTriggers: function() { return viewport.observe("animation.start", function(element, reverse) { this.updateTriggers(element, reverse) }.bind(this)), viewport.jQuery(document).on("click", ".wv-link-elm", function(event) { event.preventDefault(); var element = document.getElementById((this.getAttribute("href") || "").replace(/^#/, "")); return !!element && (element.element && element.element.getIsAnimated() ? element.element.animate(null, this) : void viewport.scrollTo(element, "top", 500, -50)) }), this },
9034        calculateOffsets: function() {
9035            this.highestOffset = 0, this.lowestOffset = 0;
9036            for (var elements = this.getAllAnimatedElements(), i = 0; i < elements.length; i++) {
9037                var hidden = "none" == elements[i].getElement().css("display");
9038                elements[i].getElement().show();
9039                var offset = elements[i].getElement().offset().left;
9040                hidden && elements[i].getElement().css("display", "none"), offset > this.highestOffset && (this.highestOffset = offset), offset < this.lowestOffset && (this.lowestOffset = offset)
9041            }
9042            return this
9043        },
9044        getHighestOffset: function() { return this.highestOffset },
9045        getLowestOffset: function() { return this.lowestOffset },
9046        getTransforms: function($element) {
9047            var transform = $element.css("transform");
9048            if (!transform || "none" == transform) return {};
9049            var values = transform.split("(")[1].split(")")[0].split(","),
9050                angle = Math.atan2(values[1], values[0]),
9051                denom = Math.pow(values[0], 2) + Math.pow(values[1], 2),
9052                scaleX = Math.sqrt(denom),
9053                scaleY = (values[0] * values[3] - values[2] * values[1]) / scaleX,
9054                skewX = Math.atan2(values[0] * values[2] + values[1] * values[3], denom);
9055            return { translateX: parseFloat(values[4]) + "px", translateY: parseFloat(values[5]) + "px", rotateZ: angle / (Math.PI / 180), scaleX: scaleX, scaleY: scaleY, skewX: skewX / (Math.PI / 180), skewY: 0 }
9056        }
9057    }),
9058    ElementBase = "undefined" != typeof ElementBase && ElementBase ? ElementBase : ("undefined" != typeof EditorAwareClass && EditorAwareClass ? EditorAwareClass : Class).extend({
9059        $element: null,
9060        id: null,
9061        animation: { type: "none", initial: "hide", keepHeight: !0, duration: ".5s", delay: "0s", overlay: { width: "auto" }, trigger: "", group: { name: "", behavior: { show: "", hide: "" } } },
9062        animating: !1,
9063        animated: !1,
9064        init: function(source, dry) { return this.$element = this.getViewport().jQuery(source), this.$element[0].element = this, this.wakeup(), this },
9065        wakeup: function() {},
9066        update: function() {},
9067        getElement: function() { return this.$element },
9068        getMainElement: function() { return this.$element },
9069        getId: function(plain) {
9070            if (!this.id) {
9071                var id = this.$element.attr("id");
9072                id && id.length && (this.id = id.replace("ed-", ""))
9073            }
9074            return plain ? this.$element.attr("id") || "ed-" + this.id : this.id
9075        },
9076        getParent: function() { var $parent = this.$element.parent().closest(".ed-element"); return !!$parent.length && $parent[0].element },
9077        getParents: function() { for (var parent, parents = [], child = this; parent = child.getParent();) parents.push(parent), child = parent; return !!parents.length && parents },
9078        hasParent: function(parent) {
9079            if (!parent) return !!this.$element.parent().closest(".ed-element").length;
9080            if (_.isArray(parent)) {
9081                for (var i = 0; i < parent.length; i++)
9082                    if (this.hasParent(parent[i])) return !0;
9083                return !1
9084            }
9085            return !!this.$element.parent().closest(parent.getElement()).length
9086        },
9087        is: function(element) { return this == element },
9088        animate: function(reverse, trigger) {
9089            var animation = this.getAnimation();
9090            if ("none" == animation.type) return this;
9091            var $target = this.getAnimationTarget();
9092            if (animation.duration = String(animation.duration).replace("ms", ""), animation.duration.match("s") && (animation.duration = 1e3 * parseFloat(animation.duration.replace("s", ""))), animation.delay = String(animation.delay).replace("ms", ""), animation.delay.match("s") && (animation.delay = 1e3 * parseFloat(animation.delay.replace("s", ""))), $target.velocity("finish").stop(!0), "pulse" == animation.type || "shrink" == animation.type ? reverse = !1 : "undefined" != typeof reverse && null !== reverse || (reverse = !($target.is(":hidden") || "hidden" == $target.css("visibility") || 0 == $target.css("opacity"))), "overlay" != animation.type && this.getAnimations().getCompatibilityMode()) return this.notify("animation.start", [reverse, trigger]).animating = !0, this.getViewport().notify("animation.start", [this, reverse, trigger]), $target[reverse ? "hide" : "show"](), this.notify("animation.end", [reverse, trigger]).animating = !1, this.getViewport().notify("animation.end", [this, reverse, trigger]), this.animated = !0, this;
9093            switch (animation.type) {
9094                case "fade":
9095                    reverse ? $target.velocity("fadeOut", { duration: animation.duration, delay: animation.delay, display: null, visibility: "hidden", progress: function() { this.notify("animation.step", [animation.type]), this.getViewport().notify("animation.step", [this, animation.type]) }.bind(this), begin: function() { this.notify("animation.start", [reverse, trigger]).animating = !0, this.getViewport().notify("animation.start", [this, reverse, trigger]) }.bind(this), complete: function() { this.notify("animation.end", [reverse, trigger]).animating = !1, this.getViewport().notify("animation.end", [this, reverse, trigger]) }.bind(this) }) : $target.velocity("fadeIn", { duration: animation.duration, delay: animation.delay, display: null, visibility: "visible", progress: function() { this.notify("animation.step", [animation.type]), this.getViewport().notify("animation.step", [this, animation.type]) }.bind(this), begin: function() { this.notify("animation.start", [reverse, trigger]).animating = !0, this.getViewport().notify("animation.start", [this, reverse, trigger]) }.bind(this), complete: function() { this.notify("animation.end", [reverse, trigger]).animating = !1, this.getViewport().notify("animation.end", [this, reverse, trigger]) }.bind(this) });
9096                    break;
9097                case "slide":
9098                    if (reverse) $target.delay(animation.delay).slideUp({ duration: animation.duration, step: function() { this.notify("animation.step", [animation.type]), this.getViewport().notify("animation.step", [this, animation.type]) }.bind(this), start: function() { this.notify("animation.start", [reverse, trigger]).animating = !0, this.getViewport().notify("animation.start", [this, reverse, trigger]) }.bind(this), complete: function() { this.notify("animation.end", [reverse, trigger]).animating = !1, this.getViewport().notify("animation.end", [this, reverse, trigger]) }.bind(this) });
9099                    else {
9100                        var scrollIntoView = !0;
9101                        this.once("animation.end", function() { scrollIntoView && !this.getViewport().targetVisible(this.$element, "top") && this.getViewport().scrollTo(this.$element, "top", 500, -100) }.bind(this)), this.getViewport().once("scroll", function() { scrollIntoView = !1 }.bind(this)), $target.delay(animation.delay).queue(function(next) { this.notify("animation.start", [reverse, trigger]).animating = !0, this.getViewport().notify("animation.start", [this, reverse, trigger]), next() }.bind(this)).slideDown({ duration: animation.duration, step: function() { this.notify("animation.step", [animation.type]), this.getViewport().notify("animation.step", [this, animation.type]) }.bind(this), complete: function() { this.notify("animation.end", [reverse, trigger]).animating = !1, this.getViewport().notify("animation.end", [this, reverse, trigger]) }.bind(this) })
9102                    }
9103                    break;
9104                case "move-left-to-right":
9105                    var existingProperties = this.getAnimations().getTransforms($target);
9106                    for (var i in existingProperties) $.Velocity.hook($target, i, existingProperties[i]);
9107                    reverse ? $target.velocity({ translateX: [this.getViewport().getWidth() - this.getAnimations().getLowestOff
9107set(), existingProperties.translateX], opacity: [0, 1] }, { duration: animation.duration, delay: animation.delay, easing: [100, 20], display: null, visibility: "hidden", progress: function() { this.notify("animation.step", [animation.type]), this.getViewport().notify("animation.step", [this, animation.type]) }.bind(this), begin: function() { this.notify("animation.start", [reverse, trigger]).animating = !0, this.getViewport().notify("animation.start", [this, reverse, trigger]) }.bind(this), complete: function() { $target.css("transform", ""), this.notify("animation.end", [reverse, trigger]).animating = !1, this.getViewport().notify("animation.end", [this, reverse, trigger]) }.bind(this) }) : $target.velocity({ translateX: [existingProperties.translateX, -(this.getAnimations().getHighestOffset() + $target.outerWidth())], opacity: [1, 0] }, { duration: animation.duration, delay: animation.delay, easing: [100, 20], display: null, visibility: "visible", progress: function() { this.notify("animation.step", [animation.type]), this.getViewport().notify("animation.step", [this, animation.type]) }.bind(this), begin: function() { this.notify("animation.start", [reverse, trigger]).animating = !0, this.getViewport().notify("animation.start", [this, reverse, trigger]) }.bind(this), complete: function() { $target.css("transform", ""), this.notify("animation.end", [reverse, trigger]).animating = !1, this.getViewport().notify("animation.end", [this, reverse, trigger]) }.bind(this) });
9108                    break;
9109                case "move-right-to-left":
9110                    var existingProperties = this.getAnimations().getTransforms($target);
9111                    for (var i in existingProperties) $.Velocity.hook($target, i, existingProperties[i]);
9112                    reverse ? $target.velocity({ translateX: [-(this.getAnimations().getHighestOffset() + $target.outerWidth()), existingProperties.translateX], opacity: [0, 1] }, { duration: animation.duration, delay: animation.delay, easing: [100, 20], display: null, visibility: "hidden", progress: function() { this.notify("animation.step", [animation.type]), this.getViewport().notify("animation.step", [this, animation.type]) }.bind(this), begin: function() { this.notify("animation.start", [reverse, trigger]).animating = !0, this.getViewport().notify("animation.start", [this, reverse, trigger]) }.bind(this), complete: function() { $target.css("transform", ""), this.notify("animation.end", [reverse, trigger]).animating = !1, this.getViewport().notify("animation.end", [this, reverse, trigger]) }.bind(this) }) : $target.velocity({ translateX: [existingProperties.translateX, this.getViewport().getWidth() - this.getAnimations().getLowestOffset()], opacity: [1, 0] }, { duration: animation.duration, delay: animation.delay, easing: [100, 20], display: null, visibility: "visible", progress: function() { this.notify("animation.step", [animation.type]), this.getViewport().notify("animation.step", [this, animation.type]) }.bind(this), begin: function() { this.notify("animation.start", [reverse, trigger]).animating = !0, this.getViewport().notify("animation.start", [this, reverse, trigger]) }.bind(this), complete: function() { $target.css("transform", ""), this.notify("animation.end", [reverse, trigger]).animating = !1, this.getViewport().notify("animation.end", [this, reverse, trigger]) }.bind(this) });
9113                    break;
9114                case "shrink":
9115                    var existingProperties = this.getAnimations().getTransforms($target);
9116                    for (var i in existingProperties) $.Velocity.hook($target, i, existingProperties[i]);
9117                    reverse ? $target.velocity("transition.expandOut", { duration: animation.duration, delay: animation.delay, display: null, visibility: "hidden", progress: function() { this.notify("animation.step", [animation.type]), this.getViewport().notify("animation.step", [this, animation.type]) }.bind(this), begin: function() { this.notify("animation.start", [reverse, trigger]).animating = !0, this.getViewport().notify("animation.start", [this, reverse, trigger]) }.bind(this), complete: function() { $target.css("transform", ""), this.notify("animation.end", [reverse, trigger]).animating = !1, this.getViewport().notify("animation.end", [this, reverse, trigger]) }.bind(this) }) : $target.velocity("transition.expandIn", { duration: animation.duration, delay: animation.delay, display: null, visibility: "visible", progress: function() { this.notify("animation.step", [animation.type]), this.getViewport().notify("animation.step", [this, animation.type]) }.bind(this), begin: function() { this.notify("animation.start", [reverse, trigger]).animating = !0, this.getViewport().notify("animation.start", [this, reverse, trigger]) }.bind(this), complete: function() { $target.css("transform", ""), this.notify("animation.end", [reverse, trigger]).animating = !1, this.getViewport().notify("animation.end", [this, reverse, trigger]) }.bind(this) });
9118                    break;
9119                case "pulse":
9120                    var existingProperties = this.getAnimations().getTransforms($target);
9121                    for (var i in existingProperties) $.Velocity.hook($target, i, existingProperties[i]);
9122                    $target.velocity("callout.pulse", { duration: animation.duration, delay: animation.delay, progress: function() { this.notify("animation.step", [animation.type]), this.getViewport().notify("animation.step", [this, animation.type]) }.bind(this), begin: function() { this.notify("animation.start", [reverse, trigger]).animating = !0, this.getViewport().notify("animation.start", [this, reverse, trigger]) }.bind(this), complete: function() { $target.css("transform", ""), this.notify("animation.end", [reverse, trigger]).animating = !1, this.getViewport().notify("animation.end", [this, reverse, trigger]) }.bind(this) });
9123                    break;
9124                case "flash":
9125                    $target.velocity("callout.flash", { duration: animation.duration, delay: animation.delay, progress: function() { this.notify("animation.step", [animation.type]), this.getViewport().notify("animation.step", [this, animation.type]) }.bind(this), begin: function() { this.notify("animation.start", [reverse, trigger]).animating = !0, this.getViewport().notify("animation.start", [this, reverse, trigger]) }.bind(this), complete: function() { this.notify("animation.end", [reverse, trigger]).animating = !1, this.getViewport().notify("animation.end", [this, reverse, trigger]) }.bind(this) });
9126                    break;
9127                case "overlay":
9128                    this.getViewport().promise("api.magnific.ready", function() { return $target.closest(".mfp-content").length ? void this.getViewport().jQuery.magnificPopup.close() : (animation.overlay.width && "auto" != animation.overlay.width ? $target.css({ position: "relative", "margin-left": "auto", "margin-right": "auto", "max-width": "100%", width: animation.overlay.width }) : $target.css({ position: "relative", display: "inline-block", width: "auto", "text-align": "left" }), $target.show(), this.getViewport().jQuery.magnificPopup.open({ items: { src: "#" + $target.attr("id") }, type: "inline", fixedContentPos: !1, callbacks: { open: function() { this.notify("animation.start", [reverse, trigger]).animating = !0, this.getViewport().notify("animation.start", [this, reverse, trigger]) }.bind(this), close: function() { this.notify("animation.end", [reverse, trigger]).animating = !1, this.getViewport().notify("animation.end", [this, reverse, trigger]) }.bind(this) } }), void(animation.overlay.unit || $target.parent().css("text-align", "center"))) }.bind(this), !0), this.getViewport().requireMagnific()
9129            }
9130            return this.animated = !0, this
9131        },
9132        getAnimationTarget: function() { return this.$element },
9133        getIsAnimating: function() { return this.animating },
9134        wasAnimated: function(animated) { return "undefined" != typeof animated && (this.animated = animated), this.animated },
9135        getAnimations: function() { return animations },
9136        getViewport: function() { return viewport },
9137        getAnimation: function() { var animation; try { animation = JSON.parse(this.$element.attr("data-animation")) } catch (e) { parameters = {} } return _.merge(this.animation, animation), "number" == typeof this.animation.duration && (this.animation.duration = this.animation.duration + "s"), "number" == typeof this.animation.delay && (this.animation.delay = this.animation.delay + "s"), "unit" in this.animation.overlay && this.animation.overlay.unit && (this.animation.overlay.width = parseFloat(this.animation.overlay.width) + this.animation.overlay.unit, delete this.animation.overlay.unit), this.animation },
9138        getIsAnimated: function() { var animation = this.getAnimation(); return animation && "none" != animation.type },
9139        getAnimatedParent: function() {
9140            for (var parent, child = this;
9141                (parent = child.getParent()) && !parent.getIsAnimated();) child = parent;
9142            return !(!parent || !parent.getIsAnimated()) && parent
9143        },
9144        getIsBackground: function() { return this.$element.is(".wv-bg") },
9145        isAttached: function() { return null !== this.$element[0].parentNode && this.$element[0].parentNode.nodeType !== Node.DOCUMENT_FRAGMENT_NODE }
9146    }),
9147    ElementButton = ("undefined" != typeof ElementButton ? ElementButton : ElementBase).extend({ $button: null, wakeup: function() { return this.$button = this.getViewport().jQuery("a,button", this.$element[0]), this }, getMainElement: function() { return this.$button || this.$element } }),
9148    ElementContainer = ("undefined" != typeof ElementContainer ? ElementContainer : ElementBase).extend({
9149        $inner: null,
9150        wakeup: function() {
9151            if (this.$inner = this.getViewport().jQuery("> .inner", this.$element[0]), !this.$inner.length) return console.warn("Invalid markup for container element.", this.$element[0]), this;
9152            this.getViewport().observe("load resize", function() { this.updateParallax(!0) }.bind(this));
9153            var parallaxAmount;
9154            return parallaxAmount = "dataset" in this.$inner[0] ? parseInt(this.$inner[0].dataset.parallaxAmount || 0) / 100 : parseInt(this.$inner[0].getAttribute("data-parallax-amount") || 0) / 100, (parallaxAmount || "undefined" != typeof cms && cms) && this.getViewport().observe("scroll.start", function() { this.refreshParallaxData() }.bind(this)).observe("frame.scroll", function() { this.updateParallax() }.bind(this)), this.getViewport().debounce("animation.step animation.end", 5, function() { this.updateParallax(!0) }.bind(this)), this.update(), this
9155        },
9156        update: function() { if (this.isAttached()) return this.updateParallax(!0), this },
9157        refreshParallaxData: function() { return this.parallax || (this.parallax = {}), this.isAttached() ? (this.parallax.$backgroundContainer = $("> .background", this.$element), this.parallax.$backgroundContainer.length ? (this.parallax.$backgroundElement = $("> .ed-element", this.parallax.$backgroundContainer), this.parallax.$backgroundElement.length ? (this.parallax.$sliderText = $(".ed-slider-text", this.parallax.$backgroundElement), "dataset" in this.$inner[0] ? this.parallax.amount = parseInt(this.$inner[0].dataset.parallaxAmount || 0) / 100 : this.parallax.amount = parseInt(this.$inner[0].getAttribute("data-parallax-amount") || 0) / 100, !this.getViewport().getIsMobile() && !this.getViewport().getIsTouch() || "undefined" != typeof cms && cms || (this.parallax.amount = 0), this.parallax.amount ? (this.parallax.$backgroundElement.css("transform", ""), this.parallax.elementBoundingBox = this.$element.offset(), this.parallax.elementBoundingBox.height = this.$element.outerHeight(), this.parallax.elementBoundingBox.bottom = this.parallax.elementBoundingBox.top + this.parallax.elementBoundingBox.height, this.parallax.amount > .5 && this.parallax.$backgroundElement.is(".ed-image") && this.parallax.elementBoundingBox.height <= this.getViewport().getHeight() ? (this.parallax.reverse = !0, this.parallax.$backgroundContainer.css("transform", ""), this.parallax.$backgroundImage = $("> .background-image-holder", this.parallax.$backgroundElement), this.parallax.$backgroundImage.addClass("wv-bg-fixed"), this.parallax.alignment = "center", this.parallax.$backgroundElement.is(".bg-rt, .bg-rc, .bg-rb") ? this.parallax.alignment = "right" : this.parallax.$backgroundElement.is(".bg-lt, .bg-lc, .bg-lb") && (this.parallax.alignment = "left")) : (this.parallax.reverse = !1, $("> .background-image-holder", this.parallax.$backgroundElement).css("background-position", "").removeClass("wv-bg-fixed")), this.parallax.startPoint = this.parallax.elementBoundingBox.top - this.getViewport().getHeight(), this.parallax.endPoint = this.parallax.elementBoundingBox.bottom, this.parallax.distance = this.parallax.endPoint - this.parallax.startPoint, this.parallax.height = Math.ceil(this.parallax.elementBoundingBox.height + (this.getViewport().getHeight() - this.parallax.elementBoundingBox.height) * this.parallax.amount), this.parallax.$backgroundContainer.height(this.parallax.height), this.parallax.reverse ? (this.parallax.start = -this.getViewport().getHeight() * (1 - this.parallax.amount), this.parallax.end = this.parallax.elementBoundingBox.height * (1 - this.parallax.amount)) : (this.parallax.start = -this.getViewport().getHeight() * this.parallax.amount, this.parallax.end = this.parallax.elementBoundingBox.height * this.parallax.amount), this.parallax.enabled = !0, this) : (this.$element.removeClass("parallax"), this.parallax.$backgroundContainer.css({ transform: "", height: "" }), this.parallax.$backgroundElement.css({ transform: "", height: "" }), $("> .background-image-holder", this.parallax.$backgroundElement).css("background-position", "").removeClass("wv-bg-fixed"), this.parallax.$sliderText.length && this.parallax.$sliderText.css("transform", ""), void(this.parallax.enabled = !1))) : void(this.parallax.enabled = !1)) : void(this.parallax.enabled = !1)) : void(this.parallax.enabled = !1) },
9158        updateParallax: function(deep) {
9159            if (this.parallax && !deep || this.refreshParallaxData(), !(!this.parallax.enabled || this.getViewport().getScrollTop() < this.parallax.startPoint || this.getViewport().getScrollTop() > this.parallax.endPoint)) {
9160                var percentScrolled = (this.getViewport().getScrollTop() - this.parallax.startPoint) / this.parallax.distance;
9161                return this.parallax.translation = (this.parallax.end - this.parallax.start) * percentScrolled + this.parallax.start, this.parallax.reverse ? (this.parallax.translation = -this.parallax.translation, this.parallax.$backgroundImage.css("background-position", this.parallax.alignment + " " + this.parallax.translation + "px")) : (this.parallax.$backgroundContainer.css("transform", "translate3d(0, " + this.parallax.translation + "px, 0)"), this.parallax.$sliderText.length && this.parallax.$sliderText.css("transform", "translate3d(0, " + -(this.parallax.height - this.parallax.elementBoundingBox.height + this.parallax.translation) + "px, 0)")),
9162                    this
9163            }
9164        }
9165    }),
9166    ElementDocument = ("undefined" != typeof ElementDocument ? ElementDocument : ElementBase).extend({}),
9167    ElementFacebook = ("undefined" != typeof ElementFacebook ? ElementFacebook : ElementBase).extend({ $facebook: null, wakeup: function() { return this.$facebook = this.getViewport().jQuery("iframe", this.$element[0]), this }, getMainElement: function() { return this.$facebook || this.$element } }),
9168    ElementForm = ("undefined" != typeof ElementForm ? ElementForm : ElementBase).extend({}),
9169    ElementGallery = ("undefined" != typeof ElementGallery ? ElementGallery : ElementBase).extend({ $gallery: null, wakeup: function() { this.$gallery = this.getViewport().jQuery(".ed-gallery-items:first", this.$element[0]), this.getViewport().promise("api.magnific.ready", function() { this.$gallery.magnificPopup({ delegate: "a", type: "image", tLoading: "...", mainClass: "mfp-img-mobile", gallery: { enabled: !0, navigateByImgClick: !0, preload: [0, 1], tPrev: "", tNext: " ", tCounter: '<span class="mfp-counter">%curr%/%total%</span>' }, image: { tError: '<a href="%url%">The image #%curr%</a> could not be loaded.' }, disableOn: function() { return "undefined" != typeof editor && editor ? editor.getView().getPreview() || !editor.getCms().getPermission("edit", this) : "undefined" == typeof cms || !cms || cms.getInterface().getPreview() }.bind(this) }) }.bind(this)), this.getViewport().requireMagnific() } }),
9170    ElementGrid = ("undefined" != typeof ElementGrid ? ElementGrid : ElementBase).extend({
9171        $section: null,
9172        wakeup: function() {
9173            if (this.$section = this.getViewport().jQuery("section:first", this.$element[0]), !this.$section.length) return console.warn("Invalid markup for grid element.", this.$element[0]), this;
9174            if (this.getViewport().observe("load resize", function() { this.updateWidth() }.bind(this)).observe("load:after resize:after", function() { this.updateHeight(), this.updateParallax(!0) }.bind(this)), "dataset" in this.$section[0]) var parallaxAmount = parseInt(this.$section[0].dataset.parallaxAmount || 0) / 100;
9175            else var parallaxAmount = parseInt(this.$section[0].getAttribute("data-parallax-amount") || 0) / 100;
9176            return (parallaxAmount || "undefined" != typeof cms && cms) && this.getViewport().observe("scroll.
9176start", function() { this.refreshParallaxData() }.bind(this)).observe("frame.scroll", function() { this.updateParallax() }.bind(this)), this.getViewport().debounce("animation.step animation.end", 5, function() { this.updateParallax(!0) }.bind(this)), this.update(), this
9177        },
9178        update: function() { if (this.isAttached()) return this.updateWidth(), this.updateHeight(), this.updateParallax(!0), this },
9179        updateWidth: function() {
9180            if (this.isAttached()) {
9181                if (!this.$element.is(".full-width") && !this.$section.is(".full-width")) return this.$element.css({ marginLeft: "", width: "" }), this.$section.css({ marginLeft: "", width: "" }), void(this.getViewport().jQuery("> .inner", this.$section).length && (this.getViewport().jQuery("> .inner", this.$section).contents().unwrap(), this.$section.addClass("container")));
9182                var elementDisplayValue = this.$element.css("display"),
9183                    sectionDisplayValue = this.$section.css("display");
9184                if ("none" == elementDisplayValue && this.$element.show(), "none" == sectionDisplayValue && this.$section.show(), !this.$section.is(":visible")) return this.$section.css({ marginLeft: "0", width: "auto" }), this.getViewport().jQuery("> .inner", this.$section).css({ width: "auto" }), this.$element.css("display", elementDisplayValue), this.$section.css("display", sectionDisplayValue), this;
9185                var fullWidth = this.getViewport().getWidth(),
9186                    contentWidth = this.$element.parent().width(),
9187                    $closestColumn = this.$element.closest('[class*="span"]');
9188                $closestColumn.length && (fullWidth = $closestColumn.width());
9189                var margin = (fullWidth - contentWidth) / 2;
9190                return this.$element.closest(".wv-abs, .wv-fixed").length && (margin = 0), margin < 0 && (margin = 0), this.$element.css("display", elementDisplayValue), this.$section.css("display", sectionDisplayValue), this.$element.is(".full-width") ? (this.getViewport().jQuery("> .inner", this.$section).length && (this.getViewport().jQuery("> .inner", this.$section).contents().unwrap(), this.$section.addClass("container")), this.$element.css({ marginLeft: -margin, width: fullWidth }), this.$section.css({ marginLeft: "", width: "" })) : (this.getViewport().jQuery("> .inner", this.$section).length || this.$section.removeClass("container").children().not("div.overlay, div.background, .slick-arrow, .slick-dots").wrapAll('<div class="inner container"></div>'), this.$element.css({ marginLeft: "", width: "" }), this.$section.css({ marginLeft: -margin, width: fullWidth }), contentWidth == fullWidth ? this.getViewport().jQuery("> .inner", this.$section).css({ width: "", marginLeft: "", marginRight: "" }) : this.getViewport().jQuery("> .inner", this.$section).css({ width: contentWidth + "px", marginLeft: "auto", marginRight: "auto" })), this
9191            }
9192        },
9193        updateHeight: function() {
9194            if (this.isAttached() && !this.$section.is(".wv-animating") && !this.$element.is(".wv-animating")) {
9195                var heightConfiguration = { mode: this.$section.attr("data-height-mode"), height: this.$section.attr("data-height"), subtract: this.$section.attr("data-height-subtract"), reference: this.$section.attr("data-height-reference") };
9196                if (void 0 === heightConfiguration.mode || "auto" == heightConfiguration.mode || void 0 === heightConfiguration.height) this.$section.css("height", "");
9197                else if ("pixel" == heightConfiguration.mode) this.$section.css({ height: parseInt(heightConfiguration.height || 0) + "px" });
9198                else if ("percent" == heightConfiguration.mode) {
9199                    var height = parseFloat(heightConfiguration.height || 0) / 100 * ("width" == heightConfiguration.reference ? this.getViewport().getWidth() : this.getViewport().getHeight()) - parseInt(heightConfiguration.subtract || 0);
9200                    this.$section.css({ height: parseInt(height || 0) + "px" })
9201                }
9202                return this
9203            }
9204        },
9205        refreshParallaxData: function() { return this.parallax || (this.parallax = {}), this.isAttached() ? (this.parallax.$backgroundContainer = $("> .background", this.$section), this.parallax.$backgroundContainer.length ? (this.parallax.$backgroundElement = $("> .ed-element", this.parallax.$backgroundContainer), this.parallax.$backgroundElement.length ? (this.parallax.$sliderText = $(".ed-slider-text", this.parallax.$backgroundElement), "dataset" in this.$section[0] ? this.parallax.amount = parseInt(this.$section[0].dataset.parallaxAmount || 0) / 100 : this.parallax.amount = parseInt(this.$section[0].getAttribute("data-parallax-amount") || 0) / 100, !this.getViewport().getIsMobile() && !this.getViewport().getIsTouch() || "undefined" != typeof cms && cms || (this.parallax.amount = 0), this.parallax.amount ? (this.parallax.$backgroundElement.css("transform", ""), this.parallax.elementBoundingBox = this.$element.offset(), this.parallax.elementBoundingBox.height = this.$element.outerHeight(), this.parallax.elementBoundingBox.bottom = this.parallax.elementBoundingBox.top + this.parallax.elementBoundingBox.height, this.parallax.amount > .5 && this.parallax.$backgroundElement.is(".ed-image") && this.parallax.elementBoundingBox.height <= this.getViewport().getHeight() ? (this.parallax.reverse = !0, this.parallax.$backgroundContainer.css("transform", ""), this.parallax.$backgroundImage = $("> .background-image-holder", this.parallax.$backgroundElement), this.parallax.$backgroundImage.addClass("wv-bg-fixed"), this.parallax.alignment = "center", this.parallax.$backgroundElement.is(".bg-rt, .bg-rc, .bg-rb") ? this.parallax.alignment = "right" : this.parallax.$backgroundElement.is(".bg-lt, .bg-lc, .bg-lb") && (this.parallax.alignment = "left")) : (this.parallax.reverse = !1, $("> .background-image-holder", this.parallax.$backgroundElement).css("background-position", "").removeClass("wv-bg-fixed")), this.parallax.startPoint = this.parallax.elementBoundingBox.top - this.getViewport().getHeight(), this.parallax.endPoint = this.parallax.elementBoundingBox.bottom, this.parallax.distance = this.parallax.endPoint - this.parallax.startPoint, this.parallax.height = Math.
9205ceil(this.parallax.elementBoundingBox.height + (this.getViewport().getHeight() - this.parallax.elementBoundingBox.height) * this.parallax.amount), this.parallax.$backgroundContainer.height(this.parallax.height), this.parallax.reverse ? (this.parallax.start = -this.getViewport().getHeight() * (1 - this.parallax.amount), this.parallax.end = this.parallax.elementBoundingBox.height * (1 - this.parallax.amount)) : (this.parallax.start = -this.getViewport().getHeight() * this.parallax.amount, this.parallax.end = this.parallax.elementBoundingBox.height * this.parallax.amount), this.parallax.enabled = !0, this) : (this.$section.removeClass("parallax"), this.parallax.$backgroundContainer.css({ transform: "", height: "" }), this.parallax.$backgroundElement.css({ transform: "", height: "" }), $("> .background-image-holder", this.parallax.$backgroundElement).css("background-position", "").removeClass("wv-bg-fixed"), this.parallax.$sliderText.length && this.parallax.$sliderText.css("transform", ""), void(this.parallax.enabled = !1))) : void(this.parallax.enabled = !1)) : void(this.parallax.enabled = !1)) : void(this.parallax.enabled = !1) },
9206        updateParallax: function(deep) { if (this.parallax && !deep || this.refreshParallaxData(), !(!this.parallax.enabled || this.getViewport().getScrollTop() < this.parallax.startPoint || this.getViewport().getScrollTop() > this.parallax.endPoint)) { var percentScrolled = (this.getViewport().getScrollTop() - this.parallax.startPoint) / this.parallax.distance; return this.parallax.translation = (this.parallax.end - this.parallax.start) * percentScrolled + this.parallax.start, this.parallax.reverse ? (this.parallax.translation = -this.parallax.translation, this.parallax.$backgroundImage.css("background-position", this.parallax.alignment + " " + this.parallax.translation + "px")) : (this.parallax.$backgroundContainer.css("transform", "translate3d(0, " + this.parallax.translation + "px, 0)"), this.parallax.$sliderText.length && this.parallax.$sliderText.css("transform", "translate3d(0, " + -(this.parallax.height - this.parallax.elementBoundingBox.height + this.parallax.translation) + "px, 0)")), this } },
9207        getAnimationTarget: function() { var animation = this.getAnimation(); return animation && "slide" == animation.type && this.$section.is(".full-width") ? this.$section : this.$element }
9208    }),
9209    ElementHeadline = ("undefined" != typeof ElementHeadline ? ElementHeadline : ElementBase).extend({ getMainElement: function() { return this.getViewport().jQuery("h1,h2,h3,h4,h5,h6", this.$element) } }),
9210    ElementHtml = ("undefined" != typeof ElementHtml ? ElementHtml : ElementBase).extend({}),
9211    ElementImage = ("undefined" != typeof ElementImage ? ElementImage : ElementBase).extend({ $img: null, wakeup: function() { return this.$img = this.getViewport().jQuery("img", this.$element[0]), this.update(), this }, getMainElement: function() { return this.getIsBackground() ? this.getViewport().jQuery("> .background-image-holder", this.$element) : this.$img || this.$element }, update: function() { return this.$element.is(".zoom") && (this.getViewport().promise("api.magnific.ready", function() { this.getViewport().jQuery(this.$element[0]).magnificPopup({ delegate: "a", type: "image", tLoading: "...", image: { tError: '<a href="%url%">The image #%curr%</a> could not be loaded.' } }) }.bind(this)), this.getViewport().requireMagnific()), this } }),
9212    ElementMap = ("undefined" != typeof ElementMap ? ElementMap : ElementBase).extend({
9213        $map: null,
9214        map: null,
9215        markers: [],
9216        infoWindows: [],
9217        recenter: null,
9218        queryLocationCache: {},
9219        wakeup: function() { return this.$map = this.getViewport().jQuery(".map-canvas", this.$element[0]), this.getViewport().promise("api.maps.ready", function() { this.updateMap(), this.getViewport().debounce("resize", 50, function() { this.updateMap() }.bind(this)) }.bind(this)), this.getViewport().requireMapsApi(), this.getViewport().observe("animation.start animation.end", function(element) { if (this === element || this.hasParent(element)) { var visible = "none" !== element.getElement().css("display");!visible && element.getElement().css("display", ""), this.updateMap(!1, !0), !visible && element.getElement().css("display", "none") } }.bind(this)), this.isAttached() || this.once("attach", function() { this.updateMap(!0) }.bind(this)), this },
9220        getMainElement: function() { return this.$map || this.$element },
9221        update: function() { return this.updateMap(), this },
9222        queryLocation: function(query, callback) { var self = this; return "undefined" != typeof this.queryLocationCache[query] ? (callback(this.queryLocationCache[query].lat(), this.queryLocationCache[query].lng(), query
9222), this) : ((new google.maps.Geocoder).geocode({ address: query }, function(results, status) { status == google.maps.GeocoderStatus.OK ? (self.queryLocationCache[query] = results[0].geometry.location, callback(results[0].geometry.location.lat(), results[0].geometry.location.lng(), query)) : callback(52.5158473, 13.4109857, query) }), this) },
9223        updateMap: function(deep, recenter) {
9224            var i;
9225            if ("undefined" == typeof google) return this;
9226            if (this.map && !deep || (this.settings = this.getMapSettings()), this.map || (this.map = new google.maps.Map(this.$map[0]), this.$map.data("map", this.map), this.recenter = this.settings.center.markers && this.settings.markers.length || !this.$map.is(":visible"), deep = !0), deep) {
9227                for (this.map.setOptions({
9228                        center: { lat: this.settings.center.lat, lng: this.settings.center.lng },
9229                        scrollwheel: this.settings.controls.mousewheel,
9230                        zoom: this.settings.zoom,
9231                        zoomControl: this.settings.controls.zoom,
9232                        scaleControl: this.settings.controls.scale,
9233                        styles: "colorize" == this.settings.style.name ? function(color) {
9234                            var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(color);
9235                            if (rgb) {
9236                                var h, s, r = parseInt(rgb[1], 16) / 255,
9237                                    g = parseInt(rgb[2], 16) / 255,
9238                                    b = parseInt(rgb[3], 16) / 255,
9239                                    max = Math.max(r, g, b),
9240                                    min = Math.min(r, g, b),
9241                                    l = (max + min) / 2;
9242                                if (max == min) h = s = 0;
9243                                else {
9244                                    var d = max - min;
9245                                    switch (s = l > .5 ? d / (2 - max - min) : d / (max + min), max) {
9246                                        case r:
9247                                            h = (g - b) / d + (g < b ? 6 : 0);
9248                                            break;
9249                                        case g:
9250                                            h = (b - r) / d + 2;
9251                                            break;
9252                                        case b:
9253                                            h = (r - g) / d + 4
9254                                    }
9255                                    h /= 6
9256                                }
9257                                return [{ stylers: [{ hue: color }, { saturation: 200 * s - 100 }, { lightness: 200 * l - 100 }] }]
9258                            }
9259                            return null
9260                        }(this.settings.style.color) : this.settings.style.configuration,
9261                        mapTypeId: google.maps.MapTypeId[this.settings.type.toUpperCase()]
9262                    }), i = 0; i < this.markers.length; i++) this.markers[i].setMap(null);
9263                for (i = 0; i < this.infoWindows.length; i++) this.infoWindows[i].setMap(null);
9264                for (this.markers = [], this.infoWindows = [], i = 0; i < this.settings.markers.length; i++)(function(index) {
9265                    var iconUrl = "https://mt.googleapis.com/vt/icon/name=icons/spotlight/spotlight-poi.png&scale=1";
9266                    if (this.settings.markers[index].icon) {
9267                        var width = this.settings.markers[index].width;
9268                        width && "auto" != width || (width = "full"), iconUrl = new File(this.settings.markers[index].icon).getImageSize(width)
9269                    }
9270                    var marker = new google.maps.Marker({ position: new google.maps.LatLng(this.settings.markers[index].lat, this.settings.markers[index].lng), map: this.map, title: this.settings.markers[index].title, icon: iconUrl });
9271                    if (this.markers.push(marker), this.settings.markers[index].title || this.settings.markers[index].description) {
9272                        var windowContent = '<div id="content">' + (this.settings.markers[index].title ? "<p><strong>" + this.settings.markers[index].title + "</strong></p>" : "") + (this.settings.markers[index].description ? "<div>" + this.settings.markers[index].description + "</div>" : "") + "</div>",
9273                            infoWindow = new google.maps.InfoWindow({ content: windowContent, disableAutoPan: !0 });
9274                        this.infoWindows.push(infoWindow), this.markers[index].addListener("click", function() { infoWindow.open(this.map, marker) }.bind(this)), this.settings.markers[index].open && infoWindow.open(this.map, marker)
9275                    }
9276                }).bind(this)(i);
9277                this.$map.data("markers", this.markers)
9278            }
9279            if (google.maps.event.trigger(this.map, "resize"), this.recenter || recenter || cms) {
9280                if (this.settings.center.markers && this.settings.markers.length) { var bounds = new google.maps.LatLngBounds; for (i = 0; i < this.markers.length; i++) bounds.extend(this.markers[i].getPosition()); "zoom" == this.settings.center.markers ? this.map.fitBounds(bounds) : this.map.setCenter(bounds.getCenter()) } else this.map.setCenter(new google.maps.LatLng(this.settings.center.lat, this.settings.center.lng));
9281                this.recenter = !this.$map.is(":visible")
9282            }
9283            return this
9284        },
9285        getMapSettings: function() { var parameters, old = this.$map.data("params"); try { parameters = JSON.parse(this.$map.attr("data-parameters")), old = null } catch (e) { parameters = {} } var settings = _.merge({ markers: [], center: { query: "Berlin", lat: 52.522254, lng: 13.393534, markers: "center" }, zoom: 13, type: "roadmap", style: { name: "default", configuration: null, color: "#999999" }, controls: { zoom: !0, mousewheel: !0, scale: !1 } }, parameters);
9285 return old && (settings.zoom = old.zoom, settings.center.query = "", settings.center.lat = parseFloat(old.lat), settings.center.lng = parseFloat(old.lng), old.marker ? settings.markers = [{ title: "", description: "", marker: "", lat: old.lat, lng: old.lng }] : settings.markers = [], settings.controls.zoom = !!old.zoomControls, settings.controls.scale = !!old.scale, settings.controls.mousewheel = !!old.scroll), settings }
9286    }),
9287    ElementMenu = ("undefined" != typeof ElementMenu ? ElementMenu : ElementBase).extend({ wakeup: function() { return this.activateParentItems(), "autoFill" in this && this.autoFill(), this }, activateParentItems: function() { return this.$element.is(".wv-custom") && ($("li.active", this.$element).parents("div.sub").addClass("current"), $("div.sub.current", this.$element).parents("li").addClass("active")), this } }),
9288    ElementReference = ("undefined" != typeof ElementReference ? ElementReference : ElementBase).extend({ target: null, initializeTarget: function() { this.target && (this.target.destroy(), this.$element[0].element = this); var elementType = (this.$element.attr("class").match(/ed-reference-([a-z]+)/) || ["", ""])[1]; if ("reference" === elementType) return console.warn("Can't reference a reference, aborting..."), this; if (elementType && (elementType = "Element" + elementType.replace(/^([a-z])|\-([a-z])/g, function(match, first, second) { return (first || second).toUpperCase() }), elementType in this.getViewport().window)) { var win = this.getViewport().window; "getEditor" in this && this.getEditor() ? this.target = new win[elementType](this.getEditor(), this.$element[0], !0) : this.target = new win[elementType](this.$element[0], !0) } return this }, is: function(element) { return this == element || this.target == element }, wakeup: function() { return this.initializeTarget(), this }, update: function() { return this.target && this.target.update(), this }, animate: function(reverse, trigger) { return this.target && this.target.animate.bind(this)(reverse, trigger), this }, getAnimationTarget: function() { return this.target ? this.target.getAnimationTarget() : this.$element } }),
9289    ElementSection = ("undefined" != typeof ElementSection ? ElementSection : ElementBase).extend({
9290        $section: null,
9291        wakeup: function() {
9292            if (this.$section = this.getViewport().jQuery("section:first", this.$element[0]), !this.$section.length) return console.warn("Invalid markup for section element.", this.$element[0]), this;
9293            if (this.getViewport().observe("load resize", function() { this.updateWidth() }.bind(this)).observe("load:after resize:after", function() { this.updateHeight(), this.updateParallax(!0) }.bind(this)), "dataset" in this.$section[0]) var parallaxAmount = parseInt(this.$section[0].dataset.parallaxAmount || 0) / 100;
9294            else var parallaxAmount = parseInt(this.$section[0].getAttribute("data-parallax-amount") || 0) / 100;
9295            return (parallaxAmount || "undefined" != typeof cms && cms) && this.getViewport().observe("scroll.start", function() { this.refreshParallaxData() }.bind(this)).observe("frame.scroll", function() { this.updateParallax() }.bind(this)), this.getViewport().debounce("animation.step animation.end", 5, function() { this.updateParallax(!0) }.bind(this)), this.update(), this
9296        },
9297        update: function() { if (this.isAttached()) return this.updateWidth(), this.updateHeight(), this.updateParallax(!0), this },
9298        updateWidth: function() {
9299            if (this.isAttached()) {
9300                if (!this.$element.is(".full-width") && !this.$section.is(".full-width")) return this.$element.css({ marginLeft: "", width: "" }), this.$section.css({ marginLeft: "", width: "" }), void(this.getViewport().jQuery("> .inner", this.$section).length && (this.getViewport().jQuery("> .inner", this.$section).contents().unwrap(), this.$section.addClass("container")));
9301                var elementDisplayValue = this.$element.css("display"),
9302                    sectionDisplayValue = this.$section.css("display");
9303                if ("none" == elementDisplayValue && this.$element.show(), "none" == sectionDisplayValue && this.$section.show(), !this.$section.is(":visible")) return this.$section.css({ marginLeft: "0", width: "auto" }), this.getViewport().jQuery("> .inner", this.$section).css({ width: "auto" }), this.$element.css("display", elementDisplayValue), this.$section.css("display", sectionDisplayValue), this;
9304                var fullWidth = this.getViewport().getWidth(),
9305                    contentWidth = this.$element.parent().width(),
9306                    $closestColumn = this.$element.closest('[class*="span"]');
9307                $closestColumn.length && (fullWidth = $closestColumn.width());
9308                var margin = (fullWidth - contentWidth) / 2;
9309                return this.$element.closest(".wv-abs, .wv-fixed").length && (margin = 0), margin < 0 && (margin = 0), this.$element.css("display", elementDisplayValue), this.$section.css("display", sectionDisplayValue), this.$element.is(".full-width") ? (this.getViewport().jQuery("> .inner", this.$section).length && (this.getViewport().jQuery("> .inner", this.$section).contents().unwrap(), this.$section.addClass("container")), this.$element.css({ marginLeft: -margin, width: fullWidth }), this.$section.css({ marginLeft: "", width: "" })) : (this.getViewport().jQuery("> .inner", this.$section).length || this.$section.removeClass("container").children().not("div.overlay, div.background, .slick-arrow, .slick-dots").wrapAll('<div class="inner container"></div>'), this.$element.css({ marginLeft: "", width: "" }), this.$section.css({ marginLeft: -margin, width: fullWidth }), contentWidth == fullWidth ? this.getViewport().jQuery("> .inner", this.$section).css({ width: "", marginLeft: "", marginRight: "" }) : this.getViewport().jQuery("> .inner", this.$section).css({ width: contentWidth + "px", marginLeft: "auto", marginRight: "auto" })), this
9310            }
9311        },
9312        updateHeight: function() {
9313            if (this.isAttached() && !this.$section.is(".wv-animating") && !this.$element.is(".wv-animating")) {
9314                var heightConfiguration = { mode: this.$section.attr("data-height-mode"), height: this.$section.attr("data-height"), subtract: this.$section.attr("data-height-subtract"), reference: this.$section.attr("data-height-reference") };
9315                if (void 0 === heightConfiguration.mode || "auto" == heightConfiguration.mode || void 0 === heightConfiguration.height) this.$section.css("height", "");
9316                else if ("pixel" == heightConfiguration.mode) this.$section.css({ height: parseInt(heightConfiguration.height || 0
9316) + "px" });
9317                else if ("percent" == heightConfiguration.mode) {
9318                    var height = parseFloat(heightConfiguration.height || 0) / 100 * ("width" == heightConfiguration.reference ? this.getViewport().getWidth() : this.getViewport().getHeight()) - parseInt(heightConfiguration.subtract || 0);
9319                    this.$section.css({ height: parseInt(height || 0) + "px" })
9320                }
9321                return this
9322            }
9323        },
9324        refreshParallaxData: function() { return this.parallax || (this.parallax = {}), this.isAttached() ? (this.parallax.$backgroundContainer = $("> .background", this.$section), this.parallax.$backgroundContainer.length ? (this.parallax.$backgroundElement = $("> .ed-element", this.parallax.$backgroundContainer), this.parallax.$backgroundElement.length ? (this.parallax.$sliderText = $(".ed-slider-text", this.parallax.$backgroundElement), "dataset" in this.$section[0] ? this.parallax.amount = parseInt(this.$section[0].dataset.parallaxAmount || 0) / 100 : this.parallax.amount = parseInt(this.$section[0].getAttribute("data-parallax-amount") || 0) / 100, !this.getViewport().getIsMobile() && !this.getViewport().getIsTouch() || "undefined" != typeof cms && cms || (this.parallax.amount = 0), this.parallax.amount ? (this.parallax.$backgroundElement.css("transform", ""), this.parallax.elementBoundingBox = this.$element.offset(), this.parallax.elementBoundingBox.height = this.$element.outerHeight(), this.parallax.elementBoundingBox.bottom = this.parallax.elementBoundingBox.top + this.parallax.elementBoundingBox.height, this.parallax.amount > .5 && this.parallax.$backgroundElement.is(".ed-image") && this.parallax.elementBoundingBox.height <= this.getViewport().getHeight() ? (this.parallax.reverse = !0, this.parallax.$backgroundContainer.css("transform", ""), this.parallax.$backgroundImage = $("> .background-image-holder", this.parallax.$backgroundElement), this.parallax.$backgroundImage.addClass("wv-bg-fixed"), this.parallax.alignment = "center", this.parallax.$backgroundElement.is(".bg-rt, .bg-rc, .bg-rb") ? this.parallax.alignment = "right" : this.parallax.$backgroundElement.is(".bg-lt, .bg-lc, .bg-lb") && (this.parallax.alignment = "left")) : (this.parallax.reverse = !1, $("> .background-image-holder", this.parallax.$backgroundElement).css("background-position", "").removeClass("wv-bg-fixed")), this.parallax.startPoint = this.parallax.elementBoundingBox.top - this.getViewport().getHeight(), this.parallax.endPoint = this.parallax.elementBoundingBox.bottom, this.parallax.distance = this.parallax.endPoint - this.parallax.startPoint, this.parallax.height = Math.ceil(this.parallax.elementBoundingBox.height + (this.getViewport().getHeight() - this.parallax.elementBoundingBox.height) * this.parallax.amount), this.parallax.$backgroundContainer.height(this.parallax.height), this.parallax.reverse ? (this.parallax.start = -this.getViewport().getHeight() * (1 - this.parallax.amount), this.parallax.end = this.parallax.elementBoundingBox.height * (1 - this.parallax.amount)) : (this.parallax.start = -this.getViewport().getHeight() * this.parallax.amount, this.parallax.end = this.parallax.elementBoundingBox.height * this.parallax.amount), this.parallax.enabled = !0, this) : (this.$section.removeClass("parallax"), this.parallax.$backgroundContainer.css({ transform: "", height: "" }), this.parallax.$backgroundElement.css({ transform: "", height: "" }), $("> .background-image-holder", this.parallax.$backgroundElement).css("background-position", "").removeClass("wv-bg-fixed"), this.parallax.$sliderText.length && this.parallax.$sliderText.css("transform", ""), void(this.parallax.enabled = !1))) : void(this.parallax.enabled = !1)) : void(this.parallax.enabled = !1)) : void(this.parallax.enabled = !1) },
9325        updateParallax: function(deep) { if (this.parallax && !deep || this.refreshParallaxData(), !(!this.parallax.enabled || this.getViewport().getScrollTop() < this.parallax.startPoint || this.getViewport().getScrollTop() > this.parallax.endPoint)) { var percentScrolled = (this.getViewport().getScrollTop() - this.parallax.startPoint) / this.parallax.distance; return this.parallax.translation = (this.parallax.end - this.parallax.start) * percentScrolled + this.parallax.start, this.parallax.reverse ? (this.parallax.translation = -this.parallax.translation, this.parallax.$backgroundImage.css("background-position", this.parallax.alignment + " " + this.parallax.translation + "px")) : (this.parallax.$backgroundContainer.css("transform", "translate3d(0, " + this.parallax.translation + "px, 0)"), this.parallax.$sliderText.length && this.parallax.$sliderText.css("transform", "translate3d(0, " + -(this.parallax.height - this.parallax.elementBoundingBox.height + this.parallax.translation) + "px, 0)")), this } },
9326        getAnimationTarget: function() { var animation = this.getAnimation(); return animation && "slide" == animation.type && this.$section && this.$section.is(".full-width") ? this.$section : this.$element }
9327    }),
9328    ElementSeparator = ("undefined" != typeof ElementSeparator ? ElementSeparator : ElementBase).extend({}),
9329    ElementSlider = ("undefined" != typeof ElementSlider ? ElementSlider : ElementBase).extend({
9330        $slider: null,
9331        slick: !1,
9332        wakeup: function() {
9333            return this.$slider = this.getViewport().jQuery(".slider-container", this.$element[0]), this.getViewport().promise("api.slick.ready", function() { this.updateSlider(), this.getViewport().debounce("resize", 50, function() { this.updateSlider() }.bind(this)) }.bind(this)), this.getViewport().observe("animation.start", function(element, reverse) {
9334                if (!reverse && "slide" == element.getAnimation().type && (this == element || this.hasParent(element))) {
9335                    var hidden = "none" == element.getAnimationTarget().css("display");
9336                    element.getAnimationTarget().show(), this.update(), hidden && element.getAnimationTarget().css("display", "none")
9337                }
9338            }.bind(this)), this.getViewport().requireSlick(), this
9339        },
9340        getMainElement: function() { return this.$slider || this.$element },
9341        update: function() { return this.updateSlider(), this },
9342        play: function() { return this.slick && this.settings && this.settings.autoplay && this.slick.play(), this },
9343        pause: function() { return this.slick && this.slick.pause(), this },
9344        prev: function() { return this.slick && this.slick.prev(), this },
9345        next: function() { return this.slick && this.slick.next(), this },
9346        current: function(current) { return "undefined" == typeof current ? !!this.slick && this.slick.slickCurrentSlide() : (this.slick && this.slick.goTo(current), this) },
9347        updateSlider: function(deep) {
9348            if ($.fn.slick) {
9349                if (!this.slick || deep) {
9350                    this.notify("update.before"), this.settings = this.get
9350SliderSettings();
9351                    var currentSlide = 0;
9352                    this.slick && (currentSlide = this.slick.currentSlide, this.slick.unslick()), this.$slider.empty().attr("class", "slider-container"), this.settings.autoplaySpeed = this.settings.autoplaySpeed.indexOf("ms") != -1 ? parseInt(this.settings.autoplaySpeed) : 1e3 * parseFloat(this.settings.autoplaySpeed), this.settings.animationSpeed = this.settings.animationSpeed.indexOf("ms") != -1 ? parseInt(this.settings.animationSpeed) : 1e3 * parseFloat(this.settings.animationSpeed);
9353                    for (var i = 0; i < this.settings.items.length; i++) {
9354                        var image, url, $item = this.getViewport().jQuery('<div class="ed-slider-item"></div>');
9355                        image = "undefined" != typeof editor && editor && "getMediaManager" in editor ? editor.getMediaManager().getFileByUrl(this.settings.items[i].image) : new File(this.settings.items[i].image), this.getIsBackground() ? (url = image.getImageSize(this.getViewport().getBackgroundDefaultWidth()), $item.css("background-image", "url(" + url + ")"), $item.addClass("bg-" + (this.settings.items[i].orientation || "cc"))) : url = image.getImageSize(this.getViewport().getImageDefaultWidth());
9356                        var $img = this.getViewport().jQuery("<img />").attr("src", url).attr("alt", this.settings.items[i].title ? this.settings.items[i].title : "");
9357                        $img.appendTo($item).on("load", function(self) { return function() { self.notify("load", this) } }(this)), this.settings.items[i].title && this.getViewport().jQuery('<div class="ed-slider-text"></div>').html(this.settings.items[i].title).appendTo($item), this.settings.enlarge && $item.wrapInner('<a href="' + image.getLightboxImage() + '"></a>'), $item.appendTo(this.$slider)
9358                    }
9359                    var configuration = { accessibility: !1, adaptiveHeight: !1, arrows: this.settings.nav, prevArrow: '<button type="button" data-role="none" class="slick-prev" tabindex="0" role="button"></button>', nextArrow: '<button type="button" data-role="none" class="slick-next" tabindex="0" role="button"></button>', autoplay: this.settings.autoplay, autoplaySpeed: this.settings.autoplaySpeed, dots: this.settings.dots, draggable: !1, fade: "fade" == this.settings.animation, focusOnSelect: !1, infinite: this.settings.loop, initialSlide: currentSlide, mobileFirst: !1, pauseOnHover: this.settings.pauseOnHover, pauseOnFocus: this.settings.pauseOnHover, pauseOnDotsHover: this.settings.pauseOnHover, respondTo: "window", responsive: null, slide: "", slidesPerRow: 1, slidesToShow: 1, slidesToScroll: 1, speed: this.settings.animationSpeed, swipe: !0, swipeToSlide: !1, touchMove: !0, touchThreshold: 5, useCSS: !0, useTransform: !0, variableWidth: !1, vertical: "slide" == this.settings.animation && "vertical" == this.settings.direction, verticalSwiping: !1 };
9360                    this.getIsBackground() && (configuration.appendArrows = this.getParent().$section, configuration.appendDots = configuration.appendArrows), this.$items = this.getViewport().jQuery("> .ed-slider-item", this.$slider), this.$slider.slick(configuration).on("afterChange", function() { this.notify("slide") }.bind(this)).on("beforeChange", function() { this.notify("slide.before") }.bind(this)), this.slick = this.$slider.slick("getSlick"), this.$slider[this.settings.dots ? "addClass" : "removeClass"]("has-dots"), this.settings.enlarge && (this.getViewport().promise("api.magnific.ready", function() { this.$items.magnificPopup({ delegate: "a", type: "image", tLoading: "...", mainClass: "mfp-img-mobile", gallery: { enabled: !0, navigateByImgClick: !0, preload: [0, 1], tPrev: "", tNext: " ", tCounter: '<span class="mfp-counter">%curr%/%total%</span>' }, image: { tError: '<a href="%url%">The image #%curr%</a> could not be loaded.' } }) }.bind(this)), this.getViewport().requireMagnific()), "undefined" != typeof editor && editor && (this.getViewport().jQuery(document).off("visibilitychange.slickFix mozvisibilitychange.slickFix webkitvisibilitychange.slickFix"), this.getViewport().jQuery(document).on("visibilitychange.slickFix mozvisibilitychange.slickFix webkitvisibilitychange.slickFix", function() { this.editing && this.pause() }.bind(this))), this.notify("update.after")
9361                }
9362                return this.slick.setPosition(), this.slick.setOption(null, null, !0), this.editing && this.pause(), this
9363            }
9364        },
9365        getSliderSettings: function() {
9366            var parameters, old = this.$slider.data("params");
9367            try { parameters = JSON.parse(this.$slider.attr("data-parameters")), old = null } catch (e) { parameters = {} }
9368            var settings = _.merge({ items: [], animation: "slide", animationSpeed: "800ms", direction: "horizontal", autoplay: !0, autoplaySpeed: "5s", pauseOnHover: !0, loop: !0, nav: !this.getIsBackgroun
9368d(), dots: !1, enlarge: !1 }, parameters);
9369            return old && (settings.animation = old.animation,
9370                settings.animationSpeed = (old.animationSpeed || 800) + "ms", settings.autoplay = !!old.slideshow, settings.autoplaySpeed = (old.slideshowSpeed || 5e3) + "ms", settings.loop = !!old.animationLoop, settings.nav = !!old.directionNav, settings.dots = !!old.controlNav, settings.enlarge = !!old.enlarge, this.$slider.find(".ed-slider-item:not(.clone)").each(function() {
9371                    var item = {};
9372                    if (item.image = this.getViewport().jQuery("img", this).attr("src"), !item.image) {
9373                        var bgImage = this.getViewport().jQuery(this).css("background-image");
9374                        item.image = (bgImage.match(/url\((?:'|")?(.*?)(?:'|")?\)/) || ["", !1])[1], item.orientation = (this.getViewport().jQuery(this).attr("class").match(/bg-([a-z]{2})/) || ["", "cc"])[1]
9375                    }
9376                    item.title = this.getViewport().jQuery(".ed-slider-text", this).text() || "", item.image && settings.items.push(item)
9377                }), this.$slider.attr("data-parameters", JSON.stringify(settings)), this.$slider.removeAttr("data-params")), settings
9378        }
9379    }),
9380    ElementSpacer = ("undefined" != typeof ElementSpacer ? ElementSpacer : ElementBase).extend({ $spacer: null, wakeup: function() { return this.$spacer = this.getViewport().jQuery("div.space", this.$element[0]), this }, getMainElement: function() { return this.$spacer || this.$element } }),
9381    ElementText = ("undefined" != typeof ElementText ? ElementText : ElementBase).extend({}),
9382    ElementVideo = ("undefined" != typeof ElementVideo ? ElementVideo : ElementBase).extend({
9383        $video: null,
9384        $loader: null,
9385        wakeup: function() { return this.$video = this.getViewport().jQuery("iframe", this.$element[0]), this.$loader = this.getViewport().jQuery(".video-loader", this.$element[0]), this.$element.on("click", ".video-loader", function(event) { event.preventDefault(), this.removeLoader() }.bind(this)), this },
9386        getMainElement: function() { return this.$loader && this.$loader.length ? this.$loader : this.$video && this.$video.length ? this.$video : this.$element },
9387        removeLoader: function(autoplay) {
9388            if (!this.$element.is(".lazy-load")) return this;
9389            this.$video || (this.$video = this.getViewport().jQuery("iframe", this.$element[0]));
9390            var src = this.$video.attr("data-src");
9391            return ("undefined" == typeof autoplay || autoplay) && (src += (src.match(/\?[a-z]/) ? "&" : "?") + "autoplay=1"), this.$video.attr("src", src), this.$video.removeAttr("data-src"), this.$video.css("display", ""), (this.$loader || this.$element.children(".video-loader")).remove(), this.$loader = null, this
9392        }
9393    }),
9394    ElementYoutube = ("undefined" != typeof ElementYoutube ? ElementYoutube : ElementVideo).extend({}),
9395    ElementFormContainer = ("undefined" != typeof ElementFormContainer ? ElementFormContainer : ElementBase).extend({
9396        $form: null,
9397        ajax: !0,
9398        time: null,
9399        wakeup: function() { return this.time = new Date, this.$form = this.getViewport().jQuery("> form", this.$element[0]), this.$form.on("submit", function(event) { this.ajax && (event.preventDefault(), this.submit()) }.bind(this)), this },
9400        submit: function() {
9401            var formaction = this.$form.attr('action');
9402            if ("undefined" != typeof cms && cms) return !1;
9403            if (!this.ajax) return this.$form.submit(), this;
9404            var data = this.$form.serialize();
9405            return "undefined" != typeof webcard && "culture" in webcard && webcard.culture && (data += "&culture=" + webcard.culture), data += "&id=" + this.getId(), data += "&tac=" + Math.floor(((new Date).getTime() - this.time.getTime()) / 1e3), $.post(formaction, data, function(response) {
9406                this.$element.find(".ed-element").each(function() { this.element.destroy() }), this.$element.html(response), this.wakeup();
9407                var $children = this.$element.find(".ed-element"),
9408                    elements = [];
9409                $children.each(function(key, element) {
9410                    var elementType = $(element).attr("class").replace("ed-element", "");
9411                    elementType = elementType.match(/ed-(?!stranger|reference-)([a-z\-]+)/)[1], elementType = "Element" + elementType.replace(/^([a-z])|\-([a-z])/g, function(match, first, second) { return (first || second).toUpperCase() }), elementType in window && elements.push(new window[elementType](element))
9412                }.bind(this)), animations.initSubsequent(elements)
9413            }.bind(this), "text"), this
9414        },
9415        setAjax: function(ajax) { return this.ajax = ajax, this }
9416    }),
9417    ElementFormButton = ("undefined" != typeof ElementFormButton ? ElementFormButton : ElementBase).extend({ $button: null, wakeup: function() { return this.$button = this.getViewport().jQuery("button", this.$element[0]), this } }),
9418    ElementFormCaptcha = ("undefined" != typeof ElementFormCaptcha ? ElementFormCaptcha : ElementBase).extend({ $image: null, $input: null, $label: null, $regenerate: null, withToken: !1, wakeup: function() { return this.$image = this.getViewport().jQuery("img", this.$element[0]), this.$input = this.getViewport().jQuery("input", this.$element[0]), this.$label = this.getViewport().jQuery("> label", this.$element[0]), this.$regenerate = this.getViewport().jQuery("a.regenerate", this.$element[0]), this.$element.on("click", "a.regenerate", function(event) { event.preventDefault(), this.regenerate() }.bind(this)), this.regenerate(), this }, regenerate: function() { return $.post("/form_container/captcha", { id: this.getId(), _token: $('meta[name="csrf-token"]').attr('content'), color: this.$input.attr("data-color"), background: this.$input.attr("data-background"), opacity: this.$input.attr("data-opacity") }, function(data) { /*this.$image.attr("src", "data:image/png;base64," + data)*/ }.bind(this), "text"), this } }),
9419    ElementFormCheckbox = ("undefined" != typeof ElementFormCheckbox ? ElementFormCheckbox : ElementBase).extend({ $list: null, $label: null, wakeup: function() { return this.$list = this.getViewport().jQuery("> ul.checkbox_list", this.$element[0]), this.$label = this.getViewport().jQuery("> label", this.$element[0]), this } }),
9420    ElementFormInput = ("undefined" != typeof ElementFormInput ? ElementFormInput : ElementBase).extend({ $input: null, $label: null, wakeup: function() { return this.$input = this.getViewport().jQuery("input", this.$element[0]), this.$label = this.getViewport().jQuery("label", this.$element[0]), this } }),
9421    ElementFormEmail = ("undefined" != typeof ElementFormEmail ? ElementFormEmail : ElementBase).extend({ $input: null, $label: null, wakeup: function() { return this.$input = this.getViewport().jQuery("input", this.$element[0]), this.$label = this.getViewport().jQuery("label", this.$element[0]), this } }),
9422    ElementFormNumber = ("undefined" != typeof ElementFormNumber ? ElementFormNumber : ElementBase).extend({ $input: null, $label: null, wakeup: function() { return this.$input = this.getViewport().jQuery("input", this.$element[0]), this.$label = this.getViewport().jQuery("label", this.$element[0]), this } }),
9423    ElementFormPhone = ("undefined" != typeof ElementFormPhone ? ElementFormPhone : ElementBase).extend({ $input: null, $label: null, wakeup: function() { return this.$input = this.getViewport().jQuery("input", this.$element[0]), this.$label = this.getViewport().jQuery("label", this.$element[0]), this } }),
9424    ElementFormDate = ("undefined" != typeof ElementFormDate ? ElementFormDate : ElementBase).extend({
9425        $input: null,
9426        $hidden: null,
9427        $label: null,
9428        configuration: {},
9429        wakeup: function() {
9430            if ($('input[type="hidden"], div.xdsoft_datetimepicker', this.$element[0]).remove(), this.$input = this.getViewport().jQuery("input", this.$element[0]), this.$label = this.getViewport().jQuery("label", this.$element[0]), this.$hidden = $('<input type="hidden" />').attr("name", this.$input.attr("name")).insertAfter(this.$input), this.$input.removeAttr("name"), this.$input.val()) {
9431                var type = this.$input.attr("data-type") ? this.$input.attr("data-type") : "date",
9432                    format = "time" == type ? "HH:mm" : "YYYY-MM-DD" + ("datetime" == type ? " HH:mm" : ""),
9433                    previous = moment(this.$input.val(), format);
9434                previous && previous.isValid() && this.$hidden.val(previous.format(format)), this.$input.val("")
9435            }
9436            return this.updateDatepicker(), this
9437        },
9438        setConfiguration: function(configuration) { return this.configuration = configuration, this.update(), this },
9439        getConfiguration: function() { return this.configuration },
9440        update: function() { return this.updateDatepicker(), this },
9441        updateDatepicker: function() {
9442            this.$input.data("xdsoft_datetimepicker") && this.$input.datetimepicker("destroy"), $.datetimepicker.setLocale(moment.locale()), $.datetimepicker.setDateFormatter({ parseDate: function(date, format) { var d = moment(date, format); return !!d.isValid() && d.toDate() }, formatDate: function(date, format) { return moment(date).format(format) } }), this.$element[this.$input.data("embed") ? "addClass" : "removeClass"]("embedded"), this.$input.data("embed") || this.$input.css("display", "");
9443            var minDate = !1,
9444                maxDate = !1,
9445                min = this.$input.attr("data-min-date"),
9446                max = this.$input.attr("data-max-date");
9447            if (min) {
9448                var match = min.match(/([0-9-]+) (days|weeks|months|years)/);
9449                minDate = match ? moment().add(match[1], match[2]).format("YYYY-MM-DD") : moment(min).format("YYYY-MM-DD")
9450            }
9451            if (max) {
9452                var match = max.match(/([0-9-]+) (days|weeks|months|years)/);
9453                maxDate = match ? moment().add(match[1], match[2]).format("YYYY-MM-DD") : moment(max).format("YYYY-MM-DD")
9454            }
9455            var minTime = this.$input.attr("data-min-time") || !1,
9456                maxTime = this.$input.attr("data-max-time") || !1;
9457            maxTime && (maxTime = moment(maxTime, "HH:mm").add(1, "minute").format("HH:mm"));
9458            var disabledWeekdays = [];
9459            enabledWeekdays = (this.$input.attr("data-weekdays") || "").split(",");
9460            for (var i = 0; i < 7; i++) enabledWeekdays.indexOf(i + "") === -1 && disabledWeekdays.push(i);
9461            var outputFormat = this.$input.attr("data-format") ? this.$input.attr("data-format") : "L",
9462                type = this.$input.attr("data-type") ? this.$input.attr("data-type") : "date";
9463            "datetime" == type ? outputFormat += " - HH:mm" : "time" == type && (outputFormat = "HH:mm");
9464            var updateHiddenInput = function(date) {
9465                    if (!date) return void this.$hidden.val("");
9466                    var format = "time" == type ? "HH:mm" : "YYYY-MM-DD" + ("datetime" == type ? " HH:mm" : "");
9467                    this.$hidden.val(moment(date).format(format))
9468                }.bind(this),
9469                currentValue = !1;
9470            if (this.$hidden.val()) {
9471                var format = "time" == type ? "HH:mm" : "YYYY-MM-DD" + ("datetime" == type ? " HH:mm" : ""),
9472                    date = moment(this.$hidden.val(), format);
9473                currentValue = date.format(outputFormat)
9474            }
9475            return this.$input.datetimepicker(_.merge({ dayOfWeekStart: moment().startOf("week").isoWeekday(), inline: !!this.$input.data("embed"), weeks: !!this.$input.data("weeks"), minDate: minDate, maxDate: maxDate, minTime: minTime, maxTime: maxTime, value: currentValue, format: outputFormat, formatTime: "HH:mm", formatDate: "YYYY-MM-DD", datepicker: "time" != type, timepicker: "date" != type, defaultSelect: !1, allowBlank: !0, hours12: !1, step: parseInt(this.$input.attr("data-step") || 60), defaultDate: !1, defaultTime: !1, disabledWeekDays: disabledWeekdays, yearStart: 10 * Math.floor(((new Date).getFullYear() - 100) / 10), yearEnd: 10 * Math.ceil(((new Date).getFullYear() + 50) / 10), onSelectDate: updateHiddenInput, onSelectTime: updateHiddenInput, scrollMonth: !1, scrollTime: !1, scrollInput: !1 }, this.getConfiguration())), currentValue || this.$input.datetimepicker("reset"), this
9476        }
9477    }),
9478    ElementFormRadio = ("undefined" != typeof ElementFormRadio ? ElementFormRadio : ElementBase).extend({ $list: null, $label: null, wakeup: function() { return this.$list = this.getViewport().jQuery("> ul.radio_list", this.$element[0]), this.$label = this.getViewport().jQuery("> label", this.$element[0]), this } }),
9479    ElementFormSelect = ("undefined" != typeof ElementFormSelect ? ElementFormSelect : ElementBase).extend({ $select: null, $label: null, wakeup: function() { return this.$select = this.getViewport().jQuery("select", this.$element[0]), this.$label = this.getViewport().jQuery("label", this.$element[0]), this } }),
9480    ElementFormTextarea = ("undefined" != typeof ElementFormTextarea ? ElementFormTextarea : ElementBase).extend({ $textarea: null, $label: null, wakeup: function() { return this.$textarea = this.getViewport().jQuery("textarea", this.$element[0]), this.$label = this.getViewport().jQuery("label", this.$element[0]), this } });
9481window.parent && window.parent !== window && (window.onerror = function(msg, url, line) { return window.parent.onerror(msg, url, line) });
9482var viewport, page, animations;
9483jQuery(function() {
9484    "undefined" != typeof editor && editor && editor.notify("init.before"), moment.locale("undefined" != typeof webcard ? webcard.culture || "de" : "de"), viewport = new Viewport;
9485    var elements = [];
9486    $(".ed-element").each(function(key, element) {
9487        if (!("element" in element && element.element)) {
9488            var elementType = $(element).attr("class").replace("ed-element", "");
9489            if (elementType = (elementType.match(/ed-(?!stranger|reference-)([a-z\-]+)/) || [null, null])[1], !elementType) return void console.warn("Couldn't find matching type for element: ", element);
9490            elementType = "Element" + elementType.replace(/^([a-z])|\-([a-z])/g, function(match, first, second) { return (first || second).toUpperCase() }), elementType in window && elements.push("undefined" != typeof editor && editor ? new window[elementType](editor, element) : new window[elementType](element))
9491        }
9492    }.bind(this)), animations = new Animations(elements), "undefined" != typeof editor && editor && editor.notify("init.after")
9493});
9494/*! Magnific Popup - v1.1.0 - 2016-02-20
9495 * http://dimsemenov.com/plugins/magnific-popup/
9496 * Copyright (c) 2016 Dmitry Semenov; */
9497! function(a) { "function" == typeof define && define.amd ? define(["jquery"], a) : a("object" == typeof exports ? require("jquery") : window.jQuery || window.Zepto) }(function(a) {
9498    var b, c, d, e, f, g, h = "Close",
9499        i = "BeforeClose",
9500        j = "AfterClose",
9501        k = "BeforeAppend",
9502        l = "MarkupParse",
9503        m = "Open",
9504        n = "Change",
9505        o = "mfp",
9506        p = "." + o,
9507        q = "mfp-ready",
9508        r = "mfp-removing",
9509        s = "mfp-prevent-close",
9510        t = function() {},
9511        u = !!window.jQuery,
9512        v = a(window),
9513        w = function(a, c) { b.ev.on(o + a + p, c) },
9514        x = function(b, c, d, e) { var f = document.createElement("div"); return f.className = "mfp-" + b, d && (f.innerHTML = d), e ? c && c.appendChild(f) : (f = a(f), c && f.appendTo(c)), f },
9515        y = function(c, d) { b.ev.triggerHandler(o + c, d), b.st.callbacks && (c = c.charAt(0).toLowerCase() + c.slice(1), b.st.callbacks[c] && b.st.callbacks[c].apply(b, a.isArray(d) ? d : [d])) },
9516        z = function(c) { return c === g && b.currTemplate.closeBtn || (b.currTemplate.closeBtn = a(b.st.closeMarkup.replace("%title%", b.st.tClose)), g = c), b.currTemplate.closeBtn },
9517        A = function() { a.magnificPopup.instance || (b = new t, b.init(), a.magnificPopup.instance = b) },
9518        B = function() {
9519            var a = document.createElement("p").style,
9520                b = ["ms", "O", "Moz", "Webkit"];
9521            if (void 0 !== a.transition) return !0;
9522            for (; b.length;)
9523                if (b.pop() + "Transition" in a) return !0;
9524            return !1
9525        };
9526    t.prototype = {
9527        constructor: t,
9528        init: function() {
9529            var c = navigator.appVersion;
9530            b.isLowIE = b.isIE8 = document.all && !document.addEventListener, b.isAndroid = /android/gi.test(c), b.isIOS = /iphone|ipad|ipod/gi.test(c), b.supportsTransition = B(), b.probablyMobile = b.isAndroid || b.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent), d = a(document), b.popupsCache = {}
9531        },
9532        open: function(c) {
9533            var e;
9534            if (c.isObj === !1) {
9535                b.items = c.items.toArray(), b.index = 0;
9536                var g, h = c.items;
9537                for (e = 0; e < h.length; e++)
9538                    if (g = h[e], g.parsed && (g = g.el[0]), g === c.el[0]) { b.index = e; break }
9539            } else b.items = a.isArray(c.items) ? c.items : [c.items], b.index = c.index || 0;
9540            if (b.isOpen) return void b.updateItemHTML();
9541            b.types = [], f = "", c.mainEl && c.mainEl.length ? b.ev = c.mainEl.eq(0) : b.ev = d, c.key ? (b.popupsCache[c.key] || (b.popupsCache[c.key] = {}), b.currTemplate = b.popupsCache[c.key]) : b.currTemplate = {}, b.st = a.extend(!0, {}, a.magnificPopup.defaults, c), b.fixedContentPos = "auto" === b.st.fixedContentPos ? !b.probablyMobile : b.st.fixedContentPos, b.st.modal && (b.st.closeOnContentClick = !1, b.st.closeOnBgClick = !1, b.st.showCloseBtn = !1, b.st.enableEscapeKey = !1), b.bgOverlay || (b.bgOverlay = x("bg").on("click" + p, function() { b.close() }), b.wrap = x("wrap").attr("tabindex", -1).on("click" + p, function(a) { b._checkIfClose(a.target) && b.close() }), b.container = x("container", b.wrap)), b.contentContainer = x("content"), b.st.preloader && (b.preloader = x("preloader", b.container, b.st.tLoading));
9542            var i = a.magnificPopup.modules;
9543            for (e = 0; e < i.length; e++) {
9544                var j = i[e];
9545                j = j.charAt(0).toUpperCase() + j.slice(1), b["init" + j].call(b)
9546            }
9547            y("BeforeOpen"), b.st.showCloseBtn && (b.st.closeBtnInside ? (w(l, function(a, b, c, d) { c.close_replaceWith = z(d.type) }), f += " mfp-close-btn-in") : b.wrap.append(z())), b.st.alignTop && (f += " mfp-align-top"), b.fixedContentPos ? b.wrap.css({ overflow: b.st.overflowY, overflowX: "hidden", overflowY: b.st.overflowY }) : b.wrap.css({ top: v.scrollTop(), position: "absolute" }), (b.st.fixedBgPos === !1 || "auto" === b.st.fixedBgPos && !b.fixedContentPos) && b.bgOverlay.css({ height: d.height(), position: "absolute" }), b.st.enableEscapeKey && d.on("keyup" + p, function(a) { 27 === a.keyCode && b.close() }), v.on("resize" + p, function() { b.updateSize() }), b.st.closeOnContentClick || (f += " mfp-auto-cursor"), f && b.wrap.addClass(f);
9548            var k = b.wH = v.height(),
9549                n = {};
9550            if (b.fixedContentPos && b._hasScrollBar(k)) {
9551                var o = b._getScrollbarSize();
9552                o && (n.marginRight = o)
9553            }
9554            b.fixedContentPos && (b.isIE7 ? a("body, html").css("overflow", "hidden") : n.overflow = "hidden");
9555            var r = b.st.mainClass;
9556            return b.isIE7 && (r += " mfp-ie7"), r && b._addClassToMFP(r), b.updateItemHTML(), y("BuildControls"), a("html").css(n), b.bgOverlay.add(b.
9556wrap).prependTo(b.st.prependTo || a(document.body)), b._lastFocusedEl = document.activeElement, setTimeout(function() { b.content ? (b._addClassToMFP(q), b._setFocus()) : b.bgOverlay.addClass(q), d.on("focusin" + p, b._onFocusIn) }, 16), b.isOpen = !0, b.updateSize(k), y(m), c
9557        },
9558        close: function() { b.isOpen && (y(i), b.isOpen = !1, b.st.removalDelay && !b.isLowIE && b.supportsTransition ? (b._addClassToMFP(r), setTimeout(function() { b._close() }, b.st.removalDelay)) : b._close()) },
9559        _close: function() {
9560            y(h);
9561            var c = r + " " + q + " ";
9562            if (b.bgOverlay.detach(), b.wrap.detach(), b.container.empty(), b.st.mainClass && (c += b.st.mainClass + " "), b._removeClassFromMFP(c), b.fixedContentPos) {
9563                var e = { marginRight: "" };
9564                b.isIE7 ? a("body, html").css("overflow", "") : e.overflow = "", a("html").css(e)
9565            }
9566            d.off("keyup" + p + " focusin" + p), b.ev.off(p), b.wrap.attr("class", "mfp-wrap").removeAttr("style"), b.bgOverlay.attr("class", "mfp-bg"), b.container.attr("class", "mfp-container"), !b.st.showCloseBtn || b.st.closeBtnInside && b.currTemplate[b.currItem.type] !== !0 || b.currTemplate.closeBtn && b.currTemplate.closeBtn.detach(), b.st.autoFocusLast && b._lastFocusedEl && a(b._lastFocusedEl).focus(), b.currItem = null, b.content = null, b.currTemplate = null, b.prevHeight = 0, y(j)
9567        },
9568        updateSize: function(a) {
9569            if (b.isIOS) {
9570                var c = document.documentElement.clientWidth / window.innerWidth,
9571                    d = window.innerHeight * c;
9572                b.wrap.css("height", d), b.wH = d
9573            } else b.wH = a || v.height();
9574            b.fixedContentPos || b.wrap.css("height", b.wH), y("Resize")
9575        },
9576        updateItemHTML: function() {
9577            var c = b.items[b.index];
9578            b.contentContainer.detach(), b.content && b.content.detach(), c.parsed || (c = b.parseEl(b.index));
9579            var d = c.type;
9580            if (y("BeforeChange", [b.currItem ? b.currItem.type : "", d]), b.currItem = c, !b.currTemplate[d]) {
9581                var f = b.st[d] ? b.st[d].markup : !1;
9582                y("FirstMarkupParse", f), f ? b.currTemplate[d] = a(f) : b.currTemplate[d] = !0
9583            }
9584            e && e !== c.type && b.container.removeClass("mfp-" + e + "-holder");
9585            var g = b["get" + d.charAt(0).toUpperCase() + d.slice(1)](c, b.currTemplate[d]);
9586            b.appendContent(g, d), c.preloaded = !0, y(n, c), e = c.type, b.container.prepend(b.contentContainer), y("AfterChange")
9587        },
9588        appendContent: function(a, c) { b.content = a, a ? b.st.showCloseBtn && b.st.closeBtnInside && b.currTemplate[c] === !0 ? b.content.find(".mfp-close").length || b.content.append(z()) : b.content = a : b.content = "", y(k), b.container.addClass("mfp-" + c + "-holder"), b.contentContainer.append(b.content) },
9589        parseEl: function(c) {
9590            var d, e = b.items[c];
9591            if (e.tagName ? e = { el: a(e) } : (d = e.type, e = { data: e, src: e.src }), e.el) {
9592                for (var f = b.types, g = 0; g < f.length; g++)
9593                    if (e.el.hasClass("mfp-" + f[g])) { d = f[g]; break }
9594                e.src = e.el.attr("data-mfp-src"), e.src || (e.src = e.el.attr("href"))
9595            }
9596            return e.type = d || b.st.type || "inline", e.index = c, e.parsed = !0, b.items[c] = e, y("ElementParse", e), b.items[c]
9597        },
9598        addGroup: function(a, c) {
9599            var d = function(d) { d.mfpEl = this, b._openClick(d, a, c) };
9600            c || (c = {});
9601            var e = "click.magnificPopup";
9602            c.mainEl = a, c.items ? (c.isObj = !0, a.off(e).on(e, d)) : (c.isObj = !1, c.delegate ? a.off(e).on(e, c.delegate, d) : (c.items = a, a.off(e).on(e, d)))
9603        },
9604        _openClick: function(c, d, e) {
9605            var f = void 0 !== e.midClick ? e.midClick : a.magnificPopup.defaults.midClick;
9606            if (f || !(2 === c.which || c.ctrlKey || c.metaKey || c.altKey || c.shiftKey)) {
9607                var g = void 0 !== e.disableOn ? e.disableOn : a.magnificPopup.defaults.disableOn;
9608                if (g)
9609                    if (a.isFunction(g)) { if (!g.call(b)) return !0 } else if (v.width() < g) return !0;
9610                c.type && (c.preventDefault(), b.isOpen && c.stopPropagation()), e.el = a(c.mfpEl), e.delegate && (e.items = d.find(e.delegate)), b.open(e)
9611            }
9612        },
9613        updateStatus: function(a, d) {
9614            if (b.preloader) {
9615                c !== a && b.container.removeClass("mfp-s-" + c), d || "loading" !== a || (d = b.st.tLoading);
9616                var e = { status: a, text: d };
9617                y("UpdateStatus", e), a = e.status, d = e.text, b.preloader.html(d), b.preloader.find("a").on("click", function(a) { a.stopImmediatePropagation() }), b.container.addClass("mfp-s-" + a), c = a
9618            }
9619        },
9620        _checkIfClose: function(c) {
9621            if (!a(c).hasClass(s)) {
9622                var d = b.st.closeOnContentClick,
9623                    e = b.st.closeOnBgClick;
9624                if (d && e) return !0;
9625                if (!b.content || a(c).hasClass("mfp-close") || b.preloader && c === b.preloader[0]) return !0;
9626                if (c === b.content[0] || a.contains(b.content[0], c)) { if (d) return !0 } else if (e && a.contains(document, c)) return !0;
9627                return !1
9628            }
9629        },
9630        _addClassToMFP: function(a) { b.bgOverlay.addClass(a), b.wrap.addClass(a) },
9631        _removeClassFromMFP: function(a) { this.bgOverlay.removeClass(a), b.wrap.removeClass(a) },
9632        _hasScrollBar: function(a) { return (b.isIE7 ? d.height() : document.body.scrollHeight) > (a || v.height()) },
9633        _setFocus: function() {
9634            (b.st.focus ? b.content.find(b.st.focus).eq(0) : b.wrap).focus()
9635        },
9636        _onFocusIn: function(c) { return c.target === b.wrap[0] || a.contains(b.wrap[0], c.target) ? void 0 : (b._setFocus(), !1) },
9637        _parseMarkup: function(b, c, d) {
9638            var e;
9639            d.data && (c = a.extend(d.data, c)), y(l, [b, c, d]), a.each(c, function(c, d) { if (void 0 === d || d === !1) return !0; if (e = c.split("_"), e.length > 1) { var f = b.find(p + "-" + e[0]); if (f.length > 0) { var g = e[1]; "replaceWith" === g ? f[0] !== d[0] && f.replaceWith(d) : "img" === g ? f.is("img") ? f.attr("src", d) : f.replaceWith(a("<img>").attr("src", d).attr("class", f.attr("class"))) : f.attr(e[1], d) } } else b.find(p + "-" + c).html(d) })
9640        },
9641        _getScrollbarSize: function() {
9642            if (void 0 === b.scrollbarSize) {
9643                var a = document.createElement("div");
9644                a.style.cssText = "width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;", document.body.appendChild(a), b.scrollbarSize = a.offsetWidth - a.clientWidth, document.body.removeChild(a)
9645            }
9646            return b.scrollbarSize
9647        }
9648    }, a.magnificPopup = { instance: null, proto: t.prototype, modules: [], open: function(b, c) { return A(), b = b ? a.extend(!0, {}, b) : {}, b.isObj = !0, b.index = c || 0, this.instance.open(b) }, close: function() { return a.magnificPopup.instance && a.magnificPopup.instance.close() }, registerModule: function(b, c) { c.options && (a.magnificPopup.defaults[b] = c.options), a.extend(this.proto, c.proto), this.modules.push(b) }, defaults: { disableOn: 0, key: null, midClick: !1, mainClass: "", preloader: !0, focus: "", closeOnContentClick: !1, closeOnBgClick: !0, closeBtnInside: !0, showCloseBtn: !0, enableEscapeKey: !0, modal: !1, alignTop: !1, removalDelay: 0, prependTo: null, fixedContentPos: "auto", fixedBgPos: "auto", overflowY: "auto", closeMarkup: '<button title="%title%" type="button" class="mfp-close">&#215;</button>', tClose: "Close (Esc)", tLoading: "Loading...", autoFocusLast: !0 } }, a.fn.magnificPopup = function(c) {
9649        A();
9650        var d = a(this);
9651        if ("string" == typeof c)
9652            if ("open" === c) {
9653                var e, f = u ? d.data("magnificPopup") : d[0].magnificPopup,
9654                    g = parseInt(arguments[1], 10) || 0;
9655                f.items ? e = f.items[g] : (e = d, f.delegate && (e = e.find(f.delegate)), e = e.eq(g)), b._openClick({ mfpEl: e }, d, f)
9656            } else b.isOpen && b[c].apply(b, Array.prototype.slice.call(arguments, 1));
9657        else c = a.extend(!0, {}, c), u ? d.data("magnificPopup", c) : d[0].magnificPopup = c, b.addGroup(d, c);
9658        return d
9659    };
9660    var C, D, E, F = "inline",
9661        G = function() { E && (D.after(E.addClass(C)).detach(), E = null) };
9662    a.magnificPopup.registerModule(F, {
9663        options: { hiddenClass: "hide", markup: "", tNotFound: "Content not found" },
9664        proto: {
9665            initInline: function() { b.types.push(F), w(h + "." + F, function() { G() }) },
9666            getInline: function(c, d) {
9667                if (G(), c.src) {
9668                    var e = b.st.inline,
9669                        f = a(c.src);
9670                    if (f.length) {
9671                        var g = f[0].parentNode;
9672                        g && g.tagName && (D || (C = e.hiddenClass, D = x(C), C = "mfp-" + C), E = f.after(D).detach().removeClass(C)), b.updateStatus("ready")
9673                    } else b.updateStatus("error", e.tNotFound), f = a("<div>");
9674                    return c.inlineElement = f, f
9675                }
9676                return b.updateStatus("ready"), b._parseMarkup(d, {}, c), d
9677            }
9678        }
9679    });
9680    var H, I = "ajax",
9681        J = function() { H && a(document.body).removeClass(H) },
9682        K = function() { J(), b.req && b.req.abort() };
9683    a.magnificPopup.registerModule(I, {
9684        options: { settings: null, cursor: "mfp-ajax-cur", tError: '<a href="%url%">The content</a> could not be loaded.' },
9685        proto: {
9686            initAjax: function() { b.types.push(I), H = b.st.ajax.cursor, w(h + "." + I, K), w("BeforeChange." + I, K) },
9687            getAjax: function(c) {
9688                H && a(document.body).addClass(H), b.updateStatus("loading");
9689                var d = a.extend({
9690                    url: c.src,
9691                    success: function(d, e, f) {
9692                        var g = { data: d, xhr: f };
9693                        y("ParseAjax", g), b.appendContent(a(g.data), I), c.finished = !0, J(), b._setFocus(), setTimeout(function() { b.wrap.addClass(q) }, 16), b.updateStatus("ready"), y("AjaxContentAdded")
9694                    },
9695                    error: function() { J(), c.finished = c.loadError = !0, b.updateStatus("error", b.st.ajax.tError.replace("%url%", c.src)) }
9696                }, b.st.ajax.settings);
9697                return b.req = a.ajax(d), ""
9698            }
9699        }
9700    });
9701    var L, M = function(c) { if (c.data && void 0 !== c.data.title) return c.data.title; var d = b.st.image.titleSrc; if (d) { if (a.isFunction(d)) return d.call(b, c); if (c.el) return c.el.attr(d) || "" } return "" };
9702    a.magnificPopup.registerModule("image", {
9703        options: { markup: '<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>', cursor: "mfp-zoom-out-cur", titleSrc: "title", verticalFit: !0, tError: '<a href="%url%">The image</a> could not be loaded.' },
9704        proto: {
9705            initImage: function() {
9706                var c = b.st.image,
9707                    d = ".image";
9708                b.types.push("image"), w(m + d, function() { "image" === b.currItem.type && c.cursor && a(document.body).addClass(c.cursor) }), w(h + d, function() { c.cursor && a(document.body).removeClass(c.cursor), v.off("resize" + p) }), w("Resize" + d, b.resizeImage), b.isLowIE && w("AfterChange", b.resizeImage)
9709            },
9710            resizeImage: function() {
9711                var a = b.currItem;
9712                if (a && a.img && b.st.image.verticalFit) {
9713                    var c = 0;
9714                    b.isLowIE && (c = parseInt(a.img.css("padding-top"), 10) + parseInt(a.img.css("padding-bottom"), 10)), a.img.css("max-height", b.wH - c)
9715                }
9716            },
9717            _onImageHasSize: function(a) { a.img && (a.hasSize = !0, L && clearInterval(L), a.isCheckingImgSize = !1, y("ImageHasSize", a), a.imgHidden && (b.content && b.content.removeClass("mfp-loading"), a.imgHidden = !1)) },
9718            findImageSize: function(a) {
9719                var c = 0,
9720                    d = a.img[0],
9721                    e = function(f) { L && clearInterval(L), L = setInterval(function() { return d.naturalWidth > 0 ? void b._onImageHasSize(a) : (c > 200 && clearInterval(L), c++, void(3 === c ? e(10) : 40 === c ? e(50) : 100 === c && e(500))) }, f) };
9722                e(1)
9723            },
9724            getImage: function(c, d) {
9725                var e = 0,
9726                    f = function() { c && (c.img[0].complete ? (c.img.off(".mfploader"), c === b.currItem && (b._onImageHasSize(c), b.updateStatus("ready")), c.hasSize = !0, c.loaded = !0, y("ImageLoadComplete")) : (e++, 200 > e ? setTimeout(f, 100) : g())) },
9727                    g = function() { c && (c.img.off(".mfploader"), c === b.currItem && (b._onImageHasSize(c), b.updateStatus("error", h.tError.replace("%url%", c.src))), c.hasSize = !0, c.loaded = !0, c.loadError = !0) },
9728                    h = b.st.image,
9729                    i = d.find(".mfp-img");
9730                if (i.length) {
9731                    var j = document.createElement("img");
9732                    j.className = "mfp-img", c.el && c.el.find("img").length && (j.alt = c.el.find("img").attr("alt")), c.img = a(j).on("load.mfploader", f).on("error.mfploader", g), j.src = c.src, i.is("img") && (c.img = c.img.clone()), j = c.img[0], j.naturalWi
9732dth > 0 ? c.hasSize = !0 : j.width || (c.hasSize = !1)
9733                }
9734                return b._parseMarkup(d, { title: M(c), img_replaceWith: c.img }, c), b.resizeImage(), c.hasSize ? (L && clearInterval(L), c.loadError ? (d.addClass("mfp-loading"), b.updateStatus("error", h.tError.replace("%url%", c.src))) : (d.removeClass("mfp-loading"), b.updateStatus("ready")), d) : (b.updateStatus("loading"), c.loading = !0, c.hasSize || (c.imgHidden = !0, d.addClass("mfp-loading"), b.findImageSize(c)), d)
9735            }
9736        }
9737    });
9738    var N, O = function() { return void 0 === N && (N = void 0 !== document.createElement("p").style.MozTransform), N };
9739    a.magnificPopup.registerModule("zoom", {
9740        options: { enabled: !1, easing: "ease-in-out", duration: 300, opener: function(a) { return a.is("img") ? a : a.find("img") } },
9741        proto: {
9742            initZoom: function() {
9743                var a, c = b.st.zoom,
9744                    d = ".zoom";
9745                if (c.enabled && b.supportsTransition) {
9746                    var e, f, g = c.duration,
9747                        j = function(a) {
9748                            var b = a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),
9749                                d = "all " + c.duration / 1e3 + "s " + c.easing,
9750                                e = { position: "fixed", zIndex: 9999, left: 0, top: 0, "-webkit-backface-visibility": "hidden" },
9751                                f = "transition";
9752                            return e["-webkit-" + f] = e["-moz-" + f] = e["-o-" + f] = e[f] = d, b.css(e), b
9753                        },
9754                        k = function() { b.content.css("visibility", "visible") };
9755                    w("BuildControls" + d, function() {
9756                        if (b._allowZoom()) {
9757                            if (clearTimeout(e), b.content.css("visibility", "hidden"), a = b._getItemToZoom(), !a) return void k();
9758                            f = j(a), f.css(b._getOffset()), b.wrap.append(f), e = setTimeout(function() { f.css(b._getOffset(!0)), e = setTimeout(function() { k(), setTimeout(function() { f.remove(), a = f = null, y("ZoomAnimationEnded") }, 16) }, g) }, 16)
9759                        }
9760                    }), w(i + d, function() {
9761                        if (b._allowZoom()) {
9762                            if (clearTimeout(e), b.st.removalDelay = g, !a) {
9763                                if (a = b._getItemToZoom(), !a) return;
9764                                f = j(a)
9765                            }
9766                            f.css(b._getOffset(!0)), b.wrap.append(f), b.content.css("visibility", "hidden"), setTimeout(function() { f.css(b._getOffset()) }, 16)
9767                        }
9768                    }), w(h + d, function() { b._allowZoom() && (k(), f && f.remove(), a = null) })
9769                }
9770            },
9771            _allowZoom: function() { return "image" === b.currItem.type },
9772            _getItemToZoom: function() { return b.currItem.hasSize ? b.currItem.img : !1 },
9773            _getOffset: function(c) {
9774                var d;
9775                d = c ? b.currItem.img : b.st.zoom.opener(b.currItem.el || b.currItem);
9776                var e = d.offset(),
9777                    f = parseInt(d.css("padding-top"), 10),
9778                    g = parseInt(d.css("padding-bottom"), 10);
9779                e.top -= a(window).scrollTop() - f;
9780                var h = { width: d.width(), height: (u ? d.innerHeight() : d[0].offsetHeight) - g - f };
9781                return O() ? h["-moz-transform"] = h.transform = "translate(" + e.left + "px," + e.top + "px)" : (h.left = e.left, h.top = e.top), h
9782            }
9783        }
9784    });
9785    var P = "iframe",
9786        Q = "//about:blank",
9787        R = function(a) {
9788            if (b.currTemplate[P]) {
9789                var c = b.currTemplate[P].find("iframe");
9790                c.length && (a || (c[0].src = Q), b.isIE8 && c.css("display", a ? "block" : "none"))
9791            }
9792        };
9793    a.magnificPopup.registerModule(P, {
9794        options: { markup: '<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>', srcAction: "iframe_src", patterns: { youtube: { index: "youtube.com", id: "v=", src: "//www.youtube.com/embed/%id%?autoplay=1" }, vimeo: { index: "vimeo.com/", id: "/", src: "//player.vimeo.com/video/%id%?autoplay=1" }, gmaps: { index: "//maps.google.", src: "%id%&output=embed" } } },
9795        proto: {
9796            initIframe: function() { b.types.push(P), w("BeforeChange", function(a, b, c) { b !== c && (b === P ? R() : c === P && R(!0)) }), w(h + "." + P, function() { R() }) },
9797            getIframe: function(c, d) {
9798                var e = c.src,
9799                    f = b.st.iframe;
9800                a.each(f.patterns, function() { return e.indexOf(this.index) > -1 ? (this.id && (e = "string" == typeof this.id ? e.substr(e.lastIndexOf(this.id
9800) + this.id.length, e.length) : this.id.call(this, e)), e = this.src.replace("%id%", e), !1) : void 0 });
9801                var g = {};
9802                return f.srcAction && (g[f.srcAction] = e), b._parseMarkup(d, g, c), b.updateStatus("ready"), d
9803            }
9804        }
9805    });
9806    var S = function(a) { var c = b.items.length; return a > c - 1 ? a - c : 0 > a ? c + a : a },
9807        T = function(a, b, c) { return a.replace(/%curr%/gi, b + 1).replace(/%total%/gi, c) };
9808    a.magnificPopup.registerModule("gallery", {
9809        options: { enabled: !1, arrowMarkup: '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>', preload: [0, 2], navigateByImgClick: !0, arrows: !0, tPrev: "Previous (Left arrow key)", tNext: "Next (Right arrow key)", tCounter: "%curr% of %total%" },
9810        proto: {
9811            initGallery: function() {
9812                var c = b.st.gallery,
9813                    e = ".mfp-gallery";
9814                return b.direction = !0, c && c.enabled ? (f += " mfp-gallery", w(m + e, function() { c.navigateByImgClick && b.wrap.on("click" + e, ".mfp-img", function() { return b.items.length > 1 ? (b.next(), !1) : void 0 }), d.on("keydown" + e, function(a) { 37 === a.keyCode ? b.prev() : 39 === a.keyCode && b.next() }) }), w("UpdateStatus" + e, function(a, c) { c.text && (c.text = T(c.text, b.currItem.index, b.items.length)) }), w(l + e, function(a, d, e, f) {
9815                    var g = b.items.length;
9816                    e.counter = g > 1 ? T(c.tCounter, f.index, g) : ""
9817                }), w("BuildControls" + e, function() {
9818                    if (b.items.length > 1 && c.arrows && !b.arrowLeft) {
9819                        var d = c.arrowMarkup,
9820                            e = b.arrowLeft = a(d.replace(/%title%/gi, c.tPrev).replace(/%dir%/gi, "left")).addClass(s),
9821                            f = b.arrowRight = a(d.replace(/%title%/gi, c.tNext).replace(/%dir%/gi, "right")).addClass(s);
9822                        e.click(function() { b.prev() }), f.click(function() { b.next() }), b.container.append(e.add(f))
9823                    }
9824                }), w(n + e, function() { b._preloadTimeout && clearTimeout(b._preloadTimeout), b._preloadTimeout = setTimeout(function() { b.preloadNearbyImages(), b._preloadTimeout = null }, 16) }), void w(h + e, function() { d.off(e), b.wrap.off("click" + e), b.arrowRight = b.arrowLeft = null })) : !1
9825            },
9826            next: function() { b.direction = !0, b.index = S(b.index + 1), b.updateItemHTML() },
9827            prev: function() { b.direction = !1, b.index = S(b.index - 1), b.updateItemHTML() },
9828            goTo: function(a) { b.direction = a >= b.index, b.index = a, b.updateItemHTML() },
9829            preloadNearbyImages: function() {
9830                var a, c = b.st.gallery.preload,
9831                    d = Math.min(c[0], b.items.length),
9832                    e = Math.min(c[1], b.items.length);
9833                for (a = 1; a <= (b.direction ? e : d); a++) b._preloadItem(b.index + a);
9834                for (a = 1; a <= (b.direction ? d : e); a++) b._preloadItem(b.index - a)
9835            },
9836            _preloadItem: function(c) {
9837                if (c = S(c), !b.items[c].preloaded) {
9838                    var d = b.items[c];
9839                    d.parsed || (d = b.parseEl(c)), y("LazyLoad", d), "image" === d.type && (d.img = a('<img class="mfp-img" />').on("load.mfploader", function() { d.hasSize = !0 }).on("error.mfploader", function() { d.hasSize = !0, d.loadError = !0, y("LazyLoadError", d) }).attr("src", d.src)), d.preloaded = !0
9840                }
9841            }
9842        }
9843    });
9844    var U = "retina";
9845    a.magnificPopup.registerModule(U, {
9846        options: { replaceSrc: function(a) { return a.src.replace(/\.\w+$/, function(a) { return "@2x" + a }) }, ratio: 1 },
9847        proto: {
9848            initRetina: function() {
9849                if (window.devicePixelRatio > 1) {
9850                    var a = b.st.retina,
9851                        c = a.ratio;
9852                    c = isNaN(c) ? c() : c, c > 1 && (w("ImageHasSize." + U, function(a, b) { b.img.css({ "max-width": b.img[0].naturalWi
9852dth / c, width: "100%" }) }), w("ElementParse." + U, function(b, d) { d.src = a.replaceSrc(d, c) }))
9853                }
9854            }
9855        }
9856    }), A()
9857});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.