PageSourceSearch

https://www.ipatinga.mg.gov.br/scripts/moment-with-locales.js

js ipatinga.mg.gov.br collected 2026-10-02 04:30:44 UTC 480,056 bytes, 12,910 lines download raw bytes

vendor: 6,134 bytes, lines 1-215
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 () {
6    'use strict';
7
8    var hookCallback;
9
10    function hooks() {
11        return hookCallback.apply(null, arguments);
12    }
13
14    // This is done to register the method called with moment()
15    // without creating circular dependencies.
16    function setHookCallback(callback) {
17        hookCallback = callback;
18    }
19
20    function isArray(input) {
21        return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';
22    }
23
24    function isObject(input) {
25        // IE8 will treat undefined and null as object if it wasn't for
26        // input != null
27        return input != null && Object.prototype.toString.call(input) === '[object Object]';
28    }
29
30    function isObjectEmpty(obj) {
31        var k;
32        for (k in obj) {
33            // even if its not own property I'd still call it non-empty
34            return false;
35        }
36        return true;
37    }
38
39    function isNumber(input) {
40        return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';
41    }
42
43    function isDate(input) {
44        return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
45    }
46
47    function map(arr, fn) {
48        var res = [], i;
49        for (i = 0; i < arr.length; ++i) {
50            res.push(fn(arr[i], i));
51        }
52        return res;
53    }
54
55    function hasOwnProp(a, b) {
56        return Object.prototype.hasOwnProperty.call(a, b);
57    }
58
59    function extend(a, b) {
60        for (var i in b) {
61            if (hasOwnProp(b, i)) {
62                a[i] = b[i];
63            }
64        }
65
66        if (hasOwnProp(b, 'toString')) {
67            a.toString = b.toString;
68        }
69
70        if (hasOwnProp(b, 'valueOf')) {
71            a.valueOf = b.valueOf;
72        }
73
74        return a;
75    }
76
77    function createUTC(input, format, locale, strict) {
78        return createLocalOrUTC(input, format, locale, strict, true).utc();
79    }
80
81    function defaultParsingFlags() {
82        // We need to deep clone this object.
83        return {
84            empty: false,
85            unusedTokens: [],
86            unusedInput: [],
87            overflow: -2,
88            charsLeftOver: 0,
89            nullInput: false,
90            invalidMonth: null,
91            invalidFormat: false,
92            userInvalidated: false,
93            iso: false,
94            parsedDateParts: [],
95            meridiem: null
96        };
97    }
98
99    function getParsingFlags(m) {
100        if (m._pf == null) {
101            m._pf = defaultParsingFlags();
102        }
103        return m._pf;
104    }
105
106    var some;
107    if (Array.prototype.some) {
108        some = Array.prototype.some;
109    } else {
110        some = function (fun) {
111            var t = Object(this);
112            var len = t.length >>> 0;
113
114            for (var i = 0; i < len; i++) {
115                if (i in t && fun.call(this, t[i], i, t)) {
116                    return true;
117                }
118            }
119
120            return false;
121        };
122    }
123
124    var some$1 = some;
125
126    function isValid(m) {
127        if (m._isValid == null) {
128            var flags = getParsingFlags(m);
129            var parsedParts = some$1.call(flags.parsedDateParts, function (i) {
130                return i != null;
131            });
132            var isNowValid = !isNaN(m._d.getTime()) &&
133                flags.overflow < 0 &&
134                !flags.empty &&
135                !flags.invalidMonth &&
136                !flags.invalidWeekday &&
137                !flags.nullInput &&
138                !flags.invalidFormat &&
139                !flags.userInvalidated &&
140                (!flags.meridiem || (flags.meridiem && parsedParts));
141
142            if (m._strict) {
143                isNowValid = isNowValid &&
144                    flags.charsLeftOver === 0 &&
145                    flags.unusedTokens.length === 0 &&
146                    flags.bigHour === undefined;
147            }
148
149            if (Object.isFrozen == null || !Object.isFrozen(m)) {
150                m._isValid = isNowValid;
151            }
152            else {
153                return isNowValid;
154            }
155        }
156        return m._isValid;
157    }
158
159    function createInvalid(flags) {
160        var m = createUTC(NaN);
161        if (flags != null) {
162            extend(getParsingFlags(m), flags);
163        }
164        else {
165            getParsingFlags(m).userInvalidated = true;
166        }
167
168        return m;
169    }
170
171    function isUndefined(input) {
172        return input === void 0;
173    }
174
175    // Plugins that add properties should also add the key here (null value),
176    // so we can properly clone ourselves.
177    var momentProperties = hooks.momentProperties = [];
178
179    function copyConfig(to, from) {
180        var i, prop, val;
181
182        if (!isUndefined(from._isAMomentObject)) {
183            to._isAMomentObject = from._isAMomentObject;
184        }
185        if (!isUndefined(from._i)) {
186            to._i = from._i;
187        }
188        if (!isUndefined(from._f)) {
189            to._f = from._f;
190        }
191        if (!isUndefined(from._l)) {
192            to._l = from._l;
193        }
194        if (!isUndefined(from._strict)) {
195            to._strict = from._strict;
196        }
197        if (!isUndefined(from._tzm)) {
198            to._tzm = from._tzm;
199        }
200        if (!isUndefined(from._isUTC)) {
201            to._isUTC = from._isUTC;
202        }
203        if (!isUndefined(from._offset)) {
204            to._offset = from._offset;
205        }
206        if (!isUndefined(from._pf)) {
207            to._pf = getParsingFlags(from);
208        }
209        if (!isUndefined(from._locale)) {
210            to._locale = from._locale;
211        }
212
213        if (momentProperties.length > 0) {
214            for (i in momentProperties) {
215                prop = momentProperties[i];
vendor: 7,070 bytes, lines 216-444
216                val = from[prop];
217                if (!isUndefined(val)) {
218                    to[prop] = val;
219                }
220            }
221        }
222
223        return to;
224    }
225
226    var updateInProgress = false;
227
228    // Moment prototype object
229    function Moment(config) {
230        copyConfig(this, config);
231        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
232        if (!this.isValid()) {
233            this._d = new Date(NaN);
234        }
235        // Prevent infinite loop in case updateOffset creates new moment
236        // objects.
237        if (updateInProgress === false) {
238            updateInProgress = true;
239            hooks.updateOffset(this);
240            updateInProgress = false;
241        }
242    }
243
244    function isMoment(obj) {
245        return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
246    }
247
248    function absFloor(number) {
249        if (number < 0) {
250            // -0 -> 0
251            return Math.ceil(number) || 0;
252        } else {
253            return Math.floor(number);
254        }
255    }
256
257    function toInt(argumentForCoercion) {
258        var coercedNumber = +argumentForCoercion,
259            value = 0;
260
261        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
262            value = absFloor(coercedNumber);
263        }
264
265        return value;
266    }
267
268    // compare two arrays, return the number of differences
269    function compareArrays(array1, array2, dontConvert) {
270        var len = Math.min(array1.length, array2.length),
271            lengthDiff = Math.abs(array1.length - array2.length),
272            diffs = 0,
273            i;
274        for (i = 0; i < len; i++) {
275            if ((dontConvert && array1[i] !== array2[i]) ||
276                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
277                diffs++;
278            }
279        }
280        return diffs + lengthDiff;
281    }
282
283    function warn(msg) {
284        if (hooks.suppressDeprecationWarnings === false &&
285                (typeof console !== 'undefined') && console.warn) {
286            console.warn('Deprecation warning: ' + msg);
287        }
288    }
289
290    function deprecate(msg, fn) {
291        var firstTime = true;
292
293        return extend(function () {
294            if (hooks.deprecationHandler != null) {
295                hooks.deprecationHandler(null, msg);
296            }
297            if (firstTime) {
298                var args = [];
299                var arg;
300                for (var i = 0; i < arguments.length; i++) {
301                    arg = '';
302                    if (typeof arguments[i] === 'object') {
303                        arg += '\n[' + i + '] ';
304                        for (var key in arguments[0]) {
305                            arg += key + ': ' + arguments[0][key] + ', ';
306                        }
307                        arg = arg.slice(0, -2); // Remove trailing comma and space
308                    } else {
309                        arg = arguments[i];
310                    }
311                    args.push(arg);
312                }
313                warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack);
314                firstTime = false;
315            }
316            return fn.apply(this, arguments);
317        }, fn);
318    }
319
320    var deprecations = {};
321
322    function deprecateSimple(name, msg) {
323        if (hooks.deprecationHandler != null) {
324            hooks.deprecationHandler(name, msg);
325        }
326        if (!deprecations[name]) {
327            warn(msg);
328            deprecations[name] = true;
329        }
330    }
331
332    hooks.suppressDeprecationWarnings = false;
333    hooks.deprecationHandler = null;
334
335    function isFunction(input) {
336        return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
337    }
338
339    function set(config) {
340        var prop, i;
341        for (i in config) {
342            prop = config[i];
343            if (isFunction(prop)) {
344                this[i] = prop;
345            } else {
346                this['_' + i] = prop;
347            }
348        }
349        this._config = config;
350        // Lenient ordinal parsing accepts just a number in addition to
351        // number + (possibly) stuff coming from _ordinalParseLenient.
352        this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source);
353    }
354
355    function mergeConfigs(parentConfig, childConfig) {
356        var res = extend({}, parentConfig), prop;
357        for (prop in childConfig) {
358            if (hasOwnProp(childConfig, prop)) {
359                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
360                    res[prop] = {};
361                    extend(res[prop], parentConfig[prop]);
362                    extend(res[prop], childConfig[prop]);
363                } else if (childConfig[prop] != null) {
364                    res[prop] = childConfig[prop];
365                } else {
366                    delete res[prop];
367                }
368            }
369        }
370        for (prop in parentConfig) {
371            if (hasOwnProp(parentConfig, prop) &&
372                    !hasOwnProp(childConfig, prop) &&
373                    isObject(parentConfig[prop])) {
374                // make sure changes to properties don't modify parent config
375                res[prop] = extend({}, res[prop]);
376            }
377        }
378        return res;
379    }
380
381    function Locale(config) {
382        if (config != null) {
383            this.set(config);
384        }
385    }
386
387    var keys;
388
389    if (Object.keys) {
390        keys = Object.keys;
391    } else {
392        keys = function (obj) {
393            var i, res = [];
394            for (i in obj) {
395                if (hasOwnProp(obj, i)) {
396                    res.push(i);
397                }
398            }
399            return res;
400        };
401    }
402
403    var keys$1 = keys;
404
405    var defaultCalendar = {
406        sameDay: '[Today at] LT',
407        nextDay: '[Tomorrow at] LT',
408        nextWeek: 'dddd [at] LT',
409        lastDay: '[Yesterday at] LT',
410        lastWeek: '[Last] dddd [at] LT',
411        sameElse: 'L'
412    };
413
414    function calendar(key, mom, now) {
415        var output = this._calendar[key] || this._calendar['sameElse'];
416        return isFunction(output) ? output.call(mom, now) : output;
417    }
418
419    var defaultLongDateFormat = {
420        LTS: 'h:mm:ss A',
421        LT: 'h:mm A',
422        L: 'MM/DD/YYYY',
423        LL: 'MMMM D, YYYY',
424        LLL: 'MMMM D, YYYY h:mm A',
425        LLLL: 'dddd, MMMM D, YYYY h:mm A'
426    };
427
428    function longDateFormat(key) {
429        var format = this._longDateFormat[key],
430            formatUpper = this._longDateFormat[key.toUpperCase()];
431
432        if (format || !formatUpper) {
433            return format;
434        }
435
436        this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
437            return val.slice(1);
438        });
439
440        return this._longDateFormat[key];
441    }
442
443    var defaultInvalidDate = 'Invalid date';
444
vendor: 11,023 bytes, lines 445-796
445    function invalidDate() {
446        return this._invalidDate;
447    }
448
449    var defaultOrdinal = '%d';
450    var defaultOrdinalParse = /\d{1,2}/;
451
452    function ordinal(number) {
453        return this._ordinal.replace('%d', number);
454    }
455
456    var defaultRelativeTime = {
457        future: 'in %s',
458        past: '%s ago',
459        s: 'a few seconds',
460        m: 'a minute',
461        mm: '%d minutes',
462        h: 'an hour',
463        hh: '%d hours',
464        d: 'a day',
465        dd: '%d days',
466        M: 'a month',
467        MM: '%d months',
468        y: 'a year',
469        yy: '%d years'
470    };
471
472    function relativeTime(number, withoutSuffix, string, isFuture) {
473        var output = this._relativeTime[string];
474        return (isFunction(output)) ?
475            output(number, withoutSuffix, string, isFuture) :
476            output.replace(/%d/i, number);
477    }
478
479    function pastFuture(diff, output) {
480        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
481        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
482    }
483
484    var aliases = {};
485
486    function addUnitAlias(unit, shorthand) {
487        var lowerCase = unit.toLowerCase();
488        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
489    }
490
491    function normalizeUnits(units) {
492        return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
493    }
494
495    function normalizeObjectUnits(inputObject) {
496        var normalizedInput = {},
497            normalizedProp,
498            prop;
499
500        for (prop in inputObject) {
501            if (hasOwnProp(inputObject, prop)) {
502                normalizedProp = normalizeUnits(prop);
503                if (normalizedProp) {
504                    normalizedInput[normalizedProp] = inputObject[prop];
505                }
506            }
507        }
508
509        return normalizedInput;
510    }
511
512    var priorities = {};
513
514    function addUnitPriority(unit, priority) {
515        priorities[unit] = priority;
516    }
517
518    function getPrioritizedUnits(unitsObj) {
519        var units = [];
520        for (var u in unitsObj) {
521            units.push({ unit: u, priority: priorities[u] });
522        }
523        units.sort(function (a, b) {
524            return a.priority - b.priority;
525        });
526        return units;
527    }
528
529    function makeGetSet(unit, keepTime) {
530        return function (value) {
531            if (value != null) {
532                set$1(this, unit, value);
533                hooks.updateOffset(this, keepTime);
534                return this;
535            } else {
536                return get(this, unit);
537            }
538        };
539    }
540
541    function get(mom, unit) {
542        return mom.isValid() ?
543            mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;
544    }
545
546    function set$1(mom, unit, value) {
547        if (mom.isValid()) {
548            mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
549        }
550    }
551
552    // MOMENTS
553
554    function stringGet(units) {
555        units = normalizeUnits(units);
556        if (isFunction(this[units])) {
557            return this[units]();
558        }
559        return this;
560    }
561
562
563    function stringSet(units, value) {
564        if (typeof units === 'object') {
565            units = normalizeObjectUnits(units);
566            var prioritized = getPrioritizedUnits(units);
567            for (var i = 0; i < prioritized.length; i++) {
568                this[prioritized[i].unit](units[prioritized[i].unit]);
569            }
570        } else {
571            units = normalizeUnits(units);
572            if (isFunction(this[units])) {
573                return this[units](value);
574            }
575        }
576        return this;
577    }
578
579    function zeroFill(number, targetLength, forceSign) {
580        var absNumber = '' + Math.abs(number),
581            zerosToFill = targetLength - absNumber.length,
582            sign = number >= 0;
583        return (sign ? (forceSign ? '+' : '') : '-') +
584            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
585    }
586
587    var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;
588
589    var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
590
591    var formatFunctions = {};
592
593    var formatTokenFunctions = {};
594
595    // token:    'M'
596    // padded:   ['MM', 2]
597    // ordinal:  'Mo'
598    // callback: function () { this.month() + 1 }
599    function addFormatToken(token, padded, ordinal, callback) {
600        var func = callback;
601        if (typeof callback === 'string') {
602            func = function () {
603                return this[callback]();
604            };
605        }
606        if (token) {
607            formatTokenFunctions[token] = func;
608        }
609        if (padded) {
610            formatTokenFunctions[padded[0]] = function () {
611                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
612            };
613        }
614        if (ordinal) {
615            formatTokenFunctions[ordinal] = function () {
616                return this.localeData().ordinal(func.apply(this, arguments), token);
617            };
618        }
619    }
620
621    function removeFormattingTokens(input) {
622        if (input.match(/\[[\s\S]/)) {
623            return input.replace(/^\[|\]$/g, '');
624        }
625        return input.replace(/\\/g, '');
626    }
627
628    function makeFormatFunction(format) {
629        var array = format.match(formattingTokens), i, length;
630
631        for (i = 0, length = array.length; i < length; i++) {
632            if (formatTokenFunctions[array[i]]) {
633                array[i] = formatTokenFunctions[array[i]];
634            } else {
635                array[i] = removeFormattingTokens(array[i]);
636            }
637        }
638
639        return function (mom) {
640            var output = '', i;
641            for (i = 0; i < length; i++) {
642                output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
643            }
644            return output;
645        };
646    }
647
648    // format date using native date object
649    function formatMoment(m, format) {
650        if (!m.isValid()) {
651            return m.localeData().invalidDate();
652        }
653
654        format = expandFormat(format, m.localeData());
655        formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
656
657        return formatFunctions[format](m);
658    }
659
660    function expandFormat(format, locale) {
661        var i = 5;
662
663        function replaceLongDateFormatTokens(input) {
664            return locale.longDateFormat(input) || input;
665        }
666
667        localFormattingTokens.lastIndex = 0;
668        while (i >= 0 && localFormattingTokens.test(format)) {
669            format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
670            localFormattingTokens.lastIndex = 0;
671            i -= 1;
672        }
673
674        return format;
675    }
676
677    var match1 = /\d/;            //       0 - 9
678    var match2 = /\d\d/;          //      00 - 99
679    var match3 = /\d{3}/;         //     000 - 999
680    var match4 = /\d{4}/;         //    0000 - 9999
681    var match6 = /[+-]?\d{6}/;    // -999999 - 999999
682    var match1to2 = /\d\d?/;         //       0 - 99
683    var match3to4 = /\d\d\d\d?/;     //     999 - 9999
684    var match5to6 = /\d\d\d\d\d\d?/; //   99999 - 999999
685    var match1to3 = /\d{1,3}/;       //       0 - 999
686    var match1to4 = /\d{1,4}/;       //       0 - 9999
687    var match1to6 = /[+-]?\d{1,6}/;  // -999999 - 999999
688
689    var matchUnsigned = /\d+/;           //       0 - inf
690    var matchSigned = /[+-]?\d+/;      //    -inf - inf
691
692    var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
693    var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z
694
695    var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
696
697    // any word (or two) characters or numbers including two/three word month in arabic.
698    // includes scottish gaelic two word and hyphenated months
699    var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;
700
701
702    var regexes = {};
703
704    function addRegexToken(token, regex, strictRegex) {
705        regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
706            return (isStrict && strictRegex) ? strictRegex : regex;
707        };
708    }
709
710    function getParseRegexForToken(token, config) {
711        if (!hasOwnProp(regexes, token)) {
712            return new RegExp(unescapeFormat(token));
713        }
714
715        return regexes[token](config._strict, config._locale);
716    }
717
718    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
719    function unescapeFormat(s) {
720        return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
721            return p1 || p2 || p3 || p4;
722        }));
723    }
724
725    function regexEscape(s) {
726        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
727    }
728
729    var tokens = {};
730
731    function addParseToken(token, callback) {
732        var i, func = callback;
733        if (typeof token === 'string') {
734            token = [token];
735        }
736        if (isNumber(callback)) {
737            func = function (input, array) {
738                array[callback] = toInt(input);
739            };
740        }
741        for (i = 0; i < token.length; i++) {
742            tokens[token[i]] = func;
743        }
744    }
745
746    function addWeekParseToken(token, callback) {
747        addParseToken(token, function (input, array, config, token) {
748            config._w = config._w || {};
749            callback(input, config._w, config, token);
750        });
751    }
752
753    function addTimeToArrayFromToken(token, input, config) {
754        if (input != null && hasOwnProp(tokens, token)) {
755            tokens[token](input, config._a, config, token);
756        }
757    }
758
759    var YEAR = 0;
760    var MONTH = 1;
761    var DATE = 2;
762    var HOUR = 3;
763    var MINUTE = 4;
764    var SECOND = 5;
765    var MILLISECOND = 6;
766    var WEEK = 7;
767    var WEEKDAY = 8;
768
769    var indexOf;
770
771    if (Array.prototype.indexOf) {
772        indexOf = Array.prototype.indexOf;
773    } else {
774        indexOf = function (o) {
775            // I know
776            var i;
777            for (i = 0; i < this.length; ++i) {
778                if (this[i] === o) {
779                    return i;
780                }
781            }
782            return -1;
783        };
784    }
785
786    var indexOf$1 = indexOf;
787
788    function daysInMonth(year, month) {
789        return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
790    }
791
792    // FORMATTING
793
794    addFormatToken('M', ['MM', 2], 'Mo', function () {
795        return this.month() + 1;
796    });
vendor: 9,340 bytes, lines 797-1059
797
798    addFormatToken('MMM', 0, 0, function (format) {
799        return this.localeData().monthsShort(this, format);
800    });
801
802    addFormatToken('MMMM', 0, 0, function (format) {
803        return this.localeData().months(this, format);
804    });
805
806    // ALIASES
807
808    addUnitAlias('month', 'M');
809
810    // PRIORITY
811
812    addUnitPriority('month', 8);
813
814    // PARSING
815
816    addRegexToken('M', match1to2);
817    addRegexToken('MM', match1to2, match2);
818    addRegexToken('MMM', function (isStrict, locale) {
819        return locale.monthsShortRegex(isStrict);
820    });
821    addRegexToken('MMMM', function (isStrict, locale) {
822        return locale.monthsRegex(isStrict);
823    });
824
825    addParseToken(['M', 'MM'], function (input, array) {
826        array[MONTH] = toInt(input) - 1;
827    });
828
829    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
830        var month = config._locale.monthsParse(input, token, config._strict);
831        // if we didn't find a month name, mark the date as invalid.
832        if (month != null) {
833            array[MONTH] = month;
834        } else {
835            getParsingFlags(config).invalidMonth = input;
836        }
837    });
838
839    // LOCALES
840
841    var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/;
842    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
843    function localeMonths(m, format) {
844        if (!m) {
845            return this._months;
846        }
847        return isArray(this._months) ? this._months[m.month()] :
848            this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];
849    }
850
851    var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
852    function localeMonthsShort(m, format) {
853        if (!m) {
854            return this._monthsShort;
855        }
856        return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
857            this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
858    }
859
860    function handleStrictParse(monthName, format, strict) {
861        var i, ii, mom, llc = monthName.toLocaleLowerCase();
862        if (!this._monthsParse) {
863            // this is not used
864            this._monthsParse = [];
865            this._longMonthsParse = [];
866            this._shortMonthsParse = [];
867            for (i = 0; i < 12; ++i) {
868                mom = createUTC([2000, i]);
869                this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();
870                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
871            }
872        }
873
874        if (strict) {
875            if (format === 'MMM') {
876                ii = indexOf$1.call(this._shortMonthsParse, llc);
877                return ii !== -1 ? ii : null;
878            } else {
879                ii = indexOf$1.call(this._longMonthsParse, llc);
880                return ii !== -1 ? ii : null;
881            }
882        } else {
883            if (format === 'MMM') {
884                ii = indexOf$1.call(this._shortMonthsParse, llc);
885                if (ii !== -1) {
886                    return ii;
887                }
888                ii = indexOf$1.call(this._longMonthsParse, llc);
889                return ii !== -1 ? ii : null;
890            } else {
891                ii = indexOf$1.call(this._longMonthsParse, llc);
892                if (ii !== -1) {
893                    return ii;
894                }
895                ii = indexOf$1.call(this._shortMonthsParse, llc);
896                return ii !== -1 ? ii : null;
897            }
898        }
899    }
900
901    function localeMonthsParse(monthName, format, strict) {
902        var i, mom, regex;
903
904        if (this._monthsParseExact) {
905            return handleStrictParse.call(this, monthName, format, strict);
906        }
907
908        if (!this._monthsParse) {
909            this._monthsParse = [];
910            this._longMonthsParse = [];
911            this._shortMonthsParse = [];
912        }
913
914        // TODO: add sorting
915        // Sorting makes sure if one month (or abbr) is a prefix of another
916        // see sorting in computeMonthsParse
917        for (i = 0; i < 12; i++) {
918            // make the regex if we don't have it already
919            mom = createUTC([2000, i]);
920            if (strict && !this._longMonthsParse[i]) {
921                this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
922                this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
923            }
924            if (!strict && !this._monthsParse[i]) {
925                regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
926                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
927            }
928            // test the regex
929            if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
930                return i;
931            } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
932                return i;
933            } else if (!strict && this._monthsParse[i].test(monthName)) {
934                return i;
935            }
936        }
937    }
938
939    // MOMENTS
940
941    function setMonth(mom, value) {
942        var dayOfMonth;
943
944        if (!mom.isValid()) {
945            // No op
946            return mom;
947        }
948
949        if (typeof value === 'string') {
950            if (/^\d+$/.test(value)) {
951                value = toInt(value);
952            } else {
953                value = mom.localeData().monthsParse(value);
954                // TODO: Another silent failure?
955                if (!isNumber(value)) {
956                    return mom;
957                }
958            }
959        }
960
961        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
962        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
963        return mom;
964    }
965
966    function getSetMonth(value) {
967        if (value != null) {
968            setMonth(this, value);
969            hooks.updateOffset(this, true);
970            return this;
971        } else {
972            return get(this, 'Month');
973        }
974    }
975
976    function getDaysInMonth() {
977        return daysInMonth(this.year(), this.month());
978    }
979
980    var defaultMonthsShortRegex = matchWord;
981    function monthsShortRegex(isStrict) {
982        if (this._monthsParseExact) {
983            if (!hasOwnProp(this, '_monthsRegex')) {
984                computeMonthsParse.call(this);
985            }
986            if (isStrict) {
987                return this._monthsShortStrictRegex;
988            } else {
989                return this._monthsShortRegex;
990            }
991        } else {
992            if (!hasOwnProp(this, '_monthsShortRegex')) {
993                this._monthsShortRegex = defaultMonthsShortRegex;
994            }
995            return this._monthsShortStrictRegex && isStrict ?
996                this._monthsShortStrictRegex : this._monthsShortRegex;
997        }
998    }
999
1000    var defaultMonthsRegex = matchWord;
1001    function monthsRegex(isStrict) {
1002        if (this._monthsParseExact) {
1003            if (!hasOwnProp(this, '_monthsRegex')) {
1004                computeMonthsParse.call(this);
1005            }
1006            if (isStrict) {
1007                return this._monthsStrictRegex;
1008            } else {
1009                return this._monthsRegex;
1010            }
1011        } else {
1012            if (!hasOwnProp(this, '_monthsRegex')) {
1013                this._monthsRegex = defaultMonthsRegex;
1014            }
1015            return this._monthsStrictRegex && isStrict ?
1016                this._monthsStrictRegex : this._monthsRegex;
1017        }
1018    }
1019
1020    function computeMonthsParse() {
1021        function cmpLenRev(a, b) {
1022            return b.length - a.length;
1023        }
1024
1025        var shortPieces = [], longPieces = [], mixedPieces = [],
1026            i, mom;
1027        for (i = 0; i < 12; i++) {
1028            // make the regex if we don't have it already
1029            mom = createUTC([2000, i]);
1030            shortPieces.push(this.monthsShort(mom, ''));
1031            longPieces.push(this.months(mom, ''));
1032            mixedPieces.push(this.months(mom, ''));
1033            mixedPieces.push(this.monthsShort(mom, ''));
1034        }
1035        // Sorting makes sure if one month (or abbr) is a prefix of another it
1036        // will match the longer piece.
1037        shortPieces.sort(cmpLenRev);
1038        longPieces.sort(cmpLenRev);
1039        mixedPieces.sort(cmpLenRev);
1040        for (i = 0; i < 12; i++) {
1041            shortPieces[i] = regexEscape(shortPieces[i]);
1042            longPieces[i] = regexEscape(longPieces[i]);
1043        }
1044        for (i = 0; i < 24; i++) {
1045            mixedPieces[i] = regexEscape(mixedPieces[i]);
1046        }
1047
1048        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1049        this._monthsShortRegex = this._monthsRegex;
1050        this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
1051        this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
1052    }
1053
1054    // FORMATTING
1055
1056    addFormatToken('Y', 0, 0, function () {
1057        var y = this.year();
1058        return y <= 9999 ? '' + y : '+' + y;
1059    });
vendor: 5,072 bytes, lines 1060-1225
1060
1061    addFormatToken(0, ['YY', 2], 0, function () {
1062        return this.year() % 100;
1063    });
1064
1065    addFormatToken(0, ['YYYY', 4], 0, 'year');
1066    addFormatToken(0, ['YYYYY', 5], 0, 'year');
1067    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
1068
1069    // ALIASES
1070
1071    addUnitAlias('year', 'y');
1072
1073    // PRIORITIES
1074
1075    addUnitPriority('year', 1);
1076
1077    // PARSING
1078
1079    addRegexToken('Y', matchSigned);
1080    addRegexToken('YY', match1to2, match2);
1081    addRegexToken('YYYY', match1to4, match4);
1082    addRegexToken('YYYYY', match1to6, match6);
1083    addRegexToken('YYYYYY', match1to6, match6);
1084
1085    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
1086    addParseToken('YYYY', function (input, array) {
1087        array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
1088    });
1089    addParseToken('YY', function (input, array) {
1090        array[YEAR] = hooks.parseTwoDigitYear(input);
1091    });
1092    addParseToken('Y', function (input, array) {
1093        array[YEAR] = parseInt(input, 10);
1094    });
1095
1096    // HELPERS
1097
1098    function daysInYear(year) {
1099        return isLeapYear(year) ? 366 : 365;
1100    }
1101
1102    function isLeapYear(year) {
1103        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
1104    }
1105
1106    // HOOKS
1107
1108    hooks.parseTwoDigitYear = function (input) {
1109        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
1110    };
1111
1112    // MOMENTS
1113
1114    var getSetYear = makeGetSet('FullYear', true);
1115
1116    function getIsLeapYear() {
1117        return isLeapYear(this.year());
1118    }
1119
1120    function createDate(y, m, d, h, M, s, ms) {
1121        //can't just apply() to create a date:
1122        //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
1123        var date = new Date(y, m, d, h, M, s, ms);
1124
1125        //the date constructor remaps years 0-99 to 1900-1999
1126        if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {
1127            date.setFullYear(y);
1128        }
1129        return date;
1130    }
1131
1132    function createUTCDate(y) {
1133        var date = new Date(Date.UTC.apply(null, arguments));
1134
1135        //the Date.UTC function remaps years 0-99 to 1900-1999
1136        if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {
1137            date.setUTCFullYear(y);
1138        }
1139        return date;
1140    }
1141
1142    // start-of-first-week - start-of-year
1143    function firstWeekOffset(year, dow, doy) {
1144        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
1145            fwd = 7 + dow - doy,
1146            // first-week day local weekday -- which local weekday is fwd
1147            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
1148
1149        return -fwdlw + fwd - 1;
1150    }
1151
1152    //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
1153    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
1154        var localWeekday = (7 + weekday - dow) % 7,
1155            weekOffset = firstWeekOffset(year, dow, doy),
1156            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
1157            resYear, resDayOfYear;
1158
1159        if (dayOfYear <= 0) {
1160            resYear = year - 1;
1161            resDayOfYear = daysInYear(resYear) + dayOfYear;
1162        } else if (dayOfYear > daysInYear(year)) {
1163            resYear = year + 1;
1164            resDayOfYear = dayOfYear - daysInYear(year);
1165        } else {
1166            resYear = year;
1167            resDayOfYear = dayOfYear;
1168        }
1169
1170        return {
1171            year: resYear,
1172            dayOfYear: resDayOfYear
1173        };
1174    }
1175
1176    function weekOfYear(mom, dow, doy) {
1177        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
1178            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
1179            resWeek, resYear;
1180
1181        if (week < 1) {
1182            resYear = mom.year() - 1;
1183            resWeek = week + weeksInYear(resYear, dow, doy);
1184        } else if (week > weeksInYear(mom.year(), dow, doy)) {
1185            resWeek = week - weeksInYear(mom.year(), dow, doy);
1186            resYear = mom.year() + 1;
1187        } else {
1188            resYear = mom.year();
1189            resWeek = week;
1190        }
1191
1192        return {
1193            week: resWeek,
1194            year: resYear
1195        };
1196    }
1197
1198    function weeksInYear(year, dow, doy) {
1199        var weekOffset = firstWeekOffset(year, dow, doy),
1200            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
1201        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
1202    }
1203
1204    // FORMATTING
1205
1206    addFormatToken('w', ['ww', 2], 'wo', 'week');
1207    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
1208
1209    // ALIASES
1210
1211    addUnitAlias('week', 'w');
1212    addUnitAlias('isoWeek', 'W');
1213
1214    // PRIORITIES
1215
1216    addUnitPriority('week', 5);
1217    addUnitPriority('isoWeek', 5);
1218
1219    // PARSING
1220
1221    addRegexToken('w', match1to2);
1222    addRegexToken('ww', match1to2, match2);
1223    addRegexToken('W', match1to2);
1224    addRegexToken('WW', match1to2, match2);
1225
vendor: 2,247 bytes, lines 1226-1307
1226    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
1227        week[token.substr(0, 1)] = toInt(input);
1228    });
1229
1230    // HELPERS
1231
1232    // LOCALES
1233
1234    function localeWeek(mom) {
1235        return weekOfYear(mom, this._week.dow, this._week.doy).week;
1236    }
1237
1238    var defaultLocaleWeek = {
1239        dow: 0, // Sunday is the first day of the week.
1240        doy: 6  // The week that contains Jan 1st is the first week of the year.
1241    };
1242
1243    function localeFirstDayOfWeek() {
1244        return this._week.dow;
1245    }
1246
1247    function localeFirstDayOfYear() {
1248        return this._week.doy;
1249    }
1250
1251    // MOMENTS
1252
1253    function getSetWeek(input) {
1254        var week = this.localeData().week(this);
1255        return input == null ? week : this.add((input - week) * 7, 'd');
1256    }
1257
1258    function getSetISOWeek(input) {
1259        var week = weekOfYear(this, 1, 4).week;
1260        return input == null ? week : this.add((input - week) * 7, 'd');
1261    }
1262
1263    // FORMATTING
1264
1265    addFormatToken('d', 0, 'do', 'day');
1266
1267    addFormatToken('dd', 0, 0, function (format) {
1268        return this.localeData().weekdaysMin(this, format);
1269    });
1270
1271    addFormatToken('ddd', 0, 0, function (format) {
1272        return this.localeData().weekdaysShort(this, format);
1273    });
1274
1275    addFormatToken('dddd', 0, 0, function (format) {
1276        return this.localeData().weekdays(this, format);
1277    });
1278
1279    addFormatToken('e', 0, 0, 'weekday');
1280    addFormatToken('E', 0, 0, 'isoWeekday');
1281
1282    // ALIASES
1283
1284    addUnitAlias('day', 'd');
1285    addUnitAlias('weekday', 'e');
1286    addUnitAlias('isoWeekday', 'E');
1287
1288    // PRIORITY
1289    addUnitPriority('day', 11);
1290    addUnitPriority('weekday', 11);
1291    addUnitPriority('isoWeekday', 11);
1292
1293    // PARSING
1294
1295    addRegexToken('d', match1to2);
1296    addRegexToken('e', match1to2);
1297    addRegexToken('E', match1to2);
1298    addRegexToken('dd', function (isStrict, locale) {
1299        return locale.weekdaysMinRegex(isStrict);
1300    });
1301    addRegexToken('ddd', function (isStrict, locale) {
1302        return locale.weekdaysShortRegex(isStrict);
1303    });
1304    addRegexToken('dddd', function (isStrict, locale) {
1305        return locale.weekdaysRegex(isStrict);
1306    });
1307
vendor: 5,097 bytes, lines 1308-1450
1308    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
1309        var weekday = config._locale.weekdaysParse(input, token, config._strict);
1310        // if we didn't get a weekday name, mark the date as invalid
1311        if (weekday != null) {
1312            week.d = weekday;
1313        } else {
1314            getParsingFlags(config).invalidWeekday = input;
1315        }
1316    });
1317
1318    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
1319        week[token] = toInt(input);
1320    });
1321
1322    // HELPERS
1323
1324    function parseWeekday(input, locale) {
1325        if (typeof input !== 'string') {
1326            return input;
1327        }
1328
1329        if (!isNaN(input)) {
1330            return parseInt(input, 10);
1331        }
1332
1333        input = locale.weekdaysParse(input);
1334        if (typeof input === 'number') {
1335            return input;
1336        }
1337
1338        return null;
1339    }
1340
1341    function parseIsoWeekday(input, locale) {
1342        if (typeof input === 'string') {
1343            return locale.weekdaysParse(input) % 7 || 7;
1344        }
1345        return isNaN(input) ? null : input;
1346    }
1347
1348    // LOCALES
1349
1350    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
1351    function localeWeekdays(m, format) {
1352        if (!m) {
1353            return this._weekdays;
1354        }
1355        return isArray(this._weekdays) ? this._weekdays[m.day()] :
1356            this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];
1357    }
1358
1359    var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
1360    function localeWeekdaysShort(m) {
1361        return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;
1362    }
1363
1364    var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
1365    function localeWeekdaysMin(m) {
1366        return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;
1367    }
1368
1369    function handleStrictParse$1(weekdayName, format, strict) {
1370        var i, ii, mom, llc = weekdayName.toLocaleLowerCase();
1371        if (!this._weekdaysParse) {
1372            this._weekdaysParse = [];
1373            this._shortWeekdaysParse = [];
1374            this._minWeekdaysParse = [];
1375
1376            for (i = 0; i < 7; ++i) {
1377                mom = createUTC([2000, 1]).day(i);
1378                this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();
1379                this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();
1380                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
1381            }
1382        }
1383
1384        if (strict) {
1385            if (format === 'dddd') {
1386                ii = indexOf$1.call(this._weekdaysParse, llc);
1387                return ii !== -1 ? ii : null;
1388            } else if (format === 'ddd') {
1389                ii = indexOf$1.call(this._shortWeekdaysParse, llc);
1390                return ii !== -1 ? ii : null;
1391            } else {
1392                ii = indexOf$1.call(this._minWeekdaysParse, llc);
1393                return ii !== -1 ? ii : null;
1394            }
1395        } else {
1396            if (format === 'dddd') {
1397                ii = indexOf$1.call(this._weekdaysParse, llc);
1398                if (ii !== -1) {
1399                    return ii;
1400                }
1401                ii = indexOf$1.call(this._shortWeekdaysParse, llc);
1402                if (ii !== -1) {
1403                    return ii;
1404                }
1405                ii = indexOf$1.call(this._minWeekdaysParse, llc);
1406                return ii !== -1 ? ii : null;
1407            } else if (format === 'ddd') {
1408                ii = indexOf$1.call(this._shortWeekdaysParse, llc);
1409                if (ii !== -1) {
1410                    return ii;
1411                }
1412                ii = indexOf$1.call(this._weekdaysParse, llc);
1413                if (ii !== -1) {
1414                    return ii;
1415                }
1416                ii = indexOf$1.call(this._minWeekdaysParse, llc);
1417                return ii !== -1 ? ii : null;
1418            } else {
1419                ii = indexOf$1.call(this._minWeekdaysParse, llc);
1420                if (ii !== -1) {
1421                    return ii;
1422                }
1423                ii = indexOf$1.call(this._weekdaysParse, llc);
1424                if (ii !== -1) {
1425                    return ii;
1426                }
1427                ii = indexOf$1.call(this._shortWeekdaysParse, llc);
1428                return ii !== -1 ? ii : null;
1429            }
1430        }
1431    }
1432
1433    function localeWeekdaysParse(weekdayName, format, strict) {
1434        var i, mom, regex;
1435
1436        if (this._weekdaysParseExact) {
1437            return handleStrictParse$1.call(this, weekdayName, format, strict);
1438        }
1439
1440        if (!this._weekdaysParse) {
1441            this._weekdaysParse = [];
1442            this._minWeekdaysParse = [];
1443            this._shortWeekdaysParse = [];
1444            this._fullWeekdaysParse = [];
1445        }
1446
1447        for (i = 0; i < 7; i++) {
1448            // make the regex if we don't have it already
1449
1450            mom = createUTC([2000, 1]).day(i);
vendor: 9,261 bytes, lines 1451-1703
1451            if (strict && !this._fullWeekdaysParse[i]) {
1452                this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i');
1453                this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i');
1454                this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i');
1455            }
1456            if (!this._weekdaysParse[i]) {
1457                regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
1458                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
1459            }
1460            // test the regex
1461            if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
1462                return i;
1463            } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
1464                return i;
1465            } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
1466                return i;
1467            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
1468                return i;
1469            }
1470        }
1471    }
1472
1473    // MOMENTS
1474
1475    function getSetDayOfWeek(input) {
1476        if (!this.isValid()) {
1477            return input != null ? this : NaN;
1478        }
1479        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
1480        if (input != null) {
1481            input = parseWeekday(input, this.localeData());
1482            return this.add(input - day, 'd');
1483        } else {
1484            return day;
1485        }
1486    }
1487
1488    function getSetLocaleDayOfWeek(input) {
1489        if (!this.isValid()) {
1490            return input != null ? this : NaN;
1491        }
1492        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
1493        return input == null ? weekday : this.add(input - weekday, 'd');
1494    }
1495
1496    function getSetISODayOfWeek(input) {
1497        if (!this.isValid()) {
1498            return input != null ? this : NaN;
1499        }
1500
1501        // behaves the same as moment#day except
1502        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
1503        // as a setter, sunday should belong to the previous week.
1504
1505        if (input != null) {
1506            var weekday = parseIsoWeekday(input, this.localeData());
1507            return this.day(this.day() % 7 ? weekday : weekday - 7);
1508        } else {
1509            return this.day() || 7;
1510        }
1511    }
1512
1513    var defaultWeekdaysRegex = matchWord;
1514    function weekdaysRegex(isStrict) {
1515        if (this._weekdaysParseExact) {
1516            if (!hasOwnProp(this, '_weekdaysRegex')) {
1517                computeWeekdaysParse.call(this);
1518            }
1519            if (isStrict) {
1520                return this._weekdaysStrictRegex;
1521            } else {
1522                return this._weekdaysRegex;
1523            }
1524        } else {
1525            if (!hasOwnProp(this, '_weekdaysRegex')) {
1526                this._weekdaysRegex = defaultWeekdaysRegex;
1527            }
1528            return this._weekdaysStrictRegex && isStrict ?
1529                this._weekdaysStrictRegex : this._weekdaysRegex;
1530        }
1531    }
1532
1533    var defaultWeekdaysShortRegex = matchWord;
1534    function weekdaysShortRegex(isStrict) {
1535        if (this._weekdaysParseExact) {
1536            if (!hasOwnProp(this, '_weekdaysRegex')) {
1537                computeWeekdaysParse.call(this);
1538            }
1539            if (isStrict) {
1540                return this._weekdaysShortStrictRegex;
1541            } else {
1542                return this._weekdaysShortRegex;
1543            }
1544        } else {
1545            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
1546                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
1547            }
1548            return this._weekdaysShortStrictRegex && isStrict ?
1549                this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
1550        }
1551    }
1552
1553    var defaultWeekdaysMinRegex = matchWord;
1554    function weekdaysMinRegex(isStrict) {
1555        if (this._weekdaysParseExact) {
1556            if (!hasOwnProp(this, '_weekdaysRegex')) {
1557                computeWeekdaysParse.call(this);
1558            }
1559            if (isStrict) {
1560                return this._weekdaysMinStrictRegex;
1561            } else {
1562                return this._weekdaysMinRegex;
1563            }
1564        } else {
1565            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
1566                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
1567            }
1568            return this._weekdaysMinStrictRegex && isStrict ?
1569                this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
1570        }
1571    }
1572
1573
1574    function computeWeekdaysParse() {
1575        function cmpLenRev(a, b) {
1576            return b.length - a.length;
1577        }
1578
1579        var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],
1580            i, mom, minp, shortp, longp;
1581        for (i = 0; i < 7; i++) {
1582            // make the regex if we don't have it already
1583            mom = createUTC([2000, 1]).day(i);
1584            minp = this.weekdaysMin(mom, '');
1585            shortp = this.weekdaysShort(mom, '');
1586            longp = this.weekdays(mom, '');
1587            minPieces.push(minp);
1588            shortPieces.push(shortp);
1589            longPieces.push(longp);
1590            mixedPieces.push(minp);
1591            mixedPieces.push(shortp);
1592            mixedPieces.push(longp);
1593        }
1594        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
1595        // will match the longer piece.
1596        minPieces.sort(cmpLenRev);
1597        shortPieces.sort(cmpLenRev);
1598        longPieces.sort(cmpLenRev);
1599        mixedPieces.sort(cmpLenRev);
1600        for (i = 0; i < 7; i++) {
1601            shortPieces[i] = regexEscape(shortPieces[i]);
1602            longPieces[i] = regexEscape(longPieces[i]);
1603            mixedPieces[i] = regexEscape(mixedPieces[i]);
1604        }
1605
1606        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1607        this._weekdaysShortRegex = this._weekdaysRegex;
1608        this._weekdaysMinRegex = this._weekdaysRegex;
1609
1610        this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
1611        this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
1612        this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');
1613    }
1614
1615    // FORMATTING
1616
1617    function hFormat() {
1618        return this.hours() % 12 || 12;
1619    }
1620
1621    function kFormat() {
1622        return this.hours() || 24;
1623    }
1624
1625    addFormatToken('H', ['HH', 2], 0, 'hour');
1626    addFormatToken('h', ['hh', 2], 0, hFormat);
1627    addFormatToken('k', ['kk', 2], 0, kFormat);
1628
1629    addFormatToken('hmm', 0, 0, function () {
1630        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
1631    });
1632
1633    addFormatToken('hmmss', 0, 0, function () {
1634        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +
1635            zeroFill(this.seconds(), 2);
1636    });
1637
1638    addFormatToken('Hmm', 0, 0, function () {
1639        return '' + this.hours() + zeroFill(this.minutes(), 2);
1640    });
1641
1642    addFormatToken('Hmmss', 0, 0, function () {
1643        return '' + this.hours() + zeroFill(this.minutes(), 2) +
1644            zeroFill(this.seconds(), 2);
1645    });
1646
1647    function meridiem(token, lowercase) {
1648        addFormatToken(token, 0, 0, function () {
1649            return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
1650        });
1651    }
1652
1653    meridiem('a', true);
1654    meridiem('A', false);
1655
1656    // ALIASES
1657
1658    addUnitAlias('hour', 'h');
1659
1660    // PRIORITY
1661    addUnitPriority('hour', 13);
1662
1663    // PARSING
1664
1665    function matchMeridiem(isStrict, locale) {
1666        return locale._meridiemParse;
1667    }
1668
1669    addRegexToken('a', matchMeridiem);
1670    addRegexToken('A', matchMeridiem);
1671    addRegexToken('H', match1to2);
1672    addRegexToken('h', match1to2);
1673    addRegexToken('HH', match1to2, match2);
1674    addRegexToken('hh', match1to2, match2);
1675
1676    addRegexToken('hmm', match3to4);
1677    addRegexToken('hmmss', match5to6);
1678    addRegexToken('Hmm', match3to4);
1679    addRegexToken('Hmmss', match5to6);
1680
1681    addParseToken(['H', 'HH'], HOUR);
1682    addParseToken(['a', 'A'], function (input, array, config) {
1683        config._isPm = config._locale.isPM(input);
1684        config._meridiem = input;
1685    });
1686    addParseToken(['h', 'hh'], function (input, array, config) {
1687        array[HOUR] = toInt(input);
1688        getParsingFlags(config).bigHour = true;
1689    });
1690    addParseToken('hmm', function (input, array, config) {
1691        var pos = input.length - 2;
1692        array[HOUR] = toInt(input.substr(0, pos));
1693        array[MINUTE] = toInt(input.substr(pos));
1694        getParsingFlags(config).bigHour = true;
1695    });
1696    addParseToken('hmmss', function (input, array, config) {
1697        var pos1 = input.length - 4;
1698        var pos2 = input.length - 2;
1699        array[HOUR] = toInt(input.substr(0, pos1));
1700        array[MINUTE] = toInt(input.substr(pos1, 2));
1701        array[SECOND] = toInt(input.substr(pos2));
1702        getParsingFlags(config).bigHour = true;
1703    });
vendor: 15,824 bytes, lines 1704-2145
1704    addParseToken('Hmm', function (input, array, config) {
1705        var pos = input.length - 2;
1706        array[HOUR] = toInt(input.substr(0, pos));
1707        array[MINUTE] = toInt(input.substr(pos));
1708    });
1709    addParseToken('Hmmss', function (input, array, config) {
1710        var pos1 = input.length - 4;
1711        var pos2 = input.length - 2;
1712        array[HOUR] = toInt(input.substr(0, pos1));
1713        array[MINUTE] = toInt(input.substr(pos1, 2));
1714        array[SECOND] = toInt(input.substr(pos2));
1715    });
1716
1717    // LOCALES
1718
1719    function localeIsPM(input) {
1720        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
1721        // Using charAt should be more compatible.
1722        return ((input + '').toLowerCase().charAt(0) === 'p');
1723    }
1724
1725    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
1726    function localeMeridiem(hours, minutes, isLower) {
1727        if (hours > 11) {
1728            return isLower ? 'pm' : 'PM';
1729        } else {
1730            return isLower ? 'am' : 'AM';
1731        }
1732    }
1733
1734
1735    // MOMENTS
1736
1737    // Setting the hour should keep the time, because the user explicitly
1738    // specified which hour he wants. So trying to maintain the same hour (in
1739    // a new timezone) makes sense. Adding/subtracting hours does not follow
1740    // this rule.
1741    var getSetHour = makeGetSet('Hours', true);
1742
1743    // months
1744    // week
1745    // weekdays
1746    // meridiem
1747    var baseConfig = {
1748        calendar: defaultCalendar,
1749        longDateFormat: defaultLongDateFormat,
1750        invalidDate: defaultInvalidDate,
1751        ordinal: defaultOrdinal,
1752        ordinalParse: defaultOrdinalParse,
1753        relativeTime: defaultRelativeTime,
1754
1755        months: defaultLocaleMonths,
1756        monthsShort: defaultLocaleMonthsShort,
1757
1758        week: defaultLocaleWeek,
1759
1760        weekdays: defaultLocaleWeekdays,
1761        weekdaysMin: defaultLocaleWeekdaysMin,
1762        weekdaysShort: defaultLocaleWeekdaysShort,
1763
1764        meridiemParse: defaultLocaleMeridiemParse
1765    };
1766
1767    // internal storage for locale config files
1768    var locales = {};
1769    var localeFamilies = {};
1770    var globalLocale;
1771
1772    function normalizeLocale(key) {
1773        return key ? key.toLowerCase().replace('_', '-') : key;
1774    }
1775
1776    // pick the locale from the array
1777    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
1778    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
1779    function chooseLocale(names) {
1780        var i = 0, j, next, locale, split;
1781
1782        while (i < names.length) {
1783            split = normalizeLocale(names[i]).split('-');
1784            j = split.length;
1785            next = normalizeLocale(names[i + 1]);
1786            next = next ? next.split('-') : null;
1787            while (j > 0) {
1788                locale = loadLocale(split.slice(0, j).join('-'));
1789                if (locale) {
1790                    return locale;
1791                }
1792                if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
1793                    //the next array item is better than a shallower substring of this one
1794                    break;
1795                }
1796                j--;
1797            }
1798            i++;
1799        }
1800        return null;
1801    }
1802
1803    function loadLocale(name) {
1804        var oldLocale = null;
1805        // TODO: Find a better way to register and load all the locales in Node
1806        if (!locales[name] && (typeof module !== 'undefined') &&
1807                module && module.exports) {
1808            try {
1809                oldLocale = globalLocale._abbr;
1810                require('./locale/' + name);
1811                // because defineLocale currently also sets the global locale, we
1812                // want to undo that for lazy loaded locales
1813                getSetGlobalLocale(oldLocale);
1814            } catch (e) { }
1815        }
1816        return locales[name];
1817    }
1818
1819    // This function will load locale and then set the global locale.  If
1820    // no arguments are passed in, it will simply return the current global
1821    // locale key.
1822    function getSetGlobalLocale(key, values) {
1823        var data;
1824        if (key) {
1825            if (isUndefined(values)) {
1826                data = getLocale(key);
1827            }
1828            else {
1829                data = defineLocale(key, values);
1830            }
1831
1832            if (data) {
1833                // moment.duration._locale = moment._locale = data;
1834                globalLocale = data;
1835            }
1836        }
1837
1838        return globalLocale._abbr;
1839    }
1840
1841    function defineLocale(name, config) {
1842        if (config !== null) {
1843            var parentConfig = baseConfig;
1844            config.abbr = name;
1845            if (locales[name] != null) {
1846                deprecateSimple('defineLocaleOverride',
1847                        'use moment.updateLocale(localeName, config) to change ' +
1848                        'an existing locale. moment.defineLocale(localeName, ' +
1849                        'config) should only be used for creating a new locale ' +
1850                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');
1851                parentConfig = locales[name]._config;
1852            } else if (config.parentLocale != null) {
1853                if (locales[config.parentLocale] != null) {
1854                    parentConfig = locales[config.parentLocale]._config;
1855                } else {
1856                    if (!localeFamilies[config.parentLocale]) {
1857                        localeFamilies[config.parentLocale] = [];
1858                    }
1859                    localeFamilies[config.parentLocale].push({
1860                        name: name,
1861                        config: config
1862                    });
1863                    return null;
1864                }
1865            }
1866            locales[name] = new Locale(mergeConfigs(parentConfig, config));
1867
1868            if (localeFamilies[name]) {
1869                localeFamilies[name].forEach(function (x) {
1870                    defineLocale(x.name, x.config);
1871                });
1872            }
1873
1874            // backwards compat for now: also set the locale
1875            // make sure we set the locale AFTER all child locales have been
1876            // created, so we won't end up with the child locale set.
1877            getSetGlobalLocale(name);
1878
1879
1880            return locales[name];
1881        } else {
1882            // useful for testing
1883            delete locales[name];
1884            return null;
1885        }
1886    }
1887
1888    function updateLocale(name, config) {
1889        if (config != null) {
1890            var locale, parentConfig = baseConfig;
1891            // MERGE
1892            if (locales[name] != null) {
1893                parentConfig = locales[name]._config;
1894            }
1895            config = mergeConfigs(parentConfig, config);
1896            locale = new Locale(config);
1897            locale.parentLocale = locales[name];
1898            locales[name] = locale;
1899
1900            // backwards compat for now: also set the locale
1901            getSetGlobalLocale(name);
1902        } else {
1903            // pass null for config to unupdate, useful for tests
1904            if (locales[name] != null) {
1905                if (locales[name].parentLocale != null) {
1906                    locales[name] = locales[name].parentLocale;
1907                } else if (locales[name] != null) {
1908                    delete locales[name];
1909                }
1910            }
1911        }
1912        return locales[name];
1913    }
1914
1915    // returns locale data
1916    function getLocale(key) {
1917        var locale;
1918
1919        if (key && key._locale && key._locale._abbr) {
1920            key = key._locale._abbr;
1921        }
1922
1923        if (!key) {
1924            return globalLocale;
1925        }
1926
1927        if (!isArray(key)) {
1928            //short-circuit everything else
1929            locale = loadLocale(key);
1930            if (locale) {
1931                return locale;
1932            }
1933            key = [key];
1934        }
1935
1936        return chooseLocale(key);
1937    }
1938
1939    function listLocales() {
1940        return keys$1(locales);
1941    }
1942
1943    function checkOverflow(m) {
1944        var overflow;
1945        var a = m._a;
1946
1947        if (a && getParsingFlags(m).overflow === -2) {
1948            overflow =
1949                a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :
1950                a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
1951                a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
1952                a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :
1953                a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :
1954                a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
1955                -1;
1956
1957            if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
1958                overflow = DATE;
1959            }
1960            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
1961                overflow = WEEK;
1962            }
1963            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
1964                overflow = WEEKDAY;
1965            }
1966
1967            getParsingFlags(m).overflow = overflow;
1968        }
1969
1970        return m;
1971    }
1972
1973    // iso 8601 regex
1974    // 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)
1975    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)?)?$/;
1976    var 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)?)?$/;
1977
1978    var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/;
1979
1980    var isoDates = [
1981        ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
1982        ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
1983        ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
1984        ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
1985        ['YYYY-DDD', /\d{4}-\d{3}/],
1986        ['YYYY-MM', /\d{4}-\d\d/, false],
1987        ['YYYYYYMMDD', /[+-]\d{10}/],
1988        ['YYYYMMDD', /\d{8}/],
1989        // YYYYMM is NOT allowed by the standard
1990        ['GGGG[W]WWE', /\d{4}W\d{3}/],
1991        ['GGGG[W]WW', /\d{4}W\d{2}/, false],
1992        ['YYYYDDD', /\d{7}/]
1993    ];
1994
1995    // iso time formats and regexes
1996    var isoTimes = [
1997        ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
1998        ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
1999        ['HH:mm:ss', /\d\d:\d\d:\d\d/],
2000        ['HH:mm', /\d\d:\d\d/],
2001        ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
2002        ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
2003        ['HHmmss', /\d\d\d\d\d\d/],
2004        ['HHmm', /\d\d\d\d/],
2005        ['HH', /\d\d/]
2006    ];
2007
2008    var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
2009
2010    // date from iso format
2011    function configFromISO(config) {
2012        var i, l,
2013            string = config._i,
2014            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
2015            allowTime, dateFormat, timeFormat, tzFormat;
2016
2017        if (match) {
2018            getParsingFlags(config).iso = true;
2019
2020            for (i = 0, l = isoDates.length; i < l; i++) {
2021                if (isoDates[i][1].exec(match[1])) {
2022                    dateFormat = isoDates[i][0];
2023                    allowTime = isoDates[i][2] !== false;
2024                    break;
2025                }
2026            }
2027            if (dateFormat == null) {
2028                config._isValid = false;
2029                return;
2030            }
2031            if (match[3]) {
2032                for (i = 0, l = isoTimes.length; i < l; i++) {
2033                    if (isoTimes[i][1].exec(match[3])) {
2034                        // match[2] should be 'T' or space
2035                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
2036                        break;
2037                    }
2038                }
2039                if (timeFormat == null) {
2040                    config._isValid = false;
2041                    return;
2042                }
2043            }
2044            if (!allowTime && timeFormat != null) {
2045                config._isValid = false;
2046                return;
2047            }
2048            if (match[4]) {
2049                if (tzRegex.exec(match[4])) {
2050                    tzFormat = 'Z';
2051                } else {
2052                    config._isValid = false;
2053                    return;
2054                }
2055            }
2056            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
2057            configFromStringAndFormat(config);
2058        } else {
2059            config._isValid = false;
2060        }
2061    }
2062
2063    // date from iso format or fallback
2064    function configFromString(config) {
2065        var matched = aspNetJsonRegex.exec(config._i);
2066
2067        if (matched !== null) {
2068            config._d = new Date(+matched[1]);
2069            return;
2070        }
2071
2072        configFromISO(config);
2073        if (config._isValid === false) {
2074            delete config._isValid;
2075            hooks.createFromInputFallback(config);
2076        }
2077    }
2078
2079    hooks.createFromInputFallback = deprecate(
2080        'value provided is not in a recognized ISO format. moment construction falls back to js Date(), ' +
2081        'which is not reliable across all browsers and versions. Non ISO date formats are ' +
2082        'discouraged and will be removed in an upcoming major release. Please refer to ' +
2083        'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
2084        function (config) {
2085            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
2086        }
2087    );
2088
2089    // Pick the first defined of two or three arguments.
2090    function defaults(a, b, c) {
2091        if (a != null) {
2092            return a;
2093        }
2094        if (b != null) {
2095            return b;
2096        }
2097        return c;
2098    }
2099
2100    function currentDateArray(config) {
2101        // hooks is actually the exported moment object
2102        var nowValue = new Date(hooks.now());
2103        if (config._useUTC) {
2104            return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
2105        }
2106        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
2107    }
2108
2109    // convert an array to a date.
2110    // the array should mirror the parameters below
2111    // note: all values past the year are optional and will default to the lowest possible value.
2112    // [year, month, day , hour, minute, second, millisecond]
2113    function configFromArray(config) {
2114        var i, date, input = [], currentDate, yearToUse;
2115
2116        if (config._d) {
2117            return;
2118        }
2119
2120        currentDate = currentDateArray(config);
2121
2122        //compute day of the year from weeks and weekdays
2123        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
2124            dayOfYearFromWeekInfo(config);
2125        }
2126
2127        //if the day of the year is set, figure out what it is
2128        if (config._dayOfYear) {
2129            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
2130
2131            if (config._dayOfYear > daysInYear(yearToUse)) {
2132                getParsingFlags(config)._overflowDayOfYear = true;
2133            }
2134
2135            date = createUTCDate(yearToUse, 0, config._dayOfYear);
2136            config._a[MONTH] = date.getUTCMonth();
2137            config._a[DATE] = date.getUTCDate();
2138        }
2139
2140        // Default to current date.
2141        // * if no year, month, day of month are given, default to today
2142        // * if day of month is given, default month and year
2143        // * if month is given, default only year
2144        // * if year is given, don't default anything
2145        for (i = 0; i < 3 && config._a[i] == null; ++i) {
vendor: 4,563 bytes, lines 2146-2263
2146            config._a[i] = input[i] = currentDate[i];
2147        }
2148
2149        // Zero out whatever was not defaulted, including time
2150        for (; i < 7; i++) {
2151            config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
2152        }
2153
2154        // Check for 24:00:00.000
2155        if (config._a[HOUR] === 24 &&
2156                config._a[MINUTE] === 0 &&
2157                config._a[SECOND] === 0 &&
2158                config._a[MILLISECOND] === 0) {
2159            config._nextDay = true;
2160            config._a[HOUR] = 0;
2161        }
2162
2163        config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
2164        // Apply timezone offset from input. The actual utcOffset can be changed
2165        // with parseZone.
2166        if (config._tzm != null) {
2167            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2168        }
2169
2170        if (config._nextDay) {
2171            config._a[HOUR] = 24;
2172        }
2173    }
2174
2175    function dayOfYearFromWeekInfo(config) {
2176        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
2177
2178        w = config._w;
2179        if (w.GG != null || w.W != null || w.E != null) {
2180            dow = 1;
2181            doy = 4;
2182
2183            // TODO: We need to take the current isoWeekYear, but that depends on
2184            // how we interpret now (local, utc, fixed offset). So create
2185            // a now version of current config (take local/utc/offset flags, and
2186            // create now).
2187            weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);
2188            week = defaults(w.W, 1);
2189            weekday = defaults(w.E, 1);
2190            if (weekday < 1 || weekday > 7) {
2191                weekdayOverflow = true;
2192            }
2193        } else {
2194            dow = config._locale._week.dow;
2195            doy = config._locale._week.doy;
2196
2197            var curWeek = weekOfYear(createLocal(), dow, doy);
2198
2199            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
2200
2201            // Default to current week.
2202            week = defaults(w.w, curWeek.week);
2203
2204            if (w.d != null) {
2205                // weekday -- low day numbers are considered next week
2206                weekday = w.d;
2207                if (weekday < 0 || weekday > 6) {
2208                    weekdayOverflow = true;
2209                }
2210            } else if (w.e != null) {
2211                // local weekday -- counting starts from begining of week
2212                weekday = w.e + dow;
2213                if (w.e < 0 || w.e > 6) {
2214                    weekdayOverflow = true;
2215                }
2216            } else {
2217                // default to begining of week
2218                weekday = dow;
2219            }
2220        }
2221        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
2222            getParsingFlags(config)._overflowWeeks = true;
2223        } else if (weekdayOverflow != null) {
2224            getParsingFlags(config)._overflowWeekday = true;
2225        } else {
2226            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
2227            config._a[YEAR] = temp.year;
2228            config._dayOfYear = temp.dayOfYear;
2229        }
2230    }
2231
2232    // constant that refers to the ISO standard
2233    hooks.ISO_8601 = function () { };
2234
2235    // date from string and format string
2236    function configFromStringAndFormat(config) {
2237        // TODO: Move this to another part of the creation flow to prevent circular deps
2238        if (config._f === hooks.ISO_8601) {
2239            configFromISO(config);
2240            return;
2241        }
2242
2243        config._a = [];
2244        getParsingFlags(config).empty = true;
2245
2246        // This array is used to make a Date, either with `new Date` or `Date.UTC`
2247        var string = '' + config._i,
2248            i, parsedInput, tokens, token, skipped,
2249            stringLength = string.length,
2250            totalParsedInputLength = 0;
2251
2252        tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
2253
2254        for (i = 0; i < tokens.length; i++) {
2255            token = tokens[i];
2256            parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
2257            // console.log('token', token, 'parsedInput', parsedInput,
2258            //         'regex', getParseRegexForToken(token, config));
2259            if (parsedInput) {
2260                skipped = string.substr(0, string.indexOf(parsedInput));
2261                if (skipped.length > 0) {
2262                    getParsingFlags(config).unusedInput.push(skipped);
2263                }
vendor: 4,651 bytes, lines 2264-2406
2264                string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
2265                totalParsedInputLength += parsedInput.length;
2266            }
2267            // don't parse if it's not a known token
2268            if (formatTokenFunctions[token]) {
2269                if (parsedInput) {
2270                    getParsingFlags(config).empty = false;
2271                }
2272                else {
2273                    getParsingFlags(config).unusedTokens.push(token);
2274                }
2275                addTimeToArrayFromToken(token, parsedInput, config);
2276            }
2277            else if (config._strict && !parsedInput) {
2278                getParsingFlags(config).unusedTokens.push(token);
2279            }
2280        }
2281
2282        // add remaining unparsed input length to the string
2283        getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
2284        if (string.length > 0) {
2285            getParsingFlags(config).unusedInput.push(string);
2286        }
2287
2288        // clear _12h flag if hour is <= 12
2289        if (config._a[HOUR] <= 12 &&
2290            getParsingFlags(config).bigHour === true &&
2291            config._a[HOUR] > 0) {
2292            getParsingFlags(config).bigHour = undefined;
2293        }
2294
2295        getParsingFlags(config).parsedDateParts = config._a.slice(0);
2296        getParsingFlags(config).meridiem = config._meridiem;
2297        // handle meridiem
2298        config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
2299
2300        configFromArray(config);
2301        checkOverflow(config);
2302    }
2303
2304
2305    function meridiemFixWrap(locale, hour, meridiem) {
2306        var isPm;
2307
2308        if (meridiem == null) {
2309            // nothing to do
2310            return hour;
2311        }
2312        if (locale.meridiemHour != null) {
2313            return locale.meridiemHour(hour, meridiem);
2314        } else if (locale.isPM != null) {
2315            // Fallback
2316            isPm = locale.isPM(meridiem);
2317            if (isPm && hour < 12) {
2318                hour += 12;
2319            }
2320            if (!isPm && hour === 12) {
2321                hour = 0;
2322            }
2323            return hour;
2324        } else {
2325            // this is not supposed to happen
2326            return hour;
2327        }
2328    }
2329
2330    // date from string and array of format strings
2331    function configFromStringAndArray(config) {
2332        var tempConfig,
2333            bestMoment,
2334
2335            scoreToBeat,
2336            i,
2337            currentScore;
2338
2339        if (config._f.length === 0) {
2340            getParsingFlags(config).invalidFormat = true;
2341            config._d = new Date(NaN);
2342            return;
2343        }
2344
2345        for (i = 0; i < config._f.length; i++) {
2346            currentScore = 0;
2347            tempConfig = copyConfig({}, config);
2348            if (config._useUTC != null) {
2349                tempConfig._useUTC = config._useUTC;
2350            }
2351            tempConfig._f = config._f[i];
2352            configFromStringAndFormat(tempConfig);
2353
2354            if (!isValid(tempConfig)) {
2355                continue;
2356            }
2357
2358            // if there is any input that was not parsed add a penalty for that format
2359            currentScore += getParsingFlags(tempConfig).charsLeftOver;
2360
2361            //or tokens
2362            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
2363
2364            getParsingFlags(tempConfig).score = currentScore;
2365
2366            if (scoreToBeat == null || currentScore < scoreToBeat) {
2367                scoreToBeat = currentScore;
2368                bestMoment = tempConfig;
2369            }
2370        }
2371
2372        extend(config, bestMoment || tempConfig);
2373    }
2374
2375    function configFromObject(config) {
2376        if (config._d) {
2377            return;
2378        }
2379
2380        var i = normalizeObjectUnits(config._i);
2381        config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {
2382            return obj && parseInt(obj, 10);
2383        });
2384
2385        configFromArray(config);
2386    }
2387
2388    function createFromConfig(config) {
2389        var res = new Moment(checkOverflow(prepareConfig(config)));
2390        if (res._nextDay) {
2391            // Adding is smart enough around DST
2392            res.add(1, 'd');
2393            res._nextDay = undefined;
2394        }
2395
2396        return res;
2397    }
2398
2399    function prepareConfig(config) {
2400        var input = config._i,
2401            format = config._f;
2402
2403        config._locale = config._locale || getLocale(config._l);
2404
2405        if (input === null || (format === undefined && input === '')) {
2406            return createInvalid({ nullInput: true });
vendor: 6,779 bytes, lines 2407-2617
2407        }
2408
2409        if (typeof input === 'string') {
2410            config._i = input = config._locale.preparse(input);
2411        }
2412
2413        if (isMoment(input)) {
2414            return new Moment(checkOverflow(input));
2415        } else if (isDate(input)) {
2416            config._d = input;
2417        } else if (isArray(format)) {
2418            configFromStringAndArray(config);
2419        } else if (format) {
2420            configFromStringAndFormat(config);
2421        } else {
2422            configFromInput(config);
2423        }
2424
2425        if (!isValid(config)) {
2426            config._d = null;
2427        }
2428
2429        return config;
2430    }
2431
2432    function configFromInput(config) {
2433        var input = config._i;
2434        if (input === undefined) {
2435            config._d = new Date(hooks.now());
2436        } else if (isDate(input)) {
2437            config._d = new Date(input.valueOf());
2438        } else if (typeof input === 'string') {
2439            configFromString(config);
2440        } else if (isArray(input)) {
2441            config._a = map(input.slice(0), function (obj) {
2442                return parseInt(obj, 10);
2443            });
2444            configFromArray(config);
2445        } else if (typeof (input) === 'object') {
2446            configFromObject(config);
2447        } else if (isNumber(input)) {
2448            // from milliseconds
2449            config._d = new Date(input);
2450        } else {
2451            hooks.createFromInputFallback(config);
2452        }
2453    }
2454
2455    function createLocalOrUTC(input, format, locale, strict, isUTC) {
2456        var c = {};
2457
2458        if (locale === true || locale === false) {
2459            strict = locale;
2460            locale = undefined;
2461        }
2462
2463        if ((isObject(input) && isObjectEmpty(input)) ||
2464                (isArray(input) && input.length === 0)) {
2465            input = undefined;
2466        }
2467        // object construction must be done this way.
2468        // https://github.com/moment/moment/issues/1423
2469        c._isAMomentObject = true;
2470        c._useUTC = c._isUTC = isUTC;
2471        c._l = locale;
2472        c._i = input;
2473        c._f = format;
2474        c._strict = strict;
2475
2476        return createFromConfig(c);
2477    }
2478
2479    function createLocal(input, format, locale, strict) {
2480        return createLocalOrUTC(input, format, locale, strict, false);
2481    }
2482
2483    var prototypeMin = deprecate(
2484        'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
2485        function () {
2486            var other = createLocal.apply(null, arguments);
2487            if (this.isValid() && other.isValid()) {
2488                return other < this ? this : other;
2489            } else {
2490                return createInvalid();
2491            }
2492        }
2493    );
2494
2495    var prototypeMax = deprecate(
2496        'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
2497        function () {
2498            var other = createLocal.apply(null, arguments);
2499            if (this.isValid() && other.isValid()) {
2500                return other > this ? this : other;
2501            } else {
2502                return createInvalid();
2503            }
2504        }
2505    );
2506
2507    // Pick a moment m from moments so that m[fn](other) is true for all
2508    // other. This relies on the function fn to be transitive.
2509    //
2510    // moments should either be an array of moment objects or an array, whose
2511    // first element is an array of moment objects.
2512    function pickBy(fn, moments) {
2513        var res, i;
2514        if (moments.length === 1 && isArray(moments[0])) {
2515            moments = moments[0];
2516        }
2517        if (!moments.length) {
2518            return createLocal();
2519        }
2520        res = moments[0];
2521        for (i = 1; i < moments.length; ++i) {
2522            if (!moments[i].isValid() || moments[i][fn](res)) {
2523                res = moments[i];
2524            }
2525        }
2526        return res;
2527    }
2528
2529    // TODO: Use [].sort instead?
2530    function min() {
2531        var args = [].slice.call(arguments, 0);
2532
2533        return pickBy('isBefore', args);
2534    }
2535
2536    function max() {
2537        var args = [].slice.call(arguments, 0);
2538
2539        return pickBy('isAfter', args);
2540    }
2541
2542    var now = function () {
2543        return Date.now ? Date.now() : +(new Date());
2544    };
2545
2546    function Duration(duration) {
2547        var normalizedInput = normalizeObjectUnits(duration),
2548            years = normalizedInput.year || 0,
2549            quarters = normalizedInput.quarter || 0,
2550            months = normalizedInput.month || 0,
2551            weeks = normalizedInput.week || 0,
2552            days = normalizedInput.day || 0,
2553            hours = normalizedInput.hour || 0,
2554            minutes = normalizedInput.minute || 0,
2555            seconds = normalizedInput.second || 0,
2556            milliseconds = normalizedInput.millisecond || 0;
2557
2558        // representation for dateAddRemove
2559        this._milliseconds = +milliseconds +
2560            seconds * 1e3 + // 1000
2561            minutes * 6e4 + // 1000 * 60
2562            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
2563        // Because of dateAddRemove treats 24 hours as different from a
2564        // day when working around DST, we need to store them separately
2565        this._days = +days +
2566            weeks * 7;
2567        // It is impossible translate months into days without knowing
2568        // which months you are are talking about, so we have to store
2569        // it separately.
2570        this._months = +months +
2571            quarters * 3 +
2572            years * 12;
2573
2574        this._data = {};
2575
2576        this._locale = getLocale();
2577
2578        this._bubble();
2579    }
2580
2581    function isDuration(obj) {
2582        return obj instanceof Duration;
2583    }
2584
2585    function absRound(number) {
2586        if (number < 0) {
2587            return Math.round(-1 * number) * -1;
2588        } else {
2589            return Math.round(number);
2590        }
2591    }
2592
2593    // FORMATTING
2594
2595    function offset(token, separator) {
2596        addFormatToken(token, 0, 0, function () {
2597            var offset = this.utcOffset();
2598            var sign = '+';
2599            if (offset < 0) {
2600                offset = -offset;
2601                sign = '-';
2602            }
2603            return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
2604        });
2605    }
2606
2607    offset('Z', ':');
2608    offset('ZZ', '');
2609
2610    // PARSING
2611
2612    addRegexToken('Z', matchShortOffset);
2613    addRegexToken('ZZ', matchShortOffset);
2614    addParseToken(['Z', 'ZZ'], function (input, array, config) {
2615        config._useUTC = true;
2616        config._tzm = offsetFromString(matchShortOffset, input);
2617    });
vendor: 12,857 bytes, lines 2618-2990
2618
2619    // HELPERS
2620
2621    // timezone chunker
2622    // '+10:00' > ['10',  '00']
2623    // '-1530'  > ['-15', '30']
2624    var chunkOffset = /([\+\-]|\d\d)/gi;
2625
2626    function offsetFromString(matcher, string) {
2627        var matches = (string || '').match(matcher);
2628
2629        if (matches === null) {
2630            return null;
2631        }
2632
2633        var chunk = matches[matches.length - 1] || [];
2634        var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
2635        var minutes = +(parts[1] * 60) + toInt(parts[2]);
2636
2637        return minutes === 0 ?
2638          0 :
2639          parts[0] === '+' ? minutes : -minutes;
2640    }
2641
2642    // Return a moment from input, that is local/utc/zone equivalent to model.
2643    function cloneWithOffset(input, model) {
2644        var res, diff;
2645        if (model._isUTC) {
2646            res = model.clone();
2647            diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();
2648            // Use low-level api, because this fn is low-level api.
2649            res._d.setTime(res._d.valueOf() + diff);
2650            hooks.updateOffset(res, false);
2651            return res;
2652        } else {
2653            return createLocal(input).local();
2654        }
2655    }
2656
2657    function getDateOffset(m) {
2658        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
2659        // https://github.com/moment/moment/pull/1871
2660        return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
2661    }
2662
2663    // HOOKS
2664
2665    // This function will be called whenever a moment is mutated.
2666    // It is intended to keep the offset in sync with the timezone.
2667    hooks.updateOffset = function () { };
2668
2669    // MOMENTS
2670
2671    // keepLocalTime = true means only change the timezone, without
2672    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
2673    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
2674    // +0200, so we adjust the time as needed, to be valid.
2675    //
2676    // Keeping the time actually adds/subtracts (one hour)
2677    // from the actual represented time. That is why we call updateOffset
2678    // a second time. In case it wants us to change the offset again
2679    // _changeInProgress == true case, then we have to adjust, because
2680    // there is no such time in the given timezone.
2681    function getSetOffset(input, keepLocalTime) {
2682        var offset = this._offset || 0,
2683            localAdjust;
2684        if (!this.isValid()) {
2685            return input != null ? this : NaN;
2686        }
2687        if (input != null) {
2688            if (typeof input === 'string') {
2689                input = offsetFromString(matchShortOffset, input);
2690                if (input === null) {
2691                    return this;
2692                }
2693            } else if (Math.abs(input) < 16) {
2694                input = input * 60;
2695            }
2696            if (!this._isUTC && keepLocalTime) {
2697                localAdjust = getDateOffset(this);
2698            }
2699            this._offset = input;
2700            this._isUTC = true;
2701            if (localAdjust != null) {
2702                this.add(localAdjust, 'm');
2703            }
2704            if (offset !== input) {
2705                if (!keepLocalTime || this._changeInProgress) {
2706                    addSubtract(this, createDuration(input - offset, 'm'), 1, false);
2707                } else if (!this._changeInProgress) {
2708                    this._changeInProgress = true;
2709                    hooks.updateOffset(this, true);
2710                    this._changeInProgress = null;
2711                }
2712            }
2713            return this;
2714        } else {
2715            return this._isUTC ? offset : getDateOffset(this);
2716        }
2717    }
2718
2719    function getSetZone(input, keepLocalTime) {
2720        if (input != null) {
2721            if (typeof input !== 'string') {
2722                input = -input;
2723            }
2724
2725            this.utcOffset(input, keepLocalTime);
2726
2727            return this;
2728        } else {
2729            return -this.utcOffset();
2730        }
2731    }
2732
2733    function setOffsetToUTC(keepLocalTime) {
2734        return this.utcOffset(0, keepLocalTime);
2735    }
2736
2737    function setOffsetToLocal(keepLocalTime) {
2738        if (this._isUTC) {
2739            this.utcOffset(0, keepLocalTime);
2740            this._isUTC = false;
2741
2742            if (keepLocalTime) {
2743                this.subtract(getDateOffset(this), 'm');
2744            }
2745        }
2746        return this;
2747    }
2748
2749    function setOffsetToParsedOffset() {
2750        if (this._tzm != null) {
2751            this.utcOffset(this._tzm);
2752        } else if (typeof this._i === 'string') {
2753            var tZone = offsetFromString(matchOffset, this._i);
2754            if (tZone != null) {
2755                this.utcOffset(tZone);
2756            }
2757            else {
2758                this.utcOffset(0, true);
2759            }
2760        }
2761        return this;
2762    }
2763
2764    function hasAlignedHourOffset(input) {
2765        if (!this.isValid()) {
2766            return false;
2767        }
2768        input = input ? createLocal(input).utcOffset() : 0;
2769
2770        return (this.utcOffset() - input) % 60 === 0;
2771    }
2772
2773    function isDaylightSavingTime() {
2774        return (
2775            this.utcOffset() > this.clone().month(0).utcOffset() ||
2776            this.utcOffset() > this.clone().month(5).utcOffset()
2777        );
2778    }
2779
2780    function isDaylightSavingTimeShifted() {
2781        if (!isUndefined(this._isDSTShifted)) {
2782            return this._isDSTShifted;
2783        }
2784
2785        var c = {};
2786
2787        copyConfig(c, this);
2788        c = prepareConfig(c);
2789
2790        if (c._a) {
2791            var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
2792            this._isDSTShifted = this.isValid() &&
2793                compareArrays(c._a, other.toArray()) > 0;
2794        } else {
2795            this._isDSTShifted = false;
2796        }
2797
2798        return this._isDSTShifted;
2799    }
2800
2801    function isLocal() {
2802        return this.isValid() ? !this._isUTC : false;
2803    }
2804
2805    function isUtcOffset() {
2806        return this.isValid() ? this._isUTC : false;
2807    }
2808
2809    function isUtc() {
2810        return this.isValid() ? this._isUTC && this._offset === 0 : false;
2811    }
2812
2813    // ASP.NET json date format regex
2814    var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/;
2815
2816    // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
2817    // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
2818    // and further modified to allow for strings containing both week and day
2819    var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;
2820
2821    function createDuration(input, key) {
2822        var duration = input,
2823            // matching against regexp is expensive, do it on demand
2824            match = null,
2825            sign,
2826            ret,
2827            diffRes;
2828
2829        if (isDuration(input)) {
2830            duration = {
2831                ms: input._milliseconds,
2832                d: input._days,
2833                M: input._months
2834            };
2835        } else if (isNumber(input)) {
2836            duration = {};
2837            if (key) {
2838                duration[key] = input;
2839            } else {
2840                duration.milliseconds = input;
2841            }
2842        } else if (!!(match = aspNetRegex.exec(input))) {
2843            sign = (match[1] === '-') ? -1 : 1;
2844            duration = {
2845                y: 0,
2846                d: toInt(match[DATE]) * sign,
2847                h: toInt(match[HOUR]) * sign,
2848                m: toInt(match[MINUTE]) * sign,
2849                s: toInt(match[SECOND]) * sign,
2850                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match
2851            };
2852        } else if (!!(match = isoRegex.exec(input))) {
2853            sign = (match[1] === '-') ? -1 : 1;
2854            duration = {
2855                y: parseIso(match[2], sign),
2856                M: parseIso(match[3], sign),
2857                w: parseIso(match[4], sign),
2858                d: parseIso(match[5], sign),
2859                h: parseIso(match[6], sign),
2860                m: parseIso(match[7], sign),
2861                s: parseIso(match[8], sign)
2862            };
2863        } else if (duration == null) {// checks for null or undefined
2864            duration = {};
2865        } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
2866            diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));
2867
2868            duration = {};
2869            duration.ms = diffRes.milliseconds;
2870            duration.M = diffRes.months;
2871        }
2872
2873        ret = new Duration(duration);
2874
2875        if (isDuration(input) && hasOwnProp(input, '_locale')) {
2876            ret._locale = input._locale;
2877        }
2878
2879        return ret;
2880    }
2881
2882    createDuration.fn = Duration.prototype;
2883
2884    function parseIso(inp, sign) {
2885        // We'd normally use ~~inp for this, but unfortunately it also
2886        // converts floats to ints.
2887        // inp may be undefined, so careful calling replace on it.
2888        var res = inp && parseFloat(inp.replace(',', '.'));
2889        // apply sign while we're at it
2890        return (isNaN(res) ? 0 : res) * sign;
2891    }
2892
2893    function positiveMomentsDifference(base, other) {
2894        var res = { milliseconds: 0, months: 0 };
2895
2896        res.months = other.month() - base.month() +
2897            (other.year() - base.year()) * 12;
2898        if (base.clone().add(res.months, 'M').isAfter(other)) {
2899            --res.months;
2900        }
2901
2902        res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
2903
2904        return res;
2905    }
2906
2907    function momentsDifference(base, other) {
2908        var res;
2909        if (!(base.isValid() && other.isValid())) {
2910            return { milliseconds: 0, months: 0 };
2911        }
2912
2913        other = cloneWithOffset(other, base);
2914        if (base.isBefore(other)) {
2915            res = positiveMomentsDifference(base, other);
2916        } else {
2917            res = positiveMomentsDifference(other, base);
2918            res.milliseconds = -res.milliseconds;
2919            res.months = -res.months;
2920        }
2921
2922        return res;
2923    }
2924
2925    // TODO: remove 'name' arg after deprecation is removed
2926    function createAdder(direction, name) {
2927        return function (val, period) {
2928            var dur, tmp;
2929            //invert the arguments, but complain about it
2930            if (period !== null && !isNaN(+period)) {
2931                deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +
2932                'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');
2933                tmp = val; val = period; period = tmp;
2934            }
2935
2936            val = typeof val === 'string' ? +val : val;
2937            dur = createDuration(val, period);
2938            addSubtract(this, dur, direction);
2939            return this;
2940        };
2941    }
2942
2943    function addSubtract(mom, duration, isAdding, updateOffset) {
2944        var milliseconds = duration._milliseconds,
2945            days = absRound(duration._days),
2946            months = absRound(duration._months);
2947
2948        if (!mom.isValid()) {
2949            // No op
2950            return;
2951        }
2952
2953        updateOffset = updateOffset == null ? true : updateOffset;
2954
2955        if (milliseconds) {
2956            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
2957        }
2958        if (days) {
2959            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
2960        }
2961        if (months) {
2962            setMonth(mom, get(mom, 'Month') + months * isAdding);
2963        }
2964        if (updateOffset) {
2965            hooks.updateOffset(mom, days || months);
2966        }
2967    }
2968
2969    var add = createAdder(1, 'add');
2970    var subtract = createAdder(-1, 'subtract');
2971
2972    function getCalendarFormat(myMoment, now) {
2973        var diff = myMoment.diff(now, 'days', true);
2974        return diff < -6 ? 'sameElse' :
2975                diff < -1 ? 'lastWeek' :
2976                diff < 0 ? 'lastDay' :
2977                diff < 1 ? 'sameDay' :
2978                diff < 2 ? 'nextDay' :
2979                diff < 7 ? 'nextWeek' : 'sameElse';
2980    }
2981
2982    function calendar$1(time, formats) {
2983        // We want to compare the start of today, vs this.
2984        // Getting start-of-today depends on whether we're local/utc/offset or not.
2985        var now = time || createLocal(),
2986            sod = cloneWithOffset(now, this).startOf('day'),
2987            format = hooks.calendarFormat(this, sod) || 'sameElse';
2988
2989        var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);
2990
vendor: 5,490 bytes, lines 2991-3140
2991        return this.format(output || this.localeData().calendar(format, this, createLocal(now)));
2992    }
2993
2994    function clone() {
2995        return new Moment(this);
2996    }
2997
2998    function isAfter(input, units) {
2999        var localInput = isMoment(input) ? input : createLocal(input);
3000        if (!(this.isValid() && localInput.isValid())) {
3001            return false;
3002        }
3003        units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
3004        if (units === 'millisecond') {
3005            return this.valueOf() > localInput.valueOf();
3006        } else {
3007            return localInput.valueOf() < this.clone().startOf(units).valueOf();
3008        }
3009    }
3010
3011    function isBefore(input, units) {
3012        var localInput = isMoment(input) ? input : createLocal(input);
3013        if (!(this.isValid() && localInput.isValid())) {
3014            return false;
3015        }
3016        units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
3017        if (units === 'millisecond') {
3018            return this.valueOf() < localInput.valueOf();
3019        } else {
3020            return this.clone().endOf(units).valueOf() < localInput.valueOf();
3021        }
3022    }
3023
3024    function isBetween(from, to, units, inclusivity) {
3025        inclusivity = inclusivity || '()';
3026        return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&
3027            (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));
3028    }
3029
3030    function isSame(input, units) {
3031        var localInput = isMoment(input) ? input : createLocal(input),
3032            inputMs;
3033        if (!(this.isValid() && localInput.isValid())) {
3034            return false;
3035        }
3036        units = normalizeUnits(units || 'millisecond');
3037        if (units === 'millisecond') {
3038            return this.valueOf() === localInput.valueOf();
3039        } else {
3040            inputMs = localInput.valueOf();
3041            return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
3042        }
3043    }
3044
3045    function isSameOrAfter(input, units) {
3046        return this.isSame(input, units) || this.isAfter(input, units);
3047    }
3048
3049    function isSameOrBefore(input, units) {
3050        return this.isSame(input, units) || this.isBefore(input, units);
3051    }
3052
3053    function diff(input, units, asFloat) {
3054        var that,
3055            zoneDelta,
3056            delta, output;
3057
3058        if (!this.isValid()) {
3059            return NaN;
3060        }
3061
3062        that = cloneWithOffset(input, this);
3063
3064        if (!that.isValid()) {
3065            return NaN;
3066        }
3067
3068        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
3069
3070        units = normalizeUnits(units);
3071
3072        if (units === 'year' || units === 'month' || units === 'quarter') {
3073            output = monthDiff(this, that);
3074            if (units === 'quarter') {
3075                output = output / 3;
3076            } else if (units === 'year') {
3077                output = output / 12;
3078            }
3079        } else {
3080            delta = this - that;
3081            output = units === 'second' ? delta / 1e3 : // 1000
3082                units === 'minute' ? delta / 6e4 : // 1000 * 60
3083                units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60
3084                units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
3085                units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
3086                delta;
3087        }
3088        return asFloat ? output : absFloor(output);
3089    }
3090
3091    function monthDiff(a, b) {
3092        // difference in months
3093        var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
3094            // b is in (anchor - 1 month, anchor + 1 month)
3095            anchor = a.clone().add(wholeMonthDiff, 'months'),
3096            anchor2, adjust;
3097
3098        if (b - anchor < 0) {
3099            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
3100            // linear across the month
3101            adjust = (b - anchor) / (anchor - anchor2);
3102        } else {
3103            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
3104            // linear across the month
3105            adjust = (b - anchor) / (anchor2 - anchor);
3106        }
3107
3108        //check for negative zero, return zero if negative zero
3109        return -(wholeMonthDiff + adjust) || 0;
3110    }
3111
3112    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
3113    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
3114
3115    function toString() {
3116        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
3117    }
3118
3119    function toISOString() {
3120        var m = this.clone().utc();
3121        if (0 < m.year() && m.year() <= 9999) {
3122            if (isFunction(Date.prototype.toISOString)) {
3123                // native implementation is ~50x faster, use it when we can
3124                return this.toDate().toISOString();
3125            } else {
3126                return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
3127            }
3128        } else {
3129            return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
3130        }
3131    }
3132
3133    /**
3134     * Return a human readable representation of a moment that can
3135     * also be evaluated to get a new moment which is the same
3136     *
3137     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
3138     */
3139    function inspect() {
3140        if (!this.isValid()) {
vendor: 5,507 bytes, lines 3141-3325
3141            return 'moment.invalid(/* ' + this._i + ' */)';
3142        }
3143        var func = 'moment';
3144        var zone = '';
3145        if (!this.isLocal()) {
3146            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
3147            zone = 'Z';
3148        }
3149        var prefix = '[' + func + '("]';
3150        var year = (0 < this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';
3151        var datetime = '-MM-DD[T]HH:mm:ss.SSS';
3152        var suffix = zone + '[")]';
3153
3154        return this.format(prefix + year + datetime + suffix);
3155    }
3156
3157    function format(inputString) {
3158        if (!inputString) {
3159            inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;
3160        }
3161        var output = formatMoment(this, inputString);
3162        return this.localeData().postformat(output);
3163    }
3164
3165    function from(time, withoutSuffix) {
3166        if (this.isValid() &&
3167                ((isMoment(time) && time.isValid()) ||
3168                 createLocal(time).isValid())) {
3169            return createDuration({ to: this, from: time }).locale(this.locale()).humanize(!withoutSuffix);
3170        } else {
3171            return this.localeData().invalidDate();
3172        }
3173    }
3174
3175    function fromNow(withoutSuffix) {
3176        return this.from(createLocal(), withoutSuffix);
3177    }
3178
3179    function to(time, withoutSuffix) {
3180        if (this.isValid() &&
3181                ((isMoment(time) && time.isValid()) ||
3182                 createLocal(time).isValid())) {
3183            return createDuration({ from: this, to: time }).locale(this.locale()).humanize(!withoutSuffix);
3184        } else {
3185            return this.localeData().invalidDate();
3186        }
3187    }
3188
3189    function toNow(withoutSuffix) {
3190        return this.to(createLocal(), withoutSuffix);
3191    }
3192
3193    // If passed a locale key, it will set the locale for this
3194    // instance.  Otherwise, it will return the locale configuration
3195    // variables for this instance.
3196    function locale(key) {
3197        var newLocaleData;
3198
3199        if (key === undefined) {
3200            return this._locale._abbr;
3201        } else {
3202            newLocaleData = getLocale(key);
3203            if (newLocaleData != null) {
3204                this._locale = newLocaleData;
3205            }
3206            return this;
3207        }
3208    }
3209
3210    var lang = deprecate(
3211        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
3212        function (key) {
3213            if (key === undefined) {
3214                return this.localeData();
3215            } else {
3216                return this.locale(key);
3217            }
3218        }
3219    );
3220
3221    function localeData() {
3222        return this._locale;
3223    }
3224
3225    function startOf(units) {
3226        units = normalizeUnits(units);
3227        // the following switch intentionally omits break keywords
3228        // to utilize falling through the cases.
3229        switch (units) {
3230            case 'year':
3231                this.month(0);
3232                /* falls through */
3233            case 'quarter':
3234            case 'month':
3235                this.date(1);
3236                /* falls through */
3237            case 'week':
3238            case 'isoWeek':
3239            case 'day':
3240            case 'date':
3241                this.hours(0);
3242                /* falls through */
3243            case 'hour':
3244                this.minutes(0);
3245                /* falls through */
3246            case 'minute':
3247                this.seconds(0);
3248                /* falls through */
3249            case 'second':
3250                this.milliseconds(0);
3251        }
3252
3253        // weeks are a special case
3254        if (units === 'week') {
3255            this.weekday(0);
3256        }
3257        if (units === 'isoWeek') {
3258            this.isoWeekday(1);
3259        }
3260
3261        // quarters are also special
3262        if (units === 'quarter') {
3263            this.month(Math.floor(this.month() / 3) * 3);
3264        }
3265
3266        return this;
3267    }
3268
3269    function endOf(units) {
3270        units = normalizeUnits(units);
3271        if (units === undefined || units === 'millisecond') {
3272            return this;
3273        }
3274
3275        // 'date' is an alias for 'day', so it should be considered as such.
3276        if (units === 'date') {
3277            units = 'day';
3278        }
3279
3280        return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
3281    }
3282
3283    function valueOf() {
3284        return this._d.valueOf() - ((this._offset || 0) * 60000);
3285    }
3286
3287    function unix() {
3288        return Math.floor(this.valueOf() / 1000);
3289    }
3290
3291    function toDate() {
3292        return new Date(this.valueOf());
3293    }
3294
3295    function toArray() {
3296        var m = this;
3297        return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
3298    }
3299
3300    function toObject() {
3301        var m = this;
3302        return {
3303            years: m.year(),
3304            months: m.month(),
3305            date: m.date(),
3306            hours: m.hours(),
3307            minutes: m.minutes(),
3308            seconds: m.seconds(),
3309            milliseconds: m.milliseconds()
3310        };
3311    }
3312
3313    function toJSON() {
3314        // new Date(NaN).toJSON() === null
3315        return this.isValid() ? this.toISOString() : null;
3316    }
3317
3318    function isValid$1() {
3319        return isValid(this);
3320    }
3321
3322    function parsingFlags() {
3323        return extend({}, getParsingFlags(this));
3324    }
3325
vendor: 1,446 bytes, lines 3326-3380
3326    function invalidAt() {
3327        return getParsingFlags(this).overflow;
3328    }
3329
3330    function creationData() {
3331        return {
3332            input: this._i,
3333            format: this._f,
3334            locale: this._locale,
3335            isUTC: this._isUTC,
3336            strict: this._strict
3337        };
3338    }
3339
3340    // FORMATTING
3341
3342    addFormatToken(0, ['gg', 2], 0, function () {
3343        return this.weekYear() % 100;
3344    });
3345
3346    addFormatToken(0, ['GG', 2], 0, function () {
3347        return this.isoWeekYear() % 100;
3348    });
3349
3350    function addWeekYearFormatToken(token, getter) {
3351        addFormatToken(0, [token, token.length], 0, getter);
3352    }
3353
3354    addWeekYearFormatToken('gggg', 'weekYear');
3355    addWeekYearFormatToken('ggggg', 'weekYear');
3356    addWeekYearFormatToken('GGGG', 'isoWeekYear');
3357    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
3358
3359    // ALIASES
3360
3361    addUnitAlias('weekYear', 'gg');
3362    addUnitAlias('isoWeekYear', 'GG');
3363
3364    // PRIORITY
3365
3366    addUnitPriority('weekYear', 1);
3367    addUnitPriority('isoWeekYear', 1);
3368
3369
3370    // PARSING
3371
3372    addRegexToken('G', matchSigned);
3373    addRegexToken('g', matchSigned);
3374    addRegexToken('GG', match1to2, match2);
3375    addRegexToken('gg', match1to2, match2);
3376    addRegexToken('GGGG', match1to4, match4);
3377    addRegexToken('gggg', match1to4, match4);
3378    addRegexToken('GGGGG', match1to6, match6);
3379    addRegexToken('ggggg', match1to6, match6);
3380
vendor: 2,070 bytes, lines 3381-3451
3381    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
3382        week[token.substr(0, 2)] = toInt(input);
3383    });
3384
3385    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
3386        week[token] = hooks.parseTwoDigitYear(input);
3387    });
3388
3389    // MOMENTS
3390
3391    function getSetWeekYear(input) {
3392        return getSetWeekYearHelper.call(this,
3393                input,
3394                this.week(),
3395                this.weekday(),
3396                this.localeData()._week.dow,
3397                this.localeData()._week.doy);
3398    }
3399
3400    function getSetISOWeekYear(input) {
3401        return getSetWeekYearHelper.call(this,
3402                input, this.isoWeek(), this.isoWeekday(), 1, 4);
3403    }
3404
3405    function getISOWeeksInYear() {
3406        return weeksInYear(this.year(), 1, 4);
3407    }
3408
3409    function getWeeksInYear() {
3410        var weekInfo = this.localeData()._week;
3411        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
3412    }
3413
3414    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
3415        var weeksTarget;
3416        if (input == null) {
3417            return weekOfYear(this, dow, doy).year;
3418        } else {
3419            weeksTarget = weeksInYear(input, dow, doy);
3420            if (week > weeksTarget) {
3421                week = weeksTarget;
3422            }
3423            return setWeekAll.call(this, input, week, weekday, dow, doy);
3424        }
3425    }
3426
3427    function setWeekAll(weekYear, week, weekday, dow, doy) {
3428        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
3429            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
3430
3431        this.year(date.getUTCFullYear());
3432        this.month(date.getUTCMonth());
3433        this.date(date.getUTCDate());
3434        return this;
3435    }
3436
3437    // FORMATTING
3438
3439    addFormatToken('Q', 0, 'Qo', 'quarter');
3440
3441    // ALIASES
3442
3443    addUnitAlias('quarter', 'Q');
3444
3445    // PRIORITY
3446
3447    addUnitPriority('quarter', 7);
3448
3449    // PARSING
3450
3451    addRegexToken('Q', match1);
vendor: 23,782 bytes, lines 3452-4250
3452    addParseToken('Q', function (input, array) {
3453        array[MONTH] = (toInt(input) - 1) * 3;
3454    });
3455
3456    // MOMENTS
3457
3458    function getSetQuarter(input) {
3459        return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
3460    }
3461
3462    // FORMATTING
3463
3464    addFormatToken('D', ['DD', 2], 'Do', 'date');
3465
3466    // ALIASES
3467
3468    addUnitAlias('date', 'D');
3469
3470    // PRIOROITY
3471    addUnitPriority('date', 9);
3472
3473    // PARSING
3474
3475    addRegexToken('D', match1to2);
3476    addRegexToken('DD', match1to2, match2);
3477    addRegexToken('Do', function (isStrict, locale) {
3478        return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;
3479    });
3480
3481    addParseToken(['D', 'DD'], DATE);
3482    addParseToken('Do', function (input, array) {
3483        array[DATE] = toInt(input.match(match1to2)[0], 10);
3484    });
3485
3486    // MOMENTS
3487
3488    var getSetDayOfMonth = makeGetSet('Date', true);
3489
3490    // FORMATTING
3491
3492    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
3493
3494    // ALIASES
3495
3496    addUnitAlias('dayOfYear', 'DDD');
3497
3498    // PRIORITY
3499    addUnitPriority('dayOfYear', 4);
3500
3501    // PARSING
3502
3503    addRegexToken('DDD', match1to3);
3504    addRegexToken('DDDD', match3);
3505    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
3506        config._dayOfYear = toInt(input);
3507    });
3508
3509    // HELPERS
3510
3511    // MOMENTS
3512
3513    function getSetDayOfYear(input) {
3514        var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
3515        return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
3516    }
3517
3518    // FORMATTING
3519
3520    addFormatToken('m', ['mm', 2], 0, 'minute');
3521
3522    // ALIASES
3523
3524    addUnitAlias('minute', 'm');
3525
3526    // PRIORITY
3527
3528    addUnitPriority('minute', 14);
3529
3530    // PARSING
3531
3532    addRegexToken('m', match1to2);
3533    addRegexToken('mm', match1to2, match2);
3534    addParseToken(['m', 'mm'], MINUTE);
3535
3536    // MOMENTS
3537
3538    var getSetMinute = makeGetSet('Minutes', false);
3539
3540    // FORMATTING
3541
3542    addFormatToken('s', ['ss', 2], 0, 'second');
3543
3544    // ALIASES
3545
3546    addUnitAlias('second', 's');
3547
3548    // PRIORITY
3549
3550    addUnitPriority('second', 15);
3551
3552    // PARSING
3553
3554    addRegexToken('s', match1to2);
3555    addRegexToken('ss', match1to2, match2);
3556    addParseToken(['s', 'ss'], SECOND);
3557
3558    // MOMENTS
3559
3560    var getSetSecond = makeGetSet('Seconds', false);
3561
3562    // FORMATTING
3563
3564    addFormatToken('S', 0, 0, function () {
3565        return ~~(this.millisecond() / 100);
3566    });
3567
3568    addFormatToken(0, ['SS', 2], 0, function () {
3569        return ~~(this.millisecond() / 10);
3570    });
3571
3572    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
3573    addFormatToken(0, ['SSSS', 4], 0, function () {
3574        return this.millisecond() * 10;
3575    });
3576    addFormatToken(0, ['SSSSS', 5], 0, function () {
3577        return this.millisecond() * 100;
3578    });
3579    addFormatToken(0, ['SSSSSS', 6], 0, function () {
3580        return this.millisecond() * 1000;
3581    });
3582    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
3583        return this.millisecond() * 10000;
3584    });
3585    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
3586        return this.millisecond() * 100000;
3587    });
3588    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
3589        return this.millisecond() * 1000000;
3590    });
3591
3592
3593    // ALIASES
3594
3595    addUnitAlias('millisecond', 'ms');
3596
3597    // PRIORITY
3598
3599    addUnitPriority('millisecond', 16);
3600
3601    // PARSING
3602
3603    addRegexToken('S', match1to3, match1);
3604    addRegexToken('SS', match1to3, match2);
3605    addRegexToken('SSS', match1to3, match3);
3606
3607    var token;
3608    for (token = 'SSSS'; token.length <= 9; token += 'S') {
3609        addRegexToken(token, matchUnsigned);
3610    }
3611
3612    function parseMs(input, array) {
3613        array[MILLISECOND] = toInt(('0.' + input) * 1000);
3614    }
3615
3616    for (token = 'S'; token.length <= 9; token += 'S') {
3617        addParseToken(token, parseMs);
3618    }
3619    // MOMENTS
3620
3621    var getSetMillisecond = makeGetSet('Milliseconds', false);
3622
3623    // FORMATTING
3624
3625    addFormatToken('z', 0, 0, 'zoneAbbr');
3626    addFormatToken('zz', 0, 0, 'zoneName');
3627
3628    // MOMENTS
3629
3630    function getZoneAbbr() {
3631        return this._isUTC ? 'UTC' : '';
3632    }
3633
3634    function getZoneName() {
3635        return this._isUTC ? 'Coordinated Universal Time' : '';
3636    }
3637
3638    var proto = Moment.prototype;
3639
3640    proto.add = add;
3641    proto.calendar = calendar$1;
3642    proto.clone = clone;
3643    proto.diff = diff;
3644    proto.endOf = endOf;
3645    proto.format = format;
3646    proto.from = from;
3647    proto.fromNow = fromNow;
3648    proto.to = to;
3649    proto.toNow = toNow;
3650    proto.get = stringGet;
3651    proto.invalidAt = invalidAt;
3652    proto.isAfter = isAfter;
3653    proto.isBefore = isBefore;
3654    proto.isBetween = isBetween;
3655    proto.isSame = isSame;
3656    proto.isSameOrAfter = isSameOrAfter;
3657    proto.isSameOrBefore = isSameOrBefore;
3658    proto.isValid = isValid$1;
3659    proto.lang = lang;
3660    proto.locale = locale;
3661    proto.localeData = localeData;
3662    proto.max = prototypeMax;
3663    proto.min = prototypeMin;
3664    proto.parsingFlags = parsingFlags;
3665    proto.set = stringSet;
3666    proto.startOf = startOf;
3667    proto.subtract = subtract;
3668    proto.toArray = toArray;
3669    proto.toObject = toObject;
3670    proto.toDate = toDate;
3671    proto.toISOString = toISOString;
3672    proto.inspect = inspect;
3673    proto.toJSON = toJSON;
3674    proto.toString = toString;
3675    proto.unix = unix;
3676    proto.valueOf = valueOf;
3677    proto.creationData = creationData;
3678
3679    // Year
3680    proto.year = getSetYear;
3681    proto.isLeapYear = getIsLeapYear;
3682
3683    // Week Year
3684    proto.weekYear = getSetWeekYear;
3685    proto.isoWeekYear = getSetISOWeekYear;
3686
3687    // Quarter
3688    proto.quarter = proto.quarters = getSetQuarter;
3689
3690    // Month
3691    proto.month = getSetMonth;
3692    proto.daysInMonth = getDaysInMonth;
3693
3694    // Week
3695    proto.week = proto.weeks = getSetWeek;
3696    proto.isoWeek = proto.isoWeeks = getSetISOWeek;
3697    proto.weeksInYear = getWeeksInYear;
3698    proto.isoWeeksInYear = getISOWeeksInYear;
3699
3700    // Day
3701    proto.date = getSetDayOfMonth;
3702    proto.day = proto.days = getSetDayOfWeek;
3703    proto.weekday = getSetLocaleDayOfWeek;
3704    proto.isoWeekday = getSetISODayOfWeek;
3705    proto.dayOfYear = getSetDayOfYear;
3706
3707    // Hour
3708    proto.hour = proto.hours = getSetHour;
3709
3710    // Minute
3711    proto.minute = proto.minutes = getSetMinute;
3712
3713    // Second
3714    proto.second = proto.seconds = getSetSecond;
3715
3716    // Millisecond
3717    proto.millisecond = proto.milliseconds = getSetMillisecond;
3718
3719    // Offset
3720    proto.utcOffset = getSetOffset;
3721    proto.utc = setOffsetToUTC;
3722    proto.local = setOffsetToLocal;
3723    proto.parseZone = setOffsetToParsedOffset;
3724    proto.hasAlignedHourOffset = hasAlignedHourOffset;
3725    proto.isDST = isDaylightSavingTime;
3726    proto.isLocal = isLocal;
3727    proto.isUtcOffset = isUtcOffset;
3728    proto.isUtc = isUtc;
3729    proto.isUTC = isUtc;
3730
3731    // Timezone
3732    proto.zoneAbbr = getZoneAbbr;
3733    proto.zoneName = getZoneName;
3734
3735    // Deprecations
3736    proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
3737    proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
3738    proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);
3739    proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);
3740    proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);
3741
3742    function createUnix(input) {
3743        return createLocal(input * 1000);
3744    }
3745
3746    function createInZone() {
3747        return createLocal.apply(null, arguments).parseZone();
3748    }
3749
3750    function preParsePostFormat(string) {
3751        return string;
3752    }
3753
3754    var proto$1 = Locale.prototype;
3755
3756    proto$1.calendar = calendar;
3757    proto$1.longDateFormat = longDateFormat;
3758    proto$1.invalidDate = invalidDate;
3759    proto$1.ordinal = ordinal;
3760    proto$1.preparse = preParsePostFormat;
3761    proto$1.postformat = preParsePostFormat;
3762    proto$1.relativeTime = relativeTime;
3763    proto$1.pastFuture = pastFuture;
3764    proto$1.set = set;
3765
3766    // Month
3767    proto$1.months = localeMonths;
3768    proto$1.monthsShort = localeMonthsShort;
3769    proto$1.monthsParse = localeMonthsParse;
3770    proto$1.monthsRegex = monthsRegex;
3771    proto$1.monthsShortRegex = monthsShortRegex;
3772
3773    // Week
3774    proto$1.week = localeWeek;
3775    proto$1.firstDayOfYear = localeFirstDayOfYear;
3776    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
3777
3778    // Day of Week
3779    proto$1.weekdays = localeWeekdays;
3780    proto$1.weekdaysMin = localeWeekdaysMin;
3781    proto$1.weekdaysShort = localeWeekdaysShort;
3782    proto$1.weekdaysParse = localeWeekdaysParse;
3783
3784    proto$1.weekdaysRegex = weekdaysRegex;
3785    proto$1.weekdaysShortRegex = weekdaysShortRegex;
3786    proto$1.weekdaysMinRegex = weekdaysMinRegex;
3787
3788    // Hours
3789    proto$1.isPM = localeIsPM;
3790    proto$1.meridiem = localeMeridiem;
3791
3792    function get$1(format, index, field, setter) {
3793        var locale = getLocale();
3794        var utc = createUTC().set(setter, index);
3795        return locale[field](utc, format);
3796    }
3797
3798    function listMonthsImpl(format, index, field) {
3799        if (isNumber(format)) {
3800            index = format;
3801            format = undefined;
3802        }
3803
3804        format = format || '';
3805
3806        if (index != null) {
3807            return get$1(format, index, field, 'month');
3808        }
3809
3810        var i;
3811        var out = [];
3812        for (i = 0; i < 12; i++) {
3813            out[i] = get$1(format, i, field, 'month');
3814        }
3815        return out;
3816    }
3817
3818    // ()
3819    // (5)
3820    // (fmt, 5)
3821    // (fmt)
3822    // (true)
3823    // (true, 5)
3824    // (true, fmt, 5)
3825    // (true, fmt)
3826    function listWeekdaysImpl(localeSorted, format, index, field) {
3827        if (typeof localeSorted === 'boolean') {
3828            if (isNumber(format)) {
3829                index = format;
3830                format = undefined;
3831            }
3832
3833            format = format || '';
3834        } else {
3835            format = localeSorted;
3836            index = format;
3837            localeSorted = false;
3838
3839            if (isNumber(format)) {
3840                index = format;
3841                format = undefined;
3842            }
3843
3844            format = format || '';
3845        }
3846
3847        var locale = getLocale(),
3848            shift = localeSorted ? locale._week.dow : 0;
3849
3850        if (index != null) {
3851            return get$1(format, (index + shift) % 7, field, 'day');
3852        }
3853
3854        var i;
3855        var out = [];
3856        for (i = 0; i < 7; i++) {
3857            out[i] = get$1(format, (i + shift) % 7, field, 'day');
3858        }
3859        return out;
3860    }
3861
3862    function listMonths(format, index) {
3863        return listMonthsImpl(format, index, 'months');
3864    }
3865
3866    function listMonthsShort(format, index) {
3867        return listMonthsImpl(format, index, 'monthsShort');
3868    }
3869
3870    function listWeekdays(localeSorted, format, index) {
3871        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
3872    }
3873
3874    function listWeekdaysShort(localeSorted, format, index) {
3875        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
3876    }
3877
3878    function listWeekdaysMin(localeSorted, format, index) {
3879        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
3880    }
3881
3882    getSetGlobalLocale('en', {
3883        ordinalParse: /\d{1,2}(th|st|nd|rd)/,
3884        ordinal: function (number) {
3885            var b = number % 10,
3886                output = (toInt(number % 100 / 10) === 1) ? 'th' :
3887                (b === 1) ? 'st' :
3888                (b === 2) ? 'nd' :
3889                (b === 3) ? 'rd' : 'th';
3890            return number + output;
3891        }
3892    });
3893
3894    // Side effect imports
3895    hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);
3896    hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);
3897
3898    var mathAbs = Math.abs;
3899
3900    function abs() {
3901        var data = this._data;
3902
3903        this._milliseconds = mathAbs(this._milliseconds);
3904        this._days = mathAbs(this._days);
3905        this._months = mathAbs(this._months);
3906
3907        data.milliseconds = mathAbs(data.milliseconds);
3908        data.seconds = mathAbs(data.seconds);
3909        data.minutes = mathAbs(data.minutes);
3910        data.hours = mathAbs(data.hours);
3911        data.months = mathAbs(data.months);
3912        data.years = mathAbs(data.years);
3913
3914        return this;
3915    }
3916
3917    function addSubtract$1(duration, input, value, direction) {
3918        var other = createDuration(input, value);
3919
3920        duration._milliseconds += direction * other._milliseconds;
3921        duration._days += direction * other._days;
3922        duration._months += direction * other._months;
3923
3924        return duration._bubble();
3925    }
3926
3927    // supports only 2.0-style add(1, 's') or add(duration)
3928    function add$1(input, value) {
3929        return addSubtract$1(this, input, value, 1);
3930    }
3931
3932    // supports only 2.0-style subtract(1, 's') or subtract(duration)
3933    function subtract$1(input, value) {
3934        return addSubtract$1(this, input, value, -1);
3935    }
3936
3937    function absCeil(number) {
3938        if (number < 0) {
3939            return Math.floor(number);
3940        } else {
3941            return Math.ceil(number);
3942        }
3943    }
3944
3945    function bubble() {
3946        var milliseconds = this._milliseconds;
3947        var days = this._days;
3948        var months = this._months;
3949        var data = this._data;
3950        var seconds, minutes, hours, years, monthsFromDays;
3951
3952        // if we have a mix of positive and negative values, bubble down first
3953        // check: https://github.com/moment/moment/issues/2166
3954        if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
3955                (milliseconds <= 0 && days <= 0 && months <= 0))) {
3956            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
3957            days = 0;
3958            months = 0;
3959        }
3960
3961        // The following code bubbles up values, see the tests for
3962        // examples of what that means.
3963        data.milliseconds = milliseconds % 1000;
3964
3965        seconds = absFloor(milliseconds / 1000);
3966        data.seconds = seconds % 60;
3967
3968        minutes = absFloor(seconds / 60);
3969        data.minutes = minutes % 60;
3970
3971        hours = absFloor(minutes / 60);
3972        data.hours = hours % 24;
3973
3974        days += absFloor(hours / 24);
3975
3976        // convert days to months
3977        monthsFromDays = absFloor(daysToMonths(days));
3978        months += monthsFromDays;
3979        days -= absCeil(monthsToDays(monthsFromDays));
3980
3981        // 12 months -> 1 year
3982        years = absFloor(months / 12);
3983        months %= 12;
3984
3985        data.days = days;
3986        data.months = months;
3987        data.years = years;
3988
3989        return this;
3990    }
3991
3992    function daysToMonths(days) {
3993        // 400 years have 146097 days (taking into account leap year rules)
3994        // 400 years have 12 months === 4800
3995        return days * 4800 / 146097;
3996    }
3997
3998    function monthsToDays(months) {
3999        // the reverse of daysToMonths
4000        return months * 146097 / 4800;
4001    }
4002
4003    function as(units) {
4004        var days;
4005        var months;
4006        var milliseconds = this._milliseconds;
4007
4008        units = normalizeUnits(units);
4009
4010        if (units === 'month' || units === 'year') {
4011            days = this._days + milliseconds / 864e5;
4012            months = this._months + daysToMonths(days);
4013            return units === 'month' ? months : months / 12;
4014        } else {
4015            // handle milliseconds separately because of floating point math errors (issue #1867)
4016            days = this._days + Math.round(monthsToDays(this._months));
4017            switch (units) {
4018                case 'week': return days / 7 + milliseconds / 6048e5;
4019                case 'day': return days + milliseconds / 864e5;
4020                case 'hour': return days * 24 + milliseconds / 36e5;
4021                case 'minute': return days * 1440 + milliseconds / 6e4;
4022                case 'second': return days * 86400 + milliseconds / 1000;
4023                    // Math.floor prevents floating point math errors here
4024                case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
4025                default: throw new Error('Unknown unit ' + units);
4026            }
4027        }
4028    }
4029
4030    // TODO: Use this.as('ms')?
4031    function valueOf$1() {
4032        return (
4033            this._milliseconds +
4034            this._days * 864e5 +
4035            (this._months % 12) * 2592e6 +
4036            toInt(this._months / 12) * 31536e6
4037        );
4038    }
4039
4040    function makeAs(alias) {
4041        return function () {
4042            return this.as(alias);
4043        };
4044    }
4045
4046    var asMilliseconds = makeAs('ms');
4047    var asSeconds = makeAs('s');
4048    var asMinutes = makeAs('m');
4049    var asHours = makeAs('h');
4050    var asDays = makeAs('d');
4051    var asWeeks = makeAs('w');
4052    var asMonths = makeAs('M');
4053    var asYears = makeAs('y');
4054
4055    function get$2(units) {
4056        units = normalizeUnits(units);
4057        return this[units + 's']();
4058    }
4059
4060    function makeGetter(name) {
4061        return function () {
4062            return this._data[name];
4063        };
4064    }
4065
4066    var milliseconds = makeGetter('milliseconds');
4067    var seconds = makeGetter('seconds');
4068    var minutes = makeGetter('minutes');
4069    var hours = makeGetter('hours');
4070    var days = makeGetter('days');
4071    var months = makeGetter('months');
4072    var years = makeGetter('years');
4073
4074    function weeks() {
4075        return absFloor(this.days() / 7);
4076    }
4077
4078    var round = Math.round;
4079    var thresholds = {
4080        s: 45,  // seconds to minute
4081        m: 45,  // minutes to hour
4082        h: 22,  // hours to day
4083        d: 26,  // days to month
4084        M: 11   // months to year
4085    };
4086
4087    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
4088    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
4089        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
4090    }
4091
4092    function relativeTime$1(posNegDuration, withoutSuffix, locale) {
4093        var duration = createDuration(posNegDuration).abs();
4094        var seconds = round(duration.as('s'));
4095        var minutes = round(duration.as('m'));
4096        var hours = round(duration.as('h'));
4097        var days = round(duration.as('d'));
4098        var months = round(duration.as('M'));
4099        var years = round(duration.as('y'));
4100
4101        var a = seconds < thresholds.s && ['s', seconds] ||
4102                minutes <= 1 && ['m'] ||
4103                minutes < thresholds.m && ['mm', minutes] ||
4104                hours <= 1 && ['h'] ||
4105                hours < thresholds.h && ['hh', hours] ||
4106                days <= 1 && ['d'] ||
4107                days < thresholds.d && ['dd', days] ||
4108                months <= 1 && ['M'] ||
4109                months < thresholds.M && ['MM', months] ||
4110                years <= 1 && ['y'] || ['yy', years];
4111
4112        a[2] = withoutSuffix;
4113        a[3] = +posNegDuration > 0;
4114        a[4] = locale;
4115        return substituteTimeAgo.apply(null, a);
4116    }
4117
4118    // This function allows you to set the rounding function for relative time strings
4119    function getSetRelativeTimeRounding(roundingFunction) {
4120        if (roundingFunction === undefined) {
4121            return round;
4122        }
4123        if (typeof (roundingFunction) === 'function') {
4124            round = roundingFunction;
4125            return true;
4126        }
4127        return false;
4128    }
4129
4130    // This function allows you to set a threshold for relative time strings
4131    function getSetRelativeTimeThreshold(threshold, limit) {
4132        if (thresholds[threshold] === undefined) {
4133            return false;
4134        }
4135        if (limit === undefined) {
4136            return thresholds[threshold];
4137        }
4138        thresholds[threshold] = limit;
4139        return true;
4140    }
4141
4142    function humanize(withSuffix) {
4143        var locale = this.localeData();
4144        var output = relativeTime$1(this, !withSuffix, locale);
4145
4146        if (withSuffix) {
4147            output = locale.pastFuture(+this, output);
4148        }
4149
4150        return locale.postformat(output);
4151    }
4152
4153    var abs$1 = Math.abs;
4154
4155    function toISOString$1() {
4156        // for ISO strings we do not use the normal bubbling rules:
4157        //  * milliseconds bubble up until they become hours
4158        //  * days do not bubble at all
4159        //  * months bubble up until they become years
4160        // This is because there is no context-free conversion between hours and days
4161        // (think of clock changes)
4162        // and also not between days and months (28-31 days per month)
4163        var seconds = abs$1(this._milliseconds) / 1000;
4164        var days = abs$1(this._days);
4165        var months = abs$1(this._months);
4166        var minutes, hours, years;
4167
4168        // 3600 seconds -> 60 minutes -> 1 hour
4169        minutes = absFloor(seconds / 60);
4170        hours = absFloor(minutes / 60);
4171        seconds %= 60;
4172        minutes %= 60;
4173
4174        // 12 months -> 1 year
4175        years = absFloor(months / 12);
4176        months %= 12;
4177
4178
4179        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
4180        var Y = years;
4181        var M = months;
4182        var D = days;
4183        var h = hours;
4184        var m = minutes;
4185        var s = seconds;
4186        var total = this.asSeconds();
4187
4188        if (!total) {
4189            // this is the same as C#'s (Noda) and python (isodate)...
4190            // but not other JS (goog.date)
4191            return 'P0D';
4192        }
4193
4194        return (total < 0 ? '-' : '') +
4195            'P' +
4196            (Y ? Y + 'Y' : '') +
4197            (M ? M + 'M' : '') +
4198            (D ? D + 'D' : '') +
4199            ((h || m || s) ? 'T' : '') +
4200            (h ? h + 'H' : '') +
4201            (m ? m + 'M' : '') +
4202            (s ? s + 'S' : '');
4203    }
4204
4205    var proto$2 = Duration.prototype;
4206
4207    proto$2.abs = abs;
4208    proto$2.add = add$1;
4209    proto$2.subtract = subtract$1;
4210    proto$2.as = as;
4211    proto$2.asMilliseconds = asMilliseconds;
4212    proto$2.asSeconds = asSeconds;
4213    proto$2.asMinutes = asMinutes;
4214    proto$2.asHours = asHours;
4215    proto$2.asDays = asDays;
4216    proto$2.asWeeks = asWeeks;
4217    proto$2.asMonths = asMonths;
4218    proto$2.asYears = asYears;
4219    proto$2.valueOf = valueOf$1;
4220    proto$2._bubble = bubble;
4221    proto$2.get = get$2;
4222    proto$2.milliseconds = milliseconds;
4223    proto$2.seconds = seconds;
4224    proto$2.minutes = minutes;
4225    proto$2.hours = hours;
4226    proto$2.days = days;
4227    proto$2.weeks = weeks;
4228    proto$2.months = months;
4229    proto$2.years = years;
4230    proto$2.humanize = humanize;
4231    proto$2.toISOString = toISOString$1;
4232    proto$2.toString = toISOString$1;
4233    proto$2.toJSON = toISOString$1;
4234    proto$2.locale = locale;
4235    proto$2.localeData = localeData;
4236
4237    // Deprecations
4238    proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);
4239    proto$2.lang = lang;
4240
4241    // Side effect imports
4242
4243    // FORMATTING
4244
4245    addFormatToken('X', 0, 0, 'unix');
4246    addFormatToken('x', 0, 0, 'valueOf');
4247
4248    // PARSING
4249
4250    addRegexToken('x', matchSigned);
vendor: 27,049 bytes, lines 4251-4964
4251    addRegexToken('X', matchTimestamp);
4252    addParseToken('X', function (input, array, config) {
4253        config._d = new Date(parseFloat(input, 10) * 1000);
4254    });
4255    addParseToken('x', function (input, array, config) {
4256        config._d = new Date(toInt(input));
4257    });
4258
4259    // Side effect imports
4260
4261    //! moment.js
4262    //! version : 2.17.1
4263    //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
4264    //! license : MIT
4265    //! momentjs.com
4266
4267    hooks.version = '2.17.1';
4268
4269    setHookCallback(createLocal);
4270
4271    hooks.fn = proto;
4272    hooks.min = min;
4273    hooks.max = max;
4274    hooks.now = now;
4275    hooks.utc = createUTC;
4276    hooks.unix = createUnix;
4277    hooks.months = listMonths;
4278    hooks.isDate = isDate;
4279    hooks.locale = getSetGlobalLocale;
4280    hooks.invalid = createInvalid;
4281    hooks.duration = createDuration;
4282    hooks.isMoment = isMoment;
4283    hooks.weekdays = listWeekdays;
4284    hooks.parseZone = createInZone;
4285    hooks.localeData = getLocale;
4286    hooks.isDuration = isDuration;
4287    hooks.monthsShort = listMonthsShort;
4288    hooks.weekdaysMin = listWeekdaysMin;
4289    hooks.defineLocale = defineLocale;
4290    hooks.updateLocale = updateLocale;
4291    hooks.locales = listLocales;
4292    hooks.weekdaysShort = listWeekdaysShort;
4293    hooks.normalizeUnits = normalizeUnits;
4294    hooks.relativeTimeRounding = getSetRelativeTimeRounding;
4295    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
4296    hooks.calendarFormat = getCalendarFormat;
4297    hooks.prototype = proto;
4298
4299    //! moment.js locale configuration
4300    //! locale : Afrikaans [af]
4301    //! author : Werner Mollentze : https://github.com/wernerm
4302
4303    hooks.defineLocale('af', {
4304        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
4305        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
4306        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
4307        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
4308        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
4309        meridiemParse: /vm|nm/i,
4310        isPM: function (input) {
4311            return /^nm$/i.test(input);
4312        },
4313        meridiem: function (hours, minutes, isLower) {
4314            if (hours < 12) {
4315                return isLower ? 'vm' : 'VM';
4316            } else {
4317                return isLower ? 'nm' : 'NM';
4318            }
4319        },
4320        longDateFormat: {
4321            LT: 'HH:mm',
4322            LTS: 'HH:mm:ss',
4323            L: 'DD/MM/YYYY',
4324            LL: 'D MMMM YYYY',
4325            LLL: 'D MMMM YYYY HH:mm',
4326            LLLL: 'dddd, D MMMM YYYY HH:mm'
4327        },
4328        calendar: {
4329            sameDay: '[Vandag om] LT',
4330            nextDay: '[Môre om] LT',
4331            nextWeek: 'dddd [om] LT',
4332            lastDay: '[Gister om] LT',
4333            lastWeek: '[Laas] dddd [om] LT',
4334            sameElse: 'L'
4335        },
4336        relativeTime: {
4337            future: 'oor %s',
4338            past: '%s gelede',
4339            s: '\'n paar sekondes',
4340            m: '\'n minuut',
4341            mm: '%d minute',
4342            h: '\'n uur',
4343            hh: '%d ure',
4344            d: '\'n dag',
4345            dd: '%d dae',
4346            M: '\'n maand',
4347            MM: '%d maande',
4348            y: '\'n jaar',
4349            yy: '%d jaar'
4350        },
4351        ordinalParse: /\d{1,2}(ste|de)/,
4352        ordinal: function (number) {
4353            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
4354        },
4355        week: {
4356            dow: 1, // Maandag is die eerste dag van die week.
4357            doy: 4  // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
4358        }
4359    });
4360
4361    //! moment.js locale configuration
4362    //! locale : Arabic (Algeria) [ar-dz]
4363    //! author : Noureddine LOUAHEDJ : https://github.com/noureddineme
4364
4365    hooks.defineLocale('ar-dz', {
4366        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4367        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4368        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4369        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4370        weekdaysMin: 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),
4371        weekdaysParseExact: true,
4372        longDateFormat: {
4373            LT: 'HH:mm',
4374            LTS: 'HH:mm:ss',
4375            L: 'DD/MM/YYYY',
4376            LL: 'D MMMM YYYY',
4377            LLL: 'D MMMM YYYY HH:mm',
4378            LLLL: 'dddd D MMMM YYYY HH:mm'
4379        },
4380        calendar: {
4381            sameDay: '[اليوم على الساعة] LT',
4382            nextDay: '[غدا على الساعة] LT',
4383            nextWeek: 'dddd [على الساعة] LT',
4384            lastDay: '[أمس على الساعة] LT',
4385            lastWeek: 'dddd [على الساعة] LT',
4386            sameElse: 'L'
4387        },
4388        relativeTime: {
4389            future: 'في %s',
4390            past: 'منذ %s',
4391            s: 'ثوان',
4392            m: 'دقيقة',
4393            mm: '%d دقائق',
4394            h: 'ساعة',
4395            hh: '%d ساعات',
4396            d: 'يوم',
4397            dd: '%d أيام',
4398            M: 'شهر',
4399            MM: '%d أشهر',
4400            y: 'سنة',
4401            yy: '%d سنوات'
4402        },
4403        week: {
4404            dow: 0, // Sunday is the first day of the week.
4405            doy: 4  // The week that contains Jan 1st is the first week of the year.
4406        }
4407    });
4408
4409    //! moment.js locale configuration
4410    //! locale : Arabic (Lybia) [ar-ly]
4411    //! author : Ali Hmer: https://github.com/kikoanis
4412
4413    var symbolMap = {
4414        '1': '1',
4415        '2': '2',
4416        '3': '3',
4417        '4': '4',
4418        '5': '5',
4419        '6': '6',
4420        '7': '7',
4421        '8': '8',
4422        '9': '9',
4423        '0': '0'
4424    };
4425    var pluralForm = function (n) {
4426        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
4427    };
4428    var plurals = {
4429        s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
4430        m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
4431        h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
4432        d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
4433        M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
4434        y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
4435    };
4436    var pluralize = function (u) {
4437        return function (number, withoutSuffix, string, isFuture) {
4438            var f = pluralForm(number),
4439                str = plurals[u][pluralForm(number)];
4440            if (f === 2) {
4441                str = str[withoutSuffix ? 0 : 1];
4442            }
4443            return str.replace(/%d/i, number);
4444        };
4445    };
4446    var months$1 = [
4447        'يناير',
4448        'فبراير',
4449        'مارس',
4450        'أبريل',
4451        'مايو',
4452        'يونيو',
4453        'يوليو',
4454        'أغسطس',
4455        'سبتمبر',
4456        'أكتوبر',
4457        'نوفمبر',
4458        'ديسمبر'
4459    ];
4460
4461    hooks.defineLocale('ar-ly', {
4462        months: months$1,
4463        monthsShort: months$1,
4464        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4465        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4466        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4467        weekdaysParseExact: true,
4468        longDateFormat: {
4469            LT: 'HH:mm',
4470            LTS: 'HH:mm:ss',
4471            L: 'D/\u200FM/\u200FYYYY',
4472            LL: 'D MMMM YYYY',
4473            LLL: 'D MMMM YYYY HH:mm',
4474            LLLL: 'dddd D MMMM YYYY HH:mm'
4475        },
4476        meridiemParse: /ص|م/,
4477        isPM: function (input) {
4478            return 'م' === input;
4479        },
4480        meridiem: function (hour, minute, isLower) {
4481            if (hour < 12) {
4482                return 'ص';
4483            } else {
4484                return 'م';
4485            }
4486        },
4487        calendar: {
4488            sameDay: '[اليوم عند الساعة] LT',
4489            nextDay: '[غدًا عند الساعة] LT',
4490            nextWeek: 'dddd [عند الساعة] LT',
4491            lastDay: '[أمس عند الساعة] LT',
4492            lastWeek: 'dddd [عند الساعة] LT',
4493            sameElse: 'L'
4494        },
4495        relativeTime: {
4496            future: 'بعد %s',
4497            past: 'منذ %s',
4498            s: pluralize('s'),
4499            m: pluralize('m'),
4500            mm: pluralize('m'),
4501            h: pluralize('h'),
4502            hh: pluralize('h'),
4503            d: pluralize('d'),
4504            dd: pluralize('d'),
4505            M: pluralize('M'),
4506            MM: pluralize('M'),
4507            y: pluralize('y'),
4508            yy: pluralize('y')
4509        },
4510        preparse: function (string) {
4511            return string.replace(/\u200f/g, '').replace(/،/g, ',');
4512        },
4513        postformat: function (string) {
4514            return string.replace(/\d/g, function (match) {
4515                return symbolMap[match];
4516            }).replace(/,/g, '،');
4517        },
4518        week: {
4519            dow: 6, // Saturday is the first day of the week.
4520            doy: 12  // The week that contains Jan 1st is the first week of the year.
4521        }
4522    });
4523
4524    //! moment.js locale configuration
4525    //! locale : Arabic (Morocco) [ar-ma]
4526    //! author : ElFadili Yassine : https://github.com/ElFadiliY
4527    //! author : Abdel Said : https://github.com/abdelsaid
4528
4529    hooks.defineLocale('ar-ma', {
4530        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4531        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4532        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4533        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4534        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4535        weekdaysParseExact: true,
4536        longDateFormat: {
4537            LT: 'HH:mm',
4538            LTS: 'HH:mm:ss',
4539            L: 'DD/MM/YYYY',
4540            LL: 'D MMMM YYYY',
4541            LLL: 'D MMMM YYYY HH:mm',
4542            LLLL: 'dddd D MMMM YYYY HH:mm'
4543        },
4544        calendar: {
4545            sameDay: '[اليوم على الساعة] LT',
4546            nextDay: '[غدا على الساعة] LT',
4547            nextWeek: 'dddd [على الساعة] LT',
4548            lastDay: '[أمس على الساعة] LT',
4549            lastWeek: 'dddd [على الساعة] LT',
4550            sameElse: 'L'
4551        },
4552        relativeTime: {
4553            future: 'في %s',
4554            past: 'منذ %s',
4555            s: 'ثوان',
4556            m: 'دقيقة',
4557            mm: '%d دقائق',
4558            h: 'ساعة',
4559            hh: '%d ساعات',
4560            d: 'يوم',
4561            dd: '%d أيام',
4562            M: 'شهر',
4563            MM: '%d أشهر',
4564            y: 'سنة',
4565            yy: '%d سنوات'
4566        },
4567        week: {
4568            dow: 6, // Saturday is the first day of the week.
4569            doy: 12  // The week that contains Jan 1st is the first week of the year.
4570        }
4571    });
4572
4573    //! moment.js locale configuration
4574    //! locale : Arabic (Saudi Arabia) [ar-sa]
4575    //! author : Suhail Alkowaileet : https://github.com/xsoh
4576
4577    var symbolMap$1 = {
4578        '1': 'Ù¡',
4579        '2': 'Ù¢',
4580        '3': 'Ù£',
4581        '4': 'Ù¤',
4582        '5': 'Ù¥',
4583        '6': 'Ù¦',
4584        '7': 'Ù§',
4585        '8': 'Ù¨',
4586        '9': 'Ù©',
4587        '0': 'Ù '
4588    };
4589    var numberMap = {
4590        'Ù¡': '1',
4591        'Ù¢': '2',
4592        'Ù£': '3',
4593        'Ù¤': '4',
4594        'Ù¥': '5',
4595        'Ù¦': '6',
4596        'Ù§': '7',
4597        'Ù¨': '8',
4598        'Ù©': '9',
4599        'Ù ': '0'
4600    };
4601
4602    hooks.defineLocale('ar-sa', {
4603        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4604        monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4605        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4606        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4607        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4608        weekdaysParseExact: true,
4609        longDateFormat: {
4610            LT: 'HH:mm',
4611            LTS: 'HH:mm:ss',
4612            L: 'DD/MM/YYYY',
4613            LL: 'D MMMM YYYY',
4614            LLL: 'D MMMM YYYY HH:mm',
4615            LLLL: 'dddd D MMMM YYYY HH:mm'
4616        },
4617        meridiemParse: /ص|م/,
4618        isPM: function (input) {
4619            return 'م' === input;
4620        },
4621        meridiem: function (hour, minute, isLower) {
4622            if (hour < 12) {
4623                return 'ص';
4624            } else {
4625                return 'م';
4626            }
4627        },
4628        calendar: {
4629            sameDay: '[اليوم على الساعة] LT',
4630            nextDay: '[غدا على الساعة] LT',
4631            nextWeek: 'dddd [على الساعة] LT',
4632            lastDay: '[أمس على الساعة] LT',
4633            lastWeek: 'dddd [على الساعة] LT',
4634            sameElse: 'L'
4635        },
4636        relativeTime: {
4637            future: 'في %s',
4638            past: 'منذ %s',
4639            s: 'ثوان',
4640            m: 'دقيقة',
4641            mm: '%d دقائق',
4642            h: 'ساعة',
4643            hh: '%d ساعات',
4644            d: 'يوم',
4645            dd: '%d أيام',
4646            M: 'شهر',
4647            MM: '%d أشهر',
4648            y: 'سنة',
4649            yy: '%d سنوات'
4650        },
4651        preparse: function (string) {
4652            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
4653                return numberMap[match];
4654            }).replace(/،/g, ',');
4655        },
4656        postformat: function (string) {
4657            return string.replace(/\d/g, function (match) {
4658                return symbolMap$1[match];
4659            }).replace(/,/g, '،');
4660        },
4661        week: {
4662            dow: 0, // Sunday is the first day of the week.
4663            doy: 6  // The week that contains Jan 1st is the first week of the year.
4664        }
4665    });
4666
4667    //! moment.js locale configuration
4668    //! locale  :  Arabic (Tunisia) [ar-tn]
4669    //! author : Nader Toukabri : https://github.com/naderio
4670
4671    hooks.defineLocale('ar-tn', {
4672        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4673        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4674        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4675        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4676        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4677        weekdaysParseExact: true,
4678        longDateFormat: {
4679            LT: 'HH:mm',
4680            LTS: 'HH:mm:ss',
4681            L: 'DD/MM/YYYY',
4682            LL: 'D MMMM YYYY',
4683            LLL: 'D MMMM YYYY HH:mm',
4684            LLLL: 'dddd D MMMM YYYY HH:mm'
4685        },
4686        calendar: {
4687            sameDay: '[اليوم على الساعة] LT',
4688            nextDay: '[غدا على الساعة] LT',
4689            nextWeek: 'dddd [على الساعة] LT',
4690            lastDay: '[أمس على الساعة] LT',
4691            lastWeek: 'dddd [على الساعة] LT',
4692            sameElse: 'L'
4693        },
4694        relativeTime: {
4695            future: 'في %s',
4696            past: 'منذ %s',
4697            s: 'ثوان',
4698            m: 'دقيقة',
4699            mm: '%d دقائق',
4700            h: 'ساعة',
4701            hh: '%d ساعات',
4702            d: 'يوم',
4703            dd: '%d أيام',
4704            M: 'شهر',
4705            MM: '%d أشهر',
4706            y: 'سنة',
4707            yy: '%d سنوات'
4708        },
4709        week: {
4710            dow: 1, // Monday is the first day of the week.
4711            doy: 4 // The week that contains Jan 4th is the first week of the year.
4712        }
4713    });
4714
4715    //! moment.js locale configuration
4716    //! locale : Arabic [ar]
4717    //! author : Abdel Said: https://github.com/abdelsaid
4718    //! author : Ahmed Elkhatib
4719    //! author : forabi https://github.com/forabi
4720
4721    var symbolMap$2 = {
4722        '1': 'Ù¡',
4723        '2': 'Ù¢',
4724        '3': 'Ù£',
4725        '4': 'Ù¤',
4726        '5': 'Ù¥',
4727        '6': 'Ù¦',
4728        '7': 'Ù§',
4729        '8': 'Ù¨',
4730        '9': 'Ù©',
4731        '0': 'Ù '
4732    };
4733    var numberMap$1 = {
4734        'Ù¡': '1',
4735        'Ù¢': '2',
4736        'Ù£': '3',
4737        'Ù¤': '4',
4738        'Ù¥': '5',
4739        'Ù¦': '6',
4740        'Ù§': '7',
4741        'Ù¨': '8',
4742        'Ù©': '9',
4743        'Ù ': '0'
4744    };
4745    var pluralForm$1 = function (n) {
4746        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
4747    };
4748    var plurals$1 = {
4749        s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
4750        m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
4751        h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
4752        d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
4753        M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
4754        y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
4755    };
4756    var pluralize$1 = function (u) {
4757        return function (number, withoutSuffix, string, isFuture) {
4758            var f = pluralForm$1(number),
4759                str = plurals$1[u][pluralForm$1(number)];
4760            if (f === 2) {
4761                str = str[withoutSuffix ? 0 : 1];
4762            }
4763            return str.replace(/%d/i, number);
4764        };
4765    };
4766    var months$2 = [
4767        'كانون الثاني يناير',
4768        'شباط فبراير',
4769        'آذار مارس',
4770        'نيسان أبريل',
4771        'أيار مايو',
4772        'حزيران يونيو',
4773        'تموز يوليو',
4774        'آب أغسطس',
4775        'أيلول سبتمبر',
4776        'تشرين الأول أكتوبر',
4777        'تشرين الثاني نوفمبر',
4778        'كانون الأول ديسمبر'
4779    ];
4780
4781    hooks.defineLocale('ar', {
4782        months: months$2,
4783        monthsShort: months$2,
4784        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4785        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4786        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4787        weekdaysParseExact: true,
4788        longDateFormat: {
4789            LT: 'HH:mm',
4790            LTS: 'HH:mm:ss',
4791            L: 'D/\u200FM/\u200FYYYY',
4792            LL: 'D MMMM YYYY',
4793            LLL: 'D MMMM YYYY HH:mm',
4794            LLLL: 'dddd D MMMM YYYY HH:mm'
4795        },
4796        meridiemParse: /ص|م/,
4797        isPM: function (input) {
4798            return 'م' === input;
4799        },
4800        meridiem: function (hour, minute, isLower) {
4801            if (hour < 12) {
4802                return 'ص';
4803            } else {
4804                return 'م';
4805            }
4806        },
4807        calendar: {
4808            sameDay: '[اليوم عند الساعة] LT',
4809            nextDay: '[غدًا عند الساعة] LT',
4810            nextWeek: 'dddd [عند الساعة] LT',
4811            lastDay: '[أمس عند الساعة] LT',
4812            lastWeek: 'dddd [عند الساعة] LT',
4813            sameElse: 'L'
4814        },
4815        relativeTime: {
4816            future: 'بعد %s',
4817            past: 'منذ %s',
4818            s: pluralize$1('s'),
4819            m: pluralize$1('m'),
4820            mm: pluralize$1('m'),
4821            h: pluralize$1('h'),
4822            hh: pluralize$1('h'),
4823            d: pluralize$1('d'),
4824            dd: pluralize$1('d'),
4825            M: pluralize$1('M'),
4826            MM: pluralize$1('M'),
4827            y: pluralize$1('y'),
4828            yy: pluralize$1('y')
4829        },
4830        preparse: function (string) {
4831            return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
4832                return numberMap$1[match];
4833            }).replace(/،/g, ',');
4834        },
4835        postformat: function (string) {
4836            return string.replace(/\d/g, function (match) {
4837                return symbolMap$2[match];
4838            }).replace(/,/g, '،');
4839        },
4840        week: {
4841            dow: 6, // Saturday is the first day of the week.
4842            doy: 12  // The week that contains Jan 1st is the first week of the year.
4843        }
4844    });
4845
4846    //! moment.js locale configuration
4847    //! locale : Azerbaijani [az]
4848    //! author : topchiyev : https://github.com/topchiyev
4849
4850    var suffixes = {
4851        1: '-inci',
4852        5: '-inci',
4853        8: '-inci',
4854        70: '-inci',
4855        80: '-inci',
4856        2: '-nci',
4857        7: '-nci',
4858        20: '-nci',
4859        50: '-nci',
4860        3: '-üncü',
4861        4: '-üncü',
4862        100: '-üncü',
4863        6: '-ncı',
4864        9: '-uncu',
4865        10: '-uncu',
4866        30: '-uncu',
4867        60: '-ıncı',
4868        90: '-ıncı'
4869    };
4870
4871    hooks.defineLocale('az', {
4872        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
4873        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
4874        weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
4875        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
4876        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
4877        weekdaysParseExact: true,
4878        longDateFormat: {
4879            LT: 'HH:mm',
4880            LTS: 'HH:mm:ss',
4881            L: 'DD.MM.YYYY',
4882            LL: 'D MMMM YYYY',
4883            LLL: 'D MMMM YYYY HH:mm',
4884            LLLL: 'dddd, D MMMM YYYY HH:mm'
4885        },
4886        calendar: {
4887            sameDay: '[bugün saat] LT',
4888            nextDay: '[sabah saat] LT',
4889            nextWeek: '[gələn həftə] dddd [saat] LT',
4890            lastDay: '[dünən] LT',
4891            lastWeek: '[keçən həftə] dddd [saat] LT',
4892            sameElse: 'L'
4893        },
4894        relativeTime: {
4895            future: '%s sonra',
4896            past: '%s əvvəl',
4897            s: 'birneçə saniyyə',
4898            m: 'bir dəqiqə',
4899            mm: '%d dəqiqə',
4900            h: 'bir saat',
4901            hh: '%d saat',
4902            d: 'bir gün',
4903            dd: '%d gün',
4904            M: 'bir ay',
4905            MM: '%d ay',
4906            y: 'bir il',
4907            yy: '%d il'
4908        },
4909        meridiemParse: /gecə|səhər|gündüz|axşam/,
4910        isPM: function (input) {
4911            return /^(gündüz|axşam)$/.test(input);
4912        },
4913        meridiem: function (hour, minute, isLower) {
4914            if (hour < 4) {
4915                return 'gecə';
4916            } else if (hour < 12) {
4917                return 'səhər';
4918            } else if (hour < 17) {
4919                return 'gündüz';
4920            } else {
4921                return 'axşam';
4922            }
4923        },
4924        ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
4925        ordinal: function (number) {
4926            if (number === 0) {  // special case for zero
4927                return number + '-ıncı';
4928            }
4929            var a = number % 10,
4930                b = number % 100 - a,
4931                c = number >= 100 ? 100 : null;
4932            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
4933        },
4934        week: {
4935            dow: 1, // Monday is the first day of the week.
4936            doy: 7  // The week that contains Jan 1st is the first week of the year.
4937        }
4938    });
4939
4940    //! moment.js locale configuration
4941    //! locale : Belarusian [be]
4942    //! author : Dmitry Demidov : https://github.com/demidov91
4943    //! author: Praleska: http://praleska.pro/
4944    //! Author : Menelion Elensúle : https://github.com/Oire
4945
4946    function plural(word, num) {
4947        var forms = word.split('_');
4948        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
4949    }
4950    function relativeTimeWithPlural(number, withoutSuffix, key) {
4951        var format = {
4952            'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
4953            'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
4954            'dd': 'дзень_дні_дзён',
4955            'MM': 'месяц_месяцы_месяцаў',
4956            'yy': 'год_гады_гадоў'
4957        };
4958        if (key === 'm') {
4959            return withoutSuffix ? 'хвіліна' : 'хвіліну';
4960        }
4961        else if (key === 'h') {
4962            return withoutSuffix ? 'гадзіна' : 'гадзіну';
4963        }
4964        else {
4965            return number + ' ' + plural(format[key], +number);
4966        }
4967    }
4968
4969    hooks.defineLocale('be', {
4970        months: {
4971            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),
4972            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')
4973        },
4974        monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
4975        weekdays: {
4976            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),
4977            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
4978            isFormat: /\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/
4979        },
4980        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
4981        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
4982        longDateFormat: {
4983            LT: 'HH:mm',
4984            LTS: 'HH:mm:ss',
4985            L: 'DD.MM.YYYY',
4986            LL: 'D MMMM YYYY г.',
vendor: 5,830 bytes, lines 4987-5140
4987            LLL: 'D MMMM YYYY г., HH:mm',
4988            LLLL: 'dddd, D MMMM YYYY г., HH:mm'
4989        },
4990        calendar: {
4991            sameDay: '[Сёння ў] LT',
4992            nextDay: '[Заўтра ў] LT',
4993            lastDay: '[Учора ў] LT',
4994            nextWeek: function () {
4995                return '[У] dddd [ў] LT';
4996            },
4997            lastWeek: function () {
4998                switch (this.day()) {
4999                    case 0:
5000                    case 3:
5001                    case 5:
5002                    case 6:
5003                        return '[У мінулую] dddd [ў] LT';
5004                    case 1:
5005                    case 2:
5006                    case 4:
5007                        return '[У мінулы] dddd [ў] LT';
5008                }
5009            },
5010            sameElse: 'L'
5011        },
5012        relativeTime: {
5013            future: 'праз %s',
5014            past: '%s таму',
5015            s: 'некалькі секунд',
5016            m: relativeTimeWithPlural,
5017            mm: relativeTimeWithPlural,
5018            h: relativeTimeWithPlural,
5019            hh: relativeTimeWithPlural,
5020            d: 'дзень',
5021            dd: relativeTimeWithPlural,
5022            M: 'месяц',
5023            MM: relativeTimeWithPlural,
5024            y: 'год',
5025            yy: relativeTimeWithPlural
5026        },
5027        meridiemParse: /ночы|раніцы|дня|вечара/,
5028        isPM: function (input) {
5029            return /^(дня|вечара)$/.test(input);
5030        },
5031        meridiem: function (hour, minute, isLower) {
5032            if (hour < 4) {
5033                return 'ночы';
5034            } else if (hour < 12) {
5035                return 'раніцы';
5036            } else if (hour < 17) {
5037                return 'дня';
5038            } else {
5039                return 'вечара';
5040            }
5041        },
5042        ordinalParse: /\d{1,2}-(і|ы|га)/,
5043        ordinal: function (number, period) {
5044            switch (period) {
5045                case 'M':
5046                case 'd':
5047                case 'DDD':
5048                case 'w':
5049                case 'W':
5050                    return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';
5051                case 'D':
5052                    return number + '-га';
5053                default:
5054                    return number;
5055            }
5056        },
5057        week: {
5058            dow: 1, // Monday is the first day of the week.
5059            doy: 7  // The week that contains Jan 1st is the first week of the year.
5060        }
5061    });
5062
5063    //! moment.js locale configuration
5064    //! locale : Bulgarian [bg]
5065    //! author : Krasen Borisov : https://github.com/kraz
5066
5067    hooks.defineLocale('bg', {
5068        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
5069        monthsShort: 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
5070        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
5071        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
5072        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
5073        longDateFormat: {
5074            LT: 'H:mm',
5075            LTS: 'H:mm:ss',
5076            L: 'D.MM.YYYY',
5077            LL: 'D MMMM YYYY',
5078            LLL: 'D MMMM YYYY H:mm',
5079            LLLL: 'dddd, D MMMM YYYY H:mm'
5080        },
5081        calendar: {
5082            sameDay: '[Днес в] LT',
5083            nextDay: '[Утре в] LT',
5084            nextWeek: 'dddd [в] LT',
5085            lastDay: '[Вчера в] LT',
5086            lastWeek: function () {
5087                switch (this.day()) {
5088                    case 0:
5089                    case 3:
5090                    case 6:
5091                        return '[В изминалата] dddd [в] LT';
5092                    case 1:
5093                    case 2:
5094                    case 4:
5095                    case 5:
5096                        return '[В изминалия] dddd [в] LT';
5097                }
5098            },
5099            sameElse: 'L'
5100        },
5101        relativeTime: {
5102            future: 'след %s',
5103            past: 'преди %s',
5104            s: 'няколко секунди',
5105            m: 'минута',
5106            mm: '%d минути',
5107            h: 'час',
5108            hh: '%d часа',
5109            d: 'ден',
5110            dd: '%d дни',
5111            M: 'месец',
5112            MM: '%d месеца',
5113            y: 'година',
5114            yy: '%d години'
5115        },
5116        ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
5117        ordinal: function (number) {
5118            var lastDigit = number % 10,
5119                last2Digits = number % 100;
5120            if (number === 0) {
5121                return number + '-ев';
5122            } else if (last2Digits === 0) {
5123                return number + '-ен';
5124            } else if (last2Digits > 10 && last2Digits < 20) {
5125                return number + '-ти';
5126            } else if (lastDigit === 1) {
5127                return number + '-ви';
5128            } else if (lastDigit === 2) {
5129                return number + '-ри';
5130            } else if (lastDigit === 7 || lastDigit === 8) {
5131                return number + '-ми';
5132            } else {
5133                return number + '-ти';
5134            }
5135        },
5136        week: {
5137            dow: 1, // Monday is the first day of the week.
5138            doy: 7  // The week that contains Jan 1st is the first week of the year.
5139        }
5140    });
vendor: 9,122 bytes, lines 5141-5356
5141
5142    //! moment.js locale configuration
5143    //! locale : Bengali [bn]
5144    //! author : Kaushik Gandhi : https://github.com/kaushikgandhi
5145
5146    var symbolMap$3 = {
5147        '1': 'à§§',
5148        '2': '২',
5149        '3': 'à§©',
5150        '4': '৪',
5151        '5': 'à§«',
5152        '6': '৬',
5153        '7': 'à§­',
5154        '8': 'à§®',
5155        '9': '৯',
5156        '0': '০'
5157    };
5158    var numberMap$2 = {
5159        'à§§': '1',
5160        '২': '2',
5161        'à§©': '3',
5162        '৪': '4',
5163        'à§«': '5',
5164        '৬': '6',
5165        'à§­': '7',
5166        'à§®': '8',
5167        '৯': '9',
5168        '০': '0'
5169    };
5170
5171    hooks.defineLocale('bn', {
5172        months: 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
5173        monthsShort: 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
5174        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
5175        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
5176        weekdaysMin: 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),
5177        longDateFormat: {
5178            LT: 'A h:mm সময়',
5179            LTS: 'A h:mm:ss সময়',
5180            L: 'DD/MM/YYYY',
5181            LL: 'D MMMM YYYY',
5182            LLL: 'D MMMM YYYY, A h:mm সময়',
5183            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'
5184        },
5185        calendar: {
5186            sameDay: '[আজ] LT',
5187            nextDay: '[আগামীকাল] LT',
5188            nextWeek: 'dddd, LT',
5189            lastDay: '[গতকাল] LT',
5190            lastWeek: '[গত] dddd, LT',
5191            sameElse: 'L'
5192        },
5193        relativeTime: {
5194            future: '%s পরে',
5195            past: '%s আগে',
5196            s: 'কয়েক সেকেন্ড',
5197            m: 'এক মিনিট',
5198            mm: '%d মিনিট',
5199            h: 'এক ঘন্টা',
5200            hh: '%d ঘন্টা',
5201            d: 'এক দিন',
5202            dd: '%d দিন',
5203            M: 'এক মাস',
5204            MM: '%d মাস',
5205            y: 'এক বছর',
5206            yy: '%d বছর'
5207        },
5208        preparse: function (string) {
5209            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
5210                return numberMap$2[match];
5211            });
5212        },
5213        postformat: function (string) {
5214            return string.replace(/\d/g, function (match) {
5215                return symbolMap$3[match];
5216            });
5217        },
5218        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
5219        meridiemHour: function (hour, meridiem) {
5220            if (hour === 12) {
5221                hour = 0;
5222            }
5223            if ((meridiem === 'রাত' && hour >= 4) ||
5224                    (meridiem === 'দুপুর' && hour < 5) ||
5225                    meridiem === 'বিকাল') {
5226                return hour + 12;
5227            } else {
5228                return hour;
5229            }
5230        },
5231        meridiem: function (hour, minute, isLower) {
5232            if (hour < 4) {
5233                return 'রাত';
5234            } else if (hour < 10) {
5235                return 'সকাল';
5236            } else if (hour < 17) {
5237                return 'দুপুর';
5238            } else if (hour < 20) {
5239                return 'বিকাল';
5240            } else {
5241                return 'রাত';
5242            }
5243        },
5244        week: {
5245            dow: 0, // Sunday is the first day of the week.
5246            doy: 6  // The week that contains Jan 1st is the first week of the year.
5247        }
5248    });
5249
5250    //! moment.js locale configuration
5251    //! locale : Tibetan [bo]
5252    //! author : Thupten N. Chakrishar : https://github.com/vajradog
5253
5254    var symbolMap$4 = {
5255        '1': '༡',
5256        '2': '༢',
5257        '3': '༣',
5258        '4': '༤',
5259        '5': '༥',
5260        '6': '༦',
5261        '7': '༧',
5262        '8': '༨',
5263        '9': '༩',
5264        '0': '༠'
5265    };
5266    var numberMap$3 = {
5267        '༡': '1',
5268        '༢': '2',
5269        '༣': '3',
5270        '༤': '4',
5271        '༥': '5',
5272        '༦': '6',
5273        '༧': '7',
5274        '༨': '8',
5275        '༩': '9',
5276        '༠': '0'
5277    };
5278
5279    hooks.defineLocale('bo', {
5280        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
5281        monthsShort: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
5282        weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
5283        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
5284        weekdaysMin: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
5285        longDateFormat: {
5286            LT: 'A h:mm',
5287            LTS: 'A h:mm:ss',
5288            L: 'DD/MM/YYYY',
5289            LL: 'D MMMM YYYY',
5290            LLL: 'D MMMM YYYY, A h:mm',
5291            LLLL: 'dddd, D MMMM YYYY, A h:mm'
5292        },
5293        calendar: {
5294            sameDay: '[དི་རིང] LT',
5295            nextDay: '[སང་ཉིན] LT',
5296            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
5297            lastDay: '[ཁ་སང] LT',
5298            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
5299            sameElse: 'L'
5300        },
5301        relativeTime: {
5302            future: '%s ལ་',
5303            past: '%s སྔན་ལ',
5304            s: 'ལམ་སང',
5305            m: 'སྐར་མ་གཅིག',
5306            mm: '%d སྐར་མ',
5307            h: 'ཆུ་ཚོད་གཅིག',
5308            hh: '%d ཆུ་ཚོད',
5309            d: 'ཉིན་གཅིག',
5310            dd: '%d ཉིན་',
5311            M: 'ཟླ་བ་གཅིག',
5312            MM: '%d ཟླ་བ',
5313            y: 'ལོ་གཅིག',
5314            yy: '%d ལོ'
5315        },
5316        preparse: function (string) {
5317            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
5318                return numberMap$3[match];
5319            });
5320        },
5321        postformat: function (string) {
5322            return string.replace(/\d/g, function (match) {
5323                return symbolMap$4[match];
5324            });
5325        },
5326        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
5327        meridiemHour: function (hour, meridiem) {
5328            if (hour === 12) {
5329                hour = 0;
5330            }
5331            if ((meridiem === 'མཚན་མོ' && hour >= 4) ||
5332                    (meridiem === 'ཉིན་གུང' && hour < 5) ||
5333                    meridiem === 'དགོང་དག') {
5334                return hour + 12;
5335            } else {
5336                return hour;
5337            }
5338        },
5339        meridiem: function (hour, minute, isLower) {
5340            if (hour < 4) {
5341                return 'མཚན་མོ';
5342            } else if (hour < 10) {
5343                return 'ཞོགས་ཀས';
5344            } else if (hour < 17) {
5345                return 'ཉིན་གུང';
5346            } else if (hour < 20) {
5347                return 'དགོང་དག';
5348            } else {
5349                return 'མཚན་མོ';
5350            }
5351        },
5352        week: {
5353            dow: 0, // Sunday is the first day of the week.
5354            doy: 6  // The week that contains Jan 1st is the first week of the year.
5355        }
5356    });
vendor: 10,802 bytes, lines 5357-5661
5357
5358    //! moment.js locale configuration
5359    //! locale : Breton [br]
5360    //! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
5361
5362    function relativeTimeWithMutation(number, withoutSuffix, key) {
5363        var format = {
5364            'mm': 'munutenn',
5365            'MM': 'miz',
5366            'dd': 'devezh'
5367        };
5368        return number + ' ' + mutation(format[key], number);
5369    }
5370    function specialMutationForYears(number) {
5371        switch (lastNumber(number)) {
5372            case 1:
5373            case 3:
5374            case 4:
5375            case 5:
5376            case 9:
5377                return number + ' bloaz';
5378            default:
5379                return number + ' vloaz';
5380        }
5381    }
5382    function lastNumber(number) {
5383        if (number > 9) {
5384            return lastNumber(number % 10);
5385        }
5386        return number;
5387    }
5388    function mutation(text, number) {
5389        if (number === 2) {
5390            return softMutation(text);
5391        }
5392        return text;
5393    }
5394    function softMutation(text) {
5395        var mutationTable = {
5396            'm': 'v',
5397            'b': 'v',
5398            'd': 'z'
5399        };
5400        if (mutationTable[text.charAt(0)] === undefined) {
5401            return text;
5402        }
5403        return mutationTable[text.charAt(0)] + text.substring(1);
5404    }
5405
5406    hooks.defineLocale('br', {
5407        months: 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
5408        monthsShort: 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
5409        weekdays: 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'),
5410        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
5411        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
5412        weekdaysParseExact: true,
5413        longDateFormat: {
5414            LT: 'h[e]mm A',
5415            LTS: 'h[e]mm:ss A',
5416            L: 'DD/MM/YYYY',
5417            LL: 'D [a viz] MMMM YYYY',
5418            LLL: 'D [a viz] MMMM YYYY h[e]mm A',
5419            LLLL: 'dddd, D [a viz] MMMM YYYY h[e]mm A'
5420        },
5421        calendar: {
5422            sameDay: '[Hiziv da] LT',
5423            nextDay: '[Warc\'hoazh da] LT',
5424            nextWeek: 'dddd [da] LT',
5425            lastDay: '[Dec\'h da] LT',
5426            lastWeek: 'dddd [paset da] LT',
5427            sameElse: 'L'
5428        },
5429        relativeTime: {
5430            future: 'a-benn %s',
5431            past: '%s \'zo',
5432            s: 'un nebeud segondennoù',
5433            m: 'ur vunutenn',
5434            mm: relativeTimeWithMutation,
5435            h: 'un eur',
5436            hh: '%d eur',
5437            d: 'un devezh',
5438            dd: relativeTimeWithMutation,
5439            M: 'ur miz',
5440            MM: relativeTimeWithMutation,
5441            y: 'ur bloaz',
5442            yy: specialMutationForYears
5443        },
5444        ordinalParse: /\d{1,2}(añ|vet)/,
5445        ordinal: function (number) {
5446            var output = (number === 1) ? 'añ' : 'vet';
5447            return number + output;
5448        },
5449        week: {
5450            dow: 1, // Monday is the first day of the week.
5451            doy: 4  // The week that contains Jan 4th is the first week of the year.
5452        }
5453    });
5454
5455    //! moment.js locale configuration
5456    //! locale : Bosnian [bs]
5457    //! author : Nedim Cholich : https://github.com/frontyard
5458    //! based on (hr) translation by Bojan Marković
5459
5460    function translate(number, withoutSuffix, key) {
5461        var result = number + ' ';
5462        switch (key) {
5463            case 'm':
5464                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
5465            case 'mm':
5466                if (number === 1) {
5467                    result += 'minuta';
5468                } else if (number === 2 || number === 3 || number === 4) {
5469                    result += 'minute';
5470                } else {
5471                    result += 'minuta';
5472                }
5473                return result;
5474            case 'h':
5475                return withoutSuffix ? 'jedan sat' : 'jednog sata';
5476            case 'hh':
5477                if (number === 1) {
5478                    result += 'sat';
5479                } else if (number === 2 || number === 3 || number === 4) {
5480                    result += 'sata';
5481                } else {
5482                    result += 'sati';
5483                }
5484                return result;
5485            case 'dd':
5486                if (number === 1) {
5487                    result += 'dan';
5488                } else {
5489                    result += 'dana';
5490                }
5491                return result;
5492            case 'MM':
5493                if (number === 1) {
5494                    result += 'mjesec';
5495                } else if (number === 2 || number === 3 || number === 4) {
5496                    result += 'mjeseca';
5497                } else {
5498                    result += 'mjeseci';
5499                }
5500                return result;
5501            case 'yy':
5502                if (number === 1) {
5503                    result += 'godina';
5504                } else if (number === 2 || number === 3 || number === 4) {
5505                    result += 'godine';
5506                } else {
5507                    result += 'godina';
5508                }
5509                return result;
5510        }
5511    }
5512
5513    hooks.defineLocale('bs', {
5514        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
5515        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
5516        monthsParseExact: true,
5517        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
5518        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
5519        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
5520        weekdaysParseExact: true,
5521        longDateFormat: {
5522            LT: 'H:mm',
5523            LTS: 'H:mm:ss',
5524            L: 'DD.MM.YYYY',
5525            LL: 'D. MMMM YYYY',
5526            LLL: 'D. MMMM YYYY H:mm',
5527            LLLL: 'dddd, D. MMMM YYYY H:mm'
5528        },
5529        calendar: {
5530            sameDay: '[danas u] LT',
5531            nextDay: '[sutra u] LT',
5532            nextWeek: function () {
5533                switch (this.day()) {
5534                    case 0:
5535                        return '[u] [nedjelju] [u] LT';
5536                    case 3:
5537                        return '[u] [srijedu] [u] LT';
5538                    case 6:
5539                        return '[u] [subotu] [u] LT';
5540                    case 1:
5541                    case 2:
5542                    case 4:
5543                    case 5:
5544                        return '[u] dddd [u] LT';
5545                }
5546            },
5547            lastDay: '[jučer u] LT',
5548            lastWeek: function () {
5549                switch (this.day()) {
5550                    case 0:
5551                    case 3:
5552                        return '[prošlu] dddd [u] LT';
5553                    case 6:
5554                        return '[prošle] [subote] [u] LT';
5555                    case 1:
5556                    case 2:
5557                    case 4:
5558                    case 5:
5559                        return '[prošli] dddd [u] LT';
5560                }
5561            },
5562            sameElse: 'L'
5563        },
5564        relativeTime: {
5565            future: 'za %s',
5566            past: 'prije %s',
5567            s: 'par sekundi',
5568            m: translate,
5569            mm: translate,
5570            h: translate,
5571            hh: translate,
5572            d: 'dan',
5573            dd: translate,
5574            M: 'mjesec',
5575            MM: translate,
5576            y: 'godinu',
5577            yy: translate
5578        },
5579        ordinalParse: /\d{1,2}\./,
5580        ordinal: '%d.',
5581        week: {
5582            dow: 1, // Monday is the first day of the week.
5583            doy: 7  // The week that contains Jan 1st is the first week of the year.
5584        }
5585    });
5586
5587    //! moment.js locale configuration
5588    //! locale : Catalan [ca]
5589    //! author : Juan G. Hurtado : https://github.com/juanghurtado
5590
5591    hooks.defineLocale('ca', {
5592        months: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
5593        monthsShort: 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'),
5594        monthsParseExact: true,
5595        weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
5596        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
5597        weekdaysMin: 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'),
5598        weekdaysParseExact: true,
5599        longDateFormat: {
5600            LT: 'H:mm',
5601            LTS: 'H:mm:ss',
5602            L: 'DD/MM/YYYY',
5603            LL: 'D MMMM YYYY',
5604            LLL: 'D MMMM YYYY H:mm',
5605            LLLL: 'dddd D MMMM YYYY H:mm'
5606        },
5607        calendar: {
5608            sameDay: function () {
5609                return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5610            },
5611            nextDay: function () {
5612                return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5613            },
5614            nextWeek: function () {
5615                return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5616            },
5617            lastDay: function () {
5618                return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5619            },
5620            lastWeek: function () {
5621                return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5622            },
5623            sameElse: 'L'
5624        },
5625        relativeTime: {
5626            future: 'd\'aquí %s',
5627            past: 'fa %s',
5628            s: 'uns segons',
5629            m: 'un minut',
5630            mm: '%d minuts',
5631            h: 'una hora',
5632            hh: '%d hores',
5633            d: 'un dia',
5634            dd: '%d dies',
5635            M: 'un mes',
5636            MM: '%d mesos',
5637            y: 'un any',
5638            yy: '%d anys'
5639        },
5640        ordinalParse: /\d{1,2}(r|n|t|è|a)/,
5641        ordinal: function (number, period) {
5642            var output = (number === 1) ? 'r' :
5643                (number === 2) ? 'n' :
5644                (number === 3) ? 'r' :
5645                (number === 4) ? 't' : 'è';
5646            if (period === 'w' || period === 'W') {
5647                output = 'a';
5648            }
5649            return number + output;
5650        },
5651        week: {
5652            dow: 1, // Monday is the first day of the week.
5653            doy: 4  // The week that contains Jan 4th is the first week of the year.
5654        }
5655    });
5656
5657    //! moment.js locale configuration
5658    //! locale : Czech [cs]
5659    //! author : petrbela : https://github.com/petrbela
5660
5661    var months$3 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.
5661split('_');
5662    var monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');
5663    function plural$1(n) {
5664        return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
5665    }
5666    function translate$1(number, withoutSuffix, key, isFuture) {
5667        var result = number + ' ';
5668        switch (key) {
5669            case 's':  // a few seconds / in a few seconds / a few seconds ago
5670                return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';
5671            case 'm':  // a minute / in a minute / a minute ago
5672                return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
5673            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
5674                if (withoutSuffix || isFuture) {
5675                    return result + (plural$1(number) ? 'minuty' : 'minut');
5676                } else {
5677                    return result + 'minutami';
5678                }
5679                break;
5680            case 'h':  // an hour / in an hour / an hour ago
5681                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
5682            case 'hh': // 9 hours / in 9 hours / 9 hours ago
5683                if (withoutSuffix || isFuture) {
5684                    return result + (plural$1(number) ? 'hodiny' : 'hodin');
5685                } else {
5686                    return result + 'hodinami';
5687                }
5688                break;
5689            case 'd':  // a day / in a day / a day ago
5690                return (withoutSuffix || isFuture) ? 'den' : 'dnem';
5691            case 'dd': // 9 days / in 9 days / 9 days ago
5692                if (withoutSuffix || isFuture) {
5693                    return result + (plural$1(number) ? 'dny' : 'dní');
5694                } else {
5695                    return result + 'dny';
5696                }
5697                break;
5698            case 'M':  // a month / in a month / a month ago
5699                return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
5700            case 'MM': // 9 months / in 9 months / 9 months ago
5701                if (withoutSuffix || isFuture) {
5702                    return result + (plural$1(number) ? 'měsíce' : 'měsíců');
5703                } else {
5704                    return result + 'měsíci';
5705                }
5706                break;
5707            case 'y':  // a year / in a year / a year ago
5708                return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
5709            case 'yy': // 9 years / in 9 years / 9 years ago
5710                if (withoutSuffix || isFuture) {
5711                    return result + (plural$1(number) ? 'roky' : 'let');
5712                } else {
5713                    return result + 'lety';
5714                }
5715                break;
5716        }
5717    }
5718
5719    hooks.defineLocale('cs', {
5720        months: months$3,
5721        monthsShort: monthsShort,
5722        monthsParse: (function (months, monthsShort) {
5723            var i, _monthsParse = [];
5724            for (i = 0; i < 12; i++) {
5725                // use custom parser to solve problem with July (červenec)
5726                _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
5727            }
5728            return _monthsParse;
5729        }(months$3, monthsShort)),
5730        shortMonthsParse: (function (monthsShort) {
5731            var i, _shortMonthsParse = [];
5732            for (i = 0; i < 12; i++) {
5733                _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');
5734            }
5735            return _shortMonthsParse;
5736        }(monthsShort)),
5737        longMonthsParse: (function (months) {
5738            var i, _longMonthsParse = [];
5739            for (i = 0; i < 12; i++) {
5740                _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');
5741            }
5742            return _longMonthsParse;
5743        }(months$3)),
5744        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
5745        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
5746        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
5747        longDateFormat: {
5748            LT: 'H:mm',
5749            LTS: 'H:mm:ss',
5750            L: 'DD.MM.YYYY',
5751            LL: 'D. MMMM YYYY',
5752            LLL: 'D. MMMM YYYY H:mm',
5753            LLLL: 'dddd D. MMMM YYYY H:mm',
5754            l: 'D. M. YYYY'
5755        },
5756        calendar: {
5757            sameDay: '[dnes v] LT',
5758            nextDay: '[zítra v] LT',
5759            nextWeek: function () {
5760                switch (this.day()) {
5761                    case 0:
5762                        return '[v neděli v] LT';
5763                    case 1:
5764                    case 2:
5765                        return '[v] dddd [v] LT';
5766                    case 3:
5767                        return '[ve středu v] LT';
5768                    case 4:
5769                        return '[ve čtvrtek v] LT';
5770                    case 5:
5771                        return '[v pátek v] LT';
5772                    case 6:
5773                        return '[v sobotu v] LT';
5774                }
5775            },
5776            lastDay: '[včera v] LT',
5777            lastWeek: function () {
5778                switch (this.day()) {
5779                    case 0:
5780                        return '[minulou neděli v] LT';
5781                    case 1:
5782                    case 2:
5783                        return '[minulé] dddd [v] LT';
5784                    case 3:
5785                        return '[minulou středu v] LT';
5786                    case 4:
5787                    case 5:
5788                        return '[minulý] dddd [v] LT';
5789                    case 6:
5790                        return '[minulou sobotu v] LT';
5791                }
5792            },
5793            sameElse: 'L'
5794        },
5795        relativeTime: {
5796            future: 'za %s',
5797            past: 'před %s',
5798            s: translate$1,
5799            m: translate$1,
5800            mm: translate$1,
5801            h: translate$1,
5802            hh: translate$1,
5803            d: translate$1,
5804            dd: translate$1,
5805            M: translate$1,
5806            MM: translate$1,
5807            y: translate$1,
5808            yy: translate$1
5809        },
5810        ordinalParse: /\d{1,2}\./,
5811        ordinal: '%d.',
vendor: 4,498 bytes, lines 5812-5919
5812        week: {
5813            dow: 1, // Monday is the first day of the week.
5814            doy: 4  // The week that contains Jan 4th is the first week of the year.
5815        }
5816    });
5817
5818    //! moment.js locale configuration
5819    //! locale : Chuvash [cv]
5820    //! author : Anatoly Mironov : https://github.com/mirontoli
5821
5822    hooks.defineLocale('cv', {
5823        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),
5824        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
5825        weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),
5826        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
5827        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
5828        longDateFormat: {
5829            LT: 'HH:mm',
5830            LTS: 'HH:mm:ss',
5831            L: 'DD-MM-YYYY',
5832            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
5833            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
5834            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'
5835        },
5836        calendar: {
5837            sameDay: '[Паян] LT [сехетре]',
5838            nextDay: '[Ыран] LT [сехетре]',
5839            lastDay: '[Ӗнер] LT [сехетре]',
5840            nextWeek: '[Ҫитес] dddd LT [сехетре]',
5841            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
5842            sameElse: 'L'
5843        },
5844        relativeTime: {
5845            future: function (output) {
5846                var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';
5847                return output + affix;
5848            },
5849            past: '%s каялла',
5850            s: 'пӗр-ик ҫеккунт',
5851            m: 'пӗр минут',
5852            mm: '%d минут',
5853            h: 'пӗр сехет',
5854            hh: '%d сехет',
5855            d: 'пӗр кун',
5856            dd: '%d кун',
5857            M: 'пӗр уйӑх',
5858            MM: '%d уйӑх',
5859            y: 'пӗр ҫул',
5860            yy: '%d ҫул'
5861        },
5862        ordinalParse: /\d{1,2}-мӗш/,
5863        ordinal: '%d-мӗш',
5864        week: {
5865            dow: 1, // Monday is the first day of the week.
5866            doy: 7  // The week that contains Jan 1st is the first week of the year.
5867        }
5868    });
5869
5870    //! moment.js locale configuration
5871    //! locale : Welsh [cy]
5872    //! author : Robert Allen : https://github.com/robgallen
5873    //! author : https://github.com/ryangreaves
5874
5875    hooks.defineLocale('cy', {
5876        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
5877        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
5878        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
5879        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
5880        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
5881        weekdaysParseExact: true,
5882        // time formats are the same as en-gb
5883        longDateFormat: {
5884            LT: 'HH:mm',
5885            LTS: 'HH:mm:ss',
5886            L: 'DD/MM/YYYY',
5887            LL: 'D MMMM YYYY',
5888            LLL: 'D MMMM YYYY HH:mm',
5889            LLLL: 'dddd, D MMMM YYYY HH:mm'
5890        },
5891        calendar: {
5892            sameDay: '[Heddiw am] LT',
5893            nextDay: '[Yfory am] LT',
5894            nextWeek: 'dddd [am] LT',
5895            lastDay: '[Ddoe am] LT',
5896            lastWeek: 'dddd [diwethaf am] LT',
5897            sameElse: 'L'
5898        },
5899        relativeTime: {
5900            future: 'mewn %s',
5901            past: '%s yn ôl',
5902            s: 'ychydig eiliadau',
5903            m: 'munud',
5904            mm: '%d munud',
5905            h: 'awr',
5906            hh: '%d awr',
5907            d: 'diwrnod',
5908            dd: '%d diwrnod',
5909            M: 'mis',
5910            MM: '%d mis',
5911            y: 'blwyddyn',
5912            yy: '%d flynedd'
5913        },
5914        ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
5915        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
5916        ordinal: function (number) {
5917            var b = number,
5918                output = '',
5919                lookup = [
vendor: 16,508 bytes, lines 5920-6350
5920                    '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
5921                    'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
5922                ];
5923            if (b > 20) {
5924                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
5925                    output = 'fed'; // not 30ain, 70ain or 90ain
5926                } else {
5927                    output = 'ain';
5928                }
5929            } else if (b > 0) {
5930                output = lookup[b];
5931            }
5932            return number + output;
5933        },
5934        week: {
5935            dow: 1, // Monday is the first day of the week.
5936            doy: 4  // The week that contains Jan 4th is the first week of the year.
5937        }
5938    });
5939
5940    //! moment.js locale configuration
5941    //! locale : Danish [da]
5942    //! author : Ulrik Nielsen : https://github.com/mrbase
5943
5944    hooks.defineLocale('da', {
5945        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
5946        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
5947        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
5948        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
5949        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
5950        longDateFormat: {
5951            LT: 'HH:mm',
5952            LTS: 'HH:mm:ss',
5953            L: 'DD/MM/YYYY',
5954            LL: 'D. MMMM YYYY',
5955            LLL: 'D. MMMM YYYY HH:mm',
5956            LLLL: 'dddd [d.] D. MMMM YYYY HH:mm'
5957        },
5958        calendar: {
5959            sameDay: '[I dag kl.] LT',
5960            nextDay: '[I morgen kl.] LT',
5961            nextWeek: 'dddd [kl.] LT',
5962            lastDay: '[I går kl.] LT',
5963            lastWeek: '[sidste] dddd [kl] LT',
5964            sameElse: 'L'
5965        },
5966        relativeTime: {
5967            future: 'om %s',
5968            past: '%s siden',
5969            s: 'få sekunder',
5970            m: 'et minut',
5971            mm: '%d minutter',
5972            h: 'en time',
5973            hh: '%d timer',
5974            d: 'en dag',
5975            dd: '%d dage',
5976            M: 'en måned',
5977            MM: '%d måneder',
5978            y: 'et år',
5979            yy: '%d år'
5980        },
5981        ordinalParse: /\d{1,2}\./,
5982        ordinal: '%d.',
5983        week: {
5984            dow: 1, // Monday is the first day of the week.
5985            doy: 4  // The week that contains Jan 4th is the first week of the year.
5986        }
5987    });
5988
5989    //! moment.js locale configuration
5990    //! locale : German (Austria) [de-at]
5991    //! author : lluchs : https://github.com/lluchs
5992    //! author: Menelion Elensúle: https://github.com/Oire
5993    //! author : Martin Groller : https://github.com/MadMG
5994    //! author : Mikolaj Dadela : https://github.com/mik01aj
5995
5996    function processRelativeTime(number, withoutSuffix, key, isFuture) {
5997        var format = {
5998            'm': ['eine Minute', 'einer Minute'],
5999            'h': ['eine Stunde', 'einer Stunde'],
6000            'd': ['ein Tag', 'einem Tag'],
6001            'dd': [number + ' Tage', number + ' Tagen'],
6002            'M': ['ein Monat', 'einem Monat'],
6003            'MM': [number + ' Monate', number + ' Monaten'],
6004            'y': ['ein Jahr', 'einem Jahr'],
6005            'yy': [number + ' Jahre', number + ' Jahren']
6006        };
6007        return withoutSuffix ? format[key][0] : format[key][1];
6008    }
6009
6010    hooks.defineLocale('de-at', {
6011        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6012        monthsShort: 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
6013        monthsParseExact: true,
6014        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6015        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6016        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6017        weekdaysParseExact: true,
6018        longDateFormat: {
6019            LT: 'HH:mm',
6020            LTS: 'HH:mm:ss',
6021            L: 'DD.MM.YYYY',
6022            LL: 'D. MMMM YYYY',
6023            LLL: 'D. MMMM YYYY HH:mm',
6024            LLLL: 'dddd, D. MMMM YYYY HH:mm'
6025        },
6026        calendar: {
6027            sameDay: '[heute um] LT [Uhr]',
6028            sameElse: 'L',
6029            nextDay: '[morgen um] LT [Uhr]',
6030            nextWeek: 'dddd [um] LT [Uhr]',
6031            lastDay: '[gestern um] LT [Uhr]',
6032            lastWeek: '[letzten] dddd [um] LT [Uhr]'
6033        },
6034        relativeTime: {
6035            future: 'in %s',
6036            past: 'vor %s',
6037            s: 'ein paar Sekunden',
6038            m: processRelativeTime,
6039            mm: '%d Minuten',
6040            h: processRelativeTime,
6041            hh: '%d Stunden',
6042            d: processRelativeTime,
6043            dd: processRelativeTime,
6044            M: processRelativeTime,
6045            MM: processRelativeTime,
6046            y: processRelativeTime,
6047            yy: processRelativeTime
6048        },
6049        ordinalParse: /\d{1,2}\./,
6050        ordinal: '%d.',
6051        week: {
6052            dow: 1, // Monday is the first day of the week.
6053            doy: 4  // The week that contains Jan 4th is the first week of the year.
6054        }
6055    });
6056
6057    //! moment.js locale configuration
6058    //! locale : German [de]
6059    //! author : lluchs : https://github.com/lluchs
6060    //! author: Menelion Elensúle: https://github.com/Oire
6061    //! author : Mikolaj Dadela : https://github.com/mik01aj
6062
6063    function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
6064        var format = {
6065            'm': ['eine Minute', 'einer Minute'],
6066            'h': ['eine Stunde', 'einer Stunde'],
6067            'd': ['ein Tag', 'einem Tag'],
6068            'dd': [number + ' Tage', number + ' Tagen'],
6069            'M': ['ein Monat', 'einem Monat'],
6070            'MM': [number + ' Monate', number + ' Monaten'],
6071            'y': ['ein Jahr', 'einem Jahr'],
6072            'yy': [number + ' Jahre', number + ' Jahren']
6073        };
6074        return withoutSuffix ? format[key][0] : format[key][1];
6075    }
6076
6077    hooks.defineLocale('de', {
6078        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6079        monthsShort: 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
6080        monthsParseExact: true,
6081        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6082        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6083        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6084        weekdaysParseExact: true,
6085        longDateFormat: {
6086            LT: 'HH:mm',
6087            LTS: 'HH:mm:ss',
6088            L: 'DD.MM.YYYY',
6089            LL: 'D. MMMM YYYY',
6090            LLL: 'D. MMMM YYYY HH:mm',
6091            LLLL: 'dddd, D. MMMM YYYY HH:mm'
6092        },
6093        calendar: {
6094            sameDay: '[heute um] LT [Uhr]',
6095            sameElse: 'L',
6096            nextDay: '[morgen um] LT [Uhr]',
6097            nextWeek: 'dddd [um] LT [Uhr]',
6098            lastDay: '[gestern um] LT [Uhr]',
6099            lastWeek: '[letzten] dddd [um] LT [Uhr]'
6100        },
6101        relativeTime: {
6102            future: 'in %s',
6103            past: 'vor %s',
6104            s: 'ein paar Sekunden',
6105            m: processRelativeTime$1,
6106            mm: '%d Minuten',
6107            h: processRelativeTime$1,
6108            hh: '%d Stunden',
6109            d: processRelativeTime$1,
6110            dd: processRelativeTime$1,
6111            M: processRelativeTime$1,
6112            MM: processRelativeTime$1,
6113            y: processRelativeTime$1,
6114            yy: processRelativeTime$1
6115        },
6116        ordinalParse: /\d{1,2}\./,
6117        ordinal: '%d.',
6118        week: {
6119            dow: 1, // Monday is the first day of the week.
6120            doy: 4  // The week that contains Jan 4th is the first week of the year.
6121        }
6122    });
6123
6124    //! moment.js locale configuration
6125    //! locale : Maldivian [dv]
6126    //! author : Jawish Hameed : https://github.com/jawish
6127
6128    var months$4 = [
6129        'ޖެނުއަރީ',
6130        'ފެބްރުއަރީ',
6131        'މާރިޗު',
6132        'އޭޕްރީލު',
6133        'މޭ',
6134        'ޖޫން',
6135        'ޖުލައި',
6136        'އޯގަސްޓު',
6137        'ސެޕްޓެމްބަރު',
6138        'އޮކްޓޯބަރު',
6139        'ނޮވެމްބަރު',
6140        'ޑިސެމްބަރު'
6141    ];
6142    var weekdays = [
6143        'އާދިއްތަ',
6144        'ހޯމަ',
6145        'އަންގާރަ',
6146        'ބުދަ',
6147        'ބުރާސްފަތި',
6148        'ހުކުރު',
6149        'ހޮނިހިރު'
6150    ];
6151
6152    hooks.defineLocale('dv', {
6153        months: months$4,
6154        monthsShort: months$4,
6155        weekdays: weekdays,
6156        weekdaysShort: weekdays,
6157        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
6158        longDateFormat: {
6159
6160            LT: 'HH:mm',
6161            LTS: 'HH:mm:ss',
6162            L: 'D/M/YYYY',
6163            LL: 'D MMMM YYYY',
6164            LLL: 'D MMMM YYYY HH:mm',
6165            LLLL: 'dddd D MMMM YYYY HH:mm'
6166        },
6167        meridiemParse: /މކ|މފ/,
6168        isPM: function (input) {
6169            return 'މފ' === input;
6170        },
6171        meridiem: function (hour, minute, isLower) {
6172            if (hour < 12) {
6173                return 'މކ';
6174            } else {
6175                return 'މފ';
6176            }
6177        },
6178        calendar: {
6179            sameDay: '[މިއަދު] LT',
6180            nextDay: '[މާދަމާ] LT',
6181            nextWeek: 'dddd LT',
6182            lastDay: '[އިއްޔެ] LT',
6183            lastWeek: '[ފާއިތުވި] dddd LT',
6184            sameElse: 'L'
6185        },
6186        relativeTime: {
6187            future: 'ތެރޭގައި %s',
6188            past: 'ކުރިން %s',
6189            s: 'ސިކުންތުކޮޅެއް',
6190            m: 'މިނިޓެއް',
6191            mm: 'މިނިޓު %d',
6192            h: 'ގަޑިއިރެއް',
6193            hh: 'ގަޑިއިރު %d',
6194            d: 'ދުވަހެއް',
6195            dd: 'ދުވަސް %d',
6196            M: 'މަހެއް',
6197            MM: 'މަސް %d',
6198            y: 'އަހަރެއް',
6199            yy: 'އަހަރު %d'
6200        },
6201        preparse: function (string) {
6202            return string.replace(/،/g, ',');
6203        },
6204        postformat: function (string) {
6205            return string.replace(/,/g, '،');
6206        },
6207        week: {
6208            dow: 7,  // Sunday is the first day of the week.
6209            doy: 12  // The week that contains Jan 1st is the first week of the year.
6210        }
6211    });
6212
6213    //! moment.js locale configuration
6214    //! locale : Greek [el]
6215    //! author : Aggelos Karalias : https://github.com/mehiel
6216
6217    hooks.defineLocale('el', {
6218        monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
6219        monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
6220        months: function (momentToFormat, format) {
6221            if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'
6222                return this._monthsGenitiveEl[momentToFormat.month()];
6223            } else {
6224                return this._monthsNominativeEl[momentToFormat.month()];
6225            }
6226        },
6227        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
6228        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),
6229        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
6230        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
6231        meridiem: function (hours, minutes, isLower) {
6232            if (hours > 11) {
6233                return isLower ? 'μμ' : 'ΜΜ';
6234            } else {
6235                return isLower ? 'πμ' : 'ΠΜ';
6236            }
6237        },
6238        isPM: function (input) {
6239            return ((input + '').toLowerCase()[0] === 'μ');
6240        },
6241        meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
6242        longDateFormat: {
6243            LT: 'h:mm A',
6244            LTS: 'h:mm:ss A',
6245            L: 'DD/MM/YYYY',
6246            LL: 'D MMMM YYYY',
6247            LLL: 'D MMMM YYYY h:mm A',
6248            LLLL: 'dddd, D MMMM YYYY h:mm A'
6249        },
6250        calendarEl: {
6251            sameDay: '[Σήμερα {}] LT',
6252            nextDay: '[Αύριο {}] LT',
6253            nextWeek: 'dddd [{}] LT',
6254            lastDay: '[Χθες {}] LT',
6255            lastWeek: function () {
6256                switch (this.day()) {
6257                    case 6:
6258                        return '[το προηγούμενο] dddd [{}] LT';
6259                    default:
6260                        return '[την προηγούμενη] dddd [{}] LT';
6261                }
6262            },
6263            sameElse: 'L'
6264        },
6265        calendar: function (key, mom) {
6266            var output = this._calendarEl[key],
6267                hours = mom && mom.hours();
6268            if (isFunction(output)) {
6269                output = output.apply(mom);
6270            }
6271            return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));
6272        },
6273        relativeTime: {
6274            future: 'σε %s',
6275            past: '%s πριν',
6276            s: 'λίγα δευτερόλεπτα',
6277            m: 'ένα λεπτό',
6278            mm: '%d λεπτά',
6279            h: 'μία ώρα',
6280            hh: '%d ώρες',
6281            d: 'μία μέρα',
6282            dd: '%d μέρες',
6283            M: 'ένας μήνας',
6284            MM: '%d μήνες',
6285            y: 'ένας χρόνος',
6286            yy: '%d χρόνια'
6287        },
6288        ordinalParse: /\d{1,2}η/,
6289        ordinal: '%dη',
6290        week: {
6291            dow: 1, // Monday is the first day of the week.
6292            doy: 4  // The week that contains Jan 4st is the first week of the year.
6293        }
6294    });
6295
6296    //! moment.js locale configuration
6297    //! locale : English (Australia) [en-au]
6298    //! author : Jared Morse : https://github.com/jarcoal
6299
6300    hooks.defineLocale('en-au', {
6301        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6302        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6303        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6304        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6305        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6306        longDateFormat: {
6307            LT: 'h:mm A',
6308            LTS: 'h:mm:ss A',
6309            L: 'DD/MM/YYYY',
6310            LL: 'D MMMM YYYY',
6311            LLL: 'D MMMM YYYY h:mm A',
6312            LLLL: 'dddd, D MMMM YYYY h:mm A'
6313        },
6314        calendar: {
6315            sameDay: '[Today at] LT',
6316            nextDay: '[Tomorrow at] LT',
6317            nextWeek: 'dddd [at] LT',
6318            lastDay: '[Yesterday at] LT',
6319            lastWeek: '[Last] dddd [at] LT',
6320            sameElse: 'L'
6321        },
6322        relativeTime: {
6323            future: 'in %s',
6324            past: '%s ago',
6325            s: 'a few seconds',
6326            m: 'a minute',
6327            mm: '%d minutes',
6328            h: 'an hour',
6329            hh: '%d hours',
6330            d: 'a day',
6331            dd: '%d days',
6332            M: 'a month',
6333            MM: '%d months',
6334            y: 'a year',
6335            yy: '%d years'
6336        },
6337        ordinalParse: /\d{1,2}(st|nd|rd|th)/,
6338        ordinal: function (number) {
6339            var b = number % 10,
6340                output = (~~(number % 100 / 10) === 1) ? 'th' :
6341                (b === 1) ? 'st' :
6342                (b === 2) ? 'nd' :
6343                (b === 3) ? 'rd' : 'th';
6344            return number + output;
6345        },
6346        week: {
6347            dow: 1, // Monday is the first day of the week.
6348            doy: 4  // The week that contains Jan 4th is the first week of the year.
6349        }
6350    });
6351
6352    //! moment.js locale configuration
6353    //! locale : English (Canada) [en-ca]
6354    //! author : Jonathan Abourbih : https://github.com/jonbca
6355
6356    hooks.defineLocale('en-ca', {
6357        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6358        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6359        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6360        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6361        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6362        longDateFormat: {
6363            LT: 'h:mm A',
6364            LTS: 'h:mm:ss A',
6365            L: 'YYYY-MM-DD',
6366            LL: 'MMMM D, YYYY',
6367            LLL: 'MMMM D, YYYY h:mm A',
6368            LLLL: 'dddd, MMMM D, YYYY h:mm A'
6369        },
6370        calendar: {
6371            sameDay: '[Today at] LT',
6372            nextDay: '[Tomorrow at] LT',
6373            nextWeek: 'dddd [at] LT',
6374            lastDay: '[Yesterday at] LT',
6375            lastWeek: '[Last] dddd [at] LT',
6376            sameElse: 'L'
6377        },
6378        relativeTime: {
6379            future: 'in %s',
6380            past: '%s ago',
6381            s: 'a few seconds',
6382            m: 'a minute',
6383            mm: '%d minutes',
6384            h: 'an hour',
6385            hh: '%d hours',
6386            d: 'a day',
6387            dd: '%d days',
6388            M: 'a month',
6389            MM: '%d months',
6390            y: 'a year',
6391            yy: '%d years'
6392        },
6393        ordinalParse: /\d{1,2}(st|nd|rd|th)/,
6394        ordinal: function (number) {
6395            var b = number % 10,
6396                output = (~~(number % 100 / 10) === 1) ? 'th' :
6397                (b === 1) ? 'st' :
6398                (b === 2) ? 'nd' :
6399                (b === 3) ? 'rd' : 'th';
6400            return number + output;
6401        }
6402    });
6403
6404    //! moment.js locale configuration
6405    //! locale : English (United Kingdom) [en-gb]
6406    //! author : Chris Gedrim : https://github.com/chrisgedrim
6407
6408    hooks.defineLocale('en-gb', {
6409        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6410        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6411        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6412        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6413        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6414        longDateFormat: {
6415            LT: 'HH:mm',
6416            LTS: 'HH:mm:ss',
6417            L: 'DD/MM/YYYY',
6418            LL: 'D MMMM YYYY',
6419            LLL: 'D MMMM YYYY HH:mm',
6420            LLLL: 'dddd, D MMMM YYYY HH:mm'
6421        },
6422        calendar: {
6423            sameDay: '[Today at] LT',
6424            nextDay: '[Tomorrow at] LT',
6425            nextWeek: 'dddd [at] LT',
6426            lastDay: '[Yesterday at] LT',
6427            lastWeek: '[Last] dddd [at] LT',
6428            sameElse: 'L'
6429        },
6430        relativeTime: {
6431            future: 'in %s',
6432            past: '%s ago',
6433            s: 'a few seconds',
6434            m: 'a minute',
6435            mm: '%d minutes',
6436            h: 'an hour',
6437            hh: '%d hours',
6438            d: 'a day',
6439            dd: '%d days',
6440            M: 'a month',
6441            MM: '%d months',
6442            y: 'a year',
6443            yy: '%d years'
6444        },
6445        ordinalParse: /\d{1,2}(st|nd|rd|th)/,
6446        ordinal: function (number) {
6447            var b = number % 10,
6448                output = (~~(number % 100 / 10) === 1) ? 'th' :
6449                (b === 1) ? 'st' :
6450                (b === 2) ? 'nd' :
6451                (b === 3) ? 'rd' : 'th';
6452            return number + output;
6453        },
6454        week: {
6455            dow: 1, // Monday is the first day of the week.
6456            doy: 4  // The week that contains Jan 4th is the first week of the year.
6457        }
6458    });
6459
6460    //! moment.js locale configuration
6461    //! locale : English (Ireland) [en-ie]
6462    //! author : Chris Cartlidge : https://github.com/chriscartlidge
6463
6464    hooks.defineLocale('en-ie', {
6465        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6466        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6467        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6468        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6469        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6470        longDateFormat: {
6471            LT: 'HH:mm',
6472            LTS: 'HH:mm:ss',
6473            L: 'DD-MM-YYYY',
6474            LL: 'D MMMM YYYY',
6475            LLL: 'D MMMM YYYY HH:mm',
6476            LLLL: 'dddd D MMMM YYYY HH:mm'
6477        },
6478        calendar: {
6479            sameDay: '[Today at] LT',
6480            nextDay: '[Tomorrow at] LT',
6481            nextWeek: 'dddd [at] LT',
6482            lastDay: '[Yesterday at] LT',
6483            lastWeek: '[Last] dddd [at] LT',
6484            sameElse: 'L'
6485        },
6486        relativeTime: {
6487            future: 'in %s',
6488            past: '%s ago',
6489            s: 'a few seconds',
6490            m: 'a minute',
6491            mm: '%d minutes',
6492            h: 'an hour',
6493            hh: '%d hours',
6494            d: 'a day',
6495            dd: '%d days',
6496            M: 'a month',
6497            MM: '%d months',
6498            y: 'a year',
6499            yy: '%d years'
6500        },
6501        ordinalParse: /\d{1,2}(st|nd|rd|th)/,
6502        ordinal: function (number) {
6503            var b = number % 10,
6504                output = (~~(number % 100 / 10) === 1) ? 'th' :
6505                (b === 1) ? 'st' :
6506                (b === 2) ? 'nd' :
6507                (b === 3) ? 'rd' : 'th';
6508            return number + output;
6509        },
6510        week: {
6511            dow: 1, // Monday is the first day of the week.
6512            doy: 4  // The week that contains Jan 4th is the first week of the year.
6513        }
6514    });
vendor: 21,571 bytes, lines 6515-7082
6515
6516    //! moment.js locale configuration
6517    //! locale : English (New Zealand) [en-nz]
6518    //! author : Luke McGregor : https://github.com/lukemcgregor
6519
6520    hooks.defineLocale('en-nz', {
6521        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6522        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6523        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6524        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6525        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6526        longDateFormat: {
6527            LT: 'h:mm A',
6528            LTS: 'h:mm:ss A',
6529            L: 'DD/MM/YYYY',
6530            LL: 'D MMMM YYYY',
6531            LLL: 'D MMMM YYYY h:mm A',
6532            LLLL: 'dddd, D MMMM YYYY h:mm A'
6533        },
6534        calendar: {
6535            sameDay: '[Today at] LT',
6536            nextDay: '[Tomorrow at] LT',
6537            nextWeek: 'dddd [at] LT',
6538            lastDay: '[Yesterday at] LT',
6539            lastWeek: '[Last] dddd [at] LT',
6540            sameElse: 'L'
6541        },
6542        relativeTime: {
6543            future: 'in %s',
6544            past: '%s ago',
6545            s: 'a few seconds',
6546            m: 'a minute',
6547            mm: '%d minutes',
6548            h: 'an hour',
6549            hh: '%d hours',
6550            d: 'a day',
6551            dd: '%d days',
6552            M: 'a month',
6553            MM: '%d months',
6554            y: 'a year',
6555            yy: '%d years'
6556        },
6557        ordinalParse: /\d{1,2}(st|nd|rd|th)/,
6558        ordinal: function (number) {
6559            var b = number % 10,
6560                output = (~~(number % 100 / 10) === 1) ? 'th' :
6561                (b === 1) ? 'st' :
6562                (b === 2) ? 'nd' :
6563                (b === 3) ? 'rd' : 'th';
6564            return number + output;
6565        },
6566        week: {
6567            dow: 1, // Monday is the first day of the week.
6568            doy: 4  // The week that contains Jan 4th is the first week of the year.
6569        }
6570    });
6571
6572    //! moment.js locale configuration
6573    //! locale : Esperanto [eo]
6574    //! author : Colin Dean : https://github.com/colindean
6575    //! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
6576    //!          Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
6577
6578    hooks.defineLocale('eo', {
6579        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro'.split('_'),
6580        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aÅ­g_sep_okt_nov_dec'.split('_'),
6581        weekdays: 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'),
6582        weekdaysShort: 'Dim_Lun_Mard_Merk_Ä´aÅ­_Ven_Sab'.split('_'),
6583        weekdaysMin: 'Di_Lu_Ma_Me_Ä´a_Ve_Sa'.split('_'),
6584        longDateFormat: {
6585            LT: 'HH:mm',
6586            LTS: 'HH:mm:ss',
6587            L: 'YYYY-MM-DD',
6588            LL: 'D[-an de] MMMM, YYYY',
6589            LLL: 'D[-an de] MMMM, YYYY HH:mm',
6590            LLLL: 'dddd, [la] D[-an de] MMMM, YYYY HH:mm'
6591        },
6592        meridiemParse: /[ap]\.t\.m/i,
6593        isPM: function (input) {
6594            return input.charAt(0).toLowerCase() === 'p';
6595        },
6596        meridiem: function (hours, minutes, isLower) {
6597            if (hours > 11) {
6598                return isLower ? 'p.t.m.' : 'P.T.M.';
6599            } else {
6600                return isLower ? 'a.t.m.' : 'A.T.M.';
6601            }
6602        },
6603        calendar: {
6604            sameDay: '[HodiaÅ­ je] LT',
6605            nextDay: '[MorgaÅ­ je] LT',
6606            nextWeek: 'dddd [je] LT',
6607            lastDay: '[HieraÅ­ je] LT',
6608            lastWeek: '[pasinta] dddd [je] LT',
6609            sameElse: 'L'
6610        },
6611        relativeTime: {
6612            future: 'je %s',
6613            past: 'antaÅ­ %s',
6614            s: 'sekundoj',
6615            m: 'minuto',
6616            mm: '%d minutoj',
6617            h: 'horo',
6618            hh: '%d horoj',
6619            d: 'tago',//ne 'diurno', ĉar estas uzita por proksimumo
6620            dd: '%d tagoj',
6621            M: 'monato',
6622            MM: '%d monatoj',
6623            y: 'jaro',
6624            yy: '%d jaroj'
6625        },
6626        ordinalParse: /\d{1,2}a/,
6627        ordinal: '%da',
6628        week: {
6629            dow: 1, // Monday is the first day of the week.
6630            doy: 7  // The week that contains Jan 1st is the first week of the year.
6631        }
6632    });
6633
6634    //! moment.js locale configuration
6635    //! locale : Spanish (Dominican Republic) [es-do]
6636
6637    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');
6638    var monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
6639
6640    hooks.defineLocale('es-do', {
6641        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
6642        monthsShort: function (m, format) {
6643            if (/-MMM-/.test(format)) {
6644                return monthsShort$1[m.month()];
6645            } else {
6646                return monthsShortDot[m.month()];
6647            }
6648        },
6649        monthsParseExact: true,
6650        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
6651        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
6652        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
6653        weekdaysParseExact: true,
6654        longDateFormat: {
6655            LT: 'h:mm A',
6656            LTS: 'h:mm:ss A',
6657            L: 'DD/MM/YYYY',
6658            LL: 'D [de] MMMM [de] YYYY',
6659            LLL: 'D [de] MMMM [de] YYYY h:mm A',
6660            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'
6661        },
6662        calendar: {
6663            sameDay: function () {
6664                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6665            },
6666            nextDay: function () {
6667                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6668            },
6669            nextWeek: function () {
6670                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6671            },
6672            lastDay: function () {
6673                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6674            },
6675            lastWeek: function () {
6676                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6677            },
6678            sameElse: 'L'
6679        },
6680        relativeTime: {
6681            future: 'en %s',
6682            past: 'hace %s',
6683            s: 'unos segundos',
6684            m: 'un minuto',
6685            mm: '%d minutos',
6686            h: 'una hora',
6687            hh: '%d horas',
6688            d: 'un día',
6689            dd: '%d días',
6690            M: 'un mes',
6691            MM: '%d meses',
6692            y: 'un año',
6693            yy: '%d años'
6694        },
6695        ordinalParse: /\d{1,2}º/,
6696        ordinal: '%dº',
6697        week: {
6698            dow: 1, // Monday is the first day of the week.
6699            doy: 4  // The week that contains Jan 4th is the first week of the year.
6700        }
6701    });
6702
6703    //! moment.js locale configuration
6704    //! locale : Spanish [es]
6705    //! author : Julio Napurí : https://github.com/julionc
6706
6707    var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');
6708    var monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
6709
6710    hooks.defineLocale('es', {
6711        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
6712        monthsShort: function (m, format) {
6713            if (/-MMM-/.test(format)) {
6714                return monthsShort$2[m.month()];
6715            } else {
6716                return monthsShortDot$1[m.month()];
6717            }
6718        },
6719        monthsParseExact: true,
6720        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
6721        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
6722        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
6723        weekdaysParseExact: true,
6724        longDateFormat: {
6725            LT: 'H:mm',
6726            LTS: 'H:mm:ss',
6727            L: 'DD/MM/YYYY',
6728            LL: 'D [de] MMMM [de] YYYY',
6729            LLL: 'D [de] MMMM [de] YYYY H:mm',
6730            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'
6731        },
6732        calendar: {
6733            sameDay: function () {
6734                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6735            },
6736            nextDay: function () {
6737                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6738            },
6739            nextWeek: function () {
6740                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6741            },
6742            lastDay: function () {
6743                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6744            },
6745            lastWeek: function () {
6746                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6747            },
6748            sameElse: 'L'
6749        },
6750        relativeTime: {
6751            future: 'en %s',
6752            past: 'hace %s',
6753            s: 'unos segundos',
6754            m: 'un minuto',
6755            mm: '%d minutos',
6756            h: 'una hora',
6757            hh: '%d horas',
6758            d: 'un día',
6759            dd: '%d días',
6760            M: 'un mes',
6761            MM: '%d meses',
6762            y: 'un año',
6763            yy: '%d años'
6764        },
6765        ordinalParse: /\d{1,2}º/,
6766        ordinal: '%dº',
6767        week: {
6768            dow: 1, // Monday is the first day of the week.
6769            doy: 4  // The week that contains Jan 4th is the first week of the year.
6770        }
6771    });
6772
6773    //! moment.js locale configuration
6774    //! locale : Estonian [et]
6775    //! author : Henry Kehlmann : https://github.com/madhenry
6776    //! improvements : Illimar Tambek : https://github.com/ragulka
6777
6778    function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
6779        var format = {
6780            's': ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
6781            'm': ['ühe minuti', 'üks minut'],
6782            'mm': [number + ' minuti', number + ' minutit'],
6783            'h': ['ühe tunni', 'tund aega', 'üks tund'],
6784            'hh': [number + ' tunni', number + ' tundi'],
6785            'd': ['ühe päeva', 'üks päev'],
6786            'M': ['kuu aja', 'kuu aega', 'üks kuu'],
6787            'MM': [number + ' kuu', number + ' kuud'],
6788            'y': ['ühe aasta', 'aasta', 'üks aasta'],
6789            'yy': [number + ' aasta', number + ' aastat']
6790        };
6791        if (withoutSuffix) {
6792            return format[key][2] ? format[key][2] : format[key][1];
6793        }
6794        return isFuture ? format[key][0] : format[key][1];
6795    }
6796
6797    hooks.defineLocale('et', {
6798        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
6799        monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
6800        weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
6801        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
6802        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
6803        longDateFormat: {
6804            LT: 'H:mm',
6805            LTS: 'H:mm:ss',
6806            L: 'DD.MM.YYYY',
6807            LL: 'D. MMMM YYYY',
6808            LLL: 'D. MMMM YYYY H:mm',
6809            LLLL: 'dddd, D. MMMM YYYY H:mm'
6810        },
6811        calendar: {
6812            sameDay: '[Täna,] LT',
6813            nextDay: '[Homme,] LT',
6814            nextWeek: '[Järgmine] dddd LT',
6815            lastDay: '[Eile,] LT',
6816            lastWeek: '[Eelmine] dddd LT',
6817            sameElse: 'L'
6818        },
6819        relativeTime: {
6820            future: '%s pärast',
6821            past: '%s tagasi',
6822            s: processRelativeTime$2,
6823            m: processRelativeTime$2,
6824            mm: processRelativeTime$2,
6825            h: processRelativeTime$2,
6826            hh: processRelativeTime$2,
6827            d: processRelativeTime$2,
6828            dd: '%d päeva',
6829            M: processRelativeTime$2,
6830            MM: processRelativeTime$2,
6831            y: processRelativeTime$2,
6832            yy: processRelativeTime$2
6833        },
6834        ordinalParse: /\d{1,2}\./,
6835        ordinal: '%d.',
6836        week: {
6837            dow: 1, // Monday is the first day of the week.
6838            doy: 4  // The week that contains Jan 4th is the first week of the year.
6839        }
6840    });
6841
6842    //! moment.js locale configuration
6843    //! locale : Basque [eu]
6844    //! author : Eneko Illarramendi : https://github.com/eillarra
6845
6846    hooks.defineLocale('eu', {
6847        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
6848        monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
6849        monthsParseExact: true,
6850        weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
6851        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
6852        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
6853        weekdaysParseExact: true,
6854        longDateFormat: {
6855            LT: 'HH:mm',
6856            LTS: 'HH:mm:ss',
6857            L: 'YYYY-MM-DD',
6858            LL: 'YYYY[ko] MMMM[ren] D[a]',
6859            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
6860            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
6861            l: 'YYYY-M-D',
6862            ll: 'YYYY[ko] MMM D[a]',
6863            lll: 'YYYY[ko] MMM D[a] HH:mm',
6864            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm'
6865        },
6866        calendar: {
6867            sameDay: '[gaur] LT[etan]',
6868            nextDay: '[bihar] LT[etan]',
6869            nextWeek: 'dddd LT[etan]',
6870            lastDay: '[atzo] LT[etan]',
6871            lastWeek: '[aurreko] dddd LT[etan]',
6872            sameElse: 'L'
6873        },
6874        relativeTime: {
6875            future: '%s barru',
6876            past: 'duela %s',
6877            s: 'segundo batzuk',
6878            m: 'minutu bat',
6879            mm: '%d minutu',
6880            h: 'ordu bat',
6881            hh: '%d ordu',
6882            d: 'egun bat',
6883            dd: '%d egun',
6884            M: 'hilabete bat',
6885            MM: '%d hilabete',
6886            y: 'urte bat',
6887            yy: '%d urte'
6888        },
6889        ordinalParse: /\d{1,2}\./,
6890        ordinal: '%d.',
6891        week: {
6892            dow: 1, // Monday is the first day of the week.
6893            doy: 7  // The week that contains Jan 1st is the first week of the year.
6894        }
6895    });
6896
6897    //! moment.js locale configuration
6898    //! locale : Persian [fa]
6899    //! author : Ebrahim Byagowi : https://github.com/ebraminio
6900
6901    var symbolMap$5 = {
6902        '1': 'Û±',
6903        '2': 'Û²',
6904        '3': 'Û³',
6905        '4': 'Û´',
6906        '5': 'Ûµ',
6907        '6': 'Û¶',
6908        '7': 'Û·',
6909        '8': 'Û¸',
6910        '9': 'Û¹',
6911        '0': 'Û°'
6912    };
6913    var numberMap$4 = {
6914        'Û±': '1',
6915        'Û²': '2',
6916        'Û³': '3',
6917        'Û´': '4',
6918        'Ûµ': '5',
6919        'Û¶': '6',
6920        'Û·': '7',
6921        'Û¸': '8',
6922        'Û¹': '9',
6923        'Û°': '0'
6924    };
6925
6926    hooks.defineLocale('fa', {
6927        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
6928        monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
6929        weekdays: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
6930        weekdaysShort: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
6931        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
6932        weekdaysParseExact: true,
6933        longDateFormat: {
6934            LT: 'HH:mm',
6935            LTS: 'HH:mm:ss',
6936            L: 'DD/MM/YYYY',
6937            LL: 'D MMMM YYYY',
6938            LLL: 'D MMMM YYYY HH:mm',
6939            LLLL: 'dddd, D MMMM YYYY HH:mm'
6940        },
6941        meridiemParse: /قبل از ظهر|بعد از ظهر/,
6942        isPM: function (input) {
6943            return /بعد از ظهر/.test(input);
6944        },
6945        meridiem: function (hour, minute, isLower) {
6946            if (hour < 12) {
6947                return 'قبل از ظهر';
6948            } else {
6949                return 'بعد از ظهر';
6950            }
6951        },
6952        calendar: {
6953            sameDay: '[امروز ساعت] LT',
6954            nextDay: '[فردا ساعت] LT',
6955            nextWeek: 'dddd [ساعت] LT',
6956            lastDay: '[دیروز ساعت] LT',
6957            lastWeek: 'dddd [پیش] [ساعت] LT',
6958            sameElse: 'L'
6959        },
6960        relativeTime: {
6961            future: 'در %s',
6962            past: '%s پیش',
6963            s: 'چندین ثانیه',
6964            m: 'یک دقیقه',
6965            mm: '%d دقیقه',
6966            h: 'یک ساعت',
6967            hh: '%d ساعت',
6968            d: 'یک روز',
6969            dd: '%d روز',
6970            M: 'یک ماه',
6971            MM: '%d ماه',
6972            y: 'یک سال',
6973            yy: '%d سال'
6974        },
6975        preparse: function (string) {
6976            return string.replace(/[Û°-Û¹]/g, function (match) {
6977                return numberMap$4[match];
6978            }).replace(/،/g, ',');
6979        },
6980        postformat: function (string) {
6981            return string.replace(/\d/g, function (match) {
6982                return symbolMap$5[match];
6983            }).replace(/,/g, '،');
6984        },
6985        ordinalParse: /\d{1,2}م/,
6986        ordinal: '%dم',
6987        week: {
6988            dow: 6, // Saturday is the first day of the week.
6989            doy: 12 // The week that contains Jan 1st is the first week of the year.
6990        }
6991    });
6992
6993    //! moment.js locale configuration
6994    //! locale : Finnish [fi]
6995    //! author : Tarmo Aidantausta : https://github.com/bleadof
6996
6997    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' ');
6998    var numbersFuture = [
6999            'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
7000            numbersPast[7], numbersPast[8], numbersPast[9]
7001    ];
7002    function translate$2(number, withoutSuffix, key, isFuture) {
7003        var result = '';
7004        switch (key) {
7005            case 's':
7006                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
7007            case 'm':
7008                return isFuture ? 'minuutin' : 'minuutti';
7009            case 'mm':
7010                result = isFuture ? 'minuutin' : 'minuuttia';
7011                break;
7012            case 'h':
7013                return isFuture ? 'tunnin' : 'tunti';
7014            case 'hh':
7015                result = isFuture ? 'tunnin' : 'tuntia';
7016                break;
7017            case 'd':
7018                return isFuture ? 'päivän' : 'päivä';
7019            case 'dd':
7020                result = isFuture ? 'päivän' : 'päivää';
7021                break;
7022            case 'M':
7023                return isFuture ? 'kuukauden' : 'kuukausi';
7024            case 'MM':
7025                result = isFuture ? 'kuukauden' : 'kuukautta';
7026                break;
7027            case 'y':
7028                return isFuture ? 'vuoden' : 'vuosi';
7029            case 'yy':
7030                result = isFuture ? 'vuoden' : 'vuotta';
7031                break;
7032        }
7033        result = verbalNumber(number, isFuture) + ' ' + result;
7034        return result;
7035    }
7036    function verbalNumber(number, isFuture) {
7037        return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
7038    }
7039
7040    hooks.defineLocale('fi', {
7041        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
7042        monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
7043        weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
7044        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
7045        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
7046        longDateFormat: {
7047            LT: 'HH.mm',
7048            LTS: 'HH.mm.ss',
7049            L: 'DD.MM.YYYY',
7050            LL: 'Do MMMM[ta] YYYY',
7051            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
7052            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
7053            l: 'D.M.YYYY',
7054            ll: 'Do MMM YYYY',
7055            lll: 'Do MMM YYYY, [klo] HH.mm',
7056            llll: 'ddd, Do MMM YYYY, [klo] HH.mm'
7057        },
7058        calendar: {
7059            sameDay: '[tänään] [klo] LT',
7060            nextDay: '[huomenna] [klo] LT',
7061            nextWeek: 'dddd [klo] LT',
7062            lastDay: '[eilen] [klo] LT',
7063            lastWeek: '[viime] dddd[na] [klo] LT',
7064            sameElse: 'L'
7065        },
7066        relativeTime: {
7067            future: '%s päästä',
7068            past: '%s sitten',
7069            s: translate$2,
7070            m: translate$2,
7071            mm: translate$2,
7072            h: translate$2,
7073            hh: translate$2,
7074            d: translate$2,
7075            dd: translate$2,
7076            M: translate$2,
7077            MM: translate$2,
7078            y: translate$2,
7079            yy: translate$2
7080        },
7081        ordinalParse: /\d{1,2}\./,
7082        ordinal: '%d.',
7083        week: {
7084            dow: 1, // Monday is the first day of the week.
7085            doy: 4  // The week that contains Jan 4th is the first week of the year.
7086        }
7087    });
7088
7089    //! moment.js locale configuration
7090    //! locale : Faroese [fo]
7091    //! author : Ragnar Johannesen : https://github.com/ragnar123
7092
7093    hooks.defineLocale('fo', {
7094        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
7095        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
7096        weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
7097        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
7098        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
7099        longDateFormat: {
7100            LT: 'HH:mm',
7101            LTS: 'HH:mm:ss',
7102            L: 'DD/MM/YYYY',
7103            LL: 'D MMMM YYYY',
7104            LLL: 'D MMMM YYYY HH:mm',
7105            LLLL: 'dddd D. MMMM, YYYY HH:mm'
7106        },
7107        calendar: {
7108            sameDay: '[Í dag kl.] LT',
7109            nextDay: '[Í morgin kl.] LT',
7110            nextWeek: 'dddd [kl.] LT',
7111            lastDay: '[Í gjár kl.] LT',
7112            lastWeek: '[síðstu] dddd [kl] LT',
7113            sameElse: 'L'
7114        },
7115        relativeTime: {
7116            future: 'um %s',
7117            past: '%s síðani',
7118            s: 'fá sekund',
7119            m: 'ein minutt',
7120            mm: '%d minuttir',
7121            h: 'ein tími',
7122            hh: '%d tímar',
7123            d: 'ein dagur',
7124            dd: '%d dagar',
7125            M: 'ein mánaði',
7126            MM: '%d mánaðir',
7127            y: 'eitt ár',
7128            yy: '%d ár'
7129        },
7130        ordinalParse: /\d{1,2}\./,
7131        ordinal: '%d.',
7132        week: {
7133            dow: 1, // Monday is the first day of the week.
7134            doy: 4  // The week that contains Jan 4th is the first week of the year.
7135        }
7136    });
7137
7138    //! moment.js locale configuration
7139    //! locale : French (Canada) [fr-ca]
7140    //! author : Jonathan Abourbih : https://github.com/jonbca
7141
7142    hooks.defineLocale('fr-ca', {
7143        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7144        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7145        monthsParseExact: true,
7146        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7147        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7148        weekdaysMin: 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
7149        weekdaysParseExact: true,
7150        longDateFormat: {
7151            LT: 'HH:mm',
7152            LTS: 'HH:mm:ss',
7153            L: 'YYYY-MM-DD',
7154            LL: 'D MMMM YYYY',
7155            LLL: 'D MMMM YYYY HH:mm',
7156            LLLL: 'dddd D MMMM YYYY HH:mm'
7157        },
7158        calendar: {
7159            sameDay: '[Aujourd\'hui à] LT',
7160            nextDay: '[Demain à] LT',
7161            nextWeek: 'dddd [à] LT',
7162            lastDay: '[Hier à] LT',
7163            lastWeek: 'dddd [dernier à] LT',
7164            sameElse: 'L'
7165        },
7166        relativeTime: {
7167            future: 'dans %s',
7168            past: 'il y a %s',
7169            s: 'quelques secondes',
7170            m: 'une minute',
7171            mm: '%d minutes',
7172            h: 'une heure',
7173            hh: '%d heures',
7174            d: 'un jour',
7175            dd: '%d jours',
7176            M: 'un mois',
7177            MM: '%d mois',
7178            y: 'un an',
7179            yy: '%d ans'
7180        },
7181        ordinalParse: /\d{1,2}(er|e)/,
7182        ordinal: function (number) {
7183            return number + (number === 1 ? 'er' : 'e');
7184        }
7185    });
7186
7187    //! moment.js locale configuration
7188    //! locale : French (Switzerland) [fr-ch]
7189    //! author : Gaspard Bucher : https://github.com/gaspard
7190
7191    hooks.defineLocale('fr-ch', {
7192        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7193        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7194        monthsParseExact: true,
7195        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7196        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7197        weekdaysMin: 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
7198        weekdaysParseExact: true,
7199        longDateFormat: {
7200            LT: 'HH:mm',
7201            LTS: 'HH:mm:ss',
7202            L: 'DD.MM.YYYY',
7203            LL: 'D MMMM YYYY',
7204            LLL: 'D MMMM YYYY HH:mm',
7205            LLLL: 'dddd D MMMM YYYY HH:mm'
7206        },
7207        calendar: {
7208            sameDay: '[Aujourd\'hui à] LT',
7209            nextDay: '[Demain à] LT',
7210            nextWeek: 'dddd [à] LT',
7211            lastDay: '[Hier à] LT',
7212            lastWeek: 'dddd [dernier à] LT',
7213            sameElse: 'L'
7214        },
7215        relativeTime: {
7216            future: 'dans %s',
7217            past: 'il y a %s',
7218            s: 'quelques secondes',
7219            m: 'une minute',
7220            mm: '%d minutes',
7221            h: 'une heure',
7222            hh: '%d heures',
7223            d: 'un jour',
7224            dd: '%d jours',
7225            M: 'un mois',
7226            MM: '%d mois',
7227            y: 'un an',
7228            yy: '%d ans'
7229        },
7230        ordinalParse: /\d{1,2}(er|e)/,
7231        ordinal: function (number) {
7232            return number + (number === 1 ? 'er' : 'e');
7233        },
7234        week: {
7235            dow: 1, // Monday is the first day of the week.
7236            doy: 4  // The week that contains Jan 4th is the first week of the year.
7237        }
7238    });
7239
7240    //! moment.js locale configuration
7241    //! locale : French [fr]
7242    //! author : John Fischer : https://github.com/jfroffice
7243
7244    hooks.defineLocale('fr', {
7245        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7246        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7247        monthsParseExact: true,
7248        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7249        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7250        weekdaysMin: 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
7251        weekdaysParseExact: true,
7252        longDateFormat: {
7253            LT: 'HH:mm',
7254            LTS: 'HH:mm:ss',
7255            L: 'DD/MM/YYYY',
7256            LL: 'D MMMM YYYY',
7257            LLL: 'D MMMM YYYY HH:mm',
7258            LLLL: 'dddd D MMMM YYYY HH:mm'
7259        },
7260        calendar: {
7261            sameDay: '[Aujourd\'hui à] LT',
7262            nextDay: '[Demain à] LT',
7263            nextWeek: 'dddd [à] LT',
7264            lastDay: '[Hier à] LT',
7265            lastWeek: 'dddd [dernier à] LT',
7266            sameElse: 'L'
7267        },
7268        relativeTime: {
7269            future: 'dans %s',
7270            past: 'il y a %s',
7271            s: 'quelques secondes',
7272            m: 'une minute',
7273            mm: '%d minutes',
7274            h: 'une heure',
7275            hh: '%d heures',
7276            d: 'un jour',
7277            dd: '%d jours',
7278            M: 'un mois',
7279            MM: '%d mois',
7280            y: 'un an',
7281            yy: '%d ans'
7282        },
7283        ordinalParse: /\d{1,2}(er|)/,
7284        ordinal: function (number) {
7285            return number + (number === 1 ? 'er' : '');
7286        },
7287        week: {
7288            dow: 1, // Monday is the first day of the week.
7289            doy: 4  // The week that contains Jan 4th is the first week of the year.
7290        }
7291    });
7292
7293    //! moment.js locale configuration
7294    //! locale : Frisian [fy]
7295    //! author : Robin van der Vliet : https://github.com/robin0van0der0v
7296
7297    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_');
7298    var monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
7299
7300    hooks.defineLocale('fy', {
7301        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
7302        monthsShort: function (m, format) {
7303            if (/-MMM-/.test(format)) {
7304                return monthsShortWithoutDots[m.month()];
7305            } else {
7306                return monthsShortWithDots[m.month()];
7307            }
7308        },
7309        monthsParseExact: true,
7310        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
7311        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
7312        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
7313        weekdaysParseExact: true,
7314        longDateFormat: {
7315            LT: 'HH:mm',
7316            LTS: 'HH:mm:ss',
7317            L: 'DD-MM-YYYY',
7318            LL: 'D MMMM YYYY',
7319            LLL: 'D MMMM YYYY HH:mm',
7320            LLLL: 'dddd D MMMM YYYY HH:mm'
7321        },
7322        calendar: {
7323            sameDay: '[hjoed om] LT',
7324            nextDay: '[moarn om] LT',
7325            nextWeek: 'dddd [om] LT',
7326            lastDay: '[juster om] LT',
7327            lastWeek: '[ôfrûne] dddd [om] LT',
7328            sameElse: 'L'
7329        },
7330        relativeTime: {
7331            future: 'oer %s',
7332            past: '%s lyn',
7333            s: 'in pear sekonden',
7334            m: 'ien minút',
7335            mm: '%d minuten',
7336            h: 'ien oere',
7337            hh: '%d oeren',
7338            d: 'ien dei',
7339            dd: '%d dagen',
7340            M: 'ien moanne',
7341            MM: '%d moannen',
7342            y: 'ien jier',
7343            yy: '%d jierren'
7344        },
7345        ordinalParse: /\d{1,2}(ste|de)/,
7346        ordinal: function (number) {
7347            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
7348        },
7349        week: {
7350            dow: 1, // Monday is the first day of the week.
7351            doy: 4  // The week that contains Jan 4th is the first week of the year.
7352        }
7353    });
vendor: 45,665 bytes, lines 7354-8539
7354
7355    //! moment.js locale configuration
7356    //! locale : Scottish Gaelic [gd]
7357    //! author : Jon Ashdown : https://github.com/jonashdown
7358
7359    var months$5 = [
7360        'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'
7361    ];
7362
7363    var monthsShort$3 = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];
7364
7365    var weekdays$1 = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];
7366
7367    var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];
7368
7369    var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
7370
7371    hooks.defineLocale('gd', {
7372        months: months$5,
7373        monthsShort: monthsShort$3,
7374        monthsParseExact: true,
7375        weekdays: weekdays$1,
7376        weekdaysShort: weekdaysShort,
7377        weekdaysMin: weekdaysMin,
7378        longDateFormat: {
7379            LT: 'HH:mm',
7380            LTS: 'HH:mm:ss',
7381            L: 'DD/MM/YYYY',
7382            LL: 'D MMMM YYYY',
7383            LLL: 'D MMMM YYYY HH:mm',
7384            LLLL: 'dddd, D MMMM YYYY HH:mm'
7385        },
7386        calendar: {
7387            sameDay: '[An-diugh aig] LT',
7388            nextDay: '[A-màireach aig] LT',
7389            nextWeek: 'dddd [aig] LT',
7390            lastDay: '[An-dè aig] LT',
7391            lastWeek: 'dddd [seo chaidh] [aig] LT',
7392            sameElse: 'L'
7393        },
7394        relativeTime: {
7395            future: 'ann an %s',
7396            past: 'bho chionn %s',
7397            s: 'beagan diogan',
7398            m: 'mionaid',
7399            mm: '%d mionaidean',
7400            h: 'uair',
7401            hh: '%d uairean',
7402            d: 'latha',
7403            dd: '%d latha',
7404            M: 'mìos',
7405            MM: '%d mìosan',
7406            y: 'bliadhna',
7407            yy: '%d bliadhna'
7408        },
7409        ordinalParse: /\d{1,2}(d|na|mh)/,
7410        ordinal: function (number) {
7411            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
7412            return number + output;
7413        },
7414        week: {
7415            dow: 1, // Monday is the first day of the week.
7416            doy: 4  // The week that contains Jan 4th is the first week of the year.
7417        }
7418    });
7419
7420    //! moment.js locale configuration
7421    //! locale : Galician [gl]
7422    //! author : Juan G. Hurtado : https://github.com/juanghurtado
7423
7424    hooks.defineLocale('gl', {
7425        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),
7426        monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),
7427        monthsParseExact: true,
7428        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
7429        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
7430        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
7431        weekdaysParseExact: true,
7432        longDateFormat: {
7433            LT: 'H:mm',
7434            LTS: 'H:mm:ss',
7435            L: 'DD/MM/YYYY',
7436            LL: 'D [de] MMMM [de] YYYY',
7437            LLL: 'D [de] MMMM [de] YYYY H:mm',
7438            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'
7439        },
7440        calendar: {
7441            sameDay: function () {
7442                return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
7443            },
7444            nextDay: function () {
7445                return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
7446            },
7447            nextWeek: function () {
7448                return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
7449            },
7450            lastDay: function () {
7451                return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';
7452            },
7453            lastWeek: function () {
7454                return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
7455            },
7456            sameElse: 'L'
7457        },
7458        relativeTime: {
7459            future: function (str) {
7460                if (str.indexOf('un') === 0) {
7461                    return 'n' + str;
7462                }
7463                return 'en ' + str;
7464            },
7465            past: 'hai %s',
7466            s: 'uns segundos',
7467            m: 'un minuto',
7468            mm: '%d minutos',
7469            h: 'unha hora',
7470            hh: '%d horas',
7471            d: 'un día',
7472            dd: '%d días',
7473            M: 'un mes',
7474            MM: '%d meses',
7475            y: 'un ano',
7476            yy: '%d anos'
7477        },
7478        ordinalParse: /\d{1,2}º/,
7479        ordinal: '%dº',
7480        week: {
7481            dow: 1, // Monday is the first day of the week.
7482            doy: 4  // The week that contains Jan 4th is the first week of the year.
7483        }
7484    });
7485
7486    //! moment.js locale configuration
7487    //! locale : Hebrew [he]
7488    //! author : Tomer Cohen : https://github.com/tomer
7489    //! author : Moshe Simantov : https://github.com/DevelopmentIL
7490    //! author : Tal Ater : https://github.com/TalAter
7491
7492    hooks.defineLocale('he', {
7493        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
7494        monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
7495        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
7496        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
7497        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
7498        longDateFormat: {
7499            LT: 'HH:mm',
7500            LTS: 'HH:mm:ss',
7501            L: 'DD/MM/YYYY',
7502            LL: 'D [ב]MMMM YYYY',
7503            LLL: 'D [ב]MMMM YYYY HH:mm',
7504            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
7505            l: 'D/M/YYYY',
7506            ll: 'D MMM YYYY',
7507            lll: 'D MMM YYYY HH:mm',
7508            llll: 'ddd, D MMM YYYY HH:mm'
7509        },
7510        calendar: {
7511            sameDay: '[היום ב־]LT',
7512            nextDay: '[מחר ב־]LT',
7513            nextWeek: 'dddd [בשעה] LT',
7514            lastDay: '[אתמול ב־]LT',
7515            lastWeek: '[ביום] dddd [האחרון בשעה] LT',
7516            sameElse: 'L'
7517        },
7518        relativeTime: {
7519            future: 'בעוד %s',
7520            past: 'לפני %s',
7521            s: 'מספר שניות',
7522            m: 'דקה',
7523            mm: '%d דקות',
7524            h: 'שעה',
7525            hh: function (number) {
7526                if (number === 2) {
7527                    return 'שעתיים';
7528                }
7529                return number + ' שעות';
7530            },
7531            d: 'יום',
7532            dd: function (number) {
7533                if (number === 2) {
7534                    return 'יומיים';
7535                }
7536                return number + ' ימים';
7537            },
7538            M: 'חודש',
7539            MM: function (number) {
7540                if (number === 2) {
7541                    return 'חודשיים';
7542                }
7543                return number + ' חודשים';
7544            },
7545            y: 'שנה',
7546            yy: function (number) {
7547                if (number === 2) {
7548                    return 'שנתיים';
7549                } else if (number % 10 === 0 && number !== 10) {
7550                    return number + ' שנה';
7551                }
7552                return number + ' שנים';
7553            }
7554        },
7555        meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
7556        isPM: function (input) {
7557            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
7558        },
7559        meridiem: function (hour, minute, isLower) {
7560            if (hour < 5) {
7561                return 'לפנות בוקר';
7562            } else if (hour < 10) {
7563                return 'בבוקר';
7564            } else if (hour < 12) {
7565                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
7566            } else if (hour < 18) {
7567                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
7568            } else {
7569                return 'בערב';
7570            }
7571        }
7572    });
7573
7574    //! moment.js locale configuration
7575    //! locale : Hindi [hi]
7576    //! author : Mayank Singhal : https://github.com/mayanksinghal
7577
7578    var symbolMap$6 = {
7579        '1': '१',
7580        '2': '२',
7581        '3': '३',
7582        '4': '४',
7583        '5': '५',
7584        '6': '६',
7585        '7': '७',
7586        '8': '८',
7587        '9': '९',
7588        '0': '०'
7589    };
7590    var numberMap$5 = {
7591        '१': '1',
7592        '२': '2',
7593        '३': '3',
7594        '४': '4',
7595        '५': '5',
7596        '६': '6',
7597        '७': '7',
7598        '८': '8',
7599        '९': '9',
7600        '०': '0'
7601    };
7602
7603    hooks.defineLocale('hi', {
7604        months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
7605        monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
7606        monthsParseExact: true,
7607        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
7608        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
7609        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
7610        longDateFormat: {
7611            LT: 'A h:mm बजे',
7612            LTS: 'A h:mm:ss बजे',
7613            L: 'DD/MM/YYYY',
7614            LL: 'D MMMM YYYY',
7615            LLL: 'D MMMM YYYY, A h:mm बजे',
7616            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे'
7617        },
7618        calendar: {
7619            sameDay: '[आज] LT',
7620            nextDay: '[कल] LT',
7621            nextWeek: 'dddd, LT',
7622            lastDay: '[कल] LT',
7623            lastWeek: '[पिछले] dddd, LT',
7624            sameElse: 'L'
7625        },
7626        relativeTime: {
7627            future: '%s में',
7628            past: '%s पहले',
7629            s: 'कुछ ही क्षण',
7630            m: 'एक मिनट',
7631            mm: '%d मिनट',
7632            h: 'एक घंटा',
7633            hh: '%d घंटे',
7634            d: 'एक दिन',
7635            dd: '%d दिन',
7636            M: 'एक महीने',
7637            MM: '%d महीने',
7638            y: 'एक वर्ष',
7639            yy: '%d वर्ष'
7640        },
7641        preparse: function (string) {
7642            return string.replace(/[१२३४५६७८९०]/g, function (match) {
7643                return numberMap$5[match];
7644            });
7645        },
7646        postformat: function (string) {
7647            return string.replace(/\d/g, function (match) {
7648                return symbolMap$6[match];
7649            });
7650        },
7651        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
7652        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
7653        meridiemParse: /रात|सुबह|दोपहर|शाम/,
7654        meridiemHour: function (hour, meridiem) {
7655            if (hour === 12) {
7656                hour = 0;
7657            }
7658            if (meridiem === 'रात') {
7659                return hour < 4 ? hour : hour + 12;
7660            } else if (meridiem === 'सुबह') {
7661                return hour;
7662            } else if (meridiem === 'दोपहर') {
7663                return hour >= 10 ? hour : hour + 12;
7664            } else if (meridiem === 'शाम') {
7665                return hour + 12;
7666            }
7667        },
7668        meridiem: function (hour, minute, isLower) {
7669            if (hour < 4) {
7670                return 'रात';
7671            } else if (hour < 10) {
7672                return 'सुबह';
7673            } else if (hour < 17) {
7674                return 'दोपहर';
7675            } else if (hour < 20) {
7676                return 'शाम';
7677            } else {
7678                return 'रात';
7679            }
7680        },
7681        week: {
7682            dow: 0, // Sunday is the first day of the week.
7683            doy: 6  // The week that contains Jan 1st is the first week of the year.
7684        }
7685    });
7686
7687    //! moment.js locale configuration
7688    //! locale : Croatian [hr]
7689    //! author : Bojan Marković : https://github.com/bmarkovic
7690
7691    function translate$3(number, withoutSuffix, key) {
7692        var result = number + ' ';
7693        switch (key) {
7694            case 'm':
7695                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
7696            case 'mm':
7697                if (number === 1) {
7698                    result += 'minuta';
7699                } else if (number === 2 || number === 3 || number === 4) {
7700                    result += 'minute';
7701                } else {
7702                    result += 'minuta';
7703                }
7704                return result;
7705            case 'h':
7706                return withoutSuffix ? 'jedan sat' : 'jednog sata';
7707            case 'hh':
7708                if (number === 1) {
7709                    result += 'sat';
7710                } else if (number === 2 || number === 3 || number === 4) {
7711                    result += 'sata';
7712                } else {
7713                    result += 'sati';
7714                }
7715                return result;
7716            case 'dd':
7717                if (number === 1) {
7718                    result += 'dan';
7719                } else {
7720                    result += 'dana';
7721                }
7722                return result;
7723            case 'MM':
7724                if (number === 1) {
7725                    result += 'mjesec';
7726                } else if (number === 2 || number === 3 || number === 4) {
7727                    result += 'mjeseca';
7728                } else {
7729                    result += 'mjeseci';
7730                }
7731                return result;
7732            case 'yy':
7733                if (number === 1) {
7734                    result += 'godina';
7735                } else if (number === 2 || number === 3 || number === 4) {
7736                    result += 'godine';
7737                } else {
7738                    result += 'godina';
7739                }
7740                return result;
7741        }
7742    }
7743
7744    hooks.defineLocale('hr', {
7745        months: {
7746            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),
7747            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')
7748        },
7749        monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
7750        monthsParseExact: true,
7751        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
7752        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
7753        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
7754        weekdaysParseExact: true,
7755        longDateFormat: {
7756            LT: 'H:mm',
7757            LTS: 'H:mm:ss',
7758            L: 'DD.MM.YYYY',
7759            LL: 'D. MMMM YYYY',
7760            LLL: 'D. MMMM YYYY H:mm',
7761            LLLL: 'dddd, D. MMMM YYYY H:mm'
7762        },
7763        calendar: {
7764            sameDay: '[danas u] LT',
7765            nextDay: '[sutra u] LT',
7766            nextWeek: function () {
7767                switch (this.day()) {
7768                    case 0:
7769                        return '[u] [nedjelju] [u] LT';
7770                    case 3:
7771                        return '[u] [srijedu] [u] LT';
7772                    case 6:
7773                        return '[u] [subotu] [u] LT';
7774                    case 1:
7775                    case 2:
7776                    case 4:
7777                    case 5:
7778                        return '[u] dddd [u] LT';
7779                }
7780            },
7781            lastDay: '[jučer u] LT',
7782            lastWeek: function () {
7783                switch (this.day()) {
7784                    case 0:
7785                    case 3:
7786                        return '[prošlu] dddd [u] LT';
7787                    case 6:
7788                        return '[prošle] [subote] [u] LT';
7789                    case 1:
7790                    case 2:
7791                    case 4:
7792                    case 5:
7793                        return '[prošli] dddd [u] LT';
7794                }
7795            },
7796            sameElse: 'L'
7797        },
7798        relativeTime: {
7799            future: 'za %s',
7800            past: 'prije %s',
7801            s: 'par sekundi',
7802            m: translate$3,
7803            mm: translate$3,
7804            h: translate$3,
7805            hh: translate$3,
7806            d: 'dan',
7807            dd: translate$3,
7808            M: 'mjesec',
7809            MM: translate$3,
7810            y: 'godinu',
7811            yy: translate$3
7812        },
7813        ordinalParse: /\d{1,2}\./,
7814        ordinal: '%d.',
7815        week: {
7816            dow: 1, // Monday is the first day of the week.
7817            doy: 7  // The week that contains Jan 1st is the first week of the year.
7818        }
7819    });
7820
7821    //! moment.js locale configuration
7822    //! locale : Hungarian [hu]
7823    //! author : Adam Brunner : https://github.com/adambrunner
7824
7825    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
7826    function translate$4(number, withoutSuffix, key, isFuture) {
7827        var num = number,
7828            suffix;
7829        switch (key) {
7830            case 's':
7831                return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
7832            case 'm':
7833                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
7834            case 'mm':
7835                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
7836            case 'h':
7837                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
7838            case 'hh':
7839                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
7840            case 'd':
7841                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
7842            case 'dd':
7843                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
7844            case 'M':
7845                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
7846            case 'MM':
7847                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
7848            case 'y':
7849                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
7850            case 'yy':
7851                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
7852        }
7853        return '';
7854    }
7855    function week(isFuture) {
7856        return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
7857    }
7858
7859    hooks.defineLocale('hu', {
7860        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
7861        monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),
7862        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
7863        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
7864        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
7865        longDateFormat: {
7866            LT: 'H:mm',
7867            LTS: 'H:mm:ss',
7868            L: 'YYYY.MM.DD.',
7869            LL: 'YYYY. MMMM D.',
7870            LLL: 'YYYY. MMMM D. H:mm',
7871            LLLL: 'YYYY. MMMM D., dddd H:mm'
7872        },
7873        meridiemParse: /de|du/i,
7874        isPM: function (input) {
7875            return input.charAt(1).toLowerCase() === 'u';
7876        },
7877        meridiem: function (hours, minutes, isLower) {
7878            if (hours < 12) {
7879                return isLower === true ? 'de' : 'DE';
7880            } else {
7881                return isLower === true ? 'du' : 'DU';
7882            }
7883        },
7884        calendar: {
7885            sameDay: '[ma] LT[-kor]',
7886            nextDay: '[holnap] LT[-kor]',
7887            nextWeek: function () {
7888                return week.call(this, true);
7889            },
7890            lastDay: '[tegnap] LT[-kor]',
7891            lastWeek: function () {
7892                return week.call(this, false);
7893            },
7894            sameElse: 'L'
7895        },
7896        relativeTime: {
7897            future: '%s múlva',
7898            past: '%s',
7899            s: translate$4,
7900            m: translate$4,
7901            mm: translate$4,
7902            h: translate$4,
7903            hh: translate$4,
7904            d: translate$4,
7905            dd: translate$4,
7906            M: translate$4,
7907            MM: translate$4,
7908            y: translate$4,
7909            yy: translate$4
7910        },
7911        ordinalParse: /\d{1,2}\./,
7912        ordinal: '%d.',
7913        week: {
7914            dow: 1, // Monday is the first day of the week.
7915            doy: 4  // The week that contains Jan 4th is the first week of the year.
7916        }
7917    });
7918
7919    //! moment.js locale configuration
7920    //! locale : Armenian [hy-am]
7921    //! author : Armendarabyan : https://github.com/armendarabyan
7922
7923    hooks.defineLocale('hy-am', {
7924        months: {
7925            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),
7926            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')
7927        },
7928        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
7929        weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),
7930        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
7931        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
7932        longDateFormat: {
7933            LT: 'HH:mm',
7934            LTS: 'HH:mm:ss',
7935            L: 'DD.MM.YYYY',
7936            LL: 'D MMMM YYYY Õ©.',
7937            LLL: 'D MMMM YYYY Õ©., HH:mm',
7938            LLLL: 'dddd, D MMMM YYYY Õ©., HH:mm'
7939        },
7940        calendar: {
7941            sameDay: '[այսօր] LT',
7942            nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',
7943            lastDay: '[երեկ] LT',
7944            nextWeek: function () {
7945                return 'dddd [օրը ժամը] LT';
7946            },
7947            lastWeek: function () {
7948                return '[անցած] dddd [օրը ժամը] LT';
7949            },
7950            sameElse: 'L'
7951        },
7952        relativeTime: {
7953            future: '%s Õ°Õ¥Õ¿Õ¸',
7954            past: '%s Õ¡Õ¼Õ¡Õ»',
7955            s: 'մի քանի վայրկյան',
7956            m: 'րոպե',
7957            mm: '%d րոպե',
7958            h: 'ÕªÕ¡Õ´',
7959            hh: '%d ÕªÕ¡Õ´',
7960            d: 'օր',
7961            dd: '%d օր',
7962            M: 'Õ¡Õ´Õ«Õ½',
7963            MM: '%d Õ¡Õ´Õ«Õ½',
7964            y: 'տարի',
7965            yy: '%d տարի'
7966        },
7967        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
7968        isPM: function (input) {
7969            return /^(ցերեկվա|երեկոյան)$/.test(input);
7970        },
7971        meridiem: function (hour) {
7972            if (hour < 4) {
7973                return 'գիշերվա';
7974            } else if (hour < 12) {
7975                return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';
7976            } else if (hour < 17) {
7977                return 'ցերեկվա';
7978            } else {
7979                return 'երեկոյան';
7980            }
7981        },
7982        ordinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
7983        ordinal: function (number, period) {
7984            switch (period) {
7985                case 'DDD':
7986                case 'w':
7987                case 'W':
7988                case 'DDDo':
7989                    if (number === 1) {
7990                        return number + '-Õ«Õ¶';
7991                    }
7992                    return number + '-րդ';
7993                default:
7994                    return number;
7995            }
7996        },
7997        week: {
7998            dow: 1, // Monday is the first day of the week.
7999            doy: 7  // The week that contains Jan 1st is the first week of the year.
8000        }
8001    });
8002
8003    //! moment.js locale configuration
8004    //! locale : Indonesian [id]
8005    //! author : Mohammad Satrio Utomo : https://github.com/tyok
8006    //! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
8007
8008    hooks.defineLocale('id', {
8009        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
8010        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),
8011        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
8012        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
8013        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
8014        longDateFormat: {
8015            LT: 'HH.mm',
8016            LTS: 'HH.mm.ss',
8017            L: 'DD/MM/YYYY',
8018            LL: 'D MMMM YYYY',
8019            LLL: 'D MMMM YYYY [pukul] HH.mm',
8020            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'
8021        },
8022        meridiemParse: /pagi|siang|sore|malam/,
8023        meridiemHour: function (hour, meridiem) {
8024            if (hour === 12) {
8025                hour = 0;
8026            }
8027            if (meridiem === 'pagi') {
8028                return hour;
8029            } else if (meridiem === 'siang') {
8030                return hour >= 11 ? hour : hour + 12;
8031            } else if (meridiem === 'sore' || meridiem === 'malam') {
8032                return hour + 12;
8033            }
8034        },
8035        meridiem: function (hours, minutes, isLower) {
8036            if (hours < 11) {
8037                return 'pagi';
8038            } else if (hours < 15) {
8039                return 'siang';
8040            } else if (hours < 19) {
8041                return 'sore';
8042            } else {
8043                return 'malam';
8044            }
8045        },
8046        calendar: {
8047            sameDay: '[Hari ini pukul] LT',
8048            nextDay: '[Besok pukul] LT',
8049            nextWeek: 'dddd [pukul] LT',
8050            lastDay: '[Kemarin pukul] LT',
8051            lastWeek: 'dddd [lalu pukul] LT',
8052            sameElse: 'L'
8053        },
8054        relativeTime: {
8055            future: 'dalam %s',
8056            past: '%s yang lalu',
8057            s: 'beberapa detik',
8058            m: 'semenit',
8059            mm: '%d menit',
8060            h: 'sejam',
8061            hh: '%d jam',
8062            d: 'sehari',
8063            dd: '%d hari',
8064            M: 'sebulan',
8065            MM: '%d bulan',
8066            y: 'setahun',
8067            yy: '%d tahun'
8068        },
8069        week: {
8070            dow: 1, // Monday is the first day of the week.
8071            doy: 7  // The week that contains Jan 1st is the first week of the year.
8072        }
8073    });
8074
8075    //! moment.js locale configuration
8076    //! locale : Icelandic [is]
8077    //! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
8078
8079    function plural$2(n) {
8080        if (n % 100 === 11) {
8081            return true;
8082        } else if (n % 10 === 1) {
8083            return false;
8084        }
8085        return true;
8086    }
8087    function translate$5(number, withoutSuffix, key, isFuture) {
8088        var result = number + ' ';
8089        switch (key) {
8090            case 's':
8091                return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
8092            case 'm':
8093                return withoutSuffix ? 'mínúta' : 'mínútu';
8094            case 'mm':
8095                if (plural$2(number)) {
8096                    return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
8097                } else if (withoutSuffix) {
8098                    return result + 'mínúta';
8099                }
8100                return result + 'mínútu';
8101            case 'hh':
8102                if (plural$2(number)) {
8103                    return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
8104                }
8105                return result + 'klukkustund';
8106            case 'd':
8107                if (withoutSuffix) {
8108                    return 'dagur';
8109                }
8110                return isFuture ? 'dag' : 'degi';
8111            case 'dd':
8112                if (plural$2(number)) {
8113                    if (withoutSuffix) {
8114                        return result + 'dagar';
8115                    }
8116                    return result + (isFuture ? 'daga' : 'dögum');
8117                } else if (withoutSuffix) {
8118                    return result + 'dagur';
8119                }
8120                return result + (isFuture ? 'dag' : 'degi');
8121            case 'M':
8122                if (withoutSuffix) {
8123                    return 'mánuður';
8124                }
8125                return isFuture ? 'mánuð' : 'mánuði';
8126            case 'MM':
8127                if (plural$2(number)) {
8128                    if (withoutSuffix) {
8129                        return result + 'mánuðir';
8130                    }
8131                    return result + (isFuture ? 'mánuði' : 'mánuðum');
8132                } else if (withoutSuffix) {
8133                    return result + 'mánuður';
8134                }
8135                return result + (isFuture ? 'mánuð' : 'mánuði');
8136            case 'y':
8137                return withoutSuffix || isFuture ? 'ár' : 'ári';
8138            case 'yy':
8139                if (plural$2(number)) {
8140                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
8141                }
8142                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
8143        }
8144    }
8145
8146    hooks.defineLocale('is', {
8147        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
8148        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
8149        weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
8150        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
8151        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
8152        longDateFormat: {
8153            LT: 'H:mm',
8154            LTS: 'H:mm:ss',
8155            L: 'DD.MM.YYYY',
8156            LL: 'D. MMMM YYYY',
8157            LLL: 'D. MMMM YYYY [kl.] H:mm',
8158            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm'
8159        },
8160        calendar: {
8161            sameDay: '[í dag kl.] LT',
8162            nextDay: '[á morgun kl.] LT',
8163            nextWeek: 'dddd [kl.] LT',
8164            lastDay: '[í gær kl.] LT',
8165            lastWeek: '[síðasta] dddd [kl.] LT',
8166            sameElse: 'L'
8167        },
8168        relativeTime: {
8169            future: 'eftir %s',
8170            past: 'fyrir %s síðan',
8171            s: translate$5,
8172            m: translate$5,
8173            mm: translate$5,
8174            h: 'klukkustund',
8175            hh: translate$5,
8176            d: translate$5,
8177            dd: translate$5,
8178            M: translate$5,
8179            MM: translate$5,
8180            y: translate$5,
8181            yy: translate$5
8182        },
8183        ordinalParse: /\d{1,2}\./,
8184        ordinal: '%d.',
8185        week: {
8186            dow: 1, // Monday is the first day of the week.
8187            doy: 4  // The week that contains Jan 4th is the first week of the year.
8188        }
8189    });
8190
8191    //! moment.js locale configuration
8192    //! locale : Italian [it]
8193    //! author : Lorenzo : https://github.com/aliem
8194    //! author: Mattia Larentis: https://github.com/nostalgiaz
8195
8196    hooks.defineLocale('it', {
8197        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
8198        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
8199        weekdays: 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'),
8200        weekdaysShort: 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'),
8201        weekdaysMin: 'Do_Lu_Ma_Me_Gi_Ve_Sa'.split('_'),
8202        longDateFormat: {
8203            LT: 'HH:mm',
8204            LTS: 'HH:mm:ss',
8205            L: 'DD/MM/YYYY',
8206            LL: 'D MMMM YYYY',
8207            LLL: 'D MMMM YYYY HH:mm',
8208            LLLL: 'dddd, D MMMM YYYY HH:mm'
8209        },
8210        calendar: {
8211            sameDay: '[Oggi alle] LT',
8212            nextDay: '[Domani alle] LT',
8213            nextWeek: 'dddd [alle] LT',
8214            lastDay: '[Ieri alle] LT',
8215            lastWeek: function () {
8216                switch (this.day()) {
8217                    case 0:
8218                        return '[la scorsa] dddd [alle] LT';
8219                    default:
8220                        return '[lo scorso] dddd [alle] LT';
8221                }
8222            },
8223            sameElse: 'L'
8224        },
8225        relativeTime: {
8226            future: function (s) {
8227                return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
8228            },
8229            past: '%s fa',
8230            s: 'alcuni secondi',
8231            m: 'un minuto',
8232            mm: '%d minuti',
8233            h: 'un\'ora',
8234            hh: '%d ore',
8235            d: 'un giorno',
8236            dd: '%d giorni',
8237            M: 'un mese',
8238            MM: '%d mesi',
8239            y: 'un anno',
8240            yy: '%d anni'
8241        },
8242        ordinalParse: /\d{1,2}º/,
8243        ordinal: '%dº',
8244        week: {
8245            dow: 1, // Monday is the first day of the week.
8246            doy: 4  // The week that contains Jan 4th is the first week of the year.
8247        }
8248    });
8249
8250    //! moment.js locale configuration
8251    //! locale : Japanese [ja]
8252    //! author : LI Long : https://github.com/baryon
8253
8254    hooks.defineLocale('ja', {
8255        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
8256        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
8257        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
8258        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
8259        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
8260        longDateFormat: {
8261            LT: 'Ah時m分',
8262            LTS: 'Ah時m分s秒',
8263            L: 'YYYY/MM/DD',
8264            LL: 'YYYY年M月D日',
8265            LLL: 'YYYY年M月D日Ah時m分',
8266            LLLL: 'YYYY年M月D日Ah時m分 dddd'
8267        },
8268        meridiemParse: /午前|午後/i,
8269        isPM: function (input) {
8270            return input === '午後';
8271        },
8272        meridiem: function (hour, minute, isLower) {
8273            if (hour < 12) {
8274                return '午前';
8275            } else {
8276                return '午後';
8277            }
8278        },
8279        calendar: {
8280            sameDay: '[今日] LT',
8281            nextDay: '[明日] LT',
8282            nextWeek: '[来週]dddd LT',
8283            lastDay: '[昨日] LT',
8284            lastWeek: '[前週]dddd LT',
8285            sameElse: 'L'
8286        },
8287        ordinalParse: /\d{1,2}日/,
8288        ordinal: function (number, period) {
8289            switch (period) {
8290                case 'd':
8291                case 'D':
8292                case 'DDD':
8293                    return number + '日';
8294                default:
8295                    return number;
8296            }
8297        },
8298        relativeTime: {
8299            future: '%s後',
8300            past: '%s前',
8301            s: '数秒',
8302            m: '1分',
8303            mm: '%d分',
8304            h: '1時間',
8305            hh: '%d時間',
8306            d: '1日',
8307            dd: '%d日',
8308            M: '1ヶ月',
8309            MM: '%dヶ月',
8310            y: '1å¹´',
8311            yy: '%då¹´'
8312        }
8313    });
8314
8315    //! moment.js locale configuration
8316    //! locale : Javanese [jv]
8317    //! author : Rony Lantip : https://github.com/lantip
8318    //! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
8319
8320    hooks.defineLocale('jv', {
8321        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),
8322        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
8323        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
8324        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
8325        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
8326        longDateFormat: {
8327            LT: 'HH.mm',
8328            LTS: 'HH.mm.ss',
8329            L: 'DD/MM/YYYY',
8330            LL: 'D MMMM YYYY',
8331            LLL: 'D MMMM YYYY [pukul] HH.mm',
8332            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'
8333        },
8334        meridiemParse: /enjing|siyang|sonten|ndalu/,
8335        meridiemHour: function (hour, meridiem) {
8336            if (hour === 12) {
8337                hour = 0;
8338            }
8339            if (meridiem === 'enjing') {
8340                return hour;
8341            } else if (meridiem === 'siyang') {
8342                return hour >= 11 ? hour : hour + 12;
8343            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
8344                return hour + 12;
8345            }
8346        },
8347        meridiem: function (hours, minutes, isLower) {
8348            if (hours < 11) {
8349                return 'enjing';
8350            } else if (hours < 15) {
8351                return 'siyang';
8352            } else if (hours < 19) {
8353                return 'sonten';
8354            } else {
8355                return 'ndalu';
8356            }
8357        },
8358        calendar: {
8359            sameDay: '[Dinten puniko pukul] LT',
8360            nextDay: '[Mbenjang pukul] LT',
8361            nextWeek: 'dddd [pukul] LT',
8362            lastDay: '[Kala wingi pukul] LT',
8363            lastWeek: 'dddd [kepengker pukul] LT',
8364            sameElse: 'L'
8365        },
8366        relativeTime: {
8367            future: 'wonten ing %s',
8368            past: '%s ingkang kepengker',
8369            s: 'sawetawis detik',
8370            m: 'setunggal menit',
8371            mm: '%d menit',
8372            h: 'setunggal jam',
8373            hh: '%d jam',
8374            d: 'sedinten',
8375            dd: '%d dinten',
8376            M: 'sewulan',
8377            MM: '%d wulan',
8378            y: 'setaun',
8379            yy: '%d taun'
8380        },
8381        week: {
8382            dow: 1, // Monday is the first day of the week.
8383            doy: 7  // The week that contains Jan 1st is the first week of the year.
8384        }
8385    });
8386
8387    //! moment.js locale configuration
8388    //! locale : Georgian [ka]
8389    //! author : Irakli Janiashvili : https://github.com/irakli-janiashvili
8390
8391    hooks.defineLocale('ka', {
8392        months: {
8393            standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
8394            format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
8395        },
8396        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
8397        weekdays: {
8398            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
8399            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),
8400            isFormat: /(წინა|შემდეგ)/
8401        },
8402        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
8403        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
8404        longDateFormat: {
8405            LT: 'h:mm A',
8406            LTS: 'h:mm:ss A',
8407            L: 'DD/MM/YYYY',
8408            LL: 'D MMMM YYYY',
8409            LLL: 'D MMMM YYYY h:mm A',
8410            LLLL: 'dddd, D MMMM YYYY h:mm A'
8411        },
8412        calendar: {
8413            sameDay: '[დღეს] LT[-ზე]',
8414            nextDay: '[ხვალ] LT[-ზე]',
8415            lastDay: '[გუშინ] LT[-ზე]',
8416            nextWeek: '[შემდეგ] dddd LT[-ზე]',
8417            lastWeek: '[წინა] dddd LT-ზე',
8418            sameElse: 'L'
8419        },
8420        relativeTime: {
8421            future: function (s) {
8422                return (/(წამი|წუთი|საათი|წელი)/).test(s) ?
8423                    s.replace(/ი$/, 'ში') :
8424                    s + 'ში';
8425            },
8426            past: function (s) {
8427                if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {
8428                    return s.replace(/(ი|ე)$/, 'ის წინ');
8429                }
8430                if ((/წელი/).test(s)) {
8431                    return s.replace(/წელი$/, 'წლის წინ');
8432                }
8433            },
8434            s: 'რამდენიმე წამი',
8435            m: 'წუთი',
8436            mm: '%d წუთი',
8437            h: 'საათი',
8438            hh: '%d საათი',
8439            d: 'დღე',
8440            dd: '%d დღე',
8441            M: 'თვე',
8442            MM: '%d თვე',
8443            y: 'წელი',
8444            yy: '%d წელი'
8445        },
8446        ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
8447        ordinal: function (number) {
8448            if (number === 0) {
8449                return number;
8450            }
8451            if (number === 1) {
8452                return number + '-ლი';
8453            }
8454            if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
8455                return 'მე-' + number;
8456            }
8457            return number + '-ე';
8458        },
8459        week: {
8460            dow: 1,
8461            doy: 7
8462        }
8463    });
8464
8465    //! moment.js locale configuration
8466    //! locale : Kazakh [kk]
8467    //! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
8468
8469    var suffixes$1 = {
8470        0: '-ші',
8471        1: '-ші',
8472        2: '-ші',
8473        3: '-ші',
8474        4: '-ші',
8475        5: '-ші',
8476        6: '-шы',
8477        7: '-ші',
8478        8: '-ші',
8479        9: '-шы',
8480        10: '-шы',
8481        20: '-шы',
8482        30: '-шы',
8483        40: '-шы',
8484        50: '-ші',
8485        60: '-шы',
8486        70: '-ші',
8487        80: '-ші',
8488        90: '-шы',
8489        100: '-ші'
8490    };
8491
8492    hooks.defineLocale('kk', {
8493        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),
8494        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
8495        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),
8496        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
8497        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
8498        longDateFormat: {
8499            LT: 'HH:mm',
8500            LTS: 'HH:mm:ss',
8501            L: 'DD.MM.YYYY',
8502            LL: 'D MMMM YYYY',
8503            LLL: 'D MMMM YYYY HH:mm',
8504            LLLL: 'dddd, D MMMM YYYY HH:mm'
8505        },
8506        calendar: {
8507            sameDay: '[Бүгін сағат] LT',
8508            nextDay: '[Ертең сағат] LT',
8509            nextWeek: 'dddd [сағат] LT',
8510            lastDay: '[Кеше сағат] LT',
8511            lastWeek: '[Өткен аптаның] dddd [сағат] LT',
8512            sameElse: 'L'
8513        },
8514        relativeTime: {
8515            future: '%s ішінде',
8516            past: '%s бұрын',
8517            s: 'бірнеше секунд',
8518            m: 'бір минут',
8519            mm: '%d минут',
8520            h: 'бір сағат',
8521            hh: '%d сағат',
8522            d: 'бір күн',
8523            dd: '%d күн',
8524            M: 'бір ай',
8525            MM: '%d ай',
8526            y: 'бір жыл',
8527            yy: '%d жыл'
8528        },
8529        ordinalParse: /\d{1,2}-(ші|шы)/,
8530        ordinal: function (number) {
8531            var a = number % 10,
8532                b = number >= 100 ? 100 : null;
8533            return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);
8534        },
8535        week: {
8536            dow: 1, // Monday is the first day of the week.
8537            doy: 7  // The week that contains Jan 1st is the first week of the year.
8538        }
8539    });
8540
8541    //! moment.js locale configuration
8542    //! locale : Cambodian [km]
8543    //! author : Kruy Vanna : https://github.com/kruyvanna
8544
8545    hooks.defineLocale('km', {
8546        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
8547        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
8548        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
8549        weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
8550        weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
8551        longDateFormat: {
8552            LT: 'HH:mm',
8553            LTS: 'HH:mm:ss',
8554            L: 'DD/MM/YYYY',
8555            LL: 'D MMMM YYYY',
8556            LLL: 'D MMMM YYYY HH:mm',
8557            LLLL: 'dddd, D MMMM YYYY HH:mm'
8558        },
8559        calendar: {
8560            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
8561            nextDay: '[ស្អែក ម៉ោង] LT',
8562            nextWeek: 'dddd [ម៉ោង] LT',
8563            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
8564            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
8565            sameElse: 'L'
8566        },
8567        relativeTime: {
8568            future: '%sទៀត',
8569            past: '%sមុន',
8570            s: 'ប៉ុន្មានវិនាទី',
8571            m: 'មួយនាទី',
8572            mm: '%d នាទី',
8573            h: 'មួយម៉ោង',
8574            hh: '%d ម៉ោង',
8575            d: 'មួយថ្ងៃ',
8576            dd: '%d ថ្ងៃ',
8577            M: 'មួយខែ',
8578            MM: '%d ខែ',
8579            y: 'មួយឆ្នាំ',
8580            yy: '%d ឆ្នាំ'
8581        },
8582        week: {
8583            dow: 1, // Monday is the first day of the week.
8584            doy: 4 // The week that contains Jan 4th is the first week of the year.
8585        }
8586    });
8587
8588    //! moment.js locale configuration
8589    //! locale : Korean [ko]
8590    //! author : Kyungwook, Park : https://github.com/kyungw00k
8591    //! author : Jeeeyul Lee <[email protected]>
8592
8593    hooks.defineLocale('ko', {
8594        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
8595        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
8596        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
8597        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
8598        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
8599        longDateFormat: {
8600            LT: 'A h시 m분',
8601            LTS: 'A h시 m분 s초',
8602            L: 'YYYY.MM.DD',
8603            LL: 'YYYY년 MMMM D일',
8604            LLL: 'YYYY년 MMMM D일 A h시 m분',
8605            LLLL: 'YYYY년 MMMM D일 dddd A h시 m분'
8606        },
8607        calendar: {
8608            sameDay: '오늘 LT',
8609            nextDay: '내일 LT',
8610            nextWeek: 'dddd LT',
8611            lastDay: '어제 LT',
8612            lastWeek: '지난주 dddd LT',
8613            sameElse: 'L'
8614        },
8615        relativeTime: {
8616            future: '%s 후',
8617            past: '%s 전',
8618            s: '몇 초',
8619            ss: '%d초',
8620            m: '일분',
8621            mm: '%d분',
8622            h: '한 시간',
8623            hh: '%d시간',
8624            d: '하루',
8625            dd: '%d일',
8626            M: '한 달',
8627            MM: '%d달',
8628            y: '일 년',
8629            yy: '%d년'
8630        },
8631        ordinalParse: /\d{1,2}일/,
8632        ordinal: '%d일',
8633        meridiemParse: /오전|오후/,
8634        isPM: function (token) {
8635            return token === '오후';
8636        },
8637        meridiem: function (hour, minute, isUpper) {
8638            return hour < 12 ? '오전' : '오후';
8639        }
8640    });
vendor: 21,843 bytes, lines 8641-9189
8641
8642    //! moment.js locale configuration
8643    //! locale : Kyrgyz [ky]
8644    //! author : Chyngyz Arystan uulu : https://github.com/chyngyz
8645
8646
8647    var suffixes$2 = {
8648        0: '-чү',
8649        1: '-чи',
8650        2: '-чи',
8651        3: '-чү',
8652        4: '-чү',
8653        5: '-чи',
8654        6: '-чы',
8655        7: '-чи',
8656        8: '-чи',
8657        9: '-чу',
8658        10: '-чу',
8659        20: '-чы',
8660        30: '-чу',
8661        40: '-чы',
8662        50: '-чү',
8663        60: '-чы',
8664        70: '-чи',
8665        80: '-чи',
8666        90: '-чу',
8667        100: '-чү'
8668    };
8669
8670    hooks.defineLocale('ky', {
8671        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
8672        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
8673        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),
8674        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
8675        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
8676        longDateFormat: {
8677            LT: 'HH:mm',
8678            LTS: 'HH:mm:ss',
8679            L: 'DD.MM.YYYY',
8680            LL: 'D MMMM YYYY',
8681            LLL: 'D MMMM YYYY HH:mm',
8682            LLLL: 'dddd, D MMMM YYYY HH:mm'
8683        },
8684        calendar: {
8685            sameDay: '[Бүгүн саат] LT',
8686            nextDay: '[Эртең саат] LT',
8687            nextWeek: 'dddd [саат] LT',
8688            lastDay: '[Кече саат] LT',
8689            lastWeek: '[Өткен аптанын] dddd [күнү] [саат] LT',
8690            sameElse: 'L'
8691        },
8692        relativeTime: {
8693            future: '%s ичинде',
8694            past: '%s мурун',
8695            s: 'бирнече секунд',
8696            m: 'бир мүнөт',
8697            mm: '%d мүнөт',
8698            h: 'бир саат',
8699            hh: '%d саат',
8700            d: 'бир күн',
8701            dd: '%d күн',
8702            M: 'бир ай',
8703            MM: '%d ай',
8704            y: 'бир жыл',
8705            yy: '%d жыл'
8706        },
8707        ordinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
8708        ordinal: function (number) {
8709            var a = number % 10,
8710                b = number >= 100 ? 100 : null;
8711            return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);
8712        },
8713        week: {
8714            dow: 1, // Monday is the first day of the week.
8715            doy: 7  // The week that contains Jan 1st is the first week of the year.
8716        }
8717    });
8718
8719    //! moment.js locale configuration
8720    //! locale : Luxembourgish [lb]
8721    //! author : mweimerskirch : https://github.com/mweimerskirch
8722    //! author : David Raison : https://github.com/kwisatz
8723
8724    function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
8725        var format = {
8726            'm': ['eng Minutt', 'enger Minutt'],
8727            'h': ['eng Stonn', 'enger Stonn'],
8728            'd': ['een Dag', 'engem Dag'],
8729            'M': ['ee Mount', 'engem Mount'],
8730            'y': ['ee Joer', 'engem Joer']
8731        };
8732        return withoutSuffix ? format[key][0] : format[key][1];
8733    }
8734    function processFutureTime(string) {
8735        var number = string.substr(0, string.indexOf(' '));
8736        if (eifelerRegelAppliesToNumber(number)) {
8737            return 'a ' + string;
8738        }
8739        return 'an ' + string;
8740    }
8741    function processPastTime(string) {
8742        var number = string.substr(0, string.indexOf(' '));
8743        if (eifelerRegelAppliesToNumber(number)) {
8744            return 'viru ' + string;
8745        }
8746        return 'virun ' + string;
8747    }
8748    /**
8749     * Returns true if the word before the given number loses the '-n' ending.
8750     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
8751     *
8752     * @param number {integer}
8753     * @returns {boolean}
8754     */
8755    function eifelerRegelAppliesToNumber(number) {
8756        number = parseInt(number, 10);
8757        if (isNaN(number)) {
8758            return false;
8759        }
8760        if (number < 0) {
8761            // Negative Number --> always true
8762            return true;
8763        } else if (number < 10) {
8764            // Only 1 digit
8765            if (4 <= number && number <= 7) {
8766                return true;
8767            }
8768            return false;
8769        } else if (number < 100) {
8770            // 2 digits
8771            var lastDigit = number % 10, firstDigit = number / 10;
8772            if (lastDigit === 0) {
8773                return eifelerRegelAppliesToNumber(firstDigit);
8774            }
8775            return eifelerRegelAppliesToNumber(lastDigit);
8776        } else if (number < 10000) {
8777            // 3 or 4 digits --> recursively check first digit
8778            while (number >= 10) {
8779                number = number / 10;
8780            }
8781            return eifelerRegelAppliesToNumber(number);
8782        } else {
8783            // Anything larger than 4 digits: recursively check first n-3 digits
8784            number = number / 1000;
8785            return eifelerRegelAppliesToNumber(number);
8786        }
8787    }
8788
8789    hooks.defineLocale('lb', {
8790        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
8791        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
8792        monthsParseExact: true,
8793        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
8794        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
8795        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
8796        weekdaysParseExact: true,
8797        longDateFormat: {
8798            LT: 'H:mm [Auer]',
8799            LTS: 'H:mm:ss [Auer]',
8800            L: 'DD.MM.YYYY',
8801            LL: 'D. MMMM YYYY',
8802            LLL: 'D. MMMM YYYY H:mm [Auer]',
8803            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'
8804        },
8805        calendar: {
8806            sameDay: '[Haut um] LT',
8807            sameElse: 'L',
8808            nextDay: '[Muer um] LT',
8809            nextWeek: 'dddd [um] LT',
8810            lastDay: '[Gëschter um] LT',
8811            lastWeek: function () {
8812                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
8813                switch (this.day()) {
8814                    case 2:
8815                    case 4:
8816                        return '[Leschten] dddd [um] LT';
8817                    default:
8818                        return '[Leschte] dddd [um] LT';
8819                }
8820            }
8821        },
8822        relativeTime: {
8823            future: processFutureTime,
8824            past: processPastTime,
8825            s: 'e puer Sekonnen',
8826            m: processRelativeTime$3,
8827            mm: '%d Minutten',
8828            h: processRelativeTime$3,
8829            hh: '%d Stonnen',
8830            d: processRelativeTime$3,
8831            dd: '%d Deeg',
8832            M: processRelativeTime$3,
8833            MM: '%d Méint',
8834            y: processRelativeTime$3,
8835            yy: '%d Joer'
8836        },
8837        ordinalParse: /\d{1,2}\./,
8838        ordinal: '%d.',
8839        week: {
8840            dow: 1, // Monday is the first day of the week.
8841            doy: 4  // The week that contains Jan 4th is the first week of the year.
8842        }
8843    });
8844
8845    //! moment.js locale configuration
8846    //! locale : Lao [lo]
8847    //! author : Ryan Hart : https://github.com/ryanhart2
8848
8849    hooks.defineLocale('lo', {
8850        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
8851        monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
8852        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
8853        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
8854        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
8855        weekdaysParseExact: true,
8856        longDateFormat: {
8857            LT: 'HH:mm',
8858            LTS: 'HH:mm:ss',
8859            L: 'DD/MM/YYYY',
8860            LL: 'D MMMM YYYY',
8861            LLL: 'D MMMM YYYY HH:mm',
8862            LLLL: 'ວັນdddd D MMMM YYYY HH:mm'
8863        },
8864        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
8865        isPM: function (input) {
8866            return input === 'ຕອນແລງ';
8867        },
8868        meridiem: function (hour, minute, isLower) {
8869            if (hour < 12) {
8870                return 'ຕອນເຊົ້າ';
8871            } else {
8872                return 'ຕອນແລງ';
8873            }
8874        },
8875        calendar: {
8876            sameDay: '[ມື້ນີ້ເວລາ] LT',
8877            nextDay: '[ມື້ອື່ນເວລາ] LT',
8878            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
8879            lastDay: '[ມື້ວານນີ້ເວລາ] LT',
8880            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
8881            sameElse: 'L'
8882        },
8883        relativeTime: {
8884            future: 'ອີກ %s',
8885            past: '%sຜ່ານມາ',
8886            s: 'ບໍ່ເທົ່າໃດວິນາທີ',
8887            m: '1 ນາທີ',
8888            mm: '%d ນາທີ',
8889            h: '1 ຊົ່ວໂມງ',
8890            hh: '%d ຊົ່ວໂມງ',
8891            d: '1 ມື້',
8892            dd: '%d ມື້',
8893            M: '1 ເດືອນ',
8894            MM: '%d ເດືອນ',
8895            y: '1 ປີ',
8896            yy: '%d ປີ'
8897        },
8898        ordinalParse: /(ທີ່)\d{1,2}/,
8899        ordinal: function (number) {
8900            return 'ທີ່' + number;
8901        }
8902    });
8903
8904    //! moment.js locale configuration
8905    //! locale : Lithuanian [lt]
8906    //! author : Mindaugas Mozūras : https://github.com/mmozuras
8907
8908    var units = {
8909        'm': 'minutė_minutės_minutę',
8910        'mm': 'minutės_minučių_minutes',
8911        'h': 'valanda_valandos_valandą',
8912        'hh': 'valandos_valandų_valandas',
8913        'd': 'diena_dienos_dieną',
8914        'dd': 'dienos_dienų_dienas',
8915        'M': 'mėnuo_mėnesio_mėnesį',
8916        'MM': 'mėnesiai_mėnesių_mėnesius',
8917        'y': 'metai_metų_metus',
8918        'yy': 'metai_metų_metus'
8919    };
8920    function translateSeconds(number, withoutSuffix, key, isFuture) {
8921        if (withoutSuffix) {
8922            return 'kelios sekundės';
8923        } else {
8924            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
8925        }
8926    }
8927    function translateSingular(number, withoutSuffix, key, isFuture) {
8928        return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);
8929    }
8930    function special(number) {
8931        return number % 10 === 0 || (number > 10 && number < 20);
8932    }
8933    function forms(key) {
8934        return units[key].split('_');
8935    }
8936    function translate$6(number, withoutSuffix, key, isFuture) {
8937        var result = number + ' ';
8938        if (number === 1) {
8939            return result + translateSingular(number, withoutSuffix, key[0], isFuture);
8940        } else if (withoutSuffix) {
8941            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
8942        } else {
8943            if (isFuture) {
8944                return result + forms(key)[1];
8945            } else {
8946                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
8947            }
8948        }
8949    }
8950    hooks.defineLocale('lt', {
8951        months: {
8952            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),
8953            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),
8954            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/
8955        },
8956        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
8957        weekdays: {
8958            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),
8959            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),
8960            isFormat: /dddd HH:mm/
8961        },
8962        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
8963        weekdaysMin: 'S_P_A_T_K_Pn_Å '.split('_'),
8964        weekdaysParseExact: true,
8965        longDateFormat: {
8966            LT: 'HH:mm',
8967            LTS: 'HH:mm:ss',
8968            L: 'YYYY-MM-DD',
8969            LL: 'YYYY [m.] MMMM D [d.]',
8970            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
8971            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
8972            l: 'YYYY-MM-DD',
8973            ll: 'YYYY [m.] MMMM D [d.]',
8974            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
8975            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
8976        },
8977        calendar: {
8978            sameDay: '[Å iandien] LT',
8979            nextDay: '[Rytoj] LT',
8980            nextWeek: 'dddd LT',
8981            lastDay: '[Vakar] LT',
8982            lastWeek: '[Praėjusį] dddd LT',
8983            sameElse: 'L'
8984        },
8985        relativeTime: {
8986            future: 'po %s',
8987            past: 'prieš %s',
8988            s: translateSeconds,
8989            m: translateSingular,
8990            mm: translate$6,
8991            h: translateSingular,
8992            hh: translate$6,
8993            d: translateSingular,
8994            dd: translate$6,
8995            M: translateSingular,
8996            MM: translate$6,
8997            y: translateSingular,
8998            yy: translate$6
8999        },
9000        ordinalParse: /\d{1,2}-oji/,
9001        ordinal: function (number) {
9002            return number + '-oji';
9003        },
9004        week: {
9005            dow: 1, // Monday is the first day of the week.
9006            doy: 4  // The week that contains Jan 4th is the first week of the year.
9007        }
9008    });
9009
9010    //! moment.js locale configuration
9011    //! locale : Latvian [lv]
9012    //! author : Kristaps Karlsons : https://github.com/skakri
9013    //! author : Jānis Elmeris : https://github.com/JanisE
9014
9015    var units$1 = {
9016        'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
9017        'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
9018        'h': 'stundas_stundām_stunda_stundas'.split('_'),
9019        'hh': 'stundas_stundām_stunda_stundas'.split('_'),
9020        'd': 'dienas_dienām_diena_dienas'.split('_'),
9021        'dd': 'dienas_dienām_diena_dienas'.split('_'),
9022        'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
9023        'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
9024        'y': 'gada_gadiem_gads_gadi'.split('_'),
9025        'yy': 'gada_gadiem_gads_gadi'.split('_')
9026    };
9027    /**
9028     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
9029     */
9030    function format$1(forms, number, withoutSuffix) {
9031        if (withoutSuffix) {
9032            // E.g. "21 minūte", "3 minūtes".
9033            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
9034        } else {
9035            // E.g. "21 minūtes" as in "pēc 21 minūtes".
9036            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
9037            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
9038        }
9039    }
9040    function relativeTimeWithPlural$1(number, withoutSuffix, key) {
9041        return number + ' ' + format$1(units$1[key], number, withoutSuffix);
9042    }
9043    function relativeTimeWithSingular(number, withoutSuffix, key) {
9044        return format$1(units$1[key], number, withoutSuffix);
9045    }
9046    function relativeSeconds(number, withoutSuffix) {
9047        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
9048    }
9049
9050    hooks.defineLocale('lv', {
9051        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
9052        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
9053        weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
9054        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
9055        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
9056        weekdaysParseExact: true,
9057        longDateFormat: {
9058            LT: 'HH:mm',
9059            LTS: 'HH:mm:ss',
9060            L: 'DD.MM.YYYY.',
9061            LL: 'YYYY. [gada] D. MMMM',
9062            LLL: 'YYYY. [gada] D. MMMM, HH:mm',
9063            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm'
9064        },
9065        calendar: {
9066            sameDay: '[Å odien pulksten] LT',
9067            nextDay: '[Rīt pulksten] LT',
9068            nextWeek: 'dddd [pulksten] LT',
9069            lastDay: '[Vakar pulksten] LT',
9070            lastWeek: '[Pagājušā] dddd [pulksten] LT',
9071            sameElse: 'L'
9072        },
9073        relativeTime: {
9074            future: 'pēc %s',
9075            past: 'pirms %s',
9076            s: relativeSeconds,
9077            m: relativeTimeWithSingular,
9078            mm: relativeTimeWithPlural$1,
9079            h: relativeTimeWithSingular,
9080            hh: relativeTimeWithPlural$1,
9081            d: relativeTimeWithSingular,
9082            dd: relativeTimeWithPlural$1,
9083            M: relativeTimeWithSingular,
9084            MM: relativeTimeWithPlural$1,
9085            y: relativeTimeWithSingular,
9086            yy: relativeTimeWithPlural$1
9087        },
9088        ordinalParse: /\d{1,2}\./,
9089        ordinal: '%d.',
9090        week: {
9091            dow: 1, // Monday is the first day of the week.
9092            doy: 4  // The week that contains Jan 4th is the first week of the year.
9093        }
9094    });
9095
9096    //! moment.js locale configuration
9097    //! locale : Montenegrin [me]
9098    //! author : Miodrag Nikač <[email protected]> : https://github.com/miodragnikac
9099
9100    var translator = {
9101        words: { //Different grammatical cases
9102            m: ['jedan minut', 'jednog minuta'],
9103            mm: ['minut', 'minuta', 'minuta'],
9104            h: ['jedan sat', 'jednog sata'],
9105            hh: ['sat', 'sata', 'sati'],
9106            dd: ['dan', 'dana', 'dana'],
9107            MM: ['mjesec', 'mjeseca', 'mjeseci'],
9108            yy: ['godina', 'godine', 'godina']
9109        },
9110        correctGrammaticalCase: function (number, wordKey) {
9111            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
9112        },
9113        translate: function (number, withoutSuffix, key) {
9114            var wordKey = translator.words[key];
9115            if (key.length === 1) {
9116                return withoutSuffix ? wordKey[0] : wordKey[1];
9117            } else {
9118                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
9119            }
9120        }
9121    };
9122
9123    hooks.defineLocale('me', {
9124        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
9125        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
9126        monthsParseExact: true,
9127        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
9128        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
9129        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
9130        weekdaysParseExact: true,
9131        longDateFormat: {
9132            LT: 'H:mm',
9133            LTS: 'H:mm:ss',
9134            L: 'DD.MM.YYYY',
9135            LL: 'D. MMMM YYYY',
9136            LLL: 'D. MMMM YYYY H:mm',
9137            LLLL: 'dddd, D. MMMM YYYY H:mm'
9138        },
9139        calendar: {
9140            sameDay: '[danas u] LT',
9141            nextDay: '[sjutra u] LT',
9142
9143            nextWeek: function () {
9144                switch (this.day()) {
9145                    case 0:
9146                        return '[u] [nedjelju] [u] LT';
9147                    case 3:
9148                        return '[u] [srijedu] [u] LT';
9149                    case 6:
9150                        return '[u] [subotu] [u] LT';
9151                    case 1:
9152                    case 2:
9153                    case 4:
9154                    case 5:
9155                        return '[u] dddd [u] LT';
9156                }
9157            },
9158            lastDay: '[juče u] LT',
9159            lastWeek: function () {
9160                var lastWeekDays = [
9161                    '[prošle] [nedjelje] [u] LT',
9162                    '[prošlog] [ponedjeljka] [u] LT',
9163                    '[prošlog] [utorka] [u] LT',
9164                    '[prošle] [srijede] [u] LT',
9165                    '[prošlog] [četvrtka] [u] LT',
9166                    '[prošlog] [petka] [u] LT',
9167                    '[prošle] [subote] [u] LT'
9168                ];
9169                return lastWeekDays[this.day()];
9170            },
9171            sameElse: 'L'
9172        },
9173        relativeTime: {
9174            future: 'za %s',
9175            past: 'prije %s',
9176            s: 'nekoliko sekundi',
9177            m: translator.translate,
9178            mm: translator.translate,
9179            h: translator.translate,
9180            hh: translator.translate,
9181            d: 'dan',
9182            dd: translator.translate,
9183            M: 'mjesec',
9184            MM: translator.translate,
9185            y: 'godinu',
9186            yy: translator.translate
9187        },
9188        ordinalParse: /\d{1,2}\./,
9189        ordinal: '%d.',
vendor: 4,436 bytes, lines 9190-9298
9190        week: {
9191            dow: 1, // Monday is the first day of the week.
9192            doy: 7  // The week that contains Jan 1st is the first week of the year.
9193        }
9194    });
9195
9196    //! moment.js locale configuration
9197    //! locale : Maori [mi]
9198    //! author : John Corrigan <[email protected]> : https://github.com/johnideal
9199
9200    hooks.defineLocale('mi', {
9201        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('_'),
9202        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),
9203        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
9204        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
9205        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
9206        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
9207        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
9208        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
9209        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
9210        longDateFormat: {
9211            LT: 'HH:mm',
9212            LTS: 'HH:mm:ss',
9213            L: 'DD/MM/YYYY',
9214            LL: 'D MMMM YYYY',
9215            LLL: 'D MMMM YYYY [i] HH:mm',
9216            LLLL: 'dddd, D MMMM YYYY [i] HH:mm'
9217        },
9218        calendar: {
9219            sameDay: '[i teie mahana, i] LT',
9220            nextDay: '[apopo i] LT',
9221            nextWeek: 'dddd [i] LT',
9222            lastDay: '[inanahi i] LT',
9223            lastWeek: 'dddd [whakamutunga i] LT',
9224            sameElse: 'L'
9225        },
9226        relativeTime: {
9227            future: 'i roto i %s',
9228            past: '%s i mua',
9229            s: 'te hēkona ruarua',
9230            m: 'he meneti',
9231            mm: '%d meneti',
9232            h: 'te haora',
9233            hh: '%d haora',
9234            d: 'he ra',
9235            dd: '%d ra',
9236            M: 'he marama',
9237            MM: '%d marama',
9238            y: 'he tau',
9239            yy: '%d tau'
9240        },
9241        ordinalParse: /\d{1,2}º/,
9242        ordinal: '%dº',
9243        week: {
9244            dow: 1, // Monday is the first day of the week.
9245            doy: 4  // The week that contains Jan 4th is the first week of the year.
9246        }
9247    });
9248
9249    //! moment.js locale configuration
9250    //! locale : Macedonian [mk]
9251    //! author : Borislav Mickov : https://github.com/B0k0
9252
9253    hooks.defineLocale('mk', {
9254        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
9255        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
9256        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
9257        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
9258        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
9259        longDateFormat: {
9260            LT: 'H:mm',
9261            LTS: 'H:mm:ss',
9262            L: 'D.MM.YYYY',
9263            LL: 'D MMMM YYYY',
9264            LLL: 'D MMMM YYYY H:mm',
9265            LLLL: 'dddd, D MMMM YYYY H:mm'
9266        },
9267        calendar: {
9268            sameDay: '[Денес во] LT',
9269            nextDay: '[Утре во] LT',
9270            nextWeek: '[Во] dddd [во] LT',
9271            lastDay: '[Вчера во] LT',
9272            lastWeek: function () {
9273                switch (this.day()) {
9274                    case 0:
9275                    case 3:
9276                    case 6:
9277                        return '[Изминатата] dddd [во] LT';
9278                    case 1:
9279                    case 2:
9280                    case 4:
9281                    case 5:
9282                        return '[Изминатиот] dddd [во] LT';
9283                }
9284            },
9285            sameElse: 'L'
9286        },
9287        relativeTime: {
9288            future: 'после %s',
9289            past: 'пред %s',
9290            s: 'неколку секунди',
9291            m: 'минута',
9292            mm: '%d минути',
9293            h: 'час',
9294            hh: '%d часа',
9295            d: 'ден',
9296            dd: '%d дена',
9297            M: 'месец',
9298            MM: '%d месеци',
vendor: 15,886 bytes, lines 9299-9686
9299            y: 'година',
9300            yy: '%d години'
9301        },
9302        ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
9303        ordinal: function (number) {
9304            var lastDigit = number % 10,
9305                last2Digits = number % 100;
9306            if (number === 0) {
9307                return number + '-ев';
9308            } else if (last2Digits === 0) {
9309                return number + '-ен';
9310            } else if (last2Digits > 10 && last2Digits < 20) {
9311                return number + '-ти';
9312            } else if (lastDigit === 1) {
9313                return number + '-ви';
9314            } else if (lastDigit === 2) {
9315                return number + '-ри';
9316            } else if (lastDigit === 7 || lastDigit === 8) {
9317                return number + '-ми';
9318            } else {
9319                return number + '-ти';
9320            }
9321        },
9322        week: {
9323            dow: 1, // Monday is the first day of the week.
9324            doy: 7  // The week that contains Jan 1st is the first week of the year.
9325        }
9326    });
9327
9328    //! moment.js locale configuration
9329    //! locale : Malayalam [ml]
9330    //! author : Floyd Pink : https://github.com/floydpink
9331
9332    hooks.defineLocale('ml', {
9333        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
9334        monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
9335        monthsParseExact: true,
9336        weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
9337        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
9338        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
9339        longDateFormat: {
9340            LT: 'A h:mm -നു',
9341            LTS: 'A h:mm:ss -നു',
9342            L: 'DD/MM/YYYY',
9343            LL: 'D MMMM YYYY',
9344            LLL: 'D MMMM YYYY, A h:mm -നു',
9345            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു'
9346        },
9347        calendar: {
9348            sameDay: '[ഇന്ന്] LT',
9349            nextDay: '[നാളെ] LT',
9350            nextWeek: 'dddd, LT',
9351            lastDay: '[ഇന്നലെ] LT',
9352            lastWeek: '[കഴിഞ്ഞ] dddd, LT',
9353            sameElse: 'L'
9354        },
9355        relativeTime: {
9356            future: '%s കഴിഞ്ഞ്',
9357            past: '%s മുൻപ്',
9358            s: 'അൽപ നിമിഷങ്ങൾ',
9359            m: 'ഒരു മിനിറ്റ്',
9360            mm: '%d മിനിറ്റ്',
9361            h: 'ഒരു മണിക്കൂർ',
9362            hh: '%d മണിക്കൂർ',
9363            d: 'ഒരു ദിവസം',
9364            dd: '%d ദിവസം',
9365            M: 'ഒരു മാസം',
9366            MM: '%d മാസം',
9367            y: 'ഒരു വർഷം',
9368            yy: '%d വർഷം'
9369        },
9370        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
9371        meridiemHour: function (hour, meridiem) {
9372            if (hour === 12) {
9373                hour = 0;
9374            }
9375            if ((meridiem === 'രാത്രി' && hour >= 4) ||
9376                    meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
9377                    meridiem === 'വൈകുന്നേരം') {
9378                return hour + 12;
9379            } else {
9380                return hour;
9381            }
9382        },
9383        meridiem: function (hour, minute, isLower) {
9384            if (hour < 4) {
9385                return 'രാത്രി';
9386            } else if (hour < 12) {
9387                return 'രാവിലെ';
9388            } else if (hour < 17) {
9389                return 'ഉച്ച കഴിഞ്ഞ്';
9390            } else if (hour < 20) {
9391                return 'വൈകുന്നേരം';
9392            } else {
9393                return 'രാത്രി';
9394            }
9395        }
9396    });
9397
9398    //! moment.js locale configuration
9399    //! locale : Marathi [mr]
9400    //! author : Harshad Kale : https://github.com/kalehv
9401    //! author : Vivek Athalye : https://github.com/vnathalye
9402
9403    var symbolMap$7 = {
9404        '1': '१',
9405        '2': '२',
9406        '3': '३',
9407        '4': '४',
9408        '5': '५',
9409        '6': '६',
9410        '7': '७',
9411        '8': '८',
9412        '9': '९',
9413        '0': '०'
9414    };
9415    var numberMap$6 = {
9416        '१': '1',
9417        '२': '2',
9418        '३': '3',
9419        '४': '4',
9420        '५': '5',
9421        '६': '6',
9422        '७': '7',
9423        '८': '8',
9424        '९': '9',
9425        '०': '0'
9426    };
9427
9428    function relativeTimeMr(number, withoutSuffix, string, isFuture) {
9429        var output = '';
9430        if (withoutSuffix) {
9431            switch (string) {
9432                case 's': output = 'काही सेकंद'; break;
9433                case 'm': output = 'एक मिनिट'; break;
9434                case 'mm': output = '%d मिनिटे'; break;
9435                case 'h': output = 'एक तास'; break;
9436                case 'hh': output = '%d तास'; break;
9437                case 'd': output = 'एक दिवस'; break;
9438                case 'dd': output = '%d दिवस'; break;
9439                case 'M': output = 'एक महिना'; break;
9440                case 'MM': output = '%d महिने'; break;
9441                case 'y': output = 'एक वर्ष'; break;
9442                case 'yy': output = '%d वर्षे'; break;
9443            }
9444        }
9445        else {
9446            switch (string) {
9447                case 's': output = 'काही सेकंदां'; break;
9448                case 'm': output = 'एका मिनिटा'; break;
9449                case 'mm': output = '%d मिनिटां'; break;
9450                case 'h': output = 'एका तासा'; break;
9451                case 'hh': output = '%d तासां'; break;
9452                case 'd': output = 'एका दिवसा'; break;
9453                case 'dd': output = '%d दिवसां'; break;
9454                case 'M': output = 'एका महिन्या'; break;
9455                case 'MM': output = '%d महिन्यां'; break;
9456                case 'y': output = 'एका वर्षा'; break;
9457                case 'yy': output = '%d वर्षां'; break;
9458            }
9459        }
9460        return output.replace(/%d/i, number);
9461    }
9462
9463    hooks.defineLocale('mr', {
9464        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
9465        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
9466        monthsParseExact: true,
9467        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
9468        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
9469        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
9470        longDateFormat: {
9471            LT: 'A h:mm वाजता',
9472            LTS: 'A h:mm:ss वाजता',
9473            L: 'DD/MM/YYYY',
9474            LL: 'D MMMM YYYY',
9475            LLL: 'D MMMM YYYY, A h:mm वाजता',
9476            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता'
9477        },
9478        calendar: {
9479            sameDay: '[आज] LT',
9480            nextDay: '[उद्या] LT',
9481            nextWeek: 'dddd, LT',
9482            lastDay: '[काल] LT',
9483            lastWeek: '[मागील] dddd, LT',
9484            sameElse: 'L'
9485        },
9486        relativeTime: {
9487            future: '%sमध्ये',
9488            past: '%sपूर्वी',
9489            s: relativeTimeMr,
9490            m: relativeTimeMr,
9491            mm: relativeTimeMr,
9492            h: relativeTimeMr,
9493            hh: relativeTimeMr,
9494            d: relativeTimeMr,
9495            dd: relativeTimeMr,
9496            M: relativeTimeMr,
9497            MM: relativeTimeMr,
9498            y: relativeTimeMr,
9499            yy: relativeTimeMr
9500        },
9501        preparse: function (string) {
9502            return string.replace(/[१२३४५६७८९०]/g, function (match) {
9503                return numberMap$6[match];
9504            });
9505        },
9506        postformat: function (string) {
9507            return string.replace(/\d/g, function (match) {
9508                return symbolMap$7[match];
9509            });
9510        },
9511        meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,
9512        meridiemHour: function (hour, meridiem) {
9513            if (hour === 12) {
9514                hour = 0;
9515            }
9516            if (meridiem === 'रात्री') {
9517                return hour < 4 ? hour : hour + 12;
9518            } else if (meridiem === 'सकाळी') {
9519                return hour;
9520            } else if (meridiem === 'दुपारी') {
9521                return hour >= 10 ? hour : hour + 12;
9522            } else if (meridiem === 'सायंकाळी') {
9523                return hour + 12;
9524            }
9525        },
9526        meridiem: function (hour, minute, isLower) {
9527            if (hour < 4) {
9528                return 'रात्री';
9529            } else if (hour < 10) {
9530                return 'सकाळी';
9531            } else if (hour < 17) {
9532                return 'दुपारी';
9533            } else if (hour < 20) {
9534                return 'सायंकाळी';
9535            } else {
9536                return 'रात्री';
9537            }
9538        },
9539        week: {
9540            dow: 0, // Sunday is the first day of the week.
9541            doy: 6  // The week that contains Jan 1st is the first week of the year.
9542        }
9543    });
9544
9545    //! moment.js locale configuration
9546    //! locale : Malay [ms-my]
9547    //! note : DEPRECATED, the correct one is [ms]
9548    //! author : Weldan Jamili : https://github.com/weldan
9549
9550    hooks.defineLocale('ms-my', {
9551        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
9552        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
9553        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
9554        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
9555        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
9556        longDateFormat: {
9557            LT: 'HH.mm',
9558            LTS: 'HH.mm.ss',
9559            L: 'DD/MM/YYYY',
9560            LL: 'D MMMM YYYY',
9561            LLL: 'D MMMM YYYY [pukul] HH.mm',
9562            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'
9563        },
9564        meridiemParse: /pagi|tengahari|petang|malam/,
9565        meridiemHour: function (hour, meridiem) {
9566            if (hour === 12) {
9567                hour = 0;
9568            }
9569            if (meridiem === 'pagi') {
9570                return hour;
9571            } else if (meridiem === 'tengahari') {
9572                return hour >= 11 ? hour : hour + 12;
9573            } else if (meridiem === 'petang' || meridiem === 'malam') {
9574                return hour + 12;
9575            }
9576        },
9577        meridiem: function (hours, minutes, isLower) {
9578            if (hours < 11) {
9579                return 'pagi';
9580            } else if (hours < 15) {
9581                return 'tengahari';
9582            } else if (hours < 19) {
9583                return 'petang';
9584            } else {
9585                return 'malam';
9586            }
9587        },
9588        calendar: {
9589            sameDay: '[Hari ini pukul] LT',
9590            nextDay: '[Esok pukul] LT',
9591            nextWeek: 'dddd [pukul] LT',
9592            lastDay: '[Kelmarin pukul] LT',
9593            lastWeek: 'dddd [lepas pukul] LT',
9594            sameElse: 'L'
9595        },
9596        relativeTime: {
9597            future: 'dalam %s',
9598            past: '%s yang lepas',
9599            s: 'beberapa saat',
9600            m: 'seminit',
9601            mm: '%d minit',
9602            h: 'sejam',
9603            hh: '%d jam',
9604            d: 'sehari',
9605            dd: '%d hari',
9606            M: 'sebulan',
9607            MM: '%d bulan',
9608            y: 'setahun',
9609            yy: '%d tahun'
9610        },
9611        week: {
9612            dow: 1, // Monday is the first day of the week.
9613            doy: 7  // The week that contains Jan 1st is the first week of the year.
9614        }
9615    });
9616
9617    //! moment.js locale configuration
9618    //! locale : Malay [ms]
9619    //! author : Weldan Jamili : https://github.com/weldan
9620
9621    hooks.defineLocale('ms', {
9622        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
9623        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
9624        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
9625        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
9626        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
9627        longDateFormat: {
9628            LT: 'HH.mm',
9629            LTS: 'HH.mm.ss',
9630            L: 'DD/MM/YYYY',
9631            LL: 'D MMMM YYYY',
9632            LLL: 'D MMMM YYYY [pukul] HH.mm',
9633            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'
9634        },
9635        meridiemParse: /pagi|tengahari|petang|malam/,
9636        meridiemHour: function (hour, meridiem) {
9637            if (hour === 12) {
9638                hour = 0;
9639            }
9640            if (meridiem === 'pagi') {
9641                return hour;
9642            } else if (meridiem === 'tengahari') {
9643                return hour >= 11 ? hour : hour + 12;
9644            } else if (meridiem === 'petang' || meridiem === 'malam') {
9645                return hour + 12;
9646            }
9647        },
9648        meridiem: function (hours, minutes, isLower) {
9649            if (hours < 11) {
9650                return 'pagi';
9651            } else if (hours < 15) {
9652                return 'tengahari';
9653            } else if (hours < 19) {
9654                return 'petang';
9655            } else {
9656                return 'malam';
9657            }
9658        },
9659        calendar: {
9660            sameDay: '[Hari ini pukul] LT',
9661            nextDay: '[Esok pukul] LT',
9662            nextWeek: 'dddd [pukul] LT',
9663            lastDay: '[Kelmarin pukul] LT',
9664            lastWeek: 'dddd [lepas pukul] LT',
9665            sameElse: 'L'
9666        },
9667        relativeTime: {
9668            future: 'dalam %s',
9669            past: '%s yang lepas',
9670            s: 'beberapa saat',
9671            m: 'seminit',
9672            mm: '%d minit',
9673            h: 'sejam',
9674            hh: '%d jam',
9675            d: 'sehari',
9676            dd: '%d hari',
9677            M: 'sebulan',
9678            MM: '%d bulan',
9679            y: 'setahun',
9680            yy: '%d tahun'
9681        },
9682        week: {
9683            dow: 1, // Monday is the first day of the week.
9684            doy: 7  // The week that contains Jan 1st is the first week of the year.
9685        }
9686    });
9687
9688    //! moment.js locale configuration
9689    //! locale : Burmese [my]
9690    //! author : Squar team, mysquar.com
9691    //! author : David Rossellat : https://github.com/gholadr
9692    //! author : Tin Aung Lin : https://github.com/thanyawzinmin
9693
9694    var symbolMap$8 = {
9695        '1': '၁',
9696        '2': '၂',
9697        '3': '၃',
9698        '4': '၄',
9699        '5': '၅',
9700        '6': '၆',
9701        '7': '၇',
9702        '8': '၈',
9703        '9': '၉',
9704        '0': '၀'
9705    };
9706    var numberMap$7 = {
9707        '၁': '1',
9708        '၂': '2',
9709        '၃': '3',
9710        '၄': '4',
9711        '၅': '5',
9712        '၆': '6',
9713        '၇': '7',
9714        '၈': '8',
9715        '၉': '9',
9716        '၀': '0'
9717    };
9718
9719    hooks.defineLocale('my', {
9720        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),
9721        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
9722        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),
9723        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
9724        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
9725
9726        longDateFormat: {
9727            LT: 'HH:mm',
9728            LTS: 'HH:mm:ss',
9729            L: 'DD/MM/YYYY',
9730            LL: 'D MMMM YYYY',
9731            LLL: 'D MMMM YYYY HH:mm',
9732            LLLL: 'dddd D MMMM YYYY HH:mm'
9733        },
9734        calendar: {
9735            sameDay: '[ယနေ.] LT [မှာ]',
9736            nextDay: '[မနက်ဖြန်] LT [မှာ]',
9737            nextWeek: 'dddd LT [မှာ]',
9738            lastDay: '[မနေ.က] LT [မှာ]',
9739            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
9740            sameElse: 'L'
9741        },
9742        relativeTime: {
9743            future: 'လာမည့် %s မှာ',
9744            past: 'လွန်ခဲ့သော %s က',
9745            s: 'စက္ကန်.အနည်းငယ်',
9746            m: 'တစ်မိနစ်',
9747            mm: '%d မိနစ်',
9748            h: 'တစ်နာရီ',
9749            hh: '%d နာရီ',
9750            d: 'တစ်ရက်',
9751            dd: '%d ရက်',
9752            M: 'တစ်လ',
9753            MM: '%d လ',
9754            y: 'တစ်နှစ်',
9755            yy: '%d နှစ်'
9756        },
9757        preparse: function (string) {
9758            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
9759                return numberMap$7[match];
9760            });
9761        },
9762        postformat: function (string) {
9763            return string.replace(/\d/g, function (match) {
9764                return symbolMap$8[match];
9765            });
9766        },
9767        week: {
9768            dow: 1, // Monday is the first day of the week.
9769            doy: 4 // The week that contains Jan 1st is the first week of the year.
9770        }
9771    });
9772
9773    //! moment.js locale configuration
9774    //! locale : Norwegian Bokmål [nb]
9775    //! authors : Espen Hovlandsdal : https://github.com/rexxars
9776    //!           Sigurd Gartmann : https://github.com/sigurdga
9777
9778    hooks.defineLocale('nb', {
9779        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
9780        monthsShort: 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
9781        monthsParseExact: true,
9782        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
9783        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
9784        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
9785        weekdaysParseExact: true,
9786        longDateFormat: {
9787            LT: 'HH:mm',
9788            LTS: 'HH:mm:ss',
9789            L: 'DD.MM.YYYY',
9790            LL: 'D. MMMM YYYY',
9791            LLL: 'D. MMMM YYYY [kl.] HH:mm',
9792            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'
9793        },
9794        calendar: {
9795            sameDay: '[i dag kl.] LT',
9796            nextDay: '[i morgen kl.] LT',
9797            nextWeek: 'dddd [kl.] LT',
9798            lastDay: '[i går kl.] LT',
9799            lastWeek: '[forrige] dddd [kl.] LT',
9800            sameElse: 'L'
9801        },
9802        relativeTime: {
9803            future: 'om %s',
9804            past: '%s siden',
9805            s: 'noen sekunder',
9806            m: 'ett minutt',
9807            mm: '%d minutter',
9808            h: 'en time',
9809            hh: '%d timer',
9810            d: 'en dag',
9811            dd: '%d dager',
9812            M: 'en måned',
9813            MM: '%d måneder',
9814            y: 'ett år',
9815            yy: '%d år'
9816        },
9817        ordinalParse: /\d{1,2}\./,
9818        ordinal: '%d.',
vendor: 4,551 bytes, lines 9819-9935
9819        week: {
9820            dow: 1, // Monday is the first day of the week.
9821            doy: 4  // The week that contains Jan 4th is the first week of the year.
9822        }
9823    });
9824
9825    //! moment.js locale configuration
9826    //! locale : Nepalese [ne]
9827    //! author : suvash : https://github.com/suvash
9828
9829    var symbolMap$9 = {
9830        '1': '१',
9831        '2': '२',
9832        '3': '३',
9833        '4': '४',
9834        '5': '५',
9835        '6': '६',
9836        '7': '७',
9837        '8': '८',
9838        '9': '९',
9839        '0': '०'
9840    };
9841    var numberMap$8 = {
9842        '१': '1',
9843        '२': '2',
9844        '३': '3',
9845        '४': '4',
9846        '५': '5',
9847        '६': '6',
9848        '७': '7',
9849        '८': '8',
9850        '९': '9',
9851        '०': '0'
9852    };
9853
9854    hooks.defineLocale('ne', {
9855        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
9856        monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
9857        monthsParseExact: true,
9858        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
9859        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
9860        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
9861        weekdaysParseExact: true,
9862        longDateFormat: {
9863            LT: 'Aको h:mm बजे',
9864            LTS: 'Aको h:mm:ss बजे',
9865            L: 'DD/MM/YYYY',
9866            LL: 'D MMMM YYYY',
9867            LLL: 'D MMMM YYYY, Aको h:mm बजे',
9868            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे'
9869        },
9870        preparse: function (string) {
9871            return string.replace(/[१२३४५६७८९०]/g, function (match) {
9872                return numberMap$8[match];
9873            });
9874        },
9875        postformat: function (string) {
9876            return string.replace(/\d/g, function (match) {
9877                return symbolMap$9[match];
9878            });
9879        },
9880        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
9881        meridiemHour: function (hour, meridiem) {
9882            if (hour === 12) {
9883                hour = 0;
9884            }
9885            if (meridiem === 'राति') {
9886                return hour < 4 ? hour : hour + 12;
9887            } else if (meridiem === 'बिहान') {
9888                return hour;
9889            } else if (meridiem === 'दिउँसो') {
9890                return hour >= 10 ? hour : hour + 12;
9891            } else if (meridiem === 'साँझ') {
9892                return hour + 12;
9893            }
9894        },
9895        meridiem: function (hour, minute, isLower) {
9896            if (hour < 3) {
9897                return 'राति';
9898            } else if (hour < 12) {
9899                return 'बिहान';
9900            } else if (hour < 16) {
9901                return 'दिउँसो';
9902            } else if (hour < 20) {
9903                return 'साँझ';
9904            } else {
9905                return 'राति';
9906            }
9907        },
9908        calendar: {
9909            sameDay: '[आज] LT',
9910            nextDay: '[भोलि] LT',
9911            nextWeek: '[आउँदो] dddd[,] LT',
9912            lastDay: '[हिजो] LT',
9913            lastWeek: '[गएको] dddd[,] LT',
9914            sameElse: 'L'
9915        },
9916        relativeTime: {
9917            future: '%sमा',
9918            past: '%s अगाडि',
9919            s: 'केही क्षण',
9920            m: 'एक मिनेट',
9921            mm: '%d मिनेट',
9922            h: 'एक घण्टा',
9923            hh: '%d घण्टा',
9924            d: 'एक दिन',
9925            dd: '%d दिन',
9926            M: 'एक महिना',
9927            MM: '%d महिना',
9928            y: 'एक बर्ष',
9929            yy: '%d बर्ष'
9930        },
9931        week: {
9932            dow: 0, // Sunday is the first day of the week.
9933            doy: 6  // The week that contains Jan 1st is the first week of the year.
9934        }
9935    });
vendor: 63,304 bytes, lines 9936-11474
9936
9937    //! moment.js locale configuration
9938    //! locale : Dutch (Belgium) [nl-be]
9939    //! author : Joris Röling : https://github.com/jorisroling
9940    //! author : Jacob Middag : https://github.com/middagj
9941
9942    var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');
9943    var monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
9944
9945    var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];
9946    var monthsRegex$1 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
9947
9948    hooks.defineLocale('nl-be', {
9949        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
9950        monthsShort: function (m, format) {
9951            if (/-MMM-/.test(format)) {
9952                return monthsShortWithoutDots$1[m.month()];
9953            } else {
9954                return monthsShortWithDots$1[m.month()];
9955            }
9956        },
9957
9958        monthsRegex: monthsRegex$1,
9959        monthsShortRegex: monthsRegex$1,
9960        monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,
9961        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
9962
9963        monthsParse: monthsParse,
9964        longMonthsParse: monthsParse,
9965        shortMonthsParse: monthsParse,
9966
9967        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
9968        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
9969        weekdaysMin: 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),
9970        weekdaysParseExact: true,
9971        longDateFormat: {
9972            LT: 'HH:mm',
9973            LTS: 'HH:mm:ss',
9974            L: 'DD/MM/YYYY',
9975            LL: 'D MMMM YYYY',
9976            LLL: 'D MMMM YYYY HH:mm',
9977            LLLL: 'dddd D MMMM YYYY HH:mm'
9978        },
9979        calendar: {
9980            sameDay: '[vandaag om] LT',
9981            nextDay: '[morgen om] LT',
9982            nextWeek: 'dddd [om] LT',
9983            lastDay: '[gisteren om] LT',
9984            lastWeek: '[afgelopen] dddd [om] LT',
9985            sameElse: 'L'
9986        },
9987        relativeTime: {
9988            future: 'over %s',
9989            past: '%s geleden',
9990            s: 'een paar seconden',
9991            m: 'één minuut',
9992            mm: '%d minuten',
9993            h: 'één uur',
9994            hh: '%d uur',
9995            d: 'één dag',
9996            dd: '%d dagen',
9997            M: 'één maand',
9998            MM: '%d maanden',
9999            y: 'één jaar',
10000            yy: '%d jaar'
10001        },
10002        ordinalParse: /\d{1,2}(ste|de)/,
10003        ordinal: function (number) {
10004            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
10005        },
10006        week: {
10007            dow: 1, // Monday is the first day of the week.
10008            doy: 4  // The week that contains Jan 4th is the first week of the year.
10009        }
10010    });
10011
10012    //! moment.js locale configuration
10013    //! locale : Dutch [nl]
10014    //! author : Joris Röling : https://github.com/jorisroling
10015    //! author : Jacob Middag : https://github.com/middagj
10016
10017    var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');
10018    var monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
10019
10020    var monthsParse$1 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];
10021    var monthsRegex$2 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
10022
10023    hooks.defineLocale('nl', {
10024        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
10025        monthsShort: function (m, format) {
10026            if (/-MMM-/.test(format)) {
10027                return monthsShortWithoutDots$2[m.month()];
10028            } else {
10029                return monthsShortWithDots$2[m.month()];
10030            }
10031        },
10032
10033        monthsRegex: monthsRegex$2,
10034        monthsShortRegex: monthsRegex$2,
10035        monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,
10036        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
10037
10038        monthsParse: monthsParse$1,
10039        longMonthsParse: monthsParse$1,
10040        shortMonthsParse: monthsParse$1,
10041
10042        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
10043        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
10044        weekdaysMin: 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),
10045        weekdaysParseExact: true,
10046        longDateFormat: {
10047            LT: 'HH:mm',
10048            LTS: 'HH:mm:ss',
10049            L: 'DD-MM-YYYY',
10050            LL: 'D MMMM YYYY',
10051            LLL: 'D MMMM YYYY HH:mm',
10052            LLLL: 'dddd D MMMM YYYY HH:mm'
10053        },
10054        calendar: {
10055            sameDay: '[vandaag om] LT',
10056            nextDay: '[morgen om] LT',
10057            nextWeek: 'dddd [om] LT',
10058            lastDay: '[gisteren om] LT',
10059            lastWeek: '[afgelopen] dddd [om] LT',
10060            sameElse: 'L'
10061        },
10062        relativeTime: {
10063            future: 'over %s',
10064            past: '%s geleden',
10065            s: 'een paar seconden',
10066            m: 'één minuut',
10067            mm: '%d minuten',
10068            h: 'één uur',
10069            hh: '%d uur',
10070            d: 'één dag',
10071            dd: '%d dagen',
10072            M: 'één maand',
10073            MM: '%d maanden',
10074            y: 'één jaar',
10075            yy: '%d jaar'
10076        },
10077        ordinalParse: /\d{1,2}(ste|de)/,
10078        ordinal: function (number) {
10079            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
10080        },
10081        week: {
10082            dow: 1, // Monday is the first day of the week.
10083            doy: 4  // The week that contains Jan 4th is the first week of the year.
10084        }
10085    });
10086
10087    //! moment.js locale configuration
10088    //! locale : Nynorsk [nn]
10089    //! author : https://github.com/mechuwind
10090
10091    hooks.defineLocale('nn', {
10092        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
10093        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
10094        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
10095        weekdaysShort: 'sun_mån_tys_ons_tor_fre_lau'.split('_'),
10096        weekdaysMin: 'su_må_ty_on_to_fr_lø'.split('_'),
10097        longDateFormat: {
10098            LT: 'HH:mm',
10099            LTS: 'HH:mm:ss',
10100            L: 'DD.MM.YYYY',
10101            LL: 'D. MMMM YYYY',
10102            LLL: 'D. MMMM YYYY [kl.] H:mm',
10103            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'
10104        },
10105        calendar: {
10106            sameDay: '[I dag klokka] LT',
10107            nextDay: '[I morgon klokka] LT',
10108            nextWeek: 'dddd [klokka] LT',
10109            lastDay: '[I går klokka] LT',
10110            lastWeek: '[Føregåande] dddd [klokka] LT',
10111            sameElse: 'L'
10112        },
10113        relativeTime: {
10114            future: 'om %s',
10115            past: '%s sidan',
10116            s: 'nokre sekund',
10117            m: 'eit minutt',
10118            mm: '%d minutt',
10119            h: 'ein time',
10120            hh: '%d timar',
10121            d: 'ein dag',
10122            dd: '%d dagar',
10123            M: 'ein månad',
10124            MM: '%d månader',
10125            y: 'eit år',
10126            yy: '%d år'
10127        },
10128        ordinalParse: /\d{1,2}\./,
10129        ordinal: '%d.',
10130        week: {
10131            dow: 1, // Monday is the first day of the week.
10132            doy: 4  // The week that contains Jan 4th is the first week of the year.
10133        }
10134    });
10135
10136    //! moment.js locale configuration
10137    //! locale : Punjabi (India) [pa-in]
10138    //! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
10139
10140    var symbolMap$10 = {
10141        '1': 'à©§',
10142        '2': '੨',
10143        '3': 'à©©',
10144        '4': '੪',
10145        '5': 'à©«',
10146        '6': '੬',
10147        '7': 'à©­',
10148        '8': 'à©®',
10149        '9': '੯',
10150        '0': '੦'
10151    };
10152    var numberMap$9 = {
10153        'à©§': '1',
10154        '੨': '2',
10155        'à©©': '3',
10156        '੪': '4',
10157        'à©«': '5',
10158        '੬': '6',
10159        'à©­': '7',
10160        'à©®': '8',
10161        '੯': '9',
10162        '੦': '0'
10163    };
10164
10165    hooks.defineLocale('pa-in', {
10166        // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.
10167        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
10168        monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
10169        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),
10170        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
10171        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
10172        longDateFormat: {
10173            LT: 'A h:mm ਵਜੇ',
10174            LTS: 'A h:mm:ss ਵਜੇ',
10175            L: 'DD/MM/YYYY',
10176            LL: 'D MMMM YYYY',
10177            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
10178            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'
10179        },
10180        calendar: {
10181            sameDay: '[ਅਜ] LT',
10182            nextDay: '[ਕਲ] LT',
10183            nextWeek: 'dddd, LT',
10184            lastDay: '[ਕਲ] LT',
10185            lastWeek: '[ਪਿਛਲੇ] dddd, LT',
10186            sameElse: 'L'
10187        },
10188        relativeTime: {
10189            future: '%s ਵਿੱਚ',
10190            past: '%s ਪਿਛਲੇ',
10191            s: 'ਕੁਝ ਸਕਿੰਟ',
10192            m: 'ਇਕ ਮਿੰਟ',
10193            mm: '%d ਮਿੰਟ',
10194            h: 'ਇੱਕ ਘੰਟਾ',
10195            hh: '%d ਘੰਟੇ',
10196            d: 'ਇੱਕ ਦਿਨ',
10197            dd: '%d ਦਿਨ',
10198            M: 'ਇੱਕ ਮਹੀਨਾ',
10199            MM: '%d ਮਹੀਨੇ',
10200            y: 'ਇੱਕ ਸਾਲ',
10201            yy: '%d ਸਾਲ'
10202        },
10203        preparse: function (string) {
10204            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
10205                return numberMap$9[match];
10206            });
10207        },
10208        postformat: function (string) {
10209            return string.replace(/\d/g, function (match) {
10210                return symbolMap$10[match];
10211            });
10212        },
10213        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
10214        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
10215        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
10216        meridiemHour: function (hour, meridiem) {
10217            if (hour === 12) {
10218                hour = 0;
10219            }
10220            if (meridiem === 'ਰਾਤ') {
10221                return hour < 4 ? hour : hour + 12;
10222            } else if (meridiem === 'ਸਵੇਰ') {
10223                return hour;
10224            } else if (meridiem === 'ਦੁਪਹਿਰ') {
10225                return hour >= 10 ? hour : hour + 12;
10226            } else if (meridiem === 'ਸ਼ਾਮ') {
10227                return hour + 12;
10228            }
10229        },
10230        meridiem: function (hour, minute, isLower) {
10231            if (hour < 4) {
10232                return 'ਰਾਤ';
10233            } else if (hour < 10) {
10234                return 'ਸਵੇਰ';
10235            } else if (hour < 17) {
10236                return 'ਦੁਪਹਿਰ';
10237            } else if (hour < 20) {
10238                return 'ਸ਼ਾਮ';
10239            } else {
10240                return 'ਰਾਤ';
10241            }
10242        },
10243        week: {
10244            dow: 0, // Sunday is the first day of the week.
10245            doy: 6  // The week that contains Jan 1st is the first week of the year.
10246        }
10247    });
10248
10249    //! moment.js locale configuration
10250    //! locale : Polish [pl]
10251    //! author : Rafal Hirsz : https://github.com/evoL
10252
10253    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');
10254    var monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');
10255    function plural$3(n) {
10256        return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);
10257    }
10258    function translate$7(number, withoutSuffix, key) {
10259        var result = number + ' ';
10260        switch (key) {
10261            case 'm':
10262                return withoutSuffix ? 'minuta' : 'minutę';
10263            case 'mm':
10264                return result + (plural$3(number) ? 'minuty' : 'minut');
10265            case 'h':
10266                return withoutSuffix ? 'godzina' : 'godzinę';
10267            case 'hh':
10268                return result + (plural$3(number) ? 'godziny' : 'godzin');
10269            case 'MM':
10270                return result + (plural$3(number) ? 'miesiące' : 'miesięcy');
10271            case 'yy':
10272                return result + (plural$3(number) ? 'lata' : 'lat');
10273        }
10274    }
10275
10276    hooks.defineLocale('pl', {
10277        months: function (momentToFormat, format) {
10278            if (format === '') {
10279                // Hack: if format empty we know this is used to generate
10280                // RegExp by moment. Give then back both valid forms of months
10281                // in RegExp ready format.
10282                return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';
10283            } else if (/D MMMM/.test(format)) {
10284                return monthsSubjective[momentToFormat.month()];
10285            } else {
10286                return monthsNominative[momentToFormat.month()];
10287            }
10288        },
10289        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
10290        weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
10291        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
10292        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
10293        longDateFormat: {
10294            LT: 'HH:mm',
10295            LTS: 'HH:mm:ss',
10296            L: 'DD.MM.YYYY',
10297            LL: 'D MMMM YYYY',
10298            LLL: 'D MMMM YYYY HH:mm',
10299            LLLL: 'dddd, D MMMM YYYY HH:mm'
10300        },
10301        calendar: {
10302            sameDay: '[Dziś o] LT',
10303            nextDay: '[Jutro o] LT',
10304            nextWeek: '[W] dddd [o] LT',
10305            lastDay: '[Wczoraj o] LT',
10306            lastWeek: function () {
10307                switch (this.day()) {
10308                    case 0:
10309                        return '[W zeszłą niedzielę o] LT';
10310                    case 3:
10311                        return '[W zeszłą środę o] LT';
10312                    case 6:
10313                        return '[W zeszłą sobotę o] LT';
10314                    default:
10315                        return '[W zeszły] dddd [o] LT';
10316                }
10317            },
10318            sameElse: 'L'
10319        },
10320        relativeTime: {
10321            future: 'za %s',
10322            past: '%s temu',
10323            s: 'kilka sekund',
10324            m: translate$7,
10325            mm: translate$7,
10326            h: translate$7,
10327            hh: translate$7,
10328            d: '1 dzień',
10329            dd: '%d dni',
10330            M: 'miesiąc',
10331            MM: translate$7,
10332            y: 'rok',
10333            yy: translate$7
10334        },
10335        ordinalParse: /\d{1,2}\./,
10336        ordinal: '%d.',
10337        week: {
10338            dow: 1, // Monday is the first day of the week.
10339            doy: 4  // The week that contains Jan 4th is the first week of the year.
10340        }
10341    });
10342
10343    //! moment.js locale configuration
10344    //! locale : Portuguese (Brazil) [pt-br]
10345    //! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
10346
10347    hooks.defineLocale('pt-br', {
10348        months: 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
10349        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
10350        weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
10351        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
10352        weekdaysMin: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
10353        weekdaysParseExact: true,
10354        longDateFormat: {
10355            LT: 'HH:mm',
10356            LTS: 'HH:mm:ss',
10357            L: 'DD/MM/YYYY',
10358            LL: 'D [de] MMMM [de] YYYY',
10359            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
10360            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
10361        },
10362        calendar: {
10363            sameDay: '[Hoje às] LT',
10364            nextDay: '[Amanhã às] LT',
10365            nextWeek: 'dddd [às] LT',
10366            lastDay: '[Ontem às] LT',
10367            lastWeek: function () {
10368                return (this.day() === 0 || this.day() === 6) ?
10369                    '[Último] dddd [às] LT' : // Saturday + Sunday
10370                    '[Última] dddd [às] LT'; // Monday - Friday
10371            },
10372            sameElse: 'L'
10373        },
10374        relativeTime: {
10375            future: 'em %s',
10376            past: '%s atrás',
10377            s: 'poucos segundos',
10378            m: 'um minuto',
10379            mm: '%d minutos',
10380            h: 'uma hora',
10381            hh: '%d horas',
10382            d: 'um dia',
10383            dd: '%d dias',
10384            M: 'um mês',
10385            MM: '%d meses',
10386            y: 'um ano',
10387            yy: '%d anos'
10388        },
10389        ordinalParse: /\d{1,2}º/,
10390        ordinal: '%dº'
10391    });
10392
10393    //! moment.js locale configuration
10394    //! locale : Portuguese [pt]
10395    //! author : Jefferson : https://github.com/jalex79
10396
10397    hooks.defineLocale('pt', {
10398        months: 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
10399        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
10400        weekdays: 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'),
10401        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
10402        weekdaysMin: 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),
10403        weekdaysParseExact: true,
10404        longDateFormat: {
10405            LT: 'HH:mm',
10406            LTS: 'HH:mm:ss',
10407            L: 'DD/MM/YYYY',
10408            LL: 'D [de] MMMM [de] YYYY',
10409            LLL: 'D [de] MMMM [de] YYYY HH:mm',
10410            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm'
10411        },
10412        calendar: {
10413            sameDay: '[Hoje às] LT',
10414            nextDay: '[Amanhã às] LT',
10415            nextWeek: 'dddd [às] LT',
10416            lastDay: '[Ontem às] LT',
10417            lastWeek: function () {
10418                return (this.day() === 0 || this.day() === 6) ?
10419                    '[Último] dddd [às] LT' : // Saturday + Sunday
10420                    '[Última] dddd [às] LT'; // Monday - Friday
10421            },
10422            sameElse: 'L'
10423        },
10424        relativeTime: {
10425            future: 'em %s',
10426            past: 'há %s',
10427            s: 'segundos',
10428            m: 'um minuto',
10429            mm: '%d minutos',
10430            h: 'uma hora',
10431            hh: '%d horas',
10432            d: 'um dia',
10433            dd: '%d dias',
10434            M: 'um mês',
10435            MM: '%d meses',
10436            y: 'um ano',
10437            yy: '%d anos'
10438        },
10439        ordinalParse: /\d{1,2}º/,
10440        ordinal: '%dº',
10441        week: {
10442            dow: 1, // Monday is the first day of the week.
10443            doy: 4  // The week that contains Jan 4th is the first week of the year.
10444        }
10445    });
10446
10447    //! moment.js locale configuration
10448    //! locale : Romanian [ro]
10449    //! author : Vlad Gurdiga : https://github.com/gurdiga
10450    //! author : Valentin Agachi : https://github.com/avaly
10451
10452    function relativeTimeWithPlural$2(number, withoutSuffix, key) {
10453        var format = {
10454            'mm': 'minute',
10455            'hh': 'ore',
10456            'dd': 'zile',
10457            'MM': 'luni',
10458            'yy': 'ani'
10459        },
10460            separator = ' ';
10461        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
10462            separator = ' de ';
10463        }
10464        return number + separator + format[key];
10465    }
10466
10467    hooks.defineLocale('ro', {
10468        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
10469        monthsShort: 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
10470        monthsParseExact: true,
10471        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
10472        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
10473        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
10474        longDateFormat: {
10475            LT: 'H:mm',
10476            LTS: 'H:mm:ss',
10477            L: 'DD.MM.YYYY',
10478            LL: 'D MMMM YYYY',
10479            LLL: 'D MMMM YYYY H:mm',
10480            LLLL: 'dddd, D MMMM YYYY H:mm'
10481        },
10482        calendar: {
10483            sameDay: '[azi la] LT',
10484            nextDay: '[mâine la] LT',
10485            nextWeek: 'dddd [la] LT',
10486            lastDay: '[ieri la] LT',
10487            lastWeek: '[fosta] dddd [la] LT',
10488            sameElse: 'L'
10489        },
10490        relativeTime: {
10491            future: 'peste %s',
10492            past: '%s în urmă',
10493            s: 'câteva secunde',
10494            m: 'un minut',
10495            mm: relativeTimeWithPlural$2,
10496            h: 'o oră',
10497            hh: relativeTimeWithPlural$2,
10498            d: 'o zi',
10499            dd: relativeTimeWithPlural$2,
10500            M: 'o lună',
10501            MM: relativeTimeWithPlural$2,
10502            y: 'un an',
10503            yy: relativeTimeWithPlural$2
10504        },
10505        week: {
10506            dow: 1, // Monday is the first day of the week.
10507            doy: 7  // The week that contains Jan 1st is the first week of the year.
10508        }
10509    });
10510
10511    //! moment.js locale configuration
10512    //! locale : Russian [ru]
10513    //! author : Viktorminator : https://github.com/Viktorminator
10514    //! Author : Menelion Elensúle : https://github.com/Oire
10515    //! author : Коренберг Марк : https://github.com/socketpair
10516
10517    function plural$4(word, num) {
10518        var forms = word.split('_');
10519        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
10520    }
10521    function relativeTimeWithPlural$3(number, withoutSuffix, key) {
10522        var format = {
10523            'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
10524            'hh': 'час_часа_часов',
10525            'dd': 'день_дня_дней',
10526            'MM': 'месяц_месяца_месяцев',
10527            'yy': 'год_года_лет'
10528        };
10529        if (key === 'm') {
10530            return withoutSuffix ? 'минута' : 'минуту';
10531        }
10532        else {
10533            return number + ' ' + plural$4(format[key], +number);
10534        }
10535    }
10536    var monthsParse$2 = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];
10537
10538    // http://new.gramota.ru/spravka/rules/139-prop : § 103
10539    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
10540    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
10541    hooks.defineLocale('ru', {
10542        months: {
10543            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),
10544            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')
10545        },
10546        monthsShort: {
10547            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ?
10548            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),
10549            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')
10550        },
10551        weekdays: {
10552            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
10553            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),
10554            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/
10555        },
10556        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
10557        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
10558        monthsParse: monthsParse$2,
10559        longMonthsParse: monthsParse$2,
10560        shortMonthsParse: monthsParse$2,
10561
10562        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
10563        monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
10564
10565        // копия предыдущего
10566        monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
10567
10568        // полные названия с падежами
10569        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
10570
10571        // Выражение, которое соотвествует только сокращённым формам
10572        monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
10573        longDateFormat: {
10574            LT: 'HH:mm',
10575            LTS: 'HH:mm:ss',
10576            L: 'DD.MM.YYYY',
10577            LL: 'D MMMM YYYY г.',
10578            LLL: 'D MMMM YYYY г., HH:mm',
10579            LLLL: 'dddd, D MMMM YYYY г., HH:mm'
10580        },
10581        calendar: {
10582            sameDay: '[Сегодня в] LT',
10583            nextDay: '[Завтра в] LT',
10584            lastDay: '[Вчера в] LT',
10585            nextWeek: function (now) {
10586                if (now.week() !== this.week()) {
10587                    switch (this.day()) {
10588                        case 0:
10589                            return '[В следующее] dddd [в] LT';
10590                        case 1:
10591                        case 2:
10592                        case 4:
10593                            return '[В следующий] dddd [в] LT';
10594                        case 3:
10595                        case 5:
10596                        case 6:
10597                            return '[В следующую] dddd [в] LT';
10598                    }
10599                } else {
10600                    if (this.day() === 2) {
10601                        return '[Во] dddd [в] LT';
10602                    } else {
10603                        return '[В] dddd [в] LT';
10604                    }
10605                }
10606            },
10607            lastWeek: function (now) {
10608                if (now.week() !== this.week()) {
10609                    switch (this.day()) {
10610                        case 0:
10611                            return '[В прошлое] dddd [в] LT';
10612                        case 1:
10613                        case 2:
10614                        case 4:
10615                            return '[В прошлый] dddd [в] LT';
10616                        case 3:
10617                        case 5:
10618                        case 6:
10619                            return '[В прошлую] dddd [в] LT';
10620                    }
10621                } else {
10622                    if (this.day() === 2) {
10623                        return '[Во] dddd [в] LT';
10624                    } else {
10625                        return '[В] dddd [в] LT';
10626                    }
10627                }
10628            },
10629            sameElse: 'L'
10630        },
10631        relativeTime: {
10632            future: 'через %s',
10633            past: '%s назад',
10634            s: 'несколько секунд',
10635            m: relativeTimeWithPlural$3,
10636            mm: relativeTimeWithPlural$3,
10637            h: 'час',
10638            hh: relativeTimeWithPlural$3,
10639            d: 'день',
10640            dd: relativeTimeWithPlural$3,
10641            M: 'месяц',
10642            MM: relativeTimeWithPlural$3,
10643            y: 'год',
10644            yy: relativeTimeWithPlural$3
10645        },
10646        meridiemParse: /ночи|утра|дня|вечера/i,
10647        isPM: function (input) {
10648            return /^(дня|вечера)$/.test(input);
10649        },
10650        meridiem: function (hour, minute, isLower) {
10651            if (hour < 4) {
10652                return 'ночи';
10653            } else if (hour < 12) {
10654                return 'утра';
10655            } else if (hour < 17) {
10656                return 'дня';
10657            } else {
10658                return 'вечера';
10659            }
10660        },
10661        ordinalParse: /\d{1,2}-(й|го|я)/,
10662        ordinal: function (number, period) {
10663            switch (period) {
10664                case 'M':
10665                case 'd':
10666                case 'DDD':
10667                    return number + '-й';
10668                case 'D':
10669                    return number + '-го';
10670                case 'w':
10671                case 'W':
10672                    return number + '-я';
10673                default:
10674                    return number;
10675            }
10676        },
10677        week: {
10678            dow: 1, // Monday is the first day of the week.
10679            doy: 7  // The week that contains Jan 1st is the first week of the year.
10680        }
10681    });
10682
10683    //! moment.js locale configuration
10684    //! locale : Northern Sami [se]
10685    //! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell
10686
10687
10688    hooks.defineLocale('se', {
10689        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('_'),
10690        monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
10691        weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),
10692        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
10693        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
10694        longDateFormat: {
10695            LT: 'HH:mm',
10696            LTS: 'HH:mm:ss',
10697            L: 'DD.MM.YYYY',
10698            LL: 'MMMM D. [b.] YYYY',
10699            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
10700            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'
10701        },
10702        calendar: {
10703            sameDay: '[otne ti] LT',
10704            nextDay: '[ihttin ti] LT',
10705            nextWeek: 'dddd [ti] LT',
10706            lastDay: '[ikte ti] LT',
10707            lastWeek: '[ovddit] dddd [ti] LT',
10708            sameElse: 'L'
10709        },
10710        relativeTime: {
10711            future: '%s geažes',
10712            past: 'maŋit %s',
10713            s: 'moadde sekunddat',
10714            m: 'okta minuhta',
10715            mm: '%d minuhtat',
10716            h: 'okta diimmu',
10717            hh: '%d diimmut',
10718            d: 'okta beaivi',
10719            dd: '%d beaivvit',
10720            M: 'okta mánnu',
10721            MM: '%d mánut',
10722            y: 'okta jahki',
10723            yy: '%d jagit'
10724        },
10725        ordinalParse: /\d{1,2}\./,
10726        ordinal: '%d.',
10727        week: {
10728            dow: 1, // Monday is the first day of the week.
10729            doy: 4  // The week that contains Jan 4th is the first week of the year.
10730        }
10731    });
10732
10733    //! moment.js locale configuration
10734    //! locale : Sinhalese [si]
10735    //! author : Sampath Sitinamaluwa : https://github.com/sampathsris
10736
10737    /*jshint -W100*/
10738    hooks.defineLocale('si', {
10739        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),
10740        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),
10741        weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),
10742        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
10743        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
10744        weekdaysParseExact: true,
10745        longDateFormat: {
10746            LT: 'a h:mm',
10747            LTS: 'a h:mm:ss',
10748            L: 'YYYY/MM/DD',
10749            LL: 'YYYY MMMM D',
10750            LLL: 'YYYY MMMM D, a h:mm',
10751            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'
10752        },
10753        calendar: {
10754            sameDay: '[අද] LT[ට]',
10755            nextDay: '[හෙට] LT[ට]',
10756            nextWeek: 'dddd LT[à¶§]',
10757            lastDay: '[ඊයේ] LT[ට]',
10758            lastWeek: '[පසුගිය] dddd LT[ට]',
10759            sameElse: 'L'
10760        },
10761        relativeTime: {
10762            future: '%sකින්',
10763            past: '%sකට පෙර',
10764            s: 'තත්පර කිහිපය',
10765            m: 'මිනිත්තුව',
10766            mm: 'මිනිත්තු %d',
10767            h: 'පැය',
10768            hh: 'පැය %d',
10769            d: 'දිනය',
10770            dd: 'දින %d',
10771            M: 'මාසය',
10772            MM: 'මාස %d',
10773            y: 'වසර',
10774            yy: 'වසර %d'
10775        },
10776        ordinalParse: /\d{1,2} වැනි/,
10777        ordinal: function (number) {
10778            return number + ' වැනි';
10779        },
10780        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
10781        isPM: function (input) {
10782            return input === 'ප.ව.' || input === 'පස් වරු';
10783        },
10784        meridiem: function (hours, minutes, isLower) {
10785            if (hours > 11) {
10786                return isLower ? 'ප.ව.' : 'පස් වරු';
10787            } else {
10788                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
10789            }
10790        }
10791    });
10792
10793    //! moment.js locale configuration
10794    //! locale : Slovak [sk]
10795    //! author : Martin Minka : https://github.com/k2s
10796    //! based on work of petrbela : https://github.com/petrbela
10797
10798    var months$6 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_');
10799    var monthsShort$4 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
10800    function plural$5(n) {
10801        return (n > 1) && (n < 5);
10802    }
10803    function translate$8(number, withoutSuffix, key, isFuture) {
10804        var result = number + ' ';
10805        switch (key) {
10806            case 's':  // a few seconds / in a few seconds / a few seconds ago
10807                return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';
10808            case 'm':  // a minute / in a minute / a minute ago
10809                return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');
10810            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
10811                if (withoutSuffix || isFuture) {
10812                    return result + (plural$5(number) ? 'minúty' : 'minút');
10813                } else {
10814                    return result + 'minútami';
10815                }
10816                break;
10817            case 'h':  // an hour / in an hour / an hour ago
10818                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
10819            case 'hh': // 9 hours / in 9 hours / 9 hours ago
10820                if (withoutSuffix || isFuture) {
10821                    return result + (plural$5(number) ? 'hodiny' : 'hodín');
10822                } else {
10823                    return result + 'hodinami';
10824                }
10825                break;
10826            case 'd':  // a day / in a day / a day ago
10827                return (withoutSuffix || isFuture) ? 'deň' : 'dňom';
10828            case 'dd': // 9 days / in 9 days / 9 days ago
10829                if (withoutSuffix || isFuture) {
10830                    return result + (plural$5(number) ? 'dni' : 'dní');
10831                } else {
10832                    return result + 'dňami';
10833                }
10834                break;
10835            case 'M':  // a month / in a month / a month ago
10836                return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';
10837            case 'MM': // 9 months / in 9 months / 9 months ago
10838                if (withoutSuffix || isFuture) {
10839                    return result + (plural$5(number) ? 'mesiace' : 'mesiacov');
10840                } else {
10841                    return result + 'mesiacmi';
10842                }
10843                break;
10844            case 'y':  // a year / in a year / a year ago
10845                return (withoutSuffix || isFuture) ? 'rok' : 'rokom';
10846            case 'yy': // 9 years / in 9 years / 9 years ago
10847                if (withoutSuffix || isFuture) {
10848                    return result + (plural$5(number) ? 'roky' : 'rokov');
10849                } else {
10850                    return result + 'rokmi';
10851                }
10852                break;
10853        }
10854    }
10855
10856    hooks.defineLocale('sk', {
10857        months: months$6,
10858        monthsShort: monthsShort$4,
10859        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
10860        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
10861        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
10862        longDateFormat: {
10863            LT: 'H:mm',
10864            LTS: 'H:mm:ss',
10865            L: 'DD.MM.YYYY',
10866            LL: 'D. MMMM YYYY',
10867            LLL: 'D. MMMM YYYY H:mm',
10868            LLLL: 'dddd D. MMMM YYYY H:mm'
10869        },
10870        calendar: {
10871            sameDay: '[dnes o] LT',
10872            nextDay: '[zajtra o] LT',
10873            nextWeek: function () {
10874                switch (this.day()) {
10875                    case 0:
10876                        return '[v nedeľu o] LT';
10877                    case 1:
10878                    case 2:
10879                        return '[v] dddd [o] LT';
10880                    case 3:
10881                        return '[v stredu o] LT';
10882                    case 4:
10883                        return '[vo štvrtok o] LT';
10884                    case 5:
10885                        return '[v piatok o] LT';
10886                    case 6:
10887                        return '[v sobotu o] LT';
10888                }
10889            },
10890            lastDay: '[včera o] LT',
10891            lastWeek: function () {
10892                switch (this.day()) {
10893                    case 0:
10894                        return '[minulú nedeľu o] LT';
10895                    case 1:
10896                    case 2:
10897                        return '[minulý] dddd [o] LT';
10898                    case 3:
10899                        return '[minulú stredu o] LT';
10900                    case 4:
10901                    case 5:
10902                        return '[minulý] dddd [o] LT';
10903                    case 6:
10904                        return '[minulú sobotu o] LT';
10905                }
10906            },
10907            sameElse: 'L'
10908        },
10909        relativeTime: {
10910            future: 'za %s',
10911            past: 'pred %s',
10912            s: translate$8,
10913            m: translate$8,
10914            mm: translate$8,
10915            h: translate$8,
10916            hh: translate$8,
10917            d: translate$8,
10918            dd: translate$8,
10919            M: translate$8,
10920            MM: translate$8,
10921            y: translate$8,
10922            yy: translate$8
10923        },
10924        ordinalParse: /\d{1,2}\./,
10925        ordinal: '%d.',
10926        week: {
10927            dow: 1, // Monday is the first day of the week.
10928            doy: 4  // The week that contains Jan 4th is the first week of the year.
10929        }
10930    });
10931
10932    //! moment.js locale configuration
10933    //! locale : Slovenian [sl]
10934    //! author : Robert Sedovšek : https://github.com/sedovsek
10935
10936    function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
10937        var result = number + ' ';
10938        switch (key) {
10939            case 's':
10940                return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';
10941            case 'm':
10942                return withoutSuffix ? 'ena minuta' : 'eno minuto';
10943            case 'mm':
10944                if (number === 1) {
10945                    result += withoutSuffix ? 'minuta' : 'minuto';
10946                } else if (number === 2) {
10947                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
10948                } else if (number < 5) {
10949                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
10950                } else {
10951                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
10952                }
10953                return result;
10954            case 'h':
10955                return withoutSuffix ? 'ena ura' : 'eno uro';
10956            case 'hh':
10957                if (number === 1) {
10958                    result += withoutSuffix ? 'ura' : 'uro';
10959                } else if (number === 2) {
10960                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
10961                } else if (number < 5) {
10962                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
10963                } else {
10964                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
10965                }
10966                return result;
10967            case 'd':
10968                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
10969            case 'dd':
10970                if (number === 1) {
10971                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
10972                } else if (number === 2) {
10973                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
10974                } else {
10975                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
10976                }
10977                return result;
10978            case 'M':
10979                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
10980            case 'MM':
10981                if (number === 1) {
10982                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
10983                } else if (number === 2) {
10984                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
10985                } else if (number < 5) {
10986                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
10987                } else {
10988                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
10989                }
10990                return result;
10991            case 'y':
10992                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
10993            case 'yy':
10994                if (number === 1) {
10995                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
10996                } else if (number === 2) {
10997                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
10998                } else if (number < 5) {
10999                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
11000                } else {
11001                    result += withoutSuffix || isFuture ? 'let' : 'leti';
11002                }
11003                return result;
11004        }
11005    }
11006
11007    hooks.defineLocale('sl', {
11008        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
11009        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
11010        monthsParseExact: true,
11011        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
11012        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
11013        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
11014        weekdaysParseExact: true,
11015        longDateFormat: {
11016            LT: 'H:mm',
11017            LTS: 'H:mm:ss',
11018            L: 'DD.MM.YYYY',
11019            LL: 'D. MMMM YYYY',
11020            LLL: 'D. MMMM YYYY H:mm',
11021            LLLL: 'dddd, D. MMMM YYYY H:mm'
11022        },
11023        calendar: {
11024            sameDay: '[danes ob] LT',
11025            nextDay: '[jutri ob] LT',
11026
11027            nextWeek: function () {
11028                switch (this.day()) {
11029                    case 0:
11030                        return '[v] [nedeljo] [ob] LT';
11031                    case 3:
11032                        return '[v] [sredo] [ob] LT';
11033                    case 6:
11034                        return '[v] [soboto] [ob] LT';
11035                    case 1:
11036                    case 2:
11037                    case 4:
11038                    case 5:
11039                        return '[v] dddd [ob] LT';
11040                }
11041            },
11042            lastDay: '[včeraj ob] LT',
11043            lastWeek: function () {
11044                switch (this.day()) {
11045                    case 0:
11046                        return '[prejšnjo] [nedeljo] [ob] LT';
11047                    case 3:
11048                        return '[prejšnjo] [sredo] [ob] LT';
11049                    case 6:
11050                        return '[prejšnjo] [soboto] [ob] LT';
11051                    case 1:
11052                    case 2:
11053                    case 4:
11054                    case 5:
11055                        return '[prejšnji] dddd [ob] LT';
11056                }
11057            },
11058            sameElse: 'L'
11059        },
11060        relativeTime: {
11061            future: 'čez %s',
11062            past: 'pred %s',
11063            s: processRelativeTime$4,
11064            m: processRelativeTime$4,
11065            mm: processRelativeTime$4,
11066            h: processRelativeTime$4,
11067            hh: processRelativeTime$4,
11068            d: processRelativeTime$4,
11069            dd: processRelativeTime$4,
11070            M: processRelativeTime$4,
11071            MM: processRelativeTime$4,
11072            y: processRelativeTime$4,
11073            yy: processRelativeTime$4
11074        },
11075        ordinalParse: /\d{1,2}\./,
11076        ordinal: '%d.',
11077        week: {
11078            dow: 1, // Monday is the first day of the week.
11079            doy: 7  // The week that contains Jan 1st is the first week of the year.
11080        }
11081    });
11082
11083    //! moment.js locale configuration
11084    //! locale : Albanian [sq]
11085    //! author : Flakërim Ismani : https://github.com/flakerimi
11086    //! author : Menelion Elensúle : https://github.com/Oire
11087    //! author : Oerd Cukalla : https://github.com/oerd
11088
11089    hooks.defineLocale('sq', {
11090        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),
11091        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
11092        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),
11093        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
11094        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
11095        weekdaysParseExact: true,
11096        meridiemParse: /PD|MD/,
11097        isPM: function (input) {
11098            return input.charAt(0) === 'M';
11099        },
11100        meridiem: function (hours, minutes, isLower) {
11101            return hours < 12 ? 'PD' : 'MD';
11102        },
11103        longDateFormat: {
11104            LT: 'HH:mm',
11105            LTS: 'HH:mm:ss',
11106            L: 'DD/MM/YYYY',
11107            LL: 'D MMMM YYYY',
11108            LLL: 'D MMMM YYYY HH:mm',
11109            LLLL: 'dddd, D MMMM YYYY HH:mm'
11110        },
11111        calendar: {
11112            sameDay: '[Sot në] LT',
11113            nextDay: '[Nesër në] LT',
11114            nextWeek: 'dddd [në] LT',
11115            lastDay: '[Dje në] LT',
11116            lastWeek: 'dddd [e kaluar në] LT',
11117            sameElse: 'L'
11118        },
11119        relativeTime: {
11120            future: 'në %s',
11121            past: '%s më parë',
11122            s: 'disa sekonda',
11123            m: 'një minutë',
11124            mm: '%d minuta',
11125            h: 'një orë',
11126            hh: '%d orë',
11127            d: 'një ditë',
11128            dd: '%d ditë',
11129            M: 'një muaj',
11130            MM: '%d muaj',
11131            y: 'një vit',
11132            yy: '%d vite'
11133        },
11134        ordinalParse: /\d{1,2}\./,
11135        ordinal: '%d.',
11136        week: {
11137            dow: 1, // Monday is the first day of the week.
11138            doy: 4  // The week that contains Jan 4th is the first week of the year.
11139        }
11140    });
11141
11142    //! moment.js locale configuration
11143    //! locale : Serbian Cyrillic [sr-cyrl]
11144    //! author : Milan Janačković<[email protected]> : https://github.com/milan-j
11145
11146    var translator$1 = {
11147        words: { //Different grammatical cases
11148            m: ['један минут', 'једне минуте'],
11149            mm: ['минут', 'минуте', 'минута'],
11150            h: ['један сат', 'једног сата'],
11151            hh: ['сат', 'сата', 'сати'],
11152            dd: ['дан', 'дана', 'дана'],
11153            MM: ['месец', 'месеца', 'месеци'],
11154            yy: ['година', 'године', 'година']
11155        },
11156        correctGrammaticalCase: function (number, wordKey) {
11157            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
11158        },
11159        translate: function (number, withoutSuffix, key) {
11160            var wordKey = translator$1.words[key];
11161            if (key.length === 1) {
11162                return withoutSuffix ? wordKey[0] : wordKey[1];
11163            } else {
11164                return number + ' ' + translator$1.correctGrammaticalCase(number, wordKey);
11165            }
11166        }
11167    };
11168
11169    hooks.defineLocale('sr-cyrl', {
11170        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),
11171        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
11172        monthsParseExact: true,
11173        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
11174        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
11175        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
11176        weekdaysParseExact: true,
11177        longDateFormat: {
11178            LT: 'H:mm',
11179            LTS: 'H:mm:ss',
11180            L: 'DD.MM.YYYY',
11181            LL: 'D. MMMM YYYY',
11182            LLL: 'D. MMMM YYYY H:mm',
11183            LLLL: 'dddd, D. MMMM YYYY H:mm'
11184        },
11185        calendar: {
11186            sameDay: '[данас у] LT',
11187            nextDay: '[сутра у] LT',
11188            nextWeek: function () {
11189                switch (this.day()) {
11190                    case 0:
11191                        return '[у] [недељу] [у] LT';
11192                    case 3:
11193                        return '[у] [среду] [у] LT';
11194                    case 6:
11195                        return '[у] [суботу] [у] LT';
11196                    case 1:
11197                    case 2:
11198                    case 4:
11199                    case 5:
11200                        return '[у] dddd [у] LT';
11201                }
11202            },
11203            lastDay: '[јуче у] LT',
11204            lastWeek: function () {
11205                var lastWeekDays = [
11206                    '[прошле] [недеље] [у] LT',
11207                    '[прошлог] [понедељка] [у] LT',
11208                    '[прошлог] [уторка] [у] LT',
11209                    '[прошле] [среде] [у] LT',
11210                    '[прошлог] [четвртка] [у] LT',
11211                    '[прошлог] [петка] [у] LT',
11212                    '[прошле] [суботе] [у] LT'
11213                ];
11214                return lastWeekDays[this.day()];
11215            },
11216            sameElse: 'L'
11217        },
11218        relativeTime: {
11219            future: 'за %s',
11220            past: 'пре %s',
11221            s: 'неколико секунди',
11222            m: translator$1.translate,
11223            mm: translator$1.translate,
11224            h: translator$1.translate,
11225            hh: translator$1.translate,
11226            d: 'дан',
11227            dd: translator$1.translate,
11228            M: 'месец',
11229            MM: translator$1.translate,
11230            y: 'годину',
11231            yy: translator$1.translate
11232        },
11233        ordinalParse: /\d{1,2}\./,
11234        ordinal: '%d.',
11235        week: {
11236            dow: 1, // Monday is the first day of the week.
11237            doy: 7  // The week that contains Jan 1st is the first week of the year.
11238        }
11239    });
11240
11241    //! moment.js locale configuration
11242    //! locale : Serbian [sr]
11243    //! author : Milan Janačković<[email protected]> : https://github.com/milan-j
11244
11245    var translator$2 = {
11246        words: { //Different grammatical cases
11247            m: ['jedan minut', 'jedne minute'],
11248            mm: ['minut', 'minute', 'minuta'],
11249            h: ['jedan sat', 'jednog sata'],
11250            hh: ['sat', 'sata', 'sati'],
11251            dd: ['dan', 'dana', 'dana'],
11252            MM: ['mesec', 'meseca', 'meseci'],
11253            yy: ['godina', 'godine', 'godina']
11254        },
11255        correctGrammaticalCase: function (number, wordKey) {
11256            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
11257        },
11258        translate: function (number, withoutSuffix, key) {
11259            var wordKey = translator$2.words[key];
11260            if (key.length === 1) {
11261                return withoutSuffix ? wordKey[0] : wordKey[1];
11262            } else {
11263                return number + ' ' + translator$2.correctGrammaticalCase(number, wordKey);
11264            }
11265        }
11266    };
11267
11268    hooks.defineLocale('sr', {
11269        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
11270        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
11271        monthsParseExact: true,
11272        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),
11273        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
11274        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
11275        weekdaysParseExact: true,
11276        longDateFormat: {
11277            LT: 'H:mm',
11278            LTS: 'H:mm:ss',
11279            L: 'DD.MM.YYYY',
11280            LL: 'D. MMMM YYYY',
11281            LLL: 'D. MMMM YYYY H:mm',
11282            LLLL: 'dddd, D. MMMM YYYY H:mm'
11283        },
11284        calendar: {
11285            sameDay: '[danas u] LT',
11286            nextDay: '[sutra u] LT',
11287            nextWeek: function () {
11288                switch (this.day()) {
11289                    case 0:
11290                        return '[u] [nedelju] [u] LT';
11291                    case 3:
11292                        return '[u] [sredu] [u] LT';
11293                    case 6:
11294                        return '[u] [subotu] [u] LT';
11295                    case 1:
11296                    case 2:
11297                    case 4:
11298                    case 5:
11299                        return '[u] dddd [u] LT';
11300                }
11301            },
11302            lastDay: '[juče u] LT',
11303            lastWeek: function () {
11304                var lastWeekDays = [
11305                    '[prošle] [nedelje] [u] LT',
11306                    '[prošlog] [ponedeljka] [u] LT',
11307                    '[prošlog] [utorka] [u] LT',
11308                    '[prošle] [srede] [u] LT',
11309                    '[prošlog] [četvrtka] [u] LT',
11310                    '[prošlog] [petka] [u] LT',
11311                    '[prošle] [subote] [u] LT'
11312                ];
11313                return lastWeekDays[this.day()];
11314            },
11315            sameElse: 'L'
11316        },
11317        relativeTime: {
11318            future: 'za %s',
11319            past: 'pre %s',
11320            s: 'nekoliko sekundi',
11321            m: translator$2.translate,
11322            mm: translator$2.translate,
11323            h: translator$2.translate,
11324            hh: translator$2.translate,
11325            d: 'dan',
11326            dd: translator$2.translate,
11327            M: 'mesec',
11328            MM: translator$2.translate,
11329            y: 'godinu',
11330            yy: translator$2.translate
11331        },
11332        ordinalParse: /\d{1,2}\./,
11333        ordinal: '%d.',
11334        week: {
11335            dow: 1, // Monday is the first day of the week.
11336            doy: 7  // The week that contains Jan 1st is the first week of the year.
11337        }
11338    });
11339
11340    //! moment.js locale configuration
11341    //! locale : siSwati [ss]
11342    //! author : Nicolai Davies<[email protected]> : https://github.com/nicolaidavies
11343
11344
11345    hooks.defineLocale('ss', {
11346        months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'),
11347        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
11348        weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),
11349        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
11350        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
11351        weekdaysParseExact: true,
11352        longDateFormat: {
11353            LT: 'h:mm A',
11354            LTS: 'h:mm:ss A',
11355            L: 'DD/MM/YYYY',
11356            LL: 'D MMMM YYYY',
11357            LLL: 'D MMMM YYYY h:mm A',
11358            LLLL: 'dddd, D MMMM YYYY h:mm A'
11359        },
11360        calendar: {
11361            sameDay: '[Namuhla nga] LT',
11362            nextDay: '[Kusasa nga] LT',
11363            nextWeek: 'dddd [nga] LT',
11364            lastDay: '[Itolo nga] LT',
11365            lastWeek: 'dddd [leliphelile] [nga] LT',
11366            sameElse: 'L'
11367        },
11368        relativeTime: {
11369            future: 'nga %s',
11370            past: 'wenteka nga %s',
11371            s: 'emizuzwana lomcane',
11372            m: 'umzuzu',
11373            mm: '%d emizuzu',
11374            h: 'lihora',
11375            hh: '%d emahora',
11376            d: 'lilanga',
11377            dd: '%d emalanga',
11378            M: 'inyanga',
11379            MM: '%d tinyanga',
11380            y: 'umnyaka',
11381            yy: '%d iminyaka'
11382        },
11383        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
11384        meridiem: function (hours, minutes, isLower) {
11385            if (hours < 11) {
11386                return 'ekuseni';
11387            } else if (hours < 15) {
11388                return 'emini';
11389            } else if (hours < 19) {
11390                return 'entsambama';
11391            } else {
11392                return 'ebusuku';
11393            }
11394        },
11395        meridiemHour: function (hour, meridiem) {
11396            if (hour === 12) {
11397                hour = 0;
11398            }
11399            if (meridiem === 'ekuseni') {
11400                return hour;
11401            } else if (meridiem === 'emini') {
11402                return hour >= 11 ? hour : hour + 12;
11403            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
11404                if (hour === 0) {
11405                    return 0;
11406                }
11407                return hour + 12;
11408            }
11409        },
11410        ordinalParse: /\d{1,2}/,
11411        ordinal: '%d',
11412        week: {
11413            dow: 1, // Monday is the first day of the week.
11414            doy: 4  // The week that contains Jan 4th is the first week of the year.
11415        }
11416    });
11417
11418    //! moment.js locale configuration
11419    //! locale : Swedish [sv]
11420    //! author : Jens Alm : https://github.com/ulmus
11421
11422    hooks.defineLocale('sv', {
11423        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
11424        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
11425        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
11426        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
11427        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
11428        longDateFormat: {
11429            LT: 'HH:mm',
11430            LTS: 'HH:mm:ss',
11431            L: 'YYYY-MM-DD',
11432            LL: 'D MMMM YYYY',
11433            LLL: 'D MMMM YYYY [kl.] HH:mm',
11434            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
11435            lll: 'D MMM YYYY HH:mm',
11436            llll: 'ddd D MMM YYYY HH:mm'
11437        },
11438        calendar: {
11439            sameDay: '[Idag] LT',
11440            nextDay: '[Imorgon] LT',
11441            lastDay: '[Igår] LT',
11442            nextWeek: '[PÃ¥] dddd LT',
11443            lastWeek: '[I] dddd[s] LT',
11444            sameElse: 'L'
11445        },
11446        relativeTime: {
11447            future: 'om %s',
11448            past: 'för %s sedan',
11449            s: 'några sekunder',
11450            m: 'en minut',
11451            mm: '%d minuter',
11452            h: 'en timme',
11453            hh: '%d timmar',
11454            d: 'en dag',
11455            dd: '%d dagar',
11456            M: 'en månad',
11457            MM: '%d månader',
11458            y: 'ett år',
11459            yy: '%d år'
11460        },
11461        ordinalParse: /\d{1,2}(e|a)/,
11462        ordinal: function (number) {
11463            var b = number % 10,
11464                output = (~~(number % 100 / 10) === 1) ? 'e' :
11465                (b === 1) ? 'a' :
11466                (b === 2) ? 'a' :
11467                (b === 3) ? 'e' : 'e';
11468            return number + output;
11469        },
11470        week: {
11471            dow: 1, // Monday is the first day of the week.
11472            doy: 4  // The week that contains Jan 4th is the first week of the year.
11473        }
11474    });
11475
11476    //! moment.js locale configuration
11477    //! locale : Swahili [sw]
11478    //! author : Fahad Kassim : https://github.com/fadsel
11479
11480    hooks.defineLocale('sw', {
11481        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),
11482        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
11483        weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),
11484        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
11485        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
11486        weekdaysParseExact: true,
11487        longDateFormat: {
11488            LT: 'HH:mm',
11489            LTS: 'HH:mm:ss',
11490            L: 'DD.MM.YYYY',
11491            LL: 'D MMMM YYYY',
11492            LLL: 'D MMMM YYYY HH:mm',
11493            LLLL: 'dddd, D MMMM YYYY HH:mm'
11494        },
11495        calendar: {
11496            sameDay: '[leo saa] LT',
11497            nextDay: '[kesho saa] LT',
11498            nextWeek: '[wiki ijayo] dddd [saat] LT',
11499            lastDay: '[jana] LT',
11500            lastWeek: '[wiki iliyopita] dddd [saat] LT',
11501            sameElse: 'L'
11502        },
11503        relativeTime: {
11504            future: '%s baadaye',
11505            past: 'tokea %s',
11506            s: 'hivi punde',
11507            m: 'dakika moja',
11508            mm: 'dakika %d',
11509            h: 'saa limoja',
11510            hh: 'masaa %d',
11511            d: 'siku moja',
11512            dd: 'masiku %d',
11513            M: 'mwezi mmoja',
11514            MM: 'miezi %d',
11515            y: 'mwaka mmoja',
11516            yy: 'miaka %d'
11517        },
11518        week: {
11519            dow: 1, // Monday is the first day of the week.
11520            doy: 7  // The week that contains Jan 1st is the first week of the year.
11521        }
11522    });
11523
11524    //! moment.js locale configuration
11525    //! locale : Tamil [ta]
11526    //! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
11527
11528    var symbolMap$11 = {
11529        '1': '௧',
11530        '2': '௨',
11531        '3': '௩',
11532        '4': '௪',
11533        '5': '௫',
11534        '6': '௬',
11535        '7': '௭',
11536        '8': '௮',
11537        '9': '௯',
11538        '0': '௦'
11539    };
11540    var numberMap$10 = {
11541        '௧': '1',
11542        '௨': '2',
11543        '௩': '3',
11544        '௪': '4',
11545        '௫': '5',
11546        '௬': '6',
11547        '௭': '7',
11548        '௮': '8',
11549        '௯': '9',
11550        '௦': '0'
11551    };
11552
11553    hooks.defineLocale('ta', {
11554        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
11555        monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
11556        weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
11557        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),
11558        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
11559        longDateFormat: {
11560            LT: 'HH:mm',
11561            LTS: 'HH:mm:ss',
11562            L: 'DD/MM/YYYY',
11563            LL: 'D MMMM YYYY',
11564            LLL: 'D MMMM YYYY, HH:mm',
11565            LLLL: 'dddd, D MMMM YYYY, HH:mm'
11566        },
11567        calendar: {
11568            sameDay: '[இன்று] LT',
11569            nextDay: '[நாளை] LT',
11570            nextWeek: 'dddd, LT',
11571            lastDay: '[நேற்று] LT',
11572            lastWeek: '[கடந்த வாரம்] dddd, LT',
11573            sameElse: 'L'
11574        },
11575        relativeTime: {
11576            future: '%s இல்',
11577            past: '%s முன்',
11578            s: 'ஒரு சில விநாடிகள்',
11579            m: 'ஒரு நிமிடம்',
11580            mm: '%d நிமிடங்கள்',
11581            h: 'ஒரு மணி நேரம்',
11582            hh: '%d மணி நேரம்',
11583            d: 'ஒரு நாள்',
11584            dd: '%d நாட்கள்',
11585            M: 'ஒரு மாதம்',
11586            MM: '%d மாதங்கள்',
11587            y: 'ஒரு வருடம்',
11588            yy: '%d ஆண்டுகள்'
11589        },
11590        ordinalParse: /\d{1,2}வது/,
11591        ordinal: function (number) {
11592            return number + 'வது';
11593        },
11594        preparse: function (string) {
11595            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
11596                return numberMap$10[match];
11597            });
11598        },
11599        postformat: function (string) {
11600            return string.replace(/\d/g, function (match) {
11601                return symbolMap$11[match];
11602            });
11603        },
11604        // refer http://ta.wikipedia.org/s/1er1
vendor: 20,128 bytes, lines 11605-12105
11605        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
11606        meridiem: function (hour, minute, isLower) {
11607            if (hour < 2) {
11608                return ' யாமம்';
11609            } else if (hour < 6) {
11610                return ' வைகறை';  // வைகறை
11611            } else if (hour < 10) {
11612                return ' காலை'; // காலை
11613            } else if (hour < 14) {
11614                return ' நண்பகல்'; // நண்பகல்
11615            } else if (hour < 18) {
11616                return ' எற்பாடு'; // எற்பாடு
11617            } else if (hour < 22) {
11618                return ' மாலை'; // மாலை
11619            } else {
11620                return ' யாமம்';
11621            }
11622        },
11623        meridiemHour: function (hour, meridiem) {
11624            if (hour === 12) {
11625                hour = 0;
11626            }
11627            if (meridiem === 'யாமம்') {
11628                return hour < 2 ? hour : hour + 12;
11629            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
11630                return hour;
11631            } else if (meridiem === 'நண்பகல்') {
11632                return hour >= 10 ? hour : hour + 12;
11633            } else {
11634                return hour + 12;
11635            }
11636        },
11637        week: {
11638            dow: 0, // Sunday is the first day of the week.
11639            doy: 6  // The week that contains Jan 1st is the first week of the year.
11640        }
11641    });
11642
11643    //! moment.js locale configuration
11644    //! locale : Telugu [te]
11645    //! author : Krishna Chaitanya Thota : https://github.com/kcthota
11646
11647    hooks.defineLocale('te', {
11648        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),
11649        monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),
11650        monthsParseExact: true,
11651        weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),
11652        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
11653        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
11654        longDateFormat: {
11655            LT: 'A h:mm',
11656            LTS: 'A h:mm:ss',
11657            L: 'DD/MM/YYYY',
11658            LL: 'D MMMM YYYY',
11659            LLL: 'D MMMM YYYY, A h:mm',
11660            LLLL: 'dddd, D MMMM YYYY, A h:mm'
11661        },
11662        calendar: {
11663            sameDay: '[నేడు] LT',
11664            nextDay: '[రేపు] LT',
11665            nextWeek: 'dddd, LT',
11666            lastDay: '[నిన్న] LT',
11667            lastWeek: '[గత] dddd, LT',
11668            sameElse: 'L'
11669        },
11670        relativeTime: {
11671            future: '%s లో',
11672            past: '%s క్రితం',
11673            s: 'కొన్ని క్షణాలు',
11674            m: 'ఒక నిమిషం',
11675            mm: '%d నిమిషాలు',
11676            h: 'ఒక గంట',
11677            hh: '%d గంటలు',
11678            d: 'ఒక రోజు',
11679            dd: '%d రోజులు',
11680            M: 'ఒక నెల',
11681            MM: '%d నెలలు',
11682            y: 'ఒక సంవత్సరం',
11683            yy: '%d సంవత్సరాలు'
11684        },
11685        ordinalParse: /\d{1,2}à°µ/,
11686        ordinal: '%dà°µ',
11687        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
11688        meridiemHour: function (hour, meridiem) {
11689            if (hour === 12) {
11690                hour = 0;
11691            }
11692            if (meridiem === 'రాత్రి') {
11693                return hour < 4 ? hour : hour + 12;
11694            } else if (meridiem === 'ఉదయం') {
11695                return hour;
11696            } else if (meridiem === 'మధ్యాహ్నం') {
11697                return hour >= 10 ? hour : hour + 12;
11698            } else if (meridiem === 'సాయంత్రం') {
11699                return hour + 12;
11700            }
11701        },
11702        meridiem: function (hour, minute, isLower) {
11703            if (hour < 4) {
11704                return 'రాత్రి';
11705            } else if (hour < 10) {
11706                return 'ఉదయం';
11707            } else if (hour < 17) {
11708                return 'మధ్యాహ్నం';
11709            } else if (hour < 20) {
11710                return 'సాయంత్రం';
11711            } else {
11712                return 'రాత్రి';
11713            }
11714        },
11715        week: {
11716            dow: 0, // Sunday is the first day of the week.
11717            doy: 6  // The week that contains Jan 1st is the first week of the year.
11718        }
11719    });
11720
11721    //! moment.js locale configuration
11722    //! locale : Tetun Dili (East Timor) [tet]
11723    //! author : Joshua Brooks : https://github.com/joshbrooks
11724    //! author : Onorio De J. Afonso : https://github.com/marobo
11725
11726    hooks.defineLocale('tet', {
11727        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),
11728        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez'.split('_'),
11729        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu'.split('_'),
11730        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sext_Sab'.split('_'),
11731        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Sex_Sa'.split('_'),
11732        longDateFormat: {
11733            LT: 'HH:mm',
11734            LTS: 'HH:mm:ss',
11735            L: 'DD/MM/YYYY',
11736            LL: 'D MMMM YYYY',
11737            LLL: 'D MMMM YYYY HH:mm',
11738            LLLL: 'dddd, D MMMM YYYY HH:mm'
11739        },
11740        calendar: {
11741            sameDay: '[Ohin iha] LT',
11742            nextDay: '[Aban iha] LT',
11743            nextWeek: 'dddd [iha] LT',
11744            lastDay: '[Horiseik iha] LT',
11745            lastWeek: 'dddd [semana kotuk] [iha] LT',
11746            sameElse: 'L'
11747        },
11748        relativeTime: {
11749            future: 'iha %s',
11750            past: '%s liuba',
11751            s: 'minutu balun',
11752            m: 'minutu ida',
11753            mm: 'minutus %d',
11754            h: 'horas ida',
11755            hh: 'horas %d',
11756            d: 'loron ida',
11757            dd: 'loron %d',
11758            M: 'fulan ida',
11759            MM: 'fulan %d',
11760            y: 'tinan ida',
11761            yy: 'tinan %d'
11762        },
11763        ordinalParse: /\d{1,2}(st|nd|rd|th)/,
11764        ordinal: function (number) {
11765            var b = number % 10,
11766                output = (~~(number % 100 / 10) === 1) ? 'th' :
11767                (b === 1) ? 'st' :
11768                (b === 2) ? 'nd' :
11769                (b === 3) ? 'rd' : 'th';
11770            return number + output;
11771        },
11772        week: {
11773            dow: 1, // Monday is the first day of the week.
11774            doy: 4  // The week that contains Jan 4th is the first week of the year.
11775        }
11776    });
11777
11778    //! moment.js locale configuration
11779    //! locale : Thai [th]
11780    //! author : Kridsada Thanabulpong : https://github.com/sirn
11781
11782    hooks.defineLocale('th', {
11783        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
11784        monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),
11785        monthsParseExact: true,
11786        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
11787        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
11788        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
11789        weekdaysParseExact: true,
11790        longDateFormat: {
11791            LT: 'H:mm',
11792            LTS: 'H:mm:ss',
11793            L: 'YYYY/MM/DD',
11794            LL: 'D MMMM YYYY',
11795            LLL: 'D MMMM YYYY เวลา H:mm',
11796            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'
11797        },
11798        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
11799        isPM: function (input) {
11800            return input === 'หลังเที่ยง';
11801        },
11802        meridiem: function (hour, minute, isLower) {
11803            if (hour < 12) {
11804                return 'ก่อนเที่ยง';
11805            } else {
11806                return 'หลังเที่ยง';
11807            }
11808        },
11809        calendar: {
11810            sameDay: '[วันนี้ เวลา] LT',
11811            nextDay: '[พรุ่งนี้ เวลา] LT',
11812            nextWeek: 'dddd[หน้า เวลา] LT',
11813            lastDay: '[เมื่อวานนี้ เวลา] LT',
11814            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
11815            sameElse: 'L'
11816        },
11817        relativeTime: {
11818            future: 'อีก %s',
11819            past: '%sที่แล้ว',
11820            s: 'ไม่กี่วินาที',
11821            m: '1 นาที',
11822            mm: '%d นาที',
11823            h: '1 ชั่วโมง',
11824            hh: '%d ชั่วโมง',
11825            d: '1 วัน',
11826            dd: '%d วัน',
11827            M: '1 เดือน',
11828            MM: '%d เดือน',
11829            y: '1 ปี',
11830            yy: '%d ปี'
11831        }
11832    });
11833
11834    //! moment.js locale configuration
11835    //! locale : Tagalog (Philippines) [tl-ph]
11836    //! author : Dan Hagman : https://github.com/hagmandan
11837
11838    hooks.defineLocale('tl-ph', {
11839        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
11840        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
11841        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
11842        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
11843        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
11844        longDateFormat: {
11845            LT: 'HH:mm',
11846            LTS: 'HH:mm:ss',
11847            L: 'MM/D/YYYY',
11848            LL: 'MMMM D, YYYY',
11849            LLL: 'MMMM D, YYYY HH:mm',
11850            LLLL: 'dddd, MMMM DD, YYYY HH:mm'
11851        },
11852        calendar: {
11853            sameDay: 'LT [ngayong araw]',
11854            nextDay: '[Bukas ng] LT',
11855            nextWeek: 'LT [sa susunod na] dddd',
11856            lastDay: 'LT [kahapon]',
11857            lastWeek: 'LT [noong nakaraang] dddd',
11858            sameElse: 'L'
11859        },
11860        relativeTime: {
11861            future: 'sa loob ng %s',
11862            past: '%s ang nakalipas',
11863            s: 'ilang segundo',
11864            m: 'isang minuto',
11865            mm: '%d minuto',
11866            h: 'isang oras',
11867            hh: '%d oras',
11868            d: 'isang araw',
11869            dd: '%d araw',
11870            M: 'isang buwan',
11871            MM: '%d buwan',
11872            y: 'isang taon',
11873            yy: '%d taon'
11874        },
11875        ordinalParse: /\d{1,2}/,
11876        ordinal: function (number) {
11877            return number;
11878        },
11879        week: {
11880            dow: 1, // Monday is the first day of the week.
11881            doy: 4  // The week that contains Jan 4th is the first week of the year.
11882        }
11883    });
11884
11885    //! moment.js locale configuration
11886    //! locale : Klingon [tlh]
11887    //! author : Dominika Kruk : https://github.com/amaranthrose
11888
11889    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
11890
11891    function translateFuture(output) {
11892        var time = output;
11893        time = (output.indexOf('jaj') !== -1) ?
11894        time.slice(0, -3) + 'leS' :
11895        (output.indexOf('jar') !== -1) ?
11896        time.slice(0, -3) + 'waQ' :
11897        (output.indexOf('DIS') !== -1) ?
11898        time.slice(0, -3) + 'nem' :
11899        time + ' pIq';
11900        return time;
11901    }
11902
11903    function translatePast(output) {
11904        var time = output;
11905        time = (output.indexOf('jaj') !== -1) ?
11906        time.slice(0, -3) + 'Hu’' :
11907        (output.indexOf('jar') !== -1) ?
11908        time.slice(0, -3) + 'wen' :
11909        (output.indexOf('DIS') !== -1) ?
11910        time.slice(0, -3) + 'ben' :
11911        time + ' ret';
11912        return time;
11913    }
11914
11915    function translate$9(number, withoutSuffix, string, isFuture) {
11916        var numberNoun = numberAsNoun(number);
11917        switch (string) {
11918            case 'mm':
11919                return numberNoun + ' tup';
11920            case 'hh':
11921                return numberNoun + ' rep';
11922            case 'dd':
11923                return numberNoun + ' jaj';
11924            case 'MM':
11925                return numberNoun + ' jar';
11926            case 'yy':
11927                return numberNoun + ' DIS';
11928        }
11929    }
11930
11931    function numberAsNoun(number) {
11932        var hundred = Math.floor((number % 1000) / 100),
11933        ten = Math.floor((number % 100) / 10),
11934        one = number % 10,
11935        word = '';
11936        if (hundred > 0) {
11937            word += numbersNouns[hundred] + 'vatlh';
11938        }
11939        if (ten > 0) {
11940            word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';
11941        }
11942        if (one > 0) {
11943            word += ((word !== '') ? ' ' : '') + numbersNouns[one];
11944        }
11945        return (word === '') ? 'pagh' : word;
11946    }
11947
11948    hooks.defineLocale('tlh', {
11949        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('_'),
11950        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('_'),
11951        monthsParseExact: true,
11952        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
11953        weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
11954        weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
11955        longDateFormat: {
11956            LT: 'HH:mm',
11957            LTS: 'HH:mm:ss',
11958            L: 'DD.MM.YYYY',
11959            LL: 'D MMMM YYYY',
11960            LLL: 'D MMMM YYYY HH:mm',
11961            LLLL: 'dddd, D MMMM YYYY HH:mm'
11962        },
11963        calendar: {
11964            sameDay: '[DaHjaj] LT',
11965            nextDay: '[wa’leS] LT',
11966            nextWeek: 'LLL',
11967            lastDay: '[wa’Hu’] LT',
11968            lastWeek: 'LLL',
11969            sameElse: 'L'
11970        },
11971        relativeTime: {
11972            future: translateFuture,
11973            past: translatePast,
11974            s: 'puS lup',
11975            m: 'wa’ tup',
11976            mm: translate$9,
11977            h: 'wa’ rep',
11978            hh: translate$9,
11979            d: 'wa’ jaj',
11980            dd: translate$9,
11981            M: 'wa’ jar',
11982            MM: translate$9,
11983            y: 'wa’ DIS',
11984            yy: translate$9
11985        },
11986        ordinalParse: /\d{1,2}\./,
11987        ordinal: '%d.',
11988        week: {
11989            dow: 1, // Monday is the first day of the week.
11990            doy: 4  // The week that contains Jan 4th is the first week of the year.
11991        }
11992    });
11993
11994    //! moment.js locale configuration
11995    //! locale : Turkish [tr]
11996    //! authors : Erhan Gundogan : https://github.com/erhangundogan,
11997    //!           Burak Yiğit Kaya: https://github.com/BYK
11998
11999    var suffixes$3 = {
12000        1: '\'inci',
12001        5: '\'inci',
12002        8: '\'inci',
12003        70: '\'inci',
12004        80: '\'inci',
12005        2: '\'nci',
12006        7: '\'nci',
12007        20: '\'nci',
12008        50: '\'nci',
12009        3: '\'üncü',
12010        4: '\'üncü',
12011        100: '\'üncü',
12012        6: '\'ncı',
12013        9: '\'uncu',
12014        10: '\'uncu',
12015        30: '\'uncu',
12016        60: '\'ıncı',
12017        90: '\'ıncı'
12018    };
12019
12020    hooks.defineLocale('tr', {
12021        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
12022        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
12023        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
12024        weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
12025        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
12026        longDateFormat: {
12027            LT: 'HH:mm',
12028            LTS: 'HH:mm:ss',
12029            L: 'DD.MM.YYYY',
12030            LL: 'D MMMM YYYY',
12031            LLL: 'D MMMM YYYY HH:mm',
12032            LLLL: 'dddd, D MMMM YYYY HH:mm'
12033        },
12034        calendar: {
12035            sameDay: '[bugün saat] LT',
12036            nextDay: '[yarın saat] LT',
12037            nextWeek: '[haftaya] dddd [saat] LT',
12038            lastDay: '[dün] LT',
12039            lastWeek: '[geçen hafta] dddd [saat] LT',
12040            sameElse: 'L'
12041        },
12042        relativeTime: {
12043            future: '%s sonra',
12044            past: '%s önce',
12045            s: 'birkaç saniye',
12046            m: 'bir dakika',
12047            mm: '%d dakika',
12048            h: 'bir saat',
12049            hh: '%d saat',
12050            d: 'bir gün',
12051            dd: '%d gün',
12052            M: 'bir ay',
12053            MM: '%d ay',
12054            y: 'bir yıl',
12055            yy: '%d yıl'
12056        },
12057        ordinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,
12058        ordinal: function (number) {
12059            if (number === 0) {  // special case for zero
12060                return number + '\'ıncı';
12061            }
12062            var a = number % 10,
12063                b = number % 100 - a,
12064                c = number >= 100 ? 100 : null;
12065            return number + (suffixes$3[a] || suffixes$3[b] || suffixes$3[c]);
12066        },
12067        week: {
12068            dow: 1, // Monday is the first day of the week.
12069            doy: 7  // The week that contains Jan 1st is the first week of the year.
12070        }
12071    });
12072
12073    //! moment.js locale configuration
12074    //! locale : Talossan [tzl]
12075    //! author : Robin van der Vliet : https://github.com/robin0van0der0v
12076    //! author : Iustì Canun
12077
12078    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
12079    // This is currently too difficult (maybe even impossible) to add.
12080    hooks.defineLocale('tzl', {
12081        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),
12082        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
12083        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
12084        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
12085        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
12086        longDateFormat: {
12087            LT: 'HH.mm',
12088            LTS: 'HH.mm.ss',
12089            L: 'DD.MM.YYYY',
12090            LL: 'D. MMMM [dallas] YYYY',
12091            LLL: 'D. MMMM [dallas] YYYY HH.mm',
12092            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'
12093        },
12094        meridiemParse: /d\'o|d\'a/i,
12095        isPM: function (input) {
12096            return 'd\'o' === input.toLowerCase();
12097        },
12098        meridiem: function (hours, minutes, isLower) {
12099            if (hours > 11) {
12100                return isLower ? 'd\'o' : 'D\'O';
12101            } else {
12102                return isLower ? 'd\'a' : 'D\'A';
12103            }
12104        },
12105        calendar: {
12106            sameDay: '[oxhi à] LT',
12107            nextDay: '[demà à] LT',
12108            nextWeek: 'dddd [à] LT',
12109            lastDay: '[ieiri à] LT',
12110            lastWeek: '[sür el] dddd [lasteu à] LT',
12111            sameElse: 'L'
12112        },
12113        relativeTime: {
12114            future: 'osprei %s',
12115            past: 'ja%s',
12116            s: processRelativeTime$5,
12117            m: processRelativeTime$5,
12118            mm: processRelativeTime$5,
12119            h: processRelativeTime$5,
12120            hh: processRelativeTime$5,
12121            d: processRelativeTime$5,
12122            dd: processRelativeTime$5,
12123            M: processRelativeTime$5,
12124            MM: processRelativeTime$5,
12125            y: processRelativeTime$5,
12126            yy: processRelativeTime$5
12127        },
12128        ordinalParse: /\d{1,2}\./,
12129        ordinal: '%d.',
12130        week: {
12131            dow: 1, // Monday is the first day of the week.
12132            doy: 4  // The week that contains Jan 4th is the first week of the year.
12133        }
12134    });
12135
12136    function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
12137        var format = {
12138            's': ['viensas secunds', '\'iensas secunds'],
12139            'm': ['\'n míut', '\'iens míut'],
12140            'mm': [number + ' míuts', '' + number + ' míuts'],
12141            'h': ['\'n þora', '\'iensa þora'],
12142            'hh': [number + ' þoras', '' + number + ' þoras'],
12143            'd': ['\'n ziua', '\'iensa ziua'],
12144            'dd': [number + ' ziuas', '' + number + ' ziuas'],
12145            'M': ['\'n mes', '\'iens mes'],
12146            'MM': [number + ' mesen', '' + number + ' mesen'],
12147            'y': ['\'n ar', '\'iens ar'],
12148            'yy': [number + ' ars', '' + number + ' ars']
12149        };
12150        return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);
12151    }
12152
12153    //! moment.js locale configuration
12154    //! locale : Central Atlas Tamazight Latin [tzm-latn]
12155    //! author : Abdel Said : https://github.com/abdelsaid
12156
12157    hooks.defineLocale('tzm-latn', {
12158        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
12159        monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
12160        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
12161        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
12162        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
12163        longDateFormat: {
12164            LT: 'HH:mm',
12165            LTS: 'HH:mm:ss',
12166            L: 'DD/MM/YYYY',
12167            LL: 'D MMMM YYYY',
12168            LLL: 'D MMMM YYYY HH:mm',
12169            LLLL: 'dddd D MMMM YYYY HH:mm'
12170        },
12171        calendar: {
12172            sameDay: '[asdkh g] LT',
12173            nextDay: '[aska g] LT',
12174            nextWeek: 'dddd [g] LT',
12175            lastDay: '[assant g] LT',
12176            lastWeek: 'dddd [g] LT',
12177            sameElse: 'L'
12178        },
12179        relativeTime: {
12180            future: 'dadkh s yan %s',
12181            past: 'yan %s',
12182            s: 'imik',
12183            m: 'minuḍ',
12184            mm: '%d minuḍ',
12185            h: 'saɛa',
12186            hh: '%d tassaɛin',
12187            d: 'ass',
12188            dd: '%d ossan',
12189            M: 'ayowr',
12190            MM: '%d iyyirn',
12191            y: 'asgas',
12192            yy: '%d isgasn'
12193        },
12194        week: {
12195            dow: 6, // Saturday is the first day of the week.
12196            doy: 12  // The week that contains Jan 1st is the first week of the year.
12197        }
12198    });
12199
12200    //! moment.js locale configuration
12201    //! locale : Central Atlas Tamazight [tzm]
12202    //! author : Abdel Said : https://github.com/abdelsaid
12203
12204    hooks.defineLocale('tzm', {
12205        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
12206        monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
12207        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
12208        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
12209        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
12210        longDateFormat: {
12211            LT: 'HH:mm',
12212            LTS: 'HH:mm:ss',
12213            L: 'DD/MM/YYYY',
12214            LL: 'D MMMM YYYY',
12215            LLL: 'D MMMM YYYY HH:mm',
12216            LLLL: 'dddd D MMMM YYYY HH:mm'
12217        },
12218        calendar: {
12219            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
12220            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
12221            nextWeek: 'dddd [â´´] LT',
12222            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
12223            lastWeek: 'dddd [â´´] LT',
12224            sameElse: 'L'
12225        },
12226        relativeTime: {
12227            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
12228            past: 'ⵢⴰⵏ %s',
12229            s: 'ⵉⵎⵉⴽ',
12230            m: 'ⵎⵉⵏⵓⴺ',
12231            mm: '%d ⵎⵉⵏⵓⴺ',
12232            h: 'ⵙⴰⵄⴰ',
vendor: 10,906 bytes, lines 12233-12495
12233            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
12234            d: 'ⴰⵙⵙ',
12235            dd: '%d oⵙⵙⴰⵏ',
12236            M: 'ⴰⵢoⵓⵔ',
12237            MM: '%d ⵉⵢⵢⵉⵔⵏ',
12238            y: 'ⴰⵙⴳⴰⵙ',
12239            yy: '%d ⵉⵙⴳⴰⵙⵏ'
12240        },
12241        week: {
12242            dow: 6, // Saturday is the first day of the week.
12243            doy: 12  // The week that contains Jan 1st is the first week of the year.
12244        }
12245    });
12246
12247    //! moment.js locale configuration
12248    //! locale : Ukrainian [uk]
12249    //! author : zemlanin : https://github.com/zemlanin
12250    //! Author : Menelion Elensúle : https://github.com/Oire
12251
12252    function plural$6(word, num) {
12253        var forms = word.split('_');
12254        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
12255    }
12256    function relativeTimeWithPlural$4(number, withoutSuffix, key) {
12257        var format = {
12258            'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
12259            'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
12260            'dd': 'день_дні_днів',
12261            'MM': 'місяць_місяці_місяців',
12262            'yy': 'рік_роки_років'
12263        };
12264        if (key === 'm') {
12265            return withoutSuffix ? 'хвилина' : 'хвилину';
12266        }
12267        else if (key === 'h') {
12268            return withoutSuffix ? 'година' : 'годину';
12269        }
12270        else {
12271            return number + ' ' + plural$6(format[key], +number);
12272        }
12273    }
12274    function weekdaysCaseReplace(m, format) {
12275        var weekdays = {
12276            'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
12277            'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
12278            'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
12279        },
12280        nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
12281            'accusative' :
12282            ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ?
12283                'genitive' :
12284                'nominative');
12285        return weekdays[nounCase][m.day()];
12286    }
12287    function processHoursFunction(str) {
12288        return function () {
12289            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
12290        };
12291    }
12292
12293    hooks.defineLocale('uk', {
12294        months: {
12295            'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),
12296            'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')
12297        },
12298        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
12299        weekdays: weekdaysCaseReplace,
12300        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
12301        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
12302        longDateFormat: {
12303            LT: 'HH:mm',
12304            LTS: 'HH:mm:ss',
12305            L: 'DD.MM.YYYY',
12306            LL: 'D MMMM YYYY р.',
12307            LLL: 'D MMMM YYYY р., HH:mm',
12308            LLLL: 'dddd, D MMMM YYYY р., HH:mm'
12309        },
12310        calendar: {
12311            sameDay: processHoursFunction('[Сьогодні '),
12312            nextDay: processHoursFunction('[Завтра '),
12313            lastDay: processHoursFunction('[Вчора '),
12314            nextWeek: processHoursFunction('[У] dddd ['),
12315            lastWeek: function () {
12316                switch (this.day()) {
12317                    case 0:
12318                    case 3:
12319                    case 5:
12320                    case 6:
12321                        return processHoursFunction('[Минулої] dddd [').call(this);
12322                    case 1:
12323                    case 2:
12324                    case 4:
12325                        return processHoursFunction('[Минулого] dddd [').call(this);
12326                }
12327            },
12328            sameElse: 'L'
12329        },
12330        relativeTime: {
12331            future: 'за %s',
12332            past: '%s тому',
12333            s: 'декілька секунд',
12334            m: relativeTimeWithPlural$4,
12335            mm: relativeTimeWithPlural$4,
12336            h: 'годину',
12337            hh: relativeTimeWithPlural$4,
12338            d: 'день',
12339            dd: relativeTimeWithPlural$4,
12340            M: 'місяць',
12341            MM: relativeTimeWithPlural$4,
12342            y: 'рік',
12343            yy: relativeTimeWithPlural$4
12344        },
12345        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
12346        meridiemParse: /ночі|ранку|дня|вечора/,
12347        isPM: function (input) {
12348            return /^(дня|вечора)$/.test(input);
12349        },
12350        meridiem: function (hour, minute, isLower) {
12351            if (hour < 4) {
12352                return 'ночі';
12353            } else if (hour < 12) {
12354                return 'ранку';
12355            } else if (hour < 17) {
12356                return 'дня';
12357            } else {
12358                return 'вечора';
12359            }
12360        },
12361        ordinalParse: /\d{1,2}-(й|го)/,
12362        ordinal: function (number, period) {
12363            switch (period) {
12364                case 'M':
12365                case 'd':
12366                case 'DDD':
12367                case 'w':
12368                case 'W':
12369                    return number + '-й';
12370                case 'D':
12371                    return number + '-го';
12372                default:
12373                    return number;
12374            }
12375        },
12376        week: {
12377            dow: 1, // Monday is the first day of the week.
12378            doy: 7  // The week that contains Jan 1st is the first week of the year.
12379        }
12380    });
12381
12382    //! moment.js locale configuration
12383    //! locale : Uzbek [uz]
12384    //! author : Sardor Muminov : https://github.com/muminoff
12385
12386    hooks.defineLocale('uz', {
12387        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
12388        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
12389        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
12390        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
12391        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
12392        longDateFormat: {
12393            LT: 'HH:mm',
12394            LTS: 'HH:mm:ss',
12395            L: 'DD/MM/YYYY',
12396            LL: 'D MMMM YYYY',
12397            LLL: 'D MMMM YYYY HH:mm',
12398            LLLL: 'D MMMM YYYY, dddd HH:mm'
12399        },
12400        calendar: {
12401            sameDay: '[Бугун соат] LT [да]',
12402            nextDay: '[Эртага] LT [да]',
12403            nextWeek: 'dddd [куни соат] LT [да]',
12404            lastDay: '[Кеча соат] LT [да]',
12405            lastWeek: '[Утган] dddd [куни соат] LT [да]',
12406            sameElse: 'L'
12407        },
12408        relativeTime: {
12409            future: 'Якин %s ичида',
12410            past: 'Бир неча %s олдин',
12411            s: 'фурсат',
12412            m: 'бир дакика',
12413            mm: '%d дакика',
12414            h: 'бир соат',
12415            hh: '%d соат',
12416            d: 'бир кун',
12417            dd: '%d кун',
12418            M: 'бир ой',
12419            MM: '%d ой',
12420            y: 'бир йил',
12421            yy: '%d йил'
12422        },
12423        week: {
12424            dow: 1, // Monday is the first day of the week.
12425            doy: 7  // The week that contains Jan 4th is the first week of the year.
12426        }
12427    });
12428
12429    //! moment.js locale configuration
12430    //! locale : Vietnamese [vi]
12431    //! author : Bang Nguyen : https://github.com/bangnk
12432
12433    hooks.defineLocale('vi', {
12434        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('_'),
12435        monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),
12436        monthsParseExact: true,
12437        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),
12438        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
12439        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
12440        weekdaysParseExact: true,
12441        meridiemParse: /sa|ch/i,
12442        isPM: function (input) {
12443            return /^ch$/i.test(input);
12444        },
12445        meridiem: function (hours, minutes, isLower) {
12446            if (hours < 12) {
12447                return isLower ? 'sa' : 'SA';
12448            } else {
12449                return isLower ? 'ch' : 'CH';
12450            }
12451        },
12452        longDateFormat: {
12453            LT: 'HH:mm',
12454            LTS: 'HH:mm:ss',
12455            L: 'DD/MM/YYYY',
12456            LL: 'D MMMM [năm] YYYY',
12457            LLL: 'D MMMM [năm] YYYY HH:mm',
12458            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
12459            l: 'DD/M/YYYY',
12460            ll: 'D MMM YYYY',
12461            lll: 'D MMM YYYY HH:mm',
12462            llll: 'ddd, D MMM YYYY HH:mm'
12463        },
12464        calendar: {
12465            sameDay: '[Hôm nay lúc] LT',
12466            nextDay: '[Ngày mai lúc] LT',
12467            nextWeek: 'dddd [tuần tới lúc] LT',
12468            lastDay: '[Hôm qua lúc] LT',
12469            lastWeek: 'dddd [tuần rồi lúc] LT',
12470            sameElse: 'L'
12471        },
12472        relativeTime: {
12473            future: '%s tới',
12474            past: '%s trước',
12475            s: 'vài giây',
12476            m: 'một phút',
12477            mm: '%d phút',
12478            h: 'một giờ',
12479            hh: '%d giờ',
12480            d: 'một ngày',
12481            dd: '%d ngày',
12482            M: 'một tháng',
12483            MM: '%d tháng',
12484            y: 'một năm',
12485            yy: '%d năm'
12486        },
12487        ordinalParse: /\d{1,2}/,
12488        ordinal: function (number) {
12489            return number;
12490        },
12491        week: {
12492            dow: 1, // Monday is the first day of the week.
12493            doy: 4  // The week that contains Jan 4th is the first week of the year.
12494        }
12495    });
12496
12497    //! moment.js locale configuration
12498    //! locale : Pseudo [x-pseudo]
12499    //! author : Andrew Hood : https://github.com/andrewhood125
12500
12501    hooks.defineLocale('x-pseudo', {
12502        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('_'),
12503        monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),
12504        monthsParseExact: true,
12505        weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),
12506        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
12507        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
12508        weekdaysParseExact: true,
12509        longDateFormat: {
12510            LT: 'HH:mm',
12511            L: 'DD/MM/YYYY',
12512            LL: 'D MMMM YYYY',
12513            LLL: 'D MMMM YYYY HH:mm',
12514            LLLL: 'dddd, D MMMM YYYY HH:mm'
12515        },
12516        calendar: {
12517            sameDay: '[T~ódá~ý át] LT',
12518            nextDay: '[T~ómó~rró~w át] LT',
12519            nextWeek: 'dddd [át] LT',
12520            lastDay: '[Ý~ést~érdá~ý át] LT',
12521            lastWeek: '[L~ást] dddd [át] LT',
12522            sameElse: 'L'
12523        },
12524        relativeTime: {
12525            future: 'í~ñ %s',
12526            past: '%s á~gó',
12527            s: 'á ~féw ~sécó~ñds',
12528            m: 'á ~míñ~úté',
12529            mm: '%d m~íñú~tés',
12530            h: 'á~ñ hó~úr',
12531            hh: '%d h~óúrs',
12532            d: 'á ~dáý',
12533            dd: '%d d~áýs',
12534            M: 'á ~móñ~th',
12535            MM: '%d m~óñt~hs',
12536            y: 'á ~ýéár',
12537            yy: '%d ý~éárs'
12538        },
12539        ordinalParse: /\d{1,2}(th|st|nd|rd)/,
12540        ordinal: function (number) {
12541            var b = number % 10,
12542                output = (~~(number % 100 / 10) === 1) ? 'th' :
12543                (b === 1) ? 'st' :
12544                (b === 2) ? 'nd' :
12545                (b === 3) ? 'rd' : 'th';
12546            return number + output;
12547        },
12548        week: {
12549            dow: 1, // Monday is the first day of the week.
12550            doy: 4  // The week that contains Jan 4th is the first week of the year.
12551        }
12552    });
12553
12554    //! moment.js locale configuration
12555    //! locale : Yoruba Nigeria [yo]
12556    //! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
12557
12558    hooks.defineLocale('yo', {
12559        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),
12560        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
12561        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
12562        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
12563        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
12564        longDateFormat: {
12565            LT: 'h:mm A',
12566            LTS: 'h:mm:ss A',
12567            L: 'DD/MM/YYYY',
12568            LL: 'D MMMM YYYY',
12569            LLL: 'D MMMM YYYY h:mm A',
12570            LLLL: 'dddd, D MMMM YYYY h:mm A'
12571        },
12572        calendar: {
12573            sameDay: '[Ònì ni] LT',
12574            nextDay: '[Ọ̀la ni] LT',
12575            nextWeek: 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT',
12576            lastDay: '[Àna ni] LT',
12577            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
12578            sameElse: 'L'
12579        },
12580        relativeTime: {
12581            future: 'ní %s',
12582            past: '%s kọjá',
12583            s: 'ìsẹjú aayá die',
12584            m: 'ìsẹjú kan',
12585            mm: 'ìsẹjú %d',
12586            h: 'wákati kan',
12587            hh: 'wákati %d',
12588            d: 'ọjọ́ kan',
12589            dd: 'ọjọ́ %d',
12590            M: 'osù kan',
12591            MM: 'osù %d',
12592            y: 'ọdún kan',
12593            yy: 'ọdún %d'
12594        },
12595        ordinalParse: /ọjọ́\s\d{1,2}/,
12596        ordinal: 'ọjọ́ %d',
12597        week: {
12598            dow: 1, // Monday is the first day of the week.
12599            doy: 4 // The week that contains Jan 4th is the first week of the year.
12600        }
12601    });
12602
12603    //! moment.js locale configuration
12604    //! locale : Chinese (China) [zh-cn]
12605    //! author : suupic : https://github.com/suupic
12606    //! author : Zeno Zeng : https://github.com/zenozeng
12607
12608    hooks.defineLocale('zh-cn', {
12609        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
12610        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
12611        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
12612        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
12613        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
12614        longDateFormat: {
12615            LT: 'Ah点mm分',
12616            LTS: 'Ah点m分s秒',
12617            L: 'YYYY-MM-DD',
12618            LL: 'YYYY年MMMD日',
12619            LLL: 'YYYY年MMMD日Ah点mm分',
12620            LLLL: 'YYYY年MMMD日ddddAh点mm分',
12621            l: 'YYYY-MM-DD',
12622            ll: 'YYYY年MMMD日',
12623            lll: 'YYYY年MMMD日Ah点mm分',
12624            llll: 'YYYY年MMMD日ddddAh点mm分'
12625        },
12626        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
12627        meridiemHour: function (hour, meridiem) {
12628            if (hour === 12) {
12629                hour = 0;
12630            }
12631            if (meridiem === '凌晨' || meridiem === '早上' ||
12632                    meridiem === '上午') {
12633                return hour;
12634            } else if (meridiem === '下午' || meridiem === '晚上') {
12635                return hour + 12;
12636            } else {
12637                // '中午'
12638                return hour >= 11 ? hour : hour + 12;
12639            }
12640        },
12641        meridiem: function (hour, minute, isLower) {
12642            var hm = hour * 100 + minute;
12643            if (hm < 600) {
12644                return '凌晨';
12645            } else if (hm < 900) {
12646                return '早上';
12647            } else if (hm < 1130) {
12648                return '上午';
12649            } else if (hm < 1230) {
12650                return '中午';
12651            } else if (hm < 1800) {
12652                return '下午';
12653            } else {
12654                return '晚上';
12655            }
12656        },
12657        calendar: {
12658            sameDay: function () {
12659                return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT';
12660            },
12661            nextDay: function () {
12662                return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT';
12663            },
12664            lastDay: function () {
12665                return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT';
12666            },
12667            nextWeek: function () {
12668                var startOfWeek, prefix;
12669                startOfWeek = hooks().startOf('week');
12670                prefix = this.diff(startOfWeek, 'days') >= 7 ? '[下]' : '[本]';
12671                return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
12672            },
12673            lastWeek: function () {
12674                var startOfWeek, prefix;
12675                startOfWeek = hooks().startOf('week');
12676                prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]';
12677                return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
12678            },
12679            sameElse: 'LL'
12680        },
12681        ordinalParse: /\d{1,2}(日|月|周)/,
12682        ordinal: function (number, period) {
12683            switch (period) {
12684                case 'd':
12685                case 'D':
12686                case 'DDD':
12687                    return number + '日';
12688                case 'M':
12689                    return number + '月';
12690                case 'w':
12691                case 'W':
12692                    return number + '周';
12693                default:
12694                    return number;
12695            }
12696        },
12697        relativeTime: {
12698            future: '%s内',
12699            past: '%s前',
12700            s: '几秒',
12701            m: '1 分钟',
12702            mm: '%d 分钟',
12703            h: '1 小时',
12704            hh: '%d 小时',
12705            d: '1 天',
12706            dd: '%d 天',
12707            M: '1 个月',
12708            MM: '%d 个月',
12709            y: '1 å¹´',
12710            yy: '%d å¹´'
12711        },
12712        week: {
12713            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
12714            dow: 1, // Monday is the first day of the week.
12715            doy: 4  // The week that contains Jan 4th is the first week of the year.
12716        }
12717    });
vendor: 6,824 bytes, lines 12718-12904
12718
12719    //! moment.js locale configuration
12720    //! locale : Chinese (Hong Kong) [zh-hk]
12721    //! author : Ben : https://github.com/ben-lin
12722    //! author : Chris Lam : https://github.com/hehachris
12723    //! author : Konstantin : https://github.com/skfd
12724
12725    hooks.defineLocale('zh-hk', {
12726        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
12727        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
12728        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
12729        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
12730        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
12731        longDateFormat: {
12732            LT: 'Ah點mm分',
12733            LTS: 'Ah點m分s秒',
12734            L: 'YYYY年MMMD日',
12735            LL: 'YYYY年MMMD日',
12736            LLL: 'YYYY年MMMD日Ah點mm分',
12737            LLLL: 'YYYY年MMMD日ddddAh點mm分',
12738            l: 'YYYY年MMMD日',
12739            ll: 'YYYY年MMMD日',
12740            lll: 'YYYY年MMMD日Ah點mm分',
12741            llll: 'YYYY年MMMD日ddddAh點mm分'
12742        },
12743        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
12744        meridiemHour: function (hour, meridiem) {
12745            if (hour === 12) {
12746                hour = 0;
12747            }
12748            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
12749                return hour;
12750            } else if (meridiem === '中午') {
12751                return hour >= 11 ? hour : hour + 12;
12752            } else if (meridiem === '下午' || meridiem === '晚上') {
12753                return hour + 12;
12754            }
12755        },
12756        meridiem: function (hour, minute, isLower) {
12757            var hm = hour * 100 + minute;
12758            if (hm < 600) {
12759                return '凌晨';
12760            } else if (hm < 900) {
12761                return '早上';
12762            } else if (hm < 1130) {
12763                return '上午';
12764            } else if (hm < 1230) {
12765                return '中午';
12766            } else if (hm < 1800) {
12767                return '下午';
12768            } else {
12769                return '晚上';
12770            }
12771        },
12772        calendar: {
12773            sameDay: '[今天]LT',
12774            nextDay: '[明天]LT',
12775            nextWeek: '[下]ddddLT',
12776            lastDay: '[昨天]LT',
12777            lastWeek: '[上]ddddLT',
12778            sameElse: 'L'
12779        },
12780        ordinalParse: /\d{1,2}(日|月|週)/,
12781        ordinal: function (number, period) {
12782            switch (period) {
12783                case 'd':
12784                case 'D':
12785                case 'DDD':
12786                    return number + '日';
12787                case 'M':
12788                    return number + '月';
12789                case 'w':
12790                case 'W':
12791                    return number + '週';
12792                default:
12793                    return number;
12794            }
12795        },
12796        relativeTime: {
12797            future: '%s內',
12798            past: '%s前',
12799            s: '幾秒',
12800            m: '1 分鐘',
12801            mm: '%d 分鐘',
12802            h: '1 小時',
12803            hh: '%d 小時',
12804            d: '1 天',
12805            dd: '%d 天',
12806            M: '1 個月',
12807            MM: '%d 個月',
12808            y: '1 å¹´',
12809            yy: '%d å¹´'
12810        }
12811    });
12812
12813    //! moment.js locale configuration
12814    //! locale : Chinese (Taiwan) [zh-tw]
12815    //! author : Ben : https://github.com/ben-lin
12816    //! author : Chris Lam : https://github.com/hehachris
12817
12818    hooks.defineLocale('zh-tw', {
12819        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
12820        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
12821        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
12822        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
12823        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
12824        longDateFormat: {
12825            LT: 'Ah點mm分',
12826            LTS: 'Ah點m分s秒',
12827            L: 'YYYY年MMMD日',
12828            LL: 'YYYY年MMMD日',
12829            LLL: 'YYYY年MMMD日Ah點mm分',
12830            LLLL: 'YYYY年MMMD日ddddAh點mm分',
12831            l: 'YYYY年MMMD日',
12832            ll: 'YYYY年MMMD日',
12833            lll: 'YYYY年MMMD日Ah點mm分',
12834            llll: 'YYYY年MMMD日ddddAh點mm分'
12835        },
12836        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
12837        meridiemHour: function (hour, meridiem) {
12838            if (hour === 12) {
12839                hour = 0;
12840            }
12841            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
12842                return hour;
12843            } else if (meridiem === '中午') {
12844                return hour >= 11 ? hour : hour + 12;
12845            } else if (meridiem === '下午' || meridiem === '晚上') {
12846                return hour + 12;
12847            }
12848        },
12849        meridiem: function (hour, minute, isLower) {
12850            var hm = hour * 100 + minute;
12851            if (hm < 600) {
12852                return '凌晨';
12853            } else if (hm < 900) {
12854                return '早上';
12855            } else if (hm < 1130) {
12856                return '上午';
12857            } else if (hm < 1230) {
12858                return '中午';
12859            } else if (hm < 1800) {
12860                return '下午';
12861            } else {
12862                return '晚上';
12863            }
12864        },
12865        calendar: {
12866            sameDay: '[今天]LT',
12867            nextDay: '[明天]LT',
12868            nextWeek: '[下]ddddLT',
12869            lastDay: '[昨天]LT',
12870            lastWeek: '[上]ddddLT',
12871            sameElse: 'L'
12872        },
12873        ordinalParse: /\d{1,2}(日|月|週)/,
12874        ordinal: function (number, period) {
12875            switch (period) {
12876                case 'd':
12877                case 'D':
12878                case 'DDD':
12879                    return number + '日';
12880                case 'M':
12881                    return number + '月';
12882                case 'w':
12883                case 'W':
12884                    return number + '週';
12885                default:
12886                    return number;
12887            }
12888        },
12889        relativeTime: {
12890            future: '%s內',
12891            past: '%s前',
12892            s: '幾秒',
12893            m: '1 分鐘',
12894            mm: '%d 分鐘',
12895            h: '1 小時',
12896            hh: '%d 小時',
12897            d: '1 天',
12898            dd: '%d 天',
12899            M: '1 個月',
12900            MM: '%d 個月',
12901            y: '1 å¹´',
12902            yy: '%d å¹´'
12903        }
12904    });
12905
12906    hooks.locale('en');
12907
12908    return hooks;
12909
12910})));

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.