PageSourceSearch

https://mazieres-en-gatine.fr/system/modules/_fonctions/assets/moment-with-locales.js

js mazieres-en-gatine.fr collected 2026-10-02 21:19:25 UTC 617,694 bytes, 18,083 lines download raw bytes

vendor: 78,502 bytes, lines 1-2537
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        for (i = 0; i < arr.length; ++i) {
75            res.push(fn(arr[i], i));
76        }
77        return res;
78    }
79
80    function extend(a, b) {
81        for (var i in b) {
82            if (hasOwnProp(b, i)) {
83                a[i] = b[i];
84            }
85        }
86
87        if (hasOwnProp(b, 'toString')) {
88            a.toString = b.toString;
89        }
90
91        if (hasOwnProp(b, 'valueOf')) {
92            a.valueOf = b.valueOf;
93        }
94
95        return a;
96    }
97
98    function createUTC(input, format, locale, strict) {
99        return createLocalOrUTC(input, format, locale, strict, true).utc();
100    }
101
102    function defaultParsingFlags() {
103        // We need to deep clone this object.
104        return {
105            empty: false,
106            unusedTokens: [],
107            unusedInput: [],
108            overflow: -2,
109            charsLeftOver: 0,
110            nullInput: false,
111            invalidEra: null,
112            invalidMonth: null,
113            invalidFormat: false,
114            userInvalidated: false,
115            iso: false,
116            parsedDateParts: [],
117            era: null,
118            meridiem: null,
119            rfc2822: false,
120            weekdayMismatch: false,
121        };
122    }
123
124    function getParsingFlags(m) {
125        if (m._pf == null) {
126            m._pf = defaultParsingFlags();
127        }
128        return m._pf;
129    }
130
131    var some;
132    if (Array.prototype.some) {
133        some = Array.prototype.some;
134    } else {
135        some = function (fun) {
136            var t = Object(this),
137                len = t.length >>> 0,
138                i;
139
140            for (i = 0; i < len; i++) {
141                if (i in t && fun.call(this, t[i], i, t)) {
142                    return true;
143                }
144            }
145
146            return false;
147        };
148    }
149
150    function isValid(m) {
151        if (m._isValid == null) {
152            var flags = getParsingFlags(m),
153                parsedParts = some.call(flags.parsedDateParts, function (i) {
154                    return i != null;
155                }),
156                isNowValid =
157                    !isNaN(m._d.getTime()) &&
158                    flags.overflow < 0 &&
159                    !flags.empty &&
160                    !flags.invalidEra &&
161                    !flags.invalidMonth &&
162                    !flags.invalidWeekday &&
163                    !flags.weekdayMismatch &&
164                    !flags.nullInput &&
165                    !flags.invalidFormat &&
166                    !flags.userInvalidated &&
167                    (!flags.meridiem || (flags.meridiem && parsedParts));
168
169            if (m._strict) {
170                isNowValid =
171                    isNowValid &&
172                    flags.charsLeftOver === 0 &&
173                    flags.unusedTokens.length === 0 &&
174                    flags.bigHour === undefined;
175            }
176
177            if (Object.isFrozen == null || !Object.isFrozen(m)) {
178                m._isValid = isNowValid;
179            } else {
180                return isNowValid;
181            }
182        }
183        return m._isValid;
184    }
185
186    function createInvalid(flags) {
187        var m = createUTC(NaN);
188        if (flags != null) {
189            extend(getParsingFlags(m), flags);
190        } else {
191            getParsingFlags(m).userInvalidated = true;
192        }
193
194        return m;
195    }
196
197    // Plugins that add properties should also add the key here (null value),
198    // so we can properly clone ourselves.
199    var momentProperties = (hooks.momentProperties = []),
200        updateInProgress = false;
201
202    function copyConfig(to, from) {
203        var i, prop, val;
204
205        if (!isUndefined(from._isAMomentObject)) {
206            to._isAMomentObject = from._isAMomentObject;
207        }
208        if (!isUndefined(from._i)) {
209            to._i = from._i;
210        }
211        if (!isUndefined(from._f)) {
212            to._f = from._f;
213        }
214        if (!isUndefined(from._l)) {
215            to._l = from._l;
216        }
217        if (!isUndefined(from._strict)) {
218            to._strict = from._strict;
219        }
220        if (!isUndefined(from._tzm)) {
221            to._tzm = from._tzm;
222        }
223        if (!isUndefined(from._isUTC)) {
224            to._isUTC = from._isUTC;
225        }
226        if (!isUndefined(from._offset)) {
227            to._offset = from._offset;
228        }
229        if (!isUndefined(from._pf)) {
230            to._pf = getParsingFlags(from);
231        }
232        if (!isUndefined(from._locale)) {
233            to._locale = from._locale;
234        }
235
236        if (momentProperties.length > 0) {
237            for (i = 0; i < momentProperties.length; i++) {
238                prop = momentProperties[i];
239                val = from[prop];
240                if (!isUndefined(val)) {
241                    to[prop] = val;
242                }
243            }
244        }
245
246        return to;
247    }
248
249    // Moment prototype object
250    function Moment(config) {
251        copyConfig(this, config);
252        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
253        if (!this.isValid()) {
254            this._d = new Date(NaN);
255        }
256        // Prevent infinite loop in case updateOffset creates new moment
257        // objects.
258        if (updateInProgress === false) {
259            updateInProgress = true;
260            hooks.updateOffset(this);
261            updateInProgress = false;
262        }
263    }
264
265    function isMoment(obj) {
266        return (
267            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
268        );
269    }
270
271    function warn(msg) {
272        if (
273            hooks.suppressDeprecationWarnings === false &&
274            typeof console !== 'undefined' &&
275            console.warn
276        ) {
277            console.warn('Deprecation warning: ' + msg);
278        }
279    }
280
281    function deprecate(msg, fn) {
282        var firstTime = true;
283
284        return extend(function () {
285            if (hooks.deprecationHandler != null) {
286                hooks.deprecationHandler(null, msg);
287            }
288            if (firstTime) {
289                var args = [],
290                    arg,
291                    i,
292                    key;
293                for (i = 0; i < arguments.length; i++) {
294                    arg = '';
295                    if (typeof arguments[i] === 'object') {
296                        arg += '\n[' + i + '] ';
297                        for (key in arguments[0]) {
298                            if (hasOwnProp(arguments[0], key)) {
299                                arg += key + ': ' + arguments[0][key] + ', ';
300                            }
301                        }
302                        arg = arg.slice(0, -2); // Remove trailing comma and space
303                    } else {
304                        arg = arguments[i];
305                    }
306                    args.push(arg);
307                }
308                warn(
309                    msg +
310                        '\nArguments: ' +
311                        Array.prototype.slice.call(args).join('') +
312                        '\n' +
313                        new Error().stack
314                );
315                firstTime = false;
316            }
317            return fn.apply(this, arguments);
318        }, fn);
319    }
320
321    var deprecations = {};
322
323    function deprecateSimple(name, msg) {
324        if (hooks.deprecationHandler != null) {
325            hooks.deprecationHandler(name, msg);
326        }
327        if (!deprecations[name]) {
328            warn(msg);
329            deprecations[name] = true;
330        }
331    }
332
333    hooks.suppressDeprecationWarnings = false;
334    hooks.deprecationHandler = null;
335
336    function isFunction(input) {
337        return (
338            (typeof Function !== 'undefined' && input instanceof Function) ||
339            Object.prototype.toString.call(input) === '[object Function]'
340        );
341    }
342
343    function set(config) {
344        var prop, i;
345        for (i in config) {
346            if (hasOwnProp(config, i)) {
347                prop = config[i];
348                if (isFunction(prop)) {
349                    this[i] = prop;
350                } else {
351                    this['_' + i] = prop;
352                }
353            }
354        }
355        this._config = config;
356        // Lenient ordinal parsing accepts just a number in addition to
357        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
358        // TODO: Remove "ordinalParse" fallback in next major release.
359        this._dayOfMonthOrdinalParseLenient = new RegExp(
360            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
361                '|' +
362                /\d{1,2}/.source
363        );
364    }
365
366    function mergeConfigs(parentConfig, childConfig) {
367        var res = extend({}, parentConfig),
368            prop;
369        for (prop in childConfig) {
370            if (hasOwnProp(childConfig, prop)) {
371                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
372                    res[prop] = {};
373                    extend(res[prop], parentConfig[prop]);
374                    extend(res[prop], childConfig[prop]);
375                } else if (childConfig[prop] != null) {
376                    res[prop] = childConfig[prop];
377                } else {
378                    delete res[prop];
379                }
380            }
381        }
382        for (prop in parentConfig) {
383            if (
384                hasOwnProp(parentConfig, prop) &&
385                !hasOwnProp(childConfig, prop) &&
386                isObject(parentConfig[prop])
387            ) {
388                // make sure changes to properties don't modify parent config
389                res[prop] = extend({}, res[prop]);
390            }
391        }
392        return res;
393    }
394
395    function Locale(config) {
396        if (config != null) {
397            this.set(config);
398        }
399    }
400
401    var keys;
402
403    if (Object.keys) {
404        keys = Object.keys;
405    } else {
406        keys = function (obj) {
407            var i,
408                res = [];
409            for (i in obj) {
410                if (hasOwnProp(obj, i)) {
411                    res.push(i);
412                }
413            }
414            return res;
415        };
416    }
417
418    var defaultCalendar = {
419        sameDay: '[Today at] LT',
420        nextDay: '[Tomorrow at] LT',
421        nextWeek: 'dddd [at] LT',
422        lastDay: '[Yesterday at] LT',
423        lastWeek: '[Last] dddd [at] LT',
424        sameElse: 'L',
425    };
426
427    function calendar(key, mom, now) {
428        var output = this._calendar[key] || this._calendar['sameElse'];
429        return isFunction(output) ? output.call(mom, now) : output;
430    }
431
432    function zeroFill(number, targetLength, forceSign) {
433        var absNumber = '' + Math.abs(number),
434            zerosToFill = targetLength - absNumber.length,
435            sign = number >= 0;
436        return (
437            (sign ? (forceSign ? '+' : '') : '-') +
438            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
439            absNumber
440        );
441    }
442
443    var formattingTokens = /(\[[^\[]*\])|(\\)?([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,
444        localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
445        formatFunctions = {},
446        formatTokenFunctions = {};
447
448    // token:    'M'
449    // padded:   ['MM', 2]
450    // ordinal:  'Mo'
451    // callback: function () { this.month() + 1 }
452    function addFormatToken(token, padded, ordinal, callback) {
453        var func = callback;
454        if (typeof callback === 'string') {
455            func = function () {
456                return this[callback]();
457            };
458        }
459        if (token) {
460            formatTokenFunctions[token] = func;
461        }
462        if (padded) {
463            formatTokenFunctions[padded[0]] = function () {
464                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
465            };
466        }
467        if (ordinal) {
468            formatTokenFunctions[ordinal] = function () {
469                return this.localeData().ordinal(
470                    func.apply(this, arguments),
471                    token
472                );
473            };
474        }
475    }
476
477    function removeFormattingTokens(input) {
478        if (input.match(/\[[\s\S]/)) {
479            return input.replace(/^\[|\]$/g, '');
480        }
481        return input.replace(/\\/g, '');
482    }
483
484    function makeFormatFunction(format) {
485        var array = format.match(formattingTokens),
486            i,
487            length;
488
489        for (i = 0, length = array.length; i < length; i++) {
490            if (formatTokenFunctions[array[i]]) {
491                array[i] = formatTokenFunctions[array[i]];
492            } else {
493                array[i] = removeFormattingTokens(array[i]);
494            }
495        }
496
497        return function (mom) {
498            var output = '',
499                i;
500            for (i = 0; i < length; i++) {
501                output += isFunction(array[i])
502                    ? array[i].call(mom, format)
503                    : array[i];
504            }
505            return output;
506        };
507    }
508
509    // format date using native date object
510    function formatMoment(m, format) {
511        if (!m.isValid()) {
512            return m.localeData().invalidDate();
513        }
514
515        format = expandFormat(format, m.localeData());
516        formatFunctions[format] =
517            formatFunctions[format] || makeFormatFunction(format);
518
519        return formatFunctions[format](m);
520    }
521
522    function expandFormat(format, locale) {
523        var i = 5;
524
525        function replaceLongDateFormatTokens(input) {
526            return locale.longDateFormat(input) || input;
527        }
528
529        localFormattingTokens.lastIndex = 0;
530        while (i >= 0 && localFormattingTokens.test(format)) {
531            format = format.replace(
532                localFormattingTokens,
533                replaceLongDateFormatTokens
534            );
535            localFormattingTokens.lastIndex = 0;
536            i -= 1;
537        }
538
539        return format;
540    }
541
542    var defaultLongDateFormat = {
543        LTS: 'h:mm:ss A',
544        LT: 'h:mm A',
545        L: 'MM/DD/YYYY',
546        LL: 'MMMM D, YYYY',
547        LLL: 'MMMM D, YYYY h:mm A',
548        LLLL: 'dddd, MMMM D, YYYY h:mm A',
549    };
550
551    function longDateFormat(key) {
552        var format = this._longDateFormat[key],
553            formatUpper = this._longDateFormat[key.toUpperCase()];
554
555        if (format || !formatUpper) {
556            return format;
557        }
558
559        this._longDateFormat[key] = formatUpper
560            .match(formattingTokens)
561            .map(function (tok) {
562                if (
563                    tok === 'MMMM' ||
564                    tok === 'MM' ||
565                    tok === 'DD' ||
566                    tok === 'dddd'
567                ) {
568                    return tok.slice(1);
569                }
570                return tok;
571            })
572            .join('');
573
574        return this._longDateFormat[key];
575    }
576
577    var defaultInvalidDate = 'Invalid date';
578
579    function invalidDate() {
580        return this._invalidDate;
581    }
582
583    var defaultOrdinal = '%d',
584        defaultDayOfMonthOrdinalParse = /\d{1,2}/;
585
586    function ordinal(number) {
587        return this._ordinal.replace('%d', number);
588    }
589
590    var defaultRelativeTime = {
591        future: 'in %s',
592        past: '%s ago',
593        s: 'a few seconds',
594        ss: '%d seconds',
595        m: 'a minute',
596        mm: '%d minutes',
597        h: 'an hour',
598        hh: '%d hours',
599        d: 'a day',
600        dd: '%d days',
601        w: 'a week',
602        ww: '%d weeks',
603        M: 'a month',
604        MM: '%d months',
605        y: 'a year',
606        yy: '%d years',
607    };
608
609    function relativeTime(number, withoutSuffix, string, isFuture) {
610        var output = this._relativeTime[string];
611        return isFunction(output)
612            ? output(number, withoutSuffix, string, isFuture)
613            : output.replace(/%d/i, number);
614    }
615
616    function pastFuture(diff, output) {
617        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
618        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
619    }
620
621    var aliases = {};
622
623    function addUnitAlias(unit, shorthand) {
624        var lowerCase = unit.toLowerCase();
625        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
626    }
627
628    function normalizeUnits(units) {
629        return typeof units === 'string'
630            ? aliases[units] || aliases[units.toLowerCase()]
631            : undefined;
632    }
633
634    function normalizeObjectUnits(inputObject) {
635        var normalizedInput = {},
636            normalizedProp,
637            prop;
638
639        for (prop in inputObject) {
640            if (hasOwnProp(inputObject, prop)) {
641                normalizedProp = normalizeUnits(prop);
642                if (normalizedProp) {
643                    normalizedInput[normalizedProp] = inputObject[prop];
644                }
645            }
646        }
647
648        return normalizedInput;
649    }
650
651    var priorities = {};
652
653    function addUnitPriority(unit, priority) {
654        priorities[unit] = priority;
655    }
656
657    function getPrioritizedUnits(unitsObj) {
658        var units = [],
659            u;
660        for (u in unitsObj) {
661            if (hasOwnProp(unitsObj, u)) {
662                units.push({ unit: u, priority: priorities[u] });
663            }
664        }
665        units.sort(function (a, b) {
666            return a.priority - b.priority;
667        });
668        return units;
669    }
670
671    function isLeapYear(year) {
672        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
673    }
674
675    function absFloor(number) {
676        if (number < 0) {
677            // -0 -> 0
678            return Math.ceil(number) || 0;
679        } else {
680            return Math.floor(number);
681        }
682    }
683
684    function toInt(argumentForCoercion) {
685        var coercedNumber = +argumentForCoercion,
686            value = 0;
687
688        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
689            value = absFloor(coercedNumber);
690        }
691
692        return value;
693    }
694
695    function makeGetSet(unit, keepTime) {
696        return function (value) {
697            if (value != null) {
698                set$1(this, unit, value);
699                hooks.updateOffset(this, keepTime);
700                return this;
701            } else {
702                return get(this, unit);
703            }
704        };
705    }
706
707    function get(mom, unit) {
708        return mom.isValid()
709            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()
710            : NaN;
711    }
712
713    function set$1(mom, unit, value) {
714        if (mom.isValid() && !isNaN(value)) {
715            if (
716                unit === 'FullYear' &&
717                isLeapYear(mom.year()) &&
718                mom.month() === 1 &&
719                mom.date() === 29
720            ) {
721                value = toInt(value);
722                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](
723                    value,
724                    mom.month(),
725                    daysInMonth(value, mom.month())
726                );
727            } else {
728                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
729            }
730        }
731    }
732
733    // MOMENTS
734
735    function stringGet(units) {
736        units = normalizeUnits(units);
737        if (isFunction(this[units])) {
738            return this[units]();
739        }
740        return this;
741    }
742
743    function stringSet(units, value) {
744        if (typeof units === 'object') {
745            units = normalizeObjectUnits(units);
746            var prioritized = getPrioritizedUnits(units),
747                i;
748            for (i = 0; i < prioritized.length; i++) {
749                this[prioritized[i].unit](units[prioritized[i].unit]);
750            }
751        } else {
752            units = normalizeUnits(units);
753            if (isFunction(this[units])) {
754                return this[units](value);
755            }
756        }
757        return this;
758    }
759
760    var match1 = /\d/, //       0 - 9
761        match2 = /\d\d/, //      00 - 99
762        match3 = /\d{3}/, //     000 - 999
763        match4 = /\d{4}/, //    0000 - 9999
764        match6 = /[+-]?\d{6}/, // -999999 - 999999
765        match1to2 = /\d\d?/, //       0 - 99
766        match3to4 = /\d\d\d\d?/, //     999 - 9999
767        match5to6 = /\d\d\d\d\d\d?/, //   99999 - 999999
768        match1to3 = /\d{1,3}/, //       0 - 999
769        match1to4 = /\d{1,4}/, //       0 - 9999
770        match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
771        matchUnsigned = /\d+/, //       0 - inf
772        matchSigned = /[+-]?\d+/, //    -inf - inf
773        matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
774        matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
775        matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
776        // any word (or two) characters or numbers including two/three word month in arabic.
777        // includes scottish gaelic two word and hyphenated months
778        matchWord = /[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,
779        regexes;
780
781    regexes = {};
782
783    function addRegexToken(token, regex, strictRegex) {
784        regexes[token] = isFunction(regex)
785            ? regex
786            : function (isStrict, localeData) {
787                  return isStrict && strictRegex ? strictRegex : regex;
788              };
789    }
790
791    function getParseRegexForToken(token, config) {
792        if (!hasOwnProp(regexes, token)) {
793            return new RegExp(unescapeFormat(token));
794        }
795
796        return regexes[token](config._strict, config._locale);
797    }
798
799    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
800    function unescapeFormat(s) {
801        return regexEscape(
802            s
803                .replace('\\', '')
804                .replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (
805                    matched,
806                    p1,
807                    p2,
808                    p3,
809                    p4
810                ) {
811                    return p1 || p2 || p3 || p4;
812                })
813        );
814    }
815
816    function regexEscape(s) {
817        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
818    }
819
820    var tokens = {};
821
822    function addParseToken(token, callback) {
823        var i,
824            func = callback;
825        if (typeof token === 'string') {
826            token = [token];
827        }
828        if (isNumber(callback)) {
829            func = function (input, array) {
830                array[callback] = toInt(input);
831            };
832        }
833        for (i = 0; i < token.length; i++) {
834            tokens[token[i]] = func;
835        }
836    }
837
838    function addWeekParseToken(token, callback) {
839        addParseToken(token, function (input, array, config, token) {
840            config._w = config._w || {};
841            callback(input, config._w, config, token);
842        });
843    }
844
845    function addTimeToArrayFromToken(token, input, config) {
846        if (input != null && hasOwnProp(tokens, token)) {
847            tokens[token](input, config._a, config, token);
848        }
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    function mod(n, x) {
862        return ((n % x) + x) % x;
863    }
864
865    var indexOf;
866
867    if (Array.prototype.indexOf) {
868        indexOf = Array.prototype.indexOf;
869    } else {
870        indexOf = function (o) {
871            // I know
872            var i;
873            for (i = 0; i < this.length; ++i) {
874                if (this[i] === o) {
875                    return i;
876                }
877            }
878            return -1;
879        };
880    }
881
882    function daysInMonth(year, month) {
883        if (isNaN(year) || isNaN(month)) {
884            return NaN;
885        }
886        var modMonth = mod(month, 12);
887        year += (month - modMonth) / 12;
888        return modMonth === 1
889            ? isLeapYear(year)
890                ? 29
891                : 28
892            : 31 - ((modMonth % 7) % 2);
893    }
894
895    // FORMATTING
896
897    addFormatToken('M', ['MM', 2], 'Mo', function () {
898        return this.month() + 1;
899    });
900
901    addFormatToken('MMM', 0, 0, function (format) {
902        return this.localeData().monthsShort(this, format);
903    });
904
905    addFormatToken('MMMM', 0, 0, function (format) {
906        return this.localeData().months(this, format);
907    });
908
909    // ALIASES
910
911    addUnitAlias('month', 'M');
912
913    // PRIORITY
914
915    addUnitPriority('month', 8);
916
917    // PARSING
918
919    addRegexToken('M', match1to2);
920    addRegexToken('MM', match1to2, match2);
921    addRegexToken('MMM', function (isStrict, locale) {
922        return locale.monthsShortRegex(isStrict);
923    });
924    addRegexToken('MMMM', function (isStrict, locale) {
925        return locale.monthsRegex(isStrict);
926    });
927
928    addParseToken(['M', 'MM'], function (input, array) {
929        array[MONTH] = toInt(input) - 1;
930    });
931
932    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
933        var month = config._locale.monthsParse(input, token, config._strict);
934        // if we didn't find a month name, mark the date as invalid.
935        if (month != null) {
936            array[MONTH] = month;
937        } else {
938            getParsingFlags(config).invalidMonth = input;
939        }
940    });
941
942    // LOCALES
943
944    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
945            '_'
946        ),
947        defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(
948            '_'
949        ),
950        MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
951        defaultMonthsShortRegex = matchWord,
952        defaultMonthsRegex = matchWord;
953
954    function localeMonths(m, format) {
955        if (!m) {
956            return isArray(this._months)
957                ? this._months
958                : this._months['standalone'];
959        }
960        return isArray(this._months)
961            ? this._months[m.month()]
962            : this._months[
963                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
964                      ? 'format'
965                      : 'standalone'
966              ][m.month()];
967    }
968
969    function localeMonthsShort(m, format) {
970        if (!m) {
971            return isArray(this._monthsShort)
972                ? this._monthsShort
973                : this._monthsShort['standalone'];
974        }
975        return isArray(this._monthsShort)
976            ? this._monthsShort[m.month()]
977            : this._monthsShort[
978                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
979              ][m.month()];
980    }
981
982    function handleStrictParse(monthName, format, strict) {
983        var i,
984            ii,
985            mom,
986            llc = monthName.toLocaleLowerCase();
987        if (!this._monthsParse) {
988            // this is not used
989            this._monthsParse = [];
990            this._longMonthsParse = [];
991            this._shortMonthsParse = [];
992            for (i = 0; i < 12; ++i) {
993                mom = createUTC([2000, i]);
994                this._shortMonthsParse[i] = this.monthsShort(
995                    mom,
996                    ''
997                ).toLocaleLowerCase();
998                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
999            }
1000        }
1001
1002        if (strict) {
1003            if (format === 'MMM') {
1004                ii = indexOf.call(this._shortMonthsParse, llc);
1005                return ii !== -1 ? ii : null;
1006            } else {
1007                ii = indexOf.call(this._longMonthsParse, llc);
1008                return ii !== -1 ? ii : null;
1009            }
1010        } else {
1011            if (format === 'MMM') {
1012                ii = indexOf.call(this._shortMonthsParse, llc);
1013                if (ii !== -1) {
1014                    return ii;
1015                }
1016                ii = indexOf.call(this._longMonthsParse, llc);
1017                return ii !== -1 ? ii : null;
1018            } else {
1019                ii = indexOf.call(this._longMonthsParse, llc);
1020                if (ii !== -1) {
1021                    return ii;
1022                }
1023                ii = indexOf.call(this._shortMonthsParse, llc);
1024                return ii !== -1 ? ii : null;
1025            }
1026        }
1027    }
1028
1029    function localeMonthsParse(monthName, format, strict) {
1030        var i, mom, regex;
1031
1032        if (this._monthsParseExact) {
1033            return handleStrictParse.call(this, monthName, format, strict);
1034        }
1035
1036        if (!this._monthsParse) {
1037            this._monthsParse = [];
1038            this._longMonthsParse = [];
1039            this._shortMonthsParse = [];
1040        }
1041
1042        // TODO: add sorting
1043        // Sorting makes sure if one month (or abbr) is a prefix of another
1044        // see sorting in computeMonthsParse
1045        for (i = 0; i < 12; i++) {
1046            // make the regex if we don't have it already
1047            mom = createUTC([2000, i]);
1048            if (strict && !this._longMonthsParse[i]) {
1049                this._longMonthsParse[i] = new RegExp(
1050                    '^' + this.months(mom, '').replace('.', '') + '$',
1051                    'i'
1052                );
1053                this._shortMonthsParse[i] = new RegExp(
1054                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',
1055                    'i'
1056                );
1057            }
1058            if (!strict && !this._monthsParse[i]) {
1059                regex =
1060                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
1061                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
1062            }
1063            // test the regex
1064            if (
1065                strict &&
1066                format === 'MMMM' &&
1067                this._longMonthsParse[i].test(monthName)
1068            ) {
1069                return i;
1070            } else if (
1071                strict &&
1072                format === 'MMM' &&
1073                this._shortMonthsParse[i].test(monthName)
1074            ) {
1075                return i;
1076            } else if (!strict && this._monthsParse[i].test(monthName)) {
1077                return i;
1078            }
1079        }
1080    }
1081
1082    // MOMENTS
1083
1084    function setMonth(mom, value) {
1085        var dayOfMonth;
1086
1087        if (!mom.isValid()) {
1088            // No op
1089            return mom;
1090        }
1091
1092        if (typeof value === 'string') {
1093            if (/^\d+$/.test(value)) {
1094                value = toInt(value);
1095            } else {
1096                value = mom.localeData().monthsParse(value);
1097                // TODO: Another silent failure?
1098                if (!isNumber(value)) {
1099                    return mom;
1100                }
1101            }
1102        }
1103
1104        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
1105        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
1106        return mom;
1107    }
1108
1109    function getSetMonth(value) {
1110        if (value != null) {
1111            setMonth(this, value);
1112            hooks.updateOffset(this, true);
1113            return this;
1114        } else {
1115            return get(this, 'Month');
1116        }
1117    }
1118
1119    function getDaysInMonth() {
1120        return daysInMonth(this.year(), this.month());
1121    }
1122
1123    function monthsShortRegex(isStrict) {
1124        if (this._monthsParseExact) {
1125            if (!hasOwnProp(this, '_monthsRegex')) {
1126                computeMonthsParse.call(this);
1127            }
1128            if (isStrict) {
1129                return this._monthsShortStrictRegex;
1130            } else {
1131                return this._monthsShortRegex;
1132            }
1133        } else {
1134            if (!hasOwnProp(this, '_monthsShortRegex')) {
1135                this._monthsShortRegex = defaultMonthsShortRegex;
1136            }
1137            return this._monthsShortStrictRegex && isStrict
1138                ? this._monthsShortStrictRegex
1139                : this._monthsShortRegex;
1140        }
1141    }
1142
1143    function monthsRegex(isStrict) {
1144        if (this._monthsParseExact) {
1145            if (!hasOwnProp(this, '_monthsRegex')) {
1146                computeMonthsParse.call(this);
1147            }
1148            if (isStrict) {
1149                return this._monthsStrictRegex;
1150            } else {
1151                return this._monthsRegex;
1152            }
1153        } else {
1154            if (!hasOwnProp(this, '_monthsRegex')) {
1155                this._monthsRegex = defaultMonthsRegex;
1156            }
1157            return this._monthsStrictRegex && isStrict
1158                ? this._monthsStrictRegex
1159                : this._monthsRegex;
1160        }
1161    }
1162
1163    function computeMonthsParse() {
1164        function cmpLenRev(a, b) {
1165            return b.length - a.length;
1166        }
1167
1168        var shortPieces = [],
1169            longPieces = [],
1170            mixedPieces = [],
1171            i,
1172            mom;
1173        for (i = 0; i < 12; i++) {
1174            // make the regex if we don't have it already
1175            mom = createUTC([2000, i]);
1176            shortPieces.push(this.monthsShort(mom, ''));
1177            longPieces.push(this.months(mom, ''));
1178            mixedPieces.push(this.months(mom, ''));
1179            mixedPieces.push(this.monthsShort(mom, ''));
1180        }
1181        // Sorting makes sure if one month (or abbr) is a prefix of another it
1182        // will match the longer piece.
1183        shortPieces.sort(cmpLenRev);
1184        longPieces.sort(cmpLenRev);
1185        mixedPieces.sort(cmpLenRev);
1186        for (i = 0; i < 12; i++) {
1187            shortPieces[i] = regexEscape(shortPieces[i]);
1188            longPieces[i] = regexEscape(longPieces[i]);
1189        }
1190        for (i = 0; i < 24; i++) {
1191            mixedPieces[i] = regexEscape(mixedPieces[i]);
1192        }
1193
1194        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1195        this._monthsShortRegex = this._monthsRegex;
1196        this._monthsStrictRegex = new RegExp(
1197            '^(' + longPieces.join('|') + ')',
1198            'i'
1199        );
1200        this._monthsShortStrictRegex = new RegExp(
1201            '^(' + shortPieces.join('|') + ')',
1202            'i'
1203        );
1204    }
1205
1206    // FORMATTING
1207
1208    addFormatToken('Y', 0, 0, function () {
1209        var y = this.year();
1210        return y <= 9999 ? zeroFill(y, 4) : '+' + y;
1211    });
1212
1213    addFormatToken(0, ['YY', 2], 0, function () {
1214        return this.year() % 100;
1215    });
1216
1217    addFormatToken(0, ['YYYY', 4], 0, 'year');
1218    addFormatToken(0, ['YYYYY', 5], 0, 'year');
1219    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
1220
1221    // ALIASES
1222
1223    addUnitAlias('year', 'y');
1224
1225    // PRIORITIES
1226
1227    addUnitPriority('year', 1);
1228
1229    // PARSING
1230
1231    addRegexToken('Y', matchSigned);
1232    addRegexToken('YY', match1to2, match2);
1233    addRegexToken('YYYY', match1to4, match4);
1234    addRegexToken('YYYYY', match1to6, match6);
1235    addRegexToken('YYYYYY', match1to6, match6);
1236
1237    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
1238    addParseToken('YYYY', function (input, array) {
1239        array[YEAR] =
1240            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
1241    });
1242    addParseToken('YY', function (input, array) {
1243        array[YEAR] = hooks.parseTwoDigitYear(input);
1244    });
1245    addParseToken('Y', function (input, array) {
1246        array[YEAR] = parseInt(input, 10);
1247    });
1248
1249    // HELPERS
1250
1251    function daysInYear(year) {
1252        return isLeapYear(year) ? 366 : 365;
1253    }
1254
1255    // HOOKS
1256
1257    hooks.parseTwoDigitYear = function (input) {
1258        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
1259    };
1260
1261    // MOMENTS
1262
1263    var getSetYear = makeGetSet('FullYear', true);
1264
1265    function getIsLeapYear() {
1266        return isLeapYear(this.year());
1267    }
1268
1269    function createDate(y, m, d, h, M, s, ms) {
1270        // can't just apply() to create a date:
1271        // https://stackoverflow.com/q/181348
1272        var date;
1273        // the date constructor remaps years 0-99 to 1900-1999
1274        if (y < 100 && y >= 0) {
1275            // preserve leap years using a full 400 year cycle, then reset
1276            date = new Date(y + 400, m, d, h, M, s, ms);
1277            if (isFinite(date.getFullYear())) {
1278                date.setFullYear(y);
1279            }
1280        } else {
1281            date = new Date(y, m, d, h, M, s, ms);
1282        }
1283
1284        return date;
1285    }
1286
1287    function createUTCDate(y) {
1288        var date, args;
1289        // the Date.UTC function remaps years 0-99 to 1900-1999
1290        if (y < 100 && y >= 0) {
1291            args = Array.prototype.slice.call(arguments);
1292            // preserve leap years using a full 400 year cycle, then reset
1293            args[0] = y + 400;
1294            date = new Date(Date.UTC.apply(null, args));
1295            if (isFinite(date.getUTCFullYear())) {
1296                date.setUTCFullYear(y);
1297            }
1298        } else {
1299            date = new Date(Date.UTC.apply(null, arguments));
1300        }
1301
1302        return date;
1303    }
1304
1305    // start-of-first-week - start-of-year
1306    function firstWeekOffset(year, dow, doy) {
1307        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
1308            fwd = 7 + dow - doy,
1309            // first-week day local weekday -- which local weekday is fwd
1310            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
1311
1312        return -fwdlw + fwd - 1;
1313    }
1314
1315    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
1316    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
1317        var localWeekday = (7 + weekday - dow) % 7,
1318            weekOffset = firstWeekOffset(year, dow, doy),
1319            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
1320            resYear,
1321            resDayOfYear;
1322
1323        if (dayOfYear <= 0) {
1324            resYear = year - 1;
1325            resDayOfYear = daysInYear(resYear) + dayOfYear;
1326        } else if (dayOfYear > daysInYear(year)) {
1327            resYear = year + 1;
1328            resDayOfYear = dayOfYear - daysInYear(year);
1329        } else {
1330            resYear = year;
1331            resDayOfYear = dayOfYear;
1332        }
1333
1334        return {
1335            year: resYear,
1336            dayOfYear: resDayOfYear,
1337        };
1338    }
1339
1340    function weekOfYear(mom, dow, doy) {
1341        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
1342            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
1343            resWeek,
1344            resYear;
1345
1346        if (week < 1) {
1347            resYear = mom.year() - 1;
1348            resWeek = week + weeksInYear(resYear, dow, doy);
1349        } else if (week > weeksInYear(mom.year(), dow, doy)) {
1350            resWeek = week - weeksInYear(mom.year(), dow, doy);
1351            resYear = mom.year() + 1;
1352        } else {
1353            resYear = mom.year();
1354            resWeek = week;
1355        }
1356
1357        return {
1358            week: resWeek,
1359            year: resYear,
1360        };
1361    }
1362
1363    function weeksInYear(year, dow, doy) {
1364        var weekOffset = firstWeekOffset(year, dow, doy),
1365            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
1366        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
1367    }
1368
1369    // FORMATTING
1370
1371    addFormatToken('w', ['ww', 2], 'wo', 'week');
1372    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
1373
1374    // ALIASES
1375
1376    addUnitAlias('week', 'w');
1377    addUnitAlias('isoWeek', 'W');
1378
1379    // PRIORITIES
1380
1381    addUnitPriority('week', 5);
1382    addUnitPriority('isoWeek', 5);
1383
1384    // PARSING
1385
1386    addRegexToken('w', match1to2);
1387    addRegexToken('ww', match1to2, match2);
1388    addRegexToken('W', match1to2);
1389    addRegexToken('WW', match1to2, match2);
1390
1391    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (
1392        input,
1393        week,
1394        config,
1395        token
1396    ) {
1397        week[token.substr(0, 1)] = toInt(input);
1398    });
1399
1400    // HELPERS
1401
1402    // LOCALES
1403
1404    function localeWeek(mom) {
1405        return weekOfYear(mom, this._week.dow, this._week.doy).week;
1406    }
1407
1408    var defaultLocaleWeek = {
1409        dow: 0, // Sunday is the first day of the week.
1410        doy: 6, // The week that contains Jan 6th is the first week of the year.
1411    };
1412
1413    function localeFirstDayOfWeek() {
1414        return this._week.dow;
1415    }
1416
1417    function localeFirstDayOfYear() {
1418        return this._week.doy;
1419    }
1420
1421    // MOMENTS
1422
1423    function getSetWeek(input) {
1424        var week = this.localeData().week(this);
1425        return input == null ? week : this.add((input - week) * 7, 'd');
1426    }
1427
1428    function getSetISOWeek(input) {
1429        var week = weekOfYear(this, 1, 4).week;
1430        return input == null ? week : this.add((input - week) * 7, 'd');
1431    }
1432
1433    // FORMATTING
1434
1435    addFormatToken('d', 0, 'do', 'day');
1436
1437    addFormatToken('dd', 0, 0, function (format) {
1438        return this.localeData().weekdaysMin(this, format);
1439    });
1440
1441    addFormatToken('ddd', 0, 0, function (format) {
1442        return this.localeData().weekdaysShort(this, format);
1443    });
1444
1445    addFormatToken('dddd', 0, 0, function (format) {
1446        return this.localeData().weekdays(this, format);
1447    });
1448
1449    addFormatToken('e', 0, 0, 'weekday');
1450    addFormatToken('E', 0, 0, 'isoWeekday');
1451
1452    // ALIASES
1453
1454    addUnitAlias('day', 'd');
1455    addUnitAlias('weekday', 'e');
1456    addUnitAlias('isoWeekday', 'E');
1457
1458    // PRIORITY
1459    addUnitPriority('day', 11);
1460    addUnitPriority('weekday', 11);
1461    addUnitPriority('isoWeekday', 11);
1462
1463    // PARSING
1464
1465    addRegexToken('d', match1to2);
1466    addRegexToken('e', match1to2);
1467    addRegexToken('E', match1to2);
1468    addRegexToken('dd', function (isStrict, locale) {
1469        return locale.weekdaysMinRegex(isStrict);
1470    });
1471    addRegexToken('ddd', function (isStrict, locale) {
1472        return locale.weekdaysShortRegex(isStrict);
1473    });
1474    addRegexToken('dddd', function (isStrict, locale) {
1475        return locale.weekdaysRegex(isStrict);
1476    });
1477
1478    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
1479        var weekday = config._locale.weekdaysParse(input, token, config._strict);
1480        // if we didn't get a weekday name, mark the date as invalid
1481        if (weekday != null) {
1482            week.d = weekday;
1483        } else {
1484            getParsingFlags(config).invalidWeekday = input;
1485        }
1486    });
1487
1488    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
1489        week[token] = toInt(input);
1490    });
1491
1492    // HELPERS
1493
1494    function parseWeekday(input, locale) {
1495        if (typeof input !== 'string') {
1496            return input;
1497        }
1498
1499        if (!isNaN(input)) {
1500            return parseInt(input, 10);
1501        }
1502
1503        input = locale.weekdaysParse(input);
1504        if (typeof input === 'number') {
1505            return input;
1506        }
1507
1508        return null;
1509    }
1510
1511    function parseIsoWeekday(input, locale) {
1512        if (typeof input === 'string') {
1513            return locale.weekdaysParse(input) % 7 || 7;
1514        }
1515        return isNaN(input) ? null : input;
1516    }
1517
1518    // LOCALES
1519    function shiftWeekdays(ws, n) {
1520        return ws.slice(n, 7).concat(ws.slice(0, n));
1521    }
1522
1523    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
1524            '_'
1525        ),
1526        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
1527        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
1528        defaultWeekdaysRegex = matchWord,
1529        defaultWeekdaysShortRegex = matchWord,
1530        defaultWeekdaysMinRegex = matchWord;
1531
1532    function localeWeekdays(m, format) {
1533        var weekdays = isArray(this._weekdays)
1534            ? this._weekdays
1535            : this._weekdays[
1536                  m && m !== true && this._weekdays.isFormat.test(format)
1537                      ? 'format'
1538                      : 'standalone'
1539              ];
1540        return m === true
1541            ? shiftWeekdays(weekdays, this._week.dow)
1542            : m
1543            ? weekdays[m.day()]
1544            : weekdays;
1545    }
1546
1547    function localeWeekdaysShort(m) {
1548        return m === true
1549            ? shiftWeekdays(this._weekdaysShort, this._week.dow)
1550            : m
1551            ? this._weekdaysShort[m.day()]
1552            : this._weekdaysShort;
1553    }
1554
1555    function localeWeekdaysMin(m) {
1556        return m === true
1557            ? shiftWeekdays(this._weekdaysMin, this._week.dow)
1558            : m
1559            ? this._weekdaysMin[m.day()]
1560            : this._weekdaysMin;
1561    }
1562
1563    function handleStrictParse$1(weekdayName, format, strict) {
1564        var i,
1565            ii,
1566            mom,
1567            llc = weekdayName.toLocaleLowerCase();
1568        if (!this._weekdaysParse) {
1569            this._weekdaysParse = [];
1570            this._shortWeekdaysParse = [];
1571            this._minWeekdaysParse = [];
1572
1573            for (i = 0; i < 7; ++i) {
1574                mom = createUTC([2000, 1]).day(i);
1575                this._minWeekdaysParse[i] = this.weekdaysMin(
1576                    mom,
1577                    ''
1578                ).toLocaleLowerCase();
1579                this._shortWeekdaysParse[i] = this.weekdaysShort(
1580                    mom,
1581                    ''
1582                ).toLocaleLowerCase();
1583                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
1584            }
1585        }
1586
1587        if (strict) {
1588            if (format === 'dddd') {
1589                ii = indexOf.call(this._weekdaysParse, llc);
1590                return ii !== -1 ? ii : null;
1591            } else if (format === 'ddd') {
1592                ii = indexOf.call(this._shortWeekdaysParse, llc);
1593                return ii !== -1 ? ii : null;
1594            } else {
1595                ii = indexOf.call(this._minWeekdaysParse, llc);
1596                return ii !== -1 ? ii : null;
1597            }
1598        } else {
1599            if (format === 'dddd') {
1600                ii = indexOf.call(this._weekdaysParse, llc);
1601                if (ii !== -1) {
1602                    return ii;
1603                }
1604                ii = indexOf.call(this._shortWeekdaysParse, llc);
1605                if (ii !== -1) {
1606                    return ii;
1607                }
1608                ii = indexOf.call(this._minWeekdaysParse, llc);
1609                return ii !== -1 ? ii : null;
1610            } else if (format === 'ddd') {
1611                ii = indexOf.call(this._shortWeekdaysParse, llc);
1612                if (ii !== -1) {
1613                    return ii;
1614                }
1615                ii = indexOf.call(this._weekdaysParse, llc);
1616                if (ii !== -1) {
1617                    return ii;
1618                }
1619                ii = indexOf.call(this._minWeekdaysParse, llc);
1620                return ii !== -1 ? ii : null;
1621            } else {
1622                ii = indexOf.call(this._minWeekdaysParse, llc);
1623                if (ii !== -1) {
1624                    return ii;
1625                }
1626                ii = indexOf.call(this._weekdaysParse, llc);
1627                if (ii !== -1) {
1628                    return ii;
1629                }
1630                ii = indexOf.call(this._shortWeekdaysParse, llc);
1631                return ii !== -1 ? ii : null;
1632            }
1633        }
1634    }
1635
1636    function localeWeekdaysParse(weekdayName, format, strict) {
1637        var i, mom, regex;
1638
1639        if (this._weekdaysParseExact) {
1640            return handleStrictParse$1.call(this, weekdayName, format, strict);
1641        }
1642
1643        if (!this._weekdaysParse) {
1644            this._weekdaysParse = [];
1645            this._minWeekdaysParse = [];
1646            this._shortWeekdaysParse = [];
1647            this._fullWeekdaysParse = [];
1648        }
1649
1650        for (i = 0; i < 7; i++) {
1651            // make the regex if we don't have it already
1652
1653            mom = createUTC([2000, 1]).day(i);
1654            if (strict && !this._fullWeekdaysParse[i]) {
1655                this._fullWeekdaysParse[i] = new RegExp(
1656                    '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
1657                    'i'
1658                );
1659                this._shortWeekdaysParse[i] = new RegExp(
1660                    '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
1661                    'i'
1662                );
1663                this._minWeekdaysParse[i] = new RegExp(
1664                    '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
1665                    'i'
1666                );
1667            }
1668            if (!this._weekdaysParse[i]) {
1669                regex =
1670                    '^' +
1671                    this.weekdays(mom, '') +
1672                    '|^' +
1673                    this.weekdaysShort(mom, '') +
1674                    '|^' +
1675                    this.weekdaysMin(mom, '');
1676                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
1677            }
1678            // test the regex
1679            if (
1680                strict &&
1681                format === 'dddd' &&
1682                this._fullWeekdaysParse[i].test(weekdayName)
1683            ) {
1684                return i;
1685            } else if (
1686                strict &&
1687                format === 'ddd' &&
1688                this._shortWeekdaysParse[i].test(weekdayName)
1689            ) {
1690                return i;
1691            } else if (
1692                strict &&
1693                format === 'dd' &&
1694                this._minWeekdaysParse[i].test(weekdayName)
1695            ) {
1696                return i;
1697            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
1698                return i;
1699            }
1700        }
1701    }
1702
1703    // MOMENTS
1704
1705    function getSetDayOfWeek(input) {
1706        if (!this.isValid()) {
1707            return input != null ? this : NaN;
1708        }
1709        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
1710        if (input != null) {
1711            input = parseWeekday(input, this.localeData());
1712            return this.add(input - day, 'd');
1713        } else {
1714            return day;
1715        }
1716    }
1717
1718    function getSetLocaleDayOfWeek(input) {
1719        if (!this.isValid()) {
1720            return input != null ? this : NaN;
1721        }
1722        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
1723        return input == null ? weekday : this.add(input - weekday, 'd');
1724    }
1725
1726    function getSetISODayOfWeek(input) {
1727        if (!this.isValid()) {
1728            return input != null ? this : NaN;
1729        }
1730
1731        // behaves the same as moment#day except
1732        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
1733        // as a setter, sunday should belong to the previous week.
1734
1735        if (input != null) {
1736            var weekday = parseIsoWeekday(input, this.localeData());
1737            return this.day(this.day() % 7 ? weekday : weekday - 7);
1738        } else {
1739            return this.day() || 7;
1740        }
1741    }
1742
1743    function weekdaysRegex(isStrict) {
1744        if (this._weekdaysParseExact) {
1745            if (!hasOwnProp(this, '_weekdaysRegex')) {
1746                computeWeekdaysParse.call(this);
1747            }
1748            if (isStrict) {
1749                return this._weekdaysStrictRegex;
1750            } else {
1751                return this._weekdaysRegex;
1752            }
1753        } else {
1754            if (!hasOwnProp(this, '_weekdaysRegex')) {
1755                this._weekdaysRegex = defaultWeekdaysRegex;
1756            }
1757            return this._weekdaysStrictRegex && isStrict
1758                ? this._weekdaysStrictRegex
1759                : this._weekdaysRegex;
1760        }
1761    }
1762
1763    function weekdaysShortRegex(isStrict) {
1764        if (this._weekdaysParseExact) {
1765            if (!hasOwnProp(this, '_weekdaysRegex')) {
1766                computeWeekdaysParse.call(this);
1767            }
1768            if (isStrict) {
1769                return this._weekdaysShortStrictRegex;
1770            } else {
1771                return this._weekdaysShortRegex;
1772            }
1773        } else {
1774            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
1775                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
1776            }
1777            return this._weekdaysShortStrictRegex && isStrict
1778                ? this._weekdaysShortStrictRegex
1779                : this._weekdaysShortRegex;
1780        }
1781    }
1782
1783    function weekdaysMinRegex(isStrict) {
1784        if (this._weekdaysParseExact) {
1785            if (!hasOwnProp(this, '_weekdaysRegex')) {
1786                computeWeekdaysParse.call(this);
1787            }
1788            if (isStrict) {
1789                return this._weekdaysMinStrictRegex;
1790            } else {
1791                return this._weekdaysMinRegex;
1792            }
1793        } else {
1794            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
1795                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
1796            }
1797            return this._weekdaysMinStrictRegex && isStrict
1798                ? this._weekdaysMinStrictRegex
1799                : this._weekdaysMinRegex;
1800        }
1801    }
1802
1803    function computeWeekdaysParse() {
1804        function cmpLenRev(a, b) {
1805            return b.length - a.length;
1806        }
1807
1808        var minPieces = [],
1809            shortPieces = [],
1810            longPieces = [],
1811            mixedPieces = [],
1812            i,
1813            mom,
1814            minp,
1815            shortp,
1816            longp;
1817        for (i = 0; i < 7; i++) {
1818            // make the regex if we don't have it already
1819            mom = createUTC([2000, 1]).day(i);
1820            minp = regexEscape(this.weekdaysMin(mom, ''));
1821            shortp = regexEscape(this.weekdaysShort(mom, ''));
1822            longp = regexEscape(this.weekdays(mom, ''));
1823            minPieces.push(minp);
1824            shortPieces.push(shortp);
1825            longPieces.push(longp);
1826            mixedPieces.push(minp);
1827            mixedPieces.push(shortp);
1828            mixedPieces.push(longp);
1829        }
1830        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
1831        // will match the longer piece.
1832        minPieces.sort(cmpLenRev);
1833        shortPieces.sort(cmpLenRev);
1834        longPieces.sort(cmpLenRev);
1835        mixedPieces.sort(cmpLenRev);
1836
1837        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1838        this._weekdaysShortRegex = this._weekdaysRegex;
1839        this._weekdaysMinRegex = this._weekdaysRegex;
1840
1841        this._weekdaysStrictRegex = new RegExp(
1842            '^(' + longPieces.join('|') + ')',
1843            'i'
1844        );
1845        this._weekdaysShortStrictRegex = new RegExp(
1846            '^(' + shortPieces.join('|') + ')',
1847            'i'
1848        );
1849        this._weekdaysMinStrictRegex = new RegExp(
1850            '^(' + minPieces.join('|') + ')',
1851            'i'
1852        );
1853    }
1854
1855    // FORMATTING
1856
1857    function hFormat() {
1858        return this.hours() % 12 || 12;
1859    }
1860
1861    function kFormat() {
1862        return this.hours() || 24;
1863    }
1864
1865    addFormatToken('H', ['HH', 2], 0, 'hour');
1866    addFormatToken('h', ['hh', 2], 0, hFormat);
1867    addFormatToken('k', ['kk', 2], 0, kFormat);
1868
1869    addFormatToken('hmm', 0, 0, function () {
1870        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
1871    });
1872
1873    addFormatToken('hmmss', 0, 0, function () {
1874        return (
1875            '' +
1876            hFormat.apply(this) +
1877            zeroFill(this.minutes(), 2) +
1878            zeroFill(this.seconds(), 2)
1879        );
1880    });
1881
1882    addFormatToken('Hmm', 0, 0, function () {
1883        return '' + this.hours() + zeroFill(this.minutes(), 2);
1884    });
1885
1886    addFormatToken('Hmmss', 0, 0, function () {
1887        return (
1888            '' +
1889            this.hours() +
1890            zeroFill(this.minutes(), 2) +
1891            zeroFill(this.seconds(), 2)
1892        );
1893    });
1894
1895    function meridiem(token, lowercase) {
1896        addFormatToken(token, 0, 0, function () {
1897            return this.localeData().meridiem(
1898                this.hours(),
1899                this.minutes(),
1900                lowercase
1901            );
1902        });
1903    }
1904
1905    meridiem('a', true);
1906    meridiem('A', false);
1907
1908    // ALIASES
1909
1910    addUnitAlias('hour', 'h');
1911
1912    // PRIORITY
1913    addUnitPriority('hour', 13);
1914
1915    // PARSING
1916
1917    function matchMeridiem(isStrict, locale) {
1918        return locale._meridiemParse;
1919    }
1920
1921    addRegexToken('a', matchMeridiem);
1922    addRegexToken('A', matchMeridiem);
1923    addRegexToken('H', match1to2);
1924    addRegexToken('h', match1to2);
1925    addRegexToken('k', match1to2);
1926    addRegexToken('HH', match1to2, match2);
1927    addRegexToken('hh', match1to2, match2);
1928    addRegexToken('kk', match1to2, match2);
1929
1930    addRegexToken('hmm', match3to4);
1931    addRegexToken('hmmss', match5to6);
1932    addRegexToken('Hmm', match3to4);
1933    addRegexToken('Hmmss', match5to6);
1934
1935    addParseToken(['H', 'HH'], HOUR);
1936    addParseToken(['k', 'kk'], function (input, array, config) {
1937        var kInput = toInt(input);
1938        array[HOUR] = kInput === 24 ? 0 : kInput;
1939    });
1940    addParseToken(['a', 'A'], function (input, array, config) {
1941        config._isPm = config._locale.isPM(input);
1942        config._meridiem = input;
1943    });
1944    addParseToken(['h', 'hh'], function (input, array, config) {
1945        array[HOUR] = toInt(input);
1946        getParsingFlags(config).bigHour = true;
1947    });
1948    addParseToken('hmm', function (input, array, config) {
1949        var pos = input.length - 2;
1950        array[HOUR] = toInt(input.substr(0, pos));
1951        array[MINUTE] = toInt(input.substr(pos));
1952        getParsingFlags(config).bigHour = true;
1953    });
1954    addParseToken('hmmss', function (input, array, config) {
1955        var pos1 = input.length - 4,
1956            pos2 = input.length - 2;
1957        array[HOUR] = toInt(input.substr(0, pos1));
1958        array[MINUTE] = toInt(input.substr(pos1, 2));
1959        array[SECOND] = toInt(input.substr(pos2));
1960        getParsingFlags(config).bigHour = true;
1961    });
1962    addParseToken('Hmm', function (input, array, config) {
1963        var pos = input.length - 2;
1964        array[HOUR] = toInt(input.substr(0, pos));
1965        array[MINUTE] = toInt(input.substr(pos));
1966    });
1967    addParseToken('Hmmss', function (input, array, config) {
1968        var pos1 = input.length - 4,
1969            pos2 = input.length - 2;
1970        array[HOUR] = toInt(input.substr(0, pos1));
1971        array[MINUTE] = toInt(input.substr(pos1, 2));
1972        array[SECOND] = toInt(input.substr(pos2));
1973    });
1974
1975    // LOCALES
1976
1977    function localeIsPM(input) {
1978        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
1979        // Using charAt should be more compatible.
1980        return (input + '').toLowerCase().charAt(0) === 'p';
1981    }
1982
1983    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
1984        // Setting the hour should keep the time, because the user explicitly
1985        // specified which hour they want. So trying to maintain the same hour (in
1986        // a new timezone) makes sense. Adding/subtracting hours does not follow
1987        // this rule.
1988        getSetHour = makeGetSet('Hours', true);
1989
1990    function localeMeridiem(hours, minutes, isLower) {
1991        if (hours > 11) {
1992            return isLower ? 'pm' : 'PM';
1993        } else {
1994            return isLower ? 'am' : 'AM';
1995        }
1996    }
1997
1998    var baseConfig = {
1999        calendar: defaultCalendar,
2000        longDateFormat: defaultLongDateFormat,
2001        invalidDate: defaultInvalidDate,
2002        ordinal: defaultOrdinal,
2003        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
2004        relativeTime: defaultRelativeTime,
2005
2006        months: defaultLocaleMonths,
2007        monthsShort: defaultLocaleMonthsShort,
2008
2009        week: defaultLocaleWeek,
2010
2011        weekdays: defaultLocaleWeekdays,
2012        weekdaysMin: defaultLocaleWeekdaysMin,
2013        weekdaysShort: defaultLocaleWeekdaysShort,
2014
2015        meridiemParse: defaultLocaleMeridiemParse,
2016    };
2017
2018    // internal storage for locale config files
2019    var locales = {},
2020        localeFamilies = {},
2021        globalLocale;
2022
2023    function commonPrefix(arr1, arr2) {
2024        var i,
2025            minl = Math.min(arr1.length, arr2.length);
2026        for (i = 0; i < minl; i += 1) {
2027            if (arr1[i] !== arr2[i]) {
2028                return i;
2029            }
2030        }
2031        return minl;
2032    }
2033
2034    function normalizeLocale(key) {
2035        return key ? key.toLowerCase().replace('_', '-') : key;
2036    }
2037
2038    // pick the locale from the array
2039    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
2040    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
2041    function chooseLocale(names) {
2042        var i = 0,
2043            j,
2044            next,
2045            locale,
2046            split;
2047
2048        while (i < names.length) {
2049            split = normalizeLocale(names[i]).split('-');
2050            j = split.length;
2051            next = normalizeLocale(names[i + 1]);
2052            next = next ? next.split('-') : null;
2053            while (j > 0) {
2054                locale = loadLocale(split.slice(0, j).join('-'));
2055                if (locale) {
2056                    return locale;
2057                }
2058                if (
2059                    next &&
2060                    next.length >= j &&
2061                    commonPrefix(split, next) >= j - 1
2062                ) {
2063                    //the next array item is better than a shallower substring of this one
2064                    break;
2065                }
2066                j--;
2067            }
2068            i++;
2069        }
2070        return globalLocale;
2071    }
2072
2073    function loadLocale(name) {
2074        var oldLocale = null,
2075            aliasedRequire;
2076        // TODO: Find a better way to register and load all the locales in Node
2077        if (
2078            locales[name] === undefined &&
2079            typeof module !== 'undefined' &&
2080            module &&
2081            module.exports
2082        ) {
2083            try {
2084                oldLocale = globalLocale._abbr;
2085                aliasedRequire = require;
2086                aliasedRequire('./locale/' + name);
2087                getSetGlobalLocale(oldLocale);
2088            } catch (e) {
2089                // mark as not found to avoid repeating expensive file require call causing high CPU
2090                // when trying to find en-US, en_US, en-us for every format call
2091                locales[name] = null; // null means not found
2092            }
2093        }
2094        return locales[name];
2095    }
2096
2097    // This function will load locale and then set the global locale.  If
2098    // no arguments are passed in, it will simply return the current global
2099    // locale key.
2100    function getSetGlobalLocale(key, values) {
2101        var data;
2102        if (key) {
2103            if (isUndefined(values)) {
2104                data = getLocale(key);
2105            } else {
2106                data = defineLocale(key, values);
2107            }
2108
2109            if (data) {
2110                // moment.duration._locale = moment._locale = data;
2111                globalLocale = data;
2112            } else {
2113                if (typeof console !== 'undefined' && console.warn) {
2114                    //warn user if arguments are passed but the locale could not be set
2115                    console.warn(
2116                        'Locale ' + key + ' not found. Did you forget to load it?'
2117                    );
2118                }
2119            }
2120        }
2121
2122        return globalLocale._abbr;
2123    }
2124
2125    function defineLocale(name, config) {
2126        if (config !== null) {
2127            var locale,
2128                parentConfig = baseConfig;
2129            config.abbr = name;
2130            if (locales[name] != null) {
2131                deprecateSimple(
2132                    'defineLocaleOverride',
2133                    'use moment.updateLocale(localeName, config) to change ' +
2134                        'an existing locale. moment.defineLocale(localeName, ' +
2135                        'config) should only be used for creating a new locale ' +
2136                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
2137                );
2138                parentConfig = locales[name]._config;
2139            } else if (config.parentLocale != null) {
2140                if (locales[config.parentLocale] != null) {
2141                    parentConfig = locales[config.parentLocale]._config;
2142                } else {
2143                    locale = loadLocale(config.parentLocale);
2144                    if (locale != null) {
2145                        parentConfig = locale._config;
2146                    } else {
2147                        if (!localeFamilies[config.parentLocale]) {
2148                            localeFamilies[config.parentLocale] = [];
2149                        }
2150                        localeFamilies[config.parentLocale].push({
2151                            name: name,
2152                            config: config,
2153                        });
2154                        return null;
2155                    }
2156                }
2157            }
2158            locales[name] = new Locale(mergeConfigs(parentConfig, config));
2159
2160            if (localeFamilies[name]) {
2161                localeFamilies[name].forEach(function (x) {
2162                    defineLocale(x.name, x.config);
2163                });
2164            }
2165
2166            // backwards compat for now: also set the locale
2167            // make sure we set the locale AFTER all child locales have been
2168            // created, so we won't end up with the child locale set.
2169            getSetGlobalLocale(name);
2170
2171            return locales[name];
2172        } else {
2173            // useful for testing
2174            delete locales[name];
2175            return null;
2176        }
2177    }
2178
2179    function updateLocale(name, config) {
2180        if (config != null) {
2181            var locale,
2182                tmpLocale,
2183                parentConfig = baseConfig;
2184
2185            if (locales[name] != null && locales[name].parentLocale != null) {
2186                // Update existing child locale in-place to avoid memory-leaks
2187                locales[name].set(mergeConfigs(locales[name]._config, config));
2188            } else {
2189                // MERGE
2190                tmpLocale = loadLocale(name);
2191                if (tmpLocale != null) {
2192                    parentConfig = tmpLocale._config;
2193                }
2194                config = mergeConfigs(parentConfig, config);
2195                if (tmpLocale == null) {
2196                    // updateLocale is called for creating a new locale
2197                    // Set abbr so it will have a name (getters return
2198                    // undefined otherwise).
2199                    config.abbr = name;
2200                }
2201                locale = new Locale(config);
2202                locale.parentLocale = locales[name];
2203                locales[name] = locale;
2204            }
2205
2206            // backwards compat for now: also set the locale
2207            getSetGlobalLocale(name);
2208        } else {
2209            // pass null for config to unupdate, useful for tests
2210            if (locales[name] != null) {
2211                if (locales[name].parentLocale != null) {
2212                    locales[name] = locales[name].parentLocale;
2213                    if (name === getSetGlobalLocale()) {
2214                        getSetGlobalLocale(name);
2215                    }
2216                } else if (locales[name] != null) {
2217                    delete locales[name];
2218                }
2219            }
2220        }
2221        return locales[name];
2222    }
2223
2224    // returns locale data
2225    function getLocale(key) {
2226        var locale;
2227
2228        if (key && key._locale && key._locale._abbr) {
2229            key = key._locale._abbr;
2230        }
2231
2232        if (!key) {
2233            return globalLocale;
2234        }
2235
2236        if (!isArray(key)) {
2237            //short-circuit everything else
2238            locale = loadLocale(key);
2239            if (locale) {
2240                return locale;
2241            }
2242            key = [key];
2243        }
2244
2245        return chooseLocale(key);
2246    }
2247
2248    function listLocales() {
2249        return keys(locales);
2250    }
2251
2252    function checkOverflow(m) {
2253        var overflow,
2254            a = m._a;
2255
2256        if (a && getParsingFlags(m).overflow === -2) {
2257            overflow =
2258                a[MONTH] < 0 || a[MONTH] > 11
2259                    ? MONTH
2260                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
2261                    ? DATE
2262                    : a[HOUR] < 0 ||
2263                      a[HOUR] > 24 ||
2264                      (a[HOUR] === 24 &&
2265                          (a[MINUTE] !== 0 ||
2266                              a[SECOND] !== 0 ||
2267                              a[MILLISECOND] !== 0))
2268                    ? HOUR
2269                    : a[MINUTE] < 0 || a[MINUTE] > 59
2270                    ? MINUTE
2271                    : a[SECOND] < 0 || a[SECOND] > 59
2272                    ? SECOND
2273                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
2274                    ? MILLISECOND
2275                    : -1;
2276
2277            if (
2278                getParsingFlags(m)._overflowDayOfYear &&
2279                (overflow < YEAR || overflow > DATE)
2280            ) {
2281                overflow = DATE;
2282            }
2283            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
2284                overflow = WEEK;
2285            }
2286            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
2287                overflow = WEEKDAY;
2288            }
2289
2290            getParsingFlags(m).overflow = overflow;
2291        }
2292
2293        return m;
2294    }
2295
2296    // iso 8601 regex
2297    // 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)
2298    var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
2299        basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
2300        tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
2301        isoDates = [
2302            ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
2303            ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
2304            ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
2305            ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
2306            ['YYYY-DDD', /\d{4}-\d{3}/],
2307            ['YYYY-MM', /\d{4}-\d\d/, false],
2308            ['YYYYYYMMDD', /[+-]\d{10}/],
2309            ['YYYYMMDD', /\d{8}/],
2310            ['GGGG[W]WWE', /\d{4}W\d{3}/],
2311            ['GGGG[W]WW', /\d{4}W\d{2}/, false],
2312            ['YYYYDDD', /\d{7}/],
2313            ['YYYYMM', /\d{6}/, false],
2314            ['YYYY', /\d{4}/, false],
2315        ],
2316        // iso time formats and regexes
2317        isoTimes = [
2318            ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
2319            ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
2320            ['HH:mm:ss', /\d\d:\d\d:\d\d/],
2321            ['HH:mm', /\d\d:\d\d/],
2322            ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
2323            ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
2324            ['HHmmss', /\d\d\d\d\d\d/],
2325            ['HHmm', /\d\d\d\d/],
2326            ['HH', /\d\d/],
2327        ],
2328        aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
2329        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
2330        rfc2822 = /^(?:(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}))$/,
2331        obsOffsets = {
2332            UT: 0,
2333            GMT: 0,
2334            EDT: -4 * 60,
2335            EST: -5 * 60,
2336            CDT: -5 * 60,
2337            CST: -6 * 60,
2338            MDT: -6 * 60,
2339            MST: -7 * 60,
2340            PDT: -7 * 60,
2341            PST: -8 * 60,
2342        };
2343
2344    // date from iso format
2345    function configFromISO(config) {
2346        var i,
2347            l,
2348            string = config._i,
2349            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
2350            allowTime,
2351            dateFormat,
2352            timeFormat,
2353            tzFormat;
2354
2355        if (match) {
2356            getParsingFlags(config).iso = true;
2357
2358            for (i = 0, l = isoDates.length; i < l; i++) {
2359                if (isoDates[i][1].exec(match[1])) {
2360                    dateFormat = isoDates[i][0];
2361                    allowTime = isoDates[i][2] !== false;
2362                    break;
2363                }
2364            }
2365            if (dateFormat == null) {
2366                config._isValid = false;
2367                return;
2368            }
2369            if (match[3]) {
2370                for (i = 0, l = isoTimes.length; i < l; i++) {
2371                    if (isoTimes[i][1].exec(match[3])) {
2372                        // match[2] should be 'T' or space
2373                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
2374                        break;
2375                    }
2376                }
2377                if (timeFormat == null) {
2378                    config._isValid = false;
2379                    return;
2380                }
2381            }
2382            if (!allowTime && timeFormat != null) {
2383                config._isValid = false;
2384                return;
2385            }
2386            if (match[4]) {
2387                if (tzRegex.exec(match[4])) {
2388                    tzFormat = 'Z';
2389                } else {
2390                    config._isValid = false;
2391                    return;
2392                }
2393            }
2394            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
2395            configFromStringAndFormat(config);
2396        } else {
2397            config._isValid = false;
2398        }
2399    }
2400
2401    function extractFromRFC2822Strings(
2402        yearStr,
2403        monthStr,
2404        dayStr,
2405        hourStr,
2406        minuteStr,
2407        secondStr
2408    ) {
2409        var result = [
2410            untruncateYear(yearStr),
2411            defaultLocaleMonthsShort.indexOf(monthStr),
2412            parseInt(dayStr, 10),
2413            parseInt(hourStr, 10),
2414            parseInt(minuteStr, 10),
2415        ];
2416
2417        if (secondStr) {
2418            result.push(parseInt(secondStr, 10));
2419        }
2420
2421        return result;
2422    }
2423
2424    function untruncateYear(yearStr) {
2425        var year = parseInt(yearStr, 10);
2426        if (year <= 49) {
2427            return 2000 + year;
2428        } else if (year <= 999) {
2429            return 1900 + year;
2430        }
2431        return year;
2432    }
2433
2434    function preprocessRFC2822(s) {
2435        // Remove comments and folding whitespace and replace multiple-spaces with a single space
2436        return s
2437            .replace(/\([^)]*\)|[\n\t]/g, ' ')
2438            .replace(/(\s\s+)/g, ' ')
2439            .replace(/^\s\s*/, '')
2440            .replace(/\s\s*$/, '');
2441    }
2442
2443    function checkWeekday(weekdayStr, parsedInput, config) {
2444        if (weekdayStr) {
2445            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
2446            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
2447                weekdayActual = new Date(
2448                    parsedInput[0],
2449                    parsedInput[1],
2450                    parsedInput[2]
2451                ).getDay();
2452            if (weekdayProvided !== weekdayActual) {
2453                getParsingFlags(config).weekdayMismatch = true;
2454                config._isValid = false;
2455                return false;
2456            }
2457        }
2458        return true;
2459    }
2460
2461    function calculateOffset(obsOffset, militaryOffset, numOffset) {
2462        if (obsOffset) {
2463            return obsOffsets[obsOffset];
2464        } else if (militaryOffset) {
2465            // the only allowed military tz is Z
2466            return 0;
2467        } else {
2468            var hm = parseInt(numOffset, 10),
2469                m = hm % 100,
2470                h = (hm - m) / 100;
2471            return h * 60 + m;
2472        }
2473    }
2474
2475    // date and time from ref 2822 format
2476    function configFromRFC2822(config) {
2477        var match = rfc2822.exec(preprocessRFC2822(config._i)),
2478            parsedArray;
2479        if (match) {
2480            parsedArray = extractFromRFC2822Strings(
2481                match[4],
2482                match[3],
2483                match[2],
2484                match[5],
2485                match[6],
2486                match[7]
2487            );
2488            if (!checkWeekday(match[1], parsedArray, config)) {
2489                return;
2490            }
2491
2492            config._a = parsedArray;
2493            config._tzm = calculateOffset(match[8], match[9], match[10]);
2494
2495            config._d = createUTCDate.apply(null, config._a);
2496            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2497
2498            getParsingFlags(config).rfc2822 = true;
2499        } else {
2500            config._isValid = false;
2501        }
2502    }
2503
2504    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
2505    function configFromString(config) {
2506        var matched = aspNetJsonRegex.exec(config._i);
2507        if (matched !== null) {
2508            config._d = new Date(+matched[1]);
2509            return;
2510        }
2511
2512        configFromISO(config);
2513        if (config._isValid === false) {
2514            delete config._isValid;
2515        } else {
2516            return;
2517        }
2518
2519        configFromRFC2822(config);
2520        if (config._isValid === false) {
2521            delete config._isValid;
2522        } else {
2523            return;
2524        }
2525
2526        if (config._strict) {
2527            config._isValid = false;
2528        } else {
2529            // Final attempt, use Input Fallback
2530            hooks.createFromInputFallback(config);
2531        }
2532    }
2533
2534    hooks.createFromInputFallback = deprecate(
2535        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
2536            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
2537            'discouraged
2537. Please refer to 
vendor: 37,148 bytes, lines 2537-3722
2537http://momentjs.com/guides/#/warnings/js-date/ for more info.',
2538        function (config) {
2539            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
2540        }
2541    );
2542
2543    // Pick the first defined of two or three arguments.
2544    function defaults(a, b, c) {
2545        if (a != null) {
2546            return a;
2547        }
2548        if (b != null) {
2549            return b;
2550        }
2551        return c;
2552    }
2553
2554    function currentDateArray(config) {
2555        // hooks is actually the exported moment object
2556        var nowValue = new Date(hooks.now());
2557        if (config._useUTC) {
2558            return [
2559                nowValue.getUTCFullYear(),
2560                nowValue.getUTCMonth(),
2561                nowValue.getUTCDate(),
2562            ];
2563        }
2564        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
2565    }
2566
2567    // convert an array to a date.
2568    // the array should mirror the parameters below
2569    // note: all values past the year are optional and will default to the lowest possible value.
2570    // [year, month, day , hour, minute, second, millisecond]
2571    function configFromArray(config) {
2572        var i,
2573            date,
2574            input = [],
2575            currentDate,
2576            expectedWeekday,
2577            yearToUse;
2578
2579        if (config._d) {
2580            return;
2581        }
2582
2583        currentDate = currentDateArray(config);
2584
2585        //compute day of the year from weeks and weekdays
2586        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
2587            dayOfYearFromWeekInfo(config);
2588        }
2589
2590        //if the day of the year is set, figure out what it is
2591        if (config._dayOfYear != null) {
2592            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
2593
2594            if (
2595                config._dayOfYear > daysInYear(yearToUse) ||
2596                config._dayOfYear === 0
2597            ) {
2598                getParsingFlags(config)._overflowDayOfYear = true;
2599            }
2600
2601            date = createUTCDate(yearToUse, 0, config._dayOfYear);
2602            config._a[MONTH] = date.getUTCMonth();
2603            config._a[DATE] = date.getUTCDate();
2604        }
2605
2606        // Default to current date.
2607        // * if no year, month, day of month are given, default to today
2608        // * if day of month is given, default month and year
2609        // * if month is given, default only year
2610        // * if year is given, don't default anything
2611        for (i = 0; i < 3 && config._a[i] == null; ++i) {
2612            config._a[i] = input[i] = currentDate[i];
2613        }
2614
2615        // Zero out whatever was not defaulted, including time
2616        for (; i < 7; i++) {
2617            config._a[i] = input[i] =
2618                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
2619        }
2620
2621        // Check for 24:00:00.000
2622        if (
2623            config._a[HOUR] === 24 &&
2624            config._a[MINUTE] === 0 &&
2625            config._a[SECOND] === 0 &&
2626            config._a[MILLISECOND] === 0
2627        ) {
2628            config._nextDay = true;
2629            config._a[HOUR] = 0;
2630        }
2631
2632        config._d = (config._useUTC ? createUTCDate : createDate).apply(
2633            null,
2634            input
2635        );
2636        expectedWeekday = config._useUTC
2637            ? config._d.getUTCDay()
2638            : config._d.getDay();
2639
2640        // Apply timezone offset from input. The actual utcOffset can be changed
2641        // with parseZone.
2642        if (config._tzm != null) {
2643            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2644        }
2645
2646        if (config._nextDay) {
2647            config._a[HOUR] = 24;
2648        }
2649
2650        // check for mismatching day of week
2651        if (
2652            config._w &&
2653            typeof config._w.d !== 'undefined' &&
2654            config._w.d !== expectedWeekday
2655        ) {
2656            getParsingFlags(config).weekdayMismatch = true;
2657        }
2658    }
2659
2660    function dayOfYearFromWeekInfo(config) {
2661        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
2662
2663        w = config._w;
2664        if (w.GG != null || w.W != null || w.E != null) {
2665            dow = 1;
2666            doy = 4;
2667
2668            // TODO: We need to take the current isoWeekYear, but that depends on
2669            // how we interpret now (local, utc, fixed offset). So create
2670            // a now version of current config (take local/utc/offset flags, and
2671            // create now).
2672            weekYear = defaults(
2673                w.GG,
2674                config._a[YEAR],
2675                weekOfYear(createLocal(), 1, 4).year
2676            );
2677            week = defaults(w.W, 1);
2678            weekday = defaults(w.E, 1);
2679            if (weekday < 1 || weekday > 7) {
2680                weekdayOverflow = true;
2681            }
2682        } else {
2683            dow = config._locale._week.dow;
2684            doy = config._locale._week.doy;
2685
2686            curWeek = weekOfYear(createLocal(), dow, doy);
2687
2688            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
2689
2690            // Default to current week.
2691            week = defaults(w.w, curWeek.week);
2692
2693            if (w.d != null) {
2694                // weekday -- low day numbers are considered next week
2695                weekday = w.d;
2696                if (weekday < 0 || weekday > 6) {
2697                    weekdayOverflow = true;
2698                }
2699            } else if (w.e != null) {
2700                // local weekday -- counting starts from beginning of week
2701                weekday = w.e + dow;
2702                if (w.e < 0 || w.e > 6) {
2703                    weekdayOverflow = true;
2704                }
2705            } else {
2706                // default to beginning of week
2707                weekday = dow;
2708            }
2709        }
2710        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
2711            getParsingFlags(config)._overflowWeeks = true;
2712        } else if (weekdayOverflow != null) {
2713            getParsingFlags(config)._overflowWeekday = true;
2714        } else {
2715            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
2716            config._a[YEAR] = temp.year;
2717            config._dayOfYear = temp.dayOfYear;
2718        }
2719    }
2720
2721    // constant that refers to the ISO standard
2722    hooks.ISO_8601 = function () {};
2723
2724    // constant that refers to the RFC 2822 form
2725    hooks.RFC_2822 = function () {};
2726
2727    // date from string and format string
2728    function configFromStringAndFormat(config) {
2729        // TODO: Move this to another part of the creation flow to prevent circular deps
2730        if (config._f === hooks.ISO_8601) {
2731            configFromISO(config);
2732            return;
2733        }
2734        if (config._f === hooks.RFC_2822) {
2735            configFromRFC2822(config);
2736            return;
2737        }
2738        config._a = [];
2739        getParsingFlags(config).empty = true;
2740
2741        // This array is used to make a Date, either with `new Date` or `Date.UTC`
2742        var string = '' + config._i,
2743            i,
2744            parsedInput,
2745            tokens,
2746            token,
2747            skipped,
2748            stringLength = string.length,
2749            totalParsedInputLength = 0,
2750            era;
2751
2752        tokens =
2753            expandFormat(config._f, config._locale).match(formattingTokens) || [];
2754
2755        for (i = 0; i < tokens.length; i++) {
2756            token = tokens[i];
2757            parsedInput = (string.match(getParseRegexForToken(token, config)) ||
2758                [])[0];
2759            if (parsedInput) {
2760                skipped = string.substr(0, string.indexOf(parsedInput));
2761                if (skipped.length > 0) {
2762                    getParsingFlags(config).unusedInput.push(skipped);
2763                }
2764                string = string.slice(
2765                    string.indexOf(parsedInput) + parsedInput.length
2766                );
2767                totalParsedInputLength += parsedInput.length;
2768            }
2769            // don't parse if it's not a known token
2770            if (formatTokenFunctions[token]) {
2771                if (parsedInput) {
2772                    getParsingFlags(config).empty = false;
2773                } else {
2774                    getParsingFlags(config).unusedTokens.push(token);
2775                }
2776                addTimeToArrayFromToken(token, parsedInput, config);
2777            } else if (config._strict && !parsedInput) {
2778                getParsingFlags(config).unusedTokens.push(token);
2779            }
2780        }
2781
2782        // add remaining unparsed input length to the string
2783        getParsingFlags(config).charsLeftOver =
2784            stringLength - totalParsedInputLength;
2785        if (string.length > 0) {
2786            getParsingFlags(config).unusedInput.push(string);
2787        }
2788
2789        // clear _12h flag if hour is <= 12
2790        if (
2791            config._a[HOUR] <= 12 &&
2792            getParsingFlags(config).bigHour === true &&
2793            config._a[HOUR] > 0
2794        ) {
2795            getParsingFlags(config).bigHour = undefined;
2796        }
2797
2798        getParsingFlags(config).parsedDateParts = config._a.slice(0);
2799        getParsingFlags(config).meridiem = config._meridiem;
2800        // handle meridiem
2801        config._a[HOUR] = meridiemFixWrap(
2802            config._locale,
2803            config._a[HOUR],
2804            config._meridiem
2805        );
2806
2807        // handle era
2808        era = getParsingFlags(config).era;
2809        if (era !== null) {
2810            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
2811        }
2812
2813        configFromArray(config);
2814        checkOverflow(config);
2815    }
2816
2817    function meridiemFixWrap(locale, hour, meridiem) {
2818        var isPm;
2819
2820        if (meridiem == null) {
2821            // nothing to do
2822            return hour;
2823        }
2824        if (locale.meridiemHour != null) {
2825            return locale.meridiemHour(hour, meridiem);
2826        } else if (locale.isPM != null) {
2827            // Fallback
2828            isPm = locale.isPM(meridiem);
2829            if (isPm && hour < 12) {
2830                hour += 12;
2831            }
2832            if (!isPm && hour === 12) {
2833                hour = 0;
2834            }
2835            return hour;
2836        } else {
2837            // this is not supposed to happen
2838            return hour;
2839        }
2840    }
2841
2842    // date from string and array of format strings
2843    function configFromStringAndArray(config) {
2844        var tempConfig,
2845            bestMoment,
2846            scoreToBeat,
2847            i,
2848            currentScore,
2849            validFormatFound,
2850            bestFormatIsValid = false;
2851
2852        if (config._f.length === 0) {
2853            getParsingFlags(config).invalidFormat = true;
2854            config._d = new Date(NaN);
2855            return;
2856        }
2857
2858        for (i = 0; i < config._f.length; i++) {
2859            currentScore = 0;
2860            validFormatFound = false;
2861            tempConfig = copyConfig({}, config);
2862            if (config._useUTC != null) {
2863                tempConfig._useUTC = config._useUTC;
2864            }
2865            tempConfig._f = config._f[i];
2866            configFromStringAndFormat(tempConfig);
2867
2868            if (isValid(tempConfig)) {
2869                validFormatFound = true;
2870            }
2871
2872            // if there is any input that was not parsed add a penalty for that format
2873            currentScore += getParsingFlags(tempConfig).charsLeftOver;
2874
2875            //or tokens
2876            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
2877
2878            getParsingFlags(tempConfig).score = currentScore;
2879
2880            if (!bestFormatIsValid) {
2881                if (
2882                    scoreToBeat == null ||
2883                    currentScore < scoreToBeat ||
2884                    validFormatFound
2885                ) {
2886                    scoreToBeat = currentScore;
2887                    bestMoment = tempConfig;
2888                    if (validFormatFound) {
2889                        bestFormatIsValid = true;
2890                    }
2891                }
2892            } else {
2893                if (currentScore < scoreToBeat) {
2894                    scoreToBeat = currentScore;
2895                    bestMoment = tempConfig;
2896                }
2897            }
2898        }
2899
2900        extend(config, bestMoment || tempConfig);
2901    }
2902
2903    function configFromObject(config) {
2904        if (config._d) {
2905            return;
2906        }
2907
2908        var i = normalizeObjectUnits(config._i),
2909            dayOrDate = i.day === undefined ? i.date : i.day;
2910        config._a = map(
2911            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
2912            function (obj) {
2913                return obj && parseInt(obj, 10);
2914            }
2915        );
2916
2917        configFromArray(config);
2918    }
2919
2920    function createFromConfig(config) {
2921        var res = new Moment(checkOverflow(prepareConfig(config)));
2922        if (res._nextDay) {
2923            // Adding is smart enough around DST
2924            res.add(1, 'd');
2925            res._nextDay = undefined;
2926        }
2927
2928        return res;
2929    }
2930
2931    function prepareConfig(config) {
2932        var input = config._i,
2933            format = config._f;
2934
2935        config._locale = config._locale || getLocale(config._l);
2936
2937        if (input === null || (format === undefined && input === '')) {
2938            return createInvalid({ nullInput: true });
2939        }
2940
2941        if (typeof input === 'string') {
2942            config._i = input = config._locale.preparse(input);
2943        }
2944
2945        if (isMoment(input)) {
2946            return new Moment(checkOverflow(input));
2947        } else if (isDate(input)) {
2948            config._d = input;
2949        } else if (isArray(format)) {
2950            configFromStringAndArray(config);
2951        } else if (format) {
2952            configFromStringAndFormat(config);
2953        } else {
2954            configFromInput(config);
2955        }
2956
2957        if (!isValid(config)) {
2958            config._d = null;
2959        }
2960
2961        return config;
2962    }
2963
2964    function configFromInput(config) {
2965        var input = config._i;
2966        if (isUndefined(input)) {
2967            config._d = new Date(hooks.now());
2968        } else if (isDate(input)) {
2969            config._d = new Date(input.valueOf());
2970        } else if (typeof input === 'string') {
2971            configFromString(config);
2972        } else if (isArray(input)) {
2973            config._a = map(input.slice(0), function (obj) {
2974                return parseInt(obj, 10);
2975            });
2976            configFromArray(config);
2977        } else if (isObject(input)) {
2978            configFromObject(config);
2979        } else if (isNumber(input)) {
2980            // from milliseconds
2981            config._d = new Date(input);
2982        } else {
2983            hooks.createFromInputFallback(config);
2984        }
2985    }
2986
2987    function createLocalOrUTC(input, format, locale, strict, isUTC) {
2988        var c = {};
2989
2990        if (format === true || format === false) {
2991            strict = format;
2992            format = undefined;
2993        }
2994
2995        if (locale === true || locale === false) {
2996            strict = locale;
2997            locale = undefined;
2998        }
2999
3000        if (
3001            (isObject(input) && isObjectEmpty(input)) ||
3002            (isArray(input) && input.length === 0)
3003        ) {
3004            input = undefined;
3005        }
3006        // object construction must be done this way.
3007        // https://github.com/moment/moment/issues/1423
3008        c._isAMomentObject = true;
3009        c._useUTC = c._isUTC = isUTC;
3010        c._l = locale;
3011        c._i = input;
3012        c._f = format;
3013        c._strict = strict;
3014
3015        return createFromConfig(c);
3016    }
3017
3018    function createLocal(input, format, locale, strict) {
3019        return createLocalOrUTC(input, format, locale, strict, false);
3020    }
3021
3022    var prototypeMin = deprecate(
3023            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
3024            function () {
3025                var other = createLocal.apply(null, arguments);
3026                if (this.isValid() && other.isValid()) {
3027                    return other < this ? this : other;
3028                } else {
3029                    return createInvalid();
3030                }
3031            }
3032        ),
3033        prototypeMax = deprecate(
3034            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
3035            function () {
3036                var other = createLocal.apply(null, arguments);
3037                if (this.isValid() && other.isValid()) {
3038                    return other > this ? this : other;
3039                } else {
3040                    return createInvalid();
3041                }
3042            }
3043        );
3044
3045    // Pick a moment m from moments so that m[fn](other) is true for all
3046    // other. This relies on the function fn to be transitive.
3047    //
3048    // moments should either be an array of moment objects or an array, whose
3049    // first element is an array of moment objects.
3050    function pickBy(fn, moments) {
3051        var res, i;
3052        if (moments.length === 1 && isArray(moments[0])) {
3053            moments = moments[0];
3054        }
3055        if (!moments.length) {
3056            return createLocal();
3057        }
3058        res = moments[0];
3059        for (i = 1; i < moments.length; ++i) {
3060            if (!moments[i].isValid() || moments[i][fn](res)) {
3061                res = moments[i];
3062            }
3063        }
3064        return res;
3065    }
3066
3067    // TODO: Use [].sort instead?
3068    function min() {
3069        var args = [].slice.call(arguments, 0);
3070
3071        return pickBy('isBefore', args);
3072    }
3073
3074    function max() {
3075        var args = [].slice.call(arguments, 0);
3076
3077        return pickBy('isAfter', args);
3078    }
3079
3080    var now = function () {
3081        return Date.now ? Date.now() : +new Date();
3082    };
3083
3084    var ordering = [
3085        'year',
3086        'quarter',
3087        'month',
3088        'week',
3089        'day',
3090        'hour',
3091        'minute',
3092        'second',
3093        'millisecond',
3094    ];
3095
3096    function isDurationValid(m) {
3097        var key,
3098            unitHasDecimal = false,
3099            i;
3100        for (key in m) {
3101            if (
3102                hasOwnProp(m, key) &&
3103                !(
3104                    indexOf.call(ordering, key) !== -1 &&
3105                    (m[key] == null || !isNaN(m[key]))
3106                )
3107            ) {
3108                return false;
3109            }
3110        }
3111
3112        for (i = 0; i < ordering.length; ++i) {
3113            if (m[ordering[i]]) {
3114                if (unitHasDecimal) {
3115                    return false; // only allow non-integers for smallest unit
3116                }
3117                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
3118                    unitHasDecimal = true;
3119                }
3120            }
3121        }
3122
3123        return true;
3124    }
3125
3126    function isValid$1() {
3127        return this._isValid;
3128    }
3129
3130    function createInvalid$1() {
3131        return createDuration(NaN);
3132    }
3133
3134    function Duration(duration) {
3135        var normalizedInput = normalizeObjectUnits(duration),
3136            years = normalizedInput.year || 0,
3137            quarters = normalizedInput.quarter || 0,
3138            months = normalizedInput.month || 0,
3139            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
3140            days = normalizedInput.day || 0,
3141            hours = normalizedInput.hour || 0,
3142            minutes = normalizedInput.minute || 0,
3143            seconds = normalizedInput.second || 0,
3144            milliseconds = normalizedInput.millisecond || 0;
3145
3146        this._isValid = isDurationValid(normalizedInput);
3147
3148        // representation for dateAddRemove
3149        this._milliseconds =
3150            +milliseconds +
3151            seconds * 1e3 + // 1000
3152            minutes * 6e4 + // 1000 * 60
3153            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
3154        // Because of dateAddRemove treats 24 hours as different from a
3155        // day when working around DST, we need to store them separately
3156        this._days = +days + weeks * 7;
3157        // It is impossible to translate months into days without knowing
3158        // which months you are are talking about, so we have to store
3159        // it separately.
3160        this._months = +months + quarters * 3 + years * 12;
3161
3162        this._data = {};
3163
3164        this._locale = getLocale();
3165
3166        this._bubble();
3167    }
3168
3169    function isDuration(obj) {
3170        return obj instanceof Duration;
3171    }
3172
3173    function absRound(number) {
3174        if (number < 0) {
3175            return Math.round(-1 * number) * -1;
3176        } else {
3177            return Math.round(number);
3178        }
3179    }
3180
3181    // compare two arrays, return the number of differences
3182    function compareArrays(array1, array2, dontConvert) {
3183        var len = Math.min(array1.length, array2.length),
3184            lengthDiff = Math.abs(array1.length - array2.length),
3185            diffs = 0,
3186            i;
3187        for (i = 0; i < len; i++) {
3188            if (
3189                (dontConvert && array1[i] !== array2[i]) ||
3190                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
3191            ) {
3192                diffs++;
3193            }
3194        }
3195        return diffs + lengthDiff;
3196    }
3197
3198    // FORMATTING
3199
3200    function offset(token, separator) {
3201        addFormatToken(token, 0, 0, function () {
3202            var offset = this.utcOffset(),
3203                sign = '+';
3204            if (offset < 0) {
3205                offset = -offset;
3206                sign = '-';
3207            }
3208            return (
3209                sign +
3210                zeroFill(~~(offset / 60), 2) +
3211                separator +
3212                zeroFill(~~offset % 60, 2)
3213            );
3214        });
3215    }
3216
3217    offset('Z', ':');
3218    offset('ZZ', '');
3219
3220    // PARSING
3221
3222    addRegexToken('Z', matchShortOffset);
3223    addRegexToken('ZZ', matchShortOffset);
3224    addParseToken(['Z', 'ZZ'], function (input, array, config) {
3225        config._useUTC = true;
3226        config._tzm = offsetFromString(matchShortOffset, input);
3227    });
3228
3229    // HELPERS
3230
3231    // timezone chunker
3232    // '+10:00' > ['10',  '00']
3233    // '-1530'  > ['-15', '30']
3234    var chunkOffset = /([\+\-]|\d\d)/gi;
3235
3236    function offsetFromString(matcher, string) {
3237        var matches = (string || '').match(matcher),
3238            chunk,
3239            parts,
3240            minutes;
3241
3242        if (matches === null) {
3243            return null;
3244        }
3245
3246        chunk = matches[matches.length - 1] || [];
3247        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
3248        minutes = +(parts[1] * 60) + toInt(parts[2]);
3249
3250        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
3251    }
3252
3253    // Return a moment from input, that is local/utc/zone equivalent to model.
3254    function cloneWithOffset(input, model) {
3255        var res, diff;
3256        if (model._isUTC) {
3257            res = model.clone();
3258            diff =
3259                (isMoment(input) || isDate(input)
3260                    ? input.valueOf()
3261                    : createLocal(input).valueOf()) - res.valueOf();
3262            // Use low-level api, because this fn is low-level api.
3263            res._d.setTime(res._d.valueOf() + diff);
3264            hooks.updateOffset(res, false);
3265            return res;
3266        } else {
3267            return createLocal(input).local();
3268        }
3269    }
3270
3271    function getDateOffset(m) {
3272        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
3273        // https://github.com/moment/moment/pull/1871
3274        return -Math.round(m._d.getTimezoneOffset());
3275    }
3276
3277    // HOOKS
3278
3279    // This function will be called whenever a moment is mutated.
3280    // It is intended to keep the offset in sync with the timezone.
3281    hooks.updateOffset = function () {};
3282
3283    // MOMENTS
3284
3285    // keepLocalTime = true means only change the timezone, without
3286    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
3287    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
3288    // +0200, so we adjust the time as needed, to be valid.
3289    //
3290    // Keeping the time actually adds/subtracts (one hour)
3291    // from the actual represented time. That is why we call updateOffset
3292    // a second time. In case it wants us to change the offset again
3293    // _changeInProgress == true case, then we have to adjust, because
3294    // there is no such time in the given timezone.
3295    function getSetOffset(input, keepLocalTime, keepMinutes) {
3296        var offset = this._offset || 0,
3297            localAdjust;
3298        if (!this.isValid()) {
3299            return input != null ? this : NaN;
3300        }
3301        if (input != null) {
3302            if (typeof input === 'string') {
3303                input = offsetFromString(matchShortOffset, input);
3304                if (input === null) {
3305                    return this;
3306                }
3307            } else if (Math.abs(input) < 16 && !keepMinutes) {
3308                input = input * 60;
3309            }
3310            if (!this._isUTC && keepLocalTime) {
3311                localAdjust = getDateOffset(this);
3312            }
3313            this._offset = input;
3314            this._isUTC = true;
3315            if (localAdjust != null) {
3316                this.add(localAdjust, 'm');
3317            }
3318            if (offset !== input) {
3319                if (!keepLocalTime || this._changeInProgress) {
3320                    addSubtract(
3321                        this,
3322                        createDuration(input - offset, 'm'),
3323                        1,
3324                        false
3325                    );
3326                } else if (!this._changeInProgress) {
3327                    this._changeInProgress = true;
3328                    hooks.updateOffset(this, true);
3329                    this._changeInProgress = null;
3330                }
3331            }
3332            return this;
3333        } else {
3334            return this._isUTC ? offset : getDateOffset(this);
3335        }
3336    }
3337
3338    function getSetZone(input, keepLocalTime) {
3339        if (input != null) {
3340            if (typeof input !== 'string') {
3341                input = -input;
3342            }
3343
3344            this.utcOffset(input, keepLocalTime);
3345
3346            return this;
3347        } else {
3348            return -this.utcOffset();
3349        }
3350    }
3351
3352    function setOffsetToUTC(keepLocalTime) {
3353        return this.utcOffset(0, keepLocalTime);
3354    }
3355
3356    function setOffsetToLocal(keepLocalTime) {
3357        if (this._isUTC) {
3358            this.utcOffset(0, keepLocalTime);
3359            this._isUTC = false;
3360
3361            if (keepLocalTime) {
3362                this.subtract(getDateOffset(this), 'm');
3363            }
3364        }
3365        return this;
3366    }
3367
3368    function setOffsetToParsedOffset() {
3369        if (this._tzm != null) {
3370            this.utcOffset(this._tzm, false, true);
3371        } else if (typeof this._i === 'string') {
3372            var tZone = offsetFromString(matchOffset, this._i);
3373            if (tZone != null) {
3374                this.utcOffset(tZone);
3375            } else {
3376                this.utcOffset(0, true);
3377            }
3378        }
3379        return this;
3380    }
3381
3382    function hasAlignedHourOffset(input) {
3383        if (!this.isValid()) {
3384            return false;
3385        }
3386        input = input ? createLocal(input).utcOffset() : 0;
3387
3388        return (this.utcOffset() - input) % 60 === 0;
3389    }
3390
3391    function isDaylightSavingTime() {
3392        return (
3393            this.utcOffset() > this.clone().month(0).utcOffset() ||
3394            this.utcOffset() > this.clone().month(5).utcOffset()
3395        );
3396    }
3397
3398    function isDaylightSavingTimeShifted() {
3399        if (!isUndefined(this._isDSTShifted)) {
3400            return this._isDSTShifted;
3401        }
3402
3403        var c = {},
3404            other;
3405
3406        copyConfig(c, this);
3407        c = prepareConfig(c);
3408
3409        if (c._a) {
3410            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
3411            this._isDSTShifted =
3412                this.isValid() && compareArrays(c._a, other.toArray()) > 0;
3413        } else {
3414            this._isDSTShifted = false;
3415        }
3416
3417        return this._isDSTShifted;
3418    }
3419
3420    function isLocal() {
3421        return this.isValid() ? !this._isUTC : false;
3422    }
3423
3424    function isUtcOffset() {
3425        return this.isValid() ? this._isUTC : false;
3426    }
3427
3428    function isUtc() {
3429        return this.isValid() ? this._isUTC && this._offset === 0 : false;
3430    }
3431
3432    // ASP.NET json date format regex
3433    var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
3434        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
3435        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
3436        // and further modified to allow for strings containing both week and day
3437        isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
3438
3439    function createDuration(input, key) {
3440        var duration = input,
3441            // matching against regexp is expensive, do it on demand
3442            match = null,
3443            sign,
3444            ret,
3445            diffRes;
3446
3447        if (isDuration(input)) {
3448            duration = {
3449                ms: input._milliseconds,
3450                d: input._days,
3451                M: input._months,
3452            };
3453        } else if (isNumber(input) || !isNaN(+input)) {
3454            duration = {};
3455            if (key) {
3456                duration[key] = +input;
3457            } else {
3458                duration.milliseconds = +input;
3459            }
3460        } else if ((match = aspNetRegex.exec(input))) {
3461            sign = match[1] === '-' ? -1 : 1;
3462            duration = {
3463                y: 0,
3464                d: toInt(match[DATE]) * sign,
3465                h: toInt(match[HOUR]) * sign,
3466                m: toInt(match[MINUTE]) * sign,
3467                s: toInt(match[SECOND]) * sign,
3468                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
3469            };
3470        } else if ((match = isoRegex.exec(input))) {
3471            sign = match[1] === '-' ? -1 : 1;
3472            duration = {
3473                y: parseIso(match[2], sign),
3474                M: parseIso(match[3], sign),
3475                w: parseIso(match[4], sign),
3476                d: parseIso(match[5], sign),
3477                h: parseIso(match[6], sign),
3478                m: parseIso(match[7], sign),
3479                s: parseIso(match[8], sign),
3480            };
3481        } else if (duration == null) {
3482            // checks for null or undefined
3483            duration = {};
3484        } else if (
3485            typeof duration === 'object' &&
3486            ('from' in duration || 'to' in duration)
3487        ) {
3488            diffRes = momentsDifference(
3489                createLocal(duration.from),
3490                createLocal(duration.to)
3491            );
3492
3493            duration = {};
3494            duration.ms = diffRes.milliseconds;
3495            duration.M = diffRes.months;
3496        }
3497
3498        ret = new Duration(duration);
3499
3500        if (isDuration(input) && hasOwnProp(input, '_locale')) {
3501            ret._locale = input._locale;
3502        }
3503
3504        if (isDuration(input) && hasOwnProp(input, '_isValid')) {
3505            ret._isValid = input._isValid;
3506        }
3507
3508        return ret;
3509    }
3510
3511    createDuration.fn = Duration.prototype;
3512    createDuration.invalid = createInvalid$1;
3513
3514    function parseIso(inp, sign) {
3515        // We'd normally use ~~inp for this, but unfortunately it also
3516        // converts floats to ints.
3517        // inp may be undefined, so careful calling replace on it.
3518        var res = inp && parseFloat(inp.replace(',', '.'));
3519        // apply sign while we're at it
3520        return (isNaN(res) ? 0 : res) * sign;
3521    }
3522
3523    function positiveMomentsDifference(base, other) {
3524        var res = {};
3525
3526        res.months =
3527            other.month() - base.month() + (other.year() - base.year()) * 12;
3528        if (base.clone().add(res.months, 'M').isAfter(other)) {
3529            --res.months;
3530        }
3531
3532        res.milliseconds = +other - +base.clone().add(res.months, 'M');
3533
3534        return res;
3535    }
3536
3537    function momentsDifference(base, other) {
3538        var res;
3539        if (!(base.isValid() && other.isValid())) {
3540            return { milliseconds: 0, months: 0 };
3541        }
3542
3543        other = cloneWithOffset(other, base);
3544        if (base.isBefore(other)) {
3545            res = positiveMomentsDifference(base, other);
3546        } else {
3547            res = positiveMomentsDifference(other, base);
3548            res.milliseconds = -res.milliseconds;
3549            res.months = -res.months;
3550        }
3551
3552        return res;
3553    }
3554
3555    // TODO: remove 'name' arg after deprecation is removed
3556    function createAdder(direction, name) {
3557        return function (val, period) {
3558            var dur, tmp;
3559            //invert the arguments, but complain about it
3560            if (period !== null && !isNaN(+period)) {
3561                deprecateSimple(
3562                    name,
3563                    'moment().' +
3564                        name +
3565                        '(period, number) is deprecated. Please use moment().' +
3566                        name +
3567                        '(number, period). ' +
3568                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
3569                );
3570                tmp = val;
3571                val = period;
3572                period = tmp;
3573            }
3574
3575            dur = createDuration(val, period);
3576            addSubtract(this, dur, direction);
3577            return this;
3578        };
3579    }
3580
3581    function addSubtract(mom, duration, isAdding, updateOffset) {
3582        var milliseconds = duration._milliseconds,
3583            days = absRound(duration._days),
3584            months = absRound(duration._months);
3585
3586        if (!mom.isValid()) {
3587            // No op
3588            return;
3589        }
3590
3591        updateOffset = updateOffset == null ? true : updateOffset;
3592
3593        if (months) {
3594            setMonth(mom, get(mom, 'Month') + months * isAdding);
3595        }
3596        if (days) {
3597            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
3598        }
3599        if (milliseconds) {
3600            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
3601        }
3602        if (updateOffset) {
3603            hooks.updateOffset(mom, days || months);
3604        }
3605    }
3606
3607    var add = createAdder(1, 'add'),
3608        subtract = createAdder(-1, 'subtract');
3609
3610    function isString(input) {
3611        return typeof input === 'string' || input instanceof String;
3612    }
3613
3614    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
3615    function isMomentInput(input) {
3616        return (
3617            isMoment(input) ||
3618            isDate(input) ||
3619            isString(input) ||
3620            isNumber(input) ||
3621            isNumberOrStringArray(input) ||
3622            isMomentInputObject(input) ||
3623            input === null ||
3624            input === undefined
3625        );
3626    }
3627
3628    function isMomentInputObject(input) {
3629        var objectTest = isObject(input) && !isObjectEmpty(input),
3630            propertyTest = false,
3631            properties = [
3632                'years',
3633                'year',
3634                'y',
3635                'months',
3636                'month',
3637                'M',
3638                'days',
3639                'day',
3640                'd',
3641                'dates',
3642                'date',
3643                'D',
3644                'hours',
3645                'hour',
3646                'h',
3647                'minutes',
3648                'minute',
3649                'm',
3650                'seconds',
3651                'second',
3652                's',
3653                'milliseconds',
3654                'millisecond',
3655                'ms',
3656            ],
3657            i,
3658            property;
3659
3660        for (i = 0; i < properties.length; i += 1) {
3661            property = properties[i];
3662            propertyTest = propertyTest || hasOwnProp(input, property);
3663        }
3664
3665        return objectTest && propertyTest;
3666    }
3667
3668    function isNumberOrStringArray(input) {
3669        var arrayTest = isArray(input),
3670            dataTypeTest = false;
3671        if (arrayTest) {
3672            dataTypeTest =
3673                input.filter(function (item) {
3674                    return !isNumber(item) && isString(input);
3675                }).length === 0;
3676        }
3677        return arrayTest && dataTypeTest;
3678    }
3679
3680    function isCalendarSpec(input) {
3681        var objectTest = isObject(input) && !isObjectEmpty(input),
3682            propertyTest = false,
3683            properties = [
3684                'sameDay',
3685                'nextDay',
3686                'lastDay',
3687                'nextWeek',
3688                'lastWeek',
3689                'sameElse',
3690            ],
3691            i,
3692            property;
3693
3694        for (i = 0; i < properties.length; i += 1) {
3695            property = properties[i];
3696            propertyTest = propertyTest || hasOwnProp(input, property);
3697        }
3698
3699        return objectTest && propertyTest;
3700    }
3701
3702    function getCalendarFormat(myMoment, now) {
3703        var diff = myMoment.diff(now, 'days', true);
3704        return diff < -6
3705            ? 'sameElse'
3706            : diff < -1
3707            ? 'lastWeek'
3708            : diff < 0
3709            ? 'lastDay'
3710            : diff < 1
3711            ? 'sameDay'
3712            : diff < 2
3713            ? 'nextDay'
3714            : diff < 7
3715            ? 'nextWeek'
3716            : 'sameElse';
3717    }
3718
3719    function calendar$1(time, formats) {
3720        // Support for single parameter, formats only overload to the calendar function
3721        if (arguments.length === 1) {
3722            if (
3722!arguments[0]) {
3723                time = undefined;
3724                formats = undefined;
3725            } else
vendor: 21,292 bytes, lines 3725-4403
3725 if (isMomentInput(arguments[0])) {
3726                time = arguments[0];
3727                formats = undefined;
3728            } else if (isCalendarSpec(arguments[0])) {
3729                formats = arguments[0];
3730                time = undefined;
3731            }
3732        }
3733        // We want to compare the start of today, vs this.
3734        // Getting start-of-today depends on whether we're local/utc/offset or not.
3735        var now = time || createLocal(),
3736            sod = cloneWithOffset(now, this).startOf('day'),
3737            format = hooks.calendarFormat(this, sod) || 'sameElse',
3738            output =
3739                formats &&
3740                (isFunction(formats[format])
3741                    ? formats[format].call(this, now)
3742                    : formats[format]);
3743
3744        return this.format(
3745            output || this.localeData().calendar(format, this, createLocal(now))
3746        );
3747    }
3748
3749    function clone() {
3750        return new Moment(this);
3751    }
3752
3753    function isAfter(input, units) {
3754        var localInput = isMoment(input) ? input : createLocal(input);
3755        if (!(this.isValid() && localInput.isValid())) {
3756            return false;
3757        }
3758        units = normalizeUnits(units) || 'millisecond';
3759        if (units === 'millisecond') {
3760            return this.valueOf() > localInput.valueOf();
3761        } else {
3762            return localInput.valueOf() < this.clone().startOf(units).valueOf();
3763        }
3764    }
3765
3766    function isBefore(input, units) {
3767        var localInput = isMoment(input) ? input : createLocal(input);
3768        if (!(this.isValid() && localInput.isValid())) {
3769            return false;
3770        }
3771        units = normalizeUnits(units) || 'millisecond';
3772        if (units === 'millisecond') {
3773            return this.valueOf() < localInput.valueOf();
3774        } else {
3775            return this.clone().endOf(units).valueOf() < localInput.valueOf();
3776        }
3777    }
3778
3779    function isBetween(from, to, units, inclusivity) {
3780        var localFrom = isMoment(from) ? from : createLocal(from),
3781            localTo = isMoment(to) ? to : createLocal(to);
3782        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
3783            return false;
3784        }
3785        inclusivity = inclusivity || '()';
3786        return (
3787            (inclusivity[0] === '('
3788                ? this.isAfter(localFrom, units)
3789                : !this.isBefore(localFrom, units)) &&
3790            (inclusivity[1] === ')'
3791                ? this.isBefore(localTo, units)
3792                : !this.isAfter(localTo, units))
3793        );
3794    }
3795
3796    function isSame(input, units) {
3797        var localInput = isMoment(input) ? input : createLocal(input),
3798            inputMs;
3799        if (!(this.isValid() && localInput.isValid())) {
3800            return false;
3801        }
3802        units = normalizeUnits(units) || 'millisecond';
3803        if (units === 'millisecond') {
3804            return this.valueOf() === localInput.valueOf();
3805        } else {
3806            inputMs = localInput.valueOf();
3807            return (
3808                this.clone().startOf(units).valueOf() <= inputMs &&
3809                inputMs <= this.clone().endOf(units).valueOf()
3810            );
3811        }
3812    }
3813
3814    function isSameOrAfter(input, units) {
3815        return this.isSame(input, units) || this.isAfter(input, units);
3816    }
3817
3818    function isSameOrBefore(input, units) {
3819        return this.isSame(input, units) || this.isBefore(input, units);
3820    }
3821
3822    function diff(input, units, asFloat) {
3823        var that, zoneDelta, output;
3824
3825        if (!this.isValid()) {
3826            return NaN;
3827        }
3828
3829        that = cloneWithOffset(input, this);
3830
3831        if (!that.isValid()) {
3832            return NaN;
3833        }
3834
3835        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
3836
3837        units = normalizeUnits(units);
3838
3839        switch (units) {
3840            case 'year':
3841                output = monthDiff(this, that) / 12;
3842                break;
3843            case 'month':
3844                output = monthDiff(this, that);
3845                break;
3846            case 'quarter':
3847                output = monthDiff(this, that) / 3;
3848                break;
3849            case 'second':
3850                output = (this - that) / 1e3;
3851                break; // 1000
3852            case 'minute':
3853                output = (this - that) / 6e4;
3854                break; // 1000 * 60
3855            case 'hour':
3856                output = (this - that) / 36e5;
3857                break; // 1000 * 60 * 60
3858            case 'day':
3859                output = (this - that - zoneDelta) / 864e5;
3860                break; // 1000 * 60 * 60 * 24, negate dst
3861            case 'week':
3862                output = (this - that - zoneDelta) / 6048e5;
3863                break; // 1000 * 60 * 60 * 24 * 7, negate dst
3864            default:
3865                output = this - that;
3866        }
3867
3868        return asFloat ? output : absFloor(output);
3869    }
3870
3871    function monthDiff(a, b) {
3872        if (a.date() < b.date()) {
3873            // end-of-month calculations work correct when the start month has more
3874            // days than the end month.
3875            return -monthDiff(b, a);
3876        }
3877        // difference in months
3878        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
3879            // b is in (anchor - 1 month, anchor + 1 month)
3880            anchor = a.clone().add(wholeMonthDiff, 'months'),
3881            anchor2,
3882            adjust;
3883
3884        if (b - anchor < 0) {
3885            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
3886            // linear across the month
3887            adjust = (b - anchor) / (anchor - anchor2);
3888        } else {
3889            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
3890            // linear across the month
3891            adjust = (b - anchor) / (anchor2 - anchor);
3892        }
3893
3894        //check for negative zero, return zero if negative zero
3895        return -(wholeMonthDiff + adjust) || 0;
3896    }
3897
3898    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
3899    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
3900
3901    function toString() {
3902        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
3903    }
3904
3905    function toISOString(keepOffset) {
3906        if (!this.isValid()) {
3907            return null;
3908        }
3909        var utc = keepOffset !== true,
3910            m = utc ? this.clone().utc() : this;
3911        if (m.year() < 0 || m.year() > 9999) {
3912            return formatMoment(
3913                m,
3914                utc
3915                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
3916                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
3917            );
3918        }
3919        if (isFunction(Date.prototype.toISOString)) {
3920            // native implementation is ~50x faster, use it when we can
3921            if (utc) {
3922                return this.toDate().toISOString();
3923            } else {
3924                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
3925                    .toISOString()
3926                    .replace('Z', formatMoment(m, 'Z'));
3927            }
3928        }
3929        return formatMoment(
3930            m,
3931            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
3932        );
3933    }
3934
3935    /**
3936     * Return a human readable representation of a moment that can
3937     * also be evaluated to get a new moment which is the same
3938     *
3939     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
3940     */
3941    function inspect() {
3942        if (!this.isValid()) {
3943            return 'moment.invalid(/* ' + this._i + ' */)';
3944        }
3945        var func = 'moment',
3946            zone = '',
3947            prefix,
3948            year,
3949            datetime,
3950            suffix;
3951        if (!this.isLocal()) {
3952            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
3953            zone = 'Z';
3954        }
3955        prefix = '[' + func + '("]';
3956        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
3957        datetime = '-MM-DD[T]HH:mm:ss.SSS';
3958        suffix = zone + '[")]';
3959
3960        return this.format(prefix + year + datetime + suffix);
3961    }
3962
3963    function format(inputString) {
3964        if (!inputString) {
3965            inputString = this.isUtc()
3966                ? hooks.defaultFormatUtc
3967                : hooks.defaultFormat;
3968        }
3969        var output = formatMoment(this, inputString);
3970        return this.localeData().postformat(output);
3971    }
3972
3973    function from(time, withoutSuffix) {
3974        if (
3975            this.isValid() &&
3976            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
3977        ) {
3978            return createDuration({ to: this, from: time })
3979                .locale(this.locale())
3980                .humanize(!withoutSuffix);
3981        } else {
3982            return this.localeData().invalidDate();
3983        }
3984    }
3985
3986    function fromNow(withoutSuffix) {
3987        return this.from(createLocal(), withoutSuffix);
3988    }
3989
3990    function to(time, withoutSuffix) {
3991        if (
3992            this.isValid() &&
3993            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
3994        ) {
3995            return createDuration({ from: this, to: time })
3996                .locale(this.locale())
3997                .humanize(!withoutSuffix);
3998        } else {
3999            return this.localeData().invalidDate();
4000        }
4001    }
4002
4003    function toNow(withoutSuffix) {
4004        return this.to(createLocal(), withoutSuffix);
4005    }
4006
4007    // If passed a locale key, it will set the locale for this
4008    // instance.  Otherwise, it will return the locale configuration
4009    // variables for this instance.
4010    function locale(key) {
4011        var newLocaleData;
4012
4013        if (key === undefined) {
4014            return this._locale._abbr;
4015        } else {
4016            newLocaleData = getLocale(key);
4017            if (newLocaleData != null) {
4018                this._locale = newLocaleData;
4019            }
4020            return this;
4021        }
4022    }
4023
4024    var lang = deprecate(
4025        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
4026        function (key) {
4027            if (key === undefined) {
4028                return this.localeData();
4029            } else {
4030                return this.locale(key);
4031            }
4032        }
4033    );
4034
4035    function localeData() {
4036        return this._locale;
4037    }
4038
4039    var MS_PER_SECOND = 1000,
4040        MS_PER_MINUTE = 60 * MS_PER_SECOND,
4041        MS_PER_HOUR = 60 * MS_PER_MINUTE,
4042        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
4043
4044    // actual modulo - handles negative numbers (for dates before 1970):
4045    function mod$1(dividend, divisor) {
4046        return ((dividend % divisor) + divisor) % divisor;
4047    }
4048
4049    function localStartOfDate(y, m, d) {
4050        // the date constructor remaps years 0-99 to 1900-1999
4051        if (y < 100 && y >= 0) {
4052            // preserve leap years using a full 400 year cycle, then reset
4053            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
4054        } else {
4055            return new Date(y, m, d).valueOf();
4056        }
4057    }
4058
4059    function utcStartOfDate(y, m, d) {
4060        // Date.UTC remaps years 0-99 to 1900-1999
4061        if (y < 100 && y >= 0) {
4062            // preserve leap years using a full 400 year cycle, then reset
4063            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
4064        } else {
4065            return Date.UTC(y, m, d);
4066        }
4067    }
4068
4069    function startOf(units) {
4070        var time, startOfDate;
4071        units = normalizeUnits(units);
4072        if (units === undefined || units === 'millisecond' || !this.isValid()) {
4073            return this;
4074        }
4075
4076        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
4077
4078        switch (units) {
4079            case 'year':
4080                time = startOfDate(this.year(), 0, 1);
4081                break;
4082            case 'quarter':
4083                time = startOfDate(
4084                    this.year(),
4085                    this.month() - (this.month() % 3),
4086                    1
4087                );
4088                break;
4089            case 'month':
4090                time = startOfDate(this.year(), this.month(), 1);
4091                break;
4092            case 'week':
4093                time = startOfDate(
4094                    this.year(),
4095                    this.month(),
4096                    this.date() - this.weekday()
4097                );
4098                break;
4099            case 'isoWeek':
4100                time = startOfDate(
4101                    this.year(),
4102                    this.month(),
4103                    this.date() - (this.isoWeekday() - 1)
4104                );
4105                break;
4106            case 'day':
4107            case 'date':
4108                time = startOfDate(this.year(), this.month(), this.date());
4109                break;
4110            case 'hour':
4111                time = this._d.valueOf();
4112                time -= mod$1(
4113                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
4114                    MS_PER_HOUR
4115                );
4116                break;
4117            case 'minute':
4118                time = this._d.valueOf();
4119                time -= mod$1(time, MS_PER_MINUTE);
4120                break;
4121            case 'second':
4122                time = this._d.valueOf();
4123                time -= mod$1(time, MS_PER_SECOND);
4124                break;
4125        }
4126
4127        this._d.setTime(time);
4128        hooks.updateOffset(this, true);
4129        return this;
4130    }
4131
4132    function endOf(units) {
4133        var time, startOfDate;
4134        units = normalizeUnits(units);
4135        if (units === undefined || units === 'millisecond' || !this.isValid()) {
4136            return this;
4137        }
4138
4139        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
4140
4141        switch (units) {
4142            case 'year':
4143                time = startOfDate(this.year() + 1, 0, 1) - 1;
4144                break;
4145            case 'quarter':
4146                time =
4147                    startOfDate(
4148                        this.year(),
4149                        this.month() - (this.month() % 3) + 3,
4150                        1
4151                    ) - 1;
4152                break;
4153            case 'month':
4154                time = startOfDate(this.year(), this.month() + 1, 1) - 1;
4155                break;
4156            case 'week':
4157                time =
4158                    startOfDate(
4159                        this.year(),
4160                        this.month(),
4161                        this.date() - this.weekday() + 7
4162                    ) - 1;
4163                break;
4164            case 'isoWeek':
4165                time =
4166                    startOfDate(
4167                        this.year(),
4168                        this.month(),
4169                        this.date() - (this.isoWeekday() - 1) + 7
4170                    ) - 1;
4171                break;
4172            case 'day':
4173            case 'date':
4174                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
4175                break;
4176            case 'hour':
4177                time = this._d.valueOf();
4178                time +=
4179                    MS_PER_HOUR -
4180                    mod$1(
4181                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
4182                        MS_PER_HOUR
4183                    ) -
4184                    1;
4185                break;
4186            case 'minute':
4187                time = this._d.valueOf();
4188                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
4189                break;
4190            case 'second':
4191                time = this._d.valueOf();
4192                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
4193                break;
4194        }
4195
4196        this._d.setTime(time);
4197        hooks.updateOffset(this, true);
4198        return this;
4199    }
4200
4201    function valueOf() {
4202        return this._d.valueOf() - (this._offset || 0) * 60000;
4203    }
4204
4205    function unix() {
4206        return Math.floor(this.valueOf() / 1000);
4207    }
4208
4209    function toDate() {
4210        return new Date(this.valueOf());
4211    }
4212
4213    function toArray() {
4214        var m = this;
4215        return [
4216            m.year(),
4217            m.month(),
4218            m.date(),
4219            m.hour(),
4220            m.minute(),
4221            m.second(),
4222            m.millisecond(),
4223        ];
4224    }
4225
4226    function toObject() {
4227        var m = this;
4228        return {
4229            years: m.year(),
4230            months: m.month(),
4231            date: m.date(),
4232            hours: m.hours(),
4233            minutes: m.minutes(),
4234            seconds: m.seconds(),
4235            milliseconds: m.milliseconds(),
4236        };
4237    }
4238
4239    function toJSON() {
4240        // new Date(NaN).toJSON() === null
4241        return this.isValid() ? this.toISOString() : null;
4242    }
4243
4244    function isValid$2() {
4245        return isValid(this);
4246    }
4247
4248    function parsingFlags() {
4249        return extend({}, getParsingFlags(this));
4250    }
4251
4252    function invalidAt() {
4253        return getParsingFlags(this).overflow;
4254    }
4255
4256    function creationData() {
4257        return {
4258            input: this._i,
4259            format: this._f,
4260            locale: this._locale,
4261            isUTC: this._isUTC,
4262            strict: this._strict,
4263        };
4264    }
4265
4266    addFormatToken('N', 0, 0, 'eraAbbr');
4267    addFormatToken('NN', 0, 0, 'eraAbbr');
4268    addFormatToken('NNN', 0, 0, 'eraAbbr');
4269    addFormatToken('NNNN', 0, 0, 'eraName');
4270    addFormatToken('NNNNN', 0, 0, 'eraNarrow');
4271
4272    addFormatToken('y', ['y', 1], 'yo', 'eraYear');
4273    addFormatToken('y', ['yy', 2], 0, 'eraYear');
4274    addFormatToken('y', ['yyy', 3], 0, 'eraYear');
4275    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
4276
4277    addRegexToken('N', matchEraAbbr);
4278    addRegexToken('NN', matchEraAbbr);
4279    addRegexToken('NNN', matchEraAbbr);
4280    addRegexToken('NNNN', matchEraName);
4281    addRegexToken('NNNNN', matchEraNarrow);
4282
4283    addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (
4284        input,
4285        array,
4286        config,
4287        token
4288    ) {
4289        var era = config._locale.erasParse(input, token, config._strict);
4290        if (era) {
4291            getParsingFlags(config).era = era;
4292        } else {
4293            getParsingFlags(config).invalidEra = input;
4294        }
4295    });
4296
4297    addRegexToken('y', matchUnsigned);
4298    addRegexToken('yy', matchUnsigned);
4299    addRegexToken('yyy', matchUnsigned);
4300    addRegexToken('yyyy', matchUnsigned);
4301    addRegexToken('yo', matchEraYearOrdinal);
4302
4303    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
4304    addParseToken(['yo'], function (input, array, config, token) {
4305        var match;
4306        if (config._locale._eraYearOrdinalRegex) {
4307            match = input.match(config._locale._eraYearOrdinalRegex);
4308        }
4309
4310        if (config._locale.eraYearOrdinalParse) {
4311            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
4312        } else {
4313            array[YEAR] = parseInt(input, 10);
4314        }
4315    });
4316
4317    function localeEras(m, format) {
4318        var i,
4319            l,
4320            date,
4321            eras = this._eras || getLocale('en')._eras;
4322        for (i = 0, l = eras.length; i < l; ++i) {
4323            switch (typeof eras[i].since) {
4324                case 'string':
4325                    // truncate time
4326                    date = hooks(eras[i].since).startOf('day');
4327                    eras[i].since = date.valueOf();
4328                    break;
4329            }
4330
4331            switch (typeof eras[i].until) {
4332                case 'undefined':
4333                    eras[i].until = +Infinity;
4334                    break;
4335                case 'string':
4336                    // truncate time
4337                    date = hooks(eras[i].until).startOf('day').valueOf();
4338                    eras[i].until = date.valueOf();
4339                    break;
4340            }
4341        }
4342        return eras;
4343    }
4344
4345    function localeErasParse(eraName, format, strict) {
4346        var i,
4347            l,
4348            eras = this.eras(),
4349            name,
4350            abbr,
4351            narrow;
4352        eraName = eraName.toUpperCase();
4353
4354        for (i = 0, l = eras.length; i < l; ++i) {
4355            name = eras[i].name.toUpperCase();
4356            abbr = eras[i].abbr.toUpperCase();
4357            narrow = eras[i].narrow.toUpperCase();
4358
4359            if (strict) {
4360                switch (format) {
4361                    case 'N':
4362                    case 'NN':
4363                    case 'NNN':
4364                        if (abbr === eraName) {
4365                            return eras[i];
4366                        }
4367                        break;
4368
4369                    case 'NNNN':
4370                        if (name === eraName) {
4371                            return eras[i];
4372                        }
4373                        break;
4374
4375                    case 'NNNNN':
4376                        if (narrow === eraName) {
4377                            return eras[i];
4378                        }
4379                        break;
4380                }
4381            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
4382                return eras[i];
4383            }
4384        }
4385    }
4386
4387    function localeErasConvertYear(era, year) {
4388        var dir = era.since <= era.until ? +1 : -1;
4389        if (year === undefined) {
4390            return hooks(era.since).year();
4391        } else {
4392            return hooks(era.since).year() + (year - era.offset) * dir;
4393        }
4394    }
4395
4396    function getEraName() {
4397        var i,
4398            l,
4399            val,
4400            eras = this.localeData().eras();
4401        for (i = 0, l = eras.length; i < l; ++i) {
4402            // truncate time
4403            val = this.
vendor: 1,666 bytes, lines 4403-4466
4403clone().startOf('day').valueOf();
4404
4405            if (eras[i].since <= val && val <= eras[i].until) {
4406                return eras[i].name;
4407            }
4408            if (eras[i].until <= val && val <= eras[i].since) {
4409                return eras[i].name;
4410            }
4411        }
4412
4413        return '';
4414    }
4415
4416    function getEraNarrow() {
4417        var i,
4418            l,
4419            val,
4420            eras = this.localeData().eras();
4421        for (i = 0, l = eras.length; i < l; ++i) {
4422            // truncate time
4423            val = this.clone().startOf('day').valueOf();
4424
4425            if (eras[i].since <= val && val <= eras[i].until) {
4426                return eras[i].narrow;
4427            }
4428            if (eras[i].until <= val && val <= eras[i].since) {
4429                return eras[i].narrow;
4430            }
4431        }
4432
4433        return '';
4434    }
4435
4436    function getEraAbbr() {
4437        var i,
4438            l,
4439            val,
4440            eras = this.localeData().eras();
4441        for (i = 0, l = eras.length; i < l; ++i) {
4442            // truncate time
4443            val = this.clone().startOf('day').valueOf();
4444
4445            if (eras[i].since <= val && val <= eras[i].until) {
4446                return eras[i].abbr;
4447            }
4448            if (eras[i].until <= val && val <= eras[i].since) {
4449                return eras[i].abbr;
4450            }
4451        }
4452
4453        return '';
4454    }
4455
4456    function getEraYear() {
4457        var i,
4458            l,
4459            dir,
4460            val,
4461            eras = this.localeData().eras();
4462        for (i = 0, l = eras.length; i < l; ++i) {
4463            dir = eras[i].since <= eras[i].until ? +1 : -1;
4464
4465            // truncate time
4466            val = this.clone()
vendor: 33,286 bytes, lines 4466-5617
4466.startOf('day').valueOf();
4467
4468            if (
4469                (eras[i].since <= val && val <= eras[i].until) ||
4470                (eras[i].until <= val && val <= eras[i].since)
4471            ) {
4472                return (
4473                    (this.year() - hooks(eras[i].since).year()) * dir +
4474                    eras[i].offset
4475                );
4476            }
4477        }
4478
4479        return this.year();
4480    }
4481
4482    function erasNameRegex(isStrict) {
4483        if (!hasOwnProp(this, '_erasNameRegex')) {
4484            computeErasParse.call(this);
4485        }
4486        return isStrict ? this._erasNameRegex : this._erasRegex;
4487    }
4488
4489    function erasAbbrRegex(isStrict) {
4490        if (!hasOwnProp(this, '_erasAbbrRegex')) {
4491            computeErasParse.call(this);
4492        }
4493        return isStrict ? this._erasAbbrRegex : this._erasRegex;
4494    }
4495
4496    function erasNarrowRegex(isStrict) {
4497        if (!hasOwnProp(this, '_erasNarrowRegex')) {
4498            computeErasParse.call(this);
4499        }
4500        return isStrict ? this._erasNarrowRegex : this._erasRegex;
4501    }
4502
4503    function matchEraAbbr(isStrict, locale) {
4504        return locale.erasAbbrRegex(isStrict);
4505    }
4506
4507    function matchEraName(isStrict, locale) {
4508        return locale.erasNameRegex(isStrict);
4509    }
4510
4511    function matchEraNarrow(isStrict, locale) {
4512        return locale.erasNarrowRegex(isStrict);
4513    }
4514
4515    function matchEraYearOrdinal(isStrict, locale) {
4516        return locale._eraYearOrdinalRegex || matchUnsigned;
4517    }
4518
4519    function computeErasParse() {
4520        var abbrPieces = [],
4521            namePieces = [],
4522            narrowPieces = [],
4523            mixedPieces = [],
4524            i,
4525            l,
4526            eras = this.eras();
4527
4528        for (i = 0, l = eras.length; i < l; ++i) {
4529            namePieces.push(regexEscape(eras[i].name));
4530            abbrPieces.push(regexEscape(eras[i].abbr));
4531            narrowPieces.push(regexEscape(eras[i].narrow));
4532
4533            mixedPieces.push(regexEscape(eras[i].name));
4534            mixedPieces.push(regexEscape(eras[i].abbr));
4535            mixedPieces.push(regexEscape(eras[i].narrow));
4536        }
4537
4538        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
4539        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
4540        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
4541        this._erasNarrowRegex = new RegExp(
4542            '^(' + narrowPieces.join('|') + ')',
4543            'i'
4544        );
4545    }
4546
4547    // FORMATTING
4548
4549    addFormatToken(0, ['gg', 2], 0, function () {
4550        return this.weekYear() % 100;
4551    });
4552
4553    addFormatToken(0, ['GG', 2], 0, function () {
4554        return this.isoWeekYear() % 100;
4555    });
4556
4557    function addWeekYearFormatToken(token, getter) {
4558        addFormatToken(0, [token, token.length], 0, getter);
4559    }
4560
4561    addWeekYearFormatToken('gggg', 'weekYear');
4562    addWeekYearFormatToken('ggggg', 'weekYear');
4563    addWeekYearFormatToken('GGGG', 'isoWeekYear');
4564    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
4565
4566    // ALIASES
4567
4568    addUnitAlias('weekYear', 'gg');
4569    addUnitAlias('isoWeekYear', 'GG');
4570
4571    // PRIORITY
4572
4573    addUnitPriority('weekYear', 1);
4574    addUnitPriority('isoWeekYear', 1);
4575
4576    // PARSING
4577
4578    addRegexToken('G', matchSigned);
4579    addRegexToken('g', matchSigned);
4580    addRegexToken('GG', match1to2, match2);
4581    addRegexToken('gg', match1to2, match2);
4582    addRegexToken('GGGG', match1to4, match4);
4583    addRegexToken('gggg', match1to4, match4);
4584    addRegexToken('GGGGG', match1to6, match6);
4585    addRegexToken('ggggg', match1to6, match6);
4586
4587    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (
4588        input,
4589        week,
4590        config,
4591        token
4592    ) {
4593        week[token.substr(0, 2)] = toInt(input);
4594    });
4595
4596    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
4597        week[token] = hooks.parseTwoDigitYear(input);
4598    });
4599
4600    // MOMENTS
4601
4602    function getSetWeekYear(input) {
4603        return getSetWeekYearHelper.call(
4604            this,
4605            input,
4606            this.week(),
4607            this.weekday(),
4608            this.localeData()._week.dow,
4609            this.localeData()._week.doy
4610        );
4611    }
4612
4613    function getSetISOWeekYear(input) {
4614        return getSetWeekYearHelper.call(
4615            this,
4616            input,
4617            this.isoWeek(),
4618            this.isoWeekday(),
4619            1,
4620            4
4621        );
4622    }
4623
4624    function getISOWeeksInYear() {
4625        return weeksInYear(this.year(), 1, 4);
4626    }
4627
4628    function getISOWeeksInISOWeekYear() {
4629        return weeksInYear(this.isoWeekYear(), 1, 4);
4630    }
4631
4632    function getWeeksInYear() {
4633        var weekInfo = this.localeData()._week;
4634        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
4635    }
4636
4637    function getWeeksInWeekYear() {
4638        var weekInfo = this.localeData()._week;
4639        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
4640    }
4641
4642    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
4643        var weeksTarget;
4644        if (input == null) {
4645            return weekOfYear(this, dow, doy).year;
4646        } else {
4647            weeksTarget = weeksInYear(input, dow, doy);
4648            if (week > weeksTarget) {
4649                week = weeksTarget;
4650            }
4651            return setWeekAll.call(this, input, week, weekday, dow, doy);
4652        }
4653    }
4654
4655    function setWeekAll(weekYear, week, weekday, dow, doy) {
4656        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
4657            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
4658
4659        this.year(date.getUTCFullYear());
4660        this.month(date.getUTCMonth());
4661        this.date(date.getUTCDate());
4662        return this;
4663    }
4664
4665    // FORMATTING
4666
4667    addFormatToken('Q', 0, 'Qo', 'quarter');
4668
4669    // ALIASES
4670
4671    addUnitAlias('quarter', 'Q');
4672
4673    // PRIORITY
4674
4675    addUnitPriority('quarter', 7);
4676
4677    // PARSING
4678
4679    addRegexToken('Q', match1);
4680    addParseToken('Q', function (input, array) {
4681        array[MONTH] = (toInt(input) - 1) * 3;
4682    });
4683
4684    // MOMENTS
4685
4686    function getSetQuarter(input) {
4687        return input == null
4688            ? Math.ceil((this.month() + 1) / 3)
4689            : this.month((input - 1) * 3 + (this.month() % 3));
4690    }
4691
4692    // FORMATTING
4693
4694    addFormatToken('D', ['DD', 2], 'Do', 'date');
4695
4696    // ALIASES
4697
4698    addUnitAlias('date', 'D');
4699
4700    // PRIORITY
4701    addUnitPriority('date', 9);
4702
4703    // PARSING
4704
4705    addRegexToken('D', match1to2);
4706    addRegexToken('DD', match1to2, match2);
4707    addRegexToken('Do', function (isStrict, locale) {
4708        // TODO: Remove "ordinalParse" fallback in next major release.
4709        return isStrict
4710            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
4711            : locale._dayOfMonthOrdinalParseLenient;
4712    });
4713
4714    addParseToken(['D', 'DD'], DATE);
4715    addParseToken('Do', function (input, array) {
4716        array[DATE] = toInt(input.match(match1to2)[0]);
4717    });
4718
4719    // MOMENTS
4720
4721    var getSetDayOfMonth = makeGetSet('Date', true);
4722
4723    // FORMATTING
4724
4725    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
4726
4727    // ALIASES
4728
4729    addUnitAlias('dayOfYear', 'DDD');
4730
4731    // PRIORITY
4732    addUnitPriority('dayOfYear', 4);
4733
4734    // PARSING
4735
4736    addRegexToken('DDD', match1to3);
4737    addRegexToken('DDDD', match3);
4738    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
4739        config._dayOfYear = toInt(input);
4740    });
4741
4742    // HELPERS
4743
4744    // MOMENTS
4745
4746    function getSetDayOfYear(input) {
4747        var dayOfYear =
4748            Math.round(
4749                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
4750            ) + 1;
4751        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
4752    }
4753
4754    // FORMATTING
4755
4756    addFormatToken('m', ['mm', 2], 0, 'minute');
4757
4758    // ALIASES
4759
4760    addUnitAlias('minute', 'm');
4761
4762    // PRIORITY
4763
4764    addUnitPriority('minute', 14);
4765
4766    // PARSING
4767
4768    addRegexToken('m', match1to2);
4769    addRegexToken('mm', match1to2, match2);
4770    addParseToken(['m', 'mm'], MINUTE);
4771
4772    // MOMENTS
4773
4774    var getSetMinute = makeGetSet('Minutes', false);
4775
4776    // FORMATTING
4777
4778    addFormatToken('s', ['ss', 2], 0, 'second');
4779
4780    // ALIASES
4781
4782    addUnitAlias('second', 's');
4783
4784    // PRIORITY
4785
4786    addUnitPriority('second', 15);
4787
4788    // PARSING
4789
4790    addRegexToken('s', match1to2);
4791    addRegexToken('ss', match1to2, match2);
4792    addParseToken(['s', 'ss'], SECOND);
4793
4794    // MOMENTS
4795
4796    var getSetSecond = makeGetSet('Seconds', false);
4797
4798    // FORMATTING
4799
4800    addFormatToken('S', 0, 0, function () {
4801        return ~~(this.millisecond() / 100);
4802    });
4803
4804    addFormatToken(0, ['SS', 2], 0, function () {
4805        return ~~(this.millisecond() / 10);
4806    });
4807
4808    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
4809    addFormatToken(0, ['SSSS', 4], 0, function () {
4810        return this.millisecond() * 10;
4811    });
4812    addFormatToken(0, ['SSSSS', 5], 0, function () {
4813        return this.millisecond() * 100;
4814    });
4815    addFormatToken(0, ['SSSSSS', 6], 0, function () {
4816        return this.millisecond() * 1000;
4817    });
4818    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
4819        return this.millisecond() * 10000;
4820    });
4821    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
4822        return this.millisecond() * 100000;
4823    });
4824    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
4825        return this.millisecond() * 1000000;
4826    });
4827
4828    // ALIASES
4829
4830    addUnitAlias('millisecond', 'ms');
4831
4832    // PRIORITY
4833
4834    addUnitPriority('millisecond', 16);
4835
4836    // PARSING
4837
4838    addRegexToken('S', match1to3, match1);
4839    addRegexToken('SS', match1to3, match2);
4840    addRegexToken('SSS', match1to3, match3);
4841
4842    var token, getSetMillisecond;
4843    for (token = 'SSSS'; token.length <= 9; token += 'S') {
4844        addRegexToken(token, matchUnsigned);
4845    }
4846
4847    function parseMs(input, array) {
4848        array[MILLISECOND] = toInt(('0.' + input) * 1000);
4849    }
4850
4851    for (token = 'S'; token.length <= 9; token += 'S') {
4852        addParseToken(token, parseMs);
4853    }
4854
4855    getSetMillisecond = makeGetSet('Milliseconds', false);
4856
4857    // FORMATTING
4858
4859    addFormatToken('z', 0, 0, 'zoneAbbr');
4860    addFormatToken('zz', 0, 0, 'zoneName');
4861
4862    // MOMENTS
4863
4864    function getZoneAbbr() {
4865        return this._isUTC ? 'UTC' : '';
4866    }
4867
4868    function getZoneName() {
4869        return this._isUTC ? 'Coordinated Universal Time' : '';
4870    }
4871
4872    var proto = Moment.prototype;
4873
4874    proto.add = add;
4875    proto.calendar = calendar$1;
4876    proto.clone = clone;
4877    proto.diff = diff;
4878    proto.endOf = endOf;
4879    proto.format = format;
4880    proto.from = from;
4881    proto.fromNow = fromNow;
4882    proto.to = to;
4883    proto.toNow = toNow;
4884    proto.get = stringGet;
4885    proto.invalidAt = invalidAt;
4886    proto.isAfter = isAfter;
4887    proto.isBefore = isBefore;
4888    proto.isBetween = isBetween;
4889    proto.isSame = isSame;
4890    proto.isSameOrAfter = isSameOrAfter;
4891    proto.isSameOrBefore = isSameOrBefore;
4892    proto.isValid = isValid$2;
4893    proto.lang = lang;
4894    proto.locale = locale;
4895    proto.localeData = localeData;
4896    proto.max = prototypeMax;
4897    proto.min = prototypeMin;
4898    proto.parsingFlags = parsingFlags;
4899    proto.set = stringSet;
4900    proto.startOf = startOf;
4901    proto.subtract = subtract;
4902    proto.toArray = toArray;
4903    proto.toObject = toObject;
4904    proto.toDate = toDate;
4905    proto.toISOString = toISOString;
4906    proto.inspect = inspect;
4907    if (typeof Symbol !== 'undefined' && Symbol.for != null) {
4908        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
4909            return 'Moment<' + this.format() + '>';
4910        };
4911    }
4912    proto.toJSON = toJSON;
4913    proto.toString = toString;
4914    proto.unix = unix;
4915    proto.valueOf = valueOf;
4916    proto.creationData = creationData;
4917    proto.eraName = getEraName;
4918    proto.eraNarrow = getEraNarrow;
4919    proto.eraAbbr = getEraAbbr;
4920    proto.eraYear = getEraYear;
4921    proto.year = getSetYear;
4922    proto.isLeapYear = getIsLeapYear;
4923    proto.weekYear = getSetWeekYear;
4924    proto.isoWeekYear = getSetISOWeekYear;
4925    proto.quarter = proto.quarters = getSetQuarter;
4926    proto.month = getSetMonth;
4927    proto.daysInMonth = getDaysInMonth;
4928    proto.week = proto.weeks = getSetWeek;
4929    proto.isoWeek = proto.isoWeeks = getSetISOWeek;
4930    proto.weeksInYear = getWeeksInYear;
4931    proto.weeksInWeekYear = getWeeksInWeekYear;
4932    proto.isoWeeksInYear = getISOWeeksInYear;
4933    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
4934    proto.date = getSetDayOfMonth;
4935    proto.day = proto.days = getSetDayOfWeek;
4936    proto.weekday = getSetLocaleDayOfWeek;
4937    proto.isoWeekday = getSetISODayOfWeek;
4938    proto.dayOfYear = getSetDayOfYear;
4939    proto.hour = proto.hours = getSetHour;
4940    proto.minute = proto.minutes = getSetMinute;
4941    proto.second = proto.seconds = getSetSecond;
4942    proto.millisecond = proto.milliseconds = getSetMillisecond;
4943    proto.utcOffset = getSetOffset;
4944    proto.utc = setOffsetToUTC;
4945    proto.local = setOffsetToLocal;
4946    proto.parseZone = setOffsetToParsedOffset;
4947    proto.hasAlignedHourOffset = hasAlignedHourOffset;
4948    proto.isDST = isDaylightSavingTime;
4949    proto.isLocal = isLocal;
4950    proto.isUtcOffset = isUtcOffset;
4951    proto.isUtc = isUtc;
4952    proto.isUTC = isUtc;
4953    proto.zoneAbbr = getZoneAbbr;
4954    proto.zoneName = getZoneName;
4955    proto.dates = deprecate(
4956        'dates accessor is deprecated. Use date instead.',
4957        getSetDayOfMonth
4958    );
4959    proto.months = deprecate(
4960        'months accessor is deprecated. Use month instead',
4961        getSetMonth
4962    );
4963    proto.years = deprecate(
4964        'years accessor is deprecated. Use year instead',
4965        getSetYear
4966    );
4967    proto.zone = deprecate(
4968        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
4969        getSetZone
4970    );
4971    proto.isDSTShifted = deprecate(
4972        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
4973        isDaylightSavingTimeShifted
4974    );
4975
4976    function createUnix(input) {
4977        return createLocal(input * 1000);
4978    }
4979
4980    function createInZone() {
4981        return createLocal.apply(null, arguments).parseZone();
4982    }
4983
4984    function preParsePostFormat(string) {
4985        return string;
4986    }
4987
4988    var proto$1 = Locale.prototype;
4989
4990    proto$1.calendar = calendar;
4991    proto$1.longDateFormat = longDateFormat;
4992    proto$1.invalidDate = invalidDate;
4993    proto$1.ordinal = ordinal;
4994    proto$1.preparse = preParsePostFormat;
4995    proto$1.postformat = preParsePostFormat;
4996    proto$1.relativeTime = relativeTime;
4997    proto$1.pastFuture = pastFuture;
4998    proto$1.set = set;
4999    proto$1.eras = localeEras;
5000    proto$1.erasParse = localeErasParse;
5001    proto$1.erasConvertYear = localeErasConvertYear;
5002    proto$1.erasAbbrRegex = erasAbbrRegex;
5003    proto$1.erasNameRegex = erasNameRegex;
5004    proto$1.erasNarrowRegex = erasNarrowRegex;
5005
5006    proto$1.months = localeMonths;
5007    proto$1.monthsShort = localeMonthsShort;
5008    proto$1.monthsParse = localeMonthsParse;
5009    proto$1.monthsRegex = monthsRegex;
5010    proto$1.monthsShortRegex = monthsShortRegex;
5011    proto$1.week = localeWeek;
5012    proto$1.firstDayOfYear = localeFirstDayOfYear;
5013    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
5014
5015    proto$1.weekdays = localeWeekdays;
5016    proto$1.weekdaysMin = localeWeekdaysMin;
5017    proto$1.weekdaysShort = localeWeekdaysShort;
5018    proto$1.weekdaysParse = localeWeekdaysParse;
5019
5020    proto$1.weekdaysRegex = weekdaysRegex;
5021    proto$1.weekdaysShortRegex = weekdaysShortRegex;
5022    proto$1.weekdaysMinRegex = weekdaysMinRegex;
5023
5024    proto$1.isPM = localeIsPM;
5025    proto$1.meridiem = localeMeridiem;
5026
5027    function get$1(format, index, field, setter) {
5028        var locale = getLocale(),
5029            utc = createUTC().set(setter, index);
5030        return locale[field](utc, format);
5031    }
5032
5033    function listMonthsImpl(format, index, field) {
5034        if (isNumber(format)) {
5035            index = format;
5036            format = undefined;
5037        }
5038
5039        format = format || '';
5040
5041        if (index != null) {
5042            return get$1(format, index, field, 'month');
5043        }
5044
5045        var i,
5046            out = [];
5047        for (i = 0; i < 12; i++) {
5048            out[i] = get$1(format, i, field, 'month');
5049        }
5050        return out;
5051    }
5052
5053    // ()
5054    // (5)
5055    // (fmt, 5)
5056    // (fmt)
5057    // (true)
5058    // (true, 5)
5059    // (true, fmt, 5)
5060    // (true, fmt)
5061    function listWeekdaysImpl(localeSorted, format, index, field) {
5062        if (typeof localeSorted === 'boolean') {
5063            if (isNumber(format)) {
5064                index = format;
5065                format = undefined;
5066            }
5067
5068            format = format || '';
5069        } else {
5070            format = localeSorted;
5071            index = format;
5072            localeSorted = false;
5073
5074            if (isNumber(format)) {
5075                index = format;
5076                format = undefined;
5077            }
5078
5079            format = format || '';
5080        }
5081
5082        var locale = getLocale(),
5083            shift = localeSorted ? locale._week.dow : 0,
5084            i,
5085            out = [];
5086
5087        if (index != null) {
5088            return get$1(format, (index + shift) % 7, field, 'day');
5089        }
5090
5091        for (i = 0; i < 7; i++) {
5092            out[i] = get$1(format, (i + shift) % 7, field, 'day');
5093        }
5094        return out;
5095    }
5096
5097    function listMonths(format, index) {
5098        return listMonthsImpl(format, index, 'months');
5099    }
5100
5101    function listMonthsShort(format, index) {
5102        return listMonthsImpl(format, index, 'monthsShort');
5103    }
5104
5105    function listWeekdays(localeSorted, format, index) {
5106        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
5107    }
5108
5109    function listWeekdaysShort(localeSorted, format, index) {
5110        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
5111    }
5112
5113    function listWeekdaysMin(localeSorted, format, index) {
5114        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
5115    }
5116
5117    getSetGlobalLocale('en', {
5118        eras: [
5119            {
5120                since: '0001-01-01',
5121                until: +Infinity,
5122                offset: 1,
5123                name: 'Anno Domini',
5124                narrow: 'AD',
5125                abbr: 'AD',
5126            },
5127            {
5128                since: '0000-12-31',
5129                until: -Infinity,
5130                offset: 1,
5131                name: 'Before Christ',
5132                narrow: 'BC',
5133                abbr: 'BC',
5134            },
5135        ],
5136        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
5137        ordinal: function (number) {
5138            var b = number % 10,
5139                output =
5140                    toInt((number % 100) / 10) === 1
5141                        ? 'th'
5142                        : b === 1
5143                        ? 'st'
5144                        : b === 2
5145                        ? 'nd'
5146                        : b === 3
5147                        ? 'rd'
5148                        : 'th';
5149            return number + output;
5150        },
5151    });
5152
5153    // Side effect imports
5154
5155    hooks.lang = deprecate(
5156        'moment.lang is deprecated. Use moment.locale instead.',
5157        getSetGlobalLocale
5158    );
5159    hooks.langData = deprecate(
5160        'moment.langData is deprecated. Use moment.localeData instead.',
5161        getLocale
5162    );
5163
5164    var mathAbs = Math.abs;
5165
5166    function abs() {
5167        var data = this._data;
5168
5169        this._milliseconds = mathAbs(this._milliseconds);
5170        this._days = mathAbs(this._days);
5171        this._months = mathAbs(this._months);
5172
5173        data.milliseconds = mathAbs(data.milliseconds);
5174        data.seconds = mathAbs(data.seconds);
5175        data.minutes = mathAbs(data.minutes);
5176        data.hours = mathAbs(data.hours);
5177        data.months = mathAbs(data.months);
5178        data.years = mathAbs(data.years);
5179
5180        return this;
5181    }
5182
5183    function addSubtract$1(duration, input, value, direction) {
5184        var other = createDuration(input, value);
5185
5186        duration._milliseconds += direction * other._milliseconds;
5187        duration._days += direction * other._days;
5188        duration._months += direction * other._months;
5189
5190        return duration._bubble();
5191    }
5192
5193    // supports only 2.0-style add(1, 's') or add(duration)
5194    function add$1(input, value) {
5195        return addSubtract$1(this, input, value, 1);
5196    }
5197
5198    // supports only 2.0-style subtract(1, 's') or subtract(duration)
5199    function subtract$1(input, value) {
5200        return addSubtract$1(this, input, value, -1);
5201    }
5202
5203    function absCeil(number) {
5204        if (number < 0) {
5205            return Math.floor(number);
5206        } else {
5207            return Math.ceil(number);
5208        }
5209    }
5210
5211    function bubble() {
5212        var milliseconds = this._milliseconds,
5213            days = this._days,
5214            months = this._months,
5215            data = this._data,
5216            seconds,
5217            minutes,
5218            hours,
5219            years,
5220            monthsFromDays;
5221
5222        // if we have a mix of positive and negative values, bubble down first
5223        // check: https://github.com/moment/moment/issues/2166
5224        if (
5225            !(
5226                (milliseconds >= 0 && days >= 0 && months >= 0) ||
5227                (milliseconds <= 0 && days <= 0 && months <= 0)
5228            )
5229        ) {
5230            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
5231            days = 0;
5232            months = 0;
5233        }
5234
5235        // The following code bubbles up values, see the tests for
5236        // examples of what that means.
5237        data.milliseconds = milliseconds % 1000;
5238
5239        seconds = absFloor(milliseconds / 1000);
5240        data.seconds = seconds % 60;
5241
5242        minutes = absFloor(seconds / 60);
5243        data.minutes = minutes % 60;
5244
5245        hours = absFloor(minutes / 60);
5246        data.hours = hours % 24;
5247
5248        days += absFloor(hours / 24);
5249
5250        // convert days to months
5251        monthsFromDays = absFloor(daysToMonths(days));
5252        months += monthsFromDays;
5253        days -= absCeil(monthsToDays(monthsFromDays));
5254
5255        // 12 months -> 1 year
5256        years = absFloor(months / 12);
5257        months %= 12;
5258
5259        data.days = days;
5260        data.months = months;
5261        data.years = years;
5262
5263        return this;
5264    }
5265
5266    function daysToMonths(days) {
5267        // 400 years have 146097 days (taking into account leap year rules)
5268        // 400 years have 12 months === 4800
5269        return (days * 4800) / 146097;
5270    }
5271
5272    function monthsToDays(months) {
5273        // the reverse of daysToMonths
5274        return (months * 146097) / 4800;
5275    }
5276
5277    function as(units) {
5278        if (!this.isValid()) {
5279            return NaN;
5280        }
5281        var days,
5282            months,
5283            milliseconds = this._milliseconds;
5284
5285        units = normalizeUnits(units);
5286
5287        if (units === 'month' || units === 'quarter' || units === 'year') {
5288            days = this._days + milliseconds / 864e5;
5289            months = this._months + daysToMonths(days);
5290            switch (units) {
5291                case 'month':
5292                    return months;
5293                case 'quarter':
5294                    return months / 3;
5295                case 'year':
5296                    return months / 12;
5297            }
5298        } else {
5299            // handle milliseconds separately because of floating point math errors (issue #1867)
5300            days = this._days + Math.round(monthsToDays(this._months));
5301            switch (units) {
5302                case 'week':
5303                    return days / 7 + milliseconds / 6048e5;
5304                case 'day':
5305                    return days + milliseconds / 864e5;
5306                case 'hour':
5307                    return days * 24 + milliseconds / 36e5;
5308                case 'minute':
5309                    return days * 1440 + milliseconds / 6e4;
5310                case 'second':
5311                    return days * 86400 + milliseconds / 1000;
5312                // Math.floor prevents floating point math errors here
5313                case 'millisecond':
5314                    return Math.floor(days * 864e5) + milliseconds;
5315                default:
5316                    throw new Error('Unknown unit ' + units);
5317            }
5318        }
5319    }
5320
5321    // TODO: Use this.as('ms')?
5322    function valueOf$1() {
5323        if (!this.isValid()) {
5324            return NaN;
5325        }
5326        return (
5327            this._milliseconds +
5328            this._days * 864e5 +
5329            (this._months % 12) * 2592e6 +
5330            toInt(this._months / 12) * 31536e6
5331        );
5332    }
5333
5334    function makeAs(alias) {
5335        return function () {
5336            return this.as(alias);
5337        };
5338    }
5339
5340    var asMilliseconds = makeAs('ms'),
5341        asSeconds = makeAs('s'),
5342        asMinutes = makeAs('m'),
5343        asHours = makeAs('h'),
5344        asDays = makeAs('d'),
5345        asWeeks = makeAs('w'),
5346        asMonths = makeAs('M'),
5347        asQuarters = makeAs('Q'),
5348        asYears = makeAs('y');
5349
5350    function clone$1() {
5351        return createDuration(this);
5352    }
5353
5354    function get$2(units) {
5355        units = normalizeUnits(units);
5356        return this.isValid() ? this[units + 's']() : NaN;
5357    }
5358
5359    function makeGetter(name) {
5360        return function () {
5361            return this.isValid() ? this._data[name] : NaN;
5362        };
5363    }
5364
5365    var milliseconds = makeGetter('milliseconds'),
5366        seconds = makeGetter('seconds'),
5367        minutes = makeGetter('minutes'),
5368        hours = makeGetter('hours'),
5369        days = makeGetter('days'),
5370        months = makeGetter('months'),
5371        years = makeGetter('years');
5372
5373    function weeks() {
5374        return absFloor(this.days() / 7);
5375    }
5376
5377    var round = Math.round,
5378        thresholds = {
5379            ss: 44, // a few seconds to seconds
5380            s: 45, // seconds to minute
5381            m: 45, // minutes to hour
5382            h: 22, // hours to day
5383            d: 26, // days to month/week
5384            w: null, // weeks to month
5385            M: 11, // months to year
5386        };
5387
5388    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
5389    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
5390        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
5391    }
5392
5393    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
5394        var duration = createDuration(posNegDuration).abs(),
5395            seconds = round(duration.as('s')),
5396            minutes = round(duration.as('m')),
5397            hours = round(duration.as('h')),
5398            days = round(duration.as('d')),
5399            months = round(duration.as('M')),
5400            weeks = round(duration.as('w')),
5401            years = round(duration.as('y')),
5402            a =
5403                (seconds <= thresholds.ss && ['s', seconds]) ||
5404                (seconds < thresholds.s && ['ss', seconds]) ||
5405                (minutes <= 1 && ['m']) ||
5406                (minutes < thresholds.m && ['mm', minutes]) ||
5407                (hours <= 1 && ['h']) ||
5408                (hours < thresholds.h && ['hh', hours]) ||
5409                (days <= 1 && ['d']) ||
5410                (days < thresholds.d && ['dd', days]);
5411
5412        if (thresholds.w != null) {
5413            a =
5414                a ||
5415                (weeks <= 1 && ['w']) ||
5416                (weeks < thresholds.w && ['ww', weeks]);
5417        }
5418        a = a ||
5419            (months <= 1 && ['M']) ||
5420            (months < thresholds.M && ['MM', months]) ||
5421            (years <= 1 && ['y']) || ['yy', years];
5422
5423        a[2] = withoutSuffix;
5424        a[3] = +posNegDuration > 0;
5425        a[4] = locale;
5426        return substituteTimeAgo.apply(null, a);
5427    }
5428
5429    // This function allows you to set the rounding function for relative time strings
5430    function getSetRelativeTimeRounding(roundingFunction) {
5431        if (roundingFunction === undefined) {
5432            return round;
5433        }
5434        if (typeof roundingFunction === 'function') {
5435            round = roundingFunction;
5436            return true;
5437        }
5438        return false;
5439    }
5440
5441    // This function allows you to set a threshold for relative time strings
5442    function getSetRelativeTimeThreshold(threshold, limit) {
5443        if (thresholds[threshold] === undefined) {
5444            return false;
5445        }
5446        if (limit === undefined) {
5447            return thresholds[threshold];
5448        }
5449        thresholds[threshold] = limit;
5450        if (threshold === 's') {
5451            thresholds.ss = limit - 1;
5452        }
5453        return true;
5454    }
5455
5456    function humanize(argWithSuffix, argThresholds) {
5457        if (!this.isValid()) {
5458            return this.localeData().invalidDate();
5459        }
5460
5461        var withSuffix = false,
5462            th = thresholds,
5463            locale,
5464            output;
5465
5466        if (typeof argWithSuffix === 'object') {
5467            argThresholds = argWithSuffix;
5468            argWithSuffix = false;
5469        }
5470        if (typeof argWithSuffix === 'boolean') {
5471            withSuffix = argWithSuffix;
5472        }
5473        if (typeof argThresholds === 'object') {
5474            th = Object.assign({}, thresholds, argThresholds);
5475            if (argThresholds.s != null && argThresholds.ss == null) {
5476                th.ss = argThresholds.s - 1;
5477            }
5478        }
5479
5480        locale = this.localeData();
5481        output = relativeTime$1(this, !withSuffix, th, locale);
5482
5483        if (withSuffix) {
5484            output = locale.pastFuture(+this, output);
5485        }
5486
5487        return locale.postformat(output);
5488    }
5489
5490    var abs$1 = Math.abs;
5491
5492    function sign(x) {
5493        return (x > 0) - (x < 0) || +x;
5494    }
5495
5496    function toISOString$1() {
5497        // for ISO strings we do not use the normal bubbling rules:
5498        //  * milliseconds bubble up until they become hours
5499        //  * days do not bubble at all
5500        //  * months bubble up until they become years
5501        // This is because there is no context-free conversion between hours and days
5502        // (think of clock changes)
5503        // and also not between days and months (28-31 days per month)
5504        if (!this.isValid()) {
5505            return this.localeData().invalidDate();
5506        }
5507
5508        var seconds = abs$1(this._milliseconds) / 1000,
5509            days = abs$1(this._days),
5510            months = abs$1(this._months),
5511            minutes,
5512            hours,
5513            years,
5514            s,
5515            total = this.asSeconds(),
5516            totalSign,
5517            ymSign,
5518            daysSign,
5519            hmsSign;
5520
5521        if (!total) {
5522            // this is the same as C#'s (Noda) and python (isodate)...
5523            // but not other JS (goog.date)
5524            return 'P0D';
5525        }
5526
5527        // 3600 seconds -> 60 minutes -> 1 hour
5528        minutes = absFloor(seconds / 60);
5529        hours = absFloor(minutes / 60);
5530        seconds %= 60;
5531        minutes %= 60;
5532
5533        // 12 months -> 1 year
5534        years = absFloor(months / 12);
5535        months %= 12;
5536
5537        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
5538        s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
5539
5540        totalSign = total < 0 ? '-' : '';
5541        ymSign = sign(this._months) !== sign(total) ? '-' : '';
5542        daysSign = sign(this._days) !== sign(total) ? '-' : '';
5543        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
5544
5545        return (
5546            totalSign +
5547            'P' +
5548            (years ? ymSign + years + 'Y' : '') +
5549            (months ? ymSign + months + 'M' : '') +
5550            (days ? daysSign + days + 'D' : '') +
5551            (hours || minutes || seconds ? 'T' : '') +
5552            (hours ? hmsSign + hours + 'H' : '') +
5553            (minutes ? hmsSign + minutes + 'M' : '') +
5554            (seconds ? hmsSign + s + 'S' : '')
5555        );
5556    }
5557
5558    var proto$2 = Duration.prototype;
5559
5560    proto$2.isValid = isValid$1;
5561    proto$2.abs = abs;
5562    proto$2.add = add$1;
5563    proto$2.subtract = subtract$1;
5564    proto$2.as = as;
5565    proto$2.asMilliseconds = asMilliseconds;
5566    proto$2.asSeconds = asSeconds;
5567    proto$2.asMinutes = asMinutes;
5568    proto$2.asHours = asHours;
5569    proto$2.asDays = asDays;
5570    proto$2.asWeeks = asWeeks;
5571    proto$2.asMonths = asMonths;
5572    proto$2.asQuarters = asQuarters;
5573    proto$2.asYears = asYears;
5574    proto$2.valueOf = valueOf$1;
5575    proto$2._bubble = bubble;
5576    proto$2.clone = clone$1;
5577    proto$2.get = get$2;
5578    proto$2.milliseconds = milliseconds;
5579    proto$2.seconds = seconds;
5580    proto$2.minutes = minutes;
5581    proto$2.hours = hours;
5582    proto$2.days = days;
5583    proto$2.weeks = weeks;
5584    proto$2.months = months;
5585    proto$2.years = years;
5586    proto$2.humanize = humanize;
5587    proto$2.toISOString = toISOString$1;
5588    proto$2.toString = toISOString$1;
5589    proto$2.toJSON = toISOString$1;
5590    proto$2.locale = locale;
5591    proto$2.localeData = localeData;
5592
5593    proto$2.toIsoString = deprecate(
5594        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
5595        toISOString$1
5596    );
5597    proto$2.lang = lang;
5598
5599    // FORMATTING
5600
5601    addFormatToken('X', 0, 0, 'unix');
5602    addFormatToken('x', 0, 0, 'valueOf');
5603
5604    // PARSING
5605
5606    addRegexToken('x', matchSigned);
5607    addRegexToken('X', matchTimestamp);
5608    addParseToken('X', function (input, array, config) {
5609        config._d = new Date(parseFloat(input) * 1000);
5610    });
5611    addParseToken('x', function (input, array, config) {
5612        config._d = new Date(toInt(input));
5613    });
5614
5615    //! moment.js
5616
5617    hooks.version = '2.2
56179.1';
5618
5619    setHookCallback(createLocal);
5620
5621    hooks.fn = proto;
5622    hooks.min = min;
5623    hooks.max = max;
5624    hooks.now = now;
5625    hooks.utc = createUTC;
5626    hooks.unix = createUnix;
5627    hooks.months = listMonths;
5628    hooks.isDate = isDate;
5629    hooks.locale = getSetGlobalLocale;
5630    hooks.invalid = createInvalid;
5631    hooks.duration = createDuration;
5632    hooks.isMoment = isMoment;
5633    hooks.weekdays = listWeekdays;
5634    hooks.parseZone = createInZone;
5635    hooks.localeData = getLocale;
5636    hooks.isDuration = isDuration;
5637    hooks.monthsShort = listMonthsShort;
5638    hooks.weekdaysMin = listWeekdaysMin;
5639    hooks.defineLocale = defineLocale;
5640    hooks.updateLocale = updateLocale;
5641    hooks.locales = listLocales;
5642    hooks.weekdaysShort = listWeekdaysShort;
5643    hooks.normalizeUnits = normalizeUnits;
5644    hooks.relativeTimeRounding = getSetRelativeTimeRounding;
5645    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
5646    hooks.calendarFormat = getCalendarFormat;
5647    hooks.prototype = proto;
5648
5649    // currently HTML5 input type only supports 24-hour formats
5650    hooks.HTML5_FMT = {
5651        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
5652        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
5653        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
5654        DATE: 'YYYY-MM-DD', // <input type="date" />
5655        TIME: 'HH:mm', // <input type="time" />
5656        TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
5657        TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
5658        WEEK: 'GGGG-[W]WW', // <input type="week" />
5659        MONTH: 'YYYY-MM', // <input type="month" />
5660    };
5661
5662    //! moment.js locale configuration
5663
5664    hooks.defineLocale('af', {
5665        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
5666            '_'
5667        ),
5668        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
5669        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
5670            '_'
5671        ),
5672        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
5673        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
5674        meridiemParse: /vm|nm/i,
5675        isPM: function (input) {
5676            return /^nm$/i.test(input);
5677        },
5678        meridiem: function (hours, minutes, isLower) {
5679            if (hours < 12) {
5680                return isLower ? 'vm' : 'VM';
5681            } else {
5682                return isLower ? 'nm' : 'NM';
5683            }
5684        },
5685        longDateFormat: {
5686            LT: 'HH:mm',
5687            LTS: 'HH:mm:ss',
5688            L: 'DD/MM/YYYY',
5689            LL: 'D MMMM YYYY',
5690            LLL: 'D MMMM YYYY HH:mm',
5691            LLLL: 'dddd, D MMMM YYYY HH:mm',
5692        },
5693        calendar: {
5694            sameDay: '[Vandag om] LT',
5695            nextDay: '[Môre om] LT',
5696            nextWeek: 'dddd [om] LT',
5697            lastDay: '[Gister om] LT',
5698            lastWeek: '[Laas] dddd [om] LT',
5699            sameElse: 'L',
5700        },
5701        relativeTime: {
vendor: 16,384 bytes, lines 5702-6198
5702            future: 'oor %s',
5703            past: '%s gelede',
5704            s: "'n paar sekondes",
5705            ss: '%d sekondes',
5706            m: "'n minuut",
5707            mm: '%d minute',
5708            h: "'n uur",
5709            hh: '%d ure',
5710            d: "'n dag",
5711            dd: '%d dae',
5712            M: "'n maand",
5713            MM: '%d maande',
5714            y: "'n jaar",
5715            yy: '%d jaar',
5716        },
5717        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
5718        ordinal: function (number) {
5719            return (
5720                number +
5721                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
5722            ); // Thanks to Joris Röling : https://github.com/jjupiter
5723        },
5724        week: {
5725            dow: 1, // Maandag is die eerste dag van die week.
5726            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
5727        },
5728    });
5729
5730    //! moment.js locale configuration
5731
5732    var pluralForm = function (n) {
5733            return n === 0
5734                ? 0
5735                : n === 1
5736                ? 1
5737                : n === 2
5738                ? 2
5739                : n % 100 >= 3 && n % 100 <= 10
5740                ? 3
5741                : n % 100 >= 11
5742                ? 4
5743                : 5;
5744        },
5745        plurals = {
5746            s: [
5747                'أقل من ثانية',
5748                'ثانية واحدة',
5749                ['ثانيتان', 'ثانيتين'],
5750                '%d ثوان',
5751                '%d ثانية',
5752                '%d ثانية',
5753            ],
5754            m: [
5755                'أقل من دقيقة',
5756                'دقيقة واحدة',
5757                ['دقيقتان', 'دقيقتين'],
5758                '%d دقائق',
5759                '%d دقيقة',
5760                '%d دقيقة',
5761            ],
5762            h: [
5763                'أقل من ساعة',
5764                'ساعة واحدة',
5765                ['ساعتان', 'ساعتين'],
5766                '%d ساعات',
5767                '%d ساعة',
5768                '%d ساعة',
5769            ],
5770            d: [
5771                'أقل من يوم',
5772                'يوم واحد',
5773                ['يومان', 'يومين'],
5774                '%d أيام',
5775                '%d يومًا',
5776                '%d يوم',
5777            ],
5778            M: [
5779                'أقل من شهر',
5780                'شهر واحد',
5781                ['شهران', 'شهرين'],
5782                '%d أشهر',
5783                '%d شهرا',
5784                '%d شهر',
5785            ],
5786            y: [
5787                'أقل من عام',
5788                'عام واحد',
5789                ['عامان', 'عامين'],
5790                '%d أعوام',
5791                '%d عامًا',
5792                '%d عام',
5793            ],
5794        },
5795        pluralize = function (u) {
5796            return function (number, withoutSuffix, string, isFuture) {
5797                var f = pluralForm(number),
5798                    str = plurals[u][pluralForm(number)];
5799                if (f === 2) {
5800                    str = str[withoutSuffix ? 0 : 1];
5801                }
5802                return str.replace(/%d/i, number);
5803            };
5804        },
5805        months$1 = [
5806            'جانفي',
5807            'فيفري',
5808            'مارس',
5809            'أفريل',
5810            'ماي',
5811            'جوان',
5812            'جويلية',
5813            'أوت',
5814            'سبتمبر',
5815            'أكتوبر',
5816            'نوفمبر',
5817            'ديسمبر',
5818        ];
5819
5820    hooks.defineLocale('ar-dz', {
5821        months: months$1,
5822        monthsShort: months$1,
5823        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
5824        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
5825        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
5826        weekdaysParseExact: true,
5827        longDateFormat: {
5828            LT: 'HH:mm',
5829            LTS: 'HH:mm:ss',
5830            L: 'D/\u200FM/\u200FYYYY',
5831            LL: 'D MMMM YYYY',
5832            LLL: 'D MMMM YYYY HH:mm',
5833            LLLL: 'dddd D MMMM YYYY HH:mm',
5834        },
5835        meridiemParse: /ص|م/,
5836        isPM: function (input) {
5837            return 'م' === input;
5838        },
5839        meridiem: function (hour, minute, isLower) {
5840            if (hour < 12) {
5841                return 'ص';
5842            } else {
5843                return 'م';
5844            }
5845        },
5846        calendar: {
5847            sameDay: '[اليوم عند الساعة] LT',
5848            nextDay: '[غدًا عند الساعة] LT',
5849            nextWeek: 'dddd [عند الساعة] LT',
5850            lastDay: '[أمس عند الساعة] LT',
5851            lastWeek: 'dddd [عند الساعة] LT',
5852            sameElse: 'L',
5853        },
5854        relativeTime: {
5855            future: 'بعد %s',
5856            past: 'منذ %s',
5857            s: pluralize('s'),
5858            ss: pluralize('s'),
5859            m: pluralize('m'),
5860            mm: pluralize('m'),
5861            h: pluralize('h'),
5862            hh: pluralize('h'),
5863            d: pluralize('d'),
5864            dd: pluralize('d'),
5865            M: pluralize('M'),
5866            MM: pluralize('M'),
5867            y: pluralize('y'),
5868            yy: pluralize('y'),
5869        },
5870        postformat: function (string) {
5871            return string.replace(/,/g, '،');
5872        },
5873        week: {
5874            dow: 0, // Sunday is the first day of the week.
5875            doy: 4, // The week that contains Jan 4th is the first week of the year.
5876        },
5877    });
5878
5879    //! moment.js locale configuration
5880
5881    hooks.defineLocale('ar-kw', {
5882        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
5883            '_'
5884        ),
5885        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
5886            '_'
5887        ),
5888        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
5889        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
5890        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
5891        weekdaysParseExact: true,
5892        longDateFormat: {
5893            LT: 'HH:mm',
5894            LTS: 'HH:mm:ss',
5895            L: 'DD/MM/YYYY',
5896            LL: 'D MMMM YYYY',
5897            LLL: 'D MMMM YYYY HH:mm',
5898            LLLL: 'dddd D MMMM YYYY HH:mm',
5899        },
5900        calendar: {
5901            sameDay: '[اليوم على الساعة] LT',
5902            nextDay: '[غدا على الساعة] LT',
5903            nextWeek: 'dddd [على الساعة] LT',
5904            lastDay: '[أمس على الساعة] LT',
5905            lastWeek: 'dddd [على الساعة] LT',
5906            sameElse: 'L',
5907        },
5908        relativeTime: {
5909            future: 'في %s',
5910            past: 'منذ %s',
5911            s: 'ثوان',
5912            ss: '%d ثانية',
5913            m: 'دقيقة',
5914            mm: '%d دقائق',
5915            h: 'ساعة',
5916            hh: '%d ساعات',
5917            d: 'يوم',
5918            dd: '%d أيام',
5919            M: 'شهر',
5920            MM: '%d أشهر',
5921            y: 'سنة',
5922            yy: '%d سنوات',
5923        },
5924        week: {
5925            dow: 0, // Sunday is the first day of the week.
5926            doy: 12, // The week that contains Jan 12th is the first week of the year.
5927        },
5928    });
5929
5930    //! moment.js locale configuration
5931
5932    var symbolMap = {
5933            1: '1',
5934            2: '2',
5935            3: '3',
5936            4: '4',
5937            5: '5',
5938            6: '6',
5939            7: '7',
5940            8: '8',
5941            9: '9',
5942            0: '0',
5943        },
5944        pluralForm$1 = function (n) {
5945            return n === 0
5946                ? 0
5947                : n === 1
5948                ? 1
5949                : n === 2
5950                ? 2
5951                : n % 100 >= 3 && n % 100 <= 10
5952                ? 3
5953                : n % 100 >= 11
5954                ? 4
5955                : 5;
5956        },
5957        plurals$1 = {
5958            s: [
5959                'أقل من ثانية',
5960                'ثانية واحدة',
5961                ['ثانيتان', 'ثانيتين'],
5962                '%d ثوان',
5963                '%d ثانية',
5964                '%d ثانية',
5965            ],
5966            m: [
5967                'أقل من دقيقة',
5968                'دقيقة واحدة',
5969                ['دقيقتان', 'دقيقتين'],
5970                '%d دقائق',
5971                '%d دقيقة',
5972                '%d دقيقة',
5973            ],
5974            h: [
5975                'أقل من ساعة',
5976                'ساعة واحدة',
5977                ['ساعتان', 'ساعتين'],
5978                '%d ساعات',
5979                '%d ساعة',
5980                '%d ساعة',
5981            ],
5982            d: [
5983                'أقل من يوم',
5984                'يوم واحد',
5985                ['يومان', 'يومين'],
5986                '%d أيام',
5987                '%d يومًا',
5988                '%d يوم',
5989            ],
5990            M: [
5991                'أقل من شهر',
5992                'شهر واحد',
5993                ['شهران', 'شهرين'],
5994                '%d أشهر',
5995                '%d شهرا',
5996                '%d شهر',
5997            ],
5998            y: [
5999                'أقل من عام',
6000                'عام واحد',
6001                ['عامان', 'عامين'],
6002                '%d أعوام',
6003                '%d عامًا',
6004                '%d عام',
6005            ],
6006        },
6007        pluralize$1 = function (u) {
6008            return function (number, withoutSuffix, string, isFuture) {
6009                var f = pluralForm$1(number),
6010                    str = plurals$1[u][pluralForm$1(number)];
6011                if (f === 2) {
6012                    str = str[withoutSuffix ? 0 : 1];
6013                }
6014                return str.replace(/%d/i, number);
6015            };
6016        },
6017        months$2 = [
6018            'يناير',
6019            'فبراير',
6020            'مارس',
6021            'أبريل',
6022            'مايو',
6023            'يونيو',
6024            'يوليو',
6025            'أغسطس',
6026            'سبتمبر',
6027            'أكتوبر',
6028            'نوفمبر',
6029            'ديسمبر',
6030        ];
6031
6032    hooks.defineLocale('ar-ly', {
6033        months: months$2,
6034        monthsShort: months$2,
6035        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
6036        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
6037        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
6038        weekdaysParseExact: true,
6039        longDateFormat: {
6040            LT: 'HH:mm',
6041            LTS: 'HH:mm:ss',
6042            L: 'D/\u200FM/\u200FYYYY',
6043            LL: 'D MMMM YYYY',
6044            LLL: 'D MMMM YYYY HH:mm',
6045            LLLL: 'dddd D MMMM YYYY HH:mm',
6046        },
6047        meridiemParse: /ص|م/,
6048        isPM: function (input) {
6049            return 'م' === input;
6050        },
6051        meridiem: function (hour, minute, isLower) {
6052            if (hour < 12) {
6053                return 'ص';
6054            } else {
6055                return 'م';
6056            }
6057        },
6058        calendar: {
6059            sameDay: '[اليوم عند الساعة] LT',
6060            nextDay: '[غدًا عند الساعة] LT',
6061            nextWeek: 'dddd [عند الساعة] LT',
6062            lastDay: '[أمس عند الساعة] LT',
6063            lastWeek: 'dddd [عند الساعة] LT',
6064            sameElse: 'L',
6065        },
6066        relativeTime: {
6067            future: 'بعد %s',
6068            past: 'منذ %s',
6069            s: pluralize$1('s'),
6070            ss: pluralize$1('s'),
6071            m: pluralize$1('m'),
6072            mm: pluralize$1('m'),
6073            h: pluralize$1('h'),
6074            hh: pluralize$1('h'),
6075            d: pluralize$1('d'),
6076            dd: pluralize$1('d'),
6077            M: pluralize$1('M'),
6078            MM: pluralize$1('M'),
6079            y: pluralize$1('y'),
6080            yy: pluralize$1('y'),
6081        },
6082        preparse: function (string) {
6083            return string.replace(/،/g, ',');
6084        },
6085        postformat: function (string) {
6086            return string
6087                .replace(/\d/g, function (match) {
6088                    return symbolMap[match];
6089                })
6090                .replace(/,/g, '،');
6091        },
6092        week: {
6093            dow: 6, // Saturday is the first day of the week.
6094            doy: 12, // The week that contains Jan 12th is the first week of the year.
6095        },
6096    });
6097
6098    //! moment.js locale configuration
6099
6100    hooks.defineLocale('ar-ma', {
6101        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
6102            '_'
6103        ),
6104        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
6105            '_'
6106        ),
6107        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
6108        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
6109        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
6110        weekdaysParseExact: true,
6111        longDateFormat: {
6112            LT: 'HH:mm',
6113            LTS: 'HH:mm:ss',
6114            L: 'DD/MM/YYYY',
6115            LL: 'D MMMM YYYY',
6116            LLL: 'D MMMM YYYY HH:mm',
6117            LLLL: 'dddd D MMMM YYYY HH:mm',
6118        },
6119        calendar: {
6120            sameDay: '[اليوم على الساعة] LT',
6121            nextDay: '[غدا على الساعة] LT',
6122            nextWeek: 'dddd [على الساعة] LT',
6123            lastDay: '[أمس على الساعة] LT',
6124            lastWeek: 'dddd [على الساعة] LT',
6125            sameElse: 'L',
6126        },
6127        relativeTime: {
6128            future: 'في %s',
6129            past: 'منذ %s',
6130            s: 'ثوان',
6131            ss: '%d ثانية',
6132            m: 'دقيقة',
6133            mm: '%d دقائق',
6134            h: 'ساعة',
6135            hh: '%d ساعات',
6136            d: 'يوم',
6137            dd: '%d أيام',
6138            M: 'شهر',
6139            MM: '%d أشهر',
6140            y: 'سنة',
6141            yy: '%d سنوات',
6142        },
6143        week: {
6144            dow: 1, // Monday is the first day of the week.
6145            doy: 4, // The week that contains Jan 4th is the first week of the year.
6146        },
6147    });
6148
6149    //! moment.js locale configuration
6150
6151    var symbolMap$1 = {
6152            1: 'Ù¡',
6153            2: 'Ù¢',
6154            3: 'Ù£',
6155            4: 'Ù¤',
6156            5: 'Ù¥',
6157            6: 'Ù¦',
6158            7: 'Ù§',
6159            8: 'Ù¨',
6160            9: 'Ù©',
6161            0: 'Ù ',
6162        },
6163        numberMap = {
6164            'Ù¡': '1',
6165            'Ù¢': '2',
6166            'Ù£': '3',
6167            'Ù¤': '4',
6168            'Ù¥': '5',
6169            'Ù¦': '6',
6170            'Ù§': '7',
6171            'Ù¨': '8',
6172            'Ù©': '9',
6173            'Ù ': '0',
6174        };
6175
6176    hooks.defineLocale('ar-sa', {
6177        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
6178            '_'
6179        ),
6180        monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
6181            '_'
6182        ),
6183        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
6184        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
6185        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
6186        weekdaysParseExact: true,
6187        longDateFormat: {
6188            LT: 'HH:mm',
6189            LTS: 'HH:mm:ss',
6190            L: 'DD/MM/YYYY',
6191            LL: 'D MMMM YYYY',
6192            LLL: 'D MMMM YYYY HH:mm',
6193            LLLL: 'dddd D MMMM YYYY HH:mm',
6194        },
6195        meridiemParse: /ص|م/,
6196        isPM: function (input) {
6197            return 'م' === input;
6198        }
6198,
6199        meridiem: function (hour, minute, isLower) {
6200            if (hour < 12) {
6201                return 'ص';
6202            } else {
6203                return 'م';
6204            }
6205        },
6206        calendar: {
6207            sameDay: '[اليوم على الساعة] LT',
6208            nextDay: '[غدا على الساعة] LT',
6209            nextWeek: 'dddd [على الساعة] LT',
6210            lastDay: '[أمس على الساعة] LT',
6211            lastWeek: 'dddd [على الساعة] LT',
6212            sameElse: 'L',
6213        },
6214        relativeTime: {
6215            future: 'في %s',
6216            past: 'منذ %s',
6217            s: 'ثوان',
6218            ss: '%d ثانية',
6219            m: 'دقيقة',
6220            mm: '%d دقائق',
6221            h: 'ساعة',
6222            hh: '%d ساعات',
6223            d: 'يوم',
6224            dd: '%d أيام',
6225            M: 'شهر',
6226            MM: '%d أشهر',
6227            y: 'سنة',
6228            yy: '%d سنوات',
6229        },
6230        preparse: function (string) {
6231            return string
6232                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
6233                    return numberMap[match];
6234                })
6235                .replace(/،/g, ',');
6236        },
6237        postformat: function (string) {
6238            return string
6239                .replace(/\d/g, function (match) {
6240                    return symbolMap$1[match];
6241                })
6242                .replace(/,/g, '،');
6243        },
6244        week: {
6245            dow: 0, // Sunday is the first day of the week.
6246            doy: 6, // The week that contains Jan 6th is the first week of the year.
6247        },
6248    });
6249
6250    //! moment.js locale configuration
6251
6252    hooks.defineLocale('ar-tn', {
6253        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
6254            '_'
6255        ),
6256        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
6257            '_'
6258        ),
6259        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
6260        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
6261        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
6262        weekdaysParseExact: true,
6263        longDateFormat: {
6264            LT: 'HH:mm',
6265            LTS: 'HH:mm:ss',
6266            L: 'DD/MM/YYYY',
6267            LL: 'D MMMM YYYY',
6268            LLL: 'D MMMM YYYY HH:mm',
6269            LLLL: 'dddd D MMMM YYYY HH:mm',
6270        },
6271        calendar: {
6272            sameDay: '[اليوم على الساعة] LT',
6273            nextDay: '[غدا على الساعة] LT',
6274            nextWeek: 'dddd [على الساعة] LT',
6275            lastDay: '[أمس على الساعة] LT',
6276            lastWeek: 'dddd [على الساعة] LT',
6277            sameElse: 'L',
6278        },
6279        relativeTime: {
6280            future: 'في %s',
6281            past: 'منذ %s',
6282            s: 'ثوان',
6283            ss: '%d ثانية',
6284            m: 'دقيقة',
6285            mm: '%d دقائق',
6286            h: 'ساعة',
6287            hh: '%d ساعات',
6288            d: 'يوم',
6289            dd: '%d أيام',
6290            M: 'شهر',
6291            MM: '%d أشهر',
6292            y: 'سنة',
6293            yy: '%d سنوات',
6294        },
6295        week: {
6296            dow: 1, // Monday is the first day of the week.
6297            doy: 4, // The week that contains Jan 4th is the first week of the year.
6298        },
6299    });
6300
6301    //! moment.js locale configuration
6302
6303    var symbolMap$2 = {
6304            1: 'Ù¡',
6305            2: 'Ù¢',
6306            3: 'Ù£',
6307            4: 'Ù¤',
6308            5: 'Ù¥',
6309            6: 'Ù¦',
6310            7: 'Ù§',
6311            8: 'Ù¨',
6312            9: 'Ù©',
6313            0: 'Ù ',
6314        },
6315        numberMap$1 = {
6316            'Ù¡': '1',
6317            'Ù¢': '2',
6318            'Ù£': '3',
6319            'Ù¤': '4',
6320            'Ù¥': '5',
6321            'Ù¦': '6',
6322            'Ù§': '7',
6323            'Ù¨': '8',
6324            'Ù©': '9',
6325            'Ù ': '0',
6326        },
6327        pluralForm$2 = function (n) {
6328            return n === 0
6329                ? 0
6330                : n === 1
6331                ? 1
6332                : n === 2
6333                ? 2
6334                : n % 100 >= 3 && n % 100 <= 10
6335                ? 3
6336                : n % 100 >= 11
6337                ? 4
6338                : 5;
6339        },
6340        plurals$2 = {
6341            s: [
6342                'أقل من ثانية',
6343                'ثانية واحدة',
6344                ['ثانيتان', 'ثانيتين'],
6345                '%d ثوان',
6346                '%d ثانية',
6347                '%d ثانية',
6348            ],
6349            m: [
6350                'أقل من دقيقة',
6351                'دقيقة واحدة',
6352                ['دقيقتان', 'دقيقتين'],
6353                '%d دقائق',
6354                '%d دقيقة',
6355                '%d دقيقة',
6356            ],
6357            h: [
6358                'أقل من ساعة',
6359                'ساعة واحدة',
6360                ['ساعتان', 'ساعتين'],
6361                '%d ساعات',
6362                '%d ساعة',
6363                '%d ساعة',
6364            ],
6365            d: [
6366                'أقل من يوم',
6367                'يوم واحد',
6368                ['يومان', 'يومين'],
6369                '%d أيام',
6370                '%d يومًا',
6371                '%d يوم',
6372            ],
6373            M: [
6374                'أقل من شهر',
6375                'شهر واحد',
6376                ['شهران', 'شهرين'],
6377                '%d أشهر',
6378                '%d شهرا',
6379                '%d شهر',
6380            ],
6381            y: [
6382                'أقل من عام',
6383                'عام واحد',
6384                ['عامان', 'عامين'],
6385                '%d أعوام',
6386                '%d عامًا',
6387                '%d عام',
6388            ],
6389        },
6390        pluralize$2 = function (u) {
6391            return function (number, withoutSuffix, string, isFuture) {
6392                var f = pluralForm$2(number),
6393                    str = plurals$2[u][pluralForm$2(number)];
6394                if (f === 2) {
6395                    str = str[withoutSuffix ? 0 : 1];
6396                }
6397                return str.replace(/%d/i, number);
6398            };
6399        },
6400        months$3 = [
6401            'يناير',
6402            'فبراير',
6403            'مارس',
6404            'أبريل',
6405            'مايو',
6406            'يونيو',
6407            'يوليو',
6408            'أغسطس',
6409            'سبتمبر',
6410            'أكتوبر',
6411            'نوفمبر',
6412            'ديسمبر',
6413        ];
6414
6415    hooks.defineLocale('ar', {
6416        months: months$3,
6417        monthsShort: months$3,
6418        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
6419        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
6420        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
6421        weekdaysParseExact: true,
6422        longDateFormat: {
6423            LT: 'HH:mm',
6424            LTS: 'HH:mm:ss',
6425            L: 'D/\u200FM/\u200FYYYY',
6426            LL: 'D MMMM YYYY',
6427            LLL: 'D MMMM YYYY HH:mm',
6428            LLLL: 'dddd D MMMM YYYY HH:mm',
6429        },
6430        meridiemParse: /ص|م/,
6431        isPM: function (input) {
6432            return 'م' === input;
6433        },
6434        meridiem: function (hour, minute, isLower) {
6435            if (hour < 12) {
6436                return 'ص';
6437            } else {
6438                return 'م';
6439            }
6440        },
6441        calendar: {
6442            sameDay: '[اليوم عند الساعة] LT',
6443            nextDay: '[غدًا عند الساعة] LT',
6444            nextWeek: 'dddd [عند الساعة] LT',
6445            lastDay: '[أمس عند الساعة] LT',
6446            lastWeek: 'dddd [عند الساعة] LT',
6447            sameElse: 'L',
6448        },
6449        relativeTime: {
6450            future: 'بعد %s',
6451            past: 'منذ %s',
6452            s: pluralize$2('s'),
6453            ss: pluralize$2('s'),
6454            m: pluralize$2('m'),
6455            mm: pluralize$2('m'),
6456            h: pluralize$2('h'),
6457            hh: pluralize$2('h'),
6458            d: pluralize$2('d'),
6459            dd: pluralize$2('d'),
6460            M: pluralize$2('M'),
6461            MM: pluralize$2('M'),
6462            y: pluralize$2('y'),
6463            yy: pluralize$2('y'),
6464        },
6465        preparse: function (string) {
6466            return string
6467                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
6468                    return numberMap$1[match];
6469                })
6470                .replace(/،/g, ',');
6471        },
6472        postformat: function (string) {
6473            return string
6474                .replace(/\d/g, function (match) {
6475                    return symbolMap$2[match];
6476                })
6477                .replace(/,/g, '،');
6478        },
6479        week: {
6480            dow: 6, // Saturday is the first day of the week.
6481            doy: 12, // The week that contains Jan 12th is the first week of the year.
6482        },
6483    });
6484
6485    //! moment.js locale configuration
6486
6487    var suffixes = {
6488        1: '-inci',
6489        5: '-inci',
6490        8: '-inci',
6491        70: '-inci',
6492        80: '-inci',
6493        2: '-nci',
6494        7: '-nci',
6495        20: '-nci',
6496        50: '-nci',
6497        3: '-üncü',
6498        4: '-üncü',
6499        100: '-üncü',
6500        6: '-ncı',
6501        9: '-uncu',
6502        10: '-uncu',
6503        30: '-uncu',
6504        60: '-ıncı',
6505        90: '-ıncı',
6506    };
6507
6508    hooks.defineLocale('az', {
6509        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
6510            '_'
6511        ),
6512        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
6513        weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
6514            '_'
6515        ),
6516        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
6517        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
6518        weekdaysParseExact: true,
6519        longDateFormat: {
6520            LT: 'HH:mm',
6521            LTS: 'HH:mm:ss',
6522            L: 'DD.MM.YYYY',
6523            LL: 'D MMMM YYYY',
6524            LLL: 'D MMMM YYYY HH:mm',
6525            LLLL: 'dddd, D MMMM YYYY HH:mm',
6526        },
6527        calendar: {
6528            sameDay: '[bugün saat] LT',
6529            nextDay: '[sabah saat] LT',
6530            nextWeek: '[gələn həftə] dddd [saat] LT',
6531            lastDay: '[dünən] LT',
6532            lastWeek: '[keçən həftə] dddd [saat] LT',
6533            sameElse: 'L',
6534        },
6535        relativeTime: {
6536            future: '%s sonra',
6537            past: '%s əvvəl',
6538            s: 'bir neçə saniyə',
6539            ss: '%d saniyə',
6540            m: 'bir dəqiqə',
6541            mm: '%d dəqiqə',
6542            h: 'bir saat',
6543            hh: '%d saat',
6544            d: 'bir gün',
6545            dd: '%d gün',
6546            M: 'bir ay',
6547            MM: '%d ay',
6548            y: 'bir il',
6549            yy: '%d il',
6550        },
6551        meridiemParse: /gecə|səhər|gündüz|axşam/,
6552        isPM: function (input) {
6553            return /^(gündüz|axşam)$/.test(input);
6554        },
6555        meridiem: function (hour, minute, isLower) {
6556            if (hour < 4) {
6557                return 'gecə';
6558            } else if (hour < 12) {
6559                return 'səhər';
6560            } else if (hour < 17) {
6561                return 'gündüz';
6562            } else {
6563                return 'axşam';
6564            }
6565        },
6566        dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
6567        ordinal: function (number) {
6568            if (number === 0) {
6569                // special case for zero
6570                return number + '-ıncı';
6571            }
6572            var a = number % 10,
6573                b = (number % 100) - a,
6574                c = number >= 100 ? 100 : null;
6575            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
6576        },
6577        week: {
6578            dow: 1, // Monday is the first day of the week.
6579            doy: 7, // The week that contains Jan 7th is the first week of the year.
6580        },
6581    });
6582
6583    //! moment.js locale configuration
6584
6585    function plural(word, num) {
6586        var forms = word.split('_');
6587        return num % 10 === 1 && num % 100 !== 11
6588            ? forms[0]
6589            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
6590            ? forms[1]
6591            : forms[2];
6592    }
6593    function relativeTimeWithPlural(number, withoutSuffix, key) {
6594        var format = {
6595            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
6596            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
6597            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
6598            dd: 'дзень_дні_дзён',
6599            MM: 'месяц_месяцы_месяцаў',
6600            yy: 'год_гады_гадоў',
6601        };
6602        if (key === 'm') {
6603            return withoutSuffix ? 'хвіліна' : 'хвіліну';
6604        } else if (key === 'h') {
6605            return withoutSuffix ? 'гадзіна' : 'гадзіну';
6606        } else {
vendor: 16,384 bytes, lines 6607-7042
6607            return number + ' ' + plural(format[key], +number);
6608        }
6609    }
6610
6611    hooks.defineLocale('be', {
6612        months: {
6613            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
6614                '_'
6615            ),
6616            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
6617                '_'
6618            ),
6619        },
6620        monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(
6621            '_'
6622        ),
6623        weekdays: {
6624            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
6625                '_'
6626            ),
6627            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
6628                '_'
6629            ),
6630            isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
6631        },
6632        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
6633        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
6634        longDateFormat: {
6635            LT: 'HH:mm',
6636            LTS: 'HH:mm:ss',
6637            L: 'DD.MM.YYYY',
6638            LL: 'D MMMM YYYY г.',
6639            LLL: 'D MMMM YYYY г., HH:mm',
6640            LLLL: 'dddd, D MMMM YYYY г., HH:mm',
6641        },
6642        calendar: {
6643            sameDay: '[Сёння ў] LT',
6644            nextDay: '[Заўтра ў] LT',
6645            lastDay: '[Учора ў] LT',
6646            nextWeek: function () {
6647                return '[У] dddd [ў] LT';
6648            },
6649            lastWeek: function () {
6650                switch (this.day()) {
6651                    case 0:
6652                    case 3:
6653                    case 5:
6654                    case 6:
6655                        return '[У мінулую] dddd [ў] LT';
6656                    case 1:
6657                    case 2:
6658                    case 4:
6659                        return '[У мінулы] dddd [ў] LT';
6660                }
6661            },
6662            sameElse: 'L',
6663        },
6664        relativeTime: {
6665            future: 'праз %s',
6666            past: '%s таму',
6667            s: 'некалькі секунд',
6668            m: relativeTimeWithPlural,
6669            mm: relativeTimeWithPlural,
6670            h: relativeTimeWithPlural,
6671            hh: relativeTimeWithPlural,
6672            d: 'дзень',
6673            dd: relativeTimeWithPlural,
6674            M: 'месяц',
6675            MM: relativeTimeWithPlural,
6676            y: 'год',
6677            yy: relativeTimeWithPlural,
6678        },
6679        meridiemParse: /ночы|раніцы|дня|вечара/,
6680        isPM: function (input) {
6681            return /^(дня|вечара)$/.test(input);
6682        },
6683        meridiem: function (hour, minute, isLower) {
6684            if (hour < 4) {
6685                return 'ночы';
6686            } else if (hour < 12) {
6687                return 'раніцы';
6688            } else if (hour < 17) {
6689                return 'дня';
6690            } else {
6691                return 'вечара';
6692            }
6693        },
6694        dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
6695        ordinal: function (number, period) {
6696            switch (period) {
6697                case 'M':
6698                case 'd':
6699                case 'DDD':
6700                case 'w':
6701                case 'W':
6702                    return (number % 10 === 2 || number % 10 === 3) &&
6703                        number % 100 !== 12 &&
6704                        number % 100 !== 13
6705                        ? number + '-і'
6706                        : number + '-ы';
6707                case 'D':
6708                    return number + '-га';
6709                default:
6710                    return number;
6711            }
6712        },
6713        week: {
6714            dow: 1, // Monday is the first day of the week.
6715            doy: 7, // The week that contains Jan 7th is the first week of the year.
6716        },
6717    });
6718
6719    //! moment.js locale configuration
6720
6721    hooks.defineLocale('bg', {
6722        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
6723            '_'
6724        ),
6725        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
6726        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
6727            '_'
6728        ),
6729        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
6730        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
6731        longDateFormat: {
6732            LT: 'H:mm',
6733            LTS: 'H:mm:ss',
6734            L: 'D.MM.YYYY',
6735            LL: 'D MMMM YYYY',
6736            LLL: 'D MMMM YYYY H:mm',
6737            LLLL: 'dddd, D MMMM YYYY H:mm',
6738        },
6739        calendar: {
6740            sameDay: '[Днес в] LT',
6741            nextDay: '[Утре в] LT',
6742            nextWeek: 'dddd [в] LT',
6743            lastDay: '[Вчера в] LT',
6744            lastWeek: function () {
6745                switch (this.day()) {
6746                    case 0:
6747                    case 3:
6748                    case 6:
6749                        return '[Миналата] dddd [в] LT';
6750                    case 1:
6751                    case 2:
6752                    case 4:
6753                    case 5:
6754                        return '[Миналия] dddd [в] LT';
6755                }
6756            },
6757            sameElse: 'L',
6758        },
6759        relativeTime: {
6760            future: 'след %s',
6761            past: 'преди %s',
6762            s: 'няколко секунди',
6763            ss: '%d секунди',
6764            m: 'минута',
6765            mm: '%d минути',
6766            h: 'час',
6767            hh: '%d часа',
6768            d: 'ден',
6769            dd: '%d дена',
6770            w: 'седмица',
6771            ww: '%d седмици',
6772            M: 'месец',
6773            MM: '%d месеца',
6774            y: 'година',
6775            yy: '%d години',
6776        },
6777        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
6778        ordinal: function (number) {
6779            var lastDigit = number % 10,
6780                last2Digits = number % 100;
6781            if (number === 0) {
6782                return number + '-ев';
6783            } else if (last2Digits === 0) {
6784                return number + '-ен';
6785            } else if (last2Digits > 10 && last2Digits < 20) {
6786                return number + '-ти';
6787            } else if (lastDigit === 1) {
6788                return number + '-ви';
6789            } else if (lastDigit === 2) {
6790                return number + '-ри';
6791            } else if (lastDigit === 7 || lastDigit === 8) {
6792                return number + '-ми';
6793            } else {
6794                return number + '-ти';
6795            }
6796        },
6797        week: {
6798            dow: 1, // Monday is the first day of the week.
6799            doy: 7, // The week that contains Jan 7th is the first week of the year.
6800        },
6801    });
6802
6803    //! moment.js locale configuration
6804
6805    hooks.defineLocale('bm', {
6806        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
6807            '_'
6808        ),
6809        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
6810        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
6811        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
6812        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
6813        longDateFormat: {
6814            LT: 'HH:mm',
6815            LTS: 'HH:mm:ss',
6816            L: 'DD/MM/YYYY',
6817            LL: 'MMMM [tile] D [san] YYYY',
6818            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
6819            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
6820        },
6821        calendar: {
6822            sameDay: '[Bi lɛrɛ] LT',
6823            nextDay: '[Sini lɛrɛ] LT',
6824            nextWeek: 'dddd [don lɛrɛ] LT',
6825            lastDay: '[Kunu lɛrɛ] LT',
6826            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
6827            sameElse: 'L',
6828        },
6829        relativeTime: {
6830            future: '%s kɔnɔ',
6831            past: 'a bɛ %s bɔ',
6832            s: 'sanga dama dama',
6833            ss: 'sekondi %d',
6834            m: 'miniti kelen',
6835            mm: 'miniti %d',
6836            h: 'lɛrɛ kelen',
6837            hh: 'lɛrɛ %d',
6838            d: 'tile kelen',
6839            dd: 'tile %d',
6840            M: 'kalo kelen',
6841            MM: 'kalo %d',
6842            y: 'san kelen',
6843            yy: 'san %d',
6844        },
6845        week: {
6846            dow: 1, // Monday is the first day of the week.
6847            doy: 4, // The week that contains Jan 4th is the first week of the year.
6848        },
6849    });
6850
6851    //! moment.js locale configuration
6852
6853    var symbolMap$3 = {
6854            1: 'à§§',
6855            2: '২',
6856            3: 'à§©',
6857            4: '৪',
6858            5: 'à§«',
6859            6: '৬',
6860            7: 'à§­',
6861            8: 'à§®',
6862            9: '৯',
6863            0: '০',
6864        },
6865        numberMap$2 = {
6866            'à§§': '1',
6867            '২': '2',
6868            'à§©': '3',
6869            '৪': '4',
6870            'à§«': '5',
6871            '৬': '6',
6872            'à§­': '7',
6873            'à§®': '8',
6874            '৯': '9',
6875            '০': '0',
6876        };
6877
6878    hooks.defineLocale('bn-bd', {
6879        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
6880            '_'
6881        ),
6882        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
6883            '_'
6884        ),
6885        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
6886            '_'
6887        ),
6888        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
6889        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
6890        longDateFormat: {
6891            LT: 'A h:mm সময়',
6892            LTS: 'A h:mm:ss সময়',
6893            L: 'DD/MM/YYYY',
6894            LL: 'D MMMM YYYY',
6895            LLL: 'D MMMM YYYY, A h:mm সময়',
6896            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
6897        },
6898        calendar: {
6899            sameDay: '[আজ] LT',
6900            nextDay: '[আগামীকাল] LT',
6901            nextWeek: 'dddd, LT',
6902            lastDay: '[গতকাল] LT',
6903            lastWeek: '[গত] dddd, LT',
6904            sameElse: 'L',
6905        },
6906        relativeTime: {
6907            future: '%s পরে',
6908            past: '%s আগে',
6909            s: 'কয়েক সেকেন্ড',
6910            ss: '%d সেকেন্ড',
6911            m: 'এক মিনিট',
6912            mm: '%d মিনিট',
6913            h: 'এক ঘন্টা',
6914            hh: '%d ঘন্টা',
6915            d: 'এক দিন',
6916            dd: '%d দিন',
6917            M: 'এক মাস',
6918            MM: '%d মাস',
6919            y: 'এক বছর',
6920            yy: '%d বছর',
6921        },
6922        preparse: function (string) {
6923            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
6924                return numberMap$2[match];
6925            });
6926        },
6927        postformat: function (string) {
6928            return string.replace(/\d/g, function (match) {
6929                return symbolMap$3[match];
6930            });
6931        },
6932
6933        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,
6934        meridiemHour: function (hour, meridiem) {
6935            if (hour === 12) {
6936                hour = 0;
6937            }
6938            if (meridiem === 'রাত') {
6939                return hour < 4 ? hour : hour + 12;
6940            } else if (meridiem === 'ভোর') {
6941                return hour;
6942            } else if (meridiem === 'সকাল') {
6943                return hour;
6944            } else if (meridiem === 'দুপুর') {
6945                return hour >= 3 ? hour : hour + 12;
6946            } else if (meridiem === 'বিকাল') {
6947                return hour + 12;
6948            } else if (meridiem === 'সন্ধ্যা') {
6949                return hour + 12;
6950            }
6951        },
6952
6953        meridiem: function (hour, minute, isLower) {
6954            if (hour < 4) {
6955                return 'রাত';
6956            } else if (hour < 6) {
6957                return 'ভোর';
6958            } else if (hour < 12) {
6959                return 'সকাল';
6960            } else if (hour < 15) {
6961                return 'দুপুর';
6962            } else if (hour < 18) {
6963                return 'বিকাল';
6964            } else if (hour < 20) {
6965                return 'সন্ধ্যা';
6966            } else {
6967                return 'রাত';
6968            }
6969        },
6970        week: {
6971            dow: 0, // Sunday is the first day of the week.
6972            doy: 6, // The week that contains Jan 6th is the first week of the year.
6973        },
6974    });
6975
6976    //! moment.js locale configuration
6977
6978    var symbolMap$4 = {
6979            1: 'à§§',
6980            2: '২',
6981            3: 'à§©',
6982            4: '৪',
6983            5: 'à§«',
6984            6: '৬',
6985            7: 'à§­',
6986            8: 'à§®',
6987            9: '৯',
6988            0: '০',
6989        },
6990        numberMap$3 = {
6991            'à§§': '1',
6992            '২': '2',
6993            'à§©': '3',
6994            '৪': '4',
6995            'à§«': '5',
6996            '৬': '6',
6997            'à§­': '7',
6998            'à§®': '8',
6999            '৯': '9',
7000            '০': '0',
7001        };
7002
7003    hooks.defineLocale('bn', {
7004        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
7005            '_'
7006        ),
7007        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
7008            '_'
7009        ),
7010        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
7011            '_'
7012        ),
7013        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
7014        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
7015        longDateFormat: {
7016            LT: 'A h:mm সময়',
7017            LTS: 'A h:mm:ss সময়',
7018            L: 'DD/MM/YYYY',
7019            LL: 'D MMMM YYYY',
7020            LLL: 'D MMMM YYYY, A h:mm সময়',
7021            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
7022        },
7023        calendar: {
7024            sameDay: '[আজ] LT',
7025            nextDay: '[আগামীকাল] LT',
7026            nextWeek: 'dddd, LT',
7027            lastDay: '[গতকাল] LT',
7028            lastWeek: '[গত] dddd, LT',
7029            sameElse: 'L',
7030        },
7031        relativeTime: {
7032            future: '%s পরে',
7033            past: '%s আগে',
7034            s: 'কয়েক সেকেন্ড',
7035            ss: '%d সেকেন্ড',
7036            m: 'এক মিনিট',
7037            mm: '%d মিনিট',
7038            h: 'এক ঘন্টা',
7039            hh: '%d ঘন্টা',
7040            d: 'এক দিন',
7041            dd: '%d দিন',
7042            M
7042: 'এক মাস',
7043            MM: '%d মাস',
7044            y: 'এক বছর',
7045            yy: '%d বছর',
7046        },
7047        preparse: function (string) {
7048            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
7049                return numberMap$3[match];
7050            });
7051        },
7052        postformat: function (string) {
7053            return string.replace(/\d/g, function (match) {
7054                return symbolMap$4[match];
7055            });
7056        },
7057        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
7058        meridiemHour: function (hour, meridiem) {
7059            if (hour === 12) {
7060                hour = 0;
7061            }
7062            if (
7063                (meridiem === 'রাত' && hour >= 4) ||
7064                (meridiem === 'দুপুর' && hour < 5) ||
7065                meridiem === 'বিকাল'
7066            ) {
7067                return hour + 12;
7068            } else {
7069                return hour;
7070            }
7071        },
7072        meridiem: function (hour, minute, isLower) {
7073            if (hour < 4) {
7074                return 'রাত';
7075            } else if (hour < 10) {
7076                return 'সকাল';
7077            } else if (hour < 17) {
7078                return 'দুপুর';
7079            } else if (hour < 20) {
7080                return 'বিকাল';
7081            } else {
7082                return 'রাত';
7083            }
7084        },
7085        week: {
7086            dow: 0, // Sunday is the first day of the week.
7087            doy: 6, // The week that contains Jan 6th is the first week of the year.
7088        },
7089    });
7090
7091    //! moment.js locale configuration
7092
7093    var symbolMap$5 = {
7094            1: '༡',
7095            2: '༢',
7096            3: '༣',
7097            4: '༤',
7098            5: '༥',
7099            6: '༦',
7100            7: '༧',
7101            8: '༨',
7102            9: '༩',
7103            0: '༠',
7104        },
7105        numberMap$4 = {
7106            '༡': '1',
7107            '༢': '2',
7108            '༣': '3',
7109            '༤': '4',
7110            '༥': '5',
7111            '༦': '6',
7112            '༧': '7',
7113            '༨': '8',
7114            '༩': '9',
7115            '༠': '0',
7116        };
7117
7118    hooks.defineLocale('bo', {
7119        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
7120            '_'
7121        ),
7122        monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
7123            '_'
7124        ),
7125        monthsShortRegex: /^(ཟླ་\d{1,2})/,
7126        monthsParseExact: true,
7127        weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
7128            '_'
7129        ),
7130        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
7131            '_'
7132        ),
7133        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
7134        longDateFormat: {
7135            LT: 'A h:mm',
7136            LTS: 'A h:mm:ss',
7137            L: 'DD/MM/YYYY',
7138            LL: 'D MMMM YYYY',
7139            LLL: 'D MMMM YYYY, A h:mm',
7140            LLLL: 'dddd, D MMMM YYYY, A h:mm',
7141        },
7142        calendar: {
7143            sameDay: '[དི་རིང] LT',
7144            nextDay: '[སང་ཉིན] LT',
7145            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
7146            lastDay: '[ཁ་སང] LT',
7147            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
7148            sameElse: 'L',
7149        },
7150        relativeTime: {
7151            future: '%s ལ་',
7152            past: '%s སྔན་ལ',
7153            s: 'ལམ་སང',
7154            ss: '%d སྐར་ཆ།',
7155            m: 'སྐར་མ་གཅིག',
7156            mm: '%d སྐར་མ',
7157            h: 'ཆུ་ཚོད་གཅིག',
7158            hh: '%d ཆུ་ཚོད',
7159            d: 'ཉིན་གཅིག',
7160            dd: '%d ཉིན་',
7161            M: 'ཟླ་བ་གཅིག',
7162            MM: '%d ཟླ་བ',
7163            y: 'ལོ་གཅིག',
7164            yy: '%d ལོ',
7165        },
7166        preparse: function (string) {
7167            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
7168                return numberMap$4[match];
7169            });
7170        },
7171        postformat: function (string) {
7172            return string.replace(/\d/g, function (match) {
7173                return symbolMap$5[match];
7174            });
7175        },
7176        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
7177        meridiemHour: function (hour, meridiem) {
7178            if (hour === 12) {
7179                hour = 0;
7180            }
7181            if (
7182                (meridiem === 'མཚན་མོ' && hour >= 4) ||
7183                (meridiem === 'ཉིན་གུང' && hour < 5) ||
7184                meridiem === 'དགོང་དག'
7185            ) {
7186                return hour + 12;
7187            } else {
7188                return hour;
7189            }
7190        },
7191        meridiem: function (hour, minute, isLower) {
7192            if (hour < 4) {
7193                return 'མཚན་མོ';
7194            } else if (hour < 10) {
7195                return 'ཞོགས་ཀས';
7196            } else if (hour < 17) {
7197                return 'ཉིན་གུང';
7198            } else if (hour < 20) {
7199                return 'དགོང་དག';
7200            } else {
7201                return 'མཚན་མོ';
7202            }
7203        },
7204        week: {
7205            dow: 0, // Sunday is the first day of the week.
7206            doy: 6, // The week that contains Jan 6th is the first week of the year.
7207        },
7208    });
7209
7210    //! moment.js locale configuration
7211
7212    function relativeTimeWithMutation(number, withoutSuffix, key) {
7213        var format = {
7214            mm: 'munutenn',
7215            MM: 'miz',
7216            dd: 'devezh',
7217        };
7218        return number + ' ' + mutation(format[key], number);
7219    }
7220    function specialMutationForYears(number) {
7221        switch (lastNumber(number)) {
7222            case 1:
7223            case 3:
7224            case 4:
7225            case 5:
7226            case 9:
7227                return number + ' bloaz';
7228            default:
7229                return number + ' vloaz';
7230        }
7231    }
7232    function lastNumber(number) {
7233        if (number > 9) {
7234            return lastNumber(number % 10);
7235        }
7236        return number;
7237    }
7238    function mutation(text, number) {
7239        if (number === 2) {
7240            return softMutation(text);
7241        }
7242        return text;
7243    }
7244    function softMutation(text) {
7245        var mutationTable = {
7246            m: 'v',
7247            b: 'v',
7248            d: 'z',
7249        };
7250        if (mutationTable[text.charAt(0)] === undefined) {
7251            return text;
7252        }
7253        return mutationTable[text.charAt(0)] + text.substring(1);
7254    }
7255
7256    var monthsParse = [
7257            /^gen/i,
7258            /^c[ʼ\']hwe/i,
7259            /^meu/i,
7260            /^ebr/i,
7261            /^mae/i,
7262            /^(mez|eve)/i,
7263            /^gou/i,
7264            /^eos/i,
7265            /^gwe/i,
7266            /^her/i,
7267            /^du/i,
7268            /^ker/i,
7269        ],
7270        monthsRegex$1 = /^(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,
7271        monthsStrictRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
7272        monthsShortStrictRegex = /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
7273        fullWeekdaysParse = [
7274            /^sul/i,
7275            /^lun/i,
7276            /^meurzh/i,
7277            /^merc[ʼ\']her/i,
7278            /^yaou/i,
7279            /^gwener/i,
7280            /^sadorn/i,
7281        ],
7282        shortWeekdaysParse = [
7283            /^Sul/i,
7284            /^Lun/i,
7285            /^Meu/i,
7286            /^Mer/i,
7287            /^Yao/i,
7288            /^Gwe/i,
7289            /^Sad/i,
7290        ],
7291        minWeekdaysParse = [
7292            /^Su/i,
7293            /^Lu/i,
7294            /^Me([^r]|$)/i,
7295            /^Mer/i,
7296            /^Ya/i,
7297            /^Gw/i,
7298            /^Sa/i,
7299        ];
7300
7301    hooks.defineLocale('br', {
7302        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
7303            '_'
7304        ),
7305        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
7306        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
7307        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
7308        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
7309        weekdaysParse: minWeekdaysParse,
7310        fullWeekdaysParse: fullWeekdaysParse,
7311        shortWeekdaysParse: shortWeekdaysParse,
7312        minWeekdaysParse: minWeekdaysParse,
7313
7314        monthsRegex: monthsRegex$1,
7315        monthsShortRegex: monthsRegex$1,
7316        monthsStrictRegex: monthsStrictRegex,
7317        monthsShortStrictRegex: monthsShortStrictRegex,
7318        monthsParse: monthsParse,
7319        longMonthsParse: monthsParse,
7320        shortMonthsParse: monthsParse,
7321
7322        longDateFormat: {
7323            LT: 'HH:mm',
7324            LTS: 'HH:mm:ss',
7325            L: 'DD/MM/YYYY',
7326            LL: 'D [a viz] MMMM YYYY',
7327            LLL: 'D [a viz] MMMM YYYY HH:mm',
7328            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
7329        },
7330        calendar: {
7331            sameDay: '[Hiziv da] LT',
7332            nextDay: '[Warcʼhoazh da] LT',
7333            nextWeek: 'dddd [da] LT',
7334            lastDay: '[Decʼh da] LT',
7335            lastWeek: 'dddd [paset da] LT',
7336            sameElse: 'L',
7337        },
7338        relativeTime: {
7339            future: 'a-benn %s',
7340            past: '%s ʼzo',
7341            s: 'un nebeud segondennoù',
7342            ss: '%d eilenn',
7343            m: 'ur vunutenn',
7344            mm: relativeTimeWithMutation,
7345            h: 'un eur',
7346            hh: '%d eur',
7347            d: 'un devezh',
7348            dd: relativeTimeWithMutation,
7349            M: 'ur miz',
7350            MM: relativeTimeWithMutation,
7351            y: 'ur bloaz',
7352            yy: specialMutationForYears,
7353        },
7354        dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
7355        ordinal: function (number) {
7356            var output = number === 1 ? 'añ' : 'vet';
7357            return number + output;
7358        },
7359        week: {
7360            dow: 1, // Monday is the first day of the week.
7361            doy: 4, // The week that contains Jan 4th is the first week of the year.
7362        },
7363        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
7364        isPM: function (token) {
7365            return token === 'g.m.';
7366        },
7367        meridiem: function (hour, minute, isLower) {
7368            return hour < 12 ? 'a.m.' : 'g.m.';
7369        },
7370    });
7371
7372    //! moment.js locale configuration
7373
7374    function translate(number, withoutSuffix, key) {
7375        var result = number + ' ';
7376        switch (key) {
7377            case 'ss':
7378                if (number === 1) {
7379                    result += 'sekunda';
7380                } else if (number === 2 || number === 3 || number === 4) {
7381                    result += 'sekunde';
7382                } else {
7383                    result += 'sekundi';
7384                }
7385                return result;
7386            case 'm':
7387                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
7388            case 'mm':
7389                if (number === 1) {
7390                    result += 'minuta';
7391                } else if (number === 2 || number === 3 || number === 4) {
7392                    result += 'minute';
7393                } else {
7394                    result += 'minuta';
7395                }
7396                return result;
7397            case 'h':
7398                return withoutSuffix ? 'jedan sat' : 'jednog sata';
7399            case 'hh':
7400                if (number === 1) {
7401                    result += 'sat';
7402                } else if (number === 2 || number === 3 || number === 4) {
7403                    result += 'sata';
7404                } else {
7405                    result += 'sati';
7406                }
7407                return result;
7408            case 'dd':
7409                if (number === 1) {
7410                    result += 'dan';
7411                } else {
7412                    result += 'dana';
7413                }
7414                return result;
7415            case 'MM':
7416                if (number === 1) {
7417                    result += 'mjesec';
7418                } else if (number === 2 || number === 3 || number === 4) {
7419                    result += 'mjeseca';
7420                } else {
7421                    result += 'mjeseci';
7422                }
7423                return result;
7424            case 'yy':
7425                if (number === 1) {
7426                    result += 'godina';
7427                } else if (number === 2 || number === 3 || number === 4) {
7428                    result += 'godine';
7429                } else {
7430                    result += 'godina';
7431                }
7432                return result;
7433        }
7434    }
7435
7436    hooks.defineLocale('bs', {
7437        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
7438            '_'
7439        ),
7440        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
7441            '_'
7442        ),
7443        monthsParseExact: true,
7444        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
7445            '_'
7446        ),
7447        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
7448        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
7449        weekdaysParseExact: true,
7450        longDateFormat: {
7451            LT: 'H:mm',
7452            LTS: 'H:mm:ss',
7453            L: 'DD.MM.YYYY',
7454            LL: 'D. MMMM YYYY',
7455            LLL: 'D. MMMM YYYY H:mm',
7456            LLLL: 'dddd, D. MMMM YYYY H:mm',
7457        },
7458        calendar: {
7459            sameDay: '[danas u] LT',
7460            nextDay: '[sutra u] LT',
7461            nextWeek: function () {
7462                switch (this.day()) {
7463                    case 0:
7464                        return '[u] [nedjelju] [u] LT';
7465                    case 3:
7466                        return '[u] [srijedu] [u] LT';
7467                    case 6:
7468                        return '[u] [subotu] [u] LT';
7469                    case 1:
7470                    case 2:
7471                    case 4:
7472                    case 5:
7473                        return '[u] dddd [u] LT';
7474                }
7475            },
7476            lastDay: '[jučer u] LT',
7477            lastWeek: function () {
7478                switch (this.day()) {
7479                    case 0:
7480                    case 3:
7481                        return '[prošlu] dddd [u] LT';
7482                    case 6:
7483                        return '[prošle] [subote] [u] LT';
7484                    case 1:
7485                    case 2:
7486                    case 4:
7487                    case 5:
7488                        return '[prošli] dddd [u] LT';
7489                }
7490            },
7491            sameElse: 'L',
7492        },
7493        relativeTime: {
7494            future: 'za %s',
7495            past: 'prije %s',
7496            s: 'par sekundi',
7497            ss: translate,
7498            m: translate,
7499            mm: translate,
7500            h: translate,
7501            hh: translate,
7502            d: 'dan',
7503            dd: translate,
7504            M: 'mjesec',
7505            MM: translate,
7506            y: 'godinu',
7507            yy: translate,
7508        },
7509        dayOfMonthOrdinalParse: /\d{1,2}\./,
7510        ordinal: '%d.',
7511        week: {
7512            dow: 1, // Monday is the first day of the week.
7513            doy: 7, // The week that contains Jan 7th is the first week of the year.
7514        },
7515    });
7516
7517    //! moment.js locale configuration
7518
7519    hooks.defineLocale('ca', {
7520        months: {
7521            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
7522                '_'
7523            ),
7524            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(
7525                '_'
7526            ),
7527            isFormat: /D[oD]?(\s)+MMMM/,
7528        },
7529        monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
7530            '_'
7531        ),
7532        monthsParseExact: true,
7533        weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
7534            '_'
7535        ),
7536        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
7537        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
7538        weekdaysParseExact: true,
7539        longDateFormat: {
7540            LT: 'H:mm',
7541            LTS: 'H:mm:ss',
7542            L: 'DD/MM/YYYY',
7543            LL: 'D MMMM [de] YYYY',
7544            ll: 'D MMM YYYY',
7545            LLL: 'D MMMM [de] YYYY [a les] H:mm',
7546            lll: 'D MMM YYYY, H:mm',
7547            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
7548            llll: 'ddd D MMM YYYY, H:mm',
7549        },
7550        calendar: {
7551            sameDay: function () {
7552                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
7553            },
7554            nextDay: function () {
7555                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
7556            },
7557            nextWeek: function () {
7558                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
7559            },
7560            lastDay: function () {
7561                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
7562            },
7563            lastWeek: function () {
7564                return (
7565                    '[el] dddd [passat a ' +
7566                    (this.hours() !== 1 ? 'les' : 'la') +
7567                    '] LT'
7568                );
7569            },
7570            sameElse: 'L',
7571        },
7572        relativeTime: {
7573            future: "d'aquí %s",
7574            past: 'fa %s',
7575            s: 'uns segons',
7576            ss: '%d segons',
7577            m: 'un minut',
7578            mm: '%d minuts',
7579            h: 'una hora',
7580            hh: '%d hores',
7581            d: 'un dia',
7582            dd: '%d dies',
7583            M: 'un mes',
7584            MM: '%d mesos',
7585            y: 'un any',
7586            yy: '%d anys',
7587        },
7588        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
7589        ordinal: function (number, period) {
7590            var output =
7591                number === 1
7592                    ? 'r'
7593                    : number === 2
7594                    ? 'n'
7595                    : number === 3
7596                    ? 'r'
7597                    : number === 4
7598                    ? 't'
7599                    : 'è';
7600            if (period === 'w' || period === 'W') {
7601                output = 'a';
7602            }
7603            return number + output;
7604        },
7605        week: {
7606            dow: 1, // Monday is the first day of the week.
7607            doy: 4, // The week that contains Jan 4th is the first week of the year.
7608        },
7609    });
7610
7611    //! moment.js locale configuration
7612
7613    var months$4 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.
vendor: 8,381 bytes, lines 7613-7808
7613split(
7614            '_'
7615        ),
7616        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
7617        monthsParse$1 = [
7618            /^led/i,
7619            /^úno/i,
7620            /^bře/i,
7621            /^dub/i,
7622            /^kvě/i,
7623            /^(čvn|červen$|června)/i,
7624            /^(čvc|červenec|července)/i,
7625            /^srp/i,
7626            /^zář/i,
7627            /^říj/i,
7628            /^lis/i,
7629            /^pro/i,
7630        ],
7631        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
7632        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
7633        monthsRegex$2 = /^(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;
7634
7635    function plural$1(n) {
7636        return n > 1 && n < 5 && ~~(n / 10) !== 1;
7637    }
7638    function translate$1(number, withoutSuffix, key, isFuture) {
7639        var result = number + ' ';
7640        switch (key) {
7641            case 's': // a few seconds / in a few seconds / a few seconds ago
7642                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
7643            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
7644                if (withoutSuffix || isFuture) {
7645                    return result + (plural$1(number) ? 'sekundy' : 'sekund');
7646                } else {
7647                    return result + 'sekundami';
7648                }
7649            case 'm': // a minute / in a minute / a minute ago
7650                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
7651            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
7652                if (withoutSuffix || isFuture) {
7653                    return result + (plural$1(number) ? 'minuty' : 'minut');
7654                } else {
7655                    return result + 'minutami';
7656                }
7657            case 'h': // an hour / in an hour / an hour ago
7658                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
7659            case 'hh': // 9 hours / in 9 hours / 9 hours ago
7660                if (withoutSuffix || isFuture) {
7661                    return result + (plural$1(number) ? 'hodiny' : 'hodin');
7662                } else {
7663                    return result + 'hodinami';
7664                }
7665            case 'd': // a day / in a day / a day ago
7666                return withoutSuffix || isFuture ? 'den' : 'dnem';
7667            case 'dd': // 9 days / in 9 days / 9 days ago
7668                if (withoutSuffix || isFuture) {
7669                    return result + (plural$1(number) ? 'dny' : 'dní');
7670                } else {
7671                    return result + 'dny';
7672                }
7673            case 'M': // a month / in a month / a month ago
7674                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
7675            case 'MM': // 9 months / in 9 months / 9 months ago
7676                if (withoutSuffix || isFuture) {
7677                    return result + (plural$1(number) ? 'měsíce' : 'měsíců');
7678                } else {
7679                    return result + 'měsíci';
7680                }
7681            case 'y': // a year / in a year / a year ago
7682                return withoutSuffix || isFuture ? 'rok' : 'rokem';
7683            case 'yy': // 9 years / in 9 years / 9 years ago
7684                if (withoutSuffix || isFuture) {
7685                    return result + (plural$1(number) ? 'roky' : 'let');
7686                } else {
7687                    return result + 'lety';
7688                }
7689        }
7690    }
7691
7692    hooks.defineLocale('cs', {
7693        months: months$4,
7694        monthsShort: monthsShort,
7695        monthsRegex: monthsRegex$2,
7696        monthsShortRegex: monthsRegex$2,
7697        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
7698        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
7699        monthsStrictRegex: /^(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,
7700        monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
7701        monthsParse: monthsParse$1,
7702        longMonthsParse: monthsParse$1,
7703        shortMonthsParse: monthsParse$1,
7704        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
7705        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
7706        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
7707        longDateFormat: {
7708            LT: 'H:mm',
7709            LTS: 'H:mm:ss',
7710            L: 'DD.MM.YYYY',
7711            LL: 'D. MMMM YYYY',
7712            LLL: 'D. MMMM YYYY H:mm',
7713            LLLL: 'dddd D. MMMM YYYY H:mm',
7714            l: 'D. M. YYYY',
7715        },
7716        calendar: {
7717            sameDay: '[dnes v] LT',
7718            nextDay: '[zítra v] LT',
7719            nextWeek: function () {
7720                switch (this.day()) {
7721                    case 0:
7722                        return '[v neděli v] LT';
7723                    case 1:
7724                    case 2:
7725                        return '[v] dddd [v] LT';
7726                    case 3:
7727                        return '[ve středu v] LT';
7728                    case 4:
7729                        return '[ve čtvrtek v] LT';
7730                    case 5:
7731                        return '[v pátek v] LT';
7732                    case 6:
7733                        return '[v sobotu v] LT';
7734                }
7735            },
7736            lastDay: '[včera v] LT',
7737            lastWeek: function () {
7738                switch (this.day()) {
7739                    case 0:
7740                        return '[minulou neděli v] LT';
7741                    case 1:
7742                    case 2:
7743                        return '[minulé] dddd [v] LT';
7744                    case 3:
7745                        return '[minulou středu v] LT';
7746                    case 4:
7747                    case 5:
7748                        return '[minulý] dddd [v] LT';
7749                    case 6:
7750                        return '[minulou sobotu v] LT';
7751                }
7752            },
7753            sameElse: 'L',
7754        },
7755        relativeTime: {
7756            future: 'za %s',
7757            past: 'před %s',
7758            s: translate$1,
7759            ss: translate$1,
7760            m: translate$1,
7761            mm: translate$1,
7762            h: translate$1,
7763            hh: translate$1,
7764            d: translate$1,
7765            dd: translate$1,
7766            M: translate$1,
7767            MM: translate$1,
7768            y: translate$1,
7769            yy: translate$1,
7770        },
7771        dayOfMonthOrdinalParse: /\d{1,2}\./,
7772        ordinal: '%d.',
7773        week: {
7774            dow: 1, // Monday is the first day of the week.
7775            doy: 4, // The week that contains Jan 4th is the first week of the year.
7776        },
7777    });
7778
7779    //! moment.js locale configuration
7780
7781    hooks.defineLocale('cv', {
7782        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
7783            '_'
7784        ),
7785        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
7786        weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
7787            '_'
7788        ),
7789        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
7790        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
7791        longDateFormat: {
7792            LT: 'HH:mm',
7793            LTS: 'HH:mm:ss',
7794            L: 'DD-MM-YYYY',
7795            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
7796            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
7797            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
7798        },
7799        calendar: {
7800            sameDay: '[Паян] LT [сехетре]',
7801            nextDay: '[Ыран] LT [сехетре]',
7802            lastDay: '[Ӗнер] LT [сехетре]',
7803            nextWeek: '[Ҫитес] dddd LT [сехетре]',
7804            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
7805            sameElse: 'L',
7806        },
7807        relativeTime: {
7808            future: function (output) {
7809                var affix = /сехет$/i.exec(output)
7810                    ? 'рен'
7811                    : /ҫул$/i.exec(output)
7812                    ? 'тан'
7813                    : 'ран';
7814                return output + affix;
7815            },
7816            past: '%s каялла',
7817            s: 'пӗр-ик ҫеккунт',
7818            ss: '%d ҫеккунт',
7819            m: 'пӗр минут',
7820            mm: '%d минут',
7821            h: 'пӗр сехет',
7822            hh: '%d сехет',
7823            d: 'пӗр кун',
7824            dd: '%d кун',
7825            M: 'пӗр уйӑх',
7826            MM: '%d уйӑх',
7827            y: 'пӗр ҫул',
7828            yy: '%d ҫул',
7829        },
7830        dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
7831        ordinal: '%d-мӗш',
7832        week: {
7833            dow: 1, // Monday is the first day of the week.
7834            doy: 7, // The week that contains Jan 7th is the first week of the year.
7835        },
7836    });
7837
7838    //! moment.js locale configuration
7839
7840    hooks.defineLocale('cy', {
7841        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
7842            '_'
7843        ),
7844        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
7845            '_'
7846        ),
7847        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
7848            '_'
7849        ),
7850        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
7851        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
7852        weekdaysParseExact: true,
7853        // time formats are the same as en-gb
7854        longDateFormat: {
7855            LT: 'HH:mm',
7856            LTS: 'HH:mm:ss',
7857            L: 'DD/MM/YYYY',
7858            LL: 'D MMMM YYYY',
7859            LLL: 'D MMMM YYYY HH:mm',
7860            LLLL: 'dddd, D MMMM YYYY HH:mm',
7861        },
7862        calendar: {
7863            sameDay: '[Heddiw am] LT',
7864            nextDay: '[Yfory am] LT',
7865            nextWeek: 'dddd [am] LT',
7866            lastDay: '[Ddoe am] LT',
7867            lastWeek: 'dddd [diwethaf am] LT',
7868            sameElse: 'L',
7869        },
7870        relativeTime: {
7871            future: 'mewn %s',
7872            past: '%s yn ôl',
7873            s: 'ychydig eiliadau',
7874            ss: '%d eiliad',
7875            m: 'munud',
7876            mm: '%d munud',
7877            h: 'awr',
7878            hh: '%d awr',
7879            d: 'diwrnod',
7880            dd: '%d diwrnod',
7881            M: 'mis',
7882            MM: '%d mis',
7883            y: 'blwyddyn',
7884            yy: '%d flynedd',
7885        },
7886        dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
7887        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
7888        ordinal: function (number) {
7889            var b = number,
7890                output = '',
7891                lookup = [
7892                    '',
7893                    'af',
7894                    'il',
7895                    'ydd',
7896                    'ydd',
7897                    'ed',
7898                    'ed',
7899                    'ed',
7900                    'fed',
7901                    'fed',
7902                    'fed', // 1af to 10fed
7903                    'eg',
7904                    'fed',
7905                    'eg',
7906                    'eg',
7907                    'fed',
7908                    'eg',
7909                    'eg',
7910                    'fed',
7911                    'eg',
7912                    'fed', // 11eg to 20fed
7913                ];
7914            if (b > 20) {
7915                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
7916                    output = 'fed'; // not 30ain, 70ain or 90ain
7917                } else {
7918                    output = 'ain';
7919                }
7920            } else if (b > 0) {
7921                output = lookup[b];
7922            }
7923            return number + output;
7924        },
7925        week: {
7926            dow: 1, // Monday is the first day of the week.
7927            doy: 4, // The week that contains Jan 4th is the first week of the year.
7928        },
7929    });
7930
7931    //! moment.js locale configuration
7932
7933    hooks.defineLocale('da', {
7934        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
7935            '_'
7936        ),
7937        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
7938        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
7939        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
7940        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
7941        longDateFormat: {
7942            LT: 'HH:mm',
7943            LTS: 'HH:mm:ss',
7944            L: 'DD.MM.YYYY',
7945            LL: 'D. MMMM YYYY',
7946            LLL: 'D. MMMM YYYY HH:mm',
7947            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
7948        },
7949        calendar: {
7950            sameDay: '[i dag kl.] LT',
7951            nextDay: '[i morgen kl.] LT',
7952            nextWeek: 'på dddd [kl.] LT',
7953            lastDay: '[i går kl.] LT',
7954            lastWeek: '[i] dddd[s kl.] LT',
7955            sameElse: 'L',
7956        },
7957        relativeTime: {
7958            future: 'om %s',
7959            past: '%s siden',
7960            s: 'få sekunder',
7961            ss: '%d sekunder',
7962            m: 'et minut',
7963            mm: '%d minutter',
7964            h: 'en time',
7965            hh: '%d timer',
7966            d: 'en dag',
7967            dd: '%d dage',
7968            M: 'en måned',
7969            MM: '%d måneder',
7970            y: 'et år',
7971            yy: '%d år',
7972        },
7973        dayOfMonthOrdinalParse: /\d{1,2}\./,
7974        ordinal: '%d.',
7975        week: {
7976            dow: 1, // Monday is the first day of the week.
7977            doy: 4, // The week that contains Jan 4th is the first week of the year.
7978        },
7979    });
7980
7981    //! moment.js locale configuration
7982
7983    function processRelativeTime(number, withoutSuffix, key, isFuture) {
7984        var format = {
7985            m: ['eine Minute', 'einer Minute'],
7986            h: ['eine Stunde', 'einer Stunde'],
7987            d: ['ein Tag', 'einem Tag'],
7988            dd: [number + ' Tage', number + ' Tagen'],
7989            w: ['eine Woche', 'einer Woche'],
7990            M: ['ein Monat', 'einem Monat'],
7991            MM: [number + ' Monate', number + ' Monaten'],
7992            y: ['ein Jahr', 'einem Jahr'],
vendor: 5,219 bytes, lines 7993-8138
7993            yy: [number + ' Jahre', number + ' Jahren'],
7994        };
7995        return withoutSuffix ? format[key][0] : format[key][1];
7996    }
7997
7998    hooks.defineLocale('de-at', {
7999        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
8000            '_'
8001        ),
8002        monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
8003            '_'
8004        ),
8005        monthsParseExact: true,
8006        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
8007            '_'
8008        ),
8009        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
8010        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
8011        weekdaysParseExact: true,
8012        longDateFormat: {
8013            LT: 'HH:mm',
8014            LTS: 'HH:mm:ss',
8015            L: 'DD.MM.YYYY',
8016            LL: 'D. MMMM YYYY',
8017            LLL: 'D. MMMM YYYY HH:mm',
8018            LLLL: 'dddd, D. MMMM YYYY HH:mm',
8019        },
8020        calendar: {
8021            sameDay: '[heute um] LT [Uhr]',
8022            sameElse: 'L',
8023            nextDay: '[morgen um] LT [Uhr]',
8024            nextWeek: 'dddd [um] LT [Uhr]',
8025            lastDay: '[gestern um] LT [Uhr]',
8026            lastWeek: '[letzten] dddd [um] LT [Uhr]',
8027        },
8028        relativeTime: {
8029            future: 'in %s',
8030            past: 'vor %s',
8031            s: 'ein paar Sekunden',
8032            ss: '%d Sekunden',
8033            m: processRelativeTime,
8034            mm: '%d Minuten',
8035            h: processRelativeTime,
8036            hh: '%d Stunden',
8037            d: processRelativeTime,
8038            dd: processRelativeTime,
8039            w: processRelativeTime,
8040            ww: '%d Wochen',
8041            M: processRelativeTime,
8042            MM: processRelativeTime,
8043            y: processRelativeTime,
8044            yy: processRelativeTime,
8045        },
8046        dayOfMonthOrdinalParse: /\d{1,2}\./,
8047        ordinal: '%d.',
8048        week: {
8049            dow: 1, // Monday is the first day of the week.
8050            doy: 4, // The week that contains Jan 4th is the first week of the year.
8051        },
8052    });
8053
8054    //! moment.js locale configuration
8055
8056    function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
8057        var format = {
8058            m: ['eine Minute', 'einer Minute'],
8059            h: ['eine Stunde', 'einer Stunde'],
8060            d: ['ein Tag', 'einem Tag'],
8061            dd: [number + ' Tage', number + ' Tagen'],
8062            w: ['eine Woche', 'einer Woche'],
8063            M: ['ein Monat', 'einem Monat'],
8064            MM: [number + ' Monate', number + ' Monaten'],
8065            y: ['ein Jahr', 'einem Jahr'],
8066            yy: [number + ' Jahre', number + ' Jahren'],
8067        };
8068        return withoutSuffix ? format[key][0] : format[key][1];
8069    }
8070
8071    hooks.defineLocale('de-ch', {
8072        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
8073            '_'
8074        ),
8075        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
8076            '_'
8077        ),
8078        monthsParseExact: true,
8079        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
8080            '_'
8081        ),
8082        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
8083        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
8084        weekdaysParseExact: true,
8085        longDateFormat: {
8086            LT: 'HH:mm',
8087            LTS: 'HH:mm:ss',
8088            L: 'DD.MM.YYYY',
8089            LL: 'D. MMMM YYYY',
8090            LLL: 'D. MMMM YYYY HH:mm',
8091            LLLL: 'dddd, D. MMMM YYYY HH:mm',
8092        },
8093        calendar: {
8094            sameDay: '[heute um] LT [Uhr]',
8095            sameElse: 'L',
8096            nextDay: '[morgen um] LT [Uhr]',
8097            nextWeek: 'dddd [um] LT [Uhr]',
8098            lastDay: '[gestern um] LT [Uhr]',
8099            lastWeek: '[letzten] dddd [um] LT [Uhr]',
8100        },
8101        relativeTime: {
8102            future: 'in %s',
8103            past: 'vor %s',
8104            s: 'ein paar Sekunden',
8105            ss: '%d Sekunden',
8106            m: processRelativeTime$1,
8107            mm: '%d Minuten',
8108            h: processRelativeTime$1,
8109            hh: '%d Stunden',
8110            d: processRelativeTime$1,
8111            dd: processRelativeTime$1,
8112            w: processRelativeTime$1,
8113            ww: '%d Wochen',
8114            M: processRelativeTime$1,
8115            MM: processRelativeTime$1,
8116            y: processRelativeTime$1,
8117            yy: processRelativeTime$1,
8118        },
8119        dayOfMonthOrdinalParse: /\d{1,2}\./,
8120        ordinal: '%d.',
8121        week: {
8122            dow: 1, // Monday is the first day of the week.
8123            doy: 4, // The week that contains Jan 4th is the first week of the year.
8124        },
8125    });
8126
8127    //! moment.js locale configuration
8128
8129    function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
8130        var format = {
8131            m: ['eine Minute', 'einer Minute'],
8132            h: ['eine Stunde', 'einer Stunde'],
8133            d: ['ein Tag', 'einem Tag'],
8134            dd: [number + ' Tage', number + ' Tagen'],
8135            w: ['eine Woche', 'einer Woche'],
8136            M: ['ein Monat', 'einem Monat'],
8137            MM: [number + ' Monate', number + ' Monaten'],
8138            y: ['ein Jahr', 'einem Jahr'],
8139            yy: [number + ' Jahre', number + ' Jahren'],
8140        };
8141        return withoutSuffix ? format[key][0] : format[key][1];
8142    }
8143
8144    hooks.defineLocale('de', {
8145        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
8146            '_'
8147        ),
8148        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
8149            '_'
8150        ),
8151        monthsParseExact: true,
8152        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
8153            '_'
8154        ),
8155        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
8156        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
8157        weekdaysParseExact: true,
8158        longDateFormat: {
8159            LT: 'HH:mm',
8160            LTS: 'HH:mm:ss',
8161            L: 'DD.MM.YYYY',
8162            LL: 'D. MMMM YYYY',
8163            LLL: 'D. MMMM YYYY HH:mm',
8164            LLLL: 'dddd, D. MMMM YYYY HH:mm',
8165        },
8166        calendar: {
8167            sameDay: '[heute um] LT [Uhr]',
8168            sameElse: 'L',
8169            nextDay: '[morgen um] LT [Uhr]',
8170            nextWeek: 'dddd [um] LT [Uhr]',
8171            lastDay: '[gestern um] LT [Uhr]',
8172            lastWeek: '[letzten] dddd [um] LT [Uhr]',
8173        },
8174        relativeTime: {
8175            future: 'in %s',
8176            past: 'vor %s',
8177            s: 'ein paar Sekunden',
8178            ss: '%d Sekunden',
8179            m: processRelativeTime$2,
8180            mm: '%d Minuten',
8181            h: processRelativeTime$2,
8182            hh: '%d Stunden',
8183            d: processRelativeTime$2,
8184            dd: processRelativeTime$2,
8185            w: processRelativeTime$2,
8186            ww: '%d Wochen',
8187            M: processRelativeTime$2,
8188            MM: processRelativeTime$2,
8189            y: processRelativeTime$2,
8190            yy: processRelativeTime$2,
8191        },
8192        dayOfMonthOrdinalParse: /\d{1,2}\./,
8193        ordinal: '%d.',
8194        week: {
8195            dow: 1, // Monday is the first day of the week.
8196            doy: 4, // The week that contains Jan 4th is the first week of the year.
8197        },
8198    });
8199
8200    //! moment.js locale configuration
8201
8202    var months$5 = [
8203            'ޖެނުއަރީ',
8204            'ފެބްރުއަރީ',
8205            'މާރިޗު',
8206            'އޭޕްރީލު',
8207            'މޭ',
8208            'ޖޫން',
8209            'ޖުލައި',
8210            'އޯގަސްޓު',
8211            'ސެޕްޓެމްބަރު',
8212            'އޮކްޓޯބަރު',
8213            'ނޮވެމްބަރު',
8214            'ޑިސެމްބަރު',
8215        ],
8216        weekdays = [
8217            'އާދިއްތަ',
8218            'ހޯމަ',
8219            'އަންގާރަ',
8220            'ބުދަ',
8221            'ބުރާސްފަތި',
8222            'ހުކުރު',
8223            'ހޮނިހިރު',
8224        ];
8225
8226    hooks.defineLocale('dv', {
8227        months: months$5,
8228        monthsShort: months$5,
8229        weekdays: weekdays,
8230        weekdaysShort: weekdays,
8231        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
8232        longDateFormat: {
8233            LT: 'HH:mm',
8234            LTS: 'HH:mm:ss',
8235            L: 'D/M/YYYY',
8236            LL: 'D MMMM YYYY',
8237            LLL: 'D MMMM YYYY HH:mm',
8238            LLLL: 'dddd D MMMM YYYY HH:mm',
8239        },
8240        meridiemParse: /މކ|މފ/,
8241        isPM: function (input) {
8242            return 'މފ' === input;
8243        },
8244        meridiem: function (hour, minute, isLower) {
8245            if (hour < 12) {
8246                return 'މކ';
8247            } else {
8248                return 'މފ';
8249            }
8250        },
8251        calendar: {
8252            sameDay: '[މިއަދު] LT',
8253            nextDay: '[މާދަމާ] LT',
8254            nextWeek: 'dddd LT',
8255            lastDay: '[އިއްޔެ] LT',
8256            lastWeek: '[ފާއިތުވި] dddd LT',
8257            sameElse: 'L',
8258        },
8259        relativeTime: {
8260            future: 'ތެރޭގައި %s',
8261            past: 'ކުރިން %s',
8262            s: 'ސިކުންތުކޮޅެއް',
8263            ss: 'd% ސިކުންތު',
8264            m: 'މިނިޓެއް',
8265            mm: 'މިނިޓު %d',
8266            h: 'ގަޑިއިރެއް',
8267            hh: 'ގަޑިއިރު %d',
8268            d: 'ދުވަހެއް',
8269            dd: 'ދުވަސް %d',
8270            M: 'މަހެއް',
8271            MM: 'މަސް %d',
8272            y: 'އަހަރެއް',
8273            yy: 'އަހަރު %d',
8274        },
8275        preparse: function (string) {
8276            return string.replace(/،/g, ',');
8277        },
8278        postformat: function (string) {
8279            return string.replace(/,/g, '،');
8280        },
8281        week: {
8282            dow: 7, // Sunday is the first day of the week.
8283            doy: 12, // The week that contains Jan 12th is the first week of the year.
8284        },
8285    });
8286
8287    //! moment.js locale configuration
8288
8289    function isFunction$1(input) {
8290        return (
8291            (typeof Function !== 'undefined' && input instanceof Function) ||
8292            Object.prototype.toString.call(input) === '[object Function]'
8293        );
8294    }
8295
8296    hooks.defineLocale('el', {
8297        monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
8298            '_'
8299        ),
8300        monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
8301            '_'
8302        ),
8303        months: function (momentToFormat, format) {
8304            if (!momentToFormat) {
8305                return this._monthsNominativeEl;
8306            } else if (
8307                typeof format === 'string' &&
8308                /D/.test(format.substring(0, format.indexOf('MMMM')))
8309            ) {
8310                // if there is a day number before 'MMMM'
8311                return this._monthsGenitiveEl[momentToFormat.month()];
8312            } else {
8313                return this._monthsNominativeEl[momentToFormat.month()];
8314            }
8315        },
8316        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
8317        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
8318            '_'
8319        ),
8320        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
8321        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
8322        meridiem: function (hours, minutes, isLower) {
8323            if (hours > 11) {
8324                return isLower ? 'μμ' : 'ΜΜ';
8325            } else {
8326                return isLower ? 'πμ' : 'ΠΜ';
8327            }
8328        },
8329        isPM: function (input) {
8330            return (input + '').toLowerCase()[0] === 'μ';
8331        },
8332        meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
8333        longDateFormat: {
8334            LT: 'h:mm A',
8335            LTS: 'h:mm:ss A',
8336            L: 'DD/MM/YYYY',
8337            LL: 'D MMMM YYYY',
8338            LLL: 'D MMMM YYYY h:mm A',
8339            LLLL: 'dddd, D MMMM YYYY h:mm A',
8340        },
8341        calendarEl: {
8342            sameDay: '[Σήμερα {}] LT',
8343            nextDay: '[Αύριο {}] LT',
8344            nextWeek: 'dddd [{}] LT',
8345            lastDay: '[Χθες {}] LT',
8346            lastWeek: function () {
8347                switch (this.day()) {
8348                    case 6:
8349                        return '[το προηγούμενο] dddd [{}] LT';
8350                    default:
8351                        return '[την προηγούμενη] dddd [{}] LT';
8352                }
8353            },
8354            sameElse: 'L',
8355        },
8356        calendar: function (key, mom) {
8357            var output = this._calendarEl[key],
8358                hours = mom && mom.hours();
8359            if (isFunction$1(output)) {
8360                output = output.apply(mom);
8361            }
8362            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
8363        },
8364        relativeTime: {
8365            future: 'σε %s',
8366            past: '%s πριν',
8367            s: 'λίγα δευτερόλεπτα',
8368            ss: '%d δευτερόλεπτα',
8369            m: 'ένα λεπτό',
8370            mm: '%d λεπτά',
8371            h: 'μία ώρα',
8372            hh: '%d ώρες',
8373            d: 'μία μέρα',
8374            dd: '%d μέρες',
vendor: 16,384 bytes, lines 8375-8875
8375            M: 'ένας μήνας',
8376            MM: '%d μήνες',
8377            y: 'ένας χρόνος',
8378            yy: '%d χρόνια',
8379        },
8380        dayOfMonthOrdinalParse: /\d{1,2}η/,
8381        ordinal: '%dη',
8382        week: {
8383            dow: 1, // Monday is the first day of the week.
8384            doy: 4, // The week that contains Jan 4st is the first week of the year.
8385        },
8386    });
8387
8388    //! moment.js locale configuration
8389
8390    hooks.defineLocale('en-au', {
8391        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8392            '_'
8393        ),
8394        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8395        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8396            '_'
8397        ),
8398        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8399        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8400        longDateFormat: {
8401            LT: 'h:mm A',
8402            LTS: 'h:mm:ss A',
8403            L: 'DD/MM/YYYY',
8404            LL: 'D MMMM YYYY',
8405            LLL: 'D MMMM YYYY h:mm A',
8406            LLLL: 'dddd, D MMMM YYYY h:mm A',
8407        },
8408        calendar: {
8409            sameDay: '[Today at] LT',
8410            nextDay: '[Tomorrow at] LT',
8411            nextWeek: 'dddd [at] LT',
8412            lastDay: '[Yesterday at] LT',
8413            lastWeek: '[Last] dddd [at] LT',
8414            sameElse: 'L',
8415        },
8416        relativeTime: {
8417            future: 'in %s',
8418            past: '%s ago',
8419            s: 'a few seconds',
8420            ss: '%d seconds',
8421            m: 'a minute',
8422            mm: '%d minutes',
8423            h: 'an hour',
8424            hh: '%d hours',
8425            d: 'a day',
8426            dd: '%d days',
8427            M: 'a month',
8428            MM: '%d months',
8429            y: 'a year',
8430            yy: '%d years',
8431        },
8432        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8433        ordinal: function (number) {
8434            var b = number % 10,
8435                output =
8436                    ~~((number % 100) / 10) === 1
8437                        ? 'th'
8438                        : b === 1
8439                        ? 'st'
8440                        : b === 2
8441                        ? 'nd'
8442                        : b === 3
8443                        ? 'rd'
8444                        : 'th';
8445            return number + output;
8446        },
8447        week: {
8448            dow: 0, // Sunday is the first day of the week.
8449            doy: 4, // The week that contains Jan 4th is the first week of the year.
8450        },
8451    });
8452
8453    //! moment.js locale configuration
8454
8455    hooks.defineLocale('en-ca', {
8456        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8457            '_'
8458        ),
8459        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8460        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8461            '_'
8462        ),
8463        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8464        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8465        longDateFormat: {
8466            LT: 'h:mm A',
8467            LTS: 'h:mm:ss A',
8468            L: 'YYYY-MM-DD',
8469            LL: 'MMMM D, YYYY',
8470            LLL: 'MMMM D, YYYY h:mm A',
8471            LLLL: 'dddd, MMMM D, YYYY h:mm A',
8472        },
8473        calendar: {
8474            sameDay: '[Today at] LT',
8475            nextDay: '[Tomorrow at] LT',
8476            nextWeek: 'dddd [at] LT',
8477            lastDay: '[Yesterday at] LT',
8478            lastWeek: '[Last] dddd [at] LT',
8479            sameElse: 'L',
8480        },
8481        relativeTime: {
8482            future: 'in %s',
8483            past: '%s ago',
8484            s: 'a few seconds',
8485            ss: '%d seconds',
8486            m: 'a minute',
8487            mm: '%d minutes',
8488            h: 'an hour',
8489            hh: '%d hours',
8490            d: 'a day',
8491            dd: '%d days',
8492            M: 'a month',
8493            MM: '%d months',
8494            y: 'a year',
8495            yy: '%d years',
8496        },
8497        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8498        ordinal: function (number) {
8499            var b = number % 10,
8500                output =
8501                    ~~((number % 100) / 10) === 1
8502                        ? 'th'
8503                        : b === 1
8504                        ? 'st'
8505                        : b === 2
8506                        ? 'nd'
8507                        : b === 3
8508                        ? 'rd'
8509                        : 'th';
8510            return number + output;
8511        },
8512    });
8513
8514    //! moment.js locale configuration
8515
8516    hooks.defineLocale('en-gb', {
8517        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8518            '_'
8519        ),
8520        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8521        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8522            '_'
8523        ),
8524        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8525        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8526        longDateFormat: {
8527            LT: 'HH:mm',
8528            LTS: 'HH:mm:ss',
8529            L: 'DD/MM/YYYY',
8530            LL: 'D MMMM YYYY',
8531            LLL: 'D MMMM YYYY HH:mm',
8532            LLLL: 'dddd, D MMMM YYYY HH:mm',
8533        },
8534        calendar: {
8535            sameDay: '[Today at] LT',
8536            nextDay: '[Tomorrow at] LT',
8537            nextWeek: 'dddd [at] LT',
8538            lastDay: '[Yesterday at] LT',
8539            lastWeek: '[Last] dddd [at] LT',
8540            sameElse: 'L',
8541        },
8542        relativeTime: {
8543            future: 'in %s',
8544            past: '%s ago',
8545            s: 'a few seconds',
8546            ss: '%d seconds',
8547            m: 'a minute',
8548            mm: '%d minutes',
8549            h: 'an hour',
8550            hh: '%d hours',
8551            d: 'a day',
8552            dd: '%d days',
8553            M: 'a month',
8554            MM: '%d months',
8555            y: 'a year',
8556            yy: '%d years',
8557        },
8558        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8559        ordinal: function (number) {
8560            var b = number % 10,
8561                output =
8562                    ~~((number % 100) / 10) === 1
8563                        ? 'th'
8564                        : b === 1
8565                        ? 'st'
8566                        : b === 2
8567                        ? 'nd'
8568                        : b === 3
8569                        ? 'rd'
8570                        : 'th';
8571            return number + output;
8572        },
8573        week: {
8574            dow: 1, // Monday is the first day of the week.
8575            doy: 4, // The week that contains Jan 4th is the first week of the year.
8576        },
8577    });
8578
8579    //! moment.js locale configuration
8580
8581    hooks.defineLocale('en-ie', {
8582        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8583            '_'
8584        ),
8585        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8586        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8587            '_'
8588        ),
8589        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8590        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8591        longDateFormat: {
8592            LT: 'HH:mm',
8593            LTS: 'HH:mm:ss',
8594            L: 'DD/MM/YYYY',
8595            LL: 'D MMMM YYYY',
8596            LLL: 'D MMMM YYYY HH:mm',
8597            LLLL: 'dddd D MMMM YYYY HH:mm',
8598        },
8599        calendar: {
8600            sameDay: '[Today at] LT',
8601            nextDay: '[Tomorrow at] LT',
8602            nextWeek: 'dddd [at] LT',
8603            lastDay: '[Yesterday at] LT',
8604            lastWeek: '[Last] dddd [at] LT',
8605            sameElse: 'L',
8606        },
8607        relativeTime: {
8608            future: 'in %s',
8609            past: '%s ago',
8610            s: 'a few seconds',
8611            ss: '%d seconds',
8612            m: 'a minute',
8613            mm: '%d minutes',
8614            h: 'an hour',
8615            hh: '%d hours',
8616            d: 'a day',
8617            dd: '%d days',
8618            M: 'a month',
8619            MM: '%d months',
8620            y: 'a year',
8621            yy: '%d years',
8622        },
8623        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8624        ordinal: function (number) {
8625            var b = number % 10,
8626                output =
8627                    ~~((number % 100) / 10) === 1
8628                        ? 'th'
8629                        : b === 1
8630                        ? 'st'
8631                        : b === 2
8632                        ? 'nd'
8633                        : b === 3
8634                        ? 'rd'
8635                        : 'th';
8636            return number + output;
8637        },
8638        week: {
8639            dow: 1, // Monday is the first day of the week.
8640            doy: 4, // The week that contains Jan 4th is the first week of the year.
8641        },
8642    });
8643
8644    //! moment.js locale configuration
8645
8646    hooks.defineLocale('en-il', {
8647        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8648            '_'
8649        ),
8650        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8651        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8652            '_'
8653        ),
8654        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8655        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8656        longDateFormat: {
8657            LT: 'HH:mm',
8658            LTS: 'HH:mm:ss',
8659            L: 'DD/MM/YYYY',
8660            LL: 'D MMMM YYYY',
8661            LLL: 'D MMMM YYYY HH:mm',
8662            LLLL: 'dddd, D MMMM YYYY HH:mm',
8663        },
8664        calendar: {
8665            sameDay: '[Today at] LT',
8666            nextDay: '[Tomorrow at] LT',
8667            nextWeek: 'dddd [at] LT',
8668            lastDay: '[Yesterday at] LT',
8669            lastWeek: '[Last] dddd [at] LT',
8670            sameElse: 'L',
8671        },
8672        relativeTime: {
8673            future: 'in %s',
8674            past: '%s ago',
8675            s: 'a few seconds',
8676            ss: '%d seconds',
8677            m: 'a minute',
8678            mm: '%d minutes',
8679            h: 'an hour',
8680            hh: '%d hours',
8681            d: 'a day',
8682            dd: '%d days',
8683            M: 'a month',
8684            MM: '%d months',
8685            y: 'a year',
8686            yy: '%d years',
8687        },
8688        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8689        ordinal: function (number) {
8690            var b = number % 10,
8691                output =
8692                    ~~((number % 100) / 10) === 1
8693                        ? 'th'
8694                        : b === 1
8695                        ? 'st'
8696                        : b === 2
8697                        ? 'nd'
8698                        : b === 3
8699                        ? 'rd'
8700                        : 'th';
8701            return number + output;
8702        },
8703    });
8704
8705    //! moment.js locale configuration
8706
8707    hooks.defineLocale('en-in', {
8708        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8709            '_'
8710        ),
8711        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8712        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8713            '_'
8714        ),
8715        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8716        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8717        longDateFormat: {
8718            LT: 'h:mm A',
8719            LTS: 'h:mm:ss A',
8720            L: 'DD/MM/YYYY',
8721            LL: 'D MMMM YYYY',
8722            LLL: 'D MMMM YYYY h:mm A',
8723            LLLL: 'dddd, D MMMM YYYY h:mm A',
8724        },
8725        calendar: {
8726            sameDay: '[Today at] LT',
8727            nextDay: '[Tomorrow at] LT',
8728            nextWeek: 'dddd [at] LT',
8729            lastDay: '[Yesterday at] LT',
8730            lastWeek: '[Last] dddd [at] LT',
8731            sameElse: 'L',
8732        },
8733        relativeTime: {
8734            future: 'in %s',
8735            past: '%s ago',
8736            s: 'a few seconds',
8737            ss: '%d seconds',
8738            m: 'a minute',
8739            mm: '%d minutes',
8740            h: 'an hour',
8741            hh: '%d hours',
8742            d: 'a day',
8743            dd: '%d days',
8744            M: 'a month',
8745            MM: '%d months',
8746            y: 'a year',
8747            yy: '%d years',
8748        },
8749        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8750        ordinal: function (number) {
8751            var b = number % 10,
8752                output =
8753                    ~~((number % 100) / 10) === 1
8754                        ? 'th'
8755                        : b === 1
8756                        ? 'st'
8757                        : b === 2
8758                        ? 'nd'
8759                        : b === 3
8760                        ? 'rd'
8761                        : 'th';
8762            return number + output;
8763        },
8764        week: {
8765            dow: 0, // Sunday is the first day of the week.
8766            doy: 6, // The week that contains Jan 1st is the first week of the year.
8767        },
8768    });
8769
8770    //! moment.js locale configuration
8771
8772    hooks.defineLocale('en-nz', {
8773        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8774            '_'
8775        ),
8776        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8777        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8778            '_'
8779        ),
8780        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8781        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8782        longDateFormat: {
8783            LT: 'h:mm A',
8784            LTS: 'h:mm:ss A',
8785            L: 'DD/MM/YYYY',
8786            LL: 'D MMMM YYYY',
8787            LLL: 'D MMMM YYYY h:mm A',
8788            LLLL: 'dddd, D MMMM YYYY h:mm A',
8789        },
8790        calendar: {
8791            sameDay: '[Today at] LT',
8792            nextDay: '[Tomorrow at] LT',
8793            nextWeek: 'dddd [at] LT',
8794            lastDay: '[Yesterday at] LT',
8795            lastWeek: '[Last] dddd [at] LT',
8796            sameElse: 'L',
8797        },
8798        relativeTime: {
8799            future: 'in %s',
8800            past: '%s ago',
8801            s: 'a few seconds',
8802            ss: '%d seconds',
8803            m: 'a minute',
8804            mm: '%d minutes',
8805            h: 'an hour',
8806            hh: '%d hours',
8807            d: 'a day',
8808            dd: '%d days',
8809            M: 'a month',
8810            MM: '%d months',
8811            y: 'a year',
8812            yy: '%d years',
8813        },
8814        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8815        ordinal: function (number) {
8816            var b = number % 10,
8817                output =
8818                    ~~((number % 100) / 10) === 1
8819                        ? 'th'
8820                        : b === 1
8821                        ? 'st'
8822                        : b === 2
8823                        ? 'nd'
8824                        : b === 3
8825                        ? 'rd'
8826                        : 'th';
8827            return number + output;
8828        },
8829        week: {
8830            dow: 1, // Monday is the first day of the week.
8831            doy: 4, // The week that contains Jan 4th is the first week of the year.
8832        },
8833    });
8834
8835    //! moment.js locale configuration
8836
8837    hooks.defineLocale('en-sg', {
8838        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8839            '_'
8840        ),
8841        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8842        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8843            '_'
8844        ),
8845        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8846        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8847        longDateFormat: {
8848            LT: 'HH:mm',
8849            LTS: 'HH:mm:ss',
8850            L: 'DD/MM/YYYY',
8851            LL: 'D MMMM YYYY',
8852            LLL: 'D MMMM YYYY HH:mm',
8853            LLLL: 'dddd, D MMMM YYYY HH:mm',
8854        },
8855        calendar: {
8856            sameDay: '[Today at] LT',
8857            nextDay: '[Tomorrow at] LT',
8858            nextWeek: 'dddd [at] LT',
8859            lastDay: '[Yesterday at] LT',
8860            lastWeek: '[Last] dddd [at] LT',
8861            sameElse: 'L',
8862        },
8863        relativeTime: {
8864            future: 'in %s',
8865            past: '%s ago',
8866            s: 'a few seconds',
8867            ss: '%d seconds',
8868            m: 'a minute',
8869            mm: '%d minutes',
8870            h: 'an hour',
8871            hh: '%d hours',
8872            d: 'a day',
8873            dd: '%d days',
8874            M: 'a month',
8875          
vendor: 16,384 bytes, lines 8875-9323
8875  MM: '%d months',
8876            y: 'a year',
8877            yy: '%d years',
8878        },
8879        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8880        ordinal: function (number) {
8881            var b = number % 10,
8882                output =
8883                    ~~((number % 100) / 10) === 1
8884                        ? 'th'
8885                        : b === 1
8886                        ? 'st'
8887                        : b === 2
8888                        ? 'nd'
8889                        : b === 3
8890                        ? 'rd'
8891                        : 'th';
8892            return number + output;
8893        },
8894        week: {
8895            dow: 1, // Monday is the first day of the week.
8896            doy: 4, // The week that contains Jan 4th is the first week of the year.
8897        },
8898    });
8899
8900    //! moment.js locale configuration
8901
8902    hooks.defineLocale('eo', {
8903        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro'.split(
8904            '_'
8905        ),
8906        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aÅ­g_sept_okt_nov_dec'.split('_'),
8907        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
8908        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
8909        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
8910        longDateFormat: {
8911            LT: 'HH:mm',
8912            LTS: 'HH:mm:ss',
8913            L: 'YYYY-MM-DD',
8914            LL: '[la] D[-an de] MMMM, YYYY',
8915            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
8916            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
8917            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
8918        },
8919        meridiemParse: /[ap]\.t\.m/i,
8920        isPM: function (input) {
8921            return input.charAt(0).toLowerCase() === 'p';
8922        },
8923        meridiem: function (hours, minutes, isLower) {
8924            if (hours > 11) {
8925                return isLower ? 'p.t.m.' : 'P.T.M.';
8926            } else {
8927                return isLower ? 'a.t.m.' : 'A.T.M.';
8928            }
8929        },
8930        calendar: {
8931            sameDay: '[HodiaÅ­ je] LT',
8932            nextDay: '[MorgaÅ­ je] LT',
8933            nextWeek: 'dddd[n je] LT',
8934            lastDay: '[HieraÅ­ je] LT',
8935            lastWeek: '[pasintan] dddd[n je] LT',
8936            sameElse: 'L',
8937        },
8938        relativeTime: {
8939            future: 'post %s',
8940            past: 'antaÅ­ %s',
8941            s: 'kelkaj sekundoj',
8942            ss: '%d sekundoj',
8943            m: 'unu minuto',
8944            mm: '%d minutoj',
8945            h: 'unu horo',
8946            hh: '%d horoj',
8947            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
8948            dd: '%d tagoj',
8949            M: 'unu monato',
8950            MM: '%d monatoj',
8951            y: 'unu jaro',
8952            yy: '%d jaroj',
8953        },
8954        dayOfMonthOrdinalParse: /\d{1,2}a/,
8955        ordinal: '%da',
8956        week: {
8957            dow: 1, // Monday is the first day of the week.
8958            doy: 7, // The week that contains Jan 7th is the first week of the year.
8959        },
8960    });
8961
8962    //! moment.js locale configuration
8963
8964    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
8965            '_'
8966        ),
8967        monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
8968        monthsParse$2 = [
8969            /^ene/i,
8970            /^feb/i,
8971            /^mar/i,
8972            /^abr/i,
8973            /^may/i,
8974            /^jun/i,
8975            /^jul/i,
8976            /^ago/i,
8977            /^sep/i,
8978            /^oct/i,
8979            /^nov/i,
8980            /^dic/i,
8981        ],
8982        monthsRegex$3 = /^(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;
8983
8984    hooks.defineLocale('es-do', {
8985        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
8986            '_'
8987        ),
8988        monthsShort: function (m, format) {
8989            if (!m) {
8990                return monthsShortDot;
8991            } else if (/-MMM-/.test(format)) {
8992                return monthsShort$1[m.month()];
8993            } else {
8994                return monthsShortDot[m.month()];
8995            }
8996        },
8997        monthsRegex: monthsRegex$3,
8998        monthsShortRegex: monthsRegex$3,
8999        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
9000        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
9001        monthsParse: monthsParse$2,
9002        longMonthsParse: monthsParse$2,
9003        shortMonthsParse: monthsParse$2,
9004        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
9005        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
9006        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
9007        weekdaysParseExact: true,
9008        longDateFormat: {
9009            LT: 'h:mm A',
9010            LTS: 'h:mm:ss A',
9011            L: 'DD/MM/YYYY',
9012            LL: 'D [de] MMMM [de] YYYY',
9013            LLL: 'D [de] MMMM [de] YYYY h:mm A',
9014            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
9015        },
9016        calendar: {
9017            sameDay: function () {
9018                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9019            },
9020            nextDay: function () {
9021                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9022            },
9023            nextWeek: function () {
9024                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9025            },
9026            lastDay: function () {
9027                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9028            },
9029            lastWeek: function () {
9030                return (
9031                    '[el] dddd [pasado a la' +
9032                    (this.hours() !== 1 ? 's' : '') +
9033                    '] LT'
9034                );
9035            },
9036            sameElse: 'L',
9037        },
9038        relativeTime: {
9039            future: 'en %s',
9040            past: 'hace %s',
9041            s: 'unos segundos',
9042            ss: '%d segundos',
9043            m: 'un minuto',
9044            mm: '%d minutos',
9045            h: 'una hora',
9046            hh: '%d horas',
9047            d: 'un día',
9048            dd: '%d días',
9049            w: 'una semana',
9050            ww: '%d semanas',
9051            M: 'un mes',
9052            MM: '%d meses',
9053            y: 'un año',
9054            yy: '%d años',
9055        },
9056        dayOfMonthOrdinalParse: /\d{1,2}º/,
9057        ordinal: '%dº',
9058        week: {
9059            dow: 1, // Monday is the first day of the week.
9060            doy: 4, // The week that contains Jan 4th is the first week of the year.
9061        },
9062    });
9063
9064    //! moment.js locale configuration
9065
9066    var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
9067            '_'
9068        ),
9069        monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
9070        monthsParse$3 = [
9071            /^ene/i,
9072            /^feb/i,
9073            /^mar/i,
9074            /^abr/i,
9075            /^may/i,
9076            /^jun/i,
9077            /^jul/i,
9078            /^ago/i,
9079            /^sep/i,
9080            /^oct/i,
9081            /^nov/i,
9082            /^dic/i,
9083        ],
9084        monthsRegex$4 = /^(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;
9085
9086    hooks.defineLocale('es-mx', {
9087        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
9088            '_'
9089        ),
9090        monthsShort: function (m, format) {
9091            if (!m) {
9092                return monthsShortDot$1;
9093            } else if (/-MMM-/.test(format)) {
9094                return monthsShort$2[m.month()];
9095            } else {
9096                return monthsShortDot$1[m.month()];
9097            }
9098        },
9099        monthsRegex: monthsRegex$4,
9100        monthsShortRegex: monthsRegex$4,
9101        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
9102        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
9103        monthsParse: monthsParse$3,
9104        longMonthsParse: monthsParse$3,
9105        shortMonthsParse: monthsParse$3,
9106        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
9107        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
9108        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
9109        weekdaysParseExact: true,
9110        longDateFormat: {
9111            LT: 'H:mm',
9112            LTS: 'H:mm:ss',
9113            L: 'DD/MM/YYYY',
9114            LL: 'D [de] MMMM [de] YYYY',
9115            LLL: 'D [de] MMMM [de] YYYY H:mm',
9116            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
9117        },
9118        calendar: {
9119            sameDay: function () {
9120                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9121            },
9122            nextDay: function () {
9123                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9124            },
9125            nextWeek: function () {
9126                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9127            },
9128            lastDay: function () {
9129                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9130            },
9131            lastWeek: function () {
9132                return (
9133                    '[el] dddd [pasado a la' +
9134                    (this.hours() !== 1 ? 's' : '') +
9135                    '] LT'
9136                );
9137            },
9138            sameElse: 'L',
9139        },
9140        relativeTime: {
9141            future: 'en %s',
9142            past: 'hace %s',
9143            s: 'unos segundos',
9144            ss: '%d segundos',
9145            m: 'un minuto',
9146            mm: '%d minutos',
9147            h: 'una hora',
9148            hh: '%d horas',
9149            d: 'un día',
9150            dd: '%d días',
9151            w: 'una semana',
9152            ww: '%d semanas',
9153            M: 'un mes',
9154            MM: '%d meses',
9155            y: 'un año',
9156            yy: '%d años',
9157        },
9158        dayOfMonthOrdinalParse: /\d{1,2}º/,
9159        ordinal: '%dº',
9160        week: {
9161            dow: 0, // Sunday is the first day of the week.
9162            doy: 4, // The week that contains Jan 4th is the first week of the year.
9163        },
9164        invalidDate: 'Fecha inválida',
9165    });
9166
9167    //! moment.js locale configuration
9168
9169    var monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
9170            '_'
9171        ),
9172        monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
9173        monthsParse$4 = [
9174            /^ene/i,
9175            /^feb/i,
9176            /^mar/i,
9177            /^abr/i,
9178            /^may/i,
9179            /^jun/i,
9180            /^jul/i,
9181            /^ago/i,
9182            /^sep/i,
9183            /^oct/i,
9184            /^nov/i,
9185            /^dic/i,
9186        ],
9187        monthsRegex$5 = /^(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;
9188
9189    hooks.defineLocale('es-us', {
9190        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
9191            '_'
9192        ),
9193        monthsShort: function (m, format) {
9194            if (!m) {
9195                return monthsShortDot$2;
9196            } else if (/-MMM-/.test(format)) {
9197                return monthsShort$3[m.month()];
9198            } else {
9199                return monthsShortDot$2[m.month()];
9200            }
9201        },
9202        monthsRegex: monthsRegex$5,
9203        monthsShortRegex: monthsRegex$5,
9204        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
9205        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
9206        monthsParse: monthsParse$4,
9207        longMonthsParse: monthsParse$4,
9208        shortMonthsParse: monthsParse$4,
9209        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
9210        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
9211        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
9212        weekdaysParseExact: true,
9213        longDateFormat: {
9214            LT: 'h:mm A',
9215            LTS: 'h:mm:ss A',
9216            L: 'MM/DD/YYYY',
9217            LL: 'D [de] MMMM [de] YYYY',
9218            LLL: 'D [de] MMMM [de] YYYY h:mm A',
9219            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
9220        },
9221        calendar: {
9222            sameDay: function () {
9223                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9224            },
9225            nextDay: function () {
9226                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9227            },
9228            nextWeek: function () {
9229                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9230            },
9231            lastDay: function () {
9232                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9233            },
9234            lastWeek: function () {
9235                return (
9236                    '[el] dddd [pasado a la' +
9237                    (this.hours() !== 1 ? 's' : '') +
9238                    '] LT'
9239                );
9240            },
9241            sameElse: 'L',
9242        },
9243        relativeTime: {
9244            future: 'en %s',
9245            past: 'hace %s',
9246            s: 'unos segundos',
9247            ss: '%d segundos',
9248            m: 'un minuto',
9249            mm: '%d minutos',
9250            h: 'una hora',
9251            hh: '%d horas',
9252            d: 'un día',
9253            dd: '%d días',
9254            w: 'una semana',
9255            ww: '%d semanas',
9256            M: 'un mes',
9257            MM: '%d meses',
9258            y: 'un año',
9259            yy: '%d años',
9260        },
9261        dayOfMonthOrdinalParse: /\d{1,2}º/,
9262        ordinal: '%dº',
9263        week: {
9264            dow: 0, // Sunday is the first day of the week.
9265            doy: 6, // The week that contains Jan 6th is the first week of the year.
9266        },
9267    });
9268
9269    //! moment.js locale configuration
9270
9271    var monthsShortDot$3 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
9272            '_'
9273        ),
9274        monthsShort$4 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
9275        monthsParse$5 = [
9276            /^ene/i,
9277            /^feb/i,
9278            /^mar/i,
9279            /^abr/i,
9280            /^may/i,
9281            /^jun/i,
9282            /^jul/i,
9283            /^ago/i,
9284            /^sep/i,
9285            /^oct/i,
9286            /^nov/i,
9287            /^dic/i,
9288        ],
9289        monthsRegex$6 = /^(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;
9290
9291    hooks.defineLocale('es', {
9292        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
9293            '_'
9294        ),
9295        monthsShort: function (m, format) {
9296            if (!m) {
9297                return monthsShortDot$3;
9298            } else if (/-MMM-/.test(format)) {
9299                return monthsShort$4[m.month()];
9300            } else {
9301                return monthsShortDot$3[m.month()];
9302            }
9303        },
9304        monthsRegex: monthsRegex$6,
9305        monthsShortRegex: monthsRegex$6,
9306        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
9307        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
9308        monthsParse: monthsParse$5,
9309        longMonthsParse: monthsParse$5,
9310        shortMonthsParse: monthsParse$5,
9311        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
9312        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
9313        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
9314        weekdaysParseExact: true,
9315        longDateFormat: {
9316            LT: 'H:mm',
9317            LTS: 'H:mm:ss',
9318            L: 'DD/MM/YYYY',
9319            LL: 'D [de] MMMM [de] YYYY',
9320            LLL: 'D [de] MMMM [de] YYYY H:mm',
9321            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
9322        },
9323        calenda
9323r: {
9324            sameDay: function () {
9325                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9326            },
9327            nextDay: function () {
9328                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9329            },
9330            nextWeek: function () {
9331                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9332            },
9333            lastDay: function () {
9334                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9335            },
9336            lastWeek: function () {
9337                return (
9338                    '[el] dddd [pasado a la' +
9339                    (this.hours() !== 1 ? 's' : '') +
9340                    '] LT'
9341                );
9342            },
9343            sameElse: 'L',
9344        },
9345        relativeTime: {
9346            future: 'en %s',
9347            past: 'hace %s',
9348            s: 'unos segundos',
9349            ss: '%d segundos',
9350            m: 'un minuto',
9351            mm: '%d minutos',
9352            h: 'una hora',
9353            hh: '%d horas',
9354            d: 'un día',
9355            dd: '%d días',
9356            w: 'una semana',
9357            ww: '%d semanas',
9358            M: 'un mes',
9359            MM: '%d meses',
9360            y: 'un año',
9361            yy: '%d años',
9362        },
9363        dayOfMonthOrdinalParse: /\d{1,2}º/,
9364        ordinal: '%dº',
9365        week: {
9366            dow: 1, // Monday is the first day of the week.
9367            doy: 4, // The week that contains Jan 4th is the first week of the year.
9368        },
9369        invalidDate: 'Fecha inválida',
9370    });
9371
9372    //! moment.js locale configuration
9373
9374    function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
9375        var format = {
9376            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
9377            ss: [number + 'sekundi', number + 'sekundit'],
9378            m: ['ühe minuti', 'üks minut'],
9379            mm: [number + ' minuti', number + ' minutit'],
9380            h: ['ühe tunni', 'tund aega', 'üks tund'],
9381            hh: [number + ' tunni', number + ' tundi'],
9382            d: ['ühe päeva', 'üks päev'],
9383            M: ['kuu aja', 'kuu aega', 'üks kuu'],
9384            MM: [number + ' kuu', number + ' kuud'],
9385            y: ['ühe aasta', 'aasta', 'üks aasta'],
9386            yy: [number + ' aasta', number + ' aastat'],
9387        };
9388        if (withoutSuffix) {
9389            return format[key][2] ? format[key][2] : format[key][1];
9390        }
9391        return isFuture ? format[key][0] : format[key][1];
9392    }
9393
9394    hooks.defineLocale('et', {
9395        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
9396            '_'
9397        ),
9398        monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(
9399            '_'
9400        ),
9401        weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
9402            '_'
9403        ),
9404        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
9405        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
9406        longDateFormat: {
9407            LT: 'H:mm',
9408            LTS: 'H:mm:ss',
9409            L: 'DD.MM.YYYY',
9410            LL: 'D. MMMM YYYY',
9411            LLL: 'D. MMMM YYYY H:mm',
9412            LLLL: 'dddd, D. MMMM YYYY H:mm',
9413        },
9414        calendar: {
9415            sameDay: '[Täna,] LT',
9416            nextDay: '[Homme,] LT',
9417            nextWeek: '[Järgmine] dddd LT',
9418            lastDay: '[Eile,] LT',
9419            lastWeek: '[Eelmine] dddd LT',
9420            sameElse: 'L',
9421        },
9422        relativeTime: {
9423            future: '%s pärast',
9424            past: '%s tagasi',
9425            s: processRelativeTime$3,
9426            ss: processRelativeTime$3,
9427            m: processRelativeTime$3,
9428            mm: processRelativeTime$3,
9429            h: processRelativeTime$3,
9430            hh: processRelativeTime$3,
9431            d: processRelativeTime$3,
9432            dd: '%d päeva',
9433            M: processRelativeTime$3,
9434            MM: processRelativeTime$3,
9435            y: processRelativeTime$3,
9436            yy: processRelativeTime$3,
9437        },
9438        dayOfMonthOrdinalParse: /\d{1,2}\./,
9439        ordinal: '%d.',
9440        week: {
9441            dow: 1, // Monday is the first day of the week.
9442            doy: 4, // The week that contains Jan 4th is the first week of the year.
9443        },
9444    });
9445
9446    //! moment.js locale configuration
9447
9448    hooks.defineLocale('eu', {
9449        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
9450            '_'
9451        ),
9452        monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
9453            '_'
9454        ),
9455        monthsParseExact: true,
9456        weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
9457            '_'
9458        ),
9459        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
9460        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
9461        weekdaysParseExact: true,
9462        longDateFormat: {
9463            LT: 'HH:mm',
9464            LTS: 'HH:mm:ss',
9465            L: 'YYYY-MM-DD',
9466            LL: 'YYYY[ko] MMMM[ren] D[a]',
9467            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
9468            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
9469            l: 'YYYY-M-D',
9470            ll: 'YYYY[ko] MMM D[a]',
9471            lll: 'YYYY[ko] MMM D[a] HH:mm',
9472            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
9473        },
9474        calendar: {
9475            sameDay: '[gaur] LT[etan]',
9476            nextDay: '[bihar] LT[etan]',
9477            nextWeek: 'dddd LT[etan]',
9478            lastDay: '[atzo] LT[etan]',
9479            lastWeek: '[aurreko] dddd LT[etan]',
9480            sameElse: 'L',
9481        },
9482        relativeTime: {
9483            future: '%s barru',
9484            past: 'duela %s',
9485            s: 'segundo batzuk',
9486            ss: '%d segundo',
9487            m: 'minutu bat',
9488            mm: '%d minutu',
9489            h: 'ordu bat',
9490            hh: '%d ordu',
9491            d: 'egun bat',
9492            dd: '%d egun',
9493            M: 'hilabete bat',
9494            MM: '%d hilabete',
9495            y: 'urte bat',
9496            yy: '%d urte',
9497        },
9498        dayOfMonthOrdinalParse: /\d{1,2}\./,
9499        ordinal: '%d.',
9500        week: {
9501            dow: 1, // Monday is the first day of the week.
9502            doy: 7, // The week that contains Jan 7th is the first week of the year.
9503        },
9504    });
9505
9506    //! moment.js locale configuration
9507
9508    var symbolMap$6 = {
9509            1: 'Û±',
9510            2: 'Û²',
9511            3: 'Û³',
9512            4: 'Û´',
9513            5: 'Ûµ',
9514            6: 'Û¶',
9515            7: 'Û·',
9516            8: 'Û¸',
9517            9: 'Û¹',
9518            0: 'Û°',
9519        },
9520        numberMap$5 = {
9521            'Û±': '1',
9522            'Û²': '2',
9523            'Û³': '3',
9524            'Û´': '4',
9525            'Ûµ': '5',
9526            'Û¶': '6',
9527            'Û·': '7',
9528            'Û¸': '8',
9529            'Û¹': '9',
9530            'Û°': '0',
9531        };
9532
9533    hooks.defineLocale('fa', {
9534        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
9535            '_'
9536        ),
9537        monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
9538            '_'
9539        ),
9540        weekdays: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
9541            '_'
9542        ),
9543        weekdaysShort: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
9544            '_'
9545        ),
9546        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
9547        weekdaysParseExact: true,
9548        longDateFormat: {
9549            LT: 'HH:mm',
9550            LTS: 'HH:mm:ss',
9551            L: 'DD/MM/YYYY',
9552            LL: 'D MMMM YYYY',
9553            LLL: 'D MMMM YYYY HH:mm',
9554            LLLL: 'dddd, D MMMM YYYY HH:mm',
9555        },
9556        meridiemParse: /قبل از ظهر|بعد از ظهر/,
9557        isPM: function (input) {
9558            return /بعد از ظهر/.test(input);
9559        },
9560        meridiem: function (hour, minute, isLower) {
9561            if (hour < 12) {
9562                return 'قبل از ظهر';
9563            } else {
9564                return 'بعد از ظهر';
9565            }
9566        },
9567        calendar: {
9568            sameDay: '[امروز ساعت] LT',
9569            nextDay: '[فردا ساعت] LT',
9570            nextWeek: 'dddd [ساعت] LT',
9571            lastDay: '[دیروز ساعت] LT',
9572            lastWeek: 'dddd [پیش] [ساعت] LT',
9573            sameElse: 'L',
9574        },
9575        relativeTime: {
9576            future: 'در %s',
9577            past: '%s پیش',
9578            s: 'چند ثانیه',
9579            ss: '%d ثانیه',
9580            m: 'یک دقیقه',
9581            mm: '%d دقیقه',
9582            h: 'یک ساعت',
9583            hh: '%d ساعت',
9584            d: 'یک روز',
9585            dd: '%d روز',
9586            M: 'یک ماه',
9587            MM: '%d ماه',
9588            y: 'یک سال',
9589            yy: '%d سال',
9590        },
9591        preparse: function (string) {
9592            return string
9593                .replace(/[Û°-Û¹]/g, function (match) {
9594                    return numberMap$5[match];
9595                })
9596                .replace(/،/g, ',');
9597        },
9598        postformat: function (string) {
9599            return string
9600                .replace(/\d/g, function (match) {
9601                    return symbolMap$6[match];
9602                })
9603                .replace(/,/g, '،');
9604        },
9605        dayOfMonthOrdinalParse: /\d{1,2}م/,
9606        ordinal: '%dم',
9607        week: {
9608            dow: 6, // Saturday is the first day of the week.
9609            doy: 12, // The week that contains Jan 12th is the first week of the year.
9610        },
9611    });
9612
9613    //! moment.js locale configuration
9614
9615    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
9616            ' '
9617        ),
9618        numbersFuture = [
9619            'nolla',
9620            'yhden',
9621            'kahden',
9622            'kolmen',
9623            'neljän',
9624            'viiden',
9625            'kuuden',
9626            numbersPast[7],
9627            numbersPast[8],
9628            numbersPast[9],
9629        ];
9630    function translate$2(number, withoutSuffix, key, isFuture) {
9631        var result = '';
9632        switch (key) {
9633            case 's':
9634                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
9635            case 'ss':
9636                result = isFuture ? 'sekunnin' : 'sekuntia';
9637                break;
9638            case 'm':
9639                return isFuture ? 'minuutin' : 'minuutti';
9640            case 'mm':
9641                result = isFuture ? 'minuutin' : 'minuuttia';
9642                break;
9643            case 'h':
9644                return isFuture ? 'tunnin' : 'tunti';
9645            case 'hh':
9646                result = isFuture ? 'tunnin' : 'tuntia';
9647                break;
9648            case 'd':
9649                return isFuture ? 'päivän' : 'päivä';
9650            case 'dd':
9651                result = isFuture ? 'päivän' : 'päivää';
9652                break;
9653            case 'M':
9654                return isFuture ? 'kuukauden' : 'kuukausi';
9655            case 'MM':
9656                result = isFuture ? 'kuukauden' : 'kuukautta';
9657                break;
9658            case 'y':
9659                return isFuture ? 'vuoden' : 'vuosi';
9660            case 'yy':
9661                result = isFuture ? 'vuoden' : 'vuotta';
9662                break;
9663        }
9664        result = verbalNumber(number, isFuture) + ' ' + result;
9665        return result;
9666    }
9667    function verbalNumber(number, isFuture) {
9668        return number < 10
9669            ? isFuture
9670                ? numbersFuture[number]
9671                : numbersPast[number]
9672            : number;
9673    }
9674
9675    hooks.defineLocale('fi', {
9676        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
9677            '_'
9678        ),
9679        monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
9680            '_'
9681        ),
9682        weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
9683            '_'
9684        ),
9685        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
9686        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
9687        longDateFormat: {
9688            LT: 'HH.mm',
9689            LTS: 'HH.mm.ss',
9690            L: 'DD.MM.YYYY',
9691            LL: 'Do MMMM[ta] YYYY',
9692            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
9693            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
9694            l: 'D.M.YYYY',
9695            ll: 'Do MMM YYYY',
9696            lll: 'Do MMM YYYY, [klo] HH.mm',
9697            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
9698        },
9699        calendar: {
9700            sameDay: '[tänään] [klo] LT',
9701            nextDay: '[huomenna] [klo] LT',
9702            nextWeek: 'dddd [klo] LT',
9703            lastDay: '[eilen] [klo] LT',
9704            lastWeek: '[viime] dddd[na] [klo] LT',
9705            sameElse: 'L',
9706        },
9707        relativeTime: {
9708            future: '%s päästä',
9709            past: '%s sitten',
9710            s: translate$2,
9711            ss: translate$2,
9712            m: translate$2,
9713            mm: translate$2,
9714            h: translate$2,
9715            hh: translate$2,
9716            d: translate$2,
9717            dd: translate$2,
9718            M: translate$2,
9719            MM: translate$2,
9720            y: translate$2,
9721            yy: translate$2,
9722        },
9723        dayOfMonthOrdinalParse: /\d{1,2}\./,
9724        ordinal: '%d.',
9725        week: {
9726            dow: 1, // Monday is the first day of the week.
9727            doy: 4, // The week that contains Jan 4th is the first week of the year.
9728        },
9729    });
9730
9731    //! moment.js locale configuration
9732
9733    hooks.defineLocale('fil', {
9734        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
9735            '_'
9736        ),
9737        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
9738        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
9739            '_'
9740        ),
9741        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
9742        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
9743        longDateFormat: {
9744            LT: 'HH:mm',
9745            LTS: 'HH:mm:ss',
9746            L: 'MM/D/YYYY',
9747            LL: 'MMMM D, YYYY',
9748            LLL: 'MMMM D, YYYY HH:mm',
9749            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
9750        },
9751        calendar: {
9752            sameDay: 'LT [ngayong araw]',
9753            nextDay: '[Bukas ng] LT',
9754            nextWeek: 'LT [sa susunod na] dddd',
9755            lastDay: 'LT [kahapon]',
9756            lastWeek: 'LT [noong nakaraang] dddd',
9757            sameElse: 'L',
9758        },
9759        relativeTime: {
9760            future: 'sa loob ng %s',
9761            past: '%s ang nakalipas',
9762            s: 'ilang segundo',
9763            ss: '%d segundo',
9764            m: 'isang minuto',
9765            mm: '%d minuto',
9766            h: 'isang oras',
9767            hh: '%d oras',
9768            d: 'isang araw',
9769            dd: '%d araw',
vendor: 12,331 bytes, lines 9770-10129
9770            M: 'isang buwan',
9771            MM: '%d buwan',
9772            y: 'isang taon',
9773            yy: '%d taon',
9774        },
9775        dayOfMonthOrdinalParse: /\d{1,2}/,
9776        ordinal: function (number) {
9777            return number;
9778        },
9779        week: {
9780            dow: 1, // Monday is the first day of the week.
9781            doy: 4, // The week that contains Jan 4th is the first week of the year.
9782        },
9783    });
9784
9785    //! moment.js locale configuration
9786
9787    hooks.defineLocale('fo', {
9788        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
9789            '_'
9790        ),
9791        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
9792        weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
9793            '_'
9794        ),
9795        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
9796        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
9797        longDateFormat: {
9798            LT: 'HH:mm',
9799            LTS: 'HH:mm:ss',
9800            L: 'DD/MM/YYYY',
9801            LL: 'D MMMM YYYY',
9802            LLL: 'D MMMM YYYY HH:mm',
9803            LLLL: 'dddd D. MMMM, YYYY HH:mm',
9804        },
9805        calendar: {
9806            sameDay: '[Í dag kl.] LT',
9807            nextDay: '[Í morgin kl.] LT',
9808            nextWeek: 'dddd [kl.] LT',
9809            lastDay: '[Í gjár kl.] LT',
9810            lastWeek: '[síðstu] dddd [kl] LT',
9811            sameElse: 'L',
9812        },
9813        relativeTime: {
9814            future: 'um %s',
9815            past: '%s síðani',
9816            s: 'fá sekund',
9817            ss: '%d sekundir',
9818            m: 'ein minuttur',
9819            mm: '%d minuttir',
9820            h: 'ein tími',
9821            hh: '%d tímar',
9822            d: 'ein dagur',
9823            dd: '%d dagar',
9824            M: 'ein mánaður',
9825            MM: '%d mánaðir',
9826            y: 'eitt ár',
9827            yy: '%d ár',
9828        },
9829        dayOfMonthOrdinalParse: /\d{1,2}\./,
9830        ordinal: '%d.',
9831        week: {
9832            dow: 1, // Monday is the first day of the week.
9833            doy: 4, // The week that contains Jan 4th is the first week of the year.
9834        },
9835    });
9836
9837    //! moment.js locale configuration
9838
9839    hooks.defineLocale('fr-ca', {
9840        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
9841            '_'
9842        ),
9843        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
9844            '_'
9845        ),
9846        monthsParseExact: true,
9847        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
9848        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
9849        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
9850        weekdaysParseExact: true,
9851        longDateFormat: {
9852            LT: 'HH:mm',
9853            LTS: 'HH:mm:ss',
9854            L: 'YYYY-MM-DD',
9855            LL: 'D MMMM YYYY',
9856            LLL: 'D MMMM YYYY HH:mm',
9857            LLLL: 'dddd D MMMM YYYY HH:mm',
9858        },
9859        calendar: {
9860            sameDay: '[Aujourd’hui à] LT',
9861            nextDay: '[Demain à] LT',
9862            nextWeek: 'dddd [à] LT',
9863            lastDay: '[Hier à] LT',
9864            lastWeek: 'dddd [dernier à] LT',
9865            sameElse: 'L',
9866        },
9867        relativeTime: {
9868            future: 'dans %s',
9869            past: 'il y a %s',
9870            s: 'quelques secondes',
9871            ss: '%d secondes',
9872            m: 'une minute',
9873            mm: '%d minutes',
9874            h: 'une heure',
9875            hh: '%d heures',
9876            d: 'un jour',
9877            dd: '%d jours',
9878            M: 'un mois',
9879            MM: '%d mois',
9880            y: 'un an',
9881            yy: '%d ans',
9882        },
9883        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
9884        ordinal: function (number, period) {
9885            switch (period) {
9886                // Words with masculine grammatical gender: mois, trimestre, jour
9887                default:
9888                case 'M':
9889                case 'Q':
9890                case 'D':
9891                case 'DDD':
9892                case 'd':
9893                    return number + (number === 1 ? 'er' : 'e');
9894
9895                // Words with feminine grammatical gender: semaine
9896                case 'w':
9897                case 'W':
9898                    return number + (number === 1 ? 're' : 'e');
9899            }
9900        },
9901    });
9902
9903    //! moment.js locale configuration
9904
9905    hooks.defineLocale('fr-ch', {
9906        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
9907            '_'
9908        ),
9909        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
9910            '_'
9911        ),
9912        monthsParseExact: true,
9913        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
9914        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
9915        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
9916        weekdaysParseExact: true,
9917        longDateFormat: {
9918            LT: 'HH:mm',
9919            LTS: 'HH:mm:ss',
9920            L: 'DD.MM.YYYY',
9921            LL: 'D MMMM YYYY',
9922            LLL: 'D MMMM YYYY HH:mm',
9923            LLLL: 'dddd D MMMM YYYY HH:mm',
9924        },
9925        calendar: {
9926            sameDay: '[Aujourd’hui à] LT',
9927            nextDay: '[Demain à] LT',
9928            nextWeek: 'dddd [à] LT',
9929            lastDay: '[Hier à] LT',
9930            lastWeek: 'dddd [dernier à] LT',
9931            sameElse: 'L',
9932        },
9933        relativeTime: {
9934            future: 'dans %s',
9935            past: 'il y a %s',
9936            s: 'quelques secondes',
9937            ss: '%d secondes',
9938            m: 'une minute',
9939            mm: '%d minutes',
9940            h: 'une heure',
9941            hh: '%d heures',
9942            d: 'un jour',
9943            dd: '%d jours',
9944            M: 'un mois',
9945            MM: '%d mois',
9946            y: 'un an',
9947            yy: '%d ans',
9948        },
9949        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
9950        ordinal: function (number, period) {
9951            switch (period) {
9952                // Words with masculine grammatical gender: mois, trimestre, jour
9953                default:
9954                case 'M':
9955                case 'Q':
9956                case 'D':
9957                case 'DDD':
9958                case 'd':
9959                    return number + (number === 1 ? 'er' : 'e');
9960
9961                // Words with feminine grammatical gender: semaine
9962                case 'w':
9963                case 'W':
9964                    return number + (number === 1 ? 're' : 'e');
9965            }
9966        },
9967        week: {
9968            dow: 1, // Monday is the first day of the week.
9969            doy: 4, // The week that contains Jan 4th is the first week of the year.
9970        },
9971    });
9972
9973    //! moment.js locale configuration
9974
9975    var monthsStrictRegex$1 = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
9976        monthsShortStrictRegex$1 = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
9977        monthsRegex$7 = /(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,
9978        monthsParse$6 = [
9979            /^janv/i,
9980            /^févr/i,
9981            /^mars/i,
9982            /^avr/i,
9983            /^mai/i,
9984            /^juin/i,
9985            /^juil/i,
9986            /^août/i,
9987            /^sept/i,
9988            /^oct/i,
9989            /^nov/i,
9990            /^déc/i,
9991        ];
9992
9993    hooks.defineLocale('fr', {
9994        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
9995            '_'
9996        ),
9997        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
9998            '_'
9999        ),
10000        monthsRegex: monthsRegex$7,
10001        monthsShortRegex: monthsRegex$7,
10002        monthsStrictRegex: monthsStrictRegex$1,
10003        monthsShortStrictRegex: monthsShortStrictRegex$1,
10004        monthsParse: monthsParse$6,
10005        longMonthsParse: monthsParse$6,
10006        shortMonthsParse: monthsParse$6,
10007        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
10008        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
10009        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
10010        weekdaysParseExact: true,
10011        longDateFormat: {
10012            LT: 'HH:mm',
10013            LTS: 'HH:mm:ss',
10014            L: 'DD/MM/YYYY',
10015            LL: 'D MMMM YYYY',
10016            LLL: 'D MMMM YYYY HH:mm',
10017            LLLL: 'dddd D MMMM YYYY HH:mm',
10018        },
10019        calendar: {
10020            sameDay: '[Aujourd’hui à] LT',
10021            nextDay: '[Demain à] LT',
10022            nextWeek: 'dddd [à] LT',
10023            lastDay: '[Hier à] LT',
10024            lastWeek: 'dddd [dernier à] LT',
10025            sameElse: 'L',
10026        },
10027        relativeTime: {
10028            future: 'dans %s',
10029            past: 'il y a %s',
10030            s: 'quelques secondes',
10031            ss: '%d secondes',
10032            m: 'une minute',
10033            mm: '%d minutes',
10034            h: 'une heure',
10035            hh: '%d heures',
10036            d: 'un jour',
10037            dd: '%d jours',
10038            w: 'une semaine',
10039            ww: '%d semaines',
10040            M: 'un mois',
10041            MM: '%d mois',
10042            y: 'un an',
10043            yy: '%d ans',
10044        },
10045        dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
10046        ordinal: function (number, period) {
10047            switch (period) {
10048                // TODO: Return 'e' when day of month > 1. Move this case inside
10049                // block for masculine words below.
10050                // See https://github.com/moment/moment/issues/3375
10051                case 'D':
10052                    return number + (number === 1 ? 'er' : '');
10053
10054                // Words with masculine grammatical gender: mois, trimestre, jour
10055                default:
10056                case 'M':
10057                case 'Q':
10058                case 'DDD':
10059                case 'd':
10060                    return number + (number === 1 ? 'er' : 'e');
10061
10062                // Words with feminine grammatical gender: semaine
10063                case 'w':
10064                case 'W':
10065                    return number + (number === 1 ? 're' : 'e');
10066            }
10067        },
10068        week: {
10069            dow: 1, // Monday is the first day of the week.
10070            doy: 4, // The week that contains Jan 4th is the first week of the year.
10071        },
10072    });
10073
10074    //! moment.js locale configuration
10075
10076    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(
10077            '_'
10078        ),
10079        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(
10080            '_'
10081        );
10082
10083    hooks.defineLocale('fy', {
10084        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
10085            '_'
10086        ),
10087        monthsShort: function (m, format) {
10088            if (!m) {
10089                return monthsShortWithDots;
10090            } else if (/-MMM-/.test(format)) {
10091                return monthsShortWithoutDots[m.month()];
10092            } else {
10093                return monthsShortWithDots[m.month()];
10094            }
10095        },
10096        monthsParseExact: true,
10097        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
10098            '_'
10099        ),
10100        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
10101        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
10102        weekdaysParseExact: true,
10103        longDateFormat: {
10104            LT: 'HH:mm',
10105            LTS: 'HH:mm:ss',
10106            L: 'DD-MM-YYYY',
10107            LL: 'D MMMM YYYY',
10108            LLL: 'D MMMM YYYY HH:mm',
10109            LLLL: 'dddd D MMMM YYYY HH:mm',
10110        },
10111        calendar: {
10112            sameDay: '[hjoed om] LT',
10113            nextDay: '[moarn om] LT',
10114            nextWeek: 'dddd [om] LT',
10115            lastDay: '[juster om] LT',
10116            lastWeek: '[ôfrûne] dddd [om] LT',
10117            sameElse: 'L',
10118        },
10119        relativeTime: {
10120            future: 'oer %s',
10121            past: '%s lyn',
10122            s: 'in pear sekonden',
10123            ss: '%d sekonden',
10124            m: 'ien minút',
10125            mm: '%d minuten',
10126            h: 'ien oere',
10127            hh: '%d oeren',
10128            d: 'ien dei',
10129            dd: '%d dagen',
10130            M: 'ien moanne',
10131            MM: '%d moannen',
10132            y: 'ien jier',
10133            yy: '%d jierren',
10134        },
10135        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
10136        ordinal: function (number) {
10137            return (
10138                number +
10139                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
10140            );
10141        },
10142        week: {
10143            dow: 1, // Monday is the first day of the week.
10144            doy: 4, // The week that contains Jan 4th is the first week of the year.
10145        },
10146    });
10147
10148    //! moment.js locale configuration
10149
10150    var months$6 = [
10151            'Eanáir',
10152            'Feabhra',
10153            'Márta',
10154            'Aibreán',
10155            'Bealtaine',
10156            'Meitheamh',
10157            'Iúil',
10158            'Lúnasa',
10159            'Meán Fómhair',
10160            'Deireadh Fómhair',
10161            'Samhain',
10162            'Nollaig',
10163        ],
10164        monthsShort$5 = [
10165            'Ean',
10166            'Feabh',
10167            'Márt',
10168            'Aib',
10169            'Beal',
10170            'Meith',
10171            'Iúil',
10172            'Lún',
10173            'M.F.',
10174            'D.F.',
10175            'Samh',
10176            'Noll',
10177        ],
10178        weekdays$1 = [
10179            'Dé Domhnaigh',
10180            'Dé Luain',
10181            'Dé Máirt',
10182            'Dé Céadaoin',
10183            'Déardaoin',
10184            'Dé hAoine',
10185            'Dé Sathairn',
10186        ],
10187        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
10188        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
10189
10190    hooks.defineLocale('ga', {
10191        months: months$6,
10192        monthsShort: monthsShort$5,
10193        monthsParseExact: true,
10194        weekdays: weekdays$1,
10195        weekdaysShort: weekdaysShort,
10196        weekdaysMin: weekdaysMin,
10197        longDateFormat: {
10198            LT: 'HH:mm',
10199            LTS: 'HH:mm:ss',
10200            L: 'DD/MM/YYYY',
10201            LL: 'D MMMM YYYY',
10202            LLL: 'D MMMM YYYY HH:mm',
10203            LLLL: 'dddd, D MMMM YYYY HH:mm',
10204        },
10205        calendar: {
10206            sameDay: '[Inniu ag] LT',
10207            nextDay: '[Amárach ag] LT',
10208            nextWeek: 'dddd [ag] LT',
10209            lastDay: '[Inné ag] LT',
10210            lastWeek: 'dddd [seo caite] [ag] LT',
10211            sameElse: 'L',
10212        },
10213        relativeTime: {
10214            future: 'i %s',
10215            past: '%s ó shin',
10216            s: 'cúpla soicind',
10217            ss: '%d soicind',
10218            m: 'nóiméad',
10219            mm: '%d nóiméad',
10220            h: 'uair an chloig',
10221            hh: '%d uair an chloig',
10222            d: 'lá',
10223            dd: '%d lá',
10224            M: 'mí',
10225            MM: '%d míonna',
10226            y: 'bliain',
10227            yy: '%d bliain',
10228        },
10229        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
10230        ordinal: function (number) {
10231            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
10232            return number + output;
10233        },
10234        week: {
10235            dow: 1, // Monday is the first day of the week.
10236            doy: 4, // The week that contains Jan 4th is the first week of the year.
10237        },
10238    });
10239
10240    //! moment.js locale configuration
10241
10242    var months$7 = [
10243            'Am Faoilleach',
10244            'An Gearran',
10245            'Am Màrt',
10246            'An Giblean',
10247            'An Cèitean',
10248            'An t-Ògmhios',
10249            'An t-Iuchar',
10250            'An Lùnastal',
10251            'An t-Sultain',
10252            'An Dàmhair',
10253            'An t-Samhain',
10254            'An Dùbhlachd',
10255        ],
10256        monthsShort$6 = [
10257            'Faoi',
10258            'Gear',
10259            'Màrt',
10260            'Gibl',
10261            'Cèit',
10262            'Ògmh',
10263            'Iuch',
10264            'Lùn',
10265            'Sult',
10266            'Dàmh',
10267            'Samh',
10268            'Dùbh',
10269        ],
10270        weekdays$2 = [
10271            'Didòmhnaich',
10272            'Diluain',
10273            'Dimàirt',
10274            'Diciadain',
10275            'Diardaoin',
10276            'Dihaoine',
10277            'Disathairne',
10278        ],
10279        weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
10280        weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
10281
10282    hooks.defineLocale('gd', {
10283        months: months$7,
10284        monthsShort: monthsShort$6,
10285        monthsParseExact: true,
10286        weekdays: weekdays$2,
10287        weekdaysShort: weekdaysShort$1,
10288        weekdaysMin: weekdaysMin$1,
10289        longDateFormat: {
10290            LT: 'HH:mm',
10291            LTS: 'HH:mm:ss',
10292            L: 'DD/MM/YYYY',
10293            LL: 'D MMMM YYYY',
10294            LLL: 'D MMMM YYYY HH:mm',
10295            LLLL: 'dddd, D MMMM YYYY HH:mm',
10296        },
10297        calendar: {
10298            sameDay: '[An-diugh aig] LT',
10299            nextDay: '[A-màireach aig] LT',
10300            nextWeek: 'dddd [aig] LT',
10301            lastDay: '[An-dè aig] LT',
10302            lastWeek: 'dddd [seo chaidh] [aig] LT',
10303            sameElse: 'L',
10304        },
10305        relativeTime: {
10306            future: 'ann an %s',
10307            past: 'bho chionn %s',
10308            s: 'beagan diogan',
10309            ss: '%d diogan',
10310            m: 'mionaid',
10311            mm: '%d mionaidean',
10312            h: 'uair',
10313            hh: '%d uairean',
10314            d: 'latha',
10315            dd: '%d latha',
10316            M: 'mìos',
10317            MM: '%d mìosan',
10318            y: 'bliadhna',
10319            yy: '%d bliadhna',
10320        },
10321        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
10322        ordinal: function (number) {
10323            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
10324            return number + output;
10325        },
10326        week: {
10327            dow: 1, // Monday is the first day of the week.
10328            doy: 4, // The week that contains Jan 4th is the first week of the year.
10329        },
10330    });
10331
10332    //! moment.js locale configuration
10333
10334    hooks.defineLocale('gl', {
10335        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
10336            '_'
10337        ),
10338        monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
10339            '_'
10340        ),
10341        monthsParseExact: true,
10342        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
10343        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
10344        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
10345        weekdaysParseExact: true,
10346        longDateFormat: {
10347            LT: 'H:mm',
10348            LTS: 'H:mm:ss',
10349            L: 'DD/MM/YYYY',
10350            LL: 'D [de] MMMM [de] YYYY',
10351            LLL: 'D [de] MMMM [de] YYYY H:mm',
10352            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
10353        },
10354        calendar: {
10355            sameDay: function () {
10356                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
10357            },
10358            nextDay: function () {
10359                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
10360            },
10361            nextWeek: function () {
10362                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
10363            },
10364            lastDay: function () {
10365                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
10366            },
10367            lastWeek: function () {
10368                return (
10369                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
10370                );
10371            },
10372            sameElse: 'L',
10373        },
10374        relativeTime: {
10375            future: function (str) {
10376                if (str.indexOf('un') === 0) {
10377                    return 'n' + str;
10378                }
10379                return 'en ' + str;
10380            },
10381            past: 'hai %s',
10382            s: 'uns segundos',
10383            ss: '%d segundos',
10384            m: 'un minuto',
10385            mm: '%d minutos',
10386            h: 'unha hora',
10387            hh: '%d horas',
10388            d: 'un día',
10389            dd: '%d días',
10390            M: 'un mes',
10391            MM: '%d meses',
10392            y: 'un ano',
10393            yy: '%d anos',
10394        },
10395        dayOfMonthOrdinalParse: /\d{1,2}º/,
10396        ordinal: '%dº',
10397        week: {
10398            dow: 1, // Monday is the first day of the week.
10399            doy: 4, // The week that contains Jan 4th is the first week of the year.
10400        },
10401    });
10402
10403    //! moment.js locale configuration
10404
10405    function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
10406        var format = {
10407            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
10408            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
10409            m: ['एका मिणटान', 'एक मिनूट'],
10410            mm: [number + ' मिणटांनी', number + ' मिणटां'],
10411            h: ['एका वरान', 'एक वर'],
10412            hh: [number + ' वरांनी', number + ' वरां'],
10413            d: ['एका दिसान', 'एक दीस'],
10414            dd: [number + ' दिसांनी', number + ' दीस'],
10415            M: ['एका म्हयन्यान', 'एक म्हयनो'],
10416            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
10417            y: ['एका वर्सान', 'एक वर्स'],
10418            yy: [number + ' वर्सांनी', number + ' वर्सां'],
10419        };
10420        return isFuture ? format[key][0] : format[key][1];
10421    }
10422
10423    hooks.defineLocale('gom-deva', {
10424        months: {
10425            standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
10426                '_'
10427            ),
10428            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
10429                '_'
10430            ),
10431            isFormat: /MMMM(\s)+D[oD]?/,
10432        },
10433        monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
10434            '_'
10435        ),
10436        monthsParseExact: true,
10437        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्राà
vendor: 8,867 bytes, lines 10437-10676
10437¤°_शेनवार'.split('_'),
10438        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
10439        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
10440        weekdaysParseExact: true,
10441        longDateFormat: {
10442            LT: 'A h:mm [वाजतां]',
10443            LTS: 'A h:mm:ss [वाजतां]',
10444            L: 'DD-MM-YYYY',
10445            LL: 'D MMMM YYYY',
10446            LLL: 'D MMMM YYYY A h:mm [वाजतां]',
10447            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
10448            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
10449        },
10450        calendar: {
10451            sameDay: '[आयज] LT',
10452            nextDay: '[फाल्यां] LT',
10453            nextWeek: '[फुडलो] dddd[,] LT',
10454            lastDay: '[काल] LT',
10455            lastWeek: '[फाटलो] dddd[,] LT',
10456            sameElse: 'L',
10457        },
10458        relativeTime: {
10459            future: '%s',
10460            past: '%s आदीं',
10461            s: processRelativeTime$4,
10462            ss: processRelativeTime$4,
10463            m: processRelativeTime$4,
10464            mm: processRelativeTime$4,
10465            h: processRelativeTime$4,
10466            hh: processRelativeTime$4,
10467            d: processRelativeTime$4,
10468            dd: processRelativeTime$4,
10469            M: processRelativeTime$4,
10470            MM: processRelativeTime$4,
10471            y: processRelativeTime$4,
10472            yy: processRelativeTime$4,
10473        },
10474        dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
10475        ordinal: function (number, period) {
10476            switch (period) {
10477                // the ordinal 'वेर' only applies to day of the month
10478                case 'D':
10479                    return number + 'वेर';
10480                default:
10481                case 'M':
10482                case 'Q':
10483                case 'DDD':
10484                case 'd':
10485                case 'w':
10486                case 'W':
10487                    return number;
10488            }
10489        },
10490        week: {
10491            dow: 0, // Sunday is the first day of the week
10492            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
10493        },
10494        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
10495        meridiemHour: function (hour, meridiem) {
10496            if (hour === 12) {
10497                hour = 0;
10498            }
10499            if (meridiem === 'राती') {
10500                return hour < 4 ? hour : hour + 12;
10501            } else if (meridiem === 'सकाळीं') {
10502                return hour;
10503            } else if (meridiem === 'दनपारां') {
10504                return hour > 12 ? hour : hour + 12;
10505            } else if (meridiem === 'सांजे') {
10506                return hour + 12;
10507            }
10508        },
10509        meridiem: function (hour, minute, isLower) {
10510            if (hour < 4) {
10511                return 'राती';
10512            } else if (hour < 12) {
10513                return 'सकाळीं';
10514            } else if (hour < 16) {
10515                return 'दनपारां';
10516            } else if (hour < 20) {
10517                return 'सांजे';
10518            } else {
10519                return 'राती';
10520            }
10521        },
10522    });
10523
10524    //! moment.js locale configuration
10525
10526    function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
10527        var format = {
10528            s: ['thoddea sekondamni', 'thodde sekond'],
10529            ss: [number + ' sekondamni', number + ' sekond'],
10530            m: ['eka mintan', 'ek minut'],
10531            mm: [number + ' mintamni', number + ' mintam'],
10532            h: ['eka voran', 'ek vor'],
10533            hh: [number + ' voramni', number + ' voram'],
10534            d: ['eka disan', 'ek dis'],
10535            dd: [number + ' disamni', number + ' dis'],
10536            M: ['eka mhoinean', 'ek mhoino'],
10537            MM: [number + ' mhoineamni', number + ' mhoine'],
10538            y: ['eka vorsan', 'ek voros'],
10539            yy: [number + ' vorsamni', number + ' vorsam'],
10540        };
10541        return isFuture ? format[key][0] : format[key][1];
10542    }
10543
10544    hooks.defineLocale('gom-latn', {
10545        months: {
10546            standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
10547                '_'
10548            ),
10549            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
10550                '_'
10551            ),
10552            isFormat: /MMMM(\s)+D[oD]?/,
10553        },
10554        monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(
10555            '_'
10556        ),
10557        monthsParseExact: true,
10558        weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
10559        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
10560        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
10561        weekdaysParseExact: true,
10562        longDateFormat: {
10563            LT: 'A h:mm [vazta]',
10564            LTS: 'A h:mm:ss [vazta]',
10565            L: 'DD-MM-YYYY',
10566            LL: 'D MMMM YYYY',
10567            LLL: 'D MMMM YYYY A h:mm [vazta]',
10568            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
10569            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
10570        },
10571        calendar: {
10572            sameDay: '[Aiz] LT',
10573            nextDay: '[Faleam] LT',
10574            nextWeek: '[Fuddlo] dddd[,] LT',
10575            lastDay: '[Kal] LT',
10576            lastWeek: '[Fattlo] dddd[,] LT',
10577            sameElse: 'L',
10578        },
10579        relativeTime: {
10580            future: '%s',
10581            past: '%s adim',
10582            s: processRelativeTime$5,
10583            ss: processRelativeTime$5,
10584            m: processRelativeTime$5,
10585            mm: processRelativeTime$5,
10586            h: processRelativeTime$5,
10587            hh: processRelativeTime$5,
10588            d: processRelativeTime$5,
10589            dd: processRelativeTime$5,
10590            M: processRelativeTime$5,
10591            MM: processRelativeTime$5,
10592            y: processRelativeTime$5,
10593            yy: processRelativeTime$5,
10594        },
10595        dayOfMonthOrdinalParse: /\d{1,2}(er)/,
10596        ordinal: function (number, period) {
10597            switch (period) {
10598                // the ordinal 'er' only applies to day of the month
10599                case 'D':
10600                    return number + 'er';
10601                default:
10602                case 'M':
10603                case 'Q':
10604                case 'DDD':
10605                case 'd':
10606                case 'w':
10607                case 'W':
10608                    return number;
10609            }
10610        },
10611        week: {
10612            dow: 0, // Sunday is the first day of the week
10613            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
10614        },
10615        meridiemParse: /rati|sokallim|donparam|sanje/,
10616        meridiemHour: function (hour, meridiem) {
10617            if (hour === 12) {
10618                hour = 0;
10619            }
10620            if (meridiem === 'rati') {
10621                return hour < 4 ? hour : hour + 12;
10622            } else if (meridiem === 'sokallim') {
10623                return hour;
10624            } else if (meridiem === 'donparam') {
10625                return hour > 12 ? hour : hour + 12;
10626            } else if (meridiem === 'sanje') {
10627                return hour + 12;
10628            }
10629        },
10630        meridiem: function (hour, minute, isLower) {
10631            if (hour < 4) {
10632                return 'rati';
10633            } else if (hour < 12) {
10634                return 'sokallim';
10635            } else if (hour < 16) {
10636                return 'donparam';
10637            } else if (hour < 20) {
10638                return 'sanje';
10639            } else {
10640                return 'rati';
10641            }
10642        },
10643    });
10644
10645    //! moment.js locale configuration
10646
10647    var symbolMap$7 = {
10648            1: 'à«§',
10649            2: '૨',
10650            3: 'à«©',
10651            4: '૪',
10652            5: 'à««',
10653            6: '૬',
10654            7: 'à«­',
10655            8: 'à«®',
10656            9: '૯',
10657            0: '૦',
10658        },
10659        numberMap$6 = {
10660            'à«§': '1',
10661            '૨': '2',
10662            'à«©': '3',
10663            '૪': '4',
10664            'à««': '5',
10665            '૬': '6',
10666            'à«­': '7',
10667            'à«®': '8',
10668            '૯': '9',
10669            '૦': '0',
10670        };
10671
10672    hooks.defineLocale('gu', {
10673        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
10674            '_'
10675        ),
10676        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડà
vendor: 7,288 bytes, lines 10676-10878
10676ª¿àª¸à«‡.'.split(
10677            '_'
10678        ),
10679        monthsParseExact: true,
10680        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
10681            '_'
10682        ),
10683        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
10684        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
10685        longDateFormat: {
10686            LT: 'A h:mm વાગ્યે',
10687            LTS: 'A h:mm:ss વાગ્યે',
10688            L: 'DD/MM/YYYY',
10689            LL: 'D MMMM YYYY',
10690            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
10691            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
10692        },
10693        calendar: {
10694            sameDay: '[આજ] LT',
10695            nextDay: '[કાલે] LT',
10696            nextWeek: 'dddd, LT',
10697            lastDay: '[ગઇકાલે] LT',
10698            lastWeek: '[પાછલા] dddd, LT',
10699            sameElse: 'L',
10700        },
10701        relativeTime: {
10702            future: '%s મા',
10703            past: '%s પહેલા',
10704            s: 'અમુક પળો',
10705            ss: '%d સેકંડ',
10706            m: 'એક મિનિટ',
10707            mm: '%d મિનિટ',
10708            h: 'એક કલાક',
10709            hh: '%d કલાક',
10710            d: 'એક દિવસ',
10711            dd: '%d દિવસ',
10712            M: 'એક મહિનો',
10713            MM: '%d મહિનો',
10714            y: 'એક વર્ષ',
10715            yy: '%d વર્ષ',
10716        },
10717        preparse: function (string) {
10718            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
10719                return numberMap$6[match];
10720            });
10721        },
10722        postformat: function (string) {
10723            return string.replace(/\d/g, function (match) {
10724                return symbolMap$7[match];
10725            });
10726        },
10727        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
10728        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
10729        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
10730        meridiemHour: function (hour, meridiem) {
10731            if (hour === 12) {
10732                hour = 0;
10733            }
10734            if (meridiem === 'રાત') {
10735                return hour < 4 ? hour : hour + 12;
10736            } else if (meridiem === 'સવાર') {
10737                return hour;
10738            } else if (meridiem === 'બપોર') {
10739                return hour >= 10 ? hour : hour + 12;
10740            } else if (meridiem === 'સાંજ') {
10741                return hour + 12;
10742            }
10743        },
10744        meridiem: function (hour, minute, isLower) {
10745            if (hour < 4) {
10746                return 'રાત';
10747            } else if (hour < 10) {
10748                return 'સવાર';
10749            } else if (hour < 17) {
10750                return 'બપોર';
10751            } else if (hour < 20) {
10752                return 'સાંજ';
10753            } else {
10754                return 'રાત';
10755            }
10756        },
10757        week: {
10758            dow: 0, // Sunday is the first day of the week.
10759            doy: 6, // The week that contains Jan 6th is the first week of the year.
10760        },
10761    });
10762
10763    //! moment.js locale configuration
10764
10765    hooks.defineLocale('he', {
10766        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
10767            '_'
10768        ),
10769        monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(
10770            '_'
10771        ),
10772        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
10773        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
10774        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
10775        longDateFormat: {
10776            LT: 'HH:mm',
10777            LTS: 'HH:mm:ss',
10778            L: 'DD/MM/YYYY',
10779            LL: 'D [ב]MMMM YYYY',
10780            LLL: 'D [ב]MMMM YYYY HH:mm',
10781            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
10782            l: 'D/M/YYYY',
10783            ll: 'D MMM YYYY',
10784            lll: 'D MMM YYYY HH:mm',
10785            llll: 'ddd, D MMM YYYY HH:mm',
10786        },
10787        calendar: {
10788            sameDay: '[היום ב־]LT',
10789            nextDay: '[מחר ב־]LT',
10790            nextWeek: 'dddd [בשעה] LT',
10791            lastDay: '[אתמול ב־]LT',
10792            lastWeek: '[ביום] dddd [האחרון בשעה] LT',
10793            sameElse: 'L',
10794        },
10795        relativeTime: {
10796            future: 'בעוד %s',
10797            past: 'לפני %s',
10798            s: 'מספר שניות',
10799            ss: '%d שניות',
10800            m: 'דקה',
10801            mm: '%d דקות',
10802            h: 'שעה',
10803            hh: function (number) {
10804                if (number === 2) {
10805                    return 'שעתיים';
10806                }
10807                return number + ' שעות';
10808            },
10809            d: 'יום',
10810            dd: function (number) {
10811                if (number === 2) {
10812                    return 'יומיים';
10813                }
10814                return number + ' ימים';
10815            },
10816            M: 'חודש',
10817            MM: function (number) {
10818                if (number === 2) {
10819                    return 'חודשיים';
10820                }
10821                return number + ' חודשים';
10822            },
10823            y: 'שנה',
10824            yy: function (number) {
10825                if (number === 2) {
10826                    return 'שנתיים';
10827                } else if (number % 10 === 0 && number !== 10) {
10828                    return number + ' שנה';
10829                }
10830                return number + ' שנים';
10831            },
10832        },
10833        meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
10834        isPM: function (input) {
10835            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
10836        },
10837        meridiem: function (hour, minute, isLower) {
10838            if (hour < 5) {
10839                return 'לפנות בוקר';
10840            } else if (hour < 10) {
10841                return 'בבוקר';
10842            } else if (hour < 12) {
10843                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
10844            } else if (hour < 18) {
10845                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
10846            } else {
10847                return 'בערב';
10848            }
10849        },
10850    });
10851
10852    //! moment.js locale configuration
10853
10854    var symbolMap$8 = {
10855            1: '१',
10856            2: '२',
10857            3: '३',
10858            4: '४',
10859            5: '५',
10860            6: '६',
10861            7: '७',
10862            8: '८',
10863            9: '९',
10864            0: '०',
10865        },
10866        numberMap$7 = {
10867            '१': '1',
10868            '२': '2',
10869            '३': '3',
10870            '४': '4',
10871            '५': '5',
10872            '६': '6',
10873            '७': '7',
10874            '८': '8',
10875            '९': '9',
10876            '०': '0',
10877        },
10878        monthsParse$7 = [
vendor: 5,261 bytes, lines 10879-10983
10879            /^जन/i,
10880            /^फ़र|फर/i,
10881            /^मार्च/i,
10882            /^अप्रै/i,
10883            /^मई/i,
10884            /^जून/i,
10885            /^जुल/i,
10886            /^अग/i,
10887            /^सितं|सित/i,
10888            /^अक्टू/i,
10889            /^नव|नवं/i,
10890            /^दिसं|दिस/i,
10891        ],
10892        shortMonthsParse = [
10893            /^जन/i,
10894            /^फ़र/i,
10895            /^मार्च/i,
10896            /^अप्रै/i,
10897            /^मई/i,
10898            /^जून/i,
10899            /^जुल/i,
10900            /^अग/i,
10901            /^सित/i,
10902            /^अक्टू/i,
10903            /^नव/i,
10904            /^दिस/i,
10905        ];
10906
10907    hooks.defineLocale('hi', {
10908        months: {
10909            format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
10910                '_'
10911            ),
10912            standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(
10913                '_'
10914            ),
10915        },
10916        monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(
10917            '_'
10918        ),
10919        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
10920        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
10921        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
10922        longDateFormat: {
10923            LT: 'A h:mm बजे',
10924            LTS: 'A h:mm:ss बजे',
10925            L: 'DD/MM/YYYY',
10926            LL: 'D MMMM YYYY',
10927            LLL: 'D MMMM YYYY, A h:mm बजे',
10928            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
10929        },
10930
10931        monthsParse: monthsParse$7,
10932        longMonthsParse: monthsParse$7,
10933        shortMonthsParse: shortMonthsParse,
10934
10935        monthsRegex: /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
10936
10937        monthsShortRegex: /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
10938
10939        monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,
10940
10941        monthsShortStrictRegex: /^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,
10942
10943        calendar: {
10944            sameDay: '[आज] LT',
10945            nextDay: '[कल] LT',
10946            nextWeek: 'dddd, LT',
10947            lastDay: '[कल] LT',
10948            lastWeek: '[पिछले] dddd, LT',
10949            sameElse: 'L',
10950        },
10951        relativeTime: {
10952            future: '%s में',
10953            past: '%s पहले',
10954            s: 'कुछ ही क्षण',
10955            ss: '%d सेकंड',
10956            m: 'एक मिनट',
10957            mm: '%d मिनट',
10958            h: 'एक घंटा',
10959            hh: '%d घंटे',
10960            d: 'एक दिन',
10961            dd: '%d दिन',
10962            M: 'एक महीने',
10963            MM: '%d महीने',
10964            y: 'एक वर्ष',
10965            yy: '%d वर्ष',
10966        },
10967        preparse: function (string) {
10968            return string.replace(/[१२३४५६७८९०]/g, function (match) {
10969                return numberMap$7[match];
10970            });
10971        },
10972        postformat: function (string) {
10973            return string.replace(/\d/g, function (match) {
10974                return symbolMap$8[match];
10975            });
10976        },
10977        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
10978        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
10979        meridiemParse: /रात|सुबह|दोपहर|शाम/,
10980        meridiemHour: function (hour, meridiem) {
10981            if (hour === 12) {
10982                hour = 0;
10983            }
vendor: 12,300 bytes, lines 10984-11325
10984            if (meridiem === 'रात') {
10985                return hour < 4 ? hour : hour + 12;
10986            } else if (meridiem === 'सुबह') {
10987                return hour;
10988            } else if (meridiem === 'दोपहर') {
10989                return hour >= 10 ? hour : hour + 12;
10990            } else if (meridiem === 'शाम') {
10991                return hour + 12;
10992            }
10993        },
10994        meridiem: function (hour, minute, isLower) {
10995            if (hour < 4) {
10996                return 'रात';
10997            } else if (hour < 10) {
10998                return 'सुबह';
10999            } else if (hour < 17) {
11000                return 'दोपहर';
11001            } else if (hour < 20) {
11002                return 'शाम';
11003            } else {
11004                return 'रात';
11005            }
11006        },
11007        week: {
11008            dow: 0, // Sunday is the first day of the week.
11009            doy: 6, // The week that contains Jan 6th is the first week of the year.
11010        },
11011    });
11012
11013    //! moment.js locale configuration
11014
11015    function translate$3(number, withoutSuffix, key) {
11016        var result = number + ' ';
11017        switch (key) {
11018            case 'ss':
11019                if (number === 1) {
11020                    result += 'sekunda';
11021                } else if (number === 2 || number === 3 || number === 4) {
11022                    result += 'sekunde';
11023                } else {
11024                    result += 'sekundi';
11025                }
11026                return result;
11027            case 'm':
11028                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
11029            case 'mm':
11030                if (number === 1) {
11031                    result += 'minuta';
11032                } else if (number === 2 || number === 3 || number === 4) {
11033                    result += 'minute';
11034                } else {
11035                    result += 'minuta';
11036                }
11037                return result;
11038            case 'h':
11039                return withoutSuffix ? 'jedan sat' : 'jednog sata';
11040            case 'hh':
11041                if (number === 1) {
11042                    result += 'sat';
11043                } else if (number === 2 || number === 3 || number === 4) {
11044                    result += 'sata';
11045                } else {
11046                    result += 'sati';
11047                }
11048                return result;
11049            case 'dd':
11050                if (number === 1) {
11051                    result += 'dan';
11052                } else {
11053                    result += 'dana';
11054                }
11055                return result;
11056            case 'MM':
11057                if (number === 1) {
11058                    result += 'mjesec';
11059                } else if (number === 2 || number === 3 || number === 4) {
11060                    result += 'mjeseca';
11061                } else {
11062                    result += 'mjeseci';
11063                }
11064                return result;
11065            case 'yy':
11066                if (number === 1) {
11067                    result += 'godina';
11068                } else if (number === 2 || number === 3 || number === 4) {
11069                    result += 'godine';
11070                } else {
11071                    result += 'godina';
11072                }
11073                return result;
11074        }
11075    }
11076
11077    hooks.defineLocale('hr', {
11078        months: {
11079            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
11080                '_'
11081            ),
11082            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
11083                '_'
11084            ),
11085        },
11086        monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
11087            '_'
11088        ),
11089        monthsParseExact: true,
11090        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
11091            '_'
11092        ),
11093        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
11094        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
11095        weekdaysParseExact: true,
11096        longDateFormat: {
11097            LT: 'H:mm',
11098            LTS: 'H:mm:ss',
11099            L: 'DD.MM.YYYY',
11100            LL: 'Do MMMM YYYY',
11101            LLL: 'Do MMMM YYYY H:mm',
11102            LLLL: 'dddd, Do MMMM YYYY H:mm',
11103        },
11104        calendar: {
11105            sameDay: '[danas u] LT',
11106            nextDay: '[sutra u] LT',
11107            nextWeek: function () {
11108                switch (this.day()) {
11109                    case 0:
11110                        return '[u] [nedjelju] [u] LT';
11111                    case 3:
11112                        return '[u] [srijedu] [u] LT';
11113                    case 6:
11114                        return '[u] [subotu] [u] LT';
11115                    case 1:
11116                    case 2:
11117                    case 4:
11118                    case 5:
11119                        return '[u] dddd [u] LT';
11120                }
11121            },
11122            lastDay: '[jučer u] LT',
11123            lastWeek: function () {
11124                switch (this.day()) {
11125                    case 0:
11126                        return '[prošlu] [nedjelju] [u] LT';
11127                    case 3:
11128                        return '[prošlu] [srijedu] [u] LT';
11129                    case 6:
11130                        return '[prošle] [subote] [u] LT';
11131                    case 1:
11132                    case 2:
11133                    case 4:
11134                    case 5:
11135                        return '[prošli] dddd [u] LT';
11136                }
11137            },
11138            sameElse: 'L',
11139        },
11140        relativeTime: {
11141            future: 'za %s',
11142            past: 'prije %s',
11143            s: 'par sekundi',
11144            ss: translate$3,
11145            m: translate$3,
11146            mm: translate$3,
11147            h: translate$3,
11148            hh: translate$3,
11149            d: 'dan',
11150            dd: translate$3,
11151            M: 'mjesec',
11152            MM: translate$3,
11153            y: 'godinu',
11154            yy: translate$3,
11155        },
11156        dayOfMonthOrdinalParse: /\d{1,2}\./,
11157        ordinal: '%d.',
11158        week: {
11159            dow: 1, // Monday is the first day of the week.
11160            doy: 7, // The week that contains Jan 7th is the first week of the year.
11161        },
11162    });
11163
11164    //! moment.js locale configuration
11165
11166    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(
11167        ' '
11168    );
11169    function translate$4(number, withoutSuffix, key, isFuture) {
11170        var num = number;
11171        switch (key) {
11172            case 's':
11173                return isFuture || withoutSuffix
11174                    ? 'néhány másodperc'
11175                    : 'néhány másodperce';
11176            case 'ss':
11177                return num + (isFuture || withoutSuffix)
11178                    ? ' másodperc'
11179                    : ' másodperce';
11180            case 'm':
11181                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
11182            case 'mm':
11183                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
11184            case 'h':
11185                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
11186            case 'hh':
11187                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
11188            case 'd':
11189                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
11190            case 'dd':
11191                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
11192            case 'M':
11193                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
11194            case 'MM':
11195                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
11196            case 'y':
11197                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
11198            case 'yy':
11199                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
11200        }
11201        return '';
11202    }
11203    function week(isFuture) {
11204        return (
11205            (isFuture ? '' : '[múlt] ') +
11206            '[' +
11207            weekEndings[this.day()] +
11208            '] LT[-kor]'
11209        );
11210    }
11211
11212    hooks.defineLocale('hu', {
11213        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
11214            '_'
11215        ),
11216        monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(
11217            '_'
11218        ),
11219        monthsParseExact: true,
11220        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
11221        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
11222        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
11223        longDateFormat: {
11224            LT: 'H:mm',
11225            LTS: 'H:mm:ss',
11226            L: 'YYYY.MM.DD.',
11227            LL: 'YYYY. MMMM D.',
11228            LLL: 'YYYY. MMMM D. H:mm',
11229            LLLL: 'YYYY. MMMM D., dddd H:mm',
11230        },
11231        meridiemParse: /de|du/i,
11232        isPM: function (input) {
11233            return input.charAt(1).toLowerCase() === 'u';
11234        },
11235        meridiem: function (hours, minutes, isLower) {
11236            if (hours < 12) {
11237                return isLower === true ? 'de' : 'DE';
11238            } else {
11239                return isLower === true ? 'du' : 'DU';
11240            }
11241        },
11242        calendar: {
11243            sameDay: '[ma] LT[-kor]',
11244            nextDay: '[holnap] LT[-kor]',
11245            nextWeek: function () {
11246                return week.call(this, true);
11247            },
11248            lastDay: '[tegnap] LT[-kor]',
11249            lastWeek: function () {
11250                return week.call(this, false);
11251            },
11252            sameElse: 'L',
11253        },
11254        relativeTime: {
11255            future: '%s múlva',
11256            past: '%s',
11257            s: translate$4,
11258            ss: translate$4,
11259            m: translate$4,
11260            mm: translate$4,
11261            h: translate$4,
11262            hh: translate$4,
11263            d: translate$4,
11264            dd: translate$4,
11265            M: translate$4,
11266            MM: translate$4,
11267            y: translate$4,
11268            yy: translate$4,
11269        },
11270        dayOfMonthOrdinalParse: /\d{1,2}\./,
11271        ordinal: '%d.',
11272        week: {
11273            dow: 1, // Monday is the first day of the week.
11274            doy: 4, // The week that contains Jan 4th is the first week of the year.
11275        },
11276    });
11277
11278    //! moment.js locale configuration
11279
11280    hooks.defineLocale('hy-am', {
11281        months: {
11282            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
11283                '_'
11284            ),
11285            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
11286                '_'
11287            ),
11288        },
11289        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
11290        weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
11291            '_'
11292        ),
11293        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
11294        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
11295        longDateFormat: {
11296            LT: 'HH:mm',
11297            LTS: 'HH:mm:ss',
11298            L: 'DD.MM.YYYY',
11299            LL: 'D MMMM YYYY Õ©.',
11300            LLL: 'D MMMM YYYY Õ©., HH:mm',
11301            LLLL: 'dddd, D MMMM YYYY Õ©., HH:mm',
11302        },
11303        calendar: {
11304            sameDay: '[այսօր] LT',
11305            nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',
11306            lastDay: '[երեկ] LT',
11307            nextWeek: function () {
11308                return 'dddd [օրը ժամը] LT';
11309            },
11310            lastWeek: function () {
11311                return '[անցած] dddd [օրը ժամը] LT';
11312            },
11313            sameElse: 'L',
11314        },
11315        relativeTime: {
11316            future: '%s Õ°Õ¥Õ¿Õ¸',
11317            past: '%s Õ¡Õ¼Õ¡Õ»',
11318            s: 'մի քանի վայրկյան',
11319            ss: '%d վայրկյան',
11320            m: 'րոպե',
11321            mm: '%d րոպե',
11322            h: 'ÕªÕ¡Õ´',
11323            hh: '%d ÕªÕ¡Õ´',
11324            d: 'օր',
11325            dd: '%d օր',
11326            M: 'Õ¡Õ´Õ«Õ½',
11327            MM: '%d Õ¡Õ´Õ«Õ½',
11328            y: 'տարի',
11329            yy: '%d տարի',
11330        },
11331        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
11332        isPM: function (input) {
11333            return /^(ցերեկվա|երեկոյան)$/.test(input);
11334        },
11335        meridiem: function (hour) {
11336            if (hour < 4) {
11337                return 'գիշերվա';
11338            } else if (hour < 12) {
11339                return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';
11340            } else if (hour < 17) {
11341                return 'ցերեկվա';
11342            } else {
11343                return 'երեկոյան';
11344            }
11345        },
11346        dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
11347        ordinal: function (number, period) {
11348            switch (period) {
11349                case 'DDD':
11350                case 'w':
11351                case 'W':
11352                case 'DDDo':
11353                    if (number === 1) {
11354                        return number + '-Õ«Õ¶';
11355                    }
11356                    return number + '-րդ';
11357                default:
11358                    return number;
11359            }
11360        },
11361        week: {
11362            dow: 1, // Monday is the first day of the week.
11363            doy: 7, // The week that contains Jan 7th is the first week of the year.
11364        },
11365    });
11366
11367    //! moment.js locale configuration
11368
11369    hooks.defineLocale('id', {
11370        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
11371            '_'
11372        ),
11373        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
11374        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
11375        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
11376        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
11377        longDateFormat: {
11378            LT: 'HH.mm',
11379            LTS: 'HH.mm.ss',
11380            L: 'DD/MM/YYYY',
11381            LL: 'D MMMM YYYY',
11382            LLL: 'D MMMM YYYY [pukul] HH.mm',
11383            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
11384        },
11385        meridiemParse: /pagi|siang|sore|malam/,
11386        meridiemHour: function (hour, meridiem) {
11387            if (hour === 12) {
11388                hour = 0;
11389            }
11390            if (meridiem === 'pagi') {
11391                return hour;
11392            } else if (meridiem === 'siang') {
11393                return hour >= 11 ? hour : hour + 12;
11394            } else if (meridiem === 'sore' || meridiem === 'malam') {
11395                return hour + 12;
11396            }
11397        },
11398        meridiem: function (hours, minutes, isLower) {
11399            if (hours < 11) {
11400                return 'pagi';
11401            } else if (hours < 15) {
11402                return 'siang';
11403            } else if (hours < 19) {
11404                return 'sore';
11405            } else {
11406                return 'malam';
11407            }
11408        },
11409        calendar: {
11410            sameDay: '[Hari ini pukul] LT',
11411            nextDay: '[Besok pukul] LT',
11412            nextWeek: 'dddd [pukul] LT',
11413            lastDay: '[Kemarin pukul] LT',
11414            lastWeek: 'dddd [lalu pukul] LT',
11415            sameElse: 'L',
11416        },
11417        relativeTime: {
11418            future: 'dalam %s',
11419            past: '%s yang lalu',
11420            s: 'beberapa detik',
11421            ss: '%d detik',
11422            m: 'semenit',
11423            mm: '%d menit',
11424            h: 'sejam',
11425            hh: '%d jam',
11426            d: 'sehari',
11427            dd: '%d hari',
11428            M: 'sebulan',
11429            MM: '%d bulan',
11430            y: 'setahun',
11431            yy: '%d tahun',
11432        },
11433        week: {
11434            dow: 0, // Sunday is the first day of the week.
11435            doy: 6, // The week that contains Jan 6th is the first week of the year.
11436        },
11437    });
11438
11439    //! moment.js locale configuration
11440
11441    function plural$2(n) {
11442        if (n % 100 === 11) {
11443            return true;
11444        } else if (n % 10 === 1) {
11445            return false;
11446        }
11447        return true;
11448    }
11449    function translate$5(number, withoutSuffix, key, isFuture) {
11450        var result = number + ' ';
11451        switch (key) {
11452            case 's':
11453                return withoutSuffix || isFuture
11454                    ? 'nokkrar sekúndur'
11455                    : 'nokkrum sekúndum';
11456            case 'ss':
11457                if (plural$2(number)) {
11458                    return (
11459                        result +
11460                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
11461                    );
11462                }
11463                return result + 'sekúnda';
11464            case 'm':
11465                return withoutSuffix ? 'mínúta' : 'mínútu';
11466            case 'mm':
11467                if (plural$2(number)) {
11468                    return (
11469                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
11470                    );
11471                } else if (withoutSuffix) {
11472                    return result + 'mínúta';
11473                }
11474                return result + 'mínútu';
11475            case 'hh':
11476                if (plural$2(number)) {
11477                    return (
11478                        result +
11479                        (withoutSuffix || isFuture
11480                            ? 'klukkustundir'
11481                            : 'klukkustundum')
11482                    );
11483                }
11484                return result + 'klukkustund';
11485            case 'd':
11486                if (withoutSuffix) {
11487                    return 'dagur';
11488                }
11489                return isFuture ? 'dag' : 'degi';
11490            case 'dd':
11491                if (plural$2(number)) {
11492                    if (withoutSuffix) {
11493                        return result + 'dagar';
11494                    }
11495                    return result + (isFuture ? 'daga' : 'dögum');
11496                } else if (withoutSuffix) {
11497                    return result + 'dagur';
11498                }
11499                return result + (isFuture ? 'dag' : 'degi');
11500            case 'M':
11501                if (withoutSuffix) {
11502                    return 'mánuður';
11503                }
11504                return isFuture ? 'mánuð' : 'mánuði';
11505            case 'MM':
11506                if (plural$2(number)) {
11507                    if (withoutSuffix) {
11508                        return result + 'mánuðir';
11509                    }
11510                    return result + (isFuture ? 'mánuði' : 'mánuðum');
11511                } else if (withoutSuffix) {
11512                    return result + 'mánuður';
11513                }
11514                return result + (isFuture ? 'mánuð' : 'mánuði');
11515            case 'y':
11516                return withoutSuffix || isFuture ? 'ár' : 'ári';
11517            case 'yy':
11518                if (plural$2(number)) {
11519                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
11520                }
11521                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
11522        }
11523    }
11524
11525    hooks.defineLocale('is', {
11526        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
11527            '_'
11528        ),
11529        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
11530        weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
11531            '_'
11532        ),
11533        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
11534        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
11535        longDateFormat: {
11536            LT: 'H:mm',
11537            LTS: 'H:mm:ss',
11538            L: 'DD.MM.YYYY',
11539            LL: 'D. MMMM YYYY',
11540            LLL: 'D. MMMM YYYY [kl.] H:mm',
11541            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
11542        },
11543        calendar: {
11544            sameDay: '[í dag kl.] LT',
11545            nextDay: '[á morgun kl.] LT',
11546            nextWeek: 'dddd [kl.] LT',
11547            lastDay: '[í gær kl.] LT',
11548            lastWeek: '[síðasta] dddd [kl.] LT',
11549            sameElse: 'L',
11550        },
11551        relativeTime: {
11552            future: 'eftir %s',
11553            past: 'fyrir %s síðan',
11554            s: translate$5,
11555            ss: translate$5,
11556            m: translate$5,
11557            mm: translate$5,
11558            h: 'klukkustund',
11559            hh: translate$5,
11560            d: translate$5,
11561            dd: translate$5,
11562            M: translate$5,
11563            MM: translate$5,
11564            y: translate$5,
11565            yy: translate$5,
11566        },
11567        dayOfMonthOrdinalParse: /\d{1,2}\./,
11568        ordinal: '%d.',
11569        week: {
11570            dow: 1, // Monday is the first day of the week.
11571            doy: 4, // The week that contains Jan 4th is the first week of the year.
11572        },
11573    });
11574
11575    //! moment.js locale configuration
11576
11577    hooks.defineLocale('it-ch', {
11578        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
11579            '_'
11580        ),
11581        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
11582        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
11583            '_'
11584        ),
11585        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
11586        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
11587        longDateFormat: {
11588            LT: 'HH:mm',
11589            LTS: 'HH:mm:ss',
11590            L: 'DD.MM.YYYY',
11591            LL: 'D MMMM YYYY',
11592            LLL: 'D MMMM YYYY HH:mm',
11593            LLLL: 'dddd D MMMM YYYY HH:mm',
11594        },
11595        calendar: {
11596            sameDay: '[Oggi alle] LT',
11597            nextDay: '[Domani alle] LT',
11598            nextWeek: 'dddd [alle] LT',
11599            lastDay: '[Ieri alle] LT',
11600            lastWeek: function () {
11601                switch (this.day()) {
11602                    case 0:
11603                        return '[la scorsa] dddd [alle] LT';
11604                    default:
11605                        return '[lo scorso] dddd [alle] LT';
11606                }
11607            },
11608            sameElse: 'L',
11609        },
11610        relativeTime: {
11611            future: function (s) {
11612                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
11613            },
11614            past: '%s fa',
11615            s: 'alcuni secondi',
11616            ss: '%d secondi',
11617            m: 'un minuto',
11618            mm: '%d minuti',
11619            h: "un'ora",
11620            hh: '%d ore',
11621            d: 'un giorno',
11622            dd: '%d giorni',
11623            M: 'un mese',
11624            MM: '%d mesi',
11625            y: 'un anno',
11626            yy: '%d anni',
11627        },
11628        dayOfMonthOrdinalParse: /\d{1,2}º/,
11629        ordinal: '%dº',
11630        week: {
11631            dow: 1, // Monday is the first day of the week.
11632            doy: 4, // The week that contains Jan 4th is the first week of the year.
11633        },
11634    });
11635
11636    //! moment.js locale configuration
11637
11638    hooks.defineLocale('it', {
11639        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
11640            '_'
11641        ),
11642        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
11643        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
11644            '_'
11645        ),
11646        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
11647        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
11648        longDateFormat: {
11649            LT: 'HH:mm',
11650            LTS: 'HH:mm:ss',
11651            L: 'DD/MM/YYYY',
11652            LL: 'D MMMM YYYY',
11653            LLL: 'D MMMM YYYY HH:mm',
11654            LLLL: 'dddd D MMMM YYYY HH:mm',
11655        },
11656        calendar: {
11657            sameDay: function () {
11658                return (
11659                    '[Oggi a' +
11660                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
11661                    ']LT'
11662                );
11663            },
11664            nextDay: function () {
11665                return (
11666                    '[Domani a' +
11667                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
11668                    ']LT'
11669                );
11670            },
11671            nextWeek: function () {
11672                return (
11673                    'dddd [a' +
11674                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
11675                    ']LT'
11676                );
11677            },
11678            lastDay: function () {
11679                return (
11680                    '[Ieri a' +
11681                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
11682                    ']LT'
11683                );
11684            },
11685            lastWeek: function () {
11686                switch (this.day()) {
11687                    case 0:
11688                        return (
11689                            '[La scorsa] dddd [a' +
11690                            (this.hours() > 1
11691                                ? 'lle '
11692                                : this.hours() === 0
11693                                ? ' '
11694                                : "ll'") +
11695                            ']LT'
11696                        );
11697                    default:
11698                        return (
11699                            '[Lo scorso] dddd [a' +
11700                            (this.hours() > 1
11701                                ? 'lle '
11702                                : this.hours() === 0
11703                                ? ' '
11704                                : "ll'") +
11705                            ']LT'
11706                        );
11707                }
11708            },
11709            sameElse: 'L',
11710        },
11711        relativeTime: {
11712            future: 'tra %s',
11713            past: '%s fa',
11714            s: 'alcuni secondi',
11715            ss: '%d secondi',
11716            m: 'un minuto',
11717            mm: '%d minuti',
11718            h: "un'ora",
11719            hh: '%d ore',
11720            d: 'un giorno',
11721            dd: '%d giorni',
11722            w: 'una settimana',
11723            ww: '%d settimane',
11724            M: 'un mese',
11725            MM: '%d mesi',
11726            y: 'un anno',
11727            yy: '%d anni',
11728        },
11729        dayOfMonthOrdinalParse: /\d{1,2}º/,
11730        ordinal: '%dº',
11731        week: {
11732            dow: 1, // Monday is the first day of the week.
11733            doy: 4, // The week that contains Jan 4th is the first week of the year.
11734        },
11735    });
11736
11737    //! moment.js locale configuration
11738
11739    hooks.defineLocale('ja', {
11740        eras: [
11741            {
11742                since: '2019-05-01',
11743                offset: 1,
11744                name: '令和',
11745                narrow: '㋿',
11746                abbr: 'R',
11747            },
11748            {
11749                since: '1989-01-08',
11750                until: '2019-04-30',
11751                offset: 1,
11752                name: '平成',
11753                narrow: '㍻',
11754                abbr: 'H',
11755            },
11756            {
11757                since: '1926-12-25',
11758                until: '1989-01-07',
11759                offset: 1,
11760                name: '昭和',
11761                narrow: '㍼',
11762                abbr: 'S',
11763            },
11764            {
11765                since: '1912-07-30',
11766                until: '1926-12-24',
11767                offset: 1,
11768                name: '大正',
11769                narrow: '㍽',
11770                abbr: 'T',
11771            },
11772            {
11773                since: '1873-01-01',
11774                until: '1912-07-29',
11775                offset: 6,
11776                name: '明治',
11777                narrow: '㍾',
11778                abbr: 'M',
11779            },
11780            {
11781                since: '0001-01-01',
11782                until: '1873-12-31',
11783                offset: 1,
11784                name: '西暦',
11785                narrow: 'AD',
11786                abbr: 'AD',
11787            },
11788            {
11789                since: '0000-12-31',
11790                until: -Infinity,
11791                offset: 1,
11792                name: '紀元前',
11793                narrow: 'BC',
11794                abbr: 'BC',
11795            },
11796        ],
11797        eraYearOrdinalRegex: /(元|\d+)年/,
11798        eraYearOrdinalParse: function (input, match) {
11799            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
11800        },
11801        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
11802        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
11803            '_'
11804        ),
11805        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
11806        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
11807        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
11808        longDateFormat: {
11809            LT: 'HH:mm',
11810 
11810           LTS: 'HH:mm:ss',
11811            L: 'YYYY/MM/DD',
11812            LL: 'YYYY年M月D日',
11813            LLL: 'YYYY年M月D日 HH:mm',
11814            LLLL: 'YYYY年M月D日 dddd HH:mm',
11815            l: 'YYYY/MM/DD',
11816            ll: 'YYYY年M月D日',
11817            lll: 'YYYY年M月D日 HH:mm',
11818            llll: 'YYYY年M月D日(ddd) HH:mm',
11819        },
11820        meridiemParse: /午前|午後/i,
11821        isPM: function (input) {
11822            return input === '午後';
11823        },
11824        meridiem: function (hour, minute, isLower) {
11825            if (hour < 12) {
11826                return '午前';
11827            } else {
11828                return '午後';
11829            }
11830        },
11831        calendar: {
11832            sameDay: '[今日] LT',
11833            nextDay: '[明日] LT',
11834            nextWeek: function (now) {
11835                if (now.week() !== this.week()) {
11836                    return '[来週]dddd LT';
11837                } else {
11838                    return 'dddd LT';
11839                }
11840            },
11841            lastDay: '[昨日] LT',
11842            lastWeek: function (now) {
11843                if (this.week() !== now.week()) {
11844                    return '[先週]dddd LT';
11845                } else {
11846                    return 'dddd LT';
11847                }
11848            },
11849            sameElse: 'L',
11850        },
11851        dayOfMonthOrdinalParse: /\d{1,2}日/,
11852        ordinal: function (number, period) {
11853            switch (period) {
11854                case 'y':
11855                    return number === 1 ? '元年' : number + '年';
11856                case 'd':
11857                case 'D':
11858                case 'DDD':
11859                    return number + '日';
11860                default:
11861                    return number;
11862            }
11863        },
11864        relativeTime: {
11865            future: '%s後',
11866            past: '%s前',
11867            s: '数秒',
11868            ss: '%d秒',
11869            m: '1分',
11870            mm: '%d分',
11871            h: '1時間',
11872            hh: '%d時間',
11873            d: '1日',
11874            dd: '%d日',
11875            M: '1ヶ月',
11876            MM: '%dヶ月',
11877            y: '1å¹´',
11878            yy: '%då¹´',
11879        },
11880    });
11881
11882    //! moment.js locale configuration
11883
11884    hooks.defineLocale('jv', {
11885        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
11886            '_'
11887        ),
11888        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
11889        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
11890        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
11891        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
11892        longDateFormat: {
11893            LT: 'HH.mm',
11894            LTS: 'HH.mm.ss',
11895            L: 'DD/MM/YYYY',
11896            LL: 'D MMMM YYYY',
11897            LLL: 'D MMMM YYYY [pukul] HH.mm',
11898            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
11899        },
11900        meridiemParse: /enjing|siyang|sonten|ndalu/,
11901        meridiemHour: function (hour, meridiem) {
11902            if (hour === 12) {
11903                hour = 0;
11904            }
11905            if (meridiem === 'enjing') {
11906                return hour;
11907            } else if (meridiem === 'siyang') {
11908                return hour >= 11 ? hour : hour + 12;
11909            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
11910                return hour + 12;
11911            }
11912        },
11913        meridiem: function (hours, minutes, isLower) {
11914            if (hours < 11) {
11915                return 'enjing';
11916            } else if (hours < 15) {
11917                return 'siyang';
11918            } else if (hours < 19) {
11919                return 'sonten';
11920            } else {
11921                return 'ndalu';
11922            }
11923        },
11924        calendar: {
11925            sameDay: '[Dinten puniko pukul] LT',
11926            nextDay: '[Mbenjang pukul] LT',
11927            nextWeek: 'dddd [pukul] LT',
11928            lastDay: '[Kala wingi pukul] LT',
11929            lastWeek: 'dddd [kepengker pukul] LT',
11930            sameElse: 'L',
11931        },
11932        relativeTime: {
11933            future: 'wonten ing %s',
11934            past: '%s ingkang kepengker',
11935            s: 'sawetawis detik',
11936            ss: '%d detik',
11937            m: 'setunggal menit',
11938            mm: '%d menit',
11939            h: 'setunggal jam',
11940            hh: '%d jam',
11941            d: 'sedinten',
11942            dd: '%d dinten',
11943            M: 'sewulan',
11944            MM: '%d wulan',
11945            y: 'setaun',
11946            yy: '%d taun',
11947        },
11948        week: {
11949            dow: 1, // Monday is the first day of the week.
11950            doy: 7, // The week that contains Jan 7th is the first week of the year.
11951        },
11952    });
11953
11954    //! moment.js locale configuration
11955
11956    hooks.defineLocale('ka', {
11957        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
11958            '_'
11959        ),
11960        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
11961        weekdays: {
11962            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.
11962split(
11963                '_'
11964            ),
11965            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
11966                '_'
11967            ),
11968            isFormat: /(წინა|შემდეგ)/,
11969        },
11970        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
11971        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
11972        longDateFormat: {
11973            LT: 'HH:mm',
11974            LTS: 'HH:mm:ss',
11975            L: 'DD/MM/YYYY',
11976            LL: 'D MMMM YYYY',
11977            LLL: 'D MMMM YYYY HH:mm',
11978            LLLL: 'dddd, D MMMM YYYY HH:mm',
11979        },
11980        calendar: {
11981            sameDay: '[დღეს] LT[-ზე]',
11982            nextDay: '[ხვალ] LT[-ზე]',
11983            lastDay: '[გუშინ] LT[-ზე]',
11984            nextWeek: '[შემდეგ] dddd LT[-ზე]',
11985            lastWeek: '[წინა] dddd LT-ზე',
11986            sameElse: 'L',
11987        },
11988        relativeTime: {
11989            future: function (s) {
11990                return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (
11991                    $0,
11992                    $1,
11993                    $2
11994                ) {
11995                    return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
11996                });
11997            },
11998            past: function (s) {
11999                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
12000                    return s.replace(/(ი|ე)$/, 'ის წინ');
12001                }
12002                if (/წელი/.test(s)) {
12003                    return s.replace(/წელი$/, 'წლის წინ');
12004                }
12005                return s;
12006            },
12007            s: 'რამდენიმე წამი',
12008            ss: '%d წამი',
12009            m: 'წუთი',
12010            mm: '%d წუთი',
12011            h: 'საათი',
12012            hh: '%d საათი',
12013            d: 'დღე',
12014            dd: '%d დღე',
12015            M: 'თვე',
12016            MM: '%d თვე',
12017            y: 'წელი',
12018            yy: '%d წელი',
12019        },
12020        dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
12021        ordinal: function (number) {
12022            if (number === 0) {
12023                return number;
12024            }
12025            if (number === 1) {
12026                return number + '-ლი';
12027            }
12028            if (
12029                number < 20 ||
12030                (number <= 100 && number % 20 === 0) ||
12031                number % 100 === 0
12032            ) {
12033                return 'მე-' + number;
12034            }
12035            return number + '-ე';
12036        },
12037        week: {
12038            dow: 1,
12039            doy: 7,
12040        },
12041    });
12042
12043    //! moment.js locale configuration
12044
12045    var suffixes$1 = {
12046        0: '-ші',
12047        1: '-ші',
12048        2: '-ші',
12049        3: '-ші',
12050        4: '-ші',
12051        5: '-ші',
12052        6: '-шы',
12053        7: '-ші',
12054        8: '-ші',
12055        9: '-шы',
12056        10: '-шы',
12057        20: '-шы',
12058        30: '-шы',
12059        40: '-шы',
12060        50: '-ші',
12061        60: '-шы',
12062        70: '-ші',
12063        80: '-ші',
12064        90: '-шы',
12065        100: '-ші',
12066    };
12067
12068    hooks.defineLocale('kk', {
12069        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
12070            '_'
12071        ),
12072        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
12073        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
12074            '_'
12075        ),
12076        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
12077        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
12078        longDateFormat: {
12079            LT: 'HH:mm',
12080            LTS: 'HH:mm:ss',
12081            L: 'DD.MM.YYYY',
12082            LL: 'D MMMM YYYY',
12083            LLL: 'D MMMM YYYY HH:mm',
12084            LLLL: 'dddd, D MMMM YYYY HH:mm',
12085        },
12086        calendar: {
12087            sameDay: '[Бүгін сағат] LT',
12088            nextDay: '[Ертең сағат] LT',
12089            nextWeek: 'dddd [сағат] LT',
12090            lastDay: '[Кеше сағат] LT',
12091            lastWeek: '[Өткен аптаның] dddd [сағат] LT',
12092            sameElse: 'L',
12093        },
12094        relativeTime: {
12095            future: '%s ішінде',
12096            past: '%s бұрын',
12097            s: 'бірнеше секунд',
12098            ss: '%d секунд',
12099            m: 'бір минут',
12100            mm: '%d минут',
12101            h: 'бір сағат',
12102            hh: '%d сағат',
12103            d: 'бір күн',
12104            dd: '%d күн',
12105            M: 'бір ай',
12106            MM: '%d ай',
12107            y: 'бір жыл',
12108            yy: '%d жыл',
12109        },
12110        dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
12111        ordinal: function (number) {
12112            var a = number % 10,
12113                b = number >= 100 ? 100 : null;
12114            return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);
12115        },
12116        week: {
12117            dow: 1, // Monday is the first day of the week.
12118            doy: 7, // The week that contains Jan 7th is the first week of the year.
12119        },
12120    });
12121
12122    //! moment.js locale configuration
12123
12124    var symbolMap$9 = {
12125            1: '១',
12126            2: '២',
12127            3: '៣',
12128            4: '៤',
12129            5: '៥',
12130            6: '៦',
12131            7: '៧',
12132            8: '៨',
12133            9: '៩',
12134            0: '០',
12135        },
12136        numberMap$8 = {
12137            '១': '1',
12138            '២': '2',
12139            '៣': '3',
12140            '៤': '4',
12141            '៥': '5',
12142            '៦': '6',
12143            '៧': '7',
12144            '៨': '8',
12145            '៩': '9',
12146            '០': '0',
12147        };
12148
12149    hooks.defineLocale('km', {
12150        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
12151            '_'
12152        ),
12153        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
12154            '_'
12155        ),
12156        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
12157        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
12158        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
12159        weekdaysParseExact: true,
12160        longDateFormat: {
12161            LT: 'HH:mm',
12162            LTS: 'HH:mm:ss',
12163            L: 'DD/MM/YYYY',
12164            LL: 'D MMMM YYYY',
12165            LLL: 'D MMMM YYYY HH:mm',
12166            LLLL: 'dddd, D MMMM YYYY HH:mm',
12167        },
12168        meridiemParse: /ព្រឹក|ល្ងាច/,
12169        isPM: function (input) {
12170            return input === 'ល្ងាច';
12171        },
12172        meridiem: function (hour, minute, isLower) {
12173            if (hour < 12) {
vendor: 22,468 bytes, lines 12174-12808
12174                return 'ព្រឹក';
12175            } else {
12176                return 'ល្ងាច';
12177            }
12178        },
12179        calendar: {
12180            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
12181            nextDay: '[ស្អែក ម៉ោង] LT',
12182            nextWeek: 'dddd [ម៉ោង] LT',
12183            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
12184            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
12185            sameElse: 'L',
12186        },
12187        relativeTime: {
12188            future: '%sទៀត',
12189            past: '%sមុន',
12190            s: 'ប៉ុន្មានវិនាទី',
12191            ss: '%d វិនាទី',
12192            m: 'មួយនាទី',
12193            mm: '%d នាទី',
12194            h: 'មួយម៉ោង',
12195            hh: '%d ម៉ោង',
12196            d: 'មួយថ្ងៃ',
12197            dd: '%d ថ្ងៃ',
12198            M: 'មួយខែ',
12199            MM: '%d ខែ',
12200            y: 'មួយឆ្នាំ',
12201            yy: '%d ឆ្នាំ',
12202        },
12203        dayOfMonthOrdinalParse: /ទី\d{1,2}/,
12204        ordinal: 'ទី%d',
12205        preparse: function (string) {
12206            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
12207                return numberMap$8[match];
12208            });
12209        },
12210        postformat: function (string) {
12211            return string.replace(/\d/g, function (match) {
12212                return symbolMap$9[match];
12213            });
12214        },
12215        week: {
12216            dow: 1, // Monday is the first day of the week.
12217            doy: 4, // The week that contains Jan 4th is the first week of the year.
12218        },
12219    });
12220
12221    //! moment.js locale configuration
12222
12223    var symbolMap$a = {
12224            1: 'à³§',
12225            2: '೨',
12226            3: '೩',
12227            4: '೪',
12228            5: '೫',
12229            6: '೬',
12230            7: 'à³­',
12231            8: 'à³®',
12232            9: '೯',
12233            0: '೦',
12234        },
12235        numberMap$9 = {
12236            'à³§': '1',
12237            '೨': '2',
12238            '೩': '3',
12239            '೪': '4',
12240            '೫': '5',
12241            '೬': '6',
12242            'à³­': '7',
12243            'à³®': '8',
12244            '೯': '9',
12245            '೦': '0',
12246        };
12247
12248    hooks.defineLocale('kn', {
12249        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
12250            '_'
12251        ),
12252        monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
12253            '_'
12254        ),
12255        monthsParseExact: true,
12256        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
12257            '_'
12258        ),
12259        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
12260        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
12261        longDateFormat: {
12262            LT: 'A h:mm',
12263            LTS: 'A h:mm:ss',
12264            L: 'DD/MM/YYYY',
12265            LL: 'D MMMM YYYY',
12266            LLL: 'D MMMM YYYY, A h:mm',
12267            LLLL: 'dddd, D MMMM YYYY, A h:mm',
12268        },
12269        calendar: {
12270            sameDay: '[ಇಂದು] LT',
12271            nextDay: '[ನಾಳೆ] LT',
12272            nextWeek: 'dddd, LT',
12273            lastDay: '[ನಿನ್ನೆ] LT',
12274            lastWeek: '[ಕೊನೆಯ] dddd, LT',
12275            sameElse: 'L',
12276        },
12277        relativeTime: {
12278            future: '%s ನಂತರ',
12279            past: '%s ಹಿಂದೆ',
12280            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
12281            ss: '%d ಸೆಕೆಂಡುಗಳು',
12282            m: 'ಒಂದು ನಿಮಿಷ',
12283            mm: '%d ನಿಮಿಷ',
12284            h: 'ಒಂದು ಗಂಟೆ',
12285            hh: '%d ಗಂಟೆ',
12286            d: 'ಒಂದು ದಿನ',
12287            dd: '%d ದಿನ',
12288            M: 'ಒಂದು ತಿಂಗಳು',
12289            MM: '%d ತಿಂಗಳು',
12290            y: 'ಒಂದು ವರ್ಷ',
12291            yy: '%d ವರ್ಷ',
12292        },
12293        preparse: function (string) {
12294            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
12295                return numberMap$9[match];
12296            });
12297        },
12298        postformat: function (string) {
12299            return string.replace(/\d/g, function (match) {
12300                return symbolMap$a[match];
12301            });
12302        },
12303        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
12304        meridiemHour: function (hour, meridiem) {
12305            if (hour === 12) {
12306                hour = 0;
12307            }
12308            if (meridiem === 'ರಾತ್ರಿ') {
12309                return hour < 4 ? hour : hour + 12;
12310            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
12311                return hour;
12312            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
12313                return hour >= 10 ? hour : hour + 12;
12314            } else if (meridiem === 'ಸಂಜೆ') {
12315                return hour + 12;
12316            }
12317        },
12318        meridiem: function (hour, minute, isLower) {
12319            if (hour < 4) {
12320                return 'ರಾತ್ರಿ';
12321            } else if (hour < 10) {
12322                return 'ಬೆಳಿಗ್ಗೆ';
12323            } else if (hour < 17) {
12324                return 'ಮಧ್ಯಾಹ್ನ';
12325            } else if (hour < 20) {
12326                return 'ಸಂಜೆ';
12327            } else {
12328                return 'ರಾತ್ರಿ';
12329            }
12330        },
12331        dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
12332        ordinal: function (number) {
12333            return number + 'ನೇ';
12334        },
12335        week: {
12336            dow: 0, // Sunday is the first day of the week.
12337            doy: 6, // The week that contains Jan 6th is the first week of the year.
12338        },
12339    });
12340
12341    //! moment.js locale configuration
12342
12343    hooks.defineLocale('ko', {
12344        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
12345        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
12346            '_'
12347        ),
12348        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
12349        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
12350        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
12351        longDateFormat: {
12352            LT: 'A h:mm',
12353            LTS: 'A h:mm:ss',
12354            L: 'YYYY.MM.DD.',
12355            LL: 'YYYY년 MMMM D일',
12356            LLL: 'YYYY년 MMMM D일 A h:mm',
12357            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
12358            l: 'YYYY.MM.DD.',
12359            ll: 'YYYY년 MMMM D일',
12360            lll: 'YYYY년 MMMM D일 A h:mm',
12361            llll: 'YYYY년 MMMM D일 dddd A h:mm',
12362        },
12363        calendar: {
12364            sameDay: '오늘 LT',
12365            nextDay: '내일 LT',
12366            nextWeek: 'dddd LT',
12367            lastDay: '어제 LT',
12368            lastWeek: '지난주 dddd LT',
12369            sameElse: 'L',
12370        },
12371        relativeTime: {
12372            future: '%s 후',
12373            past: '%s 전',
12374            s: '몇 초',
12375            ss: '%d초',
12376            m: '1분',
12377            mm: '%d분',
12378            h: '한 시간',
12379            hh: '%d시간',
12380            d: '하루',
12381            dd: '%d일',
12382            M: '한 달',
12383            MM: '%d달',
12384            y: '일 년',
12385            yy: '%d년',
12386        },
12387        dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
12388        ordinal: function (number, period) {
12389            switch (period) {
12390                case 'd':
12391                case 'D':
12392                case 'DDD':
12393                    return number + '일';
12394                case 'M':
12395                    return number + '월';
12396                case 'w':
12397                case 'W':
12398                    return number + '주';
12399                default:
12400                    return number;
12401            }
12402        },
12403        meridiemParse: /오전|오후/,
12404        isPM: function (token) {
12405            return token === '오후';
12406        },
12407        meridiem: function (hour, minute, isUpper) {
12408            return hour < 12 ? '오전' : '오후';
12409        },
12410    });
12411
12412    //! moment.js locale configuration
12413
12414    var symbolMap$b = {
12415            1: 'Ù¡',
12416            2: 'Ù¢',
12417            3: 'Ù£',
12418            4: 'Ù¤',
12419            5: 'Ù¥',
12420            6: 'Ù¦',
12421            7: 'Ù§',
12422            8: 'Ù¨',
12423            9: 'Ù©',
12424            0: 'Ù ',
12425        },
12426        numberMap$a = {
12427            'Ù¡': '1',
12428            'Ù¢': '2',
12429            'Ù£': '3',
12430            'Ù¤': '4',
12431            'Ù¥': '5',
12432            'Ù¦': '6',
12433            'Ù§': '7',
12434            'Ù¨': '8',
12435            'Ù©': '9',
12436            'Ù ': '0',
12437        },
12438        months$8 = [
12439            'کانونی دووەم',
12440            'شوبات',
12441            'ئازار',
12442            'نیسان',
12443            'ئایار',
12444            'حوزەیران',
12445            'تەمموز',
12446            'ئاب',
12447            'ئەیلوول',
12448            'تشرینی یەكەم',
12449            'تشرینی دووەم',
12450            'كانونی یەکەم',
12451        ];
12452
12453    hooks.defineLocale('ku', {
12454        months: months$8,
12455        monthsShort: months$8,
12456        weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
12457            '_'
12458        ),
12459        weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(
12460            '_'
12461        ),
12462        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
12463        weekdaysParseExact: true,
12464        longDateFormat: {
12465            LT: 'HH:mm',
12466            LTS: 'HH:mm:ss',
12467            L: 'DD/MM/YYYY',
12468            LL: 'D MMMM YYYY',
12469            LLL: 'D MMMM YYYY HH:mm',
12470            LLLL: 'dddd, D MMMM YYYY HH:mm',
12471        },
12472        meridiemParse: /ئێواره‌|به‌یانی/,
12473        isPM: function (input) {
12474            return /ئێواره‌/.test(input);
12475        },
12476        meridiem: function (hour, minute, isLower) {
12477            if (hour < 12) {
12478                return 'به‌یانی';
12479            } else {
12480                return 'ئێواره‌';
12481            }
12482        },
12483        calendar: {
12484            sameDay: '[ئه‌مرۆ كاتژمێر] LT',
12485            nextDay: '[به‌یانی كاتژمێر] LT',
12486            nextWeek: 'dddd [كاتژمێر] LT',
12487            lastDay: '[دوێنێ كاتژمێر] LT',
12488            lastWeek: 'dddd [كاتژمێر] LT',
12489            sameElse: 'L',
12490        },
12491        relativeTime: {
12492            future: 'له‌ %s',
12493            past: '%s',
12494            s: 'چه‌ند چركه‌یه‌ك',
12495            ss: 'چركه‌ %d',
12496            m: 'یه‌ك خوله‌ك',
12497            mm: '%d خوله‌ك',
12498            h: 'یه‌ك كاتژمێر',
12499            hh: '%d كاتژمێر',
12500            d: 'یه‌ك ڕۆژ',
12501            dd: '%d ڕۆژ',
12502            M: 'یه‌ك مانگ',
12503            MM: '%d مانگ',
12504            y: 'یه‌ك ساڵ',
12505            yy: '%d ساڵ',
12506        },
12507        preparse: function (string) {
12508            return string
12509                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
12510                    return numberMap$a[match];
12511                })
12512                .replace(/،/g, ',');
12513        },
12514        postformat: function (string) {
12515            return string
12516                .replace(/\d/g, function (match) {
12517                    return symbolMap$b[match];
12518                })
12519                .replace(/,/g, '،');
12520        },
12521        week: {
12522            dow: 6, // Saturday is the first day of the week.
12523            doy: 12, // The week that contains Jan 12th is the first week of the year.
12524        },
12525    });
12526
12527    //! moment.js locale configuration
12528
12529    var suffixes$2 = {
12530        0: '-чү',
12531        1: '-чи',
12532        2: '-чи',
12533        3: '-чү',
12534        4: '-чү',
12535        5: '-чи',
12536        6: '-чы',
12537        7: '-чи',
12538        8: '-чи',
12539        9: '-чу',
12540        10: '-чу',
12541        20: '-чы',
12542        30: '-чу',
12543        40: '-чы',
12544        50: '-чү',
12545        60: '-чы',
12546        70: '-чи',
12547        80: '-чи',
12548        90: '-чу',
12549        100: '-чү',
12550    };
12551
12552    hooks.defineLocale('ky', {
12553        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
12554            '_'
12555        ),
12556        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
12557            '_'
12558        ),
12559        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
12560            '_'
12561        ),
12562        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
12563        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
12564        longDateFormat: {
12565            LT: 'HH:mm',
12566            LTS: 'HH:mm:ss',
12567            L: 'DD.MM.YYYY',
12568            LL: 'D MMMM YYYY',
12569            LLL: 'D MMMM YYYY HH:mm',
12570            LLLL: 'dddd, D MMMM YYYY HH:mm',
12571        },
12572        calendar: {
12573            sameDay: '[Бүгүн саат] LT',
12574            nextDay: '[Эртең саат] LT',
12575            nextWeek: 'dddd [саат] LT',
12576            lastDay: '[Кечээ саат] LT',
12577            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
12578            sameElse: 'L',
12579        },
12580        relativeTime: {
12581            future: '%s ичинде',
12582            past: '%s мурун',
12583            s: 'бирнече секунд',
12584            ss: '%d секунд',
12585            m: 'бир мүнөт',
12586            mm: '%d мүнөт',
12587            h: 'бир саат',
12588            hh: '%d саат',
12589            d: 'бир күн',
12590            dd: '%d күн',
12591            M: 'бир ай',
12592            MM: '%d ай',
12593            y: 'бир жыл',
12594            yy: '%d жыл',
12595        },
12596        dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
12597        ordinal: function (number) {
12598            var a = number % 10,
12599                b = number >= 100 ? 100 : null;
12600            return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);
12601        },
12602        week: {
12603            dow: 1, // Monday is the first day of the week.
12604            doy: 7, // The week that contains Jan 7th is the first week of the year.
12605        },
12606    });
12607
12608    //! moment.js locale configuration
12609
12610    function processRelativeTime$6(number, withoutSuffix, key, isFuture) {
12611        var format = {
12612            m: ['eng Minutt', 'enger Minutt'],
12613            h: ['eng Stonn', 'enger Stonn'],
12614            d: ['een Dag', 'engem Dag'],
12615            M: ['ee Mount', 'engem Mount'],
12616            y: ['ee Joer', 'engem Joer'],
12617        };
12618        return withoutSuffix ? format[key][0] : format[key][1];
12619    }
12620    function processFutureTime(string) {
12621        var number = string.substr(0, string.indexOf(' '));
12622        if (eifelerRegelAppliesToNumber(number)) {
12623            return 'a ' + string;
12624        }
12625        return 'an ' + string;
12626    }
12627    function processPastTime(string) {
12628        var number = string.substr(0, string.indexOf(' '));
12629        if (eifelerRegelAppliesToNumber(number)) {
12630            return 'viru ' + string;
12631        }
12632        return 'virun ' + string;
12633    }
12634    /**
12635     * Returns true if the word before the given number loses the '-n' ending.
12636     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
12637     *
12638     * @param number {integer}
12639     * @returns {boolean}
12640     */
12641    function eifelerRegelAppliesToNumber(number) {
12642        number = parseInt(number, 10);
12643        if (isNaN(number)) {
12644            return false;
12645        }
12646        if (number < 0) {
12647            // Negative Number --> always true
12648            return true;
12649        } else if (number < 10) {
12650            // Only 1 digit
12651            if (4 <= number && number <= 7) {
12652                return true;
12653            }
12654            return false;
12655        } else if (number < 100) {
12656            // 2 digits
12657            var lastDigit = number % 10,
12658                firstDigit = number / 10;
12659            if (lastDigit === 0) {
12660                return eifelerRegelAppliesToNumber(firstDigit);
12661            }
12662            return eifelerRegelAppliesToNumber(lastDigit);
12663        } else if (number < 10000) {
12664            // 3 or 4 digits --> recursively check first digit
12665            while (number >= 10) {
12666                number = number / 10;
12667            }
12668            return eifelerRegelAppliesToNumber(number);
12669        } else {
12670            // Anything larger than 4 digits: recursively check first n-3 digits
12671            number = number / 1000;
12672            return eifelerRegelAppliesToNumber(number);
12673        }
12674    }
12675
12676    hooks.defineLocale('lb', {
12677        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
12678            '_'
12679        ),
12680        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
12681            '_'
12682        ),
12683        monthsParseExact: true,
12684        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
12685            '_'
12686        ),
12687        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
12688        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
12689        weekdaysParseExact: true,
12690        longDateFormat: {
12691            LT: 'H:mm [Auer]',
12692            LTS: 'H:mm:ss [Auer]',
12693            L: 'DD.MM.YYYY',
12694            LL: 'D. MMMM YYYY',
12695            LLL: 'D. MMMM YYYY H:mm [Auer]',
12696            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
12697        },
12698        calendar: {
12699            sameDay: '[Haut um] LT',
12700            sameElse: 'L',
12701            nextDay: '[Muer um] LT',
12702            nextWeek: 'dddd [um] LT',
12703            lastDay: '[Gëschter um] LT',
12704            lastWeek: function () {
12705                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
12706                switch (this.day()) {
12707                    case 2:
12708                    case 4:
12709                        return '[Leschten] dddd [um] LT';
12710                    default:
12711                        return '[Leschte] dddd [um] LT';
12712                }
12713            },
12714        },
12715        relativeTime: {
12716            future: processFutureTime,
12717            past: processPastTime,
12718            s: 'e puer Sekonnen',
12719            ss: '%d Sekonnen',
12720            m: processRelativeTime$6,
12721            mm: '%d Minutten',
12722            h: processRelativeTime$6,
12723            hh: '%d Stonnen',
12724            d: processRelativeTime$6,
12725            dd: '%d Deeg',
12726            M: processRelativeTime$6,
12727            MM: '%d Méint',
12728            y: processRelativeTime$6,
12729            yy: '%d Joer',
12730        },
12731        dayOfMonthOrdinalParse: /\d{1,2}\./,
12732        ordinal: '%d.',
12733        week: {
12734            dow: 1, // Monday is the first day of the week.
12735            doy: 4, // The week that contains Jan 4th is the first week of the year.
12736        },
12737    });
12738
12739    //! moment.js locale configuration
12740
12741    hooks.defineLocale('lo', {
12742        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
12743            '_'
12744        ),
12745        monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
12746            '_'
12747        ),
12748        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
12749        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
12750        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
12751        weekdaysParseExact: true,
12752        longDateFormat: {
12753            LT: 'HH:mm',
12754            LTS: 'HH:mm:ss',
12755            L: 'DD/MM/YYYY',
12756            LL: 'D MMMM YYYY',
12757            LLL: 'D MMMM YYYY HH:mm',
12758            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
12759        },
12760        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
12761        isPM: function (input) {
12762            return input === 'ຕອນແລງ';
12763        },
12764        meridiem: function (hour, minute, isLower) {
12765            if (hour < 12) {
12766                return 'ຕອນເຊົ້າ';
12767            } else {
12768                return 'ຕອນແລງ';
12769            }
12770        },
12771        calendar: {
12772            sameDay: '[ມື້ນີ້ເວລາ] LT',
12773            nextDay: '[ມື້ອື່ນເວລາ] LT',
12774            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
12775            lastDay: '[ມື້ວານນີ້ເວລາ] LT',
12776            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
12777            sameElse: 'L',
12778        },
12779        relativeTime: {
12780            future: 'ອີກ %s',
12781            past: '%sຜ່ານມາ',
12782            s: 'ບໍ່ເທົ່າໃດວິນາທີ',
12783            ss: '%d ວິນາທີ',
12784            m: '1 ນາທີ',
12785            mm: '%d ນາທີ',
12786            h: '1 ຊົ່ວໂມງ',
12787            hh: '%d ຊົ່ວໂມງ',
12788            d: '1 ມື້',
12789            dd: '%d ມື້',
12790            M: '1 ເດືອນ',
12791            MM: '%d ເດືອນ',
12792            y: '1 ປີ',
12793            yy: '%d ປີ',
12794        },
12795        dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
12796        ordinal: function (number) {
12797            return 'ທີ່' + number;
12798        },
12799    });
12800
12801    //! moment.js locale configuration
12802
12803    var units = {
12804        ss: 'sekundė_sekundžių_sekundes',
12805        m: 'minutė_minutės_minutę',
12806        mm: 'minutės_minučių_minutes',
12807        h: 'valanda_valandos_valandą',
12808        hh: 'valandos_valandų_valandas',
vendor: 4,406 bytes, lines 12809-12928
12809        d: 'diena_dienos_dieną',
12810        dd: 'dienos_dienų_dienas',
12811        M: 'mėnuo_mėnesio_mėnesį',
12812        MM: 'mėnesiai_mėnesių_mėnesius',
12813        y: 'metai_metų_metus',
12814        yy: 'metai_metų_metus',
12815    };
12816    function translateSeconds(number, withoutSuffix, key, isFuture) {
12817        if (withoutSuffix) {
12818            return 'kelios sekundės';
12819        } else {
12820            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
12821        }
12822    }
12823    function translateSingular(number, withoutSuffix, key, isFuture) {
12824        return withoutSuffix
12825            ? forms(key)[0]
12826            : isFuture
12827            ? forms(key)[1]
12828            : forms(key)[2];
12829    }
12830    function special(number) {
12831        return number % 10 === 0 || (number > 10 && number < 20);
12832    }
12833    function forms(key) {
12834        return units[key].split('_');
12835    }
12836    function translate$6(number, withoutSuffix, key, isFuture) {
12837        var result = number + ' ';
12838        if (number === 1) {
12839            return (
12840                result + translateSingular(number, withoutSuffix, key[0], isFuture)
12841            );
12842        } else if (withoutSuffix) {
12843            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
12844        } else {
12845            if (isFuture) {
12846                return result + forms(key)[1];
12847            } else {
12848                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
12849            }
12850        }
12851    }
12852    hooks.defineLocale('lt', {
12853        months: {
12854            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
12855                '_'
12856            ),
12857            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
12858                '_'
12859            ),
12860            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
12861        },
12862        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
12863        weekdays: {
12864            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
12865                '_'
12866            ),
12867            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
12868                '_'
12869            ),
12870            isFormat: /dddd HH:mm/,
12871        },
12872        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
12873        weekdaysMin: 'S_P_A_T_K_Pn_Å '.split('_'),
12874        weekdaysParseExact: true,
12875        longDateFormat: {
12876            LT: 'HH:mm',
12877            LTS: 'HH:mm:ss',
12878            L: 'YYYY-MM-DD',
12879            LL: 'YYYY [m.] MMMM D [d.]',
12880            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
12881            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
12882            l: 'YYYY-MM-DD',
12883            ll: 'YYYY [m.] MMMM D [d.]',
12884            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
12885            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
12886        },
12887        calendar: {
12888            sameDay: '[Å iandien] LT',
12889            nextDay: '[Rytoj] LT',
12890            nextWeek: 'dddd LT',
12891            lastDay: '[Vakar] LT',
12892            lastWeek: '[Praėjusį] dddd LT',
12893            sameElse: 'L',
12894        },
12895        relativeTime: {
12896            future: 'po %s',
12897            past: 'prieš %s',
12898            s: translateSeconds,
12899            ss: translate$6,
12900            m: translateSingular,
12901            mm: translate$6,
12902            h: translateSingular,
12903            hh: translate$6,
12904            d: translateSingular,
12905            dd: translate$6,
12906            M: translateSingular,
12907            MM: translate$6,
12908            y: translateSingular,
12909            yy: translate$6,
12910        },
12911        dayOfMonthOrdinalParse: /\d{1,2}-oji/,
12912        ordinal: function (number) {
12913            return number + '-oji';
12914        },
12915        week: {
12916            dow: 1, // Monday is the first day of the week.
12917            doy: 4, // The week that contains Jan 4th is the first week of the year.
12918        },
12919    });
12920
12921    //! moment.js locale configuration
12922
12923    var units$1 = {
12924        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
12925        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
12926        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
12927        h: 'stundas_stundām_stunda_stundas'.split('_'),
12928        hh: 'stundas_stundām_stunda_stundas'.split('_'),
12929        d: 'dienas_dienām_diena_dienas'.split('_'),
12930        dd: 'dienas_dienām_diena_dienas'.split('_'),
12931        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
12932        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
12933        y: 'gada_gadiem_gads_gadi'.split('_'),
12934        yy: 'gada_gadiem_gads_gadi'.split('_'),
12935    };
12936    /**
12937     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
12938     */
12939    function format$1(forms, number, withoutSuffix) {
12940        if (withoutSuffix) {
12941            // E.g. "21 minūte", "3 minūtes".
12942            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
12943        } else {
12944            // E.g. "21 minūtes" as in "pēc 21 minūtes".
12945            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
12946            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
12947        }
12948    }
12949    function relativeTimeWithPlural$1(number, withoutSuffix, key) {
12950        return number + ' ' + format$1(units$1[key], number, withoutSuffix);
12951    }
12952    function relativeTimeWithSingular(number, withoutSuffix, key) {
12953        return format$1(units$1[key], number, withoutSuffix);
12954    }
12955    function relativeSeconds(number, withoutSuffix) {
12956        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
12957    }
12958
12959    hooks.defineLocale('lv', {
12960        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
12961            '_'
12962        ),
12963        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
12964        weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
12965            '_'
12966        ),
12967        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
12968        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
12969        weekdaysParseExact: true,
12970        longDateFormat: {
12971            LT: 'HH:mm',
12972            LTS: 'HH:mm:ss',
12973            L: 'DD.MM.YYYY.',
12974            LL: 'YYYY. [gada] D. MMMM',
12975            LLL: 'YYYY. [gada] D. MMMM, HH:mm',
12976            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
12977        },
12978        calendar: {
12979            sameDay: '[Å odien pulksten] LT',
12980            nextDay: '[Rīt pulksten] LT',
12981            nextWeek: 'dddd [pulksten] LT',
12982            lastDay: '[Vakar pulksten] LT',
12983            lastWeek: '[Pagājušā] dddd [pulksten] LT',
12984            sameElse: 'L',
12985        },
12986        relativeTime: {
12987            future: 'pēc %s',
12988            past: 'pirms %s',
12989            s: relativeSeconds,
12990            ss: relativeTimeWithPlural$1,
12991            m: relativeTimeWithSingular,
12992            mm: relativeTimeWithPlural$1,
12993            h: relativeTimeWithSingular,
12994            hh: relativeTimeWithPlural$1,
12995            d: relativeTimeWithSingular,
12996            dd: relativeTimeWithPlural$1,
12997            M: relativeTimeWithSingular,
12998            MM: relativeTimeWithPlural$1,
12999            y: relativeTimeWithSingular,
13000            yy: relativeTimeWithPlural$1,
13001        },
13002        dayOfMonthOrdinalParse: /\d{1,2}\./,
13003        ordinal: '%d.',
13004        week: {
13005            dow: 1, // Monday is the first day of the week.
13006            doy: 4, // The week that contains Jan 4th is the first week of the year.
13007        },
13008    });
13009
13010    //! moment.js locale configuration
13011
13012    var translator = {
13013        words: {
13014            //Different grammatical cases
13015            ss: ['sekund', 'sekunda', 'sekundi'],
13016            m: ['jedan minut', 'jednog minuta'],
13017            mm: ['minut', 'minuta', 'minuta'],
13018            h: ['jedan sat', 'jednog sata'],
13019            hh: ['sat', 'sata', 'sati'],
13020            dd: ['dan', 'dana', 'dana'],
13021            MM: ['mjesec', 'mjeseca', 'mjeseci'],
13022            yy: ['godina', 'godine', 'godina'],
13023        },
13024        correctGrammaticalCase: function (number, wordKey) {
13025            return number === 1
13026                ? wordKey[0]
13027                : number >= 2 && number <= 4
13028                ? wordKey[1]
13029                : wordKey[2];
13030        },
13031        translate: function (number, withoutSuffix, key) {
13032            var wordKey = translator.words[key];
13033            if (key.length === 1) {
13034                return withoutSuffix ? wordKey[0] : wordKey[1];
13035            } else {
13036                return (
13037                    number +
13038                    ' ' +
13039                    translator.correctGrammaticalCase(number, wordKey)
13040                );
13041            }
13042        },
13043    };
13044
13045    hooks.defineLocale('me', {
13046        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
13047            '_'
13048        ),
13049        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(
13050            '_'
13051        ),
13052        monthsParseExact: true,
13053        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
13054            '_'
13055        ),
13056        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
13057        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
13058        weekdaysParseExact: true,
13059        longDateFormat: {
13060            LT: 'H:mm',
13061            LTS: 'H:mm:ss',
13062            L: 'DD.MM.YYYY',
13063            LL: 'D. MMMM YYYY',
13064            LLL: 'D. MMMM YYYY H:mm',
13065            LLLL: 'dddd, D. MMMM YYYY H:mm',
13066        },
13067        calendar: {
13068            sameDay: '[danas u] LT',
13069            nextDay: '[sjutra u] LT',
13070
13071            nextWeek: function () {
13072                switch (this.day()) {
13073                    case 0:
13074                        return '[u] [nedjelju] [u] LT';
13075                    case 3:
13076                        return '[u] [srijedu] [u] LT';
13077                    case 6:
13078                        return '[u] [subotu] [u] LT';
13079                    case 1:
13080                    case 2:
13081                    case 4:
13082                    case 5:
13083                        return '[u] dddd [u] LT';
13084                }
13085            },
13086            lastDay: '[juče u] LT',
13087            lastWeek: function () {
13088                var lastWeekDays = [
13089                    '[prošle] [nedjelje] [u] LT',
13090                    '[prošlog] [ponedjeljka] [u] LT',
13091                    '[prošlog] [utorka] [u] LT',
13092                    '[prošle] [srijede] [u] LT',
13093                    '[prošlog] [četvrtka] [u] LT',
13094                    '[prošlog] [petka] [u] LT',
13095                    '[prošle] [subote] [u] LT',
13096                ];
13097                return lastWeekDays[this.day()];
13098            },
13099            sameElse: 'L',
13100        },
13101        relativeTime: {
13102            future: 'za %s',
13103            past: 'prije %s',
13104            s: 'nekoliko sekundi',
13105            ss: translator.translate,
13106            m: translator.translate,
13107            mm: translator.translate,
13108            h: translator.translate,
13109            hh: translator.translate,
13110            d: 'dan',
13111            dd: translator.translate,
13112            M: 'mjesec',
13113            MM: translator.translate,
13114            y: 'godinu',
13115            yy: translator.translate,
13116        },
13117        dayOfMonthOrdinalParse: /\d{1,2}\./,
13118        ordinal: '%d.',
13119        week: {
13120            dow: 1, // Monday is the first day of the week.
13121            doy: 7, // The week that contains Jan 7th is the first week of the year.
13122        },
13123    });
13124
13125    //! moment.js locale configuration
13126
13127    hooks.defineLocale('mi', {
13128        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(
13129            '_'
13130        ),
13131        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
13132            '_'
13133        ),
13134        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
13135        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
13136        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
13137        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
13138        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
13139        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
13140        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
13141        longDateFormat: {
13142            LT: 'HH:mm',
13143            LTS: 'HH:mm:ss',
13144            L: 'DD/MM/YYYY',
13145            LL: 'D MMMM YYYY',
13146            LLL: 'D MMMM YYYY [i] HH:mm',
13147            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
13148        },
13149        calendar: {
13150            sameDay: '[i teie mahana, i] LT',
13151            nextDay: '[apopo i] LT',
13152            nextWeek: 'dddd [i] LT',
13153            lastDay: '[inanahi i] LT',
13154            lastWeek: 'dddd [whakamutunga i] LT',
13155            sameElse: 'L',
13156        },
13157        relativeTime: {
13158            future: 'i roto i %s',
13159            past: '%s i mua',
13160            s: 'te hēkona ruarua',
13161            ss: '%d hēkona',
13162            m: 'he meneti',
13163            mm: '%d meneti',
13164            h: 'te haora',
13165            hh: '%d haora',
13166            d: 'he ra',
13167            dd: '%d ra',
13168            M: 'he marama',
13169            MM: '%d marama',
13170            y: 'he tau',
13171            yy: '%d tau',
13172        },
13173        dayOfMonthOrdinalParse: /\d{1,2}º/,
13174        ordinal: '%dº',
13175        week: {
13176            dow: 1, // Monday is the first day of the week.
13177            doy: 4, // The week that contains Jan 4th is the first week of the year.
13178        },
13179    });
13180
13181    //! moment.js locale configuration
13182
13183    hooks.defineLocale('mk', {
13184        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
13185            '_'
13186        ),
13187        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
13188        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
13189            '_'
13190        ),
13191        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
13192        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
13193        longDateFormat: {
13194            LT: 'H:mm',
13195            LTS: 'H:mm:ss',
13196            L: 'D.MM.YYYY',
13197            LL: 'D MMMM YYYY',
13198            LLL: 'D MMMM YYYY H:mm',
13199            LLLL: 'dddd, D MMMM YYYY H:mm',
13200        },
13201        calendar: {
13202            sameDay: '[Денес во] LT',
13203            nextDay: '[Утре во] LT',
13204            nextWeek: '[Во] dddd [во] LT',
13205            lastDay: '[Вчера во] LT',
13206            lastWeek: function () {
13207                switch (this.day()) {
13208                    case 0:
13209                    case 3:
13210                    case 6:
13211                        return '[Изминатата] dddd [во] LT';
13212                    case 1:
13213                    case 2:
13214                    case 4:
13215                    case 5:
13216                        return '[Изминатиот] dddd [во] LT';
13217                }
13218            },
13219            sameElse: 'L',
13220        },
13221        relativeTime: {
13222            future: 'за %s',
13223            past: 'пред %s',
13224            s: 'неколку секунди',
13225            ss: '%d секунди',
13226            m: 'една минута',
13227            mm: '%d минути',
13228            h: 'еден час',
13229            hh: '%d часа',
13230            d: 'еден ден',
13231            dd: '%d дена',
13232            M: 'еден месец',
13233            MM: '%d месеци',
13234            y: 'една година',
13235            yy: '%d години',
13236        },
13237        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
13238        ordinal: function (number) {
13239            var lastDigit = number % 10,
13240                last2Digits = number % 100;
13241            if (number === 0) {
13242                return number + '-ев';
13243            } else if (last2Digits === 0) {
13244                return number + '-ен';
13245            } else if (last2Digits > 10 && last2Digits < 20) {
13246                return number + '-ти';
13247            } else if (lastDigit === 1) {
13248                return number + '-ви';
13249            } else if (lastDigit === 2) {
13250                return number + '-ри';
13251            } else if (lastDigit === 7 || lastDigit === 8) {
13252                return number + '-ми';
13253            } else {
13254                return number + '-ти';
13255            }
13256        },
13257        week: {
13258            dow: 1, // Monday is the first day of the week.
13259            doy: 7, // The week that contains Jan 7th is the first week of the year.
13260        },
13261    });
13262
13263    //! moment.js locale configuration
13264
13265    hooks.defineLocale('ml', {
13266        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ചà
vendor: 5,904 bytes, lines 13266-13400
13266µ_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
13267            '_'
13268        ),
13269        monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
13270            '_'
13271        ),
13272        monthsParseExact: true,
13273        weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
13274            '_'
13275        ),
13276        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
13277        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
13278        longDateFormat: {
13279            LT: 'A h:mm -നു',
13280            LTS: 'A h:mm:ss -നു',
13281            L: 'DD/MM/YYYY',
13282            LL: 'D MMMM YYYY',
13283            LLL: 'D MMMM YYYY, A h:mm -നു',
13284            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
13285        },
13286        calendar: {
13287            sameDay: '[ഇന്ന്] LT',
13288            nextDay: '[നാളെ] LT',
13289            nextWeek: 'dddd, LT',
13290            lastDay: '[ഇന്നലെ] LT',
13291            lastWeek: '[കഴിഞ്ഞ] dddd, LT',
13292            sameElse: 'L',
13293        },
13294        relativeTime: {
13295            future: '%s കഴിഞ്ഞ്',
13296            past: '%s മുൻപ്',
13297            s: 'അൽപ നിമിഷങ്ങൾ',
13298            ss: '%d സെക്കൻഡ്',
13299            m: 'ഒരു മിനിറ്റ്',
13300            mm: '%d മിനിറ്റ്',
13301            h: 'ഒരു മണിക്കൂർ',
13302            hh: '%d മണിക്കൂർ',
13303            d: 'ഒരു ദിവസം',
13304            dd: '%d ദിവസം',
13305            M: 'ഒരു മാസം',
13306            MM: '%d മാസം',
13307            y: 'ഒരു വർഷം',
13308            yy: '%d വർഷം',
13309        },
13310        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
13311        meridiemHour: function (hour, meridiem) {
13312            if (hour === 12) {
13313                hour = 0;
13314            }
13315            if (
13316                (meridiem === 'രാത്രി' && hour >= 4) ||
13317                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
13318                meridiem === 'വൈകുന്നേരം'
13319            ) {
13320                return hour + 12;
13321            } else {
13322                return hour;
13323            }
13324        },
13325        meridiem: function (hour, minute, isLower) {
13326            if (hour < 4) {
13327                return 'രാത്രി';
13328            } else if (hour < 12) {
13329                return 'രാവിലെ';
13330            } else if (hour < 17) {
13331                return 'ഉച്ച കഴിഞ്ഞ്';
13332            } else if (hour < 20) {
13333                return 'വൈകുന്നേരം';
13334            } else {
13335                return 'രാത്രി';
13336            }
13337        },
13338    });
13339
13340    //! moment.js locale configuration
13341
13342    function translate$7(number, withoutSuffix, key, isFuture) {
13343        switch (key) {
13344            case 's':
13345                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
13346            case 'ss':
13347                return number + (withoutSuffix ? ' секунд' : ' секундын');
13348            case 'm':
13349            case 'mm':
13350                return number + (withoutSuffix ? ' минут' : ' минутын');
13351            case 'h':
13352            case 'hh':
13353                return number + (withoutSuffix ? ' цаг' : ' цагийн');
13354            case 'd':
13355            case 'dd':
13356                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
13357            case 'M':
13358            case 'MM':
13359                return number + (withoutSuffix ? ' сар' : ' сарын');
13360            case 'y':
13361            case 'yy':
13362                return number + (withoutSuffix ? ' жил' : ' жилийн');
13363            default:
13364                return number;
13365        }
13366    }
13367
13368    hooks.defineLocale('mn', {
13369        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
13370            '_'
13371        ),
13372        monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
13373            '_'
13374        ),
13375        monthsParseExact: true,
13376        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
13377        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
13378        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
13379        weekdaysParseExact: true,
13380        longDateFormat: {
13381            LT: 'HH:mm',
13382            LTS: 'HH:mm:ss',
13383            L: 'YYYY-MM-DD',
13384            LL: 'YYYY оны MMMMын D',
13385            LLL: 'YYYY оны MMMMын D HH:mm',
13386            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
13387        },
13388        meridiemParse: /ҮӨ|ҮХ/i,
13389        isPM: function (input) {
13390            return input === 'ҮХ';
13391        },
13392        meridiem: function (hour, minute, isLower) {
13393            if (hour < 12) {
13394                return 'Ò®Ó¨';
13395            } else {
13396                return 'ҮХ';
13397            }
13398        },
13399        calendar: {
13400            sameDay: '[Өнөөдөр] LT',
vendor: 7,376 bytes, lines 13401-13609
13401            nextDay: '[Маргааш] LT',
13402            nextWeek: '[Ирэх] dddd LT',
13403            lastDay: '[Өчигдөр] LT',
13404            lastWeek: '[Өнгөрсөн] dddd LT',
13405            sameElse: 'L',
13406        },
13407        relativeTime: {
13408            future: '%s дараа',
13409            past: '%s өмнө',
13410            s: translate$7,
13411            ss: translate$7,
13412            m: translate$7,
13413            mm: translate$7,
13414            h: translate$7,
13415            hh: translate$7,
13416            d: translate$7,
13417            dd: translate$7,
13418            M: translate$7,
13419            MM: translate$7,
13420            y: translate$7,
13421            yy: translate$7,
13422        },
13423        dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
13424        ordinal: function (number, period) {
13425            switch (period) {
13426                case 'd':
13427                case 'D':
13428                case 'DDD':
13429                    return number + ' өдөр';
13430                default:
13431                    return number;
13432            }
13433        },
13434    });
13435
13436    //! moment.js locale configuration
13437
13438    var symbolMap$c = {
13439            1: '१',
13440            2: '२',
13441            3: '३',
13442            4: '४',
13443            5: '५',
13444            6: '६',
13445            7: '७',
13446            8: '८',
13447            9: '९',
13448            0: '०',
13449        },
13450        numberMap$b = {
13451            '१': '1',
13452            '२': '2',
13453            '३': '3',
13454            '४': '4',
13455            '५': '5',
13456            '६': '6',
13457            '७': '7',
13458            '८': '8',
13459            '९': '9',
13460            '०': '0',
13461        };
13462
13463    function relativeTimeMr(number, withoutSuffix, string, isFuture) {
13464        var output = '';
13465        if (withoutSuffix) {
13466            switch (string) {
13467                case 's':
13468                    output = 'काही सेकंद';
13469                    break;
13470                case 'ss':
13471                    output = '%d सेकंद';
13472                    break;
13473                case 'm':
13474                    output = 'एक मिनिट';
13475                    break;
13476                case 'mm':
13477                    output = '%d मिनिटे';
13478                    break;
13479                case 'h':
13480                    output = 'एक तास';
13481                    break;
13482                case 'hh':
13483                    output = '%d तास';
13484                    break;
13485                case 'd':
13486                    output = 'एक दिवस';
13487                    break;
13488                case 'dd':
13489                    output = '%d दिवस';
13490                    break;
13491                case 'M':
13492                    output = 'एक महिना';
13493                    break;
13494                case 'MM':
13495                    output = '%d महिने';
13496                    break;
13497                case 'y':
13498                    output = 'एक वर्ष';
13499                    break;
13500                case 'yy':
13501                    output = '%d वर्षे';
13502                    break;
13503            }
13504        } else {
13505            switch (string) {
13506                case 's':
13507                    output = 'काही सेकंदां';
13508                    break;
13509                case 'ss':
13510                    output = '%d सेकंदां';
13511                    break;
13512                case 'm':
13513                    output = 'एका मिनिटा';
13514                    break;
13515                case 'mm':
13516                    output = '%d मिनिटां';
13517                    break;
13518                case 'h':
13519                    output = 'एका तासा';
13520                    break;
13521                case 'hh':
13522                    output = '%d तासां';
13523                    break;
13524                case 'd':
13525                    output = 'एका दिवसा';
13526                    break;
13527                case 'dd':
13528                    output = '%d दिवसां';
13529                    break;
13530                case 'M':
13531                    output = 'एका महिन्या';
13532                    break;
13533                case 'MM':
13534                    output = '%d महिन्यां';
13535                    break;
13536                case 'y':
13537                    output = 'एका वर्षा';
13538                    break;
13539                case 'yy':
13540                    output = '%d वर्षां';
13541                    break;
13542            }
13543        }
13544        return output.replace(/%d/i, number);
13545    }
13546
13547    hooks.defineLocale('mr', {
13548        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
13549            '_'
13550        ),
13551        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
13552            '_'
13553        ),
13554        monthsParseExact: true,
13555        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
13556        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
13557        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
13558        longDateFormat: {
13559            LT: 'A h:mm वाजता',
13560            LTS: 'A h:mm:ss वाजता',
13561            L: 'DD/MM/YYYY',
13562            LL: 'D MMMM YYYY',
13563            LLL: 'D MMMM YYYY, A h:mm वाजता',
13564            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
13565        },
13566        calendar: {
13567            sameDay: '[आज] LT',
13568            nextDay: '[उद्या] LT',
13569            nextWeek: 'dddd, LT',
13570            lastDay: '[काल] LT',
13571            lastWeek: '[मागील] dddd, LT',
13572            sameElse: 'L',
13573        },
13574        relativeTime: {
13575            future: '%sमध्ये',
13576            past: '%sपूर्वी',
13577            s: relativeTimeMr,
13578            ss: relativeTimeMr,
13579            m: relativeTimeMr,
13580            mm: relativeTimeMr,
13581            h: relativeTimeMr,
13582            hh: relativeTimeMr,
13583            d: relativeTimeMr,
13584            dd: relativeTimeMr,
13585            M: relativeTimeMr,
13586            MM: relativeTimeMr,
13587            y: relativeTimeMr,
13588            yy: relativeTimeMr,
13589        },
13590        preparse: function (string) {
13591            return string.replace(/[१२३४५६७८९०]/g, function (match) {
13592                return numberMap$b[match];
13593            });
13594        },
13595        postformat: function (string) {
13596            return string.replace(/\d/g, function (match) {
13597                return symbolMap$c[match];
13598            });
13599        },
13600        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
13601        meridiemHour: function (hour, meridiem) {
13602            if (hour === 12) {
13603                hour = 0;
13604            }
13605            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
13606                return hour;
13607            } else if (
13608                meridiem === 'दुपारी' ||
13609                meridiem === 'सायंकाळी' ||
vendor: 6,968 bytes, lines 13610-13814
13610                meridiem === 'रात्री'
13611            ) {
13612                return hour >= 12 ? hour : hour + 12;
13613            }
13614        },
13615        meridiem: function (hour, minute, isLower) {
13616            if (hour >= 0 && hour < 6) {
13617                return 'पहाटे';
13618            } else if (hour < 12) {
13619                return 'सकाळी';
13620            } else if (hour < 17) {
13621                return 'दुपारी';
13622            } else if (hour < 20) {
13623                return 'सायंकाळी';
13624            } else {
13625                return 'रात्री';
13626            }
13627        },
13628        week: {
13629            dow: 0, // Sunday is the first day of the week.
13630            doy: 6, // The week that contains Jan 6th is the first week of the year.
13631        },
13632    });
13633
13634    //! moment.js locale configuration
13635
13636    hooks.defineLocale('ms-my', {
13637        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
13638            '_'
13639        ),
13640        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
13641        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
13642        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
13643        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
13644        longDateFormat: {
13645            LT: 'HH.mm',
13646            LTS: 'HH.mm.ss',
13647            L: 'DD/MM/YYYY',
13648            LL: 'D MMMM YYYY',
13649            LLL: 'D MMMM YYYY [pukul] HH.mm',
13650            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
13651        },
13652        meridiemParse: /pagi|tengahari|petang|malam/,
13653        meridiemHour: function (hour, meridiem) {
13654            if (hour === 12) {
13655                hour = 0;
13656            }
13657            if (meridiem === 'pagi') {
13658                return hour;
13659            } else if (meridiem === 'tengahari') {
13660                return hour >= 11 ? hour : hour + 12;
13661            } else if (meridiem === 'petang' || meridiem === 'malam') {
13662                return hour + 12;
13663            }
13664        },
13665        meridiem: function (hours, minutes, isLower) {
13666            if (hours < 11) {
13667                return 'pagi';
13668            } else if (hours < 15) {
13669                return 'tengahari';
13670            } else if (hours < 19) {
13671                return 'petang';
13672            } else {
13673                return 'malam';
13674            }
13675        },
13676        calendar: {
13677            sameDay: '[Hari ini pukul] LT',
13678            nextDay: '[Esok pukul] LT',
13679            nextWeek: 'dddd [pukul] LT',
13680            lastDay: '[Kelmarin pukul] LT',
13681            lastWeek: 'dddd [lepas pukul] LT',
13682            sameElse: 'L',
13683        },
13684        relativeTime: {
13685            future: 'dalam %s',
13686            past: '%s yang lepas',
13687            s: 'beberapa saat',
13688            ss: '%d saat',
13689            m: 'seminit',
13690            mm: '%d minit',
13691            h: 'sejam',
13692            hh: '%d jam',
13693            d: 'sehari',
13694            dd: '%d hari',
13695            M: 'sebulan',
13696            MM: '%d bulan',
13697            y: 'setahun',
13698            yy: '%d tahun',
13699        },
13700        week: {
13701            dow: 1, // Monday is the first day of the week.
13702            doy: 7, // The week that contains Jan 7th is the first week of the year.
13703        },
13704    });
13705
13706    //! moment.js locale configuration
13707
13708    hooks.defineLocale('ms', {
13709        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
13710            '_'
13711        ),
13712        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
13713        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
13714        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
13715        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
13716        longDateFormat: {
13717            LT: 'HH.mm',
13718            LTS: 'HH.mm.ss',
13719            L: 'DD/MM/YYYY',
13720            LL: 'D MMMM YYYY',
13721            LLL: 'D MMMM YYYY [pukul] HH.mm',
13722            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
13723        },
13724        meridiemParse: /pagi|tengahari|petang|malam/,
13725        meridiemHour: function (hour, meridiem) {
13726            if (hour === 12) {
13727                hour = 0;
13728            }
13729            if (meridiem === 'pagi') {
13730                return hour;
13731            } else if (meridiem === 'tengahari') {
13732                return hour >= 11 ? hour : hour + 12;
13733            } else if (meridiem === 'petang' || meridiem === 'malam') {
13734                return hour + 12;
13735            }
13736        },
13737        meridiem: function (hours, minutes, isLower) {
13738            if (hours < 11) {
13739                return 'pagi';
13740            } else if (hours < 15) {
13741                return 'tengahari';
13742            } else if (hours < 19) {
13743                return 'petang';
13744            } else {
13745                return 'malam';
13746            }
13747        },
13748        calendar: {
13749            sameDay: '[Hari ini pukul] LT',
13750            nextDay: '[Esok pukul] LT',
13751            nextWeek: 'dddd [pukul] LT',
13752            lastDay: '[Kelmarin pukul] LT',
13753            lastWeek: 'dddd [lepas pukul] LT',
13754            sameElse: 'L',
13755        },
13756        relativeTime: {
13757            future: 'dalam %s',
13758            past: '%s yang lepas',
13759            s: 'beberapa saat',
13760            ss: '%d saat',
13761            m: 'seminit',
13762            mm: '%d minit',
13763            h: 'sejam',
13764            hh: '%d jam',
13765            d: 'sehari',
13766            dd: '%d hari',
13767            M: 'sebulan',
13768            MM: '%d bulan',
13769            y: 'setahun',
13770            yy: '%d tahun',
13771        },
13772        week: {
13773            dow: 1, // Monday is the first day of the week.
13774            doy: 7, // The week that contains Jan 7th is the first week of the year.
13775        },
13776    });
13777
13778    //! moment.js locale configuration
13779
13780    hooks.defineLocale('mt', {
13781        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
13782            '_'
13783        ),
13784        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
13785        weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
13786            '_'
13787        ),
13788        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
13789        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
13790        longDateFormat: {
13791            LT: 'HH:mm',
13792            LTS: 'HH:mm:ss',
13793            L: 'DD/MM/YYYY',
13794            LL: 'D MMMM YYYY',
13795            LLL: 'D MMMM YYYY HH:mm',
13796            LLLL: 'dddd, D MMMM YYYY HH:mm',
13797        },
13798        calendar: {
13799            sameDay: '[Illum fil-]LT',
13800            nextDay: '[Għada fil-]LT',
13801            nextWeek: 'dddd [fil-]LT',
13802            lastDay: '[Il-bieraħ fil-]LT',
13803            lastWeek: 'dddd [li għadda] [fil-]LT',
13804            sameElse: 'L',
13805        },
13806        relativeTime: {
13807            future: 'f’ %s',
13808            past: '%s ilu',
13809            s: 'ftit sekondi',
13810            ss: '%d sekondi',
13811            m: 'minuta',
13812            mm: '%d minuti',
13813            h: 'siegħa',
13814            hh: '%d siegħat',
13815            d: 'ġurnata',
13816            dd: '%d ġranet',
13817            M: 'xahar',
13818            MM: '%d xhur',
13819            y: 'sena',
13820            yy: '%d sni',
13821        },
13822        dayOfMonthOrdinalParse: /\d{1,2}º/,
13823        ordinal: '%dº',
13824        week: {
13825            dow: 1, // Monday is the first day of the week.
13826            doy: 4, // The week that contains Jan 4th is the first week of the year.
13827        },
13828    });
13829
13830    //! moment.js locale configuration
13831
13832    var symbolMap$d = {
13833            1: '၁',
13834            2: '၂',
13835            3: '၃',
13836            4: '၄',
13837            5: '၅',
13838            6: '၆',
13839            7: '၇',
13840            8: '၈',
13841            9: '၉',
13842            0: '၀',
13843        },
13844        numberMap$c = {
13845            '၁': '1',
13846            '၂': '2',
13847            '၃': '3',
13848            '၄': '4',
13849            '၅': '5',
13850            '၆': '6',
13851            '၇': '7',
13852            '၈': '8',
13853            '၉': '9',
13854            '၀': '0',
13855        };
13856
13857    hooks.defineLocale('my', {
13858        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
13859            '_'
13860        ),
13861        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
13862        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
13863            '_'
13864        ),
13865        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
13866        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
13867
13868        longDateFormat: {
13869            LT: 'HH:mm',
13870            LTS: 'HH:mm:ss',
13871            L: 'DD/MM/YYYY',
13872            LL: 'D MMMM YYYY',
13873            LLL: 'D MMMM YYYY HH:mm',
13874            LLLL: 'dddd D MMMM YYYY HH:mm',
13875        },
13876        calendar: {
13877            sameDay: '[ယနေ.] LT [မှာ]',
13878            nextDay: '[မနက်ဖြန်] LT [မှာ]',
13879            nextWeek: 'dddd LT [မှာ]',
13880            lastDay: '[မနေ.က] LT [မှာ]',
13881            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
13882            sameElse: 'L',
13883        },
13884        relativeTime: {
13885            future: 'လာမည့် %s မှာ',
13886            past: 'လွန်ခဲ့သော %s က',
13887            s: 'စက္ကန်.အနည်းငယ်',
13888            ss: '%d စက္ကန့်',
13889            m: 'တစ်မိနစ်',
13890            mm: '%d မိနစ်',
13891            h: 'တစ်နာရီ',
13892            hh: '%d နာရီ',
13893            d: 'တစ်ရက်',
13894            dd: '%d ရက်',
13895            M: 'တစ်လ',
13896            MM: '%d လ',
13897            y: 'တစ်နှစ်',
13898            yy: '%d နှစ်',
13899        },
13900        preparse: function (string) {
13901            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
13902                return numberMap$c[match];
13903            });
13904        },
13905        postformat: function (string) {
13906            return string.replace(/\d/g, function (match) {
13907                return symbolMap$d[match];
13908            });
13909        },
13910        week: {
13911            dow: 1, // Monday is the first day of the week.
13912            doy: 4, // The week that contains Jan 4th is the first week of the year.
13913        },
13914    });
13915
13916    //! moment.js locale configuration
13917
13918    hooks.defineLocale('nb', {
13919        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
13920            '_'
13921        ),
13922        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(
13923            '_'
13924        ),
13925        monthsParseExact: true,
13926        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
13927        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
13928        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
13929        weekdaysParseExact: true,
13930        longDateFormat: {
13931            LT: 'HH:mm',
13932            LTS: 'HH:mm:ss',
13933            L: 'DD.MM.YYYY',
13934            LL: 'D. MMMM YYYY',
13935            LLL: 'D. MMMM YYYY [kl.] HH:mm',
13936            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
13937        },
13938        calendar: {
13939            sameDay: '[i dag kl.] LT',
13940            nextDay: '[i morgen kl.] LT',
13941            nextWeek: 'dddd [kl.] LT',
13942            lastDay: '[i går kl.] LT',
13943            lastWeek: '[forrige] dddd [kl.] LT',
13944            sameElse: 'L',
13945        },
13946        relativeTime: {
13947            future: 'om %s',
13948            past: '%s siden',
13949            s: 'noen sekunder',
13950            ss: '%d sekunder',
13951            m: 'ett minutt',
13952            mm: '%d minutter',
13953            h: 'en time',
13954            hh: '%d timer',
13955            d: 'en dag',
13956            dd: '%d dager',
13957            w: 'en uke',
13958            ww: '%d uker',
13959            M: 'en måned',
13960            MM: '%d måneder',
13961            y: 'ett år',
13962            yy: '%d år',
13963        },
13964        dayOfMonthOrdinalParse: /\d{1,2}\./,
13965        ordinal: '%d.',
13966        week: {
13967            dow: 1, // Monday is the first day of the week.
13968            doy: 4, // The week that contains Jan 4th is the first week of the year.
13969        },
13970    });
13971
13972    //! moment.js locale configuration
13973
13974    var symbolMap$e = {
13975            1: '१',
13976            2: '२',
13977            3: '३',
13978            4: '४',
13979            5: '५',
13980            6: '६',
13981            7: '७',
13982            8: '८',
13983            9: '९',
13984            0: '०',
13985        },
13986        numberMap$d = {
13987            '१': '1',
13988            '२': '2',
13989            '३': '3',
13990            '४': '4',
13991            '५': '5',
13992            '६': '6',
13993            '७': '7',
13994            '८': '8',
13995            '९': '9',
13996            '०': '0',
13997        };
13998
13999    hooks.defineLocale('ne', {
14000        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
14001            '_'
14002        ),
14003        monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
14004            '_'
14005        ),
14006        monthsParseExact: true,
14007        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
14008            '_'
14009        ),
14010        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
14011        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
14012        weekdaysParseExact: true,
14013        longDateFormat: {
14014            LT: 'Aको h:mm बजे',
14015            LTS: 'Aको h:mm:ss बजे',
14016            L: 'DD/MM/YYYY',
14017            LL: 'D MMMM YYYY',
14018            LLL: 'D MMMM YYYY, Aको h:mm बजे',
14019            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
14020        },
14021        preparse: function (string) {
14022            return string.replace(/[१२३४५६७८९०]/g, function (match) {
14023                return numberMap$d[match];
14024            });
14025        },
14026        postformat: function (string) {
14027            return string.replace(/\d/g, function (match) {
14028                return symbolMap$e[match];
14029            });
14030        },
vendor: 4,964 bytes, lines 14031-14170
14031        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
14032        meridiemHour: function (hour, meridiem) {
14033            if (hour === 12) {
14034                hour = 0;
14035            }
14036            if (meridiem === 'राति') {
14037                return hour < 4 ? hour : hour + 12;
14038            } else if (meridiem === 'बिहान') {
14039                return hour;
14040            } else if (meridiem === 'दिउँसो') {
14041                return hour >= 10 ? hour : hour + 12;
14042            } else if (meridiem === 'साँझ') {
14043                return hour + 12;
14044            }
14045        },
14046        meridiem: function (hour, minute, isLower) {
14047            if (hour < 3) {
14048                return 'राति';
14049            } else if (hour < 12) {
14050                return 'बिहान';
14051            } else if (hour < 16) {
14052                return 'दिउँसो';
14053            } else if (hour < 20) {
14054                return 'साँझ';
14055            } else {
14056                return 'राति';
14057            }
14058        },
14059        calendar: {
14060            sameDay: '[आज] LT',
14061            nextDay: '[भोलि] LT',
14062            nextWeek: '[आउँदो] dddd[,] LT',
14063            lastDay: '[हिजो] LT',
14064            lastWeek: '[गएको] dddd[,] LT',
14065            sameElse: 'L',
14066        },
14067        relativeTime: {
14068            future: '%sमा',
14069            past: '%s अगाडि',
14070            s: 'केही क्षण',
14071            ss: '%d सेकेण्ड',
14072            m: 'एक मिनेट',
14073            mm: '%d मिनेट',
14074            h: 'एक घण्टा',
14075            hh: '%d घण्टा',
14076            d: 'एक दिन',
14077            dd: '%d दिन',
14078            M: 'एक महिना',
14079            MM: '%d महिना',
14080            y: 'एक बर्ष',
14081            yy: '%d बर्ष',
14082        },
14083        week: {
14084            dow: 0, // Sunday is the first day of the week.
14085            doy: 6, // The week that contains Jan 6th is the first week of the year.
14086        },
14087    });
14088
14089    //! moment.js locale configuration
14090
14091    var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(
14092            '_'
14093        ),
14094        monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(
14095            '_'
14096        ),
14097        monthsParse$8 = [
14098            /^jan/i,
14099            /^feb/i,
14100            /^maart|mrt.?$/i,
14101            /^apr/i,
14102            /^mei$/i,
14103            /^jun[i.]?$/i,
14104            /^jul[i.]?$/i,
14105            /^aug/i,
14106            /^sep/i,
14107            /^okt/i,
14108            /^nov/i,
14109            /^dec/i,
14110        ],
14111        monthsRegex$8 = /^(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;
14112
14113    hooks.defineLocale('nl-be', {
14114        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
14115            '_'
14116        ),
14117        monthsShort: function (m, format) {
14118            if (!m) {
14119                return monthsShortWithDots$1;
14120            } else if (/-MMM-/.test(format)) {
14121                return monthsShortWithoutDots$1[m.month()];
14122            } else {
14123                return monthsShortWithDots$1[m.month()];
14124            }
14125        },
14126
14127        monthsRegex: monthsRegex$8,
14128        monthsShortRegex: monthsRegex$8,
14129        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
14130        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
14131
14132        monthsParse: monthsParse$8,
14133        longMonthsParse: monthsParse$8,
14134        shortMonthsParse: monthsParse$8,
14135
14136        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(
14137            '_'
14138        ),
14139        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
14140        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
14141        weekdaysParseExact: true,
14142        longDateFormat: {
14143            LT: 'HH:mm',
14144            LTS: 'HH:mm:ss',
14145            L: 'DD/MM/YYYY',
14146            LL: 'D MMMM YYYY',
14147            LLL: 'D MMMM YYYY HH:mm',
14148            LLLL: 'dddd D MMMM YYYY HH:mm',
14149        },
14150        calendar: {
14151            sameDay: '[vandaag om] LT',
14152            nextDay: '[morgen om] LT',
14153            nextWeek: 'dddd [om] LT',
14154            lastDay: '[gisteren om] LT',
14155            lastWeek: '[afgelopen] dddd [om] LT',
14156            sameElse: 'L',
14157        },
14158        relativeTime: {
14159            future: 'over %s',
14160            past: '%s geleden',
14161            s: 'een paar seconden',
14162            ss: '%d seconden',
14163            m: 'één minuut',
14164            mm: '%d minuten',
14165            h: 'één uur',
14166            hh: '%d uur',
14167            d: 'één dag',
14168            dd: '%d dagen',
14169            M: 'één maand',
14170            MM: '%d maanden',
vendor: 4,333 bytes, lines 14171-14297
14171            y: 'één jaar',
14172            yy: '%d jaar',
14173        },
14174        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
14175        ordinal: function (number) {
14176            return (
14177                number +
14178                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
14179            );
14180        },
14181        week: {
14182            dow: 1, // Monday is the first day of the week.
14183            doy: 4, // The week that contains Jan 4th is the first week of the year.
14184        },
14185    });
14186
14187    //! moment.js locale configuration
14188
14189    var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(
14190            '_'
14191        ),
14192        monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(
14193            '_'
14194        ),
14195        monthsParse$9 = [
14196            /^jan/i,
14197            /^feb/i,
14198            /^maart|mrt.?$/i,
14199            /^apr/i,
14200            /^mei$/i,
14201            /^jun[i.]?$/i,
14202            /^jul[i.]?$/i,
14203            /^aug/i,
14204            /^sep/i,
14205            /^okt/i,
14206            /^nov/i,
14207            /^dec/i,
14208        ],
14209        monthsRegex$9 = /^(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;
14210
14211    hooks.defineLocale('nl', {
14212        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
14213            '_'
14214        ),
14215        monthsShort: function (m, format) {
14216            if (!m) {
14217                return monthsShortWithDots$2;
14218            } else if (/-MMM-/.test(format)) {
14219                return monthsShortWithoutDots$2[m.month()];
14220            } else {
14221                return monthsShortWithDots$2[m.month()];
14222            }
14223        },
14224
14225        monthsRegex: monthsRegex$9,
14226        monthsShortRegex: monthsRegex$9,
14227        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
14228        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
14229
14230        monthsParse: monthsParse$9,
14231        longMonthsParse: monthsParse$9,
14232        shortMonthsParse: monthsParse$9,
14233
14234        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(
14235            '_'
14236        ),
14237        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
14238        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
14239        weekdaysParseExact: true,
14240        longDateFormat: {
14241            LT: 'HH:mm',
14242            LTS: 'HH:mm:ss',
14243            L: 'DD-MM-YYYY',
14244            LL: 'D MMMM YYYY',
14245            LLL: 'D MMMM YYYY HH:mm',
14246            LLLL: 'dddd D MMMM YYYY HH:mm',
14247        },
14248        calendar: {
14249            sameDay: '[vandaag om] LT',
14250            nextDay: '[morgen om] LT',
14251            nextWeek: 'dddd [om] LT',
14252            lastDay: '[gisteren om] LT',
14253            lastWeek: '[afgelopen] dddd [om] LT',
14254            sameElse: 'L',
14255        },
14256        relativeTime: {
14257            future: 'over %s',
14258            past: '%s geleden',
14259            s: 'een paar seconden',
14260            ss: '%d seconden',
14261            m: 'één minuut',
14262            mm: '%d minuten',
14263            h: 'één uur',
14264            hh: '%d uur',
14265            d: 'één dag',
14266            dd: '%d dagen',
14267            w: 'één week',
14268            ww: '%d weken',
14269            M: 'één maand',
14270            MM: '%d maanden',
14271            y: 'één jaar',
14272            yy: '%d jaar',
14273        },
14274        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
14275        ordinal: function (number) {
14276            return (
14277                number +
14278                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
14279            );
14280        },
14281        week: {
14282            dow: 1, // Monday is the first day of the week.
14283            doy: 4, // The week that contains Jan 4th is the first week of the year.
14284        },
14285    });
14286
14287    //! moment.js locale configuration
14288
14289    hooks.defineLocale('nn', {
14290        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
14291            '_'
14292        ),
14293        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(
14294            '_'
14295        ),
14296        monthsParseExact: true,
14297        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
14298        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
14299        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
14300        weekdaysParseExact: true,
14301        longDateFormat: {
14302            LT: 'HH:mm',
14303            LTS: 'HH:mm:ss',
14304            L: 'DD.MM.YYYY',
14305            LL: 'D. MMMM YYYY',
14306            LLL: 'D. MMMM YYYY [kl.] H:mm',
14307            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
14308        },
14309        calendar: {
14310            sameDay: '[I dag klokka] LT',
14311            nextDay: '[I morgon klokka] LT',
14312            nextWeek: 'dddd [klokka] LT',
14313            lastDay: '[I går klokka] LT',
14314            lastWeek: '[Føregåande] dddd [klokka] LT',
14315            sameElse: 'L',
14316        },
14317        relativeTime: {
14318            future: 'om %s',
14319            past: '%s sidan',
14320            s: 'nokre sekund',
14321            ss: '%d sekund',
14322            m: 'eit minutt',
14323            mm: '%d minutt',
14324            h: 'ein time',
14325            hh: '%d timar',
14326            d: 'ein dag',
14327            dd: '%d dagar',
14328            w: 'ei veke',
14329            ww: '%d veker',
14330            M: 'ein månad',
14331            MM: '%d månader',
14332            y: 'eit år',
14333            yy: '%d år',
14334        },
14335        dayOfMonthOrdinalParse: /\d{1,2}\./,
14336        ordinal: '%d.',
14337        week: {
14338            dow: 1, // Monday is the first day of the week.
14339            doy: 4, // The week that contains Jan 4th is the first week of the year.
14340        },
14341    });
14342
14343    //! moment.js locale configuration
14344
14345    hooks.defineLocale('oc-lnc', {
14346        months: {
14347            standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
14348                '_'
14349            ),
14350            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(
14351                '_'
14352            ),
14353            isFormat: /D[oD]?(\s)+MMMM/,
14354        },
14355        monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
14356            '_'
14357        ),
14358        monthsParseExact: true,
14359        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
14360            '_'
14361        ),
14362        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
14363        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
14364        weekdaysParseExact: true,
14365        longDateFormat: {
14366            LT: 'H:mm',
14367            LTS: 'H:mm:ss',
14368            L: 'DD/MM/YYYY',
14369            LL: 'D MMMM [de] YYYY',
14370            ll: 'D MMM YYYY',
14371            LLL: 'D MMMM [de] YYYY [a] H:mm',
14372            lll: 'D MMM YYYY, H:mm',
14373            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
14374            llll: 'ddd D MMM YYYY, H:mm',
14375        },
14376        calendar: {
14377            sameDay: '[uèi a] LT',
14378            nextDay: '[deman a] LT',
14379            nextWeek: 'dddd [a] LT',
14380            lastDay: '[ièr a] LT',
14381            lastWeek: 'dddd [passat a] LT',
14382            sameElse: 'L',
14383        },
14384        relativeTime: {
14385            future: "d'aquí %s",
14386            past: 'fa %s',
14387            s: 'unas segondas',
14388            ss: '%d segondas',
14389            m: 'una minuta',
14390            mm: '%d minutas',
14391            h: 'una ora',
14392            hh: '%d oras',
14393            d: 'un jorn',
14394            dd: '%d jorns',
14395            M: 'un mes',
14396            MM: '%d meses',
14397            y: 'un an',
14398            yy: '%d ans',
14399        },
14400        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
14401        ordinal: function (number, period) {
14402            var output =
14403                number === 1
14404                    ? 'r'
14405                    : number === 2
14406                    ? 'n'
14407                    : number === 3
14408                    ? 'r'
14409                    : number === 4
14410                    ? 't'
14411                    : 'è';
14412            if (period === 'w' || period === 'W') {
14413                output = 'a';
14414            }
14415            return number + output;
14416        },
14417        week: {
14418            dow: 1, // Monday is the first day of the week.
14419            doy: 4,
14420        },
14421    });
14422
14423    //! moment.js locale configuration
14424
14425    var symbolMap$f = {
14426            1: 'à©§',
14427            2: '੨',
14428            3: 'à©©',
14429            4: '੪',
14430            5: 'à©«',
14431            6: '੬',
14432            7: 'à©­',
14433            8: 'à©®',
14434            9: '੯',
14435            0: '੦',
14436        },
14437        numberMap$e = {
14438            'à©§': '1',
14439            '੨': '2',
14440            'à©©': '3',
14441            '੪': '4',
14442            'à©«': '5',
14443            '੬': '6',
14444            'à©­': '7',
14445            'à©®': '8',
14446            '੯': '9',
14447            '੦': '0',
14448        };
14449
14450    hooks.defineLocale('pa-in', {
14451        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
14452        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
14453            '_'
14454        ),
14455        monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
14456            '_'
14457        ),
14458        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
14459            '_'
14460        ),
14461        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
14462        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
14463        longDateFormat: {
14464            LT: 'A h:mm ਵਜੇ',
14465            LTS: 'A h:mm:ss ਵਜੇ',
14466            L: 'DD/MM/YYYY',
14467            LL: 'D MMMM YYYY',
14468            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
14469            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
14470        },
14471        calendar: {
14472            sameDay: '[ਅਜ] LT',
14473            nextDay: '[ਕਲ] LT',
14474            nextWeek: '[ਅਗਲਾ] dddd, LT',
14475            lastDay: '[ਕਲ] LT',
14476            lastWeek: '[ਪਿਛਲੇ] dddd, LT',
14477            sameElse: 'L',
14478        },
14479        relativeTime: {
14480            future: '%s ਵਿੱਚ',
14481            past: '%s ਪਿਛਲੇ',
14482            s: 'ਕੁਝ ਸਕਿੰਟ',
14483            ss: '%d ਸਕਿੰਟ',
14484            m: 'ਇਕ ਮਿੰਟ',
14485            mm: '%d ਮਿੰਟ',
14486            h: 'ਇੱਕ ਘੰਟਾ',
14487            hh: '%d ਘੰਟੇ',
14488            d: 'ਇੱਕ ਦਿਨ',
14489            dd: '%d ਦਿਨ',
14490            M: 'ਇੱਕ ਮਹੀਨਾ',
14491            MM: '%d ਮਹੀਨੇ',
14492            y: 'ਇੱਕ ਸਾਲ',
14493            yy: '%d ਸਾਲ',
14494        },
14495        preparse: function (string) {
14496            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
14497                return numberMap$e[match];
14498            });
14499        },
14500        postformat: function (string) {
14501            return string.replace(/\d/g, function (match) {
14502                return symbolMap$f[match];
14503            });
14504        },
14505        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
14506        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
14507        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
14508        meridiemHour: function (hour, meridiem) {
14509            if (hour === 12) {
14510                hour = 0;
14511            }
14512            if (meridiem === 'ਰਾਤ') {
14513                return hour < 4 ? hour : hour + 12;
14514            } else if (meridiem === 'ਸਵੇਰ') {
14515                return hour;
14516            } else if (meridiem === 'ਦੁਪਹਿਰ') {
14517                return hour >= 10 ? hour : hour + 12;
14518            } else if (meridiem === 'ਸ਼ਾਮ') {
14519                return hour + 12;
14520            }
14521        },
14522        meridiem: function (hour, minute, isLower) {
14523            if (hour < 4) {
14524                return 'ਰਾਤ';
14525            } else if (hour < 10) {
14526                return 'ਸਵੇਰ';
14527            } else if (hour < 17) {
14528                return 'ਦੁਪਹਿਰ';
14529            } else if (hour < 20) {
14530                return 'ਸ਼ਾਮ';
14531            } else {
14532                return 'ਰਾਤ';
14533            }
14534        },
14535        week: {
14536            dow: 0, // Sunday is the first day of the week.
14537            doy: 6, // The week that contains Jan 6th is the first week of the year.
14538        },
14539    });
14540
14541    //! moment.js locale configuration
14542
vendor: 23,950 bytes, lines 14543-15194
14543    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
14544            '_'
14545        ),
14546        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
14547            '_'
14548        ),
14549        monthsParse$a = [
14550            /^sty/i,
14551            /^lut/i,
14552            /^mar/i,
14553            /^kwi/i,
14554            /^maj/i,
14555            /^cze/i,
14556            /^lip/i,
14557            /^sie/i,
14558            /^wrz/i,
14559            /^paź/i,
14560            /^lis/i,
14561            /^gru/i,
14562        ];
14563    function plural$3(n) {
14564        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
14565    }
14566    function translate$8(number, withoutSuffix, key) {
14567        var result = number + ' ';
14568        switch (key) {
14569            case 'ss':
14570                return result + (plural$3(number) ? 'sekundy' : 'sekund');
14571            case 'm':
14572                return withoutSuffix ? 'minuta' : 'minutę';
14573            case 'mm':
14574                return result + (plural$3(number) ? 'minuty' : 'minut');
14575            case 'h':
14576                return withoutSuffix ? 'godzina' : 'godzinę';
14577            case 'hh':
14578                return result + (plural$3(number) ? 'godziny' : 'godzin');
14579            case 'ww':
14580                return result + (plural$3(number) ? 'tygodnie' : 'tygodni');
14581            case 'MM':
14582                return result + (plural$3(number) ? 'miesiące' : 'miesięcy');
14583            case 'yy':
14584                return result + (plural$3(number) ? 'lata' : 'lat');
14585        }
14586    }
14587
14588    hooks.defineLocale('pl', {
14589        months: function (momentToFormat, format) {
14590            if (!momentToFormat) {
14591                return monthsNominative;
14592            } else if (/D MMMM/.test(format)) {
14593                return monthsSubjective[momentToFormat.month()];
14594            } else {
14595                return monthsNominative[momentToFormat.month()];
14596            }
14597        },
14598        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
14599        monthsParse: monthsParse$a,
14600        longMonthsParse: monthsParse$a,
14601        shortMonthsParse: monthsParse$a,
14602        weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(
14603            '_'
14604        ),
14605        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
14606        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
14607        longDateFormat: {
14608            LT: 'HH:mm',
14609            LTS: 'HH:mm:ss',
14610            L: 'DD.MM.YYYY',
14611            LL: 'D MMMM YYYY',
14612            LLL: 'D MMMM YYYY HH:mm',
14613            LLLL: 'dddd, D MMMM YYYY HH:mm',
14614        },
14615        calendar: {
14616            sameDay: '[Dziś o] LT',
14617            nextDay: '[Jutro o] LT',
14618            nextWeek: function () {
14619                switch (this.day()) {
14620                    case 0:
14621                        return '[W niedzielę o] LT';
14622
14623                    case 2:
14624                        return '[We wtorek o] LT';
14625
14626                    case 3:
14627                        return '[W środę o] LT';
14628
14629                    case 6:
14630                        return '[W sobotę o] LT';
14631
14632                    default:
14633                        return '[W] dddd [o] LT';
14634                }
14635            },
14636            lastDay: '[Wczoraj o] LT',
14637            lastWeek: function () {
14638                switch (this.day()) {
14639                    case 0:
14640                        return '[W zeszłą niedzielę o] LT';
14641                    case 3:
14642                        return '[W zeszłą środę o] LT';
14643                    case 6:
14644                        return '[W zeszłą sobotę o] LT';
14645                    default:
14646                        return '[W zeszły] dddd [o] LT';
14647                }
14648            },
14649            sameElse: 'L',
14650        },
14651        relativeTime: {
14652            future: 'za %s',
14653            past: '%s temu',
14654            s: 'kilka sekund',
14655            ss: translate$8,
14656            m: translate$8,
14657            mm: translate$8,
14658            h: translate$8,
14659            hh: translate$8,
14660            d: '1 dzień',
14661            dd: '%d dni',
14662            w: 'tydzień',
14663            ww: translate$8,
14664            M: 'miesiąc',
14665            MM: translate$8,
14666            y: 'rok',
14667            yy: translate$8,
14668        },
14669        dayOfMonthOrdinalParse: /\d{1,2}\./,
14670        ordinal: '%d.',
14671        week: {
14672            dow: 1, // Monday is the first day of the week.
14673            doy: 4, // The week that contains Jan 4th is the first week of the year.
14674        },
14675    });
14676
14677    //! moment.js locale configuration
14678
14679    hooks.defineLocale('pt-br', {
14680        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
14681            '_'
14682        ),
14683        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
14684        weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
14685            '_'
14686        ),
14687        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
14688        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
14689        weekdaysParseExact: true,
14690        longDateFormat: {
14691            LT: 'HH:mm',
14692            LTS: 'HH:mm:ss',
14693            L: 'DD/MM/YYYY',
14694            LL: 'D [de] MMMM [de] YYYY',
14695            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
14696            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
14697        },
14698        calendar: {
14699            sameDay: '[Hoje às] LT',
14700            nextDay: '[Amanhã às] LT',
14701            nextWeek: 'dddd [às] LT',
14702            lastDay: '[Ontem às] LT',
14703            lastWeek: function () {
14704                return this.day() === 0 || this.day() === 6
14705                    ? '[Último] dddd [às] LT' // Saturday + Sunday
14706                    : '[Última] dddd [às] LT'; // Monday - Friday
14707            },
14708            sameElse: 'L',
14709        },
14710        relativeTime: {
14711            future: 'em %s',
14712            past: 'há %s',
14713            s: 'poucos segundos',
14714            ss: '%d segundos',
14715            m: 'um minuto',
14716            mm: '%d minutos',
14717            h: 'uma hora',
14718            hh: '%d horas',
14719            d: 'um dia',
14720            dd: '%d dias',
14721            M: 'um mês',
14722            MM: '%d meses',
14723            y: 'um ano',
14724            yy: '%d anos',
14725        },
14726        dayOfMonthOrdinalParse: /\d{1,2}º/,
14727        ordinal: '%dº',
14728        invalidDate: 'Data inválida',
14729    });
14730
14731    //! moment.js locale configuration
14732
14733    hooks.defineLocale('pt', {
14734        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
14735            '_'
14736        ),
14737        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
14738        weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
14739            '_'
14740        ),
14741        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
14742        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
14743        weekdaysParseExact: true,
14744        longDateFormat: {
14745            LT: 'HH:mm',
14746            LTS: 'HH:mm:ss',
14747            L: 'DD/MM/YYYY',
14748            LL: 'D [de] MMMM [de] YYYY',
14749            LLL: 'D [de] MMMM [de] YYYY HH:mm',
14750            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
14751        },
14752        calendar: {
14753            sameDay: '[Hoje às] LT',
14754            nextDay: '[Amanhã às] LT',
14755            nextWeek: 'dddd [às] LT',
14756            lastDay: '[Ontem às] LT',
14757            lastWeek: function () {
14758                return this.day() === 0 || this.day() === 6
14759                    ? '[Último] dddd [às] LT' // Saturday + Sunday
14760                    : '[Última] dddd [às] LT'; // Monday - Friday
14761            },
14762            sameElse: 'L',
14763        },
14764        relativeTime: {
14765            future: 'em %s',
14766            past: 'há %s',
14767            s: 'segundos',
14768            ss: '%d segundos',
14769            m: 'um minuto',
14770            mm: '%d minutos',
14771            h: 'uma hora',
14772            hh: '%d horas',
14773            d: 'um dia',
14774            dd: '%d dias',
14775            w: 'uma semana',
14776            ww: '%d semanas',
14777            M: 'um mês',
14778            MM: '%d meses',
14779            y: 'um ano',
14780            yy: '%d anos',
14781        },
14782        dayOfMonthOrdinalParse: /\d{1,2}º/,
14783        ordinal: '%dº',
14784        week: {
14785            dow: 1, // Monday is the first day of the week.
14786            doy: 4, // The week that contains Jan 4th is the first week of the year.
14787        },
14788    });
14789
14790    //! moment.js locale configuration
14791
14792    function relativeTimeWithPlural$2(number, withoutSuffix, key) {
14793        var format = {
14794                ss: 'secunde',
14795                mm: 'minute',
14796                hh: 'ore',
14797                dd: 'zile',
14798                ww: 'săptămâni',
14799                MM: 'luni',
14800                yy: 'ani',
14801            },
14802            separator = ' ';
14803        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
14804            separator = ' de ';
14805        }
14806        return number + separator + format[key];
14807    }
14808
14809    hooks.defineLocale('ro', {
14810        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
14811            '_'
14812        ),
14813        monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
14814            '_'
14815        ),
14816        monthsParseExact: true,
14817        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
14818        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
14819        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
14820        longDateFormat: {
14821            LT: 'H:mm',
14822            LTS: 'H:mm:ss',
14823            L: 'DD.MM.YYYY',
14824            LL: 'D MMMM YYYY',
14825            LLL: 'D MMMM YYYY H:mm',
14826            LLLL: 'dddd, D MMMM YYYY H:mm',
14827        },
14828        calendar: {
14829            sameDay: '[azi la] LT',
14830            nextDay: '[mâine la] LT',
14831            nextWeek: 'dddd [la] LT',
14832            lastDay: '[ieri la] LT',
14833            lastWeek: '[fosta] dddd [la] LT',
14834            sameElse: 'L',
14835        },
14836        relativeTime: {
14837            future: 'peste %s',
14838            past: '%s în urmă',
14839            s: 'câteva secunde',
14840            ss: relativeTimeWithPlural$2,
14841            m: 'un minut',
14842            mm: relativeTimeWithPlural$2,
14843            h: 'o oră',
14844            hh: relativeTimeWithPlural$2,
14845            d: 'o zi',
14846            dd: relativeTimeWithPlural$2,
14847            w: 'o săptămână',
14848            ww: relativeTimeWithPlural$2,
14849            M: 'o lună',
14850            MM: relativeTimeWithPlural$2,
14851            y: 'un an',
14852            yy: relativeTimeWithPlural$2,
14853        },
14854        week: {
14855            dow: 1, // Monday is the first day of the week.
14856            doy: 7, // The week that contains Jan 7th is the first week of the year.
14857        },
14858    });
14859
14860    //! moment.js locale configuration
14861
14862    function plural$4(word, num) {
14863        var forms = word.split('_');
14864        return num % 10 === 1 && num % 100 !== 11
14865            ? forms[0]
14866            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
14867            ? forms[1]
14868            : forms[2];
14869    }
14870    function relativeTimeWithPlural$3(number, withoutSuffix, key) {
14871        var format = {
14872            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
14873            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
14874            hh: 'час_часа_часов',
14875            dd: 'день_дня_дней',
14876            ww: 'неделя_недели_недель',
14877            MM: 'месяц_месяца_месяцев',
14878            yy: 'год_года_лет',
14879        };
14880        if (key === 'm') {
14881            return withoutSuffix ? 'минута' : 'минуту';
14882        } else {
14883            return number + ' ' + plural$4(format[key], +number);
14884        }
14885    }
14886    var monthsParse$b = [
14887        /^янв/i,
14888        /^фев/i,
14889        /^мар/i,
14890        /^апр/i,
14891        /^ма[йя]/i,
14892        /^июн/i,
14893        /^июл/i,
14894        /^авг/i,
14895        /^сен/i,
14896        /^окт/i,
14897        /^ноя/i,
14898        /^дек/i,
14899    ];
14900
14901    // http://new.gramota.ru/spravka/rules/139-prop : § 103
14902    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
14903    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
14904    hooks.defineLocale('ru', {
14905        months: {
14906            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
14907                '_'
14908            ),
14909            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
14910                '_'
14911            ),
14912        },
14913        monthsShort: {
14914            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
14915            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
14916                '_'
14917            ),
14918            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
14919                '_'
14920            ),
14921        },
14922        weekdays: {
14923            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
14924                '_'
14925            ),
14926            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
14927                '_'
14928            ),
14929            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
14930        },
14931        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
14932        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
14933        monthsParse: monthsParse$b,
14934        longMonthsParse: monthsParse$b,
14935        shortMonthsParse: monthsParse$b,
14936
14937        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
14938        monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
14939
14940        // копия предыдущего
14941        monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
14942
14943        // полные названия с падежами
14944        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
14945
14946        // Выражение, которое соответствует только сокращённым формам
14947        monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
14948        longDateFormat: {
14949            LT: 'H:mm',
14950            LTS: 'H:mm:ss',
14951            L: 'DD.MM.YYYY',
14952            LL: 'D MMMM YYYY г.',
14953            LLL: 'D MMMM YYYY г., H:mm',
14954            LLLL: 'dddd, D MMMM YYYY г., H:mm',
14955        },
14956        calendar: {
14957            sameDay: '[Сегодня, в] LT',
14958            nextDay: '[Завтра, в] LT',
14959            lastDay: '[Вчера, в] LT',
14960            nextWeek: function (now) {
14961                if (now.week() !== this.week()) {
14962                    switch (this.day()) {
14963                        case 0:
14964                            return '[В следующее] dddd, [в] LT';
14965                        case 1:
14966                        case 2:
14967                        case 4:
14968                            return '[В следующий] dddd, [в] LT';
14969                        case 3:
14970                        case 5:
14971                        case 6:
14972                            return '[В следующую] dddd, [в] LT';
14973                    }
14974                } else {
14975                    if (this.day() === 2) {
14976                        return '[Во] dddd, [в] LT';
14977                    } else {
14978                        return '[В] dddd, [в] LT';
14979                    }
14980                }
14981            },
14982            lastWeek: function (now) {
14983                if (now.week() !== this.week()) {
14984                    switch (this.day()) {
14985                        case 0:
14986                            return '[В прошлое] dddd, [в] LT';
14987                        case 1:
14988                        case 2:
14989                        case 4:
14990                            return '[В прошлый] dddd, [в] LT';
14991                        case 3:
14992                        case 5:
14993                        case 6:
14994                            return '[В прошлую] dddd, [в] LT';
14995                    }
14996                } else {
14997                    if (this.day() === 2) {
14998                        return '[Во] dddd, [в] LT';
14999                    } else {
15000                        return '[В] dddd, [в] LT';
15001                    }
15002                }
15003            },
15004            sameElse: 'L',
15005        },
15006        relativeTime: {
15007            future: 'через %s',
15008            past: '%s назад',
15009            s: 'несколько секунд',
15010            ss: relativeTimeWithPlural$3,
15011            m: relativeTimeWithPlural$3,
15012            mm: relativeTimeWithPlural$3,
15013            h: 'час',
15014            hh: relativeTimeWithPlural$3,
15015            d: 'день',
15016            dd: relativeTimeWithPlural$3,
15017            w: 'неделя',
15018            ww: relativeTimeWithPlural$3,
15019            M: 'месяц',
15020            MM: relativeTimeWithPlural$3,
15021            y: 'год',
15022            yy: relativeTimeWithPlural$3,
15023        },
15024        meridiemParse: /ночи|утра|дня|вечера/i,
15025        isPM: function (input) {
15026            return /^(дня|вечера)$/.test(input);
15027        },
15028        meridiem: function (hour, minute, isLower) {
15029            if (hour < 4) {
15030                return 'ночи';
15031            } else if (hour < 12) {
15032                return 'утра';
15033            } else if (hour < 17) {
15034                return 'дня';
15035            } else {
15036                return 'вечера';
15037            }
15038        },
15039        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
15040        ordinal: function (number, period) {
15041            switch (period) {
15042                case 'M':
15043                case 'd':
15044                case 'DDD':
15045                    return number + '-й';
15046                case 'D':
15047                    return number + '-го';
15048                case 'w':
15049                case 'W':
15050                    return number + '-я';
15051                default:
15052                    return number;
15053            }
15054        },
15055        week: {
15056            dow: 1, // Monday is the first day of the week.
15057            doy: 4, // The week that contains Jan 4th is the first week of the year.
15058        },
15059    });
15060
15061    //! moment.js locale configuration
15062
15063    var months$9 = [
15064            'جنوري',
15065            'فيبروري',
15066            'مارچ',
15067            'اپريل',
15068            'مئي',
15069            'جون',
15070            'جولاءِ',
15071            'آگسٽ',
15072            'سيپٽمبر',
15073            'آڪٽوبر',
15074            'نومبر',
15075            'ڊسمبر',
15076        ],
15077        days$1 = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
15078
15079    hooks.defineLocale('sd', {
15080        months: months$9,
15081        monthsShort: months$9,
15082        weekdays: days$1,
15083        weekdaysShort: days$1,
15084        weekdaysMin: days$1,
15085        longDateFormat: {
15086            LT: 'HH:mm',
15087            LTS: 'HH:mm:ss',
15088            L: 'DD/MM/YYYY',
15089            LL: 'D MMMM YYYY',
15090            LLL: 'D MMMM YYYY HH:mm',
15091            LLLL: 'dddd، D MMMM YYYY HH:mm',
15092        },
15093        meridiemParse: /صبح|شام/,
15094        isPM: function (input) {
15095            return 'شام' === input;
15096        },
15097        meridiem: function (hour, minute, isLower) {
15098            if (hour < 12) {
15099                return 'صبح';
15100            }
15101            return 'شام';
15102        },
15103        calendar: {
15104            sameDay: '[اڄ] LT',
15105            nextDay: '[سڀاڻي] LT',
15106            nextWeek: 'dddd [اڳين هفتي تي] LT',
15107            lastDay: '[ڪالهه] LT',
15108            lastWeek: '[گزريل هفتي] dddd [تي] LT',
15109            sameElse: 'L',
15110        },
15111        relativeTime: {
15112            future: '%s پوء',
15113            past: '%s اڳ',
15114            s: 'چند سيڪنڊ',
15115            ss: '%d سيڪنڊ',
15116            m: 'هڪ منٽ',
15117            mm: '%d منٽ',
15118            h: 'هڪ ڪلاڪ',
15119            hh: '%d ڪلاڪ',
15120            d: 'هڪ ڏينهن',
15121            dd: '%d ڏينهن',
15122            M: 'هڪ مهينو',
15123            MM: '%d مهينا',
15124            y: 'هڪ سال',
15125            yy: '%d سال',
15126        },
15127        preparse: function (string) {
15128            return string.replace(/،/g, ',');
15129        },
15130        postformat: function (string) {
15131            return string.replace(/,/g, '،');
15132        },
15133        week: {
15134            dow: 1, // Monday is the first day of the week.
15135            doy: 4, // The week that contains Jan 4th is the first week of the year.
15136        },
15137    });
15138
15139    //! moment.js locale configuration
15140
15141    hooks.defineLocale('se', {
15142        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(
15143            '_'
15144        ),
15145        monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(
15146            '_'
15147        ),
15148        weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
15149            '_'
15150        ),
15151        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
15152        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
15153        longDateFormat: {
15154            LT: 'HH:mm',
15155            LTS: 'HH:mm:ss',
15156            L: 'DD.MM.YYYY',
15157            LL: 'MMMM D. [b.] YYYY',
15158            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
15159            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
15160        },
15161        calendar: {
15162            sameDay: '[otne ti] LT',
15163            nextDay: '[ihttin ti] LT',
15164            nextWeek: 'dddd [ti] LT',
15165            lastDay: '[ikte ti] LT',
15166            lastWeek: '[ovddit] dddd [ti] LT',
15167            sameElse: 'L',
15168        },
15169        relativeTime: {
15170            future: '%s geažes',
15171            past: 'maŋit %s',
15172            s: 'moadde sekunddat',
15173            ss: '%d sekunddat',
15174            m: 'okta minuhta',
15175            mm: '%d minuhtat',
15176            h: 'okta diimmu',
15177            hh: '%d diimmut',
15178            d: 'okta beaivi',
15179            dd: '%d beaivvit',
15180            M: 'okta mánnu',
15181            MM: '%d mánut',
15182            y: 'okta jahki',
15183            yy: '%d jagit',
15184        },
15185        dayOfMonthOrdinalParse: /\d{1,2}\./,
15186        ordinal: '%d.',
15187        week: {
15188            dow: 1, // Monday is the first day of the week.
15189            doy: 4, // The week that contains Jan 4th is the first week of the year.
15190        },
15191    });
15192
15193    //! moment.js locale configuration
15194
vendor: 16,384 bytes, lines 15195-15606
15195    /*jshint -W100*/
15196    hooks.defineLocale('si', {
15197        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
15198            '_'
15199        ),
15200        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
15201            '_'
15202        ),
15203        weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
15204            '_'
15205        ),
15206        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
15207        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
15208        weekdaysParseExact: true,
15209        longDateFormat: {
15210            LT: 'a h:mm',
15211            LTS: 'a h:mm:ss',
15212            L: 'YYYY/MM/DD',
15213            LL: 'YYYY MMMM D',
15214            LLL: 'YYYY MMMM D, a h:mm',
15215            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
15216        },
15217        calendar: {
15218            sameDay: '[අද] LT[ට]',
15219            nextDay: '[හෙට] LT[ට]',
15220            nextWeek: 'dddd LT[à¶§]',
15221            lastDay: '[ඊයේ] LT[ට]',
15222            lastWeek: '[පසුගිය] dddd LT[ට]',
15223            sameElse: 'L',
15224        },
15225        relativeTime: {
15226            future: '%sකින්',
15227            past: '%sකට පෙර',
15228            s: 'තත්පර කිහිපය',
15229            ss: 'තත්පර %d',
15230            m: 'මිනිත්තුව',
15231            mm: 'මිනිත්තු %d',
15232            h: 'පැය',
15233            hh: 'පැය %d',
15234            d: 'දිනය',
15235            dd: 'දින %d',
15236            M: 'මාසය',
15237            MM: 'මාස %d',
15238            y: 'වසර',
15239            yy: 'වසර %d',
15240        },
15241        dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
15242        ordinal: function (number) {
15243            return number + ' වැනි';
15244        },
15245        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
15246        isPM: function (input) {
15247            return input === 'ප.ව.' || input === 'පස් වරු';
15248        },
15249        meridiem: function (hours, minutes, isLower) {
15250            if (hours > 11) {
15251                return isLower ? 'ප.ව.' : 'පස් වරු';
15252            } else {
15253                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
15254            }
15255        },
15256    });
15257
15258    //! moment.js locale configuration
15259
15260    var months$a = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
15261            '_'
15262        ),
15263        monthsShort$7 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
15264    function plural$5(n) {
15265        return n > 1 && n < 5;
15266    }
15267    function translate$9(number, withoutSuffix, key, isFuture) {
15268        var result = number + ' ';
15269        switch (key) {
15270            case 's': // a few seconds / in a few seconds / a few seconds ago
15271                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
15272            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
15273                if (withoutSuffix || isFuture) {
15274                    return result + (plural$5(number) ? 'sekundy' : 'sekúnd');
15275                } else {
15276                    return result + 'sekundami';
15277                }
15278            case 'm': // a minute / in a minute / a minute ago
15279                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
15280            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
15281                if (withoutSuffix || isFuture) {
15282                    return result + (plural$5(number) ? 'minúty' : 'minút');
15283                } else {
15284                    return result + 'minútami';
15285                }
15286            case 'h': // an hour / in an hour / an hour ago
15287                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
15288            case 'hh': // 9 hours / in 9 hours / 9 hours ago
15289                if (withoutSuffix || isFuture) {
15290                    return result + (plural$5(number) ? 'hodiny' : 'hodín');
15291                } else {
15292                    return result + 'hodinami';
15293                }
15294            case 'd': // a day / in a day / a day ago
15295                return withoutSuffix || isFuture ? 'deň' : 'dňom';
15296            case 'dd': // 9 days / in 9 days / 9 days ago
15297                if (withoutSuffix || isFuture) {
15298                    return result + (plural$5(number) ? 'dni' : 'dní');
15299                } else {
15300                    return result + 'dňami';
15301                }
15302            case 'M': // a month / in a month / a month ago
15303                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
15304            case 'MM': // 9 months / in 9 months / 9 months ago
15305                if (withoutSuffix || isFuture) {
15306                    return result + (plural$5(number) ? 'mesiace' : 'mesiacov');
15307                } else {
15308                    return result + 'mesiacmi';
15309                }
15310            case 'y': // a year / in a year / a year ago
15311                return withoutSuffix || isFuture ? 'rok' : 'rokom';
15312            case 'yy': // 9 years / in 9 years / 9 years ago
15313                if (withoutSuffix || isFuture) {
15314                    return result + (plural$5(number) ? 'roky' : 'rokov');
15315                } else {
15316                    return result + 'rokmi';
15317                }
15318        }
15319    }
15320
15321    hooks.defineLocale('sk', {
15322        months: months$a,
15323        monthsShort: monthsShort$7,
15324        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
15325        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
15326        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
15327        longDateFormat: {
15328            LT: 'H:mm',
15329            LTS: 'H:mm:ss',
15330            L: 'DD.MM.YYYY',
15331            LL: 'D. MMMM YYYY',
15332            LLL: 'D. MMMM YYYY H:mm',
15333            LLLL: 'dddd D. MMMM YYYY H:mm',
15334        },
15335        calendar: {
15336            sameDay: '[dnes o] LT',
15337            nextDay: '[zajtra o] LT',
15338            nextWeek: function () {
15339                switch (this.day()) {
15340                    case 0:
15341                        return '[v nedeľu o] LT';
15342                    case 1:
15343                    case 2:
15344                        return '[v] dddd [o] LT';
15345                    case 3:
15346                        return '[v stredu o] LT';
15347                    case 4:
15348                        return '[vo štvrtok o] LT';
15349                    case 5:
15350                        return '[v piatok o] LT';
15351                    case 6:
15352                        return '[v sobotu o] LT';
15353                }
15354            },
15355            lastDay: '[včera o] LT',
15356            lastWeek: function () {
15357                switch (this.day()) {
15358                    case 0:
15359                        return '[minulú nedeľu o] LT';
15360                    case 1:
15361                    case 2:
15362                        return '[minulý] dddd [o] LT';
15363                    case 3:
15364                        return '[minulú stredu o] LT';
15365                    case 4:
15366                    case 5:
15367                        return '[minulý] dddd [o] LT';
15368                    case 6:
15369                        return '[minulú sobotu o] LT';
15370                }
15371            },
15372            sameElse: 'L',
15373        },
15374        relativeTime: {
15375            future: 'za %s',
15376            past: 'pred %s',
15377            s: translate$9,
15378            ss: translate$9,
15379            m: translate$9,
15380            mm: translate$9,
15381            h: translate$9,
15382            hh: translate$9,
15383            d: translate$9,
15384            dd: translate$9,
15385            M: translate$9,
15386            MM: translate$9,
15387            y: translate$9,
15388            yy: translate$9,
15389        },
15390        dayOfMonthOrdinalParse: /\d{1,2}\./,
15391        ordinal: '%d.',
15392        week: {
15393            dow: 1, // Monday is the first day of the week.
15394            doy: 4, // The week that contains Jan 4th is the first week of the year.
15395        },
15396    });
15397
15398    //! moment.js locale configuration
15399
15400    function processRelativeTime$7(number, withoutSuffix, key, isFuture) {
15401        var result = number + ' ';
15402        switch (key) {
15403            case 's':
15404                return withoutSuffix || isFuture
15405                    ? 'nekaj sekund'
15406                    : 'nekaj sekundami';
15407            case 'ss':
15408                if (number === 1) {
15409                    result += withoutSuffix ? 'sekundo' : 'sekundi';
15410                } else if (number === 2) {
15411                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
15412                } else if (number < 5) {
15413                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
15414                } else {
15415                    result += 'sekund';
15416                }
15417                return result;
15418            case 'm':
15419                return withoutSuffix ? 'ena minuta' : 'eno minuto';
15420            case 'mm':
15421                if (number === 1) {
15422                    result += withoutSuffix ? 'minuta' : 'minuto';
15423                } else if (number === 2) {
15424                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
15425                } else if (number < 5) {
15426                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
15427                } else {
15428                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
15429                }
15430                return result;
15431            case 'h':
15432                return withoutSuffix ? 'ena ura' : 'eno uro';
15433            case 'hh':
15434                if (number === 1) {
15435                    result += withoutSuffix ? 'ura' : 'uro';
15436                } else if (number === 2) {
15437                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
15438                } else if (number < 5) {
15439                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
15440                } else {
15441                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
15442                }
15443                return result;
15444            case 'd':
15445                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
15446            case 'dd':
15447                if (number === 1) {
15448                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
15449                } else if (number === 2) {
15450                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
15451                } else {
15452                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
15453                }
15454                return result;
15455            case 'M':
15456                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
15457            case 'MM':
15458                if (number === 1) {
15459                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
15460                } else if (number === 2) {
15461                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
15462                } else if (number < 5) {
15463                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
15464                } else {
15465                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
15466                }
15467                return result;
15468            case 'y':
15469                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
15470            case 'yy':
15471                if (number === 1) {
15472                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
15473                } else if (number === 2) {
15474                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
15475                } else if (number < 5) {
15476                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
15477                } else {
15478                    result += withoutSuffix || isFuture ? 'let' : 'leti';
15479                }
15480                return result;
15481        }
15482    }
15483
15484    hooks.defineLocale('sl', {
15485        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
15486            '_'
15487        ),
15488        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
15489            '_'
15490        ),
15491        monthsParseExact: true,
15492        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
15493        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
15494        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
15495        weekdaysParseExact: true,
15496        longDateFormat: {
15497            LT: 'H:mm',
15498            LTS: 'H:mm:ss',
15499            L: 'DD. MM. YYYY',
15500            LL: 'D. MMMM YYYY',
15501            LLL: 'D. MMMM YYYY H:mm',
15502            LLLL: 'dddd, D. MMMM YYYY H:mm',
15503        },
15504        calendar: {
15505            sameDay: '[danes ob] LT',
15506            nextDay: '[jutri ob] LT',
15507
15508            nextWeek: function () {
15509                switch (this.day()) {
15510                    case 0:
15511                        return '[v] [nedeljo] [ob] LT';
15512                    case 3:
15513                        return '[v] [sredo] [ob] LT';
15514                    case 6:
15515                        return '[v] [soboto] [ob] LT';
15516                    case 1:
15517                    case 2:
15518                    case 4:
15519                    case 5:
15520                        return '[v] dddd [ob] LT';
15521                }
15522            },
15523            lastDay: '[včeraj ob] LT',
15524            lastWeek: function () {
15525                switch (this.day()) {
15526                    case 0:
15527                        return '[prejšnjo] [nedeljo] [ob] LT';
15528                    case 3:
15529                        return '[prejšnjo] [sredo] [ob] LT';
15530                    case 6:
15531                        return '[prejšnjo] [soboto] [ob] LT';
15532                    case 1:
15533                    case 2:
15534                    case 4:
15535                    case 5:
15536                        return '[prejšnji] dddd [ob] LT';
15537                }
15538            },
15539            sameElse: 'L',
15540        },
15541        relativeTime: {
15542            future: 'čez %s',
15543            past: 'pred %s',
15544            s: processRelativeTime$7,
15545            ss: processRelativeTime$7,
15546            m: processRelativeTime$7,
15547            mm: processRelativeTime$7,
15548            h: processRelativeTime$7,
15549            hh: processRelativeTime$7,
15550            d: processRelativeTime$7,
15551            dd: processRelativeTime$7,
15552            M: processRelativeTime$7,
15553            MM: processRelativeTime$7,
15554            y: processRelativeTime$7,
15555            yy: processRelativeTime$7,
15556        },
15557        dayOfMonthOrdinalParse: /\d{1,2}\./,
15558        ordinal: '%d.',
15559        week: {
15560            dow: 1, // Monday is the first day of the week.
15561            doy: 7, // The week that contains Jan 7th is the first week of the year.
15562        },
15563    });
15564
15565    //! moment.js locale configuration
15566
15567    hooks.defineLocale('sq', {
15568        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
15569            '_'
15570        ),
15571        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
15572        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
15573            '_'
15574        ),
15575        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
15576        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
15577        weekdaysParseExact: true,
15578        meridiemParse: /PD|MD/,
15579        isPM: function (input) {
15580            return input.charAt(0) === 'M';
15581        },
15582        meridiem: function (hours, minutes, isLower) {
15583            return hours < 12 ? 'PD' : 'MD';
15584        },
15585        longDateFormat: {
15586            LT: 'HH:mm',
15587            LTS: 'HH:mm:ss',
15588            L: 'DD/MM/YYYY',
15589            LL: 'D MMMM YYYY',
15590            LLL: 'D MMMM YYYY HH:mm',
15591            LLLL: 'dddd, D MMMM YYYY HH:mm',
15592        },
15593        calendar: {
15594            sameDay: '[Sot në] LT',
15595            nextDay: '[Nesër në] LT',
15596            nextWeek: 'dddd [në] LT',
15597            lastDay: '[Dje në] LT',
15598            lastWeek: 'dddd [e kaluar në] LT',
15599            sameElse: 'L',
15600        },
15601        relativeTime: {
15602            future: 'në %s',
15603            past: '%s më parë',
15604            s: 'disa sekonda',
15605            ss: '%d sekonda',
15606         
vendor: 8,973 bytes, lines 15606-15853
15606   m: 'një minutë',
15607            mm: '%d minuta',
15608            h: 'një orë',
15609            hh: '%d orë',
15610            d: 'një ditë',
15611            dd: '%d ditë',
15612            M: 'një muaj',
15613            MM: '%d muaj',
15614            y: 'një vit',
15615            yy: '%d vite',
15616        },
15617        dayOfMonthOrdinalParse: /\d{1,2}\./,
15618        ordinal: '%d.',
15619        week: {
15620            dow: 1, // Monday is the first day of the week.
15621            doy: 4, // The week that contains Jan 4th is the first week of the year.
15622        },
15623    });
15624
15625    //! moment.js locale configuration
15626
15627    var translator$1 = {
15628        words: {
15629            //Different grammatical cases
15630            ss: ['секунда', 'секунде', 'секунди'],
15631            m: ['један минут', 'једне минуте'],
15632            mm: ['минут', 'минуте', 'минута'],
15633            h: ['један сат', 'једног сата'],
15634            hh: ['сат', 'сата', 'сати'],
15635            dd: ['дан', 'дана', 'дана'],
15636            MM: ['месец', 'месеца', 'месеци'],
15637            yy: ['година', 'године', 'година'],
15638        },
15639        correctGrammaticalCase: function (number, wordKey) {
15640            return number === 1
15641                ? wordKey[0]
15642                : number >= 2 && number <= 4
15643                ? wordKey[1]
15644                : wordKey[2];
15645        },
15646        translate: function (number, withoutSuffix, key) {
15647            var wordKey = translator$1.words[key];
15648            if (key.length === 1) {
15649                return withoutSuffix ? wordKey[0] : wordKey[1];
15650            } else {
15651                return (
15652                    number +
15653                    ' ' +
15654                    translator$1.correctGrammaticalCase(number, wordKey)
15655                );
15656            }
15657        },
15658    };
15659
15660    hooks.defineLocale('sr-cyrl', {
15661        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(
15662            '_'
15663        ),
15664        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(
15665            '_'
15666        ),
15667        monthsParseExact: true,
15668        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
15669        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
15670        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
15671        weekdaysParseExact: true,
15672        longDateFormat: {
15673            LT: 'H:mm',
15674            LTS: 'H:mm:ss',
15675            L: 'D. M. YYYY.',
15676            LL: 'D. MMMM YYYY.',
15677            LLL: 'D. MMMM YYYY. H:mm',
15678            LLLL: 'dddd, D. MMMM YYYY. H:mm',
15679        },
15680        calendar: {
15681            sameDay: '[данас у] LT',
15682            nextDay: '[сутра у] LT',
15683            nextWeek: function () {
15684                switch (this.day()) {
15685                    case 0:
15686                        return '[у] [недељу] [у] LT';
15687                    case 3:
15688                        return '[у] [среду] [у] LT';
15689                    case 6:
15690                        return '[у] [суботу] [у] LT';
15691                    case 1:
15692                    case 2:
15693                    case 4:
15694                    case 5:
15695                        return '[у] dddd [у] LT';
15696                }
15697            },
15698            lastDay: '[јуче у] LT',
15699            lastWeek: function () {
15700                var lastWeekDays = [
15701                    '[прошле] [недеље] [у] LT',
15702                    '[прошлог] [понедељка] [у] LT',
15703                    '[прошлог] [уторка] [у] LT',
15704                    '[прошле] [среде] [у] LT',
15705                    '[прошлог] [четвртка] [у] LT',
15706                    '[прошлог] [петка] [у] LT',
15707                    '[прошле] [суботе] [у] LT',
15708                ];
15709                return lastWeekDays[this.day()];
15710            },
15711            sameElse: 'L',
15712        },
15713        relativeTime: {
15714            future: 'за %s',
15715            past: 'пре %s',
15716            s: 'неколико секунди',
15717            ss: translator$1.translate,
15718            m: translator$1.translate,
15719            mm: translator$1.translate,
15720            h: translator$1.translate,
15721            hh: translator$1.translate,
15722            d: 'дан',
15723            dd: translator$1.translate,
15724            M: 'месец',
15725            MM: translator$1.translate,
15726            y: 'годину',
15727            yy: translator$1.translate,
15728        },
15729        dayOfMonthOrdinalParse: /\d{1,2}\./,
15730        ordinal: '%d.',
15731        week: {
15732            dow: 1, // Monday is the first day of the week.
15733            doy: 7, // The week that contains Jan 1st is the first week of the year.
15734        },
15735    });
15736
15737    //! moment.js locale configuration
15738
15739    var translator$2 = {
15740        words: {
15741            //Different grammatical cases
15742            ss: ['sekunda', 'sekunde', 'sekundi'],
15743            m: ['jedan minut', 'jedne minute'],
15744            mm: ['minut', 'minute', 'minuta'],
15745            h: ['jedan sat', 'jednog sata'],
15746            hh: ['sat', 'sata', 'sati'],
15747            dd: ['dan', 'dana', 'dana'],
15748            MM: ['mesec', 'meseca', 'meseci'],
15749            yy: ['godina', 'godine', 'godina'],
15750        },
15751        correctGrammaticalCase: function (number, wordKey) {
15752            return number === 1
15753                ? wordKey[0]
15754                : number >= 2 && number <= 4
15755                ? wordKey[1]
15756                : wordKey[2];
15757        },
15758        translate: function (number, withoutSuffix, key) {
15759            var wordKey = translator$2.words[key];
15760            if (key.length === 1) {
15761                return withoutSuffix ? wordKey[0] : wordKey[1];
15762            } else {
15763                return (
15764                    number +
15765                    ' ' +
15766                    translator$2.correctGrammaticalCase(number, wordKey)
15767                );
15768            }
15769        },
15770    };
15771
15772    hooks.defineLocale('sr', {
15773        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
15774            '_'
15775        ),
15776        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(
15777            '_'
15778        ),
15779        monthsParseExact: true,
15780        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
15781            '_'
15782        ),
15783        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
15784        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
15785        weekdaysParseExact: true,
15786        longDateFormat: {
15787            LT: 'H:mm',
15788            LTS: 'H:mm:ss',
15789            L: 'D. M. YYYY.',
15790            LL: 'D. MMMM YYYY.',
15791            LLL: 'D. MMMM YYYY. H:mm',
15792            LLLL: 'dddd, D. MMMM YYYY. H:mm',
15793        },
15794        calendar: {
15795            sameDay: '[danas u] LT',
15796            nextDay: '[sutra u] LT',
15797            nextWeek: function () {
15798                switch (this.day()) {
15799                    case 0:
15800                        return '[u] [nedelju] [u] LT';
15801                    case 3:
15802                        return '[u] [sredu] [u] LT';
15803                    case 6:
15804                        return '[u] [subotu] [u] LT';
15805                    case 1:
15806                    case 2:
15807                    case 4:
15808                    case 5:
15809                        return '[u] dddd [u] LT';
15810                }
15811            },
15812            lastDay: '[juče u] LT',
15813            lastWeek: function () {
15814                var lastWeekDays = [
15815                    '[prošle] [nedelje] [u] LT',
15816                    '[prošlog] [ponedeljka] [u] LT',
15817                    '[prošlog] [utorka] [u] LT',
15818                    '[prošle] [srede] [u] LT',
15819                    '[prošlog] [četvrtka] [u] LT',
15820                    '[prošlog] [petka] [u] LT',
15821                    '[prošle] [subote] [u] LT',
15822                ];
15823                return lastWeekDays[this.day()];
15824            },
15825            sameElse: 'L',
15826        },
15827        relativeTime: {
15828            future: 'za %s',
15829            past: 'pre %s',
15830            s: 'nekoliko sekundi',
15831            ss: translator$2.translate,
15832            m: translator$2.translate,
15833            mm: translator$2.translate,
15834            h: translator$2.translate,
15835            hh: translator$2.translate,
15836            d: 'dan',
15837            dd: translator$2.translate,
15838            M: 'mesec',
15839            MM: translator$2.translate,
15840            y: 'godinu',
15841            yy: translator$2.translate,
15842        },
15843        dayOfMonthOrdinalParse: /\d{1,2}\./,
15844        ordinal: '%d.',
15845        week: {
15846            dow: 1, // Monday is the first day of the week.
15847            doy: 7, // The week that contains Jan 7th is the first week of the year.
15848        },
15849    });
15850
15851    //! moment.js locale configuration
15852
15853    hooks.defineLocale('ss', {
15854        months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
15855            '_'
15856        ),
15857        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
15858        weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
15859            '_'
15860        ),
15861        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
15862        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
15863        weekdaysParseExact: true,
15864        longDateFormat: {
15865            LT: 'h:mm A',
15866            LTS: 'h:mm:ss A',
15867            L: 'DD/MM/YYYY',
15868            LL: 'D MMMM YYYY',
15869            LLL: 'D MMMM YYYY h:mm A',
15870            LLLL: 'dddd, D MMMM YYYY h:mm A',
15871        },
15872        calendar: {
15873            sameDay: '[Namuhla nga] LT',
15874            nextDay: '[Kusasa nga] LT',
15875            nextWeek: 'dddd [nga] LT',
15876            lastDay: '[Itolo nga] LT',
15877            lastWeek: 'dddd [leliphelile] [nga] LT',
15878            sameElse: 'L',
15879        },
15880        relativeTime: {
15881            future: 'nga %s',
15882            past: 'wenteka nga %s',
15883            s: 'emizuzwana lomcane',
15884            ss: '%d mzuzwana',
15885            m: 'umzuzu',
15886            mm: '%d emizuzu',
15887            h: 'lihora',
15888            hh: '%d emahora',
15889            d: 'lilanga',
15890            dd: '%d emalanga',
15891            M: 'inyanga',
15892            MM: '%d tinyanga',
15893            y: 'umnyaka',
15894            yy: '%d iminyaka',
15895        },
15896        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
15897        meridiem: function (hours, minutes, isLower) {
15898            if (hours < 11) {
15899                return 'ekuseni';
15900            } else if (hours < 15) {
15901                return 'emini';
15902            } else if (hours < 19) {
15903                return 'entsambama';
15904            } else {
15905                return 'ebusuku';
15906            }
15907        },
15908        meridiemHour: function (hour, meridiem) {
15909            if (hour === 12) {
15910                hour = 0;
15911            }
15912            if (meridiem === 'ekuseni') {
15913                return hour;
15914            } else if (meridiem === 'emini') {
15915                return hour >= 11 ? hour : hour + 12;
15916            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
15917                if (hour === 0) {
15918                    return 0;
15919                }
15920                return hour + 12;
15921            }
15922        },
15923        dayOfMonthOrdinalParse: /\d{1,2}/,
15924        ordinal: '%d',
15925        week: {
15926            dow: 1, // Monday is the first day of the week.
15927            doy: 4, // The week that contains Jan 4th is the first week of the year.
15928        },
15929    });
15930
15931    //! moment.js locale configuration
15932
15933    hooks.defineLocale('sv', {
15934        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
15935            '_'
15936        ),
15937        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
15938        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
15939        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
15940        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
15941        longDateFormat: {
15942            LT: 'HH:mm',
15943            LTS: 'HH:mm:ss',
15944            L: 'YYYY-MM-DD',
15945            LL: 'D MMMM YYYY',
15946            LLL: 'D MMMM YYYY [kl.] HH:mm',
15947            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
15948            lll: 'D MMM YYYY HH:mm',
15949            llll: 'ddd D MMM YYYY HH:mm',
15950        },
15951        calendar: {
15952            sameDay: '[Idag] LT',
15953            nextDay: '[Imorgon] LT',
15954            lastDay: '[Igår] LT',
15955            nextWeek: '[PÃ¥] dddd LT',
15956            lastWeek: '[I] dddd[s] LT',
15957            sameElse: 'L',
15958        },
15959        relativeTime: {
15960            future: 'om %s',
15961            past: 'för %s sedan',
15962            s: 'några sekunder',
15963            ss: '%d sekunder',
15964            m: 'en minut',
15965            mm: '%d minuter',
15966            h: 'en timme',
15967            hh: '%d timmar',
15968            d: 'en dag',
15969            dd: '%d dagar',
15970            M: 'en månad',
15971            MM: '%d månader',
15972            y: 'ett år',
15973            yy: '%d år',
15974        },
15975        dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
15976        ordinal: function (number) {
15977            var b = number % 10,
15978                output =
15979                    ~~((number % 100) / 10) === 1
15980                        ? ':e'
15981                        : b === 1
15982                        ? ':a'
15983                        : b === 2
15984                        ? ':a'
15985                        : b === 3
15986                        ? ':e'
15987                        : ':e';
15988            return number + output;
15989        },
15990        week: {
15991            dow: 1, // Monday is the first day of the week.
15992            doy: 4, // The week that contains Jan 4th is the first week of the year.
15993        },
15994    });
15995
15996    //! moment.js locale configuration
15997
15998    hooks.defineLocale('sw', {
15999        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
16000            '_'
16001        ),
16002        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
16003        weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
16004            '_'
16005        ),
16006        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
16007        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
16008        weekdaysParseExact: true,
16009        longDateFormat: {
16010            LT: 'hh:mm A',
16011            LTS: 'HH:mm:ss',
16012            L: 'DD.MM.YYYY',
16013            LL: 'D MMMM YYYY',
16014            LLL: 'D MMMM YYYY HH:mm',
16015            LLLL: 'dddd, D MMMM YYYY HH:mm',
16016        },
16017        calendar: {
16018            sameDay: '[leo saa] LT',
16019            nextDay: '[kesho saa] LT',
16020            nextWeek: '[wiki ijayo] dddd [saat] LT',
16021            lastDay: '[jana] LT',
16022            lastWeek: '[wiki iliyopita] dddd [saat] LT',
16023            sameElse: 'L',
16024        },
16025        relativeTime: {
16026            future: '%s baadaye',
16027            past: 'tokea %s',
16028            s: 'hivi punde',
16029            ss: 'sekunde %d',
16030            m: 'dakika moja',
16031            mm: 'dakika %d',
16032            h: 'saa limoja',
16033            hh: 'masaa %d',
16034            d: 'siku moja',
16035            dd: 'siku %d',
16036            M: 'mwezi mmoja',
16037            MM: 'miezi %d',
16038            y: 'mwaka mmoja',
16039            yy: 'miaka %d',
16040        },
16041        week: {
16042            dow: 1, // Monday is the first day of the week.
16043            doy: 7, // The week that contains Jan 7th is the first week of the year.
16044        },
16045    });
16046
16047    //! moment.js locale configuration
16048
16049    var symbolMap$g = {
16050            1: '௧',
16051            2: '௨',
16052            3: '௩',
16053            4: '௪',
16054            5: '௫',
16055            6: '௬',
16056            7: '௭',
16057            8: '௮',
16058            9: '௯',
16059            0: '௦',
16060        },
16061        numberMap$f = {
16062            '௧': '1',
16063            '௨': '2',
16064            '௩': '3',
16065            '௪': '4',
16066            '௫': '5',
16067            '௬': '6',
16068            '௭': '7',
16069            '௮': '8',
16070            '௯': '9',
16071            '௦': '0',
16072        };
16073
16074    hooks.defineLocale('ta', {
16075        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்ப
vendor: 14,676 bytes, lines 16075-16442
16075ர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
16076            '_'
16077        ),
16078        monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
16079            '_'
16080        ),
16081        weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
16082            '_'
16083        ),
16084        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
16085            '_'
16086        ),
16087        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
16088        longDateFormat: {
16089            LT: 'HH:mm',
16090            LTS: 'HH:mm:ss',
16091            L: 'DD/MM/YYYY',
16092            LL: 'D MMMM YYYY',
16093            LLL: 'D MMMM YYYY, HH:mm',
16094            LLLL: 'dddd, D MMMM YYYY, HH:mm',
16095        },
16096        calendar: {
16097            sameDay: '[இன்று] LT',
16098            nextDay: '[நாளை] LT',
16099            nextWeek: 'dddd, LT',
16100            lastDay: '[நேற்று] LT',
16101            lastWeek: '[கடந்த வாரம்] dddd, LT',
16102            sameElse: 'L',
16103        },
16104        relativeTime: {
16105            future: '%s இல்',
16106            past: '%s முன்',
16107            s: 'ஒரு சில விநாடிகள்',
16108            ss: '%d விநாடிகள்',
16109            m: 'ஒரு நிமிடம்',
16110            mm: '%d நிமிடங்கள்',
16111            h: 'ஒரு மணி நேரம்',
16112            hh: '%d மணி நேரம்',
16113            d: 'ஒரு நாள்',
16114            dd: '%d நாட்கள்',
16115            M: 'ஒரு மாதம்',
16116            MM: '%d மாதங்கள்',
16117            y: 'ஒரு வருடம்',
16118            yy: '%d ஆண்டுகள்',
16119        },
16120        dayOfMonthOrdinalParse: /\d{1,2}வது/,
16121        ordinal: function (number) {
16122            return number + 'வது';
16123        },
16124        preparse: function (string) {
16125            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
16126                return numberMap$f[match];
16127            });
16128        },
16129        postformat: function (string) {
16130            return string.replace(/\d/g, function (match) {
16131                return symbolMap$g[match];
16132            });
16133        },
16134        // refer http://ta.wikipedia.org/s/1er1
16135        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
16136        meridiem: function (hour, minute, isLower) {
16137            if (hour < 2) {
16138                return ' யாமம்';
16139            } else if (hour < 6) {
16140                return ' வைகறை'; // வைகறை
16141            } else if (hour < 10) {
16142                return ' காலை'; // காலை
16143            } else if (hour < 14) {
16144                return ' நண்பகல்'; // நண்பகல்
16145            } else if (hour < 18) {
16146                return ' எற்பாடு'; // எற்பாடு
16147            } else if (hour < 22) {
16148                return ' மாலை'; // மாலை
16149            } else {
16150                return ' யாமம்';
16151            }
16152        },
16153        meridiemHour: function (hour, meridiem) {
16154            if (hour === 12) {
16155                hour = 0;
16156            }
16157            if (meridiem === 'யாமம்') {
16158                return hour < 2 ? hour : hour + 12;
16159            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
16160                return hour;
16161            } else if (meridiem === 'நண்பகல்') {
16162                return hour >= 10 ? hour : hour + 12;
16163            } else {
16164                return hour + 12;
16165            }
16166        },
16167        week: {
16168            dow: 0, // Sunday is the first day of the week.
16169            doy: 6, // The week that contains Jan 6th is the first week of the year.
16170        },
16171    });
16172
16173    //! moment.js locale configuration
16174
16175    hooks.defineLocale('te', {
16176        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
16177            '_'
16178        ),
16179        monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
16180            '_'
16181        ),
16182        monthsParseExact: true,
16183        weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
16184            '_'
16185        ),
16186        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
16187        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
16188        longDateFormat: {
16189            LT: 'A h:mm',
16190            LTS: 'A h:mm:ss',
16191            L: 'DD/MM/YYYY',
16192            LL: 'D MMMM YYYY',
16193            LLL: 'D MMMM YYYY, A h:mm',
16194            LLLL: 'dddd, D MMMM YYYY, A h:mm',
16195        },
16196        calendar: {
16197            sameDay: '[నేడు] LT',
16198            nextDay: '[రేపు] LT',
16199            nextWeek: 'dddd, LT',
16200            lastDay: '[నిన్న] LT',
16201            lastWeek: '[గత] dddd, LT',
16202            sameElse: 'L',
16203        },
16204        relativeTime: {
16205            future: '%s లో',
16206            past: '%s క్రితం',
16207            s: 'కొన్ని క్షణాలు',
16208            ss: '%d సెకన్లు',
16209            m: 'ఒక నిమిషం',
16210            mm: '%d నిమిషాలు',
16211            h: 'ఒక గంట',
16212            hh: '%d గంటలు',
16213            d: 'ఒక రోజు',
16214            dd: '%d రోజులు',
16215            M: 'ఒక నెల',
16216            MM: '%d నెలలు',
16217            y: 'ఒక సంవత్సరం',
16218            yy: '%d సంవత్సరాలు',
16219        },
16220        dayOfMonthOrdinalParse: /\d{1,2}à°µ/,
16221        ordinal: '%dà°µ',
16222        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
16223        meridiemHour: function (hour, meridiem) {
16224            if (hour === 12) {
16225                hour = 0;
16226            }
16227            if (meridiem === 'రాత్రి') {
16228                return hour < 4 ? hour : hour + 12;
16229            } else if (meridiem === 'ఉదయం') {
16230                return hour;
16231            } else if (meridiem === 'మధ్యాహ్నం') {
16232                return hour >= 10 ? hour : hour + 12;
16233            } else if (meridiem === 'సాయంత్రం') {
16234                return hour + 12;
16235            }
16236        },
16237        meridiem: function (hour, minute, isLower) {
16238            if (hour < 4) {
16239                return 'రాత్రి';
16240            } else if (hour < 10) {
16241                return 'ఉదయం';
16242            } else if (hour < 17) {
16243                return 'మధ్యాహ్నం';
16244            } else if (hour < 20) {
16245                return 'సాయంత్రం';
16246            } else {
16247                return 'రాత్రి';
16248            }
16249        },
16250        week: {
16251            dow: 0, // Sunday is the first day of the week.
16252            doy: 6, // The week that contains Jan 6th is the first week of the year.
16253        },
16254    });
16255
16256    //! moment.js locale configuration
16257
16258    hooks.defineLocale('tet', {
16259        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
16260            '_'
16261        ),
16262        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
16263        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
16264        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
16265        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
16266        longDateFormat: {
16267            LT: 'HH:mm',
16268            LTS: 'HH:mm:ss',
16269            L: 'DD/MM/YYYY',
16270            LL: 'D MMMM YYYY',
16271            LLL: 'D MMMM YYYY HH:mm',
16272            LLLL: 'dddd, D MMMM YYYY HH:mm',
16273        },
16274        calendar: {
16275            sameDay: '[Ohin iha] LT',
16276            nextDay: '[Aban iha] LT',
16277            nextWeek: 'dddd [iha] LT',
16278            lastDay: '[Horiseik iha] LT',
16279            lastWeek: 'dddd [semana kotuk] [iha] LT',
16280            sameElse: 'L',
16281        },
16282        relativeTime: {
16283            future: 'iha %s',
16284            past: '%s liuba',
16285            s: 'segundu balun',
16286            ss: 'segundu %d',
16287            m: 'minutu ida',
16288            mm: 'minutu %d',
16289            h: 'oras ida',
16290            hh: 'oras %d',
16291            d: 'loron ida',
16292            dd: 'loron %d',
16293            M: 'fulan ida',
16294            MM: 'fulan %d',
16295            y: 'tinan ida',
16296            yy: 'tinan %d',
16297        },
16298        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
16299        ordinal: function (number) {
16300            var b = number % 10,
16301                output =
16302                    ~~((number % 100) / 10) === 1
16303                        ? 'th'
16304                        : b === 1
16305                        ? 'st'
16306                        : b === 2
16307                        ? 'nd'
16308                        : b === 3
16309                        ? 'rd'
16310                        : 'th';
16311            return number + output;
16312        },
16313        week: {
16314            dow: 1, // Monday is the first day of the week.
16315            doy: 4, // The week that contains Jan 4th is the first week of the year.
16316        },
16317    });
16318
16319    //! moment.js locale configuration
16320
16321    var suffixes$3 = {
16322        0: '-ум',
16323        1: '-ум',
16324        2: '-юм',
16325        3: '-юм',
16326        4: '-ум',
16327        5: '-ум',
16328        6: '-ум',
16329        7: '-ум',
16330        8: '-ум',
16331        9: '-ум',
16332        10: '-ум',
16333        12: '-ум',
16334        13: '-ум',
16335        20: '-ум',
16336        30: '-юм',
16337        40: '-ум',
16338        50: '-ум',
16339        60: '-ум',
16340        70: '-ум',
16341        80: '-ум',
16342        90: '-ум',
16343        100: '-ум',
16344    };
16345
16346    hooks.defineLocale('tg', {
16347        months: {
16348            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(
16349                '_'
16350            ),
16351            standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
16352                '_'
16353            ),
16354        },
16355        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
16356        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
16357            '_'
16358        ),
16359        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
16360        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
16361        longDateFormat: {
16362            LT: 'HH:mm',
16363            LTS: 'HH:mm:ss',
16364            L: 'DD.MM.YYYY',
16365            LL: 'D MMMM YYYY',
16366            LLL: 'D MMMM YYYY HH:mm',
16367            LLLL: 'dddd, D MMMM YYYY HH:mm',
16368        },
16369        calendar: {
16370            sameDay: '[Имрӯз соати] LT',
16371            nextDay: '[Фардо соати] LT',
16372            lastDay: '[Дирӯз соати] LT',
16373            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
16374            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
16375            sameElse: 'L',
16376        },
16377        relativeTime: {
16378            future: 'баъди %s',
16379            past: '%s пеш',
16380            s: 'якчанд сония',
16381            m: 'як дақиқа',
16382            mm: '%d дақиқа',
16383            h: 'як соат',
16384            hh: '%d соат',
16385            d: 'як рӯз',
16386            dd: '%d рӯз',
16387            M: 'як моҳ',
16388            MM: '%d моҳ',
16389            y: 'як сол',
16390            yy: '%d сол',
16391        },
16392        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
16393        meridiemHour: function (hour, meridiem) {
16394            if (hour === 12) {
16395                hour = 0;
16396            }
16397            if (meridiem === 'шаб') {
16398                return hour < 4 ? hour : hour + 12;
16399            } else if (meridiem === 'субҳ') {
16400                return hour;
16401            } else if (meridiem === 'рӯз') {
16402                return hour >= 11 ? hour : hour + 12;
16403            } else if (meridiem === 'бегоҳ') {
16404                return hour + 12;
16405            }
16406        },
16407        meridiem: function (hour, minute, isLower) {
16408            if (hour < 4) {
16409                return 'шаб';
16410            } else if (hour < 11) {
16411                return 'субҳ';
16412            } else if (hour < 16) {
16413                return 'рӯз';
16414            } else if (hour < 19) {
16415                return 'бегоҳ';
16416            } else {
16417                return 'шаб';
16418            }
16419        },
16420        dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
16421        ordinal: function (number) {
16422            var a = number % 10,
16423                b = number >= 100 ? 100 : null;
16424            return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]);
16425        },
16426        week: {
16427            dow: 1, // Monday is the first day of the week.
16428            doy: 7, // The week that contains Jan 1th is the first week of the year.
16429        },
16430    });
16431
16432    //! moment.js locale configuration
16433
16434    hooks.defineLocale('th', {
16435        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
16436            '_'
16437        ),
16438        monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
16439            '_'
16440        ),
16441        monthsParseExact: true,
16442        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.
vendor: 6,144 bytes, lines 16442-16619
16442split('_'),
16443        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
16444        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
16445        weekdaysParseExact: true,
16446        longDateFormat: {
16447            LT: 'H:mm',
16448            LTS: 'H:mm:ss',
16449            L: 'DD/MM/YYYY',
16450            LL: 'D MMMM YYYY',
16451            LLL: 'D MMMM YYYY เวลา H:mm',
16452            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
16453        },
16454        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
16455        isPM: function (input) {
16456            return input === 'หลังเที่ยง';
16457        },
16458        meridiem: function (hour, minute, isLower) {
16459            if (hour < 12) {
16460                return 'ก่อนเที่ยง';
16461            } else {
16462                return 'หลังเที่ยง';
16463            }
16464        },
16465        calendar: {
16466            sameDay: '[วันนี้ เวลา] LT',
16467            nextDay: '[พรุ่งนี้ เวลา] LT',
16468            nextWeek: 'dddd[หน้า เวลา] LT',
16469            lastDay: '[เมื่อวานนี้ เวลา] LT',
16470            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
16471            sameElse: 'L',
16472        },
16473        relativeTime: {
16474            future: 'อีก %s',
16475            past: '%sที่แล้ว',
16476            s: 'ไม่กี่วินาที',
16477            ss: '%d วินาที',
16478            m: '1 นาที',
16479            mm: '%d นาที',
16480            h: '1 ชั่วโมง',
16481            hh: '%d ชั่วโมง',
16482            d: '1 วัน',
16483            dd: '%d วัน',
16484            w: '1 สัปดาห์',
16485            ww: '%d สัปดาห์',
16486            M: '1 เดือน',
16487            MM: '%d เดือน',
16488            y: '1 ปี',
16489            yy: '%d ปี',
16490        },
16491    });
16492
16493    //! moment.js locale configuration
16494
16495    var suffixes$4 = {
16496        1: "'inji",
16497        5: "'inji",
16498        8: "'inji",
16499        70: "'inji",
16500        80: "'inji",
16501        2: "'nji",
16502        7: "'nji",
16503        20: "'nji",
16504        50: "'nji",
16505        3: "'ünji",
16506        4: "'ünji",
16507        100: "'ünji",
16508        6: "'njy",
16509        9: "'unjy",
16510        10: "'unjy",
16511        30: "'unjy",
16512        60: "'ynjy",
16513        90: "'ynjy",
16514    };
16515
16516    hooks.defineLocale('tk', {
16517        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
16518            '_'
16519        ),
16520        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
16521        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
16522            '_'
16523        ),
16524        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
16525        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
16526        longDateFormat: {
16527            LT: 'HH:mm',
16528            LTS: 'HH:mm:ss',
16529            L: 'DD.MM.YYYY',
16530            LL: 'D MMMM YYYY',
16531            LLL: 'D MMMM YYYY HH:mm',
16532            LLLL: 'dddd, D MMMM YYYY HH:mm',
16533        },
16534        calendar: {
16535            sameDay: '[bugün sagat] LT',
16536            nextDay: '[ertir sagat] LT',
16537            nextWeek: '[indiki] dddd [sagat] LT',
16538            lastDay: '[düýn] LT',
16539            lastWeek: '[geçen] dddd [sagat] LT',
16540            sameElse: 'L',
16541        },
16542        relativeTime: {
16543            future: '%s soň',
16544            past: '%s öň',
16545            s: 'birnäçe sekunt',
16546            m: 'bir minut',
16547            mm: '%d minut',
16548            h: 'bir sagat',
16549            hh: '%d sagat',
16550            d: 'bir gün',
16551            dd: '%d gün',
16552            M: 'bir aý',
16553            MM: '%d aý',
16554            y: 'bir ýyl',
16555            yy: '%d ýyl',
16556        },
16557        ordinal: function (number, period) {
16558            switch (period) {
16559                case 'd':
16560                case 'D':
16561                case 'Do':
16562                case 'DD':
16563                    return number;
16564                default:
16565                    if (number === 0) {
16566                        // special case for zero
16567                        return number + "'unjy";
16568                    }
16569                    var a = number % 10,
16570                        b = (number % 100) - a,
16571                        c = number >= 100 ? 100 : null;
16572                    return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]);
16573            }
16574        },
16575        week: {
16576            dow: 1, // Monday is the first day of the week.
16577            doy: 7, // The week that contains Jan 7th is the first week of the year.
16578        },
16579    });
16580
16581    //! moment.js locale configuration
16582
16583    hooks.defineLocale('tl-ph', {
16584        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
16585            '_'
16586        ),
16587        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
16588        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
16589            '_'
16590        ),
16591        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
16592        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
16593        longDateFormat: {
16594            LT: 'HH:mm',
16595            LTS: 'HH:mm:ss',
16596            L: 'MM/D/YYYY',
16597            LL: 'MMMM D, YYYY',
16598            LLL: 'MMMM D, YYYY HH:mm',
16599            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
16600        },
16601        calendar: {
16602            sameDay: 'LT [ngayong araw]',
16603            nextDay: '[Bukas ng] LT',
16604            nextWeek: 'LT [sa susunod na] dddd',
16605            lastDay: 'LT [kahapon]',
16606            lastWeek: 'LT [noong nakaraang] dddd',
16607            sameElse: 'L',
16608        },
16609        relativeTime: {
16610            future: 'sa loob ng %s',
16611            past: '%s ang nakalipas',
16612            s: 'ilang segundo',
16613            ss: '%d segundo',
16614            m: 'isang minuto',
16615            mm: '%d minuto',
16616            h: 'isang oras',
16617            hh: '%d oras',
16618            d: 'isang araw',
16619            dd: '%d araw',
16620            M: 'isang buwan',
16621            MM: '%d buwan',
16622            y: 'isang taon',
16623            yy: '%d taon',
16624        },
16625        dayOfMonthOrdinalParse: /\d{1,2}/,
16626        ordinal: function (number) {
16627            return number;
16628        },
16629        week: {
16630            dow: 1, // Monday is the first day of the week.
16631            doy: 4, // The week that contains Jan 4th is the first week of the year.
16632        },
16633    });
16634
16635    //! moment.js locale configuration
16636
16637    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
16638
16639    function translateFuture(output) {
16640        var time = output;
16641        time =
16642            output.indexOf('jaj') !== -1
16643                ? time.slice(0, -3) + 'leS'
16644                : output.indexOf('jar') !== -1
16645                ? time.slice(0, -3) + 'waQ'
16646                : output.indexOf('DIS') !== -1
16647                ? time.slice(0, -3) + 'nem'
16648                : time + ' pIq';
16649        return time;
16650    }
16651
16652    function translatePast(output) {
16653        var time = output;
16654        time =
16655            output.indexOf('jaj') !== -1
16656                ? time.slice(0, -3) + 'Hu’'
16657                : output.indexOf('jar') !== -1
16658                ? time.slice(0, -3) + 'wen'
16659                : output.indexOf('DIS') !== -1
16660                ? time.slice(0, -3) + 'ben'
16661                : time + ' ret';
16662        return time;
16663    }
16664
16665    function translate$a(number, withoutSuffix, string, isFuture) {
16666        var numberNoun = numberAsNoun(number);
16667        switch (string) {
16668            case 'ss':
16669                return numberNoun + ' lup';
16670            case 'mm':
16671                return numberNoun + ' tup';
16672            case 'hh':
16673                return numberNoun + ' rep';
16674            case 'dd':
16675                return numberNoun + ' jaj';
16676            case 'MM':
16677                return numberNoun + ' jar';
16678            case 'yy':
16679                return numberNoun + ' DIS';
16680        }
16681    }
16682
16683    function numberAsNoun(number) {
16684        var hundred = Math.floor((number % 1000) / 100),
16685            ten = Math.floor((number % 100) / 10),
16686            one = number % 10,
16687            word = '';
16688        if (hundred > 0) {
16689            word += numbersNouns[hundred] + 'vatlh';
16690        }
16691        if (ten > 0) {
16692            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
16693        }
16694        if (one > 0) {
16695            word += (word !== '' ? ' ' : '') + numbersNouns[one];
16696        }
16697        return word === '' ? 'pagh' : word;
16698    }
16699
16700    hooks.defineLocale('tlh', {
16701        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(
16702            '_'
16703        ),
16704        monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(
16705            '_'
16706        ),
16707        monthsParseExact: true,
16708        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
16709            '_'
16710        ),
16711        weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
16712            '_'
16713        ),
16714        weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
16715            '_'
16716        ),
16717        longDateFormat: {
16718            LT: 'HH:mm',
16719            LTS: 'HH:mm:ss',
16720            L: 'DD.MM.YYYY',
16721            LL: 'D MMMM YYYY',
16722            LLL: 'D MMMM YYYY HH:mm',
16723            LLLL: 'dddd, D MMMM YYYY HH:mm',
16724        },
16725        calendar: {
16726            sameDay: '[DaHjaj] LT',
16727            nextDay: '[wa’leS] LT',
16728            nextWeek: 'LLL',
16729            lastDay: '[wa’Hu’] LT',
16730            lastWeek: 'LLL',
16731            sameElse: 'L',
16732        },
16733        relativeTime: {
16734            future: translateFuture,
16735            past: translatePast,
16736            s: 'puS lup',
16737            ss: translate$a,
16738            m: 'wa’ tup',
16739            mm: translate$a,
16740            h: 'wa’ rep',
16741            hh: translate$a,
16742            d: 'wa’ jaj',
16743            dd: translate$a,
16744            M: 'wa’ jar',
16745            MM: translate$a,
16746            y: 'wa’ DIS',
16747            yy: translate$a,
16748        },
16749        dayOfMonthOrdinalParse: /\d{1,2}\./,
16750        ordinal: '%d.',
16751        week: {
16752            dow: 1, // Monday is the first day of the week.
16753            doy: 4, // The week that contains Jan 4th is the first week of the year.
16754        },
16755    });
16756
16757    //! moment.js locale configuration
16758
16759    var suffixes$5 = {
16760        1: "'inci",
16761        5: "'inci",
16762        8: "'inci",
16763        70: "'inci",
16764        80: "'inci",
16765        2: "'nci",
16766        7: "'nci",
16767        20: "'nci",
16768        50: "'nci",
16769        3: "'üncü",
16770        4: "'üncü",
16771        100: "'üncü",
16772        6: "'ncı",
16773        9: "'uncu",
16774        10: "'uncu",
16775        30: "'uncu",
16776        60: "'ıncı",
16777        90: "'ıncı",
16778    };
16779
16780    hooks.defineLocale('tr', {
16781        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
16782            '_'
16783        ),
16784        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
16785        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
16786            '_'
16787        ),
16788        weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
16789        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
16790        meridiem: function (hours, minutes, isLower) {
16791            if (hours < 12) {
16792                return isLower ? 'öö' : 'ÖÖ';
16793            } else {
16794                return isLower ? 'ös' : 'ÖS';
16795            }
16796        },
16797        meridiemParse: /öö|ÖÖ|ös|ÖS/,
16798        isPM: function (input) {
16799            return input === 'ös' || input === 'ÖS';
16800        },
16801        longDateFormat: {
16802            LT: 'HH:mm',
16803            LTS: 'HH:mm:ss',
16804            L: 'DD.MM.YYYY',
16805            LL: 'D MMMM YYYY',
16806            LLL: 'D MMMM YYYY HH:mm',
16807            LLLL: 'dddd, D MMMM YYYY HH:mm',
16808        },
16809        calendar: {
16810            sameDay: '[bugün saat] LT',
16811            nextDay: '[yarın saat] LT',
16812            nextWeek: '[gelecek] dddd [saat] LT',
16813            lastDay: '[dün] LT',
16814            lastWeek: '[geçen] dddd [saat] LT',
16815            sameElse: 'L',
16816        },
16817        relativeTime: {
16818            future: '%s sonra',
16819            past: '%s önce',
16820            s: 'birkaç saniye',
16821            ss: '%d saniye',
16822            m: 'bir dakika',
16823            mm: '%d dakika',
16824            h: 'bir saat',
16825            hh: '%d saat',
16826            d: 'bir gün',
16827            dd: '%d gün',
16828            w: 'bir hafta',
16829            ww: '%d hafta',
16830            M: 'bir ay',
16831            MM: '%d ay',
16832            y: 'bir yıl',
16833            yy: '%d yıl',
16834        },
16835        ordinal: function (number, period) {
16836            switch (period) {
16837                case 'd':
16838                case 'D':
16839                case 'Do':
16840                case 'DD':
16841                    return number;
16842                default:
16843                    if (number === 0) {
16844                        // special case for zero
16845                        return number + "'ıncı";
16846                    }
16847                    var a = number % 10,
16848                        b = (number % 100) - a,
16849                        c = number >= 100 ? 100 : null;
16850                    return number + (suffixes$5[a] || suffixes$5[b] || suffixes$5[c]);
16851            }
16852        },
16853        week: {
16854            dow: 1, // Monday is the first day of the week.
16855            doy: 7, // The week that contains Jan 7th is the first week of the year.
16856        },
16857    });
16858
16859    //! moment.js locale configuration
16860
16861    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
16862    // This is currently too difficult (maybe even impossible) to add.
16863    hooks.defineLocale('tzl', {
16864        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
16865            '_'
16866        ),
16867        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
16868        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
16869        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
16870        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
16871        longDateFormat: {
16872            LT: 'HH.mm',
16873            LTS: 'HH.mm.ss',
16874            L: 'DD.MM.YYYY',
16875            LL: 'D. MMMM [dallas] YYYY',
16876            LLL: 'D. MMMM [dallas] YYYY HH.mm',
16877            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
16878        },
16879        meridiemParse: /d\'o|d\'a/i,
16880        isPM: function (input) {
16881            return "d'o" === input.toLowerCase();
16882        },
16883        meridiem: function (hours, minutes, isLower) {
16884            if (hours > 11) {
16885                return isLower ? "d'o" : "D'O";
16886            } else {
16887                return isLower ? "d'a" : "D'A";
16888            }
16889        },
16890        calendar: {
vendor: 2,018 bytes, lines 16891-16946
16891            sameDay: '[oxhi à] LT',
16892            nextDay: '[demà à] LT',
16893            nextWeek: 'dddd [à] LT',
16894            lastDay: '[ieiri à] LT',
16895            lastWeek: '[sür el] dddd [lasteu à] LT',
16896            sameElse: 'L',
16897        },
16898        relativeTime: {
16899            future: 'osprei %s',
16900            past: 'ja%s',
16901            s: processRelativeTime$8,
16902            ss: processRelativeTime$8,
16903            m: processRelativeTime$8,
16904            mm: processRelativeTime$8,
16905            h: processRelativeTime$8,
16906            hh: processRelativeTime$8,
16907            d: processRelativeTime$8,
16908            dd: processRelativeTime$8,
16909            M: processRelativeTime$8,
16910            MM: processRelativeTime$8,
16911            y: processRelativeTime$8,
16912            yy: processRelativeTime$8,
16913        },
16914        dayOfMonthOrdinalParse: /\d{1,2}\./,
16915        ordinal: '%d.',
16916        week: {
16917            dow: 1, // Monday is the first day of the week.
16918            doy: 4, // The week that contains Jan 4th is the first week of the year.
16919        },
16920    });
16921
16922    function processRelativeTime$8(number, withoutSuffix, key, isFuture) {
16923        var format = {
16924            s: ['viensas secunds', "'iensas secunds"],
16925            ss: [number + ' secunds', '' + number + ' secunds'],
16926            m: ["'n míut", "'iens míut"],
16927            mm: [number + ' míuts', '' + number + ' míuts'],
16928            h: ["'n þora", "'iensa þora"],
16929            hh: [number + ' þoras', '' + number + ' þoras'],
16930            d: ["'n ziua", "'iensa ziua"],
16931            dd: [number + ' ziuas', '' + number + ' ziuas'],
16932            M: ["'n mes", "'iens mes"],
16933            MM: [number + ' mesen', '' + number + ' mesen'],
16934            y: ["'n ar", "'iens ar"],
16935            yy: [number + ' ars', '' + number + ' ars'],
16936        };
16937        return isFuture
16938            ? format[key][0]
16939            : withoutSuffix
16940            ? format[key][0]
16941            : format[key][1];
16942    }
16943
16944    //! moment.js locale configuration
16945
16946    hooks.defineLocale('tzm-latn', {
16947        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
16948            '_'
16949        ),
16950        monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
16951            '_'
16952        ),
16953        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
16954        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
16955        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
16956        longDateFormat: {
16957            LT: 'HH:mm',
16958            LTS: 'HH:mm:ss',
16959            L: 'DD/MM/YYYY',
16960            LL: 'D MMMM YYYY',
16961            LLL: 'D MMMM YYYY HH:mm',
16962            LLLL: 'dddd D MMMM YYYY HH:mm',
16963        },
16964        calendar: {
16965            sameDay: '[asdkh g] LT',
16966            nextDay: '[aska g] LT',
16967            nextWeek: 'dddd [g] LT',
16968            lastDay: '[assant g] LT',
16969            lastWeek: 'dddd [g] LT',
16970            sameElse: 'L',
16971        },
16972        relativeTime: {
16973            future: 'dadkh s yan %s',
16974            past: 'yan %s',
16975            s: 'imik',
16976            ss: '%d imik',
16977            m: 'minuḍ',
16978            mm: '%d minuḍ',
16979            h: 'saɛa',
16980            hh: '%d tassaɛin',
16981            d: 'ass',
16982            dd: '%d ossan',
16983            M: 'ayowr',
16984            MM: '%d iyyirn',
16985            y: 'asgas',
16986            yy: '%d isgasn',
16987        },
16988        week: {
16989            dow: 6, // Saturday is the first day of the week.
16990            doy: 12, // The week that contains Jan 12th is the first week of the year.
16991        },
16992    });
16993
16994    //! moment.js locale configuration
16995
16996    hooks.defineLocale('tzm', {
16997        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
16998            '_'
16999        ),
17000        monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
17001            '_'
17002        ),
17003        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
17004        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
17005        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
17006        longDateFormat: {
17007            LT: 'HH:mm',
17008            LTS: 'HH:mm:ss',
17009            L: 'DD/MM/YYYY',
17010            LL: 'D MMMM YYYY',
17011            LLL: 'D MMMM YYYY HH:mm',
17012            LLLL: 'dddd D MMMM YYYY HH:mm',
17013        },
17014        calendar: {
17015            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
17016            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
17017            nextWeek: 'dddd [â´´] LT',
17018            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
17019            lastWeek: 'dddd [â´´] LT',
17020            sameElse: 'L',
17021        },
17022        relativeTime: {
17023            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
17024            past: 'ⵢⴰⵏ %s',
17025            s: 'ⵉⵎⵉⴽ',
17026            ss: '%d ⵉⵎⵉⴽ',
17027            m: 'ⵎⵉⵏⵓⴺ',
17028            mm: '%d ⵎⵉⵏⵓⴺ',
17029            h: 'ⵙⴰⵄⴰ',
vendor: 5,761 bytes, lines 17030-17174
17030            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
17031            d: 'ⴰⵙⵙ',
17032            dd: '%d oⵙⵙⴰⵏ',
17033            M: 'ⴰⵢoⵓⵔ',
17034            MM: '%d ⵉⵢⵢⵉⵔⵏ',
17035            y: 'ⴰⵙⴳⴰⵙ',
17036            yy: '%d ⵉⵙⴳⴰⵙⵏ',
17037        },
17038        week: {
17039            dow: 6, // Saturday is the first day of the week.
17040            doy: 12, // The week that contains Jan 12th is the first week of the year.
17041        },
17042    });
17043
17044    //! moment.js locale configuration
17045
17046    hooks.defineLocale('ug-cn', {
17047        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
17048            '_'
17049        ),
17050        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
17051            '_'
17052        ),
17053        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
17054            '_'
17055        ),
17056        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
17057        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
17058        longDateFormat: {
17059            LT: 'HH:mm',
17060            LTS: 'HH:mm:ss',
17061            L: 'YYYY-MM-DD',
17062            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
17063            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
17064            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
17065        },
17066        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
17067        meridiemHour: function (hour, meridiem) {
17068            if (hour === 12) {
17069                hour = 0;
17070            }
17071            if (
17072                meridiem === 'يېرىم كېچە' ||
17073                meridiem === 'سەھەر' ||
17074                meridiem === 'چۈشتىن بۇرۇن'
17075            ) {
17076                return hour;
17077            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
17078                return hour + 12;
17079            } else {
17080                return hour >= 11 ? hour : hour + 12;
17081            }
17082        },
17083        meridiem: function (hour, minute, isLower) {
17084            var hm = hour * 100 + minute;
17085            if (hm < 600) {
17086                return 'يېرىم كېچە';
17087            } else if (hm < 900) {
17088                return 'سەھەر';
17089            } else if (hm < 1130) {
17090                return 'چۈشتىن بۇرۇن';
17091            } else if (hm < 1230) {
17092                return 'چۈش';
17093            } else if (hm < 1800) {
17094                return 'چۈشتىن كېيىن';
17095            } else {
17096                return 'كەچ';
17097            }
17098        },
17099        calendar: {
17100            sameDay: '[بۈگۈن سائەت] LT',
17101            nextDay: '[ئەتە سائەت] LT',
17102            nextWeek: '[كېلەركى] dddd [سائەت] LT',
17103            lastDay: '[تۆنۈگۈن] LT',
17104            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
17105            sameElse: 'L',
17106        },
17107        relativeTime: {
17108            future: '%s كېيىن',
17109            past: '%s بۇرۇن',
17110            s: 'نەچچە سېكونت',
17111            ss: '%d سېكونت',
17112            m: 'بىر مىنۇت',
17113            mm: '%d مىنۇت',
17114            h: 'بىر سائەت',
17115            hh: '%d سائەت',
17116            d: 'بىر كۈن',
17117            dd: '%d كۈن',
17118            M: 'بىر ئاي',
17119            MM: '%d ئاي',
17120            y: 'بىر يىل',
17121            yy: '%d يىل',
17122        },
17123
17124        dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
17125        ordinal: function (number, period) {
17126            switch (period) {
17127                case 'd':
17128                case 'D':
17129                case 'DDD':
17130                    return number + '-كۈنى';
17131                case 'w':
17132                case 'W':
17133                    return number + '-ھەپتە';
17134                default:
17135                    return number;
17136            }
17137        },
17138        preparse: function (string) {
17139            return string.replace(/،/g, ',');
17140        },
17141        postformat: function (string) {
17142            return string.replace(/,/g, '،');
17143        },
17144        week: {
17145            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
17146            dow: 1, // Monday is the first day of the week.
17147            doy: 7, // The week that contains Jan 1st is the first week of the year.
17148        },
17149    });
17150
17151    //! moment.js locale configuration
17152
17153    function plural$6(word, num) {
17154        var forms = word.split('_');
17155        return num % 10 === 1 && num % 100 !== 11
17156            ? forms[0]
17157            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
17158            ? forms[1]
17159            : forms[2];
17160    }
17161    function relativeTimeWithPlural$4(number, withoutSuffix, key) {
17162        var format = {
17163            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
17164            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
17165            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
17166            dd: 'день_дні_днів',
17167            MM: 'місяць_місяці_місяців',
17168            yy: 'рік_роки_років',
17169        };
17170        if (key === 'm') {
17171            return withoutSuffix ? 'хвилина' : 'хвилину';
17172        } else if (key === 'h') {
17173            return withoutSuffix ? 'година' : 'годину';
17174        } else {
vendor: 8,825 bytes, lines 17175-17424
17175            return number + ' ' + plural$6(format[key], +number);
17176        }
17177    }
17178    function weekdaysCaseReplace(m, format) {
17179        var weekdays = {
17180                nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
17181                    '_'
17182                ),
17183                accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
17184                    '_'
17185                ),
17186                genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
17187                    '_'
17188                ),
17189            },
17190            nounCase;
17191
17192        if (m === true) {
17193            return weekdays['nominative']
17194                .slice(1, 7)
17195                .concat(weekdays['nominative'].slice(0, 1));
17196        }
17197        if (!m) {
17198            return weekdays['nominative'];
17199        }
17200
17201        nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
17202            ? 'accusative'
17203            : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
17204            ? 'genitive'
17205            : 'nominative';
17206        return weekdays[nounCase][m.day()];
17207    }
17208    function processHoursFunction(str) {
17209        return function () {
17210            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
17211        };
17212    }
17213
17214    hooks.defineLocale('uk', {
17215        months: {
17216            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
17217                '_'
17218            ),
17219            standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
17220                '_'
17221            ),
17222        },
17223        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
17224            '_'
17225        ),
17226        weekdays: weekdaysCaseReplace,
17227        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
17228        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
17229        longDateFormat: {
17230            LT: 'HH:mm',
17231            LTS: 'HH:mm:ss',
17232            L: 'DD.MM.YYYY',
17233            LL: 'D MMMM YYYY р.',
17234            LLL: 'D MMMM YYYY р., HH:mm',
17235            LLLL: 'dddd, D MMMM YYYY р., HH:mm',
17236        },
17237        calendar: {
17238            sameDay: processHoursFunction('[Сьогодні '),
17239            nextDay: processHoursFunction('[Завтра '),
17240            lastDay: processHoursFunction('[Вчора '),
17241            nextWeek: processHoursFunction('[У] dddd ['),
17242            lastWeek: function () {
17243                switch (this.day()) {
17244                    case 0:
17245                    case 3:
17246                    case 5:
17247                    case 6:
17248                        return processHoursFunction('[Минулої] dddd [').call(this);
17249                    case 1:
17250                    case 2:
17251                    case 4:
17252                        return processHoursFunction('[Минулого] dddd [').call(this);
17253                }
17254            },
17255            sameElse: 'L',
17256        },
17257        relativeTime: {
17258            future: 'за %s',
17259            past: '%s тому',
17260            s: 'декілька секунд',
17261            ss: relativeTimeWithPlural$4,
17262            m: relativeTimeWithPlural$4,
17263            mm: relativeTimeWithPlural$4,
17264            h: 'годину',
17265            hh: relativeTimeWithPlural$4,
17266            d: 'день',
17267            dd: relativeTimeWithPlural$4,
17268            M: 'місяць',
17269            MM: relativeTimeWithPlural$4,
17270            y: 'рік',
17271            yy: relativeTimeWithPlural$4,
17272        },
17273        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
17274        meridiemParse: /ночі|ранку|дня|вечора/,
17275        isPM: function (input) {
17276            return /^(дня|вечора)$/.test(input);
17277        },
17278        meridiem: function (hour, minute, isLower) {
17279            if (hour < 4) {
17280                return 'ночі';
17281            } else if (hour < 12) {
17282                return 'ранку';
17283            } else if (hour < 17) {
17284                return 'дня';
17285            } else {
17286                return 'вечора';
17287            }
17288        },
17289        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
17290        ordinal: function (number, period) {
17291            switch (period) {
17292                case 'M':
17293                case 'd':
17294                case 'DDD':
17295                case 'w':
17296                case 'W':
17297                    return number + '-й';
17298                case 'D':
17299                    return number + '-го';
17300                default:
17301                    return number;
17302            }
17303        },
17304        week: {
17305            dow: 1, // Monday is the first day of the week.
17306            doy: 7, // The week that contains Jan 7th is the first week of the year.
17307        },
17308    });
17309
17310    //! moment.js locale configuration
17311
17312    var months$b = [
17313            'جنوری',
17314            'فروری',
17315            'مارچ',
17316            'اپریل',
17317            'مئی',
17318            'جون',
17319            'جولائی',
17320            'اگست',
17321            'ستمبر',
17322            'اکتوبر',
17323            'نومبر',
17324            'دسمبر',
17325        ],
17326        days$2 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
17327
17328    hooks.defineLocale('ur', {
17329        months: months$b,
17330        monthsShort: months$b,
17331        weekdays: days$2,
17332        weekdaysShort: days$2,
17333        weekdaysMin: days$2,
17334        longDateFormat: {
17335            LT: 'HH:mm',
17336            LTS: 'HH:mm:ss',
17337            L: 'DD/MM/YYYY',
17338            LL: 'D MMMM YYYY',
17339            LLL: 'D MMMM YYYY HH:mm',
17340            LLLL: 'dddd، D MMMM YYYY HH:mm',
17341        },
17342        meridiemParse: /صبح|شام/,
17343        isPM: function (input) {
17344            return 'شام' === input;
17345        },
17346        meridiem: function (hour, minute, isLower) {
17347            if (hour < 12) {
17348                return 'صبح';
17349            }
17350            return 'شام';
17351        },
17352        calendar: {
17353            sameDay: '[آج بوقت] LT',
17354            nextDay: '[کل بوقت] LT',
17355            nextWeek: 'dddd [بوقت] LT',
17356            lastDay: '[گذشتہ روز بوقت] LT',
17357            lastWeek: '[گذشتہ] dddd [بوقت] LT',
17358            sameElse: 'L',
17359        },
17360        relativeTime: {
17361            future: '%s بعد',
17362            past: '%s قبل',
17363            s: 'چند سیکنڈ',
17364            ss: '%d سیکنڈ',
17365            m: 'ایک منٹ',
17366            mm: '%d منٹ',
17367            h: 'ایک گھنٹہ',
17368            hh: '%d گھنٹے',
17369            d: 'ایک دن',
17370            dd: '%d دن',
17371            M: 'ایک ماہ',
17372            MM: '%d ماہ',
17373            y: 'ایک سال',
17374            yy: '%d سال',
17375        },
17376        preparse: function (string) {
17377            return string.replace(/،/g, ',');
17378        },
17379        postformat: function (string) {
17380            return string.replace(/,/g, '،');
17381        },
17382        week: {
17383            dow: 1, // Monday is the first day of the week.
17384            doy: 4, // The week that contains Jan 4th is the first week of the year.
17385        },
17386    });
17387
17388    //! moment.js locale configuration
17389
17390    hooks.defineLocale('uz-latn', {
17391        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
17392            '_'
17393        ),
17394        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
17395        weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
17396            '_'
17397        ),
17398        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
17399        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
17400        longDateFormat: {
17401            LT: 'HH:mm',
17402            LTS: 'HH:mm:ss',
17403            L: 'DD/MM/YYYY',
17404            LL: 'D MMMM YYYY',
17405            LLL: 'D MMMM YYYY HH:mm',
17406            LLLL: 'D MMMM YYYY, dddd HH:mm',
17407        },
17408        calendar: {
17409            sameDay: '[Bugun soat] LT [da]',
17410            nextDay: '[Ertaga] LT [da]',
17411            nextWeek: 'dddd [kuni soat] LT [da]',
17412            lastDay: '[Kecha soat] LT [da]',
17413            lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
17414            sameElse: 'L',
17415        },
17416        relativeTime: {
17417            future: 'Yaqin %s ichida',
17418            past: 'Bir necha %s oldin',
17419            s: 'soniya',
17420            ss: '%d soniya',
17421            m: 'bir daqiqa',
17422            mm: '%d daqiqa',
17423            h: 'bir soat',
17424            hh: '%d soat',
vendor: 5,177 bytes, lines 17425-17567
17425            d: 'bir kun',
17426            dd: '%d kun',
17427            M: 'bir oy',
17428            MM: '%d oy',
17429            y: 'bir yil',
17430            yy: '%d yil',
17431        },
17432        week: {
17433            dow: 1, // Monday is the first day of the week.
17434            doy: 7, // The week that contains Jan 7th is the first week of the year.
17435        },
17436    });
17437
17438    //! moment.js locale configuration
17439
17440    hooks.defineLocale('uz', {
17441        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
17442            '_'
17443        ),
17444        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
17445        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
17446        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
17447        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
17448        longDateFormat: {
17449            LT: 'HH:mm',
17450            LTS: 'HH:mm:ss',
17451            L: 'DD/MM/YYYY',
17452            LL: 'D MMMM YYYY',
17453            LLL: 'D MMMM YYYY HH:mm',
17454            LLLL: 'D MMMM YYYY, dddd HH:mm',
17455        },
17456        calendar: {
17457            sameDay: '[Бугун соат] LT [да]',
17458            nextDay: '[Эртага] LT [да]',
17459            nextWeek: 'dddd [куни соат] LT [да]',
17460            lastDay: '[Кеча соат] LT [да]',
17461            lastWeek: '[Утган] dddd [куни соат] LT [да]',
17462            sameElse: 'L',
17463        },
17464        relativeTime: {
17465            future: 'Якин %s ичида',
17466            past: 'Бир неча %s олдин',
17467            s: 'фурсат',
17468            ss: '%d фурсат',
17469            m: 'бир дакика',
17470            mm: '%d дакика',
17471            h: 'бир соат',
17472            hh: '%d соат',
17473            d: 'бир кун',
17474            dd: '%d кун',
17475            M: 'бир ой',
17476            MM: '%d ой',
17477            y: 'бир йил',
17478            yy: '%d йил',
17479        },
17480        week: {
17481            dow: 1, // Monday is the first day of the week.
17482            doy: 7, // The week that contains Jan 4th is the first week of the year.
17483        },
17484    });
17485
17486    //! moment.js locale configuration
17487
17488    hooks.defineLocale('vi', {
17489        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(
17490            '_'
17491        ),
17492        monthsShort: '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(
17493            '_'
17494        ),
17495        monthsParseExact: true,
17496        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
17497            '_'
17498        ),
17499        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
17500        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
17501        weekdaysParseExact: true,
17502        meridiemParse: /sa|ch/i,
17503        isPM: function (input) {
17504            return /^ch$/i.test(input);
17505        },
17506        meridiem: function (hours, minutes, isLower) {
17507            if (hours < 12) {
17508                return isLower ? 'sa' : 'SA';
17509            } else {
17510                return isLower ? 'ch' : 'CH';
17511            }
17512        },
17513        longDateFormat: {
17514            LT: 'HH:mm',
17515            LTS: 'HH:mm:ss',
17516            L: 'DD/MM/YYYY',
17517            LL: 'D MMMM [năm] YYYY',
17518            LLL: 'D MMMM [năm] YYYY HH:mm',
17519            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
17520            l: 'DD/M/YYYY',
17521            ll: 'D MMM YYYY',
17522            lll: 'D MMM YYYY HH:mm',
17523            llll: 'ddd, D MMM YYYY HH:mm',
17524        },
17525        calendar: {
17526            sameDay: '[Hôm nay lúc] LT',
17527            nextDay: '[Ngày mai lúc] LT',
17528            nextWeek: 'dddd [tuần tới lúc] LT',
17529            lastDay: '[Hôm qua lúc] LT',
17530            lastWeek: 'dddd [tuần trước lúc] LT',
17531            sameElse: 'L',
17532        },
17533        relativeTime: {
17534            future: '%s tới',
17535            past: '%s trước',
17536            s: 'vài giây',
17537            ss: '%d giây',
17538            m: 'một phút',
17539            mm: '%d phút',
17540            h: 'một giờ',
17541            hh: '%d giờ',
17542            d: 'một ngày',
17543            dd: '%d ngày',
17544            w: 'một tuần',
17545            ww: '%d tuần',
17546            M: 'một tháng',
17547            MM: '%d tháng',
17548            y: 'một năm',
17549            yy: '%d năm',
17550        },
17551        dayOfMonthOrdinalParse: /\d{1,2}/,
17552        ordinal: function (number) {
17553            return number;
17554        },
17555        week: {
17556            dow: 1, // Monday is the first day of the week.
17557            doy: 4, // The week that contains Jan 4th is the first week of the year.
17558        },
17559    });
17560
17561    //! moment.js locale configuration
17562
17563    hooks.defineLocale('x-pseudo', {
17564        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(
17565            '_'
17566        ),
17567        monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.
17567split(
17568            '_'
17569        ),
17570        monthsParseExact: true,
17571        weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
17572            '_'
17573        ),
17574        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
17575        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
17576        weekdaysParseExact: true,
17577        longDateFormat: {
17578            LT: 'HH:mm',
17579            L: 'DD/MM/YYYY',
17580            LL: 'D MMMM YYYY',
17581            LLL: 'D MMMM YYYY HH:mm',
17582            LLLL: 'dddd, D MMMM YYYY HH:mm',
17583        },
17584        calendar: {
17585            sameDay: '[T~ódá~ý át] LT',
17586            nextDay: '[T~ómó~rró~w át] LT',
17587            nextWeek: 'dddd [át] LT',
17588            lastDay: '[Ý~ést~érdá~ý át] LT',
17589            lastWeek: '[L~ást] dddd [át] LT',
17590            sameElse: 'L',
17591        },
17592        relativeTime: {
17593            future: 'í~ñ %s',
17594            past: '%s á~gó',
17595            s: 'á ~féw ~sécó~ñds',
17596            ss: '%d s~écóñ~ds',
vendor: 16,384 bytes, lines 17597-18073
17597            m: 'á ~míñ~úté',
17598            mm: '%d m~íñú~tés',
17599            h: 'á~ñ hó~úr',
17600            hh: '%d h~óúrs',
17601            d: 'á ~dáý',
17602            dd: '%d d~áýs',
17603            M: 'á ~móñ~th',
17604            MM: '%d m~óñt~hs',
17605            y: 'á ~ýéár',
17606            yy: '%d ý~éárs',
17607        },
17608        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
17609        ordinal: function (number) {
17610            var b = number % 10,
17611                output =
17612                    ~~((number % 100) / 10) === 1
17613                        ? 'th'
17614                        : b === 1
17615                        ? 'st'
17616                        : b === 2
17617                        ? 'nd'
17618                        : b === 3
17619                        ? 'rd'
17620                        : 'th';
17621            return number + output;
17622        },
17623        week: {
17624            dow: 1, // Monday is the first day of the week.
17625            doy: 4, // The week that contains Jan 4th is the first week of the year.
17626        },
17627    });
17628
17629    //! moment.js locale configuration
17630
17631    hooks.defineLocale('yo', {
17632        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
17633            '_'
17634        ),
17635        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
17636        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
17637        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
17638        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
17639        longDateFormat: {
17640            LT: 'h:mm A',
17641            LTS: 'h:mm:ss A',
17642            L: 'DD/MM/YYYY',
17643            LL: 'D MMMM YYYY',
17644            LLL: 'D MMMM YYYY h:mm A',
17645            LLLL: 'dddd, D MMMM YYYY h:mm A',
17646        },
17647        calendar: {
17648            sameDay: '[Ònì ni] LT',
17649            nextDay: '[Ọ̀la ni] LT',
17650            nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
17651            lastDay: '[Àna ni] LT',
17652            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
17653            sameElse: 'L',
17654        },
17655        relativeTime: {
17656            future: 'ní %s',
17657            past: '%s kọjá',
17658            s: 'ìsẹjú aayá die',
17659            ss: 'aayá %d',
17660            m: 'ìsẹjú kan',
17661            mm: 'ìsẹjú %d',
17662            h: 'wákati kan',
17663            hh: 'wákati %d',
17664            d: 'ọjọ́ kan',
17665            dd: 'ọjọ́ %d',
17666            M: 'osù kan',
17667            MM: 'osù %d',
17668            y: 'ọdún kan',
17669            yy: 'ọdún %d',
17670        },
17671        dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
17672        ordinal: 'ọjọ́ %d',
17673        week: {
17674            dow: 1, // Monday is the first day of the week.
17675            doy: 4, // The week that contains Jan 4th is the first week of the year.
17676        },
17677    });
17678
17679    //! moment.js locale configuration
17680
17681    hooks.defineLocale('zh-cn', {
17682        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
17683            '_'
17684        ),
17685        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
17686            '_'
17687        ),
17688        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
17689        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
17690        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
17691        longDateFormat: {
17692            LT: 'HH:mm',
17693            LTS: 'HH:mm:ss',
17694            L: 'YYYY/MM/DD',
17695            LL: 'YYYY年M月D日',
17696            LLL: 'YYYY年M月D日Ah点mm分',
17697            LLLL: 'YYYY年M月D日ddddAh点mm分',
17698            l: 'YYYY/M/D',
17699            ll: 'YYYY年M月D日',
17700            lll: 'YYYY年M月D日 HH:mm',
17701            llll: 'YYYY年M月D日dddd HH:mm',
17702        },
17703        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
17704        meridiemHour: function (hour, meridiem) {
17705            if (hour === 12) {
17706                hour = 0;
17707            }
17708            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
17709                return hour;
17710            } else if (meridiem === '下午' || meridiem === '晚上') {
17711                return hour + 12;
17712            } else {
17713                // '中午'
17714                return hour >= 11 ? hour : hour + 12;
17715            }
17716        },
17717        meridiem: function (hour, minute, isLower) {
17718            var hm = hour * 100 + minute;
17719            if (hm < 600) {
17720                return '凌晨';
17721            } else if (hm < 900) {
17722                return '早上';
17723            } else if (hm < 1130) {
17724                return '上午';
17725            } else if (hm < 1230) {
17726                return '中午';
17727            } else if (hm < 1800) {
17728                return '下午';
17729            } else {
17730                return '晚上';
17731            }
17732        },
17733        calendar: {
17734            sameDay: '[今天]LT',
17735            nextDay: '[明天]LT',
17736            nextWeek: function (now) {
17737                if (now.week() !== this.week()) {
17738                    return '[下]dddLT';
17739                } else {
17740                    return '[本]dddLT';
17741                }
17742            },
17743            lastDay: '[昨天]LT',
17744            lastWeek: function (now) {
17745                if (this.week() !== now.week()) {
17746                    return '[上]dddLT';
17747                } else {
17748                    return '[本]dddLT';
17749                }
17750            },
17751            sameElse: 'L',
17752        },
17753        dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
17754        ordinal: function (number, period) {
17755            switch (period) {
17756                case 'd':
17757                case 'D':
17758                case 'DDD':
17759                    return number + '日';
17760                case 'M':
17761                    return number + '月';
17762                case 'w':
17763                case 'W':
17764                    return number + '周';
17765                default:
17766                    return number;
17767            }
17768        },
17769        relativeTime: {
17770            future: '%s后',
17771            past: '%s前',
17772            s: '几秒',
17773            ss: '%d 秒',
17774            m: '1 分钟',
17775            mm: '%d 分钟',
17776            h: '1 小时',
17777            hh: '%d 小时',
17778            d: '1 天',
17779            dd: '%d 天',
17780            w: '1 周',
17781            ww: '%d 周',
17782            M: '1 个月',
17783            MM: '%d 个月',
17784            y: '1 å¹´',
17785            yy: '%d å¹´',
17786        },
17787        week: {
17788            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
17789            dow: 1, // Monday is the first day of the week.
17790            doy: 4, // The week that contains Jan 4th is the first week of the year.
17791        },
17792    });
17793
17794    //! moment.js locale configuration
17795
17796    hooks.defineLocale('zh-hk', {
17797        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
17798            '_'
17799        ),
17800        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
17801            '_'
17802        ),
17803        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
17804        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
17805        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
17806        longDateFormat: {
17807            LT: 'HH:mm',
17808            LTS: 'HH:mm:ss',
17809            L: 'YYYY/MM/DD',
17810            LL: 'YYYY年M月D日',
17811            LLL: 'YYYY年M月D日 HH:mm',
17812            LLLL: 'YYYY年M月D日dddd HH:mm',
17813            l: 'YYYY/M/D',
17814            ll: 'YYYY年M月D日',
17815            lll: 'YYYY年M月D日 HH:mm',
17816            llll: 'YYYY年M月D日dddd HH:mm',
17817        },
17818        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
17819        meridiemHour: function (hour, meridiem) {
17820            if (hour === 12) {
17821                hour = 0;
17822            }
17823            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
17824                return hour;
17825            } else if (meridiem === '中午') {
17826                return hour >= 11 ? hour : hour + 12;
17827            } else if (meridiem === '下午' || meridiem === '晚上') {
17828                return hour + 12;
17829            }
17830        },
17831        meridiem: function (hour, minute, isLower) {
17832            var hm = hour * 100 + minute;
17833            if (hm < 600) {
17834                return '凌晨';
17835            } else if (hm < 900) {
17836                return '早上';
17837            } else if (hm < 1200) {
17838                return '上午';
17839            } else if (hm === 1200) {
17840                return '中午';
17841            } else if (hm < 1800) {
17842                return '下午';
17843            } else {
17844                return '晚上';
17845            }
17846        },
17847        calendar: {
17848            sameDay: '[今天]LT',
17849            nextDay: '[明天]LT',
17850            nextWeek: '[下]ddddLT',
17851            lastDay: '[昨天]LT',
17852            lastWeek: '[上]ddddLT',
17853            sameElse: 'L',
17854        },
17855        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
17856        ordinal: function (number, period) {
17857            switch (period) {
17858                case 'd':
17859                case 'D':
17860                case 'DDD':
17861                    return number + '日';
17862                case 'M':
17863                    return number + '月';
17864                case 'w':
17865                case 'W':
17866                    return number + '週';
17867                default:
17868                    return number;
17869            }
17870        },
17871        relativeTime: {
17872            future: '%s後',
17873            past: '%s前',
17874            s: '幾秒',
17875            ss: '%d 秒',
17876            m: '1 分鐘',
17877            mm: '%d 分鐘',
17878            h: '1 小時',
17879            hh: '%d 小時',
17880            d: '1 天',
17881            dd: '%d 天',
17882            M: '1 個月',
17883            MM: '%d 個月',
17884            y: '1 å¹´',
17885            yy: '%d å¹´',
17886        },
17887    });
17888
17889    //! moment.js locale configuration
17890
17891    hooks.defineLocale('zh-mo', {
17892        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
17893            '_'
17894        ),
17895        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
17896            '_'
17897        ),
17898        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
17899        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
17900        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
17901        longDateFormat: {
17902            LT: 'HH:mm',
17903            LTS: 'HH:mm:ss',
17904            L: 'DD/MM/YYYY',
17905            LL: 'YYYY年M月D日',
17906            LLL: 'YYYY年M月D日 HH:mm',
17907            LLLL: 'YYYY年M月D日dddd HH:mm',
17908            l: 'D/M/YYYY',
17909            ll: 'YYYY年M月D日',
17910            lll: 'YYYY年M月D日 HH:mm',
17911            llll: 'YYYY年M月D日dddd HH:mm',
17912        },
17913        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
17914        meridiemHour: function (hour, meridiem) {
17915            if (hour === 12) {
17916                hour = 0;
17917            }
17918            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
17919                return hour;
17920            } else if (meridiem === '中午') {
17921                return hour >= 11 ? hour : hour + 12;
17922            } else if (meridiem === '下午' || meridiem === '晚上') {
17923                return hour + 12;
17924            }
17925        },
17926        meridiem: function (hour, minute, isLower) {
17927            var hm = hour * 100 + minute;
17928            if (hm < 600) {
17929                return '凌晨';
17930            } else if (hm < 900) {
17931                return '早上';
17932            } else if (hm < 1130) {
17933                return '上午';
17934            } else if (hm < 1230) {
17935                return '中午';
17936            } else if (hm < 1800) {
17937                return '下午';
17938            } else {
17939                return '晚上';
17940            }
17941        },
17942        calendar: {
17943            sameDay: '[今天] LT',
17944            nextDay: '[明天] LT',
17945            nextWeek: '[下]dddd LT',
17946            lastDay: '[昨天] LT',
17947            lastWeek: '[上]dddd LT',
17948            sameElse: 'L',
17949        },
17950        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
17951        ordinal: function (number, period) {
17952            switch (period) {
17953                case 'd':
17954                case 'D':
17955                case 'DDD':
17956                    return number + '日';
17957                case 'M':
17958                    return number + '月';
17959                case 'w':
17960                case 'W':
17961                    return number + '週';
17962                default:
17963                    return number;
17964            }
17965        },
17966        relativeTime: {
17967            future: '%s內',
17968            past: '%s前',
17969            s: '幾秒',
17970            ss: '%d 秒',
17971            m: '1 分鐘',
17972            mm: '%d 分鐘',
17973            h: '1 小時',
17974            hh: '%d 小時',
17975            d: '1 天',
17976            dd: '%d 天',
17977            M: '1 個月',
17978            MM: '%d 個月',
17979            y: '1 å¹´',
17980            yy: '%d å¹´',
17981        },
17982    });
17983
17984    //! moment.js locale configuration
17985
17986    hooks.defineLocale('zh-tw', {
17987        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
17988            '_'
17989        ),
17990        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
17991            '_'
17992        ),
17993        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
17994        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
17995        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
17996        longDateFormat: {
17997            LT: 'HH:mm',
17998            LTS: 'HH:mm:ss',
17999            L: 'YYYY/MM/DD',
18000            LL: 'YYYY年M月D日',
18001            LLL: 'YYYY年M月D日 HH:mm',
18002            LLLL: 'YYYY年M月D日dddd HH:mm',
18003            l: 'YYYY/M/D',
18004            ll: 'YYYY年M月D日',
18005            lll: 'YYYY年M月D日 HH:mm',
18006            llll: 'YYYY年M月D日dddd HH:mm',
18007        },
18008        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
18009        meridiemHour: function (hour, meridiem) {
18010            if (hour === 12) {
18011                hour = 0;
18012            }
18013            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
18014                return hour;
18015            } else if (meridiem === '中午') {
18016                return hour >= 11 ? hour : hour + 12;
18017            } else if (meridiem === '下午' || meridiem === '晚上') {
18018                return hour + 12;
18019            }
18020        },
18021        meridiem: function (hour, minute, isLower) {
18022            var hm = hour * 100 + minute;
18023            if (hm < 600) {
18024                return '凌晨';
18025            } else if (hm < 900) {
18026                return '早上';
18027            } else if (hm < 1130) {
18028                return '上午';
18029            } else if (hm < 1230) {
18030                return '中午';
18031            } else if (hm < 1800) {
18032                return '下午';
18033            } else {
18034                return '晚上';
18035            }
18036        },
18037        calendar: {
18038            sameDay: '[今天] LT',
18039            nextDay: '[明天] LT',
18040            nextWeek: '[下]dddd LT',
18041            lastDay: '[昨天] LT',
18042            lastWeek: '[上]dddd LT',
18043            sameElse: 'L',
18044        },
18045        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
18046        ordinal: function (number, period) {
18047            switch (period) {
18048                case 'd':
18049                case 'D':
18050                case 'DDD':
18051                    return number + '日';
18052                case 'M':
18053                    return number + '月';
18054                case 'w':
18055                case 'W':
18056                    return number + '週';
18057                default:
18058                    return number;
18059            }
18060        },
18061        relativeTime: {
18062            future: '%s後',
18063            past: '%s前',
18064            s: '幾秒',
18065            ss: '%d 秒',
18066            m: '1 分鐘',
18067            mm: '%d 分鐘',
18068            h: '1 小時',
18069            hh: '%d 小時',
18070            d: '1 天',
18071            dd: '%d 天',
18072            M: '1 個月',
18073            M
18073M: '%d 個月',
18074            y: '1 å¹´',
18075            yy: '%d å¹´',
18076        },
18077    });
18078
18079    hooks.locale('en');
18080
18081    return hooks;
18082
18083})));

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