! function(e, t) {
    "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : e.moment = t()
}(this, function() {
    "use strict";

    function e() {
        return Yt.apply(null, arguments)
    }

    function t(e) {
        return e instanceof Array || "[object Array]" === Object.prototype.toString.call(e)
    }

    function n(e) {
        return null != e && "[object Object]" === Object.prototype.toString.call(e)
    }

    function s(e) {
        if (Object.getOwnPropertyNames) return 0 === Object.getOwnPropertyNames(e).length;
        var t;
        for (t in e)
            if (e.hasOwnProperty(t)) return !1;
        return !0
    }

    function i(e) {
        return void 0 === e
    }

    function r(e) {
        return "number" == typeof e || "[object Number]" === Object.prototype.toString.call(e)
    }

    function a(e) {
        return e instanceof Date || "[object Date]" === Object.prototype.toString.call(e)
    }

    function o(e, t) {
        var n, s = [];
        for (n = 0; n < e.length; ++n) s.push(t(e[n], n));
        return s
    }

    function u(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
    }

    function l(e, t) {
        for (var n in t) u(t, n) && (e[n] = t[n]);
        return u(t, "toString") && (e.toString = t.toString), u(t, "valueOf") && (e.valueOf = t.valueOf), e
    }

    function d(e, t, n, s) {
        return je(e, t, n, s, !0).utc()
    }

    function h() {
        return {
            empty: !1,
            unusedTokens: [],
            unusedInput: [],
            overflow: -2,
            charsLeftOver: 0,
            nullInput: !1,
            invalidMonth: null,
            invalidFormat: !1,
            userInvalidated: !1,
            iso: !1,
            parsedDateParts: [],
            meridiem: null,
            rfc2822: !1,
            weekdayMismatch: !1
        }
    }

    function c(e) {
        return null == e._pf && (e._pf = h()), e._pf
    }

    function f(e) {
        if (null == e._isValid) {
            var t = c(e),
                n = Ot.call(t.parsedDateParts, function(e) {
                    return null != e
                }),
                s = !isNaN(e._d.getTime()) && t.overflow < 0 && !t.empty && !t.invalidMonth && !t.invalidWeekday && !t.weekdayMismatch && !t.nullInput && !t.invalidFormat && !t.userInvalidated && (!t.meridiem || t.meridiem && n);
            if (e._strict && (s = s && 0 === t.charsLeftOver && 0 === t.unusedTokens.length && void 0 === t.bigHour), null != Object.isFrozen && Object.isFrozen(e)) return s;
            e._isValid = s
        }
        return e._isValid
    }

    function m(e) {
        var t = d(NaN);
        return null != e ? l(c(t), e) : c(t).userInvalidated = !0, t
    }

    function _(e, t) {
        var n, s, r;
        if (i(t._isAMomentObject) || (e._isAMomentObject = t._isAMomentObject), i(t._i) || (e._i = t._i), i(t._f) || (e._f = t._f), i(t._l) || (e._l = t._l), i(t._strict) || (e._strict = t._strict), i(t._tzm) || (e._tzm = t._tzm), i(t._isUTC) || (e._isUTC = t._isUTC), i(t._offset) || (e._offset = t._offset), i(t._pf) || (e._pf = c(t)), i(t._locale) || (e._locale = t._locale), xt.length > 0)
            for (n = 0; n < xt.length; n++) i(r = t[s = xt[n]]) || (e[s] = r);
        return e
    }

    function y(t) {
        _(this, t), this._d = new Date(null != t._d ? t._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), !1 === Tt && (Tt = !0, e.updateOffset(this), Tt = !1)
    }

    function g(e) {
        return e instanceof y || null != e && null != e._isAMomentObject
    }

    function p(e) {
        return e < 0 ? Math.ceil(e) || 0 : Math.floor(e)
    }

    function w(e) {
        var t = +e,
            n = 0;
        return 0 !== t && isFinite(t) && (n = p(t)), n
    }

    function v(e, t, n) {
        var s, i = Math.min(e.length, t.length),
            r = Math.abs(e.length - t.length),
            a = 0;
        for (s = 0; s < i; s++)(n && e[s] !== t[s] || !n && w(e[s]) !== w(t[s])) && a++;
        return a + r
    }

    function M(t) {
        !1 === e.suppressDeprecationWarnings && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + t)
    }

    function k(t, n) {
        var s = !0;
        return l(function() {
            if (null != e.deprecationHandler && e.deprecationHandler(null, t), s) {
                for (var i, r = [], a = 0; a < arguments.length; a++) {
                    if (i = "", "object" == typeof arguments[a]) {
                        i += "\n[" + a + "] ";
                        for (var o in arguments[0]) i += o + ": " + arguments[0][o] + ", ";
                        i = i.slice(0, -2)
                    } else i = arguments[a];
                    r.push(i)
                }
                M(t + "\nArguments: " + Array.prototype.slice.call(r).join("") + "\n" + (new Error).stack), s = !1
            }
            return n.apply(this, arguments)
        }, n)
    }

    function S(t, n) {
        null != e.deprecationHandler && e.deprecationHandler(t, n), bt[t] || (M(n), bt[t] = !0)
    }

    function D(e) {
        return e instanceof Function || "[object Function]" === Object.prototype.toString.call(e)
    }

    function Y(e, t) {
        var s, i = l({}, e);
        for (s in t) u(t, s) && (n(e[s]) && n(t[s]) ? (i[s] = {}, l(i[s], e[s]), l(i[s], t[s])) : null != t[s] ? i[s] = t[s] : delete i[s]);
        for (s in e) u(e, s) && !u(t, s) && n(e[s]) && (i[s] = l({}, i[s]));
        return i
    }

    function O(e) {
        null != e && this.set(e)
    }

    function x(e, t) {
        var n = e.toLowerCase();
        Ut[n] = Ut[n + "s"] = Ut[t] = e
    }

    function T(e) {
        return "string" == typeof e ? Ut[e] || Ut[e.toLowerCase()] : void 0
    }

    function b(e) {
        var t, n, s = {};
        for (n in e) u(e, n) && (t = T(n)) && (s[t] = e[n]);
        return s
    }

    function P(e, t) {
        Nt[e] = t
    }

    function W(e) {
        var t = [];
        for (var n in e) t.push({
            unit: n,
            priority: Nt[n]
        });
        return t.sort(function(e, t) {
            return e.priority - t.priority
        }), t
    }

    function R(e, t, n) {
        var s = "" + Math.abs(e),
            i = t - s.length;
        return (e >= 0 ? n ? "+" : "" : "-") + Math.pow(10, Math.max(0, i)).toString().substr(1) + s
    }

    function C(e, t, n, s) {
        var i = s;
        "string" == typeof s && (i = function() {
            return this[s]()
        }), e && (Vt[e] = i), t && (Vt[t[0]] = function() {
            return R(i.apply(this, arguments), t[1], t[2])
        }), n && (Vt[n] = function() {
            return this.localeData().ordinal(i.apply(this, arguments), e)
        })
    }

    function F(e) {
        return e.match(/\[[\s\S]/) ? e.replace(/^\[|\]$/g, "") : e.replace(/\\/g, "")
    }

    function U(e) {
        var t, n, s = e.match(Ht);
        for (t = 0, n = s.length; t < n; t++) Vt[s[t]] ? s[t] = Vt[s[t]] : s[t] = F(s[t]);
        return function(t) {
            var i, r = "";
            for (i = 0; i < n; i++) r += D(s[i]) ? s[i].call(t, e) : s[i];
            return r
        }
    }

    function N(e, t) {
        return e.isValid() ? (t = H(t, e.localeData()), Gt[t] = Gt[t] || U(t), Gt[t](e)) : e.localeData().invalidDate()
    }

    function H(e, t) {
        var n = 5;
        for (Lt.lastIndex = 0; n >= 0 && Lt.test(e);) e = e.replace(Lt, function(e) {
            return t.longDateFormat(e) || e
        }), Lt.lastIndex = 0, n -= 1;
        return e
    }

    function L(e, t, n) {
        rn[e] = D(t) ? t : function(e, s) {
            return e && n ? n : t
        }
    }

    function G(e, t) {
        return u(rn, e) ? rn[e](t._strict, t._locale) : new RegExp(V(e))
    }

    function V(e) {
        return j(e.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(e, t, n, s, i) {
            return t || n || s || i
        }))
    }

    function j(e) {
        return e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&")
    }

    function I(e, t) {
        var n, s = t;
        for ("string" == typeof e && (e = [e]), r(t) && (s = function(e, n) {
                n[t] = w(e)
            }), n = 0; n < e.length; n++) an[e[n]] = s
    }

    function E(e, t) {
        I(e, function(e, n, s, i) {
            s._w = s._w || {}, t(e, s._w, s, i)
        })
    }

    function A(e, t, n) {
        null != t && u(an, e) && an[e](t, n._a, n, e)
    }

    function z(e) {
        return Z(e) ? 366 : 365
    }

    function Z(e) {
        return e % 4 == 0 && e % 100 != 0 || e % 400 == 0
    }

    function $(t, n) {
        return function(s) {
            return null != s ? (J(this, t, s), e.updateOffset(this, n), this) : q(this, t)
        }
    }

    function q(e, t) {
        return e.isValid() ? e._d["get" + (e._isUTC ? "UTC" : "") + t]() : NaN
    }

    function J(e, t, n) {
        e.isValid() && !isNaN(n) && ("FullYear" === t && Z(e.year()) && 1 === e.month() && 29 === e.date() ? e._d["set" + (e._isUTC ? "UTC" : "") + t](n, e.month(), Q(n, e.month())) : e._d["set" + (e._isUTC ? "UTC" : "") + t](n))
    }

    function B(e, t) {
        return (e % t + t) % t
    }

    function Q(e, t) {
        if (isNaN(e) || isNaN(t)) return NaN;
        var n = B(t, 12);
        return e += (t - n) / 12, 1 === n ? Z(e) ? 29 : 28 : 31 - n % 7 % 2
    }

    function X(e, t, n) {
        var s, i, r, a = e.toLocaleLowerCase();
        if (!this._monthsParse)
            for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], s = 0; s < 12; ++s) r = d([2e3, s]), this._shortMonthsParse[s] = this.monthsShort(r, "").toLocaleLowerCase(), this._longMonthsParse[s] = this.months(r, "").toLocaleLowerCase();
        return n ? "MMM" === t ? -1 !== (i = yn.call(this._shortMonthsParse, a)) ? i : null : -1 !== (i = yn.call(this._longMonthsParse, a)) ? i : null : "MMM" === t ? -1 !== (i = yn.call(this._shortMonthsParse, a)) ? i : -1 !== (i = yn.call(this._longMonthsParse, a)) ? i : null : -1 !== (i = yn.call(this._longMonthsParse, a)) ? i : -1 !== (i = yn.call(this._shortMonthsParse, a)) ? i : null
    }

    function K(e, t) {
        var n;
        if (!e.isValid()) return e;
        if ("string" == typeof t)
            if (/^\d+$/.test(t)) t = w(t);
            else if (t = e.localeData().monthsParse(t), !r(t)) return e;
        return n = Math.min(e.date(), Q(e.year(), t)), e._d["set" + (e._isUTC ? "UTC" : "") + "Month"](t, n), e
    }

    function ee(t) {
        return null != t ? (K(this, t), e.updateOffset(this, !0), this) : q(this, "Month")
    }

    function te() {
        function e(e, t) {
            return t.length - e.length
        }
        var t, n, s = [],
            i = [],
            r = [];
        for (t = 0; t < 12; t++) n = d([2e3, t]), s.push(this.monthsShort(n, "")), i.push(this.months(n, "")), r.push(this.months(n, "")), r.push(this.monthsShort(n, ""));
        for (s.sort(e), i.sort(e), r.sort(e), t = 0; t < 12; t++) s[t] = j(s[t]), i[t] = j(i[t]);
        for (t = 0; t < 24; t++) r[t] = j(r[t]);
        this._monthsRegex = new RegExp("^(" + r.join("|") + ")", "i"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp("^(" + i.join("|") + ")", "i"), this._monthsShortStrictRegex = new RegExp("^(" + s.join("|") + ")", "i")
    }

    function ne(e, t, n, s, i, r, a) {
        var o = new Date(e, t, n, s, i, r, a);
        return e < 100 && e >= 0 && isFinite(o.getFullYear()) && o.setFullYear(e), o
    }

    function se(e) {
        var t = new Date(Date.UTC.apply(null, arguments));
        return e < 100 && e >= 0 && isFinite(t.getUTCFullYear()) && t.setUTCFullYear(e), t
    }

    function ie(e, t, n) {
        var s = 7 + t - n;
        return -((7 + se(e, 0, s).getUTCDay() - t) % 7) + s - 1
    }

    function re(e, t, n, s, i) {
        var r, a, o = 1 + 7 * (t - 1) + (7 + n - s) % 7 + ie(e, s, i);
        return o <= 0 ? a = z(r = e - 1) + o : o > z(e) ? (r = e + 1, a = o - z(e)) : (r = e, a = o), {
            year: r,
            dayOfYear: a
        }
    }

    function ae(e, t, n) {
        var s, i, r = ie(e.year(), t, n),
            a = Math.floor((e.dayOfYear() - r - 1) / 7) + 1;
        return a < 1 ? s = a + oe(i = e.year() - 1, t, n) : a > oe(e.year(), t, n) ? (s = a - oe(e.year(), t, n), i = e.year() + 1) : (i = e.year(), s = a), {
            week: s,
            year: i
        }
    }

    function oe(e, t, n) {
        var s = ie(e, t, n),
            i = ie(e + 1, t, n);
        return (z(e) - s + i) / 7
    }

    function ue(e, t) {
        return "string" != typeof e ? e : isNaN(e) ? "number" == typeof(e = t.weekdaysParse(e)) ? e : null : parseInt(e, 10)
    }

    function le(e, t) {
        return "string" == typeof e ? t.weekdaysParse(e) % 7 || 7 : isNaN(e) ? null : e
    }

    function de(e, t, n) {
        var s, i, r, a = e.toLocaleLowerCase();
        if (!this._weekdaysParse)
            for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], s = 0; s < 7; ++s) r = d([2e3, 1]).day(s), this._minWeekdaysParse[s] = this.weekdaysMin(r, "").toLocaleLowerCase(), this._shortWeekdaysParse[s] = this.weekdaysShort(r, "").toLocaleLowerCase(), this._weekdaysParse[s] = this.weekdays(r, "").toLocaleLowerCase();
        return n ? "dddd" === t ? -1 !== (i = yn.call(this._weekdaysParse, a)) ? i : null : "ddd" === t ? -1 !== (i = yn.call(this._shortWeekdaysParse, a)) ? i : null : -1 !== (i = yn.call(this._minWeekdaysParse, a)) ? i : null : "dddd" === t ? -1 !== (i = yn.call(this._weekdaysParse, a)) ? i : -1 !== (i = yn.call(this._shortWeekdaysParse, a)) ? i : -1 !== (i = yn.call(this._minWeekdaysParse, a)) ? i : null : "ddd" === t ? -1 !== (i = yn.call(this._shortWeekdaysParse, a)) ? i : -1 !== (i = yn.call(this._weekdaysParse, a)) ? i : -1 !== (i = yn.call(this._minWeekdaysParse, a)) ? i : null : -1 !== (i = yn.call(this._minWeekdaysParse, a)) ? i : -1 !== (i = yn.call(this._weekdaysParse, a)) ? i : -1 !== (i = yn.call(this._shortWeekdaysParse, a)) ? i : null
    }

    function he() {
        function e(e, t) {
            return t.length - e.length
        }
        var t, n, s, i, r, a = [],
            o = [],
            u = [],
            l = [];
        for (t = 0; t < 7; t++) n = d([2e3, 1]).day(t), s = this.weekdaysMin(n, ""), i = this.weekdaysShort(n, ""), r = this.weekdays(n, ""), a.push(s), o.push(i), u.push(r), l.push(s), l.push(i), l.push(r);
        for (a.sort(e), o.sort(e), u.sort(e), l.sort(e), t = 0; t < 7; t++) o[t] = j(o[t]), u[t] = j(u[t]), l[t] = j(l[t]);
        this._weekdaysRegex = new RegExp("^(" + l.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + u.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + o.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + a.join("|") + ")", "i")
    }

    function ce() {
        return this.hours() % 12 || 12
    }

    function fe(e, t) {
        C(e, 0, 0, function() {
            return this.localeData().meridiem(this.hours(), this.minutes(), t)
        })
    }

    function me(e, t) {
        return t._meridiemParse
    }

    function _e(e) {
        return e ? e.toLowerCase().replace("_", "-") : e
    }

    function ye(e) {
        for (var t, n, s, i, r = 0; r < e.length;) {
            for (t = (i = _e(e[r]).split("-")).length, n = (n = _e(e[r + 1])) ? n.split("-") : null; t > 0;) {
                if (s = ge(i.slice(0, t).join("-"))) return s;
                if (n && n.length >= t && v(i, n, !0) >= t - 1) break;
                t--
            }
            r++
        }
        return null
    }

    function ge(e) {
        var t = null;
        if (!Fn[e] && "undefined" != typeof module && module && module.exports) try {
            t = Pn._abbr, require("./locale/" + e), pe(t)
        } catch (e) {}
        return Fn[e]
    }

    function pe(e, t) {
        var n;
        return e && (n = i(t) ? ve(e) : we(e, t)) && (Pn = n), Pn._abbr
    }

    function we(e, t) {
        if (null !== t) {
            var n = Cn;
            if (t.abbr = e, null != Fn[e]) S("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."), n = Fn[e]._config;
            else if (null != t.parentLocale) {
                if (null == Fn[t.parentLocale]) return Un[t.parentLocale] || (Un[t.parentLocale] = []), Un[t.parentLocale].push({
                    name: e,
                    config: t
                }), null;
                n = Fn[t.parentLocale]._config
            }
            return Fn[e] = new O(Y(n, t)), Un[e] && Un[e].forEach(function(e) {
                we(e.name, e.config)
            }), pe(e), Fn[e]
        }
        return delete Fn[e], null
    }

    function ve(e) {
        var n;
        if (e && e._locale && e._locale._abbr && (e = e._locale._abbr), !e) return Pn;
        if (!t(e)) {
            if (n = ge(e)) return n;
            e = [e]
        }
        return ye(e)
    }

    function Me(e) {
        var t, n = e._a;
        return n && -2 === c(e).overflow && (t = n[un] < 0 || n[un] > 11 ? un : n[ln] < 1 || n[ln] > Q(n[on], n[un]) ? ln : n[dn] < 0 || n[dn] > 24 || 24 === n[dn] && (0 !== n[hn] || 0 !== n[cn] || 0 !== n[fn]) ? dn : n[hn] < 0 || n[hn] > 59 ? hn : n[cn] < 0 || n[cn] > 59 ? cn : n[fn] < 0 || n[fn] > 999 ? fn : -1, c(e)._overflowDayOfYear && (t < on || t > ln) && (t = ln), c(e)._overflowWeeks && -1 === t && (t = mn), c(e)._overflowWeekday && -1 === t && (t = _n), c(e).overflow = t), e
    }

    function ke(e, t, n) {
        return null != e ? e : null != t ? t : n
    }

    function Se(t) {
        var n = new Date(e.now());
        return t._useUTC ? [n.getUTCFullYear(), n.getUTCMonth(), n.getUTCDate()] : [n.getFullYear(), n.getMonth(), n.getDate()]
    }

    function De(e) {
        var t, n, s, i, r = [];
        if (!e._d) {
            for (s = Se(e), e._w && null == e._a[ln] && null == e._a[un] && Ye(e), null != e._dayOfYear && (i = ke(e._a[on], s[on]), (e._dayOfYear > z(i) || 0 === e._dayOfYear) && (c(e)._overflowDayOfYear = !0), n = se(i, 0, e._dayOfYear), e._a[un] = n.getUTCMonth(), e._a[ln] = n.getUTCDate()), t = 0; t < 3 && null == e._a[t]; ++t) e._a[t] = r[t] = s[t];
            for (; t < 7; t++) e._a[t] = r[t] = null == e._a[t] ? 2 === t ? 1 : 0 : e._a[t];
            24 === e._a[dn] && 0 === e._a[hn] && 0 === e._a[cn] && 0 === e._a[fn] && (e._nextDay = !0, e._a[dn] = 0), e._d = (e._useUTC ? se : ne).apply(null, r), null != e._tzm && e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), e._nextDay && (e._a[dn] = 24), e._w && void 0 !== e._w.d && e._w.d !== e._d.getDay() && (c(e).weekdayMismatch = !0)
        }
    }

    function Ye(e) {
        var t, n, s, i, r, a, o, u;
        if (null != (t = e._w).GG || null != t.W || null != t.E) r = 1, a = 4, n = ke(t.GG, e._a[on], ae(Ie(), 1, 4).year), s = ke(t.W, 1), ((i = ke(t.E, 1)) < 1 || i > 7) && (u = !0);
        else {
            r = e._locale._week.dow, a = e._locale._week.doy;
            var l = ae(Ie(), r, a);
            n = ke(t.gg, e._a[on], l.year), s = ke(t.w, l.week), null != t.d ? ((i = t.d) < 0 || i > 6) && (u = !0) : null != t.e ? (i = t.e + r, (t.e < 0 || t.e > 6) && (u = !0)) : i = r
        }
        s < 1 || s > oe(n, r, a) ? c(e)._overflowWeeks = !0 : null != u ? c(e)._overflowWeekday = !0 : (o = re(n, s, i, r, a), e._a[on] = o.year, e._dayOfYear = o.dayOfYear)
    }

    function Oe(e) {
        var t, n, s, i, r, a, o = e._i,
            u = Nn.exec(o) || Hn.exec(o);
        if (u) {
            for (c(e).iso = !0, t = 0, n = Gn.length; t < n; t++)
                if (Gn[t][1].exec(u[1])) {
                    i = Gn[t][0], s = !1 !== Gn[t][2];
                    break
                } if (null == i) return void(e._isValid = !1);
            if (u[3]) {
                for (t = 0, n = Vn.length; t < n; t++)
                    if (Vn[t][1].exec(u[3])) {
                        r = (u[2] || " ") + Vn[t][0];
                        break
                    } if (null == r) return void(e._isValid = !1)
            }
            if (!s && null != r) return void(e._isValid = !1);
            if (u[4]) {
                if (!Ln.exec(u[4])) return void(e._isValid = !1);
                a = "Z"
            }
            e._f = i + (r || "") + (a || ""), Fe(e)
        } else e._isValid = !1
    }

    function xe(e, t, n, s, i, r) {
        var a = [Te(e), vn.indexOf(t), parseInt(n, 10), parseInt(s, 10), parseInt(i, 10)];
        return r && a.push(parseInt(r, 10)), a
    }

    function Te(e) {
        var t = parseInt(e, 10);
        return t <= 49 ? 2e3 + t : t <= 999 ? 1900 + t : t
    }

    function be(e) {
        return e.replace(/\([^)]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").trim()
    }

    function Pe(e, t, n) {
        return !e || Yn.indexOf(e) === new Date(t[0], t[1], t[2]).getDay() || (c(n).weekdayMismatch = !0, n._isValid = !1, !1)
    }

    function We(e, t, n) {
        if (e) return En[e];
        if (t) return 0;
        var s = parseInt(n, 10),
            i = s % 100;
        return 60 * ((s - i) / 100) + i
    }

    function Re(e) {
        var t = In.exec(be(e._i));
        if (t) {
            var n = xe(t[4], t[3], t[2], t[5], t[6], t[7]);
            if (!Pe(t[1], n, e)) return;
            e._a = n, e._tzm = We(t[8], t[9], t[10]), e._d = se.apply(null, e._a), e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), c(e).rfc2822 = !0
        } else e._isValid = !1
    }

    function Ce(t) {
        var n = jn.exec(t._i);
        null === n ? (Oe(t), !1 === t._isValid && (delete t._isValid, Re(t), !1 === t._isValid && (delete t._isValid, e.createFromInputFallback(t)))) : t._d = new Date(+n[1])
    }

    function Fe(t) {
        if (t._f !== e.ISO_8601)
            if (t._f !== e.RFC_2822) {
                t._a = [], c(t).empty = !0;
                var n, s, i, r, a, o = "" + t._i,
                    u = o.length,
                    l = 0;
                for (i = H(t._f, t._locale).match(Ht) || [], n = 0; n < i.length; n++) r = i[n], (s = (o.match(G(r, t)) || [])[0]) && ((a = o.substr(0, o.indexOf(s))).length > 0 && c(t).unusedInput.push(a), o = o.slice(o.indexOf(s) + s.length), l += s.length), Vt[r] ? (s ? c(t).empty = !1 : c(t).unusedTokens.push(r), A(r, s, t)) : t._strict && !s && c(t).unusedTokens.push(r);
                c(t).charsLeftOver = u - l, o.length > 0 && c(t).unusedInput.push(o), t._a[dn] <= 12 && !0 === c(t).bigHour && t._a[dn] > 0 && (c(t).bigHour = void 0), c(t).parsedDateParts = t._a.slice(0), c(t).meridiem = t._meridiem, t._a[dn] = Ue(t._locale, t._a[dn], t._meridiem), De(t), Me(t)
            } else Re(t);
        else Oe(t)
    }

    function Ue(e, t, n) {
        var s;
        return null == n ? t : null != e.meridiemHour ? e.meridiemHour(t, n) : null != e.isPM ? ((s = e.isPM(n)) && t < 12 && (t += 12), s || 12 !== t || (t = 0), t) : t
    }

    function Ne(e) {
        var t, n, s, i, r;
        if (0 === e._f.length) return c(e).invalidFormat = !0, void(e._d = new Date(NaN));
        for (i = 0; i < e._f.length; i++) r = 0, t = _({}, e), null != e._useUTC && (t._useUTC = e._useUTC), t._f = e._f[i], Fe(t), f(t) && (r += c(t).charsLeftOver, r += 10 * c(t).unusedTokens.length, c(t).score = r, (null == s || r < s) && (s = r, n = t));
        l(e, n || t)
    }

    function He(e) {
        if (!e._d) {
            var t = b(e._i);
            e._a = o([t.year, t.month, t.day || t.date, t.hour, t.minute, t.second, t.millisecond], function(e) {
                return e && parseInt(e, 10)
            }), De(e)
        }
    }

    function Le(e) {
        var t = new y(Me(Ge(e)));
        return t._nextDay && (t.add(1, "d"), t._nextDay = void 0), t
    }

    function Ge(e) {
        var n = e._i,
            s = e._f;
        return e._locale = e._locale || ve(e._l), null === n || void 0 === s && "" === n ? m({
            nullInput: !0
        }) : ("string" == typeof n && (e._i = n = e._locale.preparse(n)), g(n) ? new y(Me(n)) : (a(n) ? e._d = n : t(s) ? Ne(e) : s ? Fe(e) : Ve(e), f(e) || (e._d = null), e))
    }

    function Ve(s) {
        var u = s._i;
        i(u) ? s._d = new Date(e.now()) : a(u) ? s._d = new Date(u.valueOf()) : "string" == typeof u ? Ce(s) : t(u) ? (s._a = o(u.slice(0), function(e) {
            return parseInt(e, 10)
        }), De(s)) : n(u) ? He(s) : r(u) ? s._d = new Date(u) : e.createFromInputFallback(s)
    }

    function je(e, i, r, a, o) {
        var u = {};
        return !0 !== r && !1 !== r || (a = r, r = void 0), (n(e) && s(e) || t(e) && 0 === e.length) && (e = void 0), u._isAMomentObject = !0, u._useUTC = u._isUTC = o, u._l = r, u._i = e, u._f = i, u._strict = a, Le(u)
    }

    function Ie(e, t, n, s) {
        return je(e, t, n, s, !1)
    }

    function Ee(e, n) {
        var s, i;
        if (1 === n.length && t(n[0]) && (n = n[0]), !n.length) return Ie();
        for (s = n[0], i = 1; i < n.length; ++i) n[i].isValid() && !n[i][e](s) || (s = n[i]);
        return s
    }

    function Ae(e) {
        for (var t in e)
            if (-1 === yn.call(Zn, t) || null != e[t] && isNaN(e[t])) return !1;
        for (var n = !1, s = 0; s < Zn.length; ++s)
            if (e[Zn[s]]) {
                if (n) return !1;
                parseFloat(e[Zn[s]]) !== w(e[Zn[s]]) && (n = !0)
            } return !0
    }

    function ze(e) {
        var t = b(e),
            n = t.year || 0,
            s = t.quarter || 0,
            i = t.month || 0,
            r = t.week || 0,
            a = t.day || 0,
            o = t.hour || 0,
            u = t.minute || 0,
            l = t.second || 0,
            d = t.millisecond || 0;
        this._isValid = Ae(t), this._milliseconds = +d + 1e3 * l + 6e4 * u + 1e3 * o * 60 * 60, this._days = +a + 7 * r, this._months = +i + 3 * s + 12 * n, this._data = {}, this._locale = ve(), this._bubble()
    }

    function Ze(e) {
        return e instanceof ze
    }

    function $e(e) {
        return e < 0 ? -1 * Math.round(-1 * e) : Math.round(e)
    }

    function qe(e, t) {
        C(e, 0, 0, function() {
            var e = this.utcOffset(),
                n = "+";
            return e < 0 && (e = -e, n = "-"), n + R(~~(e / 60), 2) + t + R(~~e % 60, 2)
        })
    }

    function Je(e, t) {
        var n = (t || "").match(e);
        if (null === n) return null;
        var s = ((n[n.length - 1] || []) + "").match($n) || ["-", 0, 0],
            i = 60 * s[1] + w(s[2]);
        return 0 === i ? 0 : "+" === s[0] ? i : -i
    }

    function Be(t, n) {
        var s, i;
        return n._isUTC ? (s = n.clone(), i = (g(t) || a(t) ? t.valueOf() : Ie(t).valueOf()) - s.valueOf(), s._d.setTime(s._d.valueOf() + i), e.updateOffset(s, !1), s) : Ie(t).local()
    }

    function Qe(e) {
        return 15 * -Math.round(e._d.getTimezoneOffset() / 15)
    }

    function Xe() {
        return !!this.isValid() && (this._isUTC && 0 === this._offset)
    }

    function Ke(e, t) {
        var n, s, i, a = e,
            o = null;
        return Ze(e) ? a = {
            ms: e._milliseconds,
            d: e._days,
            M: e._months
        } : r(e) ? (a = {}, t ? a[t] = e : a.milliseconds = e) : (o = qn.exec(e)) ? (n = "-" === o[1] ? -1 : 1, a = {
            y: 0,
            d: w(o[ln]) * n,
            h: w(o[dn]) * n,
            m: w(o[hn]) * n,
            s: w(o[cn]) * n,
            ms: w($e(1e3 * o[fn])) * n
        }) : (o = Jn.exec(e)) ? (n = "-" === o[1] ? -1 : (o[1], 1), a = {
            y: et(o[2], n),
            M: et(o[3], n),
            w: et(o[4], n),
            d: et(o[5], n),
            h: et(o[6], n),
            m: et(o[7], n),
            s: et(o[8], n)
        }) : null == a ? a = {} : "object" == typeof a && ("from" in a || "to" in a) && (i = nt(Ie(a.from), Ie(a.to)), (a = {}).ms = i.milliseconds, a.M = i.months), s = new ze(a), Ze(e) && u(e, "_locale") && (s._locale = e._locale), s
    }

    function et(e, t) {
        var n = e && parseFloat(e.replace(",", "."));
        return (isNaN(n) ? 0 : n) * t
    }

    function tt(e, t) {
        var n = {
            milliseconds: 0,
            months: 0
        };
        return n.months = t.month() - e.month() + 12 * (t.year() - e.year()), e.clone().add(n.months, "M").isAfter(t) && --n.months, n.milliseconds = +t - +e.clone().add(n.months, "M"), n
    }

    function nt(e, t) {
        var n;
        return e.isValid() && t.isValid() ? (t = Be(t, e), e.isBefore(t) ? n = tt(e, t) : ((n = tt(t, e)).milliseconds = -n.milliseconds, n.months = -n.months), n) : {
            milliseconds: 0,
            months: 0
        }
    }

    function st(e, t) {
        return function(n, s) {
            var i, r;
            return null === s || isNaN(+s) || (S(t, "moment()." + t + "(period, number) is deprecated. Please use moment()." + t + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), r = n, n = s, s = r), n = "string" == typeof n ? +n : n, i = Ke(n, s), it(this, i, e), this
        }
    }

    function it(t, n, s, i) {
        var r = n._milliseconds,
            a = $e(n._days),
            o = $e(n._months);
        t.isValid() && (i = null == i || i, o && K(t, q(t, "Month") + o * s), a && J(t, "Date", q(t, "Date") + a * s), r && t._d.setTime(t._d.valueOf() + r * s), i && e.updateOffset(t, a || o))
    }

    function rt(e, t) {
        var n, s = 12 * (t.year() - e.year()) + (t.month() - e.month()),
            i = e.clone().add(s, "months");
        return n = t - i < 0 ? (t - i) / (i - e.clone().add(s - 1, "months")) : (t - i) / (e.clone().add(s + 1, "months") - i), -(s + n) || 0
    }

    function at(e) {
        var t;
        return void 0 === e ? this._locale._abbr : (null != (t = ve(e)) && (this._locale = t), this)
    }

    function ot() {
        return this._locale
    }

    function ut(e, t) {
        C(0, [e, e.length], 0, t)
    }

    function lt(e, t, n, s, i) {
        var r;
        return null == e ? ae(this, s, i).year : (r = oe(e, s, i), t > r && (t = r), dt.call(this, e, t, n, s, i))
    }

    function dt(e, t, n, s, i) {
        var r = re(e, t, n, s, i),
            a = se(r.year, 0, r.dayOfYear);
        return this.year(a.getUTCFullYear()), this.month(a.getUTCMonth()), this.date(a.getUTCDate()), this
    }

    function ht(e) {
        return e
    }

    function ct(e, t, n, s) {
        var i = ve(),
            r = d().set(s, t);
        return i[n](r, e)
    }

    function ft(e, t, n) {
        if (r(e) && (t = e, e = void 0), e = e || "", null != t) return ct(e, t, n, "month");
        var s, i = [];
        for (s = 0; s < 12; s++) i[s] = ct(e, s, n, "month");
        return i
    }

    function mt(e, t, n, s) {
        "boolean" == typeof e ? (r(t) && (n = t, t = void 0), t = t || "") : (n = t = e, e = !1, r(t) && (n = t, t = void 0), t = t || "");
        var i = ve(),
            a = e ? i._week.dow : 0;
        if (null != n) return ct(t, (n + a) % 7, s, "day");
        var o, u = [];
        for (o = 0; o < 7; o++) u[o] = ct(t, (o + a) % 7, s, "day");
        return u
    }

    function _t(e, t, n, s) {
        var i = Ke(t, n);
        return e._milliseconds += s * i._milliseconds, e._days += s * i._days, e._months += s * i._months, e._bubble()
    }

    function yt(e) {
        return e < 0 ? Math.floor(e) : Math.ceil(e)
    }

    function gt(e) {
        return 4800 * e / 146097
    }

    function pt(e) {
        return 146097 * e / 4800
    }

    function wt(e) {
        return function() {
            return this.as(e)
        }
    }

    function vt(e) {
        return function() {
            return this.isValid() ? this._data[e] : NaN
        }
    }

    function Mt(e, t, n, s, i) {
        return i.relativeTime(t || 1, !!n, e, s)
    }

    function kt(e, t, n) {
        var s = Ke(e).abs(),
            i = ks(s.as("s")),
            r = ks(s.as("m")),
            a = ks(s.as("h")),
            o = ks(s.as("d")),
            u = ks(s.as("M")),
            l = ks(s.as("y")),
            d = i <= Ss.ss && ["s", i] || i < Ss.s && ["ss", i] || r <= 1 && ["m"] || r < Ss.m && ["mm", r] || a <= 1 && ["h"] || a < Ss.h && ["hh", a] || o <= 1 && ["d"] || o < Ss.d && ["dd", o] || u <= 1 && ["M"] || u < Ss.M && ["MM", u] || l <= 1 && ["y"] || ["yy", l];
        return d[2] = t, d[3] = +e > 0, d[4] = n, Mt.apply(null, d)
    }

    function St(e) {
        return (e > 0) - (e < 0) || +e
    }

    function Dt() {
        if (!this.isValid()) return this.localeData().invalidDate();
        var e, t, n, s = Ds(this._milliseconds) / 1e3,
            i = Ds(this._days),
            r = Ds(this._months);
        t = p((e = p(s / 60)) / 60), s %= 60, e %= 60;
        var a = n = p(r / 12),
            o = r %= 12,
            u = i,
            l = t,
            d = e,
            h = s ? s.toFixed(3).replace(/\.?0+$/, "") : "",
            c = this.asSeconds();
        if (!c) return "P0D";
        var f = c < 0 ? "-" : "",
            m = St(this._months) !== St(c) ? "-" : "",
            _ = St(this._days) !== St(c) ? "-" : "",
            y = St(this._milliseconds) !== St(c) ? "-" : "";
        return f + "P" + (a ? m + a + "Y" : "") + (o ? m + o + "M" : "") + (u ? _ + u + "D" : "") + (l || d || h ? "T" : "") + (l ? y + l + "H" : "") + (d ? y + d + "M" : "") + (h ? y + h + "S" : "")
    }
    var Yt, Ot;
    Ot = Array.prototype.some ? Array.prototype.some : function(e) {
        for (var t = Object(this), n = t.length >>> 0, s = 0; s < n; s++)
            if (s in t && e.call(this, t[s], s, t)) return !0;
        return !1
    };
    var xt = e.momentProperties = [],
        Tt = !1,
        bt = {};
    e.suppressDeprecationWarnings = !1, e.deprecationHandler = null;
    var Pt;
    Pt = Object.keys ? Object.keys : function(e) {
        var t, n = [];
        for (t in e) u(e, t) && n.push(t);
        return n
    };
    var Wt = {
            sameDay: "[Today at] LT",
            nextDay: "[Tomorrow at] LT",
            nextWeek: "dddd [at] LT",
            lastDay: "[Yesterday at] LT",
            lastWeek: "[Last] dddd [at] LT",
            sameElse: "L"
        },
        Rt = {
            LTS: "h:mm:ss A",
            LT: "h:mm A",
            L: "MM/DD/YYYY",
            LL: "MMMM D, YYYY",
            LLL: "MMMM D, YYYY h:mm A",
            LLLL: "dddd, MMMM D, YYYY h:mm A"
        },
        Ct = /\d{1,2}/,
        Ft = {
            future: "in %s",
            past: "%s ago",
            s: "a few seconds",
            ss: "%d 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"
        },
        Ut = {},
        Nt = {},
        Ht = /(\[[^\[]*\])|(\\)?([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,
        Lt = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
        Gt = {},
        Vt = {},
        jt = /\d/,
        It = /\d\d/,
        Et = /\d{3}/,
        At = /\d{4}/,
        zt = /[+-]?\d{6}/,
        Zt = /\d\d?/,
        $t = /\d\d\d\d?/,
        qt = /\d\d\d\d\d\d?/,
        Jt = /\d{1,3}/,
        Bt = /\d{1,4}/,
        Qt = /[+-]?\d{1,6}/,
        Xt = /\d+/,
        Kt = /[+-]?\d+/,
        en = /Z|[+-]\d\d:?\d\d/gi,
        tn = /Z|[+-]\d\d(?::?\d\d)?/gi,
        nn = /[+-]?\d+(\.\d{1,3})?/,
        sn = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,
        rn = {},
        an = {},
        on = 0,
        un = 1,
        ln = 2,
        dn = 3,
        hn = 4,
        cn = 5,
        fn = 6,
        mn = 7,
        _n = 8;
    C("Y", 0, 0, function() {
        var e = this.year();
        return e <= 9999 ? "" + e : "+" + e
    }), C(0, ["YY", 2], 0, function() {
        return this.year() % 100
    }), C(0, ["YYYY", 4], 0, "year"), C(0, ["YYYYY", 5], 0, "year"), C(0, ["YYYYYY", 6, !0], 0, "year"), x("year", "y"), P("year", 1), L("Y", Kt), L("YY", Zt, It), L("YYYY", Bt, At), L("YYYYY", Qt, zt), L("YYYYYY", Qt, zt), I(["YYYYY", "YYYYYY"], on), I("YYYY", function(t, n) {
        n[on] = 2 === t.length ? e.parseTwoDigitYear(t) : w(t)
    }), I("YY", function(t, n) {
        n[on] = e.parseTwoDigitYear(t)
    }), I("Y", function(e, t) {
        t[on] = parseInt(e, 10)
    }), e.parseTwoDigitYear = function(e) {
        return w(e) + (w(e) > 68 ? 1900 : 2e3)
    };
    var yn, gn = $("FullYear", !0);
    yn = Array.prototype.indexOf ? Array.prototype.indexOf : function(e) {
        var t;
        for (t = 0; t < this.length; ++t)
            if (this[t] === e) return t;
        return -1
    }, C("M", ["MM", 2], "Mo", function() {
        return this.month() + 1
    }), C("MMM", 0, 0, function(e) {
        return this.localeData().monthsShort(this, e)
    }), C("MMMM", 0, 0, function(e) {
        return this.localeData().months(this, e)
    }), x("month", "M"), P("month", 8), L("M", Zt), L("MM", Zt, It), L("MMM", function(e, t) {
        return t.monthsShortRegex(e)
    }), L("MMMM", function(e, t) {
        return t.monthsRegex(e)
    }), I(["M", "MM"], function(e, t) {
        t[un] = w(e) - 1
    }), I(["MMM", "MMMM"], function(e, t, n, s) {
        var i = n._locale.monthsParse(e, s, n._strict);
        null != i ? t[un] = i : c(n).invalidMonth = e
    });
    var pn = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
        wn = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
        vn = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
        Mn = sn,
        kn = sn;
    C("w", ["ww", 2], "wo", "week"), C("W", ["WW", 2], "Wo", "isoWeek"), x("week", "w"), x("isoWeek", "W"), P("week", 5), P("isoWeek", 5), L("w", Zt), L("ww", Zt, It), L("W", Zt), L("WW", Zt, It), E(["w", "ww", "W", "WW"], function(e, t, n, s) {
        t[s.substr(0, 1)] = w(e)
    });
    var Sn = {
        dow: 0,
        doy: 6
    };
    C("d", 0, "do", "day"), C("dd", 0, 0, function(e) {
        return this.localeData().weekdaysMin(this, e)
    }), C("ddd", 0, 0, function(e) {
        return this.localeData().weekdaysShort(this, e)
    }), C("dddd", 0, 0, function(e) {
        return this.localeData().weekdays(this, e)
    }), C("e", 0, 0, "weekday"), C("E", 0, 0, "isoWeekday"), x("day", "d"), x("weekday", "e"), x("isoWeekday", "E"), P("day", 11), P("weekday", 11), P("isoWeekday", 11), L("d", Zt), L("e", Zt), L("E", Zt), L("dd", function(e, t) {
        return t.weekdaysMinRegex(e)
    }), L("ddd", function(e, t) {
        return t.weekdaysShortRegex(e)
    }), L("dddd", function(e, t) {
        return t.weekdaysRegex(e)
    }), E(["dd", "ddd", "dddd"], function(e, t, n, s) {
        var i = n._locale.weekdaysParse(e, s, n._strict);
        null != i ? t.d = i : c(n).invalidWeekday = e
    }), E(["d", "e", "E"], function(e, t, n, s) {
        t[s] = w(e)
    });
    var Dn = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
        Yn = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
        On = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
        xn = sn,
        Tn = sn,
        bn = sn;
    C("H", ["HH", 2], 0, "hour"), C("h", ["hh", 2], 0, ce), C("k", ["kk", 2], 0, function() {
        return this.hours() || 24
    }), C("hmm", 0, 0, function() {
        return "" + ce.apply(this) + R(this.minutes(), 2)
    }), C("hmmss", 0, 0, function() {
        return "" + ce.apply(this) + R(this.minutes(), 2) + R(this.seconds(), 2)
    }), C("Hmm", 0, 0, function() {
        return "" + this.hours() + R(this.minutes(), 2)
    }), C("Hmmss", 0, 0, function() {
        return "" + this.hours() + R(this.minutes(), 2) + R(this.seconds(), 2)
    }), fe("a", !0), fe("A", !1), x("hour", "h"), P("hour", 13), L("a", me), L("A", me), L("H", Zt), L("h", Zt), L("k", Zt), L("HH", Zt, It), L("hh", Zt, It), L("kk", Zt, It), L("hmm", $t), L("hmmss", qt), L("Hmm", $t), L("Hmmss", qt), I(["H", "HH"], dn), I(["k", "kk"], function(e, t, n) {
        var s = w(e);
        t[dn] = 24 === s ? 0 : s
    }), I(["a", "A"], function(e, t, n) {
        n._isPm = n._locale.isPM(e), n._meridiem = e
    }), I(["h", "hh"], function(e, t, n) {
        t[dn] = w(e), c(n).bigHour = !0
    }), I("hmm", function(e, t, n) {
        var s = e.length - 2;
        t[dn] = w(e.substr(0, s)), t[hn] = w(e.substr(s)), c(n).bigHour = !0
    }), I("hmmss", function(e, t, n) {
        var s = e.length - 4,
            i = e.length - 2;
        t[dn] = w(e.substr(0, s)), t[hn] = w(e.substr(s, 2)), t[cn] = w(e.substr(i)), c(n).bigHour = !0
    }), I("Hmm", function(e, t, n) {
        var s = e.length - 2;
        t[dn] = w(e.substr(0, s)), t[hn] = w(e.substr(s))
    }), I("Hmmss", function(e, t, n) {
        var s = e.length - 4,
            i = e.length - 2;
        t[dn] = w(e.substr(0, s)), t[hn] = w(e.substr(s, 2)), t[cn] = w(e.substr(i))
    });
    var Pn, Wn = /[ap]\.?m?\.?/i,
        Rn = $("Hours", !0),
        Cn = {
            calendar: Wt,
            longDateFormat: Rt,
            invalidDate: "Invalid date",
            ordinal: "%d",
            dayOfMonthOrdinalParse: Ct,
            relativeTime: Ft,
            months: wn,
            monthsShort: vn,
            week: Sn,
            weekdays: Dn,
            weekdaysMin: On,
            weekdaysShort: Yn,
            meridiemParse: Wn
        },
        Fn = {},
        Un = {},
        Nn = /^\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)?)?$/,
        Hn = /^\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)?)?$/,
        Ln = /Z|[+-]\d\d(?::?\d\d)?/,
        Gn = [
            ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/],
            ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/],
            ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/],
            ["GGGG-[W]WW", /\d{4}-W\d\d/, !1],
            ["YYYY-DDD", /\d{4}-\d{3}/],
            ["YYYY-MM", /\d{4}-\d\d/, !1],
            ["YYYYYYMMDD", /[+-]\d{10}/],
            ["YYYYMMDD", /\d{8}/],
            ["GGGG[W]WWE", /\d{4}W\d{3}/],
            ["GGGG[W]WW", /\d{4}W\d{2}/, !1],
            ["YYYYDDD", /\d{7}/]
        ],
        Vn = [
            ["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/],
            ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/],
            ["HH:mm:ss", /\d\d:\d\d:\d\d/],
            ["HH:mm", /\d\d:\d\d/],
            ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/],
            ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/],
            ["HHmmss", /\d\d\d\d\d\d/],
            ["HHmm", /\d\d\d\d/],
            ["HH", /\d\d/]
        ],
        jn = /^\/?Date\((\-?\d+)/i,
        In = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
        En = {
            UT: 0,
            GMT: 0,
            EDT: -240,
            EST: -300,
            CDT: -300,
            CST: -360,
            MDT: -360,
            MST: -420,
            PDT: -420,
            PST: -480
        };
    e.createFromInputFallback = k("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/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(e) {
        e._d = new Date(e._i + (e._useUTC ? " UTC" : ""))
    }), e.ISO_8601 = function() {}, e.RFC_2822 = function() {};
    var An = k("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
            var e = Ie.apply(null, arguments);
            return this.isValid() && e.isValid() ? e < this ? this : e : m()
        }),
        zn = k("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
            var e = Ie.apply(null, arguments);
            return this.isValid() && e.isValid() ? e > this ? this : e : m()
        }),
        Zn = ["year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond"];
    qe("Z", ":"), qe("ZZ", ""), L("Z", tn), L("ZZ", tn), I(["Z", "ZZ"], function(e, t, n) {
        n._useUTC = !0, n._tzm = Je(tn, e)
    });
    var $n = /([\+\-]|\d\d)/gi;
    e.updateOffset = function() {};
    var qn = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,
        Jn = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
    Ke.fn = ze.prototype, Ke.invalid = function() {
        return Ke(NaN)
    };
    var Bn = st(1, "add"),
        Qn = st(-1, "subtract");
    e.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", e.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]";
    var Xn = k("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", function(e) {
        return void 0 === e ? this.localeData() : this.locale(e)
    });
    C(0, ["gg", 2], 0, function() {
        return this.weekYear() % 100
    }), C(0, ["GG", 2], 0, function() {
        return this.isoWeekYear() % 100
    }), ut("gggg", "weekYear"), ut("ggggg", "weekYear"), ut("GGGG", "isoWeekYear"), ut("GGGGG", "isoWeekYear"), x("weekYear", "gg"), x("isoWeekYear", "GG"), P("weekYear", 1), P("isoWeekYear", 1), L("G", Kt), L("g", Kt), L("GG", Zt, It), L("gg", Zt, It), L("GGGG", Bt, At), L("gggg", Bt, At), L("GGGGG", Qt, zt), L("ggggg", Qt, zt), E(["gggg", "ggggg", "GGGG", "GGGGG"], function(e, t, n, s) {
        t[s.substr(0, 2)] = w(e)
    }), E(["gg", "GG"], function(t, n, s, i) {
        n[i] = e.parseTwoDigitYear(t)
    }), C("Q", 0, "Qo", "quarter"), x("quarter", "Q"), P("quarter", 7), L("Q", jt), I("Q", function(e, t) {
        t[un] = 3 * (w(e) - 1)
    }), C("D", ["DD", 2], "Do", "date"), x("date", "D"), P("date", 9), L("D", Zt), L("DD", Zt, It), L("Do", function(e, t) {
        return e ? t._dayOfMonthOrdinalParse || t._ordinalParse : t._dayOfMonthOrdinalParseLenient
    }), I(["D", "DD"], ln), I("Do", function(e, t) {
        t[ln] = w(e.match(Zt)[0], 10)
    });
    var Kn = $("Date", !0);
    C("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), x("dayOfYear", "DDD"), P("dayOfYear", 4), L("DDD", Jt), L("DDDD", Et), I(["DDD", "DDDD"], function(e, t, n) {
        n._dayOfYear = w(e)
    }), C("m", ["mm", 2], 0, "minute"), x("minute", "m"), P("minute", 14), L("m", Zt), L("mm", Zt, It), I(["m", "mm"], hn);
    var es = $("Minutes", !1);
    C("s", ["ss", 2], 0, "second"), x("second", "s"), P("second", 15), L("s", Zt), L("ss", Zt, It), I(["s", "ss"], cn);
    var ts = $("Seconds", !1);
    C("S", 0, 0, function() {
        return ~~(this.millisecond() / 100)
    }), C(0, ["SS", 2], 0, function() {
        return ~~(this.millisecond() / 10)
    }), C(0, ["SSS", 3], 0, "millisecond"), C(0, ["SSSS", 4], 0, function() {
        return 10 * this.millisecond()
    }), C(0, ["SSSSS", 5], 0, function() {
        return 100 * this.millisecond()
    }), C(0, ["SSSSSS", 6], 0, function() {
        return 1e3 * this.millisecond()
    }), C(0, ["SSSSSSS", 7], 0, function() {
        return 1e4 * this.millisecond()
    }), C(0, ["SSSSSSSS", 8], 0, function() {
        return 1e5 * this.millisecond()
    }), C(0, ["SSSSSSSSS", 9], 0, function() {
        return 1e6 * this.millisecond()
    }), x("millisecond", "ms"), P("millisecond", 16), L("S", Jt, jt), L("SS", Jt, It), L("SSS", Jt, Et);
    var ns;
    for (ns = "SSSS"; ns.length <= 9; ns += "S") L(ns, Xt);
    for (ns = "S"; ns.length <= 9; ns += "S") I(ns, function(e, t) {
        t[fn] = w(1e3 * ("0." + e))
    });
    var ss = $("Milliseconds", !1);
    C("z", 0, 0, "zoneAbbr"), C("zz", 0, 0, "zoneName");
    var is = y.prototype;
    is.add = Bn, is.calendar = function(t, n) {
        var s = t || Ie(),
            i = Be(s, this).startOf("day"),
            r = e.calendarFormat(this, i) || "sameElse",
            a = n && (D(n[r]) ? n[r].call(this, s) : n[r]);
        return this.format(a || this.localeData().calendar(r, this, Ie(s)))
    }, is.clone = function() {
        return new y(this)
    }, is.diff = function(e, t, n) {
        var s, i, r;
        if (!this.isValid()) return NaN;
        if (!(s = Be(e, this)).isValid()) return NaN;
        switch (i = 6e4 * (s.utcOffset() - this.utcOffset()), t = T(t)) {
            case "year":
                r = rt(this, s) / 12;
                break;
            case "month":
                r = rt(this, s);
                break;
            case "quarter":
                r = rt(this, s) / 3;
                break;
            case "second":
                r = (this - s) / 1e3;
                break;
            case "minute":
                r = (this - s) / 6e4;
                break;
            case "hour":
                r = (this - s) / 36e5;
                break;
            case "day":
                r = (this - s - i) / 864e5;
                break;
            case "week":
                r = (this - s - i) / 6048e5;
                break;
            default:
                r = this - s
        }
        return n ? r : p(r)
    }, is.endOf = function(e) {
        return void 0 === (e = T(e)) || "millisecond" === e ? this : ("date" === e && (e = "day"), this.startOf(e).add(1, "isoWeek" === e ? "week" : e).subtract(1, "ms"))
    }, is.format = function(t) {
        t || (t = this.isUtc() ? e.defaultFormatUtc : e.defaultFormat);
        var n = N(this, t);
        return this.localeData().postformat(n)
    }, is.from = function(e, t) {
        return this.isValid() && (g(e) && e.isValid() || Ie(e).isValid()) ? Ke({
            to: this,
            from: e
        }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
    }, is.fromNow = function(e) {
        return this.from(Ie(), e)
    }, is.to = function(e, t) {
        return this.isValid() && (g(e) && e.isValid() || Ie(e).isValid()) ? Ke({
            from: this,
            to: e
        }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
    }, is.toNow = function(e) {
        return this.to(Ie(), e)
    }, is.get = function(e) {
        return e = T(e), D(this[e]) ? this[e]() : this
    }, is.invalidAt = function() {
        return c(this).overflow
    }, is.isAfter = function(e, t) {
        var n = g(e) ? e : Ie(e);
        return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = T(i(t) ? "millisecond" : t)) ? this.valueOf() > n.valueOf() : n.valueOf() < this.clone().startOf(t).valueOf())
    }, is.isBefore = function(e, t) {
        var n = g(e) ? e : Ie(e);
        return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = T(i(t) ? "millisecond" : t)) ? this.valueOf() < n.valueOf() : this.clone().endOf(t).valueOf() < n.valueOf())
    }, is.isBetween = function(e, t, n, s) {
        return ("(" === (s = s || "()")[0] ? this.isAfter(e, n) : !this.isBefore(e, n)) && (")" === s[1] ? this.isBefore(t, n) : !this.isAfter(t, n))
    }, is.isSame = function(e, t) {
        var n, s = g(e) ? e : Ie(e);
        return !(!this.isValid() || !s.isValid()) && ("millisecond" === (t = T(t || "millisecond")) ? this.valueOf() === s.valueOf() : (n = s.valueOf(), this.clone().startOf(t).valueOf() <= n && n <= this.clone().endOf(t).valueOf()))
    }, is.isSameOrAfter = function(e, t) {
        return this.isSame(e, t) || this.isAfter(e, t)
    }, is.isSameOrBefore = function(e, t) {
        return this.isSame(e, t) || this.isBefore(e, t)
    }, is.isValid = function() {
        return f(this)
    }, is.lang = Xn, is.locale = at, is.localeData = ot, is.max = zn, is.min = An, is.parsingFlags = function() {
        return l({}, c(this))
    }, is.set = function(e, t) {
        if ("object" == typeof e)
            for (var n = W(e = b(e)), s = 0; s < n.length; s++) this[n[s].unit](e[n[s].unit]);
        else if (e = T(e), D(this[e])) return this[e](t);
        return this
    }, is.startOf = function(e) {
        switch (e = T(e)) {
            case "year":
                this.month(0);
            case "quarter":
            case "month":
                this.date(1);
            case "week":
            case "isoWeek":
            case "day":
            case "date":
                this.hours(0);
            case "hour":
                this.minutes(0);
            case "minute":
                this.seconds(0);
            case "second":
                this.milliseconds(0)
        }
        return "week" === e && this.weekday(0), "isoWeek" === e && this.isoWeekday(1), "quarter" === e && this.month(3 * Math.floor(this.month() / 3)), this
    }, is.subtract = Qn, is.toArray = function() {
        var e = this;
        return [e.year(), e.month(), e.date(), e.hour(), e.minute(), e.second(), e.millisecond()]
    }, is.toObject = function() {
        var e = this;
        return {
            years: e.year(),
            months: e.month(),
            date: e.date(),
            hours: e.hours(),
            minutes: e.minutes(),
            seconds: e.seconds(),
            milliseconds: e.milliseconds()
        }
    }, is.toDate = function() {
        return new Date(this.valueOf())
    }, is.toISOString = function() {
        if (!this.isValid()) return null;
        var e = this.clone().utc();
        return e.year() < 0 || e.year() > 9999 ? N(e, "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]") : D(Date.prototype.toISOString) ? this.toDate().toISOString() : N(e, "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")
    }, is.inspect = function() {
        if (!this.isValid()) return "moment.invalid(/* " + this._i + " */)";
        var e = "moment",
            t = "";
        this.isLocal() || (e = 0 === this.utcOffset() ? "moment.utc" : "moment.parseZone", t = "Z");
        var n = "[" + e + '("]',
            s = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY",
            i = t + '[")]';
        return this.format(n + s + "-MM-DD[T]HH:mm:ss.SSS" + i)
    }, is.toJSON = function() {
        return this.isValid() ? this.toISOString() : null
    }, is.toString = function() {
        return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")
    }, is.unix = function() {
        return Math.floor(this.valueOf() / 1e3)
    }, is.valueOf = function() {
        return this._d.valueOf() - 6e4 * (this._offset || 0)
    }, is.creationData = function() {
        return {
            input: this._i,
            format: this._f,
            locale: this._locale,
            isUTC: this._isUTC,
            strict: this._strict
        }
    }, is.year = gn, is.isLeapYear = function() {
        return Z(this.year())
    }, is.weekYear = function(e) {
        return lt.call(this, e, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy)
    }, is.isoWeekYear = function(e) {
        return lt.call(this, e, this.isoWeek(), this.isoWeekday(), 1, 4)
    }, is.quarter = is.quarters = function(e) {
        return null == e ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (e - 1) + this.month() % 3)
    }, is.month = ee, is.daysInMonth = function() {
        return Q(this.year(), this.month())
    }, is.week = is.weeks = function(e) {
        var t = this.localeData().week(this);
        return null == e ? t : this.add(7 * (e - t), "d")
    }, is.isoWeek = is.isoWeeks = function(e) {
        var t = ae(this, 1, 4).week;
        return null == e ? t : this.add(7 * (e - t), "d")
    }, is.weeksInYear = function() {
        var e = this.localeData()._week;
        return oe(this.year(), e.dow, e.doy)
    }, is.isoWeeksInYear = function() {
        return oe(this.year(), 1, 4)
    }, is.date = Kn, is.day = is.days = function(e) {
        if (!this.isValid()) return null != e ? this : NaN;
        var t = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
        return null != e ? (e = ue(e, this.localeData()), this.add(e - t, "d")) : t
    }, is.weekday = function(e) {
        if (!this.isValid()) return null != e ? this : NaN;
        var t = (this.day() + 7 - this.localeData()._week.dow) % 7;
        return null == e ? t : this.add(e - t, "d")
    }, is.isoWeekday = function(e) {
        if (!this.isValid()) return null != e ? this : NaN;
        if (null != e) {
            var t = le(e, this.localeData());
            return this.day(this.day() % 7 ? t : t - 7)
        }
        return this.day() || 7
    }, is.dayOfYear = function(e) {
        var t = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1;
        return null == e ? t : this.add(e - t, "d")
    }, is.hour = is.hours = Rn, is.minute = is.minutes = es, is.second = is.seconds = ts, is.millisecond = is.milliseconds = ss, is.utcOffset = function(t, n, s) {
        var i, r = this._offset || 0;
        if (!this.isValid()) return null != t ? this : NaN;
        if (null != t) {
            if ("string" == typeof t) {
                if (null === (t = Je(tn, t))) return this
            } else Math.abs(t) < 16 && !s && (t *= 60);
            return !this._isUTC && n && (i = Qe(this)), this._offset = t, this._isUTC = !0, null != i && this.add(i, "m"), r !== t && (!n || this._changeInProgress ? it(this, Ke(t - r, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, e.updateOffset(this, !0), this._changeInProgress = null)), this
        }
        return this._isUTC ? r : Qe(this)
    }, is.utc = function(e) {
        return this.utcOffset(0, e)
    }, is.local = function(e) {
        return this._isUTC && (this.utcOffset(0, e), this._isUTC = !1, e && this.subtract(Qe(this), "m")), this
    }, is.parseZone = function() {
        if (null != this._tzm) this.utcOffset(this._tzm, !1, !0);
        else if ("string" == typeof this._i) {
            var e = Je(en, this._i);
            null != e ? this.utcOffset(e) : this.utcOffset(0, !0)
        }
        return this
    }, is.hasAlignedHourOffset = function(e) {
        return !!this.isValid() && (e = e ? Ie(e).utcOffset() : 0, (this.utcOffset() - e) % 60 == 0)
    }, is.isDST = function() {
        return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset()
    }, is.isLocal = function() {
        return !!this.isValid() && !this._isUTC
    }, is.isUtcOffset = function() {
        return !!this.isValid() && this._isUTC
    }, is.isUtc = Xe, is.isUTC = Xe, is.zoneAbbr = function() {
        return this._isUTC ? "UTC" : ""
    }, is.zoneName = function() {
        return this._isUTC ? "Coordinated Universal Time" : ""
    }, is.dates = k("dates accessor is deprecated. Use date instead.", Kn), is.months = k("months accessor is deprecated. Use month instead", ee), is.years = k("years accessor is deprecated. Use year instead", gn), is.zone = k("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", function(e, t) {
        return null != e ? ("string" != typeof e && (e = -e), this.utcOffset(e, t), this) : -this.utcOffset()
    }), is.isDSTShifted = k("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", function() {
        if (!i(this._isDSTShifted)) return this._isDSTShifted;
        var e = {};
        if (_(e, this), (e = Ge(e))._a) {
            var t = e._isUTC ? d(e._a) : Ie(e._a);
            this._isDSTShifted = this.isValid() && v(e._a, t.toArray()) > 0
        } else this._isDSTShifted = !1;
        return this._isDSTShifted
    });
    var rs = O.prototype;
    rs.calendar = function(e, t, n) {
        var s = this._calendar[e] || this._calendar.sameElse;
        return D(s) ? s.call(t, n) : s
    }, rs.longDateFormat = function(e) {
        var t = this._longDateFormat[e],
            n = this._longDateFormat[e.toUpperCase()];
        return t || !n ? t : (this._longDateFormat[e] = n.replace(/MMMM|MM|DD|dddd/g, function(e) {
            return e.slice(1)
        }), this._longDateFormat[e])
    }, rs.invalidDate = function() {
        return this._invalidDate
    }, rs.ordinal = function(e) {
        return this._ordinal.replace("%d", e)
    }, rs.preparse = ht, rs.postformat = ht, rs.relativeTime = function(e, t, n, s) {
        var i = this._relativeTime[n];
        return D(i) ? i(e, t, n, s) : i.replace(/%d/i, e)
    }, rs.pastFuture = function(e, t) {
        var n = this._relativeTime[e > 0 ? "future" : "past"];
        return D(n) ? n(t) : n.replace(/%s/i, t)
    }, rs.set = function(e) {
        var t, n;
        for (n in e) D(t = e[n]) ? this[n] = t : this["_" + n] = t;
        this._config = e, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source)
    }, rs.months = function(e, n) {
        return e ? t(this._months) ? this._months[e.month()] : this._months[(this._months.isFormat || pn).test(n) ? "format" : "standalone"][e.month()] : t(this._months) ? this._months : this._months.standalone
    }, rs.monthsShort = function(e, n) {
        return e ? t(this._monthsShort) ? this._monthsShort[e.month()] : this._monthsShort[pn.test(n) ? "format" : "standalone"][e.month()] : t(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone
    }, rs.monthsParse = function(e, t, n) {
        var s, i, r;
        if (this._monthsParseExact) return X.call(this, e, t, n);
        for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), s = 0; s < 12; s++) {
            if (i = d([2e3, s]), n && !this._longMonthsParse[s] && (this._longMonthsParse[s] = new RegExp("^" + this.months(i, "").replace(".", "") + "$", "i"), this._shortMonthsParse[s] = new RegExp("^" + this.monthsShort(i, "").replace(".", "") + "$", "i")), n || this._monthsParse[s] || (r = "^" + this.months(i, "") + "|^" + this.monthsShort(i, ""), this._monthsParse[s] = new RegExp(r.replace(".", ""), "i")), n && "MMMM" === t && this._longMonthsParse[s].test(e)) return s;
            if (n && "MMM" === t && this._shortMonthsParse[s].test(e)) return s;
            if (!n && this._monthsParse[s].test(e)) return s
        }
    }, rs.monthsRegex = function(e) {
        return this._monthsParseExact ? (u(this, "_monthsRegex") || te.call(this), e ? this._monthsStrictRegex : this._monthsRegex) : (u(this, "_monthsRegex") || (this._monthsRegex = kn), this._monthsStrictRegex && e ? this._monthsStrictRegex : this._monthsRegex)
    }, rs.monthsShortRegex = function(e) {
        return this._monthsParseExact ? (u(this, "_monthsRegex") || te.call(this), e ? this._monthsShortStrictRegex : this._monthsShortRegex) : (u(this, "_monthsShortRegex") || (this._monthsShortRegex = Mn), this._monthsShortStrictRegex && e ? this._monthsShortStrictRegex : this._monthsShortRegex)
    }, rs.week = function(e) {
        return ae(e, this._week.dow, this._week.doy).week
    }, rs.firstDayOfYear = function() {
        return this._week.doy
    }, rs.firstDayOfWeek = function() {
        return this._week.dow
    }, rs.weekdays = function(e, n) {
        return e ? t(this._weekdays) ? this._weekdays[e.day()] : this._weekdays[this._weekdays.isFormat.test(n) ? "format" : "standalone"][e.day()] : t(this._weekdays) ? this._weekdays : this._weekdays.standalone
    }, rs.weekdaysMin = function(e) {
        return e ? this._weekdaysMin[e.day()] : this._weekdaysMin
    }, rs.weekdaysShort = function(e) {
        return e ? this._weekdaysShort[e.day()] : this._weekdaysShort
    }, rs.weekdaysParse = function(e, t, n) {
        var s, i, r;
        if (this._weekdaysParseExact) return de.call(this, e, t, n);
        for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), s = 0; s < 7; s++) {
            if (i = d([2e3, 1]).day(s), n && !this._fullWeekdaysParse[s] && (this._fullWeekdaysParse[s] = new RegExp("^" + this.weekdays(i, "").replace(".", ".?") + "$", "i"), this._shortWeekdaysParse[s] = new RegExp("^" + this.weekdaysShort(i, "").replace(".", ".?") + "$", "i"), this._minWeekdaysParse[s] = new RegExp("^" + this.weekdaysMin(i, "").replace(".", ".?") + "$", "i")), this._weekdaysParse[s] || (r = "^" + this.weekdays(i, "") + "|^" + this.weekdaysShort(i, "") + "|^" + this.weekdaysMin(i, ""), this._weekdaysParse[s] = new RegExp(r.replace(".", ""), "i")), n && "dddd" === t && this._fullWeekdaysParse[s].test(e)) return s;
            if (n && "ddd" === t && this._shortWeekdaysParse[s].test(e)) return s;
            if (n && "dd" === t && this._minWeekdaysParse[s].test(e)) return s;
            if (!n && this._weekdaysParse[s].test(e)) return s
        }
    }, rs.weekdaysRegex = function(e) {
        return this._weekdaysParseExact ? (u(this, "_weekdaysRegex") || he.call(this), e ? this._weekdaysStrictRegex : this._weekdaysRegex) : (u(this, "_weekdaysRegex") || (this._weekdaysRegex = xn), this._weekdaysStrictRegex && e ? this._weekdaysStrictRegex : this._weekdaysRegex)
    }, rs.weekdaysShortRegex = function(e) {
        return this._weekdaysParseExact ? (u(this, "_weekdaysRegex") || he.call(this), e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (u(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = Tn), this._weekdaysShortStrictRegex && e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex)
    }, rs.weekdaysMinRegex = function(e) {
        return this._weekdaysParseExact ? (u(this, "_weekdaysRegex") || he.call(this), e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (u(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = bn), this._weekdaysMinStrictRegex && e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex)
    }, rs.isPM = function(e) {
        return "p" === (e + "").toLowerCase().charAt(0)
    }, rs.meridiem = function(e, t, n) {
        return e > 11 ? n ? "pm" : "PM" : n ? "am" : "AM"
    }, pe("en", {
        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
        ordinal: function(e) {
            var t = e % 10;
            return e + (1 === w(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th")
        }
    }), e.lang = k("moment.lang is deprecated. Use moment.locale instead.", pe), e.langData = k("moment.langData is deprecated. Use moment.localeData instead.", ve);
    var as = Math.abs,
        os = wt("ms"),
        us = wt("s"),
        ls = wt("m"),
        ds = wt("h"),
        hs = wt("d"),
        cs = wt("w"),
        fs = wt("M"),
        ms = wt("y"),
        _s = vt("milliseconds"),
        ys = vt("seconds"),
        gs = vt("minutes"),
        ps = vt("hours"),
        ws = vt("days"),
        vs = vt("months"),
        Ms = vt("years"),
        ks = Math.round,
        Ss = {
            ss: 44,
            s: 45,
            m: 45,
            h: 22,
            d: 26,
            M: 11
        },
        Ds = Math.abs,
        Ys = ze.prototype;
    return Ys.isValid = function() {
            return this._isValid
        }, Ys.abs = function() {
            var e = this._data;
            return this._milliseconds = as(this._milliseconds), this._days = as(this._days), this._months = as(this._months), e.milliseconds = as(e.milliseconds), e.seconds = as(e.seconds), e.minutes = as(e.minutes), e.hours = as(e.hours), e.months = as(e.months), e.years = as(e.years), this
        }, Ys.add = function(e, t) {
            return _t(this, e, t, 1)
        }, Ys.subtract = function(e, t) {
            return _t(this, e, t, -1)
        }, Ys.as = function(e) {
            if (!this.isValid()) return NaN;
            var t, n, s = this._milliseconds;
            if ("month" === (e = T(e)) || "year" === e) return t = this._days + s / 864e5, n = this._months + gt(t), "month" === e ? n : n / 12;
            switch (t = this._days + Math.round(pt(this._months)), e) {
                case "week":
                    return t / 7 + s / 6048e5;
                case "day":
                    return t + s / 864e5;
                case "hour":
                    return 24 * t + s / 36e5;
                case "minute":
                    return 1440 * t + s / 6e4;
                case "second":
                    return 86400 * t + s / 1e3;
                case "millisecond":
                    return Math.floor(864e5 * t) + s;
                default:
                    throw new Error("Unknown unit " + e)
            }
        }, Ys.asMilliseconds = os, Ys.asSeconds = us, Ys.asMinutes = ls, Ys.asHours = ds, Ys.asDays = hs, Ys.asWeeks = cs, Ys.asMonths = fs, Ys.asYears = ms, Ys.valueOf = function() {
            return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * w(this._months / 12) : NaN
        }, Ys._bubble = function() {
            var e, t, n, s, i, r = this._milliseconds,
                a = this._days,
                o = this._months,
                u = this._data;
            return r >= 0 && a >= 0 && o >= 0 || r <= 0 && a <= 0 && o <= 0 || (r += 864e5 * yt(pt(o) + a), a = 0, o = 0), u.milliseconds = r % 1e3, e = p(r / 1e3), u.seconds = e % 60, t = p(e / 60), u.minutes = t % 60, n = p(t / 60), u.hours = n % 24, a += p(n / 24), i = p(gt(a)), o += i, a -= yt(pt(i)), s = p(o / 12), o %= 12, u.days = a, u.months = o, u.years = s, this
        }, Ys.clone = function() {
            return Ke(this)
        }, Ys.get = function(e) {
            return e = T(e), this.isValid() ? this[e + "s"]() : NaN
        }, Ys.milliseconds = _s, Ys.seconds = ys, Ys.minutes = gs, Ys.hours = ps, Ys.days = ws, Ys.weeks = function() {
            return p(this.days() / 7)
        }, Ys.months = vs, Ys.years = Ms, Ys.humanize = function(e) {
            if (!this.isValid()) return this.localeData().invalidDate();
            var t = this.localeData(),
                n = kt(this, !e, t);
            return e && (n = t.pastFuture(+this, n)), t.postformat(n)
        }, Ys.toISOString = Dt, Ys.toString = Dt, Ys.toJSON = Dt, Ys.locale = at, Ys.localeData = ot, Ys.toIsoString = k("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", Dt), Ys.lang = Xn, C("X", 0, 0, "unix"), C("x", 0, 0, "valueOf"), L("x", Kt), L("X", nn), I("X", function(e, t, n) {
            n._d = new Date(1e3 * parseFloat(e, 10))
        }), I("x", function(e, t, n) {
            n._d = new Date(w(e))
        }), e.version = "2.19.2",
        function(e) {
            Yt = e
        }(Ie), e.fn = is, e.min = function() {
            return Ee("isBefore", [].slice.call(arguments, 0))
        }, e.max = function() {
            return Ee("isAfter", [].slice.call(arguments, 0))
        }, e.now = function() {
            return Date.now ? Date.now() : +new Date
        }, e.utc = d, e.unix = function(e) {
            return Ie(1e3 * e)
        }, e.months = function(e, t) {
            return ft(e, t, "months")
        }, e.isDate = a, e.locale = pe, e.invalid = m, e.duration = Ke, e.isMoment = g, e.weekdays = function(e, t, n) {
            return mt(e, t, n, "weekdays")
        }, e.parseZone = function() {
            return Ie.apply(null, arguments).parseZone()
        }, e.localeData = ve, e.isDuration = Ze, e.monthsShort = function(e, t) {
            return ft(e, t, "monthsShort")
        }, e.weekdaysMin = function(e, t, n) {
            return mt(e, t, n, "weekdaysMin")
        }, e.defineLocale = we, e.updateLocale = function(e, t) {
            if (null != t) {
                var n, s, i = Cn;
                null != (s = ge(e)) && (i = s._config), (n = new O(t = Y(i, t))).parentLocale = Fn[e], Fn[e] = n, pe(e)
            } else null != Fn[e] && (null != Fn[e].parentLocale ? Fn[e] = Fn[e].parentLocale : null != Fn[e] && delete Fn[e]);
            return Fn[e]
        }, e.locales = function() {
            return Pt(Fn)
        }, e.weekdaysShort = function(e, t, n) {
            return mt(e, t, n, "weekdaysShort")
        }, e.normalizeUnits = T, e.relativeTimeRounding = function(e) {
            return void 0 === e ? ks : "function" == typeof e && (ks = e, !0)
        }, e.relativeTimeThreshold = function(e, t) {
            return void 0 !== Ss[e] && (void 0 === t ? Ss[e] : (Ss[e] = t, "s" === e && (Ss.ss = t - 1), !0))
        }, e.calendarFormat = function(e, t) {
            var n = e.diff(t, "days", !0);
            return n < -6 ? "sameElse" : n < -1 ? "lastWeek" : n < 0 ? "lastDay" : n < 1 ? "sameDay" : n < 2 ? "nextDay" : n < 7 ? "nextWeek" : "sameElse"
        }, e.prototype = is, e
});