e2f5a3bccd81ed269964bf247b4f53b8574d2997
[lhc/web/www.git] / www / plugins-dist / organiseur / lib / moment / moment-with-locales.js
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];
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 });
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://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 if (!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);
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
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 isValid(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] = hooks.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);
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);
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();
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);
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 г.',
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'.split('_'),
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.',
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 = [
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 });
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('_'),
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.',
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 месеци',
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 },
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
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-كۈنى',
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 });
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',
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 })));