PageSourceSearch

https://www.domovy-klas.cz/DPSMain/media/system/js/moment-with-locales.js

js domovy-klas.cz collected 2026-10-09 01:46:02 UTC 540,851 bytes, 14,380 lines download raw bytes

vendor: 6,462 bytes, lines 1-220
1;(function (global, factory) {
2    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3    typeof define === 'function' && define.amd ? define(factory) :
4    global.moment = factory()
5}(this, (function () { 'use strict';
6
7    var hookCallback;
8
9    function hooks () {
10        return hookCallback.apply(null, arguments);
11    }
12
13    // This is done to register the method called with moment()
14    // without creating circular dependencies.
15    function setHookCallback (callback) {
16        hookCallback = callback;
17    }
18
19    function isArray(input) {
20        return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';
21    }
22
23    function isObject(input) {
24        // IE8 will treat undefined and null as object if it wasn't for
25        // input != null
26        return input != null && Object.prototype.toString.call(input) === '[object Object]';
27    }
28
29    function isObjectEmpty(obj) {
30        if (Object.getOwnPropertyNames) {
31            return (Object.getOwnPropertyNames(obj).length === 0);
32        } else {
33            var k;
34            for (k in obj) {
35                if (obj.hasOwnProperty(k)) {
36                    return false;
37                }
38            }
39            return true;
40        }
41    }
42
43    function isUndefined(input) {
44        return input === void 0;
45    }
46
47    function isNumber(input) {
48        return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';
49    }
50
51    function isDate(input) {
52        return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
53    }
54
55    function map(arr, fn) {
56        var res = [], i;
57        for (i = 0; i < arr.length; ++i) {
58            res.push(fn(arr[i], i));
59        }
60        return res;
61    }
62
63    function hasOwnProp(a, b) {
64        return Object.prototype.hasOwnProperty.call(a, b);
65    }
66
67    function extend(a, b) {
68        for (var i in b) {
69            if (hasOwnProp(b, i)) {
70                a[i] = b[i];
71            }
72        }
73
74        if (hasOwnProp(b, 'toString')) {
75            a.toString = b.toString;
76        }
77
78        if (hasOwnProp(b, 'valueOf')) {
79            a.valueOf = b.valueOf;
80        }
81
82        return a;
83    }
84
85    function createUTC (input, format, locale, strict) {
86        return createLocalOrUTC(input, format, locale, strict, true).utc();
87    }
88
89    function defaultParsingFlags() {
90        // We need to deep clone this object.
91        return {
92            empty           : false,
93            unusedTokens    : [],
94            unusedInput     : [],
95            overflow        : -2,
96            charsLeftOver   : 0,
97            nullInput       : false,
98            invalidMonth    : null,
99            invalidFormat   : false,
100            userInvalidated : false,
101            iso             : false,
102            parsedDateParts : [],
103            meridiem        : null,
104            rfc2822         : false,
105            weekdayMismatch : false
106        };
107    }
108
109    function getParsingFlags(m) {
110        if (m._pf == null) {
111            m._pf = defaultParsingFlags();
112        }
113        return m._pf;
114    }
115
116    var some;
117    if (Array.prototype.some) {
118        some = Array.prototype.some;
119    } else {
120        some = function (fun) {
121            var t = Object(this);
122            var len = t.length >>> 0;
123
124            for (var i = 0; i < len; i++) {
125                if (i in t && fun.call(this, t[i], i, t)) {
126                    return true;
127                }
128            }
129
130            return false;
131        };
132    }
133
134    function isValid(m) {
135        if (m._isValid == null) {
136            var flags = getParsingFlags(m);
137            var parsedParts = some.call(flags.parsedDateParts, function (i) {
138                return i != null;
139            });
140            var isNowValid = !isNaN(m._d.getTime()) &&
141                flags.overflow < 0 &&
142                !flags.empty &&
143                !flags.invalidMonth &&
144                !flags.invalidWeekday &&
145                !flags.weekdayMismatch &&
146                !flags.nullInput &&
147                !flags.invalidFormat &&
148                !flags.userInvalidated &&
149                (!flags.meridiem || (flags.meridiem && parsedParts));
150
151            if (m._strict) {
152                isNowValid = isNowValid &&
153                    flags.charsLeftOver === 0 &&
154                    flags.unusedTokens.length === 0 &&
155                    flags.bigHour === undefined;
156            }
157
158            if (Object.isFrozen == null || !Object.isFrozen(m)) {
159                m._isValid = isNowValid;
160            }
161            else {
162                return isNowValid;
163            }
164        }
165        return m._isValid;
166    }
167
168    function createInvalid (flags) {
169        var m = createUTC(NaN);
170        if (flags != null) {
171            extend(getParsingFlags(m), flags);
172        }
173        else {
174            getParsingFlags(m).userInvalidated = true;
175        }
176
177        return m;
178    }
179
180    // Plugins that add properties should also add the key here (null value),
181    // so we can properly clone ourselves.
182    var momentProperties = hooks.momentProperties = [];
183
184    function copyConfig(to, from) {
185        var i, prop, val;
186
187        if (!isUndefined(from._isAMomentObject)) {
188            to._isAMomentObject = from._isAMomentObject;
189        }
190        if (!isUndefined(from._i)) {
191            to._i = from._i;
192        }
193        if (!isUndefined(from._f)) {
194            to._f = from._f;
195        }
196        if (!isUndefined(from._l)) {
197            to._l = from._l;
198        }
199        if (!isUndefined(from._strict)) {
200            to._strict = from._strict;
201        }
202        if (!isUndefined(from._tzm)) {
203            to._tzm = from._tzm;
204        }
205        if (!isUndefined(from._isUTC)) {
206            to._isUTC = from._isUTC;
207        }
208        if (!isUndefined(from._offset)) {
209            to._offset = from._offset;
210        }
211        if (!isUndefined(from._pf)) {
212            to._pf = getParsingFlags(from);
213        }
214        if (!isUndefined(from._locale)) {
215            to._locale = from._locale;
216        }
217
218        if (momentProperties.length > 0) {
219            for (i = 0; i < momentProperties.length; i++) {
220                prop = momentProperties[i];
vendor: 20,672 bytes, lines 221-880
221                val = from[prop];
222                if (!isUndefined(val)) {
223                    to[prop] = val;
224                }
225            }
226        }
227
228        return to;
229    }
230
231    var updateInProgress = false;
232
233    // Moment prototype object
234    function Moment(config) {
235        copyConfig(this, config);
236        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
237        if (!this.isValid()) {
238            this._d = new Date(NaN);
239        }
240        // Prevent infinite loop in case updateOffset creates new moment
241        // objects.
242        if (updateInProgress === false) {
243            updateInProgress = true;
244            hooks.updateOffset(this);
245            updateInProgress = false;
246        }
247    }
248
249    function isMoment (obj) {
250        return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
251    }
252
253    function absFloor (number) {
254        if (number < 0) {
255            // -0 -> 0
256            return Math.ceil(number) || 0;
257        } else {
258            return Math.floor(number);
259        }
260    }
261
262    function toInt(argumentForCoercion) {
263        var coercedNumber = +argumentForCoercion,
264            value = 0;
265
266        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
267            value = absFloor(coercedNumber);
268        }
269
270        return value;
271    }
272
273    // compare two arrays, return the number of differences
274    function compareArrays(array1, array2, dontConvert) {
275        var len = Math.min(array1.length, array2.length),
276            lengthDiff = Math.abs(array1.length - array2.length),
277            diffs = 0,
278            i;
279        for (i = 0; i < len; i++) {
280            if ((dontConvert && array1[i] !== array2[i]) ||
281                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
282                diffs++;
283            }
284        }
285        return diffs + lengthDiff;
286    }
287
288    function warn(msg) {
289        if (hooks.suppressDeprecationWarnings === false &&
290                (typeof console !==  'undefined') && console.warn) {
291            console.warn('Deprecation warning: ' + msg);
292        }
293    }
294
295    function deprecate(msg, fn) {
296        var firstTime = true;
297
298        return extend(function () {
299            if (hooks.deprecationHandler != null) {
300                hooks.deprecationHandler(null, msg);
301            }
302            if (firstTime) {
303                var args = [];
304                var arg;
305                for (var i = 0; i < arguments.length; i++) {
306                    arg = '';
307                    if (typeof arguments[i] === 'object') {
308                        arg += '\n[' + i + '] ';
309                        for (var key in arguments[0]) {
310                            arg += key + ': ' + arguments[0][key] + ', ';
311                        }
312                        arg = arg.slice(0, -2); // Remove trailing comma and space
313                    } else {
314                        arg = arguments[i];
315                    }
316                    args.push(arg);
317                }
318                warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack);
319                firstTime = false;
320            }
321            return fn.apply(this, arguments);
322        }, fn);
323    }
324
325    var deprecations = {};
326
327    function deprecateSimple(name, msg) {
328        if (hooks.deprecationHandler != null) {
329            hooks.deprecationHandler(name, msg);
330        }
331        if (!deprecations[name]) {
332            warn(msg);
333            deprecations[name] = true;
334        }
335    }
336
337    hooks.suppressDeprecationWarnings = false;
338    hooks.deprecationHandler = null;
339
340    function isFunction(input) {
341        return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
342    }
343
344    function set (config) {
345        var prop, i;
346        for (i in config) {
347            prop = config[i];
348            if (isFunction(prop)) {
349                this[i] = prop;
350            } else {
351                this['_' + i] = prop;
352            }
353        }
354        this._config = config;
355        // Lenient ordinal parsing accepts just a number in addition to
356        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
357        // TODO: Remove "ordinalParse" fallback in next major release.
358        this._dayOfMonthOrdinalParseLenient = new RegExp(
359            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
360                '|' + (/\d{1,2}/).source);
361    }
362
363    function mergeConfigs(parentConfig, childConfig) {
364        var res = extend({}, parentConfig), prop;
365        for (prop in childConfig) {
366            if (hasOwnProp(childConfig, prop)) {
367                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
368                    res[prop] = {};
369                    extend(res[prop], parentConfig[prop]);
370                    extend(res[prop], childConfig[prop]);
371                } else if (childConfig[prop] != null) {
372                    res[prop] = childConfig[prop];
373                } else {
374                    delete res[prop];
375                }
376            }
377        }
378        for (prop in parentConfig) {
379            if (hasOwnProp(parentConfig, prop) &&
380                    !hasOwnProp(childConfig, prop) &&
381                    isObject(parentConfig[prop])) {
382                // make sure changes to properties don't modify parent config
383                res[prop] = extend({}, res[prop]);
384            }
385        }
386        return res;
387    }
388
389    function Locale(config) {
390        if (config != null) {
391            this.set(config);
392        }
393    }
394
395    var keys;
396
397    if (Object.keys) {
398        keys = Object.keys;
399    } else {
400        keys = function (obj) {
401            var i, res = [];
402            for (i in obj) {
403                if (hasOwnProp(obj, i)) {
404                    res.push(i);
405                }
406            }
407            return res;
408        };
409    }
410
411    var defaultCalendar = {
412        sameDay : '[Today at] LT',
413        nextDay : '[Tomorrow at] LT',
414        nextWeek : 'dddd [at] LT',
415        lastDay : '[Yesterday at] LT',
416        lastWeek : '[Last] dddd [at] LT',
417        sameElse : 'L'
418    };
419
420    function calendar (key, mom, now) {
421        var output = this._calendar[key] || this._calendar['sameElse'];
422        return isFunction(output) ? output.call(mom, now) : output;
423    }
424
425    var defaultLongDateFormat = {
426        LTS  : 'h:mm:ss A',
427        LT   : 'h:mm A',
428        L    : 'MM/DD/YYYY',
429        LL   : 'MMMM D, YYYY',
430        LLL  : 'MMMM D, YYYY h:mm A',
431        LLLL : 'dddd, MMMM D, YYYY h:mm A'
432    };
433
434    function longDateFormat (key) {
435        var format = this._longDateFormat[key],
436            formatUpper = this._longDateFormat[key.toUpperCase()];
437
438        if (format || !formatUpper) {
439            return format;
440        }
441
442        this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
443            return val.slice(1);
444        });
445
446        return this._longDateFormat[key];
447    }
448
449    var defaultInvalidDate = 'Invalid date';
450
451    function invalidDate () {
452        return this._invalidDate;
453    }
454
455    var defaultOrdinal = '%d';
456    var defaultDayOfMonthOrdinalParse = /\d{1,2}/;
457
458    function ordinal (number) {
459        return this._ordinal.replace('%d', number);
460    }
461
462    var defaultRelativeTime = {
463        future : 'in %s',
464        past   : '%s ago',
465        s  : 'a few seconds',
466        ss : '%d seconds',
467        m  : 'a minute',
468        mm : '%d minutes',
469        h  : 'an hour',
470        hh : '%d hours',
471        d  : 'a day',
472        dd : '%d days',
473        M  : 'a month',
474        MM : '%d months',
475        y  : 'a year',
476        yy : '%d years'
477    };
478
479    function relativeTime (number, withoutSuffix, string, isFuture) {
480        var output = this._relativeTime[string];
481        return (isFunction(output)) ?
482            output(number, withoutSuffix, string, isFuture) :
483            output.replace(/%d/i, number);
484    }
485
486    function pastFuture (diff, output) {
487        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
488        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
489    }
490
491    var aliases = {};
492
493    function addUnitAlias (unit, shorthand) {
494        var lowerCase = unit.toLowerCase();
495        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
496    }
497
498    function normalizeUnits(units) {
499        return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
500    }
501
502    function normalizeObjectUnits(inputObject) {
503        var normalizedInput = {},
504            normalizedProp,
505            prop;
506
507        for (prop in inputObject) {
508            if (hasOwnProp(inputObject, prop)) {
509                normalizedProp = normalizeUnits(prop);
510                if (normalizedProp) {
511                    normalizedInput[normalizedProp] = inputObject[prop];
512                }
513            }
514        }
515
516        return normalizedInput;
517    }
518
519    var priorities = {};
520
521    function addUnitPriority(unit, priority) {
522        priorities[unit] = priority;
523    }
524
525    function getPrioritizedUnits(unitsObj) {
526        var units = [];
527        for (var u in unitsObj) {
528            units.push({unit: u, priority: priorities[u]});
529        }
530        units.sort(function (a, b) {
531            return a.priority - b.priority;
532        });
533        return units;
534    }
535
536    function zeroFill(number, targetLength, forceSign) {
537        var absNumber = '' + Math.abs(number),
538            zerosToFill = targetLength - absNumber.length,
539            sign = number >= 0;
540        return (sign ? (forceSign ? '+' : '') : '-') +
541            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
542    }
543
544    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;
545
546    var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
547
548    var formatFunctions = {};
549
550    var formatTokenFunctions = {};
551
552    // token:    'M'
553    // padded:   ['MM', 2]
554    // ordinal:  'Mo'
555    // callback: function () { this.month() + 1 }
556    function addFormatToken (token, padded, ordinal, callback) {
557        var func = callback;
558        if (typeof callback === 'string') {
559            func = function () {
560                return this[callback]();
561            };
562        }
563        if (token) {
564            formatTokenFunctions[token] = func;
565        }
566        if (padded) {
567            formatTokenFunctions[padded[0]] = function () {
568                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
569            };
570        }
571        if (ordinal) {
572            formatTokenFunctions[ordinal] = function () {
573                return this.localeData().ordinal(func.apply(this, arguments), token);
574            };
575        }
576    }
577
578    function removeFormattingTokens(input) {
579        if (input.match(/\[[\s\S]/)) {
580            return input.replace(/^\[|\]$/g, '');
581        }
582        return input.replace(/\\/g, '');
583    }
584
585    function makeFormatFunction(format) {
586        var array = format.match(formattingTokens), i, length;
587
588        for (i = 0, length = array.length; i < length; i++) {
589            if (formatTokenFunctions[array[i]]) {
590                array[i] = formatTokenFunctions[array[i]];
591            } else {
592                array[i] = removeFormattingTokens(array[i]);
593            }
594        }
595
596        return function (mom) {
597            var output = '', i;
598            for (i = 0; i < length; i++) {
599                output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];
600            }
601            return output;
602        };
603    }
604
605    // format date using native date object
606    function formatMoment(m, format) {
607        if (!m.isValid()) {
608            return m.localeData().invalidDate();
609        }
610
611        format = expandFormat(format, m.localeData());
612        formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
613
614        return formatFunctions[format](m);
615    }
616
617    function expandFormat(format, locale) {
618        var i = 5;
619
620        function replaceLongDateFormatTokens(input) {
621            return locale.longDateFormat(input) || input;
622        }
623
624        localFormattingTokens.lastIndex = 0;
625        while (i >= 0 && localFormattingTokens.test(format)) {
626            format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
627            localFormattingTokens.lastIndex = 0;
628            i -= 1;
629        }
630
631        return format;
632    }
633
634    var match1         = /\d/;            //       0 - 9
635    var match2         = /\d\d/;          //      00 - 99
636    var match3         = /\d{3}/;         //     000 - 999
637    var match4         = /\d{4}/;         //    0000 - 9999
638    var match6         = /[+-]?\d{6}/;    // -999999 - 999999
639    var match1to2      = /\d\d?/;         //       0 - 99
640    var match3to4      = /\d\d\d\d?/;     //     999 - 9999
641    var match5to6      = /\d\d\d\d\d\d?/; //   99999 - 999999
642    var match1to3      = /\d{1,3}/;       //       0 - 999
643    var match1to4      = /\d{1,4}/;       //       0 - 9999
644    var match1to6      = /[+-]?\d{1,6}/;  // -999999 - 999999
645
646    var matchUnsigned  = /\d+/;           //       0 - inf
647    var matchSigned    = /[+-]?\d+/;      //    -inf - inf
648
649    var matchOffset    = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
650    var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z
651
652    var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
653
654    // any word (or two) characters or numbers including two/three word month in arabic.
655    // includes scottish gaelic two word and hyphenated months
656    var matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;
657
658    var regexes = {};
659
660    function addRegexToken (token, regex, strictRegex) {
661        regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
662            return (isStrict && strictRegex) ? strictRegex : regex;
663        };
664    }
665
666    function getParseRegexForToken (token, config) {
667        if (!hasOwnProp(regexes, token)) {
668            return new RegExp(unescapeFormat(token));
669        }
670
671        return regexes[token](config._strict, config._locale);
672    }
673
674    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
675    function unescapeFormat(s) {
676        return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
677            return p1 || p2 || p3 || p4;
678        }));
679    }
680
681    function regexEscape(s) {
682        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
683    }
684
685    var tokens = {};
686
687    function addParseToken (token, callback) {
688        var i, func = callback;
689        if (typeof token === 'string') {
690            token = [token];
691        }
692        if (isNumber(callback)) {
693            func = function (input, array) {
694                array[callback] = toInt(input);
695            };
696        }
697        for (i = 0; i < token.length; i++) {
698            tokens[token[i]] = func;
699        }
700    }
701
702    function addWeekParseToken (token, callback) {
703        addParseToken(token, function (input, array, config, token) {
704            config._w = config._w || {};
705            callback(input, config._w, config, token);
706        });
707    }
708
709    function addTimeToArrayFromToken(token, input, config) {
710        if (input != null && hasOwnProp(tokens, token)) {
711            tokens[token](input, config._a, config, token);
712        }
713    }
714
715    var YEAR = 0;
716    var MONTH = 1;
717    var DATE = 2;
718    var HOUR = 3;
719    var MINUTE = 4;
720    var SECOND = 5;
721    var MILLISECOND = 6;
722    var WEEK = 7;
723    var WEEKDAY = 8;
724
725    // FORMATTING
726
727    addFormatToken('Y', 0, 0, function () {
728        var y = this.year();
729        return y <= 9999 ? '' + y : '+' + y;
730    });
731
732    addFormatToken(0, ['YY', 2], 0, function () {
733        return this.year() % 100;
734    });
735
736    addFormatToken(0, ['YYYY',   4],       0, 'year');
737    addFormatToken(0, ['YYYYY',  5],       0, 'year');
738    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
739
740    // ALIASES
741
742    addUnitAlias('year', 'y');
743
744    // PRIORITIES
745
746    addUnitPriority('year', 1);
747
748    // PARSING
749
750    addRegexToken('Y',      matchSigned);
751    addRegexToken('YY',     match1to2, match2);
752    addRegexToken('YYYY',   match1to4, match4);
753    addRegexToken('YYYYY',  match1to6, match6);
754    addRegexToken('YYYYYY', match1to6, match6);
755
756    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
757    addParseToken('YYYY', function (input, array) {
758        array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
759    });
760    addParseToken('YY', function (input, array) {
761        array[YEAR] = hooks.parseTwoDigitYear(input);
762    });
763    addParseToken('Y', function (input, array) {
764        array[YEAR] = parseInt(input, 10);
765    });
766
767    // HELPERS
768
769    function daysInYear(year) {
770        return isLeapYear(year) ? 366 : 365;
771    }
772
773    function isLeapYear(year) {
774        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
775    }
776
777    // HOOKS
778
779    hooks.parseTwoDigitYear = function (input) {
780        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
781    };
782
783    // MOMENTS
784
785    var getSetYear = makeGetSet('FullYear', true);
786
787    function getIsLeapYear () {
788        return isLeapYear(this.year());
789    }
790
791    function makeGetSet (unit, keepTime) {
792        return function (value) {
793            if (value != null) {
794                set$1(this, unit, value);
795                hooks.updateOffset(this, keepTime);
796                return this;
797            } else {
798                return get(this, unit);
799            }
800        };
801    }
802
803    function get (mom, unit) {
804        return mom.isValid() ?
805            mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;
806    }
807
808    function set$1 (mom, unit, value) {
809        if (mom.isValid() && !isNaN(value)) {
810            if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {
811                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));
812            }
813            else {
814                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
815            }
816        }
817    }
818
819    // MOMENTS
820
821    function stringGet (units) {
822        units = normalizeUnits(units);
823        if (isFunction(this[units])) {
824            return this[units]();
825        }
826        return this;
827    }
828
829
830    function stringSet (units, value) {
831        if (typeof units === 'object') {
832            units = normalizeObjectUnits(units);
833            var prioritized = getPrioritizedUnits(units);
834            for (var i = 0; i < prioritized.length; i++) {
835                this[prioritized[i].unit](units[prioritized[i].unit]);
836            }
837        } else {
838            units = normalizeUnits(units);
839            if (isFunction(this[units])) {
840                return this[units](value);
841            }
842        }
843        return this;
844    }
845
846    function mod(n, x) {
847        return ((n % x) + x) % x;
848    }
849
850    var indexOf;
851
852    if (Array.prototype.indexOf) {
853        indexOf = Array.prototype.indexOf;
854    } else {
855        indexOf = function (o) {
856            // I know
857            var i;
858            for (i = 0; i < this.length; ++i) {
859                if (this[i] === o) {
860                    return i;
861                }
862            }
863            return -1;
864        };
865    }
866
867    function daysInMonth(year, month) {
868        if (isNaN(year) || isNaN(month)) {
869            return NaN;
870        }
871        var modMonth = mod(month, 12);
872        year += (month - modMonth) / 12;
873        return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);
874    }
875
876    // FORMATTING
877
878    addFormatToken('M', ['MM', 2], 'Mo', function () {
879        return this.month() + 1;
880    });
vendor: 10,497 bytes, lines 881-1172
881
882    addFormatToken('MMM', 0, 0, function (format) {
883        return this.localeData().monthsShort(this, format);
884    });
885
886    addFormatToken('MMMM', 0, 0, function (format) {
887        return this.localeData().months(this, format);
888    });
889
890    // ALIASES
891
892    addUnitAlias('month', 'M');
893
894    // PRIORITY
895
896    addUnitPriority('month', 8);
897
898    // PARSING
899
900    addRegexToken('M',    match1to2);
901    addRegexToken('MM',   match1to2, match2);
902    addRegexToken('MMM',  function (isStrict, locale) {
903        return locale.monthsShortRegex(isStrict);
904    });
905    addRegexToken('MMMM', function (isStrict, locale) {
906        return locale.monthsRegex(isStrict);
907    });
908
909    addParseToken(['M', 'MM'], function (input, array) {
910        array[MONTH] = toInt(input) - 1;
911    });
912
913    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
914        var month = config._locale.monthsParse(input, token, config._strict);
915        // if we didn't find a month name, mark the date as invalid.
916        if (month != null) {
917            array[MONTH] = month;
918        } else {
919            getParsingFlags(config).invalidMonth = input;
920        }
921    });
922
923    // LOCALES
924
925    var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/;
926    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
927    function localeMonths (m, format) {
928        if (!m) {
929            return isArray(this._months) ? this._months :
930                this._months['standalone'];
931        }
932        return isArray(this._months) ? this._months[m.month()] :
933            this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];
934    }
935
936    var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
937    function localeMonthsShort (m, format) {
938        if (!m) {
939            return isArray(this._monthsShort) ? this._monthsShort :
940                this._monthsShort['standalone'];
941        }
942        return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
943            this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
944    }
945
946    function handleStrictParse(monthName, format, strict) {
947        var i, ii, mom, llc = monthName.toLocaleLowerCase();
948        if (!this._monthsParse) {
949            // this is not used
950            this._monthsParse = [];
951            this._longMonthsParse = [];
952            this._shortMonthsParse = [];
953            for (i = 0; i < 12; ++i) {
954                mom = createUTC([2000, i]);
955                this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();
956                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
957            }
958        }
959
960        if (strict) {
961            if (format === 'MMM') {
962                ii = indexOf.call(this._shortMonthsParse, llc);
963                return ii !== -1 ? ii : null;
964            } else {
965                ii = indexOf.call(this._longMonthsParse, llc);
966                return ii !== -1 ? ii : null;
967            }
968        } else {
969            if (format === 'MMM') {
970                ii = indexOf.call(this._shortMonthsParse, llc);
971                if (ii !== -1) {
972                    return ii;
973                }
974                ii = indexOf.call(this._longMonthsParse, llc);
975                return ii !== -1 ? ii : null;
976            } else {
977                ii = indexOf.call(this._longMonthsParse, llc);
978                if (ii !== -1) {
979                    return ii;
980                }
981                ii = indexOf.call(this._shortMonthsParse, llc);
982                return ii !== -1 ? ii : null;
983            }
984        }
985    }
986
987    function localeMonthsParse (monthName, format, strict) {
988        var i, mom, regex;
989
990        if (this._monthsParseExact) {
991            return handleStrictParse.call(this, monthName, format, strict);
992        }
993
994        if (!this._monthsParse) {
995            this._monthsParse = [];
996            this._longMonthsParse = [];
997            this._shortMonthsParse = [];
998        }
999
1000        // TODO: add sorting
1001        // Sorting makes sure if one month (or abbr) is a prefix of another
1002        // see sorting in computeMonthsParse
1003        for (i = 0; i < 12; i++) {
1004            // make the regex if we don't have it already
1005            mom = createUTC([2000, i]);
1006            if (strict && !this._longMonthsParse[i]) {
1007                this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
1008                this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
1009            }
1010            if (!strict && !this._monthsParse[i]) {
1011                regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
1012                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
1013            }
1014            // test the regex
1015            if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
1016                return i;
1017            } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
1018                return i;
1019            } else if (!strict && this._monthsParse[i].test(monthName)) {
1020                return i;
1021            }
1022        }
1023    }
1024
1025    // MOMENTS
1026
1027    function setMonth (mom, value) {
1028        var dayOfMonth;
1029
1030        if (!mom.isValid()) {
1031            // No op
1032            return mom;
1033        }
1034
1035        if (typeof value === 'string') {
1036            if (/^\d+$/.test(value)) {
1037                value = toInt(value);
1038            } else {
1039                value = mom.localeData().monthsParse(value);
1040                // TODO: Another silent failure?
1041                if (!isNumber(value)) {
1042                    return mom;
1043                }
1044            }
1045        }
1046
1047        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
1048        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
1049        return mom;
1050    }
1051
1052    function getSetMonth (value) {
1053        if (value != null) {
1054            setMonth(this, value);
1055            hooks.updateOffset(this, true);
1056            return this;
1057        } else {
1058            return get(this, 'Month');
1059        }
1060    }
1061
1062    function getDaysInMonth () {
1063        return daysInMonth(this.year(), this.month());
1064    }
1065
1066    var defaultMonthsShortRegex = matchWord;
1067    function monthsShortRegex (isStrict) {
1068        if (this._monthsParseExact) {
1069            if (!hasOwnProp(this, '_monthsRegex')) {
1070                computeMonthsParse.call(this);
1071            }
1072            if (isStrict) {
1073                return this._monthsShortStrictRegex;
1074            } else {
1075                return this._monthsShortRegex;
1076            }
1077        } else {
1078            if (!hasOwnProp(this, '_monthsShortRegex')) {
1079                this._monthsShortRegex = defaultMonthsShortRegex;
1080            }
1081            return this._monthsShortStrictRegex && isStrict ?
1082                this._monthsShortStrictRegex : this._monthsShortRegex;
1083        }
1084    }
1085
1086    var defaultMonthsRegex = matchWord;
1087    function monthsRegex (isStrict) {
1088        if (this._monthsParseExact) {
1089            if (!hasOwnProp(this, '_monthsRegex')) {
1090                computeMonthsParse.call(this);
1091            }
1092            if (isStrict) {
1093                return this._monthsStrictRegex;
1094            } else {
1095                return this._monthsRegex;
1096            }
1097        } else {
1098            if (!hasOwnProp(this, '_monthsRegex')) {
1099                this._monthsRegex = defaultMonthsRegex;
1100            }
1101            return this._monthsStrictRegex && isStrict ?
1102                this._monthsStrictRegex : this._monthsRegex;
1103        }
1104    }
1105
1106    function computeMonthsParse () {
1107        function cmpLenRev(a, b) {
1108            return b.length - a.length;
1109        }
1110
1111        var shortPieces = [], longPieces = [], mixedPieces = [],
1112            i, mom;
1113        for (i = 0; i < 12; i++) {
1114            // make the regex if we don't have it already
1115            mom = createUTC([2000, i]);
1116            shortPieces.push(this.monthsShort(mom, ''));
1117            longPieces.push(this.months(mom, ''));
1118            mixedPieces.push(this.months(mom, ''));
1119            mixedPieces.push(this.monthsShort(mom, ''));
1120        }
1121        // Sorting makes sure if one month (or abbr) is a prefix of another it
1122        // will match the longer piece.
1123        shortPieces.sort(cmpLenRev);
1124        longPieces.sort(cmpLenRev);
1125        mixedPieces.sort(cmpLenRev);
1126        for (i = 0; i < 12; i++) {
1127            shortPieces[i] = regexEscape(shortPieces[i]);
1128            longPieces[i] = regexEscape(longPieces[i]);
1129        }
1130        for (i = 0; i < 24; i++) {
1131            mixedPieces[i] = regexEscape(mixedPieces[i]);
1132        }
1133
1134        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1135        this._monthsShortRegex = this._monthsRegex;
1136        this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
1137        this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
1138    }
1139
1140    function createDate (y, m, d, h, M, s, ms) {
1141        // can't just apply() to create a date:
1142        // https://stackoverflow.com/q/181348
1143        var date = new Date(y, m, d, h, M, s, ms);
1144
1145        // the date constructor remaps years 0-99 to 1900-1999
1146        if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {
1147            date.setFullYear(y);
1148        }
1149        return date;
1150    }
1151
1152    function createUTCDate (y) {
1153        var date = new Date(Date.UTC.apply(null, arguments));
1154
1155        // the Date.UTC function remaps years 0-99 to 1900-1999
1156        if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {
1157            date.setUTCFullYear(y);
1158        }
1159        return date;
1160    }
1161
1162    // start-of-first-week - start-of-year
1163    function firstWeekOffset(year, dow, doy) {
1164        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
1165            fwd = 7 + dow - doy,
1166            // first-week day local weekday -- which local weekday is fwd
1167            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
1168
1169        return -fwdlw + fwd - 1;
1170    }
1171
1172    // https
vendor: 5,872 bytes, lines 1172-1372
1172://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
1173    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
1174        var localWeekday = (7 + weekday - dow) % 7,
1175            weekOffset = firstWeekOffset(year, dow, doy),
1176            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
1177            resYear, resDayOfYear;
1178
1179        if (dayOfYear <= 0) {
1180            resYear = year - 1;
1181            resDayOfYear = daysInYear(resYear) + dayOfYear;
1182        } else if (dayOfYear > daysInYear(year)) {
1183            resYear = year + 1;
1184            resDayOfYear = dayOfYear - daysInYear(year);
1185        } else {
1186            resYear = year;
1187            resDayOfYear = dayOfYear;
1188        }
1189
1190        return {
1191            year: resYear,
1192            dayOfYear: resDayOfYear
1193        };
1194    }
1195
1196    function weekOfYear(mom, dow, doy) {
1197        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
1198            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
1199            resWeek, resYear;
1200
1201        if (week < 1) {
1202            resYear = mom.year() - 1;
1203            resWeek = week + weeksInYear(resYear, dow, doy);
1204        } else if (week > weeksInYear(mom.year(), dow, doy)) {
1205            resWeek = week - weeksInYear(mom.year(), dow, doy);
1206            resYear = mom.year() + 1;
1207        } else {
1208            resYear = mom.year();
1209            resWeek = week;
1210        }
1211
1212        return {
1213            week: resWeek,
1214            year: resYear
1215        };
1216    }
1217
1218    function weeksInYear(year, dow, doy) {
1219        var weekOffset = firstWeekOffset(year, dow, doy),
1220            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
1221        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
1222    }
1223
1224    // FORMATTING
1225
1226    addFormatToken('w', ['ww', 2], 'wo', 'week');
1227    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
1228
1229    // ALIASES
1230
1231    addUnitAlias('week', 'w');
1232    addUnitAlias('isoWeek', 'W');
1233
1234    // PRIORITIES
1235
1236    addUnitPriority('week', 5);
1237    addUnitPriority('isoWeek', 5);
1238
1239    // PARSING
1240
1241    addRegexToken('w',  match1to2);
1242    addRegexToken('ww', match1to2, match2);
1243    addRegexToken('W',  match1to2);
1244    addRegexToken('WW', match1to2, match2);
1245
1246    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
1247        week[token.substr(0, 1)] = toInt(input);
1248    });
1249
1250    // HELPERS
1251
1252    // LOCALES
1253
1254    function localeWeek (mom) {
1255        return weekOfYear(mom, this._week.dow, this._week.doy).week;
1256    }
1257
1258    var defaultLocaleWeek = {
1259        dow : 0, // Sunday is the first day of the week.
1260        doy : 6  // The week that contains Jan 1st is the first week of the year.
1261    };
1262
1263    function localeFirstDayOfWeek () {
1264        return this._week.dow;
1265    }
1266
1267    function localeFirstDayOfYear () {
1268        return this._week.doy;
1269    }
1270
1271    // MOMENTS
1272
1273    function getSetWeek (input) {
1274        var week = this.localeData().week(this);
1275        return input == null ? week : this.add((input - week) * 7, 'd');
1276    }
1277
1278    function getSetISOWeek (input) {
1279        var week = weekOfYear(this, 1, 4).week;
1280        return input == null ? week : this.add((input - week) * 7, 'd');
1281    }
1282
1283    // FORMATTING
1284
1285    addFormatToken('d', 0, 'do', 'day');
1286
1287    addFormatToken('dd', 0, 0, function (format) {
1288        return this.localeData().weekdaysMin(this, format);
1289    });
1290
1291    addFormatToken('ddd', 0, 0, function (format) {
1292        return this.localeData().weekdaysShort(this, format);
1293    });
1294
1295    addFormatToken('dddd', 0, 0, function (format) {
1296        return this.localeData().weekdays(this, format);
1297    });
1298
1299    addFormatToken('e', 0, 0, 'weekday');
1300    addFormatToken('E', 0, 0, 'isoWeekday');
1301
1302    // ALIASES
1303
1304    addUnitAlias('day', 'd');
1305    addUnitAlias('weekday', 'e');
1306    addUnitAlias('isoWeekday', 'E');
1307
1308    // PRIORITY
1309    addUnitPriority('day', 11);
1310    addUnitPriority('weekday', 11);
1311    addUnitPriority('isoWeekday', 11);
1312
1313    // PARSING
1314
1315    addRegexToken('d',    match1to2);
1316    addRegexToken('e',    match1to2);
1317    addRegexToken('E',    match1to2);
1318    addRegexToken('dd',   function (isStrict, locale) {
1319        return locale.weekdaysMinRegex(isStrict);
1320    });
1321    addRegexToken('ddd',   function (isStrict, locale) {
1322        return locale.weekdaysShortRegex(isStrict);
1323    });
1324    addRegexToken('dddd',   function (isStrict, locale) {
1325        return locale.weekdaysRegex(isStrict);
1326    });
1327
1328    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
1329        var weekday = config._locale.weekdaysParse(input, token, config._strict);
1330        // if we didn't get a weekday name, mark the date as invalid
1331        if (weekday != null) {
1332            week.d = weekday;
1333        } else {
1334            getParsingFlags(config).invalidWeekday = input;
1335        }
1336    });
1337
1338    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
1339        week[token] = toInt(input);
1340    });
1341
1342    // HELPERS
1343
1344    function parseWeekday(input, locale) {
1345        if (typeof input !== 'string') {
1346            return input;
1347        }
1348
1349        if (!isNaN(input)) {
1350            return parseInt(input, 10);
1351        }
1352
1353        input = locale.weekdaysParse(input);
1354        if (typeof input === 'number') {
1355            return input;
1356        }
1357
1358        return null;
1359    }
1360
1361    function parseIsoWeekday(input, locale) {
1362        if (typeof input === 'string') {
1363            return locale.weekdaysParse(input) % 7 || 7;
1364        }
1365        return isNaN(input) ? null : input;
1366    }
1367
1368    // LOCALES
1369
1370    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
1371    function localeWeekdays (m, format) {
1372        
vendor: 3,848 bytes, lines 1372-1471
1372if (!m) {
1373            return isArray(this._weekdays) ? this._weekdays :
1374                this._weekdays['standalone'];
1375        }
1376        return isArray(this._weekdays) ? this._weekdays[m.day()] :
1377            this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];
1378    }
1379
1380    var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
1381    function localeWeekdaysShort (m) {
1382        return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;
1383    }
1384
1385    var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
1386    function localeWeekdaysMin (m) {
1387        return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;
1388    }
1389
1390    function handleStrictParse$1(weekdayName, format, strict) {
1391        var i, ii, mom, llc = weekdayName.toLocaleLowerCase();
1392        if (!this._weekdaysParse) {
1393            this._weekdaysParse = [];
1394            this._shortWeekdaysParse = [];
1395            this._minWeekdaysParse = [];
1396
1397            for (i = 0; i < 7; ++i) {
1398                mom = createUTC([2000, 1]).day(i);
1399                this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();
1400                this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();
1401                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
1402            }
1403        }
1404
1405        if (strict) {
1406            if (format === 'dddd') {
1407                ii = indexOf.call(this._weekdaysParse, llc);
1408                return ii !== -1 ? ii : null;
1409            } else if (format === 'ddd') {
1410                ii = indexOf.call(this._shortWeekdaysParse, llc);
1411                return ii !== -1 ? ii : null;
1412            } else {
1413                ii = indexOf.call(this._minWeekdaysParse, llc);
1414                return ii !== -1 ? ii : null;
1415            }
1416        } else {
1417            if (format === 'dddd') {
1418                ii = indexOf.call(this._weekdaysParse, llc);
1419                if (ii !== -1) {
1420                    return ii;
1421                }
1422                ii = indexOf.call(this._shortWeekdaysParse, llc);
1423                if (ii !== -1) {
1424                    return ii;
1425                }
1426                ii = indexOf.call(this._minWeekdaysParse, llc);
1427                return ii !== -1 ? ii : null;
1428            } else if (format === 'ddd') {
1429                ii = indexOf.call(this._shortWeekdaysParse, llc);
1430                if (ii !== -1) {
1431                    return ii;
1432                }
1433                ii = indexOf.call(this._weekdaysParse, llc);
1434                if (ii !== -1) {
1435                    return ii;
1436                }
1437                ii = indexOf.call(this._minWeekdaysParse, llc);
1438                return ii !== -1 ? ii : null;
1439            } else {
1440                ii = indexOf.call(this._minWeekdaysParse, llc);
1441                if (ii !== -1) {
1442                    return ii;
1443                }
1444                ii = indexOf.call(this._weekdaysParse, llc);
1445                if (ii !== -1) {
1446                    return ii;
1447                }
1448                ii = indexOf.call(this._shortWeekdaysParse, llc);
1449                return ii !== -1 ? ii : null;
1450            }
1451        }
1452    }
1453
1454    function localeWeekdaysParse (weekdayName, format, strict) {
1455        var i, mom, regex;
1456
1457        if (this._weekdaysParseExact) {
1458            return handleStrictParse$1.call(this, weekdayName, format, strict);
1459        }
1460
1461        if (!this._weekdaysParse) {
1462            this._weekdaysParse = [];
1463            this._minWeekdaysParse = [];
1464            this._shortWeekdaysParse = [];
1465            this._fullWeekdaysParse = [];
1466        }
1467
1468        for (i = 0; i < 7; i++) {
1469            // make the regex if we don't have it already
1470
1471            mom = createUTC([2000, 1]).day(i);
vendor: 51,566 bytes, lines 1472-2935
1472            if (strict && !this._fullWeekdaysParse[i]) {
1473                this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');
1474                this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');
1475                this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');
1476            }
1477            if (!this._weekdaysParse[i]) {
1478                regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
1479                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
1480            }
1481            // test the regex
1482            if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
1483                return i;
1484            } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
1485                return i;
1486            } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
1487                return i;
1488            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
1489                return i;
1490            }
1491        }
1492    }
1493
1494    // MOMENTS
1495
1496    function getSetDayOfWeek (input) {
1497        if (!this.isValid()) {
1498            return input != null ? this : NaN;
1499        }
1500        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
1501        if (input != null) {
1502            input = parseWeekday(input, this.localeData());
1503            return this.add(input - day, 'd');
1504        } else {
1505            return day;
1506        }
1507    }
1508
1509    function getSetLocaleDayOfWeek (input) {
1510        if (!this.isValid()) {
1511            return input != null ? this : NaN;
1512        }
1513        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
1514        return input == null ? weekday : this.add(input - weekday, 'd');
1515    }
1516
1517    function getSetISODayOfWeek (input) {
1518        if (!this.isValid()) {
1519            return input != null ? this : NaN;
1520        }
1521
1522        // behaves the same as moment#day except
1523        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
1524        // as a setter, sunday should belong to the previous week.
1525
1526        if (input != null) {
1527            var weekday = parseIsoWeekday(input, this.localeData());
1528            return this.day(this.day() % 7 ? weekday : weekday - 7);
1529        } else {
1530            return this.day() || 7;
1531        }
1532    }
1533
1534    var defaultWeekdaysRegex = matchWord;
1535    function weekdaysRegex (isStrict) {
1536        if (this._weekdaysParseExact) {
1537            if (!hasOwnProp(this, '_weekdaysRegex')) {
1538                computeWeekdaysParse.call(this);
1539            }
1540            if (isStrict) {
1541                return this._weekdaysStrictRegex;
1542            } else {
1543                return this._weekdaysRegex;
1544            }
1545        } else {
1546            if (!hasOwnProp(this, '_weekdaysRegex')) {
1547                this._weekdaysRegex = defaultWeekdaysRegex;
1548            }
1549            return this._weekdaysStrictRegex && isStrict ?
1550                this._weekdaysStrictRegex : this._weekdaysRegex;
1551        }
1552    }
1553
1554    var defaultWeekdaysShortRegex = matchWord;
1555    function weekdaysShortRegex (isStrict) {
1556        if (this._weekdaysParseExact) {
1557            if (!hasOwnProp(this, '_weekdaysRegex')) {
1558                computeWeekdaysParse.call(this);
1559            }
1560            if (isStrict) {
1561                return this._weekdaysShortStrictRegex;
1562            } else {
1563                return this._weekdaysShortRegex;
1564            }
1565        } else {
1566            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
1567                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
1568            }
1569            return this._weekdaysShortStrictRegex && isStrict ?
1570                this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
1571        }
1572    }
1573
1574    var defaultWeekdaysMinRegex = matchWord;
1575    function weekdaysMinRegex (isStrict) {
1576        if (this._weekdaysParseExact) {
1577            if (!hasOwnProp(this, '_weekdaysRegex')) {
1578                computeWeekdaysParse.call(this);
1579            }
1580            if (isStrict) {
1581                return this._weekdaysMinStrictRegex;
1582            } else {
1583                return this._weekdaysMinRegex;
1584            }
1585        } else {
1586            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
1587                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
1588            }
1589            return this._weekdaysMinStrictRegex && isStrict ?
1590                this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
1591        }
1592    }
1593
1594
1595    function computeWeekdaysParse () {
1596        function cmpLenRev(a, b) {
1597            return b.length - a.length;
1598        }
1599
1600        var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],
1601            i, mom, minp, shortp, longp;
1602        for (i = 0; i < 7; i++) {
1603            // make the regex if we don't have it already
1604            mom = createUTC([2000, 1]).day(i);
1605            minp = this.weekdaysMin(mom, '');
1606            shortp = this.weekdaysShort(mom, '');
1607            longp = this.weekdays(mom, '');
1608            minPieces.push(minp);
1609            shortPieces.push(shortp);
1610            longPieces.push(longp);
1611            mixedPieces.push(minp);
1612            mixedPieces.push(shortp);
1613            mixedPieces.push(longp);
1614        }
1615        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
1616        // will match the longer piece.
1617        minPieces.sort(cmpLenRev);
1618        shortPieces.sort(cmpLenRev);
1619        longPieces.sort(cmpLenRev);
1620        mixedPieces.sort(cmpLenRev);
1621        for (i = 0; i < 7; i++) {
1622            shortPieces[i] = regexEscape(shortPieces[i]);
1623            longPieces[i] = regexEscape(longPieces[i]);
1624            mixedPieces[i] = regexEscape(mixedPieces[i]);
1625        }
1626
1627        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1628        this._weekdaysShortRegex = this._weekdaysRegex;
1629        this._weekdaysMinRegex = this._weekdaysRegex;
1630
1631        this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
1632        this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
1633        this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');
1634    }
1635
1636    // FORMATTING
1637
1638    function hFormat() {
1639        return this.hours() % 12 || 12;
1640    }
1641
1642    function kFormat() {
1643        return this.hours() || 24;
1644    }
1645
1646    addFormatToken('H', ['HH', 2], 0, 'hour');
1647    addFormatToken('h', ['hh', 2], 0, hFormat);
1648    addFormatToken('k', ['kk', 2], 0, kFormat);
1649
1650    addFormatToken('hmm', 0, 0, function () {
1651        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
1652    });
1653
1654    addFormatToken('hmmss', 0, 0, function () {
1655        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +
1656            zeroFill(this.seconds(), 2);
1657    });
1658
1659    addFormatToken('Hmm', 0, 0, function () {
1660        return '' + this.hours() + zeroFill(this.minutes(), 2);
1661    });
1662
1663    addFormatToken('Hmmss', 0, 0, function () {
1664        return '' + this.hours() + zeroFill(this.minutes(), 2) +
1665            zeroFill(this.seconds(), 2);
1666    });
1667
1668    function meridiem (token, lowercase) {
1669        addFormatToken(token, 0, 0, function () {
1670            return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
1671        });
1672    }
1673
1674    meridiem('a', true);
1675    meridiem('A', false);
1676
1677    // ALIASES
1678
1679    addUnitAlias('hour', 'h');
1680
1681    // PRIORITY
1682    addUnitPriority('hour', 13);
1683
1684    // PARSING
1685
1686    function matchMeridiem (isStrict, locale) {
1687        return locale._meridiemParse;
1688    }
1689
1690    addRegexToken('a',  matchMeridiem);
1691    addRegexToken('A',  matchMeridiem);
1692    addRegexToken('H',  match1to2);
1693    addRegexToken('h',  match1to2);
1694    addRegexToken('k',  match1to2);
1695    addRegexToken('HH', match1to2, match2);
1696    addRegexToken('hh', match1to2, match2);
1697    addRegexToken('kk', match1to2, match2);
1698
1699    addRegexToken('hmm', match3to4);
1700    addRegexToken('hmmss', match5to6);
1701    addRegexToken('Hmm', match3to4);
1702    addRegexToken('Hmmss', match5to6);
1703
1704    addParseToken(['H', 'HH'], HOUR);
1705    addParseToken(['k', 'kk'], function (input, array, config) {
1706        var kInput = toInt(input);
1707        array[HOUR] = kInput === 24 ? 0 : kInput;
1708    });
1709    addParseToken(['a', 'A'], function (input, array, config) {
1710        config._isPm = config._locale.isPM(input);
1711        config._meridiem = input;
1712    });
1713    addParseToken(['h', 'hh'], function (input, array, config) {
1714        array[HOUR] = toInt(input);
1715        getParsingFlags(config).bigHour = true;
1716    });
1717    addParseToken('hmm', function (input, array, config) {
1718        var pos = input.length - 2;
1719        array[HOUR] = toInt(input.substr(0, pos));
1720        array[MINUTE] = toInt(input.substr(pos));
1721        getParsingFlags(config).bigHour = true;
1722    });
1723    addParseToken('hmmss', function (input, array, config) {
1724        var pos1 = input.length - 4;
1725        var pos2 = input.length - 2;
1726        array[HOUR] = toInt(input.substr(0, pos1));
1727        array[MINUTE] = toInt(input.substr(pos1, 2));
1728        array[SECOND] = toInt(input.substr(pos2));
1729        getParsingFlags(config).bigHour = true;
1730    });
1731    addParseToken('Hmm', function (input, array, config) {
1732        var pos = input.length - 2;
1733        array[HOUR] = toInt(input.substr(0, pos));
1734        array[MINUTE] = toInt(input.substr(pos));
1735    });
1736    addParseToken('Hmmss', function (input, array, config) {
1737        var pos1 = input.length - 4;
1738        var pos2 = input.length - 2;
1739        array[HOUR] = toInt(input.substr(0, pos1));
1740        array[MINUTE] = toInt(input.substr(pos1, 2));
1741        array[SECOND] = toInt(input.substr(pos2));
1742    });
1743
1744    // LOCALES
1745
1746    function localeIsPM (input) {
1747        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
1748        // Using charAt should be more compatible.
1749        return ((input + '').toLowerCase().charAt(0) === 'p');
1750    }
1751
1752    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
1753    function localeMeridiem (hours, minutes, isLower) {
1754        if (hours > 11) {
1755            return isLower ? 'pm' : 'PM';
1756        } else {
1757            return isLower ? 'am' : 'AM';
1758        }
1759    }
1760
1761
1762    // MOMENTS
1763
1764    // Setting the hour should keep the time, because the user explicitly
1765    // specified which hour they want. So trying to maintain the same hour (in
1766    // a new timezone) makes sense. Adding/subtracting hours does not follow
1767    // this rule.
1768    var getSetHour = makeGetSet('Hours', true);
1769
1770    var baseConfig = {
1771        calendar: defaultCalendar,
1772        longDateFormat: defaultLongDateFormat,
1773        invalidDate: defaultInvalidDate,
1774        ordinal: defaultOrdinal,
1775        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
1776        relativeTime: defaultRelativeTime,
1777
1778        months: defaultLocaleMonths,
1779        monthsShort: defaultLocaleMonthsShort,
1780
1781        week: defaultLocaleWeek,
1782
1783        weekdays: defaultLocaleWeekdays,
1784        weekdaysMin: defaultLocaleWeekdaysMin,
1785        weekdaysShort: defaultLocaleWeekdaysShort,
1786
1787        meridiemParse: defaultLocaleMeridiemParse
1788    };
1789
1790    // internal storage for locale config files
1791    var locales = {};
1792    var localeFamilies = {};
1793    var globalLocale;
1794
1795    function normalizeLocale(key) {
1796        return key ? key.toLowerCase().replace('_', '-') : key;
1797    }
1798
1799    // pick the locale from the array
1800    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
1801    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
1802    function chooseLocale(names) {
1803        var i = 0, j, next, locale, split;
1804
1805        while (i < names.length) {
1806            split = normalizeLocale(names[i]).split('-');
1807            j = split.length;
1808            next = normalizeLocale(names[i + 1]);
1809            next = next ? next.split('-') : null;
1810            while (j > 0) {
1811                locale = loadLocale(split.slice(0, j).join('-'));
1812                if (locale) {
1813                    return locale;
1814                }
1815                if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
1816                    //the next array item is better than a shallower substring of this one
1817                    break;
1818                }
1819                j--;
1820            }
1821            i++;
1822        }
1823        return globalLocale;
1824    }
1825
1826    function loadLocale(name) {
1827        var oldLocale = null;
1828        // TODO: Find a better way to register and load all the locales in Node
1829        if (!locales[name] && (typeof module !== 'undefined') &&
1830                module && module.exports) {
1831            try {
1832                oldLocale = globalLocale._abbr;
1833                var aliasedRequire = require;
1834                aliasedRequire('./locale/' + name);
1835                getSetGlobalLocale(oldLocale);
1836            } catch (e) {}
1837        }
1838        return locales[name];
1839    }
1840
1841    // This function will load locale and then set the global locale.  If
1842    // no arguments are passed in, it will simply return the current global
1843    // locale key.
1844    function getSetGlobalLocale (key, values) {
1845        var data;
1846        if (key) {
1847            if (isUndefined(values)) {
1848                data = getLocale(key);
1849            }
1850            else {
1851                data = defineLocale(key, values);
1852            }
1853
1854            if (data) {
1855                // moment.duration._locale = moment._locale = data;
1856                globalLocale = data;
1857            }
1858            else {
1859                if ((typeof console !==  'undefined') && console.warn) {
1860                    //warn user if arguments are passed but the locale could not be set
1861                    console.warn('Locale ' + key +  ' not found. Did you forget to load it?');
1862                }
1863            }
1864        }
1865
1866        return globalLocale._abbr;
1867    }
1868
1869    function defineLocale (name, config) {
1870        if (config !== null) {
1871            var locale, parentConfig = baseConfig;
1872            config.abbr = name;
1873            if (locales[name] != null) {
1874                deprecateSimple('defineLocaleOverride',
1875                        'use moment.updateLocale(localeName, config) to change ' +
1876                        'an existing locale. moment.defineLocale(localeName, ' +
1877                        'config) should only be used for creating a new locale ' +
1878                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');
1879                parentConfig = locales[name]._config;
1880            } else if (config.parentLocale != null) {
1881                if (locales[config.parentLocale] != null) {
1882                    parentConfig = locales[config.parentLocale]._config;
1883                } else {
1884                    locale = loadLocale(config.parentLocale);
1885                    if (locale != null) {
1886                        parentConfig = locale._config;
1887                    } else {
1888                        if (!localeFamilies[config.parentLocale]) {
1889                            localeFamilies[config.parentLocale] = [];
1890                        }
1891                        localeFamilies[config.parentLocale].push({
1892                            name: name,
1893                            config: config
1894                        });
1895                        return null;
1896                    }
1897                }
1898            }
1899            locales[name] = new Locale(mergeConfigs(parentConfig, config));
1900
1901            if (localeFamilies[name]) {
1902                localeFamilies[name].forEach(function (x) {
1903                    defineLocale(x.name, x.config);
1904                });
1905            }
1906
1907            // backwards compat for now: also set the locale
1908            // make sure we set the locale AFTER all child locales have been
1909            // created, so we won't end up with the child locale set.
1910            getSetGlobalLocale(name);
1911
1912
1913            return locales[name];
1914        } else {
1915            // useful for testing
1916            delete locales[name];
1917            return null;
1918        }
1919    }
1920
1921    function updateLocale(name, config) {
1922        if (config != null) {
1923            var locale, tmpLocale, parentConfig = baseConfig;
1924            // MERGE
1925            tmpLocale = loadLocale(name);
1926            if (tmpLocale != null) {
1927                parentConfig = tmpLocale._config;
1928            }
1929            config = mergeConfigs(parentConfig, config);
1930            locale = new Locale(config);
1931            locale.parentLocale = locales[name];
1932            locales[name] = locale;
1933
1934            // backwards compat for now: also set the locale
1935            getSetGlobalLocale(name);
1936        } else {
1937            // pass null for config to unupdate, useful for tests
1938            if (locales[name] != null) {
1939                if (locales[name].parentLocale != null) {
1940                    locales[name] = locales[name].parentLocale;
1941                } else if (locales[name] != null) {
1942                    delete locales[name];
1943                }
1944            }
1945        }
1946        return locales[name];
1947    }
1948
1949    // returns locale data
1950    function getLocale (key) {
1951        var locale;
1952
1953        if (key && key._locale && key._locale._abbr) {
1954            key = key._locale._abbr;
1955        }
1956
1957        if (!key) {
1958            return globalLocale;
1959        }
1960
1961        if (!isArray(key)) {
1962            //short-circuit everything else
1963            locale = loadLocale(key);
1964            if (locale) {
1965                return locale;
1966            }
1967            key = [key];
1968        }
1969
1970        return chooseLocale(key);
1971    }
1972
1973    function listLocales() {
1974        return keys(locales);
1975    }
1976
1977    function checkOverflow (m) {
1978        var overflow;
1979        var a = m._a;
1980
1981        if (a && getParsingFlags(m).overflow === -2) {
1982            overflow =
1983                a[MONTH]       < 0 || a[MONTH]       > 11  ? MONTH :
1984                a[DATE]        < 1 || a[DATE]        > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
1985                a[HOUR]        < 0 || a[HOUR]        > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
1986                a[MINUTE]      < 0 || a[MINUTE]      > 59  ? MINUTE :
1987                a[SECOND]      < 0 || a[SECOND]      > 59  ? SECOND :
1988                a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
1989                -1;
1990
1991            if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
1992                overflow = DATE;
1993            }
1994            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
1995                overflow = WEEK;
1996            }
1997            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
1998                overflow = WEEKDAY;
1999            }
2000
2001            getParsingFlags(m).overflow = overflow;
2002        }
2003
2004        return m;
2005    }
2006
2007    // Pick the first defined of two or three arguments.
2008    function defaults(a, b, c) {
2009        if (a != null) {
2010            return a;
2011        }
2012        if (b != null) {
2013            return b;
2014        }
2015        return c;
2016    }
2017
2018    function currentDateArray(config) {
2019        // hooks is actually the exported moment object
2020        var nowValue = new Date(hooks.now());
2021        if (config._useUTC) {
2022            return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
2023        }
2024        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
2025    }
2026
2027    // convert an array to a date.
2028    // the array should mirror the parameters below
2029    // note: all values past the year are optional and will default to the lowest possible value.
2030    // [year, month, day , hour, minute, second, millisecond]
2031    function configFromArray (config) {
2032        var i, date, input = [], currentDate, expectedWeekday, yearToUse;
2033
2034        if (config._d) {
2035            return;
2036        }
2037
2038        currentDate = currentDateArray(config);
2039
2040        //compute day of the year from weeks and weekdays
2041        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
2042            dayOfYearFromWeekInfo(config);
2043        }
2044
2045        //if the day of the year is set, figure out what it is
2046        if (config._dayOfYear != null) {
2047            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
2048
2049            if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {
2050                getParsingFlags(config)._overflowDayOfYear = true;
2051            }
2052
2053            date = createUTCDate(yearToUse, 0, config._dayOfYear);
2054            config._a[MONTH] = date.getUTCMonth();
2055            config._a[DATE] = date.getUTCDate();
2056        }
2057
2058        // Default to current date.
2059        // * if no year, month, day of month are given, default to today
2060        // * if day of month is given, default month and year
2061        // * if month is given, default only year
2062        // * if year is given, don't default anything
2063        for (i = 0; i < 3 && config._a[i] == null; ++i) {
2064            config._a[i] = input[i] = currentDate[i];
2065        }
2066
2067        // Zero out whatever was not defaulted, including time
2068        for (; i < 7; i++) {
2069            config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
2070        }
2071
2072        // Check for 24:00:00.000
2073        if (config._a[HOUR] === 24 &&
2074                config._a[MINUTE] === 0 &&
2075                config._a[SECOND] === 0 &&
2076                config._a[MILLISECOND] === 0) {
2077            config._nextDay = true;
2078            config._a[HOUR] = 0;
2079        }
2080
2081        config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
2082        expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();
2083
2084        // Apply timezone offset from input. The actual utcOffset can be changed
2085        // with parseZone.
2086        if (config._tzm != null) {
2087            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2088        }
2089
2090        if (config._nextDay) {
2091            config._a[HOUR] = 24;
2092        }
2093
2094        // check for mismatching day of week
2095        if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {
2096            getParsingFlags(config).weekdayMismatch = true;
2097        }
2098    }
2099
2100    function dayOfYearFromWeekInfo(config) {
2101        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
2102
2103        w = config._w;
2104        if (w.GG != null || w.W != null || w.E != null) {
2105            dow = 1;
2106            doy = 4;
2107
2108            // TODO: We need to take the current isoWeekYear, but that depends on
2109            // how we interpret now (local, utc, fixed offset). So create
2110            // a now version of current config (take local/utc/offset flags, and
2111            // create now).
2112            weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);
2113            week = defaults(w.W, 1);
2114            weekday = defaults(w.E, 1);
2115            if (weekday < 1 || weekday > 7) {
2116                weekdayOverflow = true;
2117            }
2118        } else {
2119            dow = config._locale._week.dow;
2120            doy = config._locale._week.doy;
2121
2122            var curWeek = weekOfYear(createLocal(), dow, doy);
2123
2124            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
2125
2126            // Default to current week.
2127            week = defaults(w.w, curWeek.week);
2128
2129            if (w.d != null) {
2130                // weekday -- low day numbers are considered next week
2131                weekday = w.d;
2132                if (weekday < 0 || weekday > 6) {
2133                    weekdayOverflow = true;
2134                }
2135            } else if (w.e != null) {
2136                // local weekday -- counting starts from begining of week
2137                weekday = w.e + dow;
2138                if (w.e < 0 || w.e > 6) {
2139                    weekdayOverflow = true;
2140                }
2141            } else {
2142                // default to begining of week
2143                weekday = dow;
2144            }
2145        }
2146        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
2147            getParsingFlags(config)._overflowWeeks = true;
2148        } else if (weekdayOverflow != null) {
2149            getParsingFlags(config)._overflowWeekday = true;
2150        } else {
2151            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
2152            config._a[YEAR] = temp.year;
2153            config._dayOfYear = temp.dayOfYear;
2154        }
2155    }
2156
2157    // iso 8601 regex
2158    // 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)
2159    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)?)?$/;
2160    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)?)?$/;
2161
2162    var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/;
2163
2164    var isoDates = [
2165        ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
2166        ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
2167        ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
2168        ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
2169        ['YYYY-DDD', /\d{4}-\d{3}/],
2170        ['YYYY-MM', /\d{4}-\d\d/, false],
2171        ['YYYYYYMMDD', /[+-]\d{10}/],
2172        ['YYYYMMDD', /\d{8}/],
2173        // YYYYMM is NOT allowed by the standard
2174        ['GGGG[W]WWE', /\d{4}W\d{3}/],
2175        ['GGGG[W]WW', /\d{4}W\d{2}/, false],
2176        ['YYYYDDD', /\d{7}/]
2177    ];
2178
2179    // iso time formats and regexes
2180    var isoTimes = [
2181        ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
2182        ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
2183        ['HH:mm:ss', /\d\d:\d\d:\d\d/],
2184        ['HH:mm', /\d\d:\d\d/],
2185        ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
2186        ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
2187        ['HHmmss', /\d\d\d\d\d\d/],
2188        ['HHmm', /\d\d\d\d/],
2189        ['HH', /\d\d/]
2190    ];
2191
2192    var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
2193
2194    // date from iso format
2195    function configFromISO(config) {
2196        var i, l,
2197            string = config._i,
2198            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
2199            allowTime, dateFormat, timeFormat, tzFormat;
2200
2201        if (match) {
2202            getParsingFlags(config).iso = true;
2203
2204            for (i = 0, l = isoDates.length; i < l; i++) {
2205                if (isoDates[i][1].exec(match[1])) {
2206                    dateFormat = isoDates[i][0];
2207                    allowTime = isoDates[i][2] !== false;
2208                    break;
2209                }
2210            }
2211            if (dateFormat == null) {
2212                config._isValid = false;
2213                return;
2214            }
2215            if (match[3]) {
2216                for (i = 0, l = isoTimes.length; i < l; i++) {
2217                    if (isoTimes[i][1].exec(match[3])) {
2218                        // match[2] should be 'T' or space
2219                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
2220                        break;
2221                    }
2222                }
2223                if (timeFormat == null) {
2224                    config._isValid = false;
2225                    return;
2226                }
2227            }
2228            if (!allowTime && timeFormat != null) {
2229                config._isValid = false;
2230                return;
2231            }
2232            if (match[4]) {
2233                if (tzRegex.exec(match[4])) {
2234                    tzFormat = 'Z';
2235                } else {
2236                    config._isValid = false;
2237                    return;
2238                }
2239            }
2240            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
2241            configFromStringAndFormat(config);
2242        } else {
2243            config._isValid = false;
2244        }
2245    }
2246
2247    // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
2248    var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;
2249
2250    function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {
2251        var result = [
2252            untruncateYear(yearStr),
2253            defaultLocaleMonthsShort.indexOf(monthStr),
2254            parseInt(dayStr, 10),
2255            parseInt(hourStr, 10),
2256            parseInt(minuteStr, 10)
2257        ];
2258
2259        if (secondStr) {
2260            result.push(parseInt(secondStr, 10));
2261        }
2262
2263        return result;
2264    }
2265
2266    function untruncateYear(yearStr) {
2267        var year = parseInt(yearStr, 10);
2268        if (year <= 49) {
2269            return 2000 + year;
2270        } else if (year <= 999) {
2271            return 1900 + year;
2272        }
2273        return year;
2274    }
2275
2276    function preprocessRFC2822(s) {
2277        // Remove comments and folding whitespace and replace multiple-spaces with a single space
2278        return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, '');
2279    }
2280
2281    function checkWeekday(weekdayStr, parsedInput, config) {
2282        if (weekdayStr) {
2283            // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.
2284            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
2285                weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();
2286            if (weekdayProvided !== weekdayActual) {
2287                getParsingFlags(config).weekdayMismatch = true;
2288                config._isValid = false;
2289                return false;
2290            }
2291        }
2292        return true;
2293    }
2294
2295    var obsOffsets = {
2296        UT: 0,
2297        GMT: 0,
2298        EDT: -4 * 60,
2299        EST: -5 * 60,
2300        CDT: -5 * 60,
2301        CST: -6 * 60,
2302        MDT: -6 * 60,
2303        MST: -7 * 60,
2304        PDT: -7 * 60,
2305        PST: -8 * 60
2306    };
2307
2308    function calculateOffset(obsOffset, militaryOffset, numOffset) {
2309        if (obsOffset) {
2310            return obsOffsets[obsOffset];
2311        } else if (militaryOffset) {
2312            // the only allowed military tz is Z
2313            return 0;
2314        } else {
2315            var hm = parseInt(numOffset, 10);
2316            var m = hm % 100, h = (hm - m) / 100;
2317            return h * 60 + m;
2318        }
2319    }
2320
2321    // date and time from ref 2822 format
2322    function configFromRFC2822(config) {
2323        var match = rfc2822.exec(preprocessRFC2822(config._i));
2324        if (match) {
2325            var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);
2326            if (!checkWeekday(match[1], parsedArray, config)) {
2327                return;
2328            }
2329
2330            config._a = parsedArray;
2331            config._tzm = calculateOffset(match[8], match[9], match[10]);
2332
2333            config._d = createUTCDate.apply(null, config._a);
2334            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2335
2336            getParsingFlags(config).rfc2822 = true;
2337        } else {
2338            config._isValid = false;
2339        }
2340    }
2341
2342    // date from iso format or fallback
2343    function configFromString(config) {
2344        var matched = aspNetJsonRegex.exec(config._i);
2345
2346        if (matched !== null) {
2347            config._d = new Date(+matched[1]);
2348            return;
2349        }
2350
2351        configFromISO(config);
2352        if (config._isValid === false) {
2353            delete config._isValid;
2354        } else {
2355            return;
2356        }
2357
2358        configFromRFC2822(config);
2359        if (config._isValid === false) {
2360            delete config._isValid;
2361        } else {
2362            return;
2363        }
2364
2365        // Final attempt, use Input Fallback
2366        hooks.createFromInputFallback(config);
2367    }
2368
2369    hooks.createFromInputFallback = deprecate(
2370        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
2371        'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
2372        'discouraged and will be removed in an upcoming major release. Please refer to ' +
2373        'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
2374        function (config) {
2375            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
2376        }
2377    );
2378
2379    // constant that refers to the ISO standard
2380    hooks.ISO_8601 = function () {};
2381
2382    // constant that refers to the RFC 2822 form
2383    hooks.RFC_2822 = function () {};
2384
2385    // date from string and format string
2386    function configFromStringAndFormat(config) {
2387        // TODO: Move this to another part of the creation flow to prevent circular deps
2388        if (config._f === hooks.ISO_8601) {
2389            configFromISO(config);
2390            return;
2391        }
2392        if (config._f === hooks.RFC_2822) {
2393            configFromRFC2822(config);
2394            return;
2395        }
2396        config._a = [];
2397        getParsingFlags(config).empty = true;
2398
2399        // This array is used to make a Date, either with `new Date` or `Date.UTC`
2400        var string = '' + config._i,
2401            i, parsedInput, tokens, token, skipped,
2402            stringLength = string.length,
2403            totalParsedInputLength = 0;
2404
2405        tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
2406
2407        for (i = 0; i < tokens.length; i++) {
2408            token = tokens[i];
2409            parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
2410            // console.log('token', token, 'parsedInput', parsedInput,
2411            //         'regex', getParseRegexForToken(token, config));
2412            if (parsedInput) {
2413                skipped = string.substr(0, string.indexOf(parsedInput));
2414                if (skipped.length > 0) {
2415                    getParsingFlags(config).unusedInput.push(skipped);
2416                }
2417                string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
2418                totalParsedInputLength += parsedInput.length;
2419            }
2420            // don't parse if it's not a known token
2421            if (formatTokenFunctions[token]) {
2422                if (parsedInput) {
2423                    getParsingFlags(config).empty = false;
2424                }
2425                else {
2426                    getParsingFlags(config).unusedTokens.push(token);
2427                }
2428                addTimeToArrayFromToken(token, parsedInput, config);
2429            }
2430            else if (config._strict && !parsedInput) {
2431                getParsingFlags(config).unusedTokens.push(token);
2432            }
2433        }
2434
2435        // add remaining unparsed input length to the string
2436        getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
2437        if (string.length > 0) {
2438            getParsingFlags(config).unusedInput.push(string);
2439        }
2440
2441        // clear _12h flag if hour is <= 12
2442        if (config._a[HOUR] <= 12 &&
2443            getParsingFlags(config).bigHour === true &&
2444            config._a[HOUR] > 0) {
2445            getParsingFlags(config).bigHour = undefined;
2446        }
2447
2448        getParsingFlags(config).parsedDateParts = config._a.slice(0);
2449        getParsingFlags(config).meridiem = config._meridiem;
2450        // handle meridiem
2451        config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
2452
2453        configFromArray(config);
2454        checkOverflow(config);
2455    }
2456
2457
2458    function meridiemFixWrap (locale, hour, meridiem) {
2459        var isPm;
2460
2461        if (meridiem == null) {
2462            // nothing to do
2463            return hour;
2464        }
2465        if (locale.meridiemHour != null) {
2466            return locale.meridiemHour(hour, meridiem);
2467        } else if (locale.isPM != null) {
2468            // Fallback
2469            isPm = locale.isPM(meridiem);
2470            if (isPm && hour < 12) {
2471                hour += 12;
2472            }
2473            if (!isPm && hour === 12) {
2474                hour = 0;
2475            }
2476            return hour;
2477        } else {
2478            // this is not supposed to happen
2479            return hour;
2480        }
2481    }
2482
2483    // date from string and array of format strings
2484    function configFromStringAndArray(config) {
2485        var tempConfig,
2486            bestMoment,
2487
2488            scoreToBeat,
2489            i,
2490            currentScore;
2491
2492        if (config._f.length === 0) {
2493            getParsingFlags(config).invalidFormat = true;
2494            config._d = new Date(NaN);
2495            return;
2496        }
2497
2498        for (i = 0; i < config._f.length; i++) {
2499            currentScore = 0;
2500            tempConfig = copyConfig({}, config);
2501            if (config._useUTC != null) {
2502                tempConfig._useUTC = config._useUTC;
2503            }
2504            tempConfig._f = config._f[i];
2505            configFromStringAndFormat(tempConfig);
2506
2507            if (!isValid(tempConfig)) {
2508                continue;
2509            }
2510
2511            // if there is any input that was not parsed add a penalty for that format
2512            currentScore += getParsingFlags(tempConfig).charsLeftOver;
2513
2514            //or tokens
2515            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
2516
2517            getParsingFlags(tempConfig).score = currentScore;
2518
2519            if (scoreToBeat == null || currentScore < scoreToBeat) {
2520                scoreToBeat = currentScore;
2521                bestMoment = tempConfig;
2522            }
2523        }
2524
2525        extend(config, bestMoment || tempConfig);
2526    }
2527
2528    function configFromObject(config) {
2529        if (config._d) {
2530            return;
2531        }
2532
2533        var i = normalizeObjectUnits(config._i);
2534        config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {
2535            return obj && parseInt(obj, 10);
2536        });
2537
2538        configFromArray(config);
2539    }
2540
2541    function createFromConfig (config) {
2542        var res = new Moment(checkOverflow(prepareConfig(config)));
2543        if (res._nextDay) {
2544            // Adding is smart enough around DST
2545            res.add(1, 'd');
2546            res._nextDay = undefined;
2547        }
2548
2549        return res;
2550    }
2551
2552    function prepareConfig (config) {
2553        var input = config._i,
2554            format = config._f;
2555
2556        config._locale = config._locale || getLocale(config._l);
2557
2558        if (input === null || (format === undefined && input === '')) {
2559            return createInvalid({nullInput: true});
2560        }
2561
2562        if (typeof input === 'string') {
2563            config._i = input = config._locale.preparse(input);
2564        }
2565
2566        if (isMoment(input)) {
2567            return new Moment(checkOverflow(input));
2568        } else if (isDate(input)) {
2569            config._d = input;
2570        } else if (isArray(format)) {
2571            configFromStringAndArray(config);
2572        } else if (format) {
2573            configFromStringAndFormat(config);
2574        }  else {
2575            configFromInput(config);
2576        }
2577
2578        if (!isValid(config)) {
2579            config._d = null;
2580        }
2581
2582        return config;
2583    }
2584
2585    function configFromInput(config) {
2586        var input = config._i;
2587        if (isUndefined(input)) {
2588            config._d = new Date(hooks.now());
2589        } else if (isDate(input)) {
2590            config._d = new Date(input.valueOf());
2591        } else if (typeof input === 'string') {
2592            configFromString(config);
2593        } else if (isArray(input)) {
2594            config._a = map(input.slice(0), function (obj) {
2595                return parseInt(obj, 10);
2596            });
2597            configFromArray(config);
2598        } else if (isObject(input)) {
2599            configFromObject(config);
2600        } else if (isNumber(input)) {
2601            // from milliseconds
2602            config._d = new Date(input);
2603        } else {
2604            hooks.createFromInputFallback(config);
2605        }
2606    }
2607
2608    function createLocalOrUTC (input, format, locale, strict, isUTC) {
2609        var c = {};
2610
2611        if (locale === true || locale === false) {
2612            strict = locale;
2613            locale = undefined;
2614        }
2615
2616        if ((isObject(input) && isObjectEmpty(input)) ||
2617                (isArray(input) && input.length === 0)) {
2618            input = undefined;
2619        }
2620        // object construction must be done this way.
2621        // https://github.com/moment/moment/issues/1423
2622        c._isAMomentObject = true;
2623        c._useUTC = c._isUTC = isUTC;
2624        c._l = locale;
2625        c._i = input;
2626        c._f = format;
2627        c._strict = strict;
2628
2629        return createFromConfig(c);
2630    }
2631
2632    function createLocal (input, format, locale, strict) {
2633        return createLocalOrUTC(input, format, locale, strict, false);
2634    }
2635
2636    var prototypeMin = deprecate(
2637        'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
2638        function () {
2639            var other = createLocal.apply(null, arguments);
2640            if (this.isValid() && other.isValid()) {
2641                return other < this ? this : other;
2642            } else {
2643                return createInvalid();
2644            }
2645        }
2646    );
2647
2648    var prototypeMax = deprecate(
2649        'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
2650        function () {
2651            var other = createLocal.apply(null, arguments);
2652            if (this.isValid() && other.isValid()) {
2653                return other > this ? this : other;
2654            } else {
2655                return createInvalid();
2656            }
2657        }
2658    );
2659
2660    // Pick a moment m from moments so that m[fn](other) is true for all
2661    // other. This relies on the function fn to be transitive.
2662    //
2663    // moments should either be an array of moment objects or an array, whose
2664    // first element is an array of moment objects.
2665    function pickBy(fn, moments) {
2666        var res, i;
2667        if (moments.length === 1 && isArray(moments[0])) {
2668            moments = moments[0];
2669        }
2670        if (!moments.length) {
2671            return createLocal();
2672        }
2673        res = moments[0];
2674        for (i = 1; i < moments.length; ++i) {
2675            if (!moments[i].isValid() || moments[i][fn](res)) {
2676                res = moments[i];
2677            }
2678        }
2679        return res;
2680    }
2681
2682    // TODO: Use [].sort instead?
2683    function min () {
2684        var args = [].slice.call(arguments, 0);
2685
2686        return pickBy('isBefore', args);
2687    }
2688
2689    function max () {
2690        var args = [].slice.call(arguments, 0);
2691
2692        return pickBy('isAfter', args);
2693    }
2694
2695    var now = function () {
2696        return Date.now ? Date.now() : +(new Date());
2697    };
2698
2699    var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];
2700
2701    function isDurationValid(m) {
2702        for (var key in m) {
2703            if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {
2704                return false;
2705            }
2706        }
2707
2708        var unitHasDecimal = false;
2709        for (var i = 0; i < ordering.length; ++i) {
2710            if (m[ordering[i]]) {
2711                if (unitHasDecimal) {
2712                    return false; // only allow non-integers for smallest unit
2713                }
2714                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
2715                    unitHasDecimal = true;
2716                }
2717            }
2718        }
2719
2720        return true;
2721    }
2722
2723    function isValid$1() {
2724        return this._isValid;
2725    }
2726
2727    function createInvalid$1() {
2728        return createDuration(NaN);
2729    }
2730
2731    function Duration (duration) {
2732        var normalizedInput = normalizeObjectUnits(duration),
2733            years = normalizedInput.year || 0,
2734            quarters = normalizedInput.quarter || 0,
2735            months = normalizedInput.month || 0,
2736            weeks = normalizedInput.week || 0,
2737            days = normalizedInput.day || 0,
2738            hours = normalizedInput.hour || 0,
2739            minutes = normalizedInput.minute || 0,
2740            seconds = normalizedInput.second || 0,
2741            milliseconds = normalizedInput.millisecond || 0;
2742
2743        this._isValid = isDurationValid(normalizedInput);
2744
2745        // representation for dateAddRemove
2746        this._milliseconds = +milliseconds +
2747            seconds * 1e3 + // 1000
2748            minutes * 6e4 + // 1000 * 60
2749            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
2750        // Because of dateAddRemove treats 24 hours as different from a
2751        // day when working around DST, we need to store them separately
2752        this._days = +days +
2753            weeks * 7;
2754        // It is impossible to translate months into days without knowing
2755        // which months you are are talking about, so we have to store
2756        // it separately.
2757        this._months = +months +
2758            quarters * 3 +
2759            years * 12;
2760
2761        this._data = {};
2762
2763        this._locale = getLocale();
2764
2765        this._bubble();
2766    }
2767
2768    function isDuration (obj) {
2769        return obj instanceof Duration;
2770    }
2771
2772    function absRound (number) {
2773        if (number < 0) {
2774            return Math.round(-1 * number) * -1;
2775        } else {
2776            return Math.round(number);
2777        }
2778    }
2779
2780    // FORMATTING
2781
2782    function offset (token, separator) {
2783        addFormatToken(token, 0, 0, function () {
2784            var offset = this.utcOffset();
2785            var sign = '+';
2786            if (offset < 0) {
2787                offset = -offset;
2788                sign = '-';
2789            }
2790            return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
2791        });
2792    }
2793
2794    offset('Z', ':');
2795    offset('ZZ', '');
2796
2797    // PARSING
2798
2799    addRegexToken('Z',  matchShortOffset);
2800    addRegexToken('ZZ', matchShortOffset);
2801    addParseToken(['Z', 'ZZ'], function (input, array, config) {
2802        config._useUTC = true;
2803        config._tzm = offsetFromString(matchShortOffset, input);
2804    });
2805
2806    // HELPERS
2807
2808    // timezone chunker
2809    // '+10:00' > ['10',  '00']
2810    // '-1530'  > ['-15', '30']
2811    var chunkOffset = /([\+\-]|\d\d)/gi;
2812
2813    function offsetFromString(matcher, string) {
2814        var matches = (string || '').match(matcher);
2815
2816        if (matches === null) {
2817            return null;
2818        }
2819
2820        var chunk   = matches[matches.length - 1] || [];
2821        var parts   = (chunk + '').match(chunkOffset) || ['-', 0, 0];
2822        var minutes = +(parts[1] * 60) + toInt(parts[2]);
2823
2824        return minutes === 0 ?
2825          0 :
2826          parts[0] === '+' ? minutes : -minutes;
2827    }
2828
2829    // Return a moment from input, that is local/utc/zone equivalent to model.
2830    function cloneWithOffset(input, model) {
2831        var res, diff;
2832        if (model._isUTC) {
2833            res = model.clone();
2834            diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();
2835            // Use low-level api, because this fn is low-level api.
2836            res._d.setTime(res._d.valueOf() + diff);
2837            hooks.updateOffset(res, false);
2838            return res;
2839        } else {
2840            return createLocal(input).local();
2841        }
2842    }
2843
2844    function getDateOffset (m) {
2845        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
2846        // https://github.com/moment/moment/pull/1871
2847        return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
2848    }
2849
2850    // HOOKS
2851
2852    // This function will be called whenever a moment is mutated.
2853    // It is intended to keep the offset in sync with the timezone.
2854    hooks.updateOffset = function () {};
2855
2856    // MOMENTS
2857
2858    // keepLocalTime = true means only change the timezone, without
2859    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
2860    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
2861    // +0200, so we adjust the time as needed, to be valid.
2862    //
2863    // Keeping the time actually adds/subtracts (one hour)
2864    // from the actual represented time. That is why we call updateOffset
2865    // a second time. In case it wants us to change the offset again
2866    // _changeInProgress == true case, then we have to adjust, because
2867    // there is no such time in the given timezone.
2868    function getSetOffset (input, keepLocalTime, keepMinutes) {
2869        var offset = this._offset || 0,
2870            localAdjust;
2871        if (!this.isValid()) {
2872            return input != null ? this : NaN;
2873        }
2874        if (input != null) {
2875            if (typeof input === 'string') {
2876                input = offsetFromString(matchShortOffset, input);
2877                if (input === null) {
2878                    return this;
2879                }
2880            } else if (Math.abs(input) < 16 && !keepMinutes) {
2881                input = input * 60;
2882            }
2883            if (!this._isUTC && keepLocalTime) {
2884                localAdjust = getDateOffset(this);
2885            }
2886            this._offset = input;
2887            this._isUTC = true;
2888            if (localAdjust != null) {
2889                this.add(localAdjust, 'm');
2890            }
2891            if (offset !== input) {
2892                if (!keepLocalTime || this._changeInProgress) {
2893                    addSubtract(this, createDuration(input - offset, 'm'), 1, false);
2894                } else if (!this._changeInProgress) {
2895                    this._changeInProgress = true;
2896                    hooks.updateOffset(this, true);
2897                    this._changeInProgress = null;
2898                }
2899            }
2900            return this;
2901        } else {
2902            return this._isUTC ? offset : getDateOffset(this);
2903        }
2904    }
2905
2906    function getSetZone (input, keepLocalTime) {
2907        if (input != null) {
2908            if (typeof input !== 'string') {
2909                input = -input;
2910            }
2911
2912            this.utcOffset(input, keepLocalTime);
2913
2914            return this;
2915        } else {
2916            return -this.utcOffset();
2917        }
2918    }
2919
2920    function setOffsetToUTC (keepLocalTime) {
2921        return this.utcOffset(0, keepLocalTime);
2922    }
2923
2924    function setOffsetToLocal (keepLocalTime) {
2925        if (this._isUTC) {
2926            this.utcOffset(0, keepLocalTime);
2927            this._isUTC = false;
2928
2929            if (keepLocalTime) {
2930                this.subtract(getDateOffset(this), 'm');
2931            }
2932        }
2933        return this;
2934    }
2935
vendor: 19,845 bytes, lines 2936-3509
2936    function setOffsetToParsedOffset () {
2937        if (this._tzm != null) {
2938            this.utcOffset(this._tzm, false, true);
2939        } else if (typeof this._i === 'string') {
2940            var tZone = offsetFromString(matchOffset, this._i);
2941            if (tZone != null) {
2942                this.utcOffset(tZone);
2943            }
2944            else {
2945                this.utcOffset(0, true);
2946            }
2947        }
2948        return this;
2949    }
2950
2951    function hasAlignedHourOffset (input) {
2952        if (!this.isValid()) {
2953            return false;
2954        }
2955        input = input ? createLocal(input).utcOffset() : 0;
2956
2957        return (this.utcOffset() - input) % 60 === 0;
2958    }
2959
2960    function isDaylightSavingTime () {
2961        return (
2962            this.utcOffset() > this.clone().month(0).utcOffset() ||
2963            this.utcOffset() > this.clone().month(5).utcOffset()
2964        );
2965    }
2966
2967    function isDaylightSavingTimeShifted () {
2968        if (!isUndefined(this._isDSTShifted)) {
2969            return this._isDSTShifted;
2970        }
2971
2972        var c = {};
2973
2974        copyConfig(c, this);
2975        c = prepareConfig(c);
2976
2977        if (c._a) {
2978            var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
2979            this._isDSTShifted = this.isValid() &&
2980                compareArrays(c._a, other.toArray()) > 0;
2981        } else {
2982            this._isDSTShifted = false;
2983        }
2984
2985        return this._isDSTShifted;
2986    }
2987
2988    function isLocal () {
2989        return this.isValid() ? !this._isUTC : false;
2990    }
2991
2992    function isUtcOffset () {
2993        return this.isValid() ? this._isUTC : false;
2994    }
2995
2996    function isUtc () {
2997        return this.isValid() ? this._isUTC && this._offset === 0 : false;
2998    }
2999
3000    // ASP.NET json date format regex
3001    var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/;
3002
3003    // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
3004    // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
3005    // and further modified to allow for strings containing both week and day
3006    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)?)?$/;
3007
3008    function createDuration (input, key) {
3009        var duration = input,
3010            // matching against regexp is expensive, do it on demand
3011            match = null,
3012            sign,
3013            ret,
3014            diffRes;
3015
3016        if (isDuration(input)) {
3017            duration = {
3018                ms : input._milliseconds,
3019                d  : input._days,
3020                M  : input._months
3021            };
3022        } else if (isNumber(input)) {
3023            duration = {};
3024            if (key) {
3025                duration[key] = input;
3026            } else {
3027                duration.milliseconds = input;
3028            }
3029        } else if (!!(match = aspNetRegex.exec(input))) {
3030            sign = (match[1] === '-') ? -1 : 1;
3031            duration = {
3032                y  : 0,
3033                d  : toInt(match[DATE])                         * sign,
3034                h  : toInt(match[HOUR])                         * sign,
3035                m  : toInt(match[MINUTE])                       * sign,
3036                s  : toInt(match[SECOND])                       * sign,
3037                ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match
3038            };
3039        } else if (!!(match = isoRegex.exec(input))) {
3040            sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1;
3041            duration = {
3042                y : parseIso(match[2], sign),
3043                M : parseIso(match[3], sign),
3044                w : parseIso(match[4], sign),
3045                d : parseIso(match[5], sign),
3046                h : parseIso(match[6], sign),
3047                m : parseIso(match[7], sign),
3048                s : parseIso(match[8], sign)
3049            };
3050        } else if (duration == null) {// checks for null or undefined
3051            duration = {};
3052        } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
3053            diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));
3054
3055            duration = {};
3056            duration.ms = diffRes.milliseconds;
3057            duration.M = diffRes.months;
3058        }
3059
3060        ret = new Duration(duration);
3061
3062        if (isDuration(input) && hasOwnProp(input, '_locale')) {
3063            ret._locale = input._locale;
3064        }
3065
3066        return ret;
3067    }
3068
3069    createDuration.fn = Duration.prototype;
3070    createDuration.invalid = createInvalid$1;
3071
3072    function parseIso (inp, sign) {
3073        // We'd normally use ~~inp for this, but unfortunately it also
3074        // converts floats to ints.
3075        // inp may be undefined, so careful calling replace on it.
3076        var res = inp && parseFloat(inp.replace(',', '.'));
3077        // apply sign while we're at it
3078        return (isNaN(res) ? 0 : res) * sign;
3079    }
3080
3081    function positiveMomentsDifference(base, other) {
3082        var res = {milliseconds: 0, months: 0};
3083
3084        res.months = other.month() - base.month() +
3085            (other.year() - base.year()) * 12;
3086        if (base.clone().add(res.months, 'M').isAfter(other)) {
3087            --res.months;
3088        }
3089
3090        res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
3091
3092        return res;
3093    }
3094
3095    function momentsDifference(base, other) {
3096        var res;
3097        if (!(base.isValid() && other.isValid())) {
3098            return {milliseconds: 0, months: 0};
3099        }
3100
3101        other = cloneWithOffset(other, base);
3102        if (base.isBefore(other)) {
3103            res = positiveMomentsDifference(base, other);
3104        } else {
3105            res = positiveMomentsDifference(other, base);
3106            res.milliseconds = -res.milliseconds;
3107            res.months = -res.months;
3108        }
3109
3110        return res;
3111    }
3112
3113    // TODO: remove 'name' arg after deprecation is removed
3114    function createAdder(direction, name) {
3115        return function (val, period) {
3116            var dur, tmp;
3117            //invert the arguments, but complain about it
3118            if (period !== null && !isNaN(+period)) {
3119                deprecateSimple(name, 'moment().' + name  + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +
3120                'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');
3121                tmp = val; val = period; period = tmp;
3122            }
3123
3124            val = typeof val === 'string' ? +val : val;
3125            dur = createDuration(val, period);
3126            addSubtract(this, dur, direction);
3127            return this;
3128        };
3129    }
3130
3131    function addSubtract (mom, duration, isAdding, updateOffset) {
3132        var milliseconds = duration._milliseconds,
3133            days = absRound(duration._days),
3134            months = absRound(duration._months);
3135
3136        if (!mom.isValid()) {
3137            // No op
3138            return;
3139        }
3140
3141        updateOffset = updateOffset == null ? true : updateOffset;
3142
3143        if (months) {
3144            setMonth(mom, get(mom, 'Month') + months * isAdding);
3145        }
3146        if (days) {
3147            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
3148        }
3149        if (milliseconds) {
3150            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
3151        }
3152        if (updateOffset) {
3153            hooks.updateOffset(mom, days || months);
3154        }
3155    }
3156
3157    var add      = createAdder(1, 'add');
3158    var subtract = createAdder(-1, 'subtract');
3159
3160    function getCalendarFormat(myMoment, now) {
3161        var diff = myMoment.diff(now, 'days', true);
3162        return diff < -6 ? 'sameElse' :
3163                diff < -1 ? 'lastWeek' :
3164                diff < 0 ? 'lastDay' :
3165                diff < 1 ? 'sameDay' :
3166                diff < 2 ? 'nextDay' :
3167                diff < 7 ? 'nextWeek' : 'sameElse';
3168    }
3169
3170    function calendar$1 (time, formats) {
3171        // We want to compare the start of today, vs this.
3172        // Getting start-of-today depends on whether we're local/utc/offset or not.
3173        var now = time || createLocal(),
3174            sod = cloneWithOffset(now, this).startOf('day'),
3175            format = hooks.calendarFormat(this, sod) || 'sameElse';
3176
3177        var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);
3178
3179        return this.format(output || this.localeData().calendar(format, this, createLocal(now)));
3180    }
3181
3182    function clone () {
3183        return new Moment(this);
3184    }
3185
3186    function isAfter (input, units) {
3187        var localInput = isMoment(input) ? input : createLocal(input);
3188        if (!(this.isValid() && localInput.isValid())) {
3189            return false;
3190        }
3191        units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
3192        if (units === 'millisecond') {
3193            return this.valueOf() > localInput.valueOf();
3194        } else {
3195            return localInput.valueOf() < this.clone().startOf(units).valueOf();
3196        }
3197    }
3198
3199    function isBefore (input, units) {
3200        var localInput = isMoment(input) ? input : createLocal(input);
3201        if (!(this.isValid() && localInput.isValid())) {
3202            return false;
3203        }
3204        units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
3205        if (units === 'millisecond') {
3206            return this.valueOf() < localInput.valueOf();
3207        } else {
3208            return this.clone().endOf(units).valueOf() < localInput.valueOf();
3209        }
3210    }
3211
3212    function isBetween (from, to, units, inclusivity) {
3213        inclusivity = inclusivity || '()';
3214        return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&
3215            (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));
3216    }
3217
3218    function isSame (input, units) {
3219        var localInput = isMoment(input) ? input : createLocal(input),
3220            inputMs;
3221        if (!(this.isValid() && localInput.isValid())) {
3222            return false;
3223        }
3224        units = normalizeUnits(units || 'millisecond');
3225        if (units === 'millisecond') {
3226            return this.valueOf() === localInput.valueOf();
3227        } else {
3228            inputMs = localInput.valueOf();
3229            return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
3230        }
3231    }
3232
3233    function isSameOrAfter (input, units) {
3234        return this.isSame(input, units) || this.isAfter(input,units);
3235    }
3236
3237    function isSameOrBefore (input, units) {
3238        return this.isSame(input, units) || this.isBefore(input,units);
3239    }
3240
3241    function diff (input, units, asFloat) {
3242        var that,
3243            zoneDelta,
3244            output;
3245
3246        if (!this.isValid()) {
3247            return NaN;
3248        }
3249
3250        that = cloneWithOffset(input, this);
3251
3252        if (!that.isValid()) {
3253            return NaN;
3254        }
3255
3256        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
3257
3258        units = normalizeUnits(units);
3259
3260        switch (units) {
3261            case 'year': output = monthDiff(this, that) / 12; break;
3262            case 'month': output = monthDiff(this, that); break;
3263            case 'quarter': output = monthDiff(this, that) / 3; break;
3264            case 'second': output = (this - that) / 1e3; break; // 1000
3265            case 'minute': output = (this - that) / 6e4; break; // 1000 * 60
3266            case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60
3267            case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst
3268            case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst
3269            default: output = this - that;
3270        }
3271
3272        return asFloat ? output : absFloor(output);
3273    }
3274
3275    function monthDiff (a, b) {
3276        // difference in months
3277        var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
3278            // b is in (anchor - 1 month, anchor + 1 month)
3279            anchor = a.clone().add(wholeMonthDiff, 'months'),
3280            anchor2, adjust;
3281
3282        if (b - anchor < 0) {
3283            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
3284            // linear across the month
3285            adjust = (b - anchor) / (anchor - anchor2);
3286        } else {
3287            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
3288            // linear across the month
3289            adjust = (b - anchor) / (anchor2 - anchor);
3290        }
3291
3292        //check for negative zero, return zero if negative zero
3293        return -(wholeMonthDiff + adjust) || 0;
3294    }
3295
3296    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
3297    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
3298
3299    function toString () {
3300        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
3301    }
3302
3303    function toISOString(keepOffset) {
3304        if (!this.isValid()) {
3305            return null;
3306        }
3307        var utc = keepOffset !== true;
3308        var m = utc ? this.clone().utc() : this;
3309        if (m.year() < 0 || m.year() > 9999) {
3310            return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');
3311        }
3312        if (isFunction(Date.prototype.toISOString)) {
3313            // native implementation is ~50x faster, use it when we can
3314            if (utc) {
3315                return this.toDate().toISOString();
3316            } else {
3317                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));
3318            }
3319        }
3320        return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');
3321    }
3322
3323    /**
3324     * Return a human readable representation of a moment that can
3325     * also be evaluated to get a new moment which is the same
3326     *
3327     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
3328     */
3329    function inspect () {
3330        if (!this.isValid()) {
3331            return 'moment.invalid(/* ' + this._i + ' */)';
3332        }
3333        var func = 'moment';
3334        var zone = '';
3335        if (!this.isLocal()) {
3336            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
3337            zone = 'Z';
3338        }
3339        var prefix = '[' + func + '("]';
3340        var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';
3341        var datetime = '-MM-DD[T]HH:mm:ss.SSS';
3342        var suffix = zone + '[")]';
3343
3344        return this.format(prefix + year + datetime + suffix);
3345    }
3346
3347    function format (inputString) {
3348        if (!inputString) {
3349            inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;
3350        }
3351        var output = formatMoment(this, inputString);
3352        return this.localeData().postformat(output);
3353    }
3354
3355    function from (time, withoutSuffix) {
3356        if (this.isValid() &&
3357                ((isMoment(time) && time.isValid()) ||
3358                 createLocal(time).isValid())) {
3359            return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
3360        } else {
3361            return this.localeData().invalidDate();
3362        }
3363    }
3364
3365    function fromNow (withoutSuffix) {
3366        return this.from(createLocal(), withoutSuffix);
3367    }
3368
3369    function to (time, withoutSuffix) {
3370        if (this.isValid() &&
3371                ((isMoment(time) && time.isValid()) ||
3372                 createLocal(time).isValid())) {
3373            return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
3374        } else {
3375            return this.localeData().invalidDate();
3376        }
3377    }
3378
3379    function toNow (withoutSuffix) {
3380        return this.to(createLocal(), withoutSuffix);
3381    }
3382
3383    // If passed a locale key, it will set the locale for this
3384    // instance.  Otherwise, it will return the locale configuration
3385    // variables for this instance.
3386    function locale (key) {
3387        var newLocaleData;
3388
3389        if (key === undefined) {
3390            return this._locale._abbr;
3391        } else {
3392            newLocaleData = getLocale(key);
3393            if (newLocaleData != null) {
3394                this._locale = newLocaleData;
3395            }
3396            return this;
3397        }
3398    }
3399
3400    var lang = deprecate(
3401        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
3402        function (key) {
3403            if (key === undefined) {
3404                return this.localeData();
3405            } else {
3406                return this.locale(key);
3407            }
3408        }
3409    );
3410
3411    function localeData () {
3412        return this._locale;
3413    }
3414
3415    function startOf (units) {
3416        units = normalizeUnits(units);
3417        // the following switch intentionally omits break keywords
3418        // to utilize falling through the cases.
3419        switch (units) {
3420            case 'year':
3421                this.month(0);
3422                /* falls through */
3423            case 'quarter':
3424            case 'month':
3425                this.date(1);
3426                /* falls through */
3427            case 'week':
3428            case 'isoWeek':
3429            case 'day':
3430            case 'date':
3431                this.hours(0);
3432                /* falls through */
3433            case 'hour':
3434                this.minutes(0);
3435                /* falls through */
3436            case 'minute':
3437                this.seconds(0);
3438                /* falls through */
3439            case 'second':
3440                this.milliseconds(0);
3441        }
3442
3443        // weeks are a special case
3444        if (units === 'week') {
3445            this.weekday(0);
3446        }
3447        if (units === 'isoWeek') {
3448            this.isoWeekday(1);
3449        }
3450
3451        // quarters are also special
3452        if (units === 'quarter') {
3453            this.month(Math.floor(this.month() / 3) * 3);
3454        }
3455
3456        return this;
3457    }
3458
3459    function endOf (units) {
3460        units = normalizeUnits(units);
3461        if (units === undefined || units === 'millisecond') {
3462            return this;
3463        }
3464
3465        // 'date' is an alias for 'day', so it should be considered as such.
3466        if (units === 'date') {
3467            units = 'day';
3468        }
3469
3470        return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
3471    }
3472
3473    function valueOf () {
3474        return this._d.valueOf() - ((this._offset || 0) * 60000);
3475    }
3476
3477    function unix () {
3478        return Math.floor(this.valueOf() / 1000);
3479    }
3480
3481    function toDate () {
3482        return new Date(this.valueOf());
3483    }
3484
3485    function toArray () {
3486        var m = this;
3487        return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
3488    }
3489
3490    function toObject () {
3491        var m = this;
3492        return {
3493            years: m.year(),
3494            months: m.month(),
3495            date: m.date(),
3496            hours: m.hours(),
3497            minutes: m.minutes(),
3498            seconds: m.seconds(),
3499            milliseconds: m.milliseconds()
3500        };
3501    }
3502
3503    function toJSON () {
3504        // new Date(NaN).toJSON() === null
3505        return this.isValid() ? this.toISOString() : null;
3506    }
3507
3508    function isValid$2 () {
3509        return 
vendor: 1,856 bytes, lines 3509-3576
3509isValid(this);
3510    }
3511
3512    function parsingFlags () {
3513        return extend({}, getParsingFlags(this));
3514    }
3515
3516    function invalidAt () {
3517        return getParsingFlags(this).overflow;
3518    }
3519
3520    function creationData() {
3521        return {
3522            input: this._i,
3523            format: this._f,
3524            locale: this._locale,
3525            isUTC: this._isUTC,
3526            strict: this._strict
3527        };
3528    }
3529
3530    // FORMATTING
3531
3532    addFormatToken(0, ['gg', 2], 0, function () {
3533        return this.weekYear() % 100;
3534    });
3535
3536    addFormatToken(0, ['GG', 2], 0, function () {
3537        return this.isoWeekYear() % 100;
3538    });
3539
3540    function addWeekYearFormatToken (token, getter) {
3541        addFormatToken(0, [token, token.length], 0, getter);
3542    }
3543
3544    addWeekYearFormatToken('gggg',     'weekYear');
3545    addWeekYearFormatToken('ggggg',    'weekYear');
3546    addWeekYearFormatToken('GGGG',  'isoWeekYear');
3547    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
3548
3549    // ALIASES
3550
3551    addUnitAlias('weekYear', 'gg');
3552    addUnitAlias('isoWeekYear', 'GG');
3553
3554    // PRIORITY
3555
3556    addUnitPriority('weekYear', 1);
3557    addUnitPriority('isoWeekYear', 1);
3558
3559
3560    // PARSING
3561
3562    addRegexToken('G',      matchSigned);
3563    addRegexToken('g',      matchSigned);
3564    addRegexToken('GG',     match1to2, match2);
3565    addRegexToken('gg',     match1to2, match2);
3566    addRegexToken('GGGG',   match1to4, match4);
3567    addRegexToken('gggg',   match1to4, match4);
3568    addRegexToken('GGGGG',  match1to6, match6);
3569    addRegexToken('ggggg',  match1to6, match6);
3570
3571    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
3572        week[token.substr(0, 2)] = toInt(input);
3573    });
3574
3575    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
3576        week[token] = 
vendor: 1,815 bytes, lines 3576-3641
3576hooks.parseTwoDigitYear(input);
3577    });
3578
3579    // MOMENTS
3580
3581    function getSetWeekYear (input) {
3582        return getSetWeekYearHelper.call(this,
3583                input,
3584                this.week(),
3585                this.weekday(),
3586                this.localeData()._week.dow,
3587                this.localeData()._week.doy);
3588    }
3589
3590    function getSetISOWeekYear (input) {
3591        return getSetWeekYearHelper.call(this,
3592                input, this.isoWeek(), this.isoWeekday(), 1, 4);
3593    }
3594
3595    function getISOWeeksInYear () {
3596        return weeksInYear(this.year(), 1, 4);
3597    }
3598
3599    function getWeeksInYear () {
3600        var weekInfo = this.localeData()._week;
3601        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
3602    }
3603
3604    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
3605        var weeksTarget;
3606        if (input == null) {
3607            return weekOfYear(this, dow, doy).year;
3608        } else {
3609            weeksTarget = weeksInYear(input, dow, doy);
3610            if (week > weeksTarget) {
3611                week = weeksTarget;
3612            }
3613            return setWeekAll.call(this, input, week, weekday, dow, doy);
3614        }
3615    }
3616
3617    function setWeekAll(weekYear, week, weekday, dow, doy) {
3618        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
3619            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
3620
3621        this.year(date.getUTCFullYear());
3622        this.month(date.getUTCMonth());
3623        this.date(date.getUTCDate());
3624        return this;
3625    }
3626
3627    // FORMATTING
3628
3629    addFormatToken('Q', 0, 'Qo', 'quarter');
3630
3631    // ALIASES
3632
3633    addUnitAlias('quarter', 'Q');
3634
3635    // PRIORITY
3636
3637    addUnitPriority('quarter', 7);
3638
3639    // PARSING
3640
3641    addRegexToken('Q', match1);
vendor: 9,999 bytes, lines 3642-3956
3642    addParseToken('Q', function (input, array) {
3643        array[MONTH] = (toInt(input) - 1) * 3;
3644    });
3645
3646    // MOMENTS
3647
3648    function getSetQuarter (input) {
3649        return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
3650    }
3651
3652    // FORMATTING
3653
3654    addFormatToken('D', ['DD', 2], 'Do', 'date');
3655
3656    // ALIASES
3657
3658    addUnitAlias('date', 'D');
3659
3660    // PRIORITY
3661    addUnitPriority('date', 9);
3662
3663    // PARSING
3664
3665    addRegexToken('D',  match1to2);
3666    addRegexToken('DD', match1to2, match2);
3667    addRegexToken('Do', function (isStrict, locale) {
3668        // TODO: Remove "ordinalParse" fallback in next major release.
3669        return isStrict ?
3670          (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :
3671          locale._dayOfMonthOrdinalParseLenient;
3672    });
3673
3674    addParseToken(['D', 'DD'], DATE);
3675    addParseToken('Do', function (input, array) {
3676        array[DATE] = toInt(input.match(match1to2)[0]);
3677    });
3678
3679    // MOMENTS
3680
3681    var getSetDayOfMonth = makeGetSet('Date', true);
3682
3683    // FORMATTING
3684
3685    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
3686
3687    // ALIASES
3688
3689    addUnitAlias('dayOfYear', 'DDD');
3690
3691    // PRIORITY
3692    addUnitPriority('dayOfYear', 4);
3693
3694    // PARSING
3695
3696    addRegexToken('DDD',  match1to3);
3697    addRegexToken('DDDD', match3);
3698    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
3699        config._dayOfYear = toInt(input);
3700    });
3701
3702    // HELPERS
3703
3704    // MOMENTS
3705
3706    function getSetDayOfYear (input) {
3707        var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
3708        return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
3709    }
3710
3711    // FORMATTING
3712
3713    addFormatToken('m', ['mm', 2], 0, 'minute');
3714
3715    // ALIASES
3716
3717    addUnitAlias('minute', 'm');
3718
3719    // PRIORITY
3720
3721    addUnitPriority('minute', 14);
3722
3723    // PARSING
3724
3725    addRegexToken('m',  match1to2);
3726    addRegexToken('mm', match1to2, match2);
3727    addParseToken(['m', 'mm'], MINUTE);
3728
3729    // MOMENTS
3730
3731    var getSetMinute = makeGetSet('Minutes', false);
3732
3733    // FORMATTING
3734
3735    addFormatToken('s', ['ss', 2], 0, 'second');
3736
3737    // ALIASES
3738
3739    addUnitAlias('second', 's');
3740
3741    // PRIORITY
3742
3743    addUnitPriority('second', 15);
3744
3745    // PARSING
3746
3747    addRegexToken('s',  match1to2);
3748    addRegexToken('ss', match1to2, match2);
3749    addParseToken(['s', 'ss'], SECOND);
3750
3751    // MOMENTS
3752
3753    var getSetSecond = makeGetSet('Seconds', false);
3754
3755    // FORMATTING
3756
3757    addFormatToken('S', 0, 0, function () {
3758        return ~~(this.millisecond() / 100);
3759    });
3760
3761    addFormatToken(0, ['SS', 2], 0, function () {
3762        return ~~(this.millisecond() / 10);
3763    });
3764
3765    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
3766    addFormatToken(0, ['SSSS', 4], 0, function () {
3767        return this.millisecond() * 10;
3768    });
3769    addFormatToken(0, ['SSSSS', 5], 0, function () {
3770        return this.millisecond() * 100;
3771    });
3772    addFormatToken(0, ['SSSSSS', 6], 0, function () {
3773        return this.millisecond() * 1000;
3774    });
3775    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
3776        return this.millisecond() * 10000;
3777    });
3778    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
3779        return this.millisecond() * 100000;
3780    });
3781    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
3782        return this.millisecond() * 1000000;
3783    });
3784
3785
3786    // ALIASES
3787
3788    addUnitAlias('millisecond', 'ms');
3789
3790    // PRIORITY
3791
3792    addUnitPriority('millisecond', 16);
3793
3794    // PARSING
3795
3796    addRegexToken('S',    match1to3, match1);
3797    addRegexToken('SS',   match1to3, match2);
3798    addRegexToken('SSS',  match1to3, match3);
3799
3800    var token;
3801    for (token = 'SSSS'; token.length <= 9; token += 'S') {
3802        addRegexToken(token, matchUnsigned);
3803    }
3804
3805    function parseMs(input, array) {
3806        array[MILLISECOND] = toInt(('0.' + input) * 1000);
3807    }
3808
3809    for (token = 'S'; token.length <= 9; token += 'S') {
3810        addParseToken(token, parseMs);
3811    }
3812    // MOMENTS
3813
3814    var getSetMillisecond = makeGetSet('Milliseconds', false);
3815
3816    // FORMATTING
3817
3818    addFormatToken('z',  0, 0, 'zoneAbbr');
3819    addFormatToken('zz', 0, 0, 'zoneName');
3820
3821    // MOMENTS
3822
3823    function getZoneAbbr () {
3824        return this._isUTC ? 'UTC' : '';
3825    }
3826
3827    function getZoneName () {
3828        return this._isUTC ? 'Coordinated Universal Time' : '';
3829    }
3830
3831    var proto = Moment.prototype;
3832
3833    proto.add               = add;
3834    proto.calendar          = calendar$1;
3835    proto.clone             = clone;
3836    proto.diff              = diff;
3837    proto.endOf             = endOf;
3838    proto.format            = format;
3839    proto.from              = from;
3840    proto.fromNow           = fromNow;
3841    proto.to                = to;
3842    proto.toNow             = toNow;
3843    proto.get               = stringGet;
3844    proto.invalidAt         = invalidAt;
3845    proto.isAfter           = isAfter;
3846    proto.isBefore          = isBefore;
3847    proto.isBetween         = isBetween;
3848    proto.isSame            = isSame;
3849    proto.isSameOrAfter     = isSameOrAfter;
3850    proto.isSameOrBefore    = isSameOrBefore;
3851    proto.isValid           = isValid$2;
3852    proto.lang              = lang;
3853    proto.locale            = locale;
3854    proto.localeData        = localeData;
3855    proto.max               = prototypeMax;
3856    proto.min               = prototypeMin;
3857    proto.parsingFlags      = parsingFlags;
3858    proto.set               = stringSet;
3859    proto.startOf           = startOf;
3860    proto.subtract          = subtract;
3861    proto.toArray           = toArray;
3862    proto.toObject          = toObject;
3863    proto.toDate            = toDate;
3864    proto.toISOString       = toISOString;
3865    proto.inspect           = inspect;
3866    proto.toJSON            = toJSON;
3867    proto.toString          = toString;
3868    proto.unix              = unix;
3869    proto.valueOf           = valueOf;
3870    proto.creationData      = creationData;
3871    proto.year       = getSetYear;
3872    proto.isLeapYear = getIsLeapYear;
3873    proto.weekYear    = getSetWeekYear;
3874    proto.isoWeekYear = getSetISOWeekYear;
3875    proto.quarter = proto.quarters = getSetQuarter;
3876    proto.month       = getSetMonth;
3877    proto.daysInMonth = getDaysInMonth;
3878    proto.week           = proto.weeks        = getSetWeek;
3879    proto.isoWeek        = proto.isoWeeks     = getSetISOWeek;
3880    proto.weeksInYear    = getWeeksInYear;
3881    proto.isoWeeksInYear = getISOWeeksInYear;
3882    proto.date       = getSetDayOfMonth;
3883    proto.day        = proto.days             = getSetDayOfWeek;
3884    proto.weekday    = getSetLocaleDayOfWeek;
3885    proto.isoWeekday = getSetISODayOfWeek;
3886    proto.dayOfYear  = getSetDayOfYear;
3887    proto.hour = proto.hours = getSetHour;
3888    proto.minute = proto.minutes = getSetMinute;
3889    proto.second = proto.seconds = getSetSecond;
3890    proto.millisecond = proto.milliseconds = getSetMillisecond;
3891    proto.utcOffset            = getSetOffset;
3892    proto.utc                  = setOffsetToUTC;
3893    proto.local                = setOffsetToLocal;
3894    proto.parseZone            = setOffsetToParsedOffset;
3895    proto.hasAlignedHourOffset = hasAlignedHourOffset;
3896    proto.isDST                = isDaylightSavingTime;
3897    proto.isLocal              = isLocal;
3898    proto.isUtcOffset          = isUtcOffset;
3899    proto.isUtc                = isUtc;
3900    proto.isUTC                = isUtc;
3901    proto.zoneAbbr = getZoneAbbr;
3902    proto.zoneName = getZoneName;
3903    proto.dates  = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
3904    proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
3905    proto.years  = deprecate('years accessor is deprecated. Use year instead', getSetYear);
3906    proto.zone   = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);
3907    proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);
3908
3909    function createUnix (input) {
3910        return createLocal(input * 1000);
3911    }
3912
3913    function createInZone () {
3914        return createLocal.apply(null, arguments).parseZone();
3915    }
3916
3917    function preParsePostFormat (string) {
3918        return string;
3919    }
3920
3921    var proto$1 = Locale.prototype;
3922
3923    proto$1.calendar        = calendar;
3924    proto$1.longDateFormat  = longDateFormat;
3925    proto$1.invalidDate     = invalidDate;
3926    proto$1.ordinal         = ordinal;
3927    proto$1.preparse        = preParsePostFormat;
3928    proto$1.postformat      = preParsePostFormat;
3929    proto$1.relativeTime    = relativeTime;
3930    proto$1.pastFuture      = pastFuture;
3931    proto$1.set             = set;
3932
3933    proto$1.months            =        localeMonths;
3934    proto$1.monthsShort       =        localeMonthsShort;
3935    proto$1.monthsParse       =        localeMonthsParse;
3936    proto$1.monthsRegex       = monthsRegex;
3937    proto$1.monthsShortRegex  = monthsShortRegex;
3938    proto$1.week = localeWeek;
3939    proto$1.firstDayOfYear = localeFirstDayOfYear;
3940    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
3941
3942    proto$1.weekdays       =        localeWeekdays;
3943    proto$1.weekdaysMin    =        localeWeekdaysMin;
3944    proto$1.weekdaysShort  =        localeWeekdaysShort;
3945    proto$1.weekdaysParse  =        localeWeekdaysParse;
3946
3947    proto$1.weekdaysRegex       =        weekdaysRegex;
3948    proto$1.weekdaysShortRegex  =        weekdaysShortRegex;
3949    proto$1.weekdaysMinRegex    =        weekdaysMinRegex;
3950
3951    proto$1.isPM = localeIsPM;
3952    proto$1.meridiem = localeMeridiem;
3953
3954    function get$1 (format, index, field, setter) {
3955        var locale = getLocale();
3956        var utc = createUTC().set(setter, index);
vendor: 9,919 bytes, lines 3957-4267
3957        return locale[field](utc, format);
3958    }
3959
3960    function listMonthsImpl (format, index, field) {
3961        if (isNumber(format)) {
3962            index = format;
3963            format = undefined;
3964        }
3965
3966        format = format || '';
3967
3968        if (index != null) {
3969            return get$1(format, index, field, 'month');
3970        }
3971
3972        var i;
3973        var out = [];
3974        for (i = 0; i < 12; i++) {
3975            out[i] = get$1(format, i, field, 'month');
3976        }
3977        return out;
3978    }
3979
3980    // ()
3981    // (5)
3982    // (fmt, 5)
3983    // (fmt)
3984    // (true)
3985    // (true, 5)
3986    // (true, fmt, 5)
3987    // (true, fmt)
3988    function listWeekdaysImpl (localeSorted, format, index, field) {
3989        if (typeof localeSorted === 'boolean') {
3990            if (isNumber(format)) {
3991                index = format;
3992                format = undefined;
3993            }
3994
3995            format = format || '';
3996        } else {
3997            format = localeSorted;
3998            index = format;
3999            localeSorted = false;
4000
4001            if (isNumber(format)) {
4002                index = format;
4003                format = undefined;
4004            }
4005
4006            format = format || '';
4007        }
4008
4009        var locale = getLocale(),
4010            shift = localeSorted ? locale._week.dow : 0;
4011
4012        if (index != null) {
4013            return get$1(format, (index + shift) % 7, field, 'day');
4014        }
4015
4016        var i;
4017        var out = [];
4018        for (i = 0; i < 7; i++) {
4019            out[i] = get$1(format, (i + shift) % 7, field, 'day');
4020        }
4021        return out;
4022    }
4023
4024    function listMonths (format, index) {
4025        return listMonthsImpl(format, index, 'months');
4026    }
4027
4028    function listMonthsShort (format, index) {
4029        return listMonthsImpl(format, index, 'monthsShort');
4030    }
4031
4032    function listWeekdays (localeSorted, format, index) {
4033        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
4034    }
4035
4036    function listWeekdaysShort (localeSorted, format, index) {
4037        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
4038    }
4039
4040    function listWeekdaysMin (localeSorted, format, index) {
4041        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
4042    }
4043
4044    getSetGlobalLocale('en', {
4045        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
4046        ordinal : function (number) {
4047            var b = number % 10,
4048                output = (toInt(number % 100 / 10) === 1) ? 'th' :
4049                (b === 1) ? 'st' :
4050                (b === 2) ? 'nd' :
4051                (b === 3) ? 'rd' : 'th';
4052            return number + output;
4053        }
4054    });
4055
4056    // Side effect imports
4057
4058    hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);
4059    hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);
4060
4061    var mathAbs = Math.abs;
4062
4063    function abs () {
4064        var data           = this._data;
4065
4066        this._milliseconds = mathAbs(this._milliseconds);
4067        this._days         = mathAbs(this._days);
4068        this._months       = mathAbs(this._months);
4069
4070        data.milliseconds  = mathAbs(data.milliseconds);
4071        data.seconds       = mathAbs(data.seconds);
4072        data.minutes       = mathAbs(data.minutes);
4073        data.hours         = mathAbs(data.hours);
4074        data.months        = mathAbs(data.months);
4075        data.years         = mathAbs(data.years);
4076
4077        return this;
4078    }
4079
4080    function addSubtract$1 (duration, input, value, direction) {
4081        var other = createDuration(input, value);
4082
4083        duration._milliseconds += direction * other._milliseconds;
4084        duration._days         += direction * other._days;
4085        duration._months       += direction * other._months;
4086
4087        return duration._bubble();
4088    }
4089
4090    // supports only 2.0-style add(1, 's') or add(duration)
4091    function add$1 (input, value) {
4092        return addSubtract$1(this, input, value, 1);
4093    }
4094
4095    // supports only 2.0-style subtract(1, 's') or subtract(duration)
4096    function subtract$1 (input, value) {
4097        return addSubtract$1(this, input, value, -1);
4098    }
4099
4100    function absCeil (number) {
4101        if (number < 0) {
4102            return Math.floor(number);
4103        } else {
4104            return Math.ceil(number);
4105        }
4106    }
4107
4108    function bubble () {
4109        var milliseconds = this._milliseconds;
4110        var days         = this._days;
4111        var months       = this._months;
4112        var data         = this._data;
4113        var seconds, minutes, hours, years, monthsFromDays;
4114
4115        // if we have a mix of positive and negative values, bubble down first
4116        // check: https://github.com/moment/moment/issues/2166
4117        if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
4118                (milliseconds <= 0 && days <= 0 && months <= 0))) {
4119            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
4120            days = 0;
4121            months = 0;
4122        }
4123
4124        // The following code bubbles up values, see the tests for
4125        // examples of what that means.
4126        data.milliseconds = milliseconds % 1000;
4127
4128        seconds           = absFloor(milliseconds / 1000);
4129        data.seconds      = seconds % 60;
4130
4131        minutes           = absFloor(seconds / 60);
4132        data.minutes      = minutes % 60;
4133
4134        hours             = absFloor(minutes / 60);
4135        data.hours        = hours % 24;
4136
4137        days += absFloor(hours / 24);
4138
4139        // convert days to months
4140        monthsFromDays = absFloor(daysToMonths(days));
4141        months += monthsFromDays;
4142        days -= absCeil(monthsToDays(monthsFromDays));
4143
4144        // 12 months -> 1 year
4145        years = absFloor(months / 12);
4146        months %= 12;
4147
4148        data.days   = days;
4149        data.months = months;
4150        data.years  = years;
4151
4152        return this;
4153    }
4154
4155    function daysToMonths (days) {
4156        // 400 years have 146097 days (taking into account leap year rules)
4157        // 400 years have 12 months === 4800
4158        return days * 4800 / 146097;
4159    }
4160
4161    function monthsToDays (months) {
4162        // the reverse of daysToMonths
4163        return months * 146097 / 4800;
4164    }
4165
4166    function as (units) {
4167        if (!this.isValid()) {
4168            return NaN;
4169        }
4170        var days;
4171        var months;
4172        var milliseconds = this._milliseconds;
4173
4174        units = normalizeUnits(units);
4175
4176        if (units === 'month' || units === 'year') {
4177            days   = this._days   + milliseconds / 864e5;
4178            months = this._months + daysToMonths(days);
4179            return units === 'month' ? months : months / 12;
4180        } else {
4181            // handle milliseconds separately because of floating point math errors (issue #1867)
4182            days = this._days + Math.round(monthsToDays(this._months));
4183            switch (units) {
4184                case 'week'   : return days / 7     + milliseconds / 6048e5;
4185                case 'day'    : return days         + milliseconds / 864e5;
4186                case 'hour'   : return days * 24    + milliseconds / 36e5;
4187                case 'minute' : return days * 1440  + milliseconds / 6e4;
4188                case 'second' : return days * 86400 + milliseconds / 1000;
4189                // Math.floor prevents floating point math errors here
4190                case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
4191                default: throw new Error('Unknown unit ' + units);
4192            }
4193        }
4194    }
4195
4196    // TODO: Use this.as('ms')?
4197    function valueOf$1 () {
4198        if (!this.isValid()) {
4199            return NaN;
4200        }
4201        return (
4202            this._milliseconds +
4203            this._days * 864e5 +
4204            (this._months % 12) * 2592e6 +
4205            toInt(this._months / 12) * 31536e6
4206        );
4207    }
4208
4209    function makeAs (alias) {
4210        return function () {
4211            return this.as(alias);
4212        };
4213    }
4214
4215    var asMilliseconds = makeAs('ms');
4216    var asSeconds      = makeAs('s');
4217    var asMinutes      = makeAs('m');
4218    var asHours        = makeAs('h');
4219    var asDays         = makeAs('d');
4220    var asWeeks        = makeAs('w');
4221    var asMonths       = makeAs('M');
4222    var asYears        = makeAs('y');
4223
4224    function clone$1 () {
4225        return createDuration(this);
4226    }
4227
4228    function get$2 (units) {
4229        units = normalizeUnits(units);
4230        return this.isValid() ? this[units + 's']() : NaN;
4231    }
4232
4233    function makeGetter(name) {
4234        return function () {
4235            return this.isValid() ? this._data[name] : NaN;
4236        };
4237    }
4238
4239    var milliseconds = makeGetter('milliseconds');
4240    var seconds      = makeGetter('seconds');
4241    var minutes      = makeGetter('minutes');
4242    var hours        = makeGetter('hours');
4243    var days         = makeGetter('days');
4244    var months       = makeGetter('months');
4245    var years        = makeGetter('years');
4246
4247    function weeks () {
4248        return absFloor(this.days() / 7);
4249    }
4250
4251    var round = Math.round;
4252    var thresholds = {
4253        ss: 44,         // a few seconds to seconds
4254        s : 45,         // seconds to minute
4255        m : 45,         // minutes to hour
4256        h : 22,         // hours to day
4257        d : 26,         // days to month
4258        M : 11          // months to year
4259    };
4260
4261    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
4262    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
4263        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
4264    }
4265
4266    function relativeTime$1 (posNegDuration, withoutSuffix, locale) {
4267        var duration = createDuration(posNegDuration).abs();
vendor: 6,355 bytes, lines 4268-4445
4268        var seconds  = round(duration.as('s'));
4269        var minutes  = round(duration.as('m'));
4270        var hours    = round(duration.as('h'));
4271        var days     = round(duration.as('d'));
4272        var months   = round(duration.as('M'));
4273        var years    = round(duration.as('y'));
4274
4275        var a = seconds <= thresholds.ss && ['s', seconds]  ||
4276                seconds < thresholds.s   && ['ss', seconds] ||
4277                minutes <= 1             && ['m']           ||
4278                minutes < thresholds.m   && ['mm', minutes] ||
4279                hours   <= 1             && ['h']           ||
4280                hours   < thresholds.h   && ['hh', hours]   ||
4281                days    <= 1             && ['d']           ||
4282                days    < thresholds.d   && ['dd', days]    ||
4283                months  <= 1             && ['M']           ||
4284                months  < thresholds.M   && ['MM', months]  ||
4285                years   <= 1             && ['y']           || ['yy', years];
4286
4287        a[2] = withoutSuffix;
4288        a[3] = +posNegDuration > 0;
4289        a[4] = locale;
4290        return substituteTimeAgo.apply(null, a);
4291    }
4292
4293    // This function allows you to set the rounding function for relative time strings
4294    function getSetRelativeTimeRounding (roundingFunction) {
4295        if (roundingFunction === undefined) {
4296            return round;
4297        }
4298        if (typeof(roundingFunction) === 'function') {
4299            round = roundingFunction;
4300            return true;
4301        }
4302        return false;
4303    }
4304
4305    // This function allows you to set a threshold for relative time strings
4306    function getSetRelativeTimeThreshold (threshold, limit) {
4307        if (thresholds[threshold] === undefined) {
4308            return false;
4309        }
4310        if (limit === undefined) {
4311            return thresholds[threshold];
4312        }
4313        thresholds[threshold] = limit;
4314        if (threshold === 's') {
4315            thresholds.ss = limit - 1;
4316        }
4317        return true;
4318    }
4319
4320    function humanize (withSuffix) {
4321        if (!this.isValid()) {
4322            return this.localeData().invalidDate();
4323        }
4324
4325        var locale = this.localeData();
4326        var output = relativeTime$1(this, !withSuffix, locale);
4327
4328        if (withSuffix) {
4329            output = locale.pastFuture(+this, output);
4330        }
4331
4332        return locale.postformat(output);
4333    }
4334
4335    var abs$1 = Math.abs;
4336
4337    function sign(x) {
4338        return ((x > 0) - (x < 0)) || +x;
4339    }
4340
4341    function toISOString$1() {
4342        // for ISO strings we do not use the normal bubbling rules:
4343        //  * milliseconds bubble up until they become hours
4344        //  * days do not bubble at all
4345        //  * months bubble up until they become years
4346        // This is because there is no context-free conversion between hours and days
4347        // (think of clock changes)
4348        // and also not between days and months (28-31 days per month)
4349        if (!this.isValid()) {
4350            return this.localeData().invalidDate();
4351        }
4352
4353        var seconds = abs$1(this._milliseconds) / 1000;
4354        var days         = abs$1(this._days);
4355        var months       = abs$1(this._months);
4356        var minutes, hours, years;
4357
4358        // 3600 seconds -> 60 minutes -> 1 hour
4359        minutes           = absFloor(seconds / 60);
4360        hours             = absFloor(minutes / 60);
4361        seconds %= 60;
4362        minutes %= 60;
4363
4364        // 12 months -> 1 year
4365        years  = absFloor(months / 12);
4366        months %= 12;
4367
4368
4369        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
4370        var Y = years;
4371        var M = months;
4372        var D = days;
4373        var h = hours;
4374        var m = minutes;
4375        var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
4376        var total = this.asSeconds();
4377
4378        if (!total) {
4379            // this is the same as C#'s (Noda) and python (isodate)...
4380            // but not other JS (goog.date)
4381            return 'P0D';
4382        }
4383
4384        var totalSign = total < 0 ? '-' : '';
4385        var ymSign = sign(this._months) !== sign(total) ? '-' : '';
4386        var daysSign = sign(this._days) !== sign(total) ? '-' : '';
4387        var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
4388
4389        return totalSign + 'P' +
4390            (Y ? ymSign + Y + 'Y' : '') +
4391            (M ? ymSign + M + 'M' : '') +
4392            (D ? daysSign + D + 'D' : '') +
4393            ((h || m || s) ? 'T' : '') +
4394            (h ? hmsSign + h + 'H' : '') +
4395            (m ? hmsSign + m + 'M' : '') +
4396            (s ? hmsSign + s + 'S' : '');
4397    }
4398
4399    var proto$2 = Duration.prototype;
4400
4401    proto$2.isValid        = isValid$1;
4402    proto$2.abs            = abs;
4403    proto$2.add            = add$1;
4404    proto$2.subtract       = subtract$1;
4405    proto$2.as             = as;
4406    proto$2.asMilliseconds = asMilliseconds;
4407    proto$2.asSeconds      = asSeconds;
4408    proto$2.asMinutes      = asMinutes;
4409    proto$2.asHours        = asHours;
4410    proto$2.asDays         = asDays;
4411    proto$2.asWeeks        = asWeeks;
4412    proto$2.asMonths       = asMonths;
4413    proto$2.asYears        = asYears;
4414    proto$2.valueOf        = valueOf$1;
4415    proto$2._bubble        = bubble;
4416    proto$2.clone          = clone$1;
4417    proto$2.get            = get$2;
4418    proto$2.milliseconds   = milliseconds;
4419    proto$2.seconds        = seconds;
4420    proto$2.minutes        = minutes;
4421    proto$2.hours          = hours;
4422    proto$2.days           = days;
4423    proto$2.weeks          = weeks;
4424    proto$2.months         = months;
4425    proto$2.years          = years;
4426    proto$2.humanize       = humanize;
4427    proto$2.toISOString    = toISOString$1;
4428    proto$2.toString       = toISOString$1;
4429    proto$2.toJSON         = toISOString$1;
4430    proto$2.locale         = locale;
4431    proto$2.localeData     = localeData;
4432
4433    proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);
4434    proto$2.lang = lang;
4435
4436    // Side effect imports
4437
4438    // FORMATTING
4439
4440    addFormatToken('X', 0, 0, 'unix');
4441    addFormatToken('x', 0, 0, 'valueOf');
4442
4443    // PARSING
4444
4445    addRegexToken('x', matchSigned);
vendor: 29,348 bytes, lines 4446-5191
4446    addRegexToken('X', matchTimestamp);
4447    addParseToken('X', function (input, array, config) {
4448        config._d = new Date(parseFloat(input, 10) * 1000);
4449    });
4450    addParseToken('x', function (input, array, config) {
4451        config._d = new Date(toInt(input));
4452    });
4453
4454    // Side effect imports
4455
4456    //! moment.js
4457
4458    hooks.version = '2.22.2';
4459
4460    setHookCallback(createLocal);
4461
4462    hooks.fn                    = proto;
4463    hooks.min                   = min;
4464    hooks.max                   = max;
4465    hooks.now                   = now;
4466    hooks.utc                   = createUTC;
4467    hooks.unix                  = createUnix;
4468    hooks.months                = listMonths;
4469    hooks.isDate                = isDate;
4470    hooks.locale                = getSetGlobalLocale;
4471    hooks.invalid               = createInvalid;
4472    hooks.duration              = createDuration;
4473    hooks.isMoment              = isMoment;
4474    hooks.weekdays              = listWeekdays;
4475    hooks.parseZone             = createInZone;
4476    hooks.localeData            = getLocale;
4477    hooks.isDuration            = isDuration;
4478    hooks.monthsShort           = listMonthsShort;
4479    hooks.weekdaysMin           = listWeekdaysMin;
4480    hooks.defineLocale          = defineLocale;
4481    hooks.updateLocale          = updateLocale;
4482    hooks.locales               = listLocales;
4483    hooks.weekdaysShort         = listWeekdaysShort;
4484    hooks.normalizeUnits        = normalizeUnits;
4485    hooks.relativeTimeRounding  = getSetRelativeTimeRounding;
4486    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
4487    hooks.calendarFormat        = getCalendarFormat;
4488    hooks.prototype             = proto;
4489
4490    // currently HTML5 input type only supports 24-hour formats
4491    hooks.HTML5_FMT = {
4492        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',             // <input type="datetime-local" />
4493        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',  // <input type="datetime-local" step="1" />
4494        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',   // <input type="datetime-local" step="0.001" />
4495        DATE: 'YYYY-MM-DD',                             // <input type="date" />
4496        TIME: 'HH:mm',                                  // <input type="time" />
4497        TIME_SECONDS: 'HH:mm:ss',                       // <input type="time" step="1" />
4498        TIME_MS: 'HH:mm:ss.SSS',                        // <input type="time" step="0.001" />
4499        WEEK: 'YYYY-[W]WW',                             // <input type="week" />
4500        MONTH: 'YYYY-MM'                                // <input type="month" />
4501    };
4502
4503    //! moment.js locale configuration
4504
4505    hooks.defineLocale('af', {
4506        months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
4507        monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
4508        weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
4509        weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
4510        weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
4511        meridiemParse: /vm|nm/i,
4512        isPM : function (input) {
4513            return /^nm$/i.test(input);
4514        },
4515        meridiem : function (hours, minutes, isLower) {
4516            if (hours < 12) {
4517                return isLower ? 'vm' : 'VM';
4518            } else {
4519                return isLower ? 'nm' : 'NM';
4520            }
4521        },
4522        longDateFormat : {
4523            LT : 'HH:mm',
4524            LTS : 'HH:mm:ss',
4525            L : 'DD/MM/YYYY',
4526            LL : 'D MMMM YYYY',
4527            LLL : 'D MMMM YYYY HH:mm',
4528            LLLL : 'dddd, D MMMM YYYY HH:mm'
4529        },
4530        calendar : {
4531            sameDay : '[Vandag om] LT',
4532            nextDay : '[Môre om] LT',
4533            nextWeek : 'dddd [om] LT',
4534            lastDay : '[Gister om] LT',
4535            lastWeek : '[Laas] dddd [om] LT',
4536            sameElse : 'L'
4537        },
4538        relativeTime : {
4539            future : 'oor %s',
4540            past : '%s gelede',
4541            s : '\'n paar sekondes',
4542            ss : '%d sekondes',
4543            m : '\'n minuut',
4544            mm : '%d minute',
4545            h : '\'n uur',
4546            hh : '%d ure',
4547            d : '\'n dag',
4548            dd : '%d dae',
4549            M : '\'n maand',
4550            MM : '%d maande',
4551            y : '\'n jaar',
4552            yy : '%d jaar'
4553        },
4554        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
4555        ordinal : function (number) {
4556            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
4557        },
4558        week : {
4559            dow : 1, // Maandag is die eerste dag van die week.
4560            doy : 4  // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
4561        }
4562    });
4563
4564    //! moment.js locale configuration
4565
4566    hooks.defineLocale('ar-dz', {
4567        months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4568        monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4569        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4570        weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4571        weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),
4572        weekdaysParseExact : true,
4573        longDateFormat : {
4574            LT : 'HH:mm',
4575            LTS : 'HH:mm:ss',
4576            L : 'DD/MM/YYYY',
4577            LL : 'D MMMM YYYY',
4578            LLL : 'D MMMM YYYY HH:mm',
4579            LLLL : 'dddd D MMMM YYYY HH:mm'
4580        },
4581        calendar : {
4582            sameDay: '[اليوم على الساعة] LT',
4583            nextDay: '[غدا على الساعة] LT',
4584            nextWeek: 'dddd [على الساعة] LT',
4585            lastDay: '[أمس على الساعة] LT',
4586            lastWeek: 'dddd [على الساعة] LT',
4587            sameElse: 'L'
4588        },
4589        relativeTime : {
4590            future : 'في %s',
4591            past : 'منذ %s',
4592            s : 'ثوان',
4593            ss : '%d ثانية',
4594            m : 'دقيقة',
4595            mm : '%d دقائق',
4596            h : 'ساعة',
4597            hh : '%d ساعات',
4598            d : 'يوم',
4599            dd : '%d أيام',
4600            M : 'شهر',
4601            MM : '%d أشهر',
4602            y : 'سنة',
4603            yy : '%d سنوات'
4604        },
4605        week : {
4606            dow : 0, // Sunday is the first day of the week.
4607            doy : 4  // The week that contains Jan 1st is the first week of the year.
4608        }
4609    });
4610
4611    //! moment.js locale configuration
4612
4613    hooks.defineLocale('ar-kw', {
4614        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4615        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4616        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4617        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4618        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4619        weekdaysParseExact : true,
4620        longDateFormat : {
4621            LT : 'HH:mm',
4622            LTS : 'HH:mm:ss',
4623            L : 'DD/MM/YYYY',
4624            LL : 'D MMMM YYYY',
4625            LLL : 'D MMMM YYYY HH:mm',
4626            LLLL : 'dddd D MMMM YYYY HH:mm'
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            ss : '%d ثانية',
4641            m : 'دقيقة',
4642            mm : '%d دقائق',
4643            h : 'ساعة',
4644            hh : '%d ساعات',
4645            d : 'يوم',
4646            dd : '%d أيام',
4647            M : 'شهر',
4648            MM : '%d أشهر',
4649            y : 'سنة',
4650            yy : '%d سنوات'
4651        },
4652        week : {
4653            dow : 0, // Sunday is the first day of the week.
4654            doy : 12  // The week that contains Jan 1st is the first week of the year.
4655        }
4656    });
4657
4658    //! moment.js locale configuration
4659
4660    var symbolMap = {
4661        '1': '1',
4662        '2': '2',
4663        '3': '3',
4664        '4': '4',
4665        '5': '5',
4666        '6': '6',
4667        '7': '7',
4668        '8': '8',
4669        '9': '9',
4670        '0': '0'
4671    }, pluralForm = function (n) {
4672        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
4673    }, plurals = {
4674        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
4675        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
4676        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
4677        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
4678        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
4679        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
4680    }, pluralize = function (u) {
4681        return function (number, withoutSuffix, string, isFuture) {
4682            var f = pluralForm(number),
4683                str = plurals[u][pluralForm(number)];
4684            if (f === 2) {
4685                str = str[withoutSuffix ? 0 : 1];
4686            }
4687            return str.replace(/%d/i, number);
4688        };
4689    }, months$1 = [
4690        'يناير',
4691        'فبراير',
4692        'مارس',
4693        'أبريل',
4694        'مايو',
4695        'يونيو',
4696        'يوليو',
4697        'أغسطس',
4698        'سبتمبر',
4699        'أكتوبر',
4700        'نوفمبر',
4701        'ديسمبر'
4702    ];
4703
4704    hooks.defineLocale('ar-ly', {
4705        months : months$1,
4706        monthsShort : months$1,
4707        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4708        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4709        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4710        weekdaysParseExact : true,
4711        longDateFormat : {
4712            LT : 'HH:mm',
4713            LTS : 'HH:mm:ss',
4714            L : 'D/\u200FM/\u200FYYYY',
4715            LL : 'D MMMM YYYY',
4716            LLL : 'D MMMM YYYY HH:mm',
4717            LLLL : 'dddd D MMMM YYYY HH:mm'
4718        },
4719        meridiemParse: /ص|م/,
4720        isPM : function (input) {
4721            return 'م' === input;
4722        },
4723        meridiem : function (hour, minute, isLower) {
4724            if (hour < 12) {
4725                return 'ص';
4726            } else {
4727                return 'م';
4728            }
4729        },
4730        calendar : {
4731            sameDay: '[اليوم عند الساعة] LT',
4732            nextDay: '[غدًا عند الساعة] LT',
4733            nextWeek: 'dddd [عند الساعة] LT',
4734            lastDay: '[أمس عند الساعة] LT',
4735            lastWeek: 'dddd [عند الساعة] LT',
4736            sameElse: 'L'
4737        },
4738        relativeTime : {
4739            future : 'بعد %s',
4740            past : 'منذ %s',
4741            s : pluralize('s'),
4742            ss : pluralize('s'),
4743            m : pluralize('m'),
4744            mm : pluralize('m'),
4745            h : pluralize('h'),
4746            hh : pluralize('h'),
4747            d : pluralize('d'),
4748            dd : pluralize('d'),
4749            M : pluralize('M'),
4750            MM : pluralize('M'),
4751            y : pluralize('y'),
4752            yy : pluralize('y')
4753        },
4754        preparse: function (string) {
4755            return string.replace(/،/g, ',');
4756        },
4757        postformat: function (string) {
4758            return string.replace(/\d/g, function (match) {
4759                return symbolMap[match];
4760            }).replace(/,/g, '،');
4761        },
4762        week : {
4763            dow : 6, // Saturday is the first day of the week.
4764            doy : 12  // The week that contains Jan 1st is the first week of the year.
4765        }
4766    });
4767
4768    //! moment.js locale configuration
4769
4770    hooks.defineLocale('ar-ma', {
4771        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4772        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4773        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4774        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4775        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4776        weekdaysParseExact : true,
4777        longDateFormat : {
4778            LT : 'HH:mm',
4779            LTS : 'HH:mm:ss',
4780            L : 'DD/MM/YYYY',
4781            LL : 'D MMMM YYYY',
4782            LLL : 'D MMMM YYYY HH:mm',
4783            LLLL : 'dddd D MMMM YYYY HH:mm'
4784        },
4785        calendar : {
4786            sameDay: '[اليوم على الساعة] LT',
4787            nextDay: '[غدا على الساعة] LT',
4788            nextWeek: 'dddd [على الساعة] LT',
4789            lastDay: '[أمس على الساعة] LT',
4790            lastWeek: 'dddd [على الساعة] LT',
4791            sameElse: 'L'
4792        },
4793        relativeTime : {
4794            future : 'في %s',
4795            past : 'منذ %s',
4796            s : 'ثوان',
4797            ss : '%d ثانية',
4798            m : 'دقيقة',
4799            mm : '%d دقائق',
4800            h : 'ساعة',
4801            hh : '%d ساعات',
4802            d : 'يوم',
4803            dd : '%d أيام',
4804            M : 'شهر',
4805            MM : '%d أشهر',
4806            y : 'سنة',
4807            yy : '%d سنوات'
4808        },
4809        week : {
4810            dow : 6, // Saturday is the first day of the week.
4811            doy : 12  // The week that contains Jan 1st is the first week of the year.
4812        }
4813    });
4814
4815    //! moment.js locale configuration
4816
4817    var symbolMap$1 = {
4818        '1': 'Ù¡',
4819        '2': 'Ù¢',
4820        '3': 'Ù£',
4821        '4': 'Ù¤',
4822        '5': 'Ù¥',
4823        '6': 'Ù¦',
4824        '7': 'Ù§',
4825        '8': 'Ù¨',
4826        '9': 'Ù©',
4827        '0': 'Ù '
4828    }, numberMap = {
4829        'Ù¡': '1',
4830        'Ù¢': '2',
4831        'Ù£': '3',
4832        'Ù¤': '4',
4833        'Ù¥': '5',
4834        'Ù¦': '6',
4835        'Ù§': '7',
4836        'Ù¨': '8',
4837        'Ù©': '9',
4838        'Ù ': '0'
4839    };
4840
4841    hooks.defineLocale('ar-sa', {
4842        months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4843        monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4844        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4845        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4846        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4847        weekdaysParseExact : true,
4848        longDateFormat : {
4849            LT : 'HH:mm',
4850            LTS : 'HH:mm:ss',
4851            L : 'DD/MM/YYYY',
4852            LL : 'D MMMM YYYY',
4853            LLL : 'D MMMM YYYY HH:mm',
4854            LLLL : 'dddd D MMMM YYYY HH:mm'
4855        },
4856        meridiemParse: /ص|م/,
4857        isPM : function (input) {
4858            return 'م' === input;
4859        },
4860        meridiem : function (hour, minute, isLower) {
4861            if (hour < 12) {
4862                return 'ص';
4863            } else {
4864                return 'م';
4865            }
4866        },
4867        calendar : {
4868            sameDay: '[اليوم على الساعة] LT',
4869            nextDay: '[غدا على الساعة] LT',
4870            nextWeek: 'dddd [على الساعة] LT',
4871            lastDay: '[أمس على الساعة] LT',
4872            lastWeek: 'dddd [على الساعة] LT',
4873            sameElse: 'L'
4874        },
4875        relativeTime : {
4876            future : 'في %s',
4877            past : 'منذ %s',
4878            s : 'ثوان',
4879            ss : '%d ثانية',
4880            m : 'دقيقة',
4881            mm : '%d دقائق',
4882            h : 'ساعة',
4883            hh : '%d ساعات',
4884            d : 'يوم',
4885            dd : '%d أيام',
4886            M : 'شهر',
4887            MM : '%d أشهر',
4888            y : 'سنة',
4889            yy : '%d سنوات'
4890        },
4891        preparse: function (string) {
4892            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
4893                return numberMap[match];
4894            }).replace(/،/g, ',');
4895        },
4896        postformat: function (string) {
4897            return string.replace(/\d/g, function (match) {
4898                return symbolMap$1[match];
4899            }).replace(/,/g, '،');
4900        },
4901        week : {
4902            dow : 0, // Sunday is the first day of the week.
4903            doy : 6  // The week that contains Jan 1st is the first week of the year.
4904        }
4905    });
4906
4907    //! moment.js locale configuration
4908
4909    hooks.defineLocale('ar-tn', {
4910        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4911        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4912        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4913        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4914        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4915        weekdaysParseExact : true,
4916        longDateFormat: {
4917            LT: 'HH:mm',
4918            LTS: 'HH:mm:ss',
4919            L: 'DD/MM/YYYY',
4920            LL: 'D MMMM YYYY',
4921            LLL: 'D MMMM YYYY HH:mm',
4922            LLLL: 'dddd D MMMM YYYY HH:mm'
4923        },
4924        calendar: {
4925            sameDay: '[اليوم على الساعة] LT',
4926            nextDay: '[غدا على الساعة] LT',
4927            nextWeek: 'dddd [على الساعة] LT',
4928            lastDay: '[أمس على الساعة] LT',
4929            lastWeek: 'dddd [على الساعة] LT',
4930            sameElse: 'L'
4931        },
4932        relativeTime: {
4933            future: 'في %s',
4934            past: 'منذ %s',
4935            s: 'ثوان',
4936            ss : '%d ثانية',
4937            m: 'دقيقة',
4938            mm: '%d دقائق',
4939            h: 'ساعة',
4940            hh: '%d ساعات',
4941            d: 'يوم',
4942            dd: '%d أيام',
4943            M: 'شهر',
4944            MM: '%d أشهر',
4945            y: 'سنة',
4946            yy: '%d سنوات'
4947        },
4948        week: {
4949            dow: 1, // Monday is the first day of the week.
4950            doy: 4 // The week that contains Jan 4th is the first week of the year.
4951        }
4952    });
4953
4954    //! moment.js locale configuration
4955
4956    var symbolMap$2 = {
4957        '1': 'Ù¡',
4958        '2': 'Ù¢',
4959        '3': 'Ù£',
4960        '4': 'Ù¤',
4961        '5': 'Ù¥',
4962        '6': 'Ù¦',
4963        '7': 'Ù§',
4964        '8': 'Ù¨',
4965        '9': 'Ù©',
4966        '0': 'Ù '
4967    }, numberMap$1 = {
4968        'Ù¡': '1',
4969        'Ù¢': '2',
4970        'Ù£': '3',
4971        'Ù¤': '4',
4972        'Ù¥': '5',
4973        'Ù¦': '6',
4974        'Ù§': '7',
4975        'Ù¨': '8',
4976        'Ù©': '9',
4977        'Ù ': '0'
4978    }, pluralForm$1 = function (n) {
4979        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
4980    }, plurals$1 = {
4981        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
4982        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
4983        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
4984        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
4985        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
4986        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
4987    }, pluralize$1 = function (u) {
4988        return function (number, withoutSuffix, string, isFuture) {
4989            var f = pluralForm$1(number),
4990                str = plurals$1[u][pluralForm$1(number)];
4991            if (f === 2) {
4992                str = str[withoutSuffix ? 0 : 1];
4993            }
4994            return str.replace(/%d/i, number);
4995        };
4996    }, months$2 = [
4997        'يناير',
4998        'فبراير',
4999        'مارس',
5000        'أبريل',
5001        'مايو',
5002        'يونيو',
5003        'يوليو',
5004        'أغسطس',
5005        'سبتمبر',
5006        'أكتوبر',
5007        'نوفمبر',
5008        'ديسمبر'
5009    ];
5010
5011    hooks.defineLocale('ar', {
5012        months : months$2,
5013        monthsShort : months$2,
5014        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
5015        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
5016        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
5017        weekdaysParseExact : true,
5018        longDateFormat : {
5019            LT : 'HH:mm',
5020            LTS : 'HH:mm:ss',
5021            L : 'D/\u200FM/\u200FYYYY',
5022            LL : 'D MMMM YYYY',
5023            LLL : 'D MMMM YYYY HH:mm',
5024            LLLL : 'dddd D MMMM YYYY HH:mm'
5025        },
5026        meridiemParse: /ص|م/,
5027        isPM : function (input) {
5028            return 'م' === input;
5029        },
5030        meridiem : function (hour, minute, isLower) {
5031            if (hour < 12) {
5032                return 'ص';
5033            } else {
5034                return 'م';
5035            }
5036        },
5037        calendar : {
5038            sameDay: '[اليوم عند الساعة] LT',
5039            nextDay: '[غدًا عند الساعة] LT',
5040            nextWeek: 'dddd [عند الساعة] LT',
5041            lastDay: '[أمس عند الساعة] LT',
5042            lastWeek: 'dddd [عند الساعة] LT',
5043            sameElse: 'L'
5044        },
5045        relativeTime : {
5046            future : 'بعد %s',
5047            past : 'منذ %s',
5048            s : pluralize$1('s'),
5049            ss : pluralize$1('s'),
5050            m : pluralize$1('m'),
5051            mm : pluralize$1('m'),
5052            h : pluralize$1('h'),
5053            hh : pluralize$1('h'),
5054            d : pluralize$1('d'),
5055            dd : pluralize$1('d'),
5056            M : pluralize$1('M'),
5057            MM : pluralize$1('M'),
5058            y : pluralize$1('y'),
5059            yy : pluralize$1('y')
5060        },
5061        preparse: function (string) {
5062            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
5063                return numberMap$1[match];
5064            }).replace(/،/g, ',');
5065        },
5066        postformat: function (string) {
5067            return string.replace(/\d/g, function (match) {
5068                return symbolMap$2[match];
5069            }).replace(/,/g, '،');
5070        },
5071        week : {
5072            dow : 6, // Saturday is the first day of the week.
5073            doy : 12  // The week that contains Jan 1st is the first week of the year.
5074        }
5075    });
5076
5077    //! moment.js locale configuration
5078
5079    var suffixes = {
5080        1: '-inci',
5081        5: '-inci',
5082        8: '-inci',
5083        70: '-inci',
5084        80: '-inci',
5085        2: '-nci',
5086        7: '-nci',
5087        20: '-nci',
5088        50: '-nci',
5089        3: '-üncü',
5090        4: '-üncü',
5091        100: '-üncü',
5092        6: '-ncı',
5093        9: '-uncu',
5094        10: '-uncu',
5095        30: '-uncu',
5096        60: '-ıncı',
5097        90: '-ıncı'
5098    };
5099
5100    hooks.defineLocale('az', {
5101        months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
5102        monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
5103        weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
5104        weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
5105        weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
5106        weekdaysParseExact : true,
5107        longDateFormat : {
5108            LT : 'HH:mm',
5109            LTS : 'HH:mm:ss',
5110            L : 'DD.MM.YYYY',
5111            LL : 'D MMMM YYYY',
5112            LLL : 'D MMMM YYYY HH:mm',
5113            LLLL : 'dddd, D MMMM YYYY HH:mm'
5114        },
5115        calendar : {
5116            sameDay : '[bugün saat] LT',
5117            nextDay : '[sabah saat] LT',
5118            nextWeek : '[gələn həftə] dddd [saat] LT',
5119            lastDay : '[dünən] LT',
5120            lastWeek : '[keçən həftə] dddd [saat] LT',
5121            sameElse : 'L'
5122        },
5123        relativeTime : {
5124            future : '%s sonra',
5125            past : '%s əvvəl',
5126            s : 'birneçə saniyə',
5127            ss : '%d saniyə',
5128            m : 'bir dəqiqə',
5129            mm : '%d dəqiqə',
5130            h : 'bir saat',
5131            hh : '%d saat',
5132            d : 'bir gün',
5133            dd : '%d gün',
5134            M : 'bir ay',
5135            MM : '%d ay',
5136            y : 'bir il',
5137            yy : '%d il'
5138        },
5139        meridiemParse: /gecə|səhər|gündüz|axşam/,
5140        isPM : function (input) {
5141            return /^(gündüz|axşam)$/.test(input);
5142        },
5143        meridiem : function (hour, minute, isLower) {
5144            if (hour < 4) {
5145                return 'gecə';
5146            } else if (hour < 12) {
5147                return 'səhər';
5148            } else if (hour < 17) {
5149                return 'gündüz';
5150            } else {
5151                return 'axşam';
5152            }
5153        },
5154        dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
5155        ordinal : function (number) {
5156            if (number === 0) {  // special case for zero
5157                return number + '-ıncı';
5158            }
5159            var a = number % 10,
5160                b = number % 100 - a,
5161                c = number >= 100 ? 100 : null;
5162            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
5163        },
5164        week : {
5165            dow : 1, // Monday is the first day of the week.
5166            doy : 7  // The week that contains Jan 1st is the first week of the year.
5167        }
5168    });
5169
5170    //! moment.js locale configuration
5171
5172    function plural(word, num) {
5173        var forms = word.split('_');
5174        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]);
5175    }
5176    function relativeTimeWithPlural(number, withoutSuffix, key) {
5177        var format = {
5178            'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
5179            'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
5180            'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
5181            'dd': 'дзень_дні_дзён',
5182            'MM': 'месяц_месяцы_месяцаў',
5183            'yy': 'год_гады_гадоў'
5184        };
5185        if (key === 'm') {
5186            return withoutSuffix ? 'хвіліна' : 'хвіліну';
5187        }
5188        else if (key === 'h') {
5189            return withoutSuffix ? 'гадзіна' : 'гадзіну';
5190        }
5191        else {
5192            return number + ' ' + plural(format[key], +number);
5193        }
5194    }
5195
5196    hooks.defineLocale('be', {
5197        months : {
5198            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),
5199            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')
5200        },
5201        monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
5202        weekdays : {
5203            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),
5204            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
5205            isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/
5206        },
5207        weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
5208        weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
5209        longDateFormat : {
5210            LT : 'HH:mm',
5211            LTS : 'HH:mm:ss',
5212            L : 'DD.MM.YYYY',
5213            LL : 'D MMMM YYYY г.',
vendor: 28,127 bytes, lines 5214-5941
5214            LLL : 'D MMMM YYYY г., HH:mm',
5215            LLLL : 'dddd, D MMMM YYYY г., HH:mm'
5216        },
5217        calendar : {
5218            sameDay: '[Сёння ў] LT',
5219            nextDay: '[Заўтра ў] LT',
5220            lastDay: '[Учора ў] LT',
5221            nextWeek: function () {
5222                return '[У] dddd [ў] LT';
5223            },
5224            lastWeek: function () {
5225                switch (this.day()) {
5226                    case 0:
5227                    case 3:
5228                    case 5:
5229                    case 6:
5230                        return '[У мінулую] dddd [ў] LT';
5231                    case 1:
5232                    case 2:
5233                    case 4:
5234                        return '[У мінулы] dddd [ў] LT';
5235                }
5236            },
5237            sameElse: 'L'
5238        },
5239        relativeTime : {
5240            future : 'праз %s',
5241            past : '%s таму',
5242            s : 'некалькі секунд',
5243            m : relativeTimeWithPlural,
5244            mm : relativeTimeWithPlural,
5245            h : relativeTimeWithPlural,
5246            hh : relativeTimeWithPlural,
5247            d : 'дзень',
5248            dd : relativeTimeWithPlural,
5249            M : 'месяц',
5250            MM : relativeTimeWithPlural,
5251            y : 'год',
5252            yy : relativeTimeWithPlural
5253        },
5254        meridiemParse: /ночы|раніцы|дня|вечара/,
5255        isPM : function (input) {
5256            return /^(дня|вечара)$/.test(input);
5257        },
5258        meridiem : function (hour, minute, isLower) {
5259            if (hour < 4) {
5260                return 'ночы';
5261            } else if (hour < 12) {
5262                return 'раніцы';
5263            } else if (hour < 17) {
5264                return 'дня';
5265            } else {
5266                return 'вечара';
5267            }
5268        },
5269        dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
5270        ordinal: function (number, period) {
5271            switch (period) {
5272                case 'M':
5273                case 'd':
5274                case 'DDD':
5275                case 'w':
5276                case 'W':
5277                    return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';
5278                case 'D':
5279                    return number + '-га';
5280                default:
5281                    return number;
5282            }
5283        },
5284        week : {
5285            dow : 1, // Monday is the first day of the week.
5286            doy : 7  // The week that contains Jan 1st is the first week of the year.
5287        }
5288    });
5289
5290    //! moment.js locale configuration
5291
5292    hooks.defineLocale('bg', {
5293        months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
5294        monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
5295        weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
5296        weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
5297        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
5298        longDateFormat : {
5299            LT : 'H:mm',
5300            LTS : 'H:mm:ss',
5301            L : 'D.MM.YYYY',
5302            LL : 'D MMMM YYYY',
5303            LLL : 'D MMMM YYYY H:mm',
5304            LLLL : 'dddd, D MMMM YYYY H:mm'
5305        },
5306        calendar : {
5307            sameDay : '[Днес в] LT',
5308            nextDay : '[Утре в] LT',
5309            nextWeek : 'dddd [в] LT',
5310            lastDay : '[Вчера в] LT',
5311            lastWeek : function () {
5312                switch (this.day()) {
5313                    case 0:
5314                    case 3:
5315                    case 6:
5316                        return '[В изминалата] dddd [в] LT';
5317                    case 1:
5318                    case 2:
5319                    case 4:
5320                    case 5:
5321                        return '[В изминалия] dddd [в] LT';
5322                }
5323            },
5324            sameElse : 'L'
5325        },
5326        relativeTime : {
5327            future : 'след %s',
5328            past : 'преди %s',
5329            s : 'няколко секунди',
5330            ss : '%d секунди',
5331            m : 'минута',
5332            mm : '%d минути',
5333            h : 'час',
5334            hh : '%d часа',
5335            d : 'ден',
5336            dd : '%d дни',
5337            M : 'месец',
5338            MM : '%d месеца',
5339            y : 'година',
5340            yy : '%d години'
5341        },
5342        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
5343        ordinal : function (number) {
5344            var lastDigit = number % 10,
5345                last2Digits = number % 100;
5346            if (number === 0) {
5347                return number + '-ев';
5348            } else if (last2Digits === 0) {
5349                return number + '-ен';
5350            } else if (last2Digits > 10 && last2Digits < 20) {
5351                return number + '-ти';
5352            } else if (lastDigit === 1) {
5353                return number + '-ви';
5354            } else if (lastDigit === 2) {
5355                return number + '-ри';
5356            } else if (lastDigit === 7 || lastDigit === 8) {
5357                return number + '-ми';
5358            } else {
5359                return number + '-ти';
5360            }
5361        },
5362        week : {
5363            dow : 1, // Monday is the first day of the week.
5364            doy : 7  // The week that contains Jan 1st is the first week of the year.
5365        }
5366    });
5367
5368    //! moment.js locale configuration
5369
5370    hooks.defineLocale('bm', {
5371        months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),
5372        monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
5373        weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
5374        weekdaysShort : 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
5375        weekdaysMin : 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
5376        longDateFormat : {
5377            LT : 'HH:mm',
5378            LTS : 'HH:mm:ss',
5379            L : 'DD/MM/YYYY',
5380            LL : 'MMMM [tile] D [san] YYYY',
5381            LLL : 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
5382            LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'
5383        },
5384        calendar : {
5385            sameDay : '[Bi lɛrɛ] LT',
5386            nextDay : '[Sini lɛrɛ] LT',
5387            nextWeek : 'dddd [don lɛrɛ] LT',
5388            lastDay : '[Kunu lɛrɛ] LT',
5389            lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT',
5390            sameElse : 'L'
5391        },
5392        relativeTime : {
5393            future : '%s kɔnɔ',
5394            past : 'a bɛ %s bɔ',
5395            s : 'sanga dama dama',
5396            ss : 'sekondi %d',
5397            m : 'miniti kelen',
5398            mm : 'miniti %d',
5399            h : 'lɛrɛ kelen',
5400            hh : 'lɛrɛ %d',
5401            d : 'tile kelen',
5402            dd : 'tile %d',
5403            M : 'kalo kelen',
5404            MM : 'kalo %d',
5405            y : 'san kelen',
5406            yy : 'san %d'
5407        },
5408        week : {
5409            dow : 1, // Monday is the first day of the week.
5410            doy : 4  // The week that contains Jan 4th is the first week of the year.
5411        }
5412    });
5413
5414    //! moment.js locale configuration
5415
5416    var symbolMap$3 = {
5417        '1': 'à§§',
5418        '2': '২',
5419        '3': 'à§©',
5420        '4': '৪',
5421        '5': 'à§«',
5422        '6': '৬',
5423        '7': 'à§­',
5424        '8': 'à§®',
5425        '9': '৯',
5426        '0': '০'
5427    },
5428    numberMap$2 = {
5429        'à§§': '1',
5430        '২': '2',
5431        'à§©': '3',
5432        '৪': '4',
5433        'à§«': '5',
5434        '৬': '6',
5435        'à§­': '7',
5436        'à§®': '8',
5437        '৯': '9',
5438        '০': '0'
5439    };
5440
5441    hooks.defineLocale('bn', {
5442        months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
5443        monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
5444        weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
5445        weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
5446        weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),
5447        longDateFormat : {
5448            LT : 'A h:mm সময়',
5449            LTS : 'A h:mm:ss সময়',
5450            L : 'DD/MM/YYYY',
5451            LL : 'D MMMM YYYY',
5452            LLL : 'D MMMM YYYY, A h:mm সময়',
5453            LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'
5454        },
5455        calendar : {
5456            sameDay : '[আজ] LT',
5457            nextDay : '[আগামীকাল] LT',
5458            nextWeek : 'dddd, LT',
5459            lastDay : '[গতকাল] LT',
5460            lastWeek : '[গত] dddd, LT',
5461            sameElse : 'L'
5462        },
5463        relativeTime : {
5464            future : '%s পরে',
5465            past : '%s আগে',
5466            s : 'কয়েক সেকেন্ড',
5467            ss : '%d সেকেন্ড',
5468            m : 'এক মিনিট',
5469            mm : '%d মিনিট',
5470            h : 'এক ঘন্টা',
5471            hh : '%d ঘন্টা',
5472            d : 'এক দিন',
5473            dd : '%d দিন',
5474            M : 'এক মাস',
5475            MM : '%d মাস',
5476            y : 'এক বছর',
5477            yy : '%d বছর'
5478        },
5479        preparse: function (string) {
5480            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
5481                return numberMap$2[match];
5482            });
5483        },
5484        postformat: function (string) {
5485            return string.replace(/\d/g, function (match) {
5486                return symbolMap$3[match];
5487            });
5488        },
5489        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
5490        meridiemHour : function (hour, meridiem) {
5491            if (hour === 12) {
5492                hour = 0;
5493            }
5494            if ((meridiem === 'রাত' && hour >= 4) ||
5495                    (meridiem === 'দুপুর' && hour < 5) ||
5496                    meridiem === 'বিকাল') {
5497                return hour + 12;
5498            } else {
5499                return hour;
5500            }
5501        },
5502        meridiem : function (hour, minute, isLower) {
5503            if (hour < 4) {
5504                return 'রাত';
5505            } else if (hour < 10) {
5506                return 'সকাল';
5507            } else if (hour < 17) {
5508                return 'দুপুর';
5509            } else if (hour < 20) {
5510                return 'বিকাল';
5511            } else {
5512                return 'রাত';
5513            }
5514        },
5515        week : {
5516            dow : 0, // Sunday is the first day of the week.
5517            doy : 6  // The week that contains Jan 1st is the first week of the year.
5518        }
5519    });
5520
5521    //! moment.js locale configuration
5522
5523    var symbolMap$4 = {
5524        '1': '༡',
5525        '2': '༢',
5526        '3': '༣',
5527        '4': '༤',
5528        '5': '༥',
5529        '6': '༦',
5530        '7': '༧',
5531        '8': '༨',
5532        '9': '༩',
5533        '0': '༠'
5534    },
5535    numberMap$3 = {
5536        '༡': '1',
5537        '༢': '2',
5538        '༣': '3',
5539        '༤': '4',
5540        '༥': '5',
5541        '༦': '6',
5542        '༧': '7',
5543        '༨': '8',
5544        '༩': '9',
5545        '༠': '0'
5546    };
5547
5548    hooks.defineLocale('bo', {
5549        months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
5550        monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
5551        weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
5552        weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
5553        weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
5554        longDateFormat : {
5555            LT : 'A h:mm',
5556            LTS : 'A h:mm:ss',
5557            L : 'DD/MM/YYYY',
5558            LL : 'D MMMM YYYY',
5559            LLL : 'D MMMM YYYY, A h:mm',
5560            LLLL : 'dddd, D MMMM YYYY, A h:mm'
5561        },
5562        calendar : {
5563            sameDay : '[དི་རིང] LT',
5564            nextDay : '[སང་ཉིན] LT',
5565            nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',
5566            lastDay : '[ཁ་སང] LT',
5567            lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
5568            sameElse : 'L'
5569        },
5570        relativeTime : {
5571            future : '%s ལ་',
5572            past : '%s སྔན་ལ',
5573            s : 'ལམ་སང',
5574            ss : '%d སྐར་ཆ།',
5575            m : 'སྐར་མ་གཅིག',
5576            mm : '%d སྐར་མ',
5577            h : 'ཆུ་ཚོད་གཅིག',
5578            hh : '%d ཆུ་ཚོད',
5579            d : 'ཉིན་གཅིག',
5580            dd : '%d ཉིན་',
5581            M : 'ཟླ་བ་གཅིག',
5582            MM : '%d ཟླ་བ',
5583            y : 'ལོ་གཅིག',
5584            yy : '%d ལོ'
5585        },
5586        preparse: function (string) {
5587            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
5588                return numberMap$3[match];
5589            });
5590        },
5591        postformat: function (string) {
5592            return string.replace(/\d/g, function (match) {
5593                return symbolMap$4[match];
5594            });
5595        },
5596        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
5597        meridiemHour : function (hour, meridiem) {
5598            if (hour === 12) {
5599                hour = 0;
5600            }
5601            if ((meridiem === 'མཚན་མོ' && hour >= 4) ||
5602                    (meridiem === 'ཉིན་གུང' && hour < 5) ||
5603                    meridiem === 'དགོང་དག') {
5604                return hour + 12;
5605            } else {
5606                return hour;
5607            }
5608        },
5609        meridiem : function (hour, minute, isLower) {
5610            if (hour < 4) {
5611                return 'མཚན་མོ';
5612            } else if (hour < 10) {
5613                return 'ཞོགས་ཀས';
5614            } else if (hour < 17) {
5615                return 'ཉིན་གུང';
5616            } else if (hour < 20) {
5617                return 'དགོང་དག';
5618            } else {
5619                return 'མཚན་མོ';
5620            }
5621        },
5622        week : {
5623            dow : 0, // Sunday is the first day of the week.
5624            doy : 6  // The week that contains Jan 1st is the first week of the year.
5625        }
5626    });
5627
5628    //! moment.js locale configuration
5629
5630    function relativeTimeWithMutation(number, withoutSuffix, key) {
5631        var format = {
5632            'mm': 'munutenn',
5633            'MM': 'miz',
5634            'dd': 'devezh'
5635        };
5636        return number + ' ' + mutation(format[key], number);
5637    }
5638    function specialMutationForYears(number) {
5639        switch (lastNumber(number)) {
5640            case 1:
5641            case 3:
5642            case 4:
5643            case 5:
5644            case 9:
5645                return number + ' bloaz';
5646            default:
5647                return number + ' vloaz';
5648        }
5649    }
5650    function lastNumber(number) {
5651        if (number > 9) {
5652            return lastNumber(number % 10);
5653        }
5654        return number;
5655    }
5656    function mutation(text, number) {
5657        if (number === 2) {
5658            return softMutation(text);
5659        }
5660        return text;
5661    }
5662    function softMutation(text) {
5663        var mutationTable = {
5664            'm': 'v',
5665            'b': 'v',
5666            'd': 'z'
5667        };
5668        if (mutationTable[text.charAt(0)] === undefined) {
5669            return text;
5670        }
5671        return mutationTable[text.charAt(0)] + text.substring(1);
5672    }
5673
5674    hooks.defineLocale('br', {
5675        months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
5676        monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
5677        weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'),
5678        weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
5679        weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
5680        weekdaysParseExact : true,
5681        longDateFormat : {
5682            LT : 'h[e]mm A',
5683            LTS : 'h[e]mm:ss A',
5684            L : 'DD/MM/YYYY',
5685            LL : 'D [a viz] MMMM YYYY',
5686            LLL : 'D [a viz] MMMM YYYY h[e]mm A',
5687            LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'
5688        },
5689        calendar : {
5690            sameDay : '[Hiziv da] LT',
5691            nextDay : '[Warc\'hoazh da] LT',
5692            nextWeek : 'dddd [da] LT',
5693            lastDay : '[Dec\'h da] LT',
5694            lastWeek : 'dddd [paset da] LT',
5695            sameElse : 'L'
5696        },
5697        relativeTime : {
5698            future : 'a-benn %s',
5699            past : '%s \'zo',
5700            s : 'un nebeud segondennoù',
5701            ss : '%d eilenn',
5702            m : 'ur vunutenn',
5703            mm : relativeTimeWithMutation,
5704            h : 'un eur',
5705            hh : '%d eur',
5706            d : 'un devezh',
5707            dd : relativeTimeWithMutation,
5708            M : 'ur miz',
5709            MM : relativeTimeWithMutation,
5710            y : 'ur bloaz',
5711            yy : specialMutationForYears
5712        },
5713        dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
5714        ordinal : function (number) {
5715            var output = (number === 1) ? 'añ' : 'vet';
5716            return number + output;
5717        },
5718        week : {
5719            dow : 1, // Monday is the first day of the week.
5720            doy : 4  // The week that contains Jan 4th is the first week of the year.
5721        }
5722    });
5723
5724    //! moment.js locale configuration
5725
5726    function translate(number, withoutSuffix, key) {
5727        var result = number + ' ';
5728        switch (key) {
5729            case 'ss':
5730                if (number === 1) {
5731                    result += 'sekunda';
5732                } else if (number === 2 || number === 3 || number === 4) {
5733                    result += 'sekunde';
5734                } else {
5735                    result += 'sekundi';
5736                }
5737                return result;
5738            case 'm':
5739                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
5740            case 'mm':
5741                if (number === 1) {
5742                    result += 'minuta';
5743                } else if (number === 2 || number === 3 || number === 4) {
5744                    result += 'minute';
5745                } else {
5746                    result += 'minuta';
5747                }
5748                return result;
5749            case 'h':
5750                return withoutSuffix ? 'jedan sat' : 'jednog sata';
5751            case 'hh':
5752                if (number === 1) {
5753                    result += 'sat';
5754                } else if (number === 2 || number === 3 || number === 4) {
5755                    result += 'sata';
5756                } else {
5757                    result += 'sati';
5758                }
5759                return result;
5760            case 'dd':
5761                if (number === 1) {
5762                    result += 'dan';
5763                } else {
5764                    result += 'dana';
5765                }
5766                return result;
5767            case 'MM':
5768                if (number === 1) {
5769                    result += 'mjesec';
5770                } else if (number === 2 || number === 3 || number === 4) {
5771                    result += 'mjeseca';
5772                } else {
5773                    result += 'mjeseci';
5774                }
5775                return result;
5776            case 'yy':
5777                if (number === 1) {
5778                    result += 'godina';
5779                } else if (number === 2 || number === 3 || number === 4) {
5780                    result += 'godine';
5781                } else {
5782                    result += 'godina';
5783                }
5784                return result;
5785        }
5786    }
5787
5788    hooks.defineLocale('bs', {
5789        months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
5790        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
5791        monthsParseExact: true,
5792        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
5793        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
5794        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
5795        weekdaysParseExact : true,
5796        longDateFormat : {
5797            LT : 'H:mm',
5798            LTS : 'H:mm:ss',
5799            L : 'DD.MM.YYYY',
5800            LL : 'D. MMMM YYYY',
5801            LLL : 'D. MMMM YYYY H:mm',
5802            LLLL : 'dddd, D. MMMM YYYY H:mm'
5803        },
5804        calendar : {
5805            sameDay  : '[danas u] LT',
5806            nextDay  : '[sutra u] LT',
5807            nextWeek : function () {
5808                switch (this.day()) {
5809                    case 0:
5810                        return '[u] [nedjelju] [u] LT';
5811                    case 3:
5812                        return '[u] [srijedu] [u] LT';
5813                    case 6:
5814                        return '[u] [subotu] [u] LT';
5815                    case 1:
5816                    case 2:
5817                    case 4:
5818                    case 5:
5819                        return '[u] dddd [u] LT';
5820                }
5821            },
5822            lastDay  : '[jučer u] LT',
5823            lastWeek : function () {
5824                switch (this.day()) {
5825                    case 0:
5826                    case 3:
5827                        return '[prošlu] dddd [u] LT';
5828                    case 6:
5829                        return '[prošle] [subote] [u] LT';
5830                    case 1:
5831                    case 2:
5832                    case 4:
5833                    case 5:
5834                        return '[prošli] dddd [u] LT';
5835                }
5836            },
5837            sameElse : 'L'
5838        },
5839        relativeTime : {
5840            future : 'za %s',
5841            past   : 'prije %s',
5842            s      : 'par sekundi',
5843            ss     : translate,
5844            m      : translate,
5845            mm     : translate,
5846            h      : translate,
5847            hh     : translate,
5848            d      : 'dan',
5849            dd     : translate,
5850            M      : 'mjesec',
5851            MM     : translate,
5852            y      : 'godinu',
5853            yy     : translate
5854        },
5855        dayOfMonthOrdinalParse: /\d{1,2}\./,
5856        ordinal : '%d.',
5857        week : {
5858            dow : 1, // Monday is the first day of the week.
5859            doy : 7  // The week that contains Jan 1st is the first week of the year.
5860        }
5861    });
5862
5863    //! moment.js locale configuration
5864
5865    hooks.defineLocale('ca', {
5866        months : {
5867            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
5868            format: 'de gener_de febrer_de març_d\'abril_de maig_de juny_de juliol_d\'agost_de setembre_d\'octubre_de novembre_de desembre'.split('_'),
5869            isFormat: /D[oD]?(\s)+MMMM/
5870        },
5871        monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),
5872        monthsParseExact : true,
5873        weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
5874        weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
5875        weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
5876        weekdaysParseExact : true,
5877        longDateFormat : {
5878            LT : 'H:mm',
5879            LTS : 'H:mm:ss',
5880            L : 'DD/MM/YYYY',
5881            LL : 'D MMMM [de] YYYY',
5882            ll : 'D MMM YYYY',
5883            LLL : 'D MMMM [de] YYYY [a les] H:mm',
5884            lll : 'D MMM YYYY, H:mm',
5885            LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm',
5886            llll : 'ddd D MMM YYYY, H:mm'
5887        },
5888        calendar : {
5889            sameDay : function () {
5890                return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5891            },
5892            nextDay : function () {
5893                return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5894            },
5895            nextWeek : function () {
5896                return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5897            },
5898            lastDay : function () {
5899                return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5900            },
5901            lastWeek : function () {
5902                return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5903            },
5904            sameElse : 'L'
5905        },
5906        relativeTime : {
5907            future : 'd\'aquí %s',
5908            past : 'fa %s',
5909            s : 'uns segons',
5910            ss : '%d segons',
5911            m : 'un minut',
5912            mm : '%d minuts',
5913            h : 'una hora',
5914            hh : '%d hores',
5915            d : 'un dia',
5916            dd : '%d dies',
5917            M : 'un mes',
5918            MM : '%d mesos',
5919            y : 'un any',
5920            yy : '%d anys'
5921        },
5922        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
5923        ordinal : function (number, period) {
5924            var output = (number === 1) ? 'r' :
5925                (number === 2) ? 'n' :
5926                (number === 3) ? 'r' :
5927                (number === 4) ? 't' : 'è';
5928            if (period === 'w' || period === 'W') {
5929                output = 'a';
5930            }
5931            return number + output;
5932        },
5933        week : {
5934            dow : 1, // Monday is the first day of the week.
5935            doy : 4  // The week that contains Jan 4th is the first week of the year.
5936        }
5937    });
5938
5939    //! moment.js locale configuration
5940
5941    var months$3 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.
5941split('_'),
5942        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');
5943    function plural$1(n) {
5944        return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
5945    }
5946    function translate$1(number, withoutSuffix, key, isFuture) {
5947        var result = number + ' ';
5948        switch (key) {
5949            case 's':  // a few seconds / in a few seconds / a few seconds ago
5950                return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';
5951            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
5952                if (withoutSuffix || isFuture) {
5953                    return result + (plural$1(number) ? 'sekundy' : 'sekund');
5954                } else {
5955                    return result + 'sekundami';
5956                }
5957                break;
5958            case 'm':  // a minute / in a minute / a minute ago
5959                return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
5960            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
5961                if (withoutSuffix || isFuture) {
5962                    return result + (plural$1(number) ? 'minuty' : 'minut');
5963                } else {
5964                    return result + 'minutami';
5965                }
5966                break;
5967            case 'h':  // an hour / in an hour / an hour ago
5968                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
5969            case 'hh': // 9 hours / in 9 hours / 9 hours ago
5970                if (withoutSuffix || isFuture) {
5971                    return result + (plural$1(number) ? 'hodiny' : 'hodin');
5972                } else {
5973                    return result + 'hodinami';
5974                }
5975                break;
5976            case 'd':  // a day / in a day / a day ago
5977                return (withoutSuffix || isFuture) ? 'den' : 'dnem';
5978            case 'dd': // 9 days / in 9 days / 9 days ago
5979                if (withoutSuffix || isFuture) {
5980                    return result + (plural$1(number) ? 'dny' : 'dní');
5981                } else {
5982                    return result + 'dny';
5983                }
5984                break;
5985            case 'M':  // a month / in a month / a month ago
5986                return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
5987            case 'MM': // 9 months / in 9 months / 9 months ago
5988                if (withoutSuffix || isFuture) {
5989                    return result + (plural$1(number) ? 'měsíce' : 'měsíců');
5990                } else {
5991                    return result + 'měsíci';
5992                }
5993                break;
5994            case 'y':  // a year / in a year / a year ago
5995                return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
5996            case 'yy': // 9 years / in 9 years / 9 years ago
5997                if (withoutSuffix || isFuture) {
5998                    return result + (plural$1(number) ? 'roky' : 'let');
5999                } else {
6000                    return result + 'lety';
6001                }
6002                break;
6003        }
6004    }
6005
6006    hooks.defineLocale('cs', {
6007        months : months$3,
6008        monthsShort : monthsShort,
6009        monthsParse : (function (months, monthsShort) {
6010            var i, _monthsParse = [];
6011            for (i = 0; i < 12; i++) {
6012                // use custom parser to solve problem with July (červenec)
6013                _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
6014            }
6015            return _monthsParse;
6016        }(months$3, monthsShort)),
6017        shortMonthsParse : (function (monthsShort) {
6018            var i, _shortMonthsParse = [];
6019            for (i = 0; i < 12; i++) {
6020                _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');
6021            }
6022            return _shortMonthsParse;
6023        }(monthsShort)),
6024        longMonthsParse : (function (months) {
6025            var i, _longMonthsParse = [];
6026            for (i = 0; i < 12; i++) {
6027                _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');
6028            }
6029            return _longMonthsParse;
6030        }(months$3)),
6031        weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
6032        weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),
6033        weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),
6034        longDateFormat : {
6035            LT: 'H:mm',
6036            LTS : 'H:mm:ss',
6037            L : 'DD.MM.YYYY',
6038            LL : 'D. MMMM YYYY',
6039            LLL : 'D. MMMM YYYY H:mm',
6040            LLLL : 'dddd D. MMMM YYYY H:mm',
6041            l : 'D. M. YYYY'
6042        },
6043        calendar : {
6044            sameDay: '[dnes v] LT',
6045            nextDay: '[zítra v] LT',
6046            nextWeek: function () {
6047                switch (this.day()) {
6048                    case 0:
6049                        return '[v neděli v] LT';
6050                    case 1:
6051                    case 2:
6052                        return '[v] dddd [v] LT';
6053                    case 3:
6054                        return '[ve středu v] LT';
6055                    case 4:
6056                        return '[ve čtvrtek v] LT';
6057                    case 5:
6058                        return '[v pátek v] LT';
6059                    case 6:
6060                        return '[v sobotu v] LT';
6061                }
6062            },
6063            lastDay: '[včera v] LT',
6064            lastWeek: function () {
6065                switch (this.day()) {
6066                    case 0:
6067                        return '[minulou neděli v] LT';
6068                    case 1:
6069                    case 2:
6070                        return '[minulé] dddd [v] LT';
6071                    case 3:
6072                        return '[minulou středu v] LT';
6073                    case 4:
6074                    case 5:
6075                        return '[minulý] dddd [v] LT';
6076                    case 6:
6077                        return '[minulou sobotu v] LT';
6078                }
6079            },
6080            sameElse: 'L'
6081        },
6082        relativeTime : {
6083            future : 'za %s',
6084            past : 'před %s',
6085            s : translate$1,
6086            ss : translate$1,
6087            m : translate$1,
6088            mm : translate$1,
6089            h : translate$1,
6090            hh : translate$1,
6091            d : translate$1,
6092            dd : translate$1,
6093            M : translate$1,
6094            MM : translate$1,
6095            y : translate$1,
6096            yy : translate$1
6097        },
6098        dayOfMonthOrdinalParse : /\d{1,2}\./,
6099        ordinal : '%d.',
vendor: 4,387 bytes, lines 6100-6204
6100        week : {
6101            dow : 1, // Monday is the first day of the week.
6102            doy : 4  // The week that contains Jan 4th is the first week of the year.
6103        }
6104    });
6105
6106    //! moment.js locale configuration
6107
6108    hooks.defineLocale('cv', {
6109        months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),
6110        monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
6111        weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),
6112        weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
6113        weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
6114        longDateFormat : {
6115            LT : 'HH:mm',
6116            LTS : 'HH:mm:ss',
6117            L : 'DD-MM-YYYY',
6118            LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
6119            LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
6120            LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'
6121        },
6122        calendar : {
6123            sameDay: '[Паян] LT [сехетре]',
6124            nextDay: '[Ыран] LT [сехетре]',
6125            lastDay: '[Ӗнер] LT [сехетре]',
6126            nextWeek: '[Ҫитес] dddd LT [сехетре]',
6127            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
6128            sameElse: 'L'
6129        },
6130        relativeTime : {
6131            future : function (output) {
6132                var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';
6133                return output + affix;
6134            },
6135            past : '%s каялла',
6136            s : 'пӗр-ик ҫеккунт',
6137            ss : '%d ҫеккунт',
6138            m : 'пӗр минут',
6139            mm : '%d минут',
6140            h : 'пӗр сехет',
6141            hh : '%d сехет',
6142            d : 'пӗр кун',
6143            dd : '%d кун',
6144            M : 'пӗр уйӑх',
6145            MM : '%d уйӑх',
6146            y : 'пӗр ҫул',
6147            yy : '%d ҫул'
6148        },
6149        dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
6150        ordinal : '%d-мӗш',
6151        week : {
6152            dow : 1, // Monday is the first day of the week.
6153            doy : 7  // The week that contains Jan 1st is the first week of the year.
6154        }
6155    });
6156
6157    //! moment.js locale configuration
6158
6159    hooks.defineLocale('cy', {
6160        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
6161        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
6162        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
6163        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
6164        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
6165        weekdaysParseExact : true,
6166        // time formats are the same as en-gb
6167        longDateFormat: {
6168            LT: 'HH:mm',
6169            LTS : 'HH:mm:ss',
6170            L: 'DD/MM/YYYY',
6171            LL: 'D MMMM YYYY',
6172            LLL: 'D MMMM YYYY HH:mm',
6173            LLLL: 'dddd, D MMMM YYYY HH:mm'
6174        },
6175        calendar: {
6176            sameDay: '[Heddiw am] LT',
6177            nextDay: '[Yfory am] LT',
6178            nextWeek: 'dddd [am] LT',
6179            lastDay: '[Ddoe am] LT',
6180            lastWeek: 'dddd [diwethaf am] LT',
6181            sameElse: 'L'
6182        },
6183        relativeTime: {
6184            future: 'mewn %s',
6185            past: '%s yn ôl',
6186            s: 'ychydig eiliadau',
6187            ss: '%d eiliad',
6188            m: 'munud',
6189            mm: '%d munud',
6190            h: 'awr',
6191            hh: '%d awr',
6192            d: 'diwrnod',
6193            dd: '%d diwrnod',
6194            M: 'mis',
6195            MM: '%d mis',
6196            y: 'blwyddyn',
6197            yy: '%d flynedd'
6198        },
6199        dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
6200        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
6201        ordinal: function (number) {
6202            var b = number,
6203                output = '',
6204                lookup = [
vendor: 16,345 bytes, lines 6205-6622
6205                    '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
6206                    'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
6207                ];
6208            if (b > 20) {
6209                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
6210                    output = 'fed'; // not 30ain, 70ain or 90ain
6211                } else {
6212                    output = 'ain';
6213                }
6214            } else if (b > 0) {
6215                output = lookup[b];
6216            }
6217            return number + output;
6218        },
6219        week : {
6220            dow : 1, // Monday is the first day of the week.
6221            doy : 4  // The week that contains Jan 4th is the first week of the year.
6222        }
6223    });
6224
6225    //! moment.js locale configuration
6226
6227    hooks.defineLocale('da', {
6228        months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
6229        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
6230        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
6231        weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),
6232        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
6233        longDateFormat : {
6234            LT : 'HH:mm',
6235            LTS : 'HH:mm:ss',
6236            L : 'DD.MM.YYYY',
6237            LL : 'D. MMMM YYYY',
6238            LLL : 'D. MMMM YYYY HH:mm',
6239            LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'
6240        },
6241        calendar : {
6242            sameDay : '[i dag kl.] LT',
6243            nextDay : '[i morgen kl.] LT',
6244            nextWeek : 'på dddd [kl.] LT',
6245            lastDay : '[i går kl.] LT',
6246            lastWeek : '[i] dddd[s kl.] LT',
6247            sameElse : 'L'
6248        },
6249        relativeTime : {
6250            future : 'om %s',
6251            past : '%s siden',
6252            s : 'få sekunder',
6253            ss : '%d sekunder',
6254            m : 'et minut',
6255            mm : '%d minutter',
6256            h : 'en time',
6257            hh : '%d timer',
6258            d : 'en dag',
6259            dd : '%d dage',
6260            M : 'en måned',
6261            MM : '%d måneder',
6262            y : 'et år',
6263            yy : '%d år'
6264        },
6265        dayOfMonthOrdinalParse: /\d{1,2}\./,
6266        ordinal : '%d.',
6267        week : {
6268            dow : 1, // Monday is the first day of the week.
6269            doy : 4  // The week that contains Jan 4th is the first week of the year.
6270        }
6271    });
6272
6273    //! moment.js locale configuration
6274
6275    function processRelativeTime(number, withoutSuffix, key, isFuture) {
6276        var format = {
6277            'm': ['eine Minute', 'einer Minute'],
6278            'h': ['eine Stunde', 'einer Stunde'],
6279            'd': ['ein Tag', 'einem Tag'],
6280            'dd': [number + ' Tage', number + ' Tagen'],
6281            'M': ['ein Monat', 'einem Monat'],
6282            'MM': [number + ' Monate', number + ' Monaten'],
6283            'y': ['ein Jahr', 'einem Jahr'],
6284            'yy': [number + ' Jahre', number + ' Jahren']
6285        };
6286        return withoutSuffix ? format[key][0] : format[key][1];
6287    }
6288
6289    hooks.defineLocale('de-at', {
6290        months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6291        monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
6292        monthsParseExact : true,
6293        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6294        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6295        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6296        weekdaysParseExact : true,
6297        longDateFormat : {
6298            LT: 'HH:mm',
6299            LTS: 'HH:mm:ss',
6300            L : 'DD.MM.YYYY',
6301            LL : 'D. MMMM YYYY',
6302            LLL : 'D. MMMM YYYY HH:mm',
6303            LLLL : 'dddd, D. MMMM YYYY HH:mm'
6304        },
6305        calendar : {
6306            sameDay: '[heute um] LT [Uhr]',
6307            sameElse: 'L',
6308            nextDay: '[morgen um] LT [Uhr]',
6309            nextWeek: 'dddd [um] LT [Uhr]',
6310            lastDay: '[gestern um] LT [Uhr]',
6311            lastWeek: '[letzten] dddd [um] LT [Uhr]'
6312        },
6313        relativeTime : {
6314            future : 'in %s',
6315            past : 'vor %s',
6316            s : 'ein paar Sekunden',
6317            ss : '%d Sekunden',
6318            m : processRelativeTime,
6319            mm : '%d Minuten',
6320            h : processRelativeTime,
6321            hh : '%d Stunden',
6322            d : processRelativeTime,
6323            dd : processRelativeTime,
6324            M : processRelativeTime,
6325            MM : processRelativeTime,
6326            y : processRelativeTime,
6327            yy : processRelativeTime
6328        },
6329        dayOfMonthOrdinalParse: /\d{1,2}\./,
6330        ordinal : '%d.',
6331        week : {
6332            dow : 1, // Monday is the first day of the week.
6333            doy : 4  // The week that contains Jan 4th is the first week of the year.
6334        }
6335    });
6336
6337    //! moment.js locale configuration
6338
6339    function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
6340        var format = {
6341            'm': ['eine Minute', 'einer Minute'],
6342            'h': ['eine Stunde', 'einer Stunde'],
6343            'd': ['ein Tag', 'einem Tag'],
6344            'dd': [number + ' Tage', number + ' Tagen'],
6345            'M': ['ein Monat', 'einem Monat'],
6346            'MM': [number + ' Monate', number + ' Monaten'],
6347            'y': ['ein Jahr', 'einem Jahr'],
6348            'yy': [number + ' Jahre', number + ' Jahren']
6349        };
6350        return withoutSuffix ? format[key][0] : format[key][1];
6351    }
6352
6353    hooks.defineLocale('de-ch', {
6354        months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6355        monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
6356        monthsParseExact : true,
6357        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6358        weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6359        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6360        weekdaysParseExact : true,
6361        longDateFormat : {
6362            LT: 'HH:mm',
6363            LTS: 'HH:mm:ss',
6364            L : 'DD.MM.YYYY',
6365            LL : 'D. MMMM YYYY',
6366            LLL : 'D. MMMM YYYY HH:mm',
6367            LLLL : 'dddd, D. MMMM YYYY HH:mm'
6368        },
6369        calendar : {
6370            sameDay: '[heute um] LT [Uhr]',
6371            sameElse: 'L',
6372            nextDay: '[morgen um] LT [Uhr]',
6373            nextWeek: 'dddd [um] LT [Uhr]',
6374            lastDay: '[gestern um] LT [Uhr]',
6375            lastWeek: '[letzten] dddd [um] LT [Uhr]'
6376        },
6377        relativeTime : {
6378            future : 'in %s',
6379            past : 'vor %s',
6380            s : 'ein paar Sekunden',
6381            ss : '%d Sekunden',
6382            m : processRelativeTime$1,
6383            mm : '%d Minuten',
6384            h : processRelativeTime$1,
6385            hh : '%d Stunden',
6386            d : processRelativeTime$1,
6387            dd : processRelativeTime$1,
6388            M : processRelativeTime$1,
6389            MM : processRelativeTime$1,
6390            y : processRelativeTime$1,
6391            yy : processRelativeTime$1
6392        },
6393        dayOfMonthOrdinalParse: /\d{1,2}\./,
6394        ordinal : '%d.',
6395        week : {
6396            dow : 1, // Monday is the first day of the week.
6397            doy : 4  // The week that contains Jan 4th is the first week of the year.
6398        }
6399    });
6400
6401    //! moment.js locale configuration
6402
6403    function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
6404        var format = {
6405            'm': ['eine Minute', 'einer Minute'],
6406            'h': ['eine Stunde', 'einer Stunde'],
6407            'd': ['ein Tag', 'einem Tag'],
6408            'dd': [number + ' Tage', number + ' Tagen'],
6409            'M': ['ein Monat', 'einem Monat'],
6410            'MM': [number + ' Monate', number + ' Monaten'],
6411            'y': ['ein Jahr', 'einem Jahr'],
6412            'yy': [number + ' Jahre', number + ' Jahren']
6413        };
6414        return withoutSuffix ? format[key][0] : format[key][1];
6415    }
6416
6417    hooks.defineLocale('de', {
6418        months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6419        monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
6420        monthsParseExact : true,
6421        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6422        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6423        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6424        weekdaysParseExact : true,
6425        longDateFormat : {
6426            LT: 'HH:mm',
6427            LTS: 'HH:mm:ss',
6428            L : 'DD.MM.YYYY',
6429            LL : 'D. MMMM YYYY',
6430            LLL : 'D. MMMM YYYY HH:mm',
6431            LLLL : 'dddd, D. MMMM YYYY HH:mm'
6432        },
6433        calendar : {
6434            sameDay: '[heute um] LT [Uhr]',
6435            sameElse: 'L',
6436            nextDay: '[morgen um] LT [Uhr]',
6437            nextWeek: 'dddd [um] LT [Uhr]',
6438            lastDay: '[gestern um] LT [Uhr]',
6439            lastWeek: '[letzten] dddd [um] LT [Uhr]'
6440        },
6441        relativeTime : {
6442            future : 'in %s',
6443            past : 'vor %s',
6444            s : 'ein paar Sekunden',
6445            ss : '%d Sekunden',
6446            m : processRelativeTime$2,
6447            mm : '%d Minuten',
6448            h : processRelativeTime$2,
6449            hh : '%d Stunden',
6450            d : processRelativeTime$2,
6451            dd : processRelativeTime$2,
6452            M : processRelativeTime$2,
6453            MM : processRelativeTime$2,
6454            y : processRelativeTime$2,
6455            yy : processRelativeTime$2
6456        },
6457        dayOfMonthOrdinalParse: /\d{1,2}\./,
6458        ordinal : '%d.',
6459        week : {
6460            dow : 1, // Monday is the first day of the week.
6461            doy : 4  // The week that contains Jan 4th is the first week of the year.
6462        }
6463    });
6464
6465    //! moment.js locale configuration
6466
6467    var months$4 = [
6468        'ޖެނުއަރީ',
6469        'ފެބްރުއަރީ',
6470        'މާރިޗު',
6471        'އޭޕްރީލު',
6472        'މޭ',
6473        'ޖޫން',
6474        'ޖުލައި',
6475        'އޯގަސްޓު',
6476        'ސެޕްޓެމްބަރު',
6477        'އޮކްޓޯބަރު',
6478        'ނޮވެމްބަރު',
6479        'ޑިސެމްބަރު'
6480    ], weekdays = [
6481        'އާދިއްތަ',
6482        'ހޯމަ',
6483        'އަންގާރަ',
6484        'ބުދަ',
6485        'ބުރާސްފަތި',
6486        'ހުކުރު',
6487        'ހޮނިހިރު'
6488    ];
6489
6490    hooks.defineLocale('dv', {
6491        months : months$4,
6492        monthsShort : months$4,
6493        weekdays : weekdays,
6494        weekdaysShort : weekdays,
6495        weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
6496        longDateFormat : {
6497
6498            LT : 'HH:mm',
6499            LTS : 'HH:mm:ss',
6500            L : 'D/M/YYYY',
6501            LL : 'D MMMM YYYY',
6502            LLL : 'D MMMM YYYY HH:mm',
6503            LLLL : 'dddd D MMMM YYYY HH:mm'
6504        },
6505        meridiemParse: /މކ|މފ/,
6506        isPM : function (input) {
6507            return 'މފ' === input;
6508        },
6509        meridiem : function (hour, minute, isLower) {
6510            if (hour < 12) {
6511                return 'މކ';
6512            } else {
6513                return 'މފ';
6514            }
6515        },
6516        calendar : {
6517            sameDay : '[މިއަދު] LT',
6518            nextDay : '[މާދަމާ] LT',
6519            nextWeek : 'dddd LT',
6520            lastDay : '[އިއްޔެ] LT',
6521            lastWeek : '[ފާއިތުވި] dddd LT',
6522            sameElse : 'L'
6523        },
6524        relativeTime : {
6525            future : 'ތެރޭގައި %s',
6526            past : 'ކުރިން %s',
6527            s : 'ސިކުންތުކޮޅެއް',
6528            ss : 'd% ސިކުންތު',
6529            m : 'މިނިޓެއް',
6530            mm : 'މިނިޓު %d',
6531            h : 'ގަޑިއިރެއް',
6532            hh : 'ގަޑިއިރު %d',
6533            d : 'ދުވަހެއް',
6534            dd : 'ދުވަސް %d',
6535            M : 'މަހެއް',
6536            MM : 'މަސް %d',
6537            y : 'އަހަރެއް',
6538            yy : 'އަހަރު %d'
6539        },
6540        preparse: function (string) {
6541            return string.replace(/،/g, ',');
6542        },
6543        postformat: function (string) {
6544            return string.replace(/,/g, '،');
6545        },
6546        week : {
6547            dow : 7,  // Sunday is the first day of the week.
6548            doy : 12  // The week that contains Jan 1st is the first week of the year.
6549        }
6550    });
6551
6552    //! moment.js locale configuration
6553
6554    hooks.defineLocale('el', {
6555        monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
6556        monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
6557        months : function (momentToFormat, format) {
6558            if (!momentToFormat) {
6559                return this._monthsNominativeEl;
6560            } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'
6561                return this._monthsGenitiveEl[momentToFormat.month()];
6562            } else {
6563                return this._monthsNominativeEl[momentToFormat.month()];
6564            }
6565        },
6566        monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
6567        weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),
6568        weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
6569        weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
6570        meridiem : function (hours, minutes, isLower) {
6571            if (hours > 11) {
6572                return isLower ? 'μμ' : 'ΜΜ';
6573            } else {
6574                return isLower ? 'πμ' : 'ΠΜ';
6575            }
6576        },
6577        isPM : function (input) {
6578            return ((input + '').toLowerCase()[0] === 'μ');
6579        },
6580        meridiemParse : /[ΠΜ]\.?Μ?\.?/i,
6581        longDateFormat : {
6582            LT : 'h:mm A',
6583            LTS : 'h:mm:ss A',
6584            L : 'DD/MM/YYYY',
6585            LL : 'D MMMM YYYY',
6586            LLL : 'D MMMM YYYY h:mm A',
6587            LLLL : 'dddd, D MMMM YYYY h:mm A'
6588        },
6589        calendarEl : {
6590            sameDay : '[Σήμερα {}] LT',
6591            nextDay : '[Αύριο {}] LT',
6592            nextWeek : 'dddd [{}] LT',
6593            lastDay : '[Χθες {}] LT',
6594            lastWeek : function () {
6595                switch (this.day()) {
6596                    case 6:
6597                        return '[το προηγούμενο] dddd [{}] LT';
6598                    default:
6599                        return '[την προηγούμενη] dddd [{}] LT';
6600                }
6601            },
6602            sameElse : 'L'
6603        },
6604        calendar : function (key, mom) {
6605            var output = this._calendarEl[key],
6606                hours = mom && mom.hours();
6607            if (isFunction(output)) {
6608                output = output.apply(mom);
6609            }
6610            return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));
6611        },
6612        relativeTime : {
6613            future : 'σε %s',
6614            past : '%s πριν',
6615            s : 'λίγα δευτερόλεπτα',
6616            ss : '%d δευτερόλεπτα',
6617            m : 'ένα λεπτό',
6618            mm : '%d λεπτά',
6619            h : 'μία ώρα',
6620            hh : '%d ώρες',
6621            d : 'μία μέρα',
6622            dd : '%d μέρες',
6623            M : 'ένας μήνας',
6624            MM : '%d μήνες',
6625            y : 'ένας χρόνος',
6626            yy : '%d χρόνια'
6627        },
6628        dayOfMonthOrdinalParse: /\d{1,2}η/,
6629        ordinal: '%dη',
6630        week : {
6631            dow : 1, // Monday is the first day of the week.
6632            doy : 4  // The week that contains Jan 4st is the first week of the year.
6633        }
6634    });
6635
6636    //! moment.js locale configuration
6637
6638    hooks.defineLocale('en-au', {
6639        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6640        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6641        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6642        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6643        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6644        longDateFormat : {
6645            LT : 'h:mm A',
6646            LTS : 'h:mm:ss A',
6647            L : 'DD/MM/YYYY',
6648            LL : 'D MMMM YYYY',
6649            LLL : 'D MMMM YYYY h:mm A',
6650            LLLL : 'dddd, D MMMM YYYY h:mm A'
6651        },
6652        calendar : {
6653            sameDay : '[Today at] LT',
6654            nextDay : '[Tomorrow at] LT',
6655            nextWeek : 'dddd [at] LT',
6656            lastDay : '[Yesterday at] LT',
6657            lastWeek : '[Last] dddd [at] LT',
6658            sameElse : 'L'
6659        },
6660        relativeTime : {
6661            future : 'in %s',
6662            past : '%s ago',
6663            s : 'a few seconds',
6664            ss : '%d seconds',
6665            m : 'a minute',
6666            mm : '%d minutes',
6667            h : 'an hour',
6668            hh : '%d hours',
6669            d : 'a day',
6670            dd : '%d days',
6671            M : 'a month',
6672            MM : '%d months',
6673            y : 'a year',
6674            yy : '%d years'
6675        },
6676        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6677        ordinal : function (number) {
6678            var b = number % 10,
6679                output = (~~(number % 100 / 10) === 1) ? 'th' :
6680                (b === 1) ? 'st' :
6681                (b === 2) ? 'nd' :
6682                (b === 3) ? 'rd' : 'th';
6683            return number + output;
6684        },
6685        week : {
6686            dow : 1, // Monday is the first day of the week.
6687            doy : 4  // The week that contains Jan 4th is the first week of the year.
6688        }
6689    });
6690
6691    //! moment.js locale configuration
6692
6693    hooks.defineLocale('en-ca', {
6694        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6695        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6696        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6697        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6698        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6699        longDateFormat : {
6700            LT : 'h:mm A',
6701            LTS : 'h:mm:ss A',
6702            L : 'YYYY-MM-DD',
6703            LL : 'MMMM D, YYYY',
6704            LLL : 'MMMM D, YYYY h:mm A',
6705            LLLL : 'dddd, MMMM D, YYYY h:mm A'
6706        },
6707        calendar : {
6708            sameDay : '[Today at] LT',
6709            nextDay : '[Tomorrow at] LT',
6710            nextWeek : 'dddd [at] LT',
6711            lastDay : '[Yesterday at] LT',
6712            lastWeek : '[Last] dddd [at] LT',
6713            sameElse : 'L'
6714        },
6715        relativeTime : {
6716            future : 'in %s',
6717            past : '%s ago',
6718            s : 'a few seconds',
6719            ss : '%d seconds',
6720            m : 'a minute',
6721            mm : '%d minutes',
6722            h : 'an hour',
6723            hh : '%d hours',
6724            d : 'a day',
6725            dd : '%d days',
6726            M : 'a month',
6727            MM : '%d months',
6728            y : 'a year',
6729            yy : '%d years'
6730        },
6731        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6732        ordinal : function (number) {
6733            var b = number % 10,
6734                output = (~~(number % 100 / 10) === 1) ? 'th' :
6735                (b === 1) ? 'st' :
6736                (b === 2) ? 'nd' :
6737                (b === 3) ? 'rd' : 'th';
6738            return number + output;
6739        }
6740    });
6741
6742    //! moment.js locale configuration
6743
6744    hooks.defineLocale('en-gb', {
6745        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6746        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6747        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6748        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6749        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6750        longDateFormat : {
6751            LT : 'HH:mm',
6752            LTS : 'HH:mm:ss',
6753            L : 'DD/MM/YYYY',
6754            LL : 'D MMMM YYYY',
6755            LLL : 'D MMMM YYYY HH:mm',
6756            LLLL : 'dddd, D MMMM YYYY HH:mm'
6757        },
6758        calendar : {
6759            sameDay : '[Today at] LT',
6760            nextDay : '[Tomorrow at] LT',
6761            nextWeek : 'dddd [at] LT',
6762            lastDay : '[Yesterday at] LT',
6763            lastWeek : '[Last] dddd [at] LT',
6764            sameElse : 'L'
6765        },
6766        relativeTime : {
6767            future : 'in %s',
6768            past : '%s ago',
6769            s : 'a few seconds',
6770            ss : '%d seconds',
6771            m : 'a minute',
6772            mm : '%d minutes',
6773            h : 'an hour',
6774            hh : '%d hours',
6775            d : 'a day',
6776            dd : '%d days',
6777            M : 'a month',
6778            MM : '%d months',
6779            y : 'a year',
6780            yy : '%d years'
6781        },
6782        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6783        ordinal : function (number) {
6784            var b = number % 10,
6785                output = (~~(number % 100 / 10) === 1) ? 'th' :
6786                (b === 1) ? 'st' :
6787                (b === 2) ? 'nd' :
6788                (b === 3) ? 'rd' : 'th';
6789            return number + output;
6790        },
6791        week : {
6792            dow : 1, // Monday is the first day of the week.
6793            doy : 4  // The week that contains Jan 4th is the first week of the year.
6794        }
6795    });
6796
6797    //! moment.js locale configuration
6798
6799    hooks.defineLocale('en-ie', {
6800        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6801        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6802        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6803        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6804        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6805        longDateFormat : {
6806            LT : 'HH:mm',
6807            LTS : 'HH:mm:ss',
6808            L : 'DD-MM-YYYY',
6809            LL : 'D MMMM YYYY',
6810            LLL : 'D MMMM YYYY HH:mm',
6811            LLLL : 'dddd D MMMM YYYY HH:mm'
6812        },
6813        calendar : {
6814            sameDay : '[Today at] LT',
6815            nextDay : '[Tomorrow at] LT',
6816            nextWeek : 'dddd [at] LT',
6817            lastDay : '[Yesterday at] LT',
6818            lastWeek : '[Last] dddd [at] LT',
6819            sameElse : 'L'
6820        },
6821        relativeTime : {
6822            future : 'in %s',
6823            past : '%s ago',
6824            s : 'a few seconds',
6825            ss : '%d seconds',
6826            m : 'a minute',
6827            mm : '%d minutes',
6828            h : 'an hour',
6829            hh : '%d hours',
6830            d : 'a day',
6831            dd : '%d days',
6832            M : 'a month',
6833            MM : '%d months',
6834            y : 'a year',
6835            yy : '%d years'
6836        },
6837        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6838        ordinal : function (number) {
6839            var b = number % 10,
6840                output = (~~(number % 100 / 10) === 1) ? 'th' :
6841                (b === 1) ? 'st' :
6842                (b === 2) ? 'nd' :
6843                (b === 3) ? 'rd' : 'th';
6844            return number + output;
6845        },
6846        week : {
6847            dow : 1, // Monday is the first day of the week.
6848            doy : 4  // The week that contains Jan 4th is the first week of the year.
6849        }
6850    });
6851
6852    //! moment.js locale configuration
6853
6854    hooks.defineLocale('en-il', {
6855        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6856        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6857        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6858        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6859        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6860        longDateFormat : {
6861            LT : 'HH:mm',
6862            LTS : 'HH:mm:ss',
6863            L : 'DD/MM/YYYY',
6864            LL : 'D MMMM YYYY',
6865            LLL : 'D MMMM YYYY HH:mm',
6866            LLLL : 'dddd, D MMMM YYYY HH:mm'
6867        },
6868        calendar : {
6869            sameDay : '[Today at] LT',
6870            nextDay : '[Tomorrow at] LT',
6871            nextWeek : 'dddd [at] LT',
6872            lastDay : '[Yesterday at] LT',
6873            lastWeek : '[Last] dddd [at] LT',
6874            sameElse : 'L'
6875        },
6876        relativeTime : {
6877            future : 'in %s',
6878            past : '%s ago',
6879            s : 'a few seconds',
6880            m : 'a minute',
6881            mm : '%d minutes',
6882            h : 'an hour',
6883            hh : '%d hours',
6884            d : 'a day',
6885            dd : '%d days',
6886            M : 'a month',
6887            MM : '%d months',
6888            y : 'a year',
6889            yy : '%d years'
6890        },
6891        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6892        ordinal : function (number) {
6893            var b = number % 10,
6894                output = (~~(number % 100 / 10) === 1) ? 'th' :
6895                (b === 1) ? 'st' :
6896                (b === 2) ? 'nd' :
6897                (b === 3) ? 'rd' : 'th';
6898            return number + output;
6899        }
6900    });
vendor: 18,739 bytes, lines 6901-7362
6901
6902    //! moment.js locale configuration
6903
6904    hooks.defineLocale('en-nz', {
6905        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6906        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6907        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6908        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6909        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6910        longDateFormat : {
6911            LT : 'h:mm A',
6912            LTS : 'h:mm:ss A',
6913            L : 'DD/MM/YYYY',
6914            LL : 'D MMMM YYYY',
6915            LLL : 'D MMMM YYYY h:mm A',
6916            LLLL : 'dddd, D MMMM YYYY h:mm A'
6917        },
6918        calendar : {
6919            sameDay : '[Today at] LT',
6920            nextDay : '[Tomorrow at] LT',
6921            nextWeek : 'dddd [at] LT',
6922            lastDay : '[Yesterday at] LT',
6923            lastWeek : '[Last] dddd [at] LT',
6924            sameElse : 'L'
6925        },
6926        relativeTime : {
6927            future : 'in %s',
6928            past : '%s ago',
6929            s : 'a few seconds',
6930            ss : '%d seconds',
6931            m : 'a minute',
6932            mm : '%d minutes',
6933            h : 'an hour',
6934            hh : '%d hours',
6935            d : 'a day',
6936            dd : '%d days',
6937            M : 'a month',
6938            MM : '%d months',
6939            y : 'a year',
6940            yy : '%d years'
6941        },
6942        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6943        ordinal : function (number) {
6944            var b = number % 10,
6945                output = (~~(number % 100 / 10) === 1) ? 'th' :
6946                (b === 1) ? 'st' :
6947                (b === 2) ? 'nd' :
6948                (b === 3) ? 'rd' : 'th';
6949            return number + output;
6950        },
6951        week : {
6952            dow : 1, // Monday is the first day of the week.
6953            doy : 4  // The week that contains Jan 4th is the first week of the year.
6954        }
6955    });
6956
6957    //! moment.js locale configuration
6958
6959    hooks.defineLocale('eo', {
6960        months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro'.split('_'),
6961        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aÅ­g_sep_okt_nov_dec'.split('_'),
6962        weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
6963        weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
6964        weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
6965        longDateFormat : {
6966            LT : 'HH:mm',
6967            LTS : 'HH:mm:ss',
6968            L : 'YYYY-MM-DD',
6969            LL : 'D[-a de] MMMM, YYYY',
6970            LLL : 'D[-a de] MMMM, YYYY HH:mm',
6971            LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'
6972        },
6973        meridiemParse: /[ap]\.t\.m/i,
6974        isPM: function (input) {
6975            return input.charAt(0).toLowerCase() === 'p';
6976        },
6977        meridiem : function (hours, minutes, isLower) {
6978            if (hours > 11) {
6979                return isLower ? 'p.t.m.' : 'P.T.M.';
6980            } else {
6981                return isLower ? 'a.t.m.' : 'A.T.M.';
6982            }
6983        },
6984        calendar : {
6985            sameDay : '[HodiaÅ­ je] LT',
6986            nextDay : '[MorgaÅ­ je] LT',
6987            nextWeek : 'dddd [je] LT',
6988            lastDay : '[HieraÅ­ je] LT',
6989            lastWeek : '[pasinta] dddd [je] LT',
6990            sameElse : 'L'
6991        },
6992        relativeTime : {
6993            future : 'post %s',
6994            past : 'antaÅ­ %s',
6995            s : 'sekundoj',
6996            ss : '%d sekundoj',
6997            m : 'minuto',
6998            mm : '%d minutoj',
6999            h : 'horo',
7000            hh : '%d horoj',
7001            d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo
7002            dd : '%d tagoj',
7003            M : 'monato',
7004            MM : '%d monatoj',
7005            y : 'jaro',
7006            yy : '%d jaroj'
7007        },
7008        dayOfMonthOrdinalParse: /\d{1,2}a/,
7009        ordinal : '%da',
7010        week : {
7011            dow : 1, // Monday is the first day of the week.
7012            doy : 7  // The week that contains Jan 1st is the first week of the year.
7013        }
7014    });
7015
7016    //! moment.js locale configuration
7017
7018    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
7019        monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
7020
7021    var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];
7022    var monthsRegex$1 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
7023
7024    hooks.defineLocale('es-do', {
7025        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7026        monthsShort : function (m, format) {
7027            if (!m) {
7028                return monthsShortDot;
7029            } else if (/-MMM-/.test(format)) {
7030                return monthsShort$1[m.month()];
7031            } else {
7032                return monthsShortDot[m.month()];
7033            }
7034        },
7035        monthsRegex: monthsRegex$1,
7036        monthsShortRegex: monthsRegex$1,
7037        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
7038        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
7039        monthsParse: monthsParse,
7040        longMonthsParse: monthsParse,
7041        shortMonthsParse: monthsParse,
7042        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7043        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7044        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7045        weekdaysParseExact : true,
7046        longDateFormat : {
7047            LT : 'h:mm A',
7048            LTS : 'h:mm:ss A',
7049            L : 'DD/MM/YYYY',
7050            LL : 'D [de] MMMM [de] YYYY',
7051            LLL : 'D [de] MMMM [de] YYYY h:mm A',
7052            LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'
7053        },
7054        calendar : {
7055            sameDay : function () {
7056                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7057            },
7058            nextDay : function () {
7059                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7060            },
7061            nextWeek : function () {
7062                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7063            },
7064            lastDay : function () {
7065                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7066            },
7067            lastWeek : function () {
7068                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7069            },
7070            sameElse : 'L'
7071        },
7072        relativeTime : {
7073            future : 'en %s',
7074            past : 'hace %s',
7075            s : 'unos segundos',
7076            ss : '%d segundos',
7077            m : 'un minuto',
7078            mm : '%d minutos',
7079            h : 'una hora',
7080            hh : '%d horas',
7081            d : 'un día',
7082            dd : '%d días',
7083            M : 'un mes',
7084            MM : '%d meses',
7085            y : 'un año',
7086            yy : '%d años'
7087        },
7088        dayOfMonthOrdinalParse : /\d{1,2}º/,
7089        ordinal : '%dº',
7090        week : {
7091            dow : 1, // Monday is the first day of the week.
7092            doy : 4  // The week that contains Jan 4th is the first week of the year.
7093        }
7094    });
7095
7096    //! moment.js locale configuration
7097
7098    var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
7099        monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
7100
7101    hooks.defineLocale('es-us', {
7102        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7103        monthsShort : function (m, format) {
7104            if (!m) {
7105                return monthsShortDot$1;
7106            } else if (/-MMM-/.test(format)) {
7107                return monthsShort$2[m.month()];
7108            } else {
7109                return monthsShortDot$1[m.month()];
7110            }
7111        },
7112        monthsParseExact : true,
7113        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7114        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7115        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7116        weekdaysParseExact : true,
7117        longDateFormat : {
7118            LT : 'h:mm A',
7119            LTS : 'h:mm:ss A',
7120            L : 'MM/DD/YYYY',
7121            LL : 'MMMM [de] D [de] YYYY',
7122            LLL : 'MMMM [de] D [de] YYYY h:mm A',
7123            LLLL : 'dddd, MMMM [de] D [de] YYYY h:mm A'
7124        },
7125        calendar : {
7126            sameDay : function () {
7127                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7128            },
7129            nextDay : function () {
7130                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7131            },
7132            nextWeek : function () {
7133                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7134            },
7135            lastDay : function () {
7136                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7137            },
7138            lastWeek : function () {
7139                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7140            },
7141            sameElse : 'L'
7142        },
7143        relativeTime : {
7144            future : 'en %s',
7145            past : 'hace %s',
7146            s : 'unos segundos',
7147            ss : '%d segundos',
7148            m : 'un minuto',
7149            mm : '%d minutos',
7150            h : 'una hora',
7151            hh : '%d horas',
7152            d : 'un día',
7153            dd : '%d días',
7154            M : 'un mes',
7155            MM : '%d meses',
7156            y : 'un año',
7157            yy : '%d años'
7158        },
7159        dayOfMonthOrdinalParse : /\d{1,2}º/,
7160        ordinal : '%dº',
7161        week : {
7162            dow : 0, // Sunday is the first day of the week.
7163            doy : 6  // The week that contains Jan 1st is the first week of the year.
7164        }
7165    });
7166
7167    //! moment.js locale configuration
7168
7169    var monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
7170        monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
7171
7172    var monthsParse$1 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];
7173    var monthsRegex$2 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
7174
7175    hooks.defineLocale('es', {
7176        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7177        monthsShort : function (m, format) {
7178            if (!m) {
7179                return monthsShortDot$2;
7180            } else if (/-MMM-/.test(format)) {
7181                return monthsShort$3[m.month()];
7182            } else {
7183                return monthsShortDot$2[m.month()];
7184            }
7185        },
7186        monthsRegex : monthsRegex$2,
7187        monthsShortRegex : monthsRegex$2,
7188        monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
7189        monthsShortStrictRegex : /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
7190        monthsParse : monthsParse$1,
7191        longMonthsParse : monthsParse$1,
7192        shortMonthsParse : monthsParse$1,
7193        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7194        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7195        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7196        weekdaysParseExact : true,
7197        longDateFormat : {
7198            LT : 'H:mm',
7199            LTS : 'H:mm:ss',
7200            L : 'DD/MM/YYYY',
7201            LL : 'D [de] MMMM [de] YYYY',
7202            LLL : 'D [de] MMMM [de] YYYY H:mm',
7203            LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
7204        },
7205        calendar : {
7206            sameDay : function () {
7207                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7208            },
7209            nextDay : function () {
7210                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7211            },
7212            nextWeek : function () {
7213                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7214            },
7215            lastDay : function () {
7216                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7217            },
7218            lastWeek : function () {
7219                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7220            },
7221            sameElse : 'L'
7222        },
7223        relativeTime : {
7224            future : 'en %s',
7225            past : 'hace %s',
7226            s : 'unos segundos',
7227            ss : '%d segundos',
7228            m : 'un minuto',
7229            mm : '%d minutos',
7230            h : 'una hora',
7231            hh : '%d horas',
7232            d : 'un día',
7233            dd : '%d días',
7234            M : 'un mes',
7235            MM : '%d meses',
7236            y : 'un año',
7237            yy : '%d años'
7238        },
7239        dayOfMonthOrdinalParse : /\d{1,2}º/,
7240        ordinal : '%dº',
7241        week : {
7242            dow : 1, // Monday is the first day of the week.
7243            doy : 4  // The week that contains Jan 4th is the first week of the year.
7244        }
7245    });
7246
7247    //! moment.js locale configuration
7248
7249    function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
7250        var format = {
7251            's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
7252            'ss': [number + 'sekundi', number + 'sekundit'],
7253            'm' : ['ühe minuti', 'üks minut'],
7254            'mm': [number + ' minuti', number + ' minutit'],
7255            'h' : ['ühe tunni', 'tund aega', 'üks tund'],
7256            'hh': [number + ' tunni', number + ' tundi'],
7257            'd' : ['ühe päeva', 'üks päev'],
7258            'M' : ['kuu aja', 'kuu aega', 'üks kuu'],
7259            'MM': [number + ' kuu', number + ' kuud'],
7260            'y' : ['ühe aasta', 'aasta', 'üks aasta'],
7261            'yy': [number + ' aasta', number + ' aastat']
7262        };
7263        if (withoutSuffix) {
7264            return format[key][2] ? format[key][2] : format[key][1];
7265        }
7266        return isFuture ? format[key][0] : format[key][1];
7267    }
7268
7269    hooks.defineLocale('et', {
7270        months        : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
7271        monthsShort   : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
7272        weekdays      : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
7273        weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),
7274        weekdaysMin   : 'P_E_T_K_N_R_L'.split('_'),
7275        longDateFormat : {
7276            LT   : 'H:mm',
7277            LTS : 'H:mm:ss',
7278            L    : 'DD.MM.YYYY',
7279            LL   : 'D. MMMM YYYY',
7280            LLL  : 'D. MMMM YYYY H:mm',
7281            LLLL : 'dddd, D. MMMM YYYY H:mm'
7282        },
7283        calendar : {
7284            sameDay  : '[Täna,] LT',
7285            nextDay  : '[Homme,] LT',
7286            nextWeek : '[Järgmine] dddd LT',
7287            lastDay  : '[Eile,] LT',
7288            lastWeek : '[Eelmine] dddd LT',
7289            sameElse : 'L'
7290        },
7291        relativeTime : {
7292            future : '%s pärast',
7293            past   : '%s tagasi',
7294            s      : processRelativeTime$3,
7295            ss     : processRelativeTime$3,
7296            m      : processRelativeTime$3,
7297            mm     : processRelativeTime$3,
7298            h      : processRelativeTime$3,
7299            hh     : processRelativeTime$3,
7300            d      : processRelativeTime$3,
7301            dd     : '%d päeva',
7302            M      : processRelativeTime$3,
7303            MM     : processRelativeTime$3,
7304            y      : processRelativeTime$3,
7305            yy     : processRelativeTime$3
7306        },
7307        dayOfMonthOrdinalParse: /\d{1,2}\./,
7308        ordinal : '%d.',
7309        week : {
7310            dow : 1, // Monday is the first day of the week.
7311            doy : 4  // The week that contains Jan 4th is the first week of the year.
7312        }
7313    });
7314
7315    //! moment.js locale configuration
7316
7317    hooks.defineLocale('eu', {
7318        months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
7319        monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
7320        monthsParseExact : true,
7321        weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
7322        weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),
7323        weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),
7324        weekdaysParseExact : true,
7325        longDateFormat : {
7326            LT : 'HH:mm',
7327            LTS : 'HH:mm:ss',
7328            L : 'YYYY-MM-DD',
7329            LL : 'YYYY[ko] MMMM[ren] D[a]',
7330            LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',
7331            LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
7332            l : 'YYYY-M-D',
7333            ll : 'YYYY[ko] MMM D[a]',
7334            lll : 'YYYY[ko] MMM D[a] HH:mm',
7335            llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'
7336        },
7337        calendar : {
7338            sameDay : '[gaur] LT[etan]',
7339            nextDay : '[bihar] LT[etan]',
7340            nextWeek : 'dddd LT[etan]',
7341            lastDay : '[atzo] LT[etan]',
7342            lastWeek : '[aurreko] dddd LT[etan]',
7343            sameElse : 'L'
7344        },
7345        relativeTime : {
7346            future : '%s barru',
7347            past : 'duela %s',
7348            s : 'segundo batzuk',
7349            ss : '%d segundo',
7350            m : 'minutu bat',
7351            mm : '%d minutu',
7352            h : 'ordu bat',
7353            hh : '%d ordu',
7354            d : 'egun bat',
7355            dd : '%d egun',
7356            M : 'hilabete bat',
7357            MM : '%d hilabete',
7358            y : 'urte bat',
7359            yy : '%d urte'
7360        },
7361        dayOfMonthOrdinalParse: /\d{1,2}\./,
7362        ordinal : '%d.',
7363        week : {
7364            dow : 1, // Monday is the first day of the week.
7365            doy : 7  // The week that contains Jan 1st is the first week of the year.
7366        }
7367    });
7368
7369    //! moment.js locale configuration
7370
7371    var symbolMap$5 = {
7372        '1': 'Û±',
7373        '2': 'Û²',
7374        '3': 'Û³',
7375        '4': 'Û´',
7376        '5': 'Ûµ',
7377        '6': 'Û¶',
7378        '7': 'Û·',
7379        '8': 'Û¸',
7380        '9': 'Û¹',
7381        '0': 'Û°'
7382    }, numberMap$4 = {
7383        'Û±': '1',
7384        'Û²': '2',
7385        'Û³': '3',
7386        'Û´': '4',
7387        'Ûµ': '5',
7388        'Û¶': '6',
7389        'Û·': '7',
7390        'Û¸': '8',
7391        'Û¹': '9',
7392        'Û°': '0'
7393    };
7394
7395    hooks.defineLocale('fa', {
7396        months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
7397        monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
vendor: 105,372 bytes, lines 7398-10113
7398        weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
7399        weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
7400        weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
7401        weekdaysParseExact : true,
7402        longDateFormat : {
7403            LT : 'HH:mm',
7404            LTS : 'HH:mm:ss',
7405            L : 'DD/MM/YYYY',
7406            LL : 'D MMMM YYYY',
7407            LLL : 'D MMMM YYYY HH:mm',
7408            LLLL : 'dddd, D MMMM YYYY HH:mm'
7409        },
7410        meridiemParse: /قبل از ظهر|بعد از ظهر/,
7411        isPM: function (input) {
7412            return /بعد از ظهر/.test(input);
7413        },
7414        meridiem : function (hour, minute, isLower) {
7415            if (hour < 12) {
7416                return 'قبل از ظهر';
7417            } else {
7418                return 'بعد از ظهر';
7419            }
7420        },
7421        calendar : {
7422            sameDay : '[امروز ساعت] LT',
7423            nextDay : '[فردا ساعت] LT',
7424            nextWeek : 'dddd [ساعت] LT',
7425            lastDay : '[دیروز ساعت] LT',
7426            lastWeek : 'dddd [پیش] [ساعت] LT',
7427            sameElse : 'L'
7428        },
7429        relativeTime : {
7430            future : 'در %s',
7431            past : '%s پیش',
7432            s : 'چند ثانیه',
7433            ss : 'ثانیه d%',
7434            m : 'یک دقیقه',
7435            mm : '%d دقیقه',
7436            h : 'یک ساعت',
7437            hh : '%d ساعت',
7438            d : 'یک روز',
7439            dd : '%d روز',
7440            M : 'یک ماه',
7441            MM : '%d ماه',
7442            y : 'یک سال',
7443            yy : '%d سال'
7444        },
7445        preparse: function (string) {
7446            return string.replace(/[Û°-Û¹]/g, function (match) {
7447                return numberMap$4[match];
7448            }).replace(/،/g, ',');
7449        },
7450        postformat: function (string) {
7451            return string.replace(/\d/g, function (match) {
7452                return symbolMap$5[match];
7453            }).replace(/,/g, '،');
7454        },
7455        dayOfMonthOrdinalParse: /\d{1,2}م/,
7456        ordinal : '%dم',
7457        week : {
7458            dow : 6, // Saturday is the first day of the week.
7459            doy : 12 // The week that contains Jan 1st is the first week of the year.
7460        }
7461    });
7462
7463    //! moment.js locale configuration
7464
7465    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),
7466        numbersFuture = [
7467            'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
7468            numbersPast[7], numbersPast[8], numbersPast[9]
7469        ];
7470    function translate$2(number, withoutSuffix, key, isFuture) {
7471        var result = '';
7472        switch (key) {
7473            case 's':
7474                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
7475            case 'ss':
7476                return isFuture ? 'sekunnin' : 'sekuntia';
7477            case 'm':
7478                return isFuture ? 'minuutin' : 'minuutti';
7479            case 'mm':
7480                result = isFuture ? 'minuutin' : 'minuuttia';
7481                break;
7482            case 'h':
7483                return isFuture ? 'tunnin' : 'tunti';
7484            case 'hh':
7485                result = isFuture ? 'tunnin' : 'tuntia';
7486                break;
7487            case 'd':
7488                return isFuture ? 'päivän' : 'päivä';
7489            case 'dd':
7490                result = isFuture ? 'päivän' : 'päivää';
7491                break;
7492            case 'M':
7493                return isFuture ? 'kuukauden' : 'kuukausi';
7494            case 'MM':
7495                result = isFuture ? 'kuukauden' : 'kuukautta';
7496                break;
7497            case 'y':
7498                return isFuture ? 'vuoden' : 'vuosi';
7499            case 'yy':
7500                result = isFuture ? 'vuoden' : 'vuotta';
7501                break;
7502        }
7503        result = verbalNumber(number, isFuture) + ' ' + result;
7504        return result;
7505    }
7506    function verbalNumber(number, isFuture) {
7507        return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
7508    }
7509
7510    hooks.defineLocale('fi', {
7511        months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
7512        monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
7513        weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
7514        weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),
7515        weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),
7516        longDateFormat : {
7517            LT : 'HH.mm',
7518            LTS : 'HH.mm.ss',
7519            L : 'DD.MM.YYYY',
7520            LL : 'Do MMMM[ta] YYYY',
7521            LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',
7522            LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
7523            l : 'D.M.YYYY',
7524            ll : 'Do MMM YYYY',
7525            lll : 'Do MMM YYYY, [klo] HH.mm',
7526            llll : 'ddd, Do MMM YYYY, [klo] HH.mm'
7527        },
7528        calendar : {
7529            sameDay : '[tänään] [klo] LT',
7530            nextDay : '[huomenna] [klo] LT',
7531            nextWeek : 'dddd [klo] LT',
7532            lastDay : '[eilen] [klo] LT',
7533            lastWeek : '[viime] dddd[na] [klo] LT',
7534            sameElse : 'L'
7535        },
7536        relativeTime : {
7537            future : '%s päästä',
7538            past : '%s sitten',
7539            s : translate$2,
7540            ss : translate$2,
7541            m : translate$2,
7542            mm : translate$2,
7543            h : translate$2,
7544            hh : translate$2,
7545            d : translate$2,
7546            dd : translate$2,
7547            M : translate$2,
7548            MM : translate$2,
7549            y : translate$2,
7550            yy : translate$2
7551        },
7552        dayOfMonthOrdinalParse: /\d{1,2}\./,
7553        ordinal : '%d.',
7554        week : {
7555            dow : 1, // Monday is the first day of the week.
7556            doy : 4  // The week that contains Jan 4th is the first week of the year.
7557        }
7558    });
7559
7560    //! moment.js locale configuration
7561
7562    hooks.defineLocale('fo', {
7563        months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
7564        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
7565        weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
7566        weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
7567        weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),
7568        longDateFormat : {
7569            LT : 'HH:mm',
7570            LTS : 'HH:mm:ss',
7571            L : 'DD/MM/YYYY',
7572            LL : 'D MMMM YYYY',
7573            LLL : 'D MMMM YYYY HH:mm',
7574            LLLL : 'dddd D. MMMM, YYYY HH:mm'
7575        },
7576        calendar : {
7577            sameDay : '[Í dag kl.] LT',
7578            nextDay : '[Í morgin kl.] LT',
7579            nextWeek : 'dddd [kl.] LT',
7580            lastDay : '[Í gjár kl.] LT',
7581            lastWeek : '[síðstu] dddd [kl] LT',
7582            sameElse : 'L'
7583        },
7584        relativeTime : {
7585            future : 'um %s',
7586            past : '%s síðani',
7587            s : 'fá sekund',
7588            ss : '%d sekundir',
7589            m : 'ein minutt',
7590            mm : '%d minuttir',
7591            h : 'ein tími',
7592            hh : '%d tímar',
7593            d : 'ein dagur',
7594            dd : '%d dagar',
7595            M : 'ein mánaði',
7596            MM : '%d mánaðir',
7597            y : 'eitt ár',
7598            yy : '%d ár'
7599        },
7600        dayOfMonthOrdinalParse: /\d{1,2}\./,
7601        ordinal : '%d.',
7602        week : {
7603            dow : 1, // Monday is the first day of the week.
7604            doy : 4  // The week that contains Jan 4th is the first week of the year.
7605        }
7606    });
7607
7608    //! moment.js locale configuration
7609
7610    hooks.defineLocale('fr-ca', {
7611        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7612        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7613        monthsParseExact : true,
7614        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7615        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7616        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),
7617        weekdaysParseExact : true,
7618        longDateFormat : {
7619            LT : 'HH:mm',
7620            LTS : 'HH:mm:ss',
7621            L : 'YYYY-MM-DD',
7622            LL : 'D MMMM YYYY',
7623            LLL : 'D MMMM YYYY HH:mm',
7624            LLLL : 'dddd D MMMM YYYY HH:mm'
7625        },
7626        calendar : {
7627            sameDay : '[Aujourd’hui à] LT',
7628            nextDay : '[Demain à] LT',
7629            nextWeek : 'dddd [à] LT',
7630            lastDay : '[Hier à] LT',
7631            lastWeek : 'dddd [dernier à] LT',
7632            sameElse : 'L'
7633        },
7634        relativeTime : {
7635            future : 'dans %s',
7636            past : 'il y a %s',
7637            s : 'quelques secondes',
7638            ss : '%d secondes',
7639            m : 'une minute',
7640            mm : '%d minutes',
7641            h : 'une heure',
7642            hh : '%d heures',
7643            d : 'un jour',
7644            dd : '%d jours',
7645            M : 'un mois',
7646            MM : '%d mois',
7647            y : 'un an',
7648            yy : '%d ans'
7649        },
7650        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
7651        ordinal : function (number, period) {
7652            switch (period) {
7653                // Words with masculine grammatical gender: mois, trimestre, jour
7654                default:
7655                case 'M':
7656                case 'Q':
7657                case 'D':
7658                case 'DDD':
7659                case 'd':
7660                    return number + (number === 1 ? 'er' : 'e');
7661
7662                // Words with feminine grammatical gender: semaine
7663                case 'w':
7664                case 'W':
7665                    return number + (number === 1 ? 're' : 'e');
7666            }
7667        }
7668    });
7669
7670    //! moment.js locale configuration
7671
7672    hooks.defineLocale('fr-ch', {
7673        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7674        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7675        monthsParseExact : true,
7676        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7677        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7678        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),
7679        weekdaysParseExact : true,
7680        longDateFormat : {
7681            LT : 'HH:mm',
7682            LTS : 'HH:mm:ss',
7683            L : 'DD.MM.YYYY',
7684            LL : 'D MMMM YYYY',
7685            LLL : 'D MMMM YYYY HH:mm',
7686            LLLL : 'dddd D MMMM YYYY HH:mm'
7687        },
7688        calendar : {
7689            sameDay : '[Aujourd’hui à] LT',
7690            nextDay : '[Demain à] LT',
7691            nextWeek : 'dddd [à] LT',
7692            lastDay : '[Hier à] LT',
7693            lastWeek : 'dddd [dernier à] LT',
7694            sameElse : 'L'
7695        },
7696        relativeTime : {
7697            future : 'dans %s',
7698            past : 'il y a %s',
7699            s : 'quelques secondes',
7700            ss : '%d secondes',
7701            m : 'une minute',
7702            mm : '%d minutes',
7703            h : 'une heure',
7704            hh : '%d heures',
7705            d : 'un jour',
7706            dd : '%d jours',
7707            M : 'un mois',
7708            MM : '%d mois',
7709            y : 'un an',
7710            yy : '%d ans'
7711        },
7712        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
7713        ordinal : function (number, period) {
7714            switch (period) {
7715                // Words with masculine grammatical gender: mois, trimestre, jour
7716                default:
7717                case 'M':
7718                case 'Q':
7719                case 'D':
7720                case 'DDD':
7721                case 'd':
7722                    return number + (number === 1 ? 'er' : 'e');
7723
7724                // Words with feminine grammatical gender: semaine
7725                case 'w':
7726                case 'W':
7727                    return number + (number === 1 ? 're' : 'e');
7728            }
7729        },
7730        week : {
7731            dow : 1, // Monday is the first day of the week.
7732            doy : 4  // The week that contains Jan 4th is the first week of the year.
7733        }
7734    });
7735
7736    //! moment.js locale configuration
7737
7738    hooks.defineLocale('fr', {
7739        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7740        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7741        monthsParseExact : true,
7742        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7743        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7744        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),
7745        weekdaysParseExact : true,
7746        longDateFormat : {
7747            LT : 'HH:mm',
7748            LTS : 'HH:mm:ss',
7749            L : 'DD/MM/YYYY',
7750            LL : 'D MMMM YYYY',
7751            LLL : 'D MMMM YYYY HH:mm',
7752            LLLL : 'dddd D MMMM YYYY HH:mm'
7753        },
7754        calendar : {
7755            sameDay : '[Aujourd’hui à] LT',
7756            nextDay : '[Demain à] LT',
7757            nextWeek : 'dddd [à] LT',
7758            lastDay : '[Hier à] LT',
7759            lastWeek : 'dddd [dernier à] LT',
7760            sameElse : 'L'
7761        },
7762        relativeTime : {
7763            future : 'dans %s',
7764            past : 'il y a %s',
7765            s : 'quelques secondes',
7766            ss : '%d secondes',
7767            m : 'une minute',
7768            mm : '%d minutes',
7769            h : 'une heure',
7770            hh : '%d heures',
7771            d : 'un jour',
7772            dd : '%d jours',
7773            M : 'un mois',
7774            MM : '%d mois',
7775            y : 'un an',
7776            yy : '%d ans'
7777        },
7778        dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
7779        ordinal : function (number, period) {
7780            switch (period) {
7781                // TODO: Return 'e' when day of month > 1. Move this case inside
7782                // block for masculine words below.
7783                // See https://github.com/moment/moment/issues/3375
7784                case 'D':
7785                    return number + (number === 1 ? 'er' : '');
7786
7787                // Words with masculine grammatical gender: mois, trimestre, jour
7788                default:
7789                case 'M':
7790                case 'Q':
7791                case 'DDD':
7792                case 'd':
7793                    return number + (number === 1 ? 'er' : 'e');
7794
7795                // Words with feminine grammatical gender: semaine
7796                case 'w':
7797                case 'W':
7798                    return number + (number === 1 ? 're' : 'e');
7799            }
7800        },
7801        week : {
7802            dow : 1, // Monday is the first day of the week.
7803            doy : 4  // The week that contains Jan 4th is the first week of the year.
7804        }
7805    });
7806
7807    //! moment.js locale configuration
7808
7809    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
7810        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
7811
7812    hooks.defineLocale('fy', {
7813        months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
7814        monthsShort : function (m, format) {
7815            if (!m) {
7816                return monthsShortWithDots;
7817            } else if (/-MMM-/.test(format)) {
7818                return monthsShortWithoutDots[m.month()];
7819            } else {
7820                return monthsShortWithDots[m.month()];
7821            }
7822        },
7823        monthsParseExact : true,
7824        weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
7825        weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),
7826        weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
7827        weekdaysParseExact : true,
7828        longDateFormat : {
7829            LT : 'HH:mm',
7830            LTS : 'HH:mm:ss',
7831            L : 'DD-MM-YYYY',
7832            LL : 'D MMMM YYYY',
7833            LLL : 'D MMMM YYYY HH:mm',
7834            LLLL : 'dddd D MMMM YYYY HH:mm'
7835        },
7836        calendar : {
7837            sameDay: '[hjoed om] LT',
7838            nextDay: '[moarn om] LT',
7839            nextWeek: 'dddd [om] LT',
7840            lastDay: '[juster om] LT',
7841            lastWeek: '[ôfrûne] dddd [om] LT',
7842            sameElse: 'L'
7843        },
7844        relativeTime : {
7845            future : 'oer %s',
7846            past : '%s lyn',
7847            s : 'in pear sekonden',
7848            ss : '%d sekonden',
7849            m : 'ien minút',
7850            mm : '%d minuten',
7851            h : 'ien oere',
7852            hh : '%d oeren',
7853            d : 'ien dei',
7854            dd : '%d dagen',
7855            M : 'ien moanne',
7856            MM : '%d moannen',
7857            y : 'ien jier',
7858            yy : '%d jierren'
7859        },
7860        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
7861        ordinal : function (number) {
7862            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
7863        },
7864        week : {
7865            dow : 1, // Monday is the first day of the week.
7866            doy : 4  // The week that contains Jan 4th is the first week of the year.
7867        }
7868    });
7869
7870    //! moment.js locale configuration
7871
7872    var months$5 = [
7873        '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'
7874    ];
7875
7876    var monthsShort$4 = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];
7877
7878    var weekdays$1 = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];
7879
7880    var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];
7881
7882    var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
7883
7884    hooks.defineLocale('gd', {
7885        months : months$5,
7886        monthsShort : monthsShort$4,
7887        monthsParseExact : true,
7888        weekdays : weekdays$1,
7889        weekdaysShort : weekdaysShort,
7890        weekdaysMin : weekdaysMin,
7891        longDateFormat : {
7892            LT : 'HH:mm',
7893            LTS : 'HH:mm:ss',
7894            L : 'DD/MM/YYYY',
7895            LL : 'D MMMM YYYY',
7896            LLL : 'D MMMM YYYY HH:mm',
7897            LLLL : 'dddd, D MMMM YYYY HH:mm'
7898        },
7899        calendar : {
7900            sameDay : '[An-diugh aig] LT',
7901            nextDay : '[A-màireach aig] LT',
7902            nextWeek : 'dddd [aig] LT',
7903            lastDay : '[An-dè aig] LT',
7904            lastWeek : 'dddd [seo chaidh] [aig] LT',
7905            sameElse : 'L'
7906        },
7907        relativeTime : {
7908            future : 'ann an %s',
7909            past : 'bho chionn %s',
7910            s : 'beagan diogan',
7911            ss : '%d diogan',
7912            m : 'mionaid',
7913            mm : '%d mionaidean',
7914            h : 'uair',
7915            hh : '%d uairean',
7916            d : 'latha',
7917            dd : '%d latha',
7918            M : 'mìos',
7919            MM : '%d mìosan',
7920            y : 'bliadhna',
7921            yy : '%d bliadhna'
7922        },
7923        dayOfMonthOrdinalParse : /\d{1,2}(d|na|mh)/,
7924        ordinal : function (number) {
7925            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
7926            return number + output;
7927        },
7928        week : {
7929            dow : 1, // Monday is the first day of the week.
7930            doy : 4  // The week that contains Jan 4th is the first week of the year.
7931        }
7932    });
7933
7934    //! moment.js locale configuration
7935
7936    hooks.defineLocale('gl', {
7937        months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),
7938        monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),
7939        monthsParseExact: true,
7940        weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
7941        weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
7942        weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),
7943        weekdaysParseExact : true,
7944        longDateFormat : {
7945            LT : 'H:mm',
7946            LTS : 'H:mm:ss',
7947            L : 'DD/MM/YYYY',
7948            LL : 'D [de] MMMM [de] YYYY',
7949            LLL : 'D [de] MMMM [de] YYYY H:mm',
7950            LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
7951        },
7952        calendar : {
7953            sameDay : function () {
7954                return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
7955            },
7956            nextDay : function () {
7957                return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
7958            },
7959            nextWeek : function () {
7960                return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
7961            },
7962            lastDay : function () {
7963                return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';
7964            },
7965            lastWeek : function () {
7966                return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
7967            },
7968            sameElse : 'L'
7969        },
7970        relativeTime : {
7971            future : function (str) {
7972                if (str.indexOf('un') === 0) {
7973                    return 'n' + str;
7974                }
7975                return 'en ' + str;
7976            },
7977            past : 'hai %s',
7978            s : 'uns segundos',
7979            ss : '%d segundos',
7980            m : 'un minuto',
7981            mm : '%d minutos',
7982            h : 'unha hora',
7983            hh : '%d horas',
7984            d : 'un día',
7985            dd : '%d días',
7986            M : 'un mes',
7987            MM : '%d meses',
7988            y : 'un ano',
7989            yy : '%d anos'
7990        },
7991        dayOfMonthOrdinalParse : /\d{1,2}º/,
7992        ordinal : '%dº',
7993        week : {
7994            dow : 1, // Monday is the first day of the week.
7995            doy : 4  // The week that contains Jan 4th is the first week of the year.
7996        }
7997    });
7998
7999    //! moment.js locale configuration
8000
8001    function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
8002        var format = {
8003            's': ['thodde secondanim', 'thodde second'],
8004            'ss': [number + ' secondanim', number + ' second'],
8005            'm': ['eka mintan', 'ek minute'],
8006            'mm': [number + ' mintanim', number + ' mintam'],
8007            'h': ['eka horan', 'ek hor'],
8008            'hh': [number + ' horanim', number + ' horam'],
8009            'd': ['eka disan', 'ek dis'],
8010            'dd': [number + ' disanim', number + ' dis'],
8011            'M': ['eka mhoinean', 'ek mhoino'],
8012            'MM': [number + ' mhoineanim', number + ' mhoine'],
8013            'y': ['eka vorsan', 'ek voros'],
8014            'yy': [number + ' vorsanim', number + ' vorsam']
8015        };
8016        return withoutSuffix ? format[key][0] : format[key][1];
8017    }
8018
8019    hooks.defineLocale('gom-latn', {
8020        months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),
8021        monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
8022        monthsParseExact : true,
8023        weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\'var'.split('_'),
8024        weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
8025        weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
8026        weekdaysParseExact : true,
8027        longDateFormat : {
8028            LT : 'A h:mm [vazta]',
8029            LTS : 'A h:mm:ss [vazta]',
8030            L : 'DD-MM-YYYY',
8031            LL : 'D MMMM YYYY',
8032            LLL : 'D MMMM YYYY A h:mm [vazta]',
8033            LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',
8034            llll: 'ddd, D MMM YYYY, A h:mm [vazta]'
8035        },
8036        calendar : {
8037            sameDay: '[Aiz] LT',
8038            nextDay: '[Faleam] LT',
8039            nextWeek: '[Ieta to] dddd[,] LT',
8040            lastDay: '[Kal] LT',
8041            lastWeek: '[Fatlo] dddd[,] LT',
8042            sameElse: 'L'
8043        },
8044        relativeTime : {
8045            future : '%s',
8046            past : '%s adim',
8047            s : processRelativeTime$4,
8048            ss : processRelativeTime$4,
8049            m : processRelativeTime$4,
8050            mm : processRelativeTime$4,
8051            h : processRelativeTime$4,
8052            hh : processRelativeTime$4,
8053            d : processRelativeTime$4,
8054            dd : processRelativeTime$4,
8055            M : processRelativeTime$4,
8056            MM : processRelativeTime$4,
8057            y : processRelativeTime$4,
8058            yy : processRelativeTime$4
8059        },
8060        dayOfMonthOrdinalParse : /\d{1,2}(er)/,
8061        ordinal : function (number, period) {
8062            switch (period) {
8063                // the ordinal 'er' only applies to day of the month
8064                case 'D':
8065                    return number + 'er';
8066                default:
8067                case 'M':
8068                case 'Q':
8069                case 'DDD':
8070                case 'd':
8071                case 'w':
8072                case 'W':
8073                    return number;
8074            }
8075        },
8076        week : {
8077            dow : 1, // Monday is the first day of the week.
8078            doy : 4  // The week that contains Jan 4th is the first week of the year.
8079        },
8080        meridiemParse: /rati|sokalli|donparam|sanje/,
8081        meridiemHour : function (hour, meridiem) {
8082            if (hour === 12) {
8083                hour = 0;
8084            }
8085            if (meridiem === 'rati') {
8086                return hour < 4 ? hour : hour + 12;
8087            } else if (meridiem === 'sokalli') {
8088                return hour;
8089            } else if (meridiem === 'donparam') {
8090                return hour > 12 ? hour : hour + 12;
8091            } else if (meridiem === 'sanje') {
8092                return hour + 12;
8093            }
8094        },
8095        meridiem : function (hour, minute, isLower) {
8096            if (hour < 4) {
8097                return 'rati';
8098            } else if (hour < 12) {
8099                return 'sokalli';
8100            } else if (hour < 16) {
8101                return 'donparam';
8102            } else if (hour < 20) {
8103                return 'sanje';
8104            } else {
8105                return 'rati';
8106            }
8107        }
8108    });
8109
8110    //! moment.js locale configuration
8111
8112    var symbolMap$6 = {
8113            '1': 'à«§',
8114            '2': '૨',
8115            '3': 'à«©',
8116            '4': '૪',
8117            '5': 'à««',
8118            '6': '૬',
8119            '7': 'à«­',
8120            '8': 'à«®',
8121            '9': '૯',
8122            '0': '૦'
8123        },
8124        numberMap$5 = {
8125            'à«§': '1',
8126            '૨': '2',
8127            'à«©': '3',
8128            '૪': '4',
8129            'à««': '5',
8130            '૬': '6',
8131            'à«­': '7',
8132            'à«®': '8',
8133            '૯': '9',
8134            '૦': '0'
8135        };
8136
8137    hooks.defineLocale('gu', {
8138        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),
8139        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),
8140        monthsParseExact: true,
8141        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),
8142        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
8143        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
8144        longDateFormat: {
8145            LT: 'A h:mm વાગ્યે',
8146            LTS: 'A h:mm:ss વાગ્યે',
8147            L: 'DD/MM/YYYY',
8148            LL: 'D MMMM YYYY',
8149            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
8150            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'
8151        },
8152        calendar: {
8153            sameDay: '[આજ] LT',
8154            nextDay: '[કાલે] LT',
8155            nextWeek: 'dddd, LT',
8156            lastDay: '[ગઇકાલે] LT',
8157            lastWeek: '[પાછલા] dddd, LT',
8158            sameElse: 'L'
8159        },
8160        relativeTime: {
8161            future: '%s મા',
8162            past: '%s પેહલા',
8163            s: 'અમુક પળો',
8164            ss: '%d સેકંડ',
8165            m: 'એક મિનિટ',
8166            mm: '%d મિનિટ',
8167            h: 'એક કલાક',
8168            hh: '%d કલાક',
8169            d: 'એક દિવસ',
8170            dd: '%d દિવસ',
8171            M: 'એક મહિનો',
8172            MM: '%d મહિનો',
8173            y: 'એક વર્ષ',
8174            yy: '%d વર્ષ'
8175        },
8176        preparse: function (string) {
8177            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
8178                return numberMap$5[match];
8179            });
8180        },
8181        postformat: function (string) {
8182            return string.replace(/\d/g, function (match) {
8183                return symbolMap$6[match];
8184            });
8185        },
8186        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
8187        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
8188        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
8189        meridiemHour: function (hour, meridiem) {
8190            if (hour === 12) {
8191                hour = 0;
8192            }
8193            if (meridiem === 'રાત') {
8194                return hour < 4 ? hour : hour + 12;
8195            } else if (meridiem === 'સવાર') {
8196                return hour;
8197            } else if (meridiem === 'બપોર') {
8198                return hour >= 10 ? hour : hour + 12;
8199            } else if (meridiem === 'સાંજ') {
8200                return hour + 12;
8201            }
8202        },
8203        meridiem: function (hour, minute, isLower) {
8204            if (hour < 4) {
8205                return 'રાત';
8206            } else if (hour < 10) {
8207                return 'સવાર';
8208            } else if (hour < 17) {
8209                return 'બપોર';
8210            } else if (hour < 20) {
8211                return 'સાંજ';
8212            } else {
8213                return 'રાત';
8214            }
8215        },
8216        week: {
8217            dow: 0, // Sunday is the first day of the week.
8218            doy: 6 // The week that contains Jan 1st is the first week of the year.
8219        }
8220    });
8221
8222    //! moment.js locale configuration
8223
8224    hooks.defineLocale('he', {
8225        months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
8226        monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
8227        weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
8228        weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
8229        weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),
8230        longDateFormat : {
8231            LT : 'HH:mm',
8232            LTS : 'HH:mm:ss',
8233            L : 'DD/MM/YYYY',
8234            LL : 'D [ב]MMMM YYYY',
8235            LLL : 'D [ב]MMMM YYYY HH:mm',
8236            LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',
8237            l : 'D/M/YYYY',
8238            ll : 'D MMM YYYY',
8239            lll : 'D MMM YYYY HH:mm',
8240            llll : 'ddd, D MMM YYYY HH:mm'
8241        },
8242        calendar : {
8243            sameDay : '[היום ב־]LT',
8244            nextDay : '[מחר ב־]LT',
8245            nextWeek : 'dddd [בשעה] LT',
8246            lastDay : '[אתמול ב־]LT',
8247            lastWeek : '[ביום] dddd [האחרון בשעה] LT',
8248            sameElse : 'L'
8249        },
8250        relativeTime : {
8251            future : 'בעוד %s',
8252            past : 'לפני %s',
8253            s : 'מספר שניות',
8254            ss : '%d שניות',
8255            m : 'דקה',
8256            mm : '%d דקות',
8257            h : 'שעה',
8258            hh : function (number) {
8259                if (number === 2) {
8260                    return 'שעתיים';
8261                }
8262                return number + ' שעות';
8263            },
8264            d : 'יום',
8265            dd : function (number) {
8266                if (number === 2) {
8267                    return 'יומיים';
8268                }
8269                return number + ' ימים';
8270            },
8271            M : 'חודש',
8272            MM : function (number) {
8273                if (number === 2) {
8274                    return 'חודשיים';
8275                }
8276                return number + ' חודשים';
8277            },
8278            y : 'שנה',
8279            yy : function (number) {
8280                if (number === 2) {
8281                    return 'שנתיים';
8282                } else if (number % 10 === 0 && number !== 10) {
8283                    return number + ' שנה';
8284                }
8285                return number + ' שנים';
8286            }
8287        },
8288        meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
8289        isPM : function (input) {
8290            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
8291        },
8292        meridiem : function (hour, minute, isLower) {
8293            if (hour < 5) {
8294                return 'לפנות בוקר';
8295            } else if (hour < 10) {
8296                return 'בבוקר';
8297            } else if (hour < 12) {
8298                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
8299            } else if (hour < 18) {
8300                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
8301            } else {
8302                return 'בערב';
8303            }
8304        }
8305    });
8306
8307    //! moment.js locale configuration
8308
8309    var symbolMap$7 = {
8310        '1': '१',
8311        '2': '२',
8312        '3': '३',
8313        '4': '४',
8314        '5': '५',
8315        '6': '६',
8316        '7': '७',
8317        '8': '८',
8318        '9': '९',
8319        '0': '०'
8320    },
8321    numberMap$6 = {
8322        '१': '1',
8323        '२': '2',
8324        '३': '3',
8325        '४': '4',
8326        '५': '5',
8327        '६': '6',
8328        '७': '7',
8329        '८': '8',
8330        '९': '9',
8331        '०': '0'
8332    };
8333
8334    hooks.defineLocale('hi', {
8335        months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
8336        monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
8337        monthsParseExact: true,
8338        weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
8339        weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
8340        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
8341        longDateFormat : {
8342            LT : 'A h:mm बजे',
8343            LTS : 'A h:mm:ss बजे',
8344            L : 'DD/MM/YYYY',
8345            LL : 'D MMMM YYYY',
8346            LLL : 'D MMMM YYYY, A h:mm बजे',
8347            LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'
8348        },
8349        calendar : {
8350            sameDay : '[आज] LT',
8351            nextDay : '[कल] LT',
8352            nextWeek : 'dddd, LT',
8353            lastDay : '[कल] LT',
8354            lastWeek : '[पिछले] dddd, LT',
8355            sameElse : 'L'
8356        },
8357        relativeTime : {
8358            future : '%s में',
8359            past : '%s पहले',
8360            s : 'कुछ ही क्षण',
8361            ss : '%d सेकंड',
8362            m : 'एक मिनट',
8363            mm : '%d मिनट',
8364            h : 'एक घंटा',
8365            hh : '%d घंटे',
8366            d : 'एक दिन',
8367            dd : '%d दिन',
8368            M : 'एक महीने',
8369            MM : '%d महीने',
8370            y : 'एक वर्ष',
8371            yy : '%d वर्ष'
8372        },
8373        preparse: function (string) {
8374            return string.replace(/[१२३४५६७८९०]/g, function (match) {
8375                return numberMap$6[match];
8376            });
8377        },
8378        postformat: function (string) {
8379            return string.replace(/\d/g, function (match) {
8380                return symbolMap$7[match];
8381            });
8382        },
8383        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
8384        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
8385        meridiemParse: /रात|सुबह|दोपहर|शाम/,
8386        meridiemHour : function (hour, meridiem) {
8387            if (hour === 12) {
8388                hour = 0;
8389            }
8390            if (meridiem === 'रात') {
8391                return hour < 4 ? hour : hour + 12;
8392            } else if (meridiem === 'सुबह') {
8393                return hour;
8394            } else if (meridiem === 'दोपहर') {
8395                return hour >= 10 ? hour : hour + 12;
8396            } else if (meridiem === 'शाम') {
8397                return hour + 12;
8398            }
8399        },
8400        meridiem : function (hour, minute, isLower) {
8401            if (hour < 4) {
8402                return 'रात';
8403            } else if (hour < 10) {
8404                return 'सुबह';
8405            } else if (hour < 17) {
8406                return 'दोपहर';
8407            } else if (hour < 20) {
8408                return 'शाम';
8409            } else {
8410                return 'रात';
8411            }
8412        },
8413        week : {
8414            dow : 0, // Sunday is the first day of the week.
8415            doy : 6  // The week that contains Jan 1st is the first week of the year.
8416        }
8417    });
8418
8419    //! moment.js locale configuration
8420
8421    function translate$3(number, withoutSuffix, key) {
8422        var result = number + ' ';
8423        switch (key) {
8424            case 'ss':
8425                if (number === 1) {
8426                    result += 'sekunda';
8427                } else if (number === 2 || number === 3 || number === 4) {
8428                    result += 'sekunde';
8429                } else {
8430                    result += 'sekundi';
8431                }
8432                return result;
8433            case 'm':
8434                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
8435            case 'mm':
8436                if (number === 1) {
8437                    result += 'minuta';
8438                } else if (number === 2 || number === 3 || number === 4) {
8439                    result += 'minute';
8440                } else {
8441                    result += 'minuta';
8442                }
8443                return result;
8444            case 'h':
8445                return withoutSuffix ? 'jedan sat' : 'jednog sata';
8446            case 'hh':
8447                if (number === 1) {
8448                    result += 'sat';
8449                } else if (number === 2 || number === 3 || number === 4) {
8450                    result += 'sata';
8451                } else {
8452                    result += 'sati';
8453                }
8454                return result;
8455            case 'dd':
8456                if (number === 1) {
8457                    result += 'dan';
8458                } else {
8459                    result += 'dana';
8460                }
8461                return result;
8462            case 'MM':
8463                if (number === 1) {
8464                    result += 'mjesec';
8465                } else if (number === 2 || number === 3 || number === 4) {
8466                    result += 'mjeseca';
8467                } else {
8468                    result += 'mjeseci';
8469                }
8470                return result;
8471            case 'yy':
8472                if (number === 1) {
8473                    result += 'godina';
8474                } else if (number === 2 || number === 3 || number === 4) {
8475                    result += 'godine';
8476                } else {
8477                    result += 'godina';
8478                }
8479                return result;
8480        }
8481    }
8482
8483    hooks.defineLocale('hr', {
8484        months : {
8485            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),
8486            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')
8487        },
8488        monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
8489        monthsParseExact: true,
8490        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
8491        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
8492        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
8493        weekdaysParseExact : true,
8494        longDateFormat : {
8495            LT : 'H:mm',
8496            LTS : 'H:mm:ss',
8497            L : 'DD.MM.YYYY',
8498            LL : 'D. MMMM YYYY',
8499            LLL : 'D. MMMM YYYY H:mm',
8500            LLLL : 'dddd, D. MMMM YYYY H:mm'
8501        },
8502        calendar : {
8503            sameDay  : '[danas u] LT',
8504            nextDay  : '[sutra u] LT',
8505            nextWeek : function () {
8506                switch (this.day()) {
8507                    case 0:
8508                        return '[u] [nedjelju] [u] LT';
8509                    case 3:
8510                        return '[u] [srijedu] [u] LT';
8511                    case 6:
8512                        return '[u] [subotu] [u] LT';
8513                    case 1:
8514                    case 2:
8515                    case 4:
8516                    case 5:
8517                        return '[u] dddd [u] LT';
8518                }
8519            },
8520            lastDay  : '[jučer u] LT',
8521            lastWeek : function () {
8522                switch (this.day()) {
8523                    case 0:
8524                    case 3:
8525                        return '[prošlu] dddd [u] LT';
8526                    case 6:
8527                        return '[prošle] [subote] [u] LT';
8528                    case 1:
8529                    case 2:
8530                    case 4:
8531                    case 5:
8532                        return '[prošli] dddd [u] LT';
8533                }
8534            },
8535            sameElse : 'L'
8536        },
8537        relativeTime : {
8538            future : 'za %s',
8539            past   : 'prije %s',
8540            s      : 'par sekundi',
8541            ss     : translate$3,
8542            m      : translate$3,
8543            mm     : translate$3,
8544            h      : translate$3,
8545            hh     : translate$3,
8546            d      : 'dan',
8547            dd     : translate$3,
8548            M      : 'mjesec',
8549            MM     : translate$3,
8550            y      : 'godinu',
8551            yy     : translate$3
8552        },
8553        dayOfMonthOrdinalParse: /\d{1,2}\./,
8554        ordinal : '%d.',
8555        week : {
8556            dow : 1, // Monday is the first day of the week.
8557            doy : 7  // The week that contains Jan 1st is the first week of the year.
8558        }
8559    });
8560
8561    //! moment.js locale configuration
8562
8563    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
8564    function translate$4(number, withoutSuffix, key, isFuture) {
8565        var num = number;
8566        switch (key) {
8567            case 's':
8568                return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
8569            case 'ss':
8570                return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';
8571            case 'm':
8572                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
8573            case 'mm':
8574                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
8575            case 'h':
8576                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
8577            case 'hh':
8578                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
8579            case 'd':
8580                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
8581            case 'dd':
8582                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
8583            case 'M':
8584                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
8585            case 'MM':
8586                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
8587            case 'y':
8588                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
8589            case 'yy':
8590                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
8591        }
8592        return '';
8593    }
8594    function week(isFuture) {
8595        return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
8596    }
8597
8598    hooks.defineLocale('hu', {
8599        months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
8600        monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),
8601        weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
8602        weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
8603        weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),
8604        longDateFormat : {
8605            LT : 'H:mm',
8606            LTS : 'H:mm:ss',
8607            L : 'YYYY.MM.DD.',
8608            LL : 'YYYY. MMMM D.',
8609            LLL : 'YYYY. MMMM D. H:mm',
8610            LLLL : 'YYYY. MMMM D., dddd H:mm'
8611        },
8612        meridiemParse: /de|du/i,
8613        isPM: function (input) {
8614            return input.charAt(1).toLowerCase() === 'u';
8615        },
8616        meridiem : function (hours, minutes, isLower) {
8617            if (hours < 12) {
8618                return isLower === true ? 'de' : 'DE';
8619            } else {
8620                return isLower === true ? 'du' : 'DU';
8621            }
8622        },
8623        calendar : {
8624            sameDay : '[ma] LT[-kor]',
8625            nextDay : '[holnap] LT[-kor]',
8626            nextWeek : function () {
8627                return week.call(this, true);
8628            },
8629            lastDay : '[tegnap] LT[-kor]',
8630            lastWeek : function () {
8631                return week.call(this, false);
8632            },
8633            sameElse : 'L'
8634        },
8635        relativeTime : {
8636            future : '%s múlva',
8637            past : '%s',
8638            s : translate$4,
8639            ss : translate$4,
8640            m : translate$4,
8641            mm : translate$4,
8642            h : translate$4,
8643            hh : translate$4,
8644            d : translate$4,
8645            dd : translate$4,
8646            M : translate$4,
8647            MM : translate$4,
8648            y : translate$4,
8649            yy : translate$4
8650        },
8651        dayOfMonthOrdinalParse: /\d{1,2}\./,
8652        ordinal : '%d.',
8653        week : {
8654            dow : 1, // Monday is the first day of the week.
8655            doy : 4  // The week that contains Jan 4th is the first week of the year.
8656        }
8657    });
8658
8659    //! moment.js locale configuration
8660
8661    hooks.defineLocale('hy-am', {
8662        months : {
8663            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),
8664            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')
8665        },
8666        monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
8667        weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),
8668        weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
8669        weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
8670        longDateFormat : {
8671            LT : 'HH:mm',
8672            LTS : 'HH:mm:ss',
8673            L : 'DD.MM.YYYY',
8674            LL : 'D MMMM YYYY Õ©.',
8675            LLL : 'D MMMM YYYY Õ©., HH:mm',
8676            LLLL : 'dddd, D MMMM YYYY Õ©., HH:mm'
8677        },
8678        calendar : {
8679            sameDay: '[այսօր] LT',
8680            nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',
8681            lastDay: '[երեկ] LT',
8682            nextWeek: function () {
8683                return 'dddd [օրը ժամը] LT';
8684            },
8685            lastWeek: function () {
8686                return '[անցած] dddd [օրը ժամը] LT';
8687            },
8688            sameElse: 'L'
8689        },
8690        relativeTime : {
8691            future : '%s Õ°Õ¥Õ¿Õ¸',
8692            past : '%s Õ¡Õ¼Õ¡Õ»',
8693            s : 'մի քանի վայրկյան',
8694            ss : '%d վայրկյան',
8695            m : 'րոպե',
8696            mm : '%d րոպե',
8697            h : 'ÕªÕ¡Õ´',
8698            hh : '%d ÕªÕ¡Õ´',
8699            d : 'օր',
8700            dd : '%d օր',
8701            M : 'Õ¡Õ´Õ«Õ½',
8702            MM : '%d Õ¡Õ´Õ«Õ½',
8703            y : 'տարի',
8704            yy : '%d տարի'
8705        },
8706        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
8707        isPM: function (input) {
8708            return /^(ցերեկվա|երեկոյան)$/.test(input);
8709        },
8710        meridiem : function (hour) {
8711            if (hour < 4) {
8712                return 'գիշերվա';
8713            } else if (hour < 12) {
8714                return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';
8715            } else if (hour < 17) {
8716                return 'ցերեկվա';
8717            } else {
8718                return 'երեկոյան';
8719            }
8720        },
8721        dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
8722        ordinal: function (number, period) {
8723            switch (period) {
8724                case 'DDD':
8725                case 'w':
8726                case 'W':
8727                case 'DDDo':
8728                    if (number === 1) {
8729                        return number + '-Õ«Õ¶';
8730                    }
8731                    return number + '-րդ';
8732                default:
8733                    return number;
8734            }
8735        },
8736        week : {
8737            dow : 1, // Monday is the first day of the week.
8738            doy : 7  // The week that contains Jan 1st is the first week of the year.
8739        }
8740    });
8741
8742    //! moment.js locale configuration
8743
8744    hooks.defineLocale('id', {
8745        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
8746        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
8747        weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
8748        weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
8749        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
8750        longDateFormat : {
8751            LT : 'HH.mm',
8752            LTS : 'HH.mm.ss',
8753            L : 'DD/MM/YYYY',
8754            LL : 'D MMMM YYYY',
8755            LLL : 'D MMMM YYYY [pukul] HH.mm',
8756            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
8757        },
8758        meridiemParse: /pagi|siang|sore|malam/,
8759        meridiemHour : function (hour, meridiem) {
8760            if (hour === 12) {
8761                hour = 0;
8762            }
8763            if (meridiem === 'pagi') {
8764                return hour;
8765            } else if (meridiem === 'siang') {
8766                return hour >= 11 ? hour : hour + 12;
8767            } else if (meridiem === 'sore' || meridiem === 'malam') {
8768                return hour + 12;
8769            }
8770        },
8771        meridiem : function (hours, minutes, isLower) {
8772            if (hours < 11) {
8773                return 'pagi';
8774            } else if (hours < 15) {
8775                return 'siang';
8776            } else if (hours < 19) {
8777                return 'sore';
8778            } else {
8779                return 'malam';
8780            }
8781        },
8782        calendar : {
8783            sameDay : '[Hari ini pukul] LT',
8784            nextDay : '[Besok pukul] LT',
8785            nextWeek : 'dddd [pukul] LT',
8786            lastDay : '[Kemarin pukul] LT',
8787            lastWeek : 'dddd [lalu pukul] LT',
8788            sameElse : 'L'
8789        },
8790        relativeTime : {
8791            future : 'dalam %s',
8792            past : '%s yang lalu',
8793            s : 'beberapa detik',
8794            ss : '%d detik',
8795            m : 'semenit',
8796            mm : '%d menit',
8797            h : 'sejam',
8798            hh : '%d jam',
8799            d : 'sehari',
8800            dd : '%d hari',
8801            M : 'sebulan',
8802            MM : '%d bulan',
8803            y : 'setahun',
8804            yy : '%d tahun'
8805        },
8806        week : {
8807            dow : 1, // Monday is the first day of the week.
8808            doy : 7  // The week that contains Jan 1st is the first week of the year.
8809        }
8810    });
8811
8812    //! moment.js locale configuration
8813
8814    function plural$2(n) {
8815        if (n % 100 === 11) {
8816            return true;
8817        } else if (n % 10 === 1) {
8818            return false;
8819        }
8820        return true;
8821    }
8822    function translate$5(number, withoutSuffix, key, isFuture) {
8823        var result = number + ' ';
8824        switch (key) {
8825            case 's':
8826                return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
8827            case 'ss':
8828                if (plural$2(number)) {
8829                    return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');
8830                }
8831                return result + 'sekúnda';
8832            case 'm':
8833                return withoutSuffix ? 'mínúta' : 'mínútu';
8834            case 'mm':
8835                if (plural$2(number)) {
8836                    return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
8837                } else if (withoutSuffix) {
8838                    return result + 'mínúta';
8839                }
8840                return result + 'mínútu';
8841            case 'hh':
8842                if (plural$2(number)) {
8843                    return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
8844                }
8845                return result + 'klukkustund';
8846            case 'd':
8847                if (withoutSuffix) {
8848                    return 'dagur';
8849                }
8850                return isFuture ? 'dag' : 'degi';
8851            case 'dd':
8852                if (plural$2(number)) {
8853                    if (withoutSuffix) {
8854                        return result + 'dagar';
8855                    }
8856                    return result + (isFuture ? 'daga' : 'dögum');
8857                } else if (withoutSuffix) {
8858                    return result + 'dagur';
8859                }
8860                return result + (isFuture ? 'dag' : 'degi');
8861            case 'M':
8862                if (withoutSuffix) {
8863                    return 'mánuður';
8864                }
8865                return isFuture ? 'mánuð' : 'mánuði';
8866            case 'MM':
8867                if (plural$2(number)) {
8868                    if (withoutSuffix) {
8869                        return result + 'mánuðir';
8870                    }
8871                    return result + (isFuture ? 'mánuði' : 'mánuðum');
8872                } else if (withoutSuffix) {
8873                    return result + 'mánuður';
8874                }
8875                return result + (isFuture ? 'mánuð' : 'mánuði');
8876            case 'y':
8877                return withoutSuffix || isFuture ? 'ár' : 'ári';
8878            case 'yy':
8879                if (plural$2(number)) {
8880                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
8881                }
8882                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
8883        }
8884    }
8885
8886    hooks.defineLocale('is', {
8887        months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
8888        monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
8889        weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
8890        weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
8891        weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
8892        longDateFormat : {
8893            LT : 'H:mm',
8894            LTS : 'H:mm:ss',
8895            L : 'DD.MM.YYYY',
8896            LL : 'D. MMMM YYYY',
8897            LLL : 'D. MMMM YYYY [kl.] H:mm',
8898            LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'
8899        },
8900        calendar : {
8901            sameDay : '[í dag kl.] LT',
8902            nextDay : '[á morgun kl.] LT',
8903            nextWeek : 'dddd [kl.] LT',
8904            lastDay : '[í gær kl.] LT',
8905            lastWeek : '[síðasta] dddd [kl.] LT',
8906            sameElse : 'L'
8907        },
8908        relativeTime : {
8909            future : 'eftir %s',
8910            past : 'fyrir %s síðan',
8911            s : translate$5,
8912            ss : translate$5,
8913            m : translate$5,
8914            mm : translate$5,
8915            h : 'klukkustund',
8916            hh : translate$5,
8917            d : translate$5,
8918            dd : translate$5,
8919            M : translate$5,
8920            MM : translate$5,
8921            y : translate$5,
8922            yy : translate$5
8923        },
8924        dayOfMonthOrdinalParse: /\d{1,2}\./,
8925        ordinal : '%d.',
8926        week : {
8927            dow : 1, // Monday is the first day of the week.
8928            doy : 4  // The week that contains Jan 4th is the first week of the year.
8929        }
8930    });
8931
8932    //! moment.js locale configuration
8933
8934    hooks.defineLocale('it', {
8935        months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
8936        monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
8937        weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),
8938        weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
8939        weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),
8940        longDateFormat : {
8941            LT : 'HH:mm',
8942            LTS : 'HH:mm:ss',
8943            L : 'DD/MM/YYYY',
8944            LL : 'D MMMM YYYY',
8945            LLL : 'D MMMM YYYY HH:mm',
8946            LLLL : 'dddd D MMMM YYYY HH:mm'
8947        },
8948        calendar : {
8949            sameDay: '[Oggi alle] LT',
8950            nextDay: '[Domani alle] LT',
8951            nextWeek: 'dddd [alle] LT',
8952            lastDay: '[Ieri alle] LT',
8953            lastWeek: function () {
8954                switch (this.day()) {
8955                    case 0:
8956                        return '[la scorsa] dddd [alle] LT';
8957                    default:
8958                        return '[lo scorso] dddd [alle] LT';
8959                }
8960            },
8961            sameElse: 'L'
8962        },
8963        relativeTime : {
8964            future : function (s) {
8965                return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
8966            },
8967            past : '%s fa',
8968            s : 'alcuni secondi',
8969            ss : '%d secondi',
8970            m : 'un minuto',
8971            mm : '%d minuti',
8972            h : 'un\'ora',
8973            hh : '%d ore',
8974            d : 'un giorno',
8975            dd : '%d giorni',
8976            M : 'un mese',
8977            MM : '%d mesi',
8978            y : 'un anno',
8979            yy : '%d anni'
8980        },
8981        dayOfMonthOrdinalParse : /\d{1,2}º/,
8982        ordinal: '%dº',
8983        week : {
8984            dow : 1, // Monday is the first day of the week.
8985            doy : 4  // The week that contains Jan 4th is the first week of the year.
8986        }
8987    });
8988
8989    //! moment.js locale configuration
8990
8991    hooks.defineLocale('ja', {
8992        months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
8993        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
8994        weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
8995        weekdaysShort : '日_月_火_水_木_金_土'.split('_'),
8996        weekdaysMin : '日_月_火_水_木_金_土'.split('_'),
8997        longDateFormat : {
8998            LT : 'HH:mm',
8999            LTS : 'HH:mm:ss',
9000            L : 'YYYY/MM/DD',
9001            LL : 'YYYY年M月D日',
9002            LLL : 'YYYY年M月D日 HH:mm',
9003            LLLL : 'YYYY年M月D日 dddd HH:mm',
9004            l : 'YYYY/MM/DD',
9005            ll : 'YYYY年M月D日',
9006            lll : 'YYYY年M月D日 HH:mm',
9007            llll : 'YYYY年M月D日(ddd) HH:mm'
9008        },
9009        meridiemParse: /午前|午後/i,
9010        isPM : function (input) {
9011            return input === '午後';
9012        },
9013        meridiem : function (hour, minute, isLower) {
9014            if (hour < 12) {
9015                return '午前';
9016            } else {
9017                return '午後';
9018            }
9019        },
9020        calendar : {
9021            sameDay : '[今日] LT',
9022            nextDay : '[明日] LT',
9023            nextWeek : function (now) {
9024                if (now.week() < this.week()) {
9025                    return '[来週]dddd LT';
9026                } else {
9027                    return 'dddd LT';
9028                }
9029            },
9030            lastDay : '[昨日] LT',
9031            lastWeek : function (now) {
9032                if (this.week() < now.week()) {
9033                    return '[先週]dddd LT';
9034                } else {
9035                    return 'dddd LT';
9036                }
9037            },
9038            sameElse : 'L'
9039        },
9040        dayOfMonthOrdinalParse : /\d{1,2}日/,
9041        ordinal : function (number, period) {
9042            switch (period) {
9043                case 'd':
9044                case 'D':
9045                case 'DDD':
9046                    return number + '日';
9047                default:
9048                    return number;
9049            }
9050        },
9051        relativeTime : {
9052            future : '%s後',
9053            past : '%s前',
9054            s : '数秒',
9055            ss : '%d秒',
9056            m : '1分',
9057            mm : '%d分',
9058            h : '1時間',
9059            hh : '%d時間',
9060            d : '1日',
9061            dd : '%d日',
9062            M : '1ヶ月',
9063            MM : '%dヶ月',
9064            y : '1å¹´',
9065            yy : '%då¹´'
9066        }
9067    });
9068
9069    //! moment.js locale configuration
9070
9071    hooks.defineLocale('jv', {
9072        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),
9073        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
9074        weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
9075        weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
9076        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
9077        longDateFormat : {
9078            LT : 'HH.mm',
9079            LTS : 'HH.mm.ss',
9080            L : 'DD/MM/YYYY',
9081            LL : 'D MMMM YYYY',
9082            LLL : 'D MMMM YYYY [pukul] HH.mm',
9083            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
9084        },
9085        meridiemParse: /enjing|siyang|sonten|ndalu/,
9086        meridiemHour : function (hour, meridiem) {
9087            if (hour === 12) {
9088                hour = 0;
9089            }
9090            if (meridiem === 'enjing') {
9091                return hour;
9092            } else if (meridiem === 'siyang') {
9093                return hour >= 11 ? hour : hour + 12;
9094            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
9095                return hour + 12;
9096            }
9097        },
9098        meridiem : function (hours, minutes, isLower) {
9099            if (hours < 11) {
9100                return 'enjing';
9101            } else if (hours < 15) {
9102                return 'siyang';
9103            } else if (hours < 19) {
9104                return 'sonten';
9105            } else {
9106                return 'ndalu';
9107            }
9108        },
9109        calendar : {
9110            sameDay : '[Dinten puniko pukul] LT',
9111            nextDay : '[Mbenjang pukul] LT',
9112            nextWeek : 'dddd [pukul] LT',
9113            lastDay : '[Kala wingi pukul] LT',
9114            lastWeek : 'dddd [kepengker pukul] LT',
9115            sameElse : 'L'
9116        },
9117        relativeTime : {
9118            future : 'wonten ing %s',
9119            past : '%s ingkang kepengker',
9120            s : 'sawetawis detik',
9121            ss : '%d detik',
9122            m : 'setunggal menit',
9123            mm : '%d menit',
9124            h : 'setunggal jam',
9125            hh : '%d jam',
9126            d : 'sedinten',
9127            dd : '%d dinten',
9128            M : 'sewulan',
9129            MM : '%d wulan',
9130            y : 'setaun',
9131            yy : '%d taun'
9132        },
9133        week : {
9134            dow : 1, // Monday is the first day of the week.
9135            doy : 7  // The week that contains Jan 1st is the first week of the year.
9136        }
9137    });
9138
9139    //! moment.js locale configuration
9140
9141    hooks.defineLocale('ka', {
9142        months : {
9143            standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
9144            format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
9145        },
9146        monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
9147        weekdays : {
9148            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
9149            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),
9150            isFormat: /(წინა|შემდეგ)/
9151        },
9152        weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
9153        weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
9154        longDateFormat : {
9155            LT : 'h:mm A',
9156            LTS : 'h:mm:ss A',
9157            L : 'DD/MM/YYYY',
9158            LL : 'D MMMM YYYY',
9159            LLL : 'D MMMM YYYY h:mm A',
9160            LLLL : 'dddd, D MMMM YYYY h:mm A'
9161        },
9162        calendar : {
9163            sameDay : '[დღეს] LT[-ზე]',
9164            nextDay : '[ხვალ] LT[-ზე]',
9165            lastDay : '[გუშინ] LT[-ზე]',
9166            nextWeek : '[შემდეგ] dddd LT[-ზე]',
9167            lastWeek : '[წინა] dddd LT-ზე',
9168            sameElse : 'L'
9169        },
9170        relativeTime : {
9171            future : function (s) {
9172                return (/(წამი|წუთი|საათი|წელი)/).test(s) ?
9173                    s.replace(/ი$/, 'ში') :
9174                    s + 'ში';
9175            },
9176            past : function (s) {
9177                if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {
9178                    return s.replace(/(ი|ე)$/, 'ის წინ');
9179                }
9180                if ((/წელი/).test(s)) {
9181                    return s.replace(/წელი$/, 'წლის წინ');
9182                }
9183            },
9184            s : 'რამდენიმე წამი',
9185            ss : '%d წამი',
9186            m : 'წუთი',
9187            mm : '%d წუთი',
9188            h : 'საათი',
9189            hh : '%d საათი',
9190            d : 'დღე',
9191            dd : '%d დღე',
9192            M : 'თვე',
9193            MM : '%d თვე',
9194            y : 'წელი',
9195            yy : '%d წელი'
9196        },
9197        dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
9198        ordinal : function (number) {
9199            if (number === 0) {
9200                return number;
9201            }
9202            if (number === 1) {
9203                return number + '-ლი';
9204            }
9205            if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
9206                return 'მე-' + number;
9207            }
9208            return number + '-ე';
9209        },
9210        week : {
9211            dow : 1,
9212            doy : 7
9213        }
9214    });
9215
9216    //! moment.js locale configuration
9217
9218    var suffixes$1 = {
9219        0: '-ші',
9220        1: '-ші',
9221        2: '-ші',
9222        3: '-ші',
9223        4: '-ші',
9224        5: '-ші',
9225        6: '-шы',
9226        7: '-ші',
9227        8: '-ші',
9228        9: '-шы',
9229        10: '-шы',
9230        20: '-шы',
9231        30: '-шы',
9232        40: '-шы',
9233        50: '-ші',
9234        60: '-шы',
9235        70: '-ші',
9236        80: '-ші',
9237        90: '-шы',
9238        100: '-ші'
9239    };
9240
9241    hooks.defineLocale('kk', {
9242        months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),
9243        monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
9244        weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),
9245        weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
9246        weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
9247        longDateFormat : {
9248            LT : 'HH:mm',
9249            LTS : 'HH:mm:ss',
9250            L : 'DD.MM.YYYY',
9251            LL : 'D MMMM YYYY',
9252            LLL : 'D MMMM YYYY HH:mm',
9253            LLLL : 'dddd, D MMMM YYYY HH:mm'
9254        },
9255        calendar : {
9256            sameDay : '[Бүгін сағат] LT',
9257            nextDay : '[Ертең сағат] LT',
9258            nextWeek : 'dddd [сағат] LT',
9259            lastDay : '[Кеше сағат] LT',
9260            lastWeek : '[Өткен аптаның] dddd [сағат] LT',
9261            sameElse : 'L'
9262        },
9263        relativeTime : {
9264            future : '%s ішінде',
9265            past : '%s бұрын',
9266            s : 'бірнеше секунд',
9267            ss : '%d секунд',
9268            m : 'бір минут',
9269            mm : '%d минут',
9270            h : 'бір сағат',
9271            hh : '%d сағат',
9272            d : 'бір күн',
9273            dd : '%d күн',
9274            M : 'бір ай',
9275            MM : '%d ай',
9276            y : 'бір жыл',
9277            yy : '%d жыл'
9278        },
9279        dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
9280        ordinal : function (number) {
9281            var a = number % 10,
9282                b = number >= 100 ? 100 : null;
9283            return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);
9284        },
9285        week : {
9286            dow : 1, // Monday is the first day of the week.
9287            doy : 7  // The week that contains Jan 1st is the first week of the year.
9288        }
9289    });
9290
9291    //! moment.js locale configuration
9292
9293    var symbolMap$8 = {
9294        '1': '១',
9295        '2': '២',
9296        '3': '៣',
9297        '4': '៤',
9298        '5': '៥',
9299        '6': '៦',
9300        '7': '៧',
9301        '8': '៨',
9302        '9': '៩',
9303        '0': '០'
9304    }, numberMap$7 = {
9305        '១': '1',
9306        '២': '2',
9307        '៣': '3',
9308        '៤': '4',
9309        '៥': '5',
9310        '៦': '6',
9311        '៧': '7',
9312        '៨': '8',
9313        '៩': '9',
9314        '០': '0'
9315    };
9316
9317    hooks.defineLocale('km', {
9318        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
9319            '_'
9320        ),
9321        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
9322            '_'
9323        ),
9324        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
9325        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
9326        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
9327        weekdaysParseExact: true,
9328        longDateFormat: {
9329            LT: 'HH:mm',
9330            LTS: 'HH:mm:ss',
9331            L: 'DD/MM/YYYY',
9332            LL: 'D MMMM YYYY',
9333            LLL: 'D MMMM YYYY HH:mm',
9334            LLLL: 'dddd, D MMMM YYYY HH:mm'
9335        },
9336        meridiemParse: /ព្រឹក|ល្ងាច/,
9337        isPM: function (input) {
9338            return input === 'ល្ងាច';
9339        },
9340        meridiem: function (hour, minute, isLower) {
9341            if (hour < 12) {
9342                return 'ព្រឹក';
9343            } else {
9344                return 'ល្ងាច';
9345            }
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            ss: '%d វិនាទី',
9360            m: 'មួយនាទី',
9361            mm: '%d នាទី',
9362            h: 'មួយម៉ោង',
9363            hh: '%d ម៉ោង',
9364            d: 'មួយថ្ងៃ',
9365            dd: '%d ថ្ងៃ',
9366            M: 'មួយខែ',
9367            MM: '%d ខែ',
9368            y: 'មួយឆ្នាំ',
9369            yy: '%d ឆ្នាំ'
9370        },
9371        dayOfMonthOrdinalParse : /ទី\d{1,2}/,
9372        ordinal : 'ទី%d',
9373        preparse: function (string) {
9374            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
9375                return numberMap$7[match];
9376            });
9377        },
9378        postformat: function (string) {
9379            return string.replace(/\d/g, function (match) {
9380                return symbolMap$8[match];
9381            });
9382        },
9383        week: {
9384            dow: 1, // Monday is the first day of the week.
9385            doy: 4 // The week that contains Jan 4th is the first week of the year.
9386        }
9387    });
9388
9389    //! moment.js locale configuration
9390
9391    var symbolMap$9 = {
9392        '1': 'à³§',
9393        '2': '೨',
9394        '3': '೩',
9395        '4': '೪',
9396        '5': '೫',
9397        '6': '೬',
9398        '7': 'à³­',
9399        '8': 'à³®',
9400        '9': '೯',
9401        '0': '೦'
9402    },
9403    numberMap$8 = {
9404        'à³§': '1',
9405        '೨': '2',
9406        '೩': '3',
9407        '೪': '4',
9408        '೫': '5',
9409        '೬': '6',
9410        'à³­': '7',
9411        'à³®': '8',
9412        '೯': '9',
9413        '೦': '0'
9414    };
9415
9416    hooks.defineLocale('kn', {
9417        months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),
9418        monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),
9419        monthsParseExact: true,
9420        weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),
9421        weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
9422        weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
9423        longDateFormat : {
9424            LT : 'A h:mm',
9425            LTS : 'A h:mm:ss',
9426            L : 'DD/MM/YYYY',
9427            LL : 'D MMMM YYYY',
9428            LLL : 'D MMMM YYYY, A h:mm',
9429            LLLL : 'dddd, D MMMM YYYY, A h:mm'
9430        },
9431        calendar : {
9432            sameDay : '[ಇಂದು] LT',
9433            nextDay : '[ನಾಳೆ] LT',
9434            nextWeek : 'dddd, LT',
9435            lastDay : '[ನಿನ್ನೆ] LT',
9436            lastWeek : '[ಕೊನೆಯ] dddd, LT',
9437            sameElse : 'L'
9438        },
9439        relativeTime : {
9440            future : '%s ನಂತರ',
9441            past : '%s ಹಿಂದೆ',
9442            s : 'ಕೆಲವು ಕ್ಷಣಗಳು',
9443            ss : '%d ಸೆಕೆಂಡುಗಳು',
9444            m : 'ಒಂದು ನಿಮಿಷ',
9445            mm : '%d ನಿಮಿಷ',
9446            h : 'ಒಂದು ಗಂಟೆ',
9447            hh : '%d ಗಂಟೆ',
9448            d : 'ಒಂದು ದಿನ',
9449            dd : '%d ದಿನ',
9450            M : 'ಒಂದು ತಿಂಗಳು',
9451            MM : '%d ತಿಂಗಳು',
9452            y : 'ಒಂದು ವರ್ಷ',
9453            yy : '%d ವರ್ಷ'
9454        },
9455        preparse: function (string) {
9456            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
9457                return numberMap$8[match];
9458            });
9459        },
9460        postformat: function (string) {
9461            return string.replace(/\d/g, function (match) {
9462                return symbolMap$9[match];
9463            });
9464        },
9465        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
9466        meridiemHour : function (hour, meridiem) {
9467            if (hour === 12) {
9468                hour = 0;
9469            }
9470            if (meridiem === 'ರಾತ್ರಿ') {
9471                return hour < 4 ? hour : hour + 12;
9472            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
9473                return hour;
9474            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
9475                return hour >= 10 ? hour : hour + 12;
9476            } else if (meridiem === 'ಸಂಜೆ') {
9477                return hour + 12;
9478            }
9479        },
9480        meridiem : function (hour, minute, isLower) {
9481            if (hour < 4) {
9482                return 'ರಾತ್ರಿ';
9483            } else if (hour < 10) {
9484                return 'ಬೆಳಿಗ್ಗೆ';
9485            } else if (hour < 17) {
9486                return 'ಮಧ್ಯಾಹ್ನ';
9487            } else if (hour < 20) {
9488                return 'ಸಂಜೆ';
9489            } else {
9490                return 'ರಾತ್ರಿ';
9491            }
9492        },
9493        dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
9494        ordinal : function (number) {
9495            return number + 'ನೇ';
9496        },
9497        week : {
9498            dow : 0, // Sunday is the first day of the week.
9499            doy : 6  // The week that contains Jan 1st is the first week of the year.
9500        }
9501    });
9502
9503    //! moment.js locale configuration
9504
9505    hooks.defineLocale('ko', {
9506        months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
9507        monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
9508        weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
9509        weekdaysShort : '일_월_화_수_목_금_토'.split('_'),
9510        weekdaysMin : '일_월_화_수_목_금_토'.split('_'),
9511        longDateFormat : {
9512            LT : 'A h:mm',
9513            LTS : 'A h:mm:ss',
9514            L : 'YYYY.MM.DD.',
9515            LL : 'YYYY년 MMMM D일',
9516            LLL : 'YYYY년 MMMM D일 A h:mm',
9517            LLLL : 'YYYY년 MMMM D일 dddd A h:mm',
9518            l : 'YYYY.MM.DD.',
9519            ll : 'YYYY년 MMMM D일',
9520            lll : 'YYYY년 MMMM D일 A h:mm',
9521            llll : 'YYYY년 MMMM D일 dddd A h:mm'
9522        },
9523        calendar : {
9524            sameDay : '오늘 LT',
9525            nextDay : '내일 LT',
9526            nextWeek : 'dddd LT',
9527            lastDay : '어제 LT',
9528            lastWeek : '지난주 dddd LT',
9529            sameElse : 'L'
9530        },
9531        relativeTime : {
9532            future : '%s 후',
9533            past : '%s 전',
9534            s : '몇 초',
9535            ss : '%d초',
9536            m : '1분',
9537            mm : '%d분',
9538            h : '한 시간',
9539            hh : '%d시간',
9540            d : '하루',
9541            dd : '%d일',
9542            M : '한 달',
9543            MM : '%d달',
9544            y : '일 년',
9545            yy : '%d년'
9546        },
9547        dayOfMonthOrdinalParse : /\d{1,2}(일|월|주)/,
9548        ordinal : function (number, period) {
9549            switch (period) {
9550                case 'd':
9551                case 'D':
9552                case 'DDD':
9553                    return number + '일';
9554                case 'M':
9555                    return number + '월';
9556                case 'w':
9557                case 'W':
9558                    return number + '주';
9559                default:
9560                    return number;
9561            }
9562        },
9563        meridiemParse : /오전|오후/,
9564        isPM : function (token) {
9565            return token === '오후';
9566        },
9567        meridiem : function (hour, minute, isUpper) {
9568            return hour < 12 ? '오전' : '오후';
9569        }
9570    });
9571
9572    //! moment.js locale configuration
9573
9574    var suffixes$2 = {
9575        0: '-чү',
9576        1: '-чи',
9577        2: '-чи',
9578        3: '-чү',
9579        4: '-чү',
9580        5: '-чи',
9581        6: '-чы',
9582        7: '-чи',
9583        8: '-чи',
9584        9: '-чу',
9585        10: '-чу',
9586        20: '-чы',
9587        30: '-чу',
9588        40: '-чы',
9589        50: '-чү',
9590        60: '-чы',
9591        70: '-чи',
9592        80: '-чи',
9593        90: '-чу',
9594        100: '-чү'
9595    };
9596
9597    hooks.defineLocale('ky', {
9598        months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
9599        monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
9600        weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),
9601        weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
9602        weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
9603        longDateFormat : {
9604            LT : 'HH:mm',
9605            LTS : 'HH:mm:ss',
9606            L : 'DD.MM.YYYY',
9607            LL : 'D MMMM YYYY',
9608            LLL : 'D MMMM YYYY HH:mm',
9609            LLLL : 'dddd, D MMMM YYYY HH:mm'
9610        },
9611        calendar : {
9612            sameDay : '[Бүгүн саат] LT',
9613            nextDay : '[Эртең саат] LT',
9614            nextWeek : 'dddd [саат] LT',
9615            lastDay : '[Кече саат] LT',
9616            lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT',
9617            sameElse : 'L'
9618        },
9619        relativeTime : {
9620            future : '%s ичинде',
9621            past : '%s мурун',
9622            s : 'бирнече секунд',
9623            ss : '%d секунд',
9624            m : 'бир мүнөт',
9625            mm : '%d мүнөт',
9626            h : 'бир саат',
9627            hh : '%d саат',
9628            d : 'бир күн',
9629            dd : '%d күн',
9630            M : 'бир ай',
9631            MM : '%d ай',
9632            y : 'бир жыл',
9633            yy : '%d жыл'
9634        },
9635        dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
9636        ordinal : function (number) {
9637            var a = number % 10,
9638                b = number >= 100 ? 100 : null;
9639            return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);
9640        },
9641        week : {
9642            dow : 1, // Monday is the first day of the week.
9643            doy : 7  // The week that contains Jan 1st is the first week of the year.
9644        }
9645    });
9646
9647    //! moment.js locale configuration
9648
9649    function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
9650        var format = {
9651            'm': ['eng Minutt', 'enger Minutt'],
9652            'h': ['eng Stonn', 'enger Stonn'],
9653            'd': ['een Dag', 'engem Dag'],
9654            'M': ['ee Mount', 'engem Mount'],
9655            'y': ['ee Joer', 'engem Joer']
9656        };
9657        return withoutSuffix ? format[key][0] : format[key][1];
9658    }
9659    function processFutureTime(string) {
9660        var number = string.substr(0, string.indexOf(' '));
9661        if (eifelerRegelAppliesToNumber(number)) {
9662            return 'a ' + string;
9663        }
9664        return 'an ' + string;
9665    }
9666    function processPastTime(string) {
9667        var number = string.substr(0, string.indexOf(' '));
9668        if (eifelerRegelAppliesToNumber(number)) {
9669            return 'viru ' + string;
9670        }
9671        return 'virun ' + string;
9672    }
9673    /**
9674     * Returns true if the word before the given number loses the '-n' ending.
9675     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
9676     *
9677     * @param number {integer}
9678     * @returns {boolean}
9679     */
9680    function eifelerRegelAppliesToNumber(number) {
9681        number = parseInt(number, 10);
9682        if (isNaN(number)) {
9683            return false;
9684        }
9685        if (number < 0) {
9686            // Negative Number --> always true
9687            return true;
9688        } else if (number < 10) {
9689            // Only 1 digit
9690            if (4 <= number && number <= 7) {
9691                return true;
9692            }
9693            return false;
9694        } else if (number < 100) {
9695            // 2 digits
9696            var lastDigit = number % 10, firstDigit = number / 10;
9697            if (lastDigit === 0) {
9698                return eifelerRegelAppliesToNumber(firstDigit);
9699            }
9700            return eifelerRegelAppliesToNumber(lastDigit);
9701        } else if (number < 10000) {
9702            // 3 or 4 digits --> recursively check first digit
9703            while (number >= 10) {
9704                number = number / 10;
9705            }
9706            return eifelerRegelAppliesToNumber(number);
9707        } else {
9708            // Anything larger than 4 digits: recursively check first n-3 digits
9709            number = number / 1000;
9710            return eifelerRegelAppliesToNumber(number);
9711        }
9712    }
9713
9714    hooks.defineLocale('lb', {
9715        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
9716        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
9717        monthsParseExact : true,
9718        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
9719        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
9720        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
9721        weekdaysParseExact : true,
9722        longDateFormat: {
9723            LT: 'H:mm [Auer]',
9724            LTS: 'H:mm:ss [Auer]',
9725            L: 'DD.MM.YYYY',
9726            LL: 'D. MMMM YYYY',
9727            LLL: 'D. MMMM YYYY H:mm [Auer]',
9728            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'
9729        },
9730        calendar: {
9731            sameDay: '[Haut um] LT',
9732            sameElse: 'L',
9733            nextDay: '[Muer um] LT',
9734            nextWeek: 'dddd [um] LT',
9735            lastDay: '[Gëschter um] LT',
9736            lastWeek: function () {
9737                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
9738                switch (this.day()) {
9739                    case 2:
9740                    case 4:
9741                        return '[Leschten] dddd [um] LT';
9742                    default:
9743                        return '[Leschte] dddd [um] LT';
9744                }
9745            }
9746        },
9747        relativeTime : {
9748            future : processFutureTime,
9749            past : processPastTime,
9750            s : 'e puer Sekonnen',
9751            ss : '%d Sekonnen',
9752            m : processRelativeTime$5,
9753            mm : '%d Minutten',
9754            h : processRelativeTime$5,
9755            hh : '%d Stonnen',
9756            d : processRelativeTime$5,
9757            dd : '%d Deeg',
9758            M : processRelativeTime$5,
9759            MM : '%d Méint',
9760            y : processRelativeTime$5,
9761            yy : '%d Joer'
9762        },
9763        dayOfMonthOrdinalParse: /\d{1,2}\./,
9764        ordinal: '%d.',
9765        week: {
9766            dow: 1, // Monday is the first day of the week.
9767            doy: 4  // The week that contains Jan 4th is the first week of the year.
9768        }
9769    });
9770
9771    //! moment.js locale configuration
9772
9773    hooks.defineLocale('lo', {
9774        months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
9775        monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
9776        weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
9777        weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
9778        weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
9779        weekdaysParseExact : true,
9780        longDateFormat : {
9781            LT : 'HH:mm',
9782            LTS : 'HH:mm:ss',
9783            L : 'DD/MM/YYYY',
9784            LL : 'D MMMM YYYY',
9785            LLL : 'D MMMM YYYY HH:mm',
9786            LLLL : 'ວັນdddd D MMMM YYYY HH:mm'
9787        },
9788        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
9789        isPM: function (input) {
9790            return input === 'ຕອນແລງ';
9791        },
9792        meridiem : function (hour, minute, isLower) {
9793            if (hour < 12) {
9794                return 'ຕອນເຊົ້າ';
9795            } else {
9796                return 'ຕອນແລງ';
9797            }
9798        },
9799        calendar : {
9800            sameDay : '[ມື້ນີ້ເວລາ] LT',
9801            nextDay : '[ມື້ອື່ນເວລາ] LT',
9802            nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',
9803            lastDay : '[ມື້ວານນີ້ເວລາ] LT',
9804            lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
9805            sameElse : 'L'
9806        },
9807        relativeTime : {
9808            future : 'ອີກ %s',
9809            past : '%sຜ່ານມາ',
9810            s : 'ບໍ່ເທົ່າໃດວິນາທີ',
9811            ss : '%d ວິນາທີ' ,
9812            m : '1 ນາທີ',
9813            mm : '%d ນາທີ',
9814            h : '1 ຊົ່ວໂມງ',
9815            hh : '%d ຊົ່ວໂມງ',
9816            d : '1 ມື້',
9817            dd : '%d ມື້',
9818            M : '1 ເດືອນ',
9819            MM : '%d ເດືອນ',
9820            y : '1 ປີ',
9821            yy : '%d ປີ'
9822        },
9823        dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
9824        ordinal : function (number) {
9825            return 'ທີ່' + number;
9826        }
9827    });
9828
9829    //! moment.js locale configuration
9830
9831    var units = {
9832        'ss' : 'sekundė_sekundžių_sekundes',
9833        'm' : 'minutė_minutės_minutę',
9834        'mm': 'minutės_minučių_minutes',
9835        'h' : 'valanda_valandos_valandą',
9836        'hh': 'valandos_valandų_valandas',
9837        'd' : 'diena_dienos_dieną',
9838        'dd': 'dienos_dienų_dienas',
9839        'M' : 'mėnuo_mėnesio_mėnesį',
9840        'MM': 'mėnesiai_mėnesių_mėnesius',
9841        'y' : 'metai_metų_metus',
9842        'yy': 'metai_metų_metus'
9843    };
9844    function translateSeconds(number, withoutSuffix, key, isFuture) {
9845        if (withoutSuffix) {
9846            return 'kelios sekundės';
9847        } else {
9848            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
9849        }
9850    }
9851    function translateSingular(number, withoutSuffix, key, isFuture) {
9852        return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);
9853    }
9854    function special(number) {
9855        return number % 10 === 0 || (number > 10 && number < 20);
9856    }
9857    function forms(key) {
9858        return units[key].split('_');
9859    }
9860    function translate$6(number, withoutSuffix, key, isFuture) {
9861        var result = number + ' ';
9862        if (number === 1) {
9863            return result + translateSingular(number, withoutSuffix, key[0], isFuture);
9864        } else if (withoutSuffix) {
9865            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
9866        } else {
9867            if (isFuture) {
9868                return result + forms(key)[1];
9869            } else {
9870                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
9871            }
9872        }
9873    }
9874    hooks.defineLocale('lt', {
9875        months : {
9876            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),
9877            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),
9878            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/
9879        },
9880        monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
9881        weekdays : {
9882            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),
9883            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),
9884            isFormat: /dddd HH:mm/
9885        },
9886        weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
9887        weekdaysMin : 'S_P_A_T_K_Pn_Å '.split('_'),
9888        weekdaysParseExact : true,
9889        longDateFormat : {
9890            LT : 'HH:mm',
9891            LTS : 'HH:mm:ss',
9892            L : 'YYYY-MM-DD',
9893            LL : 'YYYY [m.] MMMM D [d.]',
9894            LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
9895            LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
9896            l : 'YYYY-MM-DD',
9897            ll : 'YYYY [m.] MMMM D [d.]',
9898            lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
9899            llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
9900        },
9901        calendar : {
9902            sameDay : '[Å iandien] LT',
9903            nextDay : '[Rytoj] LT',
9904            nextWeek : 'dddd LT',
9905            lastDay : '[Vakar] LT',
9906            lastWeek : '[Praėjusį] dddd LT',
9907            sameElse : 'L'
9908        },
9909        relativeTime : {
9910            future : 'po %s',
9911            past : 'prieš %s',
9912            s : translateSeconds,
9913            ss : translate$6,
9914            m : translateSingular,
9915            mm : translate$6,
9916            h : translateSingular,
9917            hh : translate$6,
9918            d : translateSingular,
9919            dd : translate$6,
9920            M : translateSingular,
9921            MM : translate$6,
9922            y : translateSingular,
9923            yy : translate$6
9924        },
9925        dayOfMonthOrdinalParse: /\d{1,2}-oji/,
9926        ordinal : function (number) {
9927            return number + '-oji';
9928        },
9929        week : {
9930            dow : 1, // Monday is the first day of the week.
9931            doy : 4  // The week that contains Jan 4th is the first week of the year.
9932        }
9933    });
9934
9935    //! moment.js locale configuration
9936
9937    var units$1 = {
9938        'ss': 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
9939        'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
9940        'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
9941        'h': 'stundas_stundām_stunda_stundas'.split('_'),
9942        'hh': 'stundas_stundām_stunda_stundas'.split('_'),
9943        'd': 'dienas_dienām_diena_dienas'.split('_'),
9944        'dd': 'dienas_dienām_diena_dienas'.split('_'),
9945        'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
9946        'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
9947        'y': 'gada_gadiem_gads_gadi'.split('_'),
9948        'yy': 'gada_gadiem_gads_gadi'.split('_')
9949    };
9950    /**
9951     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
9952     */
9953    function format$1(forms, number, withoutSuffix) {
9954        if (withoutSuffix) {
9955            // E.g. "21 minūte", "3 minūtes".
9956            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
9957        } else {
9958            // E.g. "21 minūtes" as in "pēc 21 minūtes".
9959            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
9960            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
9961        }
9962    }
9963    function relativeTimeWithPlural$1(number, withoutSuffix, key) {
9964        return number + ' ' + format$1(units$1[key], number, withoutSuffix);
9965    }
9966    function relativeTimeWithSingular(number, withoutSuffix, key) {
9967        return format$1(units$1[key], number, withoutSuffix);
9968    }
9969    function relativeSeconds(number, withoutSuffix) {
9970        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
9971    }
9972
9973    hooks.defineLocale('lv', {
9974        months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
9975        monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
9976        weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
9977        weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),
9978        weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),
9979        weekdaysParseExact : true,
9980        longDateFormat : {
9981            LT : 'HH:mm',
9982            LTS : 'HH:mm:ss',
9983            L : 'DD.MM.YYYY.',
9984            LL : 'YYYY. [gada] D. MMMM',
9985            LLL : 'YYYY. [gada] D. MMMM, HH:mm',
9986            LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'
9987        },
9988        calendar : {
9989            sameDay : '[Å odien pulksten] LT',
9990            nextDay : '[Rīt pulksten] LT',
9991            nextWeek : 'dddd [pulksten] LT',
9992            lastDay : '[Vakar pulksten] LT',
9993            lastWeek : '[Pagājušā] dddd [pulksten] LT',
9994            sameElse : 'L'
9995        },
9996        relativeTime : {
9997            future : 'pēc %s',
9998            past : 'pirms %s',
9999            s : relativeSeconds,
10000            ss : relativeTimeWithPlural$1,
10001            m : relativeTimeWithSingular,
10002            mm : relativeTimeWithPlural$1,
10003            h : relativeTimeWithSingular,
10004            hh : relativeTimeWithPlural$1,
10005            d : relativeTimeWithSingular,
10006            dd : relativeTimeWithPlural$1,
10007            M : relativeTimeWithSingular,
10008            MM : relativeTimeWithPlural$1,
10009            y : relativeTimeWithSingular,
10010            yy : relativeTimeWithPlural$1
10011        },
10012        dayOfMonthOrdinalParse: /\d{1,2}\./,
10013        ordinal : '%d.',
10014        week : {
10015            dow : 1, // Monday is the first day of the week.
10016            doy : 4  // The week that contains Jan 4th is the first week of the year.
10017        }
10018    });
10019
10020    //! moment.js locale configuration
10021
10022    var translator = {
10023        words: { //Different grammatical cases
10024            ss: ['sekund', 'sekunda', 'sekundi'],
10025            m: ['jedan minut', 'jednog minuta'],
10026            mm: ['minut', 'minuta', 'minuta'],
10027            h: ['jedan sat', 'jednog sata'],
10028            hh: ['sat', 'sata', 'sati'],
10029            dd: ['dan', 'dana', 'dana'],
10030            MM: ['mjesec', 'mjeseca', 'mjeseci'],
10031            yy: ['godina', 'godine', 'godina']
10032        },
10033        correctGrammaticalCase: function (number, wordKey) {
10034            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
10035        },
10036        translate: function (number, withoutSuffix, key) {
10037            var wordKey = translator.words[key];
10038            if (key.length === 1) {
10039                return withoutSuffix ? wordKey[0] : wordKey[1];
10040            } else {
10041                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
10042            }
10043        }
10044    };
10045
10046    hooks.defineLocale('me', {
10047        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
10048        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
10049        monthsParseExact : true,
10050        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
10051        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
10052        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
10053        weekdaysParseExact : true,
10054        longDateFormat: {
10055            LT: 'H:mm',
10056            LTS : 'H:mm:ss',
10057            L: 'DD.MM.YYYY',
10058            LL: 'D. MMMM YYYY',
10059            LLL: 'D. MMMM YYYY H:mm',
10060            LLLL: 'dddd, D. MMMM YYYY H:mm'
10061        },
10062        calendar: {
10063            sameDay: '[danas u] LT',
10064            nextDay: '[sjutra u] LT',
10065
10066            nextWeek: function () {
10067                switch (this.day()) {
10068                    case 0:
10069                        return '[u] [nedjelju] [u] LT';
10070                    case 3:
10071                        return '[u] [srijedu] [u] LT';
10072                    case 6:
10073                        return '[u] [subotu] [u] LT';
10074                    case 1:
10075                    case 2:
10076                    case 4:
10077                    case 5:
10078                        return '[u] dddd [u] LT';
10079                }
10080            },
10081            lastDay  : '[juče u] LT',
10082            lastWeek : function () {
10083                var lastWeekDays = [
10084                    '[prošle] [nedjelje] [u] LT',
10085                    '[prošlog] [ponedjeljka] [u] LT',
10086                    '[prošlog] [utorka] [u] LT',
10087                    '[prošle] [srijede] [u] LT',
10088                    '[prošlog] [četvrtka] [u] LT',
10089                    '[prošlog] [petka] [u] LT',
10090                    '[prošle] [subote] [u] LT'
10091                ];
10092                return lastWeekDays[this.day()];
10093            },
10094            sameElse : 'L'
10095        },
10096        relativeTime : {
10097            future : 'za %s',
10098            past   : 'prije %s',
10099            s      : 'nekoliko sekundi',
10100            ss     : translator.translate,
10101            m      : translator.translate,
10102            mm     : translator.translate,
10103            h      : translator.translate,
10104            hh     : translator.translate,
10105            d      : 'dan',
10106            dd     : translator.translate,
10107            M      : 'mjesec',
10108            MM     : translator.translate,
10109            y      : 'godinu',
10110            yy     : translator.translate
10111        },
10112        dayOfMonthOrdinalParse: /\d{1,2}\./,
10113        ordinal : '%d.',
vendor: 4,342 bytes, lines 10114-10220
10114        week : {
10115            dow : 1, // Monday is the first day of the week.
10116            doy : 7  // The week that contains Jan 1st is the first week of the year.
10117        }
10118    });
10119
10120    //! moment.js locale configuration
10121
10122    hooks.defineLocale('mi', {
10123        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('_'),
10124        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),
10125        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
10126        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
10127        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
10128        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
10129        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
10130        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
10131        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
10132        longDateFormat: {
10133            LT: 'HH:mm',
10134            LTS: 'HH:mm:ss',
10135            L: 'DD/MM/YYYY',
10136            LL: 'D MMMM YYYY',
10137            LLL: 'D MMMM YYYY [i] HH:mm',
10138            LLLL: 'dddd, D MMMM YYYY [i] HH:mm'
10139        },
10140        calendar: {
10141            sameDay: '[i teie mahana, i] LT',
10142            nextDay: '[apopo i] LT',
10143            nextWeek: 'dddd [i] LT',
10144            lastDay: '[inanahi i] LT',
10145            lastWeek: 'dddd [whakamutunga i] LT',
10146            sameElse: 'L'
10147        },
10148        relativeTime: {
10149            future: 'i roto i %s',
10150            past: '%s i mua',
10151            s: 'te hēkona ruarua',
10152            ss: '%d hēkona',
10153            m: 'he meneti',
10154            mm: '%d meneti',
10155            h: 'te haora',
10156            hh: '%d haora',
10157            d: 'he ra',
10158            dd: '%d ra',
10159            M: 'he marama',
10160            MM: '%d marama',
10161            y: 'he tau',
10162            yy: '%d tau'
10163        },
10164        dayOfMonthOrdinalParse: /\d{1,2}º/,
10165        ordinal: '%dº',
10166        week : {
10167            dow : 1, // Monday is the first day of the week.
10168            doy : 4  // The week that contains Jan 4th is the first week of the year.
10169        }
10170    });
10171
10172    //! moment.js locale configuration
10173
10174    hooks.defineLocale('mk', {
10175        months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
10176        monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
10177        weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
10178        weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
10179        weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),
10180        longDateFormat : {
10181            LT : 'H:mm',
10182            LTS : 'H:mm:ss',
10183            L : 'D.MM.YYYY',
10184            LL : 'D MMMM YYYY',
10185            LLL : 'D MMMM YYYY H:mm',
10186            LLLL : 'dddd, D MMMM YYYY H:mm'
10187        },
10188        calendar : {
10189            sameDay : '[Денес во] LT',
10190            nextDay : '[Утре во] LT',
10191            nextWeek : '[Во] dddd [во] LT',
10192            lastDay : '[Вчера во] LT',
10193            lastWeek : function () {
10194                switch (this.day()) {
10195                    case 0:
10196                    case 3:
10197                    case 6:
10198                        return '[Изминатата] dddd [во] LT';
10199                    case 1:
10200                    case 2:
10201                    case 4:
10202                    case 5:
10203                        return '[Изминатиот] dddd [во] LT';
10204                }
10205            },
10206            sameElse : 'L'
10207        },
10208        relativeTime : {
10209            future : 'после %s',
10210            past : 'пред %s',
10211            s : 'неколку секунди',
10212            ss : '%d секунди',
10213            m : 'минута',
10214            mm : '%d минути',
10215            h : 'час',
10216            hh : '%d часа',
10217            d : 'ден',
10218            dd : '%d дена',
10219            M : 'месец',
10220            MM : '%d месеци',
vendor: 19,315 bytes, lines 10221-10689
10221            y : 'година',
10222            yy : '%d години'
10223        },
10224        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
10225        ordinal : function (number) {
10226            var lastDigit = number % 10,
10227                last2Digits = number % 100;
10228            if (number === 0) {
10229                return number + '-ев';
10230            } else if (last2Digits === 0) {
10231                return number + '-ен';
10232            } else if (last2Digits > 10 && last2Digits < 20) {
10233                return number + '-ти';
10234            } else if (lastDigit === 1) {
10235                return number + '-ви';
10236            } else if (lastDigit === 2) {
10237                return number + '-ри';
10238            } else if (lastDigit === 7 || lastDigit === 8) {
10239                return number + '-ми';
10240            } else {
10241                return number + '-ти';
10242            }
10243        },
10244        week : {
10245            dow : 1, // Monday is the first day of the week.
10246            doy : 7  // The week that contains Jan 1st is the first week of the year.
10247        }
10248    });
10249
10250    //! moment.js locale configuration
10251
10252    hooks.defineLocale('ml', {
10253        months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
10254        monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
10255        monthsParseExact : true,
10256        weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
10257        weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
10258        weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
10259        longDateFormat : {
10260            LT : 'A h:mm -നു',
10261            LTS : 'A h:mm:ss -നു',
10262            L : 'DD/MM/YYYY',
10263            LL : 'D MMMM YYYY',
10264            LLL : 'D MMMM YYYY, A h:mm -നു',
10265            LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'
10266        },
10267        calendar : {
10268            sameDay : '[ഇന്ന്] LT',
10269            nextDay : '[നാളെ] LT',
10270            nextWeek : 'dddd, LT',
10271            lastDay : '[ഇന്നലെ] LT',
10272            lastWeek : '[കഴിഞ്ഞ] dddd, LT',
10273            sameElse : 'L'
10274        },
10275        relativeTime : {
10276            future : '%s കഴിഞ്ഞ്',
10277            past : '%s മുൻപ്',
10278            s : 'അൽപ നിമിഷങ്ങൾ',
10279            ss : '%d സെക്കൻഡ്',
10280            m : 'ഒരു മിനിറ്റ്',
10281            mm : '%d മിനിറ്റ്',
10282            h : 'ഒരു മണിക്കൂർ',
10283            hh : '%d മണിക്കൂർ',
10284            d : 'ഒരു ദിവസം',
10285            dd : '%d ദിവസം',
10286            M : 'ഒരു മാസം',
10287            MM : '%d മാസം',
10288            y : 'ഒരു വർഷം',
10289            yy : '%d വർഷം'
10290        },
10291        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
10292        meridiemHour : function (hour, meridiem) {
10293            if (hour === 12) {
10294                hour = 0;
10295            }
10296            if ((meridiem === 'രാത്രി' && hour >= 4) ||
10297                    meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
10298                    meridiem === 'വൈകുന്നേരം') {
10299                return hour + 12;
10300            } else {
10301                return hour;
10302            }
10303        },
10304        meridiem : function (hour, minute, isLower) {
10305            if (hour < 4) {
10306                return 'രാത്രി';
10307            } else if (hour < 12) {
10308                return 'രാവിലെ';
10309            } else if (hour < 17) {
10310                return 'ഉച്ച കഴിഞ്ഞ്';
10311            } else if (hour < 20) {
10312                return 'വൈകുന്നേരം';
10313            } else {
10314                return 'രാത്രി';
10315            }
10316        }
10317    });
10318
10319    //! moment.js locale configuration
10320
10321    function translate$7(number, withoutSuffix, key, isFuture) {
10322        switch (key) {
10323            case 's':
10324                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
10325            case 'ss':
10326                return number + (withoutSuffix ? ' секунд' : ' секундын');
10327            case 'm':
10328            case 'mm':
10329                return number + (withoutSuffix ? ' минут' : ' минутын');
10330            case 'h':
10331            case 'hh':
10332                return number + (withoutSuffix ? ' цаг' : ' цагийн');
10333            case 'd':
10334            case 'dd':
10335                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
10336            case 'M':
10337            case 'MM':
10338                return number + (withoutSuffix ? ' сар' : ' сарын');
10339            case 'y':
10340            case 'yy':
10341                return number + (withoutSuffix ? ' жил' : ' жилийн');
10342            default:
10343                return number;
10344        }
10345    }
10346
10347    hooks.defineLocale('mn', {
10348        months : 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),
10349        monthsShort : '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),
10350        monthsParseExact : true,
10351        weekdays : 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
10352        weekdaysShort : 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
10353        weekdaysMin : 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
10354        weekdaysParseExact : true,
10355        longDateFormat : {
10356            LT : 'HH:mm',
10357            LTS : 'HH:mm:ss',
10358            L : 'YYYY-MM-DD',
10359            LL : 'YYYY оны MMMMын D',
10360            LLL : 'YYYY оны MMMMын D HH:mm',
10361            LLLL : 'dddd, YYYY оны MMMMын D HH:mm'
10362        },
10363        meridiemParse: /ҮӨ|ҮХ/i,
10364        isPM : function (input) {
10365            return input === 'ҮХ';
10366        },
10367        meridiem : function (hour, minute, isLower) {
10368            if (hour < 12) {
10369                return 'Ò®Ó¨';
10370            } else {
10371                return 'ҮХ';
10372            }
10373        },
10374        calendar : {
10375            sameDay : '[Өнөөдөр] LT',
10376            nextDay : '[Маргааш] LT',
10377            nextWeek : '[Ирэх] dddd LT',
10378            lastDay : '[Өчигдөр] LT',
10379            lastWeek : '[Өнгөрсөн] dddd LT',
10380            sameElse : 'L'
10381        },
10382        relativeTime : {
10383            future : '%s дараа',
10384            past : '%s өмнө',
10385            s : translate$7,
10386            ss : translate$7,
10387            m : translate$7,
10388            mm : translate$7,
10389            h : translate$7,
10390            hh : translate$7,
10391            d : translate$7,
10392            dd : translate$7,
10393            M : translate$7,
10394            MM : translate$7,
10395            y : translate$7,
10396            yy : translate$7
10397        },
10398        dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
10399        ordinal : function (number, period) {
10400            switch (period) {
10401                case 'd':
10402                case 'D':
10403                case 'DDD':
10404                    return number + ' өдөр';
10405                default:
10406                    return number;
10407            }
10408        }
10409    });
10410
10411    //! moment.js locale configuration
10412
10413    var symbolMap$a = {
10414        '1': '१',
10415        '2': '२',
10416        '3': '३',
10417        '4': '४',
10418        '5': '५',
10419        '6': '६',
10420        '7': '७',
10421        '8': '८',
10422        '9': '९',
10423        '0': '०'
10424    },
10425    numberMap$9 = {
10426        '१': '1',
10427        '२': '2',
10428        '३': '3',
10429        '४': '4',
10430        '५': '5',
10431        '६': '6',
10432        '७': '7',
10433        '८': '8',
10434        '९': '9',
10435        '०': '0'
10436    };
10437
10438    function relativeTimeMr(number, withoutSuffix, string, isFuture)
10439    {
10440        var output = '';
10441        if (withoutSuffix) {
10442            switch (string) {
10443                case 's': output = 'काही सेकंद'; break;
10444                case 'ss': output = '%d सेकंद'; break;
10445                case 'm': output = 'एक मिनिट'; break;
10446                case 'mm': output = '%d मिनिटे'; break;
10447                case 'h': output = 'एक तास'; break;
10448                case 'hh': output = '%d तास'; break;
10449                case 'd': output = 'एक दिवस'; break;
10450                case 'dd': output = '%d दिवस'; break;
10451                case 'M': output = 'एक महिना'; break;
10452                case 'MM': output = '%d महिने'; break;
10453                case 'y': output = 'एक वर्ष'; break;
10454                case 'yy': output = '%d वर्षे'; break;
10455            }
10456        }
10457        else {
10458            switch (string) {
10459                case 's': output = 'काही सेकंदां'; break;
10460                case 'ss': output = '%d सेकंदां'; break;
10461                case 'm': output = 'एका मिनिटा'; break;
10462                case 'mm': output = '%d मिनिटां'; break;
10463                case 'h': output = 'एका तासा'; break;
10464                case 'hh': output = '%d तासां'; break;
10465                case 'd': output = 'एका दिवसा'; break;
10466                case 'dd': output = '%d दिवसां'; break;
10467                case 'M': output = 'एका महिन्या'; break;
10468                case 'MM': output = '%d महिन्यां'; break;
10469                case 'y': output = 'एका वर्षा'; break;
10470                case 'yy': output = '%d वर्षां'; break;
10471            }
10472        }
10473        return output.replace(/%d/i, number);
10474    }
10475
10476    hooks.defineLocale('mr', {
10477        months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
10478        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
10479        monthsParseExact : true,
10480        weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
10481        weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
10482        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
10483        longDateFormat : {
10484            LT : 'A h:mm वाजता',
10485            LTS : 'A h:mm:ss वाजता',
10486            L : 'DD/MM/YYYY',
10487            LL : 'D MMMM YYYY',
10488            LLL : 'D MMMM YYYY, A h:mm वाजता',
10489            LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'
10490        },
10491        calendar : {
10492            sameDay : '[आज] LT',
10493            nextDay : '[उद्या] LT',
10494            nextWeek : 'dddd, LT',
10495            lastDay : '[काल] LT',
10496            lastWeek: '[मागील] dddd, LT',
10497            sameElse : 'L'
10498        },
10499        relativeTime : {
10500            future: '%sमध्ये',
10501            past: '%sपूर्वी',
10502            s: relativeTimeMr,
10503            ss: relativeTimeMr,
10504            m: relativeTimeMr,
10505            mm: relativeTimeMr,
10506            h: relativeTimeMr,
10507            hh: relativeTimeMr,
10508            d: relativeTimeMr,
10509            dd: relativeTimeMr,
10510            M: relativeTimeMr,
10511            MM: relativeTimeMr,
10512            y: relativeTimeMr,
10513            yy: relativeTimeMr
10514        },
10515        preparse: function (string) {
10516            return string.replace(/[१२३४५६७८९०]/g, function (match) {
10517                return numberMap$9[match];
10518            });
10519        },
10520        postformat: function (string) {
10521            return string.replace(/\d/g, function (match) {
10522                return symbolMap$a[match];
10523            });
10524        },
10525        meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,
10526        meridiemHour : function (hour, meridiem) {
10527            if (hour === 12) {
10528                hour = 0;
10529            }
10530            if (meridiem === 'रात्री') {
10531                return hour < 4 ? hour : hour + 12;
10532            } else if (meridiem === 'सकाळी') {
10533                return hour;
10534            } else if (meridiem === 'दुपारी') {
10535                return hour >= 10 ? hour : hour + 12;
10536            } else if (meridiem === 'सायंकाळी') {
10537                return hour + 12;
10538            }
10539        },
10540        meridiem: function (hour, minute, isLower) {
10541            if (hour < 4) {
10542                return 'रात्री';
10543            } else if (hour < 10) {
10544                return 'सकाळी';
10545            } else if (hour < 17) {
10546                return 'दुपारी';
10547            } else if (hour < 20) {
10548                return 'सायंकाळी';
10549            } else {
10550                return 'रात्री';
10551            }
10552        },
10553        week : {
10554            dow : 0, // Sunday is the first day of the week.
10555            doy : 6  // The week that contains Jan 1st is the first week of the year.
10556        }
10557    });
10558
10559    //! moment.js locale configuration
10560
10561    hooks.defineLocale('ms-my', {
10562        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
10563        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
10564        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
10565        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
10566        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
10567        longDateFormat : {
10568            LT : 'HH.mm',
10569            LTS : 'HH.mm.ss',
10570            L : 'DD/MM/YYYY',
10571            LL : 'D MMMM YYYY',
10572            LLL : 'D MMMM YYYY [pukul] HH.mm',
10573            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
10574        },
10575        meridiemParse: /pagi|tengahari|petang|malam/,
10576        meridiemHour: function (hour, meridiem) {
10577            if (hour === 12) {
10578                hour = 0;
10579            }
10580            if (meridiem === 'pagi') {
10581                return hour;
10582            } else if (meridiem === 'tengahari') {
10583                return hour >= 11 ? hour : hour + 12;
10584            } else if (meridiem === 'petang' || meridiem === 'malam') {
10585                return hour + 12;
10586            }
10587        },
10588        meridiem : function (hours, minutes, isLower) {
10589            if (hours < 11) {
10590                return 'pagi';
10591            } else if (hours < 15) {
10592                return 'tengahari';
10593            } else if (hours < 19) {
10594                return 'petang';
10595            } else {
10596                return 'malam';
10597            }
10598        },
10599        calendar : {
10600            sameDay : '[Hari ini pukul] LT',
10601            nextDay : '[Esok pukul] LT',
10602            nextWeek : 'dddd [pukul] LT',
10603            lastDay : '[Kelmarin pukul] LT',
10604            lastWeek : 'dddd [lepas pukul] LT',
10605            sameElse : 'L'
10606        },
10607        relativeTime : {
10608            future : 'dalam %s',
10609            past : '%s yang lepas',
10610            s : 'beberapa saat',
10611            ss : '%d saat',
10612            m : 'seminit',
10613            mm : '%d minit',
10614            h : 'sejam',
10615            hh : '%d jam',
10616            d : 'sehari',
10617            dd : '%d hari',
10618            M : 'sebulan',
10619            MM : '%d bulan',
10620            y : 'setahun',
10621            yy : '%d tahun'
10622        },
10623        week : {
10624            dow : 1, // Monday is the first day of the week.
10625            doy : 7  // The week that contains Jan 1st is the first week of the year.
10626        }
10627    });
10628
10629    //! moment.js locale configuration
10630
10631    hooks.defineLocale('ms', {
10632        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
10633        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
10634        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
10635        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
10636        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
10637        longDateFormat : {
10638            LT : 'HH.mm',
10639            LTS : 'HH.mm.ss',
10640            L : 'DD/MM/YYYY',
10641            LL : 'D MMMM YYYY',
10642            LLL : 'D MMMM YYYY [pukul] HH.mm',
10643            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
10644        },
10645        meridiemParse: /pagi|tengahari|petang|malam/,
10646        meridiemHour: function (hour, meridiem) {
10647            if (hour === 12) {
10648                hour = 0;
10649            }
10650            if (meridiem === 'pagi') {
10651                return hour;
10652            } else if (meridiem === 'tengahari') {
10653                return hour >= 11 ? hour : hour + 12;
10654            } else if (meridiem === 'petang' || meridiem === 'malam') {
10655                return hour + 12;
10656            }
10657        },
10658        meridiem : function (hours, minutes, isLower) {
10659            if (hours < 11) {
10660                return 'pagi';
10661            } else if (hours < 15) {
10662                return 'tengahari';
10663            } else if (hours < 19) {
10664                return 'petang';
10665            } else {
10666                return 'malam';
10667            }
10668        },
10669        calendar : {
10670            sameDay : '[Hari ini pukul] LT',
10671            nextDay : '[Esok pukul] LT',
10672            nextWeek : 'dddd [pukul] LT',
10673            lastDay : '[Kelmarin pukul] LT',
10674            lastWeek : 'dddd [lepas pukul] LT',
10675            sameElse : 'L'
10676        },
10677        relativeTime : {
10678            future : 'dalam %s',
10679            past : '%s yang lepas',
10680            s : 'beberapa saat',
10681            ss : '%d saat',
10682            m : 'seminit',
10683            mm : '%d minit',
10684            h : 'sejam',
10685            hh : '%d jam',
10686            d : 'sehari',
10687            dd : '%d hari',
10688            M : 'sebulan',
10689            MM : '%d bulan',
10690            y : 'setahun',
10691            yy : '%d tahun'
10692        },
10693        week : {
10694            dow : 1, // Monday is the first day of the week.
10695            doy : 7  // The week that contains Jan 1st is the first week of the year.
10696        }
10697    });
10698
10699    //! moment.js locale configuration
10700
10701    hooks.defineLocale('mt', {
10702        months : 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),
10703        monthsShort : 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
10704        weekdays : 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),
10705        weekdaysShort : 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
10706        weekdaysMin : 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
10707        longDateFormat : {
10708            LT : 'HH:mm',
10709            LTS : 'HH:mm:ss',
10710            L : 'DD/MM/YYYY',
10711            LL : 'D MMMM YYYY',
10712            LLL : 'D MMMM YYYY HH:mm',
10713            LLLL : 'dddd, D MMMM YYYY HH:mm'
10714        },
10715        calendar : {
10716            sameDay : '[Illum fil-]LT',
10717            nextDay : '[Għada fil-]LT',
10718            nextWeek : 'dddd [fil-]LT',
10719            lastDay : '[Il-bieraħ fil-]LT',
10720            lastWeek : 'dddd [li għadda] [fil-]LT',
10721            sameElse : 'L'
10722        },
10723        relativeTime : {
10724            future : 'f’ %s',
10725            past : '%s ilu',
10726            s : 'ftit sekondi',
10727            ss : '%d sekondi',
10728            m : 'minuta',
10729            mm : '%d minuti',
10730            h : 'siegħa',
10731            hh : '%d siegħat',
10732            d : 'ġurnata',
10733            dd : '%d ġranet',
10734            M : 'xahar',
10735            MM : '%d xhur',
10736            y : 'sena',
10737            yy : '%d sni'
10738        },
10739        dayOfMonthOrdinalParse : /\d{1,2}º/,
10740        ordinal: '%dº',
10741        week : {
10742            dow : 1, // Monday is the first day of the week.
10743            doy : 4  // The week that contains Jan 4th is the first week of the year.
10744        }
10745    });
10746
10747    //! moment.js locale configuration
10748
10749    var symbolMap$b = {
10750        '1': '၁',
10751        '2': '၂',
10752        '3': '၃',
10753        '4': '၄',
10754        '5': '၅',
10755        '6': '၆',
10756        '7': '၇',
10757        '8': '၈',
10758        '9': '၉',
10759        '0': '၀'
10760    }, numberMap$a = {
10761        '၁': '1',
10762        '၂': '2',
10763        '၃': '3',
10764        '၄': '4',
10765        '၅': '5',
10766        '၆': '6',
10767        '၇': '7',
10768        '၈': '8',
10769        '၉': '9',
10770        '၀': '0'
10771    };
10772
10773    hooks.defineLocale('my', {
10774        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),
10775        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
10776        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),
10777        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
10778        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
10779
10780        longDateFormat: {
10781            LT: 'HH:mm',
10782            LTS: 'HH:mm:ss',
10783            L: 'DD/MM/YYYY',
10784            LL: 'D MMMM YYYY',
10785            LLL: 'D MMMM YYYY HH:mm',
10786            LLLL: 'dddd D MMMM YYYY HH:mm'
10787        },
10788        calendar: {
10789            sameDay: '[ယနေ.] LT [မှာ]',
10790            nextDay: '[မနက်ဖြန်] LT [မှာ]',
10791            nextWeek: 'dddd LT [မှာ]',
10792            lastDay: '[မနေ.က] LT [မှာ]',
10793            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
10794            sameElse: 'L'
10795        },
10796        relativeTime: {
10797            future: 'လာမည့် %s မှာ',
10798            past: 'လွန်ခဲ့သော %s က',
10799            s: 'စက္ကန်.အနည်းငယ်',
10800            ss : '%d စက္ကန့်',
10801            m: 'တစ်မိနစ်',
10802            mm: '%d မိနစ်',
10803            h: 'တစ်နာရီ',
10804            hh: '%d နာရီ',
10805            d: 'တစ်ရက်',
10806            dd: '%d ရက်',
10807            M: 'တစ်လ',
10808            MM: '%d လ',
10809            y: 'တစ်နှစ်',
10810            yy: '%d နှစ်'
10811        },
10812        preparse: function (string) {
10813            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
10814                return numberMap$a[match];
10815            });
10816        },
10817        postformat: function (string) {
10818            return string.replace(/\d/g, function (match) {
10819                return symbolMap$b[match];
10820            });
10821        },
10822        week: {
10823            dow: 1, // Monday is the first day of the week.
10824            doy: 4 // The week that contains Jan 1st is the first week of the year.
10825        }
10826    });
10827
10828    //! moment.js locale configuration
10829
10830    hooks.defineLocale('nb', {
10831        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
10832        monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
10833        monthsParseExact : true,
10834        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
10835        weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),
10836        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
10837        weekdaysParseExact : true,
10838        longDateFormat : {
10839            LT : 'HH:mm',
10840            LTS : 'HH:mm:ss',
10841            L : 'DD.MM.YYYY',
10842            LL : 'D. MMMM YYYY',
10843            LLL : 'D. MMMM YYYY [kl.] HH:mm',
10844            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
10845        },
10846        calendar : {
10847            sameDay: '[i dag kl.] LT',
10848            nextDay: '[i morgen kl.] LT',
10849            nextWeek: 'dddd [kl.] LT',
10850            lastDay: '[i går kl.] LT',
10851            lastWeek: '[forrige] dddd [kl.] LT',
10852            sameElse: 'L'
10853        },
10854        relativeTime : {
10855            future : 'om %s',
10856            past : '%s siden',
10857            s : 'noen sekunder',
10858            ss : '%d sekunder',
10859            m : 'ett minutt',
10860            mm : '%d minutter',
10861            h : 'en time',
10862            hh : '%d timer',
10863            d : 'en dag',
10864            dd : '%d dager',
10865            M : 'en måned',
10866            MM : '%d måneder',
10867            y : 'ett år',
10868            yy : '%d år'
10869        },
10870        dayOfMonthOrdinalParse: /\d{1,2}\./,
10871        ordinal : '%d.',
10872        week : {
10873            dow : 1, // Monday is the first day of the week.
10874            doy : 4  // The week that contains Jan 4th is the first week of the year.
10875        }
10876    });
10877
10878    //! moment.js locale configuration
10879
10880    var symbolMap$c = {
10881        '1': '१',
10882        '2': '२',
10883        '3': '३',
10884        '4': '४',
10885        '5': '५',
10886        '6': '६',
10887        '7': '७',
10888        '8': '८',
10889        '9': '९',
10890        '0': '०'
10891    },
10892    numberMap$b = {
10893        '१': '1',
10894        '२': '2',
10895        '३': '3',
10896        '४': '4',
10897        '५': '5',
10898        '६': '6',
10899        '७': '7',
10900        '८': '8',
10901        '९': '9',
10902        '०': '0'
10903    };
10904
10905    hooks.defineLocale('ne', {
10906        months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
10907        monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
10908        monthsParseExact : true,
10909        weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
10910        weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
10911        weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
10912        weekdaysParseExact : true,
10913        longDateFormat : {
10914            LT : 'Aको h:mm बजे',
10915            LTS : 'Aको h:mm:ss बजे',
10916            L : 'DD/MM/YYYY',
10917            LL : 'D MMMM YYYY',
10918            LLL : 'D MMMM YYYY, Aको h:mm बजे',
10919            LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'
10920        },
10921        preparse: function (string) {
10922            return string.replace(/[१२३४५६७८९०]/g, function (match) {
10923                return numberMap$b[match];
10924            });
10925        },
10926        postformat: function (string) {
10927            return string.replace(/\d/g, function (match) {
10928                return symbolMap$c[match];
10929            });
10930        },
vendor: 69,171 bytes, lines 10931-12631
10931        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
10932        meridiemHour : function (hour, meridiem) {
10933            if (hour === 12) {
10934                hour = 0;
10935            }
10936            if (meridiem === 'राति') {
10937                return hour < 4 ? hour : hour + 12;
10938            } else if (meridiem === 'बिहान') {
10939                return hour;
10940            } else if (meridiem === 'दिउँसो') {
10941                return hour >= 10 ? hour : hour + 12;
10942            } else if (meridiem === 'साँझ') {
10943                return hour + 12;
10944            }
10945        },
10946        meridiem : function (hour, minute, isLower) {
10947            if (hour < 3) {
10948                return 'राति';
10949            } else if (hour < 12) {
10950                return 'बिहान';
10951            } else if (hour < 16) {
10952                return 'दिउँसो';
10953            } else if (hour < 20) {
10954                return 'साँझ';
10955            } else {
10956                return 'राति';
10957            }
10958        },
10959        calendar : {
10960            sameDay : '[आज] LT',
10961            nextDay : '[भोलि] LT',
10962            nextWeek : '[आउँदो] dddd[,] LT',
10963            lastDay : '[हिजो] LT',
10964            lastWeek : '[गएको] dddd[,] LT',
10965            sameElse : 'L'
10966        },
10967        relativeTime : {
10968            future : '%sमा',
10969            past : '%s अगाडि',
10970            s : 'केही क्षण',
10971            ss : '%d सेकेण्ड',
10972            m : 'एक मिनेट',
10973            mm : '%d मिनेट',
10974            h : 'एक घण्टा',
10975            hh : '%d घण्टा',
10976            d : 'एक दिन',
10977            dd : '%d दिन',
10978            M : 'एक महिना',
10979            MM : '%d महिना',
10980            y : 'एक बर्ष',
10981            yy : '%d बर्ष'
10982        },
10983        week : {
10984            dow : 0, // Sunday is the first day of the week.
10985            doy : 6  // The week that contains Jan 1st is the first week of the year.
10986        }
10987    });
10988
10989    //! moment.js locale configuration
10990
10991    var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
10992        monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
10993
10994    var monthsParse$2 = [/^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];
10995    var monthsRegex$3 = /^(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;
10996
10997    hooks.defineLocale('nl-be', {
10998        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
10999        monthsShort : function (m, format) {
11000            if (!m) {
11001                return monthsShortWithDots$1;
11002            } else if (/-MMM-/.test(format)) {
11003                return monthsShortWithoutDots$1[m.month()];
11004            } else {
11005                return monthsShortWithDots$1[m.month()];
11006            }
11007        },
11008
11009        monthsRegex: monthsRegex$3,
11010        monthsShortRegex: monthsRegex$3,
11011        monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,
11012        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
11013
11014        monthsParse : monthsParse$2,
11015        longMonthsParse : monthsParse$2,
11016        shortMonthsParse : monthsParse$2,
11017
11018        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
11019        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
11020        weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),
11021        weekdaysParseExact : true,
11022        longDateFormat : {
11023            LT : 'HH:mm',
11024            LTS : 'HH:mm:ss',
11025            L : 'DD/MM/YYYY',
11026            LL : 'D MMMM YYYY',
11027            LLL : 'D MMMM YYYY HH:mm',
11028            LLLL : 'dddd D MMMM YYYY HH:mm'
11029        },
11030        calendar : {
11031            sameDay: '[vandaag om] LT',
11032            nextDay: '[morgen om] LT',
11033            nextWeek: 'dddd [om] LT',
11034            lastDay: '[gisteren om] LT',
11035            lastWeek: '[afgelopen] dddd [om] LT',
11036            sameElse: 'L'
11037        },
11038        relativeTime : {
11039            future : 'over %s',
11040            past : '%s geleden',
11041            s : 'een paar seconden',
11042            ss : '%d seconden',
11043            m : 'één minuut',
11044            mm : '%d minuten',
11045            h : 'één uur',
11046            hh : '%d uur',
11047            d : 'één dag',
11048            dd : '%d dagen',
11049            M : 'één maand',
11050            MM : '%d maanden',
11051            y : 'één jaar',
11052            yy : '%d jaar'
11053        },
11054        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
11055        ordinal : function (number) {
11056            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
11057        },
11058        week : {
11059            dow : 1, // Monday is the first day of the week.
11060            doy : 4  // The week that contains Jan 4th is the first week of the year.
11061        }
11062    });
11063
11064    //! moment.js locale configuration
11065
11066    var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
11067        monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
11068
11069    var monthsParse$3 = [/^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];
11070    var monthsRegex$4 = /^(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;
11071
11072    hooks.defineLocale('nl', {
11073        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
11074        monthsShort : function (m, format) {
11075            if (!m) {
11076                return monthsShortWithDots$2;
11077            } else if (/-MMM-/.test(format)) {
11078                return monthsShortWithoutDots$2[m.month()];
11079            } else {
11080                return monthsShortWithDots$2[m.month()];
11081            }
11082        },
11083
11084        monthsRegex: monthsRegex$4,
11085        monthsShortRegex: monthsRegex$4,
11086        monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,
11087        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
11088
11089        monthsParse : monthsParse$3,
11090        longMonthsParse : monthsParse$3,
11091        shortMonthsParse : monthsParse$3,
11092
11093        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
11094        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
11095        weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),
11096        weekdaysParseExact : true,
11097        longDateFormat : {
11098            LT : 'HH:mm',
11099            LTS : 'HH:mm:ss',
11100            L : 'DD-MM-YYYY',
11101            LL : 'D MMMM YYYY',
11102            LLL : 'D MMMM YYYY HH:mm',
11103            LLLL : 'dddd D MMMM YYYY HH:mm'
11104        },
11105        calendar : {
11106            sameDay: '[vandaag om] LT',
11107            nextDay: '[morgen om] LT',
11108            nextWeek: 'dddd [om] LT',
11109            lastDay: '[gisteren om] LT',
11110            lastWeek: '[afgelopen] dddd [om] LT',
11111            sameElse: 'L'
11112        },
11113        relativeTime : {
11114            future : 'over %s',
11115            past : '%s geleden',
11116            s : 'een paar seconden',
11117            ss : '%d seconden',
11118            m : 'één minuut',
11119            mm : '%d minuten',
11120            h : 'één uur',
11121            hh : '%d uur',
11122            d : 'één dag',
11123            dd : '%d dagen',
11124            M : 'één maand',
11125            MM : '%d maanden',
11126            y : 'één jaar',
11127            yy : '%d jaar'
11128        },
11129        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
11130        ordinal : function (number) {
11131            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
11132        },
11133        week : {
11134            dow : 1, // Monday is the first day of the week.
11135            doy : 4  // The week that contains Jan 4th is the first week of the year.
11136        }
11137    });
11138
11139    //! moment.js locale configuration
11140
11141    hooks.defineLocale('nn', {
11142        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
11143        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
11144        weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
11145        weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),
11146        weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),
11147        longDateFormat : {
11148            LT : 'HH:mm',
11149            LTS : 'HH:mm:ss',
11150            L : 'DD.MM.YYYY',
11151            LL : 'D. MMMM YYYY',
11152            LLL : 'D. MMMM YYYY [kl.] H:mm',
11153            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
11154        },
11155        calendar : {
11156            sameDay: '[I dag klokka] LT',
11157            nextDay: '[I morgon klokka] LT',
11158            nextWeek: 'dddd [klokka] LT',
11159            lastDay: '[I går klokka] LT',
11160            lastWeek: '[Føregåande] dddd [klokka] LT',
11161            sameElse: 'L'
11162        },
11163        relativeTime : {
11164            future : 'om %s',
11165            past : '%s sidan',
11166            s : 'nokre sekund',
11167            ss : '%d sekund',
11168            m : 'eit minutt',
11169            mm : '%d minutt',
11170            h : 'ein time',
11171            hh : '%d timar',
11172            d : 'ein dag',
11173            dd : '%d dagar',
11174            M : 'ein månad',
11175            MM : '%d månader',
11176            y : 'eit år',
11177            yy : '%d år'
11178        },
11179        dayOfMonthOrdinalParse: /\d{1,2}\./,
11180        ordinal : '%d.',
11181        week : {
11182            dow : 1, // Monday is the first day of the week.
11183            doy : 4  // The week that contains Jan 4th is the first week of the year.
11184        }
11185    });
11186
11187    //! moment.js locale configuration
11188
11189    var symbolMap$d = {
11190        '1': 'à©§',
11191        '2': '੨',
11192        '3': 'à©©',
11193        '4': '੪',
11194        '5': 'à©«',
11195        '6': '੬',
11196        '7': 'à©­',
11197        '8': 'à©®',
11198        '9': '੯',
11199        '0': '੦'
11200    },
11201    numberMap$c = {
11202        'à©§': '1',
11203        '੨': '2',
11204        'à©©': '3',
11205        '੪': '4',
11206        'à©«': '5',
11207        '੬': '6',
11208        'à©­': '7',
11209        'à©®': '8',
11210        '੯': '9',
11211        '੦': '0'
11212    };
11213
11214    hooks.defineLocale('pa-in', {
11215        // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.
11216        months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
11217        monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
11218        weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),
11219        weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
11220        weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
11221        longDateFormat : {
11222            LT : 'A h:mm ਵਜੇ',
11223            LTS : 'A h:mm:ss ਵਜੇ',
11224            L : 'DD/MM/YYYY',
11225            LL : 'D MMMM YYYY',
11226            LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',
11227            LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'
11228        },
11229        calendar : {
11230            sameDay : '[ਅਜ] LT',
11231            nextDay : '[ਕਲ] LT',
11232            nextWeek : '[ਅਗਲਾ] dddd, LT',
11233            lastDay : '[ਕਲ] LT',
11234            lastWeek : '[ਪਿਛਲੇ] dddd, LT',
11235            sameElse : 'L'
11236        },
11237        relativeTime : {
11238            future : '%s ਵਿੱਚ',
11239            past : '%s ਪਿਛਲੇ',
11240            s : 'ਕੁਝ ਸਕਿੰਟ',
11241            ss : '%d ਸਕਿੰਟ',
11242            m : 'ਇਕ ਮਿੰਟ',
11243            mm : '%d ਮਿੰਟ',
11244            h : 'ਇੱਕ ਘੰਟਾ',
11245            hh : '%d ਘੰਟੇ',
11246            d : 'ਇੱਕ ਦਿਨ',
11247            dd : '%d ਦਿਨ',
11248            M : 'ਇੱਕ ਮਹੀਨਾ',
11249            MM : '%d ਮਹੀਨੇ',
11250            y : 'ਇੱਕ ਸਾਲ',
11251            yy : '%d ਸਾਲ'
11252        },
11253        preparse: function (string) {
11254            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
11255                return numberMap$c[match];
11256            });
11257        },
11258        postformat: function (string) {
11259            return string.replace(/\d/g, function (match) {
11260                return symbolMap$d[match];
11261            });
11262        },
11263        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
11264        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
11265        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
11266        meridiemHour : function (hour, meridiem) {
11267            if (hour === 12) {
11268                hour = 0;
11269            }
11270            if (meridiem === 'ਰਾਤ') {
11271                return hour < 4 ? hour : hour + 12;
11272            } else if (meridiem === 'ਸਵੇਰ') {
11273                return hour;
11274            } else if (meridiem === 'ਦੁਪਹਿਰ') {
11275                return hour >= 10 ? hour : hour + 12;
11276            } else if (meridiem === 'ਸ਼ਾਮ') {
11277                return hour + 12;
11278            }
11279        },
11280        meridiem : function (hour, minute, isLower) {
11281            if (hour < 4) {
11282                return 'ਰਾਤ';
11283            } else if (hour < 10) {
11284                return 'ਸਵੇਰ';
11285            } else if (hour < 17) {
11286                return 'ਦੁਪਹਿਰ';
11287            } else if (hour < 20) {
11288                return 'ਸ਼ਾਮ';
11289            } else {
11290                return 'ਰਾਤ';
11291            }
11292        },
11293        week : {
11294            dow : 0, // Sunday is the first day of the week.
11295            doy : 6  // The week that contains Jan 1st is the first week of the year.
11296        }
11297    });
11298
11299    //! moment.js locale configuration
11300
11301    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),
11302        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');
11303    function plural$3(n) {
11304        return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);
11305    }
11306    function translate$8(number, withoutSuffix, key) {
11307        var result = number + ' ';
11308        switch (key) {
11309            case 'ss':
11310                return result + (plural$3(number) ? 'sekundy' : 'sekund');
11311            case 'm':
11312                return withoutSuffix ? 'minuta' : 'minutę';
11313            case 'mm':
11314                return result + (plural$3(number) ? 'minuty' : 'minut');
11315            case 'h':
11316                return withoutSuffix  ? 'godzina'  : 'godzinę';
11317            case 'hh':
11318                return result + (plural$3(number) ? 'godziny' : 'godzin');
11319            case 'MM':
11320                return result + (plural$3(number) ? 'miesiące' : 'miesięcy');
11321            case 'yy':
11322                return result + (plural$3(number) ? 'lata' : 'lat');
11323        }
11324    }
11325
11326    hooks.defineLocale('pl', {
11327        months : function (momentToFormat, format) {
11328            if (!momentToFormat) {
11329                return monthsNominative;
11330            } else if (format === '') {
11331                // Hack: if format empty we know this is used to generate
11332                // RegExp by moment. Give then back both valid forms of months
11333                // in RegExp ready format.
11334                return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';
11335            } else if (/D MMMM/.test(format)) {
11336                return monthsSubjective[momentToFormat.month()];
11337            } else {
11338                return monthsNominative[momentToFormat.month()];
11339            }
11340        },
11341        monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
11342        weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
11343        weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
11344        weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
11345        longDateFormat : {
11346            LT : 'HH:mm',
11347            LTS : 'HH:mm:ss',
11348            L : 'DD.MM.YYYY',
11349            LL : 'D MMMM YYYY',
11350            LLL : 'D MMMM YYYY HH:mm',
11351            LLLL : 'dddd, D MMMM YYYY HH:mm'
11352        },
11353        calendar : {
11354            sameDay: '[Dziś o] LT',
11355            nextDay: '[Jutro o] LT',
11356            nextWeek: function () {
11357                switch (this.day()) {
11358                    case 0:
11359                        return '[W niedzielę o] LT';
11360
11361                    case 2:
11362                        return '[We wtorek o] LT';
11363
11364                    case 3:
11365                        return '[W środę o] LT';
11366
11367                    case 6:
11368                        return '[W sobotę o] LT';
11369
11370                    default:
11371                        return '[W] dddd [o] LT';
11372                }
11373            },
11374            lastDay: '[Wczoraj o] LT',
11375            lastWeek: function () {
11376                switch (this.day()) {
11377                    case 0:
11378                        return '[W zeszłą niedzielę o] LT';
11379                    case 3:
11380                        return '[W zeszłą środę o] LT';
11381                    case 6:
11382                        return '[W zeszłą sobotę o] LT';
11383                    default:
11384                        return '[W zeszły] dddd [o] LT';
11385                }
11386            },
11387            sameElse: 'L'
11388        },
11389        relativeTime : {
11390            future : 'za %s',
11391            past : '%s temu',
11392            s : 'kilka sekund',
11393            ss : translate$8,
11394            m : translate$8,
11395            mm : translate$8,
11396            h : translate$8,
11397            hh : translate$8,
11398            d : '1 dzień',
11399            dd : '%d dni',
11400            M : 'miesiąc',
11401            MM : translate$8,
11402            y : 'rok',
11403            yy : translate$8
11404        },
11405        dayOfMonthOrdinalParse: /\d{1,2}\./,
11406        ordinal : '%d.',
11407        week : {
11408            dow : 1, // Monday is the first day of the week.
11409            doy : 4  // The week that contains Jan 4th is the first week of the year.
11410        }
11411    });
11412
11413    //! moment.js locale configuration
11414
11415    hooks.defineLocale('pt-br', {
11416        months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),
11417        monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
11418        weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
11419        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
11420        weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
11421        weekdaysParseExact : true,
11422        longDateFormat : {
11423            LT : 'HH:mm',
11424            LTS : 'HH:mm:ss',
11425            L : 'DD/MM/YYYY',
11426            LL : 'D [de] MMMM [de] YYYY',
11427            LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',
11428            LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
11429        },
11430        calendar : {
11431            sameDay: '[Hoje às] LT',
11432            nextDay: '[Amanhã às] LT',
11433            nextWeek: 'dddd [às] LT',
11434            lastDay: '[Ontem às] LT',
11435            lastWeek: function () {
11436                return (this.day() === 0 || this.day() === 6) ?
11437                    '[Último] dddd [às] LT' : // Saturday + Sunday
11438                    '[Última] dddd [às] LT'; // Monday - Friday
11439            },
11440            sameElse: 'L'
11441        },
11442        relativeTime : {
11443            future : 'em %s',
11444            past : 'há %s',
11445            s : 'poucos segundos',
11446            ss : '%d segundos',
11447            m : 'um minuto',
11448            mm : '%d minutos',
11449            h : 'uma hora',
11450            hh : '%d horas',
11451            d : 'um dia',
11452            dd : '%d dias',
11453            M : 'um mês',
11454            MM : '%d meses',
11455            y : 'um ano',
11456            yy : '%d anos'
11457        },
11458        dayOfMonthOrdinalParse: /\d{1,2}º/,
11459        ordinal : '%dº'
11460    });
11461
11462    //! moment.js locale configuration
11463
11464    hooks.defineLocale('pt', {
11465        months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),
11466        monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
11467        weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
11468        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
11469        weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
11470        weekdaysParseExact : true,
11471        longDateFormat : {
11472            LT : 'HH:mm',
11473            LTS : 'HH:mm:ss',
11474            L : 'DD/MM/YYYY',
11475            LL : 'D [de] MMMM [de] YYYY',
11476            LLL : 'D [de] MMMM [de] YYYY HH:mm',
11477            LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'
11478        },
11479        calendar : {
11480            sameDay: '[Hoje às] LT',
11481            nextDay: '[Amanhã às] LT',
11482            nextWeek: 'dddd [às] LT',
11483            lastDay: '[Ontem às] LT',
11484            lastWeek: function () {
11485                return (this.day() === 0 || this.day() === 6) ?
11486                    '[Último] dddd [às] LT' : // Saturday + Sunday
11487                    '[Última] dddd [às] LT'; // Monday - Friday
11488            },
11489            sameElse: 'L'
11490        },
11491        relativeTime : {
11492            future : 'em %s',
11493            past : 'há %s',
11494            s : 'segundos',
11495            ss : '%d segundos',
11496            m : 'um minuto',
11497            mm : '%d minutos',
11498            h : 'uma hora',
11499            hh : '%d horas',
11500            d : 'um dia',
11501            dd : '%d dias',
11502            M : 'um mês',
11503            MM : '%d meses',
11504            y : 'um ano',
11505            yy : '%d anos'
11506        },
11507        dayOfMonthOrdinalParse: /\d{1,2}º/,
11508        ordinal : '%dº',
11509        week : {
11510            dow : 1, // Monday is the first day of the week.
11511            doy : 4  // The week that contains Jan 4th is the first week of the year.
11512        }
11513    });
11514
11515    //! moment.js locale configuration
11516
11517    function relativeTimeWithPlural$2(number, withoutSuffix, key) {
11518        var format = {
11519                'ss': 'secunde',
11520                'mm': 'minute',
11521                'hh': 'ore',
11522                'dd': 'zile',
11523                'MM': 'luni',
11524                'yy': 'ani'
11525            },
11526            separator = ' ';
11527        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
11528            separator = ' de ';
11529        }
11530        return number + separator + format[key];
11531    }
11532
11533    hooks.defineLocale('ro', {
11534        months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
11535        monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
11536        monthsParseExact: true,
11537        weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
11538        weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
11539        weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
11540        longDateFormat : {
11541            LT : 'H:mm',
11542            LTS : 'H:mm:ss',
11543            L : 'DD.MM.YYYY',
11544            LL : 'D MMMM YYYY',
11545            LLL : 'D MMMM YYYY H:mm',
11546            LLLL : 'dddd, D MMMM YYYY H:mm'
11547        },
11548        calendar : {
11549            sameDay: '[azi la] LT',
11550            nextDay: '[mâine la] LT',
11551            nextWeek: 'dddd [la] LT',
11552            lastDay: '[ieri la] LT',
11553            lastWeek: '[fosta] dddd [la] LT',
11554            sameElse: 'L'
11555        },
11556        relativeTime : {
11557            future : 'peste %s',
11558            past : '%s în urmă',
11559            s : 'câteva secunde',
11560            ss : relativeTimeWithPlural$2,
11561            m : 'un minut',
11562            mm : relativeTimeWithPlural$2,
11563            h : 'o oră',
11564            hh : relativeTimeWithPlural$2,
11565            d : 'o zi',
11566            dd : relativeTimeWithPlural$2,
11567            M : 'o lună',
11568            MM : relativeTimeWithPlural$2,
11569            y : 'un an',
11570            yy : relativeTimeWithPlural$2
11571        },
11572        week : {
11573            dow : 1, // Monday is the first day of the week.
11574            doy : 7  // The week that contains Jan 1st is the first week of the year.
11575        }
11576    });
11577
11578    //! moment.js locale configuration
11579
11580    function plural$4(word, num) {
11581        var forms = word.split('_');
11582        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]);
11583    }
11584    function relativeTimeWithPlural$3(number, withoutSuffix, key) {
11585        var format = {
11586            'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
11587            'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
11588            'hh': 'час_часа_часов',
11589            'dd': 'день_дня_дней',
11590            'MM': 'месяц_месяца_месяцев',
11591            'yy': 'год_года_лет'
11592        };
11593        if (key === 'm') {
11594            return withoutSuffix ? 'минута' : 'минуту';
11595        }
11596        else {
11597            return number + ' ' + plural$4(format[key], +number);
11598        }
11599    }
11600    var monthsParse$4 = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];
11601
11602    // http://new.gramota.ru/spravka/rules/139-prop : § 103
11603    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
11604    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
11605    hooks.defineLocale('ru', {
11606        months : {
11607            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),
11608            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')
11609        },
11610        monthsShort : {
11611            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ?
11612            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),
11613            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')
11614        },
11615        weekdays : {
11616            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
11617            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),
11618            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/
11619        },
11620        weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
11621        weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
11622        monthsParse : monthsParse$4,
11623        longMonthsParse : monthsParse$4,
11624        shortMonthsParse : monthsParse$4,
11625
11626        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
11627        monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
11628
11629        // копия предыдущего
11630        monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
11631
11632        // полные названия с падежами
11633        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
11634
11635        // Выражение, которое соотвествует только сокращённым формам
11636        monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
11637        longDateFormat : {
11638            LT : 'H:mm',
11639            LTS : 'H:mm:ss',
11640            L : 'DD.MM.YYYY',
11641            LL : 'D MMMM YYYY г.',
11642            LLL : 'D MMMM YYYY г., H:mm',
11643            LLLL : 'dddd, D MMMM YYYY г., H:mm'
11644        },
11645        calendar : {
11646            sameDay: '[Сегодня, в] LT',
11647            nextDay: '[Завтра, в] LT',
11648            lastDay: '[Вчера, в] LT',
11649            nextWeek: function (now) {
11650                if (now.week() !== this.week()) {
11651                    switch (this.day()) {
11652                        case 0:
11653                            return '[В следующее] dddd, [в] LT';
11654                        case 1:
11655                        case 2:
11656                        case 4:
11657                            return '[В следующий] dddd, [в] LT';
11658                        case 3:
11659                        case 5:
11660                        case 6:
11661                            return '[В следующую] dddd, [в] LT';
11662                    }
11663                } else {
11664                    if (this.day() === 2) {
11665                        return '[Во] dddd, [в] LT';
11666                    } else {
11667                        return '[В] dddd, [в] LT';
11668                    }
11669                }
11670            },
11671            lastWeek: function (now) {
11672                if (now.week() !== this.week()) {
11673                    switch (this.day()) {
11674                        case 0:
11675                            return '[В прошлое] dddd, [в] LT';
11676                        case 1:
11677                        case 2:
11678                        case 4:
11679                            return '[В прошлый] dddd, [в] LT';
11680                        case 3:
11681                        case 5:
11682                        case 6:
11683                            return '[В прошлую] dddd, [в] LT';
11684                    }
11685                } else {
11686                    if (this.day() === 2) {
11687                        return '[Во] dddd, [в] LT';
11688                    } else {
11689                        return '[В] dddd, [в] LT';
11690                    }
11691                }
11692            },
11693            sameElse: 'L'
11694        },
11695        relativeTime : {
11696            future : 'через %s',
11697            past : '%s назад',
11698            s : 'несколько секунд',
11699            ss : relativeTimeWithPlural$3,
11700            m : relativeTimeWithPlural$3,
11701            mm : relativeTimeWithPlural$3,
11702            h : 'час',
11703            hh : relativeTimeWithPlural$3,
11704            d : 'день',
11705            dd : relativeTimeWithPlural$3,
11706            M : 'месяц',
11707            MM : relativeTimeWithPlural$3,
11708            y : 'год',
11709            yy : relativeTimeWithPlural$3
11710        },
11711        meridiemParse: /ночи|утра|дня|вечера/i,
11712        isPM : function (input) {
11713            return /^(дня|вечера)$/.test(input);
11714        },
11715        meridiem : function (hour, minute, isLower) {
11716            if (hour < 4) {
11717                return 'ночи';
11718            } else if (hour < 12) {
11719                return 'утра';
11720            } else if (hour < 17) {
11721                return 'дня';
11722            } else {
11723                return 'вечера';
11724            }
11725        },
11726        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
11727        ordinal: function (number, period) {
11728            switch (period) {
11729                case 'M':
11730                case 'd':
11731                case 'DDD':
11732                    return number + '-й';
11733                case 'D':
11734                    return number + '-го';
11735                case 'w':
11736                case 'W':
11737                    return number + '-я';
11738                default:
11739                    return number;
11740            }
11741        },
11742        week : {
11743            dow : 1, // Monday is the first day of the week.
11744            doy : 4  // The week that contains Jan 4th is the first week of the year.
11745        }
11746    });
11747
11748    //! moment.js locale configuration
11749
11750    var months$6 = [
11751        'جنوري',
11752        'فيبروري',
11753        'مارچ',
11754        'اپريل',
11755        'مئي',
11756        'جون',
11757        'جولاءِ',
11758        'آگسٽ',
11759        'سيپٽمبر',
11760        'آڪٽوبر',
11761        'نومبر',
11762        'ڊسمبر'
11763    ];
11764    var days$1 = [
11765        'آچر',
11766        'سومر',
11767        'اڱارو',
11768        'اربع',
11769        'خميس',
11770        'جمع',
11771        'ڇنڇر'
11772    ];
11773
11774    hooks.defineLocale('sd', {
11775        months : months$6,
11776        monthsShort : months$6,
11777        weekdays : days$1,
11778        weekdaysShort : days$1,
11779        weekdaysMin : days$1,
11780        longDateFormat : {
11781            LT : 'HH:mm',
11782            LTS : 'HH:mm:ss',
11783            L : 'DD/MM/YYYY',
11784            LL : 'D MMMM YYYY',
11785            LLL : 'D MMMM YYYY HH:mm',
11786            LLLL : 'dddd، D MMMM YYYY HH:mm'
11787        },
11788        meridiemParse: /صبح|شام/,
11789        isPM : function (input) {
11790            return 'شام' === input;
11791        },
11792        meridiem : function (hour, minute, isLower) {
11793            if (hour < 12) {
11794                return 'صبح';
11795            }
11796            return 'شام';
11797        },
11798        calendar : {
11799            sameDay : '[اڄ] LT',
11800            nextDay : '[سڀاڻي] LT',
11801            nextWeek : 'dddd [اڳين هفتي تي] LT',
11802            lastDay : '[ڪالهه] LT',
11803            lastWeek : '[گزريل هفتي] dddd [تي] LT',
11804            sameElse : 'L'
11805        },
11806        relativeTime : {
11807            future : '%s پوء',
11808            past : '%s اڳ',
11809            s : 'چند سيڪنڊ',
11810            ss : '%d سيڪنڊ',
11811            m : 'هڪ منٽ',
11812            mm : '%d منٽ',
11813            h : 'هڪ ڪلاڪ',
11814            hh : '%d ڪلاڪ',
11815            d : 'هڪ ڏينهن',
11816            dd : '%d ڏينهن',
11817            M : 'هڪ مهينو',
11818            MM : '%d مهينا',
11819            y : 'هڪ سال',
11820            yy : '%d سال'
11821        },
11822        preparse: function (string) {
11823            return string.replace(/،/g, ',');
11824        },
11825        postformat: function (string) {
11826            return string.replace(/,/g, '،');
11827        },
11828        week : {
11829            dow : 1, // Monday is the first day of the week.
11830            doy : 4  // The week that contains Jan 4th is the first week of the year.
11831        }
11832    });
11833
11834    //! moment.js locale configuration
11835
11836    hooks.defineLocale('se', {
11837        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('_'),
11838        monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
11839        weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),
11840        weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
11841        weekdaysMin : 's_v_m_g_d_b_L'.split('_'),
11842        longDateFormat : {
11843            LT : 'HH:mm',
11844            LTS : 'HH:mm:ss',
11845            L : 'DD.MM.YYYY',
11846            LL : 'MMMM D. [b.] YYYY',
11847            LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',
11848            LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'
11849        },
11850        calendar : {
11851            sameDay: '[otne ti] LT',
11852            nextDay: '[ihttin ti] LT',
11853            nextWeek: 'dddd [ti] LT',
11854            lastDay: '[ikte ti] LT',
11855            lastWeek: '[ovddit] dddd [ti] LT',
11856            sameElse: 'L'
11857        },
11858        relativeTime : {
11859            future : '%s geažes',
11860            past : 'maŋit %s',
11861            s : 'moadde sekunddat',
11862            ss: '%d sekunddat',
11863            m : 'okta minuhta',
11864            mm : '%d minuhtat',
11865            h : 'okta diimmu',
11866            hh : '%d diimmut',
11867            d : 'okta beaivi',
11868            dd : '%d beaivvit',
11869            M : 'okta mánnu',
11870            MM : '%d mánut',
11871            y : 'okta jahki',
11872            yy : '%d jagit'
11873        },
11874        dayOfMonthOrdinalParse: /\d{1,2}\./,
11875        ordinal : '%d.',
11876        week : {
11877            dow : 1, // Monday is the first day of the week.
11878            doy : 4  // The week that contains Jan 4th is the first week of the year.
11879        }
11880    });
11881
11882    //! moment.js locale configuration
11883
11884    /*jshint -W100*/
11885    hooks.defineLocale('si', {
11886        months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),
11887        monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),
11888        weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),
11889        weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
11890        weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
11891        weekdaysParseExact : true,
11892        longDateFormat : {
11893            LT : 'a h:mm',
11894            LTS : 'a h:mm:ss',
11895            L : 'YYYY/MM/DD',
11896            LL : 'YYYY MMMM D',
11897            LLL : 'YYYY MMMM D, a h:mm',
11898            LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'
11899        },
11900        calendar : {
11901            sameDay : '[අද] LT[ට]',
11902            nextDay : '[හෙට] LT[ට]',
11903            nextWeek : 'dddd LT[à¶§]',
11904            lastDay : '[ඊයේ] LT[ට]',
11905            lastWeek : '[පසුගිය] dddd LT[ට]',
11906            sameElse : 'L'
11907        },
11908        relativeTime : {
11909            future : '%sකින්',
11910            past : '%sකට පෙර',
11911            s : 'තත්පර කිහිපය',
11912            ss : 'තත්පර %d',
11913            m : 'මිනිත්තුව',
11914            mm : 'මිනිත්තු %d',
11915            h : 'පැය',
11916            hh : 'පැය %d',
11917            d : 'දිනය',
11918            dd : 'දින %d',
11919            M : 'මාසය',
11920            MM : 'මාස %d',
11921            y : 'වසර',
11922            yy : 'වසර %d'
11923        },
11924        dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
11925        ordinal : function (number) {
11926            return number + ' වැනි';
11927        },
11928        meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
11929        isPM : function (input) {
11930            return input === 'ප.ව.' || input === 'පස් වරු';
11931        },
11932        meridiem : function (hours, minutes, isLower) {
11933            if (hours > 11) {
11934                return isLower ? 'ප.ව.' : 'පස් වරු';
11935            } else {
11936                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
11937            }
11938        }
11939    });
11940
11941    //! moment.js locale configuration
11942
11943    var months$7 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),
11944        monthsShort$5 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
11945    function plural$5(n) {
11946        return (n > 1) && (n < 5);
11947    }
11948    function translate$9(number, withoutSuffix, key, isFuture) {
11949        var result = number + ' ';
11950        switch (key) {
11951            case 's':  // a few seconds / in a few seconds / a few seconds ago
11952                return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';
11953            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
11954                if (withoutSuffix || isFuture) {
11955                    return result + (plural$5(number) ? 'sekundy' : 'sekúnd');
11956                } else {
11957                    return result + 'sekundami';
11958                }
11959                break;
11960            case 'm':  // a minute / in a minute / a minute ago
11961                return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');
11962            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
11963                if (withoutSuffix || isFuture) {
11964                    return result + (plural$5(number) ? 'minúty' : 'minút');
11965                } else {
11966                    return result + 'minútami';
11967                }
11968                break;
11969            case 'h':  // an hour / in an hour / an hour ago
11970                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
11971            case 'hh': // 9 hours / in 9 hours / 9 hours ago
11972                if (withoutSuffix || isFuture) {
11973                    return result + (plural$5(number) ? 'hodiny' : 'hodín');
11974                } else {
11975                    return result + 'hodinami';
11976                }
11977                break;
11978            case 'd':  // a day / in a day / a day ago
11979                return (withoutSuffix || isFuture) ? 'deň' : 'dňom';
11980            case 'dd': // 9 days / in 9 days / 9 days ago
11981                if (withoutSuffix || isFuture) {
11982                    return result + (plural$5(number) ? 'dni' : 'dní');
11983                } else {
11984                    return result + 'dňami';
11985                }
11986                break;
11987            case 'M':  // a month / in a month / a month ago
11988                return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';
11989            case 'MM': // 9 months / in 9 months / 9 months ago
11990                if (withoutSuffix || isFuture) {
11991                    return result + (plural$5(number) ? 'mesiace' : 'mesiacov');
11992                } else {
11993                    return result + 'mesiacmi';
11994                }
11995                break;
11996            case 'y':  // a year / in a year / a year ago
11997                return (withoutSuffix || isFuture) ? 'rok' : 'rokom';
11998            case 'yy': // 9 years / in 9 years / 9 years ago
11999                if (withoutSuffix || isFuture) {
12000                    return result + (plural$5(number) ? 'roky' : 'rokov');
12001                } else {
12002                    return result + 'rokmi';
12003                }
12004                break;
12005        }
12006    }
12007
12008    hooks.defineLocale('sk', {
12009        months : months$7,
12010        monthsShort : monthsShort$5,
12011        weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
12012        weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),
12013        weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),
12014        longDateFormat : {
12015            LT: 'H:mm',
12016            LTS : 'H:mm:ss',
12017            L : 'DD.MM.YYYY',
12018            LL : 'D. MMMM YYYY',
12019            LLL : 'D. MMMM YYYY H:mm',
12020            LLLL : 'dddd D. MMMM YYYY H:mm'
12021        },
12022        calendar : {
12023            sameDay: '[dnes o] LT',
12024            nextDay: '[zajtra o] LT',
12025            nextWeek: function () {
12026                switch (this.day()) {
12027                    case 0:
12028                        return '[v nedeľu o] LT';
12029                    case 1:
12030                    case 2:
12031                        return '[v] dddd [o] LT';
12032                    case 3:
12033                        return '[v stredu o] LT';
12034                    case 4:
12035                        return '[vo štvrtok o] LT';
12036                    case 5:
12037                        return '[v piatok o] LT';
12038                    case 6:
12039                        return '[v sobotu o] LT';
12040                }
12041            },
12042            lastDay: '[včera o] LT',
12043            lastWeek: function () {
12044                switch (this.day()) {
12045                    case 0:
12046                        return '[minulú nedeľu o] LT';
12047                    case 1:
12048                    case 2:
12049                        return '[minulý] dddd [o] LT';
12050                    case 3:
12051                        return '[minulú stredu o] LT';
12052                    case 4:
12053                    case 5:
12054                        return '[minulý] dddd [o] LT';
12055                    case 6:
12056                        return '[minulú sobotu o] LT';
12057                }
12058            },
12059            sameElse: 'L'
12060        },
12061        relativeTime : {
12062            future : 'za %s',
12063            past : 'pred %s',
12064            s : translate$9,
12065            ss : translate$9,
12066            m : translate$9,
12067            mm : translate$9,
12068            h : translate$9,
12069            hh : translate$9,
12070            d : translate$9,
12071            dd : translate$9,
12072            M : translate$9,
12073            MM : translate$9,
12074            y : translate$9,
12075            yy : translate$9
12076        },
12077        dayOfMonthOrdinalParse: /\d{1,2}\./,
12078        ordinal : '%d.',
12079        week : {
12080            dow : 1, // Monday is the first day of the week.
12081            doy : 4  // The week that contains Jan 4th is the first week of the year.
12082        }
12083    });
12084
12085    //! moment.js locale configuration
12086
12087    function processRelativeTime$6(number, withoutSuffix, key, isFuture) {
12088        var result = number + ' ';
12089        switch (key) {
12090            case 's':
12091                return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';
12092            case 'ss':
12093                if (number === 1) {
12094                    result += withoutSuffix ? 'sekundo' : 'sekundi';
12095                } else if (number === 2) {
12096                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
12097                } else if (number < 5) {
12098                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
12099                } else {
12100                    result += withoutSuffix || isFuture ? 'sekund' : 'sekund';
12101                }
12102                return result;
12103            case 'm':
12104                return withoutSuffix ? 'ena minuta' : 'eno minuto';
12105            case 'mm':
12106                if (number === 1) {
12107                    result += withoutSuffix ? 'minuta' : 'minuto';
12108                } else if (number === 2) {
12109                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
12110                } else if (number < 5) {
12111                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
12112                } else {
12113                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
12114                }
12115                return result;
12116            case 'h':
12117                return withoutSuffix ? 'ena ura' : 'eno uro';
12118            case 'hh':
12119                if (number === 1) {
12120                    result += withoutSuffix ? 'ura' : 'uro';
12121                } else if (number === 2) {
12122                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
12123                } else if (number < 5) {
12124                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
12125                } else {
12126                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
12127                }
12128                return result;
12129            case 'd':
12130                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
12131            case 'dd':
12132                if (number === 1) {
12133                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
12134                } else if (number === 2) {
12135                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
12136                } else {
12137                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
12138                }
12139                return result;
12140            case 'M':
12141                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
12142            case 'MM':
12143                if (number === 1) {
12144                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
12145                } else if (number === 2) {
12146                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
12147                } else if (number < 5) {
12148                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
12149                } else {
12150                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
12151                }
12152                return result;
12153            case 'y':
12154                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
12155            case 'yy':
12156                if (number === 1) {
12157                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
12158                } else if (number === 2) {
12159                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
12160                } else if (number < 5) {
12161                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
12162                } else {
12163                    result += withoutSuffix || isFuture ? 'let' : 'leti';
12164                }
12165                return result;
12166        }
12167    }
12168
12169    hooks.defineLocale('sl', {
12170        months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
12171        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
12172        monthsParseExact: true,
12173        weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
12174        weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
12175        weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),
12176        weekdaysParseExact : true,
12177        longDateFormat : {
12178            LT : 'H:mm',
12179            LTS : 'H:mm:ss',
12180            L : 'DD.MM.YYYY',
12181            LL : 'D. MMMM YYYY',
12182            LLL : 'D. MMMM YYYY H:mm',
12183            LLLL : 'dddd, D. MMMM YYYY H:mm'
12184        },
12185        calendar : {
12186            sameDay  : '[danes ob] LT',
12187            nextDay  : '[jutri ob] LT',
12188
12189            nextWeek : function () {
12190                switch (this.day()) {
12191                    case 0:
12192                        return '[v] [nedeljo] [ob] LT';
12193                    case 3:
12194                        return '[v] [sredo] [ob] LT';
12195                    case 6:
12196                        return '[v] [soboto] [ob] LT';
12197                    case 1:
12198                    case 2:
12199                    case 4:
12200                    case 5:
12201                        return '[v] dddd [ob] LT';
12202                }
12203            },
12204            lastDay  : '[včeraj ob] LT',
12205            lastWeek : function () {
12206                switch (this.day()) {
12207                    case 0:
12208                        return '[prejšnjo] [nedeljo] [ob] LT';
12209                    case 3:
12210                        return '[prejšnjo] [sredo] [ob] LT';
12211                    case 6:
12212                        return '[prejšnjo] [soboto] [ob] LT';
12213                    case 1:
12214                    case 2:
12215                    case 4:
12216                    case 5:
12217                        return '[prejšnji] dddd [ob] LT';
12218                }
12219            },
12220            sameElse : 'L'
12221        },
12222        relativeTime : {
12223            future : 'čez %s',
12224            past   : 'pred %s',
12225            s      : processRelativeTime$6,
12226            ss     : processRelativeTime$6,
12227            m      : processRelativeTime$6,
12228            mm     : processRelativeTime$6,
12229            h      : processRelativeTime$6,
12230            hh     : processRelativeTime$6,
12231            d      : processRelativeTime$6,
12232            dd     : processRelativeTime$6,
12233            M      : processRelativeTime$6,
12234            MM     : processRelativeTime$6,
12235            y      : processRelativeTime$6,
12236            yy     : processRelativeTime$6
12237        },
12238        dayOfMonthOrdinalParse: /\d{1,2}\./,
12239        ordinal : '%d.',
12240        week : {
12241            dow : 1, // Monday is the first day of the week.
12242            doy : 7  // The week that contains Jan 1st is the first week of the year.
12243        }
12244    });
12245
12246    //! moment.js locale configuration
12247
12248    hooks.defineLocale('sq', {
12249        months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),
12250        monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
12251        weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),
12252        weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
12253        weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),
12254        weekdaysParseExact : true,
12255        meridiemParse: /PD|MD/,
12256        isPM: function (input) {
12257            return input.charAt(0) === 'M';
12258        },
12259        meridiem : function (hours, minutes, isLower) {
12260            return hours < 12 ? 'PD' : 'MD';
12261        },
12262        longDateFormat : {
12263            LT : 'HH:mm',
12264            LTS : 'HH:mm:ss',
12265            L : 'DD/MM/YYYY',
12266            LL : 'D MMMM YYYY',
12267            LLL : 'D MMMM YYYY HH:mm',
12268            LLLL : 'dddd, D MMMM YYYY HH:mm'
12269        },
12270        calendar : {
12271            sameDay : '[Sot në] LT',
12272            nextDay : '[Nesër në] LT',
12273            nextWeek : 'dddd [në] LT',
12274            lastDay : '[Dje në] LT',
12275            lastWeek : 'dddd [e kaluar në] LT',
12276            sameElse : 'L'
12277        },
12278        relativeTime : {
12279            future : 'në %s',
12280            past : '%s më parë',
12281            s : 'disa sekonda',
12282            ss : '%d sekonda',
12283            m : 'një minutë',
12284            mm : '%d minuta',
12285            h : 'një orë',
12286            hh : '%d orë',
12287            d : 'një ditë',
12288            dd : '%d ditë',
12289            M : 'një muaj',
12290            MM : '%d muaj',
12291            y : 'një vit',
12292            yy : '%d vite'
12293        },
12294        dayOfMonthOrdinalParse: /\d{1,2}\./,
12295        ordinal : '%d.',
12296        week : {
12297            dow : 1, // Monday is the first day of the week.
12298            doy : 4  // The week that contains Jan 4th is the first week of the year.
12299        }
12300    });
12301
12302    //! moment.js locale configuration
12303
12304    var translator$1 = {
12305        words: { //Different grammatical cases
12306            ss: ['секунда', 'секунде', 'секунди'],
12307            m: ['један минут', 'једне минуте'],
12308            mm: ['минут', 'минуте', 'минута'],
12309            h: ['један сат', 'једног сата'],
12310            hh: ['сат', 'сата', 'сати'],
12311            dd: ['дан', 'дана', 'дана'],
12312            MM: ['месец', 'месеца', 'месеци'],
12313            yy: ['година', 'године', 'година']
12314        },
12315        correctGrammaticalCase: function (number, wordKey) {
12316            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
12317        },
12318        translate: function (number, withoutSuffix, key) {
12319            var wordKey = translator$1.words[key];
12320            if (key.length === 1) {
12321                return withoutSuffix ? wordKey[0] : wordKey[1];
12322            } else {
12323                return number + ' ' + translator$1.correctGrammaticalCase(number, wordKey);
12324            }
12325        }
12326    };
12327
12328    hooks.defineLocale('sr-cyrl', {
12329        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),
12330        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
12331        monthsParseExact: true,
12332        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
12333        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
12334        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
12335        weekdaysParseExact : true,
12336        longDateFormat: {
12337            LT: 'H:mm',
12338            LTS : 'H:mm:ss',
12339            L: 'DD.MM.YYYY',
12340            LL: 'D. MMMM YYYY',
12341            LLL: 'D. MMMM YYYY H:mm',
12342            LLLL: 'dddd, D. MMMM YYYY H:mm'
12343        },
12344        calendar: {
12345            sameDay: '[данас у] LT',
12346            nextDay: '[сутра у] LT',
12347            nextWeek: function () {
12348                switch (this.day()) {
12349                    case 0:
12350                        return '[у] [недељу] [у] LT';
12351                    case 3:
12352                        return '[у] [среду] [у] LT';
12353                    case 6:
12354                        return '[у] [суботу] [у] LT';
12355                    case 1:
12356                    case 2:
12357                    case 4:
12358                    case 5:
12359                        return '[у] dddd [у] LT';
12360                }
12361            },
12362            lastDay  : '[јуче у] LT',
12363            lastWeek : function () {
12364                var lastWeekDays = [
12365                    '[прошле] [недеље] [у] LT',
12366                    '[прошлог] [понедељка] [у] LT',
12367                    '[прошлог] [уторка] [у] LT',
12368                    '[прошле] [среде] [у] LT',
12369                    '[прошлог] [четвртка] [у] LT',
12370                    '[прошлог] [петка] [у] LT',
12371                    '[прошле] [суботе] [у] LT'
12372                ];
12373                return lastWeekDays[this.day()];
12374            },
12375            sameElse : 'L'
12376        },
12377        relativeTime : {
12378            future : 'за %s',
12379            past   : 'пре %s',
12380            s      : 'неколико секунди',
12381            ss     : translator$1.translate,
12382            m      : translator$1.translate,
12383            mm     : translator$1.translate,
12384            h      : translator$1.translate,
12385            hh     : translator$1.translate,
12386            d      : 'дан',
12387            dd     : translator$1.translate,
12388            M      : 'месец',
12389            MM     : translator$1.translate,
12390            y      : 'годину',
12391            yy     : translator$1.translate
12392        },
12393        dayOfMonthOrdinalParse: /\d{1,2}\./,
12394        ordinal : '%d.',
12395        week : {
12396            dow : 1, // Monday is the first day of the week.
12397            doy : 7  // The week that contains Jan 1st is the first week of the year.
12398        }
12399    });
12400
12401    //! moment.js locale configuration
12402
12403    var translator$2 = {
12404        words: { //Different grammatical cases
12405            ss: ['sekunda', 'sekunde', 'sekundi'],
12406            m: ['jedan minut', 'jedne minute'],
12407            mm: ['minut', 'minute', 'minuta'],
12408            h: ['jedan sat', 'jednog sata'],
12409            hh: ['sat', 'sata', 'sati'],
12410            dd: ['dan', 'dana', 'dana'],
12411            MM: ['mesec', 'meseca', 'meseci'],
12412            yy: ['godina', 'godine', 'godina']
12413        },
12414        correctGrammaticalCase: function (number, wordKey) {
12415            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
12416        },
12417        translate: function (number, withoutSuffix, key) {
12418            var wordKey = translator$2.words[key];
12419            if (key.length === 1) {
12420                return withoutSuffix ? wordKey[0] : wordKey[1];
12421            } else {
12422                return number + ' ' + translator$2.correctGrammaticalCase(number, wordKey);
12423            }
12424        }
12425    };
12426
12427    hooks.defineLocale('sr', {
12428        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
12429        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
12430        monthsParseExact: true,
12431        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),
12432        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
12433        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
12434        weekdaysParseExact : true,
12435        longDateFormat: {
12436            LT: 'H:mm',
12437            LTS : 'H:mm:ss',
12438            L: 'DD.MM.YYYY',
12439            LL: 'D. MMMM YYYY',
12440            LLL: 'D. MMMM YYYY H:mm',
12441            LLLL: 'dddd, D. MMMM YYYY H:mm'
12442        },
12443        calendar: {
12444            sameDay: '[danas u] LT',
12445            nextDay: '[sutra u] LT',
12446            nextWeek: function () {
12447                switch (this.day()) {
12448                    case 0:
12449                        return '[u] [nedelju] [u] LT';
12450                    case 3:
12451                        return '[u] [sredu] [u] LT';
12452                    case 6:
12453                        return '[u] [subotu] [u] LT';
12454                    case 1:
12455                    case 2:
12456                    case 4:
12457                    case 5:
12458                        return '[u] dddd [u] LT';
12459                }
12460            },
12461            lastDay  : '[juče u] LT',
12462            lastWeek : function () {
12463                var lastWeekDays = [
12464                    '[prošle] [nedelje] [u] LT',
12465                    '[prošlog] [ponedeljka] [u] LT',
12466                    '[prošlog] [utorka] [u] LT',
12467                    '[prošle] [srede] [u] LT',
12468                    '[prošlog] [četvrtka] [u] LT',
12469                    '[prošlog] [petka] [u] LT',
12470                    '[prošle] [subote] [u] LT'
12471                ];
12472                return lastWeekDays[this.day()];
12473            },
12474            sameElse : 'L'
12475        },
12476        relativeTime : {
12477            future : 'za %s',
12478            past   : 'pre %s',
12479            s      : 'nekoliko sekundi',
12480            ss     : translator$2.translate,
12481            m      : translator$2.translate,
12482            mm     : translator$2.translate,
12483            h      : translator$2.translate,
12484            hh     : translator$2.translate,
12485            d      : 'dan',
12486            dd     : translator$2.translate,
12487            M      : 'mesec',
12488            MM     : translator$2.translate,
12489            y      : 'godinu',
12490            yy     : translator$2.translate
12491        },
12492        dayOfMonthOrdinalParse: /\d{1,2}\./,
12493        ordinal : '%d.',
12494        week : {
12495            dow : 1, // Monday is the first day of the week.
12496            doy : 7  // The week that contains Jan 1st is the first week of the year.
12497        }
12498    });
12499
12500    //! moment.js locale configuration
12501
12502    hooks.defineLocale('ss', {
12503        months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'),
12504        monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
12505        weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),
12506        weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
12507        weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
12508        weekdaysParseExact : true,
12509        longDateFormat : {
12510            LT : 'h:mm A',
12511            LTS : 'h:mm:ss A',
12512            L : 'DD/MM/YYYY',
12513            LL : 'D MMMM YYYY',
12514            LLL : 'D MMMM YYYY h:mm A',
12515            LLLL : 'dddd, D MMMM YYYY h:mm A'
12516        },
12517        calendar : {
12518            sameDay : '[Namuhla nga] LT',
12519            nextDay : '[Kusasa nga] LT',
12520            nextWeek : 'dddd [nga] LT',
12521            lastDay : '[Itolo nga] LT',
12522            lastWeek : 'dddd [leliphelile] [nga] LT',
12523            sameElse : 'L'
12524        },
12525        relativeTime : {
12526            future : 'nga %s',
12527            past : 'wenteka nga %s',
12528            s : 'emizuzwana lomcane',
12529            ss : '%d mzuzwana',
12530            m : 'umzuzu',
12531            mm : '%d emizuzu',
12532            h : 'lihora',
12533            hh : '%d emahora',
12534            d : 'lilanga',
12535            dd : '%d emalanga',
12536            M : 'inyanga',
12537            MM : '%d tinyanga',
12538            y : 'umnyaka',
12539            yy : '%d iminyaka'
12540        },
12541        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
12542        meridiem : function (hours, minutes, isLower) {
12543            if (hours < 11) {
12544                return 'ekuseni';
12545            } else if (hours < 15) {
12546                return 'emini';
12547            } else if (hours < 19) {
12548                return 'entsambama';
12549            } else {
12550                return 'ebusuku';
12551            }
12552        },
12553        meridiemHour : function (hour, meridiem) {
12554            if (hour === 12) {
12555                hour = 0;
12556            }
12557            if (meridiem === 'ekuseni') {
12558                return hour;
12559            } else if (meridiem === 'emini') {
12560                return hour >= 11 ? hour : hour + 12;
12561            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
12562                if (hour === 0) {
12563                    return 0;
12564                }
12565                return hour + 12;
12566            }
12567        },
12568        dayOfMonthOrdinalParse: /\d{1,2}/,
12569        ordinal : '%d',
12570        week : {
12571            dow : 1, // Monday is the first day of the week.
12572            doy : 4  // The week that contains Jan 4th is the first week of the year.
12573        }
12574    });
12575
12576    //! moment.js locale configuration
12577
12578    hooks.defineLocale('sv', {
12579        months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
12580        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
12581        weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
12582        weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
12583        weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),
12584        longDateFormat : {
12585            LT : 'HH:mm',
12586            LTS : 'HH:mm:ss',
12587            L : 'YYYY-MM-DD',
12588            LL : 'D MMMM YYYY',
12589            LLL : 'D MMMM YYYY [kl.] HH:mm',
12590            LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',
12591            lll : 'D MMM YYYY HH:mm',
12592            llll : 'ddd D MMM YYYY HH:mm'
12593        },
12594        calendar : {
12595            sameDay: '[Idag] LT',
12596            nextDay: '[Imorgon] LT',
12597            lastDay: '[Igår] LT',
12598            nextWeek: '[PÃ¥] dddd LT',
12599            lastWeek: '[I] dddd[s] LT',
12600            sameElse: 'L'
12601        },
12602        relativeTime : {
12603            future : 'om %s',
12604            past : 'för %s sedan',
12605            s : 'några sekunder',
12606            ss : '%d sekunder',
12607            m : 'en minut',
12608            mm : '%d minuter',
12609            h : 'en timme',
12610            hh : '%d timmar',
12611            d : 'en dag',
12612            dd : '%d dagar',
12613            M : 'en månad',
12614            MM : '%d månader',
12615            y : 'ett år',
12616            yy : '%d år'
12617        },
12618        dayOfMonthOrdinalParse: /\d{1,2}(e|a)/,
12619        ordinal : function (number) {
12620            var b = number % 10,
12621                output = (~~(number % 100 / 10) === 1) ? 'e' :
12622                (b === 1) ? 'a' :
12623                (b === 2) ? 'a' :
12624                (b === 3) ? 'e' : 'e';
12625            return number + output;
12626        },
12627        week : {
12628            dow : 1, // Monday is the first day of the week.
12629            doy : 4  // The week that contains Jan 4th is the first week of the year.
12630        }
12631    });
12632
12633    //! moment.js locale configuration
12634
12635    hooks.defineLocale('sw', {
12636        months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),
12637        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
12638        weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),
12639        weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
12640        weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
12641        weekdaysParseExact : true,
12642        longDateFormat : {
12643            LT : 'HH:mm',
12644            LTS : 'HH:mm:ss',
12645            L : 'DD.MM.YYYY',
12646            LL : 'D MMMM YYYY',
12647            LLL : 'D MMMM YYYY HH:mm',
12648            LLLL : 'dddd, D MMMM YYYY HH:mm'
12649        },
12650        calendar : {
12651            sameDay : '[leo saa] LT',
12652            nextDay : '[kesho saa] LT',
12653            nextWeek : '[wiki ijayo] dddd [saat] LT',
12654            lastDay : '[jana] LT',
12655            lastWeek : '[wiki iliyopita] dddd [saat] LT',
12656            sameElse : 'L'
12657        },
12658        relativeTime : {
12659            future : '%s baadaye',
12660            past : 'tokea %s',
12661            s : 'hivi punde',
12662            ss : 'sekunde %d',
12663            m : 'dakika moja',
12664            mm : 'dakika %d',
12665            h : 'saa limoja',
12666            hh : 'masaa %d',
12667            d : 'siku moja',
12668            dd : 'masiku %d',
12669            M : 'mwezi mmoja',
12670            MM : 'miezi %d',
12671            y : 'mwaka mmoja',
12672            yy : 'miaka %d'
12673        },
12674        week : {
12675            dow : 1, // Monday is the first day of the week.
12676            doy : 7  // The week that contains Jan 1st is the first week of the year.
12677        }
12678    });
12679
12680    //! moment.js locale configuration
12681
12682    var symbolMap$e = {
12683        '1': '௧',
12684        '2': '௨',
12685        '3': '௩',
12686        '4': '௪',
12687        '5': '௫',
12688        '6': '௬',
12689        '7': '௭',
12690        '8': '௮',
12691        '9': '௯',
12692        '0': '௦'
12693    }, numberMap$d = {
12694        '௧': '1',
12695        '௨': '2',
12696        '௩': '3',
12697        '௪': '4',
12698        '௫': '5',
12699        '௬': '6',
12700        '௭': '7',
12701        '௮': '8',
12702        '௯': '9',
12703        '௦': '0'
12704    };
12705
12706    hooks.defineLocale('ta', {
12707        months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
12708        monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
12709        weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
12710        weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),
12711        weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
12712        longDateFormat : {
12713            LT : 'HH:mm',
12714            LTS : 'HH:mm:ss',
12715            L : 'DD/MM/YYYY',
12716            LL : 'D MMMM YYYY',
12717            LLL : 'D MMMM YYYY, HH:mm',
12718            LLLL : 'dddd, D MMMM YYYY, HH:mm'
12719        },
12720        calendar : {
12721            sameDay : '[இன்று] LT',
12722            nextDay : '[நாளை] LT',
12723            nextWeek : 'dddd, LT',
12724            lastDay : '[நேற்று] LT',
12725            lastWeek : '[கடந்த வாரம்] dddd, LT',
12726            sameElse : 'L'
12727        },
12728        relativeTime : {
12729            future : '%s இல்',
12730            past : '%s முன்',
12731            s : 'ஒரு சில விநாடிகள்',
12732            ss : '%d விநாடிகள்',
12733            m : 'ஒரு நிமிடம்',
12734            mm : '%d நிமிடங்கள்',
12735            h : 'ஒரு மணி நேரம்',
12736            hh : '%d மணி நேரம்',
12737            d : 'ஒரு நாள்',
12738            dd : '%d நாட்கள்',
12739            M : 'ஒரு மாதம்',
12740            MM : '%d மாதங்கள்',
12741            y : 'ஒரு வருடம்',
12742            yy : '%d ஆண்டுகள்'
12743        },
12744        dayOfMonthOrdinalParse: /\d{1,2}வது/,
12745        ordinal : function (number) {
12746            return number + 'வது';
12747        },
12748        preparse: function (string) {
12749            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
12750                return numberMap$d[match];
12751            });
12752        },
12753        postformat: function (string) {
12754            return string.replace(/\d/g, function (match) {
12755                return symbolMap$e[match];
12756            });
12757        },
12758        // refer http://ta.wikipedia.org/s/1er1
vendor: 24,606 bytes, lines 12759-13384
12759        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
12760        meridiem : function (hour, minute, isLower) {
12761            if (hour < 2) {
12762                return ' யாமம்';
12763            } else if (hour < 6) {
12764                return ' வைகறை';  // வைகறை
12765            } else if (hour < 10) {
12766                return ' காலை'; // காலை
12767            } else if (hour < 14) {
12768                return ' நண்பகல்'; // நண்பகல்
12769            } else if (hour < 18) {
12770                return ' எற்பாடு'; // எற்பாடு
12771            } else if (hour < 22) {
12772                return ' மாலை'; // மாலை
12773            } else {
12774                return ' யாமம்';
12775            }
12776        },
12777        meridiemHour : function (hour, meridiem) {
12778            if (hour === 12) {
12779                hour = 0;
12780            }
12781            if (meridiem === 'யாமம்') {
12782                return hour < 2 ? hour : hour + 12;
12783            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
12784                return hour;
12785            } else if (meridiem === 'நண்பகல்') {
12786                return hour >= 10 ? hour : hour + 12;
12787            } else {
12788                return hour + 12;
12789            }
12790        },
12791        week : {
12792            dow : 0, // Sunday is the first day of the week.
12793            doy : 6  // The week that contains Jan 1st is the first week of the year.
12794        }
12795    });
12796
12797    //! moment.js locale configuration
12798
12799    hooks.defineLocale('te', {
12800        months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),
12801        monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),
12802        monthsParseExact : true,
12803        weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),
12804        weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
12805        weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
12806        longDateFormat : {
12807            LT : 'A h:mm',
12808            LTS : 'A h:mm:ss',
12809            L : 'DD/MM/YYYY',
12810            LL : 'D MMMM YYYY',
12811            LLL : 'D MMMM YYYY, A h:mm',
12812            LLLL : 'dddd, D MMMM YYYY, A h:mm'
12813        },
12814        calendar : {
12815            sameDay : '[నేడు] LT',
12816            nextDay : '[రేపు] LT',
12817            nextWeek : 'dddd, LT',
12818            lastDay : '[నిన్న] LT',
12819            lastWeek : '[గత] dddd, LT',
12820            sameElse : 'L'
12821        },
12822        relativeTime : {
12823            future : '%s లో',
12824            past : '%s క్రితం',
12825            s : 'కొన్ని క్షణాలు',
12826            ss : '%d సెకన్లు',
12827            m : 'ఒక నిమిషం',
12828            mm : '%d నిమిషాలు',
12829            h : 'ఒక గంట',
12830            hh : '%d గంటలు',
12831            d : 'ఒక రోజు',
12832            dd : '%d రోజులు',
12833            M : 'ఒక నెల',
12834            MM : '%d నెలలు',
12835            y : 'ఒక సంవత్సరం',
12836            yy : '%d సంవత్సరాలు'
12837        },
12838        dayOfMonthOrdinalParse : /\d{1,2}à°µ/,
12839        ordinal : '%dà°µ',
12840        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
12841        meridiemHour : function (hour, meridiem) {
12842            if (hour === 12) {
12843                hour = 0;
12844            }
12845            if (meridiem === 'రాత్రి') {
12846                return hour < 4 ? hour : hour + 12;
12847            } else if (meridiem === 'ఉదయం') {
12848                return hour;
12849            } else if (meridiem === 'మధ్యాహ్నం') {
12850                return hour >= 10 ? hour : hour + 12;
12851            } else if (meridiem === 'సాయంత్రం') {
12852                return hour + 12;
12853            }
12854        },
12855        meridiem : function (hour, minute, isLower) {
12856            if (hour < 4) {
12857                return 'రాత్రి';
12858            } else if (hour < 10) {
12859                return 'ఉదయం';
12860            } else if (hour < 17) {
12861                return 'మధ్యాహ్నం';
12862            } else if (hour < 20) {
12863                return 'సాయంత్రం';
12864            } else {
12865                return 'రాత్రి';
12866            }
12867        },
12868        week : {
12869            dow : 0, // Sunday is the first day of the week.
12870            doy : 6  // The week that contains Jan 1st is the first week of the year.
12871        }
12872    });
12873
12874    //! moment.js locale configuration
12875
12876    hooks.defineLocale('tet', {
12877        months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),
12878        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
12879        weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
12880        weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
12881        weekdaysMin : 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
12882        longDateFormat : {
12883            LT : 'HH:mm',
12884            LTS : 'HH:mm:ss',
12885            L : 'DD/MM/YYYY',
12886            LL : 'D MMMM YYYY',
12887            LLL : 'D MMMM YYYY HH:mm',
12888            LLLL : 'dddd, D MMMM YYYY HH:mm'
12889        },
12890        calendar : {
12891            sameDay: '[Ohin iha] LT',
12892            nextDay: '[Aban iha] LT',
12893            nextWeek: 'dddd [iha] LT',
12894            lastDay: '[Horiseik iha] LT',
12895            lastWeek: 'dddd [semana kotuk] [iha] LT',
12896            sameElse: 'L'
12897        },
12898        relativeTime : {
12899            future : 'iha %s',
12900            past : '%s liuba',
12901            s : 'minutu balun',
12902            ss : 'minutu %d',
12903            m : 'minutu ida',
12904            mm : 'minutu %d',
12905            h : 'oras ida',
12906            hh : 'oras %d',
12907            d : 'loron ida',
12908            dd : 'loron %d',
12909            M : 'fulan ida',
12910            MM : 'fulan %d',
12911            y : 'tinan ida',
12912            yy : 'tinan %d'
12913        },
12914        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
12915        ordinal : function (number) {
12916            var b = number % 10,
12917                output = (~~(number % 100 / 10) === 1) ? 'th' :
12918                (b === 1) ? 'st' :
12919                (b === 2) ? 'nd' :
12920                (b === 3) ? 'rd' : 'th';
12921            return number + output;
12922        },
12923        week : {
12924            dow : 1, // Monday is the first day of the week.
12925            doy : 4  // The week that contains Jan 4th is the first week of the year.
12926        }
12927    });
12928
12929    //! moment.js locale configuration
12930
12931    var suffixes$3 = {
12932        0: '-ум',
12933        1: '-ум',
12934        2: '-юм',
12935        3: '-юм',
12936        4: '-ум',
12937        5: '-ум',
12938        6: '-ум',
12939        7: '-ум',
12940        8: '-ум',
12941        9: '-ум',
12942        10: '-ум',
12943        12: '-ум',
12944        13: '-ум',
12945        20: '-ум',
12946        30: '-юм',
12947        40: '-ум',
12948        50: '-ум',
12949        60: '-ум',
12950        70: '-ум',
12951        80: '-ум',
12952        90: '-ум',
12953        100: '-ум'
12954    };
12955
12956    hooks.defineLocale('tg', {
12957        months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
12958        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
12959        weekdays : 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),
12960        weekdaysShort : 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
12961        weekdaysMin : 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
12962        longDateFormat : {
12963            LT : 'HH:mm',
12964            LTS : 'HH:mm:ss',
12965            L : 'DD/MM/YYYY',
12966            LL : 'D MMMM YYYY',
12967            LLL : 'D MMMM YYYY HH:mm',
12968            LLLL : 'dddd, D MMMM YYYY HH:mm'
12969        },
12970        calendar : {
12971            sameDay : '[Имрӯз соати] LT',
12972            nextDay : '[Пагоҳ соати] LT',
12973            lastDay : '[Дирӯз соати] LT',
12974            nextWeek : 'dddd[и] [ҳафтаи оянда соати] LT',
12975            lastWeek : 'dddd[и] [ҳафтаи гузашта соати] LT',
12976            sameElse : 'L'
12977        },
12978        relativeTime : {
12979            future : 'баъди %s',
12980            past : '%s пеш',
12981            s : 'якчанд сония',
12982            m : 'як дақиқа',
12983            mm : '%d дақиқа',
12984            h : 'як соат',
12985            hh : '%d соат',
12986            d : 'як рӯз',
12987            dd : '%d рӯз',
12988            M : 'як моҳ',
12989            MM : '%d моҳ',
12990            y : 'як сол',
12991            yy : '%d сол'
12992        },
12993        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
12994        meridiemHour: function (hour, meridiem) {
12995            if (hour === 12) {
12996                hour = 0;
12997            }
12998            if (meridiem === 'шаб') {
12999                return hour < 4 ? hour : hour + 12;
13000            } else if (meridiem === 'субҳ') {
13001                return hour;
13002            } else if (meridiem === 'рӯз') {
13003                return hour >= 11 ? hour : hour + 12;
13004            } else if (meridiem === 'бегоҳ') {
13005                return hour + 12;
13006            }
13007        },
13008        meridiem: function (hour, minute, isLower) {
13009            if (hour < 4) {
13010                return 'шаб';
13011            } else if (hour < 11) {
13012                return 'субҳ';
13013            } else if (hour < 16) {
13014                return 'рӯз';
13015            } else if (hour < 19) {
13016                return 'бегоҳ';
13017            } else {
13018                return 'шаб';
13019            }
13020        },
13021        dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
13022        ordinal: function (number) {
13023            var a = number % 10,
13024                b = number >= 100 ? 100 : null;
13025            return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]);
13026        },
13027        week : {
13028            dow : 1, // Monday is the first day of the week.
13029            doy : 7  // The week that contains Jan 1th is the first week of the year.
13030        }
13031    });
13032
13033    //! moment.js locale configuration
13034
13035    hooks.defineLocale('th', {
13036        months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
13037        monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),
13038        monthsParseExact: true,
13039        weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
13040        weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
13041        weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
13042        weekdaysParseExact : true,
13043        longDateFormat : {
13044            LT : 'H:mm',
13045            LTS : 'H:mm:ss',
13046            L : 'DD/MM/YYYY',
13047            LL : 'D MMMM YYYY',
13048            LLL : 'D MMMM YYYY เวลา H:mm',
13049            LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'
13050        },
13051        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
13052        isPM: function (input) {
13053            return input === 'หลังเที่ยง';
13054        },
13055        meridiem : function (hour, minute, isLower) {
13056            if (hour < 12) {
13057                return 'ก่อนเที่ยง';
13058            } else {
13059                return 'หลังเที่ยง';
13060            }
13061        },
13062        calendar : {
13063            sameDay : '[วันนี้ เวลา] LT',
13064            nextDay : '[พรุ่งนี้ เวลา] LT',
13065            nextWeek : 'dddd[หน้า เวลา] LT',
13066            lastDay : '[เมื่อวานนี้ เวลา] LT',
13067            lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',
13068            sameElse : 'L'
13069        },
13070        relativeTime : {
13071            future : 'อีก %s',
13072            past : '%sที่แล้ว',
13073            s : 'ไม่กี่วินาที',
13074            ss : '%d วินาที',
13075            m : '1 นาที',
13076            mm : '%d นาที',
13077            h : '1 ชั่วโมง',
13078            hh : '%d ชั่วโมง',
13079            d : '1 วัน',
13080            dd : '%d วัน',
13081            M : '1 เดือน',
13082            MM : '%d เดือน',
13083            y : '1 ปี',
13084            yy : '%d ปี'
13085        }
13086    });
13087
13088    //! moment.js locale configuration
13089
13090    hooks.defineLocale('tl-ph', {
13091        months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
13092        monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
13093        weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
13094        weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
13095        weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
13096        longDateFormat : {
13097            LT : 'HH:mm',
13098            LTS : 'HH:mm:ss',
13099            L : 'MM/D/YYYY',
13100            LL : 'MMMM D, YYYY',
13101            LLL : 'MMMM D, YYYY HH:mm',
13102            LLLL : 'dddd, MMMM DD, YYYY HH:mm'
13103        },
13104        calendar : {
13105            sameDay: 'LT [ngayong araw]',
13106            nextDay: '[Bukas ng] LT',
13107            nextWeek: 'LT [sa susunod na] dddd',
13108            lastDay: 'LT [kahapon]',
13109            lastWeek: 'LT [noong nakaraang] dddd',
13110            sameElse: 'L'
13111        },
13112        relativeTime : {
13113            future : 'sa loob ng %s',
13114            past : '%s ang nakalipas',
13115            s : 'ilang segundo',
13116            ss : '%d segundo',
13117            m : 'isang minuto',
13118            mm : '%d minuto',
13119            h : 'isang oras',
13120            hh : '%d oras',
13121            d : 'isang araw',
13122            dd : '%d araw',
13123            M : 'isang buwan',
13124            MM : '%d buwan',
13125            y : 'isang taon',
13126            yy : '%d taon'
13127        },
13128        dayOfMonthOrdinalParse: /\d{1,2}/,
13129        ordinal : function (number) {
13130            return number;
13131        },
13132        week : {
13133            dow : 1, // Monday is the first day of the week.
13134            doy : 4  // The week that contains Jan 4th is the first week of the year.
13135        }
13136    });
13137
13138    //! moment.js locale configuration
13139
13140    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
13141
13142    function translateFuture(output) {
13143        var time = output;
13144        time = (output.indexOf('jaj') !== -1) ?
13145        time.slice(0, -3) + 'leS' :
13146        (output.indexOf('jar') !== -1) ?
13147        time.slice(0, -3) + 'waQ' :
13148        (output.indexOf('DIS') !== -1) ?
13149        time.slice(0, -3) + 'nem' :
13150        time + ' pIq';
13151        return time;
13152    }
13153
13154    function translatePast(output) {
13155        var time = output;
13156        time = (output.indexOf('jaj') !== -1) ?
13157        time.slice(0, -3) + 'Hu’' :
13158        (output.indexOf('jar') !== -1) ?
13159        time.slice(0, -3) + 'wen' :
13160        (output.indexOf('DIS') !== -1) ?
13161        time.slice(0, -3) + 'ben' :
13162        time + ' ret';
13163        return time;
13164    }
13165
13166    function translate$a(number, withoutSuffix, string, isFuture) {
13167        var numberNoun = numberAsNoun(number);
13168        switch (string) {
13169            case 'ss':
13170                return numberNoun + ' lup';
13171            case 'mm':
13172                return numberNoun + ' tup';
13173            case 'hh':
13174                return numberNoun + ' rep';
13175            case 'dd':
13176                return numberNoun + ' jaj';
13177            case 'MM':
13178                return numberNoun + ' jar';
13179            case 'yy':
13180                return numberNoun + ' DIS';
13181        }
13182    }
13183
13184    function numberAsNoun(number) {
13185        var hundred = Math.floor((number % 1000) / 100),
13186        ten = Math.floor((number % 100) / 10),
13187        one = number % 10,
13188        word = '';
13189        if (hundred > 0) {
13190            word += numbersNouns[hundred] + 'vatlh';
13191        }
13192        if (ten > 0) {
13193            word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';
13194        }
13195        if (one > 0) {
13196            word += ((word !== '') ? ' ' : '') + numbersNouns[one];
13197        }
13198        return (word === '') ? 'pagh' : word;
13199    }
13200
13201    hooks.defineLocale('tlh', {
13202        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('_'),
13203        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('_'),
13204        monthsParseExact : true,
13205        weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
13206        weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
13207        weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
13208        longDateFormat : {
13209            LT : 'HH:mm',
13210            LTS : 'HH:mm:ss',
13211            L : 'DD.MM.YYYY',
13212            LL : 'D MMMM YYYY',
13213            LLL : 'D MMMM YYYY HH:mm',
13214            LLLL : 'dddd, D MMMM YYYY HH:mm'
13215        },
13216        calendar : {
13217            sameDay: '[DaHjaj] LT',
13218            nextDay: '[wa’leS] LT',
13219            nextWeek: 'LLL',
13220            lastDay: '[wa’Hu’] LT',
13221            lastWeek: 'LLL',
13222            sameElse: 'L'
13223        },
13224        relativeTime : {
13225            future : translateFuture,
13226            past : translatePast,
13227            s : 'puS lup',
13228            ss : translate$a,
13229            m : 'wa’ tup',
13230            mm : translate$a,
13231            h : 'wa’ rep',
13232            hh : translate$a,
13233            d : 'wa’ jaj',
13234            dd : translate$a,
13235            M : 'wa’ jar',
13236            MM : translate$a,
13237            y : 'wa’ DIS',
13238            yy : translate$a
13239        },
13240        dayOfMonthOrdinalParse: /\d{1,2}\./,
13241        ordinal : '%d.',
13242        week : {
13243            dow : 1, // Monday is the first day of the week.
13244            doy : 4  // The week that contains Jan 4th is the first week of the year.
13245        }
13246    });
13247
13248    var suffixes$4 = {
13249        1: '\'inci',
13250        5: '\'inci',
13251        8: '\'inci',
13252        70: '\'inci',
13253        80: '\'inci',
13254        2: '\'nci',
13255        7: '\'nci',
13256        20: '\'nci',
13257        50: '\'nci',
13258        3: '\'üncü',
13259        4: '\'üncü',
13260        100: '\'üncü',
13261        6: '\'ncı',
13262        9: '\'uncu',
13263        10: '\'uncu',
13264        30: '\'uncu',
13265        60: '\'ıncı',
13266        90: '\'ıncı'
13267    };
13268
13269    hooks.defineLocale('tr', {
13270        months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
13271        monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
13272        weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
13273        weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
13274        weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
13275        longDateFormat : {
13276            LT : 'HH:mm',
13277            LTS : 'HH:mm:ss',
13278            L : 'DD.MM.YYYY',
13279            LL : 'D MMMM YYYY',
13280            LLL : 'D MMMM YYYY HH:mm',
13281            LLLL : 'dddd, D MMMM YYYY HH:mm'
13282        },
13283        calendar : {
13284            sameDay : '[bugün saat] LT',
13285            nextDay : '[yarın saat] LT',
13286            nextWeek : '[gelecek] dddd [saat] LT',
13287            lastDay : '[dün] LT',
13288            lastWeek : '[geçen] dddd [saat] LT',
13289            sameElse : 'L'
13290        },
13291        relativeTime : {
13292            future : '%s sonra',
13293            past : '%s önce',
13294            s : 'birkaç saniye',
13295            ss : '%d saniye',
13296            m : 'bir dakika',
13297            mm : '%d dakika',
13298            h : 'bir saat',
13299            hh : '%d saat',
13300            d : 'bir gün',
13301            dd : '%d gün',
13302            M : 'bir ay',
13303            MM : '%d ay',
13304            y : 'bir yıl',
13305            yy : '%d yıl'
13306        },
13307        ordinal: function (number, period) {
13308            switch (period) {
13309                case 'd':
13310                case 'D':
13311                case 'Do':
13312                case 'DD':
13313                    return number;
13314                default:
13315                    if (number === 0) {  // special case for zero
13316                        return number + '\'ıncı';
13317                    }
13318                    var a = number % 10,
13319                        b = number % 100 - a,
13320                        c = number >= 100 ? 100 : null;
13321                    return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]);
13322            }
13323        },
13324        week : {
13325            dow : 1, // Monday is the first day of the week.
13326            doy : 7  // The week that contains Jan 1st is the first week of the year.
13327        }
13328    });
13329
13330    //! moment.js locale configuration
13331
13332    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
13333    // This is currently too difficult (maybe even impossible) to add.
13334    hooks.defineLocale('tzl', {
13335        months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),
13336        monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
13337        weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
13338        weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
13339        weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
13340        longDateFormat : {
13341            LT : 'HH.mm',
13342            LTS : 'HH.mm.ss',
13343            L : 'DD.MM.YYYY',
13344            LL : 'D. MMMM [dallas] YYYY',
13345            LLL : 'D. MMMM [dallas] YYYY HH.mm',
13346            LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'
13347        },
13348        meridiemParse: /d\'o|d\'a/i,
13349        isPM : function (input) {
13350            return 'd\'o' === input.toLowerCase();
13351        },
13352        meridiem : function (hours, minutes, isLower) {
13353            if (hours > 11) {
13354                return isLower ? 'd\'o' : 'D\'O';
13355            } else {
13356                return isLower ? 'd\'a' : 'D\'A';
13357            }
13358        },
13359        calendar : {
13360            sameDay : '[oxhi à] LT',
13361            nextDay : '[demà à] LT',
13362            nextWeek : 'dddd [à] LT',
13363            lastDay : '[ieiri à] LT',
13364            lastWeek : '[sür el] dddd [lasteu à] LT',
13365            sameElse : 'L'
13366        },
13367        relativeTime : {
13368            future : 'osprei %s',
13369            past : 'ja%s',
13370            s : processRelativeTime$7,
13371            ss : processRelativeTime$7,
13372            m : processRelativeTime$7,
13373            mm : processRelativeTime$7,
13374            h : processRelativeTime$7,
13375            hh : processRelativeTime$7,
13376            d : processRelativeTime$7,
13377            dd : processRelativeTime$7,
13378            M : processRelativeTime$7,
13379            MM : processRelativeTime$7,
13380            y : processRelativeTime$7,
13381            yy : processRelativeTime$7
13382        },
13383        dayOfMonthOrdinalParse: /\d{1,2}\./,
13384        ordinal : '%d.',
13385        week : {
13386            dow : 1, // Monday is the first day of the week.
13387            doy : 4  // The week that contains Jan 4th is the first week of the year.
13388        }
13389    });
13390
13391    function processRelativeTime$7(number, withoutSuffix, key, isFuture) {
13392        var format = {
13393            's': ['viensas secunds', '\'iensas secunds'],
13394            'ss': [number + ' secunds', '' + number + ' secunds'],
13395            'm': ['\'n míut', '\'iens míut'],
13396            'mm': [number + ' míuts', '' + number + ' míuts'],
13397            'h': ['\'n þora', '\'iensa þora'],
13398            'hh': [number + ' þoras', '' + number + ' þoras'],
13399            'd': ['\'n ziua', '\'iensa ziua'],
13400            'dd': [number + ' ziuas', '' + number + ' ziuas'],
13401            'M': ['\'n mes', '\'iens mes'],
13402            'MM': [number + ' mesen', '' + number + ' mesen'],
13403            'y': ['\'n ar', '\'iens ar'],
13404            'yy': [number + ' ars', '' + number + ' ars']
13405        };
13406        return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);
13407    }
13408
13409    //! moment.js locale configuration
13410
13411    hooks.defineLocale('tzm-latn', {
13412        months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
13413        monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
13414        weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
13415        weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
13416        weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
13417        longDateFormat : {
13418            LT : 'HH:mm',
13419            LTS : 'HH:mm:ss',
13420            L : 'DD/MM/YYYY',
13421            LL : 'D MMMM YYYY',
13422            LLL : 'D MMMM YYYY HH:mm',
13423            LLLL : 'dddd D MMMM YYYY HH:mm'
13424        },
13425        calendar : {
13426            sameDay: '[asdkh g] LT',
13427            nextDay: '[aska g] LT',
13428            nextWeek: 'dddd [g] LT',
13429            lastDay: '[assant g] LT',
13430            lastWeek: 'dddd [g] LT',
13431            sameElse: 'L'
13432        },
13433        relativeTime : {
13434            future : 'dadkh s yan %s',
13435            past : 'yan %s',
13436            s : 'imik',
13437            ss : '%d imik',
13438            m : 'minuḍ',
13439            mm : '%d minuḍ',
13440            h : 'saɛa',
13441            hh : '%d tassaɛin',
13442            d : 'ass',
13443            dd : '%d ossan',
13444            M : 'ayowr',
13445            MM : '%d iyyirn',
13446            y : 'asgas',
13447            yy : '%d isgasn'
13448        },
13449        week : {
13450            dow : 6, // Saturday is the first day of the week.
13451            doy : 12  // The week that contains Jan 1st is the first week of the year.
13452        }
13453    });
13454
13455    //! moment.js locale configuration
13456
13457    hooks.defineLocale('tzm', {
13458        months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
13459        monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
13460        weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
13461        weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
13462        weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
13463        longDateFormat : {
13464            LT : 'HH:mm',
13465            LTS: 'HH:mm:ss',
13466            L : 'DD/MM/YYYY',
13467            LL : 'D MMMM YYYY',
13468            LLL : 'D MMMM YYYY HH:mm',
13469            LLLL : 'dddd D MMMM YYYY HH:mm'
13470        },
13471        calendar : {
13472            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
13473            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
13474            nextWeek: 'dddd [â´´] LT',
13475            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
13476            lastWeek: 'dddd [â´´] LT',
13477            sameElse: 'L'
13478        },
13479        relativeTime : {
13480            future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
13481            past : 'ⵢⴰⵏ %s',
13482            s : 'ⵉⵎⵉⴽ',
13483            ss : '%d ⵉⵎⵉⴽ',
13484            m : 'ⵎⵉⵏⵓⴺ',
13485            mm : '%d ⵎⵉⵏⵓⴺ',
13486            h : 'ⵙⴰⵄⴰ',
13487            hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
13488            d : 'ⴰⵙⵙ',
13489            dd : '%d oⵙⵙⴰⵏ',
13490            M : 'ⴰⵢoⵓⵔ',
13491            MM : '%d ⵉⵢⵢⵉⵔⵏ',
13492            y : 'ⴰⵙⴳⴰⵙ',
13493            yy : '%d ⵉⵙⴳⴰⵙⵏ'
13494        },
13495        week : {
13496            dow : 6, // Saturday is the first day of the week.
13497            doy : 12  // The week that contains Jan 1st is the first week of the year.
13498        }
13499    });
13500
13501    //! moment.js language configuration
13502
13503    hooks.defineLocale('ug-cn', {
13504        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
13505            '_'
13506        ),
13507        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
13508            '_'
13509        ),
13510        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
13511            '_'
13512        ),
13513        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
13514        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
13515        longDateFormat: {
13516            LT: 'HH:mm',
13517            LTS: 'HH:mm:ss',
13518            L: 'YYYY-MM-DD',
13519            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
vendor: 9,357 bytes, lines 13520-13745
13520            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
13521            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'
13522        },
13523        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
13524        meridiemHour: function (hour, meridiem) {
13525            if (hour === 12) {
13526                hour = 0;
13527            }
13528            if (
13529                meridiem === 'يېرىم كېچە' ||
13530                meridiem === 'سەھەر' ||
13531                meridiem === 'چۈشتىن بۇرۇن'
13532            ) {
13533                return hour;
13534            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
13535                return hour + 12;
13536            } else {
13537                return hour >= 11 ? hour : hour + 12;
13538            }
13539        },
13540        meridiem: function (hour, minute, isLower) {
13541            var hm = hour * 100 + minute;
13542            if (hm < 600) {
13543                return 'يېرىم كېچە';
13544            } else if (hm < 900) {
13545                return 'سەھەر';
13546            } else if (hm < 1130) {
13547                return 'چۈشتىن بۇرۇن';
13548            } else if (hm < 1230) {
13549                return 'چۈش';
13550            } else if (hm < 1800) {
13551                return 'چۈشتىن كېيىن';
13552            } else {
13553                return 'كەچ';
13554            }
13555        },
13556        calendar: {
13557            sameDay: '[بۈگۈن سائەت] LT',
13558            nextDay: '[ئەتە سائەت] LT',
13559            nextWeek: '[كېلەركى] dddd [سائەت] LT',
13560            lastDay: '[تۆنۈگۈن] LT',
13561            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
13562            sameElse: 'L'
13563        },
13564        relativeTime: {
13565            future: '%s كېيىن',
13566            past: '%s بۇرۇن',
13567            s: 'نەچچە سېكونت',
13568            ss: '%d سېكونت',
13569            m: 'بىر مىنۇت',
13570            mm: '%d مىنۇت',
13571            h: 'بىر سائەت',
13572            hh: '%d سائەت',
13573            d: 'بىر كۈن',
13574            dd: '%d كۈن',
13575            M: 'بىر ئاي',
13576            MM: '%d ئاي',
13577            y: 'بىر يىل',
13578            yy: '%d يىل'
13579        },
13580
13581        dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
13582        ordinal: function (number, period) {
13583            switch (period) {
13584                case 'd':
13585                case 'D':
13586                case 'DDD':
13587                    return number + '-كۈنى';
13588                case 'w':
13589                case 'W':
13590                    return number + '-ھەپتە';
13591                default:
13592                    return number;
13593            }
13594        },
13595        preparse: function (string) {
13596            return string.replace(/،/g, ',');
13597        },
13598        postformat: function (string) {
13599            return string.replace(/,/g, '،');
13600        },
13601        week: {
13602            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
13603            dow: 1, // Monday is the first day of the week.
13604            doy: 7 // The week that contains Jan 1st is the first week of the year.
13605        }
13606    });
13607
13608    //! moment.js locale configuration
13609
13610    function plural$6(word, num) {
13611        var forms = word.split('_');
13612        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]);
13613    }
13614    function relativeTimeWithPlural$4(number, withoutSuffix, key) {
13615        var format = {
13616            'ss': withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
13617            'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
13618            'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
13619            'dd': 'день_дні_днів',
13620            'MM': 'місяць_місяці_місяців',
13621            'yy': 'рік_роки_років'
13622        };
13623        if (key === 'm') {
13624            return withoutSuffix ? 'хвилина' : 'хвилину';
13625        }
13626        else if (key === 'h') {
13627            return withoutSuffix ? 'година' : 'годину';
13628        }
13629        else {
13630            return number + ' ' + plural$6(format[key], +number);
13631        }
13632    }
13633    function weekdaysCaseReplace(m, format) {
13634        var weekdays = {
13635            'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
13636            'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
13637            'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
13638        };
13639
13640        if (!m) {
13641            return weekdays['nominative'];
13642        }
13643
13644        var nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
13645            'accusative' :
13646            ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ?
13647                'genitive' :
13648                'nominative');
13649        return weekdays[nounCase][m.day()];
13650    }
13651    function processHoursFunction(str) {
13652        return function () {
13653            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
13654        };
13655    }
13656
13657    hooks.defineLocale('uk', {
13658        months : {
13659            'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),
13660            'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')
13661        },
13662        monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
13663        weekdays : weekdaysCaseReplace,
13664        weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
13665        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
13666        longDateFormat : {
13667            LT : 'HH:mm',
13668            LTS : 'HH:mm:ss',
13669            L : 'DD.MM.YYYY',
13670            LL : 'D MMMM YYYY р.',
13671            LLL : 'D MMMM YYYY р., HH:mm',
13672            LLLL : 'dddd, D MMMM YYYY р., HH:mm'
13673        },
13674        calendar : {
13675            sameDay: processHoursFunction('[Сьогодні '),
13676            nextDay: processHoursFunction('[Завтра '),
13677            lastDay: processHoursFunction('[Вчора '),
13678            nextWeek: processHoursFunction('[У] dddd ['),
13679            lastWeek: function () {
13680                switch (this.day()) {
13681                    case 0:
13682                    case 3:
13683                    case 5:
13684                    case 6:
13685                        return processHoursFunction('[Минулої] dddd [').call(this);
13686                    case 1:
13687                    case 2:
13688                    case 4:
13689                        return processHoursFunction('[Минулого] dddd [').call(this);
13690                }
13691            },
13692            sameElse: 'L'
13693        },
13694        relativeTime : {
13695            future : 'за %s',
13696            past : '%s тому',
13697            s : 'декілька секунд',
13698            ss : relativeTimeWithPlural$4,
13699            m : relativeTimeWithPlural$4,
13700            mm : relativeTimeWithPlural$4,
13701            h : 'годину',
13702            hh : relativeTimeWithPlural$4,
13703            d : 'день',
13704            dd : relativeTimeWithPlural$4,
13705            M : 'місяць',
13706            MM : relativeTimeWithPlural$4,
13707            y : 'рік',
13708            yy : relativeTimeWithPlural$4
13709        },
13710        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
13711        meridiemParse: /ночі|ранку|дня|вечора/,
13712        isPM: function (input) {
13713            return /^(дня|вечора)$/.test(input);
13714        },
13715        meridiem : function (hour, minute, isLower) {
13716            if (hour < 4) {
13717                return 'ночі';
13718            } else if (hour < 12) {
13719                return 'ранку';
13720            } else if (hour < 17) {
13721                return 'дня';
13722            } else {
13723                return 'вечора';
13724            }
13725        },
13726        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
13727        ordinal: function (number, period) {
13728            switch (period) {
13729                case 'M':
13730                case 'd':
13731                case 'DDD':
13732                case 'w':
13733                case 'W':
13734                    return number + '-й';
13735                case 'D':
13736                    return number + '-го';
13737                default:
13738                    return number;
13739            }
13740        },
13741        week : {
13742            dow : 1, // Monday is the first day of the week.
13743            doy : 7  // The week that contains Jan 1st is the first week of the year.
13744        }
13745    });
13746
13747    //! moment.js locale configuration
13748
13749    var months$8 = [
13750        'جنوری',
13751        'فروری',
13752        'مارچ',
13753        'اپریل',
13754        'مئی',
13755        'جون',
13756        'جولائی',
13757        'اگست',
13758        'ستمبر',
13759        'اکتوبر',
13760        'نومبر',
13761        'دسمبر'
13762    ];
13763    var days$2 = [
13764        'اتوار',
13765        'پیر',
13766        'منگل',
13767        'بدھ',
13768        'جمعرات',
13769        'جمعہ',
13770        'ہفتہ'
13771    ];
13772
13773    hooks.defineLocale('ur', {
13774        months : months$8,
13775        monthsShort : months$8,
13776        weekdays : days$2,
13777        weekdaysShort : days$2,
13778        weekdaysMin : days$2,
13779        longDateFormat : {
13780            LT : 'HH:mm',
13781            LTS : 'HH:mm:ss',
13782            L : 'DD/MM/YYYY',
13783            LL : 'D MMMM YYYY',
13784            LLL : 'D MMMM YYYY HH:mm',
13785            LLLL : 'dddd، D MMMM YYYY HH:mm'
13786        },
13787        meridiemParse: /صبح|شام/,
13788        isPM : function (input) {
13789            return 'شام' === input;
13790        },
13791        meridiem : function (hour, minute, isLower) {
13792            if (hour < 12) {
13793                return 'صبح';
13794            }
13795            return 'شام';
13796        },
13797        calendar : {
13798            sameDay : '[آج بوقت] LT',
13799            nextDay : '[کل بوقت] LT',
13800            nextWeek : 'dddd [بوقت] LT',
13801            lastDay : '[گذشتہ روز بوقت] LT',
13802            lastWeek : '[گذشتہ] dddd [بوقت] LT',
13803            sameElse : 'L'
13804        },
13805        relativeTime : {
13806            future : '%s بعد',
13807            past : '%s قبل',
13808            s : 'چند سیکنڈ',
13809            ss : '%d سیکنڈ',
13810            m : 'ایک منٹ',
13811            mm : '%d منٹ',
13812            h : 'ایک گھنٹہ',
13813            hh : '%d گھنٹے',
13814            d : 'ایک دن',
13815            dd : '%d دن',
13816            M : 'ایک ماہ',
13817            MM : '%d ماہ',
13818            y : 'ایک سال',
13819            yy : '%d سال'
13820        },
13821        preparse: function (string) {
13822            return string.replace(/،/g, ',');
13823        },
13824        postformat: function (string) {
13825            return string.replace(/,/g, '،');
13826        },
13827        week : {
13828            dow : 1, // Monday is the first day of the week.
13829            doy : 4  // The week that contains Jan 4th is the first week of the year.
13830        }
13831    });
13832
13833    //! moment.js locale configuration
13834
13835    hooks.defineLocale('uz-latn', {
13836        months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),
13837        monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
13838        weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),
13839        weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
13840        weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
13841        longDateFormat : {
13842            LT : 'HH:mm',
13843            LTS : 'HH:mm:ss',
13844            L : 'DD/MM/YYYY',
13845            LL : 'D MMMM YYYY',
13846            LLL : 'D MMMM YYYY HH:mm',
13847            LLLL : 'D MMMM YYYY, dddd HH:mm'
13848        },
13849        calendar : {
13850            sameDay : '[Bugun soat] LT [da]',
13851            nextDay : '[Ertaga] LT [da]',
13852            nextWeek : 'dddd [kuni soat] LT [da]',
13853            lastDay : '[Kecha soat] LT [da]',
13854            lastWeek : '[O\'tgan] dddd [kuni soat] LT [da]',
13855            sameElse : 'L'
13856        },
13857        relativeTime : {
13858            future : 'Yaqin %s ichida',
13859            past : 'Bir necha %s oldin',
13860            s : 'soniya',
13861            ss : '%d soniya',
13862            m : 'bir daqiqa',
13863            mm : '%d daqiqa',
13864            h : 'bir soat',
13865            hh : '%d soat',
13866            d : 'bir kun',
13867            dd : '%d kun',
13868            M : 'bir oy',
13869            MM : '%d oy',
13870            y : 'bir yil',
13871            yy : '%d yil'
13872        },
13873        week : {
13874            dow : 1, // Monday is the first day of the week.
13875            doy : 7  // The week that contains Jan 1st is the first week of the year.
13876        }
13877    });
vendor: 4,468 bytes, lines 13878-13990
13878
13879    //! moment.js locale configuration
13880
13881    hooks.defineLocale('uz', {
13882        months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
13883        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
13884        weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
13885        weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
13886        weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
13887        longDateFormat : {
13888            LT : 'HH:mm',
13889            LTS : 'HH:mm:ss',
13890            L : 'DD/MM/YYYY',
13891            LL : 'D MMMM YYYY',
13892            LLL : 'D MMMM YYYY HH:mm',
13893            LLLL : 'D MMMM YYYY, dddd HH:mm'
13894        },
13895        calendar : {
13896            sameDay : '[Бугун соат] LT [да]',
13897            nextDay : '[Эртага] LT [да]',
13898            nextWeek : 'dddd [куни соат] LT [да]',
13899            lastDay : '[Кеча соат] LT [да]',
13900            lastWeek : '[Утган] dddd [куни соат] LT [да]',
13901            sameElse : 'L'
13902        },
13903        relativeTime : {
13904            future : 'Якин %s ичида',
13905            past : 'Бир неча %s олдин',
13906            s : 'фурсат',
13907            ss : '%d фурсат',
13908            m : 'бир дакика',
13909            mm : '%d дакика',
13910            h : 'бир соат',
13911            hh : '%d соат',
13912            d : 'бир кун',
13913            dd : '%d кун',
13914            M : 'бир ой',
13915            MM : '%d ой',
13916            y : 'бир йил',
13917            yy : '%d йил'
13918        },
13919        week : {
13920            dow : 1, // Monday is the first day of the week.
13921            doy : 7  // The week that contains Jan 4th is the first week of the year.
13922        }
13923    });
13924
13925    //! moment.js locale configuration
13926
13927    hooks.defineLocale('vi', {
13928        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('_'),
13929        monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),
13930        monthsParseExact : true,
13931        weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),
13932        weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
13933        weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
13934        weekdaysParseExact : true,
13935        meridiemParse: /sa|ch/i,
13936        isPM : function (input) {
13937            return /^ch$/i.test(input);
13938        },
13939        meridiem : function (hours, minutes, isLower) {
13940            if (hours < 12) {
13941                return isLower ? 'sa' : 'SA';
13942            } else {
13943                return isLower ? 'ch' : 'CH';
13944            }
13945        },
13946        longDateFormat : {
13947            LT : 'HH:mm',
13948            LTS : 'HH:mm:ss',
13949            L : 'DD/MM/YYYY',
13950            LL : 'D MMMM [năm] YYYY',
13951            LLL : 'D MMMM [năm] YYYY HH:mm',
13952            LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',
13953            l : 'DD/M/YYYY',
13954            ll : 'D MMM YYYY',
13955            lll : 'D MMM YYYY HH:mm',
13956            llll : 'ddd, D MMM YYYY HH:mm'
13957        },
13958        calendar : {
13959            sameDay: '[Hôm nay lúc] LT',
13960            nextDay: '[Ngày mai lúc] LT',
13961            nextWeek: 'dddd [tuần tới lúc] LT',
13962            lastDay: '[Hôm qua lúc] LT',
13963            lastWeek: 'dddd [tuần rồi lúc] LT',
13964            sameElse: 'L'
13965        },
13966        relativeTime : {
13967            future : '%s tới',
13968            past : '%s trước',
13969            s : 'vài giây',
13970            ss : '%d giây' ,
13971            m : 'một phút',
13972            mm : '%d phút',
13973            h : 'một giờ',
13974            hh : '%d giờ',
13975            d : 'một ngày',
13976            dd : '%d ngày',
13977            M : 'một tháng',
13978            MM : '%d tháng',
13979            y : 'một năm',
13980            yy : '%d năm'
13981        },
13982        dayOfMonthOrdinalParse: /\d{1,2}/,
13983        ordinal : function (number) {
13984            return number;
13985        },
13986        week : {
13987            dow : 1, // Monday is the first day of the week.
13988            doy : 4  // The week that contains Jan 4th is the first week of the year.
13989        }
13990    });
13991
13992    //! moment.js locale configuration
13993
13994    hooks.defineLocale('x-pseudo', {
13995        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('_'),
13996        monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),
13997        monthsParseExact : true,
13998        weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),
13999        weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
14000        weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
14001        weekdaysParseExact : true,
14002        longDateFormat : {
14003            LT : 'HH:mm',
14004            L : 'DD/MM/YYYY',
14005            LL : 'D MMMM YYYY',
14006            LLL : 'D MMMM YYYY HH:mm',
14007            LLLL : 'dddd, D MMMM YYYY HH:mm'
14008        },
14009        calendar : {
14010            sameDay : '[T~ódá~ý át] LT',
14011            nextDay : '[T~ómó~rró~w át] LT',
14012            nextWeek : 'dddd [át] LT',
14013            lastDay : '[Ý~ést~érdá~ý át] LT',
14014            lastWeek : '[L~ást] dddd [át] LT',
14015            sameElse : 'L'
14016        },
14017        relativeTime : {
14018            future : 'í~ñ %s',
14019            past : '%s á~gó',
14020            s : 'á ~féw ~sécó~ñds',
14021            ss : '%d s~écóñ~ds',
vendor: 13,068 bytes, lines 14022-14374
14022            m : 'á ~míñ~úté',
14023            mm : '%d m~íñú~tés',
14024            h : 'á~ñ hó~úr',
14025            hh : '%d h~óúrs',
14026            d : 'á ~dáý',
14027            dd : '%d d~áýs',
14028            M : 'á ~móñ~th',
14029            MM : '%d m~óñt~hs',
14030            y : 'á ~ýéár',
14031            yy : '%d ý~éárs'
14032        },
14033        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
14034        ordinal : function (number) {
14035            var b = number % 10,
14036                output = (~~(number % 100 / 10) === 1) ? 'th' :
14037                (b === 1) ? 'st' :
14038                (b === 2) ? 'nd' :
14039                (b === 3) ? 'rd' : 'th';
14040            return number + output;
14041        },
14042        week : {
14043            dow : 1, // Monday is the first day of the week.
14044            doy : 4  // The week that contains Jan 4th is the first week of the year.
14045        }
14046    });
14047
14048    //! moment.js locale configuration
14049
14050    hooks.defineLocale('yo', {
14051        months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),
14052        monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
14053        weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
14054        weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
14055        weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
14056        longDateFormat : {
14057            LT : 'h:mm A',
14058            LTS : 'h:mm:ss A',
14059            L : 'DD/MM/YYYY',
14060            LL : 'D MMMM YYYY',
14061            LLL : 'D MMMM YYYY h:mm A',
14062            LLLL : 'dddd, D MMMM YYYY h:mm A'
14063        },
14064        calendar : {
14065            sameDay : '[Ònì ni] LT',
14066            nextDay : '[Ọ̀la ni] LT',
14067            nextWeek : 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT',
14068            lastDay : '[Àna ni] LT',
14069            lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
14070            sameElse : 'L'
14071        },
14072        relativeTime : {
14073            future : 'ní %s',
14074            past : '%s kọjá',
14075            s : 'ìsẹjú aayá die',
14076            ss :'aayá %d',
14077            m : 'ìsẹjú kan',
14078            mm : 'ìsẹjú %d',
14079            h : 'wákati kan',
14080            hh : 'wákati %d',
14081            d : 'ọjọ́ kan',
14082            dd : 'ọjọ́ %d',
14083            M : 'osù kan',
14084            MM : 'osù %d',
14085            y : 'ọdún kan',
14086            yy : 'ọdún %d'
14087        },
14088        dayOfMonthOrdinalParse : /ọjọ́\s\d{1,2}/,
14089        ordinal : 'ọjọ́ %d',
14090        week : {
14091            dow : 1, // Monday is the first day of the week.
14092            doy : 4 // The week that contains Jan 4th is the first week of the year.
14093        }
14094    });
14095
14096    //! moment.js locale configuration
14097
14098    hooks.defineLocale('zh-cn', {
14099        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
14100        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
14101        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
14102        weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
14103        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
14104        longDateFormat : {
14105            LT : 'HH:mm',
14106            LTS : 'HH:mm:ss',
14107            L : 'YYYY/MM/DD',
14108            LL : 'YYYY年M月D日',
14109            LLL : 'YYYY年M月D日Ah点mm分',
14110            LLLL : 'YYYY年M月D日ddddAh点mm分',
14111            l : 'YYYY/M/D',
14112            ll : 'YYYY年M月D日',
14113            lll : 'YYYY年M月D日 HH:mm',
14114            llll : 'YYYY年M月D日dddd HH:mm'
14115        },
14116        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
14117        meridiemHour: function (hour, meridiem) {
14118            if (hour === 12) {
14119                hour = 0;
14120            }
14121            if (meridiem === '凌晨' || meridiem === '早上' ||
14122                    meridiem === '上午') {
14123                return hour;
14124            } else if (meridiem === '下午' || meridiem === '晚上') {
14125                return hour + 12;
14126            } else {
14127                // '中午'
14128                return hour >= 11 ? hour : hour + 12;
14129            }
14130        },
14131        meridiem : function (hour, minute, isLower) {
14132            var hm = hour * 100 + minute;
14133            if (hm < 600) {
14134                return '凌晨';
14135            } else if (hm < 900) {
14136                return '早上';
14137            } else if (hm < 1130) {
14138                return '上午';
14139            } else if (hm < 1230) {
14140                return '中午';
14141            } else if (hm < 1800) {
14142                return '下午';
14143            } else {
14144                return '晚上';
14145            }
14146        },
14147        calendar : {
14148            sameDay : '[今天]LT',
14149            nextDay : '[明天]LT',
14150            nextWeek : '[下]ddddLT',
14151            lastDay : '[昨天]LT',
14152            lastWeek : '[上]ddddLT',
14153            sameElse : 'L'
14154        },
14155        dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
14156        ordinal : function (number, period) {
14157            switch (period) {
14158                case 'd':
14159                case 'D':
14160                case 'DDD':
14161                    return number + '日';
14162                case 'M':
14163                    return number + '月';
14164                case 'w':
14165                case 'W':
14166                    return number + '周';
14167                default:
14168                    return number;
14169            }
14170        },
14171        relativeTime : {
14172            future : '%s内',
14173            past : '%s前',
14174            s : '几秒',
14175            ss : '%d 秒',
14176            m : '1 分钟',
14177            mm : '%d 分钟',
14178            h : '1 小时',
14179            hh : '%d 小时',
14180            d : '1 天',
14181            dd : '%d 天',
14182            M : '1 个月',
14183            MM : '%d 个月',
14184            y : '1 å¹´',
14185            yy : '%d å¹´'
14186        },
14187        week : {
14188            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
14189            dow : 1, // Monday is the first day of the week.
14190            doy : 4  // The week that contains Jan 4th is the first week of the year.
14191        }
14192    });
14193
14194    //! moment.js locale configuration
14195
14196    hooks.defineLocale('zh-hk', {
14197        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
14198        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
14199        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
14200        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
14201        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
14202        longDateFormat : {
14203            LT : 'HH:mm',
14204            LTS : 'HH:mm:ss',
14205            L : 'YYYY/MM/DD',
14206            LL : 'YYYY年M月D日',
14207            LLL : 'YYYY年M月D日 HH:mm',
14208            LLLL : 'YYYY年M月D日dddd HH:mm',
14209            l : 'YYYY/M/D',
14210            ll : 'YYYY年M月D日',
14211            lll : 'YYYY年M月D日 HH:mm',
14212            llll : 'YYYY年M月D日dddd HH:mm'
14213        },
14214        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
14215        meridiemHour : function (hour, meridiem) {
14216            if (hour === 12) {
14217                hour = 0;
14218            }
14219            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
14220                return hour;
14221            } else if (meridiem === '中午') {
14222                return hour >= 11 ? hour : hour + 12;
14223            } else if (meridiem === '下午' || meridiem === '晚上') {
14224                return hour + 12;
14225            }
14226        },
14227        meridiem : function (hour, minute, isLower) {
14228            var hm = hour * 100 + minute;
14229            if (hm < 600) {
14230                return '凌晨';
14231            } else if (hm < 900) {
14232                return '早上';
14233            } else if (hm < 1130) {
14234                return '上午';
14235            } else if (hm < 1230) {
14236                return '中午';
14237            } else if (hm < 1800) {
14238                return '下午';
14239            } else {
14240                return '晚上';
14241            }
14242        },
14243        calendar : {
14244            sameDay : '[今天]LT',
14245            nextDay : '[明天]LT',
14246            nextWeek : '[下]ddddLT',
14247            lastDay : '[昨天]LT',
14248            lastWeek : '[上]ddddLT',
14249            sameElse : 'L'
14250        },
14251        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
14252        ordinal : function (number, period) {
14253            switch (period) {
14254                case 'd' :
14255                case 'D' :
14256                case 'DDD' :
14257                    return number + '日';
14258                case 'M' :
14259                    return number + '月';
14260                case 'w' :
14261                case 'W' :
14262                    return number + '週';
14263                default :
14264                    return number;
14265            }
14266        },
14267        relativeTime : {
14268            future : '%s內',
14269            past : '%s前',
14270            s : '幾秒',
14271            ss : '%d 秒',
14272            m : '1 分鐘',
14273            mm : '%d 分鐘',
14274            h : '1 小時',
14275            hh : '%d 小時',
14276            d : '1 天',
14277            dd : '%d 天',
14278            M : '1 個月',
14279            MM : '%d 個月',
14280            y : '1 å¹´',
14281            yy : '%d å¹´'
14282        }
14283    });
14284
14285    //! moment.js locale configuration
14286
14287    hooks.defineLocale('zh-tw', {
14288        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
14289        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
14290        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
14291        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
14292        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
14293        longDateFormat : {
14294            LT : 'HH:mm',
14295            LTS : 'HH:mm:ss',
14296            L : 'YYYY/MM/DD',
14297            LL : 'YYYY年M月D日',
14298            LLL : 'YYYY年M月D日 HH:mm',
14299            LLLL : 'YYYY年M月D日dddd HH:mm',
14300            l : 'YYYY/M/D',
14301            ll : 'YYYY年M月D日',
14302            lll : 'YYYY年M月D日 HH:mm',
14303            llll : 'YYYY年M月D日dddd HH:mm'
14304        },
14305        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
14306        meridiemHour : function (hour, meridiem) {
14307            if (hour === 12) {
14308                hour = 0;
14309            }
14310            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
14311                return hour;
14312            } else if (meridiem === '中午') {
14313                return hour >= 11 ? hour : hour + 12;
14314            } else if (meridiem === '下午' || meridiem === '晚上') {
14315                return hour + 12;
14316            }
14317        },
14318        meridiem : function (hour, minute, isLower) {
14319            var hm = hour * 100 + minute;
14320            if (hm < 600) {
14321                return '凌晨';
14322            } else if (hm < 900) {
14323                return '早上';
14324            } else if (hm < 1130) {
14325                return '上午';
14326            } else if (hm < 1230) {
14327                return '中午';
14328            } else if (hm < 1800) {
14329                return '下午';
14330            } else {
14331                return '晚上';
14332            }
14333        },
14334        calendar : {
14335            sameDay : '[今天] LT',
14336            nextDay : '[明天] LT',
14337            nextWeek : '[下]dddd LT',
14338            lastDay : '[昨天] LT',
14339            lastWeek : '[上]dddd LT',
14340            sameElse : 'L'
14341        },
14342        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
14343        ordinal : function (number, period) {
14344            switch (period) {
14345                case 'd' :
14346                case 'D' :
14347                case 'DDD' :
14348                    return number + '日';
14349                case 'M' :
14350                    return number + '月';
14351                case 'w' :
14352                case 'W' :
14353                    return number + '週';
14354                default :
14355                    return number;
14356            }
14357        },
14358        relativeTime : {
14359            future : '%s內',
14360            past : '%s前',
14361            s : '幾秒',
14362            ss : '%d 秒',
14363            m : '1 分鐘',
14364            mm : '%d 分鐘',
14365            h : '1 小時',
14366            hh : '%d 小時',
14367            d : '1 天',
14368            dd : '%d 天',
14369            M : '1 個月',
14370            MM : '%d 個月',
14371            y : '1 å¹´',
14372            yy : '%d å¹´'
14373        }
14374    });
14375
14376    hooks.locale('en');
14377
14378    return hooks;
14379
14380})));

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.