cscg24-guacamole

CSCG 2024 Challenge 'Guacamole Mashup'
git clone https://git.sinitax.com/sinitax/cscg24-guacamole
Log | Files | Refs | sfeed.txt

moment-with-locales.js (632739B)


      1;(function (global, factory) {
      2    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
      3    typeof define === 'function' && define.amd ? define(factory) :
      4    global.moment = factory()
      5}(this, (function () { 'use strict';
      6
      7    var hookCallback;
      8
      9    function hooks() {
     10        return hookCallback.apply(null, arguments);
     11    }
     12
     13    // This is done to register the method called with moment()
     14    // without creating circular dependencies.
     15    function setHookCallback(callback) {
     16        hookCallback = callback;
     17    }
     18
     19    function isArray(input) {
     20        return (
     21            input instanceof Array ||
     22            Object.prototype.toString.call(input) === '[object Array]'
     23        );
     24    }
     25
     26    function isObject(input) {
     27        // IE8 will treat undefined and null as object if it wasn't for
     28        // input != null
     29        return (
     30            input != null &&
     31            Object.prototype.toString.call(input) === '[object Object]'
     32        );
     33    }
     34
     35    function hasOwnProp(a, b) {
     36        return Object.prototype.hasOwnProperty.call(a, b);
     37    }
     38
     39    function isObjectEmpty(obj) {
     40        if (Object.getOwnPropertyNames) {
     41            return Object.getOwnPropertyNames(obj).length === 0;
     42        } else {
     43            var k;
     44            for (k in obj) {
     45                if (hasOwnProp(obj, k)) {
     46                    return false;
     47                }
     48            }
     49            return true;
     50        }
     51    }
     52
     53    function isUndefined(input) {
     54        return input === void 0;
     55    }
     56
     57    function isNumber(input) {
     58        return (
     59            typeof input === 'number' ||
     60            Object.prototype.toString.call(input) === '[object Number]'
     61        );
     62    }
     63
     64    function isDate(input) {
     65        return (
     66            input instanceof Date ||
     67            Object.prototype.toString.call(input) === '[object Date]'
     68        );
     69    }
     70
     71    function map(arr, fn) {
     72        var res = [],
     73            i,
     74            arrLen = arr.length;
     75        for (i = 0; i < arrLen; ++i) {
     76            res.push(fn(arr[i], i));
     77        }
     78        return res;
     79    }
     80
     81    function extend(a, b) {
     82        for (var i in b) {
     83            if (hasOwnProp(b, i)) {
     84                a[i] = b[i];
     85            }
     86        }
     87
     88        if (hasOwnProp(b, 'toString')) {
     89            a.toString = b.toString;
     90        }
     91
     92        if (hasOwnProp(b, 'valueOf')) {
     93            a.valueOf = b.valueOf;
     94        }
     95
     96        return a;
     97    }
     98
     99    function createUTC(input, format, locale, strict) {
    100        return createLocalOrUTC(input, format, locale, strict, true).utc();
    101    }
    102
    103    function defaultParsingFlags() {
    104        // We need to deep clone this object.
    105        return {
    106            empty: false,
    107            unusedTokens: [],
    108            unusedInput: [],
    109            overflow: -2,
    110            charsLeftOver: 0,
    111            nullInput: false,
    112            invalidEra: null,
    113            invalidMonth: null,
    114            invalidFormat: false,
    115            userInvalidated: false,
    116            iso: false,
    117            parsedDateParts: [],
    118            era: null,
    119            meridiem: null,
    120            rfc2822: false,
    121            weekdayMismatch: false,
    122        };
    123    }
    124
    125    function getParsingFlags(m) {
    126        if (m._pf == null) {
    127            m._pf = defaultParsingFlags();
    128        }
    129        return m._pf;
    130    }
    131
    132    var some;
    133    if (Array.prototype.some) {
    134        some = Array.prototype.some;
    135    } else {
    136        some = function (fun) {
    137            var t = Object(this),
    138                len = t.length >>> 0,
    139                i;
    140
    141            for (i = 0; i < len; i++) {
    142                if (i in t && fun.call(this, t[i], i, t)) {
    143                    return true;
    144                }
    145            }
    146
    147            return false;
    148        };
    149    }
    150
    151    function isValid(m) {
    152        var flags = null,
    153            parsedParts = false,
    154            isNowValid = m._d && !isNaN(m._d.getTime());
    155        if (isNowValid) {
    156            flags = getParsingFlags(m);
    157            parsedParts = some.call(flags.parsedDateParts, function (i) {
    158                return i != null;
    159            });
    160            isNowValid =
    161                flags.overflow < 0 &&
    162                !flags.empty &&
    163                !flags.invalidEra &&
    164                !flags.invalidMonth &&
    165                !flags.invalidWeekday &&
    166                !flags.weekdayMismatch &&
    167                !flags.nullInput &&
    168                !flags.invalidFormat &&
    169                !flags.userInvalidated &&
    170                (!flags.meridiem || (flags.meridiem && parsedParts));
    171            if (m._strict) {
    172                isNowValid =
    173                    isNowValid &&
    174                    flags.charsLeftOver === 0 &&
    175                    flags.unusedTokens.length === 0 &&
    176                    flags.bigHour === undefined;
    177            }
    178        }
    179        if (Object.isFrozen == null || !Object.isFrozen(m)) {
    180            m._isValid = isNowValid;
    181        } else {
    182            return isNowValid;
    183        }
    184        return m._isValid;
    185    }
    186
    187    function createInvalid(flags) {
    188        var m = createUTC(NaN);
    189        if (flags != null) {
    190            extend(getParsingFlags(m), flags);
    191        } else {
    192            getParsingFlags(m).userInvalidated = true;
    193        }
    194
    195        return m;
    196    }
    197
    198    // Plugins that add properties should also add the key here (null value),
    199    // so we can properly clone ourselves.
    200    var momentProperties = (hooks.momentProperties = []),
    201        updateInProgress = false;
    202
    203    function copyConfig(to, from) {
    204        var i,
    205            prop,
    206            val,
    207            momentPropertiesLen = momentProperties.length;
    208
    209        if (!isUndefined(from._isAMomentObject)) {
    210            to._isAMomentObject = from._isAMomentObject;
    211        }
    212        if (!isUndefined(from._i)) {
    213            to._i = from._i;
    214        }
    215        if (!isUndefined(from._f)) {
    216            to._f = from._f;
    217        }
    218        if (!isUndefined(from._l)) {
    219            to._l = from._l;
    220        }
    221        if (!isUndefined(from._strict)) {
    222            to._strict = from._strict;
    223        }
    224        if (!isUndefined(from._tzm)) {
    225            to._tzm = from._tzm;
    226        }
    227        if (!isUndefined(from._isUTC)) {
    228            to._isUTC = from._isUTC;
    229        }
    230        if (!isUndefined(from._offset)) {
    231            to._offset = from._offset;
    232        }
    233        if (!isUndefined(from._pf)) {
    234            to._pf = getParsingFlags(from);
    235        }
    236        if (!isUndefined(from._locale)) {
    237            to._locale = from._locale;
    238        }
    239
    240        if (momentPropertiesLen > 0) {
    241            for (i = 0; i < momentPropertiesLen; i++) {
    242                prop = momentProperties[i];
    243                val = from[prop];
    244                if (!isUndefined(val)) {
    245                    to[prop] = val;
    246                }
    247            }
    248        }
    249
    250        return to;
    251    }
    252
    253    // Moment prototype object
    254    function Moment(config) {
    255        copyConfig(this, config);
    256        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
    257        if (!this.isValid()) {
    258            this._d = new Date(NaN);
    259        }
    260        // Prevent infinite loop in case updateOffset creates new moment
    261        // objects.
    262        if (updateInProgress === false) {
    263            updateInProgress = true;
    264            hooks.updateOffset(this);
    265            updateInProgress = false;
    266        }
    267    }
    268
    269    function isMoment(obj) {
    270        return (
    271            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
    272        );
    273    }
    274
    275    function warn(msg) {
    276        if (
    277            hooks.suppressDeprecationWarnings === false &&
    278            typeof console !== 'undefined' &&
    279            console.warn
    280        ) {
    281            console.warn('Deprecation warning: ' + msg);
    282        }
    283    }
    284
    285    function deprecate(msg, fn) {
    286        var firstTime = true;
    287
    288        return extend(function () {
    289            if (hooks.deprecationHandler != null) {
    290                hooks.deprecationHandler(null, msg);
    291            }
    292            if (firstTime) {
    293                var args = [],
    294                    arg,
    295                    i,
    296                    key,
    297                    argLen = arguments.length;
    298                for (i = 0; i < argLen; i++) {
    299                    arg = '';
    300                    if (typeof arguments[i] === 'object') {
    301                        arg += '\n[' + i + '] ';
    302                        for (key in arguments[0]) {
    303                            if (hasOwnProp(arguments[0], key)) {
    304                                arg += key + ': ' + arguments[0][key] + ', ';
    305                            }
    306                        }
    307                        arg = arg.slice(0, -2); // Remove trailing comma and space
    308                    } else {
    309                        arg = arguments[i];
    310                    }
    311                    args.push(arg);
    312                }
    313                warn(
    314                    msg +
    315                        '\nArguments: ' +
    316                        Array.prototype.slice.call(args).join('') +
    317                        '\n' +
    318                        new Error().stack
    319                );
    320                firstTime = false;
    321            }
    322            return fn.apply(this, arguments);
    323        }, fn);
    324    }
    325
    326    var deprecations = {};
    327
    328    function deprecateSimple(name, msg) {
    329        if (hooks.deprecationHandler != null) {
    330            hooks.deprecationHandler(name, msg);
    331        }
    332        if (!deprecations[name]) {
    333            warn(msg);
    334            deprecations[name] = true;
    335        }
    336    }
    337
    338    hooks.suppressDeprecationWarnings = false;
    339    hooks.deprecationHandler = null;
    340
    341    function isFunction(input) {
    342        return (
    343            (typeof Function !== 'undefined' && input instanceof Function) ||
    344            Object.prototype.toString.call(input) === '[object Function]'
    345        );
    346    }
    347
    348    function set(config) {
    349        var prop, i;
    350        for (i in config) {
    351            if (hasOwnProp(config, i)) {
    352                prop = config[i];
    353                if (isFunction(prop)) {
    354                    this[i] = prop;
    355                } else {
    356                    this['_' + i] = prop;
    357                }
    358            }
    359        }
    360        this._config = config;
    361        // Lenient ordinal parsing accepts just a number in addition to
    362        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
    363        // TODO: Remove "ordinalParse" fallback in next major release.
    364        this._dayOfMonthOrdinalParseLenient = new RegExp(
    365            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
    366                '|' +
    367                /\d{1,2}/.source
    368        );
    369    }
    370
    371    function mergeConfigs(parentConfig, childConfig) {
    372        var res = extend({}, parentConfig),
    373            prop;
    374        for (prop in childConfig) {
    375            if (hasOwnProp(childConfig, prop)) {
    376                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
    377                    res[prop] = {};
    378                    extend(res[prop], parentConfig[prop]);
    379                    extend(res[prop], childConfig[prop]);
    380                } else if (childConfig[prop] != null) {
    381                    res[prop] = childConfig[prop];
    382                } else {
    383                    delete res[prop];
    384                }
    385            }
    386        }
    387        for (prop in parentConfig) {
    388            if (
    389                hasOwnProp(parentConfig, prop) &&
    390                !hasOwnProp(childConfig, prop) &&
    391                isObject(parentConfig[prop])
    392            ) {
    393                // make sure changes to properties don't modify parent config
    394                res[prop] = extend({}, res[prop]);
    395            }
    396        }
    397        return res;
    398    }
    399
    400    function Locale(config) {
    401        if (config != null) {
    402            this.set(config);
    403        }
    404    }
    405
    406    var keys;
    407
    408    if (Object.keys) {
    409        keys = Object.keys;
    410    } else {
    411        keys = function (obj) {
    412            var i,
    413                res = [];
    414            for (i in obj) {
    415                if (hasOwnProp(obj, i)) {
    416                    res.push(i);
    417                }
    418            }
    419            return res;
    420        };
    421    }
    422
    423    var defaultCalendar = {
    424        sameDay: '[Today at] LT',
    425        nextDay: '[Tomorrow at] LT',
    426        nextWeek: 'dddd [at] LT',
    427        lastDay: '[Yesterday at] LT',
    428        lastWeek: '[Last] dddd [at] LT',
    429        sameElse: 'L',
    430    };
    431
    432    function calendar(key, mom, now) {
    433        var output = this._calendar[key] || this._calendar['sameElse'];
    434        return isFunction(output) ? output.call(mom, now) : output;
    435    }
    436
    437    function zeroFill(number, targetLength, forceSign) {
    438        var absNumber = '' + Math.abs(number),
    439            zerosToFill = targetLength - absNumber.length,
    440            sign = number >= 0;
    441        return (
    442            (sign ? (forceSign ? '+' : '') : '-') +
    443            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
    444            absNumber
    445        );
    446    }
    447
    448    var formattingTokens =
    449            /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
    450        localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
    451        formatFunctions = {},
    452        formatTokenFunctions = {};
    453
    454    // token:    'M'
    455    // padded:   ['MM', 2]
    456    // ordinal:  'Mo'
    457    // callback: function () { this.month() + 1 }
    458    function addFormatToken(token, padded, ordinal, callback) {
    459        var func = callback;
    460        if (typeof callback === 'string') {
    461            func = function () {
    462                return this[callback]();
    463            };
    464        }
    465        if (token) {
    466            formatTokenFunctions[token] = func;
    467        }
    468        if (padded) {
    469            formatTokenFunctions[padded[0]] = function () {
    470                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
    471            };
    472        }
    473        if (ordinal) {
    474            formatTokenFunctions[ordinal] = function () {
    475                return this.localeData().ordinal(
    476                    func.apply(this, arguments),
    477                    token
    478                );
    479            };
    480        }
    481    }
    482
    483    function removeFormattingTokens(input) {
    484        if (input.match(/\[[\s\S]/)) {
    485            return input.replace(/^\[|\]$/g, '');
    486        }
    487        return input.replace(/\\/g, '');
    488    }
    489
    490    function makeFormatFunction(format) {
    491        var array = format.match(formattingTokens),
    492            i,
    493            length;
    494
    495        for (i = 0, length = array.length; i < length; i++) {
    496            if (formatTokenFunctions[array[i]]) {
    497                array[i] = formatTokenFunctions[array[i]];
    498            } else {
    499                array[i] = removeFormattingTokens(array[i]);
    500            }
    501        }
    502
    503        return function (mom) {
    504            var output = '',
    505                i;
    506            for (i = 0; i < length; i++) {
    507                output += isFunction(array[i])
    508                    ? array[i].call(mom, format)
    509                    : array[i];
    510            }
    511            return output;
    512        };
    513    }
    514
    515    // format date using native date object
    516    function formatMoment(m, format) {
    517        if (!m.isValid()) {
    518            return m.localeData().invalidDate();
    519        }
    520
    521        format = expandFormat(format, m.localeData());
    522        formatFunctions[format] =
    523            formatFunctions[format] || makeFormatFunction(format);
    524
    525        return formatFunctions[format](m);
    526    }
    527
    528    function expandFormat(format, locale) {
    529        var i = 5;
    530
    531        function replaceLongDateFormatTokens(input) {
    532            return locale.longDateFormat(input) || input;
    533        }
    534
    535        localFormattingTokens.lastIndex = 0;
    536        while (i >= 0 && localFormattingTokens.test(format)) {
    537            format = format.replace(
    538                localFormattingTokens,
    539                replaceLongDateFormatTokens
    540            );
    541            localFormattingTokens.lastIndex = 0;
    542            i -= 1;
    543        }
    544
    545        return format;
    546    }
    547
    548    var defaultLongDateFormat = {
    549        LTS: 'h:mm:ss A',
    550        LT: 'h:mm A',
    551        L: 'MM/DD/YYYY',
    552        LL: 'MMMM D, YYYY',
    553        LLL: 'MMMM D, YYYY h:mm A',
    554        LLLL: 'dddd, MMMM D, YYYY h:mm A',
    555    };
    556
    557    function longDateFormat(key) {
    558        var format = this._longDateFormat[key],
    559            formatUpper = this._longDateFormat[key.toUpperCase()];
    560
    561        if (format || !formatUpper) {
    562            return format;
    563        }
    564
    565        this._longDateFormat[key] = formatUpper
    566            .match(formattingTokens)
    567            .map(function (tok) {
    568                if (
    569                    tok === 'MMMM' ||
    570                    tok === 'MM' ||
    571                    tok === 'DD' ||
    572                    tok === 'dddd'
    573                ) {
    574                    return tok.slice(1);
    575                }
    576                return tok;
    577            })
    578            .join('');
    579
    580        return this._longDateFormat[key];
    581    }
    582
    583    var defaultInvalidDate = 'Invalid date';
    584
    585    function invalidDate() {
    586        return this._invalidDate;
    587    }
    588
    589    var defaultOrdinal = '%d',
    590        defaultDayOfMonthOrdinalParse = /\d{1,2}/;
    591
    592    function ordinal(number) {
    593        return this._ordinal.replace('%d', number);
    594    }
    595
    596    var defaultRelativeTime = {
    597        future: 'in %s',
    598        past: '%s ago',
    599        s: 'a few seconds',
    600        ss: '%d seconds',
    601        m: 'a minute',
    602        mm: '%d minutes',
    603        h: 'an hour',
    604        hh: '%d hours',
    605        d: 'a day',
    606        dd: '%d days',
    607        w: 'a week',
    608        ww: '%d weeks',
    609        M: 'a month',
    610        MM: '%d months',
    611        y: 'a year',
    612        yy: '%d years',
    613    };
    614
    615    function relativeTime(number, withoutSuffix, string, isFuture) {
    616        var output = this._relativeTime[string];
    617        return isFunction(output)
    618            ? output(number, withoutSuffix, string, isFuture)
    619            : output.replace(/%d/i, number);
    620    }
    621
    622    function pastFuture(diff, output) {
    623        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
    624        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
    625    }
    626
    627    var aliases = {
    628        D: 'date',
    629        dates: 'date',
    630        date: 'date',
    631        d: 'day',
    632        days: 'day',
    633        day: 'day',
    634        e: 'weekday',
    635        weekdays: 'weekday',
    636        weekday: 'weekday',
    637        E: 'isoWeekday',
    638        isoweekdays: 'isoWeekday',
    639        isoweekday: 'isoWeekday',
    640        DDD: 'dayOfYear',
    641        dayofyears: 'dayOfYear',
    642        dayofyear: 'dayOfYear',
    643        h: 'hour',
    644        hours: 'hour',
    645        hour: 'hour',
    646        ms: 'millisecond',
    647        milliseconds: 'millisecond',
    648        millisecond: 'millisecond',
    649        m: 'minute',
    650        minutes: 'minute',
    651        minute: 'minute',
    652        M: 'month',
    653        months: 'month',
    654        month: 'month',
    655        Q: 'quarter',
    656        quarters: 'quarter',
    657        quarter: 'quarter',
    658        s: 'second',
    659        seconds: 'second',
    660        second: 'second',
    661        gg: 'weekYear',
    662        weekyears: 'weekYear',
    663        weekyear: 'weekYear',
    664        GG: 'isoWeekYear',
    665        isoweekyears: 'isoWeekYear',
    666        isoweekyear: 'isoWeekYear',
    667        w: 'week',
    668        weeks: 'week',
    669        week: 'week',
    670        W: 'isoWeek',
    671        isoweeks: 'isoWeek',
    672        isoweek: 'isoWeek',
    673        y: 'year',
    674        years: 'year',
    675        year: 'year',
    676    };
    677
    678    function normalizeUnits(units) {
    679        return typeof units === 'string'
    680            ? aliases[units] || aliases[units.toLowerCase()]
    681            : undefined;
    682    }
    683
    684    function normalizeObjectUnits(inputObject) {
    685        var normalizedInput = {},
    686            normalizedProp,
    687            prop;
    688
    689        for (prop in inputObject) {
    690            if (hasOwnProp(inputObject, prop)) {
    691                normalizedProp = normalizeUnits(prop);
    692                if (normalizedProp) {
    693                    normalizedInput[normalizedProp] = inputObject[prop];
    694                }
    695            }
    696        }
    697
    698        return normalizedInput;
    699    }
    700
    701    var priorities = {
    702        date: 9,
    703        day: 11,
    704        weekday: 11,
    705        isoWeekday: 11,
    706        dayOfYear: 4,
    707        hour: 13,
    708        millisecond: 16,
    709        minute: 14,
    710        month: 8,
    711        quarter: 7,
    712        second: 15,
    713        weekYear: 1,
    714        isoWeekYear: 1,
    715        week: 5,
    716        isoWeek: 5,
    717        year: 1,
    718    };
    719
    720    function getPrioritizedUnits(unitsObj) {
    721        var units = [],
    722            u;
    723        for (u in unitsObj) {
    724            if (hasOwnProp(unitsObj, u)) {
    725                units.push({ unit: u, priority: priorities[u] });
    726            }
    727        }
    728        units.sort(function (a, b) {
    729            return a.priority - b.priority;
    730        });
    731        return units;
    732    }
    733
    734    var match1 = /\d/, //       0 - 9
    735        match2 = /\d\d/, //      00 - 99
    736        match3 = /\d{3}/, //     000 - 999
    737        match4 = /\d{4}/, //    0000 - 9999
    738        match6 = /[+-]?\d{6}/, // -999999 - 999999
    739        match1to2 = /\d\d?/, //       0 - 99
    740        match3to4 = /\d\d\d\d?/, //     999 - 9999
    741        match5to6 = /\d\d\d\d\d\d?/, //   99999 - 999999
    742        match1to3 = /\d{1,3}/, //       0 - 999
    743        match1to4 = /\d{1,4}/, //       0 - 9999
    744        match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
    745        matchUnsigned = /\d+/, //       0 - inf
    746        matchSigned = /[+-]?\d+/, //    -inf - inf
    747        matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
    748        matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
    749        matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
    750        // any word (or two) characters or numbers including two/three word month in arabic.
    751        // includes scottish gaelic two word and hyphenated months
    752        matchWord =
    753            /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
    754        match1to2NoLeadingZero = /^[1-9]\d?/, //         1-99
    755        match1to2HasZero = /^([1-9]\d|\d)/, //           0-99
    756        regexes;
    757
    758    regexes = {};
    759
    760    function addRegexToken(token, regex, strictRegex) {
    761        regexes[token] = isFunction(regex)
    762            ? regex
    763            : function (isStrict, localeData) {
    764                  return isStrict && strictRegex ? strictRegex : regex;
    765              };
    766    }
    767
    768    function getParseRegexForToken(token, config) {
    769        if (!hasOwnProp(regexes, token)) {
    770            return new RegExp(unescapeFormat(token));
    771        }
    772
    773        return regexes[token](config._strict, config._locale);
    774    }
    775
    776    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
    777    function unescapeFormat(s) {
    778        return regexEscape(
    779            s
    780                .replace('\\', '')
    781                .replace(
    782                    /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,
    783                    function (matched, p1, p2, p3, p4) {
    784                        return p1 || p2 || p3 || p4;
    785                    }
    786                )
    787        );
    788    }
    789
    790    function regexEscape(s) {
    791        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
    792    }
    793
    794    function absFloor(number) {
    795        if (number < 0) {
    796            // -0 -> 0
    797            return Math.ceil(number) || 0;
    798        } else {
    799            return Math.floor(number);
    800        }
    801    }
    802
    803    function toInt(argumentForCoercion) {
    804        var coercedNumber = +argumentForCoercion,
    805            value = 0;
    806
    807        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
    808            value = absFloor(coercedNumber);
    809        }
    810
    811        return value;
    812    }
    813
    814    var tokens = {};
    815
    816    function addParseToken(token, callback) {
    817        var i,
    818            func = callback,
    819            tokenLen;
    820        if (typeof token === 'string') {
    821            token = [token];
    822        }
    823        if (isNumber(callback)) {
    824            func = function (input, array) {
    825                array[callback] = toInt(input);
    826            };
    827        }
    828        tokenLen = token.length;
    829        for (i = 0; i < tokenLen; i++) {
    830            tokens[token[i]] = func;
    831        }
    832    }
    833
    834    function addWeekParseToken(token, callback) {
    835        addParseToken(token, function (input, array, config, token) {
    836            config._w = config._w || {};
    837            callback(input, config._w, config, token);
    838        });
    839    }
    840
    841    function addTimeToArrayFromToken(token, input, config) {
    842        if (input != null && hasOwnProp(tokens, token)) {
    843            tokens[token](input, config._a, config, token);
    844        }
    845    }
    846
    847    function isLeapYear(year) {
    848        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
    849    }
    850
    851    var YEAR = 0,
    852        MONTH = 1,
    853        DATE = 2,
    854        HOUR = 3,
    855        MINUTE = 4,
    856        SECOND = 5,
    857        MILLISECOND = 6,
    858        WEEK = 7,
    859        WEEKDAY = 8;
    860
    861    // FORMATTING
    862
    863    addFormatToken('Y', 0, 0, function () {
    864        var y = this.year();
    865        return y <= 9999 ? zeroFill(y, 4) : '+' + y;
    866    });
    867
    868    addFormatToken(0, ['YY', 2], 0, function () {
    869        return this.year() % 100;
    870    });
    871
    872    addFormatToken(0, ['YYYY', 4], 0, 'year');
    873    addFormatToken(0, ['YYYYY', 5], 0, 'year');
    874    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
    875
    876    // PARSING
    877
    878    addRegexToken('Y', matchSigned);
    879    addRegexToken('YY', match1to2, match2);
    880    addRegexToken('YYYY', match1to4, match4);
    881    addRegexToken('YYYYY', match1to6, match6);
    882    addRegexToken('YYYYYY', match1to6, match6);
    883
    884    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
    885    addParseToken('YYYY', function (input, array) {
    886        array[YEAR] =
    887            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
    888    });
    889    addParseToken('YY', function (input, array) {
    890        array[YEAR] = hooks.parseTwoDigitYear(input);
    891    });
    892    addParseToken('Y', function (input, array) {
    893        array[YEAR] = parseInt(input, 10);
    894    });
    895
    896    // HELPERS
    897
    898    function daysInYear(year) {
    899        return isLeapYear(year) ? 366 : 365;
    900    }
    901
    902    // HOOKS
    903
    904    hooks.parseTwoDigitYear = function (input) {
    905        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
    906    };
    907
    908    // MOMENTS
    909
    910    var getSetYear = makeGetSet('FullYear', true);
    911
    912    function getIsLeapYear() {
    913        return isLeapYear(this.year());
    914    }
    915
    916    function makeGetSet(unit, keepTime) {
    917        return function (value) {
    918            if (value != null) {
    919                set$1(this, unit, value);
    920                hooks.updateOffset(this, keepTime);
    921                return this;
    922            } else {
    923                return get(this, unit);
    924            }
    925        };
    926    }
    927
    928    function get(mom, unit) {
    929        if (!mom.isValid()) {
    930            return NaN;
    931        }
    932
    933        var d = mom._d,
    934            isUTC = mom._isUTC;
    935
    936        switch (unit) {
    937            case 'Milliseconds':
    938                return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();
    939            case 'Seconds':
    940                return isUTC ? d.getUTCSeconds() : d.getSeconds();
    941            case 'Minutes':
    942                return isUTC ? d.getUTCMinutes() : d.getMinutes();
    943            case 'Hours':
    944                return isUTC ? d.getUTCHours() : d.getHours();
    945            case 'Date':
    946                return isUTC ? d.getUTCDate() : d.getDate();
    947            case 'Day':
    948                return isUTC ? d.getUTCDay() : d.getDay();
    949            case 'Month':
    950                return isUTC ? d.getUTCMonth() : d.getMonth();
    951            case 'FullYear':
    952                return isUTC ? d.getUTCFullYear() : d.getFullYear();
    953            default:
    954                return NaN; // Just in case
    955        }
    956    }
    957
    958    function set$1(mom, unit, value) {
    959        var d, isUTC, year, month, date;
    960
    961        if (!mom.isValid() || isNaN(value)) {
    962            return;
    963        }
    964
    965        d = mom._d;
    966        isUTC = mom._isUTC;
    967
    968        switch (unit) {
    969            case 'Milliseconds':
    970                return void (isUTC
    971                    ? d.setUTCMilliseconds(value)
    972                    : d.setMilliseconds(value));
    973            case 'Seconds':
    974                return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));
    975            case 'Minutes':
    976                return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));
    977            case 'Hours':
    978                return void (isUTC ? d.setUTCHours(value) : d.setHours(value));
    979            case 'Date':
    980                return void (isUTC ? d.setUTCDate(value) : d.setDate(value));
    981            // case 'Day': // Not real
    982            //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));
    983            // case 'Month': // Not used because we need to pass two variables
    984            //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));
    985            case 'FullYear':
    986                break; // See below ...
    987            default:
    988                return; // Just in case
    989        }
    990
    991        year = value;
    992        month = mom.month();
    993        date = mom.date();
    994        date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;
    995        void (isUTC
    996            ? d.setUTCFullYear(year, month, date)
    997            : d.setFullYear(year, month, date));
    998    }
    999
   1000    // MOMENTS
   1001
   1002    function stringGet(units) {
   1003        units = normalizeUnits(units);
   1004        if (isFunction(this[units])) {
   1005            return this[units]();
   1006        }
   1007        return this;
   1008    }
   1009
   1010    function stringSet(units, value) {
   1011        if (typeof units === 'object') {
   1012            units = normalizeObjectUnits(units);
   1013            var prioritized = getPrioritizedUnits(units),
   1014                i,
   1015                prioritizedLen = prioritized.length;
   1016            for (i = 0; i < prioritizedLen; i++) {
   1017                this[prioritized[i].unit](units[prioritized[i].unit]);
   1018            }
   1019        } else {
   1020            units = normalizeUnits(units);
   1021            if (isFunction(this[units])) {
   1022                return this[units](value);
   1023            }
   1024        }
   1025        return this;
   1026    }
   1027
   1028    function mod(n, x) {
   1029        return ((n % x) + x) % x;
   1030    }
   1031
   1032    var indexOf;
   1033
   1034    if (Array.prototype.indexOf) {
   1035        indexOf = Array.prototype.indexOf;
   1036    } else {
   1037        indexOf = function (o) {
   1038            // I know
   1039            var i;
   1040            for (i = 0; i < this.length; ++i) {
   1041                if (this[i] === o) {
   1042                    return i;
   1043                }
   1044            }
   1045            return -1;
   1046        };
   1047    }
   1048
   1049    function daysInMonth(year, month) {
   1050        if (isNaN(year) || isNaN(month)) {
   1051            return NaN;
   1052        }
   1053        var modMonth = mod(month, 12);
   1054        year += (month - modMonth) / 12;
   1055        return modMonth === 1
   1056            ? isLeapYear(year)
   1057                ? 29
   1058                : 28
   1059            : 31 - ((modMonth % 7) % 2);
   1060    }
   1061
   1062    // FORMATTING
   1063
   1064    addFormatToken('M', ['MM', 2], 'Mo', function () {
   1065        return this.month() + 1;
   1066    });
   1067
   1068    addFormatToken('MMM', 0, 0, function (format) {
   1069        return this.localeData().monthsShort(this, format);
   1070    });
   1071
   1072    addFormatToken('MMMM', 0, 0, function (format) {
   1073        return this.localeData().months(this, format);
   1074    });
   1075
   1076    // PARSING
   1077
   1078    addRegexToken('M', match1to2, match1to2NoLeadingZero);
   1079    addRegexToken('MM', match1to2, match2);
   1080    addRegexToken('MMM', function (isStrict, locale) {
   1081        return locale.monthsShortRegex(isStrict);
   1082    });
   1083    addRegexToken('MMMM', function (isStrict, locale) {
   1084        return locale.monthsRegex(isStrict);
   1085    });
   1086
   1087    addParseToken(['M', 'MM'], function (input, array) {
   1088        array[MONTH] = toInt(input) - 1;
   1089    });
   1090
   1091    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
   1092        var month = config._locale.monthsParse(input, token, config._strict);
   1093        // if we didn't find a month name, mark the date as invalid.
   1094        if (month != null) {
   1095            array[MONTH] = month;
   1096        } else {
   1097            getParsingFlags(config).invalidMonth = input;
   1098        }
   1099    });
   1100
   1101    // LOCALES
   1102
   1103    var defaultLocaleMonths =
   1104            'January_February_March_April_May_June_July_August_September_October_November_December'.split(
   1105                '_'
   1106            ),
   1107        defaultLocaleMonthsShort =
   1108            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
   1109        MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
   1110        defaultMonthsShortRegex = matchWord,
   1111        defaultMonthsRegex = matchWord;
   1112
   1113    function localeMonths(m, format) {
   1114        if (!m) {
   1115            return isArray(this._months)
   1116                ? this._months
   1117                : this._months['standalone'];
   1118        }
   1119        return isArray(this._months)
   1120            ? this._months[m.month()]
   1121            : this._months[
   1122                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
   1123                      ? 'format'
   1124                      : 'standalone'
   1125              ][m.month()];
   1126    }
   1127
   1128    function localeMonthsShort(m, format) {
   1129        if (!m) {
   1130            return isArray(this._monthsShort)
   1131                ? this._monthsShort
   1132                : this._monthsShort['standalone'];
   1133        }
   1134        return isArray(this._monthsShort)
   1135            ? this._monthsShort[m.month()]
   1136            : this._monthsShort[
   1137                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
   1138              ][m.month()];
   1139    }
   1140
   1141    function handleStrictParse(monthName, format, strict) {
   1142        var i,
   1143            ii,
   1144            mom,
   1145            llc = monthName.toLocaleLowerCase();
   1146        if (!this._monthsParse) {
   1147            // this is not used
   1148            this._monthsParse = [];
   1149            this._longMonthsParse = [];
   1150            this._shortMonthsParse = [];
   1151            for (i = 0; i < 12; ++i) {
   1152                mom = createUTC([2000, i]);
   1153                this._shortMonthsParse[i] = this.monthsShort(
   1154                    mom,
   1155                    ''
   1156                ).toLocaleLowerCase();
   1157                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
   1158            }
   1159        }
   1160
   1161        if (strict) {
   1162            if (format === 'MMM') {
   1163                ii = indexOf.call(this._shortMonthsParse, llc);
   1164                return ii !== -1 ? ii : null;
   1165            } else {
   1166                ii = indexOf.call(this._longMonthsParse, llc);
   1167                return ii !== -1 ? ii : null;
   1168            }
   1169        } else {
   1170            if (format === 'MMM') {
   1171                ii = indexOf.call(this._shortMonthsParse, llc);
   1172                if (ii !== -1) {
   1173                    return ii;
   1174                }
   1175                ii = indexOf.call(this._longMonthsParse, llc);
   1176                return ii !== -1 ? ii : null;
   1177            } else {
   1178                ii = indexOf.call(this._longMonthsParse, llc);
   1179                if (ii !== -1) {
   1180                    return ii;
   1181                }
   1182                ii = indexOf.call(this._shortMonthsParse, llc);
   1183                return ii !== -1 ? ii : null;
   1184            }
   1185        }
   1186    }
   1187
   1188    function localeMonthsParse(monthName, format, strict) {
   1189        var i, mom, regex;
   1190
   1191        if (this._monthsParseExact) {
   1192            return handleStrictParse.call(this, monthName, format, strict);
   1193        }
   1194
   1195        if (!this._monthsParse) {
   1196            this._monthsParse = [];
   1197            this._longMonthsParse = [];
   1198            this._shortMonthsParse = [];
   1199        }
   1200
   1201        // TODO: add sorting
   1202        // Sorting makes sure if one month (or abbr) is a prefix of another
   1203        // see sorting in computeMonthsParse
   1204        for (i = 0; i < 12; i++) {
   1205            // make the regex if we don't have it already
   1206            mom = createUTC([2000, i]);
   1207            if (strict && !this._longMonthsParse[i]) {
   1208                this._longMonthsParse[i] = new RegExp(
   1209                    '^' + this.months(mom, '').replace('.', '') + '$',
   1210                    'i'
   1211                );
   1212                this._shortMonthsParse[i] = new RegExp(
   1213                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',
   1214                    'i'
   1215                );
   1216            }
   1217            if (!strict && !this._monthsParse[i]) {
   1218                regex =
   1219                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
   1220                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
   1221            }
   1222            // test the regex
   1223            if (
   1224                strict &&
   1225                format === 'MMMM' &&
   1226                this._longMonthsParse[i].test(monthName)
   1227            ) {
   1228                return i;
   1229            } else if (
   1230                strict &&
   1231                format === 'MMM' &&
   1232                this._shortMonthsParse[i].test(monthName)
   1233            ) {
   1234                return i;
   1235            } else if (!strict && this._monthsParse[i].test(monthName)) {
   1236                return i;
   1237            }
   1238        }
   1239    }
   1240
   1241    // MOMENTS
   1242
   1243    function setMonth(mom, value) {
   1244        if (!mom.isValid()) {
   1245            // No op
   1246            return mom;
   1247        }
   1248
   1249        if (typeof value === 'string') {
   1250            if (/^\d+$/.test(value)) {
   1251                value = toInt(value);
   1252            } else {
   1253                value = mom.localeData().monthsParse(value);
   1254                // TODO: Another silent failure?
   1255                if (!isNumber(value)) {
   1256                    return mom;
   1257                }
   1258            }
   1259        }
   1260
   1261        var month = value,
   1262            date = mom.date();
   1263
   1264        date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));
   1265        void (mom._isUTC
   1266            ? mom._d.setUTCMonth(month, date)
   1267            : mom._d.setMonth(month, date));
   1268        return mom;
   1269    }
   1270
   1271    function getSetMonth(value) {
   1272        if (value != null) {
   1273            setMonth(this, value);
   1274            hooks.updateOffset(this, true);
   1275            return this;
   1276        } else {
   1277            return get(this, 'Month');
   1278        }
   1279    }
   1280
   1281    function getDaysInMonth() {
   1282        return daysInMonth(this.year(), this.month());
   1283    }
   1284
   1285    function monthsShortRegex(isStrict) {
   1286        if (this._monthsParseExact) {
   1287            if (!hasOwnProp(this, '_monthsRegex')) {
   1288                computeMonthsParse.call(this);
   1289            }
   1290            if (isStrict) {
   1291                return this._monthsShortStrictRegex;
   1292            } else {
   1293                return this._monthsShortRegex;
   1294            }
   1295        } else {
   1296            if (!hasOwnProp(this, '_monthsShortRegex')) {
   1297                this._monthsShortRegex = defaultMonthsShortRegex;
   1298            }
   1299            return this._monthsShortStrictRegex && isStrict
   1300                ? this._monthsShortStrictRegex
   1301                : this._monthsShortRegex;
   1302        }
   1303    }
   1304
   1305    function monthsRegex(isStrict) {
   1306        if (this._monthsParseExact) {
   1307            if (!hasOwnProp(this, '_monthsRegex')) {
   1308                computeMonthsParse.call(this);
   1309            }
   1310            if (isStrict) {
   1311                return this._monthsStrictRegex;
   1312            } else {
   1313                return this._monthsRegex;
   1314            }
   1315        } else {
   1316            if (!hasOwnProp(this, '_monthsRegex')) {
   1317                this._monthsRegex = defaultMonthsRegex;
   1318            }
   1319            return this._monthsStrictRegex && isStrict
   1320                ? this._monthsStrictRegex
   1321                : this._monthsRegex;
   1322        }
   1323    }
   1324
   1325    function computeMonthsParse() {
   1326        function cmpLenRev(a, b) {
   1327            return b.length - a.length;
   1328        }
   1329
   1330        var shortPieces = [],
   1331            longPieces = [],
   1332            mixedPieces = [],
   1333            i,
   1334            mom,
   1335            shortP,
   1336            longP;
   1337        for (i = 0; i < 12; i++) {
   1338            // make the regex if we don't have it already
   1339            mom = createUTC([2000, i]);
   1340            shortP = regexEscape(this.monthsShort(mom, ''));
   1341            longP = regexEscape(this.months(mom, ''));
   1342            shortPieces.push(shortP);
   1343            longPieces.push(longP);
   1344            mixedPieces.push(longP);
   1345            mixedPieces.push(shortP);
   1346        }
   1347        // Sorting makes sure if one month (or abbr) is a prefix of another it
   1348        // will match the longer piece.
   1349        shortPieces.sort(cmpLenRev);
   1350        longPieces.sort(cmpLenRev);
   1351        mixedPieces.sort(cmpLenRev);
   1352
   1353        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
   1354        this._monthsShortRegex = this._monthsRegex;
   1355        this._monthsStrictRegex = new RegExp(
   1356            '^(' + longPieces.join('|') + ')',
   1357            'i'
   1358        );
   1359        this._monthsShortStrictRegex = new RegExp(
   1360            '^(' + shortPieces.join('|') + ')',
   1361            'i'
   1362        );
   1363    }
   1364
   1365    function createDate(y, m, d, h, M, s, ms) {
   1366        // can't just apply() to create a date:
   1367        // https://stackoverflow.com/q/181348
   1368        var date;
   1369        // the date constructor remaps years 0-99 to 1900-1999
   1370        if (y < 100 && y >= 0) {
   1371            // preserve leap years using a full 400 year cycle, then reset
   1372            date = new Date(y + 400, m, d, h, M, s, ms);
   1373            if (isFinite(date.getFullYear())) {
   1374                date.setFullYear(y);
   1375            }
   1376        } else {
   1377            date = new Date(y, m, d, h, M, s, ms);
   1378        }
   1379
   1380        return date;
   1381    }
   1382
   1383    function createUTCDate(y) {
   1384        var date, args;
   1385        // the Date.UTC function remaps years 0-99 to 1900-1999
   1386        if (y < 100 && y >= 0) {
   1387            args = Array.prototype.slice.call(arguments);
   1388            // preserve leap years using a full 400 year cycle, then reset
   1389            args[0] = y + 400;
   1390            date = new Date(Date.UTC.apply(null, args));
   1391            if (isFinite(date.getUTCFullYear())) {
   1392                date.setUTCFullYear(y);
   1393            }
   1394        } else {
   1395            date = new Date(Date.UTC.apply(null, arguments));
   1396        }
   1397
   1398        return date;
   1399    }
   1400
   1401    // start-of-first-week - start-of-year
   1402    function firstWeekOffset(year, dow, doy) {
   1403        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
   1404            fwd = 7 + dow - doy,
   1405            // first-week day local weekday -- which local weekday is fwd
   1406            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
   1407
   1408        return -fwdlw + fwd - 1;
   1409    }
   1410
   1411    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
   1412    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
   1413        var localWeekday = (7 + weekday - dow) % 7,
   1414            weekOffset = firstWeekOffset(year, dow, doy),
   1415            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
   1416            resYear,
   1417            resDayOfYear;
   1418
   1419        if (dayOfYear <= 0) {
   1420            resYear = year - 1;
   1421            resDayOfYear = daysInYear(resYear) + dayOfYear;
   1422        } else if (dayOfYear > daysInYear(year)) {
   1423            resYear = year + 1;
   1424            resDayOfYear = dayOfYear - daysInYear(year);
   1425        } else {
   1426            resYear = year;
   1427            resDayOfYear = dayOfYear;
   1428        }
   1429
   1430        return {
   1431            year: resYear,
   1432            dayOfYear: resDayOfYear,
   1433        };
   1434    }
   1435
   1436    function weekOfYear(mom, dow, doy) {
   1437        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
   1438            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
   1439            resWeek,
   1440            resYear;
   1441
   1442        if (week < 1) {
   1443            resYear = mom.year() - 1;
   1444            resWeek = week + weeksInYear(resYear, dow, doy);
   1445        } else if (week > weeksInYear(mom.year(), dow, doy)) {
   1446            resWeek = week - weeksInYear(mom.year(), dow, doy);
   1447            resYear = mom.year() + 1;
   1448        } else {
   1449            resYear = mom.year();
   1450            resWeek = week;
   1451        }
   1452
   1453        return {
   1454            week: resWeek,
   1455            year: resYear,
   1456        };
   1457    }
   1458
   1459    function weeksInYear(year, dow, doy) {
   1460        var weekOffset = firstWeekOffset(year, dow, doy),
   1461            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
   1462        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
   1463    }
   1464
   1465    // FORMATTING
   1466
   1467    addFormatToken('w', ['ww', 2], 'wo', 'week');
   1468    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
   1469
   1470    // PARSING
   1471
   1472    addRegexToken('w', match1to2, match1to2NoLeadingZero);
   1473    addRegexToken('ww', match1to2, match2);
   1474    addRegexToken('W', match1to2, match1to2NoLeadingZero);
   1475    addRegexToken('WW', match1to2, match2);
   1476
   1477    addWeekParseToken(
   1478        ['w', 'ww', 'W', 'WW'],
   1479        function (input, week, config, token) {
   1480            week[token.substr(0, 1)] = toInt(input);
   1481        }
   1482    );
   1483
   1484    // HELPERS
   1485
   1486    // LOCALES
   1487
   1488    function localeWeek(mom) {
   1489        return weekOfYear(mom, this._week.dow, this._week.doy).week;
   1490    }
   1491
   1492    var defaultLocaleWeek = {
   1493        dow: 0, // Sunday is the first day of the week.
   1494        doy: 6, // The week that contains Jan 6th is the first week of the year.
   1495    };
   1496
   1497    function localeFirstDayOfWeek() {
   1498        return this._week.dow;
   1499    }
   1500
   1501    function localeFirstDayOfYear() {
   1502        return this._week.doy;
   1503    }
   1504
   1505    // MOMENTS
   1506
   1507    function getSetWeek(input) {
   1508        var week = this.localeData().week(this);
   1509        return input == null ? week : this.add((input - week) * 7, 'd');
   1510    }
   1511
   1512    function getSetISOWeek(input) {
   1513        var week = weekOfYear(this, 1, 4).week;
   1514        return input == null ? week : this.add((input - week) * 7, 'd');
   1515    }
   1516
   1517    // FORMATTING
   1518
   1519    addFormatToken('d', 0, 'do', 'day');
   1520
   1521    addFormatToken('dd', 0, 0, function (format) {
   1522        return this.localeData().weekdaysMin(this, format);
   1523    });
   1524
   1525    addFormatToken('ddd', 0, 0, function (format) {
   1526        return this.localeData().weekdaysShort(this, format);
   1527    });
   1528
   1529    addFormatToken('dddd', 0, 0, function (format) {
   1530        return this.localeData().weekdays(this, format);
   1531    });
   1532
   1533    addFormatToken('e', 0, 0, 'weekday');
   1534    addFormatToken('E', 0, 0, 'isoWeekday');
   1535
   1536    // PARSING
   1537
   1538    addRegexToken('d', match1to2);
   1539    addRegexToken('e', match1to2);
   1540    addRegexToken('E', match1to2);
   1541    addRegexToken('dd', function (isStrict, locale) {
   1542        return locale.weekdaysMinRegex(isStrict);
   1543    });
   1544    addRegexToken('ddd', function (isStrict, locale) {
   1545        return locale.weekdaysShortRegex(isStrict);
   1546    });
   1547    addRegexToken('dddd', function (isStrict, locale) {
   1548        return locale.weekdaysRegex(isStrict);
   1549    });
   1550
   1551    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
   1552        var weekday = config._locale.weekdaysParse(input, token, config._strict);
   1553        // if we didn't get a weekday name, mark the date as invalid
   1554        if (weekday != null) {
   1555            week.d = weekday;
   1556        } else {
   1557            getParsingFlags(config).invalidWeekday = input;
   1558        }
   1559    });
   1560
   1561    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
   1562        week[token] = toInt(input);
   1563    });
   1564
   1565    // HELPERS
   1566
   1567    function parseWeekday(input, locale) {
   1568        if (typeof input !== 'string') {
   1569            return input;
   1570        }
   1571
   1572        if (!isNaN(input)) {
   1573            return parseInt(input, 10);
   1574        }
   1575
   1576        input = locale.weekdaysParse(input);
   1577        if (typeof input === 'number') {
   1578            return input;
   1579        }
   1580
   1581        return null;
   1582    }
   1583
   1584    function parseIsoWeekday(input, locale) {
   1585        if (typeof input === 'string') {
   1586            return locale.weekdaysParse(input) % 7 || 7;
   1587        }
   1588        return isNaN(input) ? null : input;
   1589    }
   1590
   1591    // LOCALES
   1592    function shiftWeekdays(ws, n) {
   1593        return ws.slice(n, 7).concat(ws.slice(0, n));
   1594    }
   1595
   1596    var defaultLocaleWeekdays =
   1597            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
   1598        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
   1599        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
   1600        defaultWeekdaysRegex = matchWord,
   1601        defaultWeekdaysShortRegex = matchWord,
   1602        defaultWeekdaysMinRegex = matchWord;
   1603
   1604    function localeWeekdays(m, format) {
   1605        var weekdays = isArray(this._weekdays)
   1606            ? this._weekdays
   1607            : this._weekdays[
   1608                  m && m !== true && this._weekdays.isFormat.test(format)
   1609                      ? 'format'
   1610                      : 'standalone'
   1611              ];
   1612        return m === true
   1613            ? shiftWeekdays(weekdays, this._week.dow)
   1614            : m
   1615              ? weekdays[m.day()]
   1616              : weekdays;
   1617    }
   1618
   1619    function localeWeekdaysShort(m) {
   1620        return m === true
   1621            ? shiftWeekdays(this._weekdaysShort, this._week.dow)
   1622            : m
   1623              ? this._weekdaysShort[m.day()]
   1624              : this._weekdaysShort;
   1625    }
   1626
   1627    function localeWeekdaysMin(m) {
   1628        return m === true
   1629            ? shiftWeekdays(this._weekdaysMin, this._week.dow)
   1630            : m
   1631              ? this._weekdaysMin[m.day()]
   1632              : this._weekdaysMin;
   1633    }
   1634
   1635    function handleStrictParse$1(weekdayName, format, strict) {
   1636        var i,
   1637            ii,
   1638            mom,
   1639            llc = weekdayName.toLocaleLowerCase();
   1640        if (!this._weekdaysParse) {
   1641            this._weekdaysParse = [];
   1642            this._shortWeekdaysParse = [];
   1643            this._minWeekdaysParse = [];
   1644
   1645            for (i = 0; i < 7; ++i) {
   1646                mom = createUTC([2000, 1]).day(i);
   1647                this._minWeekdaysParse[i] = this.weekdaysMin(
   1648                    mom,
   1649                    ''
   1650                ).toLocaleLowerCase();
   1651                this._shortWeekdaysParse[i] = this.weekdaysShort(
   1652                    mom,
   1653                    ''
   1654                ).toLocaleLowerCase();
   1655                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
   1656            }
   1657        }
   1658
   1659        if (strict) {
   1660            if (format === 'dddd') {
   1661                ii = indexOf.call(this._weekdaysParse, llc);
   1662                return ii !== -1 ? ii : null;
   1663            } else if (format === 'ddd') {
   1664                ii = indexOf.call(this._shortWeekdaysParse, llc);
   1665                return ii !== -1 ? ii : null;
   1666            } else {
   1667                ii = indexOf.call(this._minWeekdaysParse, llc);
   1668                return ii !== -1 ? ii : null;
   1669            }
   1670        } else {
   1671            if (format === 'dddd') {
   1672                ii = indexOf.call(this._weekdaysParse, llc);
   1673                if (ii !== -1) {
   1674                    return ii;
   1675                }
   1676                ii = indexOf.call(this._shortWeekdaysParse, llc);
   1677                if (ii !== -1) {
   1678                    return ii;
   1679                }
   1680                ii = indexOf.call(this._minWeekdaysParse, llc);
   1681                return ii !== -1 ? ii : null;
   1682            } else if (format === 'ddd') {
   1683                ii = indexOf.call(this._shortWeekdaysParse, llc);
   1684                if (ii !== -1) {
   1685                    return ii;
   1686                }
   1687                ii = indexOf.call(this._weekdaysParse, llc);
   1688                if (ii !== -1) {
   1689                    return ii;
   1690                }
   1691                ii = indexOf.call(this._minWeekdaysParse, llc);
   1692                return ii !== -1 ? ii : null;
   1693            } else {
   1694                ii = indexOf.call(this._minWeekdaysParse, llc);
   1695                if (ii !== -1) {
   1696                    return ii;
   1697                }
   1698                ii = indexOf.call(this._weekdaysParse, llc);
   1699                if (ii !== -1) {
   1700                    return ii;
   1701                }
   1702                ii = indexOf.call(this._shortWeekdaysParse, llc);
   1703                return ii !== -1 ? ii : null;
   1704            }
   1705        }
   1706    }
   1707
   1708    function localeWeekdaysParse(weekdayName, format, strict) {
   1709        var i, mom, regex;
   1710
   1711        if (this._weekdaysParseExact) {
   1712            return handleStrictParse$1.call(this, weekdayName, format, strict);
   1713        }
   1714
   1715        if (!this._weekdaysParse) {
   1716            this._weekdaysParse = [];
   1717            this._minWeekdaysParse = [];
   1718            this._shortWeekdaysParse = [];
   1719            this._fullWeekdaysParse = [];
   1720        }
   1721
   1722        for (i = 0; i < 7; i++) {
   1723            // make the regex if we don't have it already
   1724
   1725            mom = createUTC([2000, 1]).day(i);
   1726            if (strict && !this._fullWeekdaysParse[i]) {
   1727                this._fullWeekdaysParse[i] = new RegExp(
   1728                    '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
   1729                    'i'
   1730                );
   1731                this._shortWeekdaysParse[i] = new RegExp(
   1732                    '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
   1733                    'i'
   1734                );
   1735                this._minWeekdaysParse[i] = new RegExp(
   1736                    '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
   1737                    'i'
   1738                );
   1739            }
   1740            if (!this._weekdaysParse[i]) {
   1741                regex =
   1742                    '^' +
   1743                    this.weekdays(mom, '') +
   1744                    '|^' +
   1745                    this.weekdaysShort(mom, '') +
   1746                    '|^' +
   1747                    this.weekdaysMin(mom, '');
   1748                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
   1749            }
   1750            // test the regex
   1751            if (
   1752                strict &&
   1753                format === 'dddd' &&
   1754                this._fullWeekdaysParse[i].test(weekdayName)
   1755            ) {
   1756                return i;
   1757            } else if (
   1758                strict &&
   1759                format === 'ddd' &&
   1760                this._shortWeekdaysParse[i].test(weekdayName)
   1761            ) {
   1762                return i;
   1763            } else if (
   1764                strict &&
   1765                format === 'dd' &&
   1766                this._minWeekdaysParse[i].test(weekdayName)
   1767            ) {
   1768                return i;
   1769            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
   1770                return i;
   1771            }
   1772        }
   1773    }
   1774
   1775    // MOMENTS
   1776
   1777    function getSetDayOfWeek(input) {
   1778        if (!this.isValid()) {
   1779            return input != null ? this : NaN;
   1780        }
   1781
   1782        var day = get(this, 'Day');
   1783        if (input != null) {
   1784            input = parseWeekday(input, this.localeData());
   1785            return this.add(input - day, 'd');
   1786        } else {
   1787            return day;
   1788        }
   1789    }
   1790
   1791    function getSetLocaleDayOfWeek(input) {
   1792        if (!this.isValid()) {
   1793            return input != null ? this : NaN;
   1794        }
   1795        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
   1796        return input == null ? weekday : this.add(input - weekday, 'd');
   1797    }
   1798
   1799    function getSetISODayOfWeek(input) {
   1800        if (!this.isValid()) {
   1801            return input != null ? this : NaN;
   1802        }
   1803
   1804        // behaves the same as moment#day except
   1805        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
   1806        // as a setter, sunday should belong to the previous week.
   1807
   1808        if (input != null) {
   1809            var weekday = parseIsoWeekday(input, this.localeData());
   1810            return this.day(this.day() % 7 ? weekday : weekday - 7);
   1811        } else {
   1812            return this.day() || 7;
   1813        }
   1814    }
   1815
   1816    function weekdaysRegex(isStrict) {
   1817        if (this._weekdaysParseExact) {
   1818            if (!hasOwnProp(this, '_weekdaysRegex')) {
   1819                computeWeekdaysParse.call(this);
   1820            }
   1821            if (isStrict) {
   1822                return this._weekdaysStrictRegex;
   1823            } else {
   1824                return this._weekdaysRegex;
   1825            }
   1826        } else {
   1827            if (!hasOwnProp(this, '_weekdaysRegex')) {
   1828                this._weekdaysRegex = defaultWeekdaysRegex;
   1829            }
   1830            return this._weekdaysStrictRegex && isStrict
   1831                ? this._weekdaysStrictRegex
   1832                : this._weekdaysRegex;
   1833        }
   1834    }
   1835
   1836    function weekdaysShortRegex(isStrict) {
   1837        if (this._weekdaysParseExact) {
   1838            if (!hasOwnProp(this, '_weekdaysRegex')) {
   1839                computeWeekdaysParse.call(this);
   1840            }
   1841            if (isStrict) {
   1842                return this._weekdaysShortStrictRegex;
   1843            } else {
   1844                return this._weekdaysShortRegex;
   1845            }
   1846        } else {
   1847            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
   1848                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
   1849            }
   1850            return this._weekdaysShortStrictRegex && isStrict
   1851                ? this._weekdaysShortStrictRegex
   1852                : this._weekdaysShortRegex;
   1853        }
   1854    }
   1855
   1856    function weekdaysMinRegex(isStrict) {
   1857        if (this._weekdaysParseExact) {
   1858            if (!hasOwnProp(this, '_weekdaysRegex')) {
   1859                computeWeekdaysParse.call(this);
   1860            }
   1861            if (isStrict) {
   1862                return this._weekdaysMinStrictRegex;
   1863            } else {
   1864                return this._weekdaysMinRegex;
   1865            }
   1866        } else {
   1867            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
   1868                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
   1869            }
   1870            return this._weekdaysMinStrictRegex && isStrict
   1871                ? this._weekdaysMinStrictRegex
   1872                : this._weekdaysMinRegex;
   1873        }
   1874    }
   1875
   1876    function computeWeekdaysParse() {
   1877        function cmpLenRev(a, b) {
   1878            return b.length - a.length;
   1879        }
   1880
   1881        var minPieces = [],
   1882            shortPieces = [],
   1883            longPieces = [],
   1884            mixedPieces = [],
   1885            i,
   1886            mom,
   1887            minp,
   1888            shortp,
   1889            longp;
   1890        for (i = 0; i < 7; i++) {
   1891            // make the regex if we don't have it already
   1892            mom = createUTC([2000, 1]).day(i);
   1893            minp = regexEscape(this.weekdaysMin(mom, ''));
   1894            shortp = regexEscape(this.weekdaysShort(mom, ''));
   1895            longp = regexEscape(this.weekdays(mom, ''));
   1896            minPieces.push(minp);
   1897            shortPieces.push(shortp);
   1898            longPieces.push(longp);
   1899            mixedPieces.push(minp);
   1900            mixedPieces.push(shortp);
   1901            mixedPieces.push(longp);
   1902        }
   1903        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
   1904        // will match the longer piece.
   1905        minPieces.sort(cmpLenRev);
   1906        shortPieces.sort(cmpLenRev);
   1907        longPieces.sort(cmpLenRev);
   1908        mixedPieces.sort(cmpLenRev);
   1909
   1910        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
   1911        this._weekdaysShortRegex = this._weekdaysRegex;
   1912        this._weekdaysMinRegex = this._weekdaysRegex;
   1913
   1914        this._weekdaysStrictRegex = new RegExp(
   1915            '^(' + longPieces.join('|') + ')',
   1916            'i'
   1917        );
   1918        this._weekdaysShortStrictRegex = new RegExp(
   1919            '^(' + shortPieces.join('|') + ')',
   1920            'i'
   1921        );
   1922        this._weekdaysMinStrictRegex = new RegExp(
   1923            '^(' + minPieces.join('|') + ')',
   1924            'i'
   1925        );
   1926    }
   1927
   1928    // FORMATTING
   1929
   1930    function hFormat() {
   1931        return this.hours() % 12 || 12;
   1932    }
   1933
   1934    function kFormat() {
   1935        return this.hours() || 24;
   1936    }
   1937
   1938    addFormatToken('H', ['HH', 2], 0, 'hour');
   1939    addFormatToken('h', ['hh', 2], 0, hFormat);
   1940    addFormatToken('k', ['kk', 2], 0, kFormat);
   1941
   1942    addFormatToken('hmm', 0, 0, function () {
   1943        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
   1944    });
   1945
   1946    addFormatToken('hmmss', 0, 0, function () {
   1947        return (
   1948            '' +
   1949            hFormat.apply(this) +
   1950            zeroFill(this.minutes(), 2) +
   1951            zeroFill(this.seconds(), 2)
   1952        );
   1953    });
   1954
   1955    addFormatToken('Hmm', 0, 0, function () {
   1956        return '' + this.hours() + zeroFill(this.minutes(), 2);
   1957    });
   1958
   1959    addFormatToken('Hmmss', 0, 0, function () {
   1960        return (
   1961            '' +
   1962            this.hours() +
   1963            zeroFill(this.minutes(), 2) +
   1964            zeroFill(this.seconds(), 2)
   1965        );
   1966    });
   1967
   1968    function meridiem(token, lowercase) {
   1969        addFormatToken(token, 0, 0, function () {
   1970            return this.localeData().meridiem(
   1971                this.hours(),
   1972                this.minutes(),
   1973                lowercase
   1974            );
   1975        });
   1976    }
   1977
   1978    meridiem('a', true);
   1979    meridiem('A', false);
   1980
   1981    // PARSING
   1982
   1983    function matchMeridiem(isStrict, locale) {
   1984        return locale._meridiemParse;
   1985    }
   1986
   1987    addRegexToken('a', matchMeridiem);
   1988    addRegexToken('A', matchMeridiem);
   1989    addRegexToken('H', match1to2, match1to2HasZero);
   1990    addRegexToken('h', match1to2, match1to2NoLeadingZero);
   1991    addRegexToken('k', match1to2, match1to2NoLeadingZero);
   1992    addRegexToken('HH', match1to2, match2);
   1993    addRegexToken('hh', match1to2, match2);
   1994    addRegexToken('kk', match1to2, match2);
   1995
   1996    addRegexToken('hmm', match3to4);
   1997    addRegexToken('hmmss', match5to6);
   1998    addRegexToken('Hmm', match3to4);
   1999    addRegexToken('Hmmss', match5to6);
   2000
   2001    addParseToken(['H', 'HH'], HOUR);
   2002    addParseToken(['k', 'kk'], function (input, array, config) {
   2003        var kInput = toInt(input);
   2004        array[HOUR] = kInput === 24 ? 0 : kInput;
   2005    });
   2006    addParseToken(['a', 'A'], function (input, array, config) {
   2007        config._isPm = config._locale.isPM(input);
   2008        config._meridiem = input;
   2009    });
   2010    addParseToken(['h', 'hh'], function (input, array, config) {
   2011        array[HOUR] = toInt(input);
   2012        getParsingFlags(config).bigHour = true;
   2013    });
   2014    addParseToken('hmm', function (input, array, config) {
   2015        var pos = input.length - 2;
   2016        array[HOUR] = toInt(input.substr(0, pos));
   2017        array[MINUTE] = toInt(input.substr(pos));
   2018        getParsingFlags(config).bigHour = true;
   2019    });
   2020    addParseToken('hmmss', function (input, array, config) {
   2021        var pos1 = input.length - 4,
   2022            pos2 = input.length - 2;
   2023        array[HOUR] = toInt(input.substr(0, pos1));
   2024        array[MINUTE] = toInt(input.substr(pos1, 2));
   2025        array[SECOND] = toInt(input.substr(pos2));
   2026        getParsingFlags(config).bigHour = true;
   2027    });
   2028    addParseToken('Hmm', function (input, array, config) {
   2029        var pos = input.length - 2;
   2030        array[HOUR] = toInt(input.substr(0, pos));
   2031        array[MINUTE] = toInt(input.substr(pos));
   2032    });
   2033    addParseToken('Hmmss', function (input, array, config) {
   2034        var pos1 = input.length - 4,
   2035            pos2 = input.length - 2;
   2036        array[HOUR] = toInt(input.substr(0, pos1));
   2037        array[MINUTE] = toInt(input.substr(pos1, 2));
   2038        array[SECOND] = toInt(input.substr(pos2));
   2039    });
   2040
   2041    // LOCALES
   2042
   2043    function localeIsPM(input) {
   2044        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
   2045        // Using charAt should be more compatible.
   2046        return (input + '').toLowerCase().charAt(0) === 'p';
   2047    }
   2048
   2049    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
   2050        // Setting the hour should keep the time, because the user explicitly
   2051        // specified which hour they want. So trying to maintain the same hour (in
   2052        // a new timezone) makes sense. Adding/subtracting hours does not follow
   2053        // this rule.
   2054        getSetHour = makeGetSet('Hours', true);
   2055
   2056    function localeMeridiem(hours, minutes, isLower) {
   2057        if (hours > 11) {
   2058            return isLower ? 'pm' : 'PM';
   2059        } else {
   2060            return isLower ? 'am' : 'AM';
   2061        }
   2062    }
   2063
   2064    var baseConfig = {
   2065        calendar: defaultCalendar,
   2066        longDateFormat: defaultLongDateFormat,
   2067        invalidDate: defaultInvalidDate,
   2068        ordinal: defaultOrdinal,
   2069        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
   2070        relativeTime: defaultRelativeTime,
   2071
   2072        months: defaultLocaleMonths,
   2073        monthsShort: defaultLocaleMonthsShort,
   2074
   2075        week: defaultLocaleWeek,
   2076
   2077        weekdays: defaultLocaleWeekdays,
   2078        weekdaysMin: defaultLocaleWeekdaysMin,
   2079        weekdaysShort: defaultLocaleWeekdaysShort,
   2080
   2081        meridiemParse: defaultLocaleMeridiemParse,
   2082    };
   2083
   2084    // internal storage for locale config files
   2085    var locales = {},
   2086        localeFamilies = {},
   2087        globalLocale;
   2088
   2089    function commonPrefix(arr1, arr2) {
   2090        var i,
   2091            minl = Math.min(arr1.length, arr2.length);
   2092        for (i = 0; i < minl; i += 1) {
   2093            if (arr1[i] !== arr2[i]) {
   2094                return i;
   2095            }
   2096        }
   2097        return minl;
   2098    }
   2099
   2100    function normalizeLocale(key) {
   2101        return key ? key.toLowerCase().replace('_', '-') : key;
   2102    }
   2103
   2104    // pick the locale from the array
   2105    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
   2106    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
   2107    function chooseLocale(names) {
   2108        var i = 0,
   2109            j,
   2110            next,
   2111            locale,
   2112            split;
   2113
   2114        while (i < names.length) {
   2115            split = normalizeLocale(names[i]).split('-');
   2116            j = split.length;
   2117            next = normalizeLocale(names[i + 1]);
   2118            next = next ? next.split('-') : null;
   2119            while (j > 0) {
   2120                locale = loadLocale(split.slice(0, j).join('-'));
   2121                if (locale) {
   2122                    return locale;
   2123                }
   2124                if (
   2125                    next &&
   2126                    next.length >= j &&
   2127                    commonPrefix(split, next) >= j - 1
   2128                ) {
   2129                    //the next array item is better than a shallower substring of this one
   2130                    break;
   2131                }
   2132                j--;
   2133            }
   2134            i++;
   2135        }
   2136        return globalLocale;
   2137    }
   2138
   2139    function isLocaleNameSane(name) {
   2140        // Prevent names that look like filesystem paths, i.e contain '/' or '\'
   2141        // Ensure name is available and function returns boolean
   2142        return !!(name && name.match('^[^/\\\\]*$'));
   2143    }
   2144
   2145    function loadLocale(name) {
   2146        var oldLocale = null,
   2147            aliasedRequire;
   2148        // TODO: Find a better way to register and load all the locales in Node
   2149        if (
   2150            locales[name] === undefined &&
   2151            typeof module !== 'undefined' &&
   2152            module &&
   2153            module.exports &&
   2154            isLocaleNameSane(name)
   2155        ) {
   2156            try {
   2157                oldLocale = globalLocale._abbr;
   2158                aliasedRequire = require;
   2159                aliasedRequire('./locale/' + name);
   2160                getSetGlobalLocale(oldLocale);
   2161            } catch (e) {
   2162                // mark as not found to avoid repeating expensive file require call causing high CPU
   2163                // when trying to find en-US, en_US, en-us for every format call
   2164                locales[name] = null; // null means not found
   2165            }
   2166        }
   2167        return locales[name];
   2168    }
   2169
   2170    // This function will load locale and then set the global locale.  If
   2171    // no arguments are passed in, it will simply return the current global
   2172    // locale key.
   2173    function getSetGlobalLocale(key, values) {
   2174        var data;
   2175        if (key) {
   2176            if (isUndefined(values)) {
   2177                data = getLocale(key);
   2178            } else {
   2179                data = defineLocale(key, values);
   2180            }
   2181
   2182            if (data) {
   2183                // moment.duration._locale = moment._locale = data;
   2184                globalLocale = data;
   2185            } else {
   2186                if (typeof console !== 'undefined' && console.warn) {
   2187                    //warn user if arguments are passed but the locale could not be set
   2188                    console.warn(
   2189                        'Locale ' + key + ' not found. Did you forget to load it?'
   2190                    );
   2191                }
   2192            }
   2193        }
   2194
   2195        return globalLocale._abbr;
   2196    }
   2197
   2198    function defineLocale(name, config) {
   2199        if (config !== null) {
   2200            var locale,
   2201                parentConfig = baseConfig;
   2202            config.abbr = name;
   2203            if (locales[name] != null) {
   2204                deprecateSimple(
   2205                    'defineLocaleOverride',
   2206                    'use moment.updateLocale(localeName, config) to change ' +
   2207                        'an existing locale. moment.defineLocale(localeName, ' +
   2208                        'config) should only be used for creating a new locale ' +
   2209                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
   2210                );
   2211                parentConfig = locales[name]._config;
   2212            } else if (config.parentLocale != null) {
   2213                if (locales[config.parentLocale] != null) {
   2214                    parentConfig = locales[config.parentLocale]._config;
   2215                } else {
   2216                    locale = loadLocale(config.parentLocale);
   2217                    if (locale != null) {
   2218                        parentConfig = locale._config;
   2219                    } else {
   2220                        if (!localeFamilies[config.parentLocale]) {
   2221                            localeFamilies[config.parentLocale] = [];
   2222                        }
   2223                        localeFamilies[config.parentLocale].push({
   2224                            name: name,
   2225                            config: config,
   2226                        });
   2227                        return null;
   2228                    }
   2229                }
   2230            }
   2231            locales[name] = new Locale(mergeConfigs(parentConfig, config));
   2232
   2233            if (localeFamilies[name]) {
   2234                localeFamilies[name].forEach(function (x) {
   2235                    defineLocale(x.name, x.config);
   2236                });
   2237            }
   2238
   2239            // backwards compat for now: also set the locale
   2240            // make sure we set the locale AFTER all child locales have been
   2241            // created, so we won't end up with the child locale set.
   2242            getSetGlobalLocale(name);
   2243
   2244            return locales[name];
   2245        } else {
   2246            // useful for testing
   2247            delete locales[name];
   2248            return null;
   2249        }
   2250    }
   2251
   2252    function updateLocale(name, config) {
   2253        if (config != null) {
   2254            var locale,
   2255                tmpLocale,
   2256                parentConfig = baseConfig;
   2257
   2258            if (locales[name] != null && locales[name].parentLocale != null) {
   2259                // Update existing child locale in-place to avoid memory-leaks
   2260                locales[name].set(mergeConfigs(locales[name]._config, config));
   2261            } else {
   2262                // MERGE
   2263                tmpLocale = loadLocale(name);
   2264                if (tmpLocale != null) {
   2265                    parentConfig = tmpLocale._config;
   2266                }
   2267                config = mergeConfigs(parentConfig, config);
   2268                if (tmpLocale == null) {
   2269                    // updateLocale is called for creating a new locale
   2270                    // Set abbr so it will have a name (getters return
   2271                    // undefined otherwise).
   2272                    config.abbr = name;
   2273                }
   2274                locale = new Locale(config);
   2275                locale.parentLocale = locales[name];
   2276                locales[name] = locale;
   2277            }
   2278
   2279            // backwards compat for now: also set the locale
   2280            getSetGlobalLocale(name);
   2281        } else {
   2282            // pass null for config to unupdate, useful for tests
   2283            if (locales[name] != null) {
   2284                if (locales[name].parentLocale != null) {
   2285                    locales[name] = locales[name].parentLocale;
   2286                    if (name === getSetGlobalLocale()) {
   2287                        getSetGlobalLocale(name);
   2288                    }
   2289                } else if (locales[name] != null) {
   2290                    delete locales[name];
   2291                }
   2292            }
   2293        }
   2294        return locales[name];
   2295    }
   2296
   2297    // returns locale data
   2298    function getLocale(key) {
   2299        var locale;
   2300
   2301        if (key && key._locale && key._locale._abbr) {
   2302            key = key._locale._abbr;
   2303        }
   2304
   2305        if (!key) {
   2306            return globalLocale;
   2307        }
   2308
   2309        if (!isArray(key)) {
   2310            //short-circuit everything else
   2311            locale = loadLocale(key);
   2312            if (locale) {
   2313                return locale;
   2314            }
   2315            key = [key];
   2316        }
   2317
   2318        return chooseLocale(key);
   2319    }
   2320
   2321    function listLocales() {
   2322        return keys(locales);
   2323    }
   2324
   2325    function checkOverflow(m) {
   2326        var overflow,
   2327            a = m._a;
   2328
   2329        if (a && getParsingFlags(m).overflow === -2) {
   2330            overflow =
   2331                a[MONTH] < 0 || a[MONTH] > 11
   2332                    ? MONTH
   2333                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
   2334                      ? DATE
   2335                      : a[HOUR] < 0 ||
   2336                          a[HOUR] > 24 ||
   2337                          (a[HOUR] === 24 &&
   2338                              (a[MINUTE] !== 0 ||
   2339                                  a[SECOND] !== 0 ||
   2340                                  a[MILLISECOND] !== 0))
   2341                        ? HOUR
   2342                        : a[MINUTE] < 0 || a[MINUTE] > 59
   2343                          ? MINUTE
   2344                          : a[SECOND] < 0 || a[SECOND] > 59
   2345                            ? SECOND
   2346                            : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
   2347                              ? MILLISECOND
   2348                              : -1;
   2349
   2350            if (
   2351                getParsingFlags(m)._overflowDayOfYear &&
   2352                (overflow < YEAR || overflow > DATE)
   2353            ) {
   2354                overflow = DATE;
   2355            }
   2356            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
   2357                overflow = WEEK;
   2358            }
   2359            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
   2360                overflow = WEEKDAY;
   2361            }
   2362
   2363            getParsingFlags(m).overflow = overflow;
   2364        }
   2365
   2366        return m;
   2367    }
   2368
   2369    // iso 8601 regex
   2370    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
   2371    var extendedIsoRegex =
   2372            /^\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)?)?$/,
   2373        basicIsoRegex =
   2374            /^\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)?)?$/,
   2375        tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
   2376        isoDates = [
   2377            ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
   2378            ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
   2379            ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
   2380            ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
   2381            ['YYYY-DDD', /\d{4}-\d{3}/],
   2382            ['YYYY-MM', /\d{4}-\d\d/, false],
   2383            ['YYYYYYMMDD', /[+-]\d{10}/],
   2384            ['YYYYMMDD', /\d{8}/],
   2385            ['GGGG[W]WWE', /\d{4}W\d{3}/],
   2386            ['GGGG[W]WW', /\d{4}W\d{2}/, false],
   2387            ['YYYYDDD', /\d{7}/],
   2388            ['YYYYMM', /\d{6}/, false],
   2389            ['YYYY', /\d{4}/, false],
   2390        ],
   2391        // iso time formats and regexes
   2392        isoTimes = [
   2393            ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
   2394            ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
   2395            ['HH:mm:ss', /\d\d:\d\d:\d\d/],
   2396            ['HH:mm', /\d\d:\d\d/],
   2397            ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
   2398            ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
   2399            ['HHmmss', /\d\d\d\d\d\d/],
   2400            ['HHmm', /\d\d\d\d/],
   2401            ['HH', /\d\d/],
   2402        ],
   2403        aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
   2404        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
   2405        rfc2822 =
   2406            /^(?:(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}))$/,
   2407        obsOffsets = {
   2408            UT: 0,
   2409            GMT: 0,
   2410            EDT: -4 * 60,
   2411            EST: -5 * 60,
   2412            CDT: -5 * 60,
   2413            CST: -6 * 60,
   2414            MDT: -6 * 60,
   2415            MST: -7 * 60,
   2416            PDT: -7 * 60,
   2417            PST: -8 * 60,
   2418        };
   2419
   2420    // date from iso format
   2421    function configFromISO(config) {
   2422        var i,
   2423            l,
   2424            string = config._i,
   2425            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
   2426            allowTime,
   2427            dateFormat,
   2428            timeFormat,
   2429            tzFormat,
   2430            isoDatesLen = isoDates.length,
   2431            isoTimesLen = isoTimes.length;
   2432
   2433        if (match) {
   2434            getParsingFlags(config).iso = true;
   2435            for (i = 0, l = isoDatesLen; i < l; i++) {
   2436                if (isoDates[i][1].exec(match[1])) {
   2437                    dateFormat = isoDates[i][0];
   2438                    allowTime = isoDates[i][2] !== false;
   2439                    break;
   2440                }
   2441            }
   2442            if (dateFormat == null) {
   2443                config._isValid = false;
   2444                return;
   2445            }
   2446            if (match[3]) {
   2447                for (i = 0, l = isoTimesLen; i < l; i++) {
   2448                    if (isoTimes[i][1].exec(match[3])) {
   2449                        // match[2] should be 'T' or space
   2450                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
   2451                        break;
   2452                    }
   2453                }
   2454                if (timeFormat == null) {
   2455                    config._isValid = false;
   2456                    return;
   2457                }
   2458            }
   2459            if (!allowTime && timeFormat != null) {
   2460                config._isValid = false;
   2461                return;
   2462            }
   2463            if (match[4]) {
   2464                if (tzRegex.exec(match[4])) {
   2465                    tzFormat = 'Z';
   2466                } else {
   2467                    config._isValid = false;
   2468                    return;
   2469                }
   2470            }
   2471            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
   2472            configFromStringAndFormat(config);
   2473        } else {
   2474            config._isValid = false;
   2475        }
   2476    }
   2477
   2478    function extractFromRFC2822Strings(
   2479        yearStr,
   2480        monthStr,
   2481        dayStr,
   2482        hourStr,
   2483        minuteStr,
   2484        secondStr
   2485    ) {
   2486        var result = [
   2487            untruncateYear(yearStr),
   2488            defaultLocaleMonthsShort.indexOf(monthStr),
   2489            parseInt(dayStr, 10),
   2490            parseInt(hourStr, 10),
   2491            parseInt(minuteStr, 10),
   2492        ];
   2493
   2494        if (secondStr) {
   2495            result.push(parseInt(secondStr, 10));
   2496        }
   2497
   2498        return result;
   2499    }
   2500
   2501    function untruncateYear(yearStr) {
   2502        var year = parseInt(yearStr, 10);
   2503        if (year <= 49) {
   2504            return 2000 + year;
   2505        } else if (year <= 999) {
   2506            return 1900 + year;
   2507        }
   2508        return year;
   2509    }
   2510
   2511    function preprocessRFC2822(s) {
   2512        // Remove comments and folding whitespace and replace multiple-spaces with a single space
   2513        return s
   2514            .replace(/\([^()]*\)|[\n\t]/g, ' ')
   2515            .replace(/(\s\s+)/g, ' ')
   2516            .replace(/^\s\s*/, '')
   2517            .replace(/\s\s*$/, '');
   2518    }
   2519
   2520    function checkWeekday(weekdayStr, parsedInput, config) {
   2521        if (weekdayStr) {
   2522            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
   2523            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
   2524                weekdayActual = new Date(
   2525                    parsedInput[0],
   2526                    parsedInput[1],
   2527                    parsedInput[2]
   2528                ).getDay();
   2529            if (weekdayProvided !== weekdayActual) {
   2530                getParsingFlags(config).weekdayMismatch = true;
   2531                config._isValid = false;
   2532                return false;
   2533            }
   2534        }
   2535        return true;
   2536    }
   2537
   2538    function calculateOffset(obsOffset, militaryOffset, numOffset) {
   2539        if (obsOffset) {
   2540            return obsOffsets[obsOffset];
   2541        } else if (militaryOffset) {
   2542            // the only allowed military tz is Z
   2543            return 0;
   2544        } else {
   2545            var hm = parseInt(numOffset, 10),
   2546                m = hm % 100,
   2547                h = (hm - m) / 100;
   2548            return h * 60 + m;
   2549        }
   2550    }
   2551
   2552    // date and time from ref 2822 format
   2553    function configFromRFC2822(config) {
   2554        var match = rfc2822.exec(preprocessRFC2822(config._i)),
   2555            parsedArray;
   2556        if (match) {
   2557            parsedArray = extractFromRFC2822Strings(
   2558                match[4],
   2559                match[3],
   2560                match[2],
   2561                match[5],
   2562                match[6],
   2563                match[7]
   2564            );
   2565            if (!checkWeekday(match[1], parsedArray, config)) {
   2566                return;
   2567            }
   2568
   2569            config._a = parsedArray;
   2570            config._tzm = calculateOffset(match[8], match[9], match[10]);
   2571
   2572            config._d = createUTCDate.apply(null, config._a);
   2573            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
   2574
   2575            getParsingFlags(config).rfc2822 = true;
   2576        } else {
   2577            config._isValid = false;
   2578        }
   2579    }
   2580
   2581    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
   2582    function configFromString(config) {
   2583        var matched = aspNetJsonRegex.exec(config._i);
   2584        if (matched !== null) {
   2585            config._d = new Date(+matched[1]);
   2586            return;
   2587        }
   2588
   2589        configFromISO(config);
   2590        if (config._isValid === false) {
   2591            delete config._isValid;
   2592        } else {
   2593            return;
   2594        }
   2595
   2596        configFromRFC2822(config);
   2597        if (config._isValid === false) {
   2598            delete config._isValid;
   2599        } else {
   2600            return;
   2601        }
   2602
   2603        if (config._strict) {
   2604            config._isValid = false;
   2605        } else {
   2606            // Final attempt, use Input Fallback
   2607            hooks.createFromInputFallback(config);
   2608        }
   2609    }
   2610
   2611    hooks.createFromInputFallback = deprecate(
   2612        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
   2613            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
   2614            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',
   2615        function (config) {
   2616            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
   2617        }
   2618    );
   2619
   2620    // Pick the first defined of two or three arguments.
   2621    function defaults(a, b, c) {
   2622        if (a != null) {
   2623            return a;
   2624        }
   2625        if (b != null) {
   2626            return b;
   2627        }
   2628        return c;
   2629    }
   2630
   2631    function currentDateArray(config) {
   2632        // hooks is actually the exported moment object
   2633        var nowValue = new Date(hooks.now());
   2634        if (config._useUTC) {
   2635            return [
   2636                nowValue.getUTCFullYear(),
   2637                nowValue.getUTCMonth(),
   2638                nowValue.getUTCDate(),
   2639            ];
   2640        }
   2641        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
   2642    }
   2643
   2644    // convert an array to a date.
   2645    // the array should mirror the parameters below
   2646    // note: all values past the year are optional and will default to the lowest possible value.
   2647    // [year, month, day , hour, minute, second, millisecond]
   2648    function configFromArray(config) {
   2649        var i,
   2650            date,
   2651            input = [],
   2652            currentDate,
   2653            expectedWeekday,
   2654            yearToUse;
   2655
   2656        if (config._d) {
   2657            return;
   2658        }
   2659
   2660        currentDate = currentDateArray(config);
   2661
   2662        //compute day of the year from weeks and weekdays
   2663        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
   2664            dayOfYearFromWeekInfo(config);
   2665        }
   2666
   2667        //if the day of the year is set, figure out what it is
   2668        if (config._dayOfYear != null) {
   2669            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
   2670
   2671            if (
   2672                config._dayOfYear > daysInYear(yearToUse) ||
   2673                config._dayOfYear === 0
   2674            ) {
   2675                getParsingFlags(config)._overflowDayOfYear = true;
   2676            }
   2677
   2678            date = createUTCDate(yearToUse, 0, config._dayOfYear);
   2679            config._a[MONTH] = date.getUTCMonth();
   2680            config._a[DATE] = date.getUTCDate();
   2681        }
   2682
   2683        // Default to current date.
   2684        // * if no year, month, day of month are given, default to today
   2685        // * if day of month is given, default month and year
   2686        // * if month is given, default only year
   2687        // * if year is given, don't default anything
   2688        for (i = 0; i < 3 && config._a[i] == null; ++i) {
   2689            config._a[i] = input[i] = currentDate[i];
   2690        }
   2691
   2692        // Zero out whatever was not defaulted, including time
   2693        for (; i < 7; i++) {
   2694            config._a[i] = input[i] =
   2695                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
   2696        }
   2697
   2698        // Check for 24:00:00.000
   2699        if (
   2700            config._a[HOUR] === 24 &&
   2701            config._a[MINUTE] === 0 &&
   2702            config._a[SECOND] === 0 &&
   2703            config._a[MILLISECOND] === 0
   2704        ) {
   2705            config._nextDay = true;
   2706            config._a[HOUR] = 0;
   2707        }
   2708
   2709        config._d = (config._useUTC ? createUTCDate : createDate).apply(
   2710            null,
   2711            input
   2712        );
   2713        expectedWeekday = config._useUTC
   2714            ? config._d.getUTCDay()
   2715            : config._d.getDay();
   2716
   2717        // Apply timezone offset from input. The actual utcOffset can be changed
   2718        // with parseZone.
   2719        if (config._tzm != null) {
   2720            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
   2721        }
   2722
   2723        if (config._nextDay) {
   2724            config._a[HOUR] = 24;
   2725        }
   2726
   2727        // check for mismatching day of week
   2728        if (
   2729            config._w &&
   2730            typeof config._w.d !== 'undefined' &&
   2731            config._w.d !== expectedWeekday
   2732        ) {
   2733            getParsingFlags(config).weekdayMismatch = true;
   2734        }
   2735    }
   2736
   2737    function dayOfYearFromWeekInfo(config) {
   2738        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
   2739
   2740        w = config._w;
   2741        if (w.GG != null || w.W != null || w.E != null) {
   2742            dow = 1;
   2743            doy = 4;
   2744
   2745            // TODO: We need to take the current isoWeekYear, but that depends on
   2746            // how we interpret now (local, utc, fixed offset). So create
   2747            // a now version of current config (take local/utc/offset flags, and
   2748            // create now).
   2749            weekYear = defaults(
   2750                w.GG,
   2751                config._a[YEAR],
   2752                weekOfYear(createLocal(), 1, 4).year
   2753            );
   2754            week = defaults(w.W, 1);
   2755            weekday = defaults(w.E, 1);
   2756            if (weekday < 1 || weekday > 7) {
   2757                weekdayOverflow = true;
   2758            }
   2759        } else {
   2760            dow = config._locale._week.dow;
   2761            doy = config._locale._week.doy;
   2762
   2763            curWeek = weekOfYear(createLocal(), dow, doy);
   2764
   2765            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
   2766
   2767            // Default to current week.
   2768            week = defaults(w.w, curWeek.week);
   2769
   2770            if (w.d != null) {
   2771                // weekday -- low day numbers are considered next week
   2772                weekday = w.d;
   2773                if (weekday < 0 || weekday > 6) {
   2774                    weekdayOverflow = true;
   2775                }
   2776            } else if (w.e != null) {
   2777                // local weekday -- counting starts from beginning of week
   2778                weekday = w.e + dow;
   2779                if (w.e < 0 || w.e > 6) {
   2780                    weekdayOverflow = true;
   2781                }
   2782            } else {
   2783                // default to beginning of week
   2784                weekday = dow;
   2785            }
   2786        }
   2787        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
   2788            getParsingFlags(config)._overflowWeeks = true;
   2789        } else if (weekdayOverflow != null) {
   2790            getParsingFlags(config)._overflowWeekday = true;
   2791        } else {
   2792            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
   2793            config._a[YEAR] = temp.year;
   2794            config._dayOfYear = temp.dayOfYear;
   2795        }
   2796    }
   2797
   2798    // constant that refers to the ISO standard
   2799    hooks.ISO_8601 = function () {};
   2800
   2801    // constant that refers to the RFC 2822 form
   2802    hooks.RFC_2822 = function () {};
   2803
   2804    // date from string and format string
   2805    function configFromStringAndFormat(config) {
   2806        // TODO: Move this to another part of the creation flow to prevent circular deps
   2807        if (config._f === hooks.ISO_8601) {
   2808            configFromISO(config);
   2809            return;
   2810        }
   2811        if (config._f === hooks.RFC_2822) {
   2812            configFromRFC2822(config);
   2813            return;
   2814        }
   2815        config._a = [];
   2816        getParsingFlags(config).empty = true;
   2817
   2818        // This array is used to make a Date, either with `new Date` or `Date.UTC`
   2819        var string = '' + config._i,
   2820            i,
   2821            parsedInput,
   2822            tokens,
   2823            token,
   2824            skipped,
   2825            stringLength = string.length,
   2826            totalParsedInputLength = 0,
   2827            era,
   2828            tokenLen;
   2829
   2830        tokens =
   2831            expandFormat(config._f, config._locale).match(formattingTokens) || [];
   2832        tokenLen = tokens.length;
   2833        for (i = 0; i < tokenLen; i++) {
   2834            token = tokens[i];
   2835            parsedInput = (string.match(getParseRegexForToken(token, config)) ||
   2836                [])[0];
   2837            if (parsedInput) {
   2838                skipped = string.substr(0, string.indexOf(parsedInput));
   2839                if (skipped.length > 0) {
   2840                    getParsingFlags(config).unusedInput.push(skipped);
   2841                }
   2842                string = string.slice(
   2843                    string.indexOf(parsedInput) + parsedInput.length
   2844                );
   2845                totalParsedInputLength += parsedInput.length;
   2846            }
   2847            // don't parse if it's not a known token
   2848            if (formatTokenFunctions[token]) {
   2849                if (parsedInput) {
   2850                    getParsingFlags(config).empty = false;
   2851                } else {
   2852                    getParsingFlags(config).unusedTokens.push(token);
   2853                }
   2854                addTimeToArrayFromToken(token, parsedInput, config);
   2855            } else if (config._strict && !parsedInput) {
   2856                getParsingFlags(config).unusedTokens.push(token);
   2857            }
   2858        }
   2859
   2860        // add remaining unparsed input length to the string
   2861        getParsingFlags(config).charsLeftOver =
   2862            stringLength - totalParsedInputLength;
   2863        if (string.length > 0) {
   2864            getParsingFlags(config).unusedInput.push(string);
   2865        }
   2866
   2867        // clear _12h flag if hour is <= 12
   2868        if (
   2869            config._a[HOUR] <= 12 &&
   2870            getParsingFlags(config).bigHour === true &&
   2871            config._a[HOUR] > 0
   2872        ) {
   2873            getParsingFlags(config).bigHour = undefined;
   2874        }
   2875
   2876        getParsingFlags(config).parsedDateParts = config._a.slice(0);
   2877        getParsingFlags(config).meridiem = config._meridiem;
   2878        // handle meridiem
   2879        config._a[HOUR] = meridiemFixWrap(
   2880            config._locale,
   2881            config._a[HOUR],
   2882            config._meridiem
   2883        );
   2884
   2885        // handle era
   2886        era = getParsingFlags(config).era;
   2887        if (era !== null) {
   2888            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
   2889        }
   2890
   2891        configFromArray(config);
   2892        checkOverflow(config);
   2893    }
   2894
   2895    function meridiemFixWrap(locale, hour, meridiem) {
   2896        var isPm;
   2897
   2898        if (meridiem == null) {
   2899            // nothing to do
   2900            return hour;
   2901        }
   2902        if (locale.meridiemHour != null) {
   2903            return locale.meridiemHour(hour, meridiem);
   2904        } else if (locale.isPM != null) {
   2905            // Fallback
   2906            isPm = locale.isPM(meridiem);
   2907            if (isPm && hour < 12) {
   2908                hour += 12;
   2909            }
   2910            if (!isPm && hour === 12) {
   2911                hour = 0;
   2912            }
   2913            return hour;
   2914        } else {
   2915            // this is not supposed to happen
   2916            return hour;
   2917        }
   2918    }
   2919
   2920    // date from string and array of format strings
   2921    function configFromStringAndArray(config) {
   2922        var tempConfig,
   2923            bestMoment,
   2924            scoreToBeat,
   2925            i,
   2926            currentScore,
   2927            validFormatFound,
   2928            bestFormatIsValid = false,
   2929            configfLen = config._f.length;
   2930
   2931        if (configfLen === 0) {
   2932            getParsingFlags(config).invalidFormat = true;
   2933            config._d = new Date(NaN);
   2934            return;
   2935        }
   2936
   2937        for (i = 0; i < configfLen; i++) {
   2938            currentScore = 0;
   2939            validFormatFound = false;
   2940            tempConfig = copyConfig({}, config);
   2941            if (config._useUTC != null) {
   2942                tempConfig._useUTC = config._useUTC;
   2943            }
   2944            tempConfig._f = config._f[i];
   2945            configFromStringAndFormat(tempConfig);
   2946
   2947            if (isValid(tempConfig)) {
   2948                validFormatFound = true;
   2949            }
   2950
   2951            // if there is any input that was not parsed add a penalty for that format
   2952            currentScore += getParsingFlags(tempConfig).charsLeftOver;
   2953
   2954            //or tokens
   2955            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
   2956
   2957            getParsingFlags(tempConfig).score = currentScore;
   2958
   2959            if (!bestFormatIsValid) {
   2960                if (
   2961                    scoreToBeat == null ||
   2962                    currentScore < scoreToBeat ||
   2963                    validFormatFound
   2964                ) {
   2965                    scoreToBeat = currentScore;
   2966                    bestMoment = tempConfig;
   2967                    if (validFormatFound) {
   2968                        bestFormatIsValid = true;
   2969                    }
   2970                }
   2971            } else {
   2972                if (currentScore < scoreToBeat) {
   2973                    scoreToBeat = currentScore;
   2974                    bestMoment = tempConfig;
   2975                }
   2976            }
   2977        }
   2978
   2979        extend(config, bestMoment || tempConfig);
   2980    }
   2981
   2982    function configFromObject(config) {
   2983        if (config._d) {
   2984            return;
   2985        }
   2986
   2987        var i = normalizeObjectUnits(config._i),
   2988            dayOrDate = i.day === undefined ? i.date : i.day;
   2989        config._a = map(
   2990            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
   2991            function (obj) {
   2992                return obj && parseInt(obj, 10);
   2993            }
   2994        );
   2995
   2996        configFromArray(config);
   2997    }
   2998
   2999    function createFromConfig(config) {
   3000        var res = new Moment(checkOverflow(prepareConfig(config)));
   3001        if (res._nextDay) {
   3002            // Adding is smart enough around DST
   3003            res.add(1, 'd');
   3004            res._nextDay = undefined;
   3005        }
   3006
   3007        return res;
   3008    }
   3009
   3010    function prepareConfig(config) {
   3011        var input = config._i,
   3012            format = config._f;
   3013
   3014        config._locale = config._locale || getLocale(config._l);
   3015
   3016        if (input === null || (format === undefined && input === '')) {
   3017            return createInvalid({ nullInput: true });
   3018        }
   3019
   3020        if (typeof input === 'string') {
   3021            config._i = input = config._locale.preparse(input);
   3022        }
   3023
   3024        if (isMoment(input)) {
   3025            return new Moment(checkOverflow(input));
   3026        } else if (isDate(input)) {
   3027            config._d = input;
   3028        } else if (isArray(format)) {
   3029            configFromStringAndArray(config);
   3030        } else if (format) {
   3031            configFromStringAndFormat(config);
   3032        } else {
   3033            configFromInput(config);
   3034        }
   3035
   3036        if (!isValid(config)) {
   3037            config._d = null;
   3038        }
   3039
   3040        return config;
   3041    }
   3042
   3043    function configFromInput(config) {
   3044        var input = config._i;
   3045        if (isUndefined(input)) {
   3046            config._d = new Date(hooks.now());
   3047        } else if (isDate(input)) {
   3048            config._d = new Date(input.valueOf());
   3049        } else if (typeof input === 'string') {
   3050            configFromString(config);
   3051        } else if (isArray(input)) {
   3052            config._a = map(input.slice(0), function (obj) {
   3053                return parseInt(obj, 10);
   3054            });
   3055            configFromArray(config);
   3056        } else if (isObject(input)) {
   3057            configFromObject(config);
   3058        } else if (isNumber(input)) {
   3059            // from milliseconds
   3060            config._d = new Date(input);
   3061        } else {
   3062            hooks.createFromInputFallback(config);
   3063        }
   3064    }
   3065
   3066    function createLocalOrUTC(input, format, locale, strict, isUTC) {
   3067        var c = {};
   3068
   3069        if (format === true || format === false) {
   3070            strict = format;
   3071            format = undefined;
   3072        }
   3073
   3074        if (locale === true || locale === false) {
   3075            strict = locale;
   3076            locale = undefined;
   3077        }
   3078
   3079        if (
   3080            (isObject(input) && isObjectEmpty(input)) ||
   3081            (isArray(input) && input.length === 0)
   3082        ) {
   3083            input = undefined;
   3084        }
   3085        // object construction must be done this way.
   3086        // https://github.com/moment/moment/issues/1423
   3087        c._isAMomentObject = true;
   3088        c._useUTC = c._isUTC = isUTC;
   3089        c._l = locale;
   3090        c._i = input;
   3091        c._f = format;
   3092        c._strict = strict;
   3093
   3094        return createFromConfig(c);
   3095    }
   3096
   3097    function createLocal(input, format, locale, strict) {
   3098        return createLocalOrUTC(input, format, locale, strict, false);
   3099    }
   3100
   3101    var prototypeMin = deprecate(
   3102            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
   3103            function () {
   3104                var other = createLocal.apply(null, arguments);
   3105                if (this.isValid() && other.isValid()) {
   3106                    return other < this ? this : other;
   3107                } else {
   3108                    return createInvalid();
   3109                }
   3110            }
   3111        ),
   3112        prototypeMax = deprecate(
   3113            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
   3114            function () {
   3115                var other = createLocal.apply(null, arguments);
   3116                if (this.isValid() && other.isValid()) {
   3117                    return other > this ? this : other;
   3118                } else {
   3119                    return createInvalid();
   3120                }
   3121            }
   3122        );
   3123
   3124    // Pick a moment m from moments so that m[fn](other) is true for all
   3125    // other. This relies on the function fn to be transitive.
   3126    //
   3127    // moments should either be an array of moment objects or an array, whose
   3128    // first element is an array of moment objects.
   3129    function pickBy(fn, moments) {
   3130        var res, i;
   3131        if (moments.length === 1 && isArray(moments[0])) {
   3132            moments = moments[0];
   3133        }
   3134        if (!moments.length) {
   3135            return createLocal();
   3136        }
   3137        res = moments[0];
   3138        for (i = 1; i < moments.length; ++i) {
   3139            if (!moments[i].isValid() || moments[i][fn](res)) {
   3140                res = moments[i];
   3141            }
   3142        }
   3143        return res;
   3144    }
   3145
   3146    // TODO: Use [].sort instead?
   3147    function min() {
   3148        var args = [].slice.call(arguments, 0);
   3149
   3150        return pickBy('isBefore', args);
   3151    }
   3152
   3153    function max() {
   3154        var args = [].slice.call(arguments, 0);
   3155
   3156        return pickBy('isAfter', args);
   3157    }
   3158
   3159    var now = function () {
   3160        return Date.now ? Date.now() : +new Date();
   3161    };
   3162
   3163    var ordering = [
   3164        'year',
   3165        'quarter',
   3166        'month',
   3167        'week',
   3168        'day',
   3169        'hour',
   3170        'minute',
   3171        'second',
   3172        'millisecond',
   3173    ];
   3174
   3175    function isDurationValid(m) {
   3176        var key,
   3177            unitHasDecimal = false,
   3178            i,
   3179            orderLen = ordering.length;
   3180        for (key in m) {
   3181            if (
   3182                hasOwnProp(m, key) &&
   3183                !(
   3184                    indexOf.call(ordering, key) !== -1 &&
   3185                    (m[key] == null || !isNaN(m[key]))
   3186                )
   3187            ) {
   3188                return false;
   3189            }
   3190        }
   3191
   3192        for (i = 0; i < orderLen; ++i) {
   3193            if (m[ordering[i]]) {
   3194                if (unitHasDecimal) {
   3195                    return false; // only allow non-integers for smallest unit
   3196                }
   3197                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
   3198                    unitHasDecimal = true;
   3199                }
   3200            }
   3201        }
   3202
   3203        return true;
   3204    }
   3205
   3206    function isValid$1() {
   3207        return this._isValid;
   3208    }
   3209
   3210    function createInvalid$1() {
   3211        return createDuration(NaN);
   3212    }
   3213
   3214    function Duration(duration) {
   3215        var normalizedInput = normalizeObjectUnits(duration),
   3216            years = normalizedInput.year || 0,
   3217            quarters = normalizedInput.quarter || 0,
   3218            months = normalizedInput.month || 0,
   3219            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
   3220            days = normalizedInput.day || 0,
   3221            hours = normalizedInput.hour || 0,
   3222            minutes = normalizedInput.minute || 0,
   3223            seconds = normalizedInput.second || 0,
   3224            milliseconds = normalizedInput.millisecond || 0;
   3225
   3226        this._isValid = isDurationValid(normalizedInput);
   3227
   3228        // representation for dateAddRemove
   3229        this._milliseconds =
   3230            +milliseconds +
   3231            seconds * 1e3 + // 1000
   3232            minutes * 6e4 + // 1000 * 60
   3233            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
   3234        // Because of dateAddRemove treats 24 hours as different from a
   3235        // day when working around DST, we need to store them separately
   3236        this._days = +days + weeks * 7;
   3237        // It is impossible to translate months into days without knowing
   3238        // which months you are are talking about, so we have to store
   3239        // it separately.
   3240        this._months = +months + quarters * 3 + years * 12;
   3241
   3242        this._data = {};
   3243
   3244        this._locale = getLocale();
   3245
   3246        this._bubble();
   3247    }
   3248
   3249    function isDuration(obj) {
   3250        return obj instanceof Duration;
   3251    }
   3252
   3253    function absRound(number) {
   3254        if (number < 0) {
   3255            return Math.round(-1 * number) * -1;
   3256        } else {
   3257            return Math.round(number);
   3258        }
   3259    }
   3260
   3261    // compare two arrays, return the number of differences
   3262    function compareArrays(array1, array2, dontConvert) {
   3263        var len = Math.min(array1.length, array2.length),
   3264            lengthDiff = Math.abs(array1.length - array2.length),
   3265            diffs = 0,
   3266            i;
   3267        for (i = 0; i < len; i++) {
   3268            if (
   3269                (dontConvert && array1[i] !== array2[i]) ||
   3270                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
   3271            ) {
   3272                diffs++;
   3273            }
   3274        }
   3275        return diffs + lengthDiff;
   3276    }
   3277
   3278    // FORMATTING
   3279
   3280    function offset(token, separator) {
   3281        addFormatToken(token, 0, 0, function () {
   3282            var offset = this.utcOffset(),
   3283                sign = '+';
   3284            if (offset < 0) {
   3285                offset = -offset;
   3286                sign = '-';
   3287            }
   3288            return (
   3289                sign +
   3290                zeroFill(~~(offset / 60), 2) +
   3291                separator +
   3292                zeroFill(~~offset % 60, 2)
   3293            );
   3294        });
   3295    }
   3296
   3297    offset('Z', ':');
   3298    offset('ZZ', '');
   3299
   3300    // PARSING
   3301
   3302    addRegexToken('Z', matchShortOffset);
   3303    addRegexToken('ZZ', matchShortOffset);
   3304    addParseToken(['Z', 'ZZ'], function (input, array, config) {
   3305        config._useUTC = true;
   3306        config._tzm = offsetFromString(matchShortOffset, input);
   3307    });
   3308
   3309    // HELPERS
   3310
   3311    // timezone chunker
   3312    // '+10:00' > ['10',  '00']
   3313    // '-1530'  > ['-15', '30']
   3314    var chunkOffset = /([\+\-]|\d\d)/gi;
   3315
   3316    function offsetFromString(matcher, string) {
   3317        var matches = (string || '').match(matcher),
   3318            chunk,
   3319            parts,
   3320            minutes;
   3321
   3322        if (matches === null) {
   3323            return null;
   3324        }
   3325
   3326        chunk = matches[matches.length - 1] || [];
   3327        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
   3328        minutes = +(parts[1] * 60) + toInt(parts[2]);
   3329
   3330        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
   3331    }
   3332
   3333    // Return a moment from input, that is local/utc/zone equivalent to model.
   3334    function cloneWithOffset(input, model) {
   3335        var res, diff;
   3336        if (model._isUTC) {
   3337            res = model.clone();
   3338            diff =
   3339                (isMoment(input) || isDate(input)
   3340                    ? input.valueOf()
   3341                    : createLocal(input).valueOf()) - res.valueOf();
   3342            // Use low-level api, because this fn is low-level api.
   3343            res._d.setTime(res._d.valueOf() + diff);
   3344            hooks.updateOffset(res, false);
   3345            return res;
   3346        } else {
   3347            return createLocal(input).local();
   3348        }
   3349    }
   3350
   3351    function getDateOffset(m) {
   3352        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
   3353        // https://github.com/moment/moment/pull/1871
   3354        return -Math.round(m._d.getTimezoneOffset());
   3355    }
   3356
   3357    // HOOKS
   3358
   3359    // This function will be called whenever a moment is mutated.
   3360    // It is intended to keep the offset in sync with the timezone.
   3361    hooks.updateOffset = function () {};
   3362
   3363    // MOMENTS
   3364
   3365    // keepLocalTime = true means only change the timezone, without
   3366    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
   3367    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
   3368    // +0200, so we adjust the time as needed, to be valid.
   3369    //
   3370    // Keeping the time actually adds/subtracts (one hour)
   3371    // from the actual represented time. That is why we call updateOffset
   3372    // a second time. In case it wants us to change the offset again
   3373    // _changeInProgress == true case, then we have to adjust, because
   3374    // there is no such time in the given timezone.
   3375    function getSetOffset(input, keepLocalTime, keepMinutes) {
   3376        var offset = this._offset || 0,
   3377            localAdjust;
   3378        if (!this.isValid()) {
   3379            return input != null ? this : NaN;
   3380        }
   3381        if (input != null) {
   3382            if (typeof input === 'string') {
   3383                input = offsetFromString(matchShortOffset, input);
   3384                if (input === null) {
   3385                    return this;
   3386                }
   3387            } else if (Math.abs(input) < 16 && !keepMinutes) {
   3388                input = input * 60;
   3389            }
   3390            if (!this._isUTC && keepLocalTime) {
   3391                localAdjust = getDateOffset(this);
   3392            }
   3393            this._offset = input;
   3394            this._isUTC = true;
   3395            if (localAdjust != null) {
   3396                this.add(localAdjust, 'm');
   3397            }
   3398            if (offset !== input) {
   3399                if (!keepLocalTime || this._changeInProgress) {
   3400                    addSubtract(
   3401                        this,
   3402                        createDuration(input - offset, 'm'),
   3403                        1,
   3404                        false
   3405                    );
   3406                } else if (!this._changeInProgress) {
   3407                    this._changeInProgress = true;
   3408                    hooks.updateOffset(this, true);
   3409                    this._changeInProgress = null;
   3410                }
   3411            }
   3412            return this;
   3413        } else {
   3414            return this._isUTC ? offset : getDateOffset(this);
   3415        }
   3416    }
   3417
   3418    function getSetZone(input, keepLocalTime) {
   3419        if (input != null) {
   3420            if (typeof input !== 'string') {
   3421                input = -input;
   3422            }
   3423
   3424            this.utcOffset(input, keepLocalTime);
   3425
   3426            return this;
   3427        } else {
   3428            return -this.utcOffset();
   3429        }
   3430    }
   3431
   3432    function setOffsetToUTC(keepLocalTime) {
   3433        return this.utcOffset(0, keepLocalTime);
   3434    }
   3435
   3436    function setOffsetToLocal(keepLocalTime) {
   3437        if (this._isUTC) {
   3438            this.utcOffset(0, keepLocalTime);
   3439            this._isUTC = false;
   3440
   3441            if (keepLocalTime) {
   3442                this.subtract(getDateOffset(this), 'm');
   3443            }
   3444        }
   3445        return this;
   3446    }
   3447
   3448    function setOffsetToParsedOffset() {
   3449        if (this._tzm != null) {
   3450            this.utcOffset(this._tzm, false, true);
   3451        } else if (typeof this._i === 'string') {
   3452            var tZone = offsetFromString(matchOffset, this._i);
   3453            if (tZone != null) {
   3454                this.utcOffset(tZone);
   3455            } else {
   3456                this.utcOffset(0, true);
   3457            }
   3458        }
   3459        return this;
   3460    }
   3461
   3462    function hasAlignedHourOffset(input) {
   3463        if (!this.isValid()) {
   3464            return false;
   3465        }
   3466        input = input ? createLocal(input).utcOffset() : 0;
   3467
   3468        return (this.utcOffset() - input) % 60 === 0;
   3469    }
   3470
   3471    function isDaylightSavingTime() {
   3472        return (
   3473            this.utcOffset() > this.clone().month(0).utcOffset() ||
   3474            this.utcOffset() > this.clone().month(5).utcOffset()
   3475        );
   3476    }
   3477
   3478    function isDaylightSavingTimeShifted() {
   3479        if (!isUndefined(this._isDSTShifted)) {
   3480            return this._isDSTShifted;
   3481        }
   3482
   3483        var c = {},
   3484            other;
   3485
   3486        copyConfig(c, this);
   3487        c = prepareConfig(c);
   3488
   3489        if (c._a) {
   3490            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
   3491            this._isDSTShifted =
   3492                this.isValid() && compareArrays(c._a, other.toArray()) > 0;
   3493        } else {
   3494            this._isDSTShifted = false;
   3495        }
   3496
   3497        return this._isDSTShifted;
   3498    }
   3499
   3500    function isLocal() {
   3501        return this.isValid() ? !this._isUTC : false;
   3502    }
   3503
   3504    function isUtcOffset() {
   3505        return this.isValid() ? this._isUTC : false;
   3506    }
   3507
   3508    function isUtc() {
   3509        return this.isValid() ? this._isUTC && this._offset === 0 : false;
   3510    }
   3511
   3512    // ASP.NET json date format regex
   3513    var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
   3514        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
   3515        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
   3516        // and further modified to allow for strings containing both week and day
   3517        isoRegex =
   3518            /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
   3519
   3520    function createDuration(input, key) {
   3521        var duration = input,
   3522            // matching against regexp is expensive, do it on demand
   3523            match = null,
   3524            sign,
   3525            ret,
   3526            diffRes;
   3527
   3528        if (isDuration(input)) {
   3529            duration = {
   3530                ms: input._milliseconds,
   3531                d: input._days,
   3532                M: input._months,
   3533            };
   3534        } else if (isNumber(input) || !isNaN(+input)) {
   3535            duration = {};
   3536            if (key) {
   3537                duration[key] = +input;
   3538            } else {
   3539                duration.milliseconds = +input;
   3540            }
   3541        } else if ((match = aspNetRegex.exec(input))) {
   3542            sign = match[1] === '-' ? -1 : 1;
   3543            duration = {
   3544                y: 0,
   3545                d: toInt(match[DATE]) * sign,
   3546                h: toInt(match[HOUR]) * sign,
   3547                m: toInt(match[MINUTE]) * sign,
   3548                s: toInt(match[SECOND]) * sign,
   3549                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
   3550            };
   3551        } else if ((match = isoRegex.exec(input))) {
   3552            sign = match[1] === '-' ? -1 : 1;
   3553            duration = {
   3554                y: parseIso(match[2], sign),
   3555                M: parseIso(match[3], sign),
   3556                w: parseIso(match[4], sign),
   3557                d: parseIso(match[5], sign),
   3558                h: parseIso(match[6], sign),
   3559                m: parseIso(match[7], sign),
   3560                s: parseIso(match[8], sign),
   3561            };
   3562        } else if (duration == null) {
   3563            // checks for null or undefined
   3564            duration = {};
   3565        } else if (
   3566            typeof duration === 'object' &&
   3567            ('from' in duration || 'to' in duration)
   3568        ) {
   3569            diffRes = momentsDifference(
   3570                createLocal(duration.from),
   3571                createLocal(duration.to)
   3572            );
   3573
   3574            duration = {};
   3575            duration.ms = diffRes.milliseconds;
   3576            duration.M = diffRes.months;
   3577        }
   3578
   3579        ret = new Duration(duration);
   3580
   3581        if (isDuration(input) && hasOwnProp(input, '_locale')) {
   3582            ret._locale = input._locale;
   3583        }
   3584
   3585        if (isDuration(input) && hasOwnProp(input, '_isValid')) {
   3586            ret._isValid = input._isValid;
   3587        }
   3588
   3589        return ret;
   3590    }
   3591
   3592    createDuration.fn = Duration.prototype;
   3593    createDuration.invalid = createInvalid$1;
   3594
   3595    function parseIso(inp, sign) {
   3596        // We'd normally use ~~inp for this, but unfortunately it also
   3597        // converts floats to ints.
   3598        // inp may be undefined, so careful calling replace on it.
   3599        var res = inp && parseFloat(inp.replace(',', '.'));
   3600        // apply sign while we're at it
   3601        return (isNaN(res) ? 0 : res) * sign;
   3602    }
   3603
   3604    function positiveMomentsDifference(base, other) {
   3605        var res = {};
   3606
   3607        res.months =
   3608            other.month() - base.month() + (other.year() - base.year()) * 12;
   3609        if (base.clone().add(res.months, 'M').isAfter(other)) {
   3610            --res.months;
   3611        }
   3612
   3613        res.milliseconds = +other - +base.clone().add(res.months, 'M');
   3614
   3615        return res;
   3616    }
   3617
   3618    function momentsDifference(base, other) {
   3619        var res;
   3620        if (!(base.isValid() && other.isValid())) {
   3621            return { milliseconds: 0, months: 0 };
   3622        }
   3623
   3624        other = cloneWithOffset(other, base);
   3625        if (base.isBefore(other)) {
   3626            res = positiveMomentsDifference(base, other);
   3627        } else {
   3628            res = positiveMomentsDifference(other, base);
   3629            res.milliseconds = -res.milliseconds;
   3630            res.months = -res.months;
   3631        }
   3632
   3633        return res;
   3634    }
   3635
   3636    // TODO: remove 'name' arg after deprecation is removed
   3637    function createAdder(direction, name) {
   3638        return function (val, period) {
   3639            var dur, tmp;
   3640            //invert the arguments, but complain about it
   3641            if (period !== null && !isNaN(+period)) {
   3642                deprecateSimple(
   3643                    name,
   3644                    'moment().' +
   3645                        name +
   3646                        '(period, number) is deprecated. Please use moment().' +
   3647                        name +
   3648                        '(number, period). ' +
   3649                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
   3650                );
   3651                tmp = val;
   3652                val = period;
   3653                period = tmp;
   3654            }
   3655
   3656            dur = createDuration(val, period);
   3657            addSubtract(this, dur, direction);
   3658            return this;
   3659        };
   3660    }
   3661
   3662    function addSubtract(mom, duration, isAdding, updateOffset) {
   3663        var milliseconds = duration._milliseconds,
   3664            days = absRound(duration._days),
   3665            months = absRound(duration._months);
   3666
   3667        if (!mom.isValid()) {
   3668            // No op
   3669            return;
   3670        }
   3671
   3672        updateOffset = updateOffset == null ? true : updateOffset;
   3673
   3674        if (months) {
   3675            setMonth(mom, get(mom, 'Month') + months * isAdding);
   3676        }
   3677        if (days) {
   3678            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
   3679        }
   3680        if (milliseconds) {
   3681            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
   3682        }
   3683        if (updateOffset) {
   3684            hooks.updateOffset(mom, days || months);
   3685        }
   3686    }
   3687
   3688    var add = createAdder(1, 'add'),
   3689        subtract = createAdder(-1, 'subtract');
   3690
   3691    function isString(input) {
   3692        return typeof input === 'string' || input instanceof String;
   3693    }
   3694
   3695    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
   3696    function isMomentInput(input) {
   3697        return (
   3698            isMoment(input) ||
   3699            isDate(input) ||
   3700            isString(input) ||
   3701            isNumber(input) ||
   3702            isNumberOrStringArray(input) ||
   3703            isMomentInputObject(input) ||
   3704            input === null ||
   3705            input === undefined
   3706        );
   3707    }
   3708
   3709    function isMomentInputObject(input) {
   3710        var objectTest = isObject(input) && !isObjectEmpty(input),
   3711            propertyTest = false,
   3712            properties = [
   3713                'years',
   3714                'year',
   3715                'y',
   3716                'months',
   3717                'month',
   3718                'M',
   3719                'days',
   3720                'day',
   3721                'd',
   3722                'dates',
   3723                'date',
   3724                'D',
   3725                'hours',
   3726                'hour',
   3727                'h',
   3728                'minutes',
   3729                'minute',
   3730                'm',
   3731                'seconds',
   3732                'second',
   3733                's',
   3734                'milliseconds',
   3735                'millisecond',
   3736                'ms',
   3737            ],
   3738            i,
   3739            property,
   3740            propertyLen = properties.length;
   3741
   3742        for (i = 0; i < propertyLen; i += 1) {
   3743            property = properties[i];
   3744            propertyTest = propertyTest || hasOwnProp(input, property);
   3745        }
   3746
   3747        return objectTest && propertyTest;
   3748    }
   3749
   3750    function isNumberOrStringArray(input) {
   3751        var arrayTest = isArray(input),
   3752            dataTypeTest = false;
   3753        if (arrayTest) {
   3754            dataTypeTest =
   3755                input.filter(function (item) {
   3756                    return !isNumber(item) && isString(input);
   3757                }).length === 0;
   3758        }
   3759        return arrayTest && dataTypeTest;
   3760    }
   3761
   3762    function isCalendarSpec(input) {
   3763        var objectTest = isObject(input) && !isObjectEmpty(input),
   3764            propertyTest = false,
   3765            properties = [
   3766                'sameDay',
   3767                'nextDay',
   3768                'lastDay',
   3769                'nextWeek',
   3770                'lastWeek',
   3771                'sameElse',
   3772            ],
   3773            i,
   3774            property;
   3775
   3776        for (i = 0; i < properties.length; i += 1) {
   3777            property = properties[i];
   3778            propertyTest = propertyTest || hasOwnProp(input, property);
   3779        }
   3780
   3781        return objectTest && propertyTest;
   3782    }
   3783
   3784    function getCalendarFormat(myMoment, now) {
   3785        var diff = myMoment.diff(now, 'days', true);
   3786        return diff < -6
   3787            ? 'sameElse'
   3788            : diff < -1
   3789              ? 'lastWeek'
   3790              : diff < 0
   3791                ? 'lastDay'
   3792                : diff < 1
   3793                  ? 'sameDay'
   3794                  : diff < 2
   3795                    ? 'nextDay'
   3796                    : diff < 7
   3797                      ? 'nextWeek'
   3798                      : 'sameElse';
   3799    }
   3800
   3801    function calendar$1(time, formats) {
   3802        // Support for single parameter, formats only overload to the calendar function
   3803        if (arguments.length === 1) {
   3804            if (!arguments[0]) {
   3805                time = undefined;
   3806                formats = undefined;
   3807            } else if (isMomentInput(arguments[0])) {
   3808                time = arguments[0];
   3809                formats = undefined;
   3810            } else if (isCalendarSpec(arguments[0])) {
   3811                formats = arguments[0];
   3812                time = undefined;
   3813            }
   3814        }
   3815        // We want to compare the start of today, vs this.
   3816        // Getting start-of-today depends on whether we're local/utc/offset or not.
   3817        var now = time || createLocal(),
   3818            sod = cloneWithOffset(now, this).startOf('day'),
   3819            format = hooks.calendarFormat(this, sod) || 'sameElse',
   3820            output =
   3821                formats &&
   3822                (isFunction(formats[format])
   3823                    ? formats[format].call(this, now)
   3824                    : formats[format]);
   3825
   3826        return this.format(
   3827            output || this.localeData().calendar(format, this, createLocal(now))
   3828        );
   3829    }
   3830
   3831    function clone() {
   3832        return new Moment(this);
   3833    }
   3834
   3835    function isAfter(input, units) {
   3836        var localInput = isMoment(input) ? input : createLocal(input);
   3837        if (!(this.isValid() && localInput.isValid())) {
   3838            return false;
   3839        }
   3840        units = normalizeUnits(units) || 'millisecond';
   3841        if (units === 'millisecond') {
   3842            return this.valueOf() > localInput.valueOf();
   3843        } else {
   3844            return localInput.valueOf() < this.clone().startOf(units).valueOf();
   3845        }
   3846    }
   3847
   3848    function isBefore(input, units) {
   3849        var localInput = isMoment(input) ? input : createLocal(input);
   3850        if (!(this.isValid() && localInput.isValid())) {
   3851            return false;
   3852        }
   3853        units = normalizeUnits(units) || 'millisecond';
   3854        if (units === 'millisecond') {
   3855            return this.valueOf() < localInput.valueOf();
   3856        } else {
   3857            return this.clone().endOf(units).valueOf() < localInput.valueOf();
   3858        }
   3859    }
   3860
   3861    function isBetween(from, to, units, inclusivity) {
   3862        var localFrom = isMoment(from) ? from : createLocal(from),
   3863            localTo = isMoment(to) ? to : createLocal(to);
   3864        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
   3865            return false;
   3866        }
   3867        inclusivity = inclusivity || '()';
   3868        return (
   3869            (inclusivity[0] === '('
   3870                ? this.isAfter(localFrom, units)
   3871                : !this.isBefore(localFrom, units)) &&
   3872            (inclusivity[1] === ')'
   3873                ? this.isBefore(localTo, units)
   3874                : !this.isAfter(localTo, units))
   3875        );
   3876    }
   3877
   3878    function isSame(input, units) {
   3879        var localInput = isMoment(input) ? input : createLocal(input),
   3880            inputMs;
   3881        if (!(this.isValid() && localInput.isValid())) {
   3882            return false;
   3883        }
   3884        units = normalizeUnits(units) || 'millisecond';
   3885        if (units === 'millisecond') {
   3886            return this.valueOf() === localInput.valueOf();
   3887        } else {
   3888            inputMs = localInput.valueOf();
   3889            return (
   3890                this.clone().startOf(units).valueOf() <= inputMs &&
   3891                inputMs <= this.clone().endOf(units).valueOf()
   3892            );
   3893        }
   3894    }
   3895
   3896    function isSameOrAfter(input, units) {
   3897        return this.isSame(input, units) || this.isAfter(input, units);
   3898    }
   3899
   3900    function isSameOrBefore(input, units) {
   3901        return this.isSame(input, units) || this.isBefore(input, units);
   3902    }
   3903
   3904    function diff(input, units, asFloat) {
   3905        var that, zoneDelta, output;
   3906
   3907        if (!this.isValid()) {
   3908            return NaN;
   3909        }
   3910
   3911        that = cloneWithOffset(input, this);
   3912
   3913        if (!that.isValid()) {
   3914            return NaN;
   3915        }
   3916
   3917        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
   3918
   3919        units = normalizeUnits(units);
   3920
   3921        switch (units) {
   3922            case 'year':
   3923                output = monthDiff(this, that) / 12;
   3924                break;
   3925            case 'month':
   3926                output = monthDiff(this, that);
   3927                break;
   3928            case 'quarter':
   3929                output = monthDiff(this, that) / 3;
   3930                break;
   3931            case 'second':
   3932                output = (this - that) / 1e3;
   3933                break; // 1000
   3934            case 'minute':
   3935                output = (this - that) / 6e4;
   3936                break; // 1000 * 60
   3937            case 'hour':
   3938                output = (this - that) / 36e5;
   3939                break; // 1000 * 60 * 60
   3940            case 'day':
   3941                output = (this - that - zoneDelta) / 864e5;
   3942                break; // 1000 * 60 * 60 * 24, negate dst
   3943            case 'week':
   3944                output = (this - that - zoneDelta) / 6048e5;
   3945                break; // 1000 * 60 * 60 * 24 * 7, negate dst
   3946            default:
   3947                output = this - that;
   3948        }
   3949
   3950        return asFloat ? output : absFloor(output);
   3951    }
   3952
   3953    function monthDiff(a, b) {
   3954        if (a.date() < b.date()) {
   3955            // end-of-month calculations work correct when the start month has more
   3956            // days than the end month.
   3957            return -monthDiff(b, a);
   3958        }
   3959        // difference in months
   3960        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
   3961            // b is in (anchor - 1 month, anchor + 1 month)
   3962            anchor = a.clone().add(wholeMonthDiff, 'months'),
   3963            anchor2,
   3964            adjust;
   3965
   3966        if (b - anchor < 0) {
   3967            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
   3968            // linear across the month
   3969            adjust = (b - anchor) / (anchor - anchor2);
   3970        } else {
   3971            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
   3972            // linear across the month
   3973            adjust = (b - anchor) / (anchor2 - anchor);
   3974        }
   3975
   3976        //check for negative zero, return zero if negative zero
   3977        return -(wholeMonthDiff + adjust) || 0;
   3978    }
   3979
   3980    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
   3981    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
   3982
   3983    function toString() {
   3984        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
   3985    }
   3986
   3987    function toISOString(keepOffset) {
   3988        if (!this.isValid()) {
   3989            return null;
   3990        }
   3991        var utc = keepOffset !== true,
   3992            m = utc ? this.clone().utc() : this;
   3993        if (m.year() < 0 || m.year() > 9999) {
   3994            return formatMoment(
   3995                m,
   3996                utc
   3997                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
   3998                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
   3999            );
   4000        }
   4001        if (isFunction(Date.prototype.toISOString)) {
   4002            // native implementation is ~50x faster, use it when we can
   4003            if (utc) {
   4004                return this.toDate().toISOString();
   4005            } else {
   4006                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
   4007                    .toISOString()
   4008                    .replace('Z', formatMoment(m, 'Z'));
   4009            }
   4010        }
   4011        return formatMoment(
   4012            m,
   4013            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
   4014        );
   4015    }
   4016
   4017    /**
   4018     * Return a human readable representation of a moment that can
   4019     * also be evaluated to get a new moment which is the same
   4020     *
   4021     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
   4022     */
   4023    function inspect() {
   4024        if (!this.isValid()) {
   4025            return 'moment.invalid(/* ' + this._i + ' */)';
   4026        }
   4027        var func = 'moment',
   4028            zone = '',
   4029            prefix,
   4030            year,
   4031            datetime,
   4032            suffix;
   4033        if (!this.isLocal()) {
   4034            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
   4035            zone = 'Z';
   4036        }
   4037        prefix = '[' + func + '("]';
   4038        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
   4039        datetime = '-MM-DD[T]HH:mm:ss.SSS';
   4040        suffix = zone + '[")]';
   4041
   4042        return this.format(prefix + year + datetime + suffix);
   4043    }
   4044
   4045    function format(inputString) {
   4046        if (!inputString) {
   4047            inputString = this.isUtc()
   4048                ? hooks.defaultFormatUtc
   4049                : hooks.defaultFormat;
   4050        }
   4051        var output = formatMoment(this, inputString);
   4052        return this.localeData().postformat(output);
   4053    }
   4054
   4055    function from(time, withoutSuffix) {
   4056        if (
   4057            this.isValid() &&
   4058            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
   4059        ) {
   4060            return createDuration({ to: this, from: time })
   4061                .locale(this.locale())
   4062                .humanize(!withoutSuffix);
   4063        } else {
   4064            return this.localeData().invalidDate();
   4065        }
   4066    }
   4067
   4068    function fromNow(withoutSuffix) {
   4069        return this.from(createLocal(), withoutSuffix);
   4070    }
   4071
   4072    function to(time, withoutSuffix) {
   4073        if (
   4074            this.isValid() &&
   4075            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
   4076        ) {
   4077            return createDuration({ from: this, to: time })
   4078                .locale(this.locale())
   4079                .humanize(!withoutSuffix);
   4080        } else {
   4081            return this.localeData().invalidDate();
   4082        }
   4083    }
   4084
   4085    function toNow(withoutSuffix) {
   4086        return this.to(createLocal(), withoutSuffix);
   4087    }
   4088
   4089    // If passed a locale key, it will set the locale for this
   4090    // instance.  Otherwise, it will return the locale configuration
   4091    // variables for this instance.
   4092    function locale(key) {
   4093        var newLocaleData;
   4094
   4095        if (key === undefined) {
   4096            return this._locale._abbr;
   4097        } else {
   4098            newLocaleData = getLocale(key);
   4099            if (newLocaleData != null) {
   4100                this._locale = newLocaleData;
   4101            }
   4102            return this;
   4103        }
   4104    }
   4105
   4106    var lang = deprecate(
   4107        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
   4108        function (key) {
   4109            if (key === undefined) {
   4110                return this.localeData();
   4111            } else {
   4112                return this.locale(key);
   4113            }
   4114        }
   4115    );
   4116
   4117    function localeData() {
   4118        return this._locale;
   4119    }
   4120
   4121    var MS_PER_SECOND = 1000,
   4122        MS_PER_MINUTE = 60 * MS_PER_SECOND,
   4123        MS_PER_HOUR = 60 * MS_PER_MINUTE,
   4124        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
   4125
   4126    // actual modulo - handles negative numbers (for dates before 1970):
   4127    function mod$1(dividend, divisor) {
   4128        return ((dividend % divisor) + divisor) % divisor;
   4129    }
   4130
   4131    function localStartOfDate(y, m, d) {
   4132        // the date constructor remaps years 0-99 to 1900-1999
   4133        if (y < 100 && y >= 0) {
   4134            // preserve leap years using a full 400 year cycle, then reset
   4135            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
   4136        } else {
   4137            return new Date(y, m, d).valueOf();
   4138        }
   4139    }
   4140
   4141    function utcStartOfDate(y, m, d) {
   4142        // Date.UTC remaps years 0-99 to 1900-1999
   4143        if (y < 100 && y >= 0) {
   4144            // preserve leap years using a full 400 year cycle, then reset
   4145            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
   4146        } else {
   4147            return Date.UTC(y, m, d);
   4148        }
   4149    }
   4150
   4151    function startOf(units) {
   4152        var time, startOfDate;
   4153        units = normalizeUnits(units);
   4154        if (units === undefined || units === 'millisecond' || !this.isValid()) {
   4155            return this;
   4156        }
   4157
   4158        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
   4159
   4160        switch (units) {
   4161            case 'year':
   4162                time = startOfDate(this.year(), 0, 1);
   4163                break;
   4164            case 'quarter':
   4165                time = startOfDate(
   4166                    this.year(),
   4167                    this.month() - (this.month() % 3),
   4168                    1
   4169                );
   4170                break;
   4171            case 'month':
   4172                time = startOfDate(this.year(), this.month(), 1);
   4173                break;
   4174            case 'week':
   4175                time = startOfDate(
   4176                    this.year(),
   4177                    this.month(),
   4178                    this.date() - this.weekday()
   4179                );
   4180                break;
   4181            case 'isoWeek':
   4182                time = startOfDate(
   4183                    this.year(),
   4184                    this.month(),
   4185                    this.date() - (this.isoWeekday() - 1)
   4186                );
   4187                break;
   4188            case 'day':
   4189            case 'date':
   4190                time = startOfDate(this.year(), this.month(), this.date());
   4191                break;
   4192            case 'hour':
   4193                time = this._d.valueOf();
   4194                time -= mod$1(
   4195                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
   4196                    MS_PER_HOUR
   4197                );
   4198                break;
   4199            case 'minute':
   4200                time = this._d.valueOf();
   4201                time -= mod$1(time, MS_PER_MINUTE);
   4202                break;
   4203            case 'second':
   4204                time = this._d.valueOf();
   4205                time -= mod$1(time, MS_PER_SECOND);
   4206                break;
   4207        }
   4208
   4209        this._d.setTime(time);
   4210        hooks.updateOffset(this, true);
   4211        return this;
   4212    }
   4213
   4214    function endOf(units) {
   4215        var time, startOfDate;
   4216        units = normalizeUnits(units);
   4217        if (units === undefined || units === 'millisecond' || !this.isValid()) {
   4218            return this;
   4219        }
   4220
   4221        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
   4222
   4223        switch (units) {
   4224            case 'year':
   4225                time = startOfDate(this.year() + 1, 0, 1) - 1;
   4226                break;
   4227            case 'quarter':
   4228                time =
   4229                    startOfDate(
   4230                        this.year(),
   4231                        this.month() - (this.month() % 3) + 3,
   4232                        1
   4233                    ) - 1;
   4234                break;
   4235            case 'month':
   4236                time = startOfDate(this.year(), this.month() + 1, 1) - 1;
   4237                break;
   4238            case 'week':
   4239                time =
   4240                    startOfDate(
   4241                        this.year(),
   4242                        this.month(),
   4243                        this.date() - this.weekday() + 7
   4244                    ) - 1;
   4245                break;
   4246            case 'isoWeek':
   4247                time =
   4248                    startOfDate(
   4249                        this.year(),
   4250                        this.month(),
   4251                        this.date() - (this.isoWeekday() - 1) + 7
   4252                    ) - 1;
   4253                break;
   4254            case 'day':
   4255            case 'date':
   4256                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
   4257                break;
   4258            case 'hour':
   4259                time = this._d.valueOf();
   4260                time +=
   4261                    MS_PER_HOUR -
   4262                    mod$1(
   4263                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
   4264                        MS_PER_HOUR
   4265                    ) -
   4266                    1;
   4267                break;
   4268            case 'minute':
   4269                time = this._d.valueOf();
   4270                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
   4271                break;
   4272            case 'second':
   4273                time = this._d.valueOf();
   4274                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
   4275                break;
   4276        }
   4277
   4278        this._d.setTime(time);
   4279        hooks.updateOffset(this, true);
   4280        return this;
   4281    }
   4282
   4283    function valueOf() {
   4284        return this._d.valueOf() - (this._offset || 0) * 60000;
   4285    }
   4286
   4287    function unix() {
   4288        return Math.floor(this.valueOf() / 1000);
   4289    }
   4290
   4291    function toDate() {
   4292        return new Date(this.valueOf());
   4293    }
   4294
   4295    function toArray() {
   4296        var m = this;
   4297        return [
   4298            m.year(),
   4299            m.month(),
   4300            m.date(),
   4301            m.hour(),
   4302            m.minute(),
   4303            m.second(),
   4304            m.millisecond(),
   4305        ];
   4306    }
   4307
   4308    function toObject() {
   4309        var m = this;
   4310        return {
   4311            years: m.year(),
   4312            months: m.month(),
   4313            date: m.date(),
   4314            hours: m.hours(),
   4315            minutes: m.minutes(),
   4316            seconds: m.seconds(),
   4317            milliseconds: m.milliseconds(),
   4318        };
   4319    }
   4320
   4321    function toJSON() {
   4322        // new Date(NaN).toJSON() === null
   4323        return this.isValid() ? this.toISOString() : null;
   4324    }
   4325
   4326    function isValid$2() {
   4327        return isValid(this);
   4328    }
   4329
   4330    function parsingFlags() {
   4331        return extend({}, getParsingFlags(this));
   4332    }
   4333
   4334    function invalidAt() {
   4335        return getParsingFlags(this).overflow;
   4336    }
   4337
   4338    function creationData() {
   4339        return {
   4340            input: this._i,
   4341            format: this._f,
   4342            locale: this._locale,
   4343            isUTC: this._isUTC,
   4344            strict: this._strict,
   4345        };
   4346    }
   4347
   4348    addFormatToken('N', 0, 0, 'eraAbbr');
   4349    addFormatToken('NN', 0, 0, 'eraAbbr');
   4350    addFormatToken('NNN', 0, 0, 'eraAbbr');
   4351    addFormatToken('NNNN', 0, 0, 'eraName');
   4352    addFormatToken('NNNNN', 0, 0, 'eraNarrow');
   4353
   4354    addFormatToken('y', ['y', 1], 'yo', 'eraYear');
   4355    addFormatToken('y', ['yy', 2], 0, 'eraYear');
   4356    addFormatToken('y', ['yyy', 3], 0, 'eraYear');
   4357    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
   4358
   4359    addRegexToken('N', matchEraAbbr);
   4360    addRegexToken('NN', matchEraAbbr);
   4361    addRegexToken('NNN', matchEraAbbr);
   4362    addRegexToken('NNNN', matchEraName);
   4363    addRegexToken('NNNNN', matchEraNarrow);
   4364
   4365    addParseToken(
   4366        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],
   4367        function (input, array, config, token) {
   4368            var era = config._locale.erasParse(input, token, config._strict);
   4369            if (era) {
   4370                getParsingFlags(config).era = era;
   4371            } else {
   4372                getParsingFlags(config).invalidEra = input;
   4373            }
   4374        }
   4375    );
   4376
   4377    addRegexToken('y', matchUnsigned);
   4378    addRegexToken('yy', matchUnsigned);
   4379    addRegexToken('yyy', matchUnsigned);
   4380    addRegexToken('yyyy', matchUnsigned);
   4381    addRegexToken('yo', matchEraYearOrdinal);
   4382
   4383    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
   4384    addParseToken(['yo'], function (input, array, config, token) {
   4385        var match;
   4386        if (config._locale._eraYearOrdinalRegex) {
   4387            match = input.match(config._locale._eraYearOrdinalRegex);
   4388        }
   4389
   4390        if (config._locale.eraYearOrdinalParse) {
   4391            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
   4392        } else {
   4393            array[YEAR] = parseInt(input, 10);
   4394        }
   4395    });
   4396
   4397    function localeEras(m, format) {
   4398        var i,
   4399            l,
   4400            date,
   4401            eras = this._eras || getLocale('en')._eras;
   4402        for (i = 0, l = eras.length; i < l; ++i) {
   4403            switch (typeof eras[i].since) {
   4404                case 'string':
   4405                    // truncate time
   4406                    date = hooks(eras[i].since).startOf('day');
   4407                    eras[i].since = date.valueOf();
   4408                    break;
   4409            }
   4410
   4411            switch (typeof eras[i].until) {
   4412                case 'undefined':
   4413                    eras[i].until = +Infinity;
   4414                    break;
   4415                case 'string':
   4416                    // truncate time
   4417                    date = hooks(eras[i].until).startOf('day').valueOf();
   4418                    eras[i].until = date.valueOf();
   4419                    break;
   4420            }
   4421        }
   4422        return eras;
   4423    }
   4424
   4425    function localeErasParse(eraName, format, strict) {
   4426        var i,
   4427            l,
   4428            eras = this.eras(),
   4429            name,
   4430            abbr,
   4431            narrow;
   4432        eraName = eraName.toUpperCase();
   4433
   4434        for (i = 0, l = eras.length; i < l; ++i) {
   4435            name = eras[i].name.toUpperCase();
   4436            abbr = eras[i].abbr.toUpperCase();
   4437            narrow = eras[i].narrow.toUpperCase();
   4438
   4439            if (strict) {
   4440                switch (format) {
   4441                    case 'N':
   4442                    case 'NN':
   4443                    case 'NNN':
   4444                        if (abbr === eraName) {
   4445                            return eras[i];
   4446                        }
   4447                        break;
   4448
   4449                    case 'NNNN':
   4450                        if (name === eraName) {
   4451                            return eras[i];
   4452                        }
   4453                        break;
   4454
   4455                    case 'NNNNN':
   4456                        if (narrow === eraName) {
   4457                            return eras[i];
   4458                        }
   4459                        break;
   4460                }
   4461            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
   4462                return eras[i];
   4463            }
   4464        }
   4465    }
   4466
   4467    function localeErasConvertYear(era, year) {
   4468        var dir = era.since <= era.until ? +1 : -1;
   4469        if (year === undefined) {
   4470            return hooks(era.since).year();
   4471        } else {
   4472            return hooks(era.since).year() + (year - era.offset) * dir;
   4473        }
   4474    }
   4475
   4476    function getEraName() {
   4477        var i,
   4478            l,
   4479            val,
   4480            eras = this.localeData().eras();
   4481        for (i = 0, l = eras.length; i < l; ++i) {
   4482            // truncate time
   4483            val = this.clone().startOf('day').valueOf();
   4484
   4485            if (eras[i].since <= val && val <= eras[i].until) {
   4486                return eras[i].name;
   4487            }
   4488            if (eras[i].until <= val && val <= eras[i].since) {
   4489                return eras[i].name;
   4490            }
   4491        }
   4492
   4493        return '';
   4494    }
   4495
   4496    function getEraNarrow() {
   4497        var i,
   4498            l,
   4499            val,
   4500            eras = this.localeData().eras();
   4501        for (i = 0, l = eras.length; i < l; ++i) {
   4502            // truncate time
   4503            val = this.clone().startOf('day').valueOf();
   4504
   4505            if (eras[i].since <= val && val <= eras[i].until) {
   4506                return eras[i].narrow;
   4507            }
   4508            if (eras[i].until <= val && val <= eras[i].since) {
   4509                return eras[i].narrow;
   4510            }
   4511        }
   4512
   4513        return '';
   4514    }
   4515
   4516    function getEraAbbr() {
   4517        var i,
   4518            l,
   4519            val,
   4520            eras = this.localeData().eras();
   4521        for (i = 0, l = eras.length; i < l; ++i) {
   4522            // truncate time
   4523            val = this.clone().startOf('day').valueOf();
   4524
   4525            if (eras[i].since <= val && val <= eras[i].until) {
   4526                return eras[i].abbr;
   4527            }
   4528            if (eras[i].until <= val && val <= eras[i].since) {
   4529                return eras[i].abbr;
   4530            }
   4531        }
   4532
   4533        return '';
   4534    }
   4535
   4536    function getEraYear() {
   4537        var i,
   4538            l,
   4539            dir,
   4540            val,
   4541            eras = this.localeData().eras();
   4542        for (i = 0, l = eras.length; i < l; ++i) {
   4543            dir = eras[i].since <= eras[i].until ? +1 : -1;
   4544
   4545            // truncate time
   4546            val = this.clone().startOf('day').valueOf();
   4547
   4548            if (
   4549                (eras[i].since <= val && val <= eras[i].until) ||
   4550                (eras[i].until <= val && val <= eras[i].since)
   4551            ) {
   4552                return (
   4553                    (this.year() - hooks(eras[i].since).year()) * dir +
   4554                    eras[i].offset
   4555                );
   4556            }
   4557        }
   4558
   4559        return this.year();
   4560    }
   4561
   4562    function erasNameRegex(isStrict) {
   4563        if (!hasOwnProp(this, '_erasNameRegex')) {
   4564            computeErasParse.call(this);
   4565        }
   4566        return isStrict ? this._erasNameRegex : this._erasRegex;
   4567    }
   4568
   4569    function erasAbbrRegex(isStrict) {
   4570        if (!hasOwnProp(this, '_erasAbbrRegex')) {
   4571            computeErasParse.call(this);
   4572        }
   4573        return isStrict ? this._erasAbbrRegex : this._erasRegex;
   4574    }
   4575
   4576    function erasNarrowRegex(isStrict) {
   4577        if (!hasOwnProp(this, '_erasNarrowRegex')) {
   4578            computeErasParse.call(this);
   4579        }
   4580        return isStrict ? this._erasNarrowRegex : this._erasRegex;
   4581    }
   4582
   4583    function matchEraAbbr(isStrict, locale) {
   4584        return locale.erasAbbrRegex(isStrict);
   4585    }
   4586
   4587    function matchEraName(isStrict, locale) {
   4588        return locale.erasNameRegex(isStrict);
   4589    }
   4590
   4591    function matchEraNarrow(isStrict, locale) {
   4592        return locale.erasNarrowRegex(isStrict);
   4593    }
   4594
   4595    function matchEraYearOrdinal(isStrict, locale) {
   4596        return locale._eraYearOrdinalRegex || matchUnsigned;
   4597    }
   4598
   4599    function computeErasParse() {
   4600        var abbrPieces = [],
   4601            namePieces = [],
   4602            narrowPieces = [],
   4603            mixedPieces = [],
   4604            i,
   4605            l,
   4606            erasName,
   4607            erasAbbr,
   4608            erasNarrow,
   4609            eras = this.eras();
   4610
   4611        for (i = 0, l = eras.length; i < l; ++i) {
   4612            erasName = regexEscape(eras[i].name);
   4613            erasAbbr = regexEscape(eras[i].abbr);
   4614            erasNarrow = regexEscape(eras[i].narrow);
   4615
   4616            namePieces.push(erasName);
   4617            abbrPieces.push(erasAbbr);
   4618            narrowPieces.push(erasNarrow);
   4619            mixedPieces.push(erasName);
   4620            mixedPieces.push(erasAbbr);
   4621            mixedPieces.push(erasNarrow);
   4622        }
   4623
   4624        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
   4625        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
   4626        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
   4627        this._erasNarrowRegex = new RegExp(
   4628            '^(' + narrowPieces.join('|') + ')',
   4629            'i'
   4630        );
   4631    }
   4632
   4633    // FORMATTING
   4634
   4635    addFormatToken(0, ['gg', 2], 0, function () {
   4636        return this.weekYear() % 100;
   4637    });
   4638
   4639    addFormatToken(0, ['GG', 2], 0, function () {
   4640        return this.isoWeekYear() % 100;
   4641    });
   4642
   4643    function addWeekYearFormatToken(token, getter) {
   4644        addFormatToken(0, [token, token.length], 0, getter);
   4645    }
   4646
   4647    addWeekYearFormatToken('gggg', 'weekYear');
   4648    addWeekYearFormatToken('ggggg', 'weekYear');
   4649    addWeekYearFormatToken('GGGG', 'isoWeekYear');
   4650    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
   4651
   4652    // ALIASES
   4653
   4654    // PARSING
   4655
   4656    addRegexToken('G', matchSigned);
   4657    addRegexToken('g', matchSigned);
   4658    addRegexToken('GG', match1to2, match2);
   4659    addRegexToken('gg', match1to2, match2);
   4660    addRegexToken('GGGG', match1to4, match4);
   4661    addRegexToken('gggg', match1to4, match4);
   4662    addRegexToken('GGGGG', match1to6, match6);
   4663    addRegexToken('ggggg', match1to6, match6);
   4664
   4665    addWeekParseToken(
   4666        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],
   4667        function (input, week, config, token) {
   4668            week[token.substr(0, 2)] = toInt(input);
   4669        }
   4670    );
   4671
   4672    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
   4673        week[token] = hooks.parseTwoDigitYear(input);
   4674    });
   4675
   4676    // MOMENTS
   4677
   4678    function getSetWeekYear(input) {
   4679        return getSetWeekYearHelper.call(
   4680            this,
   4681            input,
   4682            this.week(),
   4683            this.weekday() + this.localeData()._week.dow,
   4684            this.localeData()._week.dow,
   4685            this.localeData()._week.doy
   4686        );
   4687    }
   4688
   4689    function getSetISOWeekYear(input) {
   4690        return getSetWeekYearHelper.call(
   4691            this,
   4692            input,
   4693            this.isoWeek(),
   4694            this.isoWeekday(),
   4695            1,
   4696            4
   4697        );
   4698    }
   4699
   4700    function getISOWeeksInYear() {
   4701        return weeksInYear(this.year(), 1, 4);
   4702    }
   4703
   4704    function getISOWeeksInISOWeekYear() {
   4705        return weeksInYear(this.isoWeekYear(), 1, 4);
   4706    }
   4707
   4708    function getWeeksInYear() {
   4709        var weekInfo = this.localeData()._week;
   4710        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
   4711    }
   4712
   4713    function getWeeksInWeekYear() {
   4714        var weekInfo = this.localeData()._week;
   4715        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
   4716    }
   4717
   4718    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
   4719        var weeksTarget;
   4720        if (input == null) {
   4721            return weekOfYear(this, dow, doy).year;
   4722        } else {
   4723            weeksTarget = weeksInYear(input, dow, doy);
   4724            if (week > weeksTarget) {
   4725                week = weeksTarget;
   4726            }
   4727            return setWeekAll.call(this, input, week, weekday, dow, doy);
   4728        }
   4729    }
   4730
   4731    function setWeekAll(weekYear, week, weekday, dow, doy) {
   4732        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
   4733            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
   4734
   4735        this.year(date.getUTCFullYear());
   4736        this.month(date.getUTCMonth());
   4737        this.date(date.getUTCDate());
   4738        return this;
   4739    }
   4740
   4741    // FORMATTING
   4742
   4743    addFormatToken('Q', 0, 'Qo', 'quarter');
   4744
   4745    // PARSING
   4746
   4747    addRegexToken('Q', match1);
   4748    addParseToken('Q', function (input, array) {
   4749        array[MONTH] = (toInt(input) - 1) * 3;
   4750    });
   4751
   4752    // MOMENTS
   4753
   4754    function getSetQuarter(input) {
   4755        return input == null
   4756            ? Math.ceil((this.month() + 1) / 3)
   4757            : this.month((input - 1) * 3 + (this.month() % 3));
   4758    }
   4759
   4760    // FORMATTING
   4761
   4762    addFormatToken('D', ['DD', 2], 'Do', 'date');
   4763
   4764    // PARSING
   4765
   4766    addRegexToken('D', match1to2, match1to2NoLeadingZero);
   4767    addRegexToken('DD', match1to2, match2);
   4768    addRegexToken('Do', function (isStrict, locale) {
   4769        // TODO: Remove "ordinalParse" fallback in next major release.
   4770        return isStrict
   4771            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
   4772            : locale._dayOfMonthOrdinalParseLenient;
   4773    });
   4774
   4775    addParseToken(['D', 'DD'], DATE);
   4776    addParseToken('Do', function (input, array) {
   4777        array[DATE] = toInt(input.match(match1to2)[0]);
   4778    });
   4779
   4780    // MOMENTS
   4781
   4782    var getSetDayOfMonth = makeGetSet('Date', true);
   4783
   4784    // FORMATTING
   4785
   4786    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
   4787
   4788    // PARSING
   4789
   4790    addRegexToken('DDD', match1to3);
   4791    addRegexToken('DDDD', match3);
   4792    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
   4793        config._dayOfYear = toInt(input);
   4794    });
   4795
   4796    // HELPERS
   4797
   4798    // MOMENTS
   4799
   4800    function getSetDayOfYear(input) {
   4801        var dayOfYear =
   4802            Math.round(
   4803                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
   4804            ) + 1;
   4805        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
   4806    }
   4807
   4808    // FORMATTING
   4809
   4810    addFormatToken('m', ['mm', 2], 0, 'minute');
   4811
   4812    // PARSING
   4813
   4814    addRegexToken('m', match1to2, match1to2HasZero);
   4815    addRegexToken('mm', match1to2, match2);
   4816    addParseToken(['m', 'mm'], MINUTE);
   4817
   4818    // MOMENTS
   4819
   4820    var getSetMinute = makeGetSet('Minutes', false);
   4821
   4822    // FORMATTING
   4823
   4824    addFormatToken('s', ['ss', 2], 0, 'second');
   4825
   4826    // PARSING
   4827
   4828    addRegexToken('s', match1to2, match1to2HasZero);
   4829    addRegexToken('ss', match1to2, match2);
   4830    addParseToken(['s', 'ss'], SECOND);
   4831
   4832    // MOMENTS
   4833
   4834    var getSetSecond = makeGetSet('Seconds', false);
   4835
   4836    // FORMATTING
   4837
   4838    addFormatToken('S', 0, 0, function () {
   4839        return ~~(this.millisecond() / 100);
   4840    });
   4841
   4842    addFormatToken(0, ['SS', 2], 0, function () {
   4843        return ~~(this.millisecond() / 10);
   4844    });
   4845
   4846    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
   4847    addFormatToken(0, ['SSSS', 4], 0, function () {
   4848        return this.millisecond() * 10;
   4849    });
   4850    addFormatToken(0, ['SSSSS', 5], 0, function () {
   4851        return this.millisecond() * 100;
   4852    });
   4853    addFormatToken(0, ['SSSSSS', 6], 0, function () {
   4854        return this.millisecond() * 1000;
   4855    });
   4856    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
   4857        return this.millisecond() * 10000;
   4858    });
   4859    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
   4860        return this.millisecond() * 100000;
   4861    });
   4862    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
   4863        return this.millisecond() * 1000000;
   4864    });
   4865
   4866    // PARSING
   4867
   4868    addRegexToken('S', match1to3, match1);
   4869    addRegexToken('SS', match1to3, match2);
   4870    addRegexToken('SSS', match1to3, match3);
   4871
   4872    var token, getSetMillisecond;
   4873    for (token = 'SSSS'; token.length <= 9; token += 'S') {
   4874        addRegexToken(token, matchUnsigned);
   4875    }
   4876
   4877    function parseMs(input, array) {
   4878        array[MILLISECOND] = toInt(('0.' + input) * 1000);
   4879    }
   4880
   4881    for (token = 'S'; token.length <= 9; token += 'S') {
   4882        addParseToken(token, parseMs);
   4883    }
   4884
   4885    getSetMillisecond = makeGetSet('Milliseconds', false);
   4886
   4887    // FORMATTING
   4888
   4889    addFormatToken('z', 0, 0, 'zoneAbbr');
   4890    addFormatToken('zz', 0, 0, 'zoneName');
   4891
   4892    // MOMENTS
   4893
   4894    function getZoneAbbr() {
   4895        return this._isUTC ? 'UTC' : '';
   4896    }
   4897
   4898    function getZoneName() {
   4899        return this._isUTC ? 'Coordinated Universal Time' : '';
   4900    }
   4901
   4902    var proto = Moment.prototype;
   4903
   4904    proto.add = add;
   4905    proto.calendar = calendar$1;
   4906    proto.clone = clone;
   4907    proto.diff = diff;
   4908    proto.endOf = endOf;
   4909    proto.format = format;
   4910    proto.from = from;
   4911    proto.fromNow = fromNow;
   4912    proto.to = to;
   4913    proto.toNow = toNow;
   4914    proto.get = stringGet;
   4915    proto.invalidAt = invalidAt;
   4916    proto.isAfter = isAfter;
   4917    proto.isBefore = isBefore;
   4918    proto.isBetween = isBetween;
   4919    proto.isSame = isSame;
   4920    proto.isSameOrAfter = isSameOrAfter;
   4921    proto.isSameOrBefore = isSameOrBefore;
   4922    proto.isValid = isValid$2;
   4923    proto.lang = lang;
   4924    proto.locale = locale;
   4925    proto.localeData = localeData;
   4926    proto.max = prototypeMax;
   4927    proto.min = prototypeMin;
   4928    proto.parsingFlags = parsingFlags;
   4929    proto.set = stringSet;
   4930    proto.startOf = startOf;
   4931    proto.subtract = subtract;
   4932    proto.toArray = toArray;
   4933    proto.toObject = toObject;
   4934    proto.toDate = toDate;
   4935    proto.toISOString = toISOString;
   4936    proto.inspect = inspect;
   4937    if (typeof Symbol !== 'undefined' && Symbol.for != null) {
   4938        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
   4939            return 'Moment<' + this.format() + '>';
   4940        };
   4941    }
   4942    proto.toJSON = toJSON;
   4943    proto.toString = toString;
   4944    proto.unix = unix;
   4945    proto.valueOf = valueOf;
   4946    proto.creationData = creationData;
   4947    proto.eraName = getEraName;
   4948    proto.eraNarrow = getEraNarrow;
   4949    proto.eraAbbr = getEraAbbr;
   4950    proto.eraYear = getEraYear;
   4951    proto.year = getSetYear;
   4952    proto.isLeapYear = getIsLeapYear;
   4953    proto.weekYear = getSetWeekYear;
   4954    proto.isoWeekYear = getSetISOWeekYear;
   4955    proto.quarter = proto.quarters = getSetQuarter;
   4956    proto.month = getSetMonth;
   4957    proto.daysInMonth = getDaysInMonth;
   4958    proto.week = proto.weeks = getSetWeek;
   4959    proto.isoWeek = proto.isoWeeks = getSetISOWeek;
   4960    proto.weeksInYear = getWeeksInYear;
   4961    proto.weeksInWeekYear = getWeeksInWeekYear;
   4962    proto.isoWeeksInYear = getISOWeeksInYear;
   4963    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
   4964    proto.date = getSetDayOfMonth;
   4965    proto.day = proto.days = getSetDayOfWeek;
   4966    proto.weekday = getSetLocaleDayOfWeek;
   4967    proto.isoWeekday = getSetISODayOfWeek;
   4968    proto.dayOfYear = getSetDayOfYear;
   4969    proto.hour = proto.hours = getSetHour;
   4970    proto.minute = proto.minutes = getSetMinute;
   4971    proto.second = proto.seconds = getSetSecond;
   4972    proto.millisecond = proto.milliseconds = getSetMillisecond;
   4973    proto.utcOffset = getSetOffset;
   4974    proto.utc = setOffsetToUTC;
   4975    proto.local = setOffsetToLocal;
   4976    proto.parseZone = setOffsetToParsedOffset;
   4977    proto.hasAlignedHourOffset = hasAlignedHourOffset;
   4978    proto.isDST = isDaylightSavingTime;
   4979    proto.isLocal = isLocal;
   4980    proto.isUtcOffset = isUtcOffset;
   4981    proto.isUtc = isUtc;
   4982    proto.isUTC = isUtc;
   4983    proto.zoneAbbr = getZoneAbbr;
   4984    proto.zoneName = getZoneName;
   4985    proto.dates = deprecate(
   4986        'dates accessor is deprecated. Use date instead.',
   4987        getSetDayOfMonth
   4988    );
   4989    proto.months = deprecate(
   4990        'months accessor is deprecated. Use month instead',
   4991        getSetMonth
   4992    );
   4993    proto.years = deprecate(
   4994        'years accessor is deprecated. Use year instead',
   4995        getSetYear
   4996    );
   4997    proto.zone = deprecate(
   4998        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
   4999        getSetZone
   5000    );
   5001    proto.isDSTShifted = deprecate(
   5002        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
   5003        isDaylightSavingTimeShifted
   5004    );
   5005
   5006    function createUnix(input) {
   5007        return createLocal(input * 1000);
   5008    }
   5009
   5010    function createInZone() {
   5011        return createLocal.apply(null, arguments).parseZone();
   5012    }
   5013
   5014    function preParsePostFormat(string) {
   5015        return string;
   5016    }
   5017
   5018    var proto$1 = Locale.prototype;
   5019
   5020    proto$1.calendar = calendar;
   5021    proto$1.longDateFormat = longDateFormat;
   5022    proto$1.invalidDate = invalidDate;
   5023    proto$1.ordinal = ordinal;
   5024    proto$1.preparse = preParsePostFormat;
   5025    proto$1.postformat = preParsePostFormat;
   5026    proto$1.relativeTime = relativeTime;
   5027    proto$1.pastFuture = pastFuture;
   5028    proto$1.set = set;
   5029    proto$1.eras = localeEras;
   5030    proto$1.erasParse = localeErasParse;
   5031    proto$1.erasConvertYear = localeErasConvertYear;
   5032    proto$1.erasAbbrRegex = erasAbbrRegex;
   5033    proto$1.erasNameRegex = erasNameRegex;
   5034    proto$1.erasNarrowRegex = erasNarrowRegex;
   5035
   5036    proto$1.months = localeMonths;
   5037    proto$1.monthsShort = localeMonthsShort;
   5038    proto$1.monthsParse = localeMonthsParse;
   5039    proto$1.monthsRegex = monthsRegex;
   5040    proto$1.monthsShortRegex = monthsShortRegex;
   5041    proto$1.week = localeWeek;
   5042    proto$1.firstDayOfYear = localeFirstDayOfYear;
   5043    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
   5044
   5045    proto$1.weekdays = localeWeekdays;
   5046    proto$1.weekdaysMin = localeWeekdaysMin;
   5047    proto$1.weekdaysShort = localeWeekdaysShort;
   5048    proto$1.weekdaysParse = localeWeekdaysParse;
   5049
   5050    proto$1.weekdaysRegex = weekdaysRegex;
   5051    proto$1.weekdaysShortRegex = weekdaysShortRegex;
   5052    proto$1.weekdaysMinRegex = weekdaysMinRegex;
   5053
   5054    proto$1.isPM = localeIsPM;
   5055    proto$1.meridiem = localeMeridiem;
   5056
   5057    function get$1(format, index, field, setter) {
   5058        var locale = getLocale(),
   5059            utc = createUTC().set(setter, index);
   5060        return locale[field](utc, format);
   5061    }
   5062
   5063    function listMonthsImpl(format, index, field) {
   5064        if (isNumber(format)) {
   5065            index = format;
   5066            format = undefined;
   5067        }
   5068
   5069        format = format || '';
   5070
   5071        if (index != null) {
   5072            return get$1(format, index, field, 'month');
   5073        }
   5074
   5075        var i,
   5076            out = [];
   5077        for (i = 0; i < 12; i++) {
   5078            out[i] = get$1(format, i, field, 'month');
   5079        }
   5080        return out;
   5081    }
   5082
   5083    // ()
   5084    // (5)
   5085    // (fmt, 5)
   5086    // (fmt)
   5087    // (true)
   5088    // (true, 5)
   5089    // (true, fmt, 5)
   5090    // (true, fmt)
   5091    function listWeekdaysImpl(localeSorted, format, index, field) {
   5092        if (typeof localeSorted === 'boolean') {
   5093            if (isNumber(format)) {
   5094                index = format;
   5095                format = undefined;
   5096            }
   5097
   5098            format = format || '';
   5099        } else {
   5100            format = localeSorted;
   5101            index = format;
   5102            localeSorted = false;
   5103
   5104            if (isNumber(format)) {
   5105                index = format;
   5106                format = undefined;
   5107            }
   5108
   5109            format = format || '';
   5110        }
   5111
   5112        var locale = getLocale(),
   5113            shift = localeSorted ? locale._week.dow : 0,
   5114            i,
   5115            out = [];
   5116
   5117        if (index != null) {
   5118            return get$1(format, (index + shift) % 7, field, 'day');
   5119        }
   5120
   5121        for (i = 0; i < 7; i++) {
   5122            out[i] = get$1(format, (i + shift) % 7, field, 'day');
   5123        }
   5124        return out;
   5125    }
   5126
   5127    function listMonths(format, index) {
   5128        return listMonthsImpl(format, index, 'months');
   5129    }
   5130
   5131    function listMonthsShort(format, index) {
   5132        return listMonthsImpl(format, index, 'monthsShort');
   5133    }
   5134
   5135    function listWeekdays(localeSorted, format, index) {
   5136        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
   5137    }
   5138
   5139    function listWeekdaysShort(localeSorted, format, index) {
   5140        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
   5141    }
   5142
   5143    function listWeekdaysMin(localeSorted, format, index) {
   5144        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
   5145    }
   5146
   5147    getSetGlobalLocale('en', {
   5148        eras: [
   5149            {
   5150                since: '0001-01-01',
   5151                until: +Infinity,
   5152                offset: 1,
   5153                name: 'Anno Domini',
   5154                narrow: 'AD',
   5155                abbr: 'AD',
   5156            },
   5157            {
   5158                since: '0000-12-31',
   5159                until: -Infinity,
   5160                offset: 1,
   5161                name: 'Before Christ',
   5162                narrow: 'BC',
   5163                abbr: 'BC',
   5164            },
   5165        ],
   5166        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
   5167        ordinal: function (number) {
   5168            var b = number % 10,
   5169                output =
   5170                    toInt((number % 100) / 10) === 1
   5171                        ? 'th'
   5172                        : b === 1
   5173                          ? 'st'
   5174                          : b === 2
   5175                            ? 'nd'
   5176                            : b === 3
   5177                              ? 'rd'
   5178                              : 'th';
   5179            return number + output;
   5180        },
   5181    });
   5182
   5183    // Side effect imports
   5184
   5185    hooks.lang = deprecate(
   5186        'moment.lang is deprecated. Use moment.locale instead.',
   5187        getSetGlobalLocale
   5188    );
   5189    hooks.langData = deprecate(
   5190        'moment.langData is deprecated. Use moment.localeData instead.',
   5191        getLocale
   5192    );
   5193
   5194    var mathAbs = Math.abs;
   5195
   5196    function abs() {
   5197        var data = this._data;
   5198
   5199        this._milliseconds = mathAbs(this._milliseconds);
   5200        this._days = mathAbs(this._days);
   5201        this._months = mathAbs(this._months);
   5202
   5203        data.milliseconds = mathAbs(data.milliseconds);
   5204        data.seconds = mathAbs(data.seconds);
   5205        data.minutes = mathAbs(data.minutes);
   5206        data.hours = mathAbs(data.hours);
   5207        data.months = mathAbs(data.months);
   5208        data.years = mathAbs(data.years);
   5209
   5210        return this;
   5211    }
   5212
   5213    function addSubtract$1(duration, input, value, direction) {
   5214        var other = createDuration(input, value);
   5215
   5216        duration._milliseconds += direction * other._milliseconds;
   5217        duration._days += direction * other._days;
   5218        duration._months += direction * other._months;
   5219
   5220        return duration._bubble();
   5221    }
   5222
   5223    // supports only 2.0-style add(1, 's') or add(duration)
   5224    function add$1(input, value) {
   5225        return addSubtract$1(this, input, value, 1);
   5226    }
   5227
   5228    // supports only 2.0-style subtract(1, 's') or subtract(duration)
   5229    function subtract$1(input, value) {
   5230        return addSubtract$1(this, input, value, -1);
   5231    }
   5232
   5233    function absCeil(number) {
   5234        if (number < 0) {
   5235            return Math.floor(number);
   5236        } else {
   5237            return Math.ceil(number);
   5238        }
   5239    }
   5240
   5241    function bubble() {
   5242        var milliseconds = this._milliseconds,
   5243            days = this._days,
   5244            months = this._months,
   5245            data = this._data,
   5246            seconds,
   5247            minutes,
   5248            hours,
   5249            years,
   5250            monthsFromDays;
   5251
   5252        // if we have a mix of positive and negative values, bubble down first
   5253        // check: https://github.com/moment/moment/issues/2166
   5254        if (
   5255            !(
   5256                (milliseconds >= 0 && days >= 0 && months >= 0) ||
   5257                (milliseconds <= 0 && days <= 0 && months <= 0)
   5258            )
   5259        ) {
   5260            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
   5261            days = 0;
   5262            months = 0;
   5263        }
   5264
   5265        // The following code bubbles up values, see the tests for
   5266        // examples of what that means.
   5267        data.milliseconds = milliseconds % 1000;
   5268
   5269        seconds = absFloor(milliseconds / 1000);
   5270        data.seconds = seconds % 60;
   5271
   5272        minutes = absFloor(seconds / 60);
   5273        data.minutes = minutes % 60;
   5274
   5275        hours = absFloor(minutes / 60);
   5276        data.hours = hours % 24;
   5277
   5278        days += absFloor(hours / 24);
   5279
   5280        // convert days to months
   5281        monthsFromDays = absFloor(daysToMonths(days));
   5282        months += monthsFromDays;
   5283        days -= absCeil(monthsToDays(monthsFromDays));
   5284
   5285        // 12 months -> 1 year
   5286        years = absFloor(months / 12);
   5287        months %= 12;
   5288
   5289        data.days = days;
   5290        data.months = months;
   5291        data.years = years;
   5292
   5293        return this;
   5294    }
   5295
   5296    function daysToMonths(days) {
   5297        // 400 years have 146097 days (taking into account leap year rules)
   5298        // 400 years have 12 months === 4800
   5299        return (days * 4800) / 146097;
   5300    }
   5301
   5302    function monthsToDays(months) {
   5303        // the reverse of daysToMonths
   5304        return (months * 146097) / 4800;
   5305    }
   5306
   5307    function as(units) {
   5308        if (!this.isValid()) {
   5309            return NaN;
   5310        }
   5311        var days,
   5312            months,
   5313            milliseconds = this._milliseconds;
   5314
   5315        units = normalizeUnits(units);
   5316
   5317        if (units === 'month' || units === 'quarter' || units === 'year') {
   5318            days = this._days + milliseconds / 864e5;
   5319            months = this._months + daysToMonths(days);
   5320            switch (units) {
   5321                case 'month':
   5322                    return months;
   5323                case 'quarter':
   5324                    return months / 3;
   5325                case 'year':
   5326                    return months / 12;
   5327            }
   5328        } else {
   5329            // handle milliseconds separately because of floating point math errors (issue #1867)
   5330            days = this._days + Math.round(monthsToDays(this._months));
   5331            switch (units) {
   5332                case 'week':
   5333                    return days / 7 + milliseconds / 6048e5;
   5334                case 'day':
   5335                    return days + milliseconds / 864e5;
   5336                case 'hour':
   5337                    return days * 24 + milliseconds / 36e5;
   5338                case 'minute':
   5339                    return days * 1440 + milliseconds / 6e4;
   5340                case 'second':
   5341                    return days * 86400 + milliseconds / 1000;
   5342                // Math.floor prevents floating point math errors here
   5343                case 'millisecond':
   5344                    return Math.floor(days * 864e5) + milliseconds;
   5345                default:
   5346                    throw new Error('Unknown unit ' + units);
   5347            }
   5348        }
   5349    }
   5350
   5351    function makeAs(alias) {
   5352        return function () {
   5353            return this.as(alias);
   5354        };
   5355    }
   5356
   5357    var asMilliseconds = makeAs('ms'),
   5358        asSeconds = makeAs('s'),
   5359        asMinutes = makeAs('m'),
   5360        asHours = makeAs('h'),
   5361        asDays = makeAs('d'),
   5362        asWeeks = makeAs('w'),
   5363        asMonths = makeAs('M'),
   5364        asQuarters = makeAs('Q'),
   5365        asYears = makeAs('y'),
   5366        valueOf$1 = asMilliseconds;
   5367
   5368    function clone$1() {
   5369        return createDuration(this);
   5370    }
   5371
   5372    function get$2(units) {
   5373        units = normalizeUnits(units);
   5374        return this.isValid() ? this[units + 's']() : NaN;
   5375    }
   5376
   5377    function makeGetter(name) {
   5378        return function () {
   5379            return this.isValid() ? this._data[name] : NaN;
   5380        };
   5381    }
   5382
   5383    var milliseconds = makeGetter('milliseconds'),
   5384        seconds = makeGetter('seconds'),
   5385        minutes = makeGetter('minutes'),
   5386        hours = makeGetter('hours'),
   5387        days = makeGetter('days'),
   5388        months = makeGetter('months'),
   5389        years = makeGetter('years');
   5390
   5391    function weeks() {
   5392        return absFloor(this.days() / 7);
   5393    }
   5394
   5395    var round = Math.round,
   5396        thresholds = {
   5397            ss: 44, // a few seconds to seconds
   5398            s: 45, // seconds to minute
   5399            m: 45, // minutes to hour
   5400            h: 22, // hours to day
   5401            d: 26, // days to month/week
   5402            w: null, // weeks to month
   5403            M: 11, // months to year
   5404        };
   5405
   5406    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
   5407    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
   5408        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
   5409    }
   5410
   5411    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
   5412        var duration = createDuration(posNegDuration).abs(),
   5413            seconds = round(duration.as('s')),
   5414            minutes = round(duration.as('m')),
   5415            hours = round(duration.as('h')),
   5416            days = round(duration.as('d')),
   5417            months = round(duration.as('M')),
   5418            weeks = round(duration.as('w')),
   5419            years = round(duration.as('y')),
   5420            a =
   5421                (seconds <= thresholds.ss && ['s', seconds]) ||
   5422                (seconds < thresholds.s && ['ss', seconds]) ||
   5423                (minutes <= 1 && ['m']) ||
   5424                (minutes < thresholds.m && ['mm', minutes]) ||
   5425                (hours <= 1 && ['h']) ||
   5426                (hours < thresholds.h && ['hh', hours]) ||
   5427                (days <= 1 && ['d']) ||
   5428                (days < thresholds.d && ['dd', days]);
   5429
   5430        if (thresholds.w != null) {
   5431            a =
   5432                a ||
   5433                (weeks <= 1 && ['w']) ||
   5434                (weeks < thresholds.w && ['ww', weeks]);
   5435        }
   5436        a = a ||
   5437            (months <= 1 && ['M']) ||
   5438            (months < thresholds.M && ['MM', months]) ||
   5439            (years <= 1 && ['y']) || ['yy', years];
   5440
   5441        a[2] = withoutSuffix;
   5442        a[3] = +posNegDuration > 0;
   5443        a[4] = locale;
   5444        return substituteTimeAgo.apply(null, a);
   5445    }
   5446
   5447    // This function allows you to set the rounding function for relative time strings
   5448    function getSetRelativeTimeRounding(roundingFunction) {
   5449        if (roundingFunction === undefined) {
   5450            return round;
   5451        }
   5452        if (typeof roundingFunction === 'function') {
   5453            round = roundingFunction;
   5454            return true;
   5455        }
   5456        return false;
   5457    }
   5458
   5459    // This function allows you to set a threshold for relative time strings
   5460    function getSetRelativeTimeThreshold(threshold, limit) {
   5461        if (thresholds[threshold] === undefined) {
   5462            return false;
   5463        }
   5464        if (limit === undefined) {
   5465            return thresholds[threshold];
   5466        }
   5467        thresholds[threshold] = limit;
   5468        if (threshold === 's') {
   5469            thresholds.ss = limit - 1;
   5470        }
   5471        return true;
   5472    }
   5473
   5474    function humanize(argWithSuffix, argThresholds) {
   5475        if (!this.isValid()) {
   5476            return this.localeData().invalidDate();
   5477        }
   5478
   5479        var withSuffix = false,
   5480            th = thresholds,
   5481            locale,
   5482            output;
   5483
   5484        if (typeof argWithSuffix === 'object') {
   5485            argThresholds = argWithSuffix;
   5486            argWithSuffix = false;
   5487        }
   5488        if (typeof argWithSuffix === 'boolean') {
   5489            withSuffix = argWithSuffix;
   5490        }
   5491        if (typeof argThresholds === 'object') {
   5492            th = Object.assign({}, thresholds, argThresholds);
   5493            if (argThresholds.s != null && argThresholds.ss == null) {
   5494                th.ss = argThresholds.s - 1;
   5495            }
   5496        }
   5497
   5498        locale = this.localeData();
   5499        output = relativeTime$1(this, !withSuffix, th, locale);
   5500
   5501        if (withSuffix) {
   5502            output = locale.pastFuture(+this, output);
   5503        }
   5504
   5505        return locale.postformat(output);
   5506    }
   5507
   5508    var abs$1 = Math.abs;
   5509
   5510    function sign(x) {
   5511        return (x > 0) - (x < 0) || +x;
   5512    }
   5513
   5514    function toISOString$1() {
   5515        // for ISO strings we do not use the normal bubbling rules:
   5516        //  * milliseconds bubble up until they become hours
   5517        //  * days do not bubble at all
   5518        //  * months bubble up until they become years
   5519        // This is because there is no context-free conversion between hours and days
   5520        // (think of clock changes)
   5521        // and also not between days and months (28-31 days per month)
   5522        if (!this.isValid()) {
   5523            return this.localeData().invalidDate();
   5524        }
   5525
   5526        var seconds = abs$1(this._milliseconds) / 1000,
   5527            days = abs$1(this._days),
   5528            months = abs$1(this._months),
   5529            minutes,
   5530            hours,
   5531            years,
   5532            s,
   5533            total = this.asSeconds(),
   5534            totalSign,
   5535            ymSign,
   5536            daysSign,
   5537            hmsSign;
   5538
   5539        if (!total) {
   5540            // this is the same as C#'s (Noda) and python (isodate)...
   5541            // but not other JS (goog.date)
   5542            return 'P0D';
   5543        }
   5544
   5545        // 3600 seconds -> 60 minutes -> 1 hour
   5546        minutes = absFloor(seconds / 60);
   5547        hours = absFloor(minutes / 60);
   5548        seconds %= 60;
   5549        minutes %= 60;
   5550
   5551        // 12 months -> 1 year
   5552        years = absFloor(months / 12);
   5553        months %= 12;
   5554
   5555        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
   5556        s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
   5557
   5558        totalSign = total < 0 ? '-' : '';
   5559        ymSign = sign(this._months) !== sign(total) ? '-' : '';
   5560        daysSign = sign(this._days) !== sign(total) ? '-' : '';
   5561        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
   5562
   5563        return (
   5564            totalSign +
   5565            'P' +
   5566            (years ? ymSign + years + 'Y' : '') +
   5567            (months ? ymSign + months + 'M' : '') +
   5568            (days ? daysSign + days + 'D' : '') +
   5569            (hours || minutes || seconds ? 'T' : '') +
   5570            (hours ? hmsSign + hours + 'H' : '') +
   5571            (minutes ? hmsSign + minutes + 'M' : '') +
   5572            (seconds ? hmsSign + s + 'S' : '')
   5573        );
   5574    }
   5575
   5576    var proto$2 = Duration.prototype;
   5577
   5578    proto$2.isValid = isValid$1;
   5579    proto$2.abs = abs;
   5580    proto$2.add = add$1;
   5581    proto$2.subtract = subtract$1;
   5582    proto$2.as = as;
   5583    proto$2.asMilliseconds = asMilliseconds;
   5584    proto$2.asSeconds = asSeconds;
   5585    proto$2.asMinutes = asMinutes;
   5586    proto$2.asHours = asHours;
   5587    proto$2.asDays = asDays;
   5588    proto$2.asWeeks = asWeeks;
   5589    proto$2.asMonths = asMonths;
   5590    proto$2.asQuarters = asQuarters;
   5591    proto$2.asYears = asYears;
   5592    proto$2.valueOf = valueOf$1;
   5593    proto$2._bubble = bubble;
   5594    proto$2.clone = clone$1;
   5595    proto$2.get = get$2;
   5596    proto$2.milliseconds = milliseconds;
   5597    proto$2.seconds = seconds;
   5598    proto$2.minutes = minutes;
   5599    proto$2.hours = hours;
   5600    proto$2.days = days;
   5601    proto$2.weeks = weeks;
   5602    proto$2.months = months;
   5603    proto$2.years = years;
   5604    proto$2.humanize = humanize;
   5605    proto$2.toISOString = toISOString$1;
   5606    proto$2.toString = toISOString$1;
   5607    proto$2.toJSON = toISOString$1;
   5608    proto$2.locale = locale;
   5609    proto$2.localeData = localeData;
   5610
   5611    proto$2.toIsoString = deprecate(
   5612        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
   5613        toISOString$1
   5614    );
   5615    proto$2.lang = lang;
   5616
   5617    // FORMATTING
   5618
   5619    addFormatToken('X', 0, 0, 'unix');
   5620    addFormatToken('x', 0, 0, 'valueOf');
   5621
   5622    // PARSING
   5623
   5624    addRegexToken('x', matchSigned);
   5625    addRegexToken('X', matchTimestamp);
   5626    addParseToken('X', function (input, array, config) {
   5627        config._d = new Date(parseFloat(input) * 1000);
   5628    });
   5629    addParseToken('x', function (input, array, config) {
   5630        config._d = new Date(toInt(input));
   5631    });
   5632
   5633    //! moment.js
   5634
   5635    hooks.version = '2.30.1';
   5636
   5637    setHookCallback(createLocal);
   5638
   5639    hooks.fn = proto;
   5640    hooks.min = min;
   5641    hooks.max = max;
   5642    hooks.now = now;
   5643    hooks.utc = createUTC;
   5644    hooks.unix = createUnix;
   5645    hooks.months = listMonths;
   5646    hooks.isDate = isDate;
   5647    hooks.locale = getSetGlobalLocale;
   5648    hooks.invalid = createInvalid;
   5649    hooks.duration = createDuration;
   5650    hooks.isMoment = isMoment;
   5651    hooks.weekdays = listWeekdays;
   5652    hooks.parseZone = createInZone;
   5653    hooks.localeData = getLocale;
   5654    hooks.isDuration = isDuration;
   5655    hooks.monthsShort = listMonthsShort;
   5656    hooks.weekdaysMin = listWeekdaysMin;
   5657    hooks.defineLocale = defineLocale;
   5658    hooks.updateLocale = updateLocale;
   5659    hooks.locales = listLocales;
   5660    hooks.weekdaysShort = listWeekdaysShort;
   5661    hooks.normalizeUnits = normalizeUnits;
   5662    hooks.relativeTimeRounding = getSetRelativeTimeRounding;
   5663    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
   5664    hooks.calendarFormat = getCalendarFormat;
   5665    hooks.prototype = proto;
   5666
   5667    // currently HTML5 input type only supports 24-hour formats
   5668    hooks.HTML5_FMT = {
   5669        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
   5670        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
   5671        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
   5672        DATE: 'YYYY-MM-DD', // <input type="date" />
   5673        TIME: 'HH:mm', // <input type="time" />
   5674        TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
   5675        TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
   5676        WEEK: 'GGGG-[W]WW', // <input type="week" />
   5677        MONTH: 'YYYY-MM', // <input type="month" />
   5678    };
   5679
   5680    //! moment.js locale configuration
   5681
   5682    hooks.defineLocale('af', {
   5683        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
   5684            '_'
   5685        ),
   5686        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
   5687        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
   5688            '_'
   5689        ),
   5690        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
   5691        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
   5692        meridiemParse: /vm|nm/i,
   5693        isPM: function (input) {
   5694            return /^nm$/i.test(input);
   5695        },
   5696        meridiem: function (hours, minutes, isLower) {
   5697            if (hours < 12) {
   5698                return isLower ? 'vm' : 'VM';
   5699            } else {
   5700                return isLower ? 'nm' : 'NM';
   5701            }
   5702        },
   5703        longDateFormat: {
   5704            LT: 'HH:mm',
   5705            LTS: 'HH:mm:ss',
   5706            L: 'DD/MM/YYYY',
   5707            LL: 'D MMMM YYYY',
   5708            LLL: 'D MMMM YYYY HH:mm',
   5709            LLLL: 'dddd, D MMMM YYYY HH:mm',
   5710        },
   5711        calendar: {
   5712            sameDay: '[Vandag om] LT',
   5713            nextDay: '[Môre om] LT',
   5714            nextWeek: 'dddd [om] LT',
   5715            lastDay: '[Gister om] LT',
   5716            lastWeek: '[Laas] dddd [om] LT',
   5717            sameElse: 'L',
   5718        },
   5719        relativeTime: {
   5720            future: 'oor %s',
   5721            past: '%s gelede',
   5722            s: "'n paar sekondes",
   5723            ss: '%d sekondes',
   5724            m: "'n minuut",
   5725            mm: '%d minute',
   5726            h: "'n uur",
   5727            hh: '%d ure',
   5728            d: "'n dag",
   5729            dd: '%d dae',
   5730            M: "'n maand",
   5731            MM: '%d maande',
   5732            y: "'n jaar",
   5733            yy: '%d jaar',
   5734        },
   5735        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
   5736        ordinal: function (number) {
   5737            return (
   5738                number +
   5739                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
   5740            ); // Thanks to Joris Röling : https://github.com/jjupiter
   5741        },
   5742        week: {
   5743            dow: 1, // Maandag is die eerste dag van die week.
   5744            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
   5745        },
   5746    });
   5747
   5748    //! moment.js locale configuration
   5749
   5750    var pluralForm = function (n) {
   5751            return n === 0
   5752                ? 0
   5753                : n === 1
   5754                  ? 1
   5755                  : n === 2
   5756                    ? 2
   5757                    : n % 100 >= 3 && n % 100 <= 10
   5758                      ? 3
   5759                      : n % 100 >= 11
   5760                        ? 4
   5761                        : 5;
   5762        },
   5763        plurals = {
   5764            s: [
   5765                'أقل من ثانية',
   5766                'ثانية واحدة',
   5767                ['ثانيتان', 'ثانيتين'],
   5768                '%d ثوان',
   5769                '%d ثانية',
   5770                '%d ثانية',
   5771            ],
   5772            m: [
   5773                'أقل من دقيقة',
   5774                'دقيقة واحدة',
   5775                ['دقيقتان', 'دقيقتين'],
   5776                '%d دقائق',
   5777                '%d دقيقة',
   5778                '%d دقيقة',
   5779            ],
   5780            h: [
   5781                'أقل من ساعة',
   5782                'ساعة واحدة',
   5783                ['ساعتان', 'ساعتين'],
   5784                '%d ساعات',
   5785                '%d ساعة',
   5786                '%d ساعة',
   5787            ],
   5788            d: [
   5789                'أقل من يوم',
   5790                'يوم واحد',
   5791                ['يومان', 'يومين'],
   5792                '%d أيام',
   5793                '%d يومًا',
   5794                '%d يوم',
   5795            ],
   5796            M: [
   5797                'أقل من شهر',
   5798                'شهر واحد',
   5799                ['شهران', 'شهرين'],
   5800                '%d أشهر',
   5801                '%d شهرا',
   5802                '%d شهر',
   5803            ],
   5804            y: [
   5805                'أقل من عام',
   5806                'عام واحد',
   5807                ['عامان', 'عامين'],
   5808                '%d أعوام',
   5809                '%d عامًا',
   5810                '%d عام',
   5811            ],
   5812        },
   5813        pluralize = function (u) {
   5814            return function (number, withoutSuffix, string, isFuture) {
   5815                var f = pluralForm(number),
   5816                    str = plurals[u][pluralForm(number)];
   5817                if (f === 2) {
   5818                    str = str[withoutSuffix ? 0 : 1];
   5819                }
   5820                return str.replace(/%d/i, number);
   5821            };
   5822        },
   5823        months$1 = [
   5824            'جانفي',
   5825            'فيفري',
   5826            'مارس',
   5827            'أفريل',
   5828            'ماي',
   5829            'جوان',
   5830            'جويلية',
   5831            'أوت',
   5832            'سبتمبر',
   5833            'أكتوبر',
   5834            'نوفمبر',
   5835            'ديسمبر',
   5836        ];
   5837
   5838    hooks.defineLocale('ar-dz', {
   5839        months: months$1,
   5840        monthsShort: months$1,
   5841        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
   5842        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
   5843        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
   5844        weekdaysParseExact: true,
   5845        longDateFormat: {
   5846            LT: 'HH:mm',
   5847            LTS: 'HH:mm:ss',
   5848            L: 'D/\u200FM/\u200FYYYY',
   5849            LL: 'D MMMM YYYY',
   5850            LLL: 'D MMMM YYYY HH:mm',
   5851            LLLL: 'dddd D MMMM YYYY HH:mm',
   5852        },
   5853        meridiemParse: /ص|م/,
   5854        isPM: function (input) {
   5855            return 'م' === input;
   5856        },
   5857        meridiem: function (hour, minute, isLower) {
   5858            if (hour < 12) {
   5859                return 'ص';
   5860            } else {
   5861                return 'م';
   5862            }
   5863        },
   5864        calendar: {
   5865            sameDay: '[اليوم عند الساعة] LT',
   5866            nextDay: '[غدًا عند الساعة] LT',
   5867            nextWeek: 'dddd [عند الساعة] LT',
   5868            lastDay: '[أمس عند الساعة] LT',
   5869            lastWeek: 'dddd [عند الساعة] LT',
   5870            sameElse: 'L',
   5871        },
   5872        relativeTime: {
   5873            future: 'بعد %s',
   5874            past: 'منذ %s',
   5875            s: pluralize('s'),
   5876            ss: pluralize('s'),
   5877            m: pluralize('m'),
   5878            mm: pluralize('m'),
   5879            h: pluralize('h'),
   5880            hh: pluralize('h'),
   5881            d: pluralize('d'),
   5882            dd: pluralize('d'),
   5883            M: pluralize('M'),
   5884            MM: pluralize('M'),
   5885            y: pluralize('y'),
   5886            yy: pluralize('y'),
   5887        },
   5888        postformat: function (string) {
   5889            return string.replace(/,/g, '،');
   5890        },
   5891        week: {
   5892            dow: 0, // Sunday is the first day of the week.
   5893            doy: 4, // The week that contains Jan 4th is the first week of the year.
   5894        },
   5895    });
   5896
   5897    //! moment.js locale configuration
   5898
   5899    hooks.defineLocale('ar-kw', {
   5900        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
   5901            '_'
   5902        ),
   5903        monthsShort:
   5904            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
   5905                '_'
   5906            ),
   5907        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
   5908        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
   5909        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
   5910        weekdaysParseExact: true,
   5911        longDateFormat: {
   5912            LT: 'HH:mm',
   5913            LTS: 'HH:mm:ss',
   5914            L: 'DD/MM/YYYY',
   5915            LL: 'D MMMM YYYY',
   5916            LLL: 'D MMMM YYYY HH:mm',
   5917            LLLL: 'dddd D MMMM YYYY HH:mm',
   5918        },
   5919        calendar: {
   5920            sameDay: '[اليوم على الساعة] LT',
   5921            nextDay: '[غدا على الساعة] LT',
   5922            nextWeek: 'dddd [على الساعة] LT',
   5923            lastDay: '[أمس على الساعة] LT',
   5924            lastWeek: 'dddd [على الساعة] LT',
   5925            sameElse: 'L',
   5926        },
   5927        relativeTime: {
   5928            future: 'في %s',
   5929            past: 'منذ %s',
   5930            s: 'ثوان',
   5931            ss: '%d ثانية',
   5932            m: 'دقيقة',
   5933            mm: '%d دقائق',
   5934            h: 'ساعة',
   5935            hh: '%d ساعات',
   5936            d: 'يوم',
   5937            dd: '%d أيام',
   5938            M: 'شهر',
   5939            MM: '%d أشهر',
   5940            y: 'سنة',
   5941            yy: '%d سنوات',
   5942        },
   5943        week: {
   5944            dow: 0, // Sunday is the first day of the week.
   5945            doy: 12, // The week that contains Jan 12th is the first week of the year.
   5946        },
   5947    });
   5948
   5949    //! moment.js locale configuration
   5950
   5951    var symbolMap = {
   5952            1: '1',
   5953            2: '2',
   5954            3: '3',
   5955            4: '4',
   5956            5: '5',
   5957            6: '6',
   5958            7: '7',
   5959            8: '8',
   5960            9: '9',
   5961            0: '0',
   5962        },
   5963        pluralForm$1 = function (n) {
   5964            return n === 0
   5965                ? 0
   5966                : n === 1
   5967                  ? 1
   5968                  : n === 2
   5969                    ? 2
   5970                    : n % 100 >= 3 && n % 100 <= 10
   5971                      ? 3
   5972                      : n % 100 >= 11
   5973                        ? 4
   5974                        : 5;
   5975        },
   5976        plurals$1 = {
   5977            s: [
   5978                'أقل من ثانية',
   5979                'ثانية واحدة',
   5980                ['ثانيتان', 'ثانيتين'],
   5981                '%d ثوان',
   5982                '%d ثانية',
   5983                '%d ثانية',
   5984            ],
   5985            m: [
   5986                'أقل من دقيقة',
   5987                'دقيقة واحدة',
   5988                ['دقيقتان', 'دقيقتين'],
   5989                '%d دقائق',
   5990                '%d دقيقة',
   5991                '%d دقيقة',
   5992            ],
   5993            h: [
   5994                'أقل من ساعة',
   5995                'ساعة واحدة',
   5996                ['ساعتان', 'ساعتين'],
   5997                '%d ساعات',
   5998                '%d ساعة',
   5999                '%d ساعة',
   6000            ],
   6001            d: [
   6002                'أقل من يوم',
   6003                'يوم واحد',
   6004                ['يومان', 'يومين'],
   6005                '%d أيام',
   6006                '%d يومًا',
   6007                '%d يوم',
   6008            ],
   6009            M: [
   6010                'أقل من شهر',
   6011                'شهر واحد',
   6012                ['شهران', 'شهرين'],
   6013                '%d أشهر',
   6014                '%d شهرا',
   6015                '%d شهر',
   6016            ],
   6017            y: [
   6018                'أقل من عام',
   6019                'عام واحد',
   6020                ['عامان', 'عامين'],
   6021                '%d أعوام',
   6022                '%d عامًا',
   6023                '%d عام',
   6024            ],
   6025        },
   6026        pluralize$1 = function (u) {
   6027            return function (number, withoutSuffix, string, isFuture) {
   6028                var f = pluralForm$1(number),
   6029                    str = plurals$1[u][pluralForm$1(number)];
   6030                if (f === 2) {
   6031                    str = str[withoutSuffix ? 0 : 1];
   6032                }
   6033                return str.replace(/%d/i, number);
   6034            };
   6035        },
   6036        months$2 = [
   6037            'يناير',
   6038            'فبراير',
   6039            'مارس',
   6040            'أبريل',
   6041            'مايو',
   6042            'يونيو',
   6043            'يوليو',
   6044            'أغسطس',
   6045            'سبتمبر',
   6046            'أكتوبر',
   6047            'نوفمبر',
   6048            'ديسمبر',
   6049        ];
   6050
   6051    hooks.defineLocale('ar-ly', {
   6052        months: months$2,
   6053        monthsShort: months$2,
   6054        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
   6055        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
   6056        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
   6057        weekdaysParseExact: true,
   6058        longDateFormat: {
   6059            LT: 'HH:mm',
   6060            LTS: 'HH:mm:ss',
   6061            L: 'D/\u200FM/\u200FYYYY',
   6062            LL: 'D MMMM YYYY',
   6063            LLL: 'D MMMM YYYY HH:mm',
   6064            LLLL: 'dddd D MMMM YYYY HH:mm',
   6065        },
   6066        meridiemParse: /ص|م/,
   6067        isPM: function (input) {
   6068            return 'م' === input;
   6069        },
   6070        meridiem: function (hour, minute, isLower) {
   6071            if (hour < 12) {
   6072                return 'ص';
   6073            } else {
   6074                return 'م';
   6075            }
   6076        },
   6077        calendar: {
   6078            sameDay: '[اليوم عند الساعة] LT',
   6079            nextDay: '[غدًا عند الساعة] LT',
   6080            nextWeek: 'dddd [عند الساعة] LT',
   6081            lastDay: '[أمس عند الساعة] LT',
   6082            lastWeek: 'dddd [عند الساعة] LT',
   6083            sameElse: 'L',
   6084        },
   6085        relativeTime: {
   6086            future: 'بعد %s',
   6087            past: 'منذ %s',
   6088            s: pluralize$1('s'),
   6089            ss: pluralize$1('s'),
   6090            m: pluralize$1('m'),
   6091            mm: pluralize$1('m'),
   6092            h: pluralize$1('h'),
   6093            hh: pluralize$1('h'),
   6094            d: pluralize$1('d'),
   6095            dd: pluralize$1('d'),
   6096            M: pluralize$1('M'),
   6097            MM: pluralize$1('M'),
   6098            y: pluralize$1('y'),
   6099            yy: pluralize$1('y'),
   6100        },
   6101        preparse: function (string) {
   6102            return string.replace(/،/g, ',');
   6103        },
   6104        postformat: function (string) {
   6105            return string
   6106                .replace(/\d/g, function (match) {
   6107                    return symbolMap[match];
   6108                })
   6109                .replace(/,/g, '،');
   6110        },
   6111        week: {
   6112            dow: 6, // Saturday is the first day of the week.
   6113            doy: 12, // The week that contains Jan 12th is the first week of the year.
   6114        },
   6115    });
   6116
   6117    //! moment.js locale configuration
   6118
   6119    hooks.defineLocale('ar-ma', {
   6120        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
   6121            '_'
   6122        ),
   6123        monthsShort:
   6124            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
   6125                '_'
   6126            ),
   6127        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
   6128        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
   6129        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
   6130        weekdaysParseExact: true,
   6131        longDateFormat: {
   6132            LT: 'HH:mm',
   6133            LTS: 'HH:mm:ss',
   6134            L: 'DD/MM/YYYY',
   6135            LL: 'D MMMM YYYY',
   6136            LLL: 'D MMMM YYYY HH:mm',
   6137            LLLL: 'dddd D MMMM YYYY HH:mm',
   6138        },
   6139        calendar: {
   6140            sameDay: '[اليوم على الساعة] LT',
   6141            nextDay: '[غدا على الساعة] LT',
   6142            nextWeek: 'dddd [على الساعة] LT',
   6143            lastDay: '[أمس على الساعة] LT',
   6144            lastWeek: 'dddd [على الساعة] LT',
   6145            sameElse: 'L',
   6146        },
   6147        relativeTime: {
   6148            future: 'في %s',
   6149            past: 'منذ %s',
   6150            s: 'ثوان',
   6151            ss: '%d ثانية',
   6152            m: 'دقيقة',
   6153            mm: '%d دقائق',
   6154            h: 'ساعة',
   6155            hh: '%d ساعات',
   6156            d: 'يوم',
   6157            dd: '%d أيام',
   6158            M: 'شهر',
   6159            MM: '%d أشهر',
   6160            y: 'سنة',
   6161            yy: '%d سنوات',
   6162        },
   6163        week: {
   6164            dow: 1, // Monday is the first day of the week.
   6165            doy: 4, // The week that contains Jan 4th is the first week of the year.
   6166        },
   6167    });
   6168
   6169    //! moment.js locale configuration
   6170
   6171    var symbolMap$1 = {
   6172            1: '١',
   6173            2: '٢',
   6174            3: '٣',
   6175            4: '٤',
   6176            5: '٥',
   6177            6: '٦',
   6178            7: '٧',
   6179            8: '٨',
   6180            9: '٩',
   6181            0: '٠',
   6182        },
   6183        numberMap = {
   6184            '١': '1',
   6185            '٢': '2',
   6186            '٣': '3',
   6187            '٤': '4',
   6188            '٥': '5',
   6189            '٦': '6',
   6190            '٧': '7',
   6191            '٨': '8',
   6192            '٩': '9',
   6193            '٠': '0',
   6194        };
   6195
   6196    hooks.defineLocale('ar-ps', {
   6197        months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(
   6198            '_'
   6199        ),
   6200        monthsShort:
   6201            'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),
   6202        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
   6203        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
   6204        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
   6205        weekdaysParseExact: true,
   6206        longDateFormat: {
   6207            LT: 'HH:mm',
   6208            LTS: 'HH:mm:ss',
   6209            L: 'DD/MM/YYYY',
   6210            LL: 'D MMMM YYYY',
   6211            LLL: 'D MMMM YYYY HH:mm',
   6212            LLLL: 'dddd D MMMM YYYY HH:mm',
   6213        },
   6214        meridiemParse: /ص|م/,
   6215        isPM: function (input) {
   6216            return 'م' === input;
   6217        },
   6218        meridiem: function (hour, minute, isLower) {
   6219            if (hour < 12) {
   6220                return 'ص';
   6221            } else {
   6222                return 'م';
   6223            }
   6224        },
   6225        calendar: {
   6226            sameDay: '[اليوم على الساعة] LT',
   6227            nextDay: '[غدا على الساعة] LT',
   6228            nextWeek: 'dddd [على الساعة] LT',
   6229            lastDay: '[أمس على الساعة] LT',
   6230            lastWeek: 'dddd [على الساعة] LT',
   6231            sameElse: 'L',
   6232        },
   6233        relativeTime: {
   6234            future: 'في %s',
   6235            past: 'منذ %s',
   6236            s: 'ثوان',
   6237            ss: '%d ثانية',
   6238            m: 'دقيقة',
   6239            mm: '%d دقائق',
   6240            h: 'ساعة',
   6241            hh: '%d ساعات',
   6242            d: 'يوم',
   6243            dd: '%d أيام',
   6244            M: 'شهر',
   6245            MM: '%d أشهر',
   6246            y: 'سنة',
   6247            yy: '%d سنوات',
   6248        },
   6249        preparse: function (string) {
   6250            return string
   6251                .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {
   6252                    return numberMap[match];
   6253                })
   6254                .split('') // reversed since negative lookbehind not supported everywhere
   6255                .reverse()
   6256                .join('')
   6257                .replace(/[١٢](?![\u062a\u0643])/g, function (match) {
   6258                    return numberMap[match];
   6259                })
   6260                .split('')
   6261                .reverse()
   6262                .join('')
   6263                .replace(/،/g, ',');
   6264        },
   6265        postformat: function (string) {
   6266            return string
   6267                .replace(/\d/g, function (match) {
   6268                    return symbolMap$1[match];
   6269                })
   6270                .replace(/,/g, '،');
   6271        },
   6272        week: {
   6273            dow: 0, // Sunday is the first day of the week.
   6274            doy: 6, // The week that contains Jan 6th is the first week of the year.
   6275        },
   6276    });
   6277
   6278    //! moment.js locale configuration
   6279
   6280    var symbolMap$2 = {
   6281            1: '١',
   6282            2: '٢',
   6283            3: '٣',
   6284            4: '٤',
   6285            5: '٥',
   6286            6: '٦',
   6287            7: '٧',
   6288            8: '٨',
   6289            9: '٩',
   6290            0: '٠',
   6291        },
   6292        numberMap$1 = {
   6293            '١': '1',
   6294            '٢': '2',
   6295            '٣': '3',
   6296            '٤': '4',
   6297            '٥': '5',
   6298            '٦': '6',
   6299            '٧': '7',
   6300            '٨': '8',
   6301            '٩': '9',
   6302            '٠': '0',
   6303        };
   6304
   6305    hooks.defineLocale('ar-sa', {
   6306        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
   6307            '_'
   6308        ),
   6309        monthsShort:
   6310            'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
   6311                '_'
   6312            ),
   6313        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
   6314        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
   6315        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
   6316        weekdaysParseExact: true,
   6317        longDateFormat: {
   6318            LT: 'HH:mm',
   6319            LTS: 'HH:mm:ss',
   6320            L: 'DD/MM/YYYY',
   6321            LL: 'D MMMM YYYY',
   6322            LLL: 'D MMMM YYYY HH:mm',
   6323            LLLL: 'dddd D MMMM YYYY HH:mm',
   6324        },
   6325        meridiemParse: /ص|م/,
   6326        isPM: function (input) {
   6327            return 'م' === input;
   6328        },
   6329        meridiem: function (hour, minute, isLower) {
   6330            if (hour < 12) {
   6331                return 'ص';
   6332            } else {
   6333                return 'م';
   6334            }
   6335        },
   6336        calendar: {
   6337            sameDay: '[اليوم على الساعة] LT',
   6338            nextDay: '[غدا على الساعة] LT',
   6339            nextWeek: 'dddd [على الساعة] LT',
   6340            lastDay: '[أمس على الساعة] LT',
   6341            lastWeek: 'dddd [على الساعة] LT',
   6342            sameElse: 'L',
   6343        },
   6344        relativeTime: {
   6345            future: 'في %s',
   6346            past: 'منذ %s',
   6347            s: 'ثوان',
   6348            ss: '%d ثانية',
   6349            m: 'دقيقة',
   6350            mm: '%d دقائق',
   6351            h: 'ساعة',
   6352            hh: '%d ساعات',
   6353            d: 'يوم',
   6354            dd: '%d أيام',
   6355            M: 'شهر',
   6356            MM: '%d أشهر',
   6357            y: 'سنة',
   6358            yy: '%d سنوات',
   6359        },
   6360        preparse: function (string) {
   6361            return string
   6362                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
   6363                    return numberMap$1[match];
   6364                })
   6365                .replace(/،/g, ',');
   6366        },
   6367        postformat: function (string) {
   6368            return string
   6369                .replace(/\d/g, function (match) {
   6370                    return symbolMap$2[match];
   6371                })
   6372                .replace(/,/g, '،');
   6373        },
   6374        week: {
   6375            dow: 0, // Sunday is the first day of the week.
   6376            doy: 6, // The week that contains Jan 6th is the first week of the year.
   6377        },
   6378    });
   6379
   6380    //! moment.js locale configuration
   6381
   6382    hooks.defineLocale('ar-tn', {
   6383        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
   6384            '_'
   6385        ),
   6386        monthsShort:
   6387            'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
   6388                '_'
   6389            ),
   6390        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
   6391        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
   6392        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
   6393        weekdaysParseExact: true,
   6394        longDateFormat: {
   6395            LT: 'HH:mm',
   6396            LTS: 'HH:mm:ss',
   6397            L: 'DD/MM/YYYY',
   6398            LL: 'D MMMM YYYY',
   6399            LLL: 'D MMMM YYYY HH:mm',
   6400            LLLL: 'dddd D MMMM YYYY HH:mm',
   6401        },
   6402        calendar: {
   6403            sameDay: '[اليوم على الساعة] LT',
   6404            nextDay: '[غدا على الساعة] LT',
   6405            nextWeek: 'dddd [على الساعة] LT',
   6406            lastDay: '[أمس على الساعة] LT',
   6407            lastWeek: 'dddd [على الساعة] LT',
   6408            sameElse: 'L',
   6409        },
   6410        relativeTime: {
   6411            future: 'في %s',
   6412            past: 'منذ %s',
   6413            s: 'ثوان',
   6414            ss: '%d ثانية',
   6415            m: 'دقيقة',
   6416            mm: '%d دقائق',
   6417            h: 'ساعة',
   6418            hh: '%d ساعات',
   6419            d: 'يوم',
   6420            dd: '%d أيام',
   6421            M: 'شهر',
   6422            MM: '%d أشهر',
   6423            y: 'سنة',
   6424            yy: '%d سنوات',
   6425        },
   6426        week: {
   6427            dow: 1, // Monday is the first day of the week.
   6428            doy: 4, // The week that contains Jan 4th is the first week of the year.
   6429        },
   6430    });
   6431
   6432    //! moment.js locale configuration
   6433
   6434    var symbolMap$3 = {
   6435            1: '١',
   6436            2: '٢',
   6437            3: '٣',
   6438            4: '٤',
   6439            5: '٥',
   6440            6: '٦',
   6441            7: '٧',
   6442            8: '٨',
   6443            9: '٩',
   6444            0: '٠',
   6445        },
   6446        numberMap$2 = {
   6447            '١': '1',
   6448            '٢': '2',
   6449            '٣': '3',
   6450            '٤': '4',
   6451            '٥': '5',
   6452            '٦': '6',
   6453            '٧': '7',
   6454            '٨': '8',
   6455            '٩': '9',
   6456            '٠': '0',
   6457        },
   6458        pluralForm$2 = function (n) {
   6459            return n === 0
   6460                ? 0
   6461                : n === 1
   6462                  ? 1
   6463                  : n === 2
   6464                    ? 2
   6465                    : n % 100 >= 3 && n % 100 <= 10
   6466                      ? 3
   6467                      : n % 100 >= 11
   6468                        ? 4
   6469                        : 5;
   6470        },
   6471        plurals$2 = {
   6472            s: [
   6473                'أقل من ثانية',
   6474                'ثانية واحدة',
   6475                ['ثانيتان', 'ثانيتين'],
   6476                '%d ثوان',
   6477                '%d ثانية',
   6478                '%d ثانية',
   6479            ],
   6480            m: [
   6481                'أقل من دقيقة',
   6482                'دقيقة واحدة',
   6483                ['دقيقتان', 'دقيقتين'],
   6484                '%d دقائق',
   6485                '%d دقيقة',
   6486                '%d دقيقة',
   6487            ],
   6488            h: [
   6489                'أقل من ساعة',
   6490                'ساعة واحدة',
   6491                ['ساعتان', 'ساعتين'],
   6492                '%d ساعات',
   6493                '%d ساعة',
   6494                '%d ساعة',
   6495            ],
   6496            d: [
   6497                'أقل من يوم',
   6498                'يوم واحد',
   6499                ['يومان', 'يومين'],
   6500                '%d أيام',
   6501                '%d يومًا',
   6502                '%d يوم',
   6503            ],
   6504            M: [
   6505                'أقل من شهر',
   6506                'شهر واحد',
   6507                ['شهران', 'شهرين'],
   6508                '%d أشهر',
   6509                '%d شهرا',
   6510                '%d شهر',
   6511            ],
   6512            y: [
   6513                'أقل من عام',
   6514                'عام واحد',
   6515                ['عامان', 'عامين'],
   6516                '%d أعوام',
   6517                '%d عامًا',
   6518                '%d عام',
   6519            ],
   6520        },
   6521        pluralize$2 = function (u) {
   6522            return function (number, withoutSuffix, string, isFuture) {
   6523                var f = pluralForm$2(number),
   6524                    str = plurals$2[u][pluralForm$2(number)];
   6525                if (f === 2) {
   6526                    str = str[withoutSuffix ? 0 : 1];
   6527                }
   6528                return str.replace(/%d/i, number);
   6529            };
   6530        },
   6531        months$3 = [
   6532            'يناير',
   6533            'فبراير',
   6534            'مارس',
   6535            'أبريل',
   6536            'مايو',
   6537            'يونيو',
   6538            'يوليو',
   6539            'أغسطس',
   6540            'سبتمبر',
   6541            'أكتوبر',
   6542            'نوفمبر',
   6543            'ديسمبر',
   6544        ];
   6545
   6546    hooks.defineLocale('ar', {
   6547        months: months$3,
   6548        monthsShort: months$3,
   6549        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
   6550        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
   6551        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
   6552        weekdaysParseExact: true,
   6553        longDateFormat: {
   6554            LT: 'HH:mm',
   6555            LTS: 'HH:mm:ss',
   6556            L: 'D/\u200FM/\u200FYYYY',
   6557            LL: 'D MMMM YYYY',
   6558            LLL: 'D MMMM YYYY HH:mm',
   6559            LLLL: 'dddd D MMMM YYYY HH:mm',
   6560        },
   6561        meridiemParse: /ص|م/,
   6562        isPM: function (input) {
   6563            return 'م' === input;
   6564        },
   6565        meridiem: function (hour, minute, isLower) {
   6566            if (hour < 12) {
   6567                return 'ص';
   6568            } else {
   6569                return 'م';
   6570            }
   6571        },
   6572        calendar: {
   6573            sameDay: '[اليوم عند الساعة] LT',
   6574            nextDay: '[غدًا عند الساعة] LT',
   6575            nextWeek: 'dddd [عند الساعة] LT',
   6576            lastDay: '[أمس عند الساعة] LT',
   6577            lastWeek: 'dddd [عند الساعة] LT',
   6578            sameElse: 'L',
   6579        },
   6580        relativeTime: {
   6581            future: 'بعد %s',
   6582            past: 'منذ %s',
   6583            s: pluralize$2('s'),
   6584            ss: pluralize$2('s'),
   6585            m: pluralize$2('m'),
   6586            mm: pluralize$2('m'),
   6587            h: pluralize$2('h'),
   6588            hh: pluralize$2('h'),
   6589            d: pluralize$2('d'),
   6590            dd: pluralize$2('d'),
   6591            M: pluralize$2('M'),
   6592            MM: pluralize$2('M'),
   6593            y: pluralize$2('y'),
   6594            yy: pluralize$2('y'),
   6595        },
   6596        preparse: function (string) {
   6597            return string
   6598                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
   6599                    return numberMap$2[match];
   6600                })
   6601                .replace(/،/g, ',');
   6602        },
   6603        postformat: function (string) {
   6604            return string
   6605                .replace(/\d/g, function (match) {
   6606                    return symbolMap$3[match];
   6607                })
   6608                .replace(/,/g, '،');
   6609        },
   6610        week: {
   6611            dow: 6, // Saturday is the first day of the week.
   6612            doy: 12, // The week that contains Jan 12th is the first week of the year.
   6613        },
   6614    });
   6615
   6616    //! moment.js locale configuration
   6617
   6618    var suffixes = {
   6619        1: '-inci',
   6620        5: '-inci',
   6621        8: '-inci',
   6622        70: '-inci',
   6623        80: '-inci',
   6624        2: '-nci',
   6625        7: '-nci',
   6626        20: '-nci',
   6627        50: '-nci',
   6628        3: '-üncü',
   6629        4: '-üncü',
   6630        100: '-üncü',
   6631        6: '-ncı',
   6632        9: '-uncu',
   6633        10: '-uncu',
   6634        30: '-uncu',
   6635        60: '-ıncı',
   6636        90: '-ıncı',
   6637    };
   6638
   6639    hooks.defineLocale('az', {
   6640        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
   6641            '_'
   6642        ),
   6643        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
   6644        weekdays:
   6645            'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
   6646                '_'
   6647            ),
   6648        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
   6649        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
   6650        weekdaysParseExact: true,
   6651        longDateFormat: {
   6652            LT: 'HH:mm',
   6653            LTS: 'HH:mm:ss',
   6654            L: 'DD.MM.YYYY',
   6655            LL: 'D MMMM YYYY',
   6656            LLL: 'D MMMM YYYY HH:mm',
   6657            LLLL: 'dddd, D MMMM YYYY HH:mm',
   6658        },
   6659        calendar: {
   6660            sameDay: '[bugün saat] LT',
   6661            nextDay: '[sabah saat] LT',
   6662            nextWeek: '[gələn həftə] dddd [saat] LT',
   6663            lastDay: '[dünən] LT',
   6664            lastWeek: '[keçən həftə] dddd [saat] LT',
   6665            sameElse: 'L',
   6666        },
   6667        relativeTime: {
   6668            future: '%s sonra',
   6669            past: '%s əvvəl',
   6670            s: 'bir neçə saniyə',
   6671            ss: '%d saniyə',
   6672            m: 'bir dəqiqə',
   6673            mm: '%d dəqiqə',
   6674            h: 'bir saat',
   6675            hh: '%d saat',
   6676            d: 'bir gün',
   6677            dd: '%d gün',
   6678            M: 'bir ay',
   6679            MM: '%d ay',
   6680            y: 'bir il',
   6681            yy: '%d il',
   6682        },
   6683        meridiemParse: /gecə|səhər|gündüz|axşam/,
   6684        isPM: function (input) {
   6685            return /^(gündüz|axşam)$/.test(input);
   6686        },
   6687        meridiem: function (hour, minute, isLower) {
   6688            if (hour < 4) {
   6689                return 'gecə';
   6690            } else if (hour < 12) {
   6691                return 'səhər';
   6692            } else if (hour < 17) {
   6693                return 'gündüz';
   6694            } else {
   6695                return 'axşam';
   6696            }
   6697        },
   6698        dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
   6699        ordinal: function (number) {
   6700            if (number === 0) {
   6701                // special case for zero
   6702                return number + '-ıncı';
   6703            }
   6704            var a = number % 10,
   6705                b = (number % 100) - a,
   6706                c = number >= 100 ? 100 : null;
   6707            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
   6708        },
   6709        week: {
   6710            dow: 1, // Monday is the first day of the week.
   6711            doy: 7, // The week that contains Jan 7th is the first week of the year.
   6712        },
   6713    });
   6714
   6715    //! moment.js locale configuration
   6716
   6717    function plural(word, num) {
   6718        var forms = word.split('_');
   6719        return num % 10 === 1 && num % 100 !== 11
   6720            ? forms[0]
   6721            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
   6722              ? forms[1]
   6723              : forms[2];
   6724    }
   6725    function relativeTimeWithPlural(number, withoutSuffix, key) {
   6726        var format = {
   6727            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
   6728            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
   6729            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
   6730            dd: 'дзень_дні_дзён',
   6731            MM: 'месяц_месяцы_месяцаў',
   6732            yy: 'год_гады_гадоў',
   6733        };
   6734        if (key === 'm') {
   6735            return withoutSuffix ? 'хвіліна' : 'хвіліну';
   6736        } else if (key === 'h') {
   6737            return withoutSuffix ? 'гадзіна' : 'гадзіну';
   6738        } else {
   6739            return number + ' ' + plural(format[key], +number);
   6740        }
   6741    }
   6742
   6743    hooks.defineLocale('be', {
   6744        months: {
   6745            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
   6746                '_'
   6747            ),
   6748            standalone:
   6749                'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
   6750                    '_'
   6751                ),
   6752        },
   6753        monthsShort:
   6754            'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
   6755        weekdays: {
   6756            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
   6757                '_'
   6758            ),
   6759            standalone:
   6760                'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
   6761                    '_'
   6762                ),
   6763            isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
   6764        },
   6765        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
   6766        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
   6767        longDateFormat: {
   6768            LT: 'HH:mm',
   6769            LTS: 'HH:mm:ss',
   6770            L: 'DD.MM.YYYY',
   6771            LL: 'D MMMM YYYY г.',
   6772            LLL: 'D MMMM YYYY г., HH:mm',
   6773            LLLL: 'dddd, D MMMM YYYY г., HH:mm',
   6774        },
   6775        calendar: {
   6776            sameDay: '[Сёння ў] LT',
   6777            nextDay: '[Заўтра ў] LT',
   6778            lastDay: '[Учора ў] LT',
   6779            nextWeek: function () {
   6780                return '[У] dddd [ў] LT';
   6781            },
   6782            lastWeek: function () {
   6783                switch (this.day()) {
   6784                    case 0:
   6785                    case 3:
   6786                    case 5:
   6787                    case 6:
   6788                        return '[У мінулую] dddd [ў] LT';
   6789                    case 1:
   6790                    case 2:
   6791                    case 4:
   6792                        return '[У мінулы] dddd [ў] LT';
   6793                }
   6794            },
   6795            sameElse: 'L',
   6796        },
   6797        relativeTime: {
   6798            future: 'праз %s',
   6799            past: '%s таму',
   6800            s: 'некалькі секунд',
   6801            m: relativeTimeWithPlural,
   6802            mm: relativeTimeWithPlural,
   6803            h: relativeTimeWithPlural,
   6804            hh: relativeTimeWithPlural,
   6805            d: 'дзень',
   6806            dd: relativeTimeWithPlural,
   6807            M: 'месяц',
   6808            MM: relativeTimeWithPlural,
   6809            y: 'год',
   6810            yy: relativeTimeWithPlural,
   6811        },
   6812        meridiemParse: /ночы|раніцы|дня|вечара/,
   6813        isPM: function (input) {
   6814            return /^(дня|вечара)$/.test(input);
   6815        },
   6816        meridiem: function (hour, minute, isLower) {
   6817            if (hour < 4) {
   6818                return 'ночы';
   6819            } else if (hour < 12) {
   6820                return 'раніцы';
   6821            } else if (hour < 17) {
   6822                return 'дня';
   6823            } else {
   6824                return 'вечара';
   6825            }
   6826        },
   6827        dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
   6828        ordinal: function (number, period) {
   6829            switch (period) {
   6830                case 'M':
   6831                case 'd':
   6832                case 'DDD':
   6833                case 'w':
   6834                case 'W':
   6835                    return (number % 10 === 2 || number % 10 === 3) &&
   6836                        number % 100 !== 12 &&
   6837                        number % 100 !== 13
   6838                        ? number + '-і'
   6839                        : number + '-ы';
   6840                case 'D':
   6841                    return number + '-га';
   6842                default:
   6843                    return number;
   6844            }
   6845        },
   6846        week: {
   6847            dow: 1, // Monday is the first day of the week.
   6848            doy: 7, // The week that contains Jan 7th is the first week of the year.
   6849        },
   6850    });
   6851
   6852    //! moment.js locale configuration
   6853
   6854    hooks.defineLocale('bg', {
   6855        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
   6856            '_'
   6857        ),
   6858        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
   6859        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
   6860            '_'
   6861        ),
   6862        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
   6863        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
   6864        longDateFormat: {
   6865            LT: 'H:mm',
   6866            LTS: 'H:mm:ss',
   6867            L: 'D.MM.YYYY',
   6868            LL: 'D MMMM YYYY',
   6869            LLL: 'D MMMM YYYY H:mm',
   6870            LLLL: 'dddd, D MMMM YYYY H:mm',
   6871        },
   6872        calendar: {
   6873            sameDay: '[Днес в] LT',
   6874            nextDay: '[Утре в] LT',
   6875            nextWeek: 'dddd [в] LT',
   6876            lastDay: '[Вчера в] LT',
   6877            lastWeek: function () {
   6878                switch (this.day()) {
   6879                    case 0:
   6880                    case 3:
   6881                    case 6:
   6882                        return '[Миналата] dddd [в] LT';
   6883                    case 1:
   6884                    case 2:
   6885                    case 4:
   6886                    case 5:
   6887                        return '[Миналия] dddd [в] LT';
   6888                }
   6889            },
   6890            sameElse: 'L',
   6891        },
   6892        relativeTime: {
   6893            future: 'след %s',
   6894            past: 'преди %s',
   6895            s: 'няколко секунди',
   6896            ss: '%d секунди',
   6897            m: 'минута',
   6898            mm: '%d минути',
   6899            h: 'час',
   6900            hh: '%d часа',
   6901            d: 'ден',
   6902            dd: '%d дена',
   6903            w: 'седмица',
   6904            ww: '%d седмици',
   6905            M: 'месец',
   6906            MM: '%d месеца',
   6907            y: 'година',
   6908            yy: '%d години',
   6909        },
   6910        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
   6911        ordinal: function (number) {
   6912            var lastDigit = number % 10,
   6913                last2Digits = number % 100;
   6914            if (number === 0) {
   6915                return number + '-ев';
   6916            } else if (last2Digits === 0) {
   6917                return number + '-ен';
   6918            } else if (last2Digits > 10 && last2Digits < 20) {
   6919                return number + '-ти';
   6920            } else if (lastDigit === 1) {
   6921                return number + '-ви';
   6922            } else if (lastDigit === 2) {
   6923                return number + '-ри';
   6924            } else if (lastDigit === 7 || lastDigit === 8) {
   6925                return number + '-ми';
   6926            } else {
   6927                return number + '-ти';
   6928            }
   6929        },
   6930        week: {
   6931            dow: 1, // Monday is the first day of the week.
   6932            doy: 7, // The week that contains Jan 7th is the first week of the year.
   6933        },
   6934    });
   6935
   6936    //! moment.js locale configuration
   6937
   6938    hooks.defineLocale('bm', {
   6939        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
   6940            '_'
   6941        ),
   6942        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
   6943        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
   6944        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
   6945        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
   6946        longDateFormat: {
   6947            LT: 'HH:mm',
   6948            LTS: 'HH:mm:ss',
   6949            L: 'DD/MM/YYYY',
   6950            LL: 'MMMM [tile] D [san] YYYY',
   6951            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
   6952            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
   6953        },
   6954        calendar: {
   6955            sameDay: '[Bi lɛrɛ] LT',
   6956            nextDay: '[Sini lɛrɛ] LT',
   6957            nextWeek: 'dddd [don lɛrɛ] LT',
   6958            lastDay: '[Kunu lɛrɛ] LT',
   6959            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
   6960            sameElse: 'L',
   6961        },
   6962        relativeTime: {
   6963            future: '%s kɔnɔ',
   6964            past: 'a bɛ %s bɔ',
   6965            s: 'sanga dama dama',
   6966            ss: 'sekondi %d',
   6967            m: 'miniti kelen',
   6968            mm: 'miniti %d',
   6969            h: 'lɛrɛ kelen',
   6970            hh: 'lɛrɛ %d',
   6971            d: 'tile kelen',
   6972            dd: 'tile %d',
   6973            M: 'kalo kelen',
   6974            MM: 'kalo %d',
   6975            y: 'san kelen',
   6976            yy: 'san %d',
   6977        },
   6978        week: {
   6979            dow: 1, // Monday is the first day of the week.
   6980            doy: 4, // The week that contains Jan 4th is the first week of the year.
   6981        },
   6982    });
   6983
   6984    //! moment.js locale configuration
   6985
   6986    var symbolMap$4 = {
   6987            1: '১',
   6988            2: '২',
   6989            3: '৩',
   6990            4: '৪',
   6991            5: '৫',
   6992            6: '৬',
   6993            7: '৭',
   6994            8: '৮',
   6995            9: '৯',
   6996            0: '০',
   6997        },
   6998        numberMap$3 = {
   6999            '১': '1',
   7000            '২': '2',
   7001            '৩': '3',
   7002            '৪': '4',
   7003            '৫': '5',
   7004            '৬': '6',
   7005            '৭': '7',
   7006            '৮': '8',
   7007            '৯': '9',
   7008            '০': '0',
   7009        };
   7010
   7011    hooks.defineLocale('bn-bd', {
   7012        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
   7013            '_'
   7014        ),
   7015        monthsShort:
   7016            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
   7017                '_'
   7018            ),
   7019        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
   7020            '_'
   7021        ),
   7022        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
   7023        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
   7024        longDateFormat: {
   7025            LT: 'A h:mm সময়',
   7026            LTS: 'A h:mm:ss সময়',
   7027            L: 'DD/MM/YYYY',
   7028            LL: 'D MMMM YYYY',
   7029            LLL: 'D MMMM YYYY, A h:mm সময়',
   7030            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
   7031        },
   7032        calendar: {
   7033            sameDay: '[আজ] LT',
   7034            nextDay: '[আগামীকাল] LT',
   7035            nextWeek: 'dddd, LT',
   7036            lastDay: '[গতকাল] LT',
   7037            lastWeek: '[গত] dddd, LT',
   7038            sameElse: 'L',
   7039        },
   7040        relativeTime: {
   7041            future: '%s পরে',
   7042            past: '%s আগে',
   7043            s: 'কয়েক সেকেন্ড',
   7044            ss: '%d সেকেন্ড',
   7045            m: 'এক মিনিট',
   7046            mm: '%d মিনিট',
   7047            h: 'এক ঘন্টা',
   7048            hh: '%d ঘন্টা',
   7049            d: 'এক দিন',
   7050            dd: '%d দিন',
   7051            M: 'এক মাস',
   7052            MM: '%d মাস',
   7053            y: 'এক বছর',
   7054            yy: '%d বছর',
   7055        },
   7056        preparse: function (string) {
   7057            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
   7058                return numberMap$3[match];
   7059            });
   7060        },
   7061        postformat: function (string) {
   7062            return string.replace(/\d/g, function (match) {
   7063                return symbolMap$4[match];
   7064            });
   7065        },
   7066
   7067        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,
   7068        meridiemHour: function (hour, meridiem) {
   7069            if (hour === 12) {
   7070                hour = 0;
   7071            }
   7072            if (meridiem === 'রাত') {
   7073                return hour < 4 ? hour : hour + 12;
   7074            } else if (meridiem === 'ভোর') {
   7075                return hour;
   7076            } else if (meridiem === 'সকাল') {
   7077                return hour;
   7078            } else if (meridiem === 'দুপুর') {
   7079                return hour >= 3 ? hour : hour + 12;
   7080            } else if (meridiem === 'বিকাল') {
   7081                return hour + 12;
   7082            } else if (meridiem === 'সন্ধ্যা') {
   7083                return hour + 12;
   7084            }
   7085        },
   7086
   7087        meridiem: function (hour, minute, isLower) {
   7088            if (hour < 4) {
   7089                return 'রাত';
   7090            } else if (hour < 6) {
   7091                return 'ভোর';
   7092            } else if (hour < 12) {
   7093                return 'সকাল';
   7094            } else if (hour < 15) {
   7095                return 'দুপুর';
   7096            } else if (hour < 18) {
   7097                return 'বিকাল';
   7098            } else if (hour < 20) {
   7099                return 'সন্ধ্যা';
   7100            } else {
   7101                return 'রাত';
   7102            }
   7103        },
   7104        week: {
   7105            dow: 0, // Sunday is the first day of the week.
   7106            doy: 6, // The week that contains Jan 6th is the first week of the year.
   7107        },
   7108    });
   7109
   7110    //! moment.js locale configuration
   7111
   7112    var symbolMap$5 = {
   7113            1: '১',
   7114            2: '২',
   7115            3: '৩',
   7116            4: '৪',
   7117            5: '৫',
   7118            6: '৬',
   7119            7: '৭',
   7120            8: '৮',
   7121            9: '৯',
   7122            0: '০',
   7123        },
   7124        numberMap$4 = {
   7125            '১': '1',
   7126            '২': '2',
   7127            '৩': '3',
   7128            '৪': '4',
   7129            '৫': '5',
   7130            '৬': '6',
   7131            '৭': '7',
   7132            '৮': '8',
   7133            '৯': '9',
   7134            '০': '0',
   7135        };
   7136
   7137    hooks.defineLocale('bn', {
   7138        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
   7139            '_'
   7140        ),
   7141        monthsShort:
   7142            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
   7143                '_'
   7144            ),
   7145        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
   7146            '_'
   7147        ),
   7148        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
   7149        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
   7150        longDateFormat: {
   7151            LT: 'A h:mm সময়',
   7152            LTS: 'A h:mm:ss সময়',
   7153            L: 'DD/MM/YYYY',
   7154            LL: 'D MMMM YYYY',
   7155            LLL: 'D MMMM YYYY, A h:mm সময়',
   7156            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
   7157        },
   7158        calendar: {
   7159            sameDay: '[আজ] LT',
   7160            nextDay: '[আগামীকাল] LT',
   7161            nextWeek: 'dddd, LT',
   7162            lastDay: '[গতকাল] LT',
   7163            lastWeek: '[গত] dddd, LT',
   7164            sameElse: 'L',
   7165        },
   7166        relativeTime: {
   7167            future: '%s পরে',
   7168            past: '%s আগে',
   7169            s: 'কয়েক সেকেন্ড',
   7170            ss: '%d সেকেন্ড',
   7171            m: 'এক মিনিট',
   7172            mm: '%d মিনিট',
   7173            h: 'এক ঘন্টা',
   7174            hh: '%d ঘন্টা',
   7175            d: 'এক দিন',
   7176            dd: '%d দিন',
   7177            M: 'এক মাস',
   7178            MM: '%d মাস',
   7179            y: 'এক বছর',
   7180            yy: '%d বছর',
   7181        },
   7182        preparse: function (string) {
   7183            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
   7184                return numberMap$4[match];
   7185            });
   7186        },
   7187        postformat: function (string) {
   7188            return string.replace(/\d/g, function (match) {
   7189                return symbolMap$5[match];
   7190            });
   7191        },
   7192        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
   7193        meridiemHour: function (hour, meridiem) {
   7194            if (hour === 12) {
   7195                hour = 0;
   7196            }
   7197            if (
   7198                (meridiem === 'রাত' && hour >= 4) ||
   7199                (meridiem === 'দুপুর' && hour < 5) ||
   7200                meridiem === 'বিকাল'
   7201            ) {
   7202                return hour + 12;
   7203            } else {
   7204                return hour;
   7205            }
   7206        },
   7207        meridiem: function (hour, minute, isLower) {
   7208            if (hour < 4) {
   7209                return 'রাত';
   7210            } else if (hour < 10) {
   7211                return 'সকাল';
   7212            } else if (hour < 17) {
   7213                return 'দুপুর';
   7214            } else if (hour < 20) {
   7215                return 'বিকাল';
   7216            } else {
   7217                return 'রাত';
   7218            }
   7219        },
   7220        week: {
   7221            dow: 0, // Sunday is the first day of the week.
   7222            doy: 6, // The week that contains Jan 6th is the first week of the year.
   7223        },
   7224    });
   7225
   7226    //! moment.js locale configuration
   7227
   7228    var symbolMap$6 = {
   7229            1: '༡',
   7230            2: '༢',
   7231            3: '༣',
   7232            4: '༤',
   7233            5: '༥',
   7234            6: '༦',
   7235            7: '༧',
   7236            8: '༨',
   7237            9: '༩',
   7238            0: '༠',
   7239        },
   7240        numberMap$5 = {
   7241            '༡': '1',
   7242            '༢': '2',
   7243            '༣': '3',
   7244            '༤': '4',
   7245            '༥': '5',
   7246            '༦': '6',
   7247            '༧': '7',
   7248            '༨': '8',
   7249            '༩': '9',
   7250            '༠': '0',
   7251        };
   7252
   7253    hooks.defineLocale('bo', {
   7254        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
   7255            '_'
   7256        ),
   7257        monthsShort:
   7258            'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
   7259                '_'
   7260            ),
   7261        monthsShortRegex: /^(ཟླ་\d{1,2})/,
   7262        monthsParseExact: true,
   7263        weekdays:
   7264            'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
   7265                '_'
   7266            ),
   7267        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
   7268            '_'
   7269        ),
   7270        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
   7271        longDateFormat: {
   7272            LT: 'A h:mm',
   7273            LTS: 'A h:mm:ss',
   7274            L: 'DD/MM/YYYY',
   7275            LL: 'D MMMM YYYY',
   7276            LLL: 'D MMMM YYYY, A h:mm',
   7277            LLLL: 'dddd, D MMMM YYYY, A h:mm',
   7278        },
   7279        calendar: {
   7280            sameDay: '[དི་རིང] LT',
   7281            nextDay: '[སང་ཉིན] LT',
   7282            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
   7283            lastDay: '[ཁ་སང] LT',
   7284            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
   7285            sameElse: 'L',
   7286        },
   7287        relativeTime: {
   7288            future: '%s ལ་',
   7289            past: '%s སྔན་ལ',
   7290            s: 'ལམ་སང',
   7291            ss: '%d སྐར་ཆ།',
   7292            m: 'སྐར་མ་གཅིག',
   7293            mm: '%d སྐར་མ',
   7294            h: 'ཆུ་ཚོད་གཅིག',
   7295            hh: '%d ཆུ་ཚོད',
   7296            d: 'ཉིན་གཅིག',
   7297            dd: '%d ཉིན་',
   7298            M: 'ཟླ་བ་གཅིག',
   7299            MM: '%d ཟླ་བ',
   7300            y: 'ལོ་གཅིག',
   7301            yy: '%d ལོ',
   7302        },
   7303        preparse: function (string) {
   7304            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
   7305                return numberMap$5[match];
   7306            });
   7307        },
   7308        postformat: function (string) {
   7309            return string.replace(/\d/g, function (match) {
   7310                return symbolMap$6[match];
   7311            });
   7312        },
   7313        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
   7314        meridiemHour: function (hour, meridiem) {
   7315            if (hour === 12) {
   7316                hour = 0;
   7317            }
   7318            if (
   7319                (meridiem === 'མཚན་མོ' && hour >= 4) ||
   7320                (meridiem === 'ཉིན་གུང' && hour < 5) ||
   7321                meridiem === 'དགོང་དག'
   7322            ) {
   7323                return hour + 12;
   7324            } else {
   7325                return hour;
   7326            }
   7327        },
   7328        meridiem: function (hour, minute, isLower) {
   7329            if (hour < 4) {
   7330                return 'མཚན་མོ';
   7331            } else if (hour < 10) {
   7332                return 'ཞོགས་ཀས';
   7333            } else if (hour < 17) {
   7334                return 'ཉིན་གུང';
   7335            } else if (hour < 20) {
   7336                return 'དགོང་དག';
   7337            } else {
   7338                return 'མཚན་མོ';
   7339            }
   7340        },
   7341        week: {
   7342            dow: 0, // Sunday is the first day of the week.
   7343            doy: 6, // The week that contains Jan 6th is the first week of the year.
   7344        },
   7345    });
   7346
   7347    //! moment.js locale configuration
   7348
   7349    function relativeTimeWithMutation(number, withoutSuffix, key) {
   7350        var format = {
   7351            mm: 'munutenn',
   7352            MM: 'miz',
   7353            dd: 'devezh',
   7354        };
   7355        return number + ' ' + mutation(format[key], number);
   7356    }
   7357    function specialMutationForYears(number) {
   7358        switch (lastNumber(number)) {
   7359            case 1:
   7360            case 3:
   7361            case 4:
   7362            case 5:
   7363            case 9:
   7364                return number + ' bloaz';
   7365            default:
   7366                return number + ' vloaz';
   7367        }
   7368    }
   7369    function lastNumber(number) {
   7370        if (number > 9) {
   7371            return lastNumber(number % 10);
   7372        }
   7373        return number;
   7374    }
   7375    function mutation(text, number) {
   7376        if (number === 2) {
   7377            return softMutation(text);
   7378        }
   7379        return text;
   7380    }
   7381    function softMutation(text) {
   7382        var mutationTable = {
   7383            m: 'v',
   7384            b: 'v',
   7385            d: 'z',
   7386        };
   7387        if (mutationTable[text.charAt(0)] === undefined) {
   7388            return text;
   7389        }
   7390        return mutationTable[text.charAt(0)] + text.substring(1);
   7391    }
   7392
   7393    var monthsParse = [
   7394            /^gen/i,
   7395            /^c[ʼ\']hwe/i,
   7396            /^meu/i,
   7397            /^ebr/i,
   7398            /^mae/i,
   7399            /^(mez|eve)/i,
   7400            /^gou/i,
   7401            /^eos/i,
   7402            /^gwe/i,
   7403            /^her/i,
   7404            /^du/i,
   7405            /^ker/i,
   7406        ],
   7407        monthsRegex$1 =
   7408            /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
   7409        monthsStrictRegex =
   7410            /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
   7411        monthsShortStrictRegex =
   7412            /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
   7413        fullWeekdaysParse = [
   7414            /^sul/i,
   7415            /^lun/i,
   7416            /^meurzh/i,
   7417            /^merc[ʼ\']her/i,
   7418            /^yaou/i,
   7419            /^gwener/i,
   7420            /^sadorn/i,
   7421        ],
   7422        shortWeekdaysParse = [
   7423            /^Sul/i,
   7424            /^Lun/i,
   7425            /^Meu/i,
   7426            /^Mer/i,
   7427            /^Yao/i,
   7428            /^Gwe/i,
   7429            /^Sad/i,
   7430        ],
   7431        minWeekdaysParse = [
   7432            /^Su/i,
   7433            /^Lu/i,
   7434            /^Me([^r]|$)/i,
   7435            /^Mer/i,
   7436            /^Ya/i,
   7437            /^Gw/i,
   7438            /^Sa/i,
   7439        ];
   7440
   7441    hooks.defineLocale('br', {
   7442        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
   7443            '_'
   7444        ),
   7445        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
   7446        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
   7447        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
   7448        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
   7449        weekdaysParse: minWeekdaysParse,
   7450        fullWeekdaysParse: fullWeekdaysParse,
   7451        shortWeekdaysParse: shortWeekdaysParse,
   7452        minWeekdaysParse: minWeekdaysParse,
   7453
   7454        monthsRegex: monthsRegex$1,
   7455        monthsShortRegex: monthsRegex$1,
   7456        monthsStrictRegex: monthsStrictRegex,
   7457        monthsShortStrictRegex: monthsShortStrictRegex,
   7458        monthsParse: monthsParse,
   7459        longMonthsParse: monthsParse,
   7460        shortMonthsParse: monthsParse,
   7461
   7462        longDateFormat: {
   7463            LT: 'HH:mm',
   7464            LTS: 'HH:mm:ss',
   7465            L: 'DD/MM/YYYY',
   7466            LL: 'D [a viz] MMMM YYYY',
   7467            LLL: 'D [a viz] MMMM YYYY HH:mm',
   7468            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
   7469        },
   7470        calendar: {
   7471            sameDay: '[Hiziv da] LT',
   7472            nextDay: '[Warcʼhoazh da] LT',
   7473            nextWeek: 'dddd [da] LT',
   7474            lastDay: '[Decʼh da] LT',
   7475            lastWeek: 'dddd [paset da] LT',
   7476            sameElse: 'L',
   7477        },
   7478        relativeTime: {
   7479            future: 'a-benn %s',
   7480            past: '%s ʼzo',
   7481            s: 'un nebeud segondennoù',
   7482            ss: '%d eilenn',
   7483            m: 'ur vunutenn',
   7484            mm: relativeTimeWithMutation,
   7485            h: 'un eur',
   7486            hh: '%d eur',
   7487            d: 'un devezh',
   7488            dd: relativeTimeWithMutation,
   7489            M: 'ur miz',
   7490            MM: relativeTimeWithMutation,
   7491            y: 'ur bloaz',
   7492            yy: specialMutationForYears,
   7493        },
   7494        dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
   7495        ordinal: function (number) {
   7496            var output = number === 1 ? 'añ' : 'vet';
   7497            return number + output;
   7498        },
   7499        week: {
   7500            dow: 1, // Monday is the first day of the week.
   7501            doy: 4, // The week that contains Jan 4th is the first week of the year.
   7502        },
   7503        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
   7504        isPM: function (token) {
   7505            return token === 'g.m.';
   7506        },
   7507        meridiem: function (hour, minute, isLower) {
   7508            return hour < 12 ? 'a.m.' : 'g.m.';
   7509        },
   7510    });
   7511
   7512    //! moment.js locale configuration
   7513
   7514    function processRelativeTime(number, withoutSuffix, key, isFuture) {
   7515        switch (key) {
   7516            case 'm':
   7517                return withoutSuffix
   7518                    ? 'jedna minuta'
   7519                    : isFuture
   7520                      ? 'jednu minutu'
   7521                      : 'jedne minute';
   7522        }
   7523    }
   7524
   7525    function translate(number, withoutSuffix, key) {
   7526        var result = number + ' ';
   7527        switch (key) {
   7528            case 'ss':
   7529                if (number === 1) {
   7530                    result += 'sekunda';
   7531                } else if (number === 2 || number === 3 || number === 4) {
   7532                    result += 'sekunde';
   7533                } else {
   7534                    result += 'sekundi';
   7535                }
   7536                return result;
   7537            case 'mm':
   7538                if (number === 1) {
   7539                    result += 'minuta';
   7540                } else if (number === 2 || number === 3 || number === 4) {
   7541                    result += 'minute';
   7542                } else {
   7543                    result += 'minuta';
   7544                }
   7545                return result;
   7546            case 'h':
   7547                return withoutSuffix ? 'jedan sat' : 'jedan sat';
   7548            case 'hh':
   7549                if (number === 1) {
   7550                    result += 'sat';
   7551                } else if (number === 2 || number === 3 || number === 4) {
   7552                    result += 'sata';
   7553                } else {
   7554                    result += 'sati';
   7555                }
   7556                return result;
   7557            case 'dd':
   7558                if (number === 1) {
   7559                    result += 'dan';
   7560                } else {
   7561                    result += 'dana';
   7562                }
   7563                return result;
   7564            case 'MM':
   7565                if (number === 1) {
   7566                    result += 'mjesec';
   7567                } else if (number === 2 || number === 3 || number === 4) {
   7568                    result += 'mjeseca';
   7569                } else {
   7570                    result += 'mjeseci';
   7571                }
   7572                return result;
   7573            case 'yy':
   7574                if (number === 1) {
   7575                    result += 'godina';
   7576                } else if (number === 2 || number === 3 || number === 4) {
   7577                    result += 'godine';
   7578                } else {
   7579                    result += 'godina';
   7580                }
   7581                return result;
   7582        }
   7583    }
   7584
   7585    hooks.defineLocale('bs', {
   7586        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
   7587            '_'
   7588        ),
   7589        monthsShort:
   7590            'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
   7591                '_'
   7592            ),
   7593        monthsParseExact: true,
   7594        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
   7595            '_'
   7596        ),
   7597        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
   7598        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
   7599        weekdaysParseExact: true,
   7600        longDateFormat: {
   7601            LT: 'H:mm',
   7602            LTS: 'H:mm:ss',
   7603            L: 'DD.MM.YYYY',
   7604            LL: 'D. MMMM YYYY',
   7605            LLL: 'D. MMMM YYYY H:mm',
   7606            LLLL: 'dddd, D. MMMM YYYY H:mm',
   7607        },
   7608        calendar: {
   7609            sameDay: '[danas u] LT',
   7610            nextDay: '[sutra u] LT',
   7611            nextWeek: function () {
   7612                switch (this.day()) {
   7613                    case 0:
   7614                        return '[u] [nedjelju] [u] LT';
   7615                    case 3:
   7616                        return '[u] [srijedu] [u] LT';
   7617                    case 6:
   7618                        return '[u] [subotu] [u] LT';
   7619                    case 1:
   7620                    case 2:
   7621                    case 4:
   7622                    case 5:
   7623                        return '[u] dddd [u] LT';
   7624                }
   7625            },
   7626            lastDay: '[jučer u] LT',
   7627            lastWeek: function () {
   7628                switch (this.day()) {
   7629                    case 0:
   7630                    case 3:
   7631                        return '[prošlu] dddd [u] LT';
   7632                    case 6:
   7633                        return '[prošle] [subote] [u] LT';
   7634                    case 1:
   7635                    case 2:
   7636                    case 4:
   7637                    case 5:
   7638                        return '[prošli] dddd [u] LT';
   7639                }
   7640            },
   7641            sameElse: 'L',
   7642        },
   7643        relativeTime: {
   7644            future: 'za %s',
   7645            past: 'prije %s',
   7646            s: 'par sekundi',
   7647            ss: translate,
   7648            m: processRelativeTime,
   7649            mm: translate,
   7650            h: translate,
   7651            hh: translate,
   7652            d: 'dan',
   7653            dd: translate,
   7654            M: 'mjesec',
   7655            MM: translate,
   7656            y: 'godinu',
   7657            yy: translate,
   7658        },
   7659        dayOfMonthOrdinalParse: /\d{1,2}\./,
   7660        ordinal: '%d.',
   7661        week: {
   7662            dow: 1, // Monday is the first day of the week.
   7663            doy: 7, // The week that contains Jan 7th is the first week of the year.
   7664        },
   7665    });
   7666
   7667    //! moment.js locale configuration
   7668
   7669    hooks.defineLocale('ca', {
   7670        months: {
   7671            standalone:
   7672                'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
   7673                    '_'
   7674                ),
   7675            format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split(
   7676                '_'
   7677            ),
   7678            isFormat: /D[oD]?(\s)+MMMM/,
   7679        },
   7680        monthsShort:
   7681            'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
   7682                '_'
   7683            ),
   7684        monthsParseExact: true,
   7685        weekdays:
   7686            'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
   7687                '_'
   7688            ),
   7689        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
   7690        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
   7691        weekdaysParseExact: true,
   7692        longDateFormat: {
   7693            LT: 'H:mm',
   7694            LTS: 'H:mm:ss',
   7695            L: 'DD/MM/YYYY',
   7696            LL: 'D MMMM [de] YYYY',
   7697            ll: 'D MMM YYYY',
   7698            LLL: 'D MMMM [de] YYYY [a les] H:mm',
   7699            lll: 'D MMM YYYY, H:mm',
   7700            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
   7701            llll: 'ddd D MMM YYYY, H:mm',
   7702        },
   7703        calendar: {
   7704            sameDay: function () {
   7705                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
   7706            },
   7707            nextDay: function () {
   7708                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
   7709            },
   7710            nextWeek: function () {
   7711                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
   7712            },
   7713            lastDay: function () {
   7714                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
   7715            },
   7716            lastWeek: function () {
   7717                return (
   7718                    '[el] dddd [passat a ' +
   7719                    (this.hours() !== 1 ? 'les' : 'la') +
   7720                    '] LT'
   7721                );
   7722            },
   7723            sameElse: 'L',
   7724        },
   7725        relativeTime: {
   7726            future: "d'aquí %s",
   7727            past: 'fa %s',
   7728            s: 'uns segons',
   7729            ss: '%d segons',
   7730            m: 'un minut',
   7731            mm: '%d minuts',
   7732            h: 'una hora',
   7733            hh: '%d hores',
   7734            d: 'un dia',
   7735            dd: '%d dies',
   7736            M: 'un mes',
   7737            MM: '%d mesos',
   7738            y: 'un any',
   7739            yy: '%d anys',
   7740        },
   7741        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
   7742        ordinal: function (number, period) {
   7743            var output =
   7744                number === 1
   7745                    ? 'r'
   7746                    : number === 2
   7747                      ? 'n'
   7748                      : number === 3
   7749                        ? 'r'
   7750                        : number === 4
   7751                          ? 't'
   7752                          : 'è';
   7753            if (period === 'w' || period === 'W') {
   7754                output = 'a';
   7755            }
   7756            return number + output;
   7757        },
   7758        week: {
   7759            dow: 1, // Monday is the first day of the week.
   7760            doy: 4, // The week that contains Jan 4th is the first week of the year.
   7761        },
   7762    });
   7763
   7764    //! moment.js locale configuration
   7765
   7766    var months$4 = {
   7767            standalone:
   7768                'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(
   7769                    '_'
   7770                ),
   7771            format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(
   7772                '_'
   7773            ),
   7774            isFormat: /DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/,
   7775        },
   7776        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
   7777        monthsParse$1 = [
   7778            /^led/i,
   7779            /^úno/i,
   7780            /^bře/i,
   7781            /^dub/i,
   7782            /^kvě/i,
   7783            /^(čvn|červen$|června)/i,
   7784            /^(čvc|červenec|července)/i,
   7785            /^srp/i,
   7786            /^zář/i,
   7787            /^říj/i,
   7788            /^lis/i,
   7789            /^pro/i,
   7790        ],
   7791        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
   7792        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
   7793        monthsRegex$2 =
   7794            /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;
   7795
   7796    function plural$1(n) {
   7797        return n > 1 && n < 5 && ~~(n / 10) !== 1;
   7798    }
   7799    function translate$1(number, withoutSuffix, key, isFuture) {
   7800        var result = number + ' ';
   7801        switch (key) {
   7802            case 's': // a few seconds / in a few seconds / a few seconds ago
   7803                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
   7804            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
   7805                if (withoutSuffix || isFuture) {
   7806                    return result + (plural$1(number) ? 'sekundy' : 'sekund');
   7807                } else {
   7808                    return result + 'sekundami';
   7809                }
   7810            case 'm': // a minute / in a minute / a minute ago
   7811                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
   7812            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
   7813                if (withoutSuffix || isFuture) {
   7814                    return result + (plural$1(number) ? 'minuty' : 'minut');
   7815                } else {
   7816                    return result + 'minutami';
   7817                }
   7818            case 'h': // an hour / in an hour / an hour ago
   7819                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
   7820            case 'hh': // 9 hours / in 9 hours / 9 hours ago
   7821                if (withoutSuffix || isFuture) {
   7822                    return result + (plural$1(number) ? 'hodiny' : 'hodin');
   7823                } else {
   7824                    return result + 'hodinami';
   7825                }
   7826            case 'd': // a day / in a day / a day ago
   7827                return withoutSuffix || isFuture ? 'den' : 'dnem';
   7828            case 'dd': // 9 days / in 9 days / 9 days ago
   7829                if (withoutSuffix || isFuture) {
   7830                    return result + (plural$1(number) ? 'dny' : 'dní');
   7831                } else {
   7832                    return result + 'dny';
   7833                }
   7834            case 'M': // a month / in a month / a month ago
   7835                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
   7836            case 'MM': // 9 months / in 9 months / 9 months ago
   7837                if (withoutSuffix || isFuture) {
   7838                    return result + (plural$1(number) ? 'měsíce' : 'měsíců');
   7839                } else {
   7840                    return result + 'měsíci';
   7841                }
   7842            case 'y': // a year / in a year / a year ago
   7843                return withoutSuffix || isFuture ? 'rok' : 'rokem';
   7844            case 'yy': // 9 years / in 9 years / 9 years ago
   7845                if (withoutSuffix || isFuture) {
   7846                    return result + (plural$1(number) ? 'roky' : 'let');
   7847                } else {
   7848                    return result + 'lety';
   7849                }
   7850        }
   7851    }
   7852
   7853    hooks.defineLocale('cs', {
   7854        months: months$4,
   7855        monthsShort: monthsShort,
   7856        monthsRegex: monthsRegex$2,
   7857        monthsShortRegex: monthsRegex$2,
   7858        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
   7859        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
   7860        monthsStrictRegex:
   7861            /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,
   7862        monthsShortStrictRegex:
   7863            /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
   7864        monthsParse: monthsParse$1,
   7865        longMonthsParse: monthsParse$1,
   7866        shortMonthsParse: monthsParse$1,
   7867        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
   7868        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
   7869        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
   7870        longDateFormat: {
   7871            LT: 'H:mm',
   7872            LTS: 'H:mm:ss',
   7873            L: 'DD.MM.YYYY',
   7874            LL: 'D. MMMM YYYY',
   7875            LLL: 'D. MMMM YYYY H:mm',
   7876            LLLL: 'dddd D. MMMM YYYY H:mm',
   7877            l: 'D. M. YYYY',
   7878        },
   7879        calendar: {
   7880            sameDay: '[dnes v] LT',
   7881            nextDay: '[zítra v] LT',
   7882            nextWeek: function () {
   7883                switch (this.day()) {
   7884                    case 0:
   7885                        return '[v neděli v] LT';
   7886                    case 1:
   7887                    case 2:
   7888                        return '[v] dddd [v] LT';
   7889                    case 3:
   7890                        return '[ve středu v] LT';
   7891                    case 4:
   7892                        return '[ve čtvrtek v] LT';
   7893                    case 5:
   7894                        return '[v pátek v] LT';
   7895                    case 6:
   7896                        return '[v sobotu v] LT';
   7897                }
   7898            },
   7899            lastDay: '[včera v] LT',
   7900            lastWeek: function () {
   7901                switch (this.day()) {
   7902                    case 0:
   7903                        return '[minulou neděli v] LT';
   7904                    case 1:
   7905                    case 2:
   7906                        return '[minulé] dddd [v] LT';
   7907                    case 3:
   7908                        return '[minulou středu v] LT';
   7909                    case 4:
   7910                    case 5:
   7911                        return '[minulý] dddd [v] LT';
   7912                    case 6:
   7913                        return '[minulou sobotu v] LT';
   7914                }
   7915            },
   7916            sameElse: 'L',
   7917        },
   7918        relativeTime: {
   7919            future: 'za %s',
   7920            past: 'před %s',
   7921            s: translate$1,
   7922            ss: translate$1,
   7923            m: translate$1,
   7924            mm: translate$1,
   7925            h: translate$1,
   7926            hh: translate$1,
   7927            d: translate$1,
   7928            dd: translate$1,
   7929            M: translate$1,
   7930            MM: translate$1,
   7931            y: translate$1,
   7932            yy: translate$1,
   7933        },
   7934        dayOfMonthOrdinalParse: /\d{1,2}\./,
   7935        ordinal: '%d.',
   7936        week: {
   7937            dow: 1, // Monday is the first day of the week.
   7938            doy: 4, // The week that contains Jan 4th is the first week of the year.
   7939        },
   7940    });
   7941
   7942    //! moment.js locale configuration
   7943
   7944    hooks.defineLocale('cv', {
   7945        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
   7946            '_'
   7947        ),
   7948        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
   7949        weekdays:
   7950            'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
   7951                '_'
   7952            ),
   7953        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
   7954        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
   7955        longDateFormat: {
   7956            LT: 'HH:mm',
   7957            LTS: 'HH:mm:ss',
   7958            L: 'DD-MM-YYYY',
   7959            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
   7960            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
   7961            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
   7962        },
   7963        calendar: {
   7964            sameDay: '[Паян] LT [сехетре]',
   7965            nextDay: '[Ыран] LT [сехетре]',
   7966            lastDay: '[Ӗнер] LT [сехетре]',
   7967            nextWeek: '[Ҫитес] dddd LT [сехетре]',
   7968            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
   7969            sameElse: 'L',
   7970        },
   7971        relativeTime: {
   7972            future: function (output) {
   7973                var affix = /сехет$/i.exec(output)
   7974                    ? 'рен'
   7975                    : /ҫул$/i.exec(output)
   7976                      ? 'тан'
   7977                      : 'ран';
   7978                return output + affix;
   7979            },
   7980            past: '%s каялла',
   7981            s: 'пӗр-ик ҫеккунт',
   7982            ss: '%d ҫеккунт',
   7983            m: 'пӗр минут',
   7984            mm: '%d минут',
   7985            h: 'пӗр сехет',
   7986            hh: '%d сехет',
   7987            d: 'пӗр кун',
   7988            dd: '%d кун',
   7989            M: 'пӗр уйӑх',
   7990            MM: '%d уйӑх',
   7991            y: 'пӗр ҫул',
   7992            yy: '%d ҫул',
   7993        },
   7994        dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
   7995        ordinal: '%d-мӗш',
   7996        week: {
   7997            dow: 1, // Monday is the first day of the week.
   7998            doy: 7, // The week that contains Jan 7th is the first week of the year.
   7999        },
   8000    });
   8001
   8002    //! moment.js locale configuration
   8003
   8004    hooks.defineLocale('cy', {
   8005        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
   8006            '_'
   8007        ),
   8008        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
   8009            '_'
   8010        ),
   8011        weekdays:
   8012            'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
   8013                '_'
   8014            ),
   8015        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
   8016        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
   8017        weekdaysParseExact: true,
   8018        // time formats are the same as en-gb
   8019        longDateFormat: {
   8020            LT: 'HH:mm',
   8021            LTS: 'HH:mm:ss',
   8022            L: 'DD/MM/YYYY',
   8023            LL: 'D MMMM YYYY',
   8024            LLL: 'D MMMM YYYY HH:mm',
   8025            LLLL: 'dddd, D MMMM YYYY HH:mm',
   8026        },
   8027        calendar: {
   8028            sameDay: '[Heddiw am] LT',
   8029            nextDay: '[Yfory am] LT',
   8030            nextWeek: 'dddd [am] LT',
   8031            lastDay: '[Ddoe am] LT',
   8032            lastWeek: 'dddd [diwethaf am] LT',
   8033            sameElse: 'L',
   8034        },
   8035        relativeTime: {
   8036            future: 'mewn %s',
   8037            past: '%s yn ôl',
   8038            s: 'ychydig eiliadau',
   8039            ss: '%d eiliad',
   8040            m: 'munud',
   8041            mm: '%d munud',
   8042            h: 'awr',
   8043            hh: '%d awr',
   8044            d: 'diwrnod',
   8045            dd: '%d diwrnod',
   8046            M: 'mis',
   8047            MM: '%d mis',
   8048            y: 'blwyddyn',
   8049            yy: '%d flynedd',
   8050        },
   8051        dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
   8052        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
   8053        ordinal: function (number) {
   8054            var b = number,
   8055                output = '',
   8056                lookup = [
   8057                    '',
   8058                    'af',
   8059                    'il',
   8060                    'ydd',
   8061                    'ydd',
   8062                    'ed',
   8063                    'ed',
   8064                    'ed',
   8065                    'fed',
   8066                    'fed',
   8067                    'fed', // 1af to 10fed
   8068                    'eg',
   8069                    'fed',
   8070                    'eg',
   8071                    'eg',
   8072                    'fed',
   8073                    'eg',
   8074                    'eg',
   8075                    'fed',
   8076                    'eg',
   8077                    'fed', // 11eg to 20fed
   8078                ];
   8079            if (b > 20) {
   8080                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
   8081                    output = 'fed'; // not 30ain, 70ain or 90ain
   8082                } else {
   8083                    output = 'ain';
   8084                }
   8085            } else if (b > 0) {
   8086                output = lookup[b];
   8087            }
   8088            return number + output;
   8089        },
   8090        week: {
   8091            dow: 1, // Monday is the first day of the week.
   8092            doy: 4, // The week that contains Jan 4th is the first week of the year.
   8093        },
   8094    });
   8095
   8096    //! moment.js locale configuration
   8097
   8098    hooks.defineLocale('da', {
   8099        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
   8100            '_'
   8101        ),
   8102        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
   8103        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
   8104        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
   8105        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
   8106        longDateFormat: {
   8107            LT: 'HH:mm',
   8108            LTS: 'HH:mm:ss',
   8109            L: 'DD.MM.YYYY',
   8110            LL: 'D. MMMM YYYY',
   8111            LLL: 'D. MMMM YYYY HH:mm',
   8112            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
   8113        },
   8114        calendar: {
   8115            sameDay: '[i dag kl.] LT',
   8116            nextDay: '[i morgen kl.] LT',
   8117            nextWeek: 'på dddd [kl.] LT',
   8118            lastDay: '[i går kl.] LT',
   8119            lastWeek: '[i] dddd[s kl.] LT',
   8120            sameElse: 'L',
   8121        },
   8122        relativeTime: {
   8123            future: 'om %s',
   8124            past: '%s siden',
   8125            s: 'få sekunder',
   8126            ss: '%d sekunder',
   8127            m: 'et minut',
   8128            mm: '%d minutter',
   8129            h: 'en time',
   8130            hh: '%d timer',
   8131            d: 'en dag',
   8132            dd: '%d dage',
   8133            M: 'en måned',
   8134            MM: '%d måneder',
   8135            y: 'et år',
   8136            yy: '%d år',
   8137        },
   8138        dayOfMonthOrdinalParse: /\d{1,2}\./,
   8139        ordinal: '%d.',
   8140        week: {
   8141            dow: 1, // Monday is the first day of the week.
   8142            doy: 4, // The week that contains Jan 4th is the first week of the year.
   8143        },
   8144    });
   8145
   8146    //! moment.js locale configuration
   8147
   8148    function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
   8149        var format = {
   8150            m: ['eine Minute', 'einer Minute'],
   8151            h: ['eine Stunde', 'einer Stunde'],
   8152            d: ['ein Tag', 'einem Tag'],
   8153            dd: [number + ' Tage', number + ' Tagen'],
   8154            w: ['eine Woche', 'einer Woche'],
   8155            M: ['ein Monat', 'einem Monat'],
   8156            MM: [number + ' Monate', number + ' Monaten'],
   8157            y: ['ein Jahr', 'einem Jahr'],
   8158            yy: [number + ' Jahre', number + ' Jahren'],
   8159        };
   8160        return withoutSuffix ? format[key][0] : format[key][1];
   8161    }
   8162
   8163    hooks.defineLocale('de-at', {
   8164        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
   8165            '_'
   8166        ),
   8167        monthsShort:
   8168            'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
   8169        monthsParseExact: true,
   8170        weekdays:
   8171            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
   8172                '_'
   8173            ),
   8174        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
   8175        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
   8176        weekdaysParseExact: true,
   8177        longDateFormat: {
   8178            LT: 'HH:mm',
   8179            LTS: 'HH:mm:ss',
   8180            L: 'DD.MM.YYYY',
   8181            LL: 'D. MMMM YYYY',
   8182            LLL: 'D. MMMM YYYY HH:mm',
   8183            LLLL: 'dddd, D. MMMM YYYY HH:mm',
   8184        },
   8185        calendar: {
   8186            sameDay: '[heute um] LT [Uhr]',
   8187            sameElse: 'L',
   8188            nextDay: '[morgen um] LT [Uhr]',
   8189            nextWeek: 'dddd [um] LT [Uhr]',
   8190            lastDay: '[gestern um] LT [Uhr]',
   8191            lastWeek: '[letzten] dddd [um] LT [Uhr]',
   8192        },
   8193        relativeTime: {
   8194            future: 'in %s',
   8195            past: 'vor %s',
   8196            s: 'ein paar Sekunden',
   8197            ss: '%d Sekunden',
   8198            m: processRelativeTime$1,
   8199            mm: '%d Minuten',
   8200            h: processRelativeTime$1,
   8201            hh: '%d Stunden',
   8202            d: processRelativeTime$1,
   8203            dd: processRelativeTime$1,
   8204            w: processRelativeTime$1,
   8205            ww: '%d Wochen',
   8206            M: processRelativeTime$1,
   8207            MM: processRelativeTime$1,
   8208            y: processRelativeTime$1,
   8209            yy: processRelativeTime$1,
   8210        },
   8211        dayOfMonthOrdinalParse: /\d{1,2}\./,
   8212        ordinal: '%d.',
   8213        week: {
   8214            dow: 1, // Monday is the first day of the week.
   8215            doy: 4, // The week that contains Jan 4th is the first week of the year.
   8216        },
   8217    });
   8218
   8219    //! moment.js locale configuration
   8220
   8221    function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
   8222        var format = {
   8223            m: ['eine Minute', 'einer Minute'],
   8224            h: ['eine Stunde', 'einer Stunde'],
   8225            d: ['ein Tag', 'einem Tag'],
   8226            dd: [number + ' Tage', number + ' Tagen'],
   8227            w: ['eine Woche', 'einer Woche'],
   8228            M: ['ein Monat', 'einem Monat'],
   8229            MM: [number + ' Monate', number + ' Monaten'],
   8230            y: ['ein Jahr', 'einem Jahr'],
   8231            yy: [number + ' Jahre', number + ' Jahren'],
   8232        };
   8233        return withoutSuffix ? format[key][0] : format[key][1];
   8234    }
   8235
   8236    hooks.defineLocale('de-ch', {
   8237        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
   8238            '_'
   8239        ),
   8240        monthsShort:
   8241            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
   8242        monthsParseExact: true,
   8243        weekdays:
   8244            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
   8245                '_'
   8246            ),
   8247        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
   8248        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
   8249        weekdaysParseExact: true,
   8250        longDateFormat: {
   8251            LT: 'HH:mm',
   8252            LTS: 'HH:mm:ss',
   8253            L: 'DD.MM.YYYY',
   8254            LL: 'D. MMMM YYYY',
   8255            LLL: 'D. MMMM YYYY HH:mm',
   8256            LLLL: 'dddd, D. MMMM YYYY HH:mm',
   8257        },
   8258        calendar: {
   8259            sameDay: '[heute um] LT [Uhr]',
   8260            sameElse: 'L',
   8261            nextDay: '[morgen um] LT [Uhr]',
   8262            nextWeek: 'dddd [um] LT [Uhr]',
   8263            lastDay: '[gestern um] LT [Uhr]',
   8264            lastWeek: '[letzten] dddd [um] LT [Uhr]',
   8265        },
   8266        relativeTime: {
   8267            future: 'in %s',
   8268            past: 'vor %s',
   8269            s: 'ein paar Sekunden',
   8270            ss: '%d Sekunden',
   8271            m: processRelativeTime$2,
   8272            mm: '%d Minuten',
   8273            h: processRelativeTime$2,
   8274            hh: '%d Stunden',
   8275            d: processRelativeTime$2,
   8276            dd: processRelativeTime$2,
   8277            w: processRelativeTime$2,
   8278            ww: '%d Wochen',
   8279            M: processRelativeTime$2,
   8280            MM: processRelativeTime$2,
   8281            y: processRelativeTime$2,
   8282            yy: processRelativeTime$2,
   8283        },
   8284        dayOfMonthOrdinalParse: /\d{1,2}\./,
   8285        ordinal: '%d.',
   8286        week: {
   8287            dow: 1, // Monday is the first day of the week.
   8288            doy: 4, // The week that contains Jan 4th is the first week of the year.
   8289        },
   8290    });
   8291
   8292    //! moment.js locale configuration
   8293
   8294    function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
   8295        var format = {
   8296            m: ['eine Minute', 'einer Minute'],
   8297            h: ['eine Stunde', 'einer Stunde'],
   8298            d: ['ein Tag', 'einem Tag'],
   8299            dd: [number + ' Tage', number + ' Tagen'],
   8300            w: ['eine Woche', 'einer Woche'],
   8301            M: ['ein Monat', 'einem Monat'],
   8302            MM: [number + ' Monate', number + ' Monaten'],
   8303            y: ['ein Jahr', 'einem Jahr'],
   8304            yy: [number + ' Jahre', number + ' Jahren'],
   8305        };
   8306        return withoutSuffix ? format[key][0] : format[key][1];
   8307    }
   8308
   8309    hooks.defineLocale('de', {
   8310        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
   8311            '_'
   8312        ),
   8313        monthsShort:
   8314            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
   8315        monthsParseExact: true,
   8316        weekdays:
   8317            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
   8318                '_'
   8319            ),
   8320        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
   8321        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
   8322        weekdaysParseExact: true,
   8323        longDateFormat: {
   8324            LT: 'HH:mm',
   8325            LTS: 'HH:mm:ss',
   8326            L: 'DD.MM.YYYY',
   8327            LL: 'D. MMMM YYYY',
   8328            LLL: 'D. MMMM YYYY HH:mm',
   8329            LLLL: 'dddd, D. MMMM YYYY HH:mm',
   8330        },
   8331        calendar: {
   8332            sameDay: '[heute um] LT [Uhr]',
   8333            sameElse: 'L',
   8334            nextDay: '[morgen um] LT [Uhr]',
   8335            nextWeek: 'dddd [um] LT [Uhr]',
   8336            lastDay: '[gestern um] LT [Uhr]',
   8337            lastWeek: '[letzten] dddd [um] LT [Uhr]',
   8338        },
   8339        relativeTime: {
   8340            future: 'in %s',
   8341            past: 'vor %s',
   8342            s: 'ein paar Sekunden',
   8343            ss: '%d Sekunden',
   8344            m: processRelativeTime$3,
   8345            mm: '%d Minuten',
   8346            h: processRelativeTime$3,
   8347            hh: '%d Stunden',
   8348            d: processRelativeTime$3,
   8349            dd: processRelativeTime$3,
   8350            w: processRelativeTime$3,
   8351            ww: '%d Wochen',
   8352            M: processRelativeTime$3,
   8353            MM: processRelativeTime$3,
   8354            y: processRelativeTime$3,
   8355            yy: processRelativeTime$3,
   8356        },
   8357        dayOfMonthOrdinalParse: /\d{1,2}\./,
   8358        ordinal: '%d.',
   8359        week: {
   8360            dow: 1, // Monday is the first day of the week.
   8361            doy: 4, // The week that contains Jan 4th is the first week of the year.
   8362        },
   8363    });
   8364
   8365    //! moment.js locale configuration
   8366
   8367    var months$5 = [
   8368            'ޖެނުއަރީ',
   8369            'ފެބްރުއަރީ',
   8370            'މާރިޗު',
   8371            'އޭޕްރީލު',
   8372            'މޭ',
   8373            'ޖޫން',
   8374            'ޖުލައި',
   8375            'އޯގަސްޓު',
   8376            'ސެޕްޓެމްބަރު',
   8377            'އޮކްޓޯބަރު',
   8378            'ނޮވެމްބަރު',
   8379            'ޑިސެމްބަރު',
   8380        ],
   8381        weekdays = [
   8382            'އާދިއްތަ',
   8383            'ހޯމަ',
   8384            'އަންގާރަ',
   8385            'ބުދަ',
   8386            'ބުރާސްފަތި',
   8387            'ހުކުރު',
   8388            'ހޮނިހިރު',
   8389        ];
   8390
   8391    hooks.defineLocale('dv', {
   8392        months: months$5,
   8393        monthsShort: months$5,
   8394        weekdays: weekdays,
   8395        weekdaysShort: weekdays,
   8396        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
   8397        longDateFormat: {
   8398            LT: 'HH:mm',
   8399            LTS: 'HH:mm:ss',
   8400            L: 'D/M/YYYY',
   8401            LL: 'D MMMM YYYY',
   8402            LLL: 'D MMMM YYYY HH:mm',
   8403            LLLL: 'dddd D MMMM YYYY HH:mm',
   8404        },
   8405        meridiemParse: /މކ|މފ/,
   8406        isPM: function (input) {
   8407            return 'މފ' === input;
   8408        },
   8409        meridiem: function (hour, minute, isLower) {
   8410            if (hour < 12) {
   8411                return 'މކ';
   8412            } else {
   8413                return 'މފ';
   8414            }
   8415        },
   8416        calendar: {
   8417            sameDay: '[މިއަދު] LT',
   8418            nextDay: '[މާދަމާ] LT',
   8419            nextWeek: 'dddd LT',
   8420            lastDay: '[އިއްޔެ] LT',
   8421            lastWeek: '[ފާއިތުވި] dddd LT',
   8422            sameElse: 'L',
   8423        },
   8424        relativeTime: {
   8425            future: 'ތެރޭގައި %s',
   8426            past: 'ކުރިން %s',
   8427            s: 'ސިކުންތުކޮޅެއް',
   8428            ss: 'd% ސިކުންތު',
   8429            m: 'މިނިޓެއް',
   8430            mm: 'މިނިޓު %d',
   8431            h: 'ގަޑިއިރެއް',
   8432            hh: 'ގަޑިއިރު %d',
   8433            d: 'ދުވަހެއް',
   8434            dd: 'ދުވަސް %d',
   8435            M: 'މަހެއް',
   8436            MM: 'މަސް %d',
   8437            y: 'އަހަރެއް',
   8438            yy: 'އަހަރު %d',
   8439        },
   8440        preparse: function (string) {
   8441            return string.replace(/،/g, ',');
   8442        },
   8443        postformat: function (string) {
   8444            return string.replace(/,/g, '،');
   8445        },
   8446        week: {
   8447            dow: 7, // Sunday is the first day of the week.
   8448            doy: 12, // The week that contains Jan 12th is the first week of the year.
   8449        },
   8450    });
   8451
   8452    //! moment.js locale configuration
   8453
   8454    function isFunction$1(input) {
   8455        return (
   8456            (typeof Function !== 'undefined' && input instanceof Function) ||
   8457            Object.prototype.toString.call(input) === '[object Function]'
   8458        );
   8459    }
   8460
   8461    hooks.defineLocale('el', {
   8462        monthsNominativeEl:
   8463            'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
   8464                '_'
   8465            ),
   8466        monthsGenitiveEl:
   8467            'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
   8468                '_'
   8469            ),
   8470        months: function (momentToFormat, format) {
   8471            if (!momentToFormat) {
   8472                return this._monthsNominativeEl;
   8473            } else if (
   8474                typeof format === 'string' &&
   8475                /D/.test(format.substring(0, format.indexOf('MMMM')))
   8476            ) {
   8477                // if there is a day number before 'MMMM'
   8478                return this._monthsGenitiveEl[momentToFormat.month()];
   8479            } else {
   8480                return this._monthsNominativeEl[momentToFormat.month()];
   8481            }
   8482        },
   8483        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
   8484        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
   8485            '_'
   8486        ),
   8487        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
   8488        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
   8489        meridiem: function (hours, minutes, isLower) {
   8490            if (hours > 11) {
   8491                return isLower ? 'μμ' : 'ΜΜ';
   8492            } else {
   8493                return isLower ? 'πμ' : 'ΠΜ';
   8494            }
   8495        },
   8496        isPM: function (input) {
   8497            return (input + '').toLowerCase()[0] === 'μ';
   8498        },
   8499        meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
   8500        longDateFormat: {
   8501            LT: 'h:mm A',
   8502            LTS: 'h:mm:ss A',
   8503            L: 'DD/MM/YYYY',
   8504            LL: 'D MMMM YYYY',
   8505            LLL: 'D MMMM YYYY h:mm A',
   8506            LLLL: 'dddd, D MMMM YYYY h:mm A',
   8507        },
   8508        calendarEl: {
   8509            sameDay: '[Σήμερα {}] LT',
   8510            nextDay: '[Αύριο {}] LT',
   8511            nextWeek: 'dddd [{}] LT',
   8512            lastDay: '[Χθες {}] LT',
   8513            lastWeek: function () {
   8514                switch (this.day()) {
   8515                    case 6:
   8516                        return '[το προηγούμενο] dddd [{}] LT';
   8517                    default:
   8518                        return '[την προηγούμενη] dddd [{}] LT';
   8519                }
   8520            },
   8521            sameElse: 'L',
   8522        },
   8523        calendar: function (key, mom) {
   8524            var output = this._calendarEl[key],
   8525                hours = mom && mom.hours();
   8526            if (isFunction$1(output)) {
   8527                output = output.apply(mom);
   8528            }
   8529            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
   8530        },
   8531        relativeTime: {
   8532            future: 'σε %s',
   8533            past: '%s πριν',
   8534            s: 'λίγα δευτερόλεπτα',
   8535            ss: '%d δευτερόλεπτα',
   8536            m: 'ένα λεπτό',
   8537            mm: '%d λεπτά',
   8538            h: 'μία ώρα',
   8539            hh: '%d ώρες',
   8540            d: 'μία μέρα',
   8541            dd: '%d μέρες',
   8542            M: 'ένας μήνας',
   8543            MM: '%d μήνες',
   8544            y: 'ένας χρόνος',
   8545            yy: '%d χρόνια',
   8546        },
   8547        dayOfMonthOrdinalParse: /\d{1,2}η/,
   8548        ordinal: '%dη',
   8549        week: {
   8550            dow: 1, // Monday is the first day of the week.
   8551            doy: 4, // The week that contains Jan 4st is the first week of the year.
   8552        },
   8553    });
   8554
   8555    //! moment.js locale configuration
   8556
   8557    hooks.defineLocale('en-au', {
   8558        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
   8559            '_'
   8560        ),
   8561        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
   8562        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
   8563            '_'
   8564        ),
   8565        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
   8566        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
   8567        longDateFormat: {
   8568            LT: 'h:mm A',
   8569            LTS: 'h:mm:ss A',
   8570            L: 'DD/MM/YYYY',
   8571            LL: 'D MMMM YYYY',
   8572            LLL: 'D MMMM YYYY h:mm A',
   8573            LLLL: 'dddd, D MMMM YYYY h:mm A',
   8574        },
   8575        calendar: {
   8576            sameDay: '[Today at] LT',
   8577            nextDay: '[Tomorrow at] LT',
   8578            nextWeek: 'dddd [at] LT',
   8579            lastDay: '[Yesterday at] LT',
   8580            lastWeek: '[Last] dddd [at] LT',
   8581            sameElse: 'L',
   8582        },
   8583        relativeTime: {
   8584            future: 'in %s',
   8585            past: '%s ago',
   8586            s: 'a few seconds',
   8587            ss: '%d seconds',
   8588            m: 'a minute',
   8589            mm: '%d minutes',
   8590            h: 'an hour',
   8591            hh: '%d hours',
   8592            d: 'a day',
   8593            dd: '%d days',
   8594            M: 'a month',
   8595            MM: '%d months',
   8596            y: 'a year',
   8597            yy: '%d years',
   8598        },
   8599        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
   8600        ordinal: function (number) {
   8601            var b = number % 10,
   8602                output =
   8603                    ~~((number % 100) / 10) === 1
   8604                        ? 'th'
   8605                        : b === 1
   8606                          ? 'st'
   8607                          : b === 2
   8608                            ? 'nd'
   8609                            : b === 3
   8610                              ? 'rd'
   8611                              : 'th';
   8612            return number + output;
   8613        },
   8614        week: {
   8615            dow: 0, // Sunday is the first day of the week.
   8616            doy: 4, // The week that contains Jan 4th is the first week of the year.
   8617        },
   8618    });
   8619
   8620    //! moment.js locale configuration
   8621
   8622    hooks.defineLocale('en-ca', {
   8623        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
   8624            '_'
   8625        ),
   8626        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
   8627        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
   8628            '_'
   8629        ),
   8630        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
   8631        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
   8632        longDateFormat: {
   8633            LT: 'h:mm A',
   8634            LTS: 'h:mm:ss A',
   8635            L: 'YYYY-MM-DD',
   8636            LL: 'MMMM D, YYYY',
   8637            LLL: 'MMMM D, YYYY h:mm A',
   8638            LLLL: 'dddd, MMMM D, YYYY h:mm A',
   8639        },
   8640        calendar: {
   8641            sameDay: '[Today at] LT',
   8642            nextDay: '[Tomorrow at] LT',
   8643            nextWeek: 'dddd [at] LT',
   8644            lastDay: '[Yesterday at] LT',
   8645            lastWeek: '[Last] dddd [at] LT',
   8646            sameElse: 'L',
   8647        },
   8648        relativeTime: {
   8649            future: 'in %s',
   8650            past: '%s ago',
   8651            s: 'a few seconds',
   8652            ss: '%d seconds',
   8653            m: 'a minute',
   8654            mm: '%d minutes',
   8655            h: 'an hour',
   8656            hh: '%d hours',
   8657            d: 'a day',
   8658            dd: '%d days',
   8659            M: 'a month',
   8660            MM: '%d months',
   8661            y: 'a year',
   8662            yy: '%d years',
   8663        },
   8664        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
   8665        ordinal: function (number) {
   8666            var b = number % 10,
   8667                output =
   8668                    ~~((number % 100) / 10) === 1
   8669                        ? 'th'
   8670                        : b === 1
   8671                          ? 'st'
   8672                          : b === 2
   8673                            ? 'nd'
   8674                            : b === 3
   8675                              ? 'rd'
   8676                              : 'th';
   8677            return number + output;
   8678        },
   8679    });
   8680
   8681    //! moment.js locale configuration
   8682
   8683    hooks.defineLocale('en-gb', {
   8684        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
   8685            '_'
   8686        ),
   8687        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
   8688        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
   8689            '_'
   8690        ),
   8691        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
   8692        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
   8693        longDateFormat: {
   8694            LT: 'HH:mm',
   8695            LTS: 'HH:mm:ss',
   8696            L: 'DD/MM/YYYY',
   8697            LL: 'D MMMM YYYY',
   8698            LLL: 'D MMMM YYYY HH:mm',
   8699            LLLL: 'dddd, D MMMM YYYY HH:mm',
   8700        },
   8701        calendar: {
   8702            sameDay: '[Today at] LT',
   8703            nextDay: '[Tomorrow at] LT',
   8704            nextWeek: 'dddd [at] LT',
   8705            lastDay: '[Yesterday at] LT',
   8706            lastWeek: '[Last] dddd [at] LT',
   8707            sameElse: 'L',
   8708        },
   8709        relativeTime: {
   8710            future: 'in %s',
   8711            past: '%s ago',
   8712            s: 'a few seconds',
   8713            ss: '%d seconds',
   8714            m: 'a minute',
   8715            mm: '%d minutes',
   8716            h: 'an hour',
   8717            hh: '%d hours',
   8718            d: 'a day',
   8719            dd: '%d days',
   8720            M: 'a month',
   8721            MM: '%d months',
   8722            y: 'a year',
   8723            yy: '%d years',
   8724        },
   8725        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
   8726        ordinal: function (number) {
   8727            var b = number % 10,
   8728                output =
   8729                    ~~((number % 100) / 10) === 1
   8730                        ? 'th'
   8731                        : b === 1
   8732                          ? 'st'
   8733                          : b === 2
   8734                            ? 'nd'
   8735                            : b === 3
   8736                              ? 'rd'
   8737                              : 'th';
   8738            return number + output;
   8739        },
   8740        week: {
   8741            dow: 1, // Monday is the first day of the week.
   8742            doy: 4, // The week that contains Jan 4th is the first week of the year.
   8743        },
   8744    });
   8745
   8746    //! moment.js locale configuration
   8747
   8748    hooks.defineLocale('en-ie', {
   8749        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
   8750            '_'
   8751        ),
   8752        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
   8753        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
   8754            '_'
   8755        ),
   8756        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
   8757        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
   8758        longDateFormat: {
   8759            LT: 'HH:mm',
   8760            LTS: 'HH:mm:ss',
   8761            L: 'DD/MM/YYYY',
   8762            LL: 'D MMMM YYYY',
   8763            LLL: 'D MMMM YYYY HH:mm',
   8764            LLLL: 'dddd D MMMM YYYY HH:mm',
   8765        },
   8766        calendar: {
   8767            sameDay: '[Today at] LT',
   8768            nextDay: '[Tomorrow at] LT',
   8769            nextWeek: 'dddd [at] LT',
   8770            lastDay: '[Yesterday at] LT',
   8771            lastWeek: '[Last] dddd [at] LT',
   8772            sameElse: 'L',
   8773        },
   8774        relativeTime: {
   8775            future: 'in %s',
   8776            past: '%s ago',
   8777            s: 'a few seconds',
   8778            ss: '%d seconds',
   8779            m: 'a minute',
   8780            mm: '%d minutes',
   8781            h: 'an hour',
   8782            hh: '%d hours',
   8783            d: 'a day',
   8784            dd: '%d days',
   8785            M: 'a month',
   8786            MM: '%d months',
   8787            y: 'a year',
   8788            yy: '%d years',
   8789        },
   8790        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
   8791        ordinal: function (number) {
   8792            var b = number % 10,
   8793                output =
   8794                    ~~((number % 100) / 10) === 1
   8795                        ? 'th'
   8796                        : b === 1
   8797                          ? 'st'
   8798                          : b === 2
   8799                            ? 'nd'
   8800                            : b === 3
   8801                              ? 'rd'
   8802                              : 'th';
   8803            return number + output;
   8804        },
   8805        week: {
   8806            dow: 1, // Monday is the first day of the week.
   8807            doy: 4, // The week that contains Jan 4th is the first week of the year.
   8808        },
   8809    });
   8810
   8811    //! moment.js locale configuration
   8812
   8813    hooks.defineLocale('en-il', {
   8814        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
   8815            '_'
   8816        ),
   8817        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
   8818        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
   8819            '_'
   8820        ),
   8821        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
   8822        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
   8823        longDateFormat: {
   8824            LT: 'HH:mm',
   8825            LTS: 'HH:mm:ss',
   8826            L: 'DD/MM/YYYY',
   8827            LL: 'D MMMM YYYY',
   8828            LLL: 'D MMMM YYYY HH:mm',
   8829            LLLL: 'dddd, D MMMM YYYY HH:mm',
   8830        },
   8831        calendar: {
   8832            sameDay: '[Today at] LT',
   8833            nextDay: '[Tomorrow at] LT',
   8834            nextWeek: 'dddd [at] LT',
   8835            lastDay: '[Yesterday at] LT',
   8836            lastWeek: '[Last] dddd [at] LT',
   8837            sameElse: 'L',
   8838        },
   8839        relativeTime: {
   8840            future: 'in %s',
   8841            past: '%s ago',
   8842            s: 'a few seconds',
   8843            ss: '%d seconds',
   8844            m: 'a minute',
   8845            mm: '%d minutes',
   8846            h: 'an hour',
   8847            hh: '%d hours',
   8848            d: 'a day',
   8849            dd: '%d days',
   8850            M: 'a month',
   8851            MM: '%d months',
   8852            y: 'a year',
   8853            yy: '%d years',
   8854        },
   8855        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
   8856        ordinal: function (number) {
   8857            var b = number % 10,
   8858                output =
   8859                    ~~((number % 100) / 10) === 1
   8860                        ? 'th'
   8861                        : b === 1
   8862                          ? 'st'
   8863                          : b === 2
   8864                            ? 'nd'
   8865                            : b === 3
   8866                              ? 'rd'
   8867                              : 'th';
   8868            return number + output;
   8869        },
   8870    });
   8871
   8872    //! moment.js locale configuration
   8873
   8874    hooks.defineLocale('en-in', {
   8875        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
   8876            '_'
   8877        ),
   8878        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
   8879        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
   8880            '_'
   8881        ),
   8882        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
   8883        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
   8884        longDateFormat: {
   8885            LT: 'h:mm A',
   8886            LTS: 'h:mm:ss A',
   8887            L: 'DD/MM/YYYY',
   8888            LL: 'D MMMM YYYY',
   8889            LLL: 'D MMMM YYYY h:mm A',
   8890            LLLL: 'dddd, D MMMM YYYY h:mm A',
   8891        },
   8892        calendar: {
   8893            sameDay: '[Today at] LT',
   8894            nextDay: '[Tomorrow at] LT',
   8895            nextWeek: 'dddd [at] LT',
   8896            lastDay: '[Yesterday at] LT',
   8897            lastWeek: '[Last] dddd [at] LT',
   8898            sameElse: 'L',
   8899        },
   8900        relativeTime: {
   8901            future: 'in %s',
   8902            past: '%s ago',
   8903            s: 'a few seconds',
   8904            ss: '%d seconds',
   8905            m: 'a minute',
   8906            mm: '%d minutes',
   8907            h: 'an hour',
   8908            hh: '%d hours',
   8909            d: 'a day',
   8910            dd: '%d days',
   8911            M: 'a month',
   8912            MM: '%d months',
   8913            y: 'a year',
   8914            yy: '%d years',
   8915        },
   8916        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
   8917        ordinal: function (number) {
   8918            var b = number % 10,
   8919                output =
   8920                    ~~((number % 100) / 10) === 1
   8921                        ? 'th'
   8922                        : b === 1
   8923                          ? 'st'
   8924                          : b === 2
   8925                            ? 'nd'
   8926                            : b === 3
   8927                              ? 'rd'
   8928                              : 'th';
   8929            return number + output;
   8930        },
   8931        week: {
   8932            dow: 0, // Sunday is the first day of the week.
   8933            doy: 6, // The week that contains Jan 1st is the first week of the year.
   8934        },
   8935    });
   8936
   8937    //! moment.js locale configuration
   8938
   8939    hooks.defineLocale('en-nz', {
   8940        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
   8941            '_'
   8942        ),
   8943        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
   8944        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
   8945            '_'
   8946        ),
   8947        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
   8948        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
   8949        longDateFormat: {
   8950            LT: 'h:mm A',
   8951            LTS: 'h:mm:ss A',
   8952            L: 'DD/MM/YYYY',
   8953            LL: 'D MMMM YYYY',
   8954            LLL: 'D MMMM YYYY h:mm A',
   8955            LLLL: 'dddd, D MMMM YYYY h:mm A',
   8956        },
   8957        calendar: {
   8958            sameDay: '[Today at] LT',
   8959            nextDay: '[Tomorrow at] LT',
   8960            nextWeek: 'dddd [at] LT',
   8961            lastDay: '[Yesterday at] LT',
   8962            lastWeek: '[Last] dddd [at] LT',
   8963            sameElse: 'L',
   8964        },
   8965        relativeTime: {
   8966            future: 'in %s',
   8967            past: '%s ago',
   8968            s: 'a few seconds',
   8969            ss: '%d seconds',
   8970            m: 'a minute',
   8971            mm: '%d minutes',
   8972            h: 'an hour',
   8973            hh: '%d hours',
   8974            d: 'a day',
   8975            dd: '%d days',
   8976            M: 'a month',
   8977            MM: '%d months',
   8978            y: 'a year',
   8979            yy: '%d years',
   8980        },
   8981        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
   8982        ordinal: function (number) {
   8983            var b = number % 10,
   8984                output =
   8985                    ~~((number % 100) / 10) === 1
   8986                        ? 'th'
   8987                        : b === 1
   8988                          ? 'st'
   8989                          : b === 2
   8990                            ? 'nd'
   8991                            : b === 3
   8992                              ? 'rd'
   8993                              : 'th';
   8994            return number + output;
   8995        },
   8996        week: {
   8997            dow: 1, // Monday is the first day of the week.
   8998            doy: 4, // The week that contains Jan 4th is the first week of the year.
   8999        },
   9000    });
   9001
   9002    //! moment.js locale configuration
   9003
   9004    hooks.defineLocale('en-sg', {
   9005        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
   9006            '_'
   9007        ),
   9008        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
   9009        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
   9010            '_'
   9011        ),
   9012        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
   9013        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
   9014        longDateFormat: {
   9015            LT: 'HH:mm',
   9016            LTS: 'HH:mm:ss',
   9017            L: 'DD/MM/YYYY',
   9018            LL: 'D MMMM YYYY',
   9019            LLL: 'D MMMM YYYY HH:mm',
   9020            LLLL: 'dddd, D MMMM YYYY HH:mm',
   9021        },
   9022        calendar: {
   9023            sameDay: '[Today at] LT',
   9024            nextDay: '[Tomorrow at] LT',
   9025            nextWeek: 'dddd [at] LT',
   9026            lastDay: '[Yesterday at] LT',
   9027            lastWeek: '[Last] dddd [at] LT',
   9028            sameElse: 'L',
   9029        },
   9030        relativeTime: {
   9031            future: 'in %s',
   9032            past: '%s ago',
   9033            s: 'a few seconds',
   9034            ss: '%d seconds',
   9035            m: 'a minute',
   9036            mm: '%d minutes',
   9037            h: 'an hour',
   9038            hh: '%d hours',
   9039            d: 'a day',
   9040            dd: '%d days',
   9041            M: 'a month',
   9042            MM: '%d months',
   9043            y: 'a year',
   9044            yy: '%d years',
   9045        },
   9046        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
   9047        ordinal: function (number) {
   9048            var b = number % 10,
   9049                output =
   9050                    ~~((number % 100) / 10) === 1
   9051                        ? 'th'
   9052                        : b === 1
   9053                          ? 'st'
   9054                          : b === 2
   9055                            ? 'nd'
   9056                            : b === 3
   9057                              ? 'rd'
   9058                              : 'th';
   9059            return number + output;
   9060        },
   9061        week: {
   9062            dow: 1, // Monday is the first day of the week.
   9063            doy: 4, // The week that contains Jan 4th is the first week of the year.
   9064        },
   9065    });
   9066
   9067    //! moment.js locale configuration
   9068
   9069    hooks.defineLocale('eo', {
   9070        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(
   9071            '_'
   9072        ),
   9073        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),
   9074        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
   9075        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
   9076        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
   9077        longDateFormat: {
   9078            LT: 'HH:mm',
   9079            LTS: 'HH:mm:ss',
   9080            L: 'YYYY-MM-DD',
   9081            LL: '[la] D[-an de] MMMM, YYYY',
   9082            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
   9083            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
   9084            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
   9085        },
   9086        meridiemParse: /[ap]\.t\.m/i,
   9087        isPM: function (input) {
   9088            return input.charAt(0).toLowerCase() === 'p';
   9089        },
   9090        meridiem: function (hours, minutes, isLower) {
   9091            if (hours > 11) {
   9092                return isLower ? 'p.t.m.' : 'P.T.M.';
   9093            } else {
   9094                return isLower ? 'a.t.m.' : 'A.T.M.';
   9095            }
   9096        },
   9097        calendar: {
   9098            sameDay: '[Hodiaŭ je] LT',
   9099            nextDay: '[Morgaŭ je] LT',
   9100            nextWeek: 'dddd[n je] LT',
   9101            lastDay: '[Hieraŭ je] LT',
   9102            lastWeek: '[pasintan] dddd[n je] LT',
   9103            sameElse: 'L',
   9104        },
   9105        relativeTime: {
   9106            future: 'post %s',
   9107            past: 'antaŭ %s',
   9108            s: 'kelkaj sekundoj',
   9109            ss: '%d sekundoj',
   9110            m: 'unu minuto',
   9111            mm: '%d minutoj',
   9112            h: 'unu horo',
   9113            hh: '%d horoj',
   9114            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
   9115            dd: '%d tagoj',
   9116            M: 'unu monato',
   9117            MM: '%d monatoj',
   9118            y: 'unu jaro',
   9119            yy: '%d jaroj',
   9120        },
   9121        dayOfMonthOrdinalParse: /\d{1,2}a/,
   9122        ordinal: '%da',
   9123        week: {
   9124            dow: 1, // Monday is the first day of the week.
   9125            doy: 7, // The week that contains Jan 7th is the first week of the year.
   9126        },
   9127    });
   9128
   9129    //! moment.js locale configuration
   9130
   9131    var monthsShortDot =
   9132            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
   9133                '_'
   9134            ),
   9135        monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
   9136        monthsParse$2 = [
   9137            /^ene/i,
   9138            /^feb/i,
   9139            /^mar/i,
   9140            /^abr/i,
   9141            /^may/i,
   9142            /^jun/i,
   9143            /^jul/i,
   9144            /^ago/i,
   9145            /^sep/i,
   9146            /^oct/i,
   9147            /^nov/i,
   9148            /^dic/i,
   9149        ],
   9150        monthsRegex$3 =
   9151            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
   9152
   9153    hooks.defineLocale('es-do', {
   9154        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
   9155            '_'
   9156        ),
   9157        monthsShort: function (m, format) {
   9158            if (!m) {
   9159                return monthsShortDot;
   9160            } else if (/-MMM-/.test(format)) {
   9161                return monthsShort$1[m.month()];
   9162            } else {
   9163                return monthsShortDot[m.month()];
   9164            }
   9165        },
   9166        monthsRegex: monthsRegex$3,
   9167        monthsShortRegex: monthsRegex$3,
   9168        monthsStrictRegex:
   9169            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
   9170        monthsShortStrictRegex:
   9171            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
   9172        monthsParse: monthsParse$2,
   9173        longMonthsParse: monthsParse$2,
   9174        shortMonthsParse: monthsParse$2,
   9175        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
   9176        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
   9177        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
   9178        weekdaysParseExact: true,
   9179        longDateFormat: {
   9180            LT: 'h:mm A',
   9181            LTS: 'h:mm:ss A',
   9182            L: 'DD/MM/YYYY',
   9183            LL: 'D [de] MMMM [de] YYYY',
   9184            LLL: 'D [de] MMMM [de] YYYY h:mm A',
   9185            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
   9186        },
   9187        calendar: {
   9188            sameDay: function () {
   9189                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9190            },
   9191            nextDay: function () {
   9192                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9193            },
   9194            nextWeek: function () {
   9195                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9196            },
   9197            lastDay: function () {
   9198                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9199            },
   9200            lastWeek: function () {
   9201                return (
   9202                    '[el] dddd [pasado a la' +
   9203                    (this.hours() !== 1 ? 's' : '') +
   9204                    '] LT'
   9205                );
   9206            },
   9207            sameElse: 'L',
   9208        },
   9209        relativeTime: {
   9210            future: 'en %s',
   9211            past: 'hace %s',
   9212            s: 'unos segundos',
   9213            ss: '%d segundos',
   9214            m: 'un minuto',
   9215            mm: '%d minutos',
   9216            h: 'una hora',
   9217            hh: '%d horas',
   9218            d: 'un día',
   9219            dd: '%d días',
   9220            w: 'una semana',
   9221            ww: '%d semanas',
   9222            M: 'un mes',
   9223            MM: '%d meses',
   9224            y: 'un año',
   9225            yy: '%d años',
   9226        },
   9227        dayOfMonthOrdinalParse: /\d{1,2}º/,
   9228        ordinal: '%dº',
   9229        week: {
   9230            dow: 1, // Monday is the first day of the week.
   9231            doy: 4, // The week that contains Jan 4th is the first week of the year.
   9232        },
   9233    });
   9234
   9235    //! moment.js locale configuration
   9236
   9237    var monthsShortDot$1 =
   9238            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
   9239                '_'
   9240            ),
   9241        monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
   9242        monthsParse$3 = [
   9243            /^ene/i,
   9244            /^feb/i,
   9245            /^mar/i,
   9246            /^abr/i,
   9247            /^may/i,
   9248            /^jun/i,
   9249            /^jul/i,
   9250            /^ago/i,
   9251            /^sep/i,
   9252            /^oct/i,
   9253            /^nov/i,
   9254            /^dic/i,
   9255        ],
   9256        monthsRegex$4 =
   9257            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
   9258
   9259    hooks.defineLocale('es-mx', {
   9260        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
   9261            '_'
   9262        ),
   9263        monthsShort: function (m, format) {
   9264            if (!m) {
   9265                return monthsShortDot$1;
   9266            } else if (/-MMM-/.test(format)) {
   9267                return monthsShort$2[m.month()];
   9268            } else {
   9269                return monthsShortDot$1[m.month()];
   9270            }
   9271        },
   9272        monthsRegex: monthsRegex$4,
   9273        monthsShortRegex: monthsRegex$4,
   9274        monthsStrictRegex:
   9275            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
   9276        monthsShortStrictRegex:
   9277            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
   9278        monthsParse: monthsParse$3,
   9279        longMonthsParse: monthsParse$3,
   9280        shortMonthsParse: monthsParse$3,
   9281        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
   9282        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
   9283        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
   9284        weekdaysParseExact: true,
   9285        longDateFormat: {
   9286            LT: 'H:mm',
   9287            LTS: 'H:mm:ss',
   9288            L: 'DD/MM/YYYY',
   9289            LL: 'D [de] MMMM [de] YYYY',
   9290            LLL: 'D [de] MMMM [de] YYYY H:mm',
   9291            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
   9292        },
   9293        calendar: {
   9294            sameDay: function () {
   9295                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9296            },
   9297            nextDay: function () {
   9298                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9299            },
   9300            nextWeek: function () {
   9301                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9302            },
   9303            lastDay: function () {
   9304                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9305            },
   9306            lastWeek: function () {
   9307                return (
   9308                    '[el] dddd [pasado a la' +
   9309                    (this.hours() !== 1 ? 's' : '') +
   9310                    '] LT'
   9311                );
   9312            },
   9313            sameElse: 'L',
   9314        },
   9315        relativeTime: {
   9316            future: 'en %s',
   9317            past: 'hace %s',
   9318            s: 'unos segundos',
   9319            ss: '%d segundos',
   9320            m: 'un minuto',
   9321            mm: '%d minutos',
   9322            h: 'una hora',
   9323            hh: '%d horas',
   9324            d: 'un día',
   9325            dd: '%d días',
   9326            w: 'una semana',
   9327            ww: '%d semanas',
   9328            M: 'un mes',
   9329            MM: '%d meses',
   9330            y: 'un año',
   9331            yy: '%d años',
   9332        },
   9333        dayOfMonthOrdinalParse: /\d{1,2}º/,
   9334        ordinal: '%dº',
   9335        week: {
   9336            dow: 0, // Sunday is the first day of the week.
   9337            doy: 4, // The week that contains Jan 4th is the first week of the year.
   9338        },
   9339        invalidDate: 'Fecha inválida',
   9340    });
   9341
   9342    //! moment.js locale configuration
   9343
   9344    var monthsShortDot$2 =
   9345            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
   9346                '_'
   9347            ),
   9348        monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
   9349        monthsParse$4 = [
   9350            /^ene/i,
   9351            /^feb/i,
   9352            /^mar/i,
   9353            /^abr/i,
   9354            /^may/i,
   9355            /^jun/i,
   9356            /^jul/i,
   9357            /^ago/i,
   9358            /^sep/i,
   9359            /^oct/i,
   9360            /^nov/i,
   9361            /^dic/i,
   9362        ],
   9363        monthsRegex$5 =
   9364            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
   9365
   9366    hooks.defineLocale('es-us', {
   9367        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
   9368            '_'
   9369        ),
   9370        monthsShort: function (m, format) {
   9371            if (!m) {
   9372                return monthsShortDot$2;
   9373            } else if (/-MMM-/.test(format)) {
   9374                return monthsShort$3[m.month()];
   9375            } else {
   9376                return monthsShortDot$2[m.month()];
   9377            }
   9378        },
   9379        monthsRegex: monthsRegex$5,
   9380        monthsShortRegex: monthsRegex$5,
   9381        monthsStrictRegex:
   9382            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
   9383        monthsShortStrictRegex:
   9384            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
   9385        monthsParse: monthsParse$4,
   9386        longMonthsParse: monthsParse$4,
   9387        shortMonthsParse: monthsParse$4,
   9388        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
   9389        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
   9390        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
   9391        weekdaysParseExact: true,
   9392        longDateFormat: {
   9393            LT: 'h:mm A',
   9394            LTS: 'h:mm:ss A',
   9395            L: 'MM/DD/YYYY',
   9396            LL: 'D [de] MMMM [de] YYYY',
   9397            LLL: 'D [de] MMMM [de] YYYY h:mm A',
   9398            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
   9399        },
   9400        calendar: {
   9401            sameDay: function () {
   9402                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9403            },
   9404            nextDay: function () {
   9405                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9406            },
   9407            nextWeek: function () {
   9408                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9409            },
   9410            lastDay: function () {
   9411                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9412            },
   9413            lastWeek: function () {
   9414                return (
   9415                    '[el] dddd [pasado a la' +
   9416                    (this.hours() !== 1 ? 's' : '') +
   9417                    '] LT'
   9418                );
   9419            },
   9420            sameElse: 'L',
   9421        },
   9422        relativeTime: {
   9423            future: 'en %s',
   9424            past: 'hace %s',
   9425            s: 'unos segundos',
   9426            ss: '%d segundos',
   9427            m: 'un minuto',
   9428            mm: '%d minutos',
   9429            h: 'una hora',
   9430            hh: '%d horas',
   9431            d: 'un día',
   9432            dd: '%d días',
   9433            w: 'una semana',
   9434            ww: '%d semanas',
   9435            M: 'un mes',
   9436            MM: '%d meses',
   9437            y: 'un año',
   9438            yy: '%d años',
   9439        },
   9440        dayOfMonthOrdinalParse: /\d{1,2}º/,
   9441        ordinal: '%dº',
   9442        week: {
   9443            dow: 0, // Sunday is the first day of the week.
   9444            doy: 6, // The week that contains Jan 6th is the first week of the year.
   9445        },
   9446    });
   9447
   9448    //! moment.js locale configuration
   9449
   9450    var monthsShortDot$3 =
   9451            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
   9452                '_'
   9453            ),
   9454        monthsShort$4 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
   9455        monthsParse$5 = [
   9456            /^ene/i,
   9457            /^feb/i,
   9458            /^mar/i,
   9459            /^abr/i,
   9460            /^may/i,
   9461            /^jun/i,
   9462            /^jul/i,
   9463            /^ago/i,
   9464            /^sep/i,
   9465            /^oct/i,
   9466            /^nov/i,
   9467            /^dic/i,
   9468        ],
   9469        monthsRegex$6 =
   9470            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
   9471
   9472    hooks.defineLocale('es', {
   9473        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
   9474            '_'
   9475        ),
   9476        monthsShort: function (m, format) {
   9477            if (!m) {
   9478                return monthsShortDot$3;
   9479            } else if (/-MMM-/.test(format)) {
   9480                return monthsShort$4[m.month()];
   9481            } else {
   9482                return monthsShortDot$3[m.month()];
   9483            }
   9484        },
   9485        monthsRegex: monthsRegex$6,
   9486        monthsShortRegex: monthsRegex$6,
   9487        monthsStrictRegex:
   9488            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
   9489        monthsShortStrictRegex:
   9490            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
   9491        monthsParse: monthsParse$5,
   9492        longMonthsParse: monthsParse$5,
   9493        shortMonthsParse: monthsParse$5,
   9494        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
   9495        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
   9496        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
   9497        weekdaysParseExact: true,
   9498        longDateFormat: {
   9499            LT: 'H:mm',
   9500            LTS: 'H:mm:ss',
   9501            L: 'DD/MM/YYYY',
   9502            LL: 'D [de] MMMM [de] YYYY',
   9503            LLL: 'D [de] MMMM [de] YYYY H:mm',
   9504            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
   9505        },
   9506        calendar: {
   9507            sameDay: function () {
   9508                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9509            },
   9510            nextDay: function () {
   9511                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9512            },
   9513            nextWeek: function () {
   9514                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9515            },
   9516            lastDay: function () {
   9517                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
   9518            },
   9519            lastWeek: function () {
   9520                return (
   9521                    '[el] dddd [pasado a la' +
   9522                    (this.hours() !== 1 ? 's' : '') +
   9523                    '] LT'
   9524                );
   9525            },
   9526            sameElse: 'L',
   9527        },
   9528        relativeTime: {
   9529            future: 'en %s',
   9530            past: 'hace %s',
   9531            s: 'unos segundos',
   9532            ss: '%d segundos',
   9533            m: 'un minuto',
   9534            mm: '%d minutos',
   9535            h: 'una hora',
   9536            hh: '%d horas',
   9537            d: 'un día',
   9538            dd: '%d días',
   9539            w: 'una semana',
   9540            ww: '%d semanas',
   9541            M: 'un mes',
   9542            MM: '%d meses',
   9543            y: 'un año',
   9544            yy: '%d años',
   9545        },
   9546        dayOfMonthOrdinalParse: /\d{1,2}º/,
   9547        ordinal: '%dº',
   9548        week: {
   9549            dow: 1, // Monday is the first day of the week.
   9550            doy: 4, // The week that contains Jan 4th is the first week of the year.
   9551        },
   9552        invalidDate: 'Fecha inválida',
   9553    });
   9554
   9555    //! moment.js locale configuration
   9556
   9557    function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
   9558        var format = {
   9559            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
   9560            ss: [number + 'sekundi', number + 'sekundit'],
   9561            m: ['ühe minuti', 'üks minut'],
   9562            mm: [number + ' minuti', number + ' minutit'],
   9563            h: ['ühe tunni', 'tund aega', 'üks tund'],
   9564            hh: [number + ' tunni', number + ' tundi'],
   9565            d: ['ühe päeva', 'üks päev'],
   9566            M: ['kuu aja', 'kuu aega', 'üks kuu'],
   9567            MM: [number + ' kuu', number + ' kuud'],
   9568            y: ['ühe aasta', 'aasta', 'üks aasta'],
   9569            yy: [number + ' aasta', number + ' aastat'],
   9570        };
   9571        if (withoutSuffix) {
   9572            return format[key][2] ? format[key][2] : format[key][1];
   9573        }
   9574        return isFuture ? format[key][0] : format[key][1];
   9575    }
   9576
   9577    hooks.defineLocale('et', {
   9578        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
   9579            '_'
   9580        ),
   9581        monthsShort:
   9582            'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
   9583        weekdays:
   9584            'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
   9585                '_'
   9586            ),
   9587        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
   9588        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
   9589        longDateFormat: {
   9590            LT: 'H:mm',
   9591            LTS: 'H:mm:ss',
   9592            L: 'DD.MM.YYYY',
   9593            LL: 'D. MMMM YYYY',
   9594            LLL: 'D. MMMM YYYY H:mm',
   9595            LLLL: 'dddd, D. MMMM YYYY H:mm',
   9596        },
   9597        calendar: {
   9598            sameDay: '[Täna,] LT',
   9599            nextDay: '[Homme,] LT',
   9600            nextWeek: '[Järgmine] dddd LT',
   9601            lastDay: '[Eile,] LT',
   9602            lastWeek: '[Eelmine] dddd LT',
   9603            sameElse: 'L',
   9604        },
   9605        relativeTime: {
   9606            future: '%s pärast',
   9607            past: '%s tagasi',
   9608            s: processRelativeTime$4,
   9609            ss: processRelativeTime$4,
   9610            m: processRelativeTime$4,
   9611            mm: processRelativeTime$4,
   9612            h: processRelativeTime$4,
   9613            hh: processRelativeTime$4,
   9614            d: processRelativeTime$4,
   9615            dd: '%d päeva',
   9616            M: processRelativeTime$4,
   9617            MM: processRelativeTime$4,
   9618            y: processRelativeTime$4,
   9619            yy: processRelativeTime$4,
   9620        },
   9621        dayOfMonthOrdinalParse: /\d{1,2}\./,
   9622        ordinal: '%d.',
   9623        week: {
   9624            dow: 1, // Monday is the first day of the week.
   9625            doy: 4, // The week that contains Jan 4th is the first week of the year.
   9626        },
   9627    });
   9628
   9629    //! moment.js locale configuration
   9630
   9631    hooks.defineLocale('eu', {
   9632        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
   9633            '_'
   9634        ),
   9635        monthsShort:
   9636            'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
   9637                '_'
   9638            ),
   9639        monthsParseExact: true,
   9640        weekdays:
   9641            'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
   9642                '_'
   9643            ),
   9644        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
   9645        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
   9646        weekdaysParseExact: true,
   9647        longDateFormat: {
   9648            LT: 'HH:mm',
   9649            LTS: 'HH:mm:ss',
   9650            L: 'YYYY-MM-DD',
   9651            LL: 'YYYY[ko] MMMM[ren] D[a]',
   9652            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
   9653            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
   9654            l: 'YYYY-M-D',
   9655            ll: 'YYYY[ko] MMM D[a]',
   9656            lll: 'YYYY[ko] MMM D[a] HH:mm',
   9657            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
   9658        },
   9659        calendar: {
   9660            sameDay: '[gaur] LT[etan]',
   9661            nextDay: '[bihar] LT[etan]',
   9662            nextWeek: 'dddd LT[etan]',
   9663            lastDay: '[atzo] LT[etan]',
   9664            lastWeek: '[aurreko] dddd LT[etan]',
   9665            sameElse: 'L',
   9666        },
   9667        relativeTime: {
   9668            future: '%s barru',
   9669            past: 'duela %s',
   9670            s: 'segundo batzuk',
   9671            ss: '%d segundo',
   9672            m: 'minutu bat',
   9673            mm: '%d minutu',
   9674            h: 'ordu bat',
   9675            hh: '%d ordu',
   9676            d: 'egun bat',
   9677            dd: '%d egun',
   9678            M: 'hilabete bat',
   9679            MM: '%d hilabete',
   9680            y: 'urte bat',
   9681            yy: '%d urte',
   9682        },
   9683        dayOfMonthOrdinalParse: /\d{1,2}\./,
   9684        ordinal: '%d.',
   9685        week: {
   9686            dow: 1, // Monday is the first day of the week.
   9687            doy: 7, // The week that contains Jan 7th is the first week of the year.
   9688        },
   9689    });
   9690
   9691    //! moment.js locale configuration
   9692
   9693    var symbolMap$7 = {
   9694            1: '۱',
   9695            2: '۲',
   9696            3: '۳',
   9697            4: '۴',
   9698            5: '۵',
   9699            6: '۶',
   9700            7: '۷',
   9701            8: '۸',
   9702            9: '۹',
   9703            0: '۰',
   9704        },
   9705        numberMap$6 = {
   9706            '۱': '1',
   9707            '۲': '2',
   9708            '۳': '3',
   9709            '۴': '4',
   9710            '۵': '5',
   9711            '۶': '6',
   9712            '۷': '7',
   9713            '۸': '8',
   9714            '۹': '9',
   9715            '۰': '0',
   9716        };
   9717
   9718    hooks.defineLocale('fa', {
   9719        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
   9720            '_'
   9721        ),
   9722        monthsShort:
   9723            'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
   9724                '_'
   9725            ),
   9726        weekdays:
   9727            'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
   9728                '_'
   9729            ),
   9730        weekdaysShort:
   9731            'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
   9732                '_'
   9733            ),
   9734        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
   9735        weekdaysParseExact: true,
   9736        longDateFormat: {
   9737            LT: 'HH:mm',
   9738            LTS: 'HH:mm:ss',
   9739            L: 'DD/MM/YYYY',
   9740            LL: 'D MMMM YYYY',
   9741            LLL: 'D MMMM YYYY HH:mm',
   9742            LLLL: 'dddd, D MMMM YYYY HH:mm',
   9743        },
   9744        meridiemParse: /قبل از ظهر|بعد از ظهر/,
   9745        isPM: function (input) {
   9746            return /بعد از ظهر/.test(input);
   9747        },
   9748        meridiem: function (hour, minute, isLower) {
   9749            if (hour < 12) {
   9750                return 'قبل از ظهر';
   9751            } else {
   9752                return 'بعد از ظهر';
   9753            }
   9754        },
   9755        calendar: {
   9756            sameDay: '[امروز ساعت] LT',
   9757            nextDay: '[فردا ساعت] LT',
   9758            nextWeek: 'dddd [ساعت] LT',
   9759            lastDay: '[دیروز ساعت] LT',
   9760            lastWeek: 'dddd [پیش] [ساعت] LT',
   9761            sameElse: 'L',
   9762        },
   9763        relativeTime: {
   9764            future: 'در %s',
   9765            past: '%s پیش',
   9766            s: 'چند ثانیه',
   9767            ss: '%d ثانیه',
   9768            m: 'یک دقیقه',
   9769            mm: '%d دقیقه',
   9770            h: 'یک ساعت',
   9771            hh: '%d ساعت',
   9772            d: 'یک روز',
   9773            dd: '%d روز',
   9774            M: 'یک ماه',
   9775            MM: '%d ماه',
   9776            y: 'یک سال',
   9777            yy: '%d سال',
   9778        },
   9779        preparse: function (string) {
   9780            return string
   9781                .replace(/[۰-۹]/g, function (match) {
   9782                    return numberMap$6[match];
   9783                })
   9784                .replace(/،/g, ',');
   9785        },
   9786        postformat: function (string) {
   9787            return string
   9788                .replace(/\d/g, function (match) {
   9789                    return symbolMap$7[match];
   9790                })
   9791                .replace(/,/g, '،');
   9792        },
   9793        dayOfMonthOrdinalParse: /\d{1,2}م/,
   9794        ordinal: '%dم',
   9795        week: {
   9796            dow: 6, // Saturday is the first day of the week.
   9797            doy: 12, // The week that contains Jan 12th is the first week of the year.
   9798        },
   9799    });
   9800
   9801    //! moment.js locale configuration
   9802
   9803    var numbersPast =
   9804            'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
   9805                ' '
   9806            ),
   9807        numbersFuture = [
   9808            'nolla',
   9809            'yhden',
   9810            'kahden',
   9811            'kolmen',
   9812            'neljän',
   9813            'viiden',
   9814            'kuuden',
   9815            numbersPast[7],
   9816            numbersPast[8],
   9817            numbersPast[9],
   9818        ];
   9819    function translate$2(number, withoutSuffix, key, isFuture) {
   9820        var result = '';
   9821        switch (key) {
   9822            case 's':
   9823                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
   9824            case 'ss':
   9825                result = isFuture ? 'sekunnin' : 'sekuntia';
   9826                break;
   9827            case 'm':
   9828                return isFuture ? 'minuutin' : 'minuutti';
   9829            case 'mm':
   9830                result = isFuture ? 'minuutin' : 'minuuttia';
   9831                break;
   9832            case 'h':
   9833                return isFuture ? 'tunnin' : 'tunti';
   9834            case 'hh':
   9835                result = isFuture ? 'tunnin' : 'tuntia';
   9836                break;
   9837            case 'd':
   9838                return isFuture ? 'päivän' : 'päivä';
   9839            case 'dd':
   9840                result = isFuture ? 'päivän' : 'päivää';
   9841                break;
   9842            case 'M':
   9843                return isFuture ? 'kuukauden' : 'kuukausi';
   9844            case 'MM':
   9845                result = isFuture ? 'kuukauden' : 'kuukautta';
   9846                break;
   9847            case 'y':
   9848                return isFuture ? 'vuoden' : 'vuosi';
   9849            case 'yy':
   9850                result = isFuture ? 'vuoden' : 'vuotta';
   9851                break;
   9852        }
   9853        result = verbalNumber(number, isFuture) + ' ' + result;
   9854        return result;
   9855    }
   9856    function verbalNumber(number, isFuture) {
   9857        return number < 10
   9858            ? isFuture
   9859                ? numbersFuture[number]
   9860                : numbersPast[number]
   9861            : number;
   9862    }
   9863
   9864    hooks.defineLocale('fi', {
   9865        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
   9866            '_'
   9867        ),
   9868        monthsShort:
   9869            'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
   9870                '_'
   9871            ),
   9872        weekdays:
   9873            'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
   9874                '_'
   9875            ),
   9876        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
   9877        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
   9878        longDateFormat: {
   9879            LT: 'HH.mm',
   9880            LTS: 'HH.mm.ss',
   9881            L: 'DD.MM.YYYY',
   9882            LL: 'Do MMMM[ta] YYYY',
   9883            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
   9884            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
   9885            l: 'D.M.YYYY',
   9886            ll: 'Do MMM YYYY',
   9887            lll: 'Do MMM YYYY, [klo] HH.mm',
   9888            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
   9889        },
   9890        calendar: {
   9891            sameDay: '[tänään] [klo] LT',
   9892            nextDay: '[huomenna] [klo] LT',
   9893            nextWeek: 'dddd [klo] LT',
   9894            lastDay: '[eilen] [klo] LT',
   9895            lastWeek: '[viime] dddd[na] [klo] LT',
   9896            sameElse: 'L',
   9897        },
   9898        relativeTime: {
   9899            future: '%s päästä',
   9900            past: '%s sitten',
   9901            s: translate$2,
   9902            ss: translate$2,
   9903            m: translate$2,
   9904            mm: translate$2,
   9905            h: translate$2,
   9906            hh: translate$2,
   9907            d: translate$2,
   9908            dd: translate$2,
   9909            M: translate$2,
   9910            MM: translate$2,
   9911            y: translate$2,
   9912            yy: translate$2,
   9913        },
   9914        dayOfMonthOrdinalParse: /\d{1,2}\./,
   9915        ordinal: '%d.',
   9916        week: {
   9917            dow: 1, // Monday is the first day of the week.
   9918            doy: 4, // The week that contains Jan 4th is the first week of the year.
   9919        },
   9920    });
   9921
   9922    //! moment.js locale configuration
   9923
   9924    hooks.defineLocale('fil', {
   9925        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
   9926            '_'
   9927        ),
   9928        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
   9929        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
   9930            '_'
   9931        ),
   9932        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
   9933        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
   9934        longDateFormat: {
   9935            LT: 'HH:mm',
   9936            LTS: 'HH:mm:ss',
   9937            L: 'MM/D/YYYY',
   9938            LL: 'MMMM D, YYYY',
   9939            LLL: 'MMMM D, YYYY HH:mm',
   9940            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
   9941        },
   9942        calendar: {
   9943            sameDay: 'LT [ngayong araw]',
   9944            nextDay: '[Bukas ng] LT',
   9945            nextWeek: 'LT [sa susunod na] dddd',
   9946            lastDay: 'LT [kahapon]',
   9947            lastWeek: 'LT [noong nakaraang] dddd',
   9948            sameElse: 'L',
   9949        },
   9950        relativeTime: {
   9951            future: 'sa loob ng %s',
   9952            past: '%s ang nakalipas',
   9953            s: 'ilang segundo',
   9954            ss: '%d segundo',
   9955            m: 'isang minuto',
   9956            mm: '%d minuto',
   9957            h: 'isang oras',
   9958            hh: '%d oras',
   9959            d: 'isang araw',
   9960            dd: '%d araw',
   9961            M: 'isang buwan',
   9962            MM: '%d buwan',
   9963            y: 'isang taon',
   9964            yy: '%d taon',
   9965        },
   9966        dayOfMonthOrdinalParse: /\d{1,2}/,
   9967        ordinal: function (number) {
   9968            return number;
   9969        },
   9970        week: {
   9971            dow: 1, // Monday is the first day of the week.
   9972            doy: 4, // The week that contains Jan 4th is the first week of the year.
   9973        },
   9974    });
   9975
   9976    //! moment.js locale configuration
   9977
   9978    hooks.defineLocale('fo', {
   9979        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
   9980            '_'
   9981        ),
   9982        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
   9983        weekdays:
   9984            'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
   9985                '_'
   9986            ),
   9987        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
   9988        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
   9989        longDateFormat: {
   9990            LT: 'HH:mm',
   9991            LTS: 'HH:mm:ss',
   9992            L: 'DD/MM/YYYY',
   9993            LL: 'D MMMM YYYY',
   9994            LLL: 'D MMMM YYYY HH:mm',
   9995            LLLL: 'dddd D. MMMM, YYYY HH:mm',
   9996        },
   9997        calendar: {
   9998            sameDay: '[Í dag kl.] LT',
   9999            nextDay: '[Í morgin kl.] LT',
  10000            nextWeek: 'dddd [kl.] LT',
  10001            lastDay: '[Í gjár kl.] LT',
  10002            lastWeek: '[síðstu] dddd [kl] LT',
  10003            sameElse: 'L',
  10004        },
  10005        relativeTime: {
  10006            future: 'um %s',
  10007            past: '%s síðani',
  10008            s: 'fá sekund',
  10009            ss: '%d sekundir',
  10010            m: 'ein minuttur',
  10011            mm: '%d minuttir',
  10012            h: 'ein tími',
  10013            hh: '%d tímar',
  10014            d: 'ein dagur',
  10015            dd: '%d dagar',
  10016            M: 'ein mánaður',
  10017            MM: '%d mánaðir',
  10018            y: 'eitt ár',
  10019            yy: '%d ár',
  10020        },
  10021        dayOfMonthOrdinalParse: /\d{1,2}\./,
  10022        ordinal: '%d.',
  10023        week: {
  10024            dow: 1, // Monday is the first day of the week.
  10025            doy: 4, // The week that contains Jan 4th is the first week of the year.
  10026        },
  10027    });
  10028
  10029    //! moment.js locale configuration
  10030
  10031    hooks.defineLocale('fr-ca', {
  10032        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
  10033            '_'
  10034        ),
  10035        monthsShort:
  10036            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
  10037                '_'
  10038            ),
  10039        monthsParseExact: true,
  10040        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
  10041        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
  10042        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
  10043        weekdaysParseExact: true,
  10044        longDateFormat: {
  10045            LT: 'HH:mm',
  10046            LTS: 'HH:mm:ss',
  10047            L: 'YYYY-MM-DD',
  10048            LL: 'D MMMM YYYY',
  10049            LLL: 'D MMMM YYYY HH:mm',
  10050            LLLL: 'dddd D MMMM YYYY HH:mm',
  10051        },
  10052        calendar: {
  10053            sameDay: '[Aujourd’hui à] LT',
  10054            nextDay: '[Demain à] LT',
  10055            nextWeek: 'dddd [à] LT',
  10056            lastDay: '[Hier à] LT',
  10057            lastWeek: 'dddd [dernier à] LT',
  10058            sameElse: 'L',
  10059        },
  10060        relativeTime: {
  10061            future: 'dans %s',
  10062            past: 'il y a %s',
  10063            s: 'quelques secondes',
  10064            ss: '%d secondes',
  10065            m: 'une minute',
  10066            mm: '%d minutes',
  10067            h: 'une heure',
  10068            hh: '%d heures',
  10069            d: 'un jour',
  10070            dd: '%d jours',
  10071            M: 'un mois',
  10072            MM: '%d mois',
  10073            y: 'un an',
  10074            yy: '%d ans',
  10075        },
  10076        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
  10077        ordinal: function (number, period) {
  10078            switch (period) {
  10079                // Words with masculine grammatical gender: mois, trimestre, jour
  10080                default:
  10081                case 'M':
  10082                case 'Q':
  10083                case 'D':
  10084                case 'DDD':
  10085                case 'd':
  10086                    return number + (number === 1 ? 'er' : 'e');
  10087
  10088                // Words with feminine grammatical gender: semaine
  10089                case 'w':
  10090                case 'W':
  10091                    return number + (number === 1 ? 're' : 'e');
  10092            }
  10093        },
  10094    });
  10095
  10096    //! moment.js locale configuration
  10097
  10098    hooks.defineLocale('fr-ch', {
  10099        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
  10100            '_'
  10101        ),
  10102        monthsShort:
  10103            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
  10104                '_'
  10105            ),
  10106        monthsParseExact: true,
  10107        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
  10108        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
  10109        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
  10110        weekdaysParseExact: true,
  10111        longDateFormat: {
  10112            LT: 'HH:mm',
  10113            LTS: 'HH:mm:ss',
  10114            L: 'DD.MM.YYYY',
  10115            LL: 'D MMMM YYYY',
  10116            LLL: 'D MMMM YYYY HH:mm',
  10117            LLLL: 'dddd D MMMM YYYY HH:mm',
  10118        },
  10119        calendar: {
  10120            sameDay: '[Aujourd’hui à] LT',
  10121            nextDay: '[Demain à] LT',
  10122            nextWeek: 'dddd [à] LT',
  10123            lastDay: '[Hier à] LT',
  10124            lastWeek: 'dddd [dernier à] LT',
  10125            sameElse: 'L',
  10126        },
  10127        relativeTime: {
  10128            future: 'dans %s',
  10129            past: 'il y a %s',
  10130            s: 'quelques secondes',
  10131            ss: '%d secondes',
  10132            m: 'une minute',
  10133            mm: '%d minutes',
  10134            h: 'une heure',
  10135            hh: '%d heures',
  10136            d: 'un jour',
  10137            dd: '%d jours',
  10138            M: 'un mois',
  10139            MM: '%d mois',
  10140            y: 'un an',
  10141            yy: '%d ans',
  10142        },
  10143        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
  10144        ordinal: function (number, period) {
  10145            switch (period) {
  10146                // Words with masculine grammatical gender: mois, trimestre, jour
  10147                default:
  10148                case 'M':
  10149                case 'Q':
  10150                case 'D':
  10151                case 'DDD':
  10152                case 'd':
  10153                    return number + (number === 1 ? 'er' : 'e');
  10154
  10155                // Words with feminine grammatical gender: semaine
  10156                case 'w':
  10157                case 'W':
  10158                    return number + (number === 1 ? 're' : 'e');
  10159            }
  10160        },
  10161        week: {
  10162            dow: 1, // Monday is the first day of the week.
  10163            doy: 4, // The week that contains Jan 4th is the first week of the year.
  10164        },
  10165    });
  10166
  10167    //! moment.js locale configuration
  10168
  10169    var monthsStrictRegex$1 =
  10170            /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
  10171        monthsShortStrictRegex$1 =
  10172            /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
  10173        monthsRegex$7 =
  10174            /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
  10175        monthsParse$6 = [
  10176            /^janv/i,
  10177            /^févr/i,
  10178            /^mars/i,
  10179            /^avr/i,
  10180            /^mai/i,
  10181            /^juin/i,
  10182            /^juil/i,
  10183            /^août/i,
  10184            /^sept/i,
  10185            /^oct/i,
  10186            /^nov/i,
  10187            /^déc/i,
  10188        ];
  10189
  10190    hooks.defineLocale('fr', {
  10191        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
  10192            '_'
  10193        ),
  10194        monthsShort:
  10195            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
  10196                '_'
  10197            ),
  10198        monthsRegex: monthsRegex$7,
  10199        monthsShortRegex: monthsRegex$7,
  10200        monthsStrictRegex: monthsStrictRegex$1,
  10201        monthsShortStrictRegex: monthsShortStrictRegex$1,
  10202        monthsParse: monthsParse$6,
  10203        longMonthsParse: monthsParse$6,
  10204        shortMonthsParse: monthsParse$6,
  10205        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
  10206        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
  10207        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
  10208        weekdaysParseExact: true,
  10209        longDateFormat: {
  10210            LT: 'HH:mm',
  10211            LTS: 'HH:mm:ss',
  10212            L: 'DD/MM/YYYY',
  10213            LL: 'D MMMM YYYY',
  10214            LLL: 'D MMMM YYYY HH:mm',
  10215            LLLL: 'dddd D MMMM YYYY HH:mm',
  10216        },
  10217        calendar: {
  10218            sameDay: '[Aujourd’hui à] LT',
  10219            nextDay: '[Demain à] LT',
  10220            nextWeek: 'dddd [à] LT',
  10221            lastDay: '[Hier à] LT',
  10222            lastWeek: 'dddd [dernier à] LT',
  10223            sameElse: 'L',
  10224        },
  10225        relativeTime: {
  10226            future: 'dans %s',
  10227            past: 'il y a %s',
  10228            s: 'quelques secondes',
  10229            ss: '%d secondes',
  10230            m: 'une minute',
  10231            mm: '%d minutes',
  10232            h: 'une heure',
  10233            hh: '%d heures',
  10234            d: 'un jour',
  10235            dd: '%d jours',
  10236            w: 'une semaine',
  10237            ww: '%d semaines',
  10238            M: 'un mois',
  10239            MM: '%d mois',
  10240            y: 'un an',
  10241            yy: '%d ans',
  10242        },
  10243        dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
  10244        ordinal: function (number, period) {
  10245            switch (period) {
  10246                // TODO: Return 'e' when day of month > 1. Move this case inside
  10247                // block for masculine words below.
  10248                // See https://github.com/moment/moment/issues/3375
  10249                case 'D':
  10250                    return number + (number === 1 ? 'er' : '');
  10251
  10252                // Words with masculine grammatical gender: mois, trimestre, jour
  10253                default:
  10254                case 'M':
  10255                case 'Q':
  10256                case 'DDD':
  10257                case 'd':
  10258                    return number + (number === 1 ? 'er' : 'e');
  10259
  10260                // Words with feminine grammatical gender: semaine
  10261                case 'w':
  10262                case 'W':
  10263                    return number + (number === 1 ? 're' : 'e');
  10264            }
  10265        },
  10266        week: {
  10267            dow: 1, // Monday is the first day of the week.
  10268            doy: 4, // The week that contains Jan 4th is the first week of the year.
  10269        },
  10270    });
  10271
  10272    //! moment.js locale configuration
  10273
  10274    var monthsShortWithDots =
  10275            'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
  10276        monthsShortWithoutDots =
  10277            'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
  10278
  10279    hooks.defineLocale('fy', {
  10280        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
  10281            '_'
  10282        ),
  10283        monthsShort: function (m, format) {
  10284            if (!m) {
  10285                return monthsShortWithDots;
  10286            } else if (/-MMM-/.test(format)) {
  10287                return monthsShortWithoutDots[m.month()];
  10288            } else {
  10289                return monthsShortWithDots[m.month()];
  10290            }
  10291        },
  10292        monthsParseExact: true,
  10293        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
  10294            '_'
  10295        ),
  10296        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
  10297        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
  10298        weekdaysParseExact: true,
  10299        longDateFormat: {
  10300            LT: 'HH:mm',
  10301            LTS: 'HH:mm:ss',
  10302            L: 'DD-MM-YYYY',
  10303            LL: 'D MMMM YYYY',
  10304            LLL: 'D MMMM YYYY HH:mm',
  10305            LLLL: 'dddd D MMMM YYYY HH:mm',
  10306        },
  10307        calendar: {
  10308            sameDay: '[hjoed om] LT',
  10309            nextDay: '[moarn om] LT',
  10310            nextWeek: 'dddd [om] LT',
  10311            lastDay: '[juster om] LT',
  10312            lastWeek: '[ôfrûne] dddd [om] LT',
  10313            sameElse: 'L',
  10314        },
  10315        relativeTime: {
  10316            future: 'oer %s',
  10317            past: '%s lyn',
  10318            s: 'in pear sekonden',
  10319            ss: '%d sekonden',
  10320            m: 'ien minút',
  10321            mm: '%d minuten',
  10322            h: 'ien oere',
  10323            hh: '%d oeren',
  10324            d: 'ien dei',
  10325            dd: '%d dagen',
  10326            M: 'ien moanne',
  10327            MM: '%d moannen',
  10328            y: 'ien jier',
  10329            yy: '%d jierren',
  10330        },
  10331        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
  10332        ordinal: function (number) {
  10333            return (
  10334                number +
  10335                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
  10336            );
  10337        },
  10338        week: {
  10339            dow: 1, // Monday is the first day of the week.
  10340            doy: 4, // The week that contains Jan 4th is the first week of the year.
  10341        },
  10342    });
  10343
  10344    //! moment.js locale configuration
  10345
  10346    var months$6 = [
  10347            'Eanáir',
  10348            'Feabhra',
  10349            'Márta',
  10350            'Aibreán',
  10351            'Bealtaine',
  10352            'Meitheamh',
  10353            'Iúil',
  10354            'Lúnasa',
  10355            'Meán Fómhair',
  10356            'Deireadh Fómhair',
  10357            'Samhain',
  10358            'Nollaig',
  10359        ],
  10360        monthsShort$5 = [
  10361            'Ean',
  10362            'Feabh',
  10363            'Márt',
  10364            'Aib',
  10365            'Beal',
  10366            'Meith',
  10367            'Iúil',
  10368            'Lún',
  10369            'M.F.',
  10370            'D.F.',
  10371            'Samh',
  10372            'Noll',
  10373        ],
  10374        weekdays$1 = [
  10375            'Dé Domhnaigh',
  10376            'Dé Luain',
  10377            'Dé Máirt',
  10378            'Dé Céadaoin',
  10379            'Déardaoin',
  10380            'Dé hAoine',
  10381            'Dé Sathairn',
  10382        ],
  10383        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
  10384        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
  10385
  10386    hooks.defineLocale('ga', {
  10387        months: months$6,
  10388        monthsShort: monthsShort$5,
  10389        monthsParseExact: true,
  10390        weekdays: weekdays$1,
  10391        weekdaysShort: weekdaysShort,
  10392        weekdaysMin: weekdaysMin,
  10393        longDateFormat: {
  10394            LT: 'HH:mm',
  10395            LTS: 'HH:mm:ss',
  10396            L: 'DD/MM/YYYY',
  10397            LL: 'D MMMM YYYY',
  10398            LLL: 'D MMMM YYYY HH:mm',
  10399            LLLL: 'dddd, D MMMM YYYY HH:mm',
  10400        },
  10401        calendar: {
  10402            sameDay: '[Inniu ag] LT',
  10403            nextDay: '[Amárach ag] LT',
  10404            nextWeek: 'dddd [ag] LT',
  10405            lastDay: '[Inné ag] LT',
  10406            lastWeek: 'dddd [seo caite] [ag] LT',
  10407            sameElse: 'L',
  10408        },
  10409        relativeTime: {
  10410            future: 'i %s',
  10411            past: '%s ó shin',
  10412            s: 'cúpla soicind',
  10413            ss: '%d soicind',
  10414            m: 'nóiméad',
  10415            mm: '%d nóiméad',
  10416            h: 'uair an chloig',
  10417            hh: '%d uair an chloig',
  10418            d: 'lá',
  10419            dd: '%d lá',
  10420            M: 'mí',
  10421            MM: '%d míonna',
  10422            y: 'bliain',
  10423            yy: '%d bliain',
  10424        },
  10425        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
  10426        ordinal: function (number) {
  10427            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
  10428            return number + output;
  10429        },
  10430        week: {
  10431            dow: 1, // Monday is the first day of the week.
  10432            doy: 4, // The week that contains Jan 4th is the first week of the year.
  10433        },
  10434    });
  10435
  10436    //! moment.js locale configuration
  10437
  10438    var months$7 = [
  10439            'Am Faoilleach',
  10440            'An Gearran',
  10441            'Am Màrt',
  10442            'An Giblean',
  10443            'An Cèitean',
  10444            'An t-Ògmhios',
  10445            'An t-Iuchar',
  10446            'An Lùnastal',
  10447            'An t-Sultain',
  10448            'An Dàmhair',
  10449            'An t-Samhain',
  10450            'An Dùbhlachd',
  10451        ],
  10452        monthsShort$6 = [
  10453            'Faoi',
  10454            'Gear',
  10455            'Màrt',
  10456            'Gibl',
  10457            'Cèit',
  10458            'Ògmh',
  10459            'Iuch',
  10460            'Lùn',
  10461            'Sult',
  10462            'Dàmh',
  10463            'Samh',
  10464            'Dùbh',
  10465        ],
  10466        weekdays$2 = [
  10467            'Didòmhnaich',
  10468            'Diluain',
  10469            'Dimàirt',
  10470            'Diciadain',
  10471            'Diardaoin',
  10472            'Dihaoine',
  10473            'Disathairne',
  10474        ],
  10475        weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
  10476        weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
  10477
  10478    hooks.defineLocale('gd', {
  10479        months: months$7,
  10480        monthsShort: monthsShort$6,
  10481        monthsParseExact: true,
  10482        weekdays: weekdays$2,
  10483        weekdaysShort: weekdaysShort$1,
  10484        weekdaysMin: weekdaysMin$1,
  10485        longDateFormat: {
  10486            LT: 'HH:mm',
  10487            LTS: 'HH:mm:ss',
  10488            L: 'DD/MM/YYYY',
  10489            LL: 'D MMMM YYYY',
  10490            LLL: 'D MMMM YYYY HH:mm',
  10491            LLLL: 'dddd, D MMMM YYYY HH:mm',
  10492        },
  10493        calendar: {
  10494            sameDay: '[An-diugh aig] LT',
  10495            nextDay: '[A-màireach aig] LT',
  10496            nextWeek: 'dddd [aig] LT',
  10497            lastDay: '[An-dè aig] LT',
  10498            lastWeek: 'dddd [seo chaidh] [aig] LT',
  10499            sameElse: 'L',
  10500        },
  10501        relativeTime: {
  10502            future: 'ann an %s',
  10503            past: 'bho chionn %s',
  10504            s: 'beagan diogan',
  10505            ss: '%d diogan',
  10506            m: 'mionaid',
  10507            mm: '%d mionaidean',
  10508            h: 'uair',
  10509            hh: '%d uairean',
  10510            d: 'latha',
  10511            dd: '%d latha',
  10512            M: 'mìos',
  10513            MM: '%d mìosan',
  10514            y: 'bliadhna',
  10515            yy: '%d bliadhna',
  10516        },
  10517        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
  10518        ordinal: function (number) {
  10519            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
  10520            return number + output;
  10521        },
  10522        week: {
  10523            dow: 1, // Monday is the first day of the week.
  10524            doy: 4, // The week that contains Jan 4th is the first week of the year.
  10525        },
  10526    });
  10527
  10528    //! moment.js locale configuration
  10529
  10530    hooks.defineLocale('gl', {
  10531        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
  10532            '_'
  10533        ),
  10534        monthsShort:
  10535            'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
  10536                '_'
  10537            ),
  10538        monthsParseExact: true,
  10539        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
  10540        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
  10541        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
  10542        weekdaysParseExact: true,
  10543        longDateFormat: {
  10544            LT: 'H:mm',
  10545            LTS: 'H:mm:ss',
  10546            L: 'DD/MM/YYYY',
  10547            LL: 'D [de] MMMM [de] YYYY',
  10548            LLL: 'D [de] MMMM [de] YYYY H:mm',
  10549            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
  10550        },
  10551        calendar: {
  10552            sameDay: function () {
  10553                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
  10554            },
  10555            nextDay: function () {
  10556                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
  10557            },
  10558            nextWeek: function () {
  10559                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
  10560            },
  10561            lastDay: function () {
  10562                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
  10563            },
  10564            lastWeek: function () {
  10565                return (
  10566                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
  10567                );
  10568            },
  10569            sameElse: 'L',
  10570        },
  10571        relativeTime: {
  10572            future: function (str) {
  10573                if (str.indexOf('un') === 0) {
  10574                    return 'n' + str;
  10575                }
  10576                return 'en ' + str;
  10577            },
  10578            past: 'hai %s',
  10579            s: 'uns segundos',
  10580            ss: '%d segundos',
  10581            m: 'un minuto',
  10582            mm: '%d minutos',
  10583            h: 'unha hora',
  10584            hh: '%d horas',
  10585            d: 'un día',
  10586            dd: '%d días',
  10587            M: 'un mes',
  10588            MM: '%d meses',
  10589            y: 'un ano',
  10590            yy: '%d anos',
  10591        },
  10592        dayOfMonthOrdinalParse: /\d{1,2}º/,
  10593        ordinal: '%dº',
  10594        week: {
  10595            dow: 1, // Monday is the first day of the week.
  10596            doy: 4, // The week that contains Jan 4th is the first week of the year.
  10597        },
  10598    });
  10599
  10600    //! moment.js locale configuration
  10601
  10602    function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
  10603        var format = {
  10604            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
  10605            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
  10606            m: ['एका मिणटान', 'एक मिनूट'],
  10607            mm: [number + ' मिणटांनी', number + ' मिणटां'],
  10608            h: ['एका वरान', 'एक वर'],
  10609            hh: [number + ' वरांनी', number + ' वरां'],
  10610            d: ['एका दिसान', 'एक दीस'],
  10611            dd: [number + ' दिसांनी', number + ' दीस'],
  10612            M: ['एका म्हयन्यान', 'एक म्हयनो'],
  10613            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
  10614            y: ['एका वर्सान', 'एक वर्स'],
  10615            yy: [number + ' वर्सांनी', number + ' वर्सां'],
  10616        };
  10617        return isFuture ? format[key][0] : format[key][1];
  10618    }
  10619
  10620    hooks.defineLocale('gom-deva', {
  10621        months: {
  10622            standalone:
  10623                'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
  10624                    '_'
  10625                ),
  10626            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
  10627                '_'
  10628            ),
  10629            isFormat: /MMMM(\s)+D[oD]?/,
  10630        },
  10631        monthsShort:
  10632            'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
  10633                '_'
  10634            ),
  10635        monthsParseExact: true,
  10636        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),
  10637        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
  10638        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
  10639        weekdaysParseExact: true,
  10640        longDateFormat: {
  10641            LT: 'A h:mm [वाजतां]',
  10642            LTS: 'A h:mm:ss [वाजतां]',
  10643            L: 'DD-MM-YYYY',
  10644            LL: 'D MMMM YYYY',
  10645            LLL: 'D MMMM YYYY A h:mm [वाजतां]',
  10646            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
  10647            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
  10648        },
  10649        calendar: {
  10650            sameDay: '[आयज] LT',
  10651            nextDay: '[फाल्यां] LT',
  10652            nextWeek: '[फुडलो] dddd[,] LT',
  10653            lastDay: '[काल] LT',
  10654            lastWeek: '[फाटलो] dddd[,] LT',
  10655            sameElse: 'L',
  10656        },
  10657        relativeTime: {
  10658            future: '%s',
  10659            past: '%s आदीं',
  10660            s: processRelativeTime$5,
  10661            ss: processRelativeTime$5,
  10662            m: processRelativeTime$5,
  10663            mm: processRelativeTime$5,
  10664            h: processRelativeTime$5,
  10665            hh: processRelativeTime$5,
  10666            d: processRelativeTime$5,
  10667            dd: processRelativeTime$5,
  10668            M: processRelativeTime$5,
  10669            MM: processRelativeTime$5,
  10670            y: processRelativeTime$5,
  10671            yy: processRelativeTime$5,
  10672        },
  10673        dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
  10674        ordinal: function (number, period) {
  10675            switch (period) {
  10676                // the ordinal 'वेर' only applies to day of the month
  10677                case 'D':
  10678                    return number + 'वेर';
  10679                default:
  10680                case 'M':
  10681                case 'Q':
  10682                case 'DDD':
  10683                case 'd':
  10684                case 'w':
  10685                case 'W':
  10686                    return number;
  10687            }
  10688        },
  10689        week: {
  10690            dow: 0, // Sunday is the first day of the week
  10691            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
  10692        },
  10693        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
  10694        meridiemHour: function (hour, meridiem) {
  10695            if (hour === 12) {
  10696                hour = 0;
  10697            }
  10698            if (meridiem === 'राती') {
  10699                return hour < 4 ? hour : hour + 12;
  10700            } else if (meridiem === 'सकाळीं') {
  10701                return hour;
  10702            } else if (meridiem === 'दनपारां') {
  10703                return hour > 12 ? hour : hour + 12;
  10704            } else if (meridiem === 'सांजे') {
  10705                return hour + 12;
  10706            }
  10707        },
  10708        meridiem: function (hour, minute, isLower) {
  10709            if (hour < 4) {
  10710                return 'राती';
  10711            } else if (hour < 12) {
  10712                return 'सकाळीं';
  10713            } else if (hour < 16) {
  10714                return 'दनपारां';
  10715            } else if (hour < 20) {
  10716                return 'सांजे';
  10717            } else {
  10718                return 'राती';
  10719            }
  10720        },
  10721    });
  10722
  10723    //! moment.js locale configuration
  10724
  10725    function processRelativeTime$6(number, withoutSuffix, key, isFuture) {
  10726        var format = {
  10727            s: ['thoddea sekondamni', 'thodde sekond'],
  10728            ss: [number + ' sekondamni', number + ' sekond'],
  10729            m: ['eka mintan', 'ek minut'],
  10730            mm: [number + ' mintamni', number + ' mintam'],
  10731            h: ['eka voran', 'ek vor'],
  10732            hh: [number + ' voramni', number + ' voram'],
  10733            d: ['eka disan', 'ek dis'],
  10734            dd: [number + ' disamni', number + ' dis'],
  10735            M: ['eka mhoinean', 'ek mhoino'],
  10736            MM: [number + ' mhoineamni', number + ' mhoine'],
  10737            y: ['eka vorsan', 'ek voros'],
  10738            yy: [number + ' vorsamni', number + ' vorsam'],
  10739        };
  10740        return isFuture ? format[key][0] : format[key][1];
  10741    }
  10742
  10743    hooks.defineLocale('gom-latn', {
  10744        months: {
  10745            standalone:
  10746                'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
  10747                    '_'
  10748                ),
  10749            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
  10750                '_'
  10751            ),
  10752            isFormat: /MMMM(\s)+D[oD]?/,
  10753        },
  10754        monthsShort:
  10755            'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
  10756        monthsParseExact: true,
  10757        weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
  10758        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
  10759        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
  10760        weekdaysParseExact: true,
  10761        longDateFormat: {
  10762            LT: 'A h:mm [vazta]',
  10763            LTS: 'A h:mm:ss [vazta]',
  10764            L: 'DD-MM-YYYY',
  10765            LL: 'D MMMM YYYY',
  10766            LLL: 'D MMMM YYYY A h:mm [vazta]',
  10767            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
  10768            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
  10769        },
  10770        calendar: {
  10771            sameDay: '[Aiz] LT',
  10772            nextDay: '[Faleam] LT',
  10773            nextWeek: '[Fuddlo] dddd[,] LT',
  10774            lastDay: '[Kal] LT',
  10775            lastWeek: '[Fattlo] dddd[,] LT',
  10776            sameElse: 'L',
  10777        },
  10778        relativeTime: {
  10779            future: '%s',
  10780            past: '%s adim',
  10781            s: processRelativeTime$6,
  10782            ss: processRelativeTime$6,
  10783            m: processRelativeTime$6,
  10784            mm: processRelativeTime$6,
  10785            h: processRelativeTime$6,
  10786            hh: processRelativeTime$6,
  10787            d: processRelativeTime$6,
  10788            dd: processRelativeTime$6,
  10789            M: processRelativeTime$6,
  10790            MM: processRelativeTime$6,
  10791            y: processRelativeTime$6,
  10792            yy: processRelativeTime$6,
  10793        },
  10794        dayOfMonthOrdinalParse: /\d{1,2}(er)/,
  10795        ordinal: function (number, period) {
  10796            switch (period) {
  10797                // the ordinal 'er' only applies to day of the month
  10798                case 'D':
  10799                    return number + 'er';
  10800                default:
  10801                case 'M':
  10802                case 'Q':
  10803                case 'DDD':
  10804                case 'd':
  10805                case 'w':
  10806                case 'W':
  10807                    return number;
  10808            }
  10809        },
  10810        week: {
  10811            dow: 0, // Sunday is the first day of the week
  10812            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
  10813        },
  10814        meridiemParse: /rati|sokallim|donparam|sanje/,
  10815        meridiemHour: function (hour, meridiem) {
  10816            if (hour === 12) {
  10817                hour = 0;
  10818            }
  10819            if (meridiem === 'rati') {
  10820                return hour < 4 ? hour : hour + 12;
  10821            } else if (meridiem === 'sokallim') {
  10822                return hour;
  10823            } else if (meridiem === 'donparam') {
  10824                return hour > 12 ? hour : hour + 12;
  10825            } else if (meridiem === 'sanje') {
  10826                return hour + 12;
  10827            }
  10828        },
  10829        meridiem: function (hour, minute, isLower) {
  10830            if (hour < 4) {
  10831                return 'rati';
  10832            } else if (hour < 12) {
  10833                return 'sokallim';
  10834            } else if (hour < 16) {
  10835                return 'donparam';
  10836            } else if (hour < 20) {
  10837                return 'sanje';
  10838            } else {
  10839                return 'rati';
  10840            }
  10841        },
  10842    });
  10843
  10844    //! moment.js locale configuration
  10845
  10846    var symbolMap$8 = {
  10847            1: '૧',
  10848            2: '૨',
  10849            3: '૩',
  10850            4: '૪',
  10851            5: '૫',
  10852            6: '૬',
  10853            7: '૭',
  10854            8: '૮',
  10855            9: '૯',
  10856            0: '૦',
  10857        },
  10858        numberMap$7 = {
  10859            '૧': '1',
  10860            '૨': '2',
  10861            '૩': '3',
  10862            '૪': '4',
  10863            '૫': '5',
  10864            '૬': '6',
  10865            '૭': '7',
  10866            '૮': '8',
  10867            '૯': '9',
  10868            '૦': '0',
  10869        };
  10870
  10871    hooks.defineLocale('gu', {
  10872        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
  10873            '_'
  10874        ),
  10875        monthsShort:
  10876            'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(
  10877                '_'
  10878            ),
  10879        monthsParseExact: true,
  10880        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
  10881            '_'
  10882        ),
  10883        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
  10884        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
  10885        longDateFormat: {
  10886            LT: 'A h:mm વાગ્યે',
  10887            LTS: 'A h:mm:ss વાગ્યે',
  10888            L: 'DD/MM/YYYY',
  10889            LL: 'D MMMM YYYY',
  10890            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
  10891            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
  10892        },
  10893        calendar: {
  10894            sameDay: '[આજ] LT',
  10895            nextDay: '[કાલે] LT',
  10896            nextWeek: 'dddd, LT',
  10897            lastDay: '[ગઇકાલે] LT',
  10898            lastWeek: '[પાછલા] dddd, LT',
  10899            sameElse: 'L',
  10900        },
  10901        relativeTime: {
  10902            future: '%s મા',
  10903            past: '%s પહેલા',
  10904            s: 'અમુક પળો',
  10905            ss: '%d સેકંડ',
  10906            m: 'એક મિનિટ',
  10907            mm: '%d મિનિટ',
  10908            h: 'એક કલાક',
  10909            hh: '%d કલાક',
  10910            d: 'એક દિવસ',
  10911            dd: '%d દિવસ',
  10912            M: 'એક મહિનો',
  10913            MM: '%d મહિનો',
  10914            y: 'એક વર્ષ',
  10915            yy: '%d વર્ષ',
  10916        },
  10917        preparse: function (string) {
  10918            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
  10919                return numberMap$7[match];
  10920            });
  10921        },
  10922        postformat: function (string) {
  10923            return string.replace(/\d/g, function (match) {
  10924                return symbolMap$8[match];
  10925            });
  10926        },
  10927        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
  10928        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
  10929        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
  10930        meridiemHour: function (hour, meridiem) {
  10931            if (hour === 12) {
  10932                hour = 0;
  10933            }
  10934            if (meridiem === 'રાત') {
  10935                return hour < 4 ? hour : hour + 12;
  10936            } else if (meridiem === 'સવાર') {
  10937                return hour;
  10938            } else if (meridiem === 'બપોર') {
  10939                return hour >= 10 ? hour : hour + 12;
  10940            } else if (meridiem === 'સાંજ') {
  10941                return hour + 12;
  10942            }
  10943        },
  10944        meridiem: function (hour, minute, isLower) {
  10945            if (hour < 4) {
  10946                return 'રાત';
  10947            } else if (hour < 10) {
  10948                return 'સવાર';
  10949            } else if (hour < 17) {
  10950                return 'બપોર';
  10951            } else if (hour < 20) {
  10952                return 'સાંજ';
  10953            } else {
  10954                return 'રાત';
  10955            }
  10956        },
  10957        week: {
  10958            dow: 0, // Sunday is the first day of the week.
  10959            doy: 6, // The week that contains Jan 6th is the first week of the year.
  10960        },
  10961    });
  10962
  10963    //! moment.js locale configuration
  10964
  10965    hooks.defineLocale('he', {
  10966        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
  10967            '_'
  10968        ),
  10969        monthsShort:
  10970            'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
  10971        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
  10972        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
  10973        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
  10974        longDateFormat: {
  10975            LT: 'HH:mm',
  10976            LTS: 'HH:mm:ss',
  10977            L: 'DD/MM/YYYY',
  10978            LL: 'D [ב]MMMM YYYY',
  10979            LLL: 'D [ב]MMMM YYYY HH:mm',
  10980            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
  10981            l: 'D/M/YYYY',
  10982            ll: 'D MMM YYYY',
  10983            lll: 'D MMM YYYY HH:mm',
  10984            llll: 'ddd, D MMM YYYY HH:mm',
  10985        },
  10986        calendar: {
  10987            sameDay: '[היום ב־]LT',
  10988            nextDay: '[מחר ב־]LT',
  10989            nextWeek: 'dddd [בשעה] LT',
  10990            lastDay: '[אתמול ב־]LT',
  10991            lastWeek: '[ביום] dddd [האחרון בשעה] LT',
  10992            sameElse: 'L',
  10993        },
  10994        relativeTime: {
  10995            future: 'בעוד %s',
  10996            past: 'לפני %s',
  10997            s: 'מספר שניות',
  10998            ss: '%d שניות',
  10999            m: 'דקה',
  11000            mm: '%d דקות',
  11001            h: 'שעה',
  11002            hh: function (number) {
  11003                if (number === 2) {
  11004                    return 'שעתיים';
  11005                }
  11006                return number + ' שעות';
  11007            },
  11008            d: 'יום',
  11009            dd: function (number) {
  11010                if (number === 2) {
  11011                    return 'יומיים';
  11012                }
  11013                return number + ' ימים';
  11014            },
  11015            M: 'חודש',
  11016            MM: function (number) {
  11017                if (number === 2) {
  11018                    return 'חודשיים';
  11019                }
  11020                return number + ' חודשים';
  11021            },
  11022            y: 'שנה',
  11023            yy: function (number) {
  11024                if (number === 2) {
  11025                    return 'שנתיים';
  11026                } else if (number % 10 === 0 && number !== 10) {
  11027                    return number + ' שנה';
  11028                }
  11029                return number + ' שנים';
  11030            },
  11031        },
  11032        meridiemParse:
  11033            /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
  11034        isPM: function (input) {
  11035            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
  11036        },
  11037        meridiem: function (hour, minute, isLower) {
  11038            if (hour < 5) {
  11039                return 'לפנות בוקר';
  11040            } else if (hour < 10) {
  11041                return 'בבוקר';
  11042            } else if (hour < 12) {
  11043                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
  11044            } else if (hour < 18) {
  11045                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
  11046            } else {
  11047                return 'בערב';
  11048            }
  11049        },
  11050    });
  11051
  11052    //! moment.js locale configuration
  11053
  11054    var symbolMap$9 = {
  11055            1: '१',
  11056            2: '२',
  11057            3: '३',
  11058            4: '४',
  11059            5: '५',
  11060            6: '६',
  11061            7: '७',
  11062            8: '८',
  11063            9: '९',
  11064            0: '०',
  11065        },
  11066        numberMap$8 = {
  11067            '१': '1',
  11068            '२': '2',
  11069            '३': '3',
  11070            '४': '4',
  11071            '५': '5',
  11072            '६': '6',
  11073            '७': '7',
  11074            '८': '8',
  11075            '९': '9',
  11076            '०': '0',
  11077        },
  11078        monthsParse$7 = [
  11079            /^जन/i,
  11080            /^फ़र|फर/i,
  11081            /^मार्च/i,
  11082            /^अप्रै/i,
  11083            /^मई/i,
  11084            /^जून/i,
  11085            /^जुल/i,
  11086            /^अग/i,
  11087            /^सितं|सित/i,
  11088            /^अक्टू/i,
  11089            /^नव|नवं/i,
  11090            /^दिसं|दिस/i,
  11091        ],
  11092        shortMonthsParse = [
  11093            /^जन/i,
  11094            /^फ़र/i,
  11095            /^मार्च/i,
  11096            /^अप्रै/i,
  11097            /^मई/i,
  11098            /^जून/i,
  11099            /^जुल/i,
  11100            /^अग/i,
  11101            /^सित/i,
  11102            /^अक्टू/i,
  11103            /^नव/i,
  11104            /^दिस/i,
  11105        ];
  11106
  11107    hooks.defineLocale('hi', {
  11108        months: {
  11109            format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
  11110                '_'
  11111            ),
  11112            standalone:
  11113                'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(
  11114                    '_'
  11115                ),
  11116        },
  11117        monthsShort:
  11118            'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
  11119        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
  11120        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
  11121        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
  11122        longDateFormat: {
  11123            LT: 'A h:mm बजे',
  11124            LTS: 'A h:mm:ss बजे',
  11125            L: 'DD/MM/YYYY',
  11126            LL: 'D MMMM YYYY',
  11127            LLL: 'D MMMM YYYY, A h:mm बजे',
  11128            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
  11129        },
  11130
  11131        monthsParse: monthsParse$7,
  11132        longMonthsParse: monthsParse$7,
  11133        shortMonthsParse: shortMonthsParse,
  11134
  11135        monthsRegex:
  11136            /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
  11137
  11138        monthsShortRegex:
  11139            /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
  11140
  11141        monthsStrictRegex:
  11142            /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,
  11143
  11144        monthsShortStrictRegex:
  11145            /^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,
  11146
  11147        calendar: {
  11148            sameDay: '[आज] LT',
  11149            nextDay: '[कल] LT',
  11150            nextWeek: 'dddd, LT',
  11151            lastDay: '[कल] LT',
  11152            lastWeek: '[पिछले] dddd, LT',
  11153            sameElse: 'L',
  11154        },
  11155        relativeTime: {
  11156            future: '%s में',
  11157            past: '%s पहले',
  11158            s: 'कुछ ही क्षण',
  11159            ss: '%d सेकंड',
  11160            m: 'एक मिनट',
  11161            mm: '%d मिनट',
  11162            h: 'एक घंटा',
  11163            hh: '%d घंटे',
  11164            d: 'एक दिन',
  11165            dd: '%d दिन',
  11166            M: 'एक महीने',
  11167            MM: '%d महीने',
  11168            y: 'एक वर्ष',
  11169            yy: '%d वर्ष',
  11170        },
  11171        preparse: function (string) {
  11172            return string.replace(/[१२३४५६७८९०]/g, function (match) {
  11173                return numberMap$8[match];
  11174            });
  11175        },
  11176        postformat: function (string) {
  11177            return string.replace(/\d/g, function (match) {
  11178                return symbolMap$9[match];
  11179            });
  11180        },
  11181        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
  11182        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
  11183        meridiemParse: /रात|सुबह|दोपहर|शाम/,
  11184        meridiemHour: function (hour, meridiem) {
  11185            if (hour === 12) {
  11186                hour = 0;
  11187            }
  11188            if (meridiem === 'रात') {
  11189                return hour < 4 ? hour : hour + 12;
  11190            } else if (meridiem === 'सुबह') {
  11191                return hour;
  11192            } else if (meridiem === 'दोपहर') {
  11193                return hour >= 10 ? hour : hour + 12;
  11194            } else if (meridiem === 'शाम') {
  11195                return hour + 12;
  11196            }
  11197        },
  11198        meridiem: function (hour, minute, isLower) {
  11199            if (hour < 4) {
  11200                return 'रात';
  11201            } else if (hour < 10) {
  11202                return 'सुबह';
  11203            } else if (hour < 17) {
  11204                return 'दोपहर';
  11205            } else if (hour < 20) {
  11206                return 'शाम';
  11207            } else {
  11208                return 'रात';
  11209            }
  11210        },
  11211        week: {
  11212            dow: 0, // Sunday is the first day of the week.
  11213            doy: 6, // The week that contains Jan 6th is the first week of the year.
  11214        },
  11215    });
  11216
  11217    //! moment.js locale configuration
  11218
  11219    function translate$3(number, withoutSuffix, key) {
  11220        var result = number + ' ';
  11221        switch (key) {
  11222            case 'ss':
  11223                if (number === 1) {
  11224                    result += 'sekunda';
  11225                } else if (number === 2 || number === 3 || number === 4) {
  11226                    result += 'sekunde';
  11227                } else {
  11228                    result += 'sekundi';
  11229                }
  11230                return result;
  11231            case 'm':
  11232                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
  11233            case 'mm':
  11234                if (number === 1) {
  11235                    result += 'minuta';
  11236                } else if (number === 2 || number === 3 || number === 4) {
  11237                    result += 'minute';
  11238                } else {
  11239                    result += 'minuta';
  11240                }
  11241                return result;
  11242            case 'h':
  11243                return withoutSuffix ? 'jedan sat' : 'jednog sata';
  11244            case 'hh':
  11245                if (number === 1) {
  11246                    result += 'sat';
  11247                } else if (number === 2 || number === 3 || number === 4) {
  11248                    result += 'sata';
  11249                } else {
  11250                    result += 'sati';
  11251                }
  11252                return result;
  11253            case 'dd':
  11254                if (number === 1) {
  11255                    result += 'dan';
  11256                } else {
  11257                    result += 'dana';
  11258                }
  11259                return result;
  11260            case 'MM':
  11261                if (number === 1) {
  11262                    result += 'mjesec';
  11263                } else if (number === 2 || number === 3 || number === 4) {
  11264                    result += 'mjeseca';
  11265                } else {
  11266                    result += 'mjeseci';
  11267                }
  11268                return result;
  11269            case 'yy':
  11270                if (number === 1) {
  11271                    result += 'godina';
  11272                } else if (number === 2 || number === 3 || number === 4) {
  11273                    result += 'godine';
  11274                } else {
  11275                    result += 'godina';
  11276                }
  11277                return result;
  11278        }
  11279    }
  11280
  11281    hooks.defineLocale('hr', {
  11282        months: {
  11283            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
  11284                '_'
  11285            ),
  11286            standalone:
  11287                'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
  11288                    '_'
  11289                ),
  11290        },
  11291        monthsShort:
  11292            'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
  11293                '_'
  11294            ),
  11295        monthsParseExact: true,
  11296        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
  11297            '_'
  11298        ),
  11299        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
  11300        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
  11301        weekdaysParseExact: true,
  11302        longDateFormat: {
  11303            LT: 'H:mm',
  11304            LTS: 'H:mm:ss',
  11305            L: 'DD.MM.YYYY',
  11306            LL: 'Do MMMM YYYY',
  11307            LLL: 'Do MMMM YYYY H:mm',
  11308            LLLL: 'dddd, Do MMMM YYYY H:mm',
  11309        },
  11310        calendar: {
  11311            sameDay: '[danas u] LT',
  11312            nextDay: '[sutra u] LT',
  11313            nextWeek: function () {
  11314                switch (this.day()) {
  11315                    case 0:
  11316                        return '[u] [nedjelju] [u] LT';
  11317                    case 3:
  11318                        return '[u] [srijedu] [u] LT';
  11319                    case 6:
  11320                        return '[u] [subotu] [u] LT';
  11321                    case 1:
  11322                    case 2:
  11323                    case 4:
  11324                    case 5:
  11325                        return '[u] dddd [u] LT';
  11326                }
  11327            },
  11328            lastDay: '[jučer u] LT',
  11329            lastWeek: function () {
  11330                switch (this.day()) {
  11331                    case 0:
  11332                        return '[prošlu] [nedjelju] [u] LT';
  11333                    case 3:
  11334                        return '[prošlu] [srijedu] [u] LT';
  11335                    case 6:
  11336                        return '[prošle] [subote] [u] LT';
  11337                    case 1:
  11338                    case 2:
  11339                    case 4:
  11340                    case 5:
  11341                        return '[prošli] dddd [u] LT';
  11342                }
  11343            },
  11344            sameElse: 'L',
  11345        },
  11346        relativeTime: {
  11347            future: 'za %s',
  11348            past: 'prije %s',
  11349            s: 'par sekundi',
  11350            ss: translate$3,
  11351            m: translate$3,
  11352            mm: translate$3,
  11353            h: translate$3,
  11354            hh: translate$3,
  11355            d: 'dan',
  11356            dd: translate$3,
  11357            M: 'mjesec',
  11358            MM: translate$3,
  11359            y: 'godinu',
  11360            yy: translate$3,
  11361        },
  11362        dayOfMonthOrdinalParse: /\d{1,2}\./,
  11363        ordinal: '%d.',
  11364        week: {
  11365            dow: 1, // Monday is the first day of the week.
  11366            doy: 7, // The week that contains Jan 7th is the first week of the year.
  11367        },
  11368    });
  11369
  11370    //! moment.js locale configuration
  11371
  11372    var weekEndings =
  11373        'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
  11374    function translate$4(number, withoutSuffix, key, isFuture) {
  11375        var num = number;
  11376        switch (key) {
  11377            case 's':
  11378                return isFuture || withoutSuffix
  11379                    ? 'néhány másodperc'
  11380                    : 'néhány másodperce';
  11381            case 'ss':
  11382                return num + (isFuture || withoutSuffix)
  11383                    ? ' másodperc'
  11384                    : ' másodperce';
  11385            case 'm':
  11386                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
  11387            case 'mm':
  11388                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
  11389            case 'h':
  11390                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
  11391            case 'hh':
  11392                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
  11393            case 'd':
  11394                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
  11395            case 'dd':
  11396                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
  11397            case 'M':
  11398                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
  11399            case 'MM':
  11400                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
  11401            case 'y':
  11402                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
  11403            case 'yy':
  11404                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
  11405        }
  11406        return '';
  11407    }
  11408    function week(isFuture) {
  11409        return (
  11410            (isFuture ? '' : '[múlt] ') +
  11411            '[' +
  11412            weekEndings[this.day()] +
  11413            '] LT[-kor]'
  11414        );
  11415    }
  11416
  11417    hooks.defineLocale('hu', {
  11418        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
  11419            '_'
  11420        ),
  11421        monthsShort:
  11422            'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(
  11423                '_'
  11424            ),
  11425        monthsParseExact: true,
  11426        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
  11427        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
  11428        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
  11429        longDateFormat: {
  11430            LT: 'H:mm',
  11431            LTS: 'H:mm:ss',
  11432            L: 'YYYY.MM.DD.',
  11433            LL: 'YYYY. MMMM D.',
  11434            LLL: 'YYYY. MMMM D. H:mm',
  11435            LLLL: 'YYYY. MMMM D., dddd H:mm',
  11436        },
  11437        meridiemParse: /de|du/i,
  11438        isPM: function (input) {
  11439            return input.charAt(1).toLowerCase() === 'u';
  11440        },
  11441        meridiem: function (hours, minutes, isLower) {
  11442            if (hours < 12) {
  11443                return isLower === true ? 'de' : 'DE';
  11444            } else {
  11445                return isLower === true ? 'du' : 'DU';
  11446            }
  11447        },
  11448        calendar: {
  11449            sameDay: '[ma] LT[-kor]',
  11450            nextDay: '[holnap] LT[-kor]',
  11451            nextWeek: function () {
  11452                return week.call(this, true);
  11453            },
  11454            lastDay: '[tegnap] LT[-kor]',
  11455            lastWeek: function () {
  11456                return week.call(this, false);
  11457            },
  11458            sameElse: 'L',
  11459        },
  11460        relativeTime: {
  11461            future: '%s múlva',
  11462            past: '%s',
  11463            s: translate$4,
  11464            ss: translate$4,
  11465            m: translate$4,
  11466            mm: translate$4,
  11467            h: translate$4,
  11468            hh: translate$4,
  11469            d: translate$4,
  11470            dd: translate$4,
  11471            M: translate$4,
  11472            MM: translate$4,
  11473            y: translate$4,
  11474            yy: translate$4,
  11475        },
  11476        dayOfMonthOrdinalParse: /\d{1,2}\./,
  11477        ordinal: '%d.',
  11478        week: {
  11479            dow: 1, // Monday is the first day of the week.
  11480            doy: 4, // The week that contains Jan 4th is the first week of the year.
  11481        },
  11482    });
  11483
  11484    //! moment.js locale configuration
  11485
  11486    hooks.defineLocale('hy-am', {
  11487        months: {
  11488            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
  11489                '_'
  11490            ),
  11491            standalone:
  11492                'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
  11493                    '_'
  11494                ),
  11495        },
  11496        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
  11497        weekdays:
  11498            'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
  11499                '_'
  11500            ),
  11501        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
  11502        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
  11503        longDateFormat: {
  11504            LT: 'HH:mm',
  11505            LTS: 'HH:mm:ss',
  11506            L: 'DD.MM.YYYY',
  11507            LL: 'D MMMM YYYY թ.',
  11508            LLL: 'D MMMM YYYY թ., HH:mm',
  11509            LLLL: 'dddd, D MMMM YYYY թ., HH:mm',
  11510        },
  11511        calendar: {
  11512            sameDay: '[այսօր] LT',
  11513            nextDay: '[վաղը] LT',
  11514            lastDay: '[երեկ] LT',
  11515            nextWeek: function () {
  11516                return 'dddd [օրը ժամը] LT';
  11517            },
  11518            lastWeek: function () {
  11519                return '[անցած] dddd [օրը ժամը] LT';
  11520            },
  11521            sameElse: 'L',
  11522        },
  11523        relativeTime: {
  11524            future: '%s հետո',
  11525            past: '%s առաջ',
  11526            s: 'մի քանի վայրկյան',
  11527            ss: '%d վայրկյան',
  11528            m: 'րոպե',
  11529            mm: '%d րոպե',
  11530            h: 'ժամ',
  11531            hh: '%d ժամ',
  11532            d: 'օր',
  11533            dd: '%d օր',
  11534            M: 'ամիս',
  11535            MM: '%d ամիս',
  11536            y: 'տարի',
  11537            yy: '%d տարի',
  11538        },
  11539        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
  11540        isPM: function (input) {
  11541            return /^(ցերեկվա|երեկոյան)$/.test(input);
  11542        },
  11543        meridiem: function (hour) {
  11544            if (hour < 4) {
  11545                return 'գիշերվա';
  11546            } else if (hour < 12) {
  11547                return 'առավոտվա';
  11548            } else if (hour < 17) {
  11549                return 'ցերեկվա';
  11550            } else {
  11551                return 'երեկոյան';
  11552            }
  11553        },
  11554        dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
  11555        ordinal: function (number, period) {
  11556            switch (period) {
  11557                case 'DDD':
  11558                case 'w':
  11559                case 'W':
  11560                case 'DDDo':
  11561                    if (number === 1) {
  11562                        return number + '-ին';
  11563                    }
  11564                    return number + '-րդ';
  11565                default:
  11566                    return number;
  11567            }
  11568        },
  11569        week: {
  11570            dow: 1, // Monday is the first day of the week.
  11571            doy: 7, // The week that contains Jan 7th is the first week of the year.
  11572        },
  11573    });
  11574
  11575    //! moment.js locale configuration
  11576
  11577    hooks.defineLocale('id', {
  11578        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
  11579            '_'
  11580        ),
  11581        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
  11582        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
  11583        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
  11584        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
  11585        longDateFormat: {
  11586            LT: 'HH.mm',
  11587            LTS: 'HH.mm.ss',
  11588            L: 'DD/MM/YYYY',
  11589            LL: 'D MMMM YYYY',
  11590            LLL: 'D MMMM YYYY [pukul] HH.mm',
  11591            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
  11592        },
  11593        meridiemParse: /pagi|siang|sore|malam/,
  11594        meridiemHour: function (hour, meridiem) {
  11595            if (hour === 12) {
  11596                hour = 0;
  11597            }
  11598            if (meridiem === 'pagi') {
  11599                return hour;
  11600            } else if (meridiem === 'siang') {
  11601                return hour >= 11 ? hour : hour + 12;
  11602            } else if (meridiem === 'sore' || meridiem === 'malam') {
  11603                return hour + 12;
  11604            }
  11605        },
  11606        meridiem: function (hours, minutes, isLower) {
  11607            if (hours < 11) {
  11608                return 'pagi';
  11609            } else if (hours < 15) {
  11610                return 'siang';
  11611            } else if (hours < 19) {
  11612                return 'sore';
  11613            } else {
  11614                return 'malam';
  11615            }
  11616        },
  11617        calendar: {
  11618            sameDay: '[Hari ini pukul] LT',
  11619            nextDay: '[Besok pukul] LT',
  11620            nextWeek: 'dddd [pukul] LT',
  11621            lastDay: '[Kemarin pukul] LT',
  11622            lastWeek: 'dddd [lalu pukul] LT',
  11623            sameElse: 'L',
  11624        },
  11625        relativeTime: {
  11626            future: 'dalam %s',
  11627            past: '%s yang lalu',
  11628            s: 'beberapa detik',
  11629            ss: '%d detik',
  11630            m: 'semenit',
  11631            mm: '%d menit',
  11632            h: 'sejam',
  11633            hh: '%d jam',
  11634            d: 'sehari',
  11635            dd: '%d hari',
  11636            M: 'sebulan',
  11637            MM: '%d bulan',
  11638            y: 'setahun',
  11639            yy: '%d tahun',
  11640        },
  11641        week: {
  11642            dow: 0, // Sunday is the first day of the week.
  11643            doy: 6, // The week that contains Jan 6th is the first week of the year.
  11644        },
  11645    });
  11646
  11647    //! moment.js locale configuration
  11648
  11649    function plural$2(n) {
  11650        if (n % 100 === 11) {
  11651            return true;
  11652        } else if (n % 10 === 1) {
  11653            return false;
  11654        }
  11655        return true;
  11656    }
  11657    function translate$5(number, withoutSuffix, key, isFuture) {
  11658        var result = number + ' ';
  11659        switch (key) {
  11660            case 's':
  11661                return withoutSuffix || isFuture
  11662                    ? 'nokkrar sekúndur'
  11663                    : 'nokkrum sekúndum';
  11664            case 'ss':
  11665                if (plural$2(number)) {
  11666                    return (
  11667                        result +
  11668                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
  11669                    );
  11670                }
  11671                return result + 'sekúnda';
  11672            case 'm':
  11673                return withoutSuffix ? 'mínúta' : 'mínútu';
  11674            case 'mm':
  11675                if (plural$2(number)) {
  11676                    return (
  11677                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
  11678                    );
  11679                } else if (withoutSuffix) {
  11680                    return result + 'mínúta';
  11681                }
  11682                return result + 'mínútu';
  11683            case 'hh':
  11684                if (plural$2(number)) {
  11685                    return (
  11686                        result +
  11687                        (withoutSuffix || isFuture
  11688                            ? 'klukkustundir'
  11689                            : 'klukkustundum')
  11690                    );
  11691                }
  11692                return result + 'klukkustund';
  11693            case 'd':
  11694                if (withoutSuffix) {
  11695                    return 'dagur';
  11696                }
  11697                return isFuture ? 'dag' : 'degi';
  11698            case 'dd':
  11699                if (plural$2(number)) {
  11700                    if (withoutSuffix) {
  11701                        return result + 'dagar';
  11702                    }
  11703                    return result + (isFuture ? 'daga' : 'dögum');
  11704                } else if (withoutSuffix) {
  11705                    return result + 'dagur';
  11706                }
  11707                return result + (isFuture ? 'dag' : 'degi');
  11708            case 'M':
  11709                if (withoutSuffix) {
  11710                    return 'mánuður';
  11711                }
  11712                return isFuture ? 'mánuð' : 'mánuði';
  11713            case 'MM':
  11714                if (plural$2(number)) {
  11715                    if (withoutSuffix) {
  11716                        return result + 'mánuðir';
  11717                    }
  11718                    return result + (isFuture ? 'mánuði' : 'mánuðum');
  11719                } else if (withoutSuffix) {
  11720                    return result + 'mánuður';
  11721                }
  11722                return result + (isFuture ? 'mánuð' : 'mánuði');
  11723            case 'y':
  11724                return withoutSuffix || isFuture ? 'ár' : 'ári';
  11725            case 'yy':
  11726                if (plural$2(number)) {
  11727                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
  11728                }
  11729                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
  11730        }
  11731    }
  11732
  11733    hooks.defineLocale('is', {
  11734        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
  11735            '_'
  11736        ),
  11737        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
  11738        weekdays:
  11739            'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
  11740                '_'
  11741            ),
  11742        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
  11743        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
  11744        longDateFormat: {
  11745            LT: 'H:mm',
  11746            LTS: 'H:mm:ss',
  11747            L: 'DD.MM.YYYY',
  11748            LL: 'D. MMMM YYYY',
  11749            LLL: 'D. MMMM YYYY [kl.] H:mm',
  11750            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
  11751        },
  11752        calendar: {
  11753            sameDay: '[í dag kl.] LT',
  11754            nextDay: '[á morgun kl.] LT',
  11755            nextWeek: 'dddd [kl.] LT',
  11756            lastDay: '[í gær kl.] LT',
  11757            lastWeek: '[síðasta] dddd [kl.] LT',
  11758            sameElse: 'L',
  11759        },
  11760        relativeTime: {
  11761            future: 'eftir %s',
  11762            past: 'fyrir %s síðan',
  11763            s: translate$5,
  11764            ss: translate$5,
  11765            m: translate$5,
  11766            mm: translate$5,
  11767            h: 'klukkustund',
  11768            hh: translate$5,
  11769            d: translate$5,
  11770            dd: translate$5,
  11771            M: translate$5,
  11772            MM: translate$5,
  11773            y: translate$5,
  11774            yy: translate$5,
  11775        },
  11776        dayOfMonthOrdinalParse: /\d{1,2}\./,
  11777        ordinal: '%d.',
  11778        week: {
  11779            dow: 1, // Monday is the first day of the week.
  11780            doy: 4, // The week that contains Jan 4th is the first week of the year.
  11781        },
  11782    });
  11783
  11784    //! moment.js locale configuration
  11785
  11786    hooks.defineLocale('it-ch', {
  11787        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
  11788            '_'
  11789        ),
  11790        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
  11791        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
  11792            '_'
  11793        ),
  11794        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
  11795        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
  11796        longDateFormat: {
  11797            LT: 'HH:mm',
  11798            LTS: 'HH:mm:ss',
  11799            L: 'DD.MM.YYYY',
  11800            LL: 'D MMMM YYYY',
  11801            LLL: 'D MMMM YYYY HH:mm',
  11802            LLLL: 'dddd D MMMM YYYY HH:mm',
  11803        },
  11804        calendar: {
  11805            sameDay: '[Oggi alle] LT',
  11806            nextDay: '[Domani alle] LT',
  11807            nextWeek: 'dddd [alle] LT',
  11808            lastDay: '[Ieri alle] LT',
  11809            lastWeek: function () {
  11810                switch (this.day()) {
  11811                    case 0:
  11812                        return '[la scorsa] dddd [alle] LT';
  11813                    default:
  11814                        return '[lo scorso] dddd [alle] LT';
  11815                }
  11816            },
  11817            sameElse: 'L',
  11818        },
  11819        relativeTime: {
  11820            future: function (s) {
  11821                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
  11822            },
  11823            past: '%s fa',
  11824            s: 'alcuni secondi',
  11825            ss: '%d secondi',
  11826            m: 'un minuto',
  11827            mm: '%d minuti',
  11828            h: "un'ora",
  11829            hh: '%d ore',
  11830            d: 'un giorno',
  11831            dd: '%d giorni',
  11832            M: 'un mese',
  11833            MM: '%d mesi',
  11834            y: 'un anno',
  11835            yy: '%d anni',
  11836        },
  11837        dayOfMonthOrdinalParse: /\d{1,2}º/,
  11838        ordinal: '%dº',
  11839        week: {
  11840            dow: 1, // Monday is the first day of the week.
  11841            doy: 4, // The week that contains Jan 4th is the first week of the year.
  11842        },
  11843    });
  11844
  11845    //! moment.js locale configuration
  11846
  11847    hooks.defineLocale('it', {
  11848        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
  11849            '_'
  11850        ),
  11851        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
  11852        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
  11853            '_'
  11854        ),
  11855        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
  11856        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
  11857        longDateFormat: {
  11858            LT: 'HH:mm',
  11859            LTS: 'HH:mm:ss',
  11860            L: 'DD/MM/YYYY',
  11861            LL: 'D MMMM YYYY',
  11862            LLL: 'D MMMM YYYY HH:mm',
  11863            LLLL: 'dddd D MMMM YYYY HH:mm',
  11864        },
  11865        calendar: {
  11866            sameDay: function () {
  11867                return (
  11868                    '[Oggi a' +
  11869                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
  11870                    ']LT'
  11871                );
  11872            },
  11873            nextDay: function () {
  11874                return (
  11875                    '[Domani a' +
  11876                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
  11877                    ']LT'
  11878                );
  11879            },
  11880            nextWeek: function () {
  11881                return (
  11882                    'dddd [a' +
  11883                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
  11884                    ']LT'
  11885                );
  11886            },
  11887            lastDay: function () {
  11888                return (
  11889                    '[Ieri a' +
  11890                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
  11891                    ']LT'
  11892                );
  11893            },
  11894            lastWeek: function () {
  11895                switch (this.day()) {
  11896                    case 0:
  11897                        return (
  11898                            '[La scorsa] dddd [a' +
  11899                            (this.hours() > 1
  11900                                ? 'lle '
  11901                                : this.hours() === 0
  11902                                  ? ' '
  11903                                  : "ll'") +
  11904                            ']LT'
  11905                        );
  11906                    default:
  11907                        return (
  11908                            '[Lo scorso] dddd [a' +
  11909                            (this.hours() > 1
  11910                                ? 'lle '
  11911                                : this.hours() === 0
  11912                                  ? ' '
  11913                                  : "ll'") +
  11914                            ']LT'
  11915                        );
  11916                }
  11917            },
  11918            sameElse: 'L',
  11919        },
  11920        relativeTime: {
  11921            future: 'tra %s',
  11922            past: '%s fa',
  11923            s: 'alcuni secondi',
  11924            ss: '%d secondi',
  11925            m: 'un minuto',
  11926            mm: '%d minuti',
  11927            h: "un'ora",
  11928            hh: '%d ore',
  11929            d: 'un giorno',
  11930            dd: '%d giorni',
  11931            w: 'una settimana',
  11932            ww: '%d settimane',
  11933            M: 'un mese',
  11934            MM: '%d mesi',
  11935            y: 'un anno',
  11936            yy: '%d anni',
  11937        },
  11938        dayOfMonthOrdinalParse: /\d{1,2}º/,
  11939        ordinal: '%dº',
  11940        week: {
  11941            dow: 1, // Monday is the first day of the week.
  11942            doy: 4, // The week that contains Jan 4th is the first week of the year.
  11943        },
  11944    });
  11945
  11946    //! moment.js locale configuration
  11947
  11948    hooks.defineLocale('ja', {
  11949        eras: [
  11950            {
  11951                since: '2019-05-01',
  11952                offset: 1,
  11953                name: '令和',
  11954                narrow: '㋿',
  11955                abbr: 'R',
  11956            },
  11957            {
  11958                since: '1989-01-08',
  11959                until: '2019-04-30',
  11960                offset: 1,
  11961                name: '平成',
  11962                narrow: '㍻',
  11963                abbr: 'H',
  11964            },
  11965            {
  11966                since: '1926-12-25',
  11967                until: '1989-01-07',
  11968                offset: 1,
  11969                name: '昭和',
  11970                narrow: '㍼',
  11971                abbr: 'S',
  11972            },
  11973            {
  11974                since: '1912-07-30',
  11975                until: '1926-12-24',
  11976                offset: 1,
  11977                name: '大正',
  11978                narrow: '㍽',
  11979                abbr: 'T',
  11980            },
  11981            {
  11982                since: '1873-01-01',
  11983                until: '1912-07-29',
  11984                offset: 6,
  11985                name: '明治',
  11986                narrow: '㍾',
  11987                abbr: 'M',
  11988            },
  11989            {
  11990                since: '0001-01-01',
  11991                until: '1873-12-31',
  11992                offset: 1,
  11993                name: '西暦',
  11994                narrow: 'AD',
  11995                abbr: 'AD',
  11996            },
  11997            {
  11998                since: '0000-12-31',
  11999                until: -Infinity,
  12000                offset: 1,
  12001                name: '紀元前',
  12002                narrow: 'BC',
  12003                abbr: 'BC',
  12004            },
  12005        ],
  12006        eraYearOrdinalRegex: /(元|\d+)年/,
  12007        eraYearOrdinalParse: function (input, match) {
  12008            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
  12009        },
  12010        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
  12011        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
  12012            '_'
  12013        ),
  12014        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
  12015        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
  12016        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
  12017        longDateFormat: {
  12018            LT: 'HH:mm',
  12019            LTS: 'HH:mm:ss',
  12020            L: 'YYYY/MM/DD',
  12021            LL: 'YYYY年M月D日',
  12022            LLL: 'YYYY年M月D日 HH:mm',
  12023            LLLL: 'YYYY年M月D日 dddd HH:mm',
  12024            l: 'YYYY/MM/DD',
  12025            ll: 'YYYY年M月D日',
  12026            lll: 'YYYY年M月D日 HH:mm',
  12027            llll: 'YYYY年M月D日(ddd) HH:mm',
  12028        },
  12029        meridiemParse: /午前|午後/i,
  12030        isPM: function (input) {
  12031            return input === '午後';
  12032        },
  12033        meridiem: function (hour, minute, isLower) {
  12034            if (hour < 12) {
  12035                return '午前';
  12036            } else {
  12037                return '午後';
  12038            }
  12039        },
  12040        calendar: {
  12041            sameDay: '[今日] LT',
  12042            nextDay: '[明日] LT',
  12043            nextWeek: function (now) {
  12044                if (now.week() !== this.week()) {
  12045                    return '[来週]dddd LT';
  12046                } else {
  12047                    return 'dddd LT';
  12048                }
  12049            },
  12050            lastDay: '[昨日] LT',
  12051            lastWeek: function (now) {
  12052                if (this.week() !== now.week()) {
  12053                    return '[先週]dddd LT';
  12054                } else {
  12055                    return 'dddd LT';
  12056                }
  12057            },
  12058            sameElse: 'L',
  12059        },
  12060        dayOfMonthOrdinalParse: /\d{1,2}日/,
  12061        ordinal: function (number, period) {
  12062            switch (period) {
  12063                case 'y':
  12064                    return number === 1 ? '元年' : number + '年';
  12065                case 'd':
  12066                case 'D':
  12067                case 'DDD':
  12068                    return number + '日';
  12069                default:
  12070                    return number;
  12071            }
  12072        },
  12073        relativeTime: {
  12074            future: '%s後',
  12075            past: '%s前',
  12076            s: '数秒',
  12077            ss: '%d秒',
  12078            m: '1分',
  12079            mm: '%d分',
  12080            h: '1時間',
  12081            hh: '%d時間',
  12082            d: '1日',
  12083            dd: '%d日',
  12084            M: '1ヶ月',
  12085            MM: '%dヶ月',
  12086            y: '1年',
  12087            yy: '%d年',
  12088        },
  12089    });
  12090
  12091    //! moment.js locale configuration
  12092
  12093    hooks.defineLocale('jv', {
  12094        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
  12095            '_'
  12096        ),
  12097        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
  12098        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
  12099        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
  12100        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
  12101        longDateFormat: {
  12102            LT: 'HH.mm',
  12103            LTS: 'HH.mm.ss',
  12104            L: 'DD/MM/YYYY',
  12105            LL: 'D MMMM YYYY',
  12106            LLL: 'D MMMM YYYY [pukul] HH.mm',
  12107            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
  12108        },
  12109        meridiemParse: /enjing|siyang|sonten|ndalu/,
  12110        meridiemHour: function (hour, meridiem) {
  12111            if (hour === 12) {
  12112                hour = 0;
  12113            }
  12114            if (meridiem === 'enjing') {
  12115                return hour;
  12116            } else if (meridiem === 'siyang') {
  12117                return hour >= 11 ? hour : hour + 12;
  12118            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
  12119                return hour + 12;
  12120            }
  12121        },
  12122        meridiem: function (hours, minutes, isLower) {
  12123            if (hours < 11) {
  12124                return 'enjing';
  12125            } else if (hours < 15) {
  12126                return 'siyang';
  12127            } else if (hours < 19) {
  12128                return 'sonten';
  12129            } else {
  12130                return 'ndalu';
  12131            }
  12132        },
  12133        calendar: {
  12134            sameDay: '[Dinten puniko pukul] LT',
  12135            nextDay: '[Mbenjang pukul] LT',
  12136            nextWeek: 'dddd [pukul] LT',
  12137            lastDay: '[Kala wingi pukul] LT',
  12138            lastWeek: 'dddd [kepengker pukul] LT',
  12139            sameElse: 'L',
  12140        },
  12141        relativeTime: {
  12142            future: 'wonten ing %s',
  12143            past: '%s ingkang kepengker',
  12144            s: 'sawetawis detik',
  12145            ss: '%d detik',
  12146            m: 'setunggal menit',
  12147            mm: '%d menit',
  12148            h: 'setunggal jam',
  12149            hh: '%d jam',
  12150            d: 'sedinten',
  12151            dd: '%d dinten',
  12152            M: 'sewulan',
  12153            MM: '%d wulan',
  12154            y: 'setaun',
  12155            yy: '%d taun',
  12156        },
  12157        week: {
  12158            dow: 1, // Monday is the first day of the week.
  12159            doy: 7, // The week that contains Jan 7th is the first week of the year.
  12160        },
  12161    });
  12162
  12163    //! moment.js locale configuration
  12164
  12165    hooks.defineLocale('ka', {
  12166        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
  12167            '_'
  12168        ),
  12169        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
  12170        weekdays: {
  12171            standalone:
  12172                'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(
  12173                    '_'
  12174                ),
  12175            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
  12176                '_'
  12177            ),
  12178            isFormat: /(წინა|შემდეგ)/,
  12179        },
  12180        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
  12181        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
  12182        longDateFormat: {
  12183            LT: 'HH:mm',
  12184            LTS: 'HH:mm:ss',
  12185            L: 'DD/MM/YYYY',
  12186            LL: 'D MMMM YYYY',
  12187            LLL: 'D MMMM YYYY HH:mm',
  12188            LLLL: 'dddd, D MMMM YYYY HH:mm',
  12189        },
  12190        calendar: {
  12191            sameDay: '[დღეს] LT[-ზე]',
  12192            nextDay: '[ხვალ] LT[-ზე]',
  12193            lastDay: '[გუშინ] LT[-ზე]',
  12194            nextWeek: '[შემდეგ] dddd LT[-ზე]',
  12195            lastWeek: '[წინა] dddd LT-ზე',
  12196            sameElse: 'L',
  12197        },
  12198        relativeTime: {
  12199            future: function (s) {
  12200                return s.replace(
  12201                    /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,
  12202                    function ($0, $1, $2) {
  12203                        return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
  12204                    }
  12205                );
  12206            },
  12207            past: function (s) {
  12208                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
  12209                    return s.replace(/(ი|ე)$/, 'ის წინ');
  12210                }
  12211                if (/წელი/.test(s)) {
  12212                    return s.replace(/წელი$/, 'წლის წინ');
  12213                }
  12214                return s;
  12215            },
  12216            s: 'რამდენიმე წამი',
  12217            ss: '%d წამი',
  12218            m: 'წუთი',
  12219            mm: '%d წუთი',
  12220            h: 'საათი',
  12221            hh: '%d საათი',
  12222            d: 'დღე',
  12223            dd: '%d დღე',
  12224            M: 'თვე',
  12225            MM: '%d თვე',
  12226            y: 'წელი',
  12227            yy: '%d წელი',
  12228        },
  12229        dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
  12230        ordinal: function (number) {
  12231            if (number === 0) {
  12232                return number;
  12233            }
  12234            if (number === 1) {
  12235                return number + '-ლი';
  12236            }
  12237            if (
  12238                number < 20 ||
  12239                (number <= 100 && number % 20 === 0) ||
  12240                number % 100 === 0
  12241            ) {
  12242                return 'მე-' + number;
  12243            }
  12244            return number + '-ე';
  12245        },
  12246        week: {
  12247            dow: 1,
  12248            doy: 7,
  12249        },
  12250    });
  12251
  12252    //! moment.js locale configuration
  12253
  12254    var suffixes$1 = {
  12255        0: '-ші',
  12256        1: '-ші',
  12257        2: '-ші',
  12258        3: '-ші',
  12259        4: '-ші',
  12260        5: '-ші',
  12261        6: '-шы',
  12262        7: '-ші',
  12263        8: '-ші',
  12264        9: '-шы',
  12265        10: '-шы',
  12266        20: '-шы',
  12267        30: '-шы',
  12268        40: '-шы',
  12269        50: '-ші',
  12270        60: '-шы',
  12271        70: '-ші',
  12272        80: '-ші',
  12273        90: '-шы',
  12274        100: '-ші',
  12275    };
  12276
  12277    hooks.defineLocale('kk', {
  12278        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
  12279            '_'
  12280        ),
  12281        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
  12282        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
  12283            '_'
  12284        ),
  12285        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
  12286        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
  12287        longDateFormat: {
  12288            LT: 'HH:mm',
  12289            LTS: 'HH:mm:ss',
  12290            L: 'DD.MM.YYYY',
  12291            LL: 'D MMMM YYYY',
  12292            LLL: 'D MMMM YYYY HH:mm',
  12293            LLLL: 'dddd, D MMMM YYYY HH:mm',
  12294        },
  12295        calendar: {
  12296            sameDay: '[Бүгін сағат] LT',
  12297            nextDay: '[Ертең сағат] LT',
  12298            nextWeek: 'dddd [сағат] LT',
  12299            lastDay: '[Кеше сағат] LT',
  12300            lastWeek: '[Өткен аптаның] dddd [сағат] LT',
  12301            sameElse: 'L',
  12302        },
  12303        relativeTime: {
  12304            future: '%s ішінде',
  12305            past: '%s бұрын',
  12306            s: 'бірнеше секунд',
  12307            ss: '%d секунд',
  12308            m: 'бір минут',
  12309            mm: '%d минут',
  12310            h: 'бір сағат',
  12311            hh: '%d сағат',
  12312            d: 'бір күн',
  12313            dd: '%d күн',
  12314            M: 'бір ай',
  12315            MM: '%d ай',
  12316            y: 'бір жыл',
  12317            yy: '%d жыл',
  12318        },
  12319        dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
  12320        ordinal: function (number) {
  12321            var a = number % 10,
  12322                b = number >= 100 ? 100 : null;
  12323            return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);
  12324        },
  12325        week: {
  12326            dow: 1, // Monday is the first day of the week.
  12327            doy: 7, // The week that contains Jan 7th is the first week of the year.
  12328        },
  12329    });
  12330
  12331    //! moment.js locale configuration
  12332
  12333    var symbolMap$a = {
  12334            1: '១',
  12335            2: '២',
  12336            3: '៣',
  12337            4: '៤',
  12338            5: '៥',
  12339            6: '៦',
  12340            7: '៧',
  12341            8: '៨',
  12342            9: '៩',
  12343            0: '០',
  12344        },
  12345        numberMap$9 = {
  12346            '១': '1',
  12347            '២': '2',
  12348            '៣': '3',
  12349            '៤': '4',
  12350            '៥': '5',
  12351            '៦': '6',
  12352            '៧': '7',
  12353            '៨': '8',
  12354            '៩': '9',
  12355            '០': '0',
  12356        };
  12357
  12358    hooks.defineLocale('km', {
  12359        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
  12360            '_'
  12361        ),
  12362        monthsShort:
  12363            'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
  12364                '_'
  12365            ),
  12366        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
  12367        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
  12368        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
  12369        weekdaysParseExact: true,
  12370        longDateFormat: {
  12371            LT: 'HH:mm',
  12372            LTS: 'HH:mm:ss',
  12373            L: 'DD/MM/YYYY',
  12374            LL: 'D MMMM YYYY',
  12375            LLL: 'D MMMM YYYY HH:mm',
  12376            LLLL: 'dddd, D MMMM YYYY HH:mm',
  12377        },
  12378        meridiemParse: /ព្រឹក|ល្ងាច/,
  12379        isPM: function (input) {
  12380            return input === 'ល្ងាច';
  12381        },
  12382        meridiem: function (hour, minute, isLower) {
  12383            if (hour < 12) {
  12384                return 'ព្រឹក';
  12385            } else {
  12386                return 'ល្ងាច';
  12387            }
  12388        },
  12389        calendar: {
  12390            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
  12391            nextDay: '[ស្អែក ម៉ោង] LT',
  12392            nextWeek: 'dddd [ម៉ោង] LT',
  12393            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
  12394            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
  12395            sameElse: 'L',
  12396        },
  12397        relativeTime: {
  12398            future: '%sទៀត',
  12399            past: '%sមុន',
  12400            s: 'ប៉ុន្មានវិនាទី',
  12401            ss: '%d វិនាទី',
  12402            m: 'មួយនាទី',
  12403            mm: '%d នាទី',
  12404            h: 'មួយម៉ោង',
  12405            hh: '%d ម៉ោង',
  12406            d: 'មួយថ្ងៃ',
  12407            dd: '%d ថ្ងៃ',
  12408            M: 'មួយខែ',
  12409            MM: '%d ខែ',
  12410            y: 'មួយឆ្នាំ',
  12411            yy: '%d ឆ្នាំ',
  12412        },
  12413        dayOfMonthOrdinalParse: /ទី\d{1,2}/,
  12414        ordinal: 'ទី%d',
  12415        preparse: function (string) {
  12416            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
  12417                return numberMap$9[match];
  12418            });
  12419        },
  12420        postformat: function (string) {
  12421            return string.replace(/\d/g, function (match) {
  12422                return symbolMap$a[match];
  12423            });
  12424        },
  12425        week: {
  12426            dow: 1, // Monday is the first day of the week.
  12427            doy: 4, // The week that contains Jan 4th is the first week of the year.
  12428        },
  12429    });
  12430
  12431    //! moment.js locale configuration
  12432
  12433    var symbolMap$b = {
  12434            1: '೧',
  12435            2: '೨',
  12436            3: '೩',
  12437            4: '೪',
  12438            5: '೫',
  12439            6: '೬',
  12440            7: '೭',
  12441            8: '೮',
  12442            9: '೯',
  12443            0: '೦',
  12444        },
  12445        numberMap$a = {
  12446            '೧': '1',
  12447            '೨': '2',
  12448            '೩': '3',
  12449            '೪': '4',
  12450            '೫': '5',
  12451            '೬': '6',
  12452            '೭': '7',
  12453            '೮': '8',
  12454            '೯': '9',
  12455            '೦': '0',
  12456        };
  12457
  12458    hooks.defineLocale('kn', {
  12459        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
  12460            '_'
  12461        ),
  12462        monthsShort:
  12463            'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
  12464                '_'
  12465            ),
  12466        monthsParseExact: true,
  12467        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
  12468            '_'
  12469        ),
  12470        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
  12471        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
  12472        longDateFormat: {
  12473            LT: 'A h:mm',
  12474            LTS: 'A h:mm:ss',
  12475            L: 'DD/MM/YYYY',
  12476            LL: 'D MMMM YYYY',
  12477            LLL: 'D MMMM YYYY, A h:mm',
  12478            LLLL: 'dddd, D MMMM YYYY, A h:mm',
  12479        },
  12480        calendar: {
  12481            sameDay: '[ಇಂದು] LT',
  12482            nextDay: '[ನಾಳೆ] LT',
  12483            nextWeek: 'dddd, LT',
  12484            lastDay: '[ನಿನ್ನೆ] LT',
  12485            lastWeek: '[ಕೊನೆಯ] dddd, LT',
  12486            sameElse: 'L',
  12487        },
  12488        relativeTime: {
  12489            future: '%s ನಂತರ',
  12490            past: '%s ಹಿಂದೆ',
  12491            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
  12492            ss: '%d ಸೆಕೆಂಡುಗಳು',
  12493            m: 'ಒಂದು ನಿಮಿಷ',
  12494            mm: '%d ನಿಮಿಷ',
  12495            h: 'ಒಂದು ಗಂಟೆ',
  12496            hh: '%d ಗಂಟೆ',
  12497            d: 'ಒಂದು ದಿನ',
  12498            dd: '%d ದಿನ',
  12499            M: 'ಒಂದು ತಿಂಗಳು',
  12500            MM: '%d ತಿಂಗಳು',
  12501            y: 'ಒಂದು ವರ್ಷ',
  12502            yy: '%d ವರ್ಷ',
  12503        },
  12504        preparse: function (string) {
  12505            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
  12506                return numberMap$a[match];
  12507            });
  12508        },
  12509        postformat: function (string) {
  12510            return string.replace(/\d/g, function (match) {
  12511                return symbolMap$b[match];
  12512            });
  12513        },
  12514        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
  12515        meridiemHour: function (hour, meridiem) {
  12516            if (hour === 12) {
  12517                hour = 0;
  12518            }
  12519            if (meridiem === 'ರಾತ್ರಿ') {
  12520                return hour < 4 ? hour : hour + 12;
  12521            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
  12522                return hour;
  12523            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
  12524                return hour >= 10 ? hour : hour + 12;
  12525            } else if (meridiem === 'ಸಂಜೆ') {
  12526                return hour + 12;
  12527            }
  12528        },
  12529        meridiem: function (hour, minute, isLower) {
  12530            if (hour < 4) {
  12531                return 'ರಾತ್ರಿ';
  12532            } else if (hour < 10) {
  12533                return 'ಬೆಳಿಗ್ಗೆ';
  12534            } else if (hour < 17) {
  12535                return 'ಮಧ್ಯಾಹ್ನ';
  12536            } else if (hour < 20) {
  12537                return 'ಸಂಜೆ';
  12538            } else {
  12539                return 'ರಾತ್ರಿ';
  12540            }
  12541        },
  12542        dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
  12543        ordinal: function (number) {
  12544            return number + 'ನೇ';
  12545        },
  12546        week: {
  12547            dow: 0, // Sunday is the first day of the week.
  12548            doy: 6, // The week that contains Jan 6th is the first week of the year.
  12549        },
  12550    });
  12551
  12552    //! moment.js locale configuration
  12553
  12554    hooks.defineLocale('ko', {
  12555        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
  12556        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
  12557            '_'
  12558        ),
  12559        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
  12560        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
  12561        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
  12562        longDateFormat: {
  12563            LT: 'A h:mm',
  12564            LTS: 'A h:mm:ss',
  12565            L: 'YYYY.MM.DD.',
  12566            LL: 'YYYY년 MMMM D일',
  12567            LLL: 'YYYY년 MMMM D일 A h:mm',
  12568            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
  12569            l: 'YYYY.MM.DD.',
  12570            ll: 'YYYY년 MMMM D일',
  12571            lll: 'YYYY년 MMMM D일 A h:mm',
  12572            llll: 'YYYY년 MMMM D일 dddd A h:mm',
  12573        },
  12574        calendar: {
  12575            sameDay: '오늘 LT',
  12576            nextDay: '내일 LT',
  12577            nextWeek: 'dddd LT',
  12578            lastDay: '어제 LT',
  12579            lastWeek: '지난주 dddd LT',
  12580            sameElse: 'L',
  12581        },
  12582        relativeTime: {
  12583            future: '%s 후',
  12584            past: '%s 전',
  12585            s: '몇 초',
  12586            ss: '%d초',
  12587            m: '1분',
  12588            mm: '%d분',
  12589            h: '한 시간',
  12590            hh: '%d시간',
  12591            d: '하루',
  12592            dd: '%d일',
  12593            M: '한 달',
  12594            MM: '%d달',
  12595            y: '일 년',
  12596            yy: '%d년',
  12597        },
  12598        dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
  12599        ordinal: function (number, period) {
  12600            switch (period) {
  12601                case 'd':
  12602                case 'D':
  12603                case 'DDD':
  12604                    return number + '일';
  12605                case 'M':
  12606                    return number + '월';
  12607                case 'w':
  12608                case 'W':
  12609                    return number + '주';
  12610                default:
  12611                    return number;
  12612            }
  12613        },
  12614        meridiemParse: /오전|오후/,
  12615        isPM: function (token) {
  12616            return token === '오후';
  12617        },
  12618        meridiem: function (hour, minute, isUpper) {
  12619            return hour < 12 ? '오전' : '오후';
  12620        },
  12621    });
  12622
  12623    //! moment.js locale configuration
  12624
  12625    function processRelativeTime$7(num, withoutSuffix, key, isFuture) {
  12626        var format = {
  12627            s: ['çend sanîye', 'çend sanîyeyan'],
  12628            ss: [num + ' sanîye', num + ' sanîyeyan'],
  12629            m: ['deqîqeyek', 'deqîqeyekê'],
  12630            mm: [num + ' deqîqe', num + ' deqîqeyan'],
  12631            h: ['saetek', 'saetekê'],
  12632            hh: [num + ' saet', num + ' saetan'],
  12633            d: ['rojek', 'rojekê'],
  12634            dd: [num + ' roj', num + ' rojan'],
  12635            w: ['hefteyek', 'hefteyekê'],
  12636            ww: [num + ' hefte', num + ' hefteyan'],
  12637            M: ['mehek', 'mehekê'],
  12638            MM: [num + ' meh', num + ' mehan'],
  12639            y: ['salek', 'salekê'],
  12640            yy: [num + ' sal', num + ' salan'],
  12641        };
  12642        return withoutSuffix ? format[key][0] : format[key][1];
  12643    }
  12644    // function obliqueNumSuffix(num) {
  12645    //     if(num.includes(':'))
  12646    //         num = parseInt(num.split(':')[0]);
  12647    //     else
  12648    //         num = parseInt(num);
  12649    //     return num == 0 || num % 10 == 1 ? 'ê'
  12650    //                         : (num > 10 && num % 10 == 0 ? 'î' : 'an');
  12651    // }
  12652    function ezafeNumSuffix(num) {
  12653        num = '' + num;
  12654        var l = num.substring(num.length - 1),
  12655            ll = num.length > 1 ? num.substring(num.length - 2) : '';
  12656        if (
  12657            !(ll == 12 || ll == 13) &&
  12658            (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')
  12659        )
  12660            return 'yê';
  12661        return 'ê';
  12662    }
  12663
  12664    hooks.defineLocale('ku-kmr', {
  12665        // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)
  12666        // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'
  12667        // But the names below are more well known and handy
  12668        months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(
  12669            '_'
  12670        ),
  12671        monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),
  12672        monthsParseExact: true,
  12673        weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),
  12674        weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),
  12675        weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),
  12676        meridiem: function (hours, minutes, isLower) {
  12677            if (hours < 12) {
  12678                return isLower ? 'bn' : 'BN';
  12679            } else {
  12680                return isLower ? 'pn' : 'PN';
  12681            }
  12682        },
  12683        meridiemParse: /bn|BN|pn|PN/,
  12684        longDateFormat: {
  12685            LT: 'HH:mm',
  12686            LTS: 'HH:mm:ss',
  12687            L: 'DD.MM.YYYY',
  12688            LL: 'Do MMMM[a] YYYY[an]',
  12689            LLL: 'Do MMMM[a] YYYY[an] HH:mm',
  12690            LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',
  12691            ll: 'Do MMM[.] YYYY[an]',
  12692            lll: 'Do MMM[.] YYYY[an] HH:mm',
  12693            llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',
  12694        },
  12695        calendar: {
  12696            sameDay: '[Îro di saet] LT [de]',
  12697            nextDay: '[Sibê di saet] LT [de]',
  12698            nextWeek: 'dddd [di saet] LT [de]',
  12699            lastDay: '[Duh di saet] LT [de]',
  12700            lastWeek: 'dddd[a borî di saet] LT [de]',
  12701            sameElse: 'L',
  12702        },
  12703        relativeTime: {
  12704            future: 'di %s de',
  12705            past: 'berî %s',
  12706            s: processRelativeTime$7,
  12707            ss: processRelativeTime$7,
  12708            m: processRelativeTime$7,
  12709            mm: processRelativeTime$7,
  12710            h: processRelativeTime$7,
  12711            hh: processRelativeTime$7,
  12712            d: processRelativeTime$7,
  12713            dd: processRelativeTime$7,
  12714            w: processRelativeTime$7,
  12715            ww: processRelativeTime$7,
  12716            M: processRelativeTime$7,
  12717            MM: processRelativeTime$7,
  12718            y: processRelativeTime$7,
  12719            yy: processRelativeTime$7,
  12720        },
  12721        dayOfMonthOrdinalParse: /\d{1,2}(?:yê|ê|\.)/,
  12722        ordinal: function (num, period) {
  12723            var p = period.toLowerCase();
  12724            if (p.includes('w') || p.includes('m')) return num + '.';
  12725
  12726            return num + ezafeNumSuffix(num);
  12727        },
  12728        week: {
  12729            dow: 1, // Monday is the first day of the week.
  12730            doy: 4, // The week that contains Jan 4th is the first week of the year.
  12731        },
  12732    });
  12733
  12734    //! moment.js locale configuration
  12735
  12736    var symbolMap$c = {
  12737            1: '١',
  12738            2: '٢',
  12739            3: '٣',
  12740            4: '٤',
  12741            5: '٥',
  12742            6: '٦',
  12743            7: '٧',
  12744            8: '٨',
  12745            9: '٩',
  12746            0: '٠',
  12747        },
  12748        numberMap$b = {
  12749            '١': '1',
  12750            '٢': '2',
  12751            '٣': '3',
  12752            '٤': '4',
  12753            '٥': '5',
  12754            '٦': '6',
  12755            '٧': '7',
  12756            '٨': '8',
  12757            '٩': '9',
  12758            '٠': '0',
  12759        },
  12760        months$8 = [
  12761            'کانونی دووەم',
  12762            'شوبات',
  12763            'ئازار',
  12764            'نیسان',
  12765            'ئایار',
  12766            'حوزەیران',
  12767            'تەمموز',
  12768            'ئاب',
  12769            'ئەیلوول',
  12770            'تشرینی یەكەم',
  12771            'تشرینی دووەم',
  12772            'كانونی یەکەم',
  12773        ];
  12774
  12775    hooks.defineLocale('ku', {
  12776        months: months$8,
  12777        monthsShort: months$8,
  12778        weekdays:
  12779            'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
  12780                '_'
  12781            ),
  12782        weekdaysShort:
  12783            'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),
  12784        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
  12785        weekdaysParseExact: true,
  12786        longDateFormat: {
  12787            LT: 'HH:mm',
  12788            LTS: 'HH:mm:ss',
  12789            L: 'DD/MM/YYYY',
  12790            LL: 'D MMMM YYYY',
  12791            LLL: 'D MMMM YYYY HH:mm',
  12792            LLLL: 'dddd, D MMMM YYYY HH:mm',
  12793        },
  12794        meridiemParse: /ئێواره‌|به‌یانی/,
  12795        isPM: function (input) {
  12796            return /ئێواره‌/.test(input);
  12797        },
  12798        meridiem: function (hour, minute, isLower) {
  12799            if (hour < 12) {
  12800                return 'به‌یانی';
  12801            } else {
  12802                return 'ئێواره‌';
  12803            }
  12804        },
  12805        calendar: {
  12806            sameDay: '[ئه‌مرۆ كاتژمێر] LT',
  12807            nextDay: '[به‌یانی كاتژمێر] LT',
  12808            nextWeek: 'dddd [كاتژمێر] LT',
  12809            lastDay: '[دوێنێ كاتژمێر] LT',
  12810            lastWeek: 'dddd [كاتژمێر] LT',
  12811            sameElse: 'L',
  12812        },
  12813        relativeTime: {
  12814            future: 'له‌ %s',
  12815            past: '%s',
  12816            s: 'چه‌ند چركه‌یه‌ك',
  12817            ss: 'چركه‌ %d',
  12818            m: 'یه‌ك خوله‌ك',
  12819            mm: '%d خوله‌ك',
  12820            h: 'یه‌ك كاتژمێر',
  12821            hh: '%d كاتژمێر',
  12822            d: 'یه‌ك ڕۆژ',
  12823            dd: '%d ڕۆژ',
  12824            M: 'یه‌ك مانگ',
  12825            MM: '%d مانگ',
  12826            y: 'یه‌ك ساڵ',
  12827            yy: '%d ساڵ',
  12828        },
  12829        preparse: function (string) {
  12830            return string
  12831                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
  12832                    return numberMap$b[match];
  12833                })
  12834                .replace(/،/g, ',');
  12835        },
  12836        postformat: function (string) {
  12837            return string
  12838                .replace(/\d/g, function (match) {
  12839                    return symbolMap$c[match];
  12840                })
  12841                .replace(/,/g, '،');
  12842        },
  12843        week: {
  12844            dow: 6, // Saturday is the first day of the week.
  12845            doy: 12, // The week that contains Jan 12th is the first week of the year.
  12846        },
  12847    });
  12848
  12849    //! moment.js locale configuration
  12850
  12851    var suffixes$2 = {
  12852        0: '-чү',
  12853        1: '-чи',
  12854        2: '-чи',
  12855        3: '-чү',
  12856        4: '-чү',
  12857        5: '-чи',
  12858        6: '-чы',
  12859        7: '-чи',
  12860        8: '-чи',
  12861        9: '-чу',
  12862        10: '-чу',
  12863        20: '-чы',
  12864        30: '-чу',
  12865        40: '-чы',
  12866        50: '-чү',
  12867        60: '-чы',
  12868        70: '-чи',
  12869        80: '-чи',
  12870        90: '-чу',
  12871        100: '-чү',
  12872    };
  12873
  12874    hooks.defineLocale('ky', {
  12875        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
  12876            '_'
  12877        ),
  12878        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
  12879            '_'
  12880        ),
  12881        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
  12882            '_'
  12883        ),
  12884        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
  12885        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
  12886        longDateFormat: {
  12887            LT: 'HH:mm',
  12888            LTS: 'HH:mm:ss',
  12889            L: 'DD.MM.YYYY',
  12890            LL: 'D MMMM YYYY',
  12891            LLL: 'D MMMM YYYY HH:mm',
  12892            LLLL: 'dddd, D MMMM YYYY HH:mm',
  12893        },
  12894        calendar: {
  12895            sameDay: '[Бүгүн саат] LT',
  12896            nextDay: '[Эртең саат] LT',
  12897            nextWeek: 'dddd [саат] LT',
  12898            lastDay: '[Кечээ саат] LT',
  12899            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
  12900            sameElse: 'L',
  12901        },
  12902        relativeTime: {
  12903            future: '%s ичинде',
  12904            past: '%s мурун',
  12905            s: 'бирнече секунд',
  12906            ss: '%d секунд',
  12907            m: 'бир мүнөт',
  12908            mm: '%d мүнөт',
  12909            h: 'бир саат',
  12910            hh: '%d саат',
  12911            d: 'бир күн',
  12912            dd: '%d күн',
  12913            M: 'бир ай',
  12914            MM: '%d ай',
  12915            y: 'бир жыл',
  12916            yy: '%d жыл',
  12917        },
  12918        dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
  12919        ordinal: function (number) {
  12920            var a = number % 10,
  12921                b = number >= 100 ? 100 : null;
  12922            return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);
  12923        },
  12924        week: {
  12925            dow: 1, // Monday is the first day of the week.
  12926            doy: 7, // The week that contains Jan 7th is the first week of the year.
  12927        },
  12928    });
  12929
  12930    //! moment.js locale configuration
  12931
  12932    function processRelativeTime$8(number, withoutSuffix, key, isFuture) {
  12933        var format = {
  12934            m: ['eng Minutt', 'enger Minutt'],
  12935            h: ['eng Stonn', 'enger Stonn'],
  12936            d: ['een Dag', 'engem Dag'],
  12937            M: ['ee Mount', 'engem Mount'],
  12938            y: ['ee Joer', 'engem Joer'],
  12939        };
  12940        return withoutSuffix ? format[key][0] : format[key][1];
  12941    }
  12942    function processFutureTime(string) {
  12943        var number = string.substr(0, string.indexOf(' '));
  12944        if (eifelerRegelAppliesToNumber(number)) {
  12945            return 'a ' + string;
  12946        }
  12947        return 'an ' + string;
  12948    }
  12949    function processPastTime(string) {
  12950        var number = string.substr(0, string.indexOf(' '));
  12951        if (eifelerRegelAppliesToNumber(number)) {
  12952            return 'viru ' + string;
  12953        }
  12954        return 'virun ' + string;
  12955    }
  12956    /**
  12957     * Returns true if the word before the given number loses the '-n' ending.
  12958     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
  12959     *
  12960     * @param number {integer}
  12961     * @returns {boolean}
  12962     */
  12963    function eifelerRegelAppliesToNumber(number) {
  12964        number = parseInt(number, 10);
  12965        if (isNaN(number)) {
  12966            return false;
  12967        }
  12968        if (number < 0) {
  12969            // Negative Number --> always true
  12970            return true;
  12971        } else if (number < 10) {
  12972            // Only 1 digit
  12973            if (4 <= number && number <= 7) {
  12974                return true;
  12975            }
  12976            return false;
  12977        } else if (number < 100) {
  12978            // 2 digits
  12979            var lastDigit = number % 10,
  12980                firstDigit = number / 10;
  12981            if (lastDigit === 0) {
  12982                return eifelerRegelAppliesToNumber(firstDigit);
  12983            }
  12984            return eifelerRegelAppliesToNumber(lastDigit);
  12985        } else if (number < 10000) {
  12986            // 3 or 4 digits --> recursively check first digit
  12987            while (number >= 10) {
  12988                number = number / 10;
  12989            }
  12990            return eifelerRegelAppliesToNumber(number);
  12991        } else {
  12992            // Anything larger than 4 digits: recursively check first n-3 digits
  12993            number = number / 1000;
  12994            return eifelerRegelAppliesToNumber(number);
  12995        }
  12996    }
  12997
  12998    hooks.defineLocale('lb', {
  12999        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
  13000            '_'
  13001        ),
  13002        monthsShort:
  13003            'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
  13004                '_'
  13005            ),
  13006        monthsParseExact: true,
  13007        weekdays:
  13008            'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
  13009                '_'
  13010            ),
  13011        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
  13012        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
  13013        weekdaysParseExact: true,
  13014        longDateFormat: {
  13015            LT: 'H:mm [Auer]',
  13016            LTS: 'H:mm:ss [Auer]',
  13017            L: 'DD.MM.YYYY',
  13018            LL: 'D. MMMM YYYY',
  13019            LLL: 'D. MMMM YYYY H:mm [Auer]',
  13020            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
  13021        },
  13022        calendar: {
  13023            sameDay: '[Haut um] LT',
  13024            sameElse: 'L',
  13025            nextDay: '[Muer um] LT',
  13026            nextWeek: 'dddd [um] LT',
  13027            lastDay: '[Gëschter um] LT',
  13028            lastWeek: function () {
  13029                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
  13030                switch (this.day()) {
  13031                    case 2:
  13032                    case 4:
  13033                        return '[Leschten] dddd [um] LT';
  13034                    default:
  13035                        return '[Leschte] dddd [um] LT';
  13036                }
  13037            },
  13038        },
  13039        relativeTime: {
  13040            future: processFutureTime,
  13041            past: processPastTime,
  13042            s: 'e puer Sekonnen',
  13043            ss: '%d Sekonnen',
  13044            m: processRelativeTime$8,
  13045            mm: '%d Minutten',
  13046            h: processRelativeTime$8,
  13047            hh: '%d Stonnen',
  13048            d: processRelativeTime$8,
  13049            dd: '%d Deeg',
  13050            M: processRelativeTime$8,
  13051            MM: '%d Méint',
  13052            y: processRelativeTime$8,
  13053            yy: '%d Joer',
  13054        },
  13055        dayOfMonthOrdinalParse: /\d{1,2}\./,
  13056        ordinal: '%d.',
  13057        week: {
  13058            dow: 1, // Monday is the first day of the week.
  13059            doy: 4, // The week that contains Jan 4th is the first week of the year.
  13060        },
  13061    });
  13062
  13063    //! moment.js locale configuration
  13064
  13065    hooks.defineLocale('lo', {
  13066        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
  13067            '_'
  13068        ),
  13069        monthsShort:
  13070            'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
  13071                '_'
  13072            ),
  13073        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
  13074        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
  13075        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
  13076        weekdaysParseExact: true,
  13077        longDateFormat: {
  13078            LT: 'HH:mm',
  13079            LTS: 'HH:mm:ss',
  13080            L: 'DD/MM/YYYY',
  13081            LL: 'D MMMM YYYY',
  13082            LLL: 'D MMMM YYYY HH:mm',
  13083            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
  13084        },
  13085        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
  13086        isPM: function (input) {
  13087            return input === 'ຕອນແລງ';
  13088        },
  13089        meridiem: function (hour, minute, isLower) {
  13090            if (hour < 12) {
  13091                return 'ຕອນເຊົ້າ';
  13092            } else {
  13093                return 'ຕອນແລງ';
  13094            }
  13095        },
  13096        calendar: {
  13097            sameDay: '[ມື້ນີ້ເວລາ] LT',
  13098            nextDay: '[ມື້ອື່ນເວລາ] LT',
  13099            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
  13100            lastDay: '[ມື້ວານນີ້ເວລາ] LT',
  13101            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
  13102            sameElse: 'L',
  13103        },
  13104        relativeTime: {
  13105            future: 'ອີກ %s',
  13106            past: '%sຜ່ານມາ',
  13107            s: 'ບໍ່ເທົ່າໃດວິນາທີ',
  13108            ss: '%d ວິນາທີ',
  13109            m: '1 ນາທີ',
  13110            mm: '%d ນາທີ',
  13111            h: '1 ຊົ່ວໂມງ',
  13112            hh: '%d ຊົ່ວໂມງ',
  13113            d: '1 ມື້',
  13114            dd: '%d ມື້',
  13115            M: '1 ເດືອນ',
  13116            MM: '%d ເດືອນ',
  13117            y: '1 ປີ',
  13118            yy: '%d ປີ',
  13119        },
  13120        dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
  13121        ordinal: function (number) {
  13122            return 'ທີ່' + number;
  13123        },
  13124    });
  13125
  13126    //! moment.js locale configuration
  13127
  13128    var units = {
  13129        ss: 'sekundė_sekundžių_sekundes',
  13130        m: 'minutė_minutės_minutę',
  13131        mm: 'minutės_minučių_minutes',
  13132        h: 'valanda_valandos_valandą',
  13133        hh: 'valandos_valandų_valandas',
  13134        d: 'diena_dienos_dieną',
  13135        dd: 'dienos_dienų_dienas',
  13136        M: 'mėnuo_mėnesio_mėnesį',
  13137        MM: 'mėnesiai_mėnesių_mėnesius',
  13138        y: 'metai_metų_metus',
  13139        yy: 'metai_metų_metus',
  13140    };
  13141    function translateSeconds(number, withoutSuffix, key, isFuture) {
  13142        if (withoutSuffix) {
  13143            return 'kelios sekundės';
  13144        } else {
  13145            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
  13146        }
  13147    }
  13148    function translateSingular(number, withoutSuffix, key, isFuture) {
  13149        return withoutSuffix
  13150            ? forms(key)[0]
  13151            : isFuture
  13152              ? forms(key)[1]
  13153              : forms(key)[2];
  13154    }
  13155    function special(number) {
  13156        return number % 10 === 0 || (number > 10 && number < 20);
  13157    }
  13158    function forms(key) {
  13159        return units[key].split('_');
  13160    }
  13161    function translate$6(number, withoutSuffix, key, isFuture) {
  13162        var result = number + ' ';
  13163        if (number === 1) {
  13164            return (
  13165                result + translateSingular(number, withoutSuffix, key[0], isFuture)
  13166            );
  13167        } else if (withoutSuffix) {
  13168            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
  13169        } else {
  13170            if (isFuture) {
  13171                return result + forms(key)[1];
  13172            } else {
  13173                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
  13174            }
  13175        }
  13176    }
  13177    hooks.defineLocale('lt', {
  13178        months: {
  13179            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
  13180                '_'
  13181            ),
  13182            standalone:
  13183                'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
  13184                    '_'
  13185                ),
  13186            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
  13187        },
  13188        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
  13189        weekdays: {
  13190            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
  13191                '_'
  13192            ),
  13193            standalone:
  13194                'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
  13195                    '_'
  13196                ),
  13197            isFormat: /dddd HH:mm/,
  13198        },
  13199        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
  13200        weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),
  13201        weekdaysParseExact: true,
  13202        longDateFormat: {
  13203            LT: 'HH:mm',
  13204            LTS: 'HH:mm:ss',
  13205            L: 'YYYY-MM-DD',
  13206            LL: 'YYYY [m.] MMMM D [d.]',
  13207            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
  13208            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
  13209            l: 'YYYY-MM-DD',
  13210            ll: 'YYYY [m.] MMMM D [d.]',
  13211            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
  13212            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
  13213        },
  13214        calendar: {
  13215            sameDay: '[Šiandien] LT',
  13216            nextDay: '[Rytoj] LT',
  13217            nextWeek: 'dddd LT',
  13218            lastDay: '[Vakar] LT',
  13219            lastWeek: '[Praėjusį] dddd LT',
  13220            sameElse: 'L',
  13221        },
  13222        relativeTime: {
  13223            future: 'po %s',
  13224            past: 'prieš %s',
  13225            s: translateSeconds,
  13226            ss: translate$6,
  13227            m: translateSingular,
  13228            mm: translate$6,
  13229            h: translateSingular,
  13230            hh: translate$6,
  13231            d: translateSingular,
  13232            dd: translate$6,
  13233            M: translateSingular,
  13234            MM: translate$6,
  13235            y: translateSingular,
  13236            yy: translate$6,
  13237        },
  13238        dayOfMonthOrdinalParse: /\d{1,2}-oji/,
  13239        ordinal: function (number) {
  13240            return number + '-oji';
  13241        },
  13242        week: {
  13243            dow: 1, // Monday is the first day of the week.
  13244            doy: 4, // The week that contains Jan 4th is the first week of the year.
  13245        },
  13246    });
  13247
  13248    //! moment.js locale configuration
  13249
  13250    var units$1 = {
  13251        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
  13252        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
  13253        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
  13254        h: 'stundas_stundām_stunda_stundas'.split('_'),
  13255        hh: 'stundas_stundām_stunda_stundas'.split('_'),
  13256        d: 'dienas_dienām_diena_dienas'.split('_'),
  13257        dd: 'dienas_dienām_diena_dienas'.split('_'),
  13258        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
  13259        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
  13260        y: 'gada_gadiem_gads_gadi'.split('_'),
  13261        yy: 'gada_gadiem_gads_gadi'.split('_'),
  13262    };
  13263    /**
  13264     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
  13265     */
  13266    function format$1(forms, number, withoutSuffix) {
  13267        if (withoutSuffix) {
  13268            // E.g. "21 minūte", "3 minūtes".
  13269            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
  13270        } else {
  13271            // E.g. "21 minūtes" as in "pēc 21 minūtes".
  13272            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
  13273            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
  13274        }
  13275    }
  13276    function relativeTimeWithPlural$1(number, withoutSuffix, key) {
  13277        return number + ' ' + format$1(units$1[key], number, withoutSuffix);
  13278    }
  13279    function relativeTimeWithSingular(number, withoutSuffix, key) {
  13280        return format$1(units$1[key], number, withoutSuffix);
  13281    }
  13282    function relativeSeconds(number, withoutSuffix) {
  13283        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
  13284    }
  13285
  13286    hooks.defineLocale('lv', {
  13287        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
  13288            '_'
  13289        ),
  13290        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
  13291        weekdays:
  13292            'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
  13293                '_'
  13294            ),
  13295        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
  13296        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
  13297        weekdaysParseExact: true,
  13298        longDateFormat: {
  13299            LT: 'HH:mm',
  13300            LTS: 'HH:mm:ss',
  13301            L: 'DD.MM.YYYY.',
  13302            LL: 'YYYY. [gada] D. MMMM',
  13303            LLL: 'YYYY. [gada] D. MMMM, HH:mm',
  13304            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
  13305        },
  13306        calendar: {
  13307            sameDay: '[Šodien pulksten] LT',
  13308            nextDay: '[Rīt pulksten] LT',
  13309            nextWeek: 'dddd [pulksten] LT',
  13310            lastDay: '[Vakar pulksten] LT',
  13311            lastWeek: '[Pagājušā] dddd [pulksten] LT',
  13312            sameElse: 'L',
  13313        },
  13314        relativeTime: {
  13315            future: 'pēc %s',
  13316            past: 'pirms %s',
  13317            s: relativeSeconds,
  13318            ss: relativeTimeWithPlural$1,
  13319            m: relativeTimeWithSingular,
  13320            mm: relativeTimeWithPlural$1,
  13321            h: relativeTimeWithSingular,
  13322            hh: relativeTimeWithPlural$1,
  13323            d: relativeTimeWithSingular,
  13324            dd: relativeTimeWithPlural$1,
  13325            M: relativeTimeWithSingular,
  13326            MM: relativeTimeWithPlural$1,
  13327            y: relativeTimeWithSingular,
  13328            yy: relativeTimeWithPlural$1,
  13329        },
  13330        dayOfMonthOrdinalParse: /\d{1,2}\./,
  13331        ordinal: '%d.',
  13332        week: {
  13333            dow: 1, // Monday is the first day of the week.
  13334            doy: 4, // The week that contains Jan 4th is the first week of the year.
  13335        },
  13336    });
  13337
  13338    //! moment.js locale configuration
  13339
  13340    var translator = {
  13341        words: {
  13342            //Different grammatical cases
  13343            ss: ['sekund', 'sekunda', 'sekundi'],
  13344            m: ['jedan minut', 'jednog minuta'],
  13345            mm: ['minut', 'minuta', 'minuta'],
  13346            h: ['jedan sat', 'jednog sata'],
  13347            hh: ['sat', 'sata', 'sati'],
  13348            dd: ['dan', 'dana', 'dana'],
  13349            MM: ['mjesec', 'mjeseca', 'mjeseci'],
  13350            yy: ['godina', 'godine', 'godina'],
  13351        },
  13352        correctGrammaticalCase: function (number, wordKey) {
  13353            return number === 1
  13354                ? wordKey[0]
  13355                : number >= 2 && number <= 4
  13356                  ? wordKey[1]
  13357                  : wordKey[2];
  13358        },
  13359        translate: function (number, withoutSuffix, key) {
  13360            var wordKey = translator.words[key];
  13361            if (key.length === 1) {
  13362                return withoutSuffix ? wordKey[0] : wordKey[1];
  13363            } else {
  13364                return (
  13365                    number +
  13366                    ' ' +
  13367                    translator.correctGrammaticalCase(number, wordKey)
  13368                );
  13369            }
  13370        },
  13371    };
  13372
  13373    hooks.defineLocale('me', {
  13374        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
  13375            '_'
  13376        ),
  13377        monthsShort:
  13378            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
  13379        monthsParseExact: true,
  13380        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
  13381            '_'
  13382        ),
  13383        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
  13384        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
  13385        weekdaysParseExact: true,
  13386        longDateFormat: {
  13387            LT: 'H:mm',
  13388            LTS: 'H:mm:ss',
  13389            L: 'DD.MM.YYYY',
  13390            LL: 'D. MMMM YYYY',
  13391            LLL: 'D. MMMM YYYY H:mm',
  13392            LLLL: 'dddd, D. MMMM YYYY H:mm',
  13393        },
  13394        calendar: {
  13395            sameDay: '[danas u] LT',
  13396            nextDay: '[sjutra u] LT',
  13397
  13398            nextWeek: function () {
  13399                switch (this.day()) {
  13400                    case 0:
  13401                        return '[u] [nedjelju] [u] LT';
  13402                    case 3:
  13403                        return '[u] [srijedu] [u] LT';
  13404                    case 6:
  13405                        return '[u] [subotu] [u] LT';
  13406                    case 1:
  13407                    case 2:
  13408                    case 4:
  13409                    case 5:
  13410                        return '[u] dddd [u] LT';
  13411                }
  13412            },
  13413            lastDay: '[juče u] LT',
  13414            lastWeek: function () {
  13415                var lastWeekDays = [
  13416                    '[prošle] [nedjelje] [u] LT',
  13417                    '[prošlog] [ponedjeljka] [u] LT',
  13418                    '[prošlog] [utorka] [u] LT',
  13419                    '[prošle] [srijede] [u] LT',
  13420                    '[prošlog] [četvrtka] [u] LT',
  13421                    '[prošlog] [petka] [u] LT',
  13422                    '[prošle] [subote] [u] LT',
  13423                ];
  13424                return lastWeekDays[this.day()];
  13425            },
  13426            sameElse: 'L',
  13427        },
  13428        relativeTime: {
  13429            future: 'za %s',
  13430            past: 'prije %s',
  13431            s: 'nekoliko sekundi',
  13432            ss: translator.translate,
  13433            m: translator.translate,
  13434            mm: translator.translate,
  13435            h: translator.translate,
  13436            hh: translator.translate,
  13437            d: 'dan',
  13438            dd: translator.translate,
  13439            M: 'mjesec',
  13440            MM: translator.translate,
  13441            y: 'godinu',
  13442            yy: translator.translate,
  13443        },
  13444        dayOfMonthOrdinalParse: /\d{1,2}\./,
  13445        ordinal: '%d.',
  13446        week: {
  13447            dow: 1, // Monday is the first day of the week.
  13448            doy: 7, // The week that contains Jan 7th is the first week of the year.
  13449        },
  13450    });
  13451
  13452    //! moment.js locale configuration
  13453
  13454    hooks.defineLocale('mi', {
  13455        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(
  13456            '_'
  13457        ),
  13458        monthsShort:
  13459            'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
  13460                '_'
  13461            ),
  13462        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
  13463        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
  13464        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
  13465        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
  13466        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
  13467        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
  13468        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
  13469        longDateFormat: {
  13470            LT: 'HH:mm',
  13471            LTS: 'HH:mm:ss',
  13472            L: 'DD/MM/YYYY',
  13473            LL: 'D MMMM YYYY',
  13474            LLL: 'D MMMM YYYY [i] HH:mm',
  13475            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
  13476        },
  13477        calendar: {
  13478            sameDay: '[i teie mahana, i] LT',
  13479            nextDay: '[apopo i] LT',
  13480            nextWeek: 'dddd [i] LT',
  13481            lastDay: '[inanahi i] LT',
  13482            lastWeek: 'dddd [whakamutunga i] LT',
  13483            sameElse: 'L',
  13484        },
  13485        relativeTime: {
  13486            future: 'i roto i %s',
  13487            past: '%s i mua',
  13488            s: 'te hēkona ruarua',
  13489            ss: '%d hēkona',
  13490            m: 'he meneti',
  13491            mm: '%d meneti',
  13492            h: 'te haora',
  13493            hh: '%d haora',
  13494            d: 'he ra',
  13495            dd: '%d ra',
  13496            M: 'he marama',
  13497            MM: '%d marama',
  13498            y: 'he tau',
  13499            yy: '%d tau',
  13500        },
  13501        dayOfMonthOrdinalParse: /\d{1,2}º/,
  13502        ordinal: '%dº',
  13503        week: {
  13504            dow: 1, // Monday is the first day of the week.
  13505            doy: 4, // The week that contains Jan 4th is the first week of the year.
  13506        },
  13507    });
  13508
  13509    //! moment.js locale configuration
  13510
  13511    hooks.defineLocale('mk', {
  13512        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
  13513            '_'
  13514        ),
  13515        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
  13516        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
  13517            '_'
  13518        ),
  13519        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
  13520        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
  13521        longDateFormat: {
  13522            LT: 'H:mm',
  13523            LTS: 'H:mm:ss',
  13524            L: 'D.MM.YYYY',
  13525            LL: 'D MMMM YYYY',
  13526            LLL: 'D MMMM YYYY H:mm',
  13527            LLLL: 'dddd, D MMMM YYYY H:mm',
  13528        },
  13529        calendar: {
  13530            sameDay: '[Денес во] LT',
  13531            nextDay: '[Утре во] LT',
  13532            nextWeek: '[Во] dddd [во] LT',
  13533            lastDay: '[Вчера во] LT',
  13534            lastWeek: function () {
  13535                switch (this.day()) {
  13536                    case 0:
  13537                    case 3:
  13538                    case 6:
  13539                        return '[Изминатата] dddd [во] LT';
  13540                    case 1:
  13541                    case 2:
  13542                    case 4:
  13543                    case 5:
  13544                        return '[Изминатиот] dddd [во] LT';
  13545                }
  13546            },
  13547            sameElse: 'L',
  13548        },
  13549        relativeTime: {
  13550            future: 'за %s',
  13551            past: 'пред %s',
  13552            s: 'неколку секунди',
  13553            ss: '%d секунди',
  13554            m: 'една минута',
  13555            mm: '%d минути',
  13556            h: 'еден час',
  13557            hh: '%d часа',
  13558            d: 'еден ден',
  13559            dd: '%d дена',
  13560            M: 'еден месец',
  13561            MM: '%d месеци',
  13562            y: 'една година',
  13563            yy: '%d години',
  13564        },
  13565        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
  13566        ordinal: function (number) {
  13567            var lastDigit = number % 10,
  13568                last2Digits = number % 100;
  13569            if (number === 0) {
  13570                return number + '-ев';
  13571            } else if (last2Digits === 0) {
  13572                return number + '-ен';
  13573            } else if (last2Digits > 10 && last2Digits < 20) {
  13574                return number + '-ти';
  13575            } else if (lastDigit === 1) {
  13576                return number + '-ви';
  13577            } else if (lastDigit === 2) {
  13578                return number + '-ри';
  13579            } else if (lastDigit === 7 || lastDigit === 8) {
  13580                return number + '-ми';
  13581            } else {
  13582                return number + '-ти';
  13583            }
  13584        },
  13585        week: {
  13586            dow: 1, // Monday is the first day of the week.
  13587            doy: 7, // The week that contains Jan 7th is the first week of the year.
  13588        },
  13589    });
  13590
  13591    //! moment.js locale configuration
  13592
  13593    hooks.defineLocale('ml', {
  13594        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
  13595            '_'
  13596        ),
  13597        monthsShort:
  13598            'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
  13599                '_'
  13600            ),
  13601        monthsParseExact: true,
  13602        weekdays:
  13603            'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
  13604                '_'
  13605            ),
  13606        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
  13607        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
  13608        longDateFormat: {
  13609            LT: 'A h:mm -നു',
  13610            LTS: 'A h:mm:ss -നു',
  13611            L: 'DD/MM/YYYY',
  13612            LL: 'D MMMM YYYY',
  13613            LLL: 'D MMMM YYYY, A h:mm -നു',
  13614            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
  13615        },
  13616        calendar: {
  13617            sameDay: '[ഇന്ന്] LT',
  13618            nextDay: '[നാളെ] LT',
  13619            nextWeek: 'dddd, LT',
  13620            lastDay: '[ഇന്നലെ] LT',
  13621            lastWeek: '[കഴിഞ്ഞ] dddd, LT',
  13622            sameElse: 'L',
  13623        },
  13624        relativeTime: {
  13625            future: '%s കഴിഞ്ഞ്',
  13626            past: '%s മുൻപ്',
  13627            s: 'അൽപ നിമിഷങ്ങൾ',
  13628            ss: '%d സെക്കൻഡ്',
  13629            m: 'ഒരു മിനിറ്റ്',
  13630            mm: '%d മിനിറ്റ്',
  13631            h: 'ഒരു മണിക്കൂർ',
  13632            hh: '%d മണിക്കൂർ',
  13633            d: 'ഒരു ദിവസം',
  13634            dd: '%d ദിവസം',
  13635            M: 'ഒരു മാസം',
  13636            MM: '%d മാസം',
  13637            y: 'ഒരു വർഷം',
  13638            yy: '%d വർഷം',
  13639        },
  13640        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
  13641        meridiemHour: function (hour, meridiem) {
  13642            if (hour === 12) {
  13643                hour = 0;
  13644            }
  13645            if (
  13646                (meridiem === 'രാത്രി' && hour >= 4) ||
  13647                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
  13648                meridiem === 'വൈകുന്നേരം'
  13649            ) {
  13650                return hour + 12;
  13651            } else {
  13652                return hour;
  13653            }
  13654        },
  13655        meridiem: function (hour, minute, isLower) {
  13656            if (hour < 4) {
  13657                return 'രാത്രി';
  13658            } else if (hour < 12) {
  13659                return 'രാവിലെ';
  13660            } else if (hour < 17) {
  13661                return 'ഉച്ച കഴിഞ്ഞ്';
  13662            } else if (hour < 20) {
  13663                return 'വൈകുന്നേരം';
  13664            } else {
  13665                return 'രാത്രി';
  13666            }
  13667        },
  13668    });
  13669
  13670    //! moment.js locale configuration
  13671
  13672    function translate$7(number, withoutSuffix, key, isFuture) {
  13673        switch (key) {
  13674            case 's':
  13675                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
  13676            case 'ss':
  13677                return number + (withoutSuffix ? ' секунд' : ' секундын');
  13678            case 'm':
  13679            case 'mm':
  13680                return number + (withoutSuffix ? ' минут' : ' минутын');
  13681            case 'h':
  13682            case 'hh':
  13683                return number + (withoutSuffix ? ' цаг' : ' цагийн');
  13684            case 'd':
  13685            case 'dd':
  13686                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
  13687            case 'M':
  13688            case 'MM':
  13689                return number + (withoutSuffix ? ' сар' : ' сарын');
  13690            case 'y':
  13691            case 'yy':
  13692                return number + (withoutSuffix ? ' жил' : ' жилийн');
  13693            default:
  13694                return number;
  13695        }
  13696    }
  13697
  13698    hooks.defineLocale('mn', {
  13699        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
  13700            '_'
  13701        ),
  13702        monthsShort:
  13703            '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
  13704                '_'
  13705            ),
  13706        monthsParseExact: true,
  13707        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
  13708        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
  13709        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
  13710        weekdaysParseExact: true,
  13711        longDateFormat: {
  13712            LT: 'HH:mm',
  13713            LTS: 'HH:mm:ss',
  13714            L: 'YYYY-MM-DD',
  13715            LL: 'YYYY оны MMMMын D',
  13716            LLL: 'YYYY оны MMMMын D HH:mm',
  13717            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
  13718        },
  13719        meridiemParse: /ҮӨ|ҮХ/i,
  13720        isPM: function (input) {
  13721            return input === 'ҮХ';
  13722        },
  13723        meridiem: function (hour, minute, isLower) {
  13724            if (hour < 12) {
  13725                return 'ҮӨ';
  13726            } else {
  13727                return 'ҮХ';
  13728            }
  13729        },
  13730        calendar: {
  13731            sameDay: '[Өнөөдөр] LT',
  13732            nextDay: '[Маргааш] LT',
  13733            nextWeek: '[Ирэх] dddd LT',
  13734            lastDay: '[Өчигдөр] LT',
  13735            lastWeek: '[Өнгөрсөн] dddd LT',
  13736            sameElse: 'L',
  13737        },
  13738        relativeTime: {
  13739            future: '%s дараа',
  13740            past: '%s өмнө',
  13741            s: translate$7,
  13742            ss: translate$7,
  13743            m: translate$7,
  13744            mm: translate$7,
  13745            h: translate$7,
  13746            hh: translate$7,
  13747            d: translate$7,
  13748            dd: translate$7,
  13749            M: translate$7,
  13750            MM: translate$7,
  13751            y: translate$7,
  13752            yy: translate$7,
  13753        },
  13754        dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
  13755        ordinal: function (number, period) {
  13756            switch (period) {
  13757                case 'd':
  13758                case 'D':
  13759                case 'DDD':
  13760                    return number + ' өдөр';
  13761                default:
  13762                    return number;
  13763            }
  13764        },
  13765    });
  13766
  13767    //! moment.js locale configuration
  13768
  13769    var symbolMap$d = {
  13770            1: '१',
  13771            2: '२',
  13772            3: '३',
  13773            4: '४',
  13774            5: '५',
  13775            6: '६',
  13776            7: '७',
  13777            8: '८',
  13778            9: '९',
  13779            0: '०',
  13780        },
  13781        numberMap$c = {
  13782            '१': '1',
  13783            '२': '2',
  13784            '३': '3',
  13785            '४': '4',
  13786            '५': '5',
  13787            '६': '6',
  13788            '७': '7',
  13789            '८': '8',
  13790            '९': '9',
  13791            '०': '0',
  13792        };
  13793
  13794    function relativeTimeMr(number, withoutSuffix, string, isFuture) {
  13795        var output = '';
  13796        if (withoutSuffix) {
  13797            switch (string) {
  13798                case 's':
  13799                    output = 'काही सेकंद';
  13800                    break;
  13801                case 'ss':
  13802                    output = '%d सेकंद';
  13803                    break;
  13804                case 'm':
  13805                    output = 'एक मिनिट';
  13806                    break;
  13807                case 'mm':
  13808                    output = '%d मिनिटे';
  13809                    break;
  13810                case 'h':
  13811                    output = 'एक तास';
  13812                    break;
  13813                case 'hh':
  13814                    output = '%d तास';
  13815                    break;
  13816                case 'd':
  13817                    output = 'एक दिवस';
  13818                    break;
  13819                case 'dd':
  13820                    output = '%d दिवस';
  13821                    break;
  13822                case 'M':
  13823                    output = 'एक महिना';
  13824                    break;
  13825                case 'MM':
  13826                    output = '%d महिने';
  13827                    break;
  13828                case 'y':
  13829                    output = 'एक वर्ष';
  13830                    break;
  13831                case 'yy':
  13832                    output = '%d वर्षे';
  13833                    break;
  13834            }
  13835        } else {
  13836            switch (string) {
  13837                case 's':
  13838                    output = 'काही सेकंदां';
  13839                    break;
  13840                case 'ss':
  13841                    output = '%d सेकंदां';
  13842                    break;
  13843                case 'm':
  13844                    output = 'एका मिनिटा';
  13845                    break;
  13846                case 'mm':
  13847                    output = '%d मिनिटां';
  13848                    break;
  13849                case 'h':
  13850                    output = 'एका तासा';
  13851                    break;
  13852                case 'hh':
  13853                    output = '%d तासां';
  13854                    break;
  13855                case 'd':
  13856                    output = 'एका दिवसा';
  13857                    break;
  13858                case 'dd':
  13859                    output = '%d दिवसां';
  13860                    break;
  13861                case 'M':
  13862                    output = 'एका महिन्या';
  13863                    break;
  13864                case 'MM':
  13865                    output = '%d महिन्यां';
  13866                    break;
  13867                case 'y':
  13868                    output = 'एका वर्षा';
  13869                    break;
  13870                case 'yy':
  13871                    output = '%d वर्षां';
  13872                    break;
  13873            }
  13874        }
  13875        return output.replace(/%d/i, number);
  13876    }
  13877
  13878    hooks.defineLocale('mr', {
  13879        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
  13880            '_'
  13881        ),
  13882        monthsShort:
  13883            'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
  13884                '_'
  13885            ),
  13886        monthsParseExact: true,
  13887        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
  13888        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
  13889        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
  13890        longDateFormat: {
  13891            LT: 'A h:mm वाजता',
  13892            LTS: 'A h:mm:ss वाजता',
  13893            L: 'DD/MM/YYYY',
  13894            LL: 'D MMMM YYYY',
  13895            LLL: 'D MMMM YYYY, A h:mm वाजता',
  13896            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
  13897        },
  13898        calendar: {
  13899            sameDay: '[आज] LT',
  13900            nextDay: '[उद्या] LT',
  13901            nextWeek: 'dddd, LT',
  13902            lastDay: '[काल] LT',
  13903            lastWeek: '[मागील] dddd, LT',
  13904            sameElse: 'L',
  13905        },
  13906        relativeTime: {
  13907            future: '%sमध्ये',
  13908            past: '%sपूर्वी',
  13909            s: relativeTimeMr,
  13910            ss: relativeTimeMr,
  13911            m: relativeTimeMr,
  13912            mm: relativeTimeMr,
  13913            h: relativeTimeMr,
  13914            hh: relativeTimeMr,
  13915            d: relativeTimeMr,
  13916            dd: relativeTimeMr,
  13917            M: relativeTimeMr,
  13918            MM: relativeTimeMr,
  13919            y: relativeTimeMr,
  13920            yy: relativeTimeMr,
  13921        },
  13922        preparse: function (string) {
  13923            return string.replace(/[१२३४५६७८९०]/g, function (match) {
  13924                return numberMap$c[match];
  13925            });
  13926        },
  13927        postformat: function (string) {
  13928            return string.replace(/\d/g, function (match) {
  13929                return symbolMap$d[match];
  13930            });
  13931        },
  13932        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
  13933        meridiemHour: function (hour, meridiem) {
  13934            if (hour === 12) {
  13935                hour = 0;
  13936            }
  13937            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
  13938                return hour;
  13939            } else if (
  13940                meridiem === 'दुपारी' ||
  13941                meridiem === 'सायंकाळी' ||
  13942                meridiem === 'रात्री'
  13943            ) {
  13944                return hour >= 12 ? hour : hour + 12;
  13945            }
  13946        },
  13947        meridiem: function (hour, minute, isLower) {
  13948            if (hour >= 0 && hour < 6) {
  13949                return 'पहाटे';
  13950            } else if (hour < 12) {
  13951                return 'सकाळी';
  13952            } else if (hour < 17) {
  13953                return 'दुपारी';
  13954            } else if (hour < 20) {
  13955                return 'सायंकाळी';
  13956            } else {
  13957                return 'रात्री';
  13958            }
  13959        },
  13960        week: {
  13961            dow: 0, // Sunday is the first day of the week.
  13962            doy: 6, // The week that contains Jan 6th is the first week of the year.
  13963        },
  13964    });
  13965
  13966    //! moment.js locale configuration
  13967
  13968    hooks.defineLocale('ms-my', {
  13969        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
  13970            '_'
  13971        ),
  13972        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
  13973        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
  13974        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
  13975        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
  13976        longDateFormat: {
  13977            LT: 'HH.mm',
  13978            LTS: 'HH.mm.ss',
  13979            L: 'DD/MM/YYYY',
  13980            LL: 'D MMMM YYYY',
  13981            LLL: 'D MMMM YYYY [pukul] HH.mm',
  13982            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
  13983        },
  13984        meridiemParse: /pagi|tengahari|petang|malam/,
  13985        meridiemHour: function (hour, meridiem) {
  13986            if (hour === 12) {
  13987                hour = 0;
  13988            }
  13989            if (meridiem === 'pagi') {
  13990                return hour;
  13991            } else if (meridiem === 'tengahari') {
  13992                return hour >= 11 ? hour : hour + 12;
  13993            } else if (meridiem === 'petang' || meridiem === 'malam') {
  13994                return hour + 12;
  13995            }
  13996        },
  13997        meridiem: function (hours, minutes, isLower) {
  13998            if (hours < 11) {
  13999                return 'pagi';
  14000            } else if (hours < 15) {
  14001                return 'tengahari';
  14002            } else if (hours < 19) {
  14003                return 'petang';
  14004            } else {
  14005                return 'malam';
  14006            }
  14007        },
  14008        calendar: {
  14009            sameDay: '[Hari ini pukul] LT',
  14010            nextDay: '[Esok pukul] LT',
  14011            nextWeek: 'dddd [pukul] LT',
  14012            lastDay: '[Kelmarin pukul] LT',
  14013            lastWeek: 'dddd [lepas pukul] LT',
  14014            sameElse: 'L',
  14015        },
  14016        relativeTime: {
  14017            future: 'dalam %s',
  14018            past: '%s yang lepas',
  14019            s: 'beberapa saat',
  14020            ss: '%d saat',
  14021            m: 'seminit',
  14022            mm: '%d minit',
  14023            h: 'sejam',
  14024            hh: '%d jam',
  14025            d: 'sehari',
  14026            dd: '%d hari',
  14027            M: 'sebulan',
  14028            MM: '%d bulan',
  14029            y: 'setahun',
  14030            yy: '%d tahun',
  14031        },
  14032        week: {
  14033            dow: 1, // Monday is the first day of the week.
  14034            doy: 7, // The week that contains Jan 7th is the first week of the year.
  14035        },
  14036    });
  14037
  14038    //! moment.js locale configuration
  14039
  14040    hooks.defineLocale('ms', {
  14041        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
  14042            '_'
  14043        ),
  14044        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
  14045        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
  14046        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
  14047        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
  14048        longDateFormat: {
  14049            LT: 'HH.mm',
  14050            LTS: 'HH.mm.ss',
  14051            L: 'DD/MM/YYYY',
  14052            LL: 'D MMMM YYYY',
  14053            LLL: 'D MMMM YYYY [pukul] HH.mm',
  14054            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
  14055        },
  14056        meridiemParse: /pagi|tengahari|petang|malam/,
  14057        meridiemHour: function (hour, meridiem) {
  14058            if (hour === 12) {
  14059                hour = 0;
  14060            }
  14061            if (meridiem === 'pagi') {
  14062                return hour;
  14063            } else if (meridiem === 'tengahari') {
  14064                return hour >= 11 ? hour : hour + 12;
  14065            } else if (meridiem === 'petang' || meridiem === 'malam') {
  14066                return hour + 12;
  14067            }
  14068        },
  14069        meridiem: function (hours, minutes, isLower) {
  14070            if (hours < 11) {
  14071                return 'pagi';
  14072            } else if (hours < 15) {
  14073                return 'tengahari';
  14074            } else if (hours < 19) {
  14075                return 'petang';
  14076            } else {
  14077                return 'malam';
  14078            }
  14079        },
  14080        calendar: {
  14081            sameDay: '[Hari ini pukul] LT',
  14082            nextDay: '[Esok pukul] LT',
  14083            nextWeek: 'dddd [pukul] LT',
  14084            lastDay: '[Kelmarin pukul] LT',
  14085            lastWeek: 'dddd [lepas pukul] LT',
  14086            sameElse: 'L',
  14087        },
  14088        relativeTime: {
  14089            future: 'dalam %s',
  14090            past: '%s yang lepas',
  14091            s: 'beberapa saat',
  14092            ss: '%d saat',
  14093            m: 'seminit',
  14094            mm: '%d minit',
  14095            h: 'sejam',
  14096            hh: '%d jam',
  14097            d: 'sehari',
  14098            dd: '%d hari',
  14099            M: 'sebulan',
  14100            MM: '%d bulan',
  14101            y: 'setahun',
  14102            yy: '%d tahun',
  14103        },
  14104        week: {
  14105            dow: 1, // Monday is the first day of the week.
  14106            doy: 7, // The week that contains Jan 7th is the first week of the year.
  14107        },
  14108    });
  14109
  14110    //! moment.js locale configuration
  14111
  14112    hooks.defineLocale('mt', {
  14113        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
  14114            '_'
  14115        ),
  14116        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
  14117        weekdays:
  14118            'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
  14119                '_'
  14120            ),
  14121        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
  14122        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
  14123        longDateFormat: {
  14124            LT: 'HH:mm',
  14125            LTS: 'HH:mm:ss',
  14126            L: 'DD/MM/YYYY',
  14127            LL: 'D MMMM YYYY',
  14128            LLL: 'D MMMM YYYY HH:mm',
  14129            LLLL: 'dddd, D MMMM YYYY HH:mm',
  14130        },
  14131        calendar: {
  14132            sameDay: '[Illum fil-]LT',
  14133            nextDay: '[Għada fil-]LT',
  14134            nextWeek: 'dddd [fil-]LT',
  14135            lastDay: '[Il-bieraħ fil-]LT',
  14136            lastWeek: 'dddd [li għadda] [fil-]LT',
  14137            sameElse: 'L',
  14138        },
  14139        relativeTime: {
  14140            future: 'f’ %s',
  14141            past: '%s ilu',
  14142            s: 'ftit sekondi',
  14143            ss: '%d sekondi',
  14144            m: 'minuta',
  14145            mm: '%d minuti',
  14146            h: 'siegħa',
  14147            hh: '%d siegħat',
  14148            d: 'ġurnata',
  14149            dd: '%d ġranet',
  14150            M: 'xahar',
  14151            MM: '%d xhur',
  14152            y: 'sena',
  14153            yy: '%d sni',
  14154        },
  14155        dayOfMonthOrdinalParse: /\d{1,2}º/,
  14156        ordinal: '%dº',
  14157        week: {
  14158            dow: 1, // Monday is the first day of the week.
  14159            doy: 4, // The week that contains Jan 4th is the first week of the year.
  14160        },
  14161    });
  14162
  14163    //! moment.js locale configuration
  14164
  14165    var symbolMap$e = {
  14166            1: '၁',
  14167            2: '၂',
  14168            3: '၃',
  14169            4: '၄',
  14170            5: '၅',
  14171            6: '၆',
  14172            7: '၇',
  14173            8: '၈',
  14174            9: '၉',
  14175            0: '၀',
  14176        },
  14177        numberMap$d = {
  14178            '၁': '1',
  14179            '၂': '2',
  14180            '၃': '3',
  14181            '၄': '4',
  14182            '၅': '5',
  14183            '၆': '6',
  14184            '၇': '7',
  14185            '၈': '8',
  14186            '၉': '9',
  14187            '၀': '0',
  14188        };
  14189
  14190    hooks.defineLocale('my', {
  14191        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
  14192            '_'
  14193        ),
  14194        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
  14195        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
  14196            '_'
  14197        ),
  14198        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
  14199        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
  14200
  14201        longDateFormat: {
  14202            LT: 'HH:mm',
  14203            LTS: 'HH:mm:ss',
  14204            L: 'DD/MM/YYYY',
  14205            LL: 'D MMMM YYYY',
  14206            LLL: 'D MMMM YYYY HH:mm',
  14207            LLLL: 'dddd D MMMM YYYY HH:mm',
  14208        },
  14209        calendar: {
  14210            sameDay: '[ယနေ.] LT [မှာ]',
  14211            nextDay: '[မနက်ဖြန်] LT [မှာ]',
  14212            nextWeek: 'dddd LT [မှာ]',
  14213            lastDay: '[မနေ.က] LT [မှာ]',
  14214            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
  14215            sameElse: 'L',
  14216        },
  14217        relativeTime: {
  14218            future: 'လာမည့် %s မှာ',
  14219            past: 'လွန်ခဲ့သော %s က',
  14220            s: 'စက္ကန်.အနည်းငယ်',
  14221            ss: '%d စက္ကန့်',
  14222            m: 'တစ်မိနစ်',
  14223            mm: '%d မိနစ်',
  14224            h: 'တစ်နာရီ',
  14225            hh: '%d နာရီ',
  14226            d: 'တစ်ရက်',
  14227            dd: '%d ရက်',
  14228            M: 'တစ်လ',
  14229            MM: '%d လ',
  14230            y: 'တစ်နှစ်',
  14231            yy: '%d နှစ်',
  14232        },
  14233        preparse: function (string) {
  14234            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
  14235                return numberMap$d[match];
  14236            });
  14237        },
  14238        postformat: function (string) {
  14239            return string.replace(/\d/g, function (match) {
  14240                return symbolMap$e[match];
  14241            });
  14242        },
  14243        week: {
  14244            dow: 1, // Monday is the first day of the week.
  14245            doy: 4, // The week that contains Jan 4th is the first week of the year.
  14246        },
  14247    });
  14248
  14249    //! moment.js locale configuration
  14250
  14251    hooks.defineLocale('nb', {
  14252        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
  14253            '_'
  14254        ),
  14255        monthsShort:
  14256            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
  14257        monthsParseExact: true,
  14258        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
  14259        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
  14260        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
  14261        weekdaysParseExact: true,
  14262        longDateFormat: {
  14263            LT: 'HH:mm',
  14264            LTS: 'HH:mm:ss',
  14265            L: 'DD.MM.YYYY',
  14266            LL: 'D. MMMM YYYY',
  14267            LLL: 'D. MMMM YYYY [kl.] HH:mm',
  14268            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
  14269        },
  14270        calendar: {
  14271            sameDay: '[i dag kl.] LT',
  14272            nextDay: '[i morgen kl.] LT',
  14273            nextWeek: 'dddd [kl.] LT',
  14274            lastDay: '[i går kl.] LT',
  14275            lastWeek: '[forrige] dddd [kl.] LT',
  14276            sameElse: 'L',
  14277        },
  14278        relativeTime: {
  14279            future: 'om %s',
  14280            past: '%s siden',
  14281            s: 'noen sekunder',
  14282            ss: '%d sekunder',
  14283            m: 'ett minutt',
  14284            mm: '%d minutter',
  14285            h: 'én time',
  14286            hh: '%d timer',
  14287            d: 'én dag',
  14288            dd: '%d dager',
  14289            w: 'én uke',
  14290            ww: '%d uker',
  14291            M: 'én måned',
  14292            MM: '%d måneder',
  14293            y: 'ett år',
  14294            yy: '%d år',
  14295        },
  14296        dayOfMonthOrdinalParse: /\d{1,2}\./,
  14297        ordinal: '%d.',
  14298        week: {
  14299            dow: 1, // Monday is the first day of the week.
  14300            doy: 4, // The week that contains Jan 4th is the first week of the year.
  14301        },
  14302    });
  14303
  14304    //! moment.js locale configuration
  14305
  14306    var symbolMap$f = {
  14307            1: '१',
  14308            2: '२',
  14309            3: '३',
  14310            4: '४',
  14311            5: '५',
  14312            6: '६',
  14313            7: '७',
  14314            8: '८',
  14315            9: '९',
  14316            0: '०',
  14317        },
  14318        numberMap$e = {
  14319            '१': '1',
  14320            '२': '2',
  14321            '३': '3',
  14322            '४': '4',
  14323            '५': '5',
  14324            '६': '6',
  14325            '७': '7',
  14326            '८': '8',
  14327            '९': '9',
  14328            '०': '0',
  14329        };
  14330
  14331    hooks.defineLocale('ne', {
  14332        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
  14333            '_'
  14334        ),
  14335        monthsShort:
  14336            'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
  14337                '_'
  14338            ),
  14339        monthsParseExact: true,
  14340        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
  14341            '_'
  14342        ),
  14343        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
  14344        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
  14345        weekdaysParseExact: true,
  14346        longDateFormat: {
  14347            LT: 'Aको h:mm बजे',
  14348            LTS: 'Aको h:mm:ss बजे',
  14349            L: 'DD/MM/YYYY',
  14350            LL: 'D MMMM YYYY',
  14351            LLL: 'D MMMM YYYY, Aको h:mm बजे',
  14352            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
  14353        },
  14354        preparse: function (string) {
  14355            return string.replace(/[१२३४५६७८९०]/g, function (match) {
  14356                return numberMap$e[match];
  14357            });
  14358        },
  14359        postformat: function (string) {
  14360            return string.replace(/\d/g, function (match) {
  14361                return symbolMap$f[match];
  14362            });
  14363        },
  14364        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
  14365        meridiemHour: function (hour, meridiem) {
  14366            if (hour === 12) {
  14367                hour = 0;
  14368            }
  14369            if (meridiem === 'राति') {
  14370                return hour < 4 ? hour : hour + 12;
  14371            } else if (meridiem === 'बिहान') {
  14372                return hour;
  14373            } else if (meridiem === 'दिउँसो') {
  14374                return hour >= 10 ? hour : hour + 12;
  14375            } else if (meridiem === 'साँझ') {
  14376                return hour + 12;
  14377            }
  14378        },
  14379        meridiem: function (hour, minute, isLower) {
  14380            if (hour < 3) {
  14381                return 'राति';
  14382            } else if (hour < 12) {
  14383                return 'बिहान';
  14384            } else if (hour < 16) {
  14385                return 'दिउँसो';
  14386            } else if (hour < 20) {
  14387                return 'साँझ';
  14388            } else {
  14389                return 'राति';
  14390            }
  14391        },
  14392        calendar: {
  14393            sameDay: '[आज] LT',
  14394            nextDay: '[भोलि] LT',
  14395            nextWeek: '[आउँदो] dddd[,] LT',
  14396            lastDay: '[हिजो] LT',
  14397            lastWeek: '[गएको] dddd[,] LT',
  14398            sameElse: 'L',
  14399        },
  14400        relativeTime: {
  14401            future: '%sमा',
  14402            past: '%s अगाडि',
  14403            s: 'केही क्षण',
  14404            ss: '%d सेकेण्ड',
  14405            m: 'एक मिनेट',
  14406            mm: '%d मिनेट',
  14407            h: 'एक घण्टा',
  14408            hh: '%d घण्टा',
  14409            d: 'एक दिन',
  14410            dd: '%d दिन',
  14411            M: 'एक महिना',
  14412            MM: '%d महिना',
  14413            y: 'एक बर्ष',
  14414            yy: '%d बर्ष',
  14415        },
  14416        week: {
  14417            dow: 0, // Sunday is the first day of the week.
  14418            doy: 6, // The week that contains Jan 6th is the first week of the year.
  14419        },
  14420    });
  14421
  14422    //! moment.js locale configuration
  14423
  14424    var monthsShortWithDots$1 =
  14425            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
  14426        monthsShortWithoutDots$1 =
  14427            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
  14428        monthsParse$8 = [
  14429            /^jan/i,
  14430            /^feb/i,
  14431            /^(maart|mrt\.?)$/i,
  14432            /^apr/i,
  14433            /^mei$/i,
  14434            /^jun[i.]?$/i,
  14435            /^jul[i.]?$/i,
  14436            /^aug/i,
  14437            /^sep/i,
  14438            /^okt/i,
  14439            /^nov/i,
  14440            /^dec/i,
  14441        ],
  14442        monthsRegex$8 =
  14443            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
  14444
  14445    hooks.defineLocale('nl-be', {
  14446        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
  14447            '_'
  14448        ),
  14449        monthsShort: function (m, format) {
  14450            if (!m) {
  14451                return monthsShortWithDots$1;
  14452            } else if (/-MMM-/.test(format)) {
  14453                return monthsShortWithoutDots$1[m.month()];
  14454            } else {
  14455                return monthsShortWithDots$1[m.month()];
  14456            }
  14457        },
  14458
  14459        monthsRegex: monthsRegex$8,
  14460        monthsShortRegex: monthsRegex$8,
  14461        monthsStrictRegex:
  14462            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
  14463        monthsShortStrictRegex:
  14464            /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
  14465
  14466        monthsParse: monthsParse$8,
  14467        longMonthsParse: monthsParse$8,
  14468        shortMonthsParse: monthsParse$8,
  14469
  14470        weekdays:
  14471            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
  14472        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
  14473        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
  14474        weekdaysParseExact: true,
  14475        longDateFormat: {
  14476            LT: 'HH:mm',
  14477            LTS: 'HH:mm:ss',
  14478            L: 'DD/MM/YYYY',
  14479            LL: 'D MMMM YYYY',
  14480            LLL: 'D MMMM YYYY HH:mm',
  14481            LLLL: 'dddd D MMMM YYYY HH:mm',
  14482        },
  14483        calendar: {
  14484            sameDay: '[vandaag om] LT',
  14485            nextDay: '[morgen om] LT',
  14486            nextWeek: 'dddd [om] LT',
  14487            lastDay: '[gisteren om] LT',
  14488            lastWeek: '[afgelopen] dddd [om] LT',
  14489            sameElse: 'L',
  14490        },
  14491        relativeTime: {
  14492            future: 'over %s',
  14493            past: '%s geleden',
  14494            s: 'een paar seconden',
  14495            ss: '%d seconden',
  14496            m: 'één minuut',
  14497            mm: '%d minuten',
  14498            h: 'één uur',
  14499            hh: '%d uur',
  14500            d: 'één dag',
  14501            dd: '%d dagen',
  14502            M: 'één maand',
  14503            MM: '%d maanden',
  14504            y: 'één jaar',
  14505            yy: '%d jaar',
  14506        },
  14507        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
  14508        ordinal: function (number) {
  14509            return (
  14510                number +
  14511                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
  14512            );
  14513        },
  14514        week: {
  14515            dow: 1, // Monday is the first day of the week.
  14516            doy: 4, // The week that contains Jan 4th is the first week of the year.
  14517        },
  14518    });
  14519
  14520    //! moment.js locale configuration
  14521
  14522    var monthsShortWithDots$2 =
  14523            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
  14524        monthsShortWithoutDots$2 =
  14525            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
  14526        monthsParse$9 = [
  14527            /^jan/i,
  14528            /^feb/i,
  14529            /^(maart|mrt\.?)$/i,
  14530            /^apr/i,
  14531            /^mei$/i,
  14532            /^jun[i.]?$/i,
  14533            /^jul[i.]?$/i,
  14534            /^aug/i,
  14535            /^sep/i,
  14536            /^okt/i,
  14537            /^nov/i,
  14538            /^dec/i,
  14539        ],
  14540        monthsRegex$9 =
  14541            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
  14542
  14543    hooks.defineLocale('nl', {
  14544        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
  14545            '_'
  14546        ),
  14547        monthsShort: function (m, format) {
  14548            if (!m) {
  14549                return monthsShortWithDots$2;
  14550            } else if (/-MMM-/.test(format)) {
  14551                return monthsShortWithoutDots$2[m.month()];
  14552            } else {
  14553                return monthsShortWithDots$2[m.month()];
  14554            }
  14555        },
  14556
  14557        monthsRegex: monthsRegex$9,
  14558        monthsShortRegex: monthsRegex$9,
  14559        monthsStrictRegex:
  14560            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
  14561        monthsShortStrictRegex:
  14562            /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
  14563
  14564        monthsParse: monthsParse$9,
  14565        longMonthsParse: monthsParse$9,
  14566        shortMonthsParse: monthsParse$9,
  14567
  14568        weekdays:
  14569            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
  14570        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
  14571        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
  14572        weekdaysParseExact: true,
  14573        longDateFormat: {
  14574            LT: 'HH:mm',
  14575            LTS: 'HH:mm:ss',
  14576            L: 'DD-MM-YYYY',
  14577            LL: 'D MMMM YYYY',
  14578            LLL: 'D MMMM YYYY HH:mm',
  14579            LLLL: 'dddd D MMMM YYYY HH:mm',
  14580        },
  14581        calendar: {
  14582            sameDay: '[vandaag om] LT',
  14583            nextDay: '[morgen om] LT',
  14584            nextWeek: 'dddd [om] LT',
  14585            lastDay: '[gisteren om] LT',
  14586            lastWeek: '[afgelopen] dddd [om] LT',
  14587            sameElse: 'L',
  14588        },
  14589        relativeTime: {
  14590            future: 'over %s',
  14591            past: '%s geleden',
  14592            s: 'een paar seconden',
  14593            ss: '%d seconden',
  14594            m: 'één minuut',
  14595            mm: '%d minuten',
  14596            h: 'één uur',
  14597            hh: '%d uur',
  14598            d: 'één dag',
  14599            dd: '%d dagen',
  14600            w: 'één week',
  14601            ww: '%d weken',
  14602            M: 'één maand',
  14603            MM: '%d maanden',
  14604            y: 'één jaar',
  14605            yy: '%d jaar',
  14606        },
  14607        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
  14608        ordinal: function (number) {
  14609            return (
  14610                number +
  14611                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
  14612            );
  14613        },
  14614        week: {
  14615            dow: 1, // Monday is the first day of the week.
  14616            doy: 4, // The week that contains Jan 4th is the first week of the year.
  14617        },
  14618    });
  14619
  14620    //! moment.js locale configuration
  14621
  14622    hooks.defineLocale('nn', {
  14623        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
  14624            '_'
  14625        ),
  14626        monthsShort:
  14627            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
  14628        monthsParseExact: true,
  14629        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
  14630        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
  14631        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
  14632        weekdaysParseExact: true,
  14633        longDateFormat: {
  14634            LT: 'HH:mm',
  14635            LTS: 'HH:mm:ss',
  14636            L: 'DD.MM.YYYY',
  14637            LL: 'D. MMMM YYYY',
  14638            LLL: 'D. MMMM YYYY [kl.] H:mm',
  14639            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
  14640        },
  14641        calendar: {
  14642            sameDay: '[I dag klokka] LT',
  14643            nextDay: '[I morgon klokka] LT',
  14644            nextWeek: 'dddd [klokka] LT',
  14645            lastDay: '[I går klokka] LT',
  14646            lastWeek: '[Føregåande] dddd [klokka] LT',
  14647            sameElse: 'L',
  14648        },
  14649        relativeTime: {
  14650            future: 'om %s',
  14651            past: '%s sidan',
  14652            s: 'nokre sekund',
  14653            ss: '%d sekund',
  14654            m: 'eit minutt',
  14655            mm: '%d minutt',
  14656            h: 'ein time',
  14657            hh: '%d timar',
  14658            d: 'ein dag',
  14659            dd: '%d dagar',
  14660            w: 'ei veke',
  14661            ww: '%d veker',
  14662            M: 'ein månad',
  14663            MM: '%d månader',
  14664            y: 'eit år',
  14665            yy: '%d år',
  14666        },
  14667        dayOfMonthOrdinalParse: /\d{1,2}\./,
  14668        ordinal: '%d.',
  14669        week: {
  14670            dow: 1, // Monday is the first day of the week.
  14671            doy: 4, // The week that contains Jan 4th is the first week of the year.
  14672        },
  14673    });
  14674
  14675    //! moment.js locale configuration
  14676
  14677    hooks.defineLocale('oc-lnc', {
  14678        months: {
  14679            standalone:
  14680                'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
  14681                    '_'
  14682                ),
  14683            format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split(
  14684                '_'
  14685            ),
  14686            isFormat: /D[oD]?(\s)+MMMM/,
  14687        },
  14688        monthsShort:
  14689            'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
  14690                '_'
  14691            ),
  14692        monthsParseExact: true,
  14693        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
  14694            '_'
  14695        ),
  14696        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
  14697        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
  14698        weekdaysParseExact: true,
  14699        longDateFormat: {
  14700            LT: 'H:mm',
  14701            LTS: 'H:mm:ss',
  14702            L: 'DD/MM/YYYY',
  14703            LL: 'D MMMM [de] YYYY',
  14704            ll: 'D MMM YYYY',
  14705            LLL: 'D MMMM [de] YYYY [a] H:mm',
  14706            lll: 'D MMM YYYY, H:mm',
  14707            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
  14708            llll: 'ddd D MMM YYYY, H:mm',
  14709        },
  14710        calendar: {
  14711            sameDay: '[uèi a] LT',
  14712            nextDay: '[deman a] LT',
  14713            nextWeek: 'dddd [a] LT',
  14714            lastDay: '[ièr a] LT',
  14715            lastWeek: 'dddd [passat a] LT',
  14716            sameElse: 'L',
  14717        },
  14718        relativeTime: {
  14719            future: "d'aquí %s",
  14720            past: 'fa %s',
  14721            s: 'unas segondas',
  14722            ss: '%d segondas',
  14723            m: 'una minuta',
  14724            mm: '%d minutas',
  14725            h: 'una ora',
  14726            hh: '%d oras',
  14727            d: 'un jorn',
  14728            dd: '%d jorns',
  14729            M: 'un mes',
  14730            MM: '%d meses',
  14731            y: 'un an',
  14732            yy: '%d ans',
  14733        },
  14734        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
  14735        ordinal: function (number, period) {
  14736            var output =
  14737                number === 1
  14738                    ? 'r'
  14739                    : number === 2
  14740                      ? 'n'
  14741                      : number === 3
  14742                        ? 'r'
  14743                        : number === 4
  14744                          ? 't'
  14745                          : 'è';
  14746            if (period === 'w' || period === 'W') {
  14747                output = 'a';
  14748            }
  14749            return number + output;
  14750        },
  14751        week: {
  14752            dow: 1, // Monday is the first day of the week.
  14753            doy: 4,
  14754        },
  14755    });
  14756
  14757    //! moment.js locale configuration
  14758
  14759    var symbolMap$g = {
  14760            1: '੧',
  14761            2: '੨',
  14762            3: '੩',
  14763            4: '੪',
  14764            5: '੫',
  14765            6: '੬',
  14766            7: '੭',
  14767            8: '੮',
  14768            9: '੯',
  14769            0: '੦',
  14770        },
  14771        numberMap$f = {
  14772            '੧': '1',
  14773            '੨': '2',
  14774            '੩': '3',
  14775            '੪': '4',
  14776            '੫': '5',
  14777            '੬': '6',
  14778            '੭': '7',
  14779            '੮': '8',
  14780            '੯': '9',
  14781            '੦': '0',
  14782        };
  14783
  14784    hooks.defineLocale('pa-in', {
  14785        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
  14786        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
  14787            '_'
  14788        ),
  14789        monthsShort:
  14790            'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
  14791                '_'
  14792            ),
  14793        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
  14794            '_'
  14795        ),
  14796        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
  14797        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
  14798        longDateFormat: {
  14799            LT: 'A h:mm ਵਜੇ',
  14800            LTS: 'A h:mm:ss ਵਜੇ',
  14801            L: 'DD/MM/YYYY',
  14802            LL: 'D MMMM YYYY',
  14803            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
  14804            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
  14805        },
  14806        calendar: {
  14807            sameDay: '[ਅਜ] LT',
  14808            nextDay: '[ਕਲ] LT',
  14809            nextWeek: '[ਅਗਲਾ] dddd, LT',
  14810            lastDay: '[ਕਲ] LT',
  14811            lastWeek: '[ਪਿਛਲੇ] dddd, LT',
  14812            sameElse: 'L',
  14813        },
  14814        relativeTime: {
  14815            future: '%s ਵਿੱਚ',
  14816            past: '%s ਪਿਛਲੇ',
  14817            s: 'ਕੁਝ ਸਕਿੰਟ',
  14818            ss: '%d ਸਕਿੰਟ',
  14819            m: 'ਇਕ ਮਿੰਟ',
  14820            mm: '%d ਮਿੰਟ',
  14821            h: 'ਇੱਕ ਘੰਟਾ',
  14822            hh: '%d ਘੰਟੇ',
  14823            d: 'ਇੱਕ ਦਿਨ',
  14824            dd: '%d ਦਿਨ',
  14825            M: 'ਇੱਕ ਮਹੀਨਾ',
  14826            MM: '%d ਮਹੀਨੇ',
  14827            y: 'ਇੱਕ ਸਾਲ',
  14828            yy: '%d ਸਾਲ',
  14829        },
  14830        preparse: function (string) {
  14831            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
  14832                return numberMap$f[match];
  14833            });
  14834        },
  14835        postformat: function (string) {
  14836            return string.replace(/\d/g, function (match) {
  14837                return symbolMap$g[match];
  14838            });
  14839        },
  14840        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
  14841        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
  14842        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
  14843        meridiemHour: function (hour, meridiem) {
  14844            if (hour === 12) {
  14845                hour = 0;
  14846            }
  14847            if (meridiem === 'ਰਾਤ') {
  14848                return hour < 4 ? hour : hour + 12;
  14849            } else if (meridiem === 'ਸਵੇਰ') {
  14850                return hour;
  14851            } else if (meridiem === 'ਦੁਪਹਿਰ') {
  14852                return hour >= 10 ? hour : hour + 12;
  14853            } else if (meridiem === 'ਸ਼ਾਮ') {
  14854                return hour + 12;
  14855            }
  14856        },
  14857        meridiem: function (hour, minute, isLower) {
  14858            if (hour < 4) {
  14859                return 'ਰਾਤ';
  14860            } else if (hour < 10) {
  14861                return 'ਸਵੇਰ';
  14862            } else if (hour < 17) {
  14863                return 'ਦੁਪਹਿਰ';
  14864            } else if (hour < 20) {
  14865                return 'ਸ਼ਾਮ';
  14866            } else {
  14867                return 'ਰਾਤ';
  14868            }
  14869        },
  14870        week: {
  14871            dow: 0, // Sunday is the first day of the week.
  14872            doy: 6, // The week that contains Jan 6th is the first week of the year.
  14873        },
  14874    });
  14875
  14876    //! moment.js locale configuration
  14877
  14878    var monthsNominative =
  14879            'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
  14880                '_'
  14881            ),
  14882        monthsSubjective =
  14883            'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
  14884                '_'
  14885            ),
  14886        monthsParse$a = [
  14887            /^sty/i,
  14888            /^lut/i,
  14889            /^mar/i,
  14890            /^kwi/i,
  14891            /^maj/i,
  14892            /^cze/i,
  14893            /^lip/i,
  14894            /^sie/i,
  14895            /^wrz/i,
  14896            /^paź/i,
  14897            /^lis/i,
  14898            /^gru/i,
  14899        ];
  14900    function plural$3(n) {
  14901        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
  14902    }
  14903    function translate$8(number, withoutSuffix, key) {
  14904        var result = number + ' ';
  14905        switch (key) {
  14906            case 'ss':
  14907                return result + (plural$3(number) ? 'sekundy' : 'sekund');
  14908            case 'm':
  14909                return withoutSuffix ? 'minuta' : 'minutę';
  14910            case 'mm':
  14911                return result + (plural$3(number) ? 'minuty' : 'minut');
  14912            case 'h':
  14913                return withoutSuffix ? 'godzina' : 'godzinę';
  14914            case 'hh':
  14915                return result + (plural$3(number) ? 'godziny' : 'godzin');
  14916            case 'ww':
  14917                return result + (plural$3(number) ? 'tygodnie' : 'tygodni');
  14918            case 'MM':
  14919                return result + (plural$3(number) ? 'miesiące' : 'miesięcy');
  14920            case 'yy':
  14921                return result + (plural$3(number) ? 'lata' : 'lat');
  14922        }
  14923    }
  14924
  14925    hooks.defineLocale('pl', {
  14926        months: function (momentToFormat, format) {
  14927            if (!momentToFormat) {
  14928                return monthsNominative;
  14929            } else if (/D MMMM/.test(format)) {
  14930                return monthsSubjective[momentToFormat.month()];
  14931            } else {
  14932                return monthsNominative[momentToFormat.month()];
  14933            }
  14934        },
  14935        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
  14936        monthsParse: monthsParse$a,
  14937        longMonthsParse: monthsParse$a,
  14938        shortMonthsParse: monthsParse$a,
  14939        weekdays:
  14940            'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
  14941        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
  14942        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
  14943        longDateFormat: {
  14944            LT: 'HH:mm',
  14945            LTS: 'HH:mm:ss',
  14946            L: 'DD.MM.YYYY',
  14947            LL: 'D MMMM YYYY',
  14948            LLL: 'D MMMM YYYY HH:mm',
  14949            LLLL: 'dddd, D MMMM YYYY HH:mm',
  14950        },
  14951        calendar: {
  14952            sameDay: '[Dziś o] LT',
  14953            nextDay: '[Jutro o] LT',
  14954            nextWeek: function () {
  14955                switch (this.day()) {
  14956                    case 0:
  14957                        return '[W niedzielę o] LT';
  14958
  14959                    case 2:
  14960                        return '[We wtorek o] LT';
  14961
  14962                    case 3:
  14963                        return '[W środę o] LT';
  14964
  14965                    case 6:
  14966                        return '[W sobotę o] LT';
  14967
  14968                    default:
  14969                        return '[W] dddd [o] LT';
  14970                }
  14971            },
  14972            lastDay: '[Wczoraj o] LT',
  14973            lastWeek: function () {
  14974                switch (this.day()) {
  14975                    case 0:
  14976                        return '[W zeszłą niedzielę o] LT';
  14977                    case 3:
  14978                        return '[W zeszłą środę o] LT';
  14979                    case 6:
  14980                        return '[W zeszłą sobotę o] LT';
  14981                    default:
  14982                        return '[W zeszły] dddd [o] LT';
  14983                }
  14984            },
  14985            sameElse: 'L',
  14986        },
  14987        relativeTime: {
  14988            future: 'za %s',
  14989            past: '%s temu',
  14990            s: 'kilka sekund',
  14991            ss: translate$8,
  14992            m: translate$8,
  14993            mm: translate$8,
  14994            h: translate$8,
  14995            hh: translate$8,
  14996            d: '1 dzień',
  14997            dd: '%d dni',
  14998            w: 'tydzień',
  14999            ww: translate$8,
  15000            M: 'miesiąc',
  15001            MM: translate$8,
  15002            y: 'rok',
  15003            yy: translate$8,
  15004        },
  15005        dayOfMonthOrdinalParse: /\d{1,2}\./,
  15006        ordinal: '%d.',
  15007        week: {
  15008            dow: 1, // Monday is the first day of the week.
  15009            doy: 4, // The week that contains Jan 4th is the first week of the year.
  15010        },
  15011    });
  15012
  15013    //! moment.js locale configuration
  15014
  15015    hooks.defineLocale('pt-br', {
  15016        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
  15017            '_'
  15018        ),
  15019        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
  15020        weekdays:
  15021            'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
  15022                '_'
  15023            ),
  15024        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
  15025        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
  15026        weekdaysParseExact: true,
  15027        longDateFormat: {
  15028            LT: 'HH:mm',
  15029            LTS: 'HH:mm:ss',
  15030            L: 'DD/MM/YYYY',
  15031            LL: 'D [de] MMMM [de] YYYY',
  15032            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
  15033            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
  15034        },
  15035        calendar: {
  15036            sameDay: '[Hoje às] LT',
  15037            nextDay: '[Amanhã às] LT',
  15038            nextWeek: 'dddd [às] LT',
  15039            lastDay: '[Ontem às] LT',
  15040            lastWeek: function () {
  15041                return this.day() === 0 || this.day() === 6
  15042                    ? '[Último] dddd [às] LT' // Saturday + Sunday
  15043                    : '[Última] dddd [às] LT'; // Monday - Friday
  15044            },
  15045            sameElse: 'L',
  15046        },
  15047        relativeTime: {
  15048            future: 'em %s',
  15049            past: 'há %s',
  15050            s: 'poucos segundos',
  15051            ss: '%d segundos',
  15052            m: 'um minuto',
  15053            mm: '%d minutos',
  15054            h: 'uma hora',
  15055            hh: '%d horas',
  15056            d: 'um dia',
  15057            dd: '%d dias',
  15058            M: 'um mês',
  15059            MM: '%d meses',
  15060            y: 'um ano',
  15061            yy: '%d anos',
  15062        },
  15063        dayOfMonthOrdinalParse: /\d{1,2}º/,
  15064        ordinal: '%dº',
  15065        invalidDate: 'Data inválida',
  15066    });
  15067
  15068    //! moment.js locale configuration
  15069
  15070    hooks.defineLocale('pt', {
  15071        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
  15072            '_'
  15073        ),
  15074        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
  15075        weekdays:
  15076            'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
  15077                '_'
  15078            ),
  15079        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
  15080        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
  15081        weekdaysParseExact: true,
  15082        longDateFormat: {
  15083            LT: 'HH:mm',
  15084            LTS: 'HH:mm:ss',
  15085            L: 'DD/MM/YYYY',
  15086            LL: 'D [de] MMMM [de] YYYY',
  15087            LLL: 'D [de] MMMM [de] YYYY HH:mm',
  15088            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
  15089        },
  15090        calendar: {
  15091            sameDay: '[Hoje às] LT',
  15092            nextDay: '[Amanhã às] LT',
  15093            nextWeek: 'dddd [às] LT',
  15094            lastDay: '[Ontem às] LT',
  15095            lastWeek: function () {
  15096                return this.day() === 0 || this.day() === 6
  15097                    ? '[Último] dddd [às] LT' // Saturday + Sunday
  15098                    : '[Última] dddd [às] LT'; // Monday - Friday
  15099            },
  15100            sameElse: 'L',
  15101        },
  15102        relativeTime: {
  15103            future: 'em %s',
  15104            past: 'há %s',
  15105            s: 'segundos',
  15106            ss: '%d segundos',
  15107            m: 'um minuto',
  15108            mm: '%d minutos',
  15109            h: 'uma hora',
  15110            hh: '%d horas',
  15111            d: 'um dia',
  15112            dd: '%d dias',
  15113            w: 'uma semana',
  15114            ww: '%d semanas',
  15115            M: 'um mês',
  15116            MM: '%d meses',
  15117            y: 'um ano',
  15118            yy: '%d anos',
  15119        },
  15120        dayOfMonthOrdinalParse: /\d{1,2}º/,
  15121        ordinal: '%dº',
  15122        week: {
  15123            dow: 1, // Monday is the first day of the week.
  15124            doy: 4, // The week that contains Jan 4th is the first week of the year.
  15125        },
  15126    });
  15127
  15128    //! moment.js locale configuration
  15129
  15130    function relativeTimeWithPlural$2(number, withoutSuffix, key) {
  15131        var format = {
  15132                ss: 'secunde',
  15133                mm: 'minute',
  15134                hh: 'ore',
  15135                dd: 'zile',
  15136                ww: 'săptămâni',
  15137                MM: 'luni',
  15138                yy: 'ani',
  15139            },
  15140            separator = ' ';
  15141        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
  15142            separator = ' de ';
  15143        }
  15144        return number + separator + format[key];
  15145    }
  15146
  15147    hooks.defineLocale('ro', {
  15148        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
  15149            '_'
  15150        ),
  15151        monthsShort:
  15152            'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
  15153                '_'
  15154            ),
  15155        monthsParseExact: true,
  15156        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
  15157        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
  15158        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
  15159        longDateFormat: {
  15160            LT: 'H:mm',
  15161            LTS: 'H:mm:ss',
  15162            L: 'DD.MM.YYYY',
  15163            LL: 'D MMMM YYYY',
  15164            LLL: 'D MMMM YYYY H:mm',
  15165            LLLL: 'dddd, D MMMM YYYY H:mm',
  15166        },
  15167        calendar: {
  15168            sameDay: '[azi la] LT',
  15169            nextDay: '[mâine la] LT',
  15170            nextWeek: 'dddd [la] LT',
  15171            lastDay: '[ieri la] LT',
  15172            lastWeek: '[fosta] dddd [la] LT',
  15173            sameElse: 'L',
  15174        },
  15175        relativeTime: {
  15176            future: 'peste %s',
  15177            past: '%s în urmă',
  15178            s: 'câteva secunde',
  15179            ss: relativeTimeWithPlural$2,
  15180            m: 'un minut',
  15181            mm: relativeTimeWithPlural$2,
  15182            h: 'o oră',
  15183            hh: relativeTimeWithPlural$2,
  15184            d: 'o zi',
  15185            dd: relativeTimeWithPlural$2,
  15186            w: 'o săptămână',
  15187            ww: relativeTimeWithPlural$2,
  15188            M: 'o lună',
  15189            MM: relativeTimeWithPlural$2,
  15190            y: 'un an',
  15191            yy: relativeTimeWithPlural$2,
  15192        },
  15193        week: {
  15194            dow: 1, // Monday is the first day of the week.
  15195            doy: 7, // The week that contains Jan 7th is the first week of the year.
  15196        },
  15197    });
  15198
  15199    //! moment.js locale configuration
  15200
  15201    function plural$4(word, num) {
  15202        var forms = word.split('_');
  15203        return num % 10 === 1 && num % 100 !== 11
  15204            ? forms[0]
  15205            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
  15206              ? forms[1]
  15207              : forms[2];
  15208    }
  15209    function relativeTimeWithPlural$3(number, withoutSuffix, key) {
  15210        var format = {
  15211            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
  15212            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
  15213            hh: 'час_часа_часов',
  15214            dd: 'день_дня_дней',
  15215            ww: 'неделя_недели_недель',
  15216            MM: 'месяц_месяца_месяцев',
  15217            yy: 'год_года_лет',
  15218        };
  15219        if (key === 'm') {
  15220            return withoutSuffix ? 'минута' : 'минуту';
  15221        } else {
  15222            return number + ' ' + plural$4(format[key], +number);
  15223        }
  15224    }
  15225    var monthsParse$b = [
  15226        /^янв/i,
  15227        /^фев/i,
  15228        /^мар/i,
  15229        /^апр/i,
  15230        /^ма[йя]/i,
  15231        /^июн/i,
  15232        /^июл/i,
  15233        /^авг/i,
  15234        /^сен/i,
  15235        /^окт/i,
  15236        /^ноя/i,
  15237        /^дек/i,
  15238    ];
  15239
  15240    // http://new.gramota.ru/spravka/rules/139-prop : § 103
  15241    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
  15242    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
  15243    hooks.defineLocale('ru', {
  15244        months: {
  15245            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
  15246                '_'
  15247            ),
  15248            standalone:
  15249                'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
  15250                    '_'
  15251                ),
  15252        },
  15253        monthsShort: {
  15254            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
  15255            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
  15256                '_'
  15257            ),
  15258            standalone:
  15259                'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
  15260                    '_'
  15261                ),
  15262        },
  15263        weekdays: {
  15264            standalone:
  15265                'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
  15266                    '_'
  15267                ),
  15268            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
  15269                '_'
  15270            ),
  15271            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
  15272        },
  15273        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
  15274        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
  15275        monthsParse: monthsParse$b,
  15276        longMonthsParse: monthsParse$b,
  15277        shortMonthsParse: monthsParse$b,
  15278
  15279        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
  15280        monthsRegex:
  15281            /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
  15282
  15283        // копия предыдущего
  15284        monthsShortRegex:
  15285            /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
  15286
  15287        // полные названия с падежами
  15288        monthsStrictRegex:
  15289            /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
  15290
  15291        // Выражение, которое соответствует только сокращённым формам
  15292        monthsShortStrictRegex:
  15293            /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
  15294        longDateFormat: {
  15295            LT: 'H:mm',
  15296            LTS: 'H:mm:ss',
  15297            L: 'DD.MM.YYYY',
  15298            LL: 'D MMMM YYYY г.',
  15299            LLL: 'D MMMM YYYY г., H:mm',
  15300            LLLL: 'dddd, D MMMM YYYY г., H:mm',
  15301        },
  15302        calendar: {
  15303            sameDay: '[Сегодня, в] LT',
  15304            nextDay: '[Завтра, в] LT',
  15305            lastDay: '[Вчера, в] LT',
  15306            nextWeek: function (now) {
  15307                if (now.week() !== this.week()) {
  15308                    switch (this.day()) {
  15309                        case 0:
  15310                            return '[В следующее] dddd, [в] LT';
  15311                        case 1:
  15312                        case 2:
  15313                        case 4:
  15314                            return '[В следующий] dddd, [в] LT';
  15315                        case 3:
  15316                        case 5:
  15317                        case 6:
  15318                            return '[В следующую] dddd, [в] LT';
  15319                    }
  15320                } else {
  15321                    if (this.day() === 2) {
  15322                        return '[Во] dddd, [в] LT';
  15323                    } else {
  15324                        return '[В] dddd, [в] LT';
  15325                    }
  15326                }
  15327            },
  15328            lastWeek: function (now) {
  15329                if (now.week() !== this.week()) {
  15330                    switch (this.day()) {
  15331                        case 0:
  15332                            return '[В прошлое] dddd, [в] LT';
  15333                        case 1:
  15334                        case 2:
  15335                        case 4:
  15336                            return '[В прошлый] dddd, [в] LT';
  15337                        case 3:
  15338                        case 5:
  15339                        case 6:
  15340                            return '[В прошлую] dddd, [в] LT';
  15341                    }
  15342                } else {
  15343                    if (this.day() === 2) {
  15344                        return '[Во] dddd, [в] LT';
  15345                    } else {
  15346                        return '[В] dddd, [в] LT';
  15347                    }
  15348                }
  15349            },
  15350            sameElse: 'L',
  15351        },
  15352        relativeTime: {
  15353            future: 'через %s',
  15354            past: '%s назад',
  15355            s: 'несколько секунд',
  15356            ss: relativeTimeWithPlural$3,
  15357            m: relativeTimeWithPlural$3,
  15358            mm: relativeTimeWithPlural$3,
  15359            h: 'час',
  15360            hh: relativeTimeWithPlural$3,
  15361            d: 'день',
  15362            dd: relativeTimeWithPlural$3,
  15363            w: 'неделя',
  15364            ww: relativeTimeWithPlural$3,
  15365            M: 'месяц',
  15366            MM: relativeTimeWithPlural$3,
  15367            y: 'год',
  15368            yy: relativeTimeWithPlural$3,
  15369        },
  15370        meridiemParse: /ночи|утра|дня|вечера/i,
  15371        isPM: function (input) {
  15372            return /^(дня|вечера)$/.test(input);
  15373        },
  15374        meridiem: function (hour, minute, isLower) {
  15375            if (hour < 4) {
  15376                return 'ночи';
  15377            } else if (hour < 12) {
  15378                return 'утра';
  15379            } else if (hour < 17) {
  15380                return 'дня';
  15381            } else {
  15382                return 'вечера';
  15383            }
  15384        },
  15385        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
  15386        ordinal: function (number, period) {
  15387            switch (period) {
  15388                case 'M':
  15389                case 'd':
  15390                case 'DDD':
  15391                    return number + '-й';
  15392                case 'D':
  15393                    return number + '-го';
  15394                case 'w':
  15395                case 'W':
  15396                    return number + '-я';
  15397                default:
  15398                    return number;
  15399            }
  15400        },
  15401        week: {
  15402            dow: 1, // Monday is the first day of the week.
  15403            doy: 4, // The week that contains Jan 4th is the first week of the year.
  15404        },
  15405    });
  15406
  15407    //! moment.js locale configuration
  15408
  15409    var months$9 = [
  15410            'جنوري',
  15411            'فيبروري',
  15412            'مارچ',
  15413            'اپريل',
  15414            'مئي',
  15415            'جون',
  15416            'جولاءِ',
  15417            'آگسٽ',
  15418            'سيپٽمبر',
  15419            'آڪٽوبر',
  15420            'نومبر',
  15421            'ڊسمبر',
  15422        ],
  15423        days$1 = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
  15424
  15425    hooks.defineLocale('sd', {
  15426        months: months$9,
  15427        monthsShort: months$9,
  15428        weekdays: days$1,
  15429        weekdaysShort: days$1,
  15430        weekdaysMin: days$1,
  15431        longDateFormat: {
  15432            LT: 'HH:mm',
  15433            LTS: 'HH:mm:ss',
  15434            L: 'DD/MM/YYYY',
  15435            LL: 'D MMMM YYYY',
  15436            LLL: 'D MMMM YYYY HH:mm',
  15437            LLLL: 'dddd، D MMMM YYYY HH:mm',
  15438        },
  15439        meridiemParse: /صبح|شام/,
  15440        isPM: function (input) {
  15441            return 'شام' === input;
  15442        },
  15443        meridiem: function (hour, minute, isLower) {
  15444            if (hour < 12) {
  15445                return 'صبح';
  15446            }
  15447            return 'شام';
  15448        },
  15449        calendar: {
  15450            sameDay: '[اڄ] LT',
  15451            nextDay: '[سڀاڻي] LT',
  15452            nextWeek: 'dddd [اڳين هفتي تي] LT',
  15453            lastDay: '[ڪالهه] LT',
  15454            lastWeek: '[گزريل هفتي] dddd [تي] LT',
  15455            sameElse: 'L',
  15456        },
  15457        relativeTime: {
  15458            future: '%s پوء',
  15459            past: '%s اڳ',
  15460            s: 'چند سيڪنڊ',
  15461            ss: '%d سيڪنڊ',
  15462            m: 'هڪ منٽ',
  15463            mm: '%d منٽ',
  15464            h: 'هڪ ڪلاڪ',
  15465            hh: '%d ڪلاڪ',
  15466            d: 'هڪ ڏينهن',
  15467            dd: '%d ڏينهن',
  15468            M: 'هڪ مهينو',
  15469            MM: '%d مهينا',
  15470            y: 'هڪ سال',
  15471            yy: '%d سال',
  15472        },
  15473        preparse: function (string) {
  15474            return string.replace(/،/g, ',');
  15475        },
  15476        postformat: function (string) {
  15477            return string.replace(/,/g, '،');
  15478        },
  15479        week: {
  15480            dow: 1, // Monday is the first day of the week.
  15481            doy: 4, // The week that contains Jan 4th is the first week of the year.
  15482        },
  15483    });
  15484
  15485    //! moment.js locale configuration
  15486
  15487    hooks.defineLocale('se', {
  15488        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(
  15489            '_'
  15490        ),
  15491        monthsShort:
  15492            'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
  15493        weekdays:
  15494            'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
  15495                '_'
  15496            ),
  15497        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
  15498        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
  15499        longDateFormat: {
  15500            LT: 'HH:mm',
  15501            LTS: 'HH:mm:ss',
  15502            L: 'DD.MM.YYYY',
  15503            LL: 'MMMM D. [b.] YYYY',
  15504            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
  15505            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
  15506        },
  15507        calendar: {
  15508            sameDay: '[otne ti] LT',
  15509            nextDay: '[ihttin ti] LT',
  15510            nextWeek: 'dddd [ti] LT',
  15511            lastDay: '[ikte ti] LT',
  15512            lastWeek: '[ovddit] dddd [ti] LT',
  15513            sameElse: 'L',
  15514        },
  15515        relativeTime: {
  15516            future: '%s geažes',
  15517            past: 'maŋit %s',
  15518            s: 'moadde sekunddat',
  15519            ss: '%d sekunddat',
  15520            m: 'okta minuhta',
  15521            mm: '%d minuhtat',
  15522            h: 'okta diimmu',
  15523            hh: '%d diimmut',
  15524            d: 'okta beaivi',
  15525            dd: '%d beaivvit',
  15526            M: 'okta mánnu',
  15527            MM: '%d mánut',
  15528            y: 'okta jahki',
  15529            yy: '%d jagit',
  15530        },
  15531        dayOfMonthOrdinalParse: /\d{1,2}\./,
  15532        ordinal: '%d.',
  15533        week: {
  15534            dow: 1, // Monday is the first day of the week.
  15535            doy: 4, // The week that contains Jan 4th is the first week of the year.
  15536        },
  15537    });
  15538
  15539    //! moment.js locale configuration
  15540
  15541    /*jshint -W100*/
  15542    hooks.defineLocale('si', {
  15543        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
  15544            '_'
  15545        ),
  15546        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
  15547            '_'
  15548        ),
  15549        weekdays:
  15550            'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
  15551                '_'
  15552            ),
  15553        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
  15554        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
  15555        weekdaysParseExact: true,
  15556        longDateFormat: {
  15557            LT: 'a h:mm',
  15558            LTS: 'a h:mm:ss',
  15559            L: 'YYYY/MM/DD',
  15560            LL: 'YYYY MMMM D',
  15561            LLL: 'YYYY MMMM D, a h:mm',
  15562            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
  15563        },
  15564        calendar: {
  15565            sameDay: '[අද] LT[ට]',
  15566            nextDay: '[හෙට] LT[ට]',
  15567            nextWeek: 'dddd LT[ට]',
  15568            lastDay: '[ඊයේ] LT[ට]',
  15569            lastWeek: '[පසුගිය] dddd LT[ට]',
  15570            sameElse: 'L',
  15571        },
  15572        relativeTime: {
  15573            future: '%sකින්',
  15574            past: '%sකට පෙර',
  15575            s: 'තත්පර කිහිපය',
  15576            ss: 'තත්පර %d',
  15577            m: 'මිනිත්තුව',
  15578            mm: 'මිනිත්තු %d',
  15579            h: 'පැය',
  15580            hh: 'පැය %d',
  15581            d: 'දිනය',
  15582            dd: 'දින %d',
  15583            M: 'මාසය',
  15584            MM: 'මාස %d',
  15585            y: 'වසර',
  15586            yy: 'වසර %d',
  15587        },
  15588        dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
  15589        ordinal: function (number) {
  15590            return number + ' වැනි';
  15591        },
  15592        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
  15593        isPM: function (input) {
  15594            return input === 'ප.ව.' || input === 'පස් වරු';
  15595        },
  15596        meridiem: function (hours, minutes, isLower) {
  15597            if (hours > 11) {
  15598                return isLower ? 'ප.ව.' : 'පස් වරු';
  15599            } else {
  15600                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
  15601            }
  15602        },
  15603    });
  15604
  15605    //! moment.js locale configuration
  15606
  15607    var months$a =
  15608            'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
  15609                '_'
  15610            ),
  15611        monthsShort$7 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
  15612    function plural$5(n) {
  15613        return n > 1 && n < 5;
  15614    }
  15615    function translate$9(number, withoutSuffix, key, isFuture) {
  15616        var result = number + ' ';
  15617        switch (key) {
  15618            case 's': // a few seconds / in a few seconds / a few seconds ago
  15619                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
  15620            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
  15621                if (withoutSuffix || isFuture) {
  15622                    return result + (plural$5(number) ? 'sekundy' : 'sekúnd');
  15623                } else {
  15624                    return result + 'sekundami';
  15625                }
  15626            case 'm': // a minute / in a minute / a minute ago
  15627                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
  15628            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
  15629                if (withoutSuffix || isFuture) {
  15630                    return result + (plural$5(number) ? 'minúty' : 'minút');
  15631                } else {
  15632                    return result + 'minútami';
  15633                }
  15634            case 'h': // an hour / in an hour / an hour ago
  15635                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
  15636            case 'hh': // 9 hours / in 9 hours / 9 hours ago
  15637                if (withoutSuffix || isFuture) {
  15638                    return result + (plural$5(number) ? 'hodiny' : 'hodín');
  15639                } else {
  15640                    return result + 'hodinami';
  15641                }
  15642            case 'd': // a day / in a day / a day ago
  15643                return withoutSuffix || isFuture ? 'deň' : 'dňom';
  15644            case 'dd': // 9 days / in 9 days / 9 days ago
  15645                if (withoutSuffix || isFuture) {
  15646                    return result + (plural$5(number) ? 'dni' : 'dní');
  15647                } else {
  15648                    return result + 'dňami';
  15649                }
  15650            case 'M': // a month / in a month / a month ago
  15651                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
  15652            case 'MM': // 9 months / in 9 months / 9 months ago
  15653                if (withoutSuffix || isFuture) {
  15654                    return result + (plural$5(number) ? 'mesiace' : 'mesiacov');
  15655                } else {
  15656                    return result + 'mesiacmi';
  15657                }
  15658            case 'y': // a year / in a year / a year ago
  15659                return withoutSuffix || isFuture ? 'rok' : 'rokom';
  15660            case 'yy': // 9 years / in 9 years / 9 years ago
  15661                if (withoutSuffix || isFuture) {
  15662                    return result + (plural$5(number) ? 'roky' : 'rokov');
  15663                } else {
  15664                    return result + 'rokmi';
  15665                }
  15666        }
  15667    }
  15668
  15669    hooks.defineLocale('sk', {
  15670        months: months$a,
  15671        monthsShort: monthsShort$7,
  15672        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
  15673        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
  15674        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
  15675        longDateFormat: {
  15676            LT: 'H:mm',
  15677            LTS: 'H:mm:ss',
  15678            L: 'DD.MM.YYYY',
  15679            LL: 'D. MMMM YYYY',
  15680            LLL: 'D. MMMM YYYY H:mm',
  15681            LLLL: 'dddd D. MMMM YYYY H:mm',
  15682        },
  15683        calendar: {
  15684            sameDay: '[dnes o] LT',
  15685            nextDay: '[zajtra o] LT',
  15686            nextWeek: function () {
  15687                switch (this.day()) {
  15688                    case 0:
  15689                        return '[v nedeľu o] LT';
  15690                    case 1:
  15691                    case 2:
  15692                        return '[v] dddd [o] LT';
  15693                    case 3:
  15694                        return '[v stredu o] LT';
  15695                    case 4:
  15696                        return '[vo štvrtok o] LT';
  15697                    case 5:
  15698                        return '[v piatok o] LT';
  15699                    case 6:
  15700                        return '[v sobotu o] LT';
  15701                }
  15702            },
  15703            lastDay: '[včera o] LT',
  15704            lastWeek: function () {
  15705                switch (this.day()) {
  15706                    case 0:
  15707                        return '[minulú nedeľu o] LT';
  15708                    case 1:
  15709                    case 2:
  15710                        return '[minulý] dddd [o] LT';
  15711                    case 3:
  15712                        return '[minulú stredu o] LT';
  15713                    case 4:
  15714                    case 5:
  15715                        return '[minulý] dddd [o] LT';
  15716                    case 6:
  15717                        return '[minulú sobotu o] LT';
  15718                }
  15719            },
  15720            sameElse: 'L',
  15721        },
  15722        relativeTime: {
  15723            future: 'za %s',
  15724            past: 'pred %s',
  15725            s: translate$9,
  15726            ss: translate$9,
  15727            m: translate$9,
  15728            mm: translate$9,
  15729            h: translate$9,
  15730            hh: translate$9,
  15731            d: translate$9,
  15732            dd: translate$9,
  15733            M: translate$9,
  15734            MM: translate$9,
  15735            y: translate$9,
  15736            yy: translate$9,
  15737        },
  15738        dayOfMonthOrdinalParse: /\d{1,2}\./,
  15739        ordinal: '%d.',
  15740        week: {
  15741            dow: 1, // Monday is the first day of the week.
  15742            doy: 4, // The week that contains Jan 4th is the first week of the year.
  15743        },
  15744    });
  15745
  15746    //! moment.js locale configuration
  15747
  15748    function processRelativeTime$9(number, withoutSuffix, key, isFuture) {
  15749        var result = number + ' ';
  15750        switch (key) {
  15751            case 's':
  15752                return withoutSuffix || isFuture
  15753                    ? 'nekaj sekund'
  15754                    : 'nekaj sekundami';
  15755            case 'ss':
  15756                if (number === 1) {
  15757                    result += withoutSuffix ? 'sekundo' : 'sekundi';
  15758                } else if (number === 2) {
  15759                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
  15760                } else if (number < 5) {
  15761                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
  15762                } else {
  15763                    result += 'sekund';
  15764                }
  15765                return result;
  15766            case 'm':
  15767                return withoutSuffix ? 'ena minuta' : 'eno minuto';
  15768            case 'mm':
  15769                if (number === 1) {
  15770                    result += withoutSuffix ? 'minuta' : 'minuto';
  15771                } else if (number === 2) {
  15772                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
  15773                } else if (number < 5) {
  15774                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
  15775                } else {
  15776                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
  15777                }
  15778                return result;
  15779            case 'h':
  15780                return withoutSuffix ? 'ena ura' : 'eno uro';
  15781            case 'hh':
  15782                if (number === 1) {
  15783                    result += withoutSuffix ? 'ura' : 'uro';
  15784                } else if (number === 2) {
  15785                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
  15786                } else if (number < 5) {
  15787                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
  15788                } else {
  15789                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
  15790                }
  15791                return result;
  15792            case 'd':
  15793                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
  15794            case 'dd':
  15795                if (number === 1) {
  15796                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
  15797                } else if (number === 2) {
  15798                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
  15799                } else {
  15800                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
  15801                }
  15802                return result;
  15803            case 'M':
  15804                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
  15805            case 'MM':
  15806                if (number === 1) {
  15807                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
  15808                } else if (number === 2) {
  15809                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
  15810                } else if (number < 5) {
  15811                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
  15812                } else {
  15813                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
  15814                }
  15815                return result;
  15816            case 'y':
  15817                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
  15818            case 'yy':
  15819                if (number === 1) {
  15820                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
  15821                } else if (number === 2) {
  15822                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
  15823                } else if (number < 5) {
  15824                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
  15825                } else {
  15826                    result += withoutSuffix || isFuture ? 'let' : 'leti';
  15827                }
  15828                return result;
  15829        }
  15830    }
  15831
  15832    hooks.defineLocale('sl', {
  15833        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
  15834            '_'
  15835        ),
  15836        monthsShort:
  15837            'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
  15838                '_'
  15839            ),
  15840        monthsParseExact: true,
  15841        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
  15842        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
  15843        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
  15844        weekdaysParseExact: true,
  15845        longDateFormat: {
  15846            LT: 'H:mm',
  15847            LTS: 'H:mm:ss',
  15848            L: 'DD. MM. YYYY',
  15849            LL: 'D. MMMM YYYY',
  15850            LLL: 'D. MMMM YYYY H:mm',
  15851            LLLL: 'dddd, D. MMMM YYYY H:mm',
  15852        },
  15853        calendar: {
  15854            sameDay: '[danes ob] LT',
  15855            nextDay: '[jutri ob] LT',
  15856
  15857            nextWeek: function () {
  15858                switch (this.day()) {
  15859                    case 0:
  15860                        return '[v] [nedeljo] [ob] LT';
  15861                    case 3:
  15862                        return '[v] [sredo] [ob] LT';
  15863                    case 6:
  15864                        return '[v] [soboto] [ob] LT';
  15865                    case 1:
  15866                    case 2:
  15867                    case 4:
  15868                    case 5:
  15869                        return '[v] dddd [ob] LT';
  15870                }
  15871            },
  15872            lastDay: '[včeraj ob] LT',
  15873            lastWeek: function () {
  15874                switch (this.day()) {
  15875                    case 0:
  15876                        return '[prejšnjo] [nedeljo] [ob] LT';
  15877                    case 3:
  15878                        return '[prejšnjo] [sredo] [ob] LT';
  15879                    case 6:
  15880                        return '[prejšnjo] [soboto] [ob] LT';
  15881                    case 1:
  15882                    case 2:
  15883                    case 4:
  15884                    case 5:
  15885                        return '[prejšnji] dddd [ob] LT';
  15886                }
  15887            },
  15888            sameElse: 'L',
  15889        },
  15890        relativeTime: {
  15891            future: 'čez %s',
  15892            past: 'pred %s',
  15893            s: processRelativeTime$9,
  15894            ss: processRelativeTime$9,
  15895            m: processRelativeTime$9,
  15896            mm: processRelativeTime$9,
  15897            h: processRelativeTime$9,
  15898            hh: processRelativeTime$9,
  15899            d: processRelativeTime$9,
  15900            dd: processRelativeTime$9,
  15901            M: processRelativeTime$9,
  15902            MM: processRelativeTime$9,
  15903            y: processRelativeTime$9,
  15904            yy: processRelativeTime$9,
  15905        },
  15906        dayOfMonthOrdinalParse: /\d{1,2}\./,
  15907        ordinal: '%d.',
  15908        week: {
  15909            dow: 1, // Monday is the first day of the week.
  15910            doy: 7, // The week that contains Jan 7th is the first week of the year.
  15911        },
  15912    });
  15913
  15914    //! moment.js locale configuration
  15915
  15916    hooks.defineLocale('sq', {
  15917        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
  15918            '_'
  15919        ),
  15920        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
  15921        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
  15922            '_'
  15923        ),
  15924        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
  15925        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
  15926        weekdaysParseExact: true,
  15927        meridiemParse: /PD|MD/,
  15928        isPM: function (input) {
  15929            return input.charAt(0) === 'M';
  15930        },
  15931        meridiem: function (hours, minutes, isLower) {
  15932            return hours < 12 ? 'PD' : 'MD';
  15933        },
  15934        longDateFormat: {
  15935            LT: 'HH:mm',
  15936            LTS: 'HH:mm:ss',
  15937            L: 'DD/MM/YYYY',
  15938            LL: 'D MMMM YYYY',
  15939            LLL: 'D MMMM YYYY HH:mm',
  15940            LLLL: 'dddd, D MMMM YYYY HH:mm',
  15941        },
  15942        calendar: {
  15943            sameDay: '[Sot në] LT',
  15944            nextDay: '[Nesër në] LT',
  15945            nextWeek: 'dddd [në] LT',
  15946            lastDay: '[Dje në] LT',
  15947            lastWeek: 'dddd [e kaluar në] LT',
  15948            sameElse: 'L',
  15949        },
  15950        relativeTime: {
  15951            future: 'në %s',
  15952            past: '%s më parë',
  15953            s: 'disa sekonda',
  15954            ss: '%d sekonda',
  15955            m: 'një minutë',
  15956            mm: '%d minuta',
  15957            h: 'një orë',
  15958            hh: '%d orë',
  15959            d: 'një ditë',
  15960            dd: '%d ditë',
  15961            M: 'një muaj',
  15962            MM: '%d muaj',
  15963            y: 'një vit',
  15964            yy: '%d vite',
  15965        },
  15966        dayOfMonthOrdinalParse: /\d{1,2}\./,
  15967        ordinal: '%d.',
  15968        week: {
  15969            dow: 1, // Monday is the first day of the week.
  15970            doy: 4, // The week that contains Jan 4th is the first week of the year.
  15971        },
  15972    });
  15973
  15974    //! moment.js locale configuration
  15975
  15976    var translator$1 = {
  15977        words: {
  15978            //Different grammatical cases
  15979            ss: ['секунда', 'секунде', 'секунди'],
  15980            m: ['један минут', 'једног минута'],
  15981            mm: ['минут', 'минута', 'минута'],
  15982            h: ['један сат', 'једног сата'],
  15983            hh: ['сат', 'сата', 'сати'],
  15984            d: ['један дан', 'једног дана'],
  15985            dd: ['дан', 'дана', 'дана'],
  15986            M: ['један месец', 'једног месеца'],
  15987            MM: ['месец', 'месеца', 'месеци'],
  15988            y: ['једну годину', 'једне године'],
  15989            yy: ['годину', 'године', 'година'],
  15990        },
  15991        correctGrammaticalCase: function (number, wordKey) {
  15992            if (
  15993                number % 10 >= 1 &&
  15994                number % 10 <= 4 &&
  15995                (number % 100 < 10 || number % 100 >= 20)
  15996            ) {
  15997                return number % 10 === 1 ? wordKey[0] : wordKey[1];
  15998            }
  15999            return wordKey[2];
  16000        },
  16001        translate: function (number, withoutSuffix, key, isFuture) {
  16002            var wordKey = translator$1.words[key],
  16003                word;
  16004
  16005            if (key.length === 1) {
  16006                // Nominativ
  16007                if (key === 'y' && withoutSuffix) return 'једна година';
  16008                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
  16009            }
  16010
  16011            word = translator$1.correctGrammaticalCase(number, wordKey);
  16012            // Nominativ
  16013            if (key === 'yy' && withoutSuffix && word === 'годину') {
  16014                return number + ' година';
  16015            }
  16016
  16017            return number + ' ' + word;
  16018        },
  16019    };
  16020
  16021    hooks.defineLocale('sr-cyrl', {
  16022        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(
  16023            '_'
  16024        ),
  16025        monthsShort:
  16026            'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
  16027        monthsParseExact: true,
  16028        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
  16029        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
  16030        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
  16031        weekdaysParseExact: true,
  16032        longDateFormat: {
  16033            LT: 'H:mm',
  16034            LTS: 'H:mm:ss',
  16035            L: 'D. M. YYYY.',
  16036            LL: 'D. MMMM YYYY.',
  16037            LLL: 'D. MMMM YYYY. H:mm',
  16038            LLLL: 'dddd, D. MMMM YYYY. H:mm',
  16039        },
  16040        calendar: {
  16041            sameDay: '[данас у] LT',
  16042            nextDay: '[сутра у] LT',
  16043            nextWeek: function () {
  16044                switch (this.day()) {
  16045                    case 0:
  16046                        return '[у] [недељу] [у] LT';
  16047                    case 3:
  16048                        return '[у] [среду] [у] LT';
  16049                    case 6:
  16050                        return '[у] [суботу] [у] LT';
  16051                    case 1:
  16052                    case 2:
  16053                    case 4:
  16054                    case 5:
  16055                        return '[у] dddd [у] LT';
  16056                }
  16057            },
  16058            lastDay: '[јуче у] LT',
  16059            lastWeek: function () {
  16060                var lastWeekDays = [
  16061                    '[прошле] [недеље] [у] LT',
  16062                    '[прошлог] [понедељка] [у] LT',
  16063                    '[прошлог] [уторка] [у] LT',
  16064                    '[прошле] [среде] [у] LT',
  16065                    '[прошлог] [четвртка] [у] LT',
  16066                    '[прошлог] [петка] [у] LT',
  16067                    '[прошле] [суботе] [у] LT',
  16068                ];
  16069                return lastWeekDays[this.day()];
  16070            },
  16071            sameElse: 'L',
  16072        },
  16073        relativeTime: {
  16074            future: 'за %s',
  16075            past: 'пре %s',
  16076            s: 'неколико секунди',
  16077            ss: translator$1.translate,
  16078            m: translator$1.translate,
  16079            mm: translator$1.translate,
  16080            h: translator$1.translate,
  16081            hh: translator$1.translate,
  16082            d: translator$1.translate,
  16083            dd: translator$1.translate,
  16084            M: translator$1.translate,
  16085            MM: translator$1.translate,
  16086            y: translator$1.translate,
  16087            yy: translator$1.translate,
  16088        },
  16089        dayOfMonthOrdinalParse: /\d{1,2}\./,
  16090        ordinal: '%d.',
  16091        week: {
  16092            dow: 1, // Monday is the first day of the week.
  16093            doy: 7, // The week that contains Jan 1st is the first week of the year.
  16094        },
  16095    });
  16096
  16097    //! moment.js locale configuration
  16098
  16099    var translator$2 = {
  16100        words: {
  16101            //Different grammatical cases
  16102            ss: ['sekunda', 'sekunde', 'sekundi'],
  16103            m: ['jedan minut', 'jednog minuta'],
  16104            mm: ['minut', 'minuta', 'minuta'],
  16105            h: ['jedan sat', 'jednog sata'],
  16106            hh: ['sat', 'sata', 'sati'],
  16107            d: ['jedan dan', 'jednog dana'],
  16108            dd: ['dan', 'dana', 'dana'],
  16109            M: ['jedan mesec', 'jednog meseca'],
  16110            MM: ['mesec', 'meseca', 'meseci'],
  16111            y: ['jednu godinu', 'jedne godine'],
  16112            yy: ['godinu', 'godine', 'godina'],
  16113        },
  16114        correctGrammaticalCase: function (number, wordKey) {
  16115            if (
  16116                number % 10 >= 1 &&
  16117                number % 10 <= 4 &&
  16118                (number % 100 < 10 || number % 100 >= 20)
  16119            ) {
  16120                return number % 10 === 1 ? wordKey[0] : wordKey[1];
  16121            }
  16122            return wordKey[2];
  16123        },
  16124        translate: function (number, withoutSuffix, key, isFuture) {
  16125            var wordKey = translator$2.words[key],
  16126                word;
  16127
  16128            if (key.length === 1) {
  16129                // Nominativ
  16130                if (key === 'y' && withoutSuffix) return 'jedna godina';
  16131                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
  16132            }
  16133
  16134            word = translator$2.correctGrammaticalCase(number, wordKey);
  16135            // Nominativ
  16136            if (key === 'yy' && withoutSuffix && word === 'godinu') {
  16137                return number + ' godina';
  16138            }
  16139
  16140            return number + ' ' + word;
  16141        },
  16142    };
  16143
  16144    hooks.defineLocale('sr', {
  16145        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
  16146            '_'
  16147        ),
  16148        monthsShort:
  16149            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
  16150        monthsParseExact: true,
  16151        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
  16152            '_'
  16153        ),
  16154        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
  16155        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
  16156        weekdaysParseExact: true,
  16157        longDateFormat: {
  16158            LT: 'H:mm',
  16159            LTS: 'H:mm:ss',
  16160            L: 'D. M. YYYY.',
  16161            LL: 'D. MMMM YYYY.',
  16162            LLL: 'D. MMMM YYYY. H:mm',
  16163            LLLL: 'dddd, D. MMMM YYYY. H:mm',
  16164        },
  16165        calendar: {
  16166            sameDay: '[danas u] LT',
  16167            nextDay: '[sutra u] LT',
  16168            nextWeek: function () {
  16169                switch (this.day()) {
  16170                    case 0:
  16171                        return '[u] [nedelju] [u] LT';
  16172                    case 3:
  16173                        return '[u] [sredu] [u] LT';
  16174                    case 6:
  16175                        return '[u] [subotu] [u] LT';
  16176                    case 1:
  16177                    case 2:
  16178                    case 4:
  16179                    case 5:
  16180                        return '[u] dddd [u] LT';
  16181                }
  16182            },
  16183            lastDay: '[juče u] LT',
  16184            lastWeek: function () {
  16185                var lastWeekDays = [
  16186                    '[prošle] [nedelje] [u] LT',
  16187                    '[prošlog] [ponedeljka] [u] LT',
  16188                    '[prošlog] [utorka] [u] LT',
  16189                    '[prošle] [srede] [u] LT',
  16190                    '[prošlog] [četvrtka] [u] LT',
  16191                    '[prošlog] [petka] [u] LT',
  16192                    '[prošle] [subote] [u] LT',
  16193                ];
  16194                return lastWeekDays[this.day()];
  16195            },
  16196            sameElse: 'L',
  16197        },
  16198        relativeTime: {
  16199            future: 'za %s',
  16200            past: 'pre %s',
  16201            s: 'nekoliko sekundi',
  16202            ss: translator$2.translate,
  16203            m: translator$2.translate,
  16204            mm: translator$2.translate,
  16205            h: translator$2.translate,
  16206            hh: translator$2.translate,
  16207            d: translator$2.translate,
  16208            dd: translator$2.translate,
  16209            M: translator$2.translate,
  16210            MM: translator$2.translate,
  16211            y: translator$2.translate,
  16212            yy: translator$2.translate,
  16213        },
  16214        dayOfMonthOrdinalParse: /\d{1,2}\./,
  16215        ordinal: '%d.',
  16216        week: {
  16217            dow: 1, // Monday is the first day of the week.
  16218            doy: 7, // The week that contains Jan 7th is the first week of the year.
  16219        },
  16220    });
  16221
  16222    //! moment.js locale configuration
  16223
  16224    hooks.defineLocale('ss', {
  16225        months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
  16226            '_'
  16227        ),
  16228        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
  16229        weekdays:
  16230            'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
  16231                '_'
  16232            ),
  16233        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
  16234        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
  16235        weekdaysParseExact: true,
  16236        longDateFormat: {
  16237            LT: 'h:mm A',
  16238            LTS: 'h:mm:ss A',
  16239            L: 'DD/MM/YYYY',
  16240            LL: 'D MMMM YYYY',
  16241            LLL: 'D MMMM YYYY h:mm A',
  16242            LLLL: 'dddd, D MMMM YYYY h:mm A',
  16243        },
  16244        calendar: {
  16245            sameDay: '[Namuhla nga] LT',
  16246            nextDay: '[Kusasa nga] LT',
  16247            nextWeek: 'dddd [nga] LT',
  16248            lastDay: '[Itolo nga] LT',
  16249            lastWeek: 'dddd [leliphelile] [nga] LT',
  16250            sameElse: 'L',
  16251        },
  16252        relativeTime: {
  16253            future: 'nga %s',
  16254            past: 'wenteka nga %s',
  16255            s: 'emizuzwana lomcane',
  16256            ss: '%d mzuzwana',
  16257            m: 'umzuzu',
  16258            mm: '%d emizuzu',
  16259            h: 'lihora',
  16260            hh: '%d emahora',
  16261            d: 'lilanga',
  16262            dd: '%d emalanga',
  16263            M: 'inyanga',
  16264            MM: '%d tinyanga',
  16265            y: 'umnyaka',
  16266            yy: '%d iminyaka',
  16267        },
  16268        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
  16269        meridiem: function (hours, minutes, isLower) {
  16270            if (hours < 11) {
  16271                return 'ekuseni';
  16272            } else if (hours < 15) {
  16273                return 'emini';
  16274            } else if (hours < 19) {
  16275                return 'entsambama';
  16276            } else {
  16277                return 'ebusuku';
  16278            }
  16279        },
  16280        meridiemHour: function (hour, meridiem) {
  16281            if (hour === 12) {
  16282                hour = 0;
  16283            }
  16284            if (meridiem === 'ekuseni') {
  16285                return hour;
  16286            } else if (meridiem === 'emini') {
  16287                return hour >= 11 ? hour : hour + 12;
  16288            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
  16289                if (hour === 0) {
  16290                    return 0;
  16291                }
  16292                return hour + 12;
  16293            }
  16294        },
  16295        dayOfMonthOrdinalParse: /\d{1,2}/,
  16296        ordinal: '%d',
  16297        week: {
  16298            dow: 1, // Monday is the first day of the week.
  16299            doy: 4, // The week that contains Jan 4th is the first week of the year.
  16300        },
  16301    });
  16302
  16303    //! moment.js locale configuration
  16304
  16305    hooks.defineLocale('sv', {
  16306        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
  16307            '_'
  16308        ),
  16309        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
  16310        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
  16311        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
  16312        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
  16313        longDateFormat: {
  16314            LT: 'HH:mm',
  16315            LTS: 'HH:mm:ss',
  16316            L: 'YYYY-MM-DD',
  16317            LL: 'D MMMM YYYY',
  16318            LLL: 'D MMMM YYYY [kl.] HH:mm',
  16319            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
  16320            lll: 'D MMM YYYY HH:mm',
  16321            llll: 'ddd D MMM YYYY HH:mm',
  16322        },
  16323        calendar: {
  16324            sameDay: '[Idag] LT',
  16325            nextDay: '[Imorgon] LT',
  16326            lastDay: '[Igår] LT',
  16327            nextWeek: '[På] dddd LT',
  16328            lastWeek: '[I] dddd[s] LT',
  16329            sameElse: 'L',
  16330        },
  16331        relativeTime: {
  16332            future: 'om %s',
  16333            past: 'för %s sedan',
  16334            s: 'några sekunder',
  16335            ss: '%d sekunder',
  16336            m: 'en minut',
  16337            mm: '%d minuter',
  16338            h: 'en timme',
  16339            hh: '%d timmar',
  16340            d: 'en dag',
  16341            dd: '%d dagar',
  16342            M: 'en månad',
  16343            MM: '%d månader',
  16344            y: 'ett år',
  16345            yy: '%d år',
  16346        },
  16347        dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
  16348        ordinal: function (number) {
  16349            var b = number % 10,
  16350                output =
  16351                    ~~((number % 100) / 10) === 1
  16352                        ? ':e'
  16353                        : b === 1
  16354                          ? ':a'
  16355                          : b === 2
  16356                            ? ':a'
  16357                            : b === 3
  16358                              ? ':e'
  16359                              : ':e';
  16360            return number + output;
  16361        },
  16362        week: {
  16363            dow: 1, // Monday is the first day of the week.
  16364            doy: 4, // The week that contains Jan 4th is the first week of the year.
  16365        },
  16366    });
  16367
  16368    //! moment.js locale configuration
  16369
  16370    hooks.defineLocale('sw', {
  16371        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
  16372            '_'
  16373        ),
  16374        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
  16375        weekdays:
  16376            'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
  16377                '_'
  16378            ),
  16379        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
  16380        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
  16381        weekdaysParseExact: true,
  16382        longDateFormat: {
  16383            LT: 'hh:mm A',
  16384            LTS: 'HH:mm:ss',
  16385            L: 'DD.MM.YYYY',
  16386            LL: 'D MMMM YYYY',
  16387            LLL: 'D MMMM YYYY HH:mm',
  16388            LLLL: 'dddd, D MMMM YYYY HH:mm',
  16389        },
  16390        calendar: {
  16391            sameDay: '[leo saa] LT',
  16392            nextDay: '[kesho saa] LT',
  16393            nextWeek: '[wiki ijayo] dddd [saat] LT',
  16394            lastDay: '[jana] LT',
  16395            lastWeek: '[wiki iliyopita] dddd [saat] LT',
  16396            sameElse: 'L',
  16397        },
  16398        relativeTime: {
  16399            future: '%s baadaye',
  16400            past: 'tokea %s',
  16401            s: 'hivi punde',
  16402            ss: 'sekunde %d',
  16403            m: 'dakika moja',
  16404            mm: 'dakika %d',
  16405            h: 'saa limoja',
  16406            hh: 'masaa %d',
  16407            d: 'siku moja',
  16408            dd: 'siku %d',
  16409            M: 'mwezi mmoja',
  16410            MM: 'miezi %d',
  16411            y: 'mwaka mmoja',
  16412            yy: 'miaka %d',
  16413        },
  16414        week: {
  16415            dow: 1, // Monday is the first day of the week.
  16416            doy: 7, // The week that contains Jan 7th is the first week of the year.
  16417        },
  16418    });
  16419
  16420    //! moment.js locale configuration
  16421
  16422    var symbolMap$h = {
  16423            1: '௧',
  16424            2: '௨',
  16425            3: '௩',
  16426            4: '௪',
  16427            5: '௫',
  16428            6: '௬',
  16429            7: '௭',
  16430            8: '௮',
  16431            9: '௯',
  16432            0: '௦',
  16433        },
  16434        numberMap$g = {
  16435            '௧': '1',
  16436            '௨': '2',
  16437            '௩': '3',
  16438            '௪': '4',
  16439            '௫': '5',
  16440            '௬': '6',
  16441            '௭': '7',
  16442            '௮': '8',
  16443            '௯': '9',
  16444            '௦': '0',
  16445        };
  16446
  16447    hooks.defineLocale('ta', {
  16448        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
  16449            '_'
  16450        ),
  16451        monthsShort:
  16452            'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
  16453                '_'
  16454            ),
  16455        weekdays:
  16456            'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
  16457                '_'
  16458            ),
  16459        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
  16460            '_'
  16461        ),
  16462        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
  16463        longDateFormat: {
  16464            LT: 'HH:mm',
  16465            LTS: 'HH:mm:ss',
  16466            L: 'DD/MM/YYYY',
  16467            LL: 'D MMMM YYYY',
  16468            LLL: 'D MMMM YYYY, HH:mm',
  16469            LLLL: 'dddd, D MMMM YYYY, HH:mm',
  16470        },
  16471        calendar: {
  16472            sameDay: '[இன்று] LT',
  16473            nextDay: '[நாளை] LT',
  16474            nextWeek: 'dddd, LT',
  16475            lastDay: '[நேற்று] LT',
  16476            lastWeek: '[கடந்த வாரம்] dddd, LT',
  16477            sameElse: 'L',
  16478        },
  16479        relativeTime: {
  16480            future: '%s இல்',
  16481            past: '%s முன்',
  16482            s: 'ஒரு சில விநாடிகள்',
  16483            ss: '%d விநாடிகள்',
  16484            m: 'ஒரு நிமிடம்',
  16485            mm: '%d நிமிடங்கள்',
  16486            h: 'ஒரு மணி நேரம்',
  16487            hh: '%d மணி நேரம்',
  16488            d: 'ஒரு நாள்',
  16489            dd: '%d நாட்கள்',
  16490            M: 'ஒரு மாதம்',
  16491            MM: '%d மாதங்கள்',
  16492            y: 'ஒரு வருடம்',
  16493            yy: '%d ஆண்டுகள்',
  16494        },
  16495        dayOfMonthOrdinalParse: /\d{1,2}வது/,
  16496        ordinal: function (number) {
  16497            return number + 'வது';
  16498        },
  16499        preparse: function (string) {
  16500            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
  16501                return numberMap$g[match];
  16502            });
  16503        },
  16504        postformat: function (string) {
  16505            return string.replace(/\d/g, function (match) {
  16506                return symbolMap$h[match];
  16507            });
  16508        },
  16509        // refer http://ta.wikipedia.org/s/1er1
  16510        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
  16511        meridiem: function (hour, minute, isLower) {
  16512            if (hour < 2) {
  16513                return ' யாமம்';
  16514            } else if (hour < 6) {
  16515                return ' வைகறை'; // வைகறை
  16516            } else if (hour < 10) {
  16517                return ' காலை'; // காலை
  16518            } else if (hour < 14) {
  16519                return ' நண்பகல்'; // நண்பகல்
  16520            } else if (hour < 18) {
  16521                return ' எற்பாடு'; // எற்பாடு
  16522            } else if (hour < 22) {
  16523                return ' மாலை'; // மாலை
  16524            } else {
  16525                return ' யாமம்';
  16526            }
  16527        },
  16528        meridiemHour: function (hour, meridiem) {
  16529            if (hour === 12) {
  16530                hour = 0;
  16531            }
  16532            if (meridiem === 'யாமம்') {
  16533                return hour < 2 ? hour : hour + 12;
  16534            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
  16535                return hour;
  16536            } else if (meridiem === 'நண்பகல்') {
  16537                return hour >= 10 ? hour : hour + 12;
  16538            } else {
  16539                return hour + 12;
  16540            }
  16541        },
  16542        week: {
  16543            dow: 0, // Sunday is the first day of the week.
  16544            doy: 6, // The week that contains Jan 6th is the first week of the year.
  16545        },
  16546    });
  16547
  16548    //! moment.js locale configuration
  16549
  16550    hooks.defineLocale('te', {
  16551        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
  16552            '_'
  16553        ),
  16554        monthsShort:
  16555            'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
  16556                '_'
  16557            ),
  16558        monthsParseExact: true,
  16559        weekdays:
  16560            'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
  16561                '_'
  16562            ),
  16563        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
  16564        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
  16565        longDateFormat: {
  16566            LT: 'A h:mm',
  16567            LTS: 'A h:mm:ss',
  16568            L: 'DD/MM/YYYY',
  16569            LL: 'D MMMM YYYY',
  16570            LLL: 'D MMMM YYYY, A h:mm',
  16571            LLLL: 'dddd, D MMMM YYYY, A h:mm',
  16572        },
  16573        calendar: {
  16574            sameDay: '[నేడు] LT',
  16575            nextDay: '[రేపు] LT',
  16576            nextWeek: 'dddd, LT',
  16577            lastDay: '[నిన్న] LT',
  16578            lastWeek: '[గత] dddd, LT',
  16579            sameElse: 'L',
  16580        },
  16581        relativeTime: {
  16582            future: '%s లో',
  16583            past: '%s క్రితం',
  16584            s: 'కొన్ని క్షణాలు',
  16585            ss: '%d సెకన్లు',
  16586            m: 'ఒక నిమిషం',
  16587            mm: '%d నిమిషాలు',
  16588            h: 'ఒక గంట',
  16589            hh: '%d గంటలు',
  16590            d: 'ఒక రోజు',
  16591            dd: '%d రోజులు',
  16592            M: 'ఒక నెల',
  16593            MM: '%d నెలలు',
  16594            y: 'ఒక సంవత్సరం',
  16595            yy: '%d సంవత్సరాలు',
  16596        },
  16597        dayOfMonthOrdinalParse: /\d{1,2}వ/,
  16598        ordinal: '%dవ',
  16599        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
  16600        meridiemHour: function (hour, meridiem) {
  16601            if (hour === 12) {
  16602                hour = 0;
  16603            }
  16604            if (meridiem === 'రాత్రి') {
  16605                return hour < 4 ? hour : hour + 12;
  16606            } else if (meridiem === 'ఉదయం') {
  16607                return hour;
  16608            } else if (meridiem === 'మధ్యాహ్నం') {
  16609                return hour >= 10 ? hour : hour + 12;
  16610            } else if (meridiem === 'సాయంత్రం') {
  16611                return hour + 12;
  16612            }
  16613        },
  16614        meridiem: function (hour, minute, isLower) {
  16615            if (hour < 4) {
  16616                return 'రాత్రి';
  16617            } else if (hour < 10) {
  16618                return 'ఉదయం';
  16619            } else if (hour < 17) {
  16620                return 'మధ్యాహ్నం';
  16621            } else if (hour < 20) {
  16622                return 'సాయంత్రం';
  16623            } else {
  16624                return 'రాత్రి';
  16625            }
  16626        },
  16627        week: {
  16628            dow: 0, // Sunday is the first day of the week.
  16629            doy: 6, // The week that contains Jan 6th is the first week of the year.
  16630        },
  16631    });
  16632
  16633    //! moment.js locale configuration
  16634
  16635    hooks.defineLocale('tet', {
  16636        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
  16637            '_'
  16638        ),
  16639        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
  16640        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
  16641        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
  16642        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
  16643        longDateFormat: {
  16644            LT: 'HH:mm',
  16645            LTS: 'HH:mm:ss',
  16646            L: 'DD/MM/YYYY',
  16647            LL: 'D MMMM YYYY',
  16648            LLL: 'D MMMM YYYY HH:mm',
  16649            LLLL: 'dddd, D MMMM YYYY HH:mm',
  16650        },
  16651        calendar: {
  16652            sameDay: '[Ohin iha] LT',
  16653            nextDay: '[Aban iha] LT',
  16654            nextWeek: 'dddd [iha] LT',
  16655            lastDay: '[Horiseik iha] LT',
  16656            lastWeek: 'dddd [semana kotuk] [iha] LT',
  16657            sameElse: 'L',
  16658        },
  16659        relativeTime: {
  16660            future: 'iha %s',
  16661            past: '%s liuba',
  16662            s: 'segundu balun',
  16663            ss: 'segundu %d',
  16664            m: 'minutu ida',
  16665            mm: 'minutu %d',
  16666            h: 'oras ida',
  16667            hh: 'oras %d',
  16668            d: 'loron ida',
  16669            dd: 'loron %d',
  16670            M: 'fulan ida',
  16671            MM: 'fulan %d',
  16672            y: 'tinan ida',
  16673            yy: 'tinan %d',
  16674        },
  16675        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
  16676        ordinal: function (number) {
  16677            var b = number % 10,
  16678                output =
  16679                    ~~((number % 100) / 10) === 1
  16680                        ? 'th'
  16681                        : b === 1
  16682                          ? 'st'
  16683                          : b === 2
  16684                            ? 'nd'
  16685                            : b === 3
  16686                              ? 'rd'
  16687                              : 'th';
  16688            return number + output;
  16689        },
  16690        week: {
  16691            dow: 1, // Monday is the first day of the week.
  16692            doy: 4, // The week that contains Jan 4th is the first week of the year.
  16693        },
  16694    });
  16695
  16696    //! moment.js locale configuration
  16697
  16698    var suffixes$3 = {
  16699        0: '-ум',
  16700        1: '-ум',
  16701        2: '-юм',
  16702        3: '-юм',
  16703        4: '-ум',
  16704        5: '-ум',
  16705        6: '-ум',
  16706        7: '-ум',
  16707        8: '-ум',
  16708        9: '-ум',
  16709        10: '-ум',
  16710        12: '-ум',
  16711        13: '-ум',
  16712        20: '-ум',
  16713        30: '-юм',
  16714        40: '-ум',
  16715        50: '-ум',
  16716        60: '-ум',
  16717        70: '-ум',
  16718        80: '-ум',
  16719        90: '-ум',
  16720        100: '-ум',
  16721    };
  16722
  16723    hooks.defineLocale('tg', {
  16724        months: {
  16725            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(
  16726                '_'
  16727            ),
  16728            standalone:
  16729                'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
  16730                    '_'
  16731                ),
  16732        },
  16733        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
  16734        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
  16735            '_'
  16736        ),
  16737        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
  16738        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
  16739        longDateFormat: {
  16740            LT: 'HH:mm',
  16741            LTS: 'HH:mm:ss',
  16742            L: 'DD.MM.YYYY',
  16743            LL: 'D MMMM YYYY',
  16744            LLL: 'D MMMM YYYY HH:mm',
  16745            LLLL: 'dddd, D MMMM YYYY HH:mm',
  16746        },
  16747        calendar: {
  16748            sameDay: '[Имрӯз соати] LT',
  16749            nextDay: '[Фардо соати] LT',
  16750            lastDay: '[Дирӯз соати] LT',
  16751            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
  16752            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
  16753            sameElse: 'L',
  16754        },
  16755        relativeTime: {
  16756            future: 'баъди %s',
  16757            past: '%s пеш',
  16758            s: 'якчанд сония',
  16759            m: 'як дақиқа',
  16760            mm: '%d дақиқа',
  16761            h: 'як соат',
  16762            hh: '%d соат',
  16763            d: 'як рӯз',
  16764            dd: '%d рӯз',
  16765            M: 'як моҳ',
  16766            MM: '%d моҳ',
  16767            y: 'як сол',
  16768            yy: '%d сол',
  16769        },
  16770        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
  16771        meridiemHour: function (hour, meridiem) {
  16772            if (hour === 12) {
  16773                hour = 0;
  16774            }
  16775            if (meridiem === 'шаб') {
  16776                return hour < 4 ? hour : hour + 12;
  16777            } else if (meridiem === 'субҳ') {
  16778                return hour;
  16779            } else if (meridiem === 'рӯз') {
  16780                return hour >= 11 ? hour : hour + 12;
  16781            } else if (meridiem === 'бегоҳ') {
  16782                return hour + 12;
  16783            }
  16784        },
  16785        meridiem: function (hour, minute, isLower) {
  16786            if (hour < 4) {
  16787                return 'шаб';
  16788            } else if (hour < 11) {
  16789                return 'субҳ';
  16790            } else if (hour < 16) {
  16791                return 'рӯз';
  16792            } else if (hour < 19) {
  16793                return 'бегоҳ';
  16794            } else {
  16795                return 'шаб';
  16796            }
  16797        },
  16798        dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
  16799        ordinal: function (number) {
  16800            var a = number % 10,
  16801                b = number >= 100 ? 100 : null;
  16802            return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]);
  16803        },
  16804        week: {
  16805            dow: 1, // Monday is the first day of the week.
  16806            doy: 7, // The week that contains Jan 1th is the first week of the year.
  16807        },
  16808    });
  16809
  16810    //! moment.js locale configuration
  16811
  16812    hooks.defineLocale('th', {
  16813        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
  16814            '_'
  16815        ),
  16816        monthsShort:
  16817            'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
  16818                '_'
  16819            ),
  16820        monthsParseExact: true,
  16821        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
  16822        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
  16823        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
  16824        weekdaysParseExact: true,
  16825        longDateFormat: {
  16826            LT: 'H:mm',
  16827            LTS: 'H:mm:ss',
  16828            L: 'DD/MM/YYYY',
  16829            LL: 'D MMMM YYYY',
  16830            LLL: 'D MMMM YYYY เวลา H:mm',
  16831            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
  16832        },
  16833        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
  16834        isPM: function (input) {
  16835            return input === 'หลังเที่ยง';
  16836        },
  16837        meridiem: function (hour, minute, isLower) {
  16838            if (hour < 12) {
  16839                return 'ก่อนเที่ยง';
  16840            } else {
  16841                return 'หลังเที่ยง';
  16842            }
  16843        },
  16844        calendar: {
  16845            sameDay: '[วันนี้ เวลา] LT',
  16846            nextDay: '[พรุ่งนี้ เวลา] LT',
  16847            nextWeek: 'dddd[หน้า เวลา] LT',
  16848            lastDay: '[เมื่อวานนี้ เวลา] LT',
  16849            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
  16850            sameElse: 'L',
  16851        },
  16852        relativeTime: {
  16853            future: 'อีก %s',
  16854            past: '%sที่แล้ว',
  16855            s: 'ไม่กี่วินาที',
  16856            ss: '%d วินาที',
  16857            m: '1 นาที',
  16858            mm: '%d นาที',
  16859            h: '1 ชั่วโมง',
  16860            hh: '%d ชั่วโมง',
  16861            d: '1 วัน',
  16862            dd: '%d วัน',
  16863            w: '1 สัปดาห์',
  16864            ww: '%d สัปดาห์',
  16865            M: '1 เดือน',
  16866            MM: '%d เดือน',
  16867            y: '1 ปี',
  16868            yy: '%d ปี',
  16869        },
  16870    });
  16871
  16872    //! moment.js locale configuration
  16873
  16874    var suffixes$4 = {
  16875        1: "'inji",
  16876        5: "'inji",
  16877        8: "'inji",
  16878        70: "'inji",
  16879        80: "'inji",
  16880        2: "'nji",
  16881        7: "'nji",
  16882        20: "'nji",
  16883        50: "'nji",
  16884        3: "'ünji",
  16885        4: "'ünji",
  16886        100: "'ünji",
  16887        6: "'njy",
  16888        9: "'unjy",
  16889        10: "'unjy",
  16890        30: "'unjy",
  16891        60: "'ynjy",
  16892        90: "'ynjy",
  16893    };
  16894
  16895    hooks.defineLocale('tk', {
  16896        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
  16897            '_'
  16898        ),
  16899        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
  16900        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
  16901            '_'
  16902        ),
  16903        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
  16904        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
  16905        longDateFormat: {
  16906            LT: 'HH:mm',
  16907            LTS: 'HH:mm:ss',
  16908            L: 'DD.MM.YYYY',
  16909            LL: 'D MMMM YYYY',
  16910            LLL: 'D MMMM YYYY HH:mm',
  16911            LLLL: 'dddd, D MMMM YYYY HH:mm',
  16912        },
  16913        calendar: {
  16914            sameDay: '[bugün sagat] LT',
  16915            nextDay: '[ertir sagat] LT',
  16916            nextWeek: '[indiki] dddd [sagat] LT',
  16917            lastDay: '[düýn] LT',
  16918            lastWeek: '[geçen] dddd [sagat] LT',
  16919            sameElse: 'L',
  16920        },
  16921        relativeTime: {
  16922            future: '%s soň',
  16923            past: '%s öň',
  16924            s: 'birnäçe sekunt',
  16925            m: 'bir minut',
  16926            mm: '%d minut',
  16927            h: 'bir sagat',
  16928            hh: '%d sagat',
  16929            d: 'bir gün',
  16930            dd: '%d gün',
  16931            M: 'bir aý',
  16932            MM: '%d aý',
  16933            y: 'bir ýyl',
  16934            yy: '%d ýyl',
  16935        },
  16936        ordinal: function (number, period) {
  16937            switch (period) {
  16938                case 'd':
  16939                case 'D':
  16940                case 'Do':
  16941                case 'DD':
  16942                    return number;
  16943                default:
  16944                    if (number === 0) {
  16945                        // special case for zero
  16946                        return number + "'unjy";
  16947                    }
  16948                    var a = number % 10,
  16949                        b = (number % 100) - a,
  16950                        c = number >= 100 ? 100 : null;
  16951                    return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]);
  16952            }
  16953        },
  16954        week: {
  16955            dow: 1, // Monday is the first day of the week.
  16956            doy: 7, // The week that contains Jan 7th is the first week of the year.
  16957        },
  16958    });
  16959
  16960    //! moment.js locale configuration
  16961
  16962    hooks.defineLocale('tl-ph', {
  16963        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
  16964            '_'
  16965        ),
  16966        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
  16967        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
  16968            '_'
  16969        ),
  16970        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
  16971        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
  16972        longDateFormat: {
  16973            LT: 'HH:mm',
  16974            LTS: 'HH:mm:ss',
  16975            L: 'MM/D/YYYY',
  16976            LL: 'MMMM D, YYYY',
  16977            LLL: 'MMMM D, YYYY HH:mm',
  16978            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
  16979        },
  16980        calendar: {
  16981            sameDay: 'LT [ngayong araw]',
  16982            nextDay: '[Bukas ng] LT',
  16983            nextWeek: 'LT [sa susunod na] dddd',
  16984            lastDay: 'LT [kahapon]',
  16985            lastWeek: 'LT [noong nakaraang] dddd',
  16986            sameElse: 'L',
  16987        },
  16988        relativeTime: {
  16989            future: 'sa loob ng %s',
  16990            past: '%s ang nakalipas',
  16991            s: 'ilang segundo',
  16992            ss: '%d segundo',
  16993            m: 'isang minuto',
  16994            mm: '%d minuto',
  16995            h: 'isang oras',
  16996            hh: '%d oras',
  16997            d: 'isang araw',
  16998            dd: '%d araw',
  16999            M: 'isang buwan',
  17000            MM: '%d buwan',
  17001            y: 'isang taon',
  17002            yy: '%d taon',
  17003        },
  17004        dayOfMonthOrdinalParse: /\d{1,2}/,
  17005        ordinal: function (number) {
  17006            return number;
  17007        },
  17008        week: {
  17009            dow: 1, // Monday is the first day of the week.
  17010            doy: 4, // The week that contains Jan 4th is the first week of the year.
  17011        },
  17012    });
  17013
  17014    //! moment.js locale configuration
  17015
  17016    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
  17017
  17018    function translateFuture(output) {
  17019        var time = output;
  17020        time =
  17021            output.indexOf('jaj') !== -1
  17022                ? time.slice(0, -3) + 'leS'
  17023                : output.indexOf('jar') !== -1
  17024                  ? time.slice(0, -3) + 'waQ'
  17025                  : output.indexOf('DIS') !== -1
  17026                    ? time.slice(0, -3) + 'nem'
  17027                    : time + ' pIq';
  17028        return time;
  17029    }
  17030
  17031    function translatePast(output) {
  17032        var time = output;
  17033        time =
  17034            output.indexOf('jaj') !== -1
  17035                ? time.slice(0, -3) + 'Hu’'
  17036                : output.indexOf('jar') !== -1
  17037                  ? time.slice(0, -3) + 'wen'
  17038                  : output.indexOf('DIS') !== -1
  17039                    ? time.slice(0, -3) + 'ben'
  17040                    : time + ' ret';
  17041        return time;
  17042    }
  17043
  17044    function translate$a(number, withoutSuffix, string, isFuture) {
  17045        var numberNoun = numberAsNoun(number);
  17046        switch (string) {
  17047            case 'ss':
  17048                return numberNoun + ' lup';
  17049            case 'mm':
  17050                return numberNoun + ' tup';
  17051            case 'hh':
  17052                return numberNoun + ' rep';
  17053            case 'dd':
  17054                return numberNoun + ' jaj';
  17055            case 'MM':
  17056                return numberNoun + ' jar';
  17057            case 'yy':
  17058                return numberNoun + ' DIS';
  17059        }
  17060    }
  17061
  17062    function numberAsNoun(number) {
  17063        var hundred = Math.floor((number % 1000) / 100),
  17064            ten = Math.floor((number % 100) / 10),
  17065            one = number % 10,
  17066            word = '';
  17067        if (hundred > 0) {
  17068            word += numbersNouns[hundred] + 'vatlh';
  17069        }
  17070        if (ten > 0) {
  17071            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
  17072        }
  17073        if (one > 0) {
  17074            word += (word !== '' ? ' ' : '') + numbersNouns[one];
  17075        }
  17076        return word === '' ? 'pagh' : word;
  17077    }
  17078
  17079    hooks.defineLocale('tlh', {
  17080        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(
  17081            '_'
  17082        ),
  17083        monthsShort:
  17084            '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(
  17085                '_'
  17086            ),
  17087        monthsParseExact: true,
  17088        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
  17089            '_'
  17090        ),
  17091        weekdaysShort:
  17092            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
  17093        weekdaysMin:
  17094            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
  17095        longDateFormat: {
  17096            LT: 'HH:mm',
  17097            LTS: 'HH:mm:ss',
  17098            L: 'DD.MM.YYYY',
  17099            LL: 'D MMMM YYYY',
  17100            LLL: 'D MMMM YYYY HH:mm',
  17101            LLLL: 'dddd, D MMMM YYYY HH:mm',
  17102        },
  17103        calendar: {
  17104            sameDay: '[DaHjaj] LT',
  17105            nextDay: '[wa’leS] LT',
  17106            nextWeek: 'LLL',
  17107            lastDay: '[wa’Hu’] LT',
  17108            lastWeek: 'LLL',
  17109            sameElse: 'L',
  17110        },
  17111        relativeTime: {
  17112            future: translateFuture,
  17113            past: translatePast,
  17114            s: 'puS lup',
  17115            ss: translate$a,
  17116            m: 'wa’ tup',
  17117            mm: translate$a,
  17118            h: 'wa’ rep',
  17119            hh: translate$a,
  17120            d: 'wa’ jaj',
  17121            dd: translate$a,
  17122            M: 'wa’ jar',
  17123            MM: translate$a,
  17124            y: 'wa’ DIS',
  17125            yy: translate$a,
  17126        },
  17127        dayOfMonthOrdinalParse: /\d{1,2}\./,
  17128        ordinal: '%d.',
  17129        week: {
  17130            dow: 1, // Monday is the first day of the week.
  17131            doy: 4, // The week that contains Jan 4th is the first week of the year.
  17132        },
  17133    });
  17134
  17135    //! moment.js locale configuration
  17136
  17137    var suffixes$5 = {
  17138        1: "'inci",
  17139        5: "'inci",
  17140        8: "'inci",
  17141        70: "'inci",
  17142        80: "'inci",
  17143        2: "'nci",
  17144        7: "'nci",
  17145        20: "'nci",
  17146        50: "'nci",
  17147        3: "'üncü",
  17148        4: "'üncü",
  17149        100: "'üncü",
  17150        6: "'ncı",
  17151        9: "'uncu",
  17152        10: "'uncu",
  17153        30: "'uncu",
  17154        60: "'ıncı",
  17155        90: "'ıncı",
  17156    };
  17157
  17158    hooks.defineLocale('tr', {
  17159        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
  17160            '_'
  17161        ),
  17162        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
  17163        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
  17164            '_'
  17165        ),
  17166        weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),
  17167        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
  17168        meridiem: function (hours, minutes, isLower) {
  17169            if (hours < 12) {
  17170                return isLower ? 'öö' : 'ÖÖ';
  17171            } else {
  17172                return isLower ? 'ös' : 'ÖS';
  17173            }
  17174        },
  17175        meridiemParse: /öö|ÖÖ|ös|ÖS/,
  17176        isPM: function (input) {
  17177            return input === 'ös' || input === 'ÖS';
  17178        },
  17179        longDateFormat: {
  17180            LT: 'HH:mm',
  17181            LTS: 'HH:mm:ss',
  17182            L: 'DD.MM.YYYY',
  17183            LL: 'D MMMM YYYY',
  17184            LLL: 'D MMMM YYYY HH:mm',
  17185            LLLL: 'dddd, D MMMM YYYY HH:mm',
  17186        },
  17187        calendar: {
  17188            sameDay: '[bugün saat] LT',
  17189            nextDay: '[yarın saat] LT',
  17190            nextWeek: '[gelecek] dddd [saat] LT',
  17191            lastDay: '[dün] LT',
  17192            lastWeek: '[geçen] dddd [saat] LT',
  17193            sameElse: 'L',
  17194        },
  17195        relativeTime: {
  17196            future: '%s sonra',
  17197            past: '%s önce',
  17198            s: 'birkaç saniye',
  17199            ss: '%d saniye',
  17200            m: 'bir dakika',
  17201            mm: '%d dakika',
  17202            h: 'bir saat',
  17203            hh: '%d saat',
  17204            d: 'bir gün',
  17205            dd: '%d gün',
  17206            w: 'bir hafta',
  17207            ww: '%d hafta',
  17208            M: 'bir ay',
  17209            MM: '%d ay',
  17210            y: 'bir yıl',
  17211            yy: '%d yıl',
  17212        },
  17213        ordinal: function (number, period) {
  17214            switch (period) {
  17215                case 'd':
  17216                case 'D':
  17217                case 'Do':
  17218                case 'DD':
  17219                    return number;
  17220                default:
  17221                    if (number === 0) {
  17222                        // special case for zero
  17223                        return number + "'ıncı";
  17224                    }
  17225                    var a = number % 10,
  17226                        b = (number % 100) - a,
  17227                        c = number >= 100 ? 100 : null;
  17228                    return number + (suffixes$5[a] || suffixes$5[b] || suffixes$5[c]);
  17229            }
  17230        },
  17231        week: {
  17232            dow: 1, // Monday is the first day of the week.
  17233            doy: 7, // The week that contains Jan 7th is the first week of the year.
  17234        },
  17235    });
  17236
  17237    //! moment.js locale configuration
  17238
  17239    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
  17240    // This is currently too difficult (maybe even impossible) to add.
  17241    hooks.defineLocale('tzl', {
  17242        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
  17243            '_'
  17244        ),
  17245        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
  17246        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
  17247        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
  17248        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
  17249        longDateFormat: {
  17250            LT: 'HH.mm',
  17251            LTS: 'HH.mm.ss',
  17252            L: 'DD.MM.YYYY',
  17253            LL: 'D. MMMM [dallas] YYYY',
  17254            LLL: 'D. MMMM [dallas] YYYY HH.mm',
  17255            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
  17256        },
  17257        meridiemParse: /d\'o|d\'a/i,
  17258        isPM: function (input) {
  17259            return "d'o" === input.toLowerCase();
  17260        },
  17261        meridiem: function (hours, minutes, isLower) {
  17262            if (hours > 11) {
  17263                return isLower ? "d'o" : "D'O";
  17264            } else {
  17265                return isLower ? "d'a" : "D'A";
  17266            }
  17267        },
  17268        calendar: {
  17269            sameDay: '[oxhi à] LT',
  17270            nextDay: '[demà à] LT',
  17271            nextWeek: 'dddd [à] LT',
  17272            lastDay: '[ieiri à] LT',
  17273            lastWeek: '[sür el] dddd [lasteu à] LT',
  17274            sameElse: 'L',
  17275        },
  17276        relativeTime: {
  17277            future: 'osprei %s',
  17278            past: 'ja%s',
  17279            s: processRelativeTime$a,
  17280            ss: processRelativeTime$a,
  17281            m: processRelativeTime$a,
  17282            mm: processRelativeTime$a,
  17283            h: processRelativeTime$a,
  17284            hh: processRelativeTime$a,
  17285            d: processRelativeTime$a,
  17286            dd: processRelativeTime$a,
  17287            M: processRelativeTime$a,
  17288            MM: processRelativeTime$a,
  17289            y: processRelativeTime$a,
  17290            yy: processRelativeTime$a,
  17291        },
  17292        dayOfMonthOrdinalParse: /\d{1,2}\./,
  17293        ordinal: '%d.',
  17294        week: {
  17295            dow: 1, // Monday is the first day of the week.
  17296            doy: 4, // The week that contains Jan 4th is the first week of the year.
  17297        },
  17298    });
  17299
  17300    function processRelativeTime$a(number, withoutSuffix, key, isFuture) {
  17301        var format = {
  17302            s: ['viensas secunds', "'iensas secunds"],
  17303            ss: [number + ' secunds', '' + number + ' secunds'],
  17304            m: ["'n míut", "'iens míut"],
  17305            mm: [number + ' míuts', '' + number + ' míuts'],
  17306            h: ["'n þora", "'iensa þora"],
  17307            hh: [number + ' þoras', '' + number + ' þoras'],
  17308            d: ["'n ziua", "'iensa ziua"],
  17309            dd: [number + ' ziuas', '' + number + ' ziuas'],
  17310            M: ["'n mes", "'iens mes"],
  17311            MM: [number + ' mesen', '' + number + ' mesen'],
  17312            y: ["'n ar", "'iens ar"],
  17313            yy: [number + ' ars', '' + number + ' ars'],
  17314        };
  17315        return isFuture
  17316            ? format[key][0]
  17317            : withoutSuffix
  17318              ? format[key][0]
  17319              : format[key][1];
  17320    }
  17321
  17322    //! moment.js locale configuration
  17323
  17324    hooks.defineLocale('tzm-latn', {
  17325        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
  17326            '_'
  17327        ),
  17328        monthsShort:
  17329            'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
  17330                '_'
  17331            ),
  17332        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
  17333        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
  17334        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
  17335        longDateFormat: {
  17336            LT: 'HH:mm',
  17337            LTS: 'HH:mm:ss',
  17338            L: 'DD/MM/YYYY',
  17339            LL: 'D MMMM YYYY',
  17340            LLL: 'D MMMM YYYY HH:mm',
  17341            LLLL: 'dddd D MMMM YYYY HH:mm',
  17342        },
  17343        calendar: {
  17344            sameDay: '[asdkh g] LT',
  17345            nextDay: '[aska g] LT',
  17346            nextWeek: 'dddd [g] LT',
  17347            lastDay: '[assant g] LT',
  17348            lastWeek: 'dddd [g] LT',
  17349            sameElse: 'L',
  17350        },
  17351        relativeTime: {
  17352            future: 'dadkh s yan %s',
  17353            past: 'yan %s',
  17354            s: 'imik',
  17355            ss: '%d imik',
  17356            m: 'minuḍ',
  17357            mm: '%d minuḍ',
  17358            h: 'saɛa',
  17359            hh: '%d tassaɛin',
  17360            d: 'ass',
  17361            dd: '%d ossan',
  17362            M: 'ayowr',
  17363            MM: '%d iyyirn',
  17364            y: 'asgas',
  17365            yy: '%d isgasn',
  17366        },
  17367        week: {
  17368            dow: 6, // Saturday is the first day of the week.
  17369            doy: 12, // The week that contains Jan 12th is the first week of the year.
  17370        },
  17371    });
  17372
  17373    //! moment.js locale configuration
  17374
  17375    hooks.defineLocale('tzm', {
  17376        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
  17377            '_'
  17378        ),
  17379        monthsShort:
  17380            'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
  17381                '_'
  17382            ),
  17383        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
  17384        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
  17385        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
  17386        longDateFormat: {
  17387            LT: 'HH:mm',
  17388            LTS: 'HH:mm:ss',
  17389            L: 'DD/MM/YYYY',
  17390            LL: 'D MMMM YYYY',
  17391            LLL: 'D MMMM YYYY HH:mm',
  17392            LLLL: 'dddd D MMMM YYYY HH:mm',
  17393        },
  17394        calendar: {
  17395            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
  17396            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
  17397            nextWeek: 'dddd [ⴴ] LT',
  17398            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
  17399            lastWeek: 'dddd [ⴴ] LT',
  17400            sameElse: 'L',
  17401        },
  17402        relativeTime: {
  17403            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
  17404            past: 'ⵢⴰⵏ %s',
  17405            s: 'ⵉⵎⵉⴽ',
  17406            ss: '%d ⵉⵎⵉⴽ',
  17407            m: 'ⵎⵉⵏⵓⴺ',
  17408            mm: '%d ⵎⵉⵏⵓⴺ',
  17409            h: 'ⵙⴰⵄⴰ',
  17410            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
  17411            d: 'ⴰⵙⵙ',
  17412            dd: '%d oⵙⵙⴰⵏ',
  17413            M: 'ⴰⵢoⵓⵔ',
  17414            MM: '%d ⵉⵢⵢⵉⵔⵏ',
  17415            y: 'ⴰⵙⴳⴰⵙ',
  17416            yy: '%d ⵉⵙⴳⴰⵙⵏ',
  17417        },
  17418        week: {
  17419            dow: 6, // Saturday is the first day of the week.
  17420            doy: 12, // The week that contains Jan 12th is the first week of the year.
  17421        },
  17422    });
  17423
  17424    //! moment.js locale configuration
  17425
  17426    hooks.defineLocale('ug-cn', {
  17427        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
  17428            '_'
  17429        ),
  17430        monthsShort:
  17431            'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
  17432                '_'
  17433            ),
  17434        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
  17435            '_'
  17436        ),
  17437        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
  17438        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
  17439        longDateFormat: {
  17440            LT: 'HH:mm',
  17441            LTS: 'HH:mm:ss',
  17442            L: 'YYYY-MM-DD',
  17443            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
  17444            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
  17445            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
  17446        },
  17447        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
  17448        meridiemHour: function (hour, meridiem) {
  17449            if (hour === 12) {
  17450                hour = 0;
  17451            }
  17452            if (
  17453                meridiem === 'يېرىم كېچە' ||
  17454                meridiem === 'سەھەر' ||
  17455                meridiem === 'چۈشتىن بۇرۇن'
  17456            ) {
  17457                return hour;
  17458            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
  17459                return hour + 12;
  17460            } else {
  17461                return hour >= 11 ? hour : hour + 12;
  17462            }
  17463        },
  17464        meridiem: function (hour, minute, isLower) {
  17465            var hm = hour * 100 + minute;
  17466            if (hm < 600) {
  17467                return 'يېرىم كېچە';
  17468            } else if (hm < 900) {
  17469                return 'سەھەر';
  17470            } else if (hm < 1130) {
  17471                return 'چۈشتىن بۇرۇن';
  17472            } else if (hm < 1230) {
  17473                return 'چۈش';
  17474            } else if (hm < 1800) {
  17475                return 'چۈشتىن كېيىن';
  17476            } else {
  17477                return 'كەچ';
  17478            }
  17479        },
  17480        calendar: {
  17481            sameDay: '[بۈگۈن سائەت] LT',
  17482            nextDay: '[ئەتە سائەت] LT',
  17483            nextWeek: '[كېلەركى] dddd [سائەت] LT',
  17484            lastDay: '[تۆنۈگۈن] LT',
  17485            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
  17486            sameElse: 'L',
  17487        },
  17488        relativeTime: {
  17489            future: '%s كېيىن',
  17490            past: '%s بۇرۇن',
  17491            s: 'نەچچە سېكونت',
  17492            ss: '%d سېكونت',
  17493            m: 'بىر مىنۇت',
  17494            mm: '%d مىنۇت',
  17495            h: 'بىر سائەت',
  17496            hh: '%d سائەت',
  17497            d: 'بىر كۈن',
  17498            dd: '%d كۈن',
  17499            M: 'بىر ئاي',
  17500            MM: '%d ئاي',
  17501            y: 'بىر يىل',
  17502            yy: '%d يىل',
  17503        },
  17504
  17505        dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
  17506        ordinal: function (number, period) {
  17507            switch (period) {
  17508                case 'd':
  17509                case 'D':
  17510                case 'DDD':
  17511                    return number + '-كۈنى';
  17512                case 'w':
  17513                case 'W':
  17514                    return number + '-ھەپتە';
  17515                default:
  17516                    return number;
  17517            }
  17518        },
  17519        preparse: function (string) {
  17520            return string.replace(/،/g, ',');
  17521        },
  17522        postformat: function (string) {
  17523            return string.replace(/,/g, '،');
  17524        },
  17525        week: {
  17526            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
  17527            dow: 1, // Monday is the first day of the week.
  17528            doy: 7, // The week that contains Jan 1st is the first week of the year.
  17529        },
  17530    });
  17531
  17532    //! moment.js locale configuration
  17533
  17534    function plural$6(word, num) {
  17535        var forms = word.split('_');
  17536        return num % 10 === 1 && num % 100 !== 11
  17537            ? forms[0]
  17538            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
  17539              ? forms[1]
  17540              : forms[2];
  17541    }
  17542    function relativeTimeWithPlural$4(number, withoutSuffix, key) {
  17543        var format = {
  17544            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
  17545            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
  17546            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
  17547            dd: 'день_дні_днів',
  17548            MM: 'місяць_місяці_місяців',
  17549            yy: 'рік_роки_років',
  17550        };
  17551        if (key === 'm') {
  17552            return withoutSuffix ? 'хвилина' : 'хвилину';
  17553        } else if (key === 'h') {
  17554            return withoutSuffix ? 'година' : 'годину';
  17555        } else {
  17556            return number + ' ' + plural$6(format[key], +number);
  17557        }
  17558    }
  17559    function weekdaysCaseReplace(m, format) {
  17560        var weekdays = {
  17561                nominative:
  17562                    'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
  17563                        '_'
  17564                    ),
  17565                accusative:
  17566                    'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
  17567                        '_'
  17568                    ),
  17569                genitive:
  17570                    'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
  17571                        '_'
  17572                    ),
  17573            },
  17574            nounCase;
  17575
  17576        if (m === true) {
  17577            return weekdays['nominative']
  17578                .slice(1, 7)
  17579                .concat(weekdays['nominative'].slice(0, 1));
  17580        }
  17581        if (!m) {
  17582            return weekdays['nominative'];
  17583        }
  17584
  17585        nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
  17586            ? 'accusative'
  17587            : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
  17588              ? 'genitive'
  17589              : 'nominative';
  17590        return weekdays[nounCase][m.day()];
  17591    }
  17592    function processHoursFunction(str) {
  17593        return function () {
  17594            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
  17595        };
  17596    }
  17597
  17598    hooks.defineLocale('uk', {
  17599        months: {
  17600            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
  17601                '_'
  17602            ),
  17603            standalone:
  17604                'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
  17605                    '_'
  17606                ),
  17607        },
  17608        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
  17609            '_'
  17610        ),
  17611        weekdays: weekdaysCaseReplace,
  17612        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
  17613        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
  17614        longDateFormat: {
  17615            LT: 'HH:mm',
  17616            LTS: 'HH:mm:ss',
  17617            L: 'DD.MM.YYYY',
  17618            LL: 'D MMMM YYYY р.',
  17619            LLL: 'D MMMM YYYY р., HH:mm',
  17620            LLLL: 'dddd, D MMMM YYYY р., HH:mm',
  17621        },
  17622        calendar: {
  17623            sameDay: processHoursFunction('[Сьогодні '),
  17624            nextDay: processHoursFunction('[Завтра '),
  17625            lastDay: processHoursFunction('[Вчора '),
  17626            nextWeek: processHoursFunction('[У] dddd ['),
  17627            lastWeek: function () {
  17628                switch (this.day()) {
  17629                    case 0:
  17630                    case 3:
  17631                    case 5:
  17632                    case 6:
  17633                        return processHoursFunction('[Минулої] dddd [').call(this);
  17634                    case 1:
  17635                    case 2:
  17636                    case 4:
  17637                        return processHoursFunction('[Минулого] dddd [').call(this);
  17638                }
  17639            },
  17640            sameElse: 'L',
  17641        },
  17642        relativeTime: {
  17643            future: 'за %s',
  17644            past: '%s тому',
  17645            s: 'декілька секунд',
  17646            ss: relativeTimeWithPlural$4,
  17647            m: relativeTimeWithPlural$4,
  17648            mm: relativeTimeWithPlural$4,
  17649            h: 'годину',
  17650            hh: relativeTimeWithPlural$4,
  17651            d: 'день',
  17652            dd: relativeTimeWithPlural$4,
  17653            M: 'місяць',
  17654            MM: relativeTimeWithPlural$4,
  17655            y: 'рік',
  17656            yy: relativeTimeWithPlural$4,
  17657        },
  17658        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
  17659        meridiemParse: /ночі|ранку|дня|вечора/,
  17660        isPM: function (input) {
  17661            return /^(дня|вечора)$/.test(input);
  17662        },
  17663        meridiem: function (hour, minute, isLower) {
  17664            if (hour < 4) {
  17665                return 'ночі';
  17666            } else if (hour < 12) {
  17667                return 'ранку';
  17668            } else if (hour < 17) {
  17669                return 'дня';
  17670            } else {
  17671                return 'вечора';
  17672            }
  17673        },
  17674        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
  17675        ordinal: function (number, period) {
  17676            switch (period) {
  17677                case 'M':
  17678                case 'd':
  17679                case 'DDD':
  17680                case 'w':
  17681                case 'W':
  17682                    return number + '-й';
  17683                case 'D':
  17684                    return number + '-го';
  17685                default:
  17686                    return number;
  17687            }
  17688        },
  17689        week: {
  17690            dow: 1, // Monday is the first day of the week.
  17691            doy: 7, // The week that contains Jan 7th is the first week of the year.
  17692        },
  17693    });
  17694
  17695    //! moment.js locale configuration
  17696
  17697    var months$b = [
  17698            'جنوری',
  17699            'فروری',
  17700            'مارچ',
  17701            'اپریل',
  17702            'مئی',
  17703            'جون',
  17704            'جولائی',
  17705            'اگست',
  17706            'ستمبر',
  17707            'اکتوبر',
  17708            'نومبر',
  17709            'دسمبر',
  17710        ],
  17711        days$2 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
  17712
  17713    hooks.defineLocale('ur', {
  17714        months: months$b,
  17715        monthsShort: months$b,
  17716        weekdays: days$2,
  17717        weekdaysShort: days$2,
  17718        weekdaysMin: days$2,
  17719        longDateFormat: {
  17720            LT: 'HH:mm',
  17721            LTS: 'HH:mm:ss',
  17722            L: 'DD/MM/YYYY',
  17723            LL: 'D MMMM YYYY',
  17724            LLL: 'D MMMM YYYY HH:mm',
  17725            LLLL: 'dddd، D MMMM YYYY HH:mm',
  17726        },
  17727        meridiemParse: /صبح|شام/,
  17728        isPM: function (input) {
  17729            return 'شام' === input;
  17730        },
  17731        meridiem: function (hour, minute, isLower) {
  17732            if (hour < 12) {
  17733                return 'صبح';
  17734            }
  17735            return 'شام';
  17736        },
  17737        calendar: {
  17738            sameDay: '[آج بوقت] LT',
  17739            nextDay: '[کل بوقت] LT',
  17740            nextWeek: 'dddd [بوقت] LT',
  17741            lastDay: '[گذشتہ روز بوقت] LT',
  17742            lastWeek: '[گذشتہ] dddd [بوقت] LT',
  17743            sameElse: 'L',
  17744        },
  17745        relativeTime: {
  17746            future: '%s بعد',
  17747            past: '%s قبل',
  17748            s: 'چند سیکنڈ',
  17749            ss: '%d سیکنڈ',
  17750            m: 'ایک منٹ',
  17751            mm: '%d منٹ',
  17752            h: 'ایک گھنٹہ',
  17753            hh: '%d گھنٹے',
  17754            d: 'ایک دن',
  17755            dd: '%d دن',
  17756            M: 'ایک ماہ',
  17757            MM: '%d ماہ',
  17758            y: 'ایک سال',
  17759            yy: '%d سال',
  17760        },
  17761        preparse: function (string) {
  17762            return string.replace(/،/g, ',');
  17763        },
  17764        postformat: function (string) {
  17765            return string.replace(/,/g, '،');
  17766        },
  17767        week: {
  17768            dow: 1, // Monday is the first day of the week.
  17769            doy: 4, // The week that contains Jan 4th is the first week of the year.
  17770        },
  17771    });
  17772
  17773    //! moment.js locale configuration
  17774
  17775    hooks.defineLocale('uz-latn', {
  17776        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
  17777            '_'
  17778        ),
  17779        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
  17780        weekdays:
  17781            'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
  17782                '_'
  17783            ),
  17784        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
  17785        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
  17786        longDateFormat: {
  17787            LT: 'HH:mm',
  17788            LTS: 'HH:mm:ss',
  17789            L: 'DD/MM/YYYY',
  17790            LL: 'D MMMM YYYY',
  17791            LLL: 'D MMMM YYYY HH:mm',
  17792            LLLL: 'D MMMM YYYY, dddd HH:mm',
  17793        },
  17794        calendar: {
  17795            sameDay: '[Bugun soat] LT [da]',
  17796            nextDay: '[Ertaga] LT [da]',
  17797            nextWeek: 'dddd [kuni soat] LT [da]',
  17798            lastDay: '[Kecha soat] LT [da]',
  17799            lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
  17800            sameElse: 'L',
  17801        },
  17802        relativeTime: {
  17803            future: 'Yaqin %s ichida',
  17804            past: 'Bir necha %s oldin',
  17805            s: 'soniya',
  17806            ss: '%d soniya',
  17807            m: 'bir daqiqa',
  17808            mm: '%d daqiqa',
  17809            h: 'bir soat',
  17810            hh: '%d soat',
  17811            d: 'bir kun',
  17812            dd: '%d kun',
  17813            M: 'bir oy',
  17814            MM: '%d oy',
  17815            y: 'bir yil',
  17816            yy: '%d yil',
  17817        },
  17818        week: {
  17819            dow: 1, // Monday is the first day of the week.
  17820            doy: 7, // The week that contains Jan 7th is the first week of the year.
  17821        },
  17822    });
  17823
  17824    //! moment.js locale configuration
  17825
  17826    hooks.defineLocale('uz', {
  17827        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
  17828            '_'
  17829        ),
  17830        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
  17831        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
  17832        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
  17833        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
  17834        longDateFormat: {
  17835            LT: 'HH:mm',
  17836            LTS: 'HH:mm:ss',
  17837            L: 'DD/MM/YYYY',
  17838            LL: 'D MMMM YYYY',
  17839            LLL: 'D MMMM YYYY HH:mm',
  17840            LLLL: 'D MMMM YYYY, dddd HH:mm',
  17841        },
  17842        calendar: {
  17843            sameDay: '[Бугун соат] LT [да]',
  17844            nextDay: '[Эртага] LT [да]',
  17845            nextWeek: 'dddd [куни соат] LT [да]',
  17846            lastDay: '[Кеча соат] LT [да]',
  17847            lastWeek: '[Утган] dddd [куни соат] LT [да]',
  17848            sameElse: 'L',
  17849        },
  17850        relativeTime: {
  17851            future: 'Якин %s ичида',
  17852            past: 'Бир неча %s олдин',
  17853            s: 'фурсат',
  17854            ss: '%d фурсат',
  17855            m: 'бир дакика',
  17856            mm: '%d дакика',
  17857            h: 'бир соат',
  17858            hh: '%d соат',
  17859            d: 'бир кун',
  17860            dd: '%d кун',
  17861            M: 'бир ой',
  17862            MM: '%d ой',
  17863            y: 'бир йил',
  17864            yy: '%d йил',
  17865        },
  17866        week: {
  17867            dow: 1, // Monday is the first day of the week.
  17868            doy: 7, // The week that contains Jan 4th is the first week of the year.
  17869        },
  17870    });
  17871
  17872    //! moment.js locale configuration
  17873
  17874    hooks.defineLocale('vi', {
  17875        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(
  17876            '_'
  17877        ),
  17878        monthsShort:
  17879            'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(
  17880                '_'
  17881            ),
  17882        monthsParseExact: true,
  17883        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
  17884            '_'
  17885        ),
  17886        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
  17887        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
  17888        weekdaysParseExact: true,
  17889        meridiemParse: /sa|ch/i,
  17890        isPM: function (input) {
  17891            return /^ch$/i.test(input);
  17892        },
  17893        meridiem: function (hours, minutes, isLower) {
  17894            if (hours < 12) {
  17895                return isLower ? 'sa' : 'SA';
  17896            } else {
  17897                return isLower ? 'ch' : 'CH';
  17898            }
  17899        },
  17900        longDateFormat: {
  17901            LT: 'HH:mm',
  17902            LTS: 'HH:mm:ss',
  17903            L: 'DD/MM/YYYY',
  17904            LL: 'D MMMM [năm] YYYY',
  17905            LLL: 'D MMMM [năm] YYYY HH:mm',
  17906            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
  17907            l: 'DD/M/YYYY',
  17908            ll: 'D MMM YYYY',
  17909            lll: 'D MMM YYYY HH:mm',
  17910            llll: 'ddd, D MMM YYYY HH:mm',
  17911        },
  17912        calendar: {
  17913            sameDay: '[Hôm nay lúc] LT',
  17914            nextDay: '[Ngày mai lúc] LT',
  17915            nextWeek: 'dddd [tuần tới lúc] LT',
  17916            lastDay: '[Hôm qua lúc] LT',
  17917            lastWeek: 'dddd [tuần trước lúc] LT',
  17918            sameElse: 'L',
  17919        },
  17920        relativeTime: {
  17921            future: '%s tới',
  17922            past: '%s trước',
  17923            s: 'vài giây',
  17924            ss: '%d giây',
  17925            m: 'một phút',
  17926            mm: '%d phút',
  17927            h: 'một giờ',
  17928            hh: '%d giờ',
  17929            d: 'một ngày',
  17930            dd: '%d ngày',
  17931            w: 'một tuần',
  17932            ww: '%d tuần',
  17933            M: 'một tháng',
  17934            MM: '%d tháng',
  17935            y: 'một năm',
  17936            yy: '%d năm',
  17937        },
  17938        dayOfMonthOrdinalParse: /\d{1,2}/,
  17939        ordinal: function (number) {
  17940            return number;
  17941        },
  17942        week: {
  17943            dow: 1, // Monday is the first day of the week.
  17944            doy: 4, // The week that contains Jan 4th is the first week of the year.
  17945        },
  17946    });
  17947
  17948    //! moment.js locale configuration
  17949
  17950    hooks.defineLocale('x-pseudo', {
  17951        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(
  17952            '_'
  17953        ),
  17954        monthsShort:
  17955            'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(
  17956                '_'
  17957            ),
  17958        monthsParseExact: true,
  17959        weekdays:
  17960            'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
  17961                '_'
  17962            ),
  17963        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
  17964        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
  17965        weekdaysParseExact: true,
  17966        longDateFormat: {
  17967            LT: 'HH:mm',
  17968            L: 'DD/MM/YYYY',
  17969            LL: 'D MMMM YYYY',
  17970            LLL: 'D MMMM YYYY HH:mm',
  17971            LLLL: 'dddd, D MMMM YYYY HH:mm',
  17972        },
  17973        calendar: {
  17974            sameDay: '[T~ódá~ý át] LT',
  17975            nextDay: '[T~ómó~rró~w át] LT',
  17976            nextWeek: 'dddd [át] LT',
  17977            lastDay: '[Ý~ést~érdá~ý át] LT',
  17978            lastWeek: '[L~ást] dddd [át] LT',
  17979            sameElse: 'L',
  17980        },
  17981        relativeTime: {
  17982            future: 'í~ñ %s',
  17983            past: '%s á~gó',
  17984            s: 'á ~féw ~sécó~ñds',
  17985            ss: '%d s~écóñ~ds',
  17986            m: 'á ~míñ~úté',
  17987            mm: '%d m~íñú~tés',
  17988            h: 'á~ñ hó~úr',
  17989            hh: '%d h~óúrs',
  17990            d: 'á ~dáý',
  17991            dd: '%d d~áýs',
  17992            M: 'á ~móñ~th',
  17993            MM: '%d m~óñt~hs',
  17994            y: 'á ~ýéár',
  17995            yy: '%d ý~éárs',
  17996        },
  17997        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
  17998        ordinal: function (number) {
  17999            var b = number % 10,
  18000                output =
  18001                    ~~((number % 100) / 10) === 1
  18002                        ? 'th'
  18003                        : b === 1
  18004                          ? 'st'
  18005                          : b === 2
  18006                            ? 'nd'
  18007                            : b === 3
  18008                              ? 'rd'
  18009                              : 'th';
  18010            return number + output;
  18011        },
  18012        week: {
  18013            dow: 1, // Monday is the first day of the week.
  18014            doy: 4, // The week that contains Jan 4th is the first week of the year.
  18015        },
  18016    });
  18017
  18018    //! moment.js locale configuration
  18019
  18020    hooks.defineLocale('yo', {
  18021        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
  18022            '_'
  18023        ),
  18024        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
  18025        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
  18026        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
  18027        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
  18028        longDateFormat: {
  18029            LT: 'h:mm A',
  18030            LTS: 'h:mm:ss A',
  18031            L: 'DD/MM/YYYY',
  18032            LL: 'D MMMM YYYY',
  18033            LLL: 'D MMMM YYYY h:mm A',
  18034            LLLL: 'dddd, D MMMM YYYY h:mm A',
  18035        },
  18036        calendar: {
  18037            sameDay: '[Ònì ni] LT',
  18038            nextDay: '[Ọ̀la ni] LT',
  18039            nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
  18040            lastDay: '[Àna ni] LT',
  18041            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
  18042            sameElse: 'L',
  18043        },
  18044        relativeTime: {
  18045            future: 'ní %s',
  18046            past: '%s kọjá',
  18047            s: 'ìsẹjú aayá die',
  18048            ss: 'aayá %d',
  18049            m: 'ìsẹjú kan',
  18050            mm: 'ìsẹjú %d',
  18051            h: 'wákati kan',
  18052            hh: 'wákati %d',
  18053            d: 'ọjọ́ kan',
  18054            dd: 'ọjọ́ %d',
  18055            M: 'osù kan',
  18056            MM: 'osù %d',
  18057            y: 'ọdún kan',
  18058            yy: 'ọdún %d',
  18059        },
  18060        dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
  18061        ordinal: 'ọjọ́ %d',
  18062        week: {
  18063            dow: 1, // Monday is the first day of the week.
  18064            doy: 4, // The week that contains Jan 4th is the first week of the year.
  18065        },
  18066    });
  18067
  18068    //! moment.js locale configuration
  18069
  18070    hooks.defineLocale('zh-cn', {
  18071        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
  18072            '_'
  18073        ),
  18074        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
  18075            '_'
  18076        ),
  18077        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
  18078        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
  18079        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
  18080        longDateFormat: {
  18081            LT: 'HH:mm',
  18082            LTS: 'HH:mm:ss',
  18083            L: 'YYYY/MM/DD',
  18084            LL: 'YYYY年M月D日',
  18085            LLL: 'YYYY年M月D日Ah点mm分',
  18086            LLLL: 'YYYY年M月D日ddddAh点mm分',
  18087            l: 'YYYY/M/D',
  18088            ll: 'YYYY年M月D日',
  18089            lll: 'YYYY年M月D日 HH:mm',
  18090            llll: 'YYYY年M月D日dddd HH:mm',
  18091        },
  18092        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
  18093        meridiemHour: function (hour, meridiem) {
  18094            if (hour === 12) {
  18095                hour = 0;
  18096            }
  18097            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
  18098                return hour;
  18099            } else if (meridiem === '下午' || meridiem === '晚上') {
  18100                return hour + 12;
  18101            } else {
  18102                // '中午'
  18103                return hour >= 11 ? hour : hour + 12;
  18104            }
  18105        },
  18106        meridiem: function (hour, minute, isLower) {
  18107            var hm = hour * 100 + minute;
  18108            if (hm < 600) {
  18109                return '凌晨';
  18110            } else if (hm < 900) {
  18111                return '早上';
  18112            } else if (hm < 1130) {
  18113                return '上午';
  18114            } else if (hm < 1230) {
  18115                return '中午';
  18116            } else if (hm < 1800) {
  18117                return '下午';
  18118            } else {
  18119                return '晚上';
  18120            }
  18121        },
  18122        calendar: {
  18123            sameDay: '[今天]LT',
  18124            nextDay: '[明天]LT',
  18125            nextWeek: function (now) {
  18126                if (now.week() !== this.week()) {
  18127                    return '[下]dddLT';
  18128                } else {
  18129                    return '[本]dddLT';
  18130                }
  18131            },
  18132            lastDay: '[昨天]LT',
  18133            lastWeek: function (now) {
  18134                if (this.week() !== now.week()) {
  18135                    return '[上]dddLT';
  18136                } else {
  18137                    return '[本]dddLT';
  18138                }
  18139            },
  18140            sameElse: 'L',
  18141        },
  18142        dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
  18143        ordinal: function (number, period) {
  18144            switch (period) {
  18145                case 'd':
  18146                case 'D':
  18147                case 'DDD':
  18148                    return number + '日';
  18149                case 'M':
  18150                    return number + '月';
  18151                case 'w':
  18152                case 'W':
  18153                    return number + '周';
  18154                default:
  18155                    return number;
  18156            }
  18157        },
  18158        relativeTime: {
  18159            future: '%s后',
  18160            past: '%s前',
  18161            s: '几秒',
  18162            ss: '%d 秒',
  18163            m: '1 分钟',
  18164            mm: '%d 分钟',
  18165            h: '1 小时',
  18166            hh: '%d 小时',
  18167            d: '1 天',
  18168            dd: '%d 天',
  18169            w: '1 周',
  18170            ww: '%d 周',
  18171            M: '1 个月',
  18172            MM: '%d 个月',
  18173            y: '1 年',
  18174            yy: '%d 年',
  18175        },
  18176        week: {
  18177            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
  18178            dow: 1, // Monday is the first day of the week.
  18179            doy: 4, // The week that contains Jan 4th is the first week of the year.
  18180        },
  18181    });
  18182
  18183    //! moment.js locale configuration
  18184
  18185    hooks.defineLocale('zh-hk', {
  18186        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
  18187            '_'
  18188        ),
  18189        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
  18190            '_'
  18191        ),
  18192        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
  18193        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
  18194        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
  18195        longDateFormat: {
  18196            LT: 'HH:mm',
  18197            LTS: 'HH:mm:ss',
  18198            L: 'YYYY/MM/DD',
  18199            LL: 'YYYY年M月D日',
  18200            LLL: 'YYYY年M月D日 HH:mm',
  18201            LLLL: 'YYYY年M月D日dddd HH:mm',
  18202            l: 'YYYY/M/D',
  18203            ll: 'YYYY年M月D日',
  18204            lll: 'YYYY年M月D日 HH:mm',
  18205            llll: 'YYYY年M月D日dddd HH:mm',
  18206        },
  18207        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
  18208        meridiemHour: function (hour, meridiem) {
  18209            if (hour === 12) {
  18210                hour = 0;
  18211            }
  18212            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
  18213                return hour;
  18214            } else if (meridiem === '中午') {
  18215                return hour >= 11 ? hour : hour + 12;
  18216            } else if (meridiem === '下午' || meridiem === '晚上') {
  18217                return hour + 12;
  18218            }
  18219        },
  18220        meridiem: function (hour, minute, isLower) {
  18221            var hm = hour * 100 + minute;
  18222            if (hm < 600) {
  18223                return '凌晨';
  18224            } else if (hm < 900) {
  18225                return '早上';
  18226            } else if (hm < 1200) {
  18227                return '上午';
  18228            } else if (hm === 1200) {
  18229                return '中午';
  18230            } else if (hm < 1800) {
  18231                return '下午';
  18232            } else {
  18233                return '晚上';
  18234            }
  18235        },
  18236        calendar: {
  18237            sameDay: '[今天]LT',
  18238            nextDay: '[明天]LT',
  18239            nextWeek: '[下]ddddLT',
  18240            lastDay: '[昨天]LT',
  18241            lastWeek: '[上]ddddLT',
  18242            sameElse: 'L',
  18243        },
  18244        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
  18245        ordinal: function (number, period) {
  18246            switch (period) {
  18247                case 'd':
  18248                case 'D':
  18249                case 'DDD':
  18250                    return number + '日';
  18251                case 'M':
  18252                    return number + '月';
  18253                case 'w':
  18254                case 'W':
  18255                    return number + '週';
  18256                default:
  18257                    return number;
  18258            }
  18259        },
  18260        relativeTime: {
  18261            future: '%s後',
  18262            past: '%s前',
  18263            s: '幾秒',
  18264            ss: '%d 秒',
  18265            m: '1 分鐘',
  18266            mm: '%d 分鐘',
  18267            h: '1 小時',
  18268            hh: '%d 小時',
  18269            d: '1 天',
  18270            dd: '%d 天',
  18271            M: '1 個月',
  18272            MM: '%d 個月',
  18273            y: '1 年',
  18274            yy: '%d 年',
  18275        },
  18276    });
  18277
  18278    //! moment.js locale configuration
  18279
  18280    hooks.defineLocale('zh-mo', {
  18281        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
  18282            '_'
  18283        ),
  18284        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
  18285            '_'
  18286        ),
  18287        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
  18288        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
  18289        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
  18290        longDateFormat: {
  18291            LT: 'HH:mm',
  18292            LTS: 'HH:mm:ss',
  18293            L: 'DD/MM/YYYY',
  18294            LL: 'YYYY年M月D日',
  18295            LLL: 'YYYY年M月D日 HH:mm',
  18296            LLLL: 'YYYY年M月D日dddd HH:mm',
  18297            l: 'D/M/YYYY',
  18298            ll: 'YYYY年M月D日',
  18299            lll: 'YYYY年M月D日 HH:mm',
  18300            llll: 'YYYY年M月D日dddd HH:mm',
  18301        },
  18302        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
  18303        meridiemHour: function (hour, meridiem) {
  18304            if (hour === 12) {
  18305                hour = 0;
  18306            }
  18307            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
  18308                return hour;
  18309            } else if (meridiem === '中午') {
  18310                return hour >= 11 ? hour : hour + 12;
  18311            } else if (meridiem === '下午' || meridiem === '晚上') {
  18312                return hour + 12;
  18313            }
  18314        },
  18315        meridiem: function (hour, minute, isLower) {
  18316            var hm = hour * 100 + minute;
  18317            if (hm < 600) {
  18318                return '凌晨';
  18319            } else if (hm < 900) {
  18320                return '早上';
  18321            } else if (hm < 1130) {
  18322                return '上午';
  18323            } else if (hm < 1230) {
  18324                return '中午';
  18325            } else if (hm < 1800) {
  18326                return '下午';
  18327            } else {
  18328                return '晚上';
  18329            }
  18330        },
  18331        calendar: {
  18332            sameDay: '[今天] LT',
  18333            nextDay: '[明天] LT',
  18334            nextWeek: '[下]dddd LT',
  18335            lastDay: '[昨天] LT',
  18336            lastWeek: '[上]dddd LT',
  18337            sameElse: 'L',
  18338        },
  18339        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
  18340        ordinal: function (number, period) {
  18341            switch (period) {
  18342                case 'd':
  18343                case 'D':
  18344                case 'DDD':
  18345                    return number + '日';
  18346                case 'M':
  18347                    return number + '月';
  18348                case 'w':
  18349                case 'W':
  18350                    return number + '週';
  18351                default:
  18352                    return number;
  18353            }
  18354        },
  18355        relativeTime: {
  18356            future: '%s內',
  18357            past: '%s前',
  18358            s: '幾秒',
  18359            ss: '%d 秒',
  18360            m: '1 分鐘',
  18361            mm: '%d 分鐘',
  18362            h: '1 小時',
  18363            hh: '%d 小時',
  18364            d: '1 天',
  18365            dd: '%d 天',
  18366            M: '1 個月',
  18367            MM: '%d 個月',
  18368            y: '1 年',
  18369            yy: '%d 年',
  18370        },
  18371    });
  18372
  18373    //! moment.js locale configuration
  18374
  18375    hooks.defineLocale('zh-tw', {
  18376        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
  18377            '_'
  18378        ),
  18379        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
  18380            '_'
  18381        ),
  18382        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
  18383        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
  18384        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
  18385        longDateFormat: {
  18386            LT: 'HH:mm',
  18387            LTS: 'HH:mm:ss',
  18388            L: 'YYYY/MM/DD',
  18389            LL: 'YYYY年M月D日',
  18390            LLL: 'YYYY年M月D日 HH:mm',
  18391            LLLL: 'YYYY年M月D日dddd HH:mm',
  18392            l: 'YYYY/M/D',
  18393            ll: 'YYYY年M月D日',
  18394            lll: 'YYYY年M月D日 HH:mm',
  18395            llll: 'YYYY年M月D日dddd HH:mm',
  18396        },
  18397        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
  18398        meridiemHour: function (hour, meridiem) {
  18399            if (hour === 12) {
  18400                hour = 0;
  18401            }
  18402            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
  18403                return hour;
  18404            } else if (meridiem === '中午') {
  18405                return hour >= 11 ? hour : hour + 12;
  18406            } else if (meridiem === '下午' || meridiem === '晚上') {
  18407                return hour + 12;
  18408            }
  18409        },
  18410        meridiem: function (hour, minute, isLower) {
  18411            var hm = hour * 100 + minute;
  18412            if (hm < 600) {
  18413                return '凌晨';
  18414            } else if (hm < 900) {
  18415                return '早上';
  18416            } else if (hm < 1130) {
  18417                return '上午';
  18418            } else if (hm < 1230) {
  18419                return '中午';
  18420            } else if (hm < 1800) {
  18421                return '下午';
  18422            } else {
  18423                return '晚上';
  18424            }
  18425        },
  18426        calendar: {
  18427            sameDay: '[今天] LT',
  18428            nextDay: '[明天] LT',
  18429            nextWeek: '[下]dddd LT',
  18430            lastDay: '[昨天] LT',
  18431            lastWeek: '[上]dddd LT',
  18432            sameElse: 'L',
  18433        },
  18434        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
  18435        ordinal: function (number, period) {
  18436            switch (period) {
  18437                case 'd':
  18438                case 'D':
  18439                case 'DDD':
  18440                    return number + '日';
  18441                case 'M':
  18442                    return number + '月';
  18443                case 'w':
  18444                case 'W':
  18445                    return number + '週';
  18446                default:
  18447                    return number;
  18448            }
  18449        },
  18450        relativeTime: {
  18451            future: '%s後',
  18452            past: '%s前',
  18453            s: '幾秒',
  18454            ss: '%d 秒',
  18455            m: '1 分鐘',
  18456            mm: '%d 分鐘',
  18457            h: '1 小時',
  18458            hh: '%d 小時',
  18459            d: '1 天',
  18460            dd: '%d 天',
  18461            M: '1 個月',
  18462            MM: '%d 個月',
  18463            y: '1 年',
  18464            yy: '%d 年',
  18465        },
  18466    });
  18467
  18468    hooks.locale('en');
  18469
  18470    return hooks;
  18471
  18472})));