b5b0668736a6b3f973c2a80dcbea8b2875a828f7
[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 var k;
31 for (k in obj) {
32 // even if its not own property I'd still call it non-empty
33 return false;
34 }
35 return true;
36 }
37
38 function isNumber(input) {
39 return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';
40 }
41
42 function isDate(input) {
43 return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
44 }
45
46 function map(arr, fn) {
47 var res = [], i;
48 for (i = 0; i < arr.length; ++i) {
49 res.push(fn(arr[i], i));
50 }
51 return res;
52 }
53
54 function hasOwnProp(a, b) {
55 return Object.prototype.hasOwnProperty.call(a, b);
56 }
57
58 function extend(a, b) {
59 for (var i in b) {
60 if (hasOwnProp(b, i)) {
61 a[i] = b[i];
62 }
63 }
64
65 if (hasOwnProp(b, 'toString')) {
66 a.toString = b.toString;
67 }
68
69 if (hasOwnProp(b, 'valueOf')) {
70 a.valueOf = b.valueOf;
71 }
72
73 return a;
74 }
75
76 function createUTC (input, format, locale, strict) {
77 return createLocalOrUTC(input, format, locale, strict, true).utc();
78 }
79
80 function defaultParsingFlags() {
81 // We need to deep clone this object.
82 return {
83 empty : false,
84 unusedTokens : [],
85 unusedInput : [],
86 overflow : -2,
87 charsLeftOver : 0,
88 nullInput : false,
89 invalidMonth : null,
90 invalidFormat : false,
91 userInvalidated : false,
92 iso : false,
93 parsedDateParts : [],
94 meridiem : null
95 };
96 }
97
98 function getParsingFlags(m) {
99 if (m._pf == null) {
100 m._pf = defaultParsingFlags();
101 }
102 return m._pf;
103 }
104
105 var some;
106 if (Array.prototype.some) {
107 some = Array.prototype.some;
108 } else {
109 some = function (fun) {
110 var t = Object(this);
111 var len = t.length >>> 0;
112
113 for (var i = 0; i < len; i++) {
114 if (i in t && fun.call(this, t[i], i, t)) {
115 return true;
116 }
117 }
118
119 return false;
120 };
121 }
122
123 var some$1 = some;
124
125 function isValid(m) {
126 if (m._isValid == null) {
127 var flags = getParsingFlags(m);
128 var parsedParts = some$1.call(flags.parsedDateParts, function (i) {
129 return i != null;
130 });
131 var isNowValid = !isNaN(m._d.getTime()) &&
132 flags.overflow < 0 &&
133 !flags.empty &&
134 !flags.invalidMonth &&
135 !flags.invalidWeekday &&
136 !flags.nullInput &&
137 !flags.invalidFormat &&
138 !flags.userInvalidated &&
139 (!flags.meridiem || (flags.meridiem && parsedParts));
140
141 if (m._strict) {
142 isNowValid = isNowValid &&
143 flags.charsLeftOver === 0 &&
144 flags.unusedTokens.length === 0 &&
145 flags.bigHour === undefined;
146 }
147
148 if (Object.isFrozen == null || !Object.isFrozen(m)) {
149 m._isValid = isNowValid;
150 }
151 else {
152 return isNowValid;
153 }
154 }
155 return m._isValid;
156 }
157
158 function createInvalid (flags) {
159 var m = createUTC(NaN);
160 if (flags != null) {
161 extend(getParsingFlags(m), flags);
162 }
163 else {
164 getParsingFlags(m).userInvalidated = true;
165 }
166
167 return m;
168 }
169
170 function isUndefined(input) {
171 return input === void 0;
172 }
173
174 // Plugins that add properties should also add the key here (null value),
175 // so we can properly clone ourselves.
176 var momentProperties = hooks.momentProperties = [];
177
178 function copyConfig(to, from) {
179 var i, prop, val;
180
181 if (!isUndefined(from._isAMomentObject)) {
182 to._isAMomentObject = from._isAMomentObject;
183 }
184 if (!isUndefined(from._i)) {
185 to._i = from._i;
186 }
187 if (!isUndefined(from._f)) {
188 to._f = from._f;
189 }
190 if (!isUndefined(from._l)) {
191 to._l = from._l;
192 }
193 if (!isUndefined(from._strict)) {
194 to._strict = from._strict;
195 }
196 if (!isUndefined(from._tzm)) {
197 to._tzm = from._tzm;
198 }
199 if (!isUndefined(from._isUTC)) {
200 to._isUTC = from._isUTC;
201 }
202 if (!isUndefined(from._offset)) {
203 to._offset = from._offset;
204 }
205 if (!isUndefined(from._pf)) {
206 to._pf = getParsingFlags(from);
207 }
208 if (!isUndefined(from._locale)) {
209 to._locale = from._locale;
210 }
211
212 if (momentProperties.length > 0) {
213 for (i in momentProperties) {
214 prop = momentProperties[i];
215 val = from[prop];
216 if (!isUndefined(val)) {
217 to[prop] = val;
218 }
219 }
220 }
221
222 return to;
223 }
224
225 var updateInProgress = false;
226
227 // Moment prototype object
228 function Moment(config) {
229 copyConfig(this, config);
230 this._d = new Date(config._d != null ? config._d.getTime() : NaN);
231 if (!this.isValid()) {
232 this._d = new Date(NaN);
233 }
234 // Prevent infinite loop in case updateOffset creates new moment
235 // objects.
236 if (updateInProgress === false) {
237 updateInProgress = true;
238 hooks.updateOffset(this);
239 updateInProgress = false;
240 }
241 }
242
243 function isMoment (obj) {
244 return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
245 }
246
247 function absFloor (number) {
248 if (number < 0) {
249 // -0 -> 0
250 return Math.ceil(number) || 0;
251 } else {
252 return Math.floor(number);
253 }
254 }
255
256 function toInt(argumentForCoercion) {
257 var coercedNumber = +argumentForCoercion,
258 value = 0;
259
260 if (coercedNumber !== 0 && isFinite(coercedNumber)) {
261 value = absFloor(coercedNumber);
262 }
263
264 return value;
265 }
266
267 // compare two arrays, return the number of differences
268 function compareArrays(array1, array2, dontConvert) {
269 var len = Math.min(array1.length, array2.length),
270 lengthDiff = Math.abs(array1.length - array2.length),
271 diffs = 0,
272 i;
273 for (i = 0; i < len; i++) {
274 if ((dontConvert && array1[i] !== array2[i]) ||
275 (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
276 diffs++;
277 }
278 }
279 return diffs + lengthDiff;
280 }
281
282 function warn(msg) {
283 if (hooks.suppressDeprecationWarnings === false &&
284 (typeof console !== 'undefined') && console.warn) {
285 console.warn('Deprecation warning: ' + msg);
286 }
287 }
288
289 function deprecate(msg, fn) {
290 var firstTime = true;
291
292 return extend(function () {
293 if (hooks.deprecationHandler != null) {
294 hooks.deprecationHandler(null, msg);
295 }
296 if (firstTime) {
297 var args = [];
298 var arg;
299 for (var i = 0; i < arguments.length; i++) {
300 arg = '';
301 if (typeof arguments[i] === 'object') {
302 arg += '\n[' + i + '] ';
303 for (var key in arguments[0]) {
304 arg += key + ': ' + arguments[0][key] + ', ';
305 }
306 arg = arg.slice(0, -2); // Remove trailing comma and space
307 } else {
308 arg = arguments[i];
309 }
310 args.push(arg);
311 }
312 warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack);
313 firstTime = false;
314 }
315 return fn.apply(this, arguments);
316 }, fn);
317 }
318
319 var deprecations = {};
320
321 function deprecateSimple(name, msg) {
322 if (hooks.deprecationHandler != null) {
323 hooks.deprecationHandler(name, msg);
324 }
325 if (!deprecations[name]) {
326 warn(msg);
327 deprecations[name] = true;
328 }
329 }
330
331 hooks.suppressDeprecationWarnings = false;
332 hooks.deprecationHandler = null;
333
334 function isFunction(input) {
335 return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
336 }
337
338 function set (config) {
339 var prop, i;
340 for (i in config) {
341 prop = config[i];
342 if (isFunction(prop)) {
343 this[i] = prop;
344 } else {
345 this['_' + i] = prop;
346 }
347 }
348 this._config = config;
349 // Lenient ordinal parsing accepts just a number in addition to
350 // number + (possibly) stuff coming from _ordinalParseLenient.
351 this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source);
352 }
353
354 function mergeConfigs(parentConfig, childConfig) {
355 var res = extend({}, parentConfig), prop;
356 for (prop in childConfig) {
357 if (hasOwnProp(childConfig, prop)) {
358 if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
359 res[prop] = {};
360 extend(res[prop], parentConfig[prop]);
361 extend(res[prop], childConfig[prop]);
362 } else if (childConfig[prop] != null) {
363 res[prop] = childConfig[prop];
364 } else {
365 delete res[prop];
366 }
367 }
368 }
369 for (prop in parentConfig) {
370 if (hasOwnProp(parentConfig, prop) &&
371 !hasOwnProp(childConfig, prop) &&
372 isObject(parentConfig[prop])) {
373 // make sure changes to properties don't modify parent config
374 res[prop] = extend({}, res[prop]);
375 }
376 }
377 return res;
378 }
379
380 function Locale(config) {
381 if (config != null) {
382 this.set(config);
383 }
384 }
385
386 var keys;
387
388 if (Object.keys) {
389 keys = Object.keys;
390 } else {
391 keys = function (obj) {
392 var i, res = [];
393 for (i in obj) {
394 if (hasOwnProp(obj, i)) {
395 res.push(i);
396 }
397 }
398 return res;
399 };
400 }
401
402 var keys$1 = keys;
403
404 var defaultCalendar = {
405 sameDay : '[Today at] LT',
406 nextDay : '[Tomorrow at] LT',
407 nextWeek : 'dddd [at] LT',
408 lastDay : '[Yesterday at] LT',
409 lastWeek : '[Last] dddd [at] LT',
410 sameElse : 'L'
411 };
412
413 function calendar (key, mom, now) {
414 var output = this._calendar[key] || this._calendar['sameElse'];
415 return isFunction(output) ? output.call(mom, now) : output;
416 }
417
418 var defaultLongDateFormat = {
419 LTS : 'h:mm:ss A',
420 LT : 'h:mm A',
421 L : 'MM/DD/YYYY',
422 LL : 'MMMM D, YYYY',
423 LLL : 'MMMM D, YYYY h:mm A',
424 LLLL : 'dddd, MMMM D, YYYY h:mm A'
425 };
426
427 function longDateFormat (key) {
428 var format = this._longDateFormat[key],
429 formatUpper = this._longDateFormat[key.toUpperCase()];
430
431 if (format || !formatUpper) {
432 return format;
433 }
434
435 this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
436 return val.slice(1);
437 });
438
439 return this._longDateFormat[key];
440 }
441
442 var defaultInvalidDate = 'Invalid date';
443
444 function invalidDate () {
445 return this._invalidDate;
446 }
447
448 var defaultOrdinal = '%d';
449 var defaultOrdinalParse = /\d{1,2}/;
450
451 function ordinal (number) {
452 return this._ordinal.replace('%d', number);
453 }
454
455 var defaultRelativeTime = {
456 future : 'in %s',
457 past : '%s ago',
458 s : 'a few seconds',
459 m : 'a minute',
460 mm : '%d minutes',
461 h : 'an hour',
462 hh : '%d hours',
463 d : 'a day',
464 dd : '%d days',
465 M : 'a month',
466 MM : '%d months',
467 y : 'a year',
468 yy : '%d years'
469 };
470
471 function relativeTime (number, withoutSuffix, string, isFuture) {
472 var output = this._relativeTime[string];
473 return (isFunction(output)) ?
474 output(number, withoutSuffix, string, isFuture) :
475 output.replace(/%d/i, number);
476 }
477
478 function pastFuture (diff, output) {
479 var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
480 return isFunction(format) ? format(output) : format.replace(/%s/i, output);
481 }
482
483 var aliases = {};
484
485 function addUnitAlias (unit, shorthand) {
486 var lowerCase = unit.toLowerCase();
487 aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
488 }
489
490 function normalizeUnits(units) {
491 return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
492 }
493
494 function normalizeObjectUnits(inputObject) {
495 var normalizedInput = {},
496 normalizedProp,
497 prop;
498
499 for (prop in inputObject) {
500 if (hasOwnProp(inputObject, prop)) {
501 normalizedProp = normalizeUnits(prop);
502 if (normalizedProp) {
503 normalizedInput[normalizedProp] = inputObject[prop];
504 }
505 }
506 }
507
508 return normalizedInput;
509 }
510
511 var priorities = {};
512
513 function addUnitPriority(unit, priority) {
514 priorities[unit] = priority;
515 }
516
517 function getPrioritizedUnits(unitsObj) {
518 var units = [];
519 for (var u in unitsObj) {
520 units.push({unit: u, priority: priorities[u]});
521 }
522 units.sort(function (a, b) {
523 return a.priority - b.priority;
524 });
525 return units;
526 }
527
528 function makeGetSet (unit, keepTime) {
529 return function (value) {
530 if (value != null) {
531 set$1(this, unit, value);
532 hooks.updateOffset(this, keepTime);
533 return this;
534 } else {
535 return get(this, unit);
536 }
537 };
538 }
539
540 function get (mom, unit) {
541 return mom.isValid() ?
542 mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;
543 }
544
545 function set$1 (mom, unit, value) {
546 if (mom.isValid()) {
547 mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
548 }
549 }
550
551 // MOMENTS
552
553 function stringGet (units) {
554 units = normalizeUnits(units);
555 if (isFunction(this[units])) {
556 return this[units]();
557 }
558 return this;
559 }
560
561
562 function stringSet (units, value) {
563 if (typeof units === 'object') {
564 units = normalizeObjectUnits(units);
565 var prioritized = getPrioritizedUnits(units);
566 for (var i = 0; i < prioritized.length; i++) {
567 this[prioritized[i].unit](units[prioritized[i].unit]);
568 }
569 } else {
570 units = normalizeUnits(units);
571 if (isFunction(this[units])) {
572 return this[units](value);
573 }
574 }
575 return this;
576 }
577
578 function zeroFill(number, targetLength, forceSign) {
579 var absNumber = '' + Math.abs(number),
580 zerosToFill = targetLength - absNumber.length,
581 sign = number >= 0;
582 return (sign ? (forceSign ? '+' : '') : '-') +
583 Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
584 }
585
586 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;
587
588 var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
589
590 var formatFunctions = {};
591
592 var formatTokenFunctions = {};
593
594 // token: 'M'
595 // padded: ['MM', 2]
596 // ordinal: 'Mo'
597 // callback: function () { this.month() + 1 }
598 function addFormatToken (token, padded, ordinal, callback) {
599 var func = callback;
600 if (typeof callback === 'string') {
601 func = function () {
602 return this[callback]();
603 };
604 }
605 if (token) {
606 formatTokenFunctions[token] = func;
607 }
608 if (padded) {
609 formatTokenFunctions[padded[0]] = function () {
610 return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
611 };
612 }
613 if (ordinal) {
614 formatTokenFunctions[ordinal] = function () {
615 return this.localeData().ordinal(func.apply(this, arguments), token);
616 };
617 }
618 }
619
620 function removeFormattingTokens(input) {
621 if (input.match(/\[[\s\S]/)) {
622 return input.replace(/^\[|\]$/g, '');
623 }
624 return input.replace(/\\/g, '');
625 }
626
627 function makeFormatFunction(format) {
628 var array = format.match(formattingTokens), i, length;
629
630 for (i = 0, length = array.length; i < length; i++) {
631 if (formatTokenFunctions[array[i]]) {
632 array[i] = formatTokenFunctions[array[i]];
633 } else {
634 array[i] = removeFormattingTokens(array[i]);
635 }
636 }
637
638 return function (mom) {
639 var output = '', i;
640 for (i = 0; i < length; i++) {
641 output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
642 }
643 return output;
644 };
645 }
646
647 // format date using native date object
648 function formatMoment(m, format) {
649 if (!m.isValid()) {
650 return m.localeData().invalidDate();
651 }
652
653 format = expandFormat(format, m.localeData());
654 formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
655
656 return formatFunctions[format](m);
657 }
658
659 function expandFormat(format, locale) {
660 var i = 5;
661
662 function replaceLongDateFormatTokens(input) {
663 return locale.longDateFormat(input) || input;
664 }
665
666 localFormattingTokens.lastIndex = 0;
667 while (i >= 0 && localFormattingTokens.test(format)) {
668 format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
669 localFormattingTokens.lastIndex = 0;
670 i -= 1;
671 }
672
673 return format;
674 }
675
676 var match1 = /\d/; // 0 - 9
677 var match2 = /\d\d/; // 00 - 99
678 var match3 = /\d{3}/; // 000 - 999
679 var match4 = /\d{4}/; // 0000 - 9999
680 var match6 = /[+-]?\d{6}/; // -999999 - 999999
681 var match1to2 = /\d\d?/; // 0 - 99
682 var match3to4 = /\d\d\d\d?/; // 999 - 9999
683 var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999
684 var match1to3 = /\d{1,3}/; // 0 - 999
685 var match1to4 = /\d{1,4}/; // 0 - 9999
686 var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999
687
688 var matchUnsigned = /\d+/; // 0 - inf
689 var matchSigned = /[+-]?\d+/; // -inf - inf
690
691 var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
692 var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z
693
694 var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
695
696 // any word (or two) characters or numbers including two/three word month in arabic.
697 // includes scottish gaelic two word and hyphenated months
698 var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;
699
700
701 var regexes = {};
702
703 function addRegexToken (token, regex, strictRegex) {
704 regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
705 return (isStrict && strictRegex) ? strictRegex : regex;
706 };
707 }
708
709 function getParseRegexForToken (token, config) {
710 if (!hasOwnProp(regexes, token)) {
711 return new RegExp(unescapeFormat(token));
712 }
713
714 return regexes[token](config._strict, config._locale);
715 }
716
717 // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
718 function unescapeFormat(s) {
719 return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
720 return p1 || p2 || p3 || p4;
721 }));
722 }
723
724 function regexEscape(s) {
725 return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
726 }
727
728 var tokens = {};
729
730 function addParseToken (token, callback) {
731 var i, func = callback;
732 if (typeof token === 'string') {
733 token = [token];
734 }
735 if (isNumber(callback)) {
736 func = function (input, array) {
737 array[callback] = toInt(input);
738 };
739 }
740 for (i = 0; i < token.length; i++) {
741 tokens[token[i]] = func;
742 }
743 }
744
745 function addWeekParseToken (token, callback) {
746 addParseToken(token, function (input, array, config, token) {
747 config._w = config._w || {};
748 callback(input, config._w, config, token);
749 });
750 }
751
752 function addTimeToArrayFromToken(token, input, config) {
753 if (input != null && hasOwnProp(tokens, token)) {
754 tokens[token](input, config._a, config, token);
755 }
756 }
757
758 var YEAR = 0;
759 var MONTH = 1;
760 var DATE = 2;
761 var HOUR = 3;
762 var MINUTE = 4;
763 var SECOND = 5;
764 var MILLISECOND = 6;
765 var WEEK = 7;
766 var WEEKDAY = 8;
767
768 var indexOf;
769
770 if (Array.prototype.indexOf) {
771 indexOf = Array.prototype.indexOf;
772 } else {
773 indexOf = function (o) {
774 // I know
775 var i;
776 for (i = 0; i < this.length; ++i) {
777 if (this[i] === o) {
778 return i;
779 }
780 }
781 return -1;
782 };
783 }
784
785 var indexOf$1 = indexOf;
786
787 function daysInMonth(year, month) {
788 return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
789 }
790
791 // FORMATTING
792
793 addFormatToken('M', ['MM', 2], 'Mo', function () {
794 return this.month() + 1;
795 });
796
797 addFormatToken('MMM', 0, 0, function (format) {
798 return this.localeData().monthsShort(this, format);
799 });
800
801 addFormatToken('MMMM', 0, 0, function (format) {
802 return this.localeData().months(this, format);
803 });
804
805 // ALIASES
806
807 addUnitAlias('month', 'M');
808
809 // PRIORITY
810
811 addUnitPriority('month', 8);
812
813 // PARSING
814
815 addRegexToken('M', match1to2);
816 addRegexToken('MM', match1to2, match2);
817 addRegexToken('MMM', function (isStrict, locale) {
818 return locale.monthsShortRegex(isStrict);
819 });
820 addRegexToken('MMMM', function (isStrict, locale) {
821 return locale.monthsRegex(isStrict);
822 });
823
824 addParseToken(['M', 'MM'], function (input, array) {
825 array[MONTH] = toInt(input) - 1;
826 });
827
828 addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
829 var month = config._locale.monthsParse(input, token, config._strict);
830 // if we didn't find a month name, mark the date as invalid.
831 if (month != null) {
832 array[MONTH] = month;
833 } else {
834 getParsingFlags(config).invalidMonth = input;
835 }
836 });
837
838 // LOCALES
839
840 var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/;
841 var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
842 function localeMonths (m, format) {
843 if (!m) {
844 return this._months;
845 }
846 return isArray(this._months) ? this._months[m.month()] :
847 this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];
848 }
849
850 var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
851 function localeMonthsShort (m, format) {
852 if (!m) {
853 return this._monthsShort;
854 }
855 return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
856 this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
857 }
858
859 function handleStrictParse(monthName, format, strict) {
860 var i, ii, mom, llc = monthName.toLocaleLowerCase();
861 if (!this._monthsParse) {
862 // this is not used
863 this._monthsParse = [];
864 this._longMonthsParse = [];
865 this._shortMonthsParse = [];
866 for (i = 0; i < 12; ++i) {
867 mom = createUTC([2000, i]);
868 this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();
869 this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
870 }
871 }
872
873 if (strict) {
874 if (format === 'MMM') {
875 ii = indexOf$1.call(this._shortMonthsParse, llc);
876 return ii !== -1 ? ii : null;
877 } else {
878 ii = indexOf$1.call(this._longMonthsParse, llc);
879 return ii !== -1 ? ii : null;
880 }
881 } else {
882 if (format === 'MMM') {
883 ii = indexOf$1.call(this._shortMonthsParse, llc);
884 if (ii !== -1) {
885 return ii;
886 }
887 ii = indexOf$1.call(this._longMonthsParse, llc);
888 return ii !== -1 ? ii : null;
889 } else {
890 ii = indexOf$1.call(this._longMonthsParse, llc);
891 if (ii !== -1) {
892 return ii;
893 }
894 ii = indexOf$1.call(this._shortMonthsParse, llc);
895 return ii !== -1 ? ii : null;
896 }
897 }
898 }
899
900 function localeMonthsParse (monthName, format, strict) {
901 var i, mom, regex;
902
903 if (this._monthsParseExact) {
904 return handleStrictParse.call(this, monthName, format, strict);
905 }
906
907 if (!this._monthsParse) {
908 this._monthsParse = [];
909 this._longMonthsParse = [];
910 this._shortMonthsParse = [];
911 }
912
913 // TODO: add sorting
914 // Sorting makes sure if one month (or abbr) is a prefix of another
915 // see sorting in computeMonthsParse
916 for (i = 0; i < 12; i++) {
917 // make the regex if we don't have it already
918 mom = createUTC([2000, i]);
919 if (strict && !this._longMonthsParse[i]) {
920 this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
921 this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
922 }
923 if (!strict && !this._monthsParse[i]) {
924 regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
925 this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
926 }
927 // test the regex
928 if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
929 return i;
930 } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
931 return i;
932 } else if (!strict && this._monthsParse[i].test(monthName)) {
933 return i;
934 }
935 }
936 }
937
938 // MOMENTS
939
940 function setMonth (mom, value) {
941 var dayOfMonth;
942
943 if (!mom.isValid()) {
944 // No op
945 return mom;
946 }
947
948 if (typeof value === 'string') {
949 if (/^\d+$/.test(value)) {
950 value = toInt(value);
951 } else {
952 value = mom.localeData().monthsParse(value);
953 // TODO: Another silent failure?
954 if (!isNumber(value)) {
955 return mom;
956 }
957 }
958 }
959
960 dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
961 mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
962 return mom;
963 }
964
965 function getSetMonth (value) {
966 if (value != null) {
967 setMonth(this, value);
968 hooks.updateOffset(this, true);
969 return this;
970 } else {
971 return get(this, 'Month');
972 }
973 }
974
975 function getDaysInMonth () {
976 return daysInMonth(this.year(), this.month());
977 }
978
979 var defaultMonthsShortRegex = matchWord;
980 function monthsShortRegex (isStrict) {
981 if (this._monthsParseExact) {
982 if (!hasOwnProp(this, '_monthsRegex')) {
983 computeMonthsParse.call(this);
984 }
985 if (isStrict) {
986 return this._monthsShortStrictRegex;
987 } else {
988 return this._monthsShortRegex;
989 }
990 } else {
991 if (!hasOwnProp(this, '_monthsShortRegex')) {
992 this._monthsShortRegex = defaultMonthsShortRegex;
993 }
994 return this._monthsShortStrictRegex && isStrict ?
995 this._monthsShortStrictRegex : this._monthsShortRegex;
996 }
997 }
998
999 var defaultMonthsRegex = matchWord;
1000 function monthsRegex (isStrict) {
1001 if (this._monthsParseExact) {
1002 if (!hasOwnProp(this, '_monthsRegex')) {
1003 computeMonthsParse.call(this);
1004 }
1005 if (isStrict) {
1006 return this._monthsStrictRegex;
1007 } else {
1008 return this._monthsRegex;
1009 }
1010 } else {
1011 if (!hasOwnProp(this, '_monthsRegex')) {
1012 this._monthsRegex = defaultMonthsRegex;
1013 }
1014 return this._monthsStrictRegex && isStrict ?
1015 this._monthsStrictRegex : this._monthsRegex;
1016 }
1017 }
1018
1019 function computeMonthsParse () {
1020 function cmpLenRev(a, b) {
1021 return b.length - a.length;
1022 }
1023
1024 var shortPieces = [], longPieces = [], mixedPieces = [],
1025 i, mom;
1026 for (i = 0; i < 12; i++) {
1027 // make the regex if we don't have it already
1028 mom = createUTC([2000, i]);
1029 shortPieces.push(this.monthsShort(mom, ''));
1030 longPieces.push(this.months(mom, ''));
1031 mixedPieces.push(this.months(mom, ''));
1032 mixedPieces.push(this.monthsShort(mom, ''));
1033 }
1034 // Sorting makes sure if one month (or abbr) is a prefix of another it
1035 // will match the longer piece.
1036 shortPieces.sort(cmpLenRev);
1037 longPieces.sort(cmpLenRev);
1038 mixedPieces.sort(cmpLenRev);
1039 for (i = 0; i < 12; i++) {
1040 shortPieces[i] = regexEscape(shortPieces[i]);
1041 longPieces[i] = regexEscape(longPieces[i]);
1042 }
1043 for (i = 0; i < 24; i++) {
1044 mixedPieces[i] = regexEscape(mixedPieces[i]);
1045 }
1046
1047 this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1048 this._monthsShortRegex = this._monthsRegex;
1049 this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
1050 this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
1051 }
1052
1053 // FORMATTING
1054
1055 addFormatToken('Y', 0, 0, function () {
1056 var y = this.year();
1057 return y <= 9999 ? '' + y : '+' + y;
1058 });
1059
1060 addFormatToken(0, ['YY', 2], 0, function () {
1061 return this.year() % 100;
1062 });
1063
1064 addFormatToken(0, ['YYYY', 4], 0, 'year');
1065 addFormatToken(0, ['YYYYY', 5], 0, 'year');
1066 addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
1067
1068 // ALIASES
1069
1070 addUnitAlias('year', 'y');
1071
1072 // PRIORITIES
1073
1074 addUnitPriority('year', 1);
1075
1076 // PARSING
1077
1078 addRegexToken('Y', matchSigned);
1079 addRegexToken('YY', match1to2, match2);
1080 addRegexToken('YYYY', match1to4, match4);
1081 addRegexToken('YYYYY', match1to6, match6);
1082 addRegexToken('YYYYYY', match1to6, match6);
1083
1084 addParseToken(['YYYYY', 'YYYYYY'], YEAR);
1085 addParseToken('YYYY', function (input, array) {
1086 array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
1087 });
1088 addParseToken('YY', function (input, array) {
1089 array[YEAR] = hooks.parseTwoDigitYear(input);
1090 });
1091 addParseToken('Y', function (input, array) {
1092 array[YEAR] = parseInt(input, 10);
1093 });
1094
1095 // HELPERS
1096
1097 function daysInYear(year) {
1098 return isLeapYear(year) ? 366 : 365;
1099 }
1100
1101 function isLeapYear(year) {
1102 return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
1103 }
1104
1105 // HOOKS
1106
1107 hooks.parseTwoDigitYear = function (input) {
1108 return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
1109 };
1110
1111 // MOMENTS
1112
1113 var getSetYear = makeGetSet('FullYear', true);
1114
1115 function getIsLeapYear () {
1116 return isLeapYear(this.year());
1117 }
1118
1119 function createDate (y, m, d, h, M, s, ms) {
1120 //can't just apply() to create a date:
1121 //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
1122 var date = new Date(y, m, d, h, M, s, ms);
1123
1124 //the date constructor remaps years 0-99 to 1900-1999
1125 if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {
1126 date.setFullYear(y);
1127 }
1128 return date;
1129 }
1130
1131 function createUTCDate (y) {
1132 var date = new Date(Date.UTC.apply(null, arguments));
1133
1134 //the Date.UTC function remaps years 0-99 to 1900-1999
1135 if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {
1136 date.setUTCFullYear(y);
1137 }
1138 return date;
1139 }
1140
1141 // start-of-first-week - start-of-year
1142 function firstWeekOffset(year, dow, doy) {
1143 var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
1144 fwd = 7 + dow - doy,
1145 // first-week day local weekday -- which local weekday is fwd
1146 fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
1147
1148 return -fwdlw + fwd - 1;
1149 }
1150
1151 //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
1152 function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
1153 var localWeekday = (7 + weekday - dow) % 7,
1154 weekOffset = firstWeekOffset(year, dow, doy),
1155 dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
1156 resYear, resDayOfYear;
1157
1158 if (dayOfYear <= 0) {
1159 resYear = year - 1;
1160 resDayOfYear = daysInYear(resYear) + dayOfYear;
1161 } else if (dayOfYear > daysInYear(year)) {
1162 resYear = year + 1;
1163 resDayOfYear = dayOfYear - daysInYear(year);
1164 } else {
1165 resYear = year;
1166 resDayOfYear = dayOfYear;
1167 }
1168
1169 return {
1170 year: resYear,
1171 dayOfYear: resDayOfYear
1172 };
1173 }
1174
1175 function weekOfYear(mom, dow, doy) {
1176 var weekOffset = firstWeekOffset(mom.year(), dow, doy),
1177 week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
1178 resWeek, resYear;
1179
1180 if (week < 1) {
1181 resYear = mom.year() - 1;
1182 resWeek = week + weeksInYear(resYear, dow, doy);
1183 } else if (week > weeksInYear(mom.year(), dow, doy)) {
1184 resWeek = week - weeksInYear(mom.year(), dow, doy);
1185 resYear = mom.year() + 1;
1186 } else {
1187 resYear = mom.year();
1188 resWeek = week;
1189 }
1190
1191 return {
1192 week: resWeek,
1193 year: resYear
1194 };
1195 }
1196
1197 function weeksInYear(year, dow, doy) {
1198 var weekOffset = firstWeekOffset(year, dow, doy),
1199 weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
1200 return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
1201 }
1202
1203 // FORMATTING
1204
1205 addFormatToken('w', ['ww', 2], 'wo', 'week');
1206 addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
1207
1208 // ALIASES
1209
1210 addUnitAlias('week', 'w');
1211 addUnitAlias('isoWeek', 'W');
1212
1213 // PRIORITIES
1214
1215 addUnitPriority('week', 5);
1216 addUnitPriority('isoWeek', 5);
1217
1218 // PARSING
1219
1220 addRegexToken('w', match1to2);
1221 addRegexToken('ww', match1to2, match2);
1222 addRegexToken('W', match1to2);
1223 addRegexToken('WW', match1to2, match2);
1224
1225 addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
1226 week[token.substr(0, 1)] = toInt(input);
1227 });
1228
1229 // HELPERS
1230
1231 // LOCALES
1232
1233 function localeWeek (mom) {
1234 return weekOfYear(mom, this._week.dow, this._week.doy).week;
1235 }
1236
1237 var defaultLocaleWeek = {
1238 dow : 0, // Sunday is the first day of the week.
1239 doy : 6 // The week that contains Jan 1st is the first week of the year.
1240 };
1241
1242 function localeFirstDayOfWeek () {
1243 return this._week.dow;
1244 }
1245
1246 function localeFirstDayOfYear () {
1247 return this._week.doy;
1248 }
1249
1250 // MOMENTS
1251
1252 function getSetWeek (input) {
1253 var week = this.localeData().week(this);
1254 return input == null ? week : this.add((input - week) * 7, 'd');
1255 }
1256
1257 function getSetISOWeek (input) {
1258 var week = weekOfYear(this, 1, 4).week;
1259 return input == null ? week : this.add((input - week) * 7, 'd');
1260 }
1261
1262 // FORMATTING
1263
1264 addFormatToken('d', 0, 'do', 'day');
1265
1266 addFormatToken('dd', 0, 0, function (format) {
1267 return this.localeData().weekdaysMin(this, format);
1268 });
1269
1270 addFormatToken('ddd', 0, 0, function (format) {
1271 return this.localeData().weekdaysShort(this, format);
1272 });
1273
1274 addFormatToken('dddd', 0, 0, function (format) {
1275 return this.localeData().weekdays(this, format);
1276 });
1277
1278 addFormatToken('e', 0, 0, 'weekday');
1279 addFormatToken('E', 0, 0, 'isoWeekday');
1280
1281 // ALIASES
1282
1283 addUnitAlias('day', 'd');
1284 addUnitAlias('weekday', 'e');
1285 addUnitAlias('isoWeekday', 'E');
1286
1287 // PRIORITY
1288 addUnitPriority('day', 11);
1289 addUnitPriority('weekday', 11);
1290 addUnitPriority('isoWeekday', 11);
1291
1292 // PARSING
1293
1294 addRegexToken('d', match1to2);
1295 addRegexToken('e', match1to2);
1296 addRegexToken('E', match1to2);
1297 addRegexToken('dd', function (isStrict, locale) {
1298 return locale.weekdaysMinRegex(isStrict);
1299 });
1300 addRegexToken('ddd', function (isStrict, locale) {
1301 return locale.weekdaysShortRegex(isStrict);
1302 });
1303 addRegexToken('dddd', function (isStrict, locale) {
1304 return locale.weekdaysRegex(isStrict);
1305 });
1306
1307 addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
1308 var weekday = config._locale.weekdaysParse(input, token, config._strict);
1309 // if we didn't get a weekday name, mark the date as invalid
1310 if (weekday != null) {
1311 week.d = weekday;
1312 } else {
1313 getParsingFlags(config).invalidWeekday = input;
1314 }
1315 });
1316
1317 addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
1318 week[token] = toInt(input);
1319 });
1320
1321 // HELPERS
1322
1323 function parseWeekday(input, locale) {
1324 if (typeof input !== 'string') {
1325 return input;
1326 }
1327
1328 if (!isNaN(input)) {
1329 return parseInt(input, 10);
1330 }
1331
1332 input = locale.weekdaysParse(input);
1333 if (typeof input === 'number') {
1334 return input;
1335 }
1336
1337 return null;
1338 }
1339
1340 function parseIsoWeekday(input, locale) {
1341 if (typeof input === 'string') {
1342 return locale.weekdaysParse(input) % 7 || 7;
1343 }
1344 return isNaN(input) ? null : input;
1345 }
1346
1347 // LOCALES
1348
1349 var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
1350 function localeWeekdays (m, format) {
1351 if (!m) {
1352 return this._weekdays;
1353 }
1354 return isArray(this._weekdays) ? this._weekdays[m.day()] :
1355 this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];
1356 }
1357
1358 var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
1359 function localeWeekdaysShort (m) {
1360 return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;
1361 }
1362
1363 var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
1364 function localeWeekdaysMin (m) {
1365 return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;
1366 }
1367
1368 function handleStrictParse$1(weekdayName, format, strict) {
1369 var i, ii, mom, llc = weekdayName.toLocaleLowerCase();
1370 if (!this._weekdaysParse) {
1371 this._weekdaysParse = [];
1372 this._shortWeekdaysParse = [];
1373 this._minWeekdaysParse = [];
1374
1375 for (i = 0; i < 7; ++i) {
1376 mom = createUTC([2000, 1]).day(i);
1377 this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();
1378 this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();
1379 this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
1380 }
1381 }
1382
1383 if (strict) {
1384 if (format === 'dddd') {
1385 ii = indexOf$1.call(this._weekdaysParse, llc);
1386 return ii !== -1 ? ii : null;
1387 } else if (format === 'ddd') {
1388 ii = indexOf$1.call(this._shortWeekdaysParse, llc);
1389 return ii !== -1 ? ii : null;
1390 } else {
1391 ii = indexOf$1.call(this._minWeekdaysParse, llc);
1392 return ii !== -1 ? ii : null;
1393 }
1394 } else {
1395 if (format === 'dddd') {
1396 ii = indexOf$1.call(this._weekdaysParse, llc);
1397 if (ii !== -1) {
1398 return ii;
1399 }
1400 ii = indexOf$1.call(this._shortWeekdaysParse, llc);
1401 if (ii !== -1) {
1402 return ii;
1403 }
1404 ii = indexOf$1.call(this._minWeekdaysParse, llc);
1405 return ii !== -1 ? ii : null;
1406 } else if (format === 'ddd') {
1407 ii = indexOf$1.call(this._shortWeekdaysParse, llc);
1408 if (ii !== -1) {
1409 return ii;
1410 }
1411 ii = indexOf$1.call(this._weekdaysParse, llc);
1412 if (ii !== -1) {
1413 return ii;
1414 }
1415 ii = indexOf$1.call(this._minWeekdaysParse, llc);
1416 return ii !== -1 ? ii : null;
1417 } else {
1418 ii = indexOf$1.call(this._minWeekdaysParse, llc);
1419 if (ii !== -1) {
1420 return ii;
1421 }
1422 ii = indexOf$1.call(this._weekdaysParse, llc);
1423 if (ii !== -1) {
1424 return ii;
1425 }
1426 ii = indexOf$1.call(this._shortWeekdaysParse, llc);
1427 return ii !== -1 ? ii : null;
1428 }
1429 }
1430 }
1431
1432 function localeWeekdaysParse (weekdayName, format, strict) {
1433 var i, mom, regex;
1434
1435 if (this._weekdaysParseExact) {
1436 return handleStrictParse$1.call(this, weekdayName, format, strict);
1437 }
1438
1439 if (!this._weekdaysParse) {
1440 this._weekdaysParse = [];
1441 this._minWeekdaysParse = [];
1442 this._shortWeekdaysParse = [];
1443 this._fullWeekdaysParse = [];
1444 }
1445
1446 for (i = 0; i < 7; i++) {
1447 // make the regex if we don't have it already
1448
1449 mom = createUTC([2000, 1]).day(i);
1450 if (strict && !this._fullWeekdaysParse[i]) {
1451 this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i');
1452 this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i');
1453 this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i');
1454 }
1455 if (!this._weekdaysParse[i]) {
1456 regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
1457 this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
1458 }
1459 // test the regex
1460 if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
1461 return i;
1462 } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
1463 return i;
1464 } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
1465 return i;
1466 } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
1467 return i;
1468 }
1469 }
1470 }
1471
1472 // MOMENTS
1473
1474 function getSetDayOfWeek (input) {
1475 if (!this.isValid()) {
1476 return input != null ? this : NaN;
1477 }
1478 var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
1479 if (input != null) {
1480 input = parseWeekday(input, this.localeData());
1481 return this.add(input - day, 'd');
1482 } else {
1483 return day;
1484 }
1485 }
1486
1487 function getSetLocaleDayOfWeek (input) {
1488 if (!this.isValid()) {
1489 return input != null ? this : NaN;
1490 }
1491 var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
1492 return input == null ? weekday : this.add(input - weekday, 'd');
1493 }
1494
1495 function getSetISODayOfWeek (input) {
1496 if (!this.isValid()) {
1497 return input != null ? this : NaN;
1498 }
1499
1500 // behaves the same as moment#day except
1501 // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
1502 // as a setter, sunday should belong to the previous week.
1503
1504 if (input != null) {
1505 var weekday = parseIsoWeekday(input, this.localeData());
1506 return this.day(this.day() % 7 ? weekday : weekday - 7);
1507 } else {
1508 return this.day() || 7;
1509 }
1510 }
1511
1512 var defaultWeekdaysRegex = matchWord;
1513 function weekdaysRegex (isStrict) {
1514 if (this._weekdaysParseExact) {
1515 if (!hasOwnProp(this, '_weekdaysRegex')) {
1516 computeWeekdaysParse.call(this);
1517 }
1518 if (isStrict) {
1519 return this._weekdaysStrictRegex;
1520 } else {
1521 return this._weekdaysRegex;
1522 }
1523 } else {
1524 if (!hasOwnProp(this, '_weekdaysRegex')) {
1525 this._weekdaysRegex = defaultWeekdaysRegex;
1526 }
1527 return this._weekdaysStrictRegex && isStrict ?
1528 this._weekdaysStrictRegex : this._weekdaysRegex;
1529 }
1530 }
1531
1532 var defaultWeekdaysShortRegex = matchWord;
1533 function weekdaysShortRegex (isStrict) {
1534 if (this._weekdaysParseExact) {
1535 if (!hasOwnProp(this, '_weekdaysRegex')) {
1536 computeWeekdaysParse.call(this);
1537 }
1538 if (isStrict) {
1539 return this._weekdaysShortStrictRegex;
1540 } else {
1541 return this._weekdaysShortRegex;
1542 }
1543 } else {
1544 if (!hasOwnProp(this, '_weekdaysShortRegex')) {
1545 this._weekdaysShortRegex = defaultWeekdaysShortRegex;
1546 }
1547 return this._weekdaysShortStrictRegex && isStrict ?
1548 this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
1549 }
1550 }
1551
1552 var defaultWeekdaysMinRegex = matchWord;
1553 function weekdaysMinRegex (isStrict) {
1554 if (this._weekdaysParseExact) {
1555 if (!hasOwnProp(this, '_weekdaysRegex')) {
1556 computeWeekdaysParse.call(this);
1557 }
1558 if (isStrict) {
1559 return this._weekdaysMinStrictRegex;
1560 } else {
1561 return this._weekdaysMinRegex;
1562 }
1563 } else {
1564 if (!hasOwnProp(this, '_weekdaysMinRegex')) {
1565 this._weekdaysMinRegex = defaultWeekdaysMinRegex;
1566 }
1567 return this._weekdaysMinStrictRegex && isStrict ?
1568 this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
1569 }
1570 }
1571
1572
1573 function computeWeekdaysParse () {
1574 function cmpLenRev(a, b) {
1575 return b.length - a.length;
1576 }
1577
1578 var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],
1579 i, mom, minp, shortp, longp;
1580 for (i = 0; i < 7; i++) {
1581 // make the regex if we don't have it already
1582 mom = createUTC([2000, 1]).day(i);
1583 minp = this.weekdaysMin(mom, '');
1584 shortp = this.weekdaysShort(mom, '');
1585 longp = this.weekdays(mom, '');
1586 minPieces.push(minp);
1587 shortPieces.push(shortp);
1588 longPieces.push(longp);
1589 mixedPieces.push(minp);
1590 mixedPieces.push(shortp);
1591 mixedPieces.push(longp);
1592 }
1593 // Sorting makes sure if one weekday (or abbr) is a prefix of another it
1594 // will match the longer piece.
1595 minPieces.sort(cmpLenRev);
1596 shortPieces.sort(cmpLenRev);
1597 longPieces.sort(cmpLenRev);
1598 mixedPieces.sort(cmpLenRev);
1599 for (i = 0; i < 7; i++) {
1600 shortPieces[i] = regexEscape(shortPieces[i]);
1601 longPieces[i] = regexEscape(longPieces[i]);
1602 mixedPieces[i] = regexEscape(mixedPieces[i]);
1603 }
1604
1605 this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1606 this._weekdaysShortRegex = this._weekdaysRegex;
1607 this._weekdaysMinRegex = this._weekdaysRegex;
1608
1609 this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
1610 this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
1611 this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');
1612 }
1613
1614 // FORMATTING
1615
1616 function hFormat() {
1617 return this.hours() % 12 || 12;
1618 }
1619
1620 function kFormat() {
1621 return this.hours() || 24;
1622 }
1623
1624 addFormatToken('H', ['HH', 2], 0, 'hour');
1625 addFormatToken('h', ['hh', 2], 0, hFormat);
1626 addFormatToken('k', ['kk', 2], 0, kFormat);
1627
1628 addFormatToken('hmm', 0, 0, function () {
1629 return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
1630 });
1631
1632 addFormatToken('hmmss', 0, 0, function () {
1633 return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +
1634 zeroFill(this.seconds(), 2);
1635 });
1636
1637 addFormatToken('Hmm', 0, 0, function () {
1638 return '' + this.hours() + zeroFill(this.minutes(), 2);
1639 });
1640
1641 addFormatToken('Hmmss', 0, 0, function () {
1642 return '' + this.hours() + zeroFill(this.minutes(), 2) +
1643 zeroFill(this.seconds(), 2);
1644 });
1645
1646 function meridiem (token, lowercase) {
1647 addFormatToken(token, 0, 0, function () {
1648 return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
1649 });
1650 }
1651
1652 meridiem('a', true);
1653 meridiem('A', false);
1654
1655 // ALIASES
1656
1657 addUnitAlias('hour', 'h');
1658
1659 // PRIORITY
1660 addUnitPriority('hour', 13);
1661
1662 // PARSING
1663
1664 function matchMeridiem (isStrict, locale) {
1665 return locale._meridiemParse;
1666 }
1667
1668 addRegexToken('a', matchMeridiem);
1669 addRegexToken('A', matchMeridiem);
1670 addRegexToken('H', match1to2);
1671 addRegexToken('h', match1to2);
1672 addRegexToken('HH', match1to2, match2);
1673 addRegexToken('hh', match1to2, match2);
1674
1675 addRegexToken('hmm', match3to4);
1676 addRegexToken('hmmss', match5to6);
1677 addRegexToken('Hmm', match3to4);
1678 addRegexToken('Hmmss', match5to6);
1679
1680 addParseToken(['H', 'HH'], HOUR);
1681 addParseToken(['a', 'A'], function (input, array, config) {
1682 config._isPm = config._locale.isPM(input);
1683 config._meridiem = input;
1684 });
1685 addParseToken(['h', 'hh'], function (input, array, config) {
1686 array[HOUR] = toInt(input);
1687 getParsingFlags(config).bigHour = true;
1688 });
1689 addParseToken('hmm', function (input, array, config) {
1690 var pos = input.length - 2;
1691 array[HOUR] = toInt(input.substr(0, pos));
1692 array[MINUTE] = toInt(input.substr(pos));
1693 getParsingFlags(config).bigHour = true;
1694 });
1695 addParseToken('hmmss', function (input, array, config) {
1696 var pos1 = input.length - 4;
1697 var pos2 = input.length - 2;
1698 array[HOUR] = toInt(input.substr(0, pos1));
1699 array[MINUTE] = toInt(input.substr(pos1, 2));
1700 array[SECOND] = toInt(input.substr(pos2));
1701 getParsingFlags(config).bigHour = true;
1702 });
1703 addParseToken('Hmm', function (input, array, config) {
1704 var pos = input.length - 2;
1705 array[HOUR] = toInt(input.substr(0, pos));
1706 array[MINUTE] = toInt(input.substr(pos));
1707 });
1708 addParseToken('Hmmss', function (input, array, config) {
1709 var pos1 = input.length - 4;
1710 var pos2 = input.length - 2;
1711 array[HOUR] = toInt(input.substr(0, pos1));
1712 array[MINUTE] = toInt(input.substr(pos1, 2));
1713 array[SECOND] = toInt(input.substr(pos2));
1714 });
1715
1716 // LOCALES
1717
1718 function localeIsPM (input) {
1719 // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
1720 // Using charAt should be more compatible.
1721 return ((input + '').toLowerCase().charAt(0) === 'p');
1722 }
1723
1724 var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
1725 function localeMeridiem (hours, minutes, isLower) {
1726 if (hours > 11) {
1727 return isLower ? 'pm' : 'PM';
1728 } else {
1729 return isLower ? 'am' : 'AM';
1730 }
1731 }
1732
1733
1734 // MOMENTS
1735
1736 // Setting the hour should keep the time, because the user explicitly
1737 // specified which hour he wants. So trying to maintain the same hour (in
1738 // a new timezone) makes sense. Adding/subtracting hours does not follow
1739 // this rule.
1740 var getSetHour = makeGetSet('Hours', true);
1741
1742 // months
1743 // week
1744 // weekdays
1745 // meridiem
1746 var baseConfig = {
1747 calendar: defaultCalendar,
1748 longDateFormat: defaultLongDateFormat,
1749 invalidDate: defaultInvalidDate,
1750 ordinal: defaultOrdinal,
1751 ordinalParse: defaultOrdinalParse,
1752 relativeTime: defaultRelativeTime,
1753
1754 months: defaultLocaleMonths,
1755 monthsShort: defaultLocaleMonthsShort,
1756
1757 week: defaultLocaleWeek,
1758
1759 weekdays: defaultLocaleWeekdays,
1760 weekdaysMin: defaultLocaleWeekdaysMin,
1761 weekdaysShort: defaultLocaleWeekdaysShort,
1762
1763 meridiemParse: defaultLocaleMeridiemParse
1764 };
1765
1766 // internal storage for locale config files
1767 var locales = {};
1768 var localeFamilies = {};
1769 var globalLocale;
1770
1771 function normalizeLocale(key) {
1772 return key ? key.toLowerCase().replace('_', '-') : key;
1773 }
1774
1775 // pick the locale from the array
1776 // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
1777 // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
1778 function chooseLocale(names) {
1779 var i = 0, j, next, locale, split;
1780
1781 while (i < names.length) {
1782 split = normalizeLocale(names[i]).split('-');
1783 j = split.length;
1784 next = normalizeLocale(names[i + 1]);
1785 next = next ? next.split('-') : null;
1786 while (j > 0) {
1787 locale = loadLocale(split.slice(0, j).join('-'));
1788 if (locale) {
1789 return locale;
1790 }
1791 if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
1792 //the next array item is better than a shallower substring of this one
1793 break;
1794 }
1795 j--;
1796 }
1797 i++;
1798 }
1799 return null;
1800 }
1801
1802 function loadLocale(name) {
1803 var oldLocale = null;
1804 // TODO: Find a better way to register and load all the locales in Node
1805 if (!locales[name] && (typeof module !== 'undefined') &&
1806 module && module.exports) {
1807 try {
1808 oldLocale = globalLocale._abbr;
1809 require('./locale/' + name);
1810 // because defineLocale currently also sets the global locale, we
1811 // want to undo that for lazy loaded locales
1812 getSetGlobalLocale(oldLocale);
1813 } catch (e) { }
1814 }
1815 return locales[name];
1816 }
1817
1818 // This function will load locale and then set the global locale. If
1819 // no arguments are passed in, it will simply return the current global
1820 // locale key.
1821 function getSetGlobalLocale (key, values) {
1822 var data;
1823 if (key) {
1824 if (isUndefined(values)) {
1825 data = getLocale(key);
1826 }
1827 else {
1828 data = defineLocale(key, values);
1829 }
1830
1831 if (data) {
1832 // moment.duration._locale = moment._locale = data;
1833 globalLocale = data;
1834 }
1835 }
1836
1837 return globalLocale._abbr;
1838 }
1839
1840 function defineLocale (name, config) {
1841 if (config !== null) {
1842 var parentConfig = baseConfig;
1843 config.abbr = name;
1844 if (locales[name] != null) {
1845 deprecateSimple('defineLocaleOverride',
1846 'use moment.updateLocale(localeName, config) to change ' +
1847 'an existing locale. moment.defineLocale(localeName, ' +
1848 'config) should only be used for creating a new locale ' +
1849 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');
1850 parentConfig = locales[name]._config;
1851 } else if (config.parentLocale != null) {
1852 if (locales[config.parentLocale] != null) {
1853 parentConfig = locales[config.parentLocale]._config;
1854 } else {
1855 if (!localeFamilies[config.parentLocale]) {
1856 localeFamilies[config.parentLocale] = [];
1857 }
1858 localeFamilies[config.parentLocale].push({
1859 name: name,
1860 config: config
1861 });
1862 return null;
1863 }
1864 }
1865 locales[name] = new Locale(mergeConfigs(parentConfig, config));
1866
1867 if (localeFamilies[name]) {
1868 localeFamilies[name].forEach(function (x) {
1869 defineLocale(x.name, x.config);
1870 });
1871 }
1872
1873 // backwards compat for now: also set the locale
1874 // make sure we set the locale AFTER all child locales have been
1875 // created, so we won't end up with the child locale set.
1876 getSetGlobalLocale(name);
1877
1878
1879 return locales[name];
1880 } else {
1881 // useful for testing
1882 delete locales[name];
1883 return null;
1884 }
1885 }
1886
1887 function updateLocale(name, config) {
1888 if (config != null) {
1889 var locale, parentConfig = baseConfig;
1890 // MERGE
1891 if (locales[name] != null) {
1892 parentConfig = locales[name]._config;
1893 }
1894 config = mergeConfigs(parentConfig, config);
1895 locale = new Locale(config);
1896 locale.parentLocale = locales[name];
1897 locales[name] = locale;
1898
1899 // backwards compat for now: also set the locale
1900 getSetGlobalLocale(name);
1901 } else {
1902 // pass null for config to unupdate, useful for tests
1903 if (locales[name] != null) {
1904 if (locales[name].parentLocale != null) {
1905 locales[name] = locales[name].parentLocale;
1906 } else if (locales[name] != null) {
1907 delete locales[name];
1908 }
1909 }
1910 }
1911 return locales[name];
1912 }
1913
1914 // returns locale data
1915 function getLocale (key) {
1916 var locale;
1917
1918 if (key && key._locale && key._locale._abbr) {
1919 key = key._locale._abbr;
1920 }
1921
1922 if (!key) {
1923 return globalLocale;
1924 }
1925
1926 if (!isArray(key)) {
1927 //short-circuit everything else
1928 locale = loadLocale(key);
1929 if (locale) {
1930 return locale;
1931 }
1932 key = [key];
1933 }
1934
1935 return chooseLocale(key);
1936 }
1937
1938 function listLocales() {
1939 return keys$1(locales);
1940 }
1941
1942 function checkOverflow (m) {
1943 var overflow;
1944 var a = m._a;
1945
1946 if (a && getParsingFlags(m).overflow === -2) {
1947 overflow =
1948 a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :
1949 a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
1950 a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
1951 a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :
1952 a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :
1953 a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
1954 -1;
1955
1956 if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
1957 overflow = DATE;
1958 }
1959 if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
1960 overflow = WEEK;
1961 }
1962 if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
1963 overflow = WEEKDAY;
1964 }
1965
1966 getParsingFlags(m).overflow = overflow;
1967 }
1968
1969 return m;
1970 }
1971
1972 // iso 8601 regex
1973 // 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)
1974 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)?)?$/;
1975 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)?)?$/;
1976
1977 var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/;
1978
1979 var isoDates = [
1980 ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
1981 ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
1982 ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
1983 ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
1984 ['YYYY-DDD', /\d{4}-\d{3}/],
1985 ['YYYY-MM', /\d{4}-\d\d/, false],
1986 ['YYYYYYMMDD', /[+-]\d{10}/],
1987 ['YYYYMMDD', /\d{8}/],
1988 // YYYYMM is NOT allowed by the standard
1989 ['GGGG[W]WWE', /\d{4}W\d{3}/],
1990 ['GGGG[W]WW', /\d{4}W\d{2}/, false],
1991 ['YYYYDDD', /\d{7}/]
1992 ];
1993
1994 // iso time formats and regexes
1995 var isoTimes = [
1996 ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
1997 ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
1998 ['HH:mm:ss', /\d\d:\d\d:\d\d/],
1999 ['HH:mm', /\d\d:\d\d/],
2000 ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
2001 ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
2002 ['HHmmss', /\d\d\d\d\d\d/],
2003 ['HHmm', /\d\d\d\d/],
2004 ['HH', /\d\d/]
2005 ];
2006
2007 var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
2008
2009 // date from iso format
2010 function configFromISO(config) {
2011 var i, l,
2012 string = config._i,
2013 match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
2014 allowTime, dateFormat, timeFormat, tzFormat;
2015
2016 if (match) {
2017 getParsingFlags(config).iso = true;
2018
2019 for (i = 0, l = isoDates.length; i < l; i++) {
2020 if (isoDates[i][1].exec(match[1])) {
2021 dateFormat = isoDates[i][0];
2022 allowTime = isoDates[i][2] !== false;
2023 break;
2024 }
2025 }
2026 if (dateFormat == null) {
2027 config._isValid = false;
2028 return;
2029 }
2030 if (match[3]) {
2031 for (i = 0, l = isoTimes.length; i < l; i++) {
2032 if (isoTimes[i][1].exec(match[3])) {
2033 // match[2] should be 'T' or space
2034 timeFormat = (match[2] || ' ') + isoTimes[i][0];
2035 break;
2036 }
2037 }
2038 if (timeFormat == null) {
2039 config._isValid = false;
2040 return;
2041 }
2042 }
2043 if (!allowTime && timeFormat != null) {
2044 config._isValid = false;
2045 return;
2046 }
2047 if (match[4]) {
2048 if (tzRegex.exec(match[4])) {
2049 tzFormat = 'Z';
2050 } else {
2051 config._isValid = false;
2052 return;
2053 }
2054 }
2055 config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
2056 configFromStringAndFormat(config);
2057 } else {
2058 config._isValid = false;
2059 }
2060 }
2061
2062 // date from iso format or fallback
2063 function configFromString(config) {
2064 var matched = aspNetJsonRegex.exec(config._i);
2065
2066 if (matched !== null) {
2067 config._d = new Date(+matched[1]);
2068 return;
2069 }
2070
2071 configFromISO(config);
2072 if (config._isValid === false) {
2073 delete config._isValid;
2074 hooks.createFromInputFallback(config);
2075 }
2076 }
2077
2078 hooks.createFromInputFallback = deprecate(
2079 'value provided is not in a recognized ISO format. moment construction falls back to js Date(), ' +
2080 'which is not reliable across all browsers and versions. Non ISO date formats are ' +
2081 'discouraged and will be removed in an upcoming major release. Please refer to ' +
2082 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
2083 function (config) {
2084 config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
2085 }
2086 );
2087
2088 // Pick the first defined of two or three arguments.
2089 function defaults(a, b, c) {
2090 if (a != null) {
2091 return a;
2092 }
2093 if (b != null) {
2094 return b;
2095 }
2096 return c;
2097 }
2098
2099 function currentDateArray(config) {
2100 // hooks is actually the exported moment object
2101 var nowValue = new Date(hooks.now());
2102 if (config._useUTC) {
2103 return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
2104 }
2105 return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
2106 }
2107
2108 // convert an array to a date.
2109 // the array should mirror the parameters below
2110 // note: all values past the year are optional and will default to the lowest possible value.
2111 // [year, month, day , hour, minute, second, millisecond]
2112 function configFromArray (config) {
2113 var i, date, input = [], currentDate, yearToUse;
2114
2115 if (config._d) {
2116 return;
2117 }
2118
2119 currentDate = currentDateArray(config);
2120
2121 //compute day of the year from weeks and weekdays
2122 if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
2123 dayOfYearFromWeekInfo(config);
2124 }
2125
2126 //if the day of the year is set, figure out what it is
2127 if (config._dayOfYear) {
2128 yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
2129
2130 if (config._dayOfYear > daysInYear(yearToUse)) {
2131 getParsingFlags(config)._overflowDayOfYear = true;
2132 }
2133
2134 date = createUTCDate(yearToUse, 0, config._dayOfYear);
2135 config._a[MONTH] = date.getUTCMonth();
2136 config._a[DATE] = date.getUTCDate();
2137 }
2138
2139 // Default to current date.
2140 // * if no year, month, day of month are given, default to today
2141 // * if day of month is given, default month and year
2142 // * if month is given, default only year
2143 // * if year is given, don't default anything
2144 for (i = 0; i < 3 && config._a[i] == null; ++i) {
2145 config._a[i] = input[i] = currentDate[i];
2146 }
2147
2148 // Zero out whatever was not defaulted, including time
2149 for (; i < 7; i++) {
2150 config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
2151 }
2152
2153 // Check for 24:00:00.000
2154 if (config._a[HOUR] === 24 &&
2155 config._a[MINUTE] === 0 &&
2156 config._a[SECOND] === 0 &&
2157 config._a[MILLISECOND] === 0) {
2158 config._nextDay = true;
2159 config._a[HOUR] = 0;
2160 }
2161
2162 config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
2163 // Apply timezone offset from input. The actual utcOffset can be changed
2164 // with parseZone.
2165 if (config._tzm != null) {
2166 config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2167 }
2168
2169 if (config._nextDay) {
2170 config._a[HOUR] = 24;
2171 }
2172 }
2173
2174 function dayOfYearFromWeekInfo(config) {
2175 var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
2176
2177 w = config._w;
2178 if (w.GG != null || w.W != null || w.E != null) {
2179 dow = 1;
2180 doy = 4;
2181
2182 // TODO: We need to take the current isoWeekYear, but that depends on
2183 // how we interpret now (local, utc, fixed offset). So create
2184 // a now version of current config (take local/utc/offset flags, and
2185 // create now).
2186 weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);
2187 week = defaults(w.W, 1);
2188 weekday = defaults(w.E, 1);
2189 if (weekday < 1 || weekday > 7) {
2190 weekdayOverflow = true;
2191 }
2192 } else {
2193 dow = config._locale._week.dow;
2194 doy = config._locale._week.doy;
2195
2196 var curWeek = weekOfYear(createLocal(), dow, doy);
2197
2198 weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
2199
2200 // Default to current week.
2201 week = defaults(w.w, curWeek.week);
2202
2203 if (w.d != null) {
2204 // weekday -- low day numbers are considered next week
2205 weekday = w.d;
2206 if (weekday < 0 || weekday > 6) {
2207 weekdayOverflow = true;
2208 }
2209 } else if (w.e != null) {
2210 // local weekday -- counting starts from begining of week
2211 weekday = w.e + dow;
2212 if (w.e < 0 || w.e > 6) {
2213 weekdayOverflow = true;
2214 }
2215 } else {
2216 // default to begining of week
2217 weekday = dow;
2218 }
2219 }
2220 if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
2221 getParsingFlags(config)._overflowWeeks = true;
2222 } else if (weekdayOverflow != null) {
2223 getParsingFlags(config)._overflowWeekday = true;
2224 } else {
2225 temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
2226 config._a[YEAR] = temp.year;
2227 config._dayOfYear = temp.dayOfYear;
2228 }
2229 }
2230
2231 // constant that refers to the ISO standard
2232 hooks.ISO_8601 = function () {};
2233
2234 // date from string and format string
2235 function configFromStringAndFormat(config) {
2236 // TODO: Move this to another part of the creation flow to prevent circular deps
2237 if (config._f === hooks.ISO_8601) {
2238 configFromISO(config);
2239 return;
2240 }
2241
2242 config._a = [];
2243 getParsingFlags(config).empty = true;
2244
2245 // This array is used to make a Date, either with `new Date` or `Date.UTC`
2246 var string = '' + config._i,
2247 i, parsedInput, tokens, token, skipped,
2248 stringLength = string.length,
2249 totalParsedInputLength = 0;
2250
2251 tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
2252
2253 for (i = 0; i < tokens.length; i++) {
2254 token = tokens[i];
2255 parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
2256 // console.log('token', token, 'parsedInput', parsedInput,
2257 // 'regex', getParseRegexForToken(token, config));
2258 if (parsedInput) {
2259 skipped = string.substr(0, string.indexOf(parsedInput));
2260 if (skipped.length > 0) {
2261 getParsingFlags(config).unusedInput.push(skipped);
2262 }
2263 string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
2264 totalParsedInputLength += parsedInput.length;
2265 }
2266 // don't parse if it's not a known token
2267 if (formatTokenFunctions[token]) {
2268 if (parsedInput) {
2269 getParsingFlags(config).empty = false;
2270 }
2271 else {
2272 getParsingFlags(config).unusedTokens.push(token);
2273 }
2274 addTimeToArrayFromToken(token, parsedInput, config);
2275 }
2276 else if (config._strict && !parsedInput) {
2277 getParsingFlags(config).unusedTokens.push(token);
2278 }
2279 }
2280
2281 // add remaining unparsed input length to the string
2282 getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
2283 if (string.length > 0) {
2284 getParsingFlags(config).unusedInput.push(string);
2285 }
2286
2287 // clear _12h flag if hour is <= 12
2288 if (config._a[HOUR] <= 12 &&
2289 getParsingFlags(config).bigHour === true &&
2290 config._a[HOUR] > 0) {
2291 getParsingFlags(config).bigHour = undefined;
2292 }
2293
2294 getParsingFlags(config).parsedDateParts = config._a.slice(0);
2295 getParsingFlags(config).meridiem = config._meridiem;
2296 // handle meridiem
2297 config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
2298
2299 configFromArray(config);
2300 checkOverflow(config);
2301 }
2302
2303
2304 function meridiemFixWrap (locale, hour, meridiem) {
2305 var isPm;
2306
2307 if (meridiem == null) {
2308 // nothing to do
2309 return hour;
2310 }
2311 if (locale.meridiemHour != null) {
2312 return locale.meridiemHour(hour, meridiem);
2313 } else if (locale.isPM != null) {
2314 // Fallback
2315 isPm = locale.isPM(meridiem);
2316 if (isPm && hour < 12) {
2317 hour += 12;
2318 }
2319 if (!isPm && hour === 12) {
2320 hour = 0;
2321 }
2322 return hour;
2323 } else {
2324 // this is not supposed to happen
2325 return hour;
2326 }
2327 }
2328
2329 // date from string and array of format strings
2330 function configFromStringAndArray(config) {
2331 var tempConfig,
2332 bestMoment,
2333
2334 scoreToBeat,
2335 i,
2336 currentScore;
2337
2338 if (config._f.length === 0) {
2339 getParsingFlags(config).invalidFormat = true;
2340 config._d = new Date(NaN);
2341 return;
2342 }
2343
2344 for (i = 0; i < config._f.length; i++) {
2345 currentScore = 0;
2346 tempConfig = copyConfig({}, config);
2347 if (config._useUTC != null) {
2348 tempConfig._useUTC = config._useUTC;
2349 }
2350 tempConfig._f = config._f[i];
2351 configFromStringAndFormat(tempConfig);
2352
2353 if (!isValid(tempConfig)) {
2354 continue;
2355 }
2356
2357 // if there is any input that was not parsed add a penalty for that format
2358 currentScore += getParsingFlags(tempConfig).charsLeftOver;
2359
2360 //or tokens
2361 currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
2362
2363 getParsingFlags(tempConfig).score = currentScore;
2364
2365 if (scoreToBeat == null || currentScore < scoreToBeat) {
2366 scoreToBeat = currentScore;
2367 bestMoment = tempConfig;
2368 }
2369 }
2370
2371 extend(config, bestMoment || tempConfig);
2372 }
2373
2374 function configFromObject(config) {
2375 if (config._d) {
2376 return;
2377 }
2378
2379 var i = normalizeObjectUnits(config._i);
2380 config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {
2381 return obj && parseInt(obj, 10);
2382 });
2383
2384 configFromArray(config);
2385 }
2386
2387 function createFromConfig (config) {
2388 var res = new Moment(checkOverflow(prepareConfig(config)));
2389 if (res._nextDay) {
2390 // Adding is smart enough around DST
2391 res.add(1, 'd');
2392 res._nextDay = undefined;
2393 }
2394
2395 return res;
2396 }
2397
2398 function prepareConfig (config) {
2399 var input = config._i,
2400 format = config._f;
2401
2402 config._locale = config._locale || getLocale(config._l);
2403
2404 if (input === null || (format === undefined && input === '')) {
2405 return createInvalid({nullInput: true});
2406 }
2407
2408 if (typeof input === 'string') {
2409 config._i = input = config._locale.preparse(input);
2410 }
2411
2412 if (isMoment(input)) {
2413 return new Moment(checkOverflow(input));
2414 } else if (isDate(input)) {
2415 config._d = input;
2416 } else if (isArray(format)) {
2417 configFromStringAndArray(config);
2418 } else if (format) {
2419 configFromStringAndFormat(config);
2420 } else {
2421 configFromInput(config);
2422 }
2423
2424 if (!isValid(config)) {
2425 config._d = null;
2426 }
2427
2428 return config;
2429 }
2430
2431 function configFromInput(config) {
2432 var input = config._i;
2433 if (input === undefined) {
2434 config._d = new Date(hooks.now());
2435 } else if (isDate(input)) {
2436 config._d = new Date(input.valueOf());
2437 } else if (typeof input === 'string') {
2438 configFromString(config);
2439 } else if (isArray(input)) {
2440 config._a = map(input.slice(0), function (obj) {
2441 return parseInt(obj, 10);
2442 });
2443 configFromArray(config);
2444 } else if (typeof(input) === 'object') {
2445 configFromObject(config);
2446 } else if (isNumber(input)) {
2447 // from milliseconds
2448 config._d = new Date(input);
2449 } else {
2450 hooks.createFromInputFallback(config);
2451 }
2452 }
2453
2454 function createLocalOrUTC (input, format, locale, strict, isUTC) {
2455 var c = {};
2456
2457 if (locale === true || locale === false) {
2458 strict = locale;
2459 locale = undefined;
2460 }
2461
2462 if ((isObject(input) && isObjectEmpty(input)) ||
2463 (isArray(input) && input.length === 0)) {
2464 input = undefined;
2465 }
2466 // object construction must be done this way.
2467 // https://github.com/moment/moment/issues/1423
2468 c._isAMomentObject = true;
2469 c._useUTC = c._isUTC = isUTC;
2470 c._l = locale;
2471 c._i = input;
2472 c._f = format;
2473 c._strict = strict;
2474
2475 return createFromConfig(c);
2476 }
2477
2478 function createLocal (input, format, locale, strict) {
2479 return createLocalOrUTC(input, format, locale, strict, false);
2480 }
2481
2482 var prototypeMin = deprecate(
2483 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
2484 function () {
2485 var other = createLocal.apply(null, arguments);
2486 if (this.isValid() && other.isValid()) {
2487 return other < this ? this : other;
2488 } else {
2489 return createInvalid();
2490 }
2491 }
2492 );
2493
2494 var prototypeMax = deprecate(
2495 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
2496 function () {
2497 var other = createLocal.apply(null, arguments);
2498 if (this.isValid() && other.isValid()) {
2499 return other > this ? this : other;
2500 } else {
2501 return createInvalid();
2502 }
2503 }
2504 );
2505
2506 // Pick a moment m from moments so that m[fn](other) is true for all
2507 // other. This relies on the function fn to be transitive.
2508 //
2509 // moments should either be an array of moment objects or an array, whose
2510 // first element is an array of moment objects.
2511 function pickBy(fn, moments) {
2512 var res, i;
2513 if (moments.length === 1 && isArray(moments[0])) {
2514 moments = moments[0];
2515 }
2516 if (!moments.length) {
2517 return createLocal();
2518 }
2519 res = moments[0];
2520 for (i = 1; i < moments.length; ++i) {
2521 if (!moments[i].isValid() || moments[i][fn](res)) {
2522 res = moments[i];
2523 }
2524 }
2525 return res;
2526 }
2527
2528 // TODO: Use [].sort instead?
2529 function min () {
2530 var args = [].slice.call(arguments, 0);
2531
2532 return pickBy('isBefore', args);
2533 }
2534
2535 function max () {
2536 var args = [].slice.call(arguments, 0);
2537
2538 return pickBy('isAfter', args);
2539 }
2540
2541 var now = function () {
2542 return Date.now ? Date.now() : +(new Date());
2543 };
2544
2545 function Duration (duration) {
2546 var normalizedInput = normalizeObjectUnits(duration),
2547 years = normalizedInput.year || 0,
2548 quarters = normalizedInput.quarter || 0,
2549 months = normalizedInput.month || 0,
2550 weeks = normalizedInput.week || 0,
2551 days = normalizedInput.day || 0,
2552 hours = normalizedInput.hour || 0,
2553 minutes = normalizedInput.minute || 0,
2554 seconds = normalizedInput.second || 0,
2555 milliseconds = normalizedInput.millisecond || 0;
2556
2557 // representation for dateAddRemove
2558 this._milliseconds = +milliseconds +
2559 seconds * 1e3 + // 1000
2560 minutes * 6e4 + // 1000 * 60
2561 hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
2562 // Because of dateAddRemove treats 24 hours as different from a
2563 // day when working around DST, we need to store them separately
2564 this._days = +days +
2565 weeks * 7;
2566 // It is impossible translate months into days without knowing
2567 // which months you are are talking about, so we have to store
2568 // it separately.
2569 this._months = +months +
2570 quarters * 3 +
2571 years * 12;
2572
2573 this._data = {};
2574
2575 this._locale = getLocale();
2576
2577 this._bubble();
2578 }
2579
2580 function isDuration (obj) {
2581 return obj instanceof Duration;
2582 }
2583
2584 function absRound (number) {
2585 if (number < 0) {
2586 return Math.round(-1 * number) * -1;
2587 } else {
2588 return Math.round(number);
2589 }
2590 }
2591
2592 // FORMATTING
2593
2594 function offset (token, separator) {
2595 addFormatToken(token, 0, 0, function () {
2596 var offset = this.utcOffset();
2597 var sign = '+';
2598 if (offset < 0) {
2599 offset = -offset;
2600 sign = '-';
2601 }
2602 return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
2603 });
2604 }
2605
2606 offset('Z', ':');
2607 offset('ZZ', '');
2608
2609 // PARSING
2610
2611 addRegexToken('Z', matchShortOffset);
2612 addRegexToken('ZZ', matchShortOffset);
2613 addParseToken(['Z', 'ZZ'], function (input, array, config) {
2614 config._useUTC = true;
2615 config._tzm = offsetFromString(matchShortOffset, input);
2616 });
2617
2618 // HELPERS
2619
2620 // timezone chunker
2621 // '+10:00' > ['10', '00']
2622 // '-1530' > ['-15', '30']
2623 var chunkOffset = /([\+\-]|\d\d)/gi;
2624
2625 function offsetFromString(matcher, string) {
2626 var matches = (string || '').match(matcher);
2627
2628 if (matches === null) {
2629 return null;
2630 }
2631
2632 var chunk = matches[matches.length - 1] || [];
2633 var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
2634 var minutes = +(parts[1] * 60) + toInt(parts[2]);
2635
2636 return minutes === 0 ?
2637 0 :
2638 parts[0] === '+' ? minutes : -minutes;
2639 }
2640
2641 // Return a moment from input, that is local/utc/zone equivalent to model.
2642 function cloneWithOffset(input, model) {
2643 var res, diff;
2644 if (model._isUTC) {
2645 res = model.clone();
2646 diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();
2647 // Use low-level api, because this fn is low-level api.
2648 res._d.setTime(res._d.valueOf() + diff);
2649 hooks.updateOffset(res, false);
2650 return res;
2651 } else {
2652 return createLocal(input).local();
2653 }
2654 }
2655
2656 function getDateOffset (m) {
2657 // On Firefox.24 Date#getTimezoneOffset returns a floating point.
2658 // https://github.com/moment/moment/pull/1871
2659 return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
2660 }
2661
2662 // HOOKS
2663
2664 // This function will be called whenever a moment is mutated.
2665 // It is intended to keep the offset in sync with the timezone.
2666 hooks.updateOffset = function () {};
2667
2668 // MOMENTS
2669
2670 // keepLocalTime = true means only change the timezone, without
2671 // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
2672 // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
2673 // +0200, so we adjust the time as needed, to be valid.
2674 //
2675 // Keeping the time actually adds/subtracts (one hour)
2676 // from the actual represented time. That is why we call updateOffset
2677 // a second time. In case it wants us to change the offset again
2678 // _changeInProgress == true case, then we have to adjust, because
2679 // there is no such time in the given timezone.
2680 function getSetOffset (input, keepLocalTime) {
2681 var offset = this._offset || 0,
2682 localAdjust;
2683 if (!this.isValid()) {
2684 return input != null ? this : NaN;
2685 }
2686 if (input != null) {
2687 if (typeof input === 'string') {
2688 input = offsetFromString(matchShortOffset, input);
2689 if (input === null) {
2690 return this;
2691 }
2692 } else if (Math.abs(input) < 16) {
2693 input = input * 60;
2694 }
2695 if (!this._isUTC && keepLocalTime) {
2696 localAdjust = getDateOffset(this);
2697 }
2698 this._offset = input;
2699 this._isUTC = true;
2700 if (localAdjust != null) {
2701 this.add(localAdjust, 'm');
2702 }
2703 if (offset !== input) {
2704 if (!keepLocalTime || this._changeInProgress) {
2705 addSubtract(this, createDuration(input - offset, 'm'), 1, false);
2706 } else if (!this._changeInProgress) {
2707 this._changeInProgress = true;
2708 hooks.updateOffset(this, true);
2709 this._changeInProgress = null;
2710 }
2711 }
2712 return this;
2713 } else {
2714 return this._isUTC ? offset : getDateOffset(this);
2715 }
2716 }
2717
2718 function getSetZone (input, keepLocalTime) {
2719 if (input != null) {
2720 if (typeof input !== 'string') {
2721 input = -input;
2722 }
2723
2724 this.utcOffset(input, keepLocalTime);
2725
2726 return this;
2727 } else {
2728 return -this.utcOffset();
2729 }
2730 }
2731
2732 function setOffsetToUTC (keepLocalTime) {
2733 return this.utcOffset(0, keepLocalTime);
2734 }
2735
2736 function setOffsetToLocal (keepLocalTime) {
2737 if (this._isUTC) {
2738 this.utcOffset(0, keepLocalTime);
2739 this._isUTC = false;
2740
2741 if (keepLocalTime) {
2742 this.subtract(getDateOffset(this), 'm');
2743 }
2744 }
2745 return this;
2746 }
2747
2748 function setOffsetToParsedOffset () {
2749 if (this._tzm != null) {
2750 this.utcOffset(this._tzm);
2751 } else if (typeof this._i === 'string') {
2752 var tZone = offsetFromString(matchOffset, this._i);
2753 if (tZone != null) {
2754 this.utcOffset(tZone);
2755 }
2756 else {
2757 this.utcOffset(0, true);
2758 }
2759 }
2760 return this;
2761 }
2762
2763 function hasAlignedHourOffset (input) {
2764 if (!this.isValid()) {
2765 return false;
2766 }
2767 input = input ? createLocal(input).utcOffset() : 0;
2768
2769 return (this.utcOffset() - input) % 60 === 0;
2770 }
2771
2772 function isDaylightSavingTime () {
2773 return (
2774 this.utcOffset() > this.clone().month(0).utcOffset() ||
2775 this.utcOffset() > this.clone().month(5).utcOffset()
2776 );
2777 }
2778
2779 function isDaylightSavingTimeShifted () {
2780 if (!isUndefined(this._isDSTShifted)) {
2781 return this._isDSTShifted;
2782 }
2783
2784 var c = {};
2785
2786 copyConfig(c, this);
2787 c = prepareConfig(c);
2788
2789 if (c._a) {
2790 var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
2791 this._isDSTShifted = this.isValid() &&
2792 compareArrays(c._a, other.toArray()) > 0;
2793 } else {
2794 this._isDSTShifted = false;
2795 }
2796
2797 return this._isDSTShifted;
2798 }
2799
2800 function isLocal () {
2801 return this.isValid() ? !this._isUTC : false;
2802 }
2803
2804 function isUtcOffset () {
2805 return this.isValid() ? this._isUTC : false;
2806 }
2807
2808 function isUtc () {
2809 return this.isValid() ? this._isUTC && this._offset === 0 : false;
2810 }
2811
2812 // ASP.NET json date format regex
2813 var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/;
2814
2815 // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
2816 // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
2817 // and further modified to allow for strings containing both week and day
2818 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)?)?$/;
2819
2820 function createDuration (input, key) {
2821 var duration = input,
2822 // matching against regexp is expensive, do it on demand
2823 match = null,
2824 sign,
2825 ret,
2826 diffRes;
2827
2828 if (isDuration(input)) {
2829 duration = {
2830 ms : input._milliseconds,
2831 d : input._days,
2832 M : input._months
2833 };
2834 } else if (isNumber(input)) {
2835 duration = {};
2836 if (key) {
2837 duration[key] = input;
2838 } else {
2839 duration.milliseconds = input;
2840 }
2841 } else if (!!(match = aspNetRegex.exec(input))) {
2842 sign = (match[1] === '-') ? -1 : 1;
2843 duration = {
2844 y : 0,
2845 d : toInt(match[DATE]) * sign,
2846 h : toInt(match[HOUR]) * sign,
2847 m : toInt(match[MINUTE]) * sign,
2848 s : toInt(match[SECOND]) * sign,
2849 ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match
2850 };
2851 } else if (!!(match = isoRegex.exec(input))) {
2852 sign = (match[1] === '-') ? -1 : 1;
2853 duration = {
2854 y : parseIso(match[2], sign),
2855 M : parseIso(match[3], sign),
2856 w : parseIso(match[4], sign),
2857 d : parseIso(match[5], sign),
2858 h : parseIso(match[6], sign),
2859 m : parseIso(match[7], sign),
2860 s : parseIso(match[8], sign)
2861 };
2862 } else if (duration == null) {// checks for null or undefined
2863 duration = {};
2864 } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
2865 diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));
2866
2867 duration = {};
2868 duration.ms = diffRes.milliseconds;
2869 duration.M = diffRes.months;
2870 }
2871
2872 ret = new Duration(duration);
2873
2874 if (isDuration(input) && hasOwnProp(input, '_locale')) {
2875 ret._locale = input._locale;
2876 }
2877
2878 return ret;
2879 }
2880
2881 createDuration.fn = Duration.prototype;
2882
2883 function parseIso (inp, sign) {
2884 // We'd normally use ~~inp for this, but unfortunately it also
2885 // converts floats to ints.
2886 // inp may be undefined, so careful calling replace on it.
2887 var res = inp && parseFloat(inp.replace(',', '.'));
2888 // apply sign while we're at it
2889 return (isNaN(res) ? 0 : res) * sign;
2890 }
2891
2892 function positiveMomentsDifference(base, other) {
2893 var res = {milliseconds: 0, months: 0};
2894
2895 res.months = other.month() - base.month() +
2896 (other.year() - base.year()) * 12;
2897 if (base.clone().add(res.months, 'M').isAfter(other)) {
2898 --res.months;
2899 }
2900
2901 res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
2902
2903 return res;
2904 }
2905
2906 function momentsDifference(base, other) {
2907 var res;
2908 if (!(base.isValid() && other.isValid())) {
2909 return {milliseconds: 0, months: 0};
2910 }
2911
2912 other = cloneWithOffset(other, base);
2913 if (base.isBefore(other)) {
2914 res = positiveMomentsDifference(base, other);
2915 } else {
2916 res = positiveMomentsDifference(other, base);
2917 res.milliseconds = -res.milliseconds;
2918 res.months = -res.months;
2919 }
2920
2921 return res;
2922 }
2923
2924 // TODO: remove 'name' arg after deprecation is removed
2925 function createAdder(direction, name) {
2926 return function (val, period) {
2927 var dur, tmp;
2928 //invert the arguments, but complain about it
2929 if (period !== null && !isNaN(+period)) {
2930 deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +
2931 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');
2932 tmp = val; val = period; period = tmp;
2933 }
2934
2935 val = typeof val === 'string' ? +val : val;
2936 dur = createDuration(val, period);
2937 addSubtract(this, dur, direction);
2938 return this;
2939 };
2940 }
2941
2942 function addSubtract (mom, duration, isAdding, updateOffset) {
2943 var milliseconds = duration._milliseconds,
2944 days = absRound(duration._days),
2945 months = absRound(duration._months);
2946
2947 if (!mom.isValid()) {
2948 // No op
2949 return;
2950 }
2951
2952 updateOffset = updateOffset == null ? true : updateOffset;
2953
2954 if (milliseconds) {
2955 mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
2956 }
2957 if (days) {
2958 set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
2959 }
2960 if (months) {
2961 setMonth(mom, get(mom, 'Month') + months * isAdding);
2962 }
2963 if (updateOffset) {
2964 hooks.updateOffset(mom, days || months);
2965 }
2966 }
2967
2968 var add = createAdder(1, 'add');
2969 var subtract = createAdder(-1, 'subtract');
2970
2971 function getCalendarFormat(myMoment, now) {
2972 var diff = myMoment.diff(now, 'days', true);
2973 return diff < -6 ? 'sameElse' :
2974 diff < -1 ? 'lastWeek' :
2975 diff < 0 ? 'lastDay' :
2976 diff < 1 ? 'sameDay' :
2977 diff < 2 ? 'nextDay' :
2978 diff < 7 ? 'nextWeek' : 'sameElse';
2979 }
2980
2981 function calendar$1 (time, formats) {
2982 // We want to compare the start of today, vs this.
2983 // Getting start-of-today depends on whether we're local/utc/offset or not.
2984 var now = time || createLocal(),
2985 sod = cloneWithOffset(now, this).startOf('day'),
2986 format = hooks.calendarFormat(this, sod) || 'sameElse';
2987
2988 var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);
2989
2990 return this.format(output || this.localeData().calendar(format, this, createLocal(now)));
2991 }
2992
2993 function clone () {
2994 return new Moment(this);
2995 }
2996
2997 function isAfter (input, units) {
2998 var localInput = isMoment(input) ? input : createLocal(input);
2999 if (!(this.isValid() && localInput.isValid())) {
3000 return false;
3001 }
3002 units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
3003 if (units === 'millisecond') {
3004 return this.valueOf() > localInput.valueOf();
3005 } else {
3006 return localInput.valueOf() < this.clone().startOf(units).valueOf();
3007 }
3008 }
3009
3010 function isBefore (input, units) {
3011 var localInput = isMoment(input) ? input : createLocal(input);
3012 if (!(this.isValid() && localInput.isValid())) {
3013 return false;
3014 }
3015 units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
3016 if (units === 'millisecond') {
3017 return this.valueOf() < localInput.valueOf();
3018 } else {
3019 return this.clone().endOf(units).valueOf() < localInput.valueOf();
3020 }
3021 }
3022
3023 function isBetween (from, to, units, inclusivity) {
3024 inclusivity = inclusivity || '()';
3025 return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&
3026 (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));
3027 }
3028
3029 function isSame (input, units) {
3030 var localInput = isMoment(input) ? input : createLocal(input),
3031 inputMs;
3032 if (!(this.isValid() && localInput.isValid())) {
3033 return false;
3034 }
3035 units = normalizeUnits(units || 'millisecond');
3036 if (units === 'millisecond') {
3037 return this.valueOf() === localInput.valueOf();
3038 } else {
3039 inputMs = localInput.valueOf();
3040 return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
3041 }
3042 }
3043
3044 function isSameOrAfter (input, units) {
3045 return this.isSame(input, units) || this.isAfter(input,units);
3046 }
3047
3048 function isSameOrBefore (input, units) {
3049 return this.isSame(input, units) || this.isBefore(input,units);
3050 }
3051
3052 function diff (input, units, asFloat) {
3053 var that,
3054 zoneDelta,
3055 delta, output;
3056
3057 if (!this.isValid()) {
3058 return NaN;
3059 }
3060
3061 that = cloneWithOffset(input, this);
3062
3063 if (!that.isValid()) {
3064 return NaN;
3065 }
3066
3067 zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
3068
3069 units = normalizeUnits(units);
3070
3071 if (units === 'year' || units === 'month' || units === 'quarter') {
3072 output = monthDiff(this, that);
3073 if (units === 'quarter') {
3074 output = output / 3;
3075 } else if (units === 'year') {
3076 output = output / 12;
3077 }
3078 } else {
3079 delta = this - that;
3080 output = units === 'second' ? delta / 1e3 : // 1000
3081 units === 'minute' ? delta / 6e4 : // 1000 * 60
3082 units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60
3083 units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
3084 units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
3085 delta;
3086 }
3087 return asFloat ? output : absFloor(output);
3088 }
3089
3090 function monthDiff (a, b) {
3091 // difference in months
3092 var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
3093 // b is in (anchor - 1 month, anchor + 1 month)
3094 anchor = a.clone().add(wholeMonthDiff, 'months'),
3095 anchor2, adjust;
3096
3097 if (b - anchor < 0) {
3098 anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
3099 // linear across the month
3100 adjust = (b - anchor) / (anchor - anchor2);
3101 } else {
3102 anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
3103 // linear across the month
3104 adjust = (b - anchor) / (anchor2 - anchor);
3105 }
3106
3107 //check for negative zero, return zero if negative zero
3108 return -(wholeMonthDiff + adjust) || 0;
3109 }
3110
3111 hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
3112 hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
3113
3114 function toString () {
3115 return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
3116 }
3117
3118 function toISOString () {
3119 var m = this.clone().utc();
3120 if (0 < m.year() && m.year() <= 9999) {
3121 if (isFunction(Date.prototype.toISOString)) {
3122 // native implementation is ~50x faster, use it when we can
3123 return this.toDate().toISOString();
3124 } else {
3125 return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
3126 }
3127 } else {
3128 return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
3129 }
3130 }
3131
3132 /**
3133 * Return a human readable representation of a moment that can
3134 * also be evaluated to get a new moment which is the same
3135 *
3136 * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
3137 */
3138 function inspect () {
3139 if (!this.isValid()) {
3140 return 'moment.invalid(/* ' + this._i + ' */)';
3141 }
3142 var func = 'moment';
3143 var zone = '';
3144 if (!this.isLocal()) {
3145 func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
3146 zone = 'Z';
3147 }
3148 var prefix = '[' + func + '("]';
3149 var year = (0 < this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';
3150 var datetime = '-MM-DD[T]HH:mm:ss.SSS';
3151 var suffix = zone + '[")]';
3152
3153 return this.format(prefix + year + datetime + suffix);
3154 }
3155
3156 function format (inputString) {
3157 if (!inputString) {
3158 inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;
3159 }
3160 var output = formatMoment(this, inputString);
3161 return this.localeData().postformat(output);
3162 }
3163
3164 function from (time, withoutSuffix) {
3165 if (this.isValid() &&
3166 ((isMoment(time) && time.isValid()) ||
3167 createLocal(time).isValid())) {
3168 return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
3169 } else {
3170 return this.localeData().invalidDate();
3171 }
3172 }
3173
3174 function fromNow (withoutSuffix) {
3175 return this.from(createLocal(), withoutSuffix);
3176 }
3177
3178 function to (time, withoutSuffix) {
3179 if (this.isValid() &&
3180 ((isMoment(time) && time.isValid()) ||
3181 createLocal(time).isValid())) {
3182 return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
3183 } else {
3184 return this.localeData().invalidDate();
3185 }
3186 }
3187
3188 function toNow (withoutSuffix) {
3189 return this.to(createLocal(), withoutSuffix);
3190 }
3191
3192 // If passed a locale key, it will set the locale for this
3193 // instance. Otherwise, it will return the locale configuration
3194 // variables for this instance.
3195 function locale (key) {
3196 var newLocaleData;
3197
3198 if (key === undefined) {
3199 return this._locale._abbr;
3200 } else {
3201 newLocaleData = getLocale(key);
3202 if (newLocaleData != null) {
3203 this._locale = newLocaleData;
3204 }
3205 return this;
3206 }
3207 }
3208
3209 var lang = deprecate(
3210 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
3211 function (key) {
3212 if (key === undefined) {
3213 return this.localeData();
3214 } else {
3215 return this.locale(key);
3216 }
3217 }
3218 );
3219
3220 function localeData () {
3221 return this._locale;
3222 }
3223
3224 function startOf (units) {
3225 units = normalizeUnits(units);
3226 // the following switch intentionally omits break keywords
3227 // to utilize falling through the cases.
3228 switch (units) {
3229 case 'year':
3230 this.month(0);
3231 /* falls through */
3232 case 'quarter':
3233 case 'month':
3234 this.date(1);
3235 /* falls through */
3236 case 'week':
3237 case 'isoWeek':
3238 case 'day':
3239 case 'date':
3240 this.hours(0);
3241 /* falls through */
3242 case 'hour':
3243 this.minutes(0);
3244 /* falls through */
3245 case 'minute':
3246 this.seconds(0);
3247 /* falls through */
3248 case 'second':
3249 this.milliseconds(0);
3250 }
3251
3252 // weeks are a special case
3253 if (units === 'week') {
3254 this.weekday(0);
3255 }
3256 if (units === 'isoWeek') {
3257 this.isoWeekday(1);
3258 }
3259
3260 // quarters are also special
3261 if (units === 'quarter') {
3262 this.month(Math.floor(this.month() / 3) * 3);
3263 }
3264
3265 return this;
3266 }
3267
3268 function endOf (units) {
3269 units = normalizeUnits(units);
3270 if (units === undefined || units === 'millisecond') {
3271 return this;
3272 }
3273
3274 // 'date' is an alias for 'day', so it should be considered as such.
3275 if (units === 'date') {
3276 units = 'day';
3277 }
3278
3279 return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
3280 }
3281
3282 function valueOf () {
3283 return this._d.valueOf() - ((this._offset || 0) * 60000);
3284 }
3285
3286 function unix () {
3287 return Math.floor(this.valueOf() / 1000);
3288 }
3289
3290 function toDate () {
3291 return new Date(this.valueOf());
3292 }
3293
3294 function toArray () {
3295 var m = this;
3296 return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
3297 }
3298
3299 function toObject () {
3300 var m = this;
3301 return {
3302 years: m.year(),
3303 months: m.month(),
3304 date: m.date(),
3305 hours: m.hours(),
3306 minutes: m.minutes(),
3307 seconds: m.seconds(),
3308 milliseconds: m.milliseconds()
3309 };
3310 }
3311
3312 function toJSON () {
3313 // new Date(NaN).toJSON() === null
3314 return this.isValid() ? this.toISOString() : null;
3315 }
3316
3317 function isValid$1 () {
3318 return isValid(this);
3319 }
3320
3321 function parsingFlags () {
3322 return extend({}, getParsingFlags(this));
3323 }
3324
3325 function invalidAt () {
3326 return getParsingFlags(this).overflow;
3327 }
3328
3329 function creationData() {
3330 return {
3331 input: this._i,
3332 format: this._f,
3333 locale: this._locale,
3334 isUTC: this._isUTC,
3335 strict: this._strict
3336 };
3337 }
3338
3339 // FORMATTING
3340
3341 addFormatToken(0, ['gg', 2], 0, function () {
3342 return this.weekYear() % 100;
3343 });
3344
3345 addFormatToken(0, ['GG', 2], 0, function () {
3346 return this.isoWeekYear() % 100;
3347 });
3348
3349 function addWeekYearFormatToken (token, getter) {
3350 addFormatToken(0, [token, token.length], 0, getter);
3351 }
3352
3353 addWeekYearFormatToken('gggg', 'weekYear');
3354 addWeekYearFormatToken('ggggg', 'weekYear');
3355 addWeekYearFormatToken('GGGG', 'isoWeekYear');
3356 addWeekYearFormatToken('GGGGG', 'isoWeekYear');
3357
3358 // ALIASES
3359
3360 addUnitAlias('weekYear', 'gg');
3361 addUnitAlias('isoWeekYear', 'GG');
3362
3363 // PRIORITY
3364
3365 addUnitPriority('weekYear', 1);
3366 addUnitPriority('isoWeekYear', 1);
3367
3368
3369 // PARSING
3370
3371 addRegexToken('G', matchSigned);
3372 addRegexToken('g', matchSigned);
3373 addRegexToken('GG', match1to2, match2);
3374 addRegexToken('gg', match1to2, match2);
3375 addRegexToken('GGGG', match1to4, match4);
3376 addRegexToken('gggg', match1to4, match4);
3377 addRegexToken('GGGGG', match1to6, match6);
3378 addRegexToken('ggggg', match1to6, match6);
3379
3380 addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
3381 week[token.substr(0, 2)] = toInt(input);
3382 });
3383
3384 addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
3385 week[token] = hooks.parseTwoDigitYear(input);
3386 });
3387
3388 // MOMENTS
3389
3390 function getSetWeekYear (input) {
3391 return getSetWeekYearHelper.call(this,
3392 input,
3393 this.week(),
3394 this.weekday(),
3395 this.localeData()._week.dow,
3396 this.localeData()._week.doy);
3397 }
3398
3399 function getSetISOWeekYear (input) {
3400 return getSetWeekYearHelper.call(this,
3401 input, this.isoWeek(), this.isoWeekday(), 1, 4);
3402 }
3403
3404 function getISOWeeksInYear () {
3405 return weeksInYear(this.year(), 1, 4);
3406 }
3407
3408 function getWeeksInYear () {
3409 var weekInfo = this.localeData()._week;
3410 return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
3411 }
3412
3413 function getSetWeekYearHelper(input, week, weekday, dow, doy) {
3414 var weeksTarget;
3415 if (input == null) {
3416 return weekOfYear(this, dow, doy).year;
3417 } else {
3418 weeksTarget = weeksInYear(input, dow, doy);
3419 if (week > weeksTarget) {
3420 week = weeksTarget;
3421 }
3422 return setWeekAll.call(this, input, week, weekday, dow, doy);
3423 }
3424 }
3425
3426 function setWeekAll(weekYear, week, weekday, dow, doy) {
3427 var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
3428 date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
3429
3430 this.year(date.getUTCFullYear());
3431 this.month(date.getUTCMonth());
3432 this.date(date.getUTCDate());
3433 return this;
3434 }
3435
3436 // FORMATTING
3437
3438 addFormatToken('Q', 0, 'Qo', 'quarter');
3439
3440 // ALIASES
3441
3442 addUnitAlias('quarter', 'Q');
3443
3444 // PRIORITY
3445
3446 addUnitPriority('quarter', 7);
3447
3448 // PARSING
3449
3450 addRegexToken('Q', match1);
3451 addParseToken('Q', function (input, array) {
3452 array[MONTH] = (toInt(input) - 1) * 3;
3453 });
3454
3455 // MOMENTS
3456
3457 function getSetQuarter (input) {
3458 return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
3459 }
3460
3461 // FORMATTING
3462
3463 addFormatToken('D', ['DD', 2], 'Do', 'date');
3464
3465 // ALIASES
3466
3467 addUnitAlias('date', 'D');
3468
3469 // PRIOROITY
3470 addUnitPriority('date', 9);
3471
3472 // PARSING
3473
3474 addRegexToken('D', match1to2);
3475 addRegexToken('DD', match1to2, match2);
3476 addRegexToken('Do', function (isStrict, locale) {
3477 return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;
3478 });
3479
3480 addParseToken(['D', 'DD'], DATE);
3481 addParseToken('Do', function (input, array) {
3482 array[DATE] = toInt(input.match(match1to2)[0], 10);
3483 });
3484
3485 // MOMENTS
3486
3487 var getSetDayOfMonth = makeGetSet('Date', true);
3488
3489 // FORMATTING
3490
3491 addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
3492
3493 // ALIASES
3494
3495 addUnitAlias('dayOfYear', 'DDD');
3496
3497 // PRIORITY
3498 addUnitPriority('dayOfYear', 4);
3499
3500 // PARSING
3501
3502 addRegexToken('DDD', match1to3);
3503 addRegexToken('DDDD', match3);
3504 addParseToken(['DDD', 'DDDD'], function (input, array, config) {
3505 config._dayOfYear = toInt(input);
3506 });
3507
3508 // HELPERS
3509
3510 // MOMENTS
3511
3512 function getSetDayOfYear (input) {
3513 var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
3514 return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
3515 }
3516
3517 // FORMATTING
3518
3519 addFormatToken('m', ['mm', 2], 0, 'minute');
3520
3521 // ALIASES
3522
3523 addUnitAlias('minute', 'm');
3524
3525 // PRIORITY
3526
3527 addUnitPriority('minute', 14);
3528
3529 // PARSING
3530
3531 addRegexToken('m', match1to2);
3532 addRegexToken('mm', match1to2, match2);
3533 addParseToken(['m', 'mm'], MINUTE);
3534
3535 // MOMENTS
3536
3537 var getSetMinute = makeGetSet('Minutes', false);
3538
3539 // FORMATTING
3540
3541 addFormatToken('s', ['ss', 2], 0, 'second');
3542
3543 // ALIASES
3544
3545 addUnitAlias('second', 's');
3546
3547 // PRIORITY
3548
3549 addUnitPriority('second', 15);
3550
3551 // PARSING
3552
3553 addRegexToken('s', match1to2);
3554 addRegexToken('ss', match1to2, match2);
3555 addParseToken(['s', 'ss'], SECOND);
3556
3557 // MOMENTS
3558
3559 var getSetSecond = makeGetSet('Seconds', false);
3560
3561 // FORMATTING
3562
3563 addFormatToken('S', 0, 0, function () {
3564 return ~~(this.millisecond() / 100);
3565 });
3566
3567 addFormatToken(0, ['SS', 2], 0, function () {
3568 return ~~(this.millisecond() / 10);
3569 });
3570
3571 addFormatToken(0, ['SSS', 3], 0, 'millisecond');
3572 addFormatToken(0, ['SSSS', 4], 0, function () {
3573 return this.millisecond() * 10;
3574 });
3575 addFormatToken(0, ['SSSSS', 5], 0, function () {
3576 return this.millisecond() * 100;
3577 });
3578 addFormatToken(0, ['SSSSSS', 6], 0, function () {
3579 return this.millisecond() * 1000;
3580 });
3581 addFormatToken(0, ['SSSSSSS', 7], 0, function () {
3582 return this.millisecond() * 10000;
3583 });
3584 addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
3585 return this.millisecond() * 100000;
3586 });
3587 addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
3588 return this.millisecond() * 1000000;
3589 });
3590
3591
3592 // ALIASES
3593
3594 addUnitAlias('millisecond', 'ms');
3595
3596 // PRIORITY
3597
3598 addUnitPriority('millisecond', 16);
3599
3600 // PARSING
3601
3602 addRegexToken('S', match1to3, match1);
3603 addRegexToken('SS', match1to3, match2);
3604 addRegexToken('SSS', match1to3, match3);
3605
3606 var token;
3607 for (token = 'SSSS'; token.length <= 9; token += 'S') {
3608 addRegexToken(token, matchUnsigned);
3609 }
3610
3611 function parseMs(input, array) {
3612 array[MILLISECOND] = toInt(('0.' + input) * 1000);
3613 }
3614
3615 for (token = 'S'; token.length <= 9; token += 'S') {
3616 addParseToken(token, parseMs);
3617 }
3618 // MOMENTS
3619
3620 var getSetMillisecond = makeGetSet('Milliseconds', false);
3621
3622 // FORMATTING
3623
3624 addFormatToken('z', 0, 0, 'zoneAbbr');
3625 addFormatToken('zz', 0, 0, 'zoneName');
3626
3627 // MOMENTS
3628
3629 function getZoneAbbr () {
3630 return this._isUTC ? 'UTC' : '';
3631 }
3632
3633 function getZoneName () {
3634 return this._isUTC ? 'Coordinated Universal Time' : '';
3635 }
3636
3637 var proto = Moment.prototype;
3638
3639 proto.add = add;
3640 proto.calendar = calendar$1;
3641 proto.clone = clone;
3642 proto.diff = diff;
3643 proto.endOf = endOf;
3644 proto.format = format;
3645 proto.from = from;
3646 proto.fromNow = fromNow;
3647 proto.to = to;
3648 proto.toNow = toNow;
3649 proto.get = stringGet;
3650 proto.invalidAt = invalidAt;
3651 proto.isAfter = isAfter;
3652 proto.isBefore = isBefore;
3653 proto.isBetween = isBetween;
3654 proto.isSame = isSame;
3655 proto.isSameOrAfter = isSameOrAfter;
3656 proto.isSameOrBefore = isSameOrBefore;
3657 proto.isValid = isValid$1;
3658 proto.lang = lang;
3659 proto.locale = locale;
3660 proto.localeData = localeData;
3661 proto.max = prototypeMax;
3662 proto.min = prototypeMin;
3663 proto.parsingFlags = parsingFlags;
3664 proto.set = stringSet;
3665 proto.startOf = startOf;
3666 proto.subtract = subtract;
3667 proto.toArray = toArray;
3668 proto.toObject = toObject;
3669 proto.toDate = toDate;
3670 proto.toISOString = toISOString;
3671 proto.inspect = inspect;
3672 proto.toJSON = toJSON;
3673 proto.toString = toString;
3674 proto.unix = unix;
3675 proto.valueOf = valueOf;
3676 proto.creationData = creationData;
3677
3678 // Year
3679 proto.year = getSetYear;
3680 proto.isLeapYear = getIsLeapYear;
3681
3682 // Week Year
3683 proto.weekYear = getSetWeekYear;
3684 proto.isoWeekYear = getSetISOWeekYear;
3685
3686 // Quarter
3687 proto.quarter = proto.quarters = getSetQuarter;
3688
3689 // Month
3690 proto.month = getSetMonth;
3691 proto.daysInMonth = getDaysInMonth;
3692
3693 // Week
3694 proto.week = proto.weeks = getSetWeek;
3695 proto.isoWeek = proto.isoWeeks = getSetISOWeek;
3696 proto.weeksInYear = getWeeksInYear;
3697 proto.isoWeeksInYear = getISOWeeksInYear;
3698
3699 // Day
3700 proto.date = getSetDayOfMonth;
3701 proto.day = proto.days = getSetDayOfWeek;
3702 proto.weekday = getSetLocaleDayOfWeek;
3703 proto.isoWeekday = getSetISODayOfWeek;
3704 proto.dayOfYear = getSetDayOfYear;
3705
3706 // Hour
3707 proto.hour = proto.hours = getSetHour;
3708
3709 // Minute
3710 proto.minute = proto.minutes = getSetMinute;
3711
3712 // Second
3713 proto.second = proto.seconds = getSetSecond;
3714
3715 // Millisecond
3716 proto.millisecond = proto.milliseconds = getSetMillisecond;
3717
3718 // Offset
3719 proto.utcOffset = getSetOffset;
3720 proto.utc = setOffsetToUTC;
3721 proto.local = setOffsetToLocal;
3722 proto.parseZone = setOffsetToParsedOffset;
3723 proto.hasAlignedHourOffset = hasAlignedHourOffset;
3724 proto.isDST = isDaylightSavingTime;
3725 proto.isLocal = isLocal;
3726 proto.isUtcOffset = isUtcOffset;
3727 proto.isUtc = isUtc;
3728 proto.isUTC = isUtc;
3729
3730 // Timezone
3731 proto.zoneAbbr = getZoneAbbr;
3732 proto.zoneName = getZoneName;
3733
3734 // Deprecations
3735 proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
3736 proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
3737 proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);
3738 proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);
3739 proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);
3740
3741 function createUnix (input) {
3742 return createLocal(input * 1000);
3743 }
3744
3745 function createInZone () {
3746 return createLocal.apply(null, arguments).parseZone();
3747 }
3748
3749 function preParsePostFormat (string) {
3750 return string;
3751 }
3752
3753 var proto$1 = Locale.prototype;
3754
3755 proto$1.calendar = calendar;
3756 proto$1.longDateFormat = longDateFormat;
3757 proto$1.invalidDate = invalidDate;
3758 proto$1.ordinal = ordinal;
3759 proto$1.preparse = preParsePostFormat;
3760 proto$1.postformat = preParsePostFormat;
3761 proto$1.relativeTime = relativeTime;
3762 proto$1.pastFuture = pastFuture;
3763 proto$1.set = set;
3764
3765 // Month
3766 proto$1.months = localeMonths;
3767 proto$1.monthsShort = localeMonthsShort;
3768 proto$1.monthsParse = localeMonthsParse;
3769 proto$1.monthsRegex = monthsRegex;
3770 proto$1.monthsShortRegex = monthsShortRegex;
3771
3772 // Week
3773 proto$1.week = localeWeek;
3774 proto$1.firstDayOfYear = localeFirstDayOfYear;
3775 proto$1.firstDayOfWeek = localeFirstDayOfWeek;
3776
3777 // Day of Week
3778 proto$1.weekdays = localeWeekdays;
3779 proto$1.weekdaysMin = localeWeekdaysMin;
3780 proto$1.weekdaysShort = localeWeekdaysShort;
3781 proto$1.weekdaysParse = localeWeekdaysParse;
3782
3783 proto$1.weekdaysRegex = weekdaysRegex;
3784 proto$1.weekdaysShortRegex = weekdaysShortRegex;
3785 proto$1.weekdaysMinRegex = weekdaysMinRegex;
3786
3787 // Hours
3788 proto$1.isPM = localeIsPM;
3789 proto$1.meridiem = localeMeridiem;
3790
3791 function get$1 (format, index, field, setter) {
3792 var locale = getLocale();
3793 var utc = createUTC().set(setter, index);
3794 return locale[field](utc, format);
3795 }
3796
3797 function listMonthsImpl (format, index, field) {
3798 if (isNumber(format)) {
3799 index = format;
3800 format = undefined;
3801 }
3802
3803 format = format || '';
3804
3805 if (index != null) {
3806 return get$1(format, index, field, 'month');
3807 }
3808
3809 var i;
3810 var out = [];
3811 for (i = 0; i < 12; i++) {
3812 out[i] = get$1(format, i, field, 'month');
3813 }
3814 return out;
3815 }
3816
3817 // ()
3818 // (5)
3819 // (fmt, 5)
3820 // (fmt)
3821 // (true)
3822 // (true, 5)
3823 // (true, fmt, 5)
3824 // (true, fmt)
3825 function listWeekdaysImpl (localeSorted, format, index, field) {
3826 if (typeof localeSorted === 'boolean') {
3827 if (isNumber(format)) {
3828 index = format;
3829 format = undefined;
3830 }
3831
3832 format = format || '';
3833 } else {
3834 format = localeSorted;
3835 index = format;
3836 localeSorted = false;
3837
3838 if (isNumber(format)) {
3839 index = format;
3840 format = undefined;
3841 }
3842
3843 format = format || '';
3844 }
3845
3846 var locale = getLocale(),
3847 shift = localeSorted ? locale._week.dow : 0;
3848
3849 if (index != null) {
3850 return get$1(format, (index + shift) % 7, field, 'day');
3851 }
3852
3853 var i;
3854 var out = [];
3855 for (i = 0; i < 7; i++) {
3856 out[i] = get$1(format, (i + shift) % 7, field, 'day');
3857 }
3858 return out;
3859 }
3860
3861 function listMonths (format, index) {
3862 return listMonthsImpl(format, index, 'months');
3863 }
3864
3865 function listMonthsShort (format, index) {
3866 return listMonthsImpl(format, index, 'monthsShort');
3867 }
3868
3869 function listWeekdays (localeSorted, format, index) {
3870 return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
3871 }
3872
3873 function listWeekdaysShort (localeSorted, format, index) {
3874 return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
3875 }
3876
3877 function listWeekdaysMin (localeSorted, format, index) {
3878 return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
3879 }
3880
3881 getSetGlobalLocale('en', {
3882 ordinalParse: /\d{1,2}(th|st|nd|rd)/,
3883 ordinal : function (number) {
3884 var b = number % 10,
3885 output = (toInt(number % 100 / 10) === 1) ? 'th' :
3886 (b === 1) ? 'st' :
3887 (b === 2) ? 'nd' :
3888 (b === 3) ? 'rd' : 'th';
3889 return number + output;
3890 }
3891 });
3892
3893 // Side effect imports
3894 hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);
3895 hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);
3896
3897 var mathAbs = Math.abs;
3898
3899 function abs () {
3900 var data = this._data;
3901
3902 this._milliseconds = mathAbs(this._milliseconds);
3903 this._days = mathAbs(this._days);
3904 this._months = mathAbs(this._months);
3905
3906 data.milliseconds = mathAbs(data.milliseconds);
3907 data.seconds = mathAbs(data.seconds);
3908 data.minutes = mathAbs(data.minutes);
3909 data.hours = mathAbs(data.hours);
3910 data.months = mathAbs(data.months);
3911 data.years = mathAbs(data.years);
3912
3913 return this;
3914 }
3915
3916 function addSubtract$1 (duration, input, value, direction) {
3917 var other = createDuration(input, value);
3918
3919 duration._milliseconds += direction * other._milliseconds;
3920 duration._days += direction * other._days;
3921 duration._months += direction * other._months;
3922
3923 return duration._bubble();
3924 }
3925
3926 // supports only 2.0-style add(1, 's') or add(duration)
3927 function add$1 (input, value) {
3928 return addSubtract$1(this, input, value, 1);
3929 }
3930
3931 // supports only 2.0-style subtract(1, 's') or subtract(duration)
3932 function subtract$1 (input, value) {
3933 return addSubtract$1(this, input, value, -1);
3934 }
3935
3936 function absCeil (number) {
3937 if (number < 0) {
3938 return Math.floor(number);
3939 } else {
3940 return Math.ceil(number);
3941 }
3942 }
3943
3944 function bubble () {
3945 var milliseconds = this._milliseconds;
3946 var days = this._days;
3947 var months = this._months;
3948 var data = this._data;
3949 var seconds, minutes, hours, years, monthsFromDays;
3950
3951 // if we have a mix of positive and negative values, bubble down first
3952 // check: https://github.com/moment/moment/issues/2166
3953 if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
3954 (milliseconds <= 0 && days <= 0 && months <= 0))) {
3955 milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
3956 days = 0;
3957 months = 0;
3958 }
3959
3960 // The following code bubbles up values, see the tests for
3961 // examples of what that means.
3962 data.milliseconds = milliseconds % 1000;
3963
3964 seconds = absFloor(milliseconds / 1000);
3965 data.seconds = seconds % 60;
3966
3967 minutes = absFloor(seconds / 60);
3968 data.minutes = minutes % 60;
3969
3970 hours = absFloor(minutes / 60);
3971 data.hours = hours % 24;
3972
3973 days += absFloor(hours / 24);
3974
3975 // convert days to months
3976 monthsFromDays = absFloor(daysToMonths(days));
3977 months += monthsFromDays;
3978 days -= absCeil(monthsToDays(monthsFromDays));
3979
3980 // 12 months -> 1 year
3981 years = absFloor(months / 12);
3982 months %= 12;
3983
3984 data.days = days;
3985 data.months = months;
3986 data.years = years;
3987
3988 return this;
3989 }
3990
3991 function daysToMonths (days) {
3992 // 400 years have 146097 days (taking into account leap year rules)
3993 // 400 years have 12 months === 4800
3994 return days * 4800 / 146097;
3995 }
3996
3997 function monthsToDays (months) {
3998 // the reverse of daysToMonths
3999 return months * 146097 / 4800;
4000 }
4001
4002 function as (units) {
4003 var days;
4004 var months;
4005 var milliseconds = this._milliseconds;
4006
4007 units = normalizeUnits(units);
4008
4009 if (units === 'month' || units === 'year') {
4010 days = this._days + milliseconds / 864e5;
4011 months = this._months + daysToMonths(days);
4012 return units === 'month' ? months : months / 12;
4013 } else {
4014 // handle milliseconds separately because of floating point math errors (issue #1867)
4015 days = this._days + Math.round(monthsToDays(this._months));
4016 switch (units) {
4017 case 'week' : return days / 7 + milliseconds / 6048e5;
4018 case 'day' : return days + milliseconds / 864e5;
4019 case 'hour' : return days * 24 + milliseconds / 36e5;
4020 case 'minute' : return days * 1440 + milliseconds / 6e4;
4021 case 'second' : return days * 86400 + milliseconds / 1000;
4022 // Math.floor prevents floating point math errors here
4023 case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
4024 default: throw new Error('Unknown unit ' + units);
4025 }
4026 }
4027 }
4028
4029 // TODO: Use this.as('ms')?
4030 function valueOf$1 () {
4031 return (
4032 this._milliseconds +
4033 this._days * 864e5 +
4034 (this._months % 12) * 2592e6 +
4035 toInt(this._months / 12) * 31536e6
4036 );
4037 }
4038
4039 function makeAs (alias) {
4040 return function () {
4041 return this.as(alias);
4042 };
4043 }
4044
4045 var asMilliseconds = makeAs('ms');
4046 var asSeconds = makeAs('s');
4047 var asMinutes = makeAs('m');
4048 var asHours = makeAs('h');
4049 var asDays = makeAs('d');
4050 var asWeeks = makeAs('w');
4051 var asMonths = makeAs('M');
4052 var asYears = makeAs('y');
4053
4054 function get$2 (units) {
4055 units = normalizeUnits(units);
4056 return this[units + 's']();
4057 }
4058
4059 function makeGetter(name) {
4060 return function () {
4061 return this._data[name];
4062 };
4063 }
4064
4065 var milliseconds = makeGetter('milliseconds');
4066 var seconds = makeGetter('seconds');
4067 var minutes = makeGetter('minutes');
4068 var hours = makeGetter('hours');
4069 var days = makeGetter('days');
4070 var months = makeGetter('months');
4071 var years = makeGetter('years');
4072
4073 function weeks () {
4074 return absFloor(this.days() / 7);
4075 }
4076
4077 var round = Math.round;
4078 var thresholds = {
4079 s: 45, // seconds to minute
4080 m: 45, // minutes to hour
4081 h: 22, // hours to day
4082 d: 26, // days to month
4083 M: 11 // months to year
4084 };
4085
4086 // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
4087 function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
4088 return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
4089 }
4090
4091 function relativeTime$1 (posNegDuration, withoutSuffix, locale) {
4092 var duration = createDuration(posNegDuration).abs();
4093 var seconds = round(duration.as('s'));
4094 var minutes = round(duration.as('m'));
4095 var hours = round(duration.as('h'));
4096 var days = round(duration.as('d'));
4097 var months = round(duration.as('M'));
4098 var years = round(duration.as('y'));
4099
4100 var a = seconds < thresholds.s && ['s', seconds] ||
4101 minutes <= 1 && ['m'] ||
4102 minutes < thresholds.m && ['mm', minutes] ||
4103 hours <= 1 && ['h'] ||
4104 hours < thresholds.h && ['hh', hours] ||
4105 days <= 1 && ['d'] ||
4106 days < thresholds.d && ['dd', days] ||
4107 months <= 1 && ['M'] ||
4108 months < thresholds.M && ['MM', months] ||
4109 years <= 1 && ['y'] || ['yy', years];
4110
4111 a[2] = withoutSuffix;
4112 a[3] = +posNegDuration > 0;
4113 a[4] = locale;
4114 return substituteTimeAgo.apply(null, a);
4115 }
4116
4117 // This function allows you to set the rounding function for relative time strings
4118 function getSetRelativeTimeRounding (roundingFunction) {
4119 if (roundingFunction === undefined) {
4120 return round;
4121 }
4122 if (typeof(roundingFunction) === 'function') {
4123 round = roundingFunction;
4124 return true;
4125 }
4126 return false;
4127 }
4128
4129 // This function allows you to set a threshold for relative time strings
4130 function getSetRelativeTimeThreshold (threshold, limit) {
4131 if (thresholds[threshold] === undefined) {
4132 return false;
4133 }
4134 if (limit === undefined) {
4135 return thresholds[threshold];
4136 }
4137 thresholds[threshold] = limit;
4138 return true;
4139 }
4140
4141 function humanize (withSuffix) {
4142 var locale = this.localeData();
4143 var output = relativeTime$1(this, !withSuffix, locale);
4144
4145 if (withSuffix) {
4146 output = locale.pastFuture(+this, output);
4147 }
4148
4149 return locale.postformat(output);
4150 }
4151
4152 var abs$1 = Math.abs;
4153
4154 function toISOString$1() {
4155 // for ISO strings we do not use the normal bubbling rules:
4156 // * milliseconds bubble up until they become hours
4157 // * days do not bubble at all
4158 // * months bubble up until they become years
4159 // This is because there is no context-free conversion between hours and days
4160 // (think of clock changes)
4161 // and also not between days and months (28-31 days per month)
4162 var seconds = abs$1(this._milliseconds) / 1000;
4163 var days = abs$1(this._days);
4164 var months = abs$1(this._months);
4165 var minutes, hours, years;
4166
4167 // 3600 seconds -> 60 minutes -> 1 hour
4168 minutes = absFloor(seconds / 60);
4169 hours = absFloor(minutes / 60);
4170 seconds %= 60;
4171 minutes %= 60;
4172
4173 // 12 months -> 1 year
4174 years = absFloor(months / 12);
4175 months %= 12;
4176
4177
4178 // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
4179 var Y = years;
4180 var M = months;
4181 var D = days;
4182 var h = hours;
4183 var m = minutes;
4184 var s = seconds;
4185 var total = this.asSeconds();
4186
4187 if (!total) {
4188 // this is the same as C#'s (Noda) and python (isodate)...
4189 // but not other JS (goog.date)
4190 return 'P0D';
4191 }
4192
4193 return (total < 0 ? '-' : '') +
4194 'P' +
4195 (Y ? Y + 'Y' : '') +
4196 (M ? M + 'M' : '') +
4197 (D ? D + 'D' : '') +
4198 ((h || m || s) ? 'T' : '') +
4199 (h ? h + 'H' : '') +
4200 (m ? m + 'M' : '') +
4201 (s ? s + 'S' : '');
4202 }
4203
4204 var proto$2 = Duration.prototype;
4205
4206 proto$2.abs = abs;
4207 proto$2.add = add$1;
4208 proto$2.subtract = subtract$1;
4209 proto$2.as = as;
4210 proto$2.asMilliseconds = asMilliseconds;
4211 proto$2.asSeconds = asSeconds;
4212 proto$2.asMinutes = asMinutes;
4213 proto$2.asHours = asHours;
4214 proto$2.asDays = asDays;
4215 proto$2.asWeeks = asWeeks;
4216 proto$2.asMonths = asMonths;
4217 proto$2.asYears = asYears;
4218 proto$2.valueOf = valueOf$1;
4219 proto$2._bubble = bubble;
4220 proto$2.get = get$2;
4221 proto$2.milliseconds = milliseconds;
4222 proto$2.seconds = seconds;
4223 proto$2.minutes = minutes;
4224 proto$2.hours = hours;
4225 proto$2.days = days;
4226 proto$2.weeks = weeks;
4227 proto$2.months = months;
4228 proto$2.years = years;
4229 proto$2.humanize = humanize;
4230 proto$2.toISOString = toISOString$1;
4231 proto$2.toString = toISOString$1;
4232 proto$2.toJSON = toISOString$1;
4233 proto$2.locale = locale;
4234 proto$2.localeData = localeData;
4235
4236 // Deprecations
4237 proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);
4238 proto$2.lang = lang;
4239
4240 // Side effect imports
4241
4242 // FORMATTING
4243
4244 addFormatToken('X', 0, 0, 'unix');
4245 addFormatToken('x', 0, 0, 'valueOf');
4246
4247 // PARSING
4248
4249 addRegexToken('x', matchSigned);
4250 addRegexToken('X', matchTimestamp);
4251 addParseToken('X', function (input, array, config) {
4252 config._d = new Date(parseFloat(input, 10) * 1000);
4253 });
4254 addParseToken('x', function (input, array, config) {
4255 config._d = new Date(toInt(input));
4256 });
4257
4258 // Side effect imports
4259
4260 //! moment.js
4261 //! version : 2.17.1
4262 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
4263 //! license : MIT
4264 //! momentjs.com
4265
4266 hooks.version = '2.17.1';
4267
4268 setHookCallback(createLocal);
4269
4270 hooks.fn = proto;
4271 hooks.min = min;
4272 hooks.max = max;
4273 hooks.now = now;
4274 hooks.utc = createUTC;
4275 hooks.unix = createUnix;
4276 hooks.months = listMonths;
4277 hooks.isDate = isDate;
4278 hooks.locale = getSetGlobalLocale;
4279 hooks.invalid = createInvalid;
4280 hooks.duration = createDuration;
4281 hooks.isMoment = isMoment;
4282 hooks.weekdays = listWeekdays;
4283 hooks.parseZone = createInZone;
4284 hooks.localeData = getLocale;
4285 hooks.isDuration = isDuration;
4286 hooks.monthsShort = listMonthsShort;
4287 hooks.weekdaysMin = listWeekdaysMin;
4288 hooks.defineLocale = defineLocale;
4289 hooks.updateLocale = updateLocale;
4290 hooks.locales = listLocales;
4291 hooks.weekdaysShort = listWeekdaysShort;
4292 hooks.normalizeUnits = normalizeUnits;
4293 hooks.relativeTimeRounding = getSetRelativeTimeRounding;
4294 hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
4295 hooks.calendarFormat = getCalendarFormat;
4296 hooks.prototype = proto;
4297
4298 //! moment.js locale configuration
4299 //! locale : Afrikaans [af]
4300 //! author : Werner Mollentze : https://github.com/wernerm
4301
4302 hooks.defineLocale('af', {
4303 months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
4304 monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
4305 weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
4306 weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
4307 weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
4308 meridiemParse: /vm|nm/i,
4309 isPM : function (input) {
4310 return /^nm$/i.test(input);
4311 },
4312 meridiem : function (hours, minutes, isLower) {
4313 if (hours < 12) {
4314 return isLower ? 'vm' : 'VM';
4315 } else {
4316 return isLower ? 'nm' : 'NM';
4317 }
4318 },
4319 longDateFormat : {
4320 LT : 'HH:mm',
4321 LTS : 'HH:mm:ss',
4322 L : 'DD/MM/YYYY',
4323 LL : 'D MMMM YYYY',
4324 LLL : 'D MMMM YYYY HH:mm',
4325 LLLL : 'dddd, D MMMM YYYY HH:mm'
4326 },
4327 calendar : {
4328 sameDay : '[Vandag om] LT',
4329 nextDay : '[Môre om] LT',
4330 nextWeek : 'dddd [om] LT',
4331 lastDay : '[Gister om] LT',
4332 lastWeek : '[Laas] dddd [om] LT',
4333 sameElse : 'L'
4334 },
4335 relativeTime : {
4336 future : 'oor %s',
4337 past : '%s gelede',
4338 s : '\'n paar sekondes',
4339 m : '\'n minuut',
4340 mm : '%d minute',
4341 h : '\'n uur',
4342 hh : '%d ure',
4343 d : '\'n dag',
4344 dd : '%d dae',
4345 M : '\'n maand',
4346 MM : '%d maande',
4347 y : '\'n jaar',
4348 yy : '%d jaar'
4349 },
4350 ordinalParse: /\d{1,2}(ste|de)/,
4351 ordinal : function (number) {
4352 return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
4353 },
4354 week : {
4355 dow : 1, // Maandag is die eerste dag van die week.
4356 doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
4357 }
4358 });
4359
4360 //! moment.js locale configuration
4361 //! locale : Arabic (Algeria) [ar-dz]
4362 //! author : Noureddine LOUAHEDJ : https://github.com/noureddineme
4363
4364 hooks.defineLocale('ar-dz', {
4365 months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4366 monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4367 weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4368 weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4369 weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),
4370 weekdaysParseExact : true,
4371 longDateFormat : {
4372 LT : 'HH:mm',
4373 LTS : 'HH:mm:ss',
4374 L : 'DD/MM/YYYY',
4375 LL : 'D MMMM YYYY',
4376 LLL : 'D MMMM YYYY HH:mm',
4377 LLLL : 'dddd D MMMM YYYY HH:mm'
4378 },
4379 calendar : {
4380 sameDay: '[اليوم على الساعة] LT',
4381 nextDay: '[غدا على الساعة] LT',
4382 nextWeek: 'dddd [على الساعة] LT',
4383 lastDay: '[أمس على الساعة] LT',
4384 lastWeek: 'dddd [على الساعة] LT',
4385 sameElse: 'L'
4386 },
4387 relativeTime : {
4388 future : 'في %s',
4389 past : 'منذ %s',
4390 s : 'ثوان',
4391 m : 'دقيقة',
4392 mm : '%d دقائق',
4393 h : 'ساعة',
4394 hh : '%d ساعات',
4395 d : 'يوم',
4396 dd : '%d أيام',
4397 M : 'شهر',
4398 MM : '%d أشهر',
4399 y : 'سنة',
4400 yy : '%d سنوات'
4401 },
4402 week : {
4403 dow : 0, // Sunday is the first day of the week.
4404 doy : 4 // The week that contains Jan 1st is the first week of the year.
4405 }
4406 });
4407
4408 //! moment.js locale configuration
4409 //! locale : Arabic (Lybia) [ar-ly]
4410 //! author : Ali Hmer: https://github.com/kikoanis
4411
4412 var symbolMap = {
4413 '1': '1',
4414 '2': '2',
4415 '3': '3',
4416 '4': '4',
4417 '5': '5',
4418 '6': '6',
4419 '7': '7',
4420 '8': '8',
4421 '9': '9',
4422 '0': '0'
4423 };
4424 var pluralForm = function (n) {
4425 return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
4426 };
4427 var plurals = {
4428 s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
4429 m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
4430 h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
4431 d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
4432 M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
4433 y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
4434 };
4435 var pluralize = function (u) {
4436 return function (number, withoutSuffix, string, isFuture) {
4437 var f = pluralForm(number),
4438 str = plurals[u][pluralForm(number)];
4439 if (f === 2) {
4440 str = str[withoutSuffix ? 0 : 1];
4441 }
4442 return str.replace(/%d/i, number);
4443 };
4444 };
4445 var months$1 = [
4446 'يناير',
4447 'فبراير',
4448 'مارس',
4449 'أبريل',
4450 'مايو',
4451 'يونيو',
4452 'يوليو',
4453 'أغسطس',
4454 'سبتمبر',
4455 'أكتوبر',
4456 'نوفمبر',
4457 'ديسمبر'
4458 ];
4459
4460 hooks.defineLocale('ar-ly', {
4461 months : months$1,
4462 monthsShort : months$1,
4463 weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4464 weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4465 weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4466 weekdaysParseExact : true,
4467 longDateFormat : {
4468 LT : 'HH:mm',
4469 LTS : 'HH:mm:ss',
4470 L : 'D/\u200FM/\u200FYYYY',
4471 LL : 'D MMMM YYYY',
4472 LLL : 'D MMMM YYYY HH:mm',
4473 LLLL : 'dddd D MMMM YYYY HH:mm'
4474 },
4475 meridiemParse: /ص|م/,
4476 isPM : function (input) {
4477 return 'م' === input;
4478 },
4479 meridiem : function (hour, minute, isLower) {
4480 if (hour < 12) {
4481 return 'ص';
4482 } else {
4483 return 'م';
4484 }
4485 },
4486 calendar : {
4487 sameDay: '[اليوم عند الساعة] LT',
4488 nextDay: '[غدًا عند الساعة] LT',
4489 nextWeek: 'dddd [عند الساعة] LT',
4490 lastDay: '[أمس عند الساعة] LT',
4491 lastWeek: 'dddd [عند الساعة] LT',
4492 sameElse: 'L'
4493 },
4494 relativeTime : {
4495 future : 'بعد %s',
4496 past : 'منذ %s',
4497 s : pluralize('s'),
4498 m : pluralize('m'),
4499 mm : pluralize('m'),
4500 h : pluralize('h'),
4501 hh : pluralize('h'),
4502 d : pluralize('d'),
4503 dd : pluralize('d'),
4504 M : pluralize('M'),
4505 MM : pluralize('M'),
4506 y : pluralize('y'),
4507 yy : pluralize('y')
4508 },
4509 preparse: function (string) {
4510 return string.replace(/\u200f/g, '').replace(/،/g, ',');
4511 },
4512 postformat: function (string) {
4513 return string.replace(/\d/g, function (match) {
4514 return symbolMap[match];
4515 }).replace(/,/g, '،');
4516 },
4517 week : {
4518 dow : 6, // Saturday is the first day of the week.
4519 doy : 12 // The week that contains Jan 1st is the first week of the year.
4520 }
4521 });
4522
4523 //! moment.js locale configuration
4524 //! locale : Arabic (Morocco) [ar-ma]
4525 //! author : ElFadili Yassine : https://github.com/ElFadiliY
4526 //! author : Abdel Said : https://github.com/abdelsaid
4527
4528 hooks.defineLocale('ar-ma', {
4529 months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4530 monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4531 weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4532 weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4533 weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4534 weekdaysParseExact : true,
4535 longDateFormat : {
4536 LT : 'HH:mm',
4537 LTS : 'HH:mm:ss',
4538 L : 'DD/MM/YYYY',
4539 LL : 'D MMMM YYYY',
4540 LLL : 'D MMMM YYYY HH:mm',
4541 LLLL : 'dddd D MMMM YYYY HH:mm'
4542 },
4543 calendar : {
4544 sameDay: '[اليوم على الساعة] LT',
4545 nextDay: '[غدا على الساعة] LT',
4546 nextWeek: 'dddd [على الساعة] LT',
4547 lastDay: '[أمس على الساعة] LT',
4548 lastWeek: 'dddd [على الساعة] LT',
4549 sameElse: 'L'
4550 },
4551 relativeTime : {
4552 future : 'في %s',
4553 past : 'منذ %s',
4554 s : 'ثوان',
4555 m : 'دقيقة',
4556 mm : '%d دقائق',
4557 h : 'ساعة',
4558 hh : '%d ساعات',
4559 d : 'يوم',
4560 dd : '%d أيام',
4561 M : 'شهر',
4562 MM : '%d أشهر',
4563 y : 'سنة',
4564 yy : '%d سنوات'
4565 },
4566 week : {
4567 dow : 6, // Saturday is the first day of the week.
4568 doy : 12 // The week that contains Jan 1st is the first week of the year.
4569 }
4570 });
4571
4572 //! moment.js locale configuration
4573 //! locale : Arabic (Saudi Arabia) [ar-sa]
4574 //! author : Suhail Alkowaileet : https://github.com/xsoh
4575
4576 var symbolMap$1 = {
4577 '1': '١',
4578 '2': '٢',
4579 '3': '٣',
4580 '4': '٤',
4581 '5': '٥',
4582 '6': '٦',
4583 '7': '٧',
4584 '8': '٨',
4585 '9': '٩',
4586 '0': '٠'
4587 };
4588 var numberMap = {
4589 '١': '1',
4590 '٢': '2',
4591 '٣': '3',
4592 '٤': '4',
4593 '٥': '5',
4594 '٦': '6',
4595 '٧': '7',
4596 '٨': '8',
4597 '٩': '9',
4598 '٠': '0'
4599 };
4600
4601 hooks.defineLocale('ar-sa', {
4602 months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4603 monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4604 weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4605 weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4606 weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4607 weekdaysParseExact : true,
4608 longDateFormat : {
4609 LT : 'HH:mm',
4610 LTS : 'HH:mm:ss',
4611 L : 'DD/MM/YYYY',
4612 LL : 'D MMMM YYYY',
4613 LLL : 'D MMMM YYYY HH:mm',
4614 LLLL : 'dddd D MMMM YYYY HH:mm'
4615 },
4616 meridiemParse: /ص|م/,
4617 isPM : function (input) {
4618 return 'م' === input;
4619 },
4620 meridiem : function (hour, minute, isLower) {
4621 if (hour < 12) {
4622 return 'ص';
4623 } else {
4624 return 'م';
4625 }
4626 },
4627 calendar : {
4628 sameDay: '[اليوم على الساعة] LT',
4629 nextDay: '[غدا على الساعة] LT',
4630 nextWeek: 'dddd [على الساعة] LT',
4631 lastDay: '[أمس على الساعة] LT',
4632 lastWeek: 'dddd [على الساعة] LT',
4633 sameElse: 'L'
4634 },
4635 relativeTime : {
4636 future : 'في %s',
4637 past : 'منذ %s',
4638 s : 'ثوان',
4639 m : 'دقيقة',
4640 mm : '%d دقائق',
4641 h : 'ساعة',
4642 hh : '%d ساعات',
4643 d : 'يوم',
4644 dd : '%d أيام',
4645 M : 'شهر',
4646 MM : '%d أشهر',
4647 y : 'سنة',
4648 yy : '%d سنوات'
4649 },
4650 preparse: function (string) {
4651 return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
4652 return numberMap[match];
4653 }).replace(/،/g, ',');
4654 },
4655 postformat: function (string) {
4656 return string.replace(/\d/g, function (match) {
4657 return symbolMap$1[match];
4658 }).replace(/,/g, '،');
4659 },
4660 week : {
4661 dow : 0, // Sunday is the first day of the week.
4662 doy : 6 // The week that contains Jan 1st is the first week of the year.
4663 }
4664 });
4665
4666 //! moment.js locale configuration
4667 //! locale : Arabic (Tunisia) [ar-tn]
4668 //! author : Nader Toukabri : https://github.com/naderio
4669
4670 hooks.defineLocale('ar-tn', {
4671 months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4672 monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4673 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4674 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4675 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4676 weekdaysParseExact : true,
4677 longDateFormat: {
4678 LT: 'HH:mm',
4679 LTS: 'HH:mm:ss',
4680 L: 'DD/MM/YYYY',
4681 LL: 'D MMMM YYYY',
4682 LLL: 'D MMMM YYYY HH:mm',
4683 LLLL: 'dddd D MMMM YYYY HH:mm'
4684 },
4685 calendar: {
4686 sameDay: '[اليوم على الساعة] LT',
4687 nextDay: '[غدا على الساعة] LT',
4688 nextWeek: 'dddd [على الساعة] LT',
4689 lastDay: '[أمس على الساعة] LT',
4690 lastWeek: 'dddd [على الساعة] LT',
4691 sameElse: 'L'
4692 },
4693 relativeTime: {
4694 future: 'في %s',
4695 past: 'منذ %s',
4696 s: 'ثوان',
4697 m: 'دقيقة',
4698 mm: '%d دقائق',
4699 h: 'ساعة',
4700 hh: '%d ساعات',
4701 d: 'يوم',
4702 dd: '%d أيام',
4703 M: 'شهر',
4704 MM: '%d أشهر',
4705 y: 'سنة',
4706 yy: '%d سنوات'
4707 },
4708 week: {
4709 dow: 1, // Monday is the first day of the week.
4710 doy: 4 // The week that contains Jan 4th is the first week of the year.
4711 }
4712 });
4713
4714 //! moment.js locale configuration
4715 //! locale : Arabic [ar]
4716 //! author : Abdel Said: https://github.com/abdelsaid
4717 //! author : Ahmed Elkhatib
4718 //! author : forabi https://github.com/forabi
4719
4720 var symbolMap$2 = {
4721 '1': '١',
4722 '2': '٢',
4723 '3': '٣',
4724 '4': '٤',
4725 '5': '٥',
4726 '6': '٦',
4727 '7': '٧',
4728 '8': '٨',
4729 '9': '٩',
4730 '0': '٠'
4731 };
4732 var numberMap$1 = {
4733 '١': '1',
4734 '٢': '2',
4735 '٣': '3',
4736 '٤': '4',
4737 '٥': '5',
4738 '٦': '6',
4739 '٧': '7',
4740 '٨': '8',
4741 '٩': '9',
4742 '٠': '0'
4743 };
4744 var pluralForm$1 = function (n) {
4745 return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
4746 };
4747 var plurals$1 = {
4748 s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
4749 m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
4750 h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
4751 d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
4752 M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
4753 y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
4754 };
4755 var pluralize$1 = function (u) {
4756 return function (number, withoutSuffix, string, isFuture) {
4757 var f = pluralForm$1(number),
4758 str = plurals$1[u][pluralForm$1(number)];
4759 if (f === 2) {
4760 str = str[withoutSuffix ? 0 : 1];
4761 }
4762 return str.replace(/%d/i, number);
4763 };
4764 };
4765 var months$2 = [
4766 'كانون الثاني يناير',
4767 'شباط فبراير',
4768 'آذار مارس',
4769 'نيسان أبريل',
4770 'أيار مايو',
4771 'حزيران يونيو',
4772 'تموز يوليو',
4773 'آب أغسطس',
4774 'أيلول سبتمبر',
4775 'تشرين الأول أكتوبر',
4776 'تشرين الثاني نوفمبر',
4777 'كانون الأول ديسمبر'
4778 ];
4779
4780 hooks.defineLocale('ar', {
4781 months : months$2,
4782 monthsShort : months$2,
4783 weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4784 weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4785 weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4786 weekdaysParseExact : true,
4787 longDateFormat : {
4788 LT : 'HH:mm',
4789 LTS : 'HH:mm:ss',
4790 L : 'D/\u200FM/\u200FYYYY',
4791 LL : 'D MMMM YYYY',
4792 LLL : 'D MMMM YYYY HH:mm',
4793 LLLL : 'dddd D MMMM YYYY HH:mm'
4794 },
4795 meridiemParse: /ص|م/,
4796 isPM : function (input) {
4797 return 'م' === input;
4798 },
4799 meridiem : function (hour, minute, isLower) {
4800 if (hour < 12) {
4801 return 'ص';
4802 } else {
4803 return 'م';
4804 }
4805 },
4806 calendar : {
4807 sameDay: '[اليوم عند الساعة] LT',
4808 nextDay: '[غدًا عند الساعة] LT',
4809 nextWeek: 'dddd [عند الساعة] LT',
4810 lastDay: '[أمس عند الساعة] LT',
4811 lastWeek: 'dddd [عند الساعة] LT',
4812 sameElse: 'L'
4813 },
4814 relativeTime : {
4815 future : 'بعد %s',
4816 past : 'منذ %s',
4817 s : pluralize$1('s'),
4818 m : pluralize$1('m'),
4819 mm : pluralize$1('m'),
4820 h : pluralize$1('h'),
4821 hh : pluralize$1('h'),
4822 d : pluralize$1('d'),
4823 dd : pluralize$1('d'),
4824 M : pluralize$1('M'),
4825 MM : pluralize$1('M'),
4826 y : pluralize$1('y'),
4827 yy : pluralize$1('y')
4828 },
4829 preparse: function (string) {
4830 return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
4831 return numberMap$1[match];
4832 }).replace(/،/g, ',');
4833 },
4834 postformat: function (string) {
4835 return string.replace(/\d/g, function (match) {
4836 return symbolMap$2[match];
4837 }).replace(/,/g, '،');
4838 },
4839 week : {
4840 dow : 6, // Saturday is the first day of the week.
4841 doy : 12 // The week that contains Jan 1st is the first week of the year.
4842 }
4843 });
4844
4845 //! moment.js locale configuration
4846 //! locale : Azerbaijani [az]
4847 //! author : topchiyev : https://github.com/topchiyev
4848
4849 var suffixes = {
4850 1: '-inci',
4851 5: '-inci',
4852 8: '-inci',
4853 70: '-inci',
4854 80: '-inci',
4855 2: '-nci',
4856 7: '-nci',
4857 20: '-nci',
4858 50: '-nci',
4859 3: '-üncü',
4860 4: '-üncü',
4861 100: '-üncü',
4862 6: '-ncı',
4863 9: '-uncu',
4864 10: '-uncu',
4865 30: '-uncu',
4866 60: '-ıncı',
4867 90: '-ıncı'
4868 };
4869
4870 hooks.defineLocale('az', {
4871 months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
4872 monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
4873 weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
4874 weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
4875 weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
4876 weekdaysParseExact : true,
4877 longDateFormat : {
4878 LT : 'HH:mm',
4879 LTS : 'HH:mm:ss',
4880 L : 'DD.MM.YYYY',
4881 LL : 'D MMMM YYYY',
4882 LLL : 'D MMMM YYYY HH:mm',
4883 LLLL : 'dddd, D MMMM YYYY HH:mm'
4884 },
4885 calendar : {
4886 sameDay : '[bugün saat] LT',
4887 nextDay : '[sabah saat] LT',
4888 nextWeek : '[gələn həftə] dddd [saat] LT',
4889 lastDay : '[dünən] LT',
4890 lastWeek : '[keçən həftə] dddd [saat] LT',
4891 sameElse : 'L'
4892 },
4893 relativeTime : {
4894 future : '%s sonra',
4895 past : '%s əvvəl',
4896 s : 'birneçə saniyyə',
4897 m : 'bir dəqiqə',
4898 mm : '%d dəqiqə',
4899 h : 'bir saat',
4900 hh : '%d saat',
4901 d : 'bir gün',
4902 dd : '%d gün',
4903 M : 'bir ay',
4904 MM : '%d ay',
4905 y : 'bir il',
4906 yy : '%d il'
4907 },
4908 meridiemParse: /gecə|səhər|gündüz|axşam/,
4909 isPM : function (input) {
4910 return /^(gündüz|axşam)$/.test(input);
4911 },
4912 meridiem : function (hour, minute, isLower) {
4913 if (hour < 4) {
4914 return 'gecə';
4915 } else if (hour < 12) {
4916 return 'səhər';
4917 } else if (hour < 17) {
4918 return 'gündüz';
4919 } else {
4920 return 'axşam';
4921 }
4922 },
4923 ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
4924 ordinal : function (number) {
4925 if (number === 0) { // special case for zero
4926 return number + '-ıncı';
4927 }
4928 var a = number % 10,
4929 b = number % 100 - a,
4930 c = number >= 100 ? 100 : null;
4931 return number + (suffixes[a] || suffixes[b] || suffixes[c]);
4932 },
4933 week : {
4934 dow : 1, // Monday is the first day of the week.
4935 doy : 7 // The week that contains Jan 1st is the first week of the year.
4936 }
4937 });
4938
4939 //! moment.js locale configuration
4940 //! locale : Belarusian [be]
4941 //! author : Dmitry Demidov : https://github.com/demidov91
4942 //! author: Praleska: http://praleska.pro/
4943 //! Author : Menelion Elensúle : https://github.com/Oire
4944
4945 function plural(word, num) {
4946 var forms = word.split('_');
4947 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]);
4948 }
4949 function relativeTimeWithPlural(number, withoutSuffix, key) {
4950 var format = {
4951 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
4952 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
4953 'dd': 'дзень_дні_дзён',
4954 'MM': 'месяц_месяцы_месяцаў',
4955 'yy': 'год_гады_гадоў'
4956 };
4957 if (key === 'm') {
4958 return withoutSuffix ? 'хвіліна' : 'хвіліну';
4959 }
4960 else if (key === 'h') {
4961 return withoutSuffix ? 'гадзіна' : 'гадзіну';
4962 }
4963 else {
4964 return number + ' ' + plural(format[key], +number);
4965 }
4966 }
4967
4968 hooks.defineLocale('be', {
4969 months : {
4970 format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),
4971 standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')
4972 },
4973 monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
4974 weekdays : {
4975 format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),
4976 standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
4977 isFormat: /\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/
4978 },
4979 weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
4980 weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
4981 longDateFormat : {
4982 LT : 'HH:mm',
4983 LTS : 'HH:mm:ss',
4984 L : 'DD.MM.YYYY',
4985 LL : 'D MMMM YYYY г.',
4986 LLL : 'D MMMM YYYY г., HH:mm',
4987 LLLL : 'dddd, D MMMM YYYY г., HH:mm'
4988 },
4989 calendar : {
4990 sameDay: '[Сёння ў] LT',
4991 nextDay: '[Заўтра ў] LT',
4992 lastDay: '[Учора ў] LT',
4993 nextWeek: function () {
4994 return '[У] dddd [ў] LT';
4995 },
4996 lastWeek: function () {
4997 switch (this.day()) {
4998 case 0:
4999 case 3:
5000 case 5:
5001 case 6:
5002 return '[У мінулую] dddd [ў] LT';
5003 case 1:
5004 case 2:
5005 case 4:
5006 return '[У мінулы] dddd [ў] LT';
5007 }
5008 },
5009 sameElse: 'L'
5010 },
5011 relativeTime : {
5012 future : 'праз %s',
5013 past : '%s таму',
5014 s : 'некалькі секунд',
5015 m : relativeTimeWithPlural,
5016 mm : relativeTimeWithPlural,
5017 h : relativeTimeWithPlural,
5018 hh : relativeTimeWithPlural,
5019 d : 'дзень',
5020 dd : relativeTimeWithPlural,
5021 M : 'месяц',
5022 MM : relativeTimeWithPlural,
5023 y : 'год',
5024 yy : relativeTimeWithPlural
5025 },
5026 meridiemParse: /ночы|раніцы|дня|вечара/,
5027 isPM : function (input) {
5028 return /^(дня|вечара)$/.test(input);
5029 },
5030 meridiem : function (hour, minute, isLower) {
5031 if (hour < 4) {
5032 return 'ночы';
5033 } else if (hour < 12) {
5034 return 'раніцы';
5035 } else if (hour < 17) {
5036 return 'дня';
5037 } else {
5038 return 'вечара';
5039 }
5040 },
5041 ordinalParse: /\d{1,2}-(і|ы|га)/,
5042 ordinal: function (number, period) {
5043 switch (period) {
5044 case 'M':
5045 case 'd':
5046 case 'DDD':
5047 case 'w':
5048 case 'W':
5049 return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';
5050 case 'D':
5051 return number + '-га';
5052 default:
5053 return number;
5054 }
5055 },
5056 week : {
5057 dow : 1, // Monday is the first day of the week.
5058 doy : 7 // The week that contains Jan 1st is the first week of the year.
5059 }
5060 });
5061
5062 //! moment.js locale configuration
5063 //! locale : Bulgarian [bg]
5064 //! author : Krasen Borisov : https://github.com/kraz
5065
5066 hooks.defineLocale('bg', {
5067 months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
5068 monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
5069 weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
5070 weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
5071 weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
5072 longDateFormat : {
5073 LT : 'H:mm',
5074 LTS : 'H:mm:ss',
5075 L : 'D.MM.YYYY',
5076 LL : 'D MMMM YYYY',
5077 LLL : 'D MMMM YYYY H:mm',
5078 LLLL : 'dddd, D MMMM YYYY H:mm'
5079 },
5080 calendar : {
5081 sameDay : '[Днес в] LT',
5082 nextDay : '[Утре в] LT',
5083 nextWeek : 'dddd [в] LT',
5084 lastDay : '[Вчера в] LT',
5085 lastWeek : function () {
5086 switch (this.day()) {
5087 case 0:
5088 case 3:
5089 case 6:
5090 return '[В изминалата] dddd [в] LT';
5091 case 1:
5092 case 2:
5093 case 4:
5094 case 5:
5095 return '[В изминалия] dddd [в] LT';
5096 }
5097 },
5098 sameElse : 'L'
5099 },
5100 relativeTime : {
5101 future : 'след %s',
5102 past : 'преди %s',
5103 s : 'няколко секунди',
5104 m : 'минута',
5105 mm : '%d минути',
5106 h : 'час',
5107 hh : '%d часа',
5108 d : 'ден',
5109 dd : '%d дни',
5110 M : 'месец',
5111 MM : '%d месеца',
5112 y : 'година',
5113 yy : '%d години'
5114 },
5115 ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
5116 ordinal : function (number) {
5117 var lastDigit = number % 10,
5118 last2Digits = number % 100;
5119 if (number === 0) {
5120 return number + '-ев';
5121 } else if (last2Digits === 0) {
5122 return number + '-ен';
5123 } else if (last2Digits > 10 && last2Digits < 20) {
5124 return number + '-ти';
5125 } else if (lastDigit === 1) {
5126 return number + '-ви';
5127 } else if (lastDigit === 2) {
5128 return number + '-ри';
5129 } else if (lastDigit === 7 || lastDigit === 8) {
5130 return number + '-ми';
5131 } else {
5132 return number + '-ти';
5133 }
5134 },
5135 week : {
5136 dow : 1, // Monday is the first day of the week.
5137 doy : 7 // The week that contains Jan 1st is the first week of the year.
5138 }
5139 });
5140
5141 //! moment.js locale configuration
5142 //! locale : Bengali [bn]
5143 //! author : Kaushik Gandhi : https://github.com/kaushikgandhi
5144
5145 var symbolMap$3 = {
5146 '1': '১',
5147 '2': '২',
5148 '3': '৩',
5149 '4': '৪',
5150 '5': '৫',
5151 '6': '৬',
5152 '7': '৭',
5153 '8': '৮',
5154 '9': '৯',
5155 '0': '০'
5156 };
5157 var numberMap$2 = {
5158 '১': '1',
5159 '২': '2',
5160 '৩': '3',
5161 '৪': '4',
5162 '৫': '5',
5163 '৬': '6',
5164 '৭': '7',
5165 '৮': '8',
5166 '৯': '9',
5167 '০': '0'
5168 };
5169
5170 hooks.defineLocale('bn', {
5171 months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
5172 monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
5173 weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
5174 weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
5175 weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),
5176 longDateFormat : {
5177 LT : 'A h:mm সময়',
5178 LTS : 'A h:mm:ss সময়',
5179 L : 'DD/MM/YYYY',
5180 LL : 'D MMMM YYYY',
5181 LLL : 'D MMMM YYYY, A h:mm সময়',
5182 LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'
5183 },
5184 calendar : {
5185 sameDay : '[আজ] LT',
5186 nextDay : '[আগামীকাল] LT',
5187 nextWeek : 'dddd, LT',
5188 lastDay : '[গতকাল] LT',
5189 lastWeek : '[গত] dddd, LT',
5190 sameElse : 'L'
5191 },
5192 relativeTime : {
5193 future : '%s পরে',
5194 past : '%s আগে',
5195 s : 'কয়েক সেকেন্ড',
5196 m : 'এক মিনিট',
5197 mm : '%d মিনিট',
5198 h : 'এক ঘন্টা',
5199 hh : '%d ঘন্টা',
5200 d : 'এক দিন',
5201 dd : '%d দিন',
5202 M : 'এক মাস',
5203 MM : '%d মাস',
5204 y : 'এক বছর',
5205 yy : '%d বছর'
5206 },
5207 preparse: function (string) {
5208 return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
5209 return numberMap$2[match];
5210 });
5211 },
5212 postformat: function (string) {
5213 return string.replace(/\d/g, function (match) {
5214 return symbolMap$3[match];
5215 });
5216 },
5217 meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
5218 meridiemHour : function (hour, meridiem) {
5219 if (hour === 12) {
5220 hour = 0;
5221 }
5222 if ((meridiem === 'রাত' && hour >= 4) ||
5223 (meridiem === 'দুপুর' && hour < 5) ||
5224 meridiem === 'বিকাল') {
5225 return hour + 12;
5226 } else {
5227 return hour;
5228 }
5229 },
5230 meridiem : function (hour, minute, isLower) {
5231 if (hour < 4) {
5232 return 'রাত';
5233 } else if (hour < 10) {
5234 return 'সকাল';
5235 } else if (hour < 17) {
5236 return 'দুপুর';
5237 } else if (hour < 20) {
5238 return 'বিকাল';
5239 } else {
5240 return 'রাত';
5241 }
5242 },
5243 week : {
5244 dow : 0, // Sunday is the first day of the week.
5245 doy : 6 // The week that contains Jan 1st is the first week of the year.
5246 }
5247 });
5248
5249 //! moment.js locale configuration
5250 //! locale : Tibetan [bo]
5251 //! author : Thupten N. Chakrishar : https://github.com/vajradog
5252
5253 var symbolMap$4 = {
5254 '1': '༡',
5255 '2': '༢',
5256 '3': '༣',
5257 '4': '༤',
5258 '5': '༥',
5259 '6': '༦',
5260 '7': '༧',
5261 '8': '༨',
5262 '9': '༩',
5263 '0': '༠'
5264 };
5265 var numberMap$3 = {
5266 '༡': '1',
5267 '༢': '2',
5268 '༣': '3',
5269 '༤': '4',
5270 '༥': '5',
5271 '༦': '6',
5272 '༧': '7',
5273 '༨': '8',
5274 '༩': '9',
5275 '༠': '0'
5276 };
5277
5278 hooks.defineLocale('bo', {
5279 months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
5280 monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
5281 weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
5282 weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
5283 weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
5284 longDateFormat : {
5285 LT : 'A h:mm',
5286 LTS : 'A h:mm:ss',
5287 L : 'DD/MM/YYYY',
5288 LL : 'D MMMM YYYY',
5289 LLL : 'D MMMM YYYY, A h:mm',
5290 LLLL : 'dddd, D MMMM YYYY, A h:mm'
5291 },
5292 calendar : {
5293 sameDay : '[དི་རིང] LT',
5294 nextDay : '[སང་ཉིན] LT',
5295 nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',
5296 lastDay : '[ཁ་སང] LT',
5297 lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
5298 sameElse : 'L'
5299 },
5300 relativeTime : {
5301 future : '%s ལ་',
5302 past : '%s སྔན་ལ',
5303 s : 'ལམ་སང',
5304 m : 'སྐར་མ་གཅིག',
5305 mm : '%d སྐར་མ',
5306 h : 'ཆུ་ཚོད་གཅིག',
5307 hh : '%d ཆུ་ཚོད',
5308 d : 'ཉིན་གཅིག',
5309 dd : '%d ཉིན་',
5310 M : 'ཟླ་བ་གཅིག',
5311 MM : '%d ཟླ་བ',
5312 y : 'ལོ་གཅིག',
5313 yy : '%d ལོ'
5314 },
5315 preparse: function (string) {
5316 return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
5317 return numberMap$3[match];
5318 });
5319 },
5320 postformat: function (string) {
5321 return string.replace(/\d/g, function (match) {
5322 return symbolMap$4[match];
5323 });
5324 },
5325 meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
5326 meridiemHour : function (hour, meridiem) {
5327 if (hour === 12) {
5328 hour = 0;
5329 }
5330 if ((meridiem === 'མཚན་མོ' && hour >= 4) ||
5331 (meridiem === 'ཉིན་གུང' && hour < 5) ||
5332 meridiem === 'དགོང་དག') {
5333 return hour + 12;
5334 } else {
5335 return hour;
5336 }
5337 },
5338 meridiem : function (hour, minute, isLower) {
5339 if (hour < 4) {
5340 return 'མཚན་མོ';
5341 } else if (hour < 10) {
5342 return 'ཞོགས་ཀས';
5343 } else if (hour < 17) {
5344 return 'ཉིན་གུང';
5345 } else if (hour < 20) {
5346 return 'དགོང་དག';
5347 } else {
5348 return 'མཚན་མོ';
5349 }
5350 },
5351 week : {
5352 dow : 0, // Sunday is the first day of the week.
5353 doy : 6 // The week that contains Jan 1st is the first week of the year.
5354 }
5355 });
5356
5357 //! moment.js locale configuration
5358 //! locale : Breton [br]
5359 //! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
5360
5361 function relativeTimeWithMutation(number, withoutSuffix, key) {
5362 var format = {
5363 'mm': 'munutenn',
5364 'MM': 'miz',
5365 'dd': 'devezh'
5366 };
5367 return number + ' ' + mutation(format[key], number);
5368 }
5369 function specialMutationForYears(number) {
5370 switch (lastNumber(number)) {
5371 case 1:
5372 case 3:
5373 case 4:
5374 case 5:
5375 case 9:
5376 return number + ' bloaz';
5377 default:
5378 return number + ' vloaz';
5379 }
5380 }
5381 function lastNumber(number) {
5382 if (number > 9) {
5383 return lastNumber(number % 10);
5384 }
5385 return number;
5386 }
5387 function mutation(text, number) {
5388 if (number === 2) {
5389 return softMutation(text);
5390 }
5391 return text;
5392 }
5393 function softMutation(text) {
5394 var mutationTable = {
5395 'm': 'v',
5396 'b': 'v',
5397 'd': 'z'
5398 };
5399 if (mutationTable[text.charAt(0)] === undefined) {
5400 return text;
5401 }
5402 return mutationTable[text.charAt(0)] + text.substring(1);
5403 }
5404
5405 hooks.defineLocale('br', {
5406 months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
5407 monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
5408 weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'),
5409 weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
5410 weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
5411 weekdaysParseExact : true,
5412 longDateFormat : {
5413 LT : 'h[e]mm A',
5414 LTS : 'h[e]mm:ss A',
5415 L : 'DD/MM/YYYY',
5416 LL : 'D [a viz] MMMM YYYY',
5417 LLL : 'D [a viz] MMMM YYYY h[e]mm A',
5418 LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'
5419 },
5420 calendar : {
5421 sameDay : '[Hiziv da] LT',
5422 nextDay : '[Warc\'hoazh da] LT',
5423 nextWeek : 'dddd [da] LT',
5424 lastDay : '[Dec\'h da] LT',
5425 lastWeek : 'dddd [paset da] LT',
5426 sameElse : 'L'
5427 },
5428 relativeTime : {
5429 future : 'a-benn %s',
5430 past : '%s \'zo',
5431 s : 'un nebeud segondennoù',
5432 m : 'ur vunutenn',
5433 mm : relativeTimeWithMutation,
5434 h : 'un eur',
5435 hh : '%d eur',
5436 d : 'un devezh',
5437 dd : relativeTimeWithMutation,
5438 M : 'ur miz',
5439 MM : relativeTimeWithMutation,
5440 y : 'ur bloaz',
5441 yy : specialMutationForYears
5442 },
5443 ordinalParse: /\d{1,2}(añ|vet)/,
5444 ordinal : function (number) {
5445 var output = (number === 1) ? 'añ' : 'vet';
5446 return number + output;
5447 },
5448 week : {
5449 dow : 1, // Monday is the first day of the week.
5450 doy : 4 // The week that contains Jan 4th is the first week of the year.
5451 }
5452 });
5453
5454 //! moment.js locale configuration
5455 //! locale : Bosnian [bs]
5456 //! author : Nedim Cholich : https://github.com/frontyard
5457 //! based on (hr) translation by Bojan Marković
5458
5459 function translate(number, withoutSuffix, key) {
5460 var result = number + ' ';
5461 switch (key) {
5462 case 'm':
5463 return withoutSuffix ? 'jedna minuta' : 'jedne minute';
5464 case 'mm':
5465 if (number === 1) {
5466 result += 'minuta';
5467 } else if (number === 2 || number === 3 || number === 4) {
5468 result += 'minute';
5469 } else {
5470 result += 'minuta';
5471 }
5472 return result;
5473 case 'h':
5474 return withoutSuffix ? 'jedan sat' : 'jednog sata';
5475 case 'hh':
5476 if (number === 1) {
5477 result += 'sat';
5478 } else if (number === 2 || number === 3 || number === 4) {
5479 result += 'sata';
5480 } else {
5481 result += 'sati';
5482 }
5483 return result;
5484 case 'dd':
5485 if (number === 1) {
5486 result += 'dan';
5487 } else {
5488 result += 'dana';
5489 }
5490 return result;
5491 case 'MM':
5492 if (number === 1) {
5493 result += 'mjesec';
5494 } else if (number === 2 || number === 3 || number === 4) {
5495 result += 'mjeseca';
5496 } else {
5497 result += 'mjeseci';
5498 }
5499 return result;
5500 case 'yy':
5501 if (number === 1) {
5502 result += 'godina';
5503 } else if (number === 2 || number === 3 || number === 4) {
5504 result += 'godine';
5505 } else {
5506 result += 'godina';
5507 }
5508 return result;
5509 }
5510 }
5511
5512 hooks.defineLocale('bs', {
5513 months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
5514 monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
5515 monthsParseExact: true,
5516 weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
5517 weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
5518 weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
5519 weekdaysParseExact : true,
5520 longDateFormat : {
5521 LT : 'H:mm',
5522 LTS : 'H:mm:ss',
5523 L : 'DD.MM.YYYY',
5524 LL : 'D. MMMM YYYY',
5525 LLL : 'D. MMMM YYYY H:mm',
5526 LLLL : 'dddd, D. MMMM YYYY H:mm'
5527 },
5528 calendar : {
5529 sameDay : '[danas u] LT',
5530 nextDay : '[sutra u] LT',
5531 nextWeek : function () {
5532 switch (this.day()) {
5533 case 0:
5534 return '[u] [nedjelju] [u] LT';
5535 case 3:
5536 return '[u] [srijedu] [u] LT';
5537 case 6:
5538 return '[u] [subotu] [u] LT';
5539 case 1:
5540 case 2:
5541 case 4:
5542 case 5:
5543 return '[u] dddd [u] LT';
5544 }
5545 },
5546 lastDay : '[jučer u] LT',
5547 lastWeek : function () {
5548 switch (this.day()) {
5549 case 0:
5550 case 3:
5551 return '[prošlu] dddd [u] LT';
5552 case 6:
5553 return '[prošle] [subote] [u] LT';
5554 case 1:
5555 case 2:
5556 case 4:
5557 case 5:
5558 return '[prošli] dddd [u] LT';
5559 }
5560 },
5561 sameElse : 'L'
5562 },
5563 relativeTime : {
5564 future : 'za %s',
5565 past : 'prije %s',
5566 s : 'par sekundi',
5567 m : translate,
5568 mm : translate,
5569 h : translate,
5570 hh : translate,
5571 d : 'dan',
5572 dd : translate,
5573 M : 'mjesec',
5574 MM : translate,
5575 y : 'godinu',
5576 yy : translate
5577 },
5578 ordinalParse: /\d{1,2}\./,
5579 ordinal : '%d.',
5580 week : {
5581 dow : 1, // Monday is the first day of the week.
5582 doy : 7 // The week that contains Jan 1st is the first week of the year.
5583 }
5584 });
5585
5586 //! moment.js locale configuration
5587 //! locale : Catalan [ca]
5588 //! author : Juan G. Hurtado : https://github.com/juanghurtado
5589
5590 hooks.defineLocale('ca', {
5591 months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
5592 monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'),
5593 monthsParseExact : true,
5594 weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
5595 weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
5596 weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'),
5597 weekdaysParseExact : true,
5598 longDateFormat : {
5599 LT : 'H:mm',
5600 LTS : 'H:mm:ss',
5601 L : 'DD/MM/YYYY',
5602 LL : 'D MMMM YYYY',
5603 LLL : 'D MMMM YYYY H:mm',
5604 LLLL : 'dddd D MMMM YYYY H:mm'
5605 },
5606 calendar : {
5607 sameDay : function () {
5608 return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5609 },
5610 nextDay : function () {
5611 return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5612 },
5613 nextWeek : function () {
5614 return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5615 },
5616 lastDay : function () {
5617 return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5618 },
5619 lastWeek : function () {
5620 return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5621 },
5622 sameElse : 'L'
5623 },
5624 relativeTime : {
5625 future : 'd\'aquí %s',
5626 past : 'fa %s',
5627 s : 'uns segons',
5628 m : 'un minut',
5629 mm : '%d minuts',
5630 h : 'una hora',
5631 hh : '%d hores',
5632 d : 'un dia',
5633 dd : '%d dies',
5634 M : 'un mes',
5635 MM : '%d mesos',
5636 y : 'un any',
5637 yy : '%d anys'
5638 },
5639 ordinalParse: /\d{1,2}(r|n|t|è|a)/,
5640 ordinal : function (number, period) {
5641 var output = (number === 1) ? 'r' :
5642 (number === 2) ? 'n' :
5643 (number === 3) ? 'r' :
5644 (number === 4) ? 't' : 'è';
5645 if (period === 'w' || period === 'W') {
5646 output = 'a';
5647 }
5648 return number + output;
5649 },
5650 week : {
5651 dow : 1, // Monday is the first day of the week.
5652 doy : 4 // The week that contains Jan 4th is the first week of the year.
5653 }
5654 });
5655
5656 //! moment.js locale configuration
5657 //! locale : Czech [cs]
5658 //! author : petrbela : https://github.com/petrbela
5659
5660 var months$3 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_');
5661 var monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');
5662 function plural$1(n) {
5663 return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
5664 }
5665 function translate$1(number, withoutSuffix, key, isFuture) {
5666 var result = number + ' ';
5667 switch (key) {
5668 case 's': // a few seconds / in a few seconds / a few seconds ago
5669 return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';
5670 case 'm': // a minute / in a minute / a minute ago
5671 return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
5672 case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
5673 if (withoutSuffix || isFuture) {
5674 return result + (plural$1(number) ? 'minuty' : 'minut');
5675 } else {
5676 return result + 'minutami';
5677 }
5678 break;
5679 case 'h': // an hour / in an hour / an hour ago
5680 return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
5681 case 'hh': // 9 hours / in 9 hours / 9 hours ago
5682 if (withoutSuffix || isFuture) {
5683 return result + (plural$1(number) ? 'hodiny' : 'hodin');
5684 } else {
5685 return result + 'hodinami';
5686 }
5687 break;
5688 case 'd': // a day / in a day / a day ago
5689 return (withoutSuffix || isFuture) ? 'den' : 'dnem';
5690 case 'dd': // 9 days / in 9 days / 9 days ago
5691 if (withoutSuffix || isFuture) {
5692 return result + (plural$1(number) ? 'dny' : 'dní');
5693 } else {
5694 return result + 'dny';
5695 }
5696 break;
5697 case 'M': // a month / in a month / a month ago
5698 return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
5699 case 'MM': // 9 months / in 9 months / 9 months ago
5700 if (withoutSuffix || isFuture) {
5701 return result + (plural$1(number) ? 'měsíce' : 'měsíců');
5702 } else {
5703 return result + 'měsíci';
5704 }
5705 break;
5706 case 'y': // a year / in a year / a year ago
5707 return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
5708 case 'yy': // 9 years / in 9 years / 9 years ago
5709 if (withoutSuffix || isFuture) {
5710 return result + (plural$1(number) ? 'roky' : 'let');
5711 } else {
5712 return result + 'lety';
5713 }
5714 break;
5715 }
5716 }
5717
5718 hooks.defineLocale('cs', {
5719 months : months$3,
5720 monthsShort : monthsShort,
5721 monthsParse : (function (months, monthsShort) {
5722 var i, _monthsParse = [];
5723 for (i = 0; i < 12; i++) {
5724 // use custom parser to solve problem with July (červenec)
5725 _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
5726 }
5727 return _monthsParse;
5728 }(months$3, monthsShort)),
5729 shortMonthsParse : (function (monthsShort) {
5730 var i, _shortMonthsParse = [];
5731 for (i = 0; i < 12; i++) {
5732 _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');
5733 }
5734 return _shortMonthsParse;
5735 }(monthsShort)),
5736 longMonthsParse : (function (months) {
5737 var i, _longMonthsParse = [];
5738 for (i = 0; i < 12; i++) {
5739 _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');
5740 }
5741 return _longMonthsParse;
5742 }(months$3)),
5743 weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
5744 weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),
5745 weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),
5746 longDateFormat : {
5747 LT: 'H:mm',
5748 LTS : 'H:mm:ss',
5749 L : 'DD.MM.YYYY',
5750 LL : 'D. MMMM YYYY',
5751 LLL : 'D. MMMM YYYY H:mm',
5752 LLLL : 'dddd D. MMMM YYYY H:mm',
5753 l : 'D. M. YYYY'
5754 },
5755 calendar : {
5756 sameDay: '[dnes v] LT',
5757 nextDay: '[zítra v] LT',
5758 nextWeek: function () {
5759 switch (this.day()) {
5760 case 0:
5761 return '[v neděli v] LT';
5762 case 1:
5763 case 2:
5764 return '[v] dddd [v] LT';
5765 case 3:
5766 return '[ve středu v] LT';
5767 case 4:
5768 return '[ve čtvrtek v] LT';
5769 case 5:
5770 return '[v pátek v] LT';
5771 case 6:
5772 return '[v sobotu v] LT';
5773 }
5774 },
5775 lastDay: '[včera v] LT',
5776 lastWeek: function () {
5777 switch (this.day()) {
5778 case 0:
5779 return '[minulou neděli v] LT';
5780 case 1:
5781 case 2:
5782 return '[minulé] dddd [v] LT';
5783 case 3:
5784 return '[minulou středu v] LT';
5785 case 4:
5786 case 5:
5787 return '[minulý] dddd [v] LT';
5788 case 6:
5789 return '[minulou sobotu v] LT';
5790 }
5791 },
5792 sameElse: 'L'
5793 },
5794 relativeTime : {
5795 future : 'za %s',
5796 past : 'před %s',
5797 s : translate$1,
5798 m : translate$1,
5799 mm : translate$1,
5800 h : translate$1,
5801 hh : translate$1,
5802 d : translate$1,
5803 dd : translate$1,
5804 M : translate$1,
5805 MM : translate$1,
5806 y : translate$1,
5807 yy : translate$1
5808 },
5809 ordinalParse : /\d{1,2}\./,
5810 ordinal : '%d.',
5811 week : {
5812 dow : 1, // Monday is the first day of the week.
5813 doy : 4 // The week that contains Jan 4th is the first week of the year.
5814 }
5815 });
5816
5817 //! moment.js locale configuration
5818 //! locale : Chuvash [cv]
5819 //! author : Anatoly Mironov : https://github.com/mirontoli
5820
5821 hooks.defineLocale('cv', {
5822 months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),
5823 monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
5824 weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),
5825 weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
5826 weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
5827 longDateFormat : {
5828 LT : 'HH:mm',
5829 LTS : 'HH:mm:ss',
5830 L : 'DD-MM-YYYY',
5831 LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
5832 LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
5833 LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'
5834 },
5835 calendar : {
5836 sameDay: '[Паян] LT [сехетре]',
5837 nextDay: '[Ыран] LT [сехетре]',
5838 lastDay: '[Ӗнер] LT [сехетре]',
5839 nextWeek: '[Ҫитес] dddd LT [сехетре]',
5840 lastWeek: '[Иртнӗ] dddd LT [сехетре]',
5841 sameElse: 'L'
5842 },
5843 relativeTime : {
5844 future : function (output) {
5845 var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';
5846 return output + affix;
5847 },
5848 past : '%s каялла',
5849 s : 'пӗр-ик ҫеккунт',
5850 m : 'пӗр минут',
5851 mm : '%d минут',
5852 h : 'пӗр сехет',
5853 hh : '%d сехет',
5854 d : 'пӗр кун',
5855 dd : '%d кун',
5856 M : 'пӗр уйӑх',
5857 MM : '%d уйӑх',
5858 y : 'пӗр ҫул',
5859 yy : '%d ҫул'
5860 },
5861 ordinalParse: /\d{1,2}-мӗш/,
5862 ordinal : '%d-мӗш',
5863 week : {
5864 dow : 1, // Monday is the first day of the week.
5865 doy : 7 // The week that contains Jan 1st is the first week of the year.
5866 }
5867 });
5868
5869 //! moment.js locale configuration
5870 //! locale : Welsh [cy]
5871 //! author : Robert Allen : https://github.com/robgallen
5872 //! author : https://github.com/ryangreaves
5873
5874 hooks.defineLocale('cy', {
5875 months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
5876 monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
5877 weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
5878 weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
5879 weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
5880 weekdaysParseExact : true,
5881 // time formats are the same as en-gb
5882 longDateFormat: {
5883 LT: 'HH:mm',
5884 LTS : 'HH:mm:ss',
5885 L: 'DD/MM/YYYY',
5886 LL: 'D MMMM YYYY',
5887 LLL: 'D MMMM YYYY HH:mm',
5888 LLLL: 'dddd, D MMMM YYYY HH:mm'
5889 },
5890 calendar: {
5891 sameDay: '[Heddiw am] LT',
5892 nextDay: '[Yfory am] LT',
5893 nextWeek: 'dddd [am] LT',
5894 lastDay: '[Ddoe am] LT',
5895 lastWeek: 'dddd [diwethaf am] LT',
5896 sameElse: 'L'
5897 },
5898 relativeTime: {
5899 future: 'mewn %s',
5900 past: '%s yn ôl',
5901 s: 'ychydig eiliadau',
5902 m: 'munud',
5903 mm: '%d munud',
5904 h: 'awr',
5905 hh: '%d awr',
5906 d: 'diwrnod',
5907 dd: '%d diwrnod',
5908 M: 'mis',
5909 MM: '%d mis',
5910 y: 'blwyddyn',
5911 yy: '%d flynedd'
5912 },
5913 ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
5914 // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
5915 ordinal: function (number) {
5916 var b = number,
5917 output = '',
5918 lookup = [
5919 '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
5920 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
5921 ];
5922 if (b > 20) {
5923 if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
5924 output = 'fed'; // not 30ain, 70ain or 90ain
5925 } else {
5926 output = 'ain';
5927 }
5928 } else if (b > 0) {
5929 output = lookup[b];
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 //! locale : Danish [da]
5941 //! author : Ulrik Nielsen : https://github.com/mrbase
5942
5943 hooks.defineLocale('da', {
5944 months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
5945 monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
5946 weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
5947 weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),
5948 weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
5949 longDateFormat : {
5950 LT : 'HH:mm',
5951 LTS : 'HH:mm:ss',
5952 L : 'DD/MM/YYYY',
5953 LL : 'D. MMMM YYYY',
5954 LLL : 'D. MMMM YYYY HH:mm',
5955 LLLL : 'dddd [d.] D. MMMM YYYY HH:mm'
5956 },
5957 calendar : {
5958 sameDay : '[I dag kl.] LT',
5959 nextDay : '[I morgen kl.] LT',
5960 nextWeek : 'dddd [kl.] LT',
5961 lastDay : '[I går kl.] LT',
5962 lastWeek : '[sidste] dddd [kl] LT',
5963 sameElse : 'L'
5964 },
5965 relativeTime : {
5966 future : 'om %s',
5967 past : '%s siden',
5968 s : 'få sekunder',
5969 m : 'et minut',
5970 mm : '%d minutter',
5971 h : 'en time',
5972 hh : '%d timer',
5973 d : 'en dag',
5974 dd : '%d dage',
5975 M : 'en måned',
5976 MM : '%d måneder',
5977 y : 'et år',
5978 yy : '%d år'
5979 },
5980 ordinalParse: /\d{1,2}\./,
5981 ordinal : '%d.',
5982 week : {
5983 dow : 1, // Monday is the first day of the week.
5984 doy : 4 // The week that contains Jan 4th is the first week of the year.
5985 }
5986 });
5987
5988 //! moment.js locale configuration
5989 //! locale : German (Austria) [de-at]
5990 //! author : lluchs : https://github.com/lluchs
5991 //! author: Menelion Elensúle: https://github.com/Oire
5992 //! author : Martin Groller : https://github.com/MadMG
5993 //! author : Mikolaj Dadela : https://github.com/mik01aj
5994
5995 function processRelativeTime(number, withoutSuffix, key, isFuture) {
5996 var format = {
5997 'm': ['eine Minute', 'einer Minute'],
5998 'h': ['eine Stunde', 'einer Stunde'],
5999 'd': ['ein Tag', 'einem Tag'],
6000 'dd': [number + ' Tage', number + ' Tagen'],
6001 'M': ['ein Monat', 'einem Monat'],
6002 'MM': [number + ' Monate', number + ' Monaten'],
6003 'y': ['ein Jahr', 'einem Jahr'],
6004 'yy': [number + ' Jahre', number + ' Jahren']
6005 };
6006 return withoutSuffix ? format[key][0] : format[key][1];
6007 }
6008
6009 hooks.defineLocale('de-at', {
6010 months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6011 monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
6012 monthsParseExact : true,
6013 weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6014 weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6015 weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6016 weekdaysParseExact : true,
6017 longDateFormat : {
6018 LT: 'HH:mm',
6019 LTS: 'HH:mm:ss',
6020 L : 'DD.MM.YYYY',
6021 LL : 'D. MMMM YYYY',
6022 LLL : 'D. MMMM YYYY HH:mm',
6023 LLLL : 'dddd, D. MMMM YYYY HH:mm'
6024 },
6025 calendar : {
6026 sameDay: '[heute um] LT [Uhr]',
6027 sameElse: 'L',
6028 nextDay: '[morgen um] LT [Uhr]',
6029 nextWeek: 'dddd [um] LT [Uhr]',
6030 lastDay: '[gestern um] LT [Uhr]',
6031 lastWeek: '[letzten] dddd [um] LT [Uhr]'
6032 },
6033 relativeTime : {
6034 future : 'in %s',
6035 past : 'vor %s',
6036 s : 'ein paar Sekunden',
6037 m : processRelativeTime,
6038 mm : '%d Minuten',
6039 h : processRelativeTime,
6040 hh : '%d Stunden',
6041 d : processRelativeTime,
6042 dd : processRelativeTime,
6043 M : processRelativeTime,
6044 MM : processRelativeTime,
6045 y : processRelativeTime,
6046 yy : processRelativeTime
6047 },
6048 ordinalParse: /\d{1,2}\./,
6049 ordinal : '%d.',
6050 week : {
6051 dow : 1, // Monday is the first day of the week.
6052 doy : 4 // The week that contains Jan 4th is the first week of the year.
6053 }
6054 });
6055
6056 //! moment.js locale configuration
6057 //! locale : German [de]
6058 //! author : lluchs : https://github.com/lluchs
6059 //! author: Menelion Elensúle: https://github.com/Oire
6060 //! author : Mikolaj Dadela : https://github.com/mik01aj
6061
6062 function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
6063 var format = {
6064 'm': ['eine Minute', 'einer Minute'],
6065 'h': ['eine Stunde', 'einer Stunde'],
6066 'd': ['ein Tag', 'einem Tag'],
6067 'dd': [number + ' Tage', number + ' Tagen'],
6068 'M': ['ein Monat', 'einem Monat'],
6069 'MM': [number + ' Monate', number + ' Monaten'],
6070 'y': ['ein Jahr', 'einem Jahr'],
6071 'yy': [number + ' Jahre', number + ' Jahren']
6072 };
6073 return withoutSuffix ? format[key][0] : format[key][1];
6074 }
6075
6076 hooks.defineLocale('de', {
6077 months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6078 monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
6079 monthsParseExact : true,
6080 weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6081 weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6082 weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6083 weekdaysParseExact : true,
6084 longDateFormat : {
6085 LT: 'HH:mm',
6086 LTS: 'HH:mm:ss',
6087 L : 'DD.MM.YYYY',
6088 LL : 'D. MMMM YYYY',
6089 LLL : 'D. MMMM YYYY HH:mm',
6090 LLLL : 'dddd, D. MMMM YYYY HH:mm'
6091 },
6092 calendar : {
6093 sameDay: '[heute um] LT [Uhr]',
6094 sameElse: 'L',
6095 nextDay: '[morgen um] LT [Uhr]',
6096 nextWeek: 'dddd [um] LT [Uhr]',
6097 lastDay: '[gestern um] LT [Uhr]',
6098 lastWeek: '[letzten] dddd [um] LT [Uhr]'
6099 },
6100 relativeTime : {
6101 future : 'in %s',
6102 past : 'vor %s',
6103 s : 'ein paar Sekunden',
6104 m : processRelativeTime$1,
6105 mm : '%d Minuten',
6106 h : processRelativeTime$1,
6107 hh : '%d Stunden',
6108 d : processRelativeTime$1,
6109 dd : processRelativeTime$1,
6110 M : processRelativeTime$1,
6111 MM : processRelativeTime$1,
6112 y : processRelativeTime$1,
6113 yy : processRelativeTime$1
6114 },
6115 ordinalParse: /\d{1,2}\./,
6116 ordinal : '%d.',
6117 week : {
6118 dow : 1, // Monday is the first day of the week.
6119 doy : 4 // The week that contains Jan 4th is the first week of the year.
6120 }
6121 });
6122
6123 //! moment.js locale configuration
6124 //! locale : Maldivian [dv]
6125 //! author : Jawish Hameed : https://github.com/jawish
6126
6127 var months$4 = [
6128 'ޖެނުއަރީ',
6129 'ފެބްރުއަރީ',
6130 'މާރިޗު',
6131 'އޭޕްރީލު',
6132 'މޭ',
6133 'ޖޫން',
6134 'ޖުލައި',
6135 'އޯގަސްޓު',
6136 'ސެޕްޓެމްބަރު',
6137 'އޮކްޓޯބަރު',
6138 'ނޮވެމްބަރު',
6139 'ޑިސެމްބަރު'
6140 ];
6141 var weekdays = [
6142 'އާދިއްތަ',
6143 'ހޯމަ',
6144 'އަންގާރަ',
6145 'ބުދަ',
6146 'ބުރާސްފަތި',
6147 'ހުކުރު',
6148 'ހޮނިހިރު'
6149 ];
6150
6151 hooks.defineLocale('dv', {
6152 months : months$4,
6153 monthsShort : months$4,
6154 weekdays : weekdays,
6155 weekdaysShort : weekdays,
6156 weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
6157 longDateFormat : {
6158
6159 LT : 'HH:mm',
6160 LTS : 'HH:mm:ss',
6161 L : 'D/M/YYYY',
6162 LL : 'D MMMM YYYY',
6163 LLL : 'D MMMM YYYY HH:mm',
6164 LLLL : 'dddd D MMMM YYYY HH:mm'
6165 },
6166 meridiemParse: /މކ|މފ/,
6167 isPM : function (input) {
6168 return 'މފ' === input;
6169 },
6170 meridiem : function (hour, minute, isLower) {
6171 if (hour < 12) {
6172 return 'މކ';
6173 } else {
6174 return 'މފ';
6175 }
6176 },
6177 calendar : {
6178 sameDay : '[މިއަދު] LT',
6179 nextDay : '[މާދަމާ] LT',
6180 nextWeek : 'dddd LT',
6181 lastDay : '[އިއްޔެ] LT',
6182 lastWeek : '[ފާއިތުވި] dddd LT',
6183 sameElse : 'L'
6184 },
6185 relativeTime : {
6186 future : 'ތެރޭގައި %s',
6187 past : 'ކުރިން %s',
6188 s : 'ސިކުންތުކޮޅެއް',
6189 m : 'މިނިޓެއް',
6190 mm : 'މިނިޓު %d',
6191 h : 'ގަޑިއިރެއް',
6192 hh : 'ގަޑިއިރު %d',
6193 d : 'ދުވަހެއް',
6194 dd : 'ދުވަސް %d',
6195 M : 'މަހެއް',
6196 MM : 'މަސް %d',
6197 y : 'އަހަރެއް',
6198 yy : 'އަހަރު %d'
6199 },
6200 preparse: function (string) {
6201 return string.replace(/،/g, ',');
6202 },
6203 postformat: function (string) {
6204 return string.replace(/,/g, '،');
6205 },
6206 week : {
6207 dow : 7, // Sunday is the first day of the week.
6208 doy : 12 // The week that contains Jan 1st is the first week of the year.
6209 }
6210 });
6211
6212 //! moment.js locale configuration
6213 //! locale : Greek [el]
6214 //! author : Aggelos Karalias : https://github.com/mehiel
6215
6216 hooks.defineLocale('el', {
6217 monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
6218 monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
6219 months : function (momentToFormat, format) {
6220 if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'
6221 return this._monthsGenitiveEl[momentToFormat.month()];
6222 } else {
6223 return this._monthsNominativeEl[momentToFormat.month()];
6224 }
6225 },
6226 monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
6227 weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),
6228 weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
6229 weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
6230 meridiem : function (hours, minutes, isLower) {
6231 if (hours > 11) {
6232 return isLower ? 'μμ' : 'ΜΜ';
6233 } else {
6234 return isLower ? 'πμ' : 'ΠΜ';
6235 }
6236 },
6237 isPM : function (input) {
6238 return ((input + '').toLowerCase()[0] === 'μ');
6239 },
6240 meridiemParse : /[ΠΜ]\.?Μ?\.?/i,
6241 longDateFormat : {
6242 LT : 'h:mm A',
6243 LTS : 'h:mm:ss A',
6244 L : 'DD/MM/YYYY',
6245 LL : 'D MMMM YYYY',
6246 LLL : 'D MMMM YYYY h:mm A',
6247 LLLL : 'dddd, D MMMM YYYY h:mm A'
6248 },
6249 calendarEl : {
6250 sameDay : '[Σήμερα {}] LT',
6251 nextDay : '[Αύριο {}] LT',
6252 nextWeek : 'dddd [{}] LT',
6253 lastDay : '[Χθες {}] LT',
6254 lastWeek : function () {
6255 switch (this.day()) {
6256 case 6:
6257 return '[το προηγούμενο] dddd [{}] LT';
6258 default:
6259 return '[την προηγούμενη] dddd [{}] LT';
6260 }
6261 },
6262 sameElse : 'L'
6263 },
6264 calendar : function (key, mom) {
6265 var output = this._calendarEl[key],
6266 hours = mom && mom.hours();
6267 if (isFunction(output)) {
6268 output = output.apply(mom);
6269 }
6270 return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));
6271 },
6272 relativeTime : {
6273 future : 'σε %s',
6274 past : '%s πριν',
6275 s : 'λίγα δευτερόλεπτα',
6276 m : 'ένα λεπτό',
6277 mm : '%d λεπτά',
6278 h : 'μία ώρα',
6279 hh : '%d ώρες',
6280 d : 'μία μέρα',
6281 dd : '%d μέρες',
6282 M : 'ένας μήνας',
6283 MM : '%d μήνες',
6284 y : 'ένας χρόνος',
6285 yy : '%d χρόνια'
6286 },
6287 ordinalParse: /\d{1,2}η/,
6288 ordinal: '%dη',
6289 week : {
6290 dow : 1, // Monday is the first day of the week.
6291 doy : 4 // The week that contains Jan 4st is the first week of the year.
6292 }
6293 });
6294
6295 //! moment.js locale configuration
6296 //! locale : English (Australia) [en-au]
6297 //! author : Jared Morse : https://github.com/jarcoal
6298
6299 hooks.defineLocale('en-au', {
6300 months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6301 monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6302 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6303 weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6304 weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6305 longDateFormat : {
6306 LT : 'h:mm A',
6307 LTS : 'h:mm:ss A',
6308 L : 'DD/MM/YYYY',
6309 LL : 'D MMMM YYYY',
6310 LLL : 'D MMMM YYYY h:mm A',
6311 LLLL : 'dddd, D MMMM YYYY h:mm A'
6312 },
6313 calendar : {
6314 sameDay : '[Today at] LT',
6315 nextDay : '[Tomorrow at] LT',
6316 nextWeek : 'dddd [at] LT',
6317 lastDay : '[Yesterday at] LT',
6318 lastWeek : '[Last] dddd [at] LT',
6319 sameElse : 'L'
6320 },
6321 relativeTime : {
6322 future : 'in %s',
6323 past : '%s ago',
6324 s : 'a few seconds',
6325 m : 'a minute',
6326 mm : '%d minutes',
6327 h : 'an hour',
6328 hh : '%d hours',
6329 d : 'a day',
6330 dd : '%d days',
6331 M : 'a month',
6332 MM : '%d months',
6333 y : 'a year',
6334 yy : '%d years'
6335 },
6336 ordinalParse: /\d{1,2}(st|nd|rd|th)/,
6337 ordinal : function (number) {
6338 var b = number % 10,
6339 output = (~~(number % 100 / 10) === 1) ? 'th' :
6340 (b === 1) ? 'st' :
6341 (b === 2) ? 'nd' :
6342 (b === 3) ? 'rd' : 'th';
6343 return number + output;
6344 },
6345 week : {
6346 dow : 1, // Monday is the first day of the week.
6347 doy : 4 // The week that contains Jan 4th is the first week of the year.
6348 }
6349 });
6350
6351 //! moment.js locale configuration
6352 //! locale : English (Canada) [en-ca]
6353 //! author : Jonathan Abourbih : https://github.com/jonbca
6354
6355 hooks.defineLocale('en-ca', {
6356 months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6357 monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6358 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6359 weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6360 weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6361 longDateFormat : {
6362 LT : 'h:mm A',
6363 LTS : 'h:mm:ss A',
6364 L : 'YYYY-MM-DD',
6365 LL : 'MMMM D, YYYY',
6366 LLL : 'MMMM D, YYYY h:mm A',
6367 LLLL : 'dddd, MMMM D, YYYY h:mm A'
6368 },
6369 calendar : {
6370 sameDay : '[Today at] LT',
6371 nextDay : '[Tomorrow at] LT',
6372 nextWeek : 'dddd [at] LT',
6373 lastDay : '[Yesterday at] LT',
6374 lastWeek : '[Last] dddd [at] LT',
6375 sameElse : 'L'
6376 },
6377 relativeTime : {
6378 future : 'in %s',
6379 past : '%s ago',
6380 s : 'a few seconds',
6381 m : 'a minute',
6382 mm : '%d minutes',
6383 h : 'an hour',
6384 hh : '%d hours',
6385 d : 'a day',
6386 dd : '%d days',
6387 M : 'a month',
6388 MM : '%d months',
6389 y : 'a year',
6390 yy : '%d years'
6391 },
6392 ordinalParse: /\d{1,2}(st|nd|rd|th)/,
6393 ordinal : function (number) {
6394 var b = number % 10,
6395 output = (~~(number % 100 / 10) === 1) ? 'th' :
6396 (b === 1) ? 'st' :
6397 (b === 2) ? 'nd' :
6398 (b === 3) ? 'rd' : 'th';
6399 return number + output;
6400 }
6401 });
6402
6403 //! moment.js locale configuration
6404 //! locale : English (United Kingdom) [en-gb]
6405 //! author : Chris Gedrim : https://github.com/chrisgedrim
6406
6407 hooks.defineLocale('en-gb', {
6408 months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6409 monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6410 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6411 weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6412 weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6413 longDateFormat : {
6414 LT : 'HH:mm',
6415 LTS : 'HH:mm:ss',
6416 L : 'DD/MM/YYYY',
6417 LL : 'D MMMM YYYY',
6418 LLL : 'D MMMM YYYY HH:mm',
6419 LLLL : 'dddd, D MMMM YYYY HH:mm'
6420 },
6421 calendar : {
6422 sameDay : '[Today at] LT',
6423 nextDay : '[Tomorrow at] LT',
6424 nextWeek : 'dddd [at] LT',
6425 lastDay : '[Yesterday at] LT',
6426 lastWeek : '[Last] dddd [at] LT',
6427 sameElse : 'L'
6428 },
6429 relativeTime : {
6430 future : 'in %s',
6431 past : '%s ago',
6432 s : 'a few seconds',
6433 m : 'a minute',
6434 mm : '%d minutes',
6435 h : 'an hour',
6436 hh : '%d hours',
6437 d : 'a day',
6438 dd : '%d days',
6439 M : 'a month',
6440 MM : '%d months',
6441 y : 'a year',
6442 yy : '%d years'
6443 },
6444 ordinalParse: /\d{1,2}(st|nd|rd|th)/,
6445 ordinal : function (number) {
6446 var b = number % 10,
6447 output = (~~(number % 100 / 10) === 1) ? 'th' :
6448 (b === 1) ? 'st' :
6449 (b === 2) ? 'nd' :
6450 (b === 3) ? 'rd' : 'th';
6451 return number + output;
6452 },
6453 week : {
6454 dow : 1, // Monday is the first day of the week.
6455 doy : 4 // The week that contains Jan 4th is the first week of the year.
6456 }
6457 });
6458
6459 //! moment.js locale configuration
6460 //! locale : English (Ireland) [en-ie]
6461 //! author : Chris Cartlidge : https://github.com/chriscartlidge
6462
6463 hooks.defineLocale('en-ie', {
6464 months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6465 monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6466 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6467 weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6468 weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6469 longDateFormat : {
6470 LT : 'HH:mm',
6471 LTS : 'HH:mm:ss',
6472 L : 'DD-MM-YYYY',
6473 LL : 'D MMMM YYYY',
6474 LLL : 'D MMMM YYYY HH:mm',
6475 LLLL : 'dddd D MMMM YYYY HH:mm'
6476 },
6477 calendar : {
6478 sameDay : '[Today at] LT',
6479 nextDay : '[Tomorrow at] LT',
6480 nextWeek : 'dddd [at] LT',
6481 lastDay : '[Yesterday at] LT',
6482 lastWeek : '[Last] dddd [at] LT',
6483 sameElse : 'L'
6484 },
6485 relativeTime : {
6486 future : 'in %s',
6487 past : '%s ago',
6488 s : 'a few seconds',
6489 m : 'a minute',
6490 mm : '%d minutes',
6491 h : 'an hour',
6492 hh : '%d hours',
6493 d : 'a day',
6494 dd : '%d days',
6495 M : 'a month',
6496 MM : '%d months',
6497 y : 'a year',
6498 yy : '%d years'
6499 },
6500 ordinalParse: /\d{1,2}(st|nd|rd|th)/,
6501 ordinal : function (number) {
6502 var b = number % 10,
6503 output = (~~(number % 100 / 10) === 1) ? 'th' :
6504 (b === 1) ? 'st' :
6505 (b === 2) ? 'nd' :
6506 (b === 3) ? 'rd' : 'th';
6507 return number + output;
6508 },
6509 week : {
6510 dow : 1, // Monday is the first day of the week.
6511 doy : 4 // The week that contains Jan 4th is the first week of the year.
6512 }
6513 });
6514
6515 //! moment.js locale configuration
6516 //! locale : English (New Zealand) [en-nz]
6517 //! author : Luke McGregor : https://github.com/lukemcgregor
6518
6519 hooks.defineLocale('en-nz', {
6520 months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6521 monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6522 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6523 weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6524 weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6525 longDateFormat : {
6526 LT : 'h:mm A',
6527 LTS : 'h:mm:ss A',
6528 L : 'DD/MM/YYYY',
6529 LL : 'D MMMM YYYY',
6530 LLL : 'D MMMM YYYY h:mm A',
6531 LLLL : 'dddd, D MMMM YYYY h:mm A'
6532 },
6533 calendar : {
6534 sameDay : '[Today at] LT',
6535 nextDay : '[Tomorrow at] LT',
6536 nextWeek : 'dddd [at] LT',
6537 lastDay : '[Yesterday at] LT',
6538 lastWeek : '[Last] dddd [at] LT',
6539 sameElse : 'L'
6540 },
6541 relativeTime : {
6542 future : 'in %s',
6543 past : '%s ago',
6544 s : 'a few seconds',
6545 m : 'a minute',
6546 mm : '%d minutes',
6547 h : 'an hour',
6548 hh : '%d hours',
6549 d : 'a day',
6550 dd : '%d days',
6551 M : 'a month',
6552 MM : '%d months',
6553 y : 'a year',
6554 yy : '%d years'
6555 },
6556 ordinalParse: /\d{1,2}(st|nd|rd|th)/,
6557 ordinal : function (number) {
6558 var b = number % 10,
6559 output = (~~(number % 100 / 10) === 1) ? 'th' :
6560 (b === 1) ? 'st' :
6561 (b === 2) ? 'nd' :
6562 (b === 3) ? 'rd' : 'th';
6563 return number + output;
6564 },
6565 week : {
6566 dow : 1, // Monday is the first day of the week.
6567 doy : 4 // The week that contains Jan 4th is the first week of the year.
6568 }
6569 });
6570
6571 //! moment.js locale configuration
6572 //! locale : Esperanto [eo]
6573 //! author : Colin Dean : https://github.com/colindean
6574 //! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
6575 //! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
6576
6577 hooks.defineLocale('eo', {
6578 months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),
6579 monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),
6580 weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'),
6581 weekdaysShort : 'Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab'.split('_'),
6582 weekdaysMin : 'Di_Lu_Ma_Me_Ĵa_Ve_Sa'.split('_'),
6583 longDateFormat : {
6584 LT : 'HH:mm',
6585 LTS : 'HH:mm:ss',
6586 L : 'YYYY-MM-DD',
6587 LL : 'D[-an de] MMMM, YYYY',
6588 LLL : 'D[-an de] MMMM, YYYY HH:mm',
6589 LLLL : 'dddd, [la] D[-an de] MMMM, YYYY HH:mm'
6590 },
6591 meridiemParse: /[ap]\.t\.m/i,
6592 isPM: function (input) {
6593 return input.charAt(0).toLowerCase() === 'p';
6594 },
6595 meridiem : function (hours, minutes, isLower) {
6596 if (hours > 11) {
6597 return isLower ? 'p.t.m.' : 'P.T.M.';
6598 } else {
6599 return isLower ? 'a.t.m.' : 'A.T.M.';
6600 }
6601 },
6602 calendar : {
6603 sameDay : '[Hodiaŭ je] LT',
6604 nextDay : '[Morgaŭ je] LT',
6605 nextWeek : 'dddd [je] LT',
6606 lastDay : '[Hieraŭ je] LT',
6607 lastWeek : '[pasinta] dddd [je] LT',
6608 sameElse : 'L'
6609 },
6610 relativeTime : {
6611 future : 'je %s',
6612 past : 'antaŭ %s',
6613 s : 'sekundoj',
6614 m : 'minuto',
6615 mm : '%d minutoj',
6616 h : 'horo',
6617 hh : '%d horoj',
6618 d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo
6619 dd : '%d tagoj',
6620 M : 'monato',
6621 MM : '%d monatoj',
6622 y : 'jaro',
6623 yy : '%d jaroj'
6624 },
6625 ordinalParse: /\d{1,2}a/,
6626 ordinal : '%da',
6627 week : {
6628 dow : 1, // Monday is the first day of the week.
6629 doy : 7 // The week that contains Jan 1st is the first week of the year.
6630 }
6631 });
6632
6633 //! moment.js locale configuration
6634 //! locale : Spanish (Dominican Republic) [es-do]
6635
6636 var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');
6637 var monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
6638
6639 hooks.defineLocale('es-do', {
6640 months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
6641 monthsShort : function (m, format) {
6642 if (/-MMM-/.test(format)) {
6643 return monthsShort$1[m.month()];
6644 } else {
6645 return monthsShortDot[m.month()];
6646 }
6647 },
6648 monthsParseExact : true,
6649 weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
6650 weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
6651 weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
6652 weekdaysParseExact : true,
6653 longDateFormat : {
6654 LT : 'h:mm A',
6655 LTS : 'h:mm:ss A',
6656 L : 'DD/MM/YYYY',
6657 LL : 'D [de] MMMM [de] YYYY',
6658 LLL : 'D [de] MMMM [de] YYYY h:mm A',
6659 LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'
6660 },
6661 calendar : {
6662 sameDay : function () {
6663 return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6664 },
6665 nextDay : function () {
6666 return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6667 },
6668 nextWeek : function () {
6669 return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6670 },
6671 lastDay : function () {
6672 return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6673 },
6674 lastWeek : function () {
6675 return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6676 },
6677 sameElse : 'L'
6678 },
6679 relativeTime : {
6680 future : 'en %s',
6681 past : 'hace %s',
6682 s : 'unos segundos',
6683 m : 'un minuto',
6684 mm : '%d minutos',
6685 h : 'una hora',
6686 hh : '%d horas',
6687 d : 'un día',
6688 dd : '%d días',
6689 M : 'un mes',
6690 MM : '%d meses',
6691 y : 'un año',
6692 yy : '%d años'
6693 },
6694 ordinalParse : /\d{1,2}º/,
6695 ordinal : '%dº',
6696 week : {
6697 dow : 1, // Monday is the first day of the week.
6698 doy : 4 // The week that contains Jan 4th is the first week of the year.
6699 }
6700 });
6701
6702 //! moment.js locale configuration
6703 //! locale : Spanish [es]
6704 //! author : Julio Napurí : https://github.com/julionc
6705
6706 var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');
6707 var monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
6708
6709 hooks.defineLocale('es', {
6710 months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
6711 monthsShort : function (m, format) {
6712 if (/-MMM-/.test(format)) {
6713 return monthsShort$2[m.month()];
6714 } else {
6715 return monthsShortDot$1[m.month()];
6716 }
6717 },
6718 monthsParseExact : true,
6719 weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
6720 weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
6721 weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
6722 weekdaysParseExact : true,
6723 longDateFormat : {
6724 LT : 'H:mm',
6725 LTS : 'H:mm:ss',
6726 L : 'DD/MM/YYYY',
6727 LL : 'D [de] MMMM [de] YYYY',
6728 LLL : 'D [de] MMMM [de] YYYY H:mm',
6729 LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
6730 },
6731 calendar : {
6732 sameDay : function () {
6733 return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6734 },
6735 nextDay : function () {
6736 return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6737 },
6738 nextWeek : function () {
6739 return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6740 },
6741 lastDay : function () {
6742 return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6743 },
6744 lastWeek : function () {
6745 return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6746 },
6747 sameElse : 'L'
6748 },
6749 relativeTime : {
6750 future : 'en %s',
6751 past : 'hace %s',
6752 s : 'unos segundos',
6753 m : 'un minuto',
6754 mm : '%d minutos',
6755 h : 'una hora',
6756 hh : '%d horas',
6757 d : 'un día',
6758 dd : '%d días',
6759 M : 'un mes',
6760 MM : '%d meses',
6761 y : 'un año',
6762 yy : '%d años'
6763 },
6764 ordinalParse : /\d{1,2}º/,
6765 ordinal : '%dº',
6766 week : {
6767 dow : 1, // Monday is the first day of the week.
6768 doy : 4 // The week that contains Jan 4th is the first week of the year.
6769 }
6770 });
6771
6772 //! moment.js locale configuration
6773 //! locale : Estonian [et]
6774 //! author : Henry Kehlmann : https://github.com/madhenry
6775 //! improvements : Illimar Tambek : https://github.com/ragulka
6776
6777 function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
6778 var format = {
6779 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
6780 'm' : ['ühe minuti', 'üks minut'],
6781 'mm': [number + ' minuti', number + ' minutit'],
6782 'h' : ['ühe tunni', 'tund aega', 'üks tund'],
6783 'hh': [number + ' tunni', number + ' tundi'],
6784 'd' : ['ühe päeva', 'üks päev'],
6785 'M' : ['kuu aja', 'kuu aega', 'üks kuu'],
6786 'MM': [number + ' kuu', number + ' kuud'],
6787 'y' : ['ühe aasta', 'aasta', 'üks aasta'],
6788 'yy': [number + ' aasta', number + ' aastat']
6789 };
6790 if (withoutSuffix) {
6791 return format[key][2] ? format[key][2] : format[key][1];
6792 }
6793 return isFuture ? format[key][0] : format[key][1];
6794 }
6795
6796 hooks.defineLocale('et', {
6797 months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
6798 monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
6799 weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
6800 weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),
6801 weekdaysMin : 'P_E_T_K_N_R_L'.split('_'),
6802 longDateFormat : {
6803 LT : 'H:mm',
6804 LTS : 'H:mm:ss',
6805 L : 'DD.MM.YYYY',
6806 LL : 'D. MMMM YYYY',
6807 LLL : 'D. MMMM YYYY H:mm',
6808 LLLL : 'dddd, D. MMMM YYYY H:mm'
6809 },
6810 calendar : {
6811 sameDay : '[Täna,] LT',
6812 nextDay : '[Homme,] LT',
6813 nextWeek : '[Järgmine] dddd LT',
6814 lastDay : '[Eile,] LT',
6815 lastWeek : '[Eelmine] dddd LT',
6816 sameElse : 'L'
6817 },
6818 relativeTime : {
6819 future : '%s pärast',
6820 past : '%s tagasi',
6821 s : processRelativeTime$2,
6822 m : processRelativeTime$2,
6823 mm : processRelativeTime$2,
6824 h : processRelativeTime$2,
6825 hh : processRelativeTime$2,
6826 d : processRelativeTime$2,
6827 dd : '%d päeva',
6828 M : processRelativeTime$2,
6829 MM : processRelativeTime$2,
6830 y : processRelativeTime$2,
6831 yy : processRelativeTime$2
6832 },
6833 ordinalParse: /\d{1,2}\./,
6834 ordinal : '%d.',
6835 week : {
6836 dow : 1, // Monday is the first day of the week.
6837 doy : 4 // The week that contains Jan 4th is the first week of the year.
6838 }
6839 });
6840
6841 //! moment.js locale configuration
6842 //! locale : Basque [eu]
6843 //! author : Eneko Illarramendi : https://github.com/eillarra
6844
6845 hooks.defineLocale('eu', {
6846 months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
6847 monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
6848 monthsParseExact : true,
6849 weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
6850 weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),
6851 weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),
6852 weekdaysParseExact : true,
6853 longDateFormat : {
6854 LT : 'HH:mm',
6855 LTS : 'HH:mm:ss',
6856 L : 'YYYY-MM-DD',
6857 LL : 'YYYY[ko] MMMM[ren] D[a]',
6858 LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',
6859 LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
6860 l : 'YYYY-M-D',
6861 ll : 'YYYY[ko] MMM D[a]',
6862 lll : 'YYYY[ko] MMM D[a] HH:mm',
6863 llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'
6864 },
6865 calendar : {
6866 sameDay : '[gaur] LT[etan]',
6867 nextDay : '[bihar] LT[etan]',
6868 nextWeek : 'dddd LT[etan]',
6869 lastDay : '[atzo] LT[etan]',
6870 lastWeek : '[aurreko] dddd LT[etan]',
6871 sameElse : 'L'
6872 },
6873 relativeTime : {
6874 future : '%s barru',
6875 past : 'duela %s',
6876 s : 'segundo batzuk',
6877 m : 'minutu bat',
6878 mm : '%d minutu',
6879 h : 'ordu bat',
6880 hh : '%d ordu',
6881 d : 'egun bat',
6882 dd : '%d egun',
6883 M : 'hilabete bat',
6884 MM : '%d hilabete',
6885 y : 'urte bat',
6886 yy : '%d urte'
6887 },
6888 ordinalParse: /\d{1,2}\./,
6889 ordinal : '%d.',
6890 week : {
6891 dow : 1, // Monday is the first day of the week.
6892 doy : 7 // The week that contains Jan 1st is the first week of the year.
6893 }
6894 });
6895
6896 //! moment.js locale configuration
6897 //! locale : Persian [fa]
6898 //! author : Ebrahim Byagowi : https://github.com/ebraminio
6899
6900 var symbolMap$5 = {
6901 '1': '۱',
6902 '2': '۲',
6903 '3': '۳',
6904 '4': '۴',
6905 '5': '۵',
6906 '6': '۶',
6907 '7': '۷',
6908 '8': '۸',
6909 '9': '۹',
6910 '0': '۰'
6911 };
6912 var numberMap$4 = {
6913 '۱': '1',
6914 '۲': '2',
6915 '۳': '3',
6916 '۴': '4',
6917 '۵': '5',
6918 '۶': '6',
6919 '۷': '7',
6920 '۸': '8',
6921 '۹': '9',
6922 '۰': '0'
6923 };
6924
6925 hooks.defineLocale('fa', {
6926 months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
6927 monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
6928 weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
6929 weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
6930 weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
6931 weekdaysParseExact : true,
6932 longDateFormat : {
6933 LT : 'HH:mm',
6934 LTS : 'HH:mm:ss',
6935 L : 'DD/MM/YYYY',
6936 LL : 'D MMMM YYYY',
6937 LLL : 'D MMMM YYYY HH:mm',
6938 LLLL : 'dddd, D MMMM YYYY HH:mm'
6939 },
6940 meridiemParse: /قبل از ظهر|بعد از ظهر/,
6941 isPM: function (input) {
6942 return /بعد از ظهر/.test(input);
6943 },
6944 meridiem : function (hour, minute, isLower) {
6945 if (hour < 12) {
6946 return 'قبل از ظهر';
6947 } else {
6948 return 'بعد از ظهر';
6949 }
6950 },
6951 calendar : {
6952 sameDay : '[امروز ساعت] LT',
6953 nextDay : '[فردا ساعت] LT',
6954 nextWeek : 'dddd [ساعت] LT',
6955 lastDay : '[دیروز ساعت] LT',
6956 lastWeek : 'dddd [پیش] [ساعت] LT',
6957 sameElse : 'L'
6958 },
6959 relativeTime : {
6960 future : 'در %s',
6961 past : '%s پیش',
6962 s : 'چندین ثانیه',
6963 m : 'یک دقیقه',
6964 mm : '%d دقیقه',
6965 h : 'یک ساعت',
6966 hh : '%d ساعت',
6967 d : 'یک روز',
6968 dd : '%d روز',
6969 M : 'یک ماه',
6970 MM : '%d ماه',
6971 y : 'یک سال',
6972 yy : '%d سال'
6973 },
6974 preparse: function (string) {
6975 return string.replace(/[۰-۹]/g, function (match) {
6976 return numberMap$4[match];
6977 }).replace(/،/g, ',');
6978 },
6979 postformat: function (string) {
6980 return string.replace(/\d/g, function (match) {
6981 return symbolMap$5[match];
6982 }).replace(/,/g, '،');
6983 },
6984 ordinalParse: /\d{1,2}م/,
6985 ordinal : '%dم',
6986 week : {
6987 dow : 6, // Saturday is the first day of the week.
6988 doy : 12 // The week that contains Jan 1st is the first week of the year.
6989 }
6990 });
6991
6992 //! moment.js locale configuration
6993 //! locale : Finnish [fi]
6994 //! author : Tarmo Aidantausta : https://github.com/bleadof
6995
6996 var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' ');
6997 var numbersFuture = [
6998 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
6999 numbersPast[7], numbersPast[8], numbersPast[9]
7000 ];
7001 function translate$2(number, withoutSuffix, key, isFuture) {
7002 var result = '';
7003 switch (key) {
7004 case 's':
7005 return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
7006 case 'm':
7007 return isFuture ? 'minuutin' : 'minuutti';
7008 case 'mm':
7009 result = isFuture ? 'minuutin' : 'minuuttia';
7010 break;
7011 case 'h':
7012 return isFuture ? 'tunnin' : 'tunti';
7013 case 'hh':
7014 result = isFuture ? 'tunnin' : 'tuntia';
7015 break;
7016 case 'd':
7017 return isFuture ? 'päivän' : 'päivä';
7018 case 'dd':
7019 result = isFuture ? 'päivän' : 'päivää';
7020 break;
7021 case 'M':
7022 return isFuture ? 'kuukauden' : 'kuukausi';
7023 case 'MM':
7024 result = isFuture ? 'kuukauden' : 'kuukautta';
7025 break;
7026 case 'y':
7027 return isFuture ? 'vuoden' : 'vuosi';
7028 case 'yy':
7029 result = isFuture ? 'vuoden' : 'vuotta';
7030 break;
7031 }
7032 result = verbalNumber(number, isFuture) + ' ' + result;
7033 return result;
7034 }
7035 function verbalNumber(number, isFuture) {
7036 return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
7037 }
7038
7039 hooks.defineLocale('fi', {
7040 months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
7041 monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
7042 weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
7043 weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),
7044 weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),
7045 longDateFormat : {
7046 LT : 'HH.mm',
7047 LTS : 'HH.mm.ss',
7048 L : 'DD.MM.YYYY',
7049 LL : 'Do MMMM[ta] YYYY',
7050 LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',
7051 LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
7052 l : 'D.M.YYYY',
7053 ll : 'Do MMM YYYY',
7054 lll : 'Do MMM YYYY, [klo] HH.mm',
7055 llll : 'ddd, Do MMM YYYY, [klo] HH.mm'
7056 },
7057 calendar : {
7058 sameDay : '[tänään] [klo] LT',
7059 nextDay : '[huomenna] [klo] LT',
7060 nextWeek : 'dddd [klo] LT',
7061 lastDay : '[eilen] [klo] LT',
7062 lastWeek : '[viime] dddd[na] [klo] LT',
7063 sameElse : 'L'
7064 },
7065 relativeTime : {
7066 future : '%s päästä',
7067 past : '%s sitten',
7068 s : translate$2,
7069 m : translate$2,
7070 mm : translate$2,
7071 h : translate$2,
7072 hh : translate$2,
7073 d : translate$2,
7074 dd : translate$2,
7075 M : translate$2,
7076 MM : translate$2,
7077 y : translate$2,
7078 yy : translate$2
7079 },
7080 ordinalParse: /\d{1,2}\./,
7081 ordinal : '%d.',
7082 week : {
7083 dow : 1, // Monday is the first day of the week.
7084 doy : 4 // The week that contains Jan 4th is the first week of the year.
7085 }
7086 });
7087
7088 //! moment.js locale configuration
7089 //! locale : Faroese [fo]
7090 //! author : Ragnar Johannesen : https://github.com/ragnar123
7091
7092 hooks.defineLocale('fo', {
7093 months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
7094 monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
7095 weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
7096 weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
7097 weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),
7098 longDateFormat : {
7099 LT : 'HH:mm',
7100 LTS : 'HH:mm:ss',
7101 L : 'DD/MM/YYYY',
7102 LL : 'D MMMM YYYY',
7103 LLL : 'D MMMM YYYY HH:mm',
7104 LLLL : 'dddd D. MMMM, YYYY HH:mm'
7105 },
7106 calendar : {
7107 sameDay : '[Í dag kl.] LT',
7108 nextDay : '[Í morgin kl.] LT',
7109 nextWeek : 'dddd [kl.] LT',
7110 lastDay : '[Í gjár kl.] LT',
7111 lastWeek : '[síðstu] dddd [kl] LT',
7112 sameElse : 'L'
7113 },
7114 relativeTime : {
7115 future : 'um %s',
7116 past : '%s síðani',
7117 s : 'fá sekund',
7118 m : 'ein minutt',
7119 mm : '%d minuttir',
7120 h : 'ein tími',
7121 hh : '%d tímar',
7122 d : 'ein dagur',
7123 dd : '%d dagar',
7124 M : 'ein mánaði',
7125 MM : '%d mánaðir',
7126 y : 'eitt ár',
7127 yy : '%d ár'
7128 },
7129 ordinalParse: /\d{1,2}\./,
7130 ordinal : '%d.',
7131 week : {
7132 dow : 1, // Monday is the first day of the week.
7133 doy : 4 // The week that contains Jan 4th is the first week of the year.
7134 }
7135 });
7136
7137 //! moment.js locale configuration
7138 //! locale : French (Canada) [fr-ca]
7139 //! author : Jonathan Abourbih : https://github.com/jonbca
7140
7141 hooks.defineLocale('fr-ca', {
7142 months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7143 monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7144 monthsParseExact : true,
7145 weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7146 weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7147 weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
7148 weekdaysParseExact : true,
7149 longDateFormat : {
7150 LT : 'HH:mm',
7151 LTS : 'HH:mm:ss',
7152 L : 'YYYY-MM-DD',
7153 LL : 'D MMMM YYYY',
7154 LLL : 'D MMMM YYYY HH:mm',
7155 LLLL : 'dddd D MMMM YYYY HH:mm'
7156 },
7157 calendar : {
7158 sameDay: '[Aujourd\'hui à] LT',
7159 nextDay: '[Demain à] LT',
7160 nextWeek: 'dddd [à] LT',
7161 lastDay: '[Hier à] LT',
7162 lastWeek: 'dddd [dernier à] LT',
7163 sameElse: 'L'
7164 },
7165 relativeTime : {
7166 future : 'dans %s',
7167 past : 'il y a %s',
7168 s : 'quelques secondes',
7169 m : 'une minute',
7170 mm : '%d minutes',
7171 h : 'une heure',
7172 hh : '%d heures',
7173 d : 'un jour',
7174 dd : '%d jours',
7175 M : 'un mois',
7176 MM : '%d mois',
7177 y : 'un an',
7178 yy : '%d ans'
7179 },
7180 ordinalParse: /\d{1,2}(er|e)/,
7181 ordinal : function (number) {
7182 return number + (number === 1 ? 'er' : 'e');
7183 }
7184 });
7185
7186 //! moment.js locale configuration
7187 //! locale : French (Switzerland) [fr-ch]
7188 //! author : Gaspard Bucher : https://github.com/gaspard
7189
7190 hooks.defineLocale('fr-ch', {
7191 months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7192 monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7193 monthsParseExact : true,
7194 weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7195 weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7196 weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
7197 weekdaysParseExact : true,
7198 longDateFormat : {
7199 LT : 'HH:mm',
7200 LTS : 'HH:mm:ss',
7201 L : 'DD.MM.YYYY',
7202 LL : 'D MMMM YYYY',
7203 LLL : 'D MMMM YYYY HH:mm',
7204 LLLL : 'dddd D MMMM YYYY HH:mm'
7205 },
7206 calendar : {
7207 sameDay: '[Aujourd\'hui à] LT',
7208 nextDay: '[Demain à] LT',
7209 nextWeek: 'dddd [à] LT',
7210 lastDay: '[Hier à] LT',
7211 lastWeek: 'dddd [dernier à] LT',
7212 sameElse: 'L'
7213 },
7214 relativeTime : {
7215 future : 'dans %s',
7216 past : 'il y a %s',
7217 s : 'quelques secondes',
7218 m : 'une minute',
7219 mm : '%d minutes',
7220 h : 'une heure',
7221 hh : '%d heures',
7222 d : 'un jour',
7223 dd : '%d jours',
7224 M : 'un mois',
7225 MM : '%d mois',
7226 y : 'un an',
7227 yy : '%d ans'
7228 },
7229 ordinalParse: /\d{1,2}(er|e)/,
7230 ordinal : function (number) {
7231 return number + (number === 1 ? 'er' : 'e');
7232 },
7233 week : {
7234 dow : 1, // Monday is the first day of the week.
7235 doy : 4 // The week that contains Jan 4th is the first week of the year.
7236 }
7237 });
7238
7239 //! moment.js locale configuration
7240 //! locale : French [fr]
7241 //! author : John Fischer : https://github.com/jfroffice
7242
7243 hooks.defineLocale('fr', {
7244 months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7245 monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7246 monthsParseExact : true,
7247 weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7248 weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7249 weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
7250 weekdaysParseExact : true,
7251 longDateFormat : {
7252 LT : 'HH:mm',
7253 LTS : 'HH:mm:ss',
7254 L : 'DD/MM/YYYY',
7255 LL : 'D MMMM YYYY',
7256 LLL : 'D MMMM YYYY HH:mm',
7257 LLLL : 'dddd D MMMM YYYY HH:mm'
7258 },
7259 calendar : {
7260 sameDay: '[Aujourd\'hui à] LT',
7261 nextDay: '[Demain à] LT',
7262 nextWeek: 'dddd [à] LT',
7263 lastDay: '[Hier à] LT',
7264 lastWeek: 'dddd [dernier à] LT',
7265 sameElse: 'L'
7266 },
7267 relativeTime : {
7268 future : 'dans %s',
7269 past : 'il y a %s',
7270 s : 'quelques secondes',
7271 m : 'une minute',
7272 mm : '%d minutes',
7273 h : 'une heure',
7274 hh : '%d heures',
7275 d : 'un jour',
7276 dd : '%d jours',
7277 M : 'un mois',
7278 MM : '%d mois',
7279 y : 'un an',
7280 yy : '%d ans'
7281 },
7282 ordinalParse: /\d{1,2}(er|)/,
7283 ordinal : function (number) {
7284 return number + (number === 1 ? 'er' : '');
7285 },
7286 week : {
7287 dow : 1, // Monday is the first day of the week.
7288 doy : 4 // The week that contains Jan 4th is the first week of the year.
7289 }
7290 });
7291
7292 //! moment.js locale configuration
7293 //! locale : Frisian [fy]
7294 //! author : Robin van der Vliet : https://github.com/robin0van0der0v
7295
7296 var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_');
7297 var monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
7298
7299 hooks.defineLocale('fy', {
7300 months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
7301 monthsShort : function (m, format) {
7302 if (/-MMM-/.test(format)) {
7303 return monthsShortWithoutDots[m.month()];
7304 } else {
7305 return monthsShortWithDots[m.month()];
7306 }
7307 },
7308 monthsParseExact : true,
7309 weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
7310 weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),
7311 weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
7312 weekdaysParseExact : true,
7313 longDateFormat : {
7314 LT : 'HH:mm',
7315 LTS : 'HH:mm:ss',
7316 L : 'DD-MM-YYYY',
7317 LL : 'D MMMM YYYY',
7318 LLL : 'D MMMM YYYY HH:mm',
7319 LLLL : 'dddd D MMMM YYYY HH:mm'
7320 },
7321 calendar : {
7322 sameDay: '[hjoed om] LT',
7323 nextDay: '[moarn om] LT',
7324 nextWeek: 'dddd [om] LT',
7325 lastDay: '[juster om] LT',
7326 lastWeek: '[ôfrûne] dddd [om] LT',
7327 sameElse: 'L'
7328 },
7329 relativeTime : {
7330 future : 'oer %s',
7331 past : '%s lyn',
7332 s : 'in pear sekonden',
7333 m : 'ien minút',
7334 mm : '%d minuten',
7335 h : 'ien oere',
7336 hh : '%d oeren',
7337 d : 'ien dei',
7338 dd : '%d dagen',
7339 M : 'ien moanne',
7340 MM : '%d moannen',
7341 y : 'ien jier',
7342 yy : '%d jierren'
7343 },
7344 ordinalParse: /\d{1,2}(ste|de)/,
7345 ordinal : function (number) {
7346 return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
7347 },
7348 week : {
7349 dow : 1, // Monday is the first day of the week.
7350 doy : 4 // The week that contains Jan 4th is the first week of the year.
7351 }
7352 });
7353
7354 //! moment.js locale configuration
7355 //! locale : Scottish Gaelic [gd]
7356 //! author : Jon Ashdown : https://github.com/jonashdown
7357
7358 var months$5 = [
7359 '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'
7360 ];
7361
7362 var monthsShort$3 = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];
7363
7364 var weekdays$1 = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];
7365
7366 var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];
7367
7368 var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
7369
7370 hooks.defineLocale('gd', {
7371 months : months$5,
7372 monthsShort : monthsShort$3,
7373 monthsParseExact : true,
7374 weekdays : weekdays$1,
7375 weekdaysShort : weekdaysShort,
7376 weekdaysMin : weekdaysMin,
7377 longDateFormat : {
7378 LT : 'HH:mm',
7379 LTS : 'HH:mm:ss',
7380 L : 'DD/MM/YYYY',
7381 LL : 'D MMMM YYYY',
7382 LLL : 'D MMMM YYYY HH:mm',
7383 LLLL : 'dddd, D MMMM YYYY HH:mm'
7384 },
7385 calendar : {
7386 sameDay : '[An-diugh aig] LT',
7387 nextDay : '[A-màireach aig] LT',
7388 nextWeek : 'dddd [aig] LT',
7389 lastDay : '[An-dè aig] LT',
7390 lastWeek : 'dddd [seo chaidh] [aig] LT',
7391 sameElse : 'L'
7392 },
7393 relativeTime : {
7394 future : 'ann an %s',
7395 past : 'bho chionn %s',
7396 s : 'beagan diogan',
7397 m : 'mionaid',
7398 mm : '%d mionaidean',
7399 h : 'uair',
7400 hh : '%d uairean',
7401 d : 'latha',
7402 dd : '%d latha',
7403 M : 'mìos',
7404 MM : '%d mìosan',
7405 y : 'bliadhna',
7406 yy : '%d bliadhna'
7407 },
7408 ordinalParse : /\d{1,2}(d|na|mh)/,
7409 ordinal : function (number) {
7410 var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
7411 return number + output;
7412 },
7413 week : {
7414 dow : 1, // Monday is the first day of the week.
7415 doy : 4 // The week that contains Jan 4th is the first week of the year.
7416 }
7417 });
7418
7419 //! moment.js locale configuration
7420 //! locale : Galician [gl]
7421 //! author : Juan G. Hurtado : https://github.com/juanghurtado
7422
7423 hooks.defineLocale('gl', {
7424 months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),
7425 monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),
7426 monthsParseExact: true,
7427 weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
7428 weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
7429 weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),
7430 weekdaysParseExact : true,
7431 longDateFormat : {
7432 LT : 'H:mm',
7433 LTS : 'H:mm:ss',
7434 L : 'DD/MM/YYYY',
7435 LL : 'D [de] MMMM [de] YYYY',
7436 LLL : 'D [de] MMMM [de] YYYY H:mm',
7437 LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
7438 },
7439 calendar : {
7440 sameDay : function () {
7441 return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
7442 },
7443 nextDay : function () {
7444 return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
7445 },
7446 nextWeek : function () {
7447 return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
7448 },
7449 lastDay : function () {
7450 return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';
7451 },
7452 lastWeek : function () {
7453 return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
7454 },
7455 sameElse : 'L'
7456 },
7457 relativeTime : {
7458 future : function (str) {
7459 if (str.indexOf('un') === 0) {
7460 return 'n' + str;
7461 }
7462 return 'en ' + str;
7463 },
7464 past : 'hai %s',
7465 s : 'uns segundos',
7466 m : 'un minuto',
7467 mm : '%d minutos',
7468 h : 'unha hora',
7469 hh : '%d horas',
7470 d : 'un día',
7471 dd : '%d días',
7472 M : 'un mes',
7473 MM : '%d meses',
7474 y : 'un ano',
7475 yy : '%d anos'
7476 },
7477 ordinalParse : /\d{1,2}º/,
7478 ordinal : '%dº',
7479 week : {
7480 dow : 1, // Monday is the first day of the week.
7481 doy : 4 // The week that contains Jan 4th is the first week of the year.
7482 }
7483 });
7484
7485 //! moment.js locale configuration
7486 //! locale : Hebrew [he]
7487 //! author : Tomer Cohen : https://github.com/tomer
7488 //! author : Moshe Simantov : https://github.com/DevelopmentIL
7489 //! author : Tal Ater : https://github.com/TalAter
7490
7491 hooks.defineLocale('he', {
7492 months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
7493 monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
7494 weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
7495 weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
7496 weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),
7497 longDateFormat : {
7498 LT : 'HH:mm',
7499 LTS : 'HH:mm:ss',
7500 L : 'DD/MM/YYYY',
7501 LL : 'D [ב]MMMM YYYY',
7502 LLL : 'D [ב]MMMM YYYY HH:mm',
7503 LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',
7504 l : 'D/M/YYYY',
7505 ll : 'D MMM YYYY',
7506 lll : 'D MMM YYYY HH:mm',
7507 llll : 'ddd, D MMM YYYY HH:mm'
7508 },
7509 calendar : {
7510 sameDay : '[היום ב־]LT',
7511 nextDay : '[מחר ב־]LT',
7512 nextWeek : 'dddd [בשעה] LT',
7513 lastDay : '[אתמול ב־]LT',
7514 lastWeek : '[ביום] dddd [האחרון בשעה] LT',
7515 sameElse : 'L'
7516 },
7517 relativeTime : {
7518 future : 'בעוד %s',
7519 past : 'לפני %s',
7520 s : 'מספר שניות',
7521 m : 'דקה',
7522 mm : '%d דקות',
7523 h : 'שעה',
7524 hh : function (number) {
7525 if (number === 2) {
7526 return 'שעתיים';
7527 }
7528 return number + ' שעות';
7529 },
7530 d : 'יום',
7531 dd : function (number) {
7532 if (number === 2) {
7533 return 'יומיים';
7534 }
7535 return number + ' ימים';
7536 },
7537 M : 'חודש',
7538 MM : function (number) {
7539 if (number === 2) {
7540 return 'חודשיים';
7541 }
7542 return number + ' חודשים';
7543 },
7544 y : 'שנה',
7545 yy : function (number) {
7546 if (number === 2) {
7547 return 'שנתיים';
7548 } else if (number % 10 === 0 && number !== 10) {
7549 return number + ' שנה';
7550 }
7551 return number + ' שנים';
7552 }
7553 },
7554 meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
7555 isPM : function (input) {
7556 return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
7557 },
7558 meridiem : function (hour, minute, isLower) {
7559 if (hour < 5) {
7560 return 'לפנות בוקר';
7561 } else if (hour < 10) {
7562 return 'בבוקר';
7563 } else if (hour < 12) {
7564 return isLower ? 'לפנה"צ' : 'לפני הצהריים';
7565 } else if (hour < 18) {
7566 return isLower ? 'אחה"צ' : 'אחרי הצהריים';
7567 } else {
7568 return 'בערב';
7569 }
7570 }
7571 });
7572
7573 //! moment.js locale configuration
7574 //! locale : Hindi [hi]
7575 //! author : Mayank Singhal : https://github.com/mayanksinghal
7576
7577 var symbolMap$6 = {
7578 '1': '१',
7579 '2': '२',
7580 '3': '३',
7581 '4': '४',
7582 '5': '५',
7583 '6': '६',
7584 '7': '७',
7585 '8': '८',
7586 '9': '९',
7587 '0': '०'
7588 };
7589 var numberMap$5 = {
7590 '१': '1',
7591 '२': '2',
7592 '३': '3',
7593 '४': '4',
7594 '५': '5',
7595 '६': '6',
7596 '७': '7',
7597 '८': '8',
7598 '९': '9',
7599 '०': '0'
7600 };
7601
7602 hooks.defineLocale('hi', {
7603 months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
7604 monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
7605 monthsParseExact: true,
7606 weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
7607 weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
7608 weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
7609 longDateFormat : {
7610 LT : 'A h:mm बजे',
7611 LTS : 'A h:mm:ss बजे',
7612 L : 'DD/MM/YYYY',
7613 LL : 'D MMMM YYYY',
7614 LLL : 'D MMMM YYYY, A h:mm बजे',
7615 LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'
7616 },
7617 calendar : {
7618 sameDay : '[आज] LT',
7619 nextDay : '[कल] LT',
7620 nextWeek : 'dddd, LT',
7621 lastDay : '[कल] LT',
7622 lastWeek : '[पिछले] dddd, LT',
7623 sameElse : 'L'
7624 },
7625 relativeTime : {
7626 future : '%s में',
7627 past : '%s पहले',
7628 s : 'कुछ ही क्षण',
7629 m : 'एक मिनट',
7630 mm : '%d मिनट',
7631 h : 'एक घंटा',
7632 hh : '%d घंटे',
7633 d : 'एक दिन',
7634 dd : '%d दिन',
7635 M : 'एक महीने',
7636 MM : '%d महीने',
7637 y : 'एक वर्ष',
7638 yy : '%d वर्ष'
7639 },
7640 preparse: function (string) {
7641 return string.replace(/[१२३४५६७८९०]/g, function (match) {
7642 return numberMap$5[match];
7643 });
7644 },
7645 postformat: function (string) {
7646 return string.replace(/\d/g, function (match) {
7647 return symbolMap$6[match];
7648 });
7649 },
7650 // Hindi notation for meridiems are quite fuzzy in practice. While there exists
7651 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
7652 meridiemParse: /रात|सुबह|दोपहर|शाम/,
7653 meridiemHour : function (hour, meridiem) {
7654 if (hour === 12) {
7655 hour = 0;
7656 }
7657 if (meridiem === 'रात') {
7658 return hour < 4 ? hour : hour + 12;
7659 } else if (meridiem === 'सुबह') {
7660 return hour;
7661 } else if (meridiem === 'दोपहर') {
7662 return hour >= 10 ? hour : hour + 12;
7663 } else if (meridiem === 'शाम') {
7664 return hour + 12;
7665 }
7666 },
7667 meridiem : function (hour, minute, isLower) {
7668 if (hour < 4) {
7669 return 'रात';
7670 } else if (hour < 10) {
7671 return 'सुबह';
7672 } else if (hour < 17) {
7673 return 'दोपहर';
7674 } else if (hour < 20) {
7675 return 'शाम';
7676 } else {
7677 return 'रात';
7678 }
7679 },
7680 week : {
7681 dow : 0, // Sunday is the first day of the week.
7682 doy : 6 // The week that contains Jan 1st is the first week of the year.
7683 }
7684 });
7685
7686 //! moment.js locale configuration
7687 //! locale : Croatian [hr]
7688 //! author : Bojan Marković : https://github.com/bmarkovic
7689
7690 function translate$3(number, withoutSuffix, key) {
7691 var result = number + ' ';
7692 switch (key) {
7693 case 'm':
7694 return withoutSuffix ? 'jedna minuta' : 'jedne minute';
7695 case 'mm':
7696 if (number === 1) {
7697 result += 'minuta';
7698 } else if (number === 2 || number === 3 || number === 4) {
7699 result += 'minute';
7700 } else {
7701 result += 'minuta';
7702 }
7703 return result;
7704 case 'h':
7705 return withoutSuffix ? 'jedan sat' : 'jednog sata';
7706 case 'hh':
7707 if (number === 1) {
7708 result += 'sat';
7709 } else if (number === 2 || number === 3 || number === 4) {
7710 result += 'sata';
7711 } else {
7712 result += 'sati';
7713 }
7714 return result;
7715 case 'dd':
7716 if (number === 1) {
7717 result += 'dan';
7718 } else {
7719 result += 'dana';
7720 }
7721 return result;
7722 case 'MM':
7723 if (number === 1) {
7724 result += 'mjesec';
7725 } else if (number === 2 || number === 3 || number === 4) {
7726 result += 'mjeseca';
7727 } else {
7728 result += 'mjeseci';
7729 }
7730 return result;
7731 case 'yy':
7732 if (number === 1) {
7733 result += 'godina';
7734 } else if (number === 2 || number === 3 || number === 4) {
7735 result += 'godine';
7736 } else {
7737 result += 'godina';
7738 }
7739 return result;
7740 }
7741 }
7742
7743 hooks.defineLocale('hr', {
7744 months : {
7745 format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),
7746 standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')
7747 },
7748 monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
7749 monthsParseExact: true,
7750 weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
7751 weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
7752 weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
7753 weekdaysParseExact : true,
7754 longDateFormat : {
7755 LT : 'H:mm',
7756 LTS : 'H:mm:ss',
7757 L : 'DD.MM.YYYY',
7758 LL : 'D. MMMM YYYY',
7759 LLL : 'D. MMMM YYYY H:mm',
7760 LLLL : 'dddd, D. MMMM YYYY H:mm'
7761 },
7762 calendar : {
7763 sameDay : '[danas u] LT',
7764 nextDay : '[sutra u] LT',
7765 nextWeek : function () {
7766 switch (this.day()) {
7767 case 0:
7768 return '[u] [nedjelju] [u] LT';
7769 case 3:
7770 return '[u] [srijedu] [u] LT';
7771 case 6:
7772 return '[u] [subotu] [u] LT';
7773 case 1:
7774 case 2:
7775 case 4:
7776 case 5:
7777 return '[u] dddd [u] LT';
7778 }
7779 },
7780 lastDay : '[jučer u] LT',
7781 lastWeek : function () {
7782 switch (this.day()) {
7783 case 0:
7784 case 3:
7785 return '[prošlu] dddd [u] LT';
7786 case 6:
7787 return '[prošle] [subote] [u] LT';
7788 case 1:
7789 case 2:
7790 case 4:
7791 case 5:
7792 return '[prošli] dddd [u] LT';
7793 }
7794 },
7795 sameElse : 'L'
7796 },
7797 relativeTime : {
7798 future : 'za %s',
7799 past : 'prije %s',
7800 s : 'par sekundi',
7801 m : translate$3,
7802 mm : translate$3,
7803 h : translate$3,
7804 hh : translate$3,
7805 d : 'dan',
7806 dd : translate$3,
7807 M : 'mjesec',
7808 MM : translate$3,
7809 y : 'godinu',
7810 yy : translate$3
7811 },
7812 ordinalParse: /\d{1,2}\./,
7813 ordinal : '%d.',
7814 week : {
7815 dow : 1, // Monday is the first day of the week.
7816 doy : 7 // The week that contains Jan 1st is the first week of the year.
7817 }
7818 });
7819
7820 //! moment.js locale configuration
7821 //! locale : Hungarian [hu]
7822 //! author : Adam Brunner : https://github.com/adambrunner
7823
7824 var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
7825 function translate$4(number, withoutSuffix, key, isFuture) {
7826 var num = number,
7827 suffix;
7828 switch (key) {
7829 case 's':
7830 return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
7831 case 'm':
7832 return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
7833 case 'mm':
7834 return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
7835 case 'h':
7836 return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
7837 case 'hh':
7838 return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
7839 case 'd':
7840 return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
7841 case 'dd':
7842 return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
7843 case 'M':
7844 return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
7845 case 'MM':
7846 return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
7847 case 'y':
7848 return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
7849 case 'yy':
7850 return num + (isFuture || withoutSuffix ? ' év' : ' éve');
7851 }
7852 return '';
7853 }
7854 function week(isFuture) {
7855 return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
7856 }
7857
7858 hooks.defineLocale('hu', {
7859 months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
7860 monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),
7861 weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
7862 weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
7863 weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),
7864 longDateFormat : {
7865 LT : 'H:mm',
7866 LTS : 'H:mm:ss',
7867 L : 'YYYY.MM.DD.',
7868 LL : 'YYYY. MMMM D.',
7869 LLL : 'YYYY. MMMM D. H:mm',
7870 LLLL : 'YYYY. MMMM D., dddd H:mm'
7871 },
7872 meridiemParse: /de|du/i,
7873 isPM: function (input) {
7874 return input.charAt(1).toLowerCase() === 'u';
7875 },
7876 meridiem : function (hours, minutes, isLower) {
7877 if (hours < 12) {
7878 return isLower === true ? 'de' : 'DE';
7879 } else {
7880 return isLower === true ? 'du' : 'DU';
7881 }
7882 },
7883 calendar : {
7884 sameDay : '[ma] LT[-kor]',
7885 nextDay : '[holnap] LT[-kor]',
7886 nextWeek : function () {
7887 return week.call(this, true);
7888 },
7889 lastDay : '[tegnap] LT[-kor]',
7890 lastWeek : function () {
7891 return week.call(this, false);
7892 },
7893 sameElse : 'L'
7894 },
7895 relativeTime : {
7896 future : '%s múlva',
7897 past : '%s',
7898 s : translate$4,
7899 m : translate$4,
7900 mm : translate$4,
7901 h : translate$4,
7902 hh : translate$4,
7903 d : translate$4,
7904 dd : translate$4,
7905 M : translate$4,
7906 MM : translate$4,
7907 y : translate$4,
7908 yy : translate$4
7909 },
7910 ordinalParse: /\d{1,2}\./,
7911 ordinal : '%d.',
7912 week : {
7913 dow : 1, // Monday is the first day of the week.
7914 doy : 4 // The week that contains Jan 4th is the first week of the year.
7915 }
7916 });
7917
7918 //! moment.js locale configuration
7919 //! locale : Armenian [hy-am]
7920 //! author : Armendarabyan : https://github.com/armendarabyan
7921
7922 hooks.defineLocale('hy-am', {
7923 months : {
7924 format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),
7925 standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')
7926 },
7927 monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
7928 weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),
7929 weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
7930 weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
7931 longDateFormat : {
7932 LT : 'HH:mm',
7933 LTS : 'HH:mm:ss',
7934 L : 'DD.MM.YYYY',
7935 LL : 'D MMMM YYYY թ.',
7936 LLL : 'D MMMM YYYY թ., HH:mm',
7937 LLLL : 'dddd, D MMMM YYYY թ., HH:mm'
7938 },
7939 calendar : {
7940 sameDay: '[այսօր] LT',
7941 nextDay: '[վաղը] LT',
7942 lastDay: '[երեկ] LT',
7943 nextWeek: function () {
7944 return 'dddd [օրը ժամը] LT';
7945 },
7946 lastWeek: function () {
7947 return '[անցած] dddd [օրը ժամը] LT';
7948 },
7949 sameElse: 'L'
7950 },
7951 relativeTime : {
7952 future : '%s հետո',
7953 past : '%s առաջ',
7954 s : 'մի քանի վայրկյան',
7955 m : 'րոպե',
7956 mm : '%d րոպե',
7957 h : 'ժամ',
7958 hh : '%d ժամ',
7959 d : 'օր',
7960 dd : '%d օր',
7961 M : 'ամիս',
7962 MM : '%d ամիս',
7963 y : 'տարի',
7964 yy : '%d տարի'
7965 },
7966 meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
7967 isPM: function (input) {
7968 return /^(ցերեկվա|երեկոյան)$/.test(input);
7969 },
7970 meridiem : function (hour) {
7971 if (hour < 4) {
7972 return 'գիշերվա';
7973 } else if (hour < 12) {
7974 return 'առավոտվա';
7975 } else if (hour < 17) {
7976 return 'ցերեկվա';
7977 } else {
7978 return 'երեկոյան';
7979 }
7980 },
7981 ordinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
7982 ordinal: function (number, period) {
7983 switch (period) {
7984 case 'DDD':
7985 case 'w':
7986 case 'W':
7987 case 'DDDo':
7988 if (number === 1) {
7989 return number + '-ին';
7990 }
7991 return number + '-րդ';
7992 default:
7993 return number;
7994 }
7995 },
7996 week : {
7997 dow : 1, // Monday is the first day of the week.
7998 doy : 7 // The week that contains Jan 1st is the first week of the year.
7999 }
8000 });
8001
8002 //! moment.js locale configuration
8003 //! locale : Indonesian [id]
8004 //! author : Mohammad Satrio Utomo : https://github.com/tyok
8005 //! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
8006
8007 hooks.defineLocale('id', {
8008 months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
8009 monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),
8010 weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
8011 weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
8012 weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
8013 longDateFormat : {
8014 LT : 'HH.mm',
8015 LTS : 'HH.mm.ss',
8016 L : 'DD/MM/YYYY',
8017 LL : 'D MMMM YYYY',
8018 LLL : 'D MMMM YYYY [pukul] HH.mm',
8019 LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
8020 },
8021 meridiemParse: /pagi|siang|sore|malam/,
8022 meridiemHour : function (hour, meridiem) {
8023 if (hour === 12) {
8024 hour = 0;
8025 }
8026 if (meridiem === 'pagi') {
8027 return hour;
8028 } else if (meridiem === 'siang') {
8029 return hour >= 11 ? hour : hour + 12;
8030 } else if (meridiem === 'sore' || meridiem === 'malam') {
8031 return hour + 12;
8032 }
8033 },
8034 meridiem : function (hours, minutes, isLower) {
8035 if (hours < 11) {
8036 return 'pagi';
8037 } else if (hours < 15) {
8038 return 'siang';
8039 } else if (hours < 19) {
8040 return 'sore';
8041 } else {
8042 return 'malam';
8043 }
8044 },
8045 calendar : {
8046 sameDay : '[Hari ini pukul] LT',
8047 nextDay : '[Besok pukul] LT',
8048 nextWeek : 'dddd [pukul] LT',
8049 lastDay : '[Kemarin pukul] LT',
8050 lastWeek : 'dddd [lalu pukul] LT',
8051 sameElse : 'L'
8052 },
8053 relativeTime : {
8054 future : 'dalam %s',
8055 past : '%s yang lalu',
8056 s : 'beberapa detik',
8057 m : 'semenit',
8058 mm : '%d menit',
8059 h : 'sejam',
8060 hh : '%d jam',
8061 d : 'sehari',
8062 dd : '%d hari',
8063 M : 'sebulan',
8064 MM : '%d bulan',
8065 y : 'setahun',
8066 yy : '%d tahun'
8067 },
8068 week : {
8069 dow : 1, // Monday is the first day of the week.
8070 doy : 7 // The week that contains Jan 1st is the first week of the year.
8071 }
8072 });
8073
8074 //! moment.js locale configuration
8075 //! locale : Icelandic [is]
8076 //! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
8077
8078 function plural$2(n) {
8079 if (n % 100 === 11) {
8080 return true;
8081 } else if (n % 10 === 1) {
8082 return false;
8083 }
8084 return true;
8085 }
8086 function translate$5(number, withoutSuffix, key, isFuture) {
8087 var result = number + ' ';
8088 switch (key) {
8089 case 's':
8090 return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
8091 case 'm':
8092 return withoutSuffix ? 'mínúta' : 'mínútu';
8093 case 'mm':
8094 if (plural$2(number)) {
8095 return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
8096 } else if (withoutSuffix) {
8097 return result + 'mínúta';
8098 }
8099 return result + 'mínútu';
8100 case 'hh':
8101 if (plural$2(number)) {
8102 return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
8103 }
8104 return result + 'klukkustund';
8105 case 'd':
8106 if (withoutSuffix) {
8107 return 'dagur';
8108 }
8109 return isFuture ? 'dag' : 'degi';
8110 case 'dd':
8111 if (plural$2(number)) {
8112 if (withoutSuffix) {
8113 return result + 'dagar';
8114 }
8115 return result + (isFuture ? 'daga' : 'dögum');
8116 } else if (withoutSuffix) {
8117 return result + 'dagur';
8118 }
8119 return result + (isFuture ? 'dag' : 'degi');
8120 case 'M':
8121 if (withoutSuffix) {
8122 return 'mánuður';
8123 }
8124 return isFuture ? 'mánuð' : 'mánuði';
8125 case 'MM':
8126 if (plural$2(number)) {
8127 if (withoutSuffix) {
8128 return result + 'mánuðir';
8129 }
8130 return result + (isFuture ? 'mánuði' : 'mánuðum');
8131 } else if (withoutSuffix) {
8132 return result + 'mánuður';
8133 }
8134 return result + (isFuture ? 'mánuð' : 'mánuði');
8135 case 'y':
8136 return withoutSuffix || isFuture ? 'ár' : 'ári';
8137 case 'yy':
8138 if (plural$2(number)) {
8139 return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
8140 }
8141 return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
8142 }
8143 }
8144
8145 hooks.defineLocale('is', {
8146 months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
8147 monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
8148 weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
8149 weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
8150 weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
8151 longDateFormat : {
8152 LT : 'H:mm',
8153 LTS : 'H:mm:ss',
8154 L : 'DD.MM.YYYY',
8155 LL : 'D. MMMM YYYY',
8156 LLL : 'D. MMMM YYYY [kl.] H:mm',
8157 LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'
8158 },
8159 calendar : {
8160 sameDay : '[í dag kl.] LT',
8161 nextDay : '[á morgun kl.] LT',
8162 nextWeek : 'dddd [kl.] LT',
8163 lastDay : '[í gær kl.] LT',
8164 lastWeek : '[síðasta] dddd [kl.] LT',
8165 sameElse : 'L'
8166 },
8167 relativeTime : {
8168 future : 'eftir %s',
8169 past : 'fyrir %s síðan',
8170 s : translate$5,
8171 m : translate$5,
8172 mm : translate$5,
8173 h : 'klukkustund',
8174 hh : translate$5,
8175 d : translate$5,
8176 dd : translate$5,
8177 M : translate$5,
8178 MM : translate$5,
8179 y : translate$5,
8180 yy : translate$5
8181 },
8182 ordinalParse: /\d{1,2}\./,
8183 ordinal : '%d.',
8184 week : {
8185 dow : 1, // Monday is the first day of the week.
8186 doy : 4 // The week that contains Jan 4th is the first week of the year.
8187 }
8188 });
8189
8190 //! moment.js locale configuration
8191 //! locale : Italian [it]
8192 //! author : Lorenzo : https://github.com/aliem
8193 //! author: Mattia Larentis: https://github.com/nostalgiaz
8194
8195 hooks.defineLocale('it', {
8196 months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
8197 monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
8198 weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'),
8199 weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'),
8200 weekdaysMin : 'Do_Lu_Ma_Me_Gi_Ve_Sa'.split('_'),
8201 longDateFormat : {
8202 LT : 'HH:mm',
8203 LTS : 'HH:mm:ss',
8204 L : 'DD/MM/YYYY',
8205 LL : 'D MMMM YYYY',
8206 LLL : 'D MMMM YYYY HH:mm',
8207 LLLL : 'dddd, D MMMM YYYY HH:mm'
8208 },
8209 calendar : {
8210 sameDay: '[Oggi alle] LT',
8211 nextDay: '[Domani alle] LT',
8212 nextWeek: 'dddd [alle] LT',
8213 lastDay: '[Ieri alle] LT',
8214 lastWeek: function () {
8215 switch (this.day()) {
8216 case 0:
8217 return '[la scorsa] dddd [alle] LT';
8218 default:
8219 return '[lo scorso] dddd [alle] LT';
8220 }
8221 },
8222 sameElse: 'L'
8223 },
8224 relativeTime : {
8225 future : function (s) {
8226 return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
8227 },
8228 past : '%s fa',
8229 s : 'alcuni secondi',
8230 m : 'un minuto',
8231 mm : '%d minuti',
8232 h : 'un\'ora',
8233 hh : '%d ore',
8234 d : 'un giorno',
8235 dd : '%d giorni',
8236 M : 'un mese',
8237 MM : '%d mesi',
8238 y : 'un anno',
8239 yy : '%d anni'
8240 },
8241 ordinalParse : /\d{1,2}º/,
8242 ordinal: '%dº',
8243 week : {
8244 dow : 1, // Monday is the first day of the week.
8245 doy : 4 // The week that contains Jan 4th is the first week of the year.
8246 }
8247 });
8248
8249 //! moment.js locale configuration
8250 //! locale : Japanese [ja]
8251 //! author : LI Long : https://github.com/baryon
8252
8253 hooks.defineLocale('ja', {
8254 months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
8255 monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
8256 weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
8257 weekdaysShort : '日_月_火_水_木_金_土'.split('_'),
8258 weekdaysMin : '日_月_火_水_木_金_土'.split('_'),
8259 longDateFormat : {
8260 LT : 'Ah時m分',
8261 LTS : 'Ah時m分s秒',
8262 L : 'YYYY/MM/DD',
8263 LL : 'YYYY年M月D日',
8264 LLL : 'YYYY年M月D日Ah時m分',
8265 LLLL : 'YYYY年M月D日Ah時m分 dddd'
8266 },
8267 meridiemParse: /午前|午後/i,
8268 isPM : function (input) {
8269 return input === '午後';
8270 },
8271 meridiem : function (hour, minute, isLower) {
8272 if (hour < 12) {
8273 return '午前';
8274 } else {
8275 return '午後';
8276 }
8277 },
8278 calendar : {
8279 sameDay : '[今日] LT',
8280 nextDay : '[明日] LT',
8281 nextWeek : '[来週]dddd LT',
8282 lastDay : '[昨日] LT',
8283 lastWeek : '[前週]dddd LT',
8284 sameElse : 'L'
8285 },
8286 ordinalParse : /\d{1,2}日/,
8287 ordinal : function (number, period) {
8288 switch (period) {
8289 case 'd':
8290 case 'D':
8291 case 'DDD':
8292 return number + '日';
8293 default:
8294 return number;
8295 }
8296 },
8297 relativeTime : {
8298 future : '%s後',
8299 past : '%s前',
8300 s : '数秒',
8301 m : '1分',
8302 mm : '%d分',
8303 h : '1時間',
8304 hh : '%d時間',
8305 d : '1日',
8306 dd : '%d日',
8307 M : '1ヶ月',
8308 MM : '%dヶ月',
8309 y : '1年',
8310 yy : '%d年'
8311 }
8312 });
8313
8314 //! moment.js locale configuration
8315 //! locale : Javanese [jv]
8316 //! author : Rony Lantip : https://github.com/lantip
8317 //! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
8318
8319 hooks.defineLocale('jv', {
8320 months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),
8321 monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
8322 weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
8323 weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
8324 weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
8325 longDateFormat : {
8326 LT : 'HH.mm',
8327 LTS : 'HH.mm.ss',
8328 L : 'DD/MM/YYYY',
8329 LL : 'D MMMM YYYY',
8330 LLL : 'D MMMM YYYY [pukul] HH.mm',
8331 LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
8332 },
8333 meridiemParse: /enjing|siyang|sonten|ndalu/,
8334 meridiemHour : function (hour, meridiem) {
8335 if (hour === 12) {
8336 hour = 0;
8337 }
8338 if (meridiem === 'enjing') {
8339 return hour;
8340 } else if (meridiem === 'siyang') {
8341 return hour >= 11 ? hour : hour + 12;
8342 } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
8343 return hour + 12;
8344 }
8345 },
8346 meridiem : function (hours, minutes, isLower) {
8347 if (hours < 11) {
8348 return 'enjing';
8349 } else if (hours < 15) {
8350 return 'siyang';
8351 } else if (hours < 19) {
8352 return 'sonten';
8353 } else {
8354 return 'ndalu';
8355 }
8356 },
8357 calendar : {
8358 sameDay : '[Dinten puniko pukul] LT',
8359 nextDay : '[Mbenjang pukul] LT',
8360 nextWeek : 'dddd [pukul] LT',
8361 lastDay : '[Kala wingi pukul] LT',
8362 lastWeek : 'dddd [kepengker pukul] LT',
8363 sameElse : 'L'
8364 },
8365 relativeTime : {
8366 future : 'wonten ing %s',
8367 past : '%s ingkang kepengker',
8368 s : 'sawetawis detik',
8369 m : 'setunggal menit',
8370 mm : '%d menit',
8371 h : 'setunggal jam',
8372 hh : '%d jam',
8373 d : 'sedinten',
8374 dd : '%d dinten',
8375 M : 'sewulan',
8376 MM : '%d wulan',
8377 y : 'setaun',
8378 yy : '%d taun'
8379 },
8380 week : {
8381 dow : 1, // Monday is the first day of the week.
8382 doy : 7 // The week that contains Jan 1st is the first week of the year.
8383 }
8384 });
8385
8386 //! moment.js locale configuration
8387 //! locale : Georgian [ka]
8388 //! author : Irakli Janiashvili : https://github.com/irakli-janiashvili
8389
8390 hooks.defineLocale('ka', {
8391 months : {
8392 standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
8393 format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
8394 },
8395 monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
8396 weekdays : {
8397 standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
8398 format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),
8399 isFormat: /(წინა|შემდეგ)/
8400 },
8401 weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
8402 weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
8403 longDateFormat : {
8404 LT : 'h:mm A',
8405 LTS : 'h:mm:ss A',
8406 L : 'DD/MM/YYYY',
8407 LL : 'D MMMM YYYY',
8408 LLL : 'D MMMM YYYY h:mm A',
8409 LLLL : 'dddd, D MMMM YYYY h:mm A'
8410 },
8411 calendar : {
8412 sameDay : '[დღეს] LT[-ზე]',
8413 nextDay : '[ხვალ] LT[-ზე]',
8414 lastDay : '[გუშინ] LT[-ზე]',
8415 nextWeek : '[შემდეგ] dddd LT[-ზე]',
8416 lastWeek : '[წინა] dddd LT-ზე',
8417 sameElse : 'L'
8418 },
8419 relativeTime : {
8420 future : function (s) {
8421 return (/(წამი|წუთი|საათი|წელი)/).test(s) ?
8422 s.replace(/ი$/, 'ში') :
8423 s + 'ში';
8424 },
8425 past : function (s) {
8426 if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {
8427 return s.replace(/(ი|ე)$/, 'ის წინ');
8428 }
8429 if ((/წელი/).test(s)) {
8430 return s.replace(/წელი$/, 'წლის წინ');
8431 }
8432 },
8433 s : 'რამდენიმე წამი',
8434 m : 'წუთი',
8435 mm : '%d წუთი',
8436 h : 'საათი',
8437 hh : '%d საათი',
8438 d : 'დღე',
8439 dd : '%d დღე',
8440 M : 'თვე',
8441 MM : '%d თვე',
8442 y : 'წელი',
8443 yy : '%d წელი'
8444 },
8445 ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
8446 ordinal : function (number) {
8447 if (number === 0) {
8448 return number;
8449 }
8450 if (number === 1) {
8451 return number + '-ლი';
8452 }
8453 if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
8454 return 'მე-' + number;
8455 }
8456 return number + '-ე';
8457 },
8458 week : {
8459 dow : 1,
8460 doy : 7
8461 }
8462 });
8463
8464 //! moment.js locale configuration
8465 //! locale : Kazakh [kk]
8466 //! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
8467
8468 var suffixes$1 = {
8469 0: '-ші',
8470 1: '-ші',
8471 2: '-ші',
8472 3: '-ші',
8473 4: '-ші',
8474 5: '-ші',
8475 6: '-шы',
8476 7: '-ші',
8477 8: '-ші',
8478 9: '-шы',
8479 10: '-шы',
8480 20: '-шы',
8481 30: '-шы',
8482 40: '-шы',
8483 50: '-ші',
8484 60: '-шы',
8485 70: '-ші',
8486 80: '-ші',
8487 90: '-шы',
8488 100: '-ші'
8489 };
8490
8491 hooks.defineLocale('kk', {
8492 months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),
8493 monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
8494 weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),
8495 weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
8496 weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
8497 longDateFormat : {
8498 LT : 'HH:mm',
8499 LTS : 'HH:mm:ss',
8500 L : 'DD.MM.YYYY',
8501 LL : 'D MMMM YYYY',
8502 LLL : 'D MMMM YYYY HH:mm',
8503 LLLL : 'dddd, D MMMM YYYY HH:mm'
8504 },
8505 calendar : {
8506 sameDay : '[Бүгін сағат] LT',
8507 nextDay : '[Ертең сағат] LT',
8508 nextWeek : 'dddd [сағат] LT',
8509 lastDay : '[Кеше сағат] LT',
8510 lastWeek : '[Өткен аптаның] dddd [сағат] LT',
8511 sameElse : 'L'
8512 },
8513 relativeTime : {
8514 future : '%s ішінде',
8515 past : '%s бұрын',
8516 s : 'бірнеше секунд',
8517 m : 'бір минут',
8518 mm : '%d минут',
8519 h : 'бір сағат',
8520 hh : '%d сағат',
8521 d : 'бір күн',
8522 dd : '%d күн',
8523 M : 'бір ай',
8524 MM : '%d ай',
8525 y : 'бір жыл',
8526 yy : '%d жыл'
8527 },
8528 ordinalParse: /\d{1,2}-(ші|шы)/,
8529 ordinal : function (number) {
8530 var a = number % 10,
8531 b = number >= 100 ? 100 : null;
8532 return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);
8533 },
8534 week : {
8535 dow : 1, // Monday is the first day of the week.
8536 doy : 7 // The week that contains Jan 1st is the first week of the year.
8537 }
8538 });
8539
8540 //! moment.js locale configuration
8541 //! locale : Cambodian [km]
8542 //! author : Kruy Vanna : https://github.com/kruyvanna
8543
8544 hooks.defineLocale('km', {
8545 months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
8546 monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
8547 weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
8548 weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
8549 weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
8550 longDateFormat: {
8551 LT: 'HH:mm',
8552 LTS : 'HH:mm:ss',
8553 L: 'DD/MM/YYYY',
8554 LL: 'D MMMM YYYY',
8555 LLL: 'D MMMM YYYY HH:mm',
8556 LLLL: 'dddd, D MMMM YYYY HH:mm'
8557 },
8558 calendar: {
8559 sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
8560 nextDay: '[ស្អែក ម៉ោង] LT',
8561 nextWeek: 'dddd [ម៉ោង] LT',
8562 lastDay: '[ម្សិលមិញ ម៉ោង] LT',
8563 lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
8564 sameElse: 'L'
8565 },
8566 relativeTime: {
8567 future: '%sទៀត',
8568 past: '%sមុន',
8569 s: 'ប៉ុន្មានវិនាទី',
8570 m: 'មួយនាទី',
8571 mm: '%d នាទី',
8572 h: 'មួយម៉ោង',
8573 hh: '%d ម៉ោង',
8574 d: 'មួយថ្ងៃ',
8575 dd: '%d ថ្ងៃ',
8576 M: 'មួយខែ',
8577 MM: '%d ខែ',
8578 y: 'មួយឆ្នាំ',
8579 yy: '%d ឆ្នាំ'
8580 },
8581 week: {
8582 dow: 1, // Monday is the first day of the week.
8583 doy: 4 // The week that contains Jan 4th is the first week of the year.
8584 }
8585 });
8586
8587 //! moment.js locale configuration
8588 //! locale : Korean [ko]
8589 //! author : Kyungwook, Park : https://github.com/kyungw00k
8590 //! author : Jeeeyul Lee <jeeeyul@gmail.com>
8591
8592 hooks.defineLocale('ko', {
8593 months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
8594 monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
8595 weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
8596 weekdaysShort : '일_월_화_수_목_금_토'.split('_'),
8597 weekdaysMin : '일_월_화_수_목_금_토'.split('_'),
8598 longDateFormat : {
8599 LT : 'A h시 m분',
8600 LTS : 'A h시 m분 s초',
8601 L : 'YYYY.MM.DD',
8602 LL : 'YYYY년 MMMM D일',
8603 LLL : 'YYYY년 MMMM D일 A h시 m분',
8604 LLLL : 'YYYY년 MMMM D일 dddd A h시 m분'
8605 },
8606 calendar : {
8607 sameDay : '오늘 LT',
8608 nextDay : '내일 LT',
8609 nextWeek : 'dddd LT',
8610 lastDay : '어제 LT',
8611 lastWeek : '지난주 dddd LT',
8612 sameElse : 'L'
8613 },
8614 relativeTime : {
8615 future : '%s 후',
8616 past : '%s 전',
8617 s : '몇 초',
8618 ss : '%d초',
8619 m : '일분',
8620 mm : '%d분',
8621 h : '한 시간',
8622 hh : '%d시간',
8623 d : '하루',
8624 dd : '%d일',
8625 M : '한 달',
8626 MM : '%d달',
8627 y : '일 년',
8628 yy : '%d년'
8629 },
8630 ordinalParse : /\d{1,2}일/,
8631 ordinal : '%d일',
8632 meridiemParse : /오전|오후/,
8633 isPM : function (token) {
8634 return token === '오후';
8635 },
8636 meridiem : function (hour, minute, isUpper) {
8637 return hour < 12 ? '오전' : '오후';
8638 }
8639 });
8640
8641 //! moment.js locale configuration
8642 //! locale : Kyrgyz [ky]
8643 //! author : Chyngyz Arystan uulu : https://github.com/chyngyz
8644
8645
8646 var suffixes$2 = {
8647 0: '-чү',
8648 1: '-чи',
8649 2: '-чи',
8650 3: '-чү',
8651 4: '-чү',
8652 5: '-чи',
8653 6: '-чы',
8654 7: '-чи',
8655 8: '-чи',
8656 9: '-чу',
8657 10: '-чу',
8658 20: '-чы',
8659 30: '-чу',
8660 40: '-чы',
8661 50: '-чү',
8662 60: '-чы',
8663 70: '-чи',
8664 80: '-чи',
8665 90: '-чу',
8666 100: '-чү'
8667 };
8668
8669 hooks.defineLocale('ky', {
8670 months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
8671 monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
8672 weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),
8673 weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
8674 weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
8675 longDateFormat : {
8676 LT : 'HH:mm',
8677 LTS : 'HH:mm:ss',
8678 L : 'DD.MM.YYYY',
8679 LL : 'D MMMM YYYY',
8680 LLL : 'D MMMM YYYY HH:mm',
8681 LLLL : 'dddd, D MMMM YYYY HH:mm'
8682 },
8683 calendar : {
8684 sameDay : '[Бүгүн саат] LT',
8685 nextDay : '[Эртең саат] LT',
8686 nextWeek : 'dddd [саат] LT',
8687 lastDay : '[Кече саат] LT',
8688 lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT',
8689 sameElse : 'L'
8690 },
8691 relativeTime : {
8692 future : '%s ичинде',
8693 past : '%s мурун',
8694 s : 'бирнече секунд',
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 ordinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
8707 ordinal : function (number) {
8708 var a = number % 10,
8709 b = number >= 100 ? 100 : null;
8710 return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);
8711 },
8712 week : {
8713 dow : 1, // Monday is the first day of the week.
8714 doy : 7 // The week that contains Jan 1st is the first week of the year.
8715 }
8716 });
8717
8718 //! moment.js locale configuration
8719 //! locale : Luxembourgish [lb]
8720 //! author : mweimerskirch : https://github.com/mweimerskirch
8721 //! author : David Raison : https://github.com/kwisatz
8722
8723 function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
8724 var format = {
8725 'm': ['eng Minutt', 'enger Minutt'],
8726 'h': ['eng Stonn', 'enger Stonn'],
8727 'd': ['een Dag', 'engem Dag'],
8728 'M': ['ee Mount', 'engem Mount'],
8729 'y': ['ee Joer', 'engem Joer']
8730 };
8731 return withoutSuffix ? format[key][0] : format[key][1];
8732 }
8733 function processFutureTime(string) {
8734 var number = string.substr(0, string.indexOf(' '));
8735 if (eifelerRegelAppliesToNumber(number)) {
8736 return 'a ' + string;
8737 }
8738 return 'an ' + string;
8739 }
8740 function processPastTime(string) {
8741 var number = string.substr(0, string.indexOf(' '));
8742 if (eifelerRegelAppliesToNumber(number)) {
8743 return 'viru ' + string;
8744 }
8745 return 'virun ' + string;
8746 }
8747 /**
8748 * Returns true if the word before the given number loses the '-n' ending.
8749 * e.g. 'an 10 Deeg' but 'a 5 Deeg'
8750 *
8751 * @param number {integer}
8752 * @returns {boolean}
8753 */
8754 function eifelerRegelAppliesToNumber(number) {
8755 number = parseInt(number, 10);
8756 if (isNaN(number)) {
8757 return false;
8758 }
8759 if (number < 0) {
8760 // Negative Number --> always true
8761 return true;
8762 } else if (number < 10) {
8763 // Only 1 digit
8764 if (4 <= number && number <= 7) {
8765 return true;
8766 }
8767 return false;
8768 } else if (number < 100) {
8769 // 2 digits
8770 var lastDigit = number % 10, firstDigit = number / 10;
8771 if (lastDigit === 0) {
8772 return eifelerRegelAppliesToNumber(firstDigit);
8773 }
8774 return eifelerRegelAppliesToNumber(lastDigit);
8775 } else if (number < 10000) {
8776 // 3 or 4 digits --> recursively check first digit
8777 while (number >= 10) {
8778 number = number / 10;
8779 }
8780 return eifelerRegelAppliesToNumber(number);
8781 } else {
8782 // Anything larger than 4 digits: recursively check first n-3 digits
8783 number = number / 1000;
8784 return eifelerRegelAppliesToNumber(number);
8785 }
8786 }
8787
8788 hooks.defineLocale('lb', {
8789 months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
8790 monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
8791 monthsParseExact : true,
8792 weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
8793 weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
8794 weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
8795 weekdaysParseExact : true,
8796 longDateFormat: {
8797 LT: 'H:mm [Auer]',
8798 LTS: 'H:mm:ss [Auer]',
8799 L: 'DD.MM.YYYY',
8800 LL: 'D. MMMM YYYY',
8801 LLL: 'D. MMMM YYYY H:mm [Auer]',
8802 LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'
8803 },
8804 calendar: {
8805 sameDay: '[Haut um] LT',
8806 sameElse: 'L',
8807 nextDay: '[Muer um] LT',
8808 nextWeek: 'dddd [um] LT',
8809 lastDay: '[Gëschter um] LT',
8810 lastWeek: function () {
8811 // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
8812 switch (this.day()) {
8813 case 2:
8814 case 4:
8815 return '[Leschten] dddd [um] LT';
8816 default:
8817 return '[Leschte] dddd [um] LT';
8818 }
8819 }
8820 },
8821 relativeTime : {
8822 future : processFutureTime,
8823 past : processPastTime,
8824 s : 'e puer Sekonnen',
8825 m : processRelativeTime$3,
8826 mm : '%d Minutten',
8827 h : processRelativeTime$3,
8828 hh : '%d Stonnen',
8829 d : processRelativeTime$3,
8830 dd : '%d Deeg',
8831 M : processRelativeTime$3,
8832 MM : '%d Méint',
8833 y : processRelativeTime$3,
8834 yy : '%d Joer'
8835 },
8836 ordinalParse: /\d{1,2}\./,
8837 ordinal: '%d.',
8838 week: {
8839 dow: 1, // Monday is the first day of the week.
8840 doy: 4 // The week that contains Jan 4th is the first week of the year.
8841 }
8842 });
8843
8844 //! moment.js locale configuration
8845 //! locale : Lao [lo]
8846 //! author : Ryan Hart : https://github.com/ryanhart2
8847
8848 hooks.defineLocale('lo', {
8849 months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
8850 monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
8851 weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
8852 weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
8853 weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
8854 weekdaysParseExact : true,
8855 longDateFormat : {
8856 LT : 'HH:mm',
8857 LTS : 'HH:mm:ss',
8858 L : 'DD/MM/YYYY',
8859 LL : 'D MMMM YYYY',
8860 LLL : 'D MMMM YYYY HH:mm',
8861 LLLL : 'ວັນdddd D MMMM YYYY HH:mm'
8862 },
8863 meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
8864 isPM: function (input) {
8865 return input === 'ຕອນແລງ';
8866 },
8867 meridiem : function (hour, minute, isLower) {
8868 if (hour < 12) {
8869 return 'ຕອນເຊົ້າ';
8870 } else {
8871 return 'ຕອນແລງ';
8872 }
8873 },
8874 calendar : {
8875 sameDay : '[ມື້ນີ້ເວລາ] LT',
8876 nextDay : '[ມື້ອື່ນເວລາ] LT',
8877 nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',
8878 lastDay : '[ມື້ວານນີ້ເວລາ] LT',
8879 lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
8880 sameElse : 'L'
8881 },
8882 relativeTime : {
8883 future : 'ອີກ %s',
8884 past : '%sຜ່ານມາ',
8885 s : 'ບໍ່ເທົ່າໃດວິນາທີ',
8886 m : '1 ນາທີ',
8887 mm : '%d ນາທີ',
8888 h : '1 ຊົ່ວໂມງ',
8889 hh : '%d ຊົ່ວໂມງ',
8890 d : '1 ມື້',
8891 dd : '%d ມື້',
8892 M : '1 ເດືອນ',
8893 MM : '%d ເດືອນ',
8894 y : '1 ປີ',
8895 yy : '%d ປີ'
8896 },
8897 ordinalParse: /(ທີ່)\d{1,2}/,
8898 ordinal : function (number) {
8899 return 'ທີ່' + number;
8900 }
8901 });
8902
8903 //! moment.js locale configuration
8904 //! locale : Lithuanian [lt]
8905 //! author : Mindaugas Mozūras : https://github.com/mmozuras
8906
8907 var units = {
8908 'm' : 'minutė_minutės_minutę',
8909 'mm': 'minutės_minučių_minutes',
8910 'h' : 'valanda_valandos_valandą',
8911 'hh': 'valandos_valandų_valandas',
8912 'd' : 'diena_dienos_dieną',
8913 'dd': 'dienos_dienų_dienas',
8914 'M' : 'mėnuo_mėnesio_mėnesį',
8915 'MM': 'mėnesiai_mėnesių_mėnesius',
8916 'y' : 'metai_metų_metus',
8917 'yy': 'metai_metų_metus'
8918 };
8919 function translateSeconds(number, withoutSuffix, key, isFuture) {
8920 if (withoutSuffix) {
8921 return 'kelios sekundės';
8922 } else {
8923 return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
8924 }
8925 }
8926 function translateSingular(number, withoutSuffix, key, isFuture) {
8927 return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);
8928 }
8929 function special(number) {
8930 return number % 10 === 0 || (number > 10 && number < 20);
8931 }
8932 function forms(key) {
8933 return units[key].split('_');
8934 }
8935 function translate$6(number, withoutSuffix, key, isFuture) {
8936 var result = number + ' ';
8937 if (number === 1) {
8938 return result + translateSingular(number, withoutSuffix, key[0], isFuture);
8939 } else if (withoutSuffix) {
8940 return result + (special(number) ? forms(key)[1] : forms(key)[0]);
8941 } else {
8942 if (isFuture) {
8943 return result + forms(key)[1];
8944 } else {
8945 return result + (special(number) ? forms(key)[1] : forms(key)[2]);
8946 }
8947 }
8948 }
8949 hooks.defineLocale('lt', {
8950 months : {
8951 format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),
8952 standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),
8953 isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/
8954 },
8955 monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
8956 weekdays : {
8957 format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),
8958 standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),
8959 isFormat: /dddd HH:mm/
8960 },
8961 weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
8962 weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),
8963 weekdaysParseExact : true,
8964 longDateFormat : {
8965 LT : 'HH:mm',
8966 LTS : 'HH:mm:ss',
8967 L : 'YYYY-MM-DD',
8968 LL : 'YYYY [m.] MMMM D [d.]',
8969 LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
8970 LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
8971 l : 'YYYY-MM-DD',
8972 ll : 'YYYY [m.] MMMM D [d.]',
8973 lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
8974 llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
8975 },
8976 calendar : {
8977 sameDay : '[Šiandien] LT',
8978 nextDay : '[Rytoj] LT',
8979 nextWeek : 'dddd LT',
8980 lastDay : '[Vakar] LT',
8981 lastWeek : '[Praėjusį] dddd LT',
8982 sameElse : 'L'
8983 },
8984 relativeTime : {
8985 future : 'po %s',
8986 past : 'prieš %s',
8987 s : translateSeconds,
8988 m : translateSingular,
8989 mm : translate$6,
8990 h : translateSingular,
8991 hh : translate$6,
8992 d : translateSingular,
8993 dd : translate$6,
8994 M : translateSingular,
8995 MM : translate$6,
8996 y : translateSingular,
8997 yy : translate$6
8998 },
8999 ordinalParse: /\d{1,2}-oji/,
9000 ordinal : function (number) {
9001 return number + '-oji';
9002 },
9003 week : {
9004 dow : 1, // Monday is the first day of the week.
9005 doy : 4 // The week that contains Jan 4th is the first week of the year.
9006 }
9007 });
9008
9009 //! moment.js locale configuration
9010 //! locale : Latvian [lv]
9011 //! author : Kristaps Karlsons : https://github.com/skakri
9012 //! author : Jānis Elmeris : https://github.com/JanisE
9013
9014 var units$1 = {
9015 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
9016 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
9017 'h': 'stundas_stundām_stunda_stundas'.split('_'),
9018 'hh': 'stundas_stundām_stunda_stundas'.split('_'),
9019 'd': 'dienas_dienām_diena_dienas'.split('_'),
9020 'dd': 'dienas_dienām_diena_dienas'.split('_'),
9021 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
9022 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
9023 'y': 'gada_gadiem_gads_gadi'.split('_'),
9024 'yy': 'gada_gadiem_gads_gadi'.split('_')
9025 };
9026 /**
9027 * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
9028 */
9029 function format$1(forms, number, withoutSuffix) {
9030 if (withoutSuffix) {
9031 // E.g. "21 minūte", "3 minūtes".
9032 return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
9033 } else {
9034 // E.g. "21 minūtes" as in "pēc 21 minūtes".
9035 // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
9036 return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
9037 }
9038 }
9039 function relativeTimeWithPlural$1(number, withoutSuffix, key) {
9040 return number + ' ' + format$1(units$1[key], number, withoutSuffix);
9041 }
9042 function relativeTimeWithSingular(number, withoutSuffix, key) {
9043 return format$1(units$1[key], number, withoutSuffix);
9044 }
9045 function relativeSeconds(number, withoutSuffix) {
9046 return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
9047 }
9048
9049 hooks.defineLocale('lv', {
9050 months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
9051 monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
9052 weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
9053 weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),
9054 weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),
9055 weekdaysParseExact : true,
9056 longDateFormat : {
9057 LT : 'HH:mm',
9058 LTS : 'HH:mm:ss',
9059 L : 'DD.MM.YYYY.',
9060 LL : 'YYYY. [gada] D. MMMM',
9061 LLL : 'YYYY. [gada] D. MMMM, HH:mm',
9062 LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'
9063 },
9064 calendar : {
9065 sameDay : '[Šodien pulksten] LT',
9066 nextDay : '[Rīt pulksten] LT',
9067 nextWeek : 'dddd [pulksten] LT',
9068 lastDay : '[Vakar pulksten] LT',
9069 lastWeek : '[Pagājušā] dddd [pulksten] LT',
9070 sameElse : 'L'
9071 },
9072 relativeTime : {
9073 future : 'pēc %s',
9074 past : 'pirms %s',
9075 s : relativeSeconds,
9076 m : relativeTimeWithSingular,
9077 mm : relativeTimeWithPlural$1,
9078 h : relativeTimeWithSingular,
9079 hh : relativeTimeWithPlural$1,
9080 d : relativeTimeWithSingular,
9081 dd : relativeTimeWithPlural$1,
9082 M : relativeTimeWithSingular,
9083 MM : relativeTimeWithPlural$1,
9084 y : relativeTimeWithSingular,
9085 yy : relativeTimeWithPlural$1
9086 },
9087 ordinalParse: /\d{1,2}\./,
9088 ordinal : '%d.',
9089 week : {
9090 dow : 1, // Monday is the first day of the week.
9091 doy : 4 // The week that contains Jan 4th is the first week of the year.
9092 }
9093 });
9094
9095 //! moment.js locale configuration
9096 //! locale : Montenegrin [me]
9097 //! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac
9098
9099 var translator = {
9100 words: { //Different grammatical cases
9101 m: ['jedan minut', 'jednog minuta'],
9102 mm: ['minut', 'minuta', 'minuta'],
9103 h: ['jedan sat', 'jednog sata'],
9104 hh: ['sat', 'sata', 'sati'],
9105 dd: ['dan', 'dana', 'dana'],
9106 MM: ['mjesec', 'mjeseca', 'mjeseci'],
9107 yy: ['godina', 'godine', 'godina']
9108 },
9109 correctGrammaticalCase: function (number, wordKey) {
9110 return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
9111 },
9112 translate: function (number, withoutSuffix, key) {
9113 var wordKey = translator.words[key];
9114 if (key.length === 1) {
9115 return withoutSuffix ? wordKey[0] : wordKey[1];
9116 } else {
9117 return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
9118 }
9119 }
9120 };
9121
9122 hooks.defineLocale('me', {
9123 months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
9124 monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
9125 monthsParseExact : true,
9126 weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
9127 weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
9128 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
9129 weekdaysParseExact : true,
9130 longDateFormat: {
9131 LT: 'H:mm',
9132 LTS : 'H:mm:ss',
9133 L: 'DD.MM.YYYY',
9134 LL: 'D. MMMM YYYY',
9135 LLL: 'D. MMMM YYYY H:mm',
9136 LLLL: 'dddd, D. MMMM YYYY H:mm'
9137 },
9138 calendar: {
9139 sameDay: '[danas u] LT',
9140 nextDay: '[sjutra u] LT',
9141
9142 nextWeek: function () {
9143 switch (this.day()) {
9144 case 0:
9145 return '[u] [nedjelju] [u] LT';
9146 case 3:
9147 return '[u] [srijedu] [u] LT';
9148 case 6:
9149 return '[u] [subotu] [u] LT';
9150 case 1:
9151 case 2:
9152 case 4:
9153 case 5:
9154 return '[u] dddd [u] LT';
9155 }
9156 },
9157 lastDay : '[juče u] LT',
9158 lastWeek : function () {
9159 var lastWeekDays = [
9160 '[prošle] [nedjelje] [u] LT',
9161 '[prošlog] [ponedjeljka] [u] LT',
9162 '[prošlog] [utorka] [u] LT',
9163 '[prošle] [srijede] [u] LT',
9164 '[prošlog] [četvrtka] [u] LT',
9165 '[prošlog] [petka] [u] LT',
9166 '[prošle] [subote] [u] LT'
9167 ];
9168 return lastWeekDays[this.day()];
9169 },
9170 sameElse : 'L'
9171 },
9172 relativeTime : {
9173 future : 'za %s',
9174 past : 'prije %s',
9175 s : 'nekoliko sekundi',
9176 m : translator.translate,
9177 mm : translator.translate,
9178 h : translator.translate,
9179 hh : translator.translate,
9180 d : 'dan',
9181 dd : translator.translate,
9182 M : 'mjesec',
9183 MM : translator.translate,
9184 y : 'godinu',
9185 yy : translator.translate
9186 },
9187 ordinalParse: /\d{1,2}\./,
9188 ordinal : '%d.',
9189 week : {
9190 dow : 1, // Monday is the first day of the week.
9191 doy : 7 // The week that contains Jan 1st is the first week of the year.
9192 }
9193 });
9194
9195 //! moment.js locale configuration
9196 //! locale : Maori [mi]
9197 //! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal
9198
9199 hooks.defineLocale('mi', {
9200 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('_'),
9201 monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),
9202 monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
9203 monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
9204 monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
9205 monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
9206 weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
9207 weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
9208 weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
9209 longDateFormat: {
9210 LT: 'HH:mm',
9211 LTS: 'HH:mm:ss',
9212 L: 'DD/MM/YYYY',
9213 LL: 'D MMMM YYYY',
9214 LLL: 'D MMMM YYYY [i] HH:mm',
9215 LLLL: 'dddd, D MMMM YYYY [i] HH:mm'
9216 },
9217 calendar: {
9218 sameDay: '[i teie mahana, i] LT',
9219 nextDay: '[apopo i] LT',
9220 nextWeek: 'dddd [i] LT',
9221 lastDay: '[inanahi i] LT',
9222 lastWeek: 'dddd [whakamutunga i] LT',
9223 sameElse: 'L'
9224 },
9225 relativeTime: {
9226 future: 'i roto i %s',
9227 past: '%s i mua',
9228 s: 'te hēkona ruarua',
9229 m: 'he meneti',
9230 mm: '%d meneti',
9231 h: 'te haora',
9232 hh: '%d haora',
9233 d: 'he ra',
9234 dd: '%d ra',
9235 M: 'he marama',
9236 MM: '%d marama',
9237 y: 'he tau',
9238 yy: '%d tau'
9239 },
9240 ordinalParse: /\d{1,2}º/,
9241 ordinal: '%dº',
9242 week : {
9243 dow : 1, // Monday is the first day of the week.
9244 doy : 4 // The week that contains Jan 4th is the first week of the year.
9245 }
9246 });
9247
9248 //! moment.js locale configuration
9249 //! locale : Macedonian [mk]
9250 //! author : Borislav Mickov : https://github.com/B0k0
9251
9252 hooks.defineLocale('mk', {
9253 months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
9254 monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
9255 weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
9256 weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
9257 weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),
9258 longDateFormat : {
9259 LT : 'H:mm',
9260 LTS : 'H:mm:ss',
9261 L : 'D.MM.YYYY',
9262 LL : 'D MMMM YYYY',
9263 LLL : 'D MMMM YYYY H:mm',
9264 LLLL : 'dddd, D MMMM YYYY H:mm'
9265 },
9266 calendar : {
9267 sameDay : '[Денес во] LT',
9268 nextDay : '[Утре во] LT',
9269 nextWeek : '[Во] dddd [во] LT',
9270 lastDay : '[Вчера во] LT',
9271 lastWeek : function () {
9272 switch (this.day()) {
9273 case 0:
9274 case 3:
9275 case 6:
9276 return '[Изминатата] dddd [во] LT';
9277 case 1:
9278 case 2:
9279 case 4:
9280 case 5:
9281 return '[Изминатиот] dddd [во] LT';
9282 }
9283 },
9284 sameElse : 'L'
9285 },
9286 relativeTime : {
9287 future : 'после %s',
9288 past : 'пред %s',
9289 s : 'неколку секунди',
9290 m : 'минута',
9291 mm : '%d минути',
9292 h : 'час',
9293 hh : '%d часа',
9294 d : 'ден',
9295 dd : '%d дена',
9296 M : 'месец',
9297 MM : '%d месеци',
9298 y : 'година',
9299 yy : '%d години'
9300 },
9301 ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
9302 ordinal : function (number) {
9303 var lastDigit = number % 10,
9304 last2Digits = number % 100;
9305 if (number === 0) {
9306 return number + '-ев';
9307 } else if (last2Digits === 0) {
9308 return number + '-ен';
9309 } else if (last2Digits > 10 && last2Digits < 20) {
9310 return number + '-ти';
9311 } else if (lastDigit === 1) {
9312 return number + '-ви';
9313 } else if (lastDigit === 2) {
9314 return number + '-ри';
9315 } else if (lastDigit === 7 || lastDigit === 8) {
9316 return number + '-ми';
9317 } else {
9318 return number + '-ти';
9319 }
9320 },
9321 week : {
9322 dow : 1, // Monday is the first day of the week.
9323 doy : 7 // The week that contains Jan 1st is the first week of the year.
9324 }
9325 });
9326
9327 //! moment.js locale configuration
9328 //! locale : Malayalam [ml]
9329 //! author : Floyd Pink : https://github.com/floydpink
9330
9331 hooks.defineLocale('ml', {
9332 months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
9333 monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
9334 monthsParseExact : true,
9335 weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
9336 weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
9337 weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
9338 longDateFormat : {
9339 LT : 'A h:mm -നു',
9340 LTS : 'A h:mm:ss -നു',
9341 L : 'DD/MM/YYYY',
9342 LL : 'D MMMM YYYY',
9343 LLL : 'D MMMM YYYY, A h:mm -നു',
9344 LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'
9345 },
9346 calendar : {
9347 sameDay : '[ഇന്ന്] LT',
9348 nextDay : '[നാളെ] LT',
9349 nextWeek : 'dddd, LT',
9350 lastDay : '[ഇന്നലെ] LT',
9351 lastWeek : '[കഴിഞ്ഞ] dddd, LT',
9352 sameElse : 'L'
9353 },
9354 relativeTime : {
9355 future : '%s കഴിഞ്ഞ്',
9356 past : '%s മുൻപ്',
9357 s : 'അൽപ നിമിഷങ്ങൾ',
9358 m : 'ഒരു മിനിറ്റ്',
9359 mm : '%d മിനിറ്റ്',
9360 h : 'ഒരു മണിക്കൂർ',
9361 hh : '%d മണിക്കൂർ',
9362 d : 'ഒരു ദിവസം',
9363 dd : '%d ദിവസം',
9364 M : 'ഒരു മാസം',
9365 MM : '%d മാസം',
9366 y : 'ഒരു വർഷം',
9367 yy : '%d വർഷം'
9368 },
9369 meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
9370 meridiemHour : function (hour, meridiem) {
9371 if (hour === 12) {
9372 hour = 0;
9373 }
9374 if ((meridiem === 'രാത്രി' && hour >= 4) ||
9375 meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
9376 meridiem === 'വൈകുന്നേരം') {
9377 return hour + 12;
9378 } else {
9379 return hour;
9380 }
9381 },
9382 meridiem : function (hour, minute, isLower) {
9383 if (hour < 4) {
9384 return 'രാത്രി';
9385 } else if (hour < 12) {
9386 return 'രാവിലെ';
9387 } else if (hour < 17) {
9388 return 'ഉച്ച കഴിഞ്ഞ്';
9389 } else if (hour < 20) {
9390 return 'വൈകുന്നേരം';
9391 } else {
9392 return 'രാത്രി';
9393 }
9394 }
9395 });
9396
9397 //! moment.js locale configuration
9398 //! locale : Marathi [mr]
9399 //! author : Harshad Kale : https://github.com/kalehv
9400 //! author : Vivek Athalye : https://github.com/vnathalye
9401
9402 var symbolMap$7 = {
9403 '1': '१',
9404 '2': '२',
9405 '3': '३',
9406 '4': '४',
9407 '5': '५',
9408 '6': '६',
9409 '7': '७',
9410 '8': '८',
9411 '9': '९',
9412 '0': '०'
9413 };
9414 var numberMap$6 = {
9415 '१': '1',
9416 '२': '2',
9417 '३': '3',
9418 '४': '4',
9419 '५': '5',
9420 '६': '6',
9421 '७': '7',
9422 '८': '8',
9423 '९': '9',
9424 '०': '0'
9425 };
9426
9427 function relativeTimeMr(number, withoutSuffix, string, isFuture)
9428 {
9429 var output = '';
9430 if (withoutSuffix) {
9431 switch (string) {
9432 case 's': output = 'काही सेकंद'; break;
9433 case 'm': output = 'एक मिनिट'; break;
9434 case 'mm': output = '%d मिनिटे'; break;
9435 case 'h': output = 'एक तास'; break;
9436 case 'hh': output = '%d तास'; break;
9437 case 'd': output = 'एक दिवस'; break;
9438 case 'dd': output = '%d दिवस'; break;
9439 case 'M': output = 'एक महिना'; break;
9440 case 'MM': output = '%d महिने'; break;
9441 case 'y': output = 'एक वर्ष'; break;
9442 case 'yy': output = '%d वर्षे'; break;
9443 }
9444 }
9445 else {
9446 switch (string) {
9447 case 's': output = 'काही सेकंदां'; break;
9448 case 'm': output = 'एका मिनिटा'; break;
9449 case 'mm': output = '%d मिनिटां'; break;
9450 case 'h': output = 'एका तासा'; break;
9451 case 'hh': output = '%d तासां'; break;
9452 case 'd': output = 'एका दिवसा'; break;
9453 case 'dd': output = '%d दिवसां'; break;
9454 case 'M': output = 'एका महिन्या'; break;
9455 case 'MM': output = '%d महिन्यां'; break;
9456 case 'y': output = 'एका वर्षा'; break;
9457 case 'yy': output = '%d वर्षां'; break;
9458 }
9459 }
9460 return output.replace(/%d/i, number);
9461 }
9462
9463 hooks.defineLocale('mr', {
9464 months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
9465 monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
9466 monthsParseExact : true,
9467 weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
9468 weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
9469 weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
9470 longDateFormat : {
9471 LT : 'A h:mm वाजता',
9472 LTS : 'A h:mm:ss वाजता',
9473 L : 'DD/MM/YYYY',
9474 LL : 'D MMMM YYYY',
9475 LLL : 'D MMMM YYYY, A h:mm वाजता',
9476 LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'
9477 },
9478 calendar : {
9479 sameDay : '[आज] LT',
9480 nextDay : '[उद्या] LT',
9481 nextWeek : 'dddd, LT',
9482 lastDay : '[काल] LT',
9483 lastWeek: '[मागील] dddd, LT',
9484 sameElse : 'L'
9485 },
9486 relativeTime : {
9487 future: '%sमध्ये',
9488 past: '%sपूर्वी',
9489 s: relativeTimeMr,
9490 m: relativeTimeMr,
9491 mm: relativeTimeMr,
9492 h: relativeTimeMr,
9493 hh: relativeTimeMr,
9494 d: relativeTimeMr,
9495 dd: relativeTimeMr,
9496 M: relativeTimeMr,
9497 MM: relativeTimeMr,
9498 y: relativeTimeMr,
9499 yy: relativeTimeMr
9500 },
9501 preparse: function (string) {
9502 return string.replace(/[१२३४५६७८९०]/g, function (match) {
9503 return numberMap$6[match];
9504 });
9505 },
9506 postformat: function (string) {
9507 return string.replace(/\d/g, function (match) {
9508 return symbolMap$7[match];
9509 });
9510 },
9511 meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,
9512 meridiemHour : function (hour, meridiem) {
9513 if (hour === 12) {
9514 hour = 0;
9515 }
9516 if (meridiem === 'रात्री') {
9517 return hour < 4 ? hour : hour + 12;
9518 } else if (meridiem === 'सकाळी') {
9519 return hour;
9520 } else if (meridiem === 'दुपारी') {
9521 return hour >= 10 ? hour : hour + 12;
9522 } else if (meridiem === 'सायंकाळी') {
9523 return hour + 12;
9524 }
9525 },
9526 meridiem: function (hour, minute, isLower) {
9527 if (hour < 4) {
9528 return 'रात्री';
9529 } else if (hour < 10) {
9530 return 'सकाळी';
9531 } else if (hour < 17) {
9532 return 'दुपारी';
9533 } else if (hour < 20) {
9534 return 'सायंकाळी';
9535 } else {
9536 return 'रात्री';
9537 }
9538 },
9539 week : {
9540 dow : 0, // Sunday is the first day of the week.
9541 doy : 6 // The week that contains Jan 1st is the first week of the year.
9542 }
9543 });
9544
9545 //! moment.js locale configuration
9546 //! locale : Malay [ms-my]
9547 //! note : DEPRECATED, the correct one is [ms]
9548 //! author : Weldan Jamili : https://github.com/weldan
9549
9550 hooks.defineLocale('ms-my', {
9551 months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
9552 monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
9553 weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
9554 weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
9555 weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
9556 longDateFormat : {
9557 LT : 'HH.mm',
9558 LTS : 'HH.mm.ss',
9559 L : 'DD/MM/YYYY',
9560 LL : 'D MMMM YYYY',
9561 LLL : 'D MMMM YYYY [pukul] HH.mm',
9562 LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
9563 },
9564 meridiemParse: /pagi|tengahari|petang|malam/,
9565 meridiemHour: function (hour, meridiem) {
9566 if (hour === 12) {
9567 hour = 0;
9568 }
9569 if (meridiem === 'pagi') {
9570 return hour;
9571 } else if (meridiem === 'tengahari') {
9572 return hour >= 11 ? hour : hour + 12;
9573 } else if (meridiem === 'petang' || meridiem === 'malam') {
9574 return hour + 12;
9575 }
9576 },
9577 meridiem : function (hours, minutes, isLower) {
9578 if (hours < 11) {
9579 return 'pagi';
9580 } else if (hours < 15) {
9581 return 'tengahari';
9582 } else if (hours < 19) {
9583 return 'petang';
9584 } else {
9585 return 'malam';
9586 }
9587 },
9588 calendar : {
9589 sameDay : '[Hari ini pukul] LT',
9590 nextDay : '[Esok pukul] LT',
9591 nextWeek : 'dddd [pukul] LT',
9592 lastDay : '[Kelmarin pukul] LT',
9593 lastWeek : 'dddd [lepas pukul] LT',
9594 sameElse : 'L'
9595 },
9596 relativeTime : {
9597 future : 'dalam %s',
9598 past : '%s yang lepas',
9599 s : 'beberapa saat',
9600 m : 'seminit',
9601 mm : '%d minit',
9602 h : 'sejam',
9603 hh : '%d jam',
9604 d : 'sehari',
9605 dd : '%d hari',
9606 M : 'sebulan',
9607 MM : '%d bulan',
9608 y : 'setahun',
9609 yy : '%d tahun'
9610 },
9611 week : {
9612 dow : 1, // Monday is the first day of the week.
9613 doy : 7 // The week that contains Jan 1st is the first week of the year.
9614 }
9615 });
9616
9617 //! moment.js locale configuration
9618 //! locale : Malay [ms]
9619 //! author : Weldan Jamili : https://github.com/weldan
9620
9621 hooks.defineLocale('ms', {
9622 months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
9623 monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
9624 weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
9625 weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
9626 weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
9627 longDateFormat : {
9628 LT : 'HH.mm',
9629 LTS : 'HH.mm.ss',
9630 L : 'DD/MM/YYYY',
9631 LL : 'D MMMM YYYY',
9632 LLL : 'D MMMM YYYY [pukul] HH.mm',
9633 LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
9634 },
9635 meridiemParse: /pagi|tengahari|petang|malam/,
9636 meridiemHour: function (hour, meridiem) {
9637 if (hour === 12) {
9638 hour = 0;
9639 }
9640 if (meridiem === 'pagi') {
9641 return hour;
9642 } else if (meridiem === 'tengahari') {
9643 return hour >= 11 ? hour : hour + 12;
9644 } else if (meridiem === 'petang' || meridiem === 'malam') {
9645 return hour + 12;
9646 }
9647 },
9648 meridiem : function (hours, minutes, isLower) {
9649 if (hours < 11) {
9650 return 'pagi';
9651 } else if (hours < 15) {
9652 return 'tengahari';
9653 } else if (hours < 19) {
9654 return 'petang';
9655 } else {
9656 return 'malam';
9657 }
9658 },
9659 calendar : {
9660 sameDay : '[Hari ini pukul] LT',
9661 nextDay : '[Esok pukul] LT',
9662 nextWeek : 'dddd [pukul] LT',
9663 lastDay : '[Kelmarin pukul] LT',
9664 lastWeek : 'dddd [lepas pukul] LT',
9665 sameElse : 'L'
9666 },
9667 relativeTime : {
9668 future : 'dalam %s',
9669 past : '%s yang lepas',
9670 s : 'beberapa saat',
9671 m : 'seminit',
9672 mm : '%d minit',
9673 h : 'sejam',
9674 hh : '%d jam',
9675 d : 'sehari',
9676 dd : '%d hari',
9677 M : 'sebulan',
9678 MM : '%d bulan',
9679 y : 'setahun',
9680 yy : '%d tahun'
9681 },
9682 week : {
9683 dow : 1, // Monday is the first day of the week.
9684 doy : 7 // The week that contains Jan 1st is the first week of the year.
9685 }
9686 });
9687
9688 //! moment.js locale configuration
9689 //! locale : Burmese [my]
9690 //! author : Squar team, mysquar.com
9691 //! author : David Rossellat : https://github.com/gholadr
9692 //! author : Tin Aung Lin : https://github.com/thanyawzinmin
9693
9694 var symbolMap$8 = {
9695 '1': '၁',
9696 '2': '၂',
9697 '3': '၃',
9698 '4': '၄',
9699 '5': '၅',
9700 '6': '၆',
9701 '7': '၇',
9702 '8': '၈',
9703 '9': '၉',
9704 '0': '၀'
9705 };
9706 var numberMap$7 = {
9707 '၁': '1',
9708 '၂': '2',
9709 '၃': '3',
9710 '၄': '4',
9711 '၅': '5',
9712 '၆': '6',
9713 '၇': '7',
9714 '၈': '8',
9715 '၉': '9',
9716 '၀': '0'
9717 };
9718
9719 hooks.defineLocale('my', {
9720 months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),
9721 monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
9722 weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),
9723 weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
9724 weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
9725
9726 longDateFormat: {
9727 LT: 'HH:mm',
9728 LTS: 'HH:mm:ss',
9729 L: 'DD/MM/YYYY',
9730 LL: 'D MMMM YYYY',
9731 LLL: 'D MMMM YYYY HH:mm',
9732 LLLL: 'dddd D MMMM YYYY HH:mm'
9733 },
9734 calendar: {
9735 sameDay: '[ယနေ.] LT [မှာ]',
9736 nextDay: '[မနက်ဖြန်] LT [မှာ]',
9737 nextWeek: 'dddd LT [မှာ]',
9738 lastDay: '[မနေ.က] LT [မှာ]',
9739 lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
9740 sameElse: 'L'
9741 },
9742 relativeTime: {
9743 future: 'လာမည့် %s မှာ',
9744 past: 'လွန်ခဲ့သော %s က',
9745 s: 'စက္ကန်.အနည်းငယ်',
9746 m: 'တစ်မိနစ်',
9747 mm: '%d မိနစ်',
9748 h: 'တစ်နာရီ',
9749 hh: '%d နာရီ',
9750 d: 'တစ်ရက်',
9751 dd: '%d ရက်',
9752 M: 'တစ်လ',
9753 MM: '%d လ',
9754 y: 'တစ်နှစ်',
9755 yy: '%d နှစ်'
9756 },
9757 preparse: function (string) {
9758 return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
9759 return numberMap$7[match];
9760 });
9761 },
9762 postformat: function (string) {
9763 return string.replace(/\d/g, function (match) {
9764 return symbolMap$8[match];
9765 });
9766 },
9767 week: {
9768 dow: 1, // Monday is the first day of the week.
9769 doy: 4 // The week that contains Jan 1st is the first week of the year.
9770 }
9771 });
9772
9773 //! moment.js locale configuration
9774 //! locale : Norwegian Bokmål [nb]
9775 //! authors : Espen Hovlandsdal : https://github.com/rexxars
9776 //! Sigurd Gartmann : https://github.com/sigurdga
9777
9778 hooks.defineLocale('nb', {
9779 months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
9780 monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
9781 monthsParseExact : true,
9782 weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
9783 weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),
9784 weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
9785 weekdaysParseExact : true,
9786 longDateFormat : {
9787 LT : 'HH:mm',
9788 LTS : 'HH:mm:ss',
9789 L : 'DD.MM.YYYY',
9790 LL : 'D. MMMM YYYY',
9791 LLL : 'D. MMMM YYYY [kl.] HH:mm',
9792 LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
9793 },
9794 calendar : {
9795 sameDay: '[i dag kl.] LT',
9796 nextDay: '[i morgen kl.] LT',
9797 nextWeek: 'dddd [kl.] LT',
9798 lastDay: '[i går kl.] LT',
9799 lastWeek: '[forrige] dddd [kl.] LT',
9800 sameElse: 'L'
9801 },
9802 relativeTime : {
9803 future : 'om %s',
9804 past : '%s siden',
9805 s : 'noen sekunder',
9806 m : 'ett minutt',
9807 mm : '%d minutter',
9808 h : 'en time',
9809 hh : '%d timer',
9810 d : 'en dag',
9811 dd : '%d dager',
9812 M : 'en måned',
9813 MM : '%d måneder',
9814 y : 'ett år',
9815 yy : '%d år'
9816 },
9817 ordinalParse: /\d{1,2}\./,
9818 ordinal : '%d.',
9819 week : {
9820 dow : 1, // Monday is the first day of the week.
9821 doy : 4 // The week that contains Jan 4th is the first week of the year.
9822 }
9823 });
9824
9825 //! moment.js locale configuration
9826 //! locale : Nepalese [ne]
9827 //! author : suvash : https://github.com/suvash
9828
9829 var symbolMap$9 = {
9830 '1': '१',
9831 '2': '२',
9832 '3': '३',
9833 '4': '४',
9834 '5': '५',
9835 '6': '६',
9836 '7': '७',
9837 '8': '८',
9838 '9': '९',
9839 '0': '०'
9840 };
9841 var numberMap$8 = {
9842 '१': '1',
9843 '२': '2',
9844 '३': '3',
9845 '४': '4',
9846 '५': '5',
9847 '६': '6',
9848 '७': '7',
9849 '८': '8',
9850 '९': '9',
9851 '०': '0'
9852 };
9853
9854 hooks.defineLocale('ne', {
9855 months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
9856 monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
9857 monthsParseExact : true,
9858 weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
9859 weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
9860 weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
9861 weekdaysParseExact : true,
9862 longDateFormat : {
9863 LT : 'Aको h:mm बजे',
9864 LTS : 'Aको h:mm:ss बजे',
9865 L : 'DD/MM/YYYY',
9866 LL : 'D MMMM YYYY',
9867 LLL : 'D MMMM YYYY, Aको h:mm बजे',
9868 LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'
9869 },
9870 preparse: function (string) {
9871 return string.replace(/[१२३४५६७८९०]/g, function (match) {
9872 return numberMap$8[match];
9873 });
9874 },
9875 postformat: function (string) {
9876 return string.replace(/\d/g, function (match) {
9877 return symbolMap$9[match];
9878 });
9879 },
9880 meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
9881 meridiemHour : function (hour, meridiem) {
9882 if (hour === 12) {
9883 hour = 0;
9884 }
9885 if (meridiem === 'राति') {
9886 return hour < 4 ? hour : hour + 12;
9887 } else if (meridiem === 'बिहान') {
9888 return hour;
9889 } else if (meridiem === 'दिउँसो') {
9890 return hour >= 10 ? hour : hour + 12;
9891 } else if (meridiem === 'साँझ') {
9892 return hour + 12;
9893 }
9894 },
9895 meridiem : function (hour, minute, isLower) {
9896 if (hour < 3) {
9897 return 'राति';
9898 } else if (hour < 12) {
9899 return 'बिहान';
9900 } else if (hour < 16) {
9901 return 'दिउँसो';
9902 } else if (hour < 20) {
9903 return 'साँझ';
9904 } else {
9905 return 'राति';
9906 }
9907 },
9908 calendar : {
9909 sameDay : '[आज] LT',
9910 nextDay : '[भोलि] LT',
9911 nextWeek : '[आउँदो] dddd[,] LT',
9912 lastDay : '[हिजो] LT',
9913 lastWeek : '[गएको] dddd[,] LT',
9914 sameElse : 'L'
9915 },
9916 relativeTime : {
9917 future : '%sमा',
9918 past : '%s अगाडि',
9919 s : 'केही क्षण',
9920 m : 'एक मिनेट',
9921 mm : '%d मिनेट',
9922 h : 'एक घण्टा',
9923 hh : '%d घण्टा',
9924 d : 'एक दिन',
9925 dd : '%d दिन',
9926 M : 'एक महिना',
9927 MM : '%d महिना',
9928 y : 'एक बर्ष',
9929 yy : '%d बर्ष'
9930 },
9931 week : {
9932 dow : 0, // Sunday is the first day of the week.
9933 doy : 6 // The week that contains Jan 1st is the first week of the year.
9934 }
9935 });
9936
9937 //! moment.js locale configuration
9938 //! locale : Dutch (Belgium) [nl-be]
9939 //! author : Joris Röling : https://github.com/jorisroling
9940 //! author : Jacob Middag : https://github.com/middagj
9941
9942 var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');
9943 var monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
9944
9945 var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];
9946 var monthsRegex$1 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
9947
9948 hooks.defineLocale('nl-be', {
9949 months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
9950 monthsShort : function (m, format) {
9951 if (/-MMM-/.test(format)) {
9952 return monthsShortWithoutDots$1[m.month()];
9953 } else {
9954 return monthsShortWithDots$1[m.month()];
9955 }
9956 },
9957
9958 monthsRegex: monthsRegex$1,
9959 monthsShortRegex: monthsRegex$1,
9960 monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,
9961 monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
9962
9963 monthsParse : monthsParse,
9964 longMonthsParse : monthsParse,
9965 shortMonthsParse : monthsParse,
9966
9967 weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
9968 weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
9969 weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),
9970 weekdaysParseExact : true,
9971 longDateFormat : {
9972 LT : 'HH:mm',
9973 LTS : 'HH:mm:ss',
9974 L : 'DD/MM/YYYY',
9975 LL : 'D MMMM YYYY',
9976 LLL : 'D MMMM YYYY HH:mm',
9977 LLLL : 'dddd D MMMM YYYY HH:mm'
9978 },
9979 calendar : {
9980 sameDay: '[vandaag om] LT',
9981 nextDay: '[morgen om] LT',
9982 nextWeek: 'dddd [om] LT',
9983 lastDay: '[gisteren om] LT',
9984 lastWeek: '[afgelopen] dddd [om] LT',
9985 sameElse: 'L'
9986 },
9987 relativeTime : {
9988 future : 'over %s',
9989 past : '%s geleden',
9990 s : 'een paar seconden',
9991 m : 'één minuut',
9992 mm : '%d minuten',
9993 h : 'één uur',
9994 hh : '%d uur',
9995 d : 'één dag',
9996 dd : '%d dagen',
9997 M : 'één maand',
9998 MM : '%d maanden',
9999 y : 'één jaar',
10000 yy : '%d jaar'
10001 },
10002 ordinalParse: /\d{1,2}(ste|de)/,
10003 ordinal : function (number) {
10004 return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
10005 },
10006 week : {
10007 dow : 1, // Monday is the first day of the week.
10008 doy : 4 // The week that contains Jan 4th is the first week of the year.
10009 }
10010 });
10011
10012 //! moment.js locale configuration
10013 //! locale : Dutch [nl]
10014 //! author : Joris Röling : https://github.com/jorisroling
10015 //! author : Jacob Middag : https://github.com/middagj
10016
10017 var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');
10018 var monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
10019
10020 var monthsParse$1 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];
10021 var monthsRegex$2 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
10022
10023 hooks.defineLocale('nl', {
10024 months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
10025 monthsShort : function (m, format) {
10026 if (/-MMM-/.test(format)) {
10027 return monthsShortWithoutDots$2[m.month()];
10028 } else {
10029 return monthsShortWithDots$2[m.month()];
10030 }
10031 },
10032
10033 monthsRegex: monthsRegex$2,
10034 monthsShortRegex: monthsRegex$2,
10035 monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,
10036 monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
10037
10038 monthsParse : monthsParse$1,
10039 longMonthsParse : monthsParse$1,
10040 shortMonthsParse : monthsParse$1,
10041
10042 weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
10043 weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
10044 weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),
10045 weekdaysParseExact : true,
10046 longDateFormat : {
10047 LT : 'HH:mm',
10048 LTS : 'HH:mm:ss',
10049 L : 'DD-MM-YYYY',
10050 LL : 'D MMMM YYYY',
10051 LLL : 'D MMMM YYYY HH:mm',
10052 LLLL : 'dddd D MMMM YYYY HH:mm'
10053 },
10054 calendar : {
10055 sameDay: '[vandaag om] LT',
10056 nextDay: '[morgen om] LT',
10057 nextWeek: 'dddd [om] LT',
10058 lastDay: '[gisteren om] LT',
10059 lastWeek: '[afgelopen] dddd [om] LT',
10060 sameElse: 'L'
10061 },
10062 relativeTime : {
10063 future : 'over %s',
10064 past : '%s geleden',
10065 s : 'een paar seconden',
10066 m : 'één minuut',
10067 mm : '%d minuten',
10068 h : 'één uur',
10069 hh : '%d uur',
10070 d : 'één dag',
10071 dd : '%d dagen',
10072 M : 'één maand',
10073 MM : '%d maanden',
10074 y : 'één jaar',
10075 yy : '%d jaar'
10076 },
10077 ordinalParse: /\d{1,2}(ste|de)/,
10078 ordinal : function (number) {
10079 return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
10080 },
10081 week : {
10082 dow : 1, // Monday is the first day of the week.
10083 doy : 4 // The week that contains Jan 4th is the first week of the year.
10084 }
10085 });
10086
10087 //! moment.js locale configuration
10088 //! locale : Nynorsk [nn]
10089 //! author : https://github.com/mechuwind
10090
10091 hooks.defineLocale('nn', {
10092 months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
10093 monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
10094 weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
10095 weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),
10096 weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),
10097 longDateFormat : {
10098 LT : 'HH:mm',
10099 LTS : 'HH:mm:ss',
10100 L : 'DD.MM.YYYY',
10101 LL : 'D. MMMM YYYY',
10102 LLL : 'D. MMMM YYYY [kl.] H:mm',
10103 LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
10104 },
10105 calendar : {
10106 sameDay: '[I dag klokka] LT',
10107 nextDay: '[I morgon klokka] LT',
10108 nextWeek: 'dddd [klokka] LT',
10109 lastDay: '[I går klokka] LT',
10110 lastWeek: '[Føregåande] dddd [klokka] LT',
10111 sameElse: 'L'
10112 },
10113 relativeTime : {
10114 future : 'om %s',
10115 past : '%s sidan',
10116 s : 'nokre sekund',
10117 m : 'eit minutt',
10118 mm : '%d minutt',
10119 h : 'ein time',
10120 hh : '%d timar',
10121 d : 'ein dag',
10122 dd : '%d dagar',
10123 M : 'ein månad',
10124 MM : '%d månader',
10125 y : 'eit år',
10126 yy : '%d år'
10127 },
10128 ordinalParse: /\d{1,2}\./,
10129 ordinal : '%d.',
10130 week : {
10131 dow : 1, // Monday is the first day of the week.
10132 doy : 4 // The week that contains Jan 4th is the first week of the year.
10133 }
10134 });
10135
10136 //! moment.js locale configuration
10137 //! locale : Punjabi (India) [pa-in]
10138 //! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
10139
10140 var symbolMap$10 = {
10141 '1': '੧',
10142 '2': '੨',
10143 '3': '੩',
10144 '4': '੪',
10145 '5': '੫',
10146 '6': '੬',
10147 '7': '੭',
10148 '8': '੮',
10149 '9': '੯',
10150 '0': '੦'
10151 };
10152 var numberMap$9 = {
10153 '੧': '1',
10154 '੨': '2',
10155 '੩': '3',
10156 '੪': '4',
10157 '੫': '5',
10158 '੬': '6',
10159 '੭': '7',
10160 '੮': '8',
10161 '੯': '9',
10162 '੦': '0'
10163 };
10164
10165 hooks.defineLocale('pa-in', {
10166 // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.
10167 months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
10168 monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
10169 weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),
10170 weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
10171 weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
10172 longDateFormat : {
10173 LT : 'A h:mm ਵਜੇ',
10174 LTS : 'A h:mm:ss ਵਜੇ',
10175 L : 'DD/MM/YYYY',
10176 LL : 'D MMMM YYYY',
10177 LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',
10178 LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'
10179 },
10180 calendar : {
10181 sameDay : '[ਅਜ] LT',
10182 nextDay : '[ਕਲ] LT',
10183 nextWeek : 'dddd, LT',
10184 lastDay : '[ਕਲ] LT',
10185 lastWeek : '[ਪਿਛਲੇ] dddd, LT',
10186 sameElse : 'L'
10187 },
10188 relativeTime : {
10189 future : '%s ਵਿੱਚ',
10190 past : '%s ਪਿਛਲੇ',
10191 s : 'ਕੁਝ ਸਕਿੰਟ',
10192 m : 'ਇਕ ਮਿੰਟ',
10193 mm : '%d ਮਿੰਟ',
10194 h : 'ਇੱਕ ਘੰਟਾ',
10195 hh : '%d ਘੰਟੇ',
10196 d : 'ਇੱਕ ਦਿਨ',
10197 dd : '%d ਦਿਨ',
10198 M : 'ਇੱਕ ਮਹੀਨਾ',
10199 MM : '%d ਮਹੀਨੇ',
10200 y : 'ਇੱਕ ਸਾਲ',
10201 yy : '%d ਸਾਲ'
10202 },
10203 preparse: function (string) {
10204 return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
10205 return numberMap$9[match];
10206 });
10207 },
10208 postformat: function (string) {
10209 return string.replace(/\d/g, function (match) {
10210 return symbolMap$10[match];
10211 });
10212 },
10213 // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
10214 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
10215 meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
10216 meridiemHour : function (hour, meridiem) {
10217 if (hour === 12) {
10218 hour = 0;
10219 }
10220 if (meridiem === 'ਰਾਤ') {
10221 return hour < 4 ? hour : hour + 12;
10222 } else if (meridiem === 'ਸਵੇਰ') {
10223 return hour;
10224 } else if (meridiem === 'ਦੁਪਹਿਰ') {
10225 return hour >= 10 ? hour : hour + 12;
10226 } else if (meridiem === 'ਸ਼ਾਮ') {
10227 return hour + 12;
10228 }
10229 },
10230 meridiem : function (hour, minute, isLower) {
10231 if (hour < 4) {
10232 return 'ਰਾਤ';
10233 } else if (hour < 10) {
10234 return 'ਸਵੇਰ';
10235 } else if (hour < 17) {
10236 return 'ਦੁਪਹਿਰ';
10237 } else if (hour < 20) {
10238 return 'ਸ਼ਾਮ';
10239 } else {
10240 return 'ਰਾਤ';
10241 }
10242 },
10243 week : {
10244 dow : 0, // Sunday is the first day of the week.
10245 doy : 6 // The week that contains Jan 1st is the first week of the year.
10246 }
10247 });
10248
10249 //! moment.js locale configuration
10250 //! locale : Polish [pl]
10251 //! author : Rafal Hirsz : https://github.com/evoL
10252
10253 var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');
10254 var monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');
10255 function plural$3(n) {
10256 return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);
10257 }
10258 function translate$7(number, withoutSuffix, key) {
10259 var result = number + ' ';
10260 switch (key) {
10261 case 'm':
10262 return withoutSuffix ? 'minuta' : 'minutę';
10263 case 'mm':
10264 return result + (plural$3(number) ? 'minuty' : 'minut');
10265 case 'h':
10266 return withoutSuffix ? 'godzina' : 'godzinę';
10267 case 'hh':
10268 return result + (plural$3(number) ? 'godziny' : 'godzin');
10269 case 'MM':
10270 return result + (plural$3(number) ? 'miesiące' : 'miesięcy');
10271 case 'yy':
10272 return result + (plural$3(number) ? 'lata' : 'lat');
10273 }
10274 }
10275
10276 hooks.defineLocale('pl', {
10277 months : function (momentToFormat, format) {
10278 if (format === '') {
10279 // Hack: if format empty we know this is used to generate
10280 // RegExp by moment. Give then back both valid forms of months
10281 // in RegExp ready format.
10282 return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';
10283 } else if (/D MMMM/.test(format)) {
10284 return monthsSubjective[momentToFormat.month()];
10285 } else {
10286 return monthsNominative[momentToFormat.month()];
10287 }
10288 },
10289 monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
10290 weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
10291 weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
10292 weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
10293 longDateFormat : {
10294 LT : 'HH:mm',
10295 LTS : 'HH:mm:ss',
10296 L : 'DD.MM.YYYY',
10297 LL : 'D MMMM YYYY',
10298 LLL : 'D MMMM YYYY HH:mm',
10299 LLLL : 'dddd, D MMMM YYYY HH:mm'
10300 },
10301 calendar : {
10302 sameDay: '[Dziś o] LT',
10303 nextDay: '[Jutro o] LT',
10304 nextWeek: '[W] dddd [o] LT',
10305 lastDay: '[Wczoraj o] LT',
10306 lastWeek: function () {
10307 switch (this.day()) {
10308 case 0:
10309 return '[W zeszłą niedzielę o] LT';
10310 case 3:
10311 return '[W zeszłą środę o] LT';
10312 case 6:
10313 return '[W zeszłą sobotę o] LT';
10314 default:
10315 return '[W zeszły] dddd [o] LT';
10316 }
10317 },
10318 sameElse: 'L'
10319 },
10320 relativeTime : {
10321 future : 'za %s',
10322 past : '%s temu',
10323 s : 'kilka sekund',
10324 m : translate$7,
10325 mm : translate$7,
10326 h : translate$7,
10327 hh : translate$7,
10328 d : '1 dzień',
10329 dd : '%d dni',
10330 M : 'miesiąc',
10331 MM : translate$7,
10332 y : 'rok',
10333 yy : translate$7
10334 },
10335 ordinalParse: /\d{1,2}\./,
10336 ordinal : '%d.',
10337 week : {
10338 dow : 1, // Monday is the first day of the week.
10339 doy : 4 // The week that contains Jan 4th is the first week of the year.
10340 }
10341 });
10342
10343 //! moment.js locale configuration
10344 //! locale : Portuguese (Brazil) [pt-br]
10345 //! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
10346
10347 hooks.defineLocale('pt-br', {
10348 months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
10349 monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
10350 weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
10351 weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
10352 weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),
10353 weekdaysParseExact : true,
10354 longDateFormat : {
10355 LT : 'HH:mm',
10356 LTS : 'HH:mm:ss',
10357 L : 'DD/MM/YYYY',
10358 LL : 'D [de] MMMM [de] YYYY',
10359 LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',
10360 LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
10361 },
10362 calendar : {
10363 sameDay: '[Hoje às] LT',
10364 nextDay: '[Amanhã às] LT',
10365 nextWeek: 'dddd [às] LT',
10366 lastDay: '[Ontem às] LT',
10367 lastWeek: function () {
10368 return (this.day() === 0 || this.day() === 6) ?
10369 '[Último] dddd [às] LT' : // Saturday + Sunday
10370 '[Última] dddd [às] LT'; // Monday - Friday
10371 },
10372 sameElse: 'L'
10373 },
10374 relativeTime : {
10375 future : 'em %s',
10376 past : '%s atrás',
10377 s : 'poucos segundos',
10378 m : 'um minuto',
10379 mm : '%d minutos',
10380 h : 'uma hora',
10381 hh : '%d horas',
10382 d : 'um dia',
10383 dd : '%d dias',
10384 M : 'um mês',
10385 MM : '%d meses',
10386 y : 'um ano',
10387 yy : '%d anos'
10388 },
10389 ordinalParse: /\d{1,2}º/,
10390 ordinal : '%dº'
10391 });
10392
10393 //! moment.js locale configuration
10394 //! locale : Portuguese [pt]
10395 //! author : Jefferson : https://github.com/jalex79
10396
10397 hooks.defineLocale('pt', {
10398 months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
10399 monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
10400 weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'),
10401 weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
10402 weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),
10403 weekdaysParseExact : true,
10404 longDateFormat : {
10405 LT : 'HH:mm',
10406 LTS : 'HH:mm:ss',
10407 L : 'DD/MM/YYYY',
10408 LL : 'D [de] MMMM [de] YYYY',
10409 LLL : 'D [de] MMMM [de] YYYY HH:mm',
10410 LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'
10411 },
10412 calendar : {
10413 sameDay: '[Hoje às] LT',
10414 nextDay: '[Amanhã às] LT',
10415 nextWeek: 'dddd [às] LT',
10416 lastDay: '[Ontem às] LT',
10417 lastWeek: function () {
10418 return (this.day() === 0 || this.day() === 6) ?
10419 '[Último] dddd [às] LT' : // Saturday + Sunday
10420 '[Última] dddd [às] LT'; // Monday - Friday
10421 },
10422 sameElse: 'L'
10423 },
10424 relativeTime : {
10425 future : 'em %s',
10426 past : 'há %s',
10427 s : 'segundos',
10428 m : 'um minuto',
10429 mm : '%d minutos',
10430 h : 'uma hora',
10431 hh : '%d horas',
10432 d : 'um dia',
10433 dd : '%d dias',
10434 M : 'um mês',
10435 MM : '%d meses',
10436 y : 'um ano',
10437 yy : '%d anos'
10438 },
10439 ordinalParse: /\d{1,2}º/,
10440 ordinal : '%dº',
10441 week : {
10442 dow : 1, // Monday is the first day of the week.
10443 doy : 4 // The week that contains Jan 4th is the first week of the year.
10444 }
10445 });
10446
10447 //! moment.js locale configuration
10448 //! locale : Romanian [ro]
10449 //! author : Vlad Gurdiga : https://github.com/gurdiga
10450 //! author : Valentin Agachi : https://github.com/avaly
10451
10452 function relativeTimeWithPlural$2(number, withoutSuffix, key) {
10453 var format = {
10454 'mm': 'minute',
10455 'hh': 'ore',
10456 'dd': 'zile',
10457 'MM': 'luni',
10458 'yy': 'ani'
10459 },
10460 separator = ' ';
10461 if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
10462 separator = ' de ';
10463 }
10464 return number + separator + format[key];
10465 }
10466
10467 hooks.defineLocale('ro', {
10468 months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
10469 monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
10470 monthsParseExact: true,
10471 weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
10472 weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
10473 weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
10474 longDateFormat : {
10475 LT : 'H:mm',
10476 LTS : 'H:mm:ss',
10477 L : 'DD.MM.YYYY',
10478 LL : 'D MMMM YYYY',
10479 LLL : 'D MMMM YYYY H:mm',
10480 LLLL : 'dddd, D MMMM YYYY H:mm'
10481 },
10482 calendar : {
10483 sameDay: '[azi la] LT',
10484 nextDay: '[mâine la] LT',
10485 nextWeek: 'dddd [la] LT',
10486 lastDay: '[ieri la] LT',
10487 lastWeek: '[fosta] dddd [la] LT',
10488 sameElse: 'L'
10489 },
10490 relativeTime : {
10491 future : 'peste %s',
10492 past : '%s în urmă',
10493 s : 'câteva secunde',
10494 m : 'un minut',
10495 mm : relativeTimeWithPlural$2,
10496 h : 'o oră',
10497 hh : relativeTimeWithPlural$2,
10498 d : 'o zi',
10499 dd : relativeTimeWithPlural$2,
10500 M : 'o lună',
10501 MM : relativeTimeWithPlural$2,
10502 y : 'un an',
10503 yy : relativeTimeWithPlural$2
10504 },
10505 week : {
10506 dow : 1, // Monday is the first day of the week.
10507 doy : 7 // The week that contains Jan 1st is the first week of the year.
10508 }
10509 });
10510
10511 //! moment.js locale configuration
10512 //! locale : Russian [ru]
10513 //! author : Viktorminator : https://github.com/Viktorminator
10514 //! Author : Menelion Elensúle : https://github.com/Oire
10515 //! author : Коренберг Марк : https://github.com/socketpair
10516
10517 function plural$4(word, num) {
10518 var forms = word.split('_');
10519 return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
10520 }
10521 function relativeTimeWithPlural$3(number, withoutSuffix, key) {
10522 var format = {
10523 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
10524 'hh': 'час_часа_часов',
10525 'dd': 'день_дня_дней',
10526 'MM': 'месяц_месяца_месяцев',
10527 'yy': 'год_года_лет'
10528 };
10529 if (key === 'm') {
10530 return withoutSuffix ? 'минута' : 'минуту';
10531 }
10532 else {
10533 return number + ' ' + plural$4(format[key], +number);
10534 }
10535 }
10536 var monthsParse$2 = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];
10537
10538 // http://new.gramota.ru/spravka/rules/139-prop : § 103
10539 // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
10540 // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
10541 hooks.defineLocale('ru', {
10542 months : {
10543 format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),
10544 standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')
10545 },
10546 monthsShort : {
10547 // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ?
10548 format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),
10549 standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')
10550 },
10551 weekdays : {
10552 standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
10553 format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),
10554 isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/
10555 },
10556 weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
10557 weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
10558 monthsParse : monthsParse$2,
10559 longMonthsParse : monthsParse$2,
10560 shortMonthsParse : monthsParse$2,
10561
10562 // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
10563 monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
10564
10565 // копия предыдущего
10566 monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
10567
10568 // полные названия с падежами
10569 monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
10570
10571 // Выражение, которое соотвествует только сокращённым формам
10572 monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
10573 longDateFormat : {
10574 LT : 'HH:mm',
10575 LTS : 'HH:mm:ss',
10576 L : 'DD.MM.YYYY',
10577 LL : 'D MMMM YYYY г.',
10578 LLL : 'D MMMM YYYY г., HH:mm',
10579 LLLL : 'dddd, D MMMM YYYY г., HH:mm'
10580 },
10581 calendar : {
10582 sameDay: '[Сегодня в] LT',
10583 nextDay: '[Завтра в] LT',
10584 lastDay: '[Вчера в] LT',
10585 nextWeek: function (now) {
10586 if (now.week() !== this.week()) {
10587 switch (this.day()) {
10588 case 0:
10589 return '[В следующее] dddd [в] LT';
10590 case 1:
10591 case 2:
10592 case 4:
10593 return '[В следующий] dddd [в] LT';
10594 case 3:
10595 case 5:
10596 case 6:
10597 return '[В следующую] dddd [в] LT';
10598 }
10599 } else {
10600 if (this.day() === 2) {
10601 return '[Во] dddd [в] LT';
10602 } else {
10603 return '[В] dddd [в] LT';
10604 }
10605 }
10606 },
10607 lastWeek: function (now) {
10608 if (now.week() !== this.week()) {
10609 switch (this.day()) {
10610 case 0:
10611 return '[В прошлое] dddd [в] LT';
10612 case 1:
10613 case 2:
10614 case 4:
10615 return '[В прошлый] dddd [в] LT';
10616 case 3:
10617 case 5:
10618 case 6:
10619 return '[В прошлую] dddd [в] LT';
10620 }
10621 } else {
10622 if (this.day() === 2) {
10623 return '[Во] dddd [в] LT';
10624 } else {
10625 return '[В] dddd [в] LT';
10626 }
10627 }
10628 },
10629 sameElse: 'L'
10630 },
10631 relativeTime : {
10632 future : 'через %s',
10633 past : '%s назад',
10634 s : 'несколько секунд',
10635 m : relativeTimeWithPlural$3,
10636 mm : relativeTimeWithPlural$3,
10637 h : 'час',
10638 hh : relativeTimeWithPlural$3,
10639 d : 'день',
10640 dd : relativeTimeWithPlural$3,
10641 M : 'месяц',
10642 MM : relativeTimeWithPlural$3,
10643 y : 'год',
10644 yy : relativeTimeWithPlural$3
10645 },
10646 meridiemParse: /ночи|утра|дня|вечера/i,
10647 isPM : function (input) {
10648 return /^(дня|вечера)$/.test(input);
10649 },
10650 meridiem : function (hour, minute, isLower) {
10651 if (hour < 4) {
10652 return 'ночи';
10653 } else if (hour < 12) {
10654 return 'утра';
10655 } else if (hour < 17) {
10656 return 'дня';
10657 } else {
10658 return 'вечера';
10659 }
10660 },
10661 ordinalParse: /\d{1,2}-(й|го|я)/,
10662 ordinal: function (number, period) {
10663 switch (period) {
10664 case 'M':
10665 case 'd':
10666 case 'DDD':
10667 return number + '-й';
10668 case 'D':
10669 return number + '-го';
10670 case 'w':
10671 case 'W':
10672 return number + '-я';
10673 default:
10674 return number;
10675 }
10676 },
10677 week : {
10678 dow : 1, // Monday is the first day of the week.
10679 doy : 7 // The week that contains Jan 1st is the first week of the year.
10680 }
10681 });
10682
10683 //! moment.js locale configuration
10684 //! locale : Northern Sami [se]
10685 //! authors : Bård Rolstad Henriksen : https://github.com/karamell
10686
10687
10688 hooks.defineLocale('se', {
10689 months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),
10690 monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
10691 weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),
10692 weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
10693 weekdaysMin : 's_v_m_g_d_b_L'.split('_'),
10694 longDateFormat : {
10695 LT : 'HH:mm',
10696 LTS : 'HH:mm:ss',
10697 L : 'DD.MM.YYYY',
10698 LL : 'MMMM D. [b.] YYYY',
10699 LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',
10700 LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'
10701 },
10702 calendar : {
10703 sameDay: '[otne ti] LT',
10704 nextDay: '[ihttin ti] LT',
10705 nextWeek: 'dddd [ti] LT',
10706 lastDay: '[ikte ti] LT',
10707 lastWeek: '[ovddit] dddd [ti] LT',
10708 sameElse: 'L'
10709 },
10710 relativeTime : {
10711 future : '%s geažes',
10712 past : 'maŋit %s',
10713 s : 'moadde sekunddat',
10714 m : 'okta minuhta',
10715 mm : '%d minuhtat',
10716 h : 'okta diimmu',
10717 hh : '%d diimmut',
10718 d : 'okta beaivi',
10719 dd : '%d beaivvit',
10720 M : 'okta mánnu',
10721 MM : '%d mánut',
10722 y : 'okta jahki',
10723 yy : '%d jagit'
10724 },
10725 ordinalParse: /\d{1,2}\./,
10726 ordinal : '%d.',
10727 week : {
10728 dow : 1, // Monday is the first day of the week.
10729 doy : 4 // The week that contains Jan 4th is the first week of the year.
10730 }
10731 });
10732
10733 //! moment.js locale configuration
10734 //! locale : Sinhalese [si]
10735 //! author : Sampath Sitinamaluwa : https://github.com/sampathsris
10736
10737 /*jshint -W100*/
10738 hooks.defineLocale('si', {
10739 months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),
10740 monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),
10741 weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),
10742 weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
10743 weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
10744 weekdaysParseExact : true,
10745 longDateFormat : {
10746 LT : 'a h:mm',
10747 LTS : 'a h:mm:ss',
10748 L : 'YYYY/MM/DD',
10749 LL : 'YYYY MMMM D',
10750 LLL : 'YYYY MMMM D, a h:mm',
10751 LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'
10752 },
10753 calendar : {
10754 sameDay : '[අද] LT[ට]',
10755 nextDay : '[හෙට] LT[ට]',
10756 nextWeek : 'dddd LT[ට]',
10757 lastDay : '[ඊයේ] LT[ට]',
10758 lastWeek : '[පසුගිය] dddd LT[ට]',
10759 sameElse : 'L'
10760 },
10761 relativeTime : {
10762 future : '%sකින්',
10763 past : '%sකට පෙර',
10764 s : 'තත්පර කිහිපය',
10765 m : 'මිනිත්තුව',
10766 mm : 'මිනිත්තු %d',
10767 h : 'පැය',
10768 hh : 'පැය %d',
10769 d : 'දිනය',
10770 dd : 'දින %d',
10771 M : 'මාසය',
10772 MM : 'මාස %d',
10773 y : 'වසර',
10774 yy : 'වසර %d'
10775 },
10776 ordinalParse: /\d{1,2} වැනි/,
10777 ordinal : function (number) {
10778 return number + ' වැනි';
10779 },
10780 meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
10781 isPM : function (input) {
10782 return input === 'ප.ව.' || input === 'පස් වරු';
10783 },
10784 meridiem : function (hours, minutes, isLower) {
10785 if (hours > 11) {
10786 return isLower ? 'ප.ව.' : 'පස් වරු';
10787 } else {
10788 return isLower ? 'පෙ.ව.' : 'පෙර වරු';
10789 }
10790 }
10791 });
10792
10793 //! moment.js locale configuration
10794 //! locale : Slovak [sk]
10795 //! author : Martin Minka : https://github.com/k2s
10796 //! based on work of petrbela : https://github.com/petrbela
10797
10798 var months$6 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_');
10799 var monthsShort$4 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
10800 function plural$5(n) {
10801 return (n > 1) && (n < 5);
10802 }
10803 function translate$8(number, withoutSuffix, key, isFuture) {
10804 var result = number + ' ';
10805 switch (key) {
10806 case 's': // a few seconds / in a few seconds / a few seconds ago
10807 return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';
10808 case 'm': // a minute / in a minute / a minute ago
10809 return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');
10810 case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
10811 if (withoutSuffix || isFuture) {
10812 return result + (plural$5(number) ? 'minúty' : 'minút');
10813 } else {
10814 return result + 'minútami';
10815 }
10816 break;
10817 case 'h': // an hour / in an hour / an hour ago
10818 return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
10819 case 'hh': // 9 hours / in 9 hours / 9 hours ago
10820 if (withoutSuffix || isFuture) {
10821 return result + (plural$5(number) ? 'hodiny' : 'hodín');
10822 } else {
10823 return result + 'hodinami';
10824 }
10825 break;
10826 case 'd': // a day / in a day / a day ago
10827 return (withoutSuffix || isFuture) ? 'deň' : 'dňom';
10828 case 'dd': // 9 days / in 9 days / 9 days ago
10829 if (withoutSuffix || isFuture) {
10830 return result + (plural$5(number) ? 'dni' : 'dní');
10831 } else {
10832 return result + 'dňami';
10833 }
10834 break;
10835 case 'M': // a month / in a month / a month ago
10836 return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';
10837 case 'MM': // 9 months / in 9 months / 9 months ago
10838 if (withoutSuffix || isFuture) {
10839 return result + (plural$5(number) ? 'mesiace' : 'mesiacov');
10840 } else {
10841 return result + 'mesiacmi';
10842 }
10843 break;
10844 case 'y': // a year / in a year / a year ago
10845 return (withoutSuffix || isFuture) ? 'rok' : 'rokom';
10846 case 'yy': // 9 years / in 9 years / 9 years ago
10847 if (withoutSuffix || isFuture) {
10848 return result + (plural$5(number) ? 'roky' : 'rokov');
10849 } else {
10850 return result + 'rokmi';
10851 }
10852 break;
10853 }
10854 }
10855
10856 hooks.defineLocale('sk', {
10857 months : months$6,
10858 monthsShort : monthsShort$4,
10859 weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
10860 weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),
10861 weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),
10862 longDateFormat : {
10863 LT: 'H:mm',
10864 LTS : 'H:mm:ss',
10865 L : 'DD.MM.YYYY',
10866 LL : 'D. MMMM YYYY',
10867 LLL : 'D. MMMM YYYY H:mm',
10868 LLLL : 'dddd D. MMMM YYYY H:mm'
10869 },
10870 calendar : {
10871 sameDay: '[dnes o] LT',
10872 nextDay: '[zajtra o] LT',
10873 nextWeek: function () {
10874 switch (this.day()) {
10875 case 0:
10876 return '[v nedeľu o] LT';
10877 case 1:
10878 case 2:
10879 return '[v] dddd [o] LT';
10880 case 3:
10881 return '[v stredu o] LT';
10882 case 4:
10883 return '[vo štvrtok o] LT';
10884 case 5:
10885 return '[v piatok o] LT';
10886 case 6:
10887 return '[v sobotu o] LT';
10888 }
10889 },
10890 lastDay: '[včera o] LT',
10891 lastWeek: function () {
10892 switch (this.day()) {
10893 case 0:
10894 return '[minulú nedeľu o] LT';
10895 case 1:
10896 case 2:
10897 return '[minulý] dddd [o] LT';
10898 case 3:
10899 return '[minulú stredu o] LT';
10900 case 4:
10901 case 5:
10902 return '[minulý] dddd [o] LT';
10903 case 6:
10904 return '[minulú sobotu o] LT';
10905 }
10906 },
10907 sameElse: 'L'
10908 },
10909 relativeTime : {
10910 future : 'za %s',
10911 past : 'pred %s',
10912 s : translate$8,
10913 m : translate$8,
10914 mm : translate$8,
10915 h : translate$8,
10916 hh : translate$8,
10917 d : translate$8,
10918 dd : translate$8,
10919 M : translate$8,
10920 MM : translate$8,
10921 y : translate$8,
10922 yy : translate$8
10923 },
10924 ordinalParse: /\d{1,2}\./,
10925 ordinal : '%d.',
10926 week : {
10927 dow : 1, // Monday is the first day of the week.
10928 doy : 4 // The week that contains Jan 4th is the first week of the year.
10929 }
10930 });
10931
10932 //! moment.js locale configuration
10933 //! locale : Slovenian [sl]
10934 //! author : Robert Sedovšek : https://github.com/sedovsek
10935
10936 function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
10937 var result = number + ' ';
10938 switch (key) {
10939 case 's':
10940 return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';
10941 case 'm':
10942 return withoutSuffix ? 'ena minuta' : 'eno minuto';
10943 case 'mm':
10944 if (number === 1) {
10945 result += withoutSuffix ? 'minuta' : 'minuto';
10946 } else if (number === 2) {
10947 result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
10948 } else if (number < 5) {
10949 result += withoutSuffix || isFuture ? 'minute' : 'minutami';
10950 } else {
10951 result += withoutSuffix || isFuture ? 'minut' : 'minutami';
10952 }
10953 return result;
10954 case 'h':
10955 return withoutSuffix ? 'ena ura' : 'eno uro';
10956 case 'hh':
10957 if (number === 1) {
10958 result += withoutSuffix ? 'ura' : 'uro';
10959 } else if (number === 2) {
10960 result += withoutSuffix || isFuture ? 'uri' : 'urama';
10961 } else if (number < 5) {
10962 result += withoutSuffix || isFuture ? 'ure' : 'urami';
10963 } else {
10964 result += withoutSuffix || isFuture ? 'ur' : 'urami';
10965 }
10966 return result;
10967 case 'd':
10968 return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
10969 case 'dd':
10970 if (number === 1) {
10971 result += withoutSuffix || isFuture ? 'dan' : 'dnem';
10972 } else if (number === 2) {
10973 result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
10974 } else {
10975 result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
10976 }
10977 return result;
10978 case 'M':
10979 return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
10980 case 'MM':
10981 if (number === 1) {
10982 result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
10983 } else if (number === 2) {
10984 result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
10985 } else if (number < 5) {
10986 result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
10987 } else {
10988 result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
10989 }
10990 return result;
10991 case 'y':
10992 return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
10993 case 'yy':
10994 if (number === 1) {
10995 result += withoutSuffix || isFuture ? 'leto' : 'letom';
10996 } else if (number === 2) {
10997 result += withoutSuffix || isFuture ? 'leti' : 'letoma';
10998 } else if (number < 5) {
10999 result += withoutSuffix || isFuture ? 'leta' : 'leti';
11000 } else {
11001 result += withoutSuffix || isFuture ? 'let' : 'leti';
11002 }
11003 return result;
11004 }
11005 }
11006
11007 hooks.defineLocale('sl', {
11008 months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
11009 monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
11010 monthsParseExact: true,
11011 weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
11012 weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
11013 weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),
11014 weekdaysParseExact : true,
11015 longDateFormat : {
11016 LT : 'H:mm',
11017 LTS : 'H:mm:ss',
11018 L : 'DD.MM.YYYY',
11019 LL : 'D. MMMM YYYY',
11020 LLL : 'D. MMMM YYYY H:mm',
11021 LLLL : 'dddd, D. MMMM YYYY H:mm'
11022 },
11023 calendar : {
11024 sameDay : '[danes ob] LT',
11025 nextDay : '[jutri ob] LT',
11026
11027 nextWeek : function () {
11028 switch (this.day()) {
11029 case 0:
11030 return '[v] [nedeljo] [ob] LT';
11031 case 3:
11032 return '[v] [sredo] [ob] LT';
11033 case 6:
11034 return '[v] [soboto] [ob] LT';
11035 case 1:
11036 case 2:
11037 case 4:
11038 case 5:
11039 return '[v] dddd [ob] LT';
11040 }
11041 },
11042 lastDay : '[včeraj ob] LT',
11043 lastWeek : function () {
11044 switch (this.day()) {
11045 case 0:
11046 return '[prejšnjo] [nedeljo] [ob] LT';
11047 case 3:
11048 return '[prejšnjo] [sredo] [ob] LT';
11049 case 6:
11050 return '[prejšnjo] [soboto] [ob] LT';
11051 case 1:
11052 case 2:
11053 case 4:
11054 case 5:
11055 return '[prejšnji] dddd [ob] LT';
11056 }
11057 },
11058 sameElse : 'L'
11059 },
11060 relativeTime : {
11061 future : 'čez %s',
11062 past : 'pred %s',
11063 s : processRelativeTime$4,
11064 m : processRelativeTime$4,
11065 mm : processRelativeTime$4,
11066 h : processRelativeTime$4,
11067 hh : processRelativeTime$4,
11068 d : processRelativeTime$4,
11069 dd : processRelativeTime$4,
11070 M : processRelativeTime$4,
11071 MM : processRelativeTime$4,
11072 y : processRelativeTime$4,
11073 yy : processRelativeTime$4
11074 },
11075 ordinalParse: /\d{1,2}\./,
11076 ordinal : '%d.',
11077 week : {
11078 dow : 1, // Monday is the first day of the week.
11079 doy : 7 // The week that contains Jan 1st is the first week of the year.
11080 }
11081 });
11082
11083 //! moment.js locale configuration
11084 //! locale : Albanian [sq]
11085 //! author : Flakërim Ismani : https://github.com/flakerimi
11086 //! author : Menelion Elensúle : https://github.com/Oire
11087 //! author : Oerd Cukalla : https://github.com/oerd
11088
11089 hooks.defineLocale('sq', {
11090 months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),
11091 monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
11092 weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),
11093 weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
11094 weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),
11095 weekdaysParseExact : true,
11096 meridiemParse: /PD|MD/,
11097 isPM: function (input) {
11098 return input.charAt(0) === 'M';
11099 },
11100 meridiem : function (hours, minutes, isLower) {
11101 return hours < 12 ? 'PD' : 'MD';
11102 },
11103 longDateFormat : {
11104 LT : 'HH:mm',
11105 LTS : 'HH:mm:ss',
11106 L : 'DD/MM/YYYY',
11107 LL : 'D MMMM YYYY',
11108 LLL : 'D MMMM YYYY HH:mm',
11109 LLLL : 'dddd, D MMMM YYYY HH:mm'
11110 },
11111 calendar : {
11112 sameDay : '[Sot në] LT',
11113 nextDay : '[Nesër në] LT',
11114 nextWeek : 'dddd [në] LT',
11115 lastDay : '[Dje në] LT',
11116 lastWeek : 'dddd [e kaluar në] LT',
11117 sameElse : 'L'
11118 },
11119 relativeTime : {
11120 future : 'në %s',
11121 past : '%s më parë',
11122 s : 'disa sekonda',
11123 m : 'një minutë',
11124 mm : '%d minuta',
11125 h : 'një orë',
11126 hh : '%d orë',
11127 d : 'një ditë',
11128 dd : '%d ditë',
11129 M : 'një muaj',
11130 MM : '%d muaj',
11131 y : 'një vit',
11132 yy : '%d vite'
11133 },
11134 ordinalParse: /\d{1,2}\./,
11135 ordinal : '%d.',
11136 week : {
11137 dow : 1, // Monday is the first day of the week.
11138 doy : 4 // The week that contains Jan 4th is the first week of the year.
11139 }
11140 });
11141
11142 //! moment.js locale configuration
11143 //! locale : Serbian Cyrillic [sr-cyrl]
11144 //! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
11145
11146 var translator$1 = {
11147 words: { //Different grammatical cases
11148 m: ['један минут', 'једне минуте'],
11149 mm: ['минут', 'минуте', 'минута'],
11150 h: ['један сат', 'једног сата'],
11151 hh: ['сат', 'сата', 'сати'],
11152 dd: ['дан', 'дана', 'дана'],
11153 MM: ['месец', 'месеца', 'месеци'],
11154 yy: ['година', 'године', 'година']
11155 },
11156 correctGrammaticalCase: function (number, wordKey) {
11157 return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
11158 },
11159 translate: function (number, withoutSuffix, key) {
11160 var wordKey = translator$1.words[key];
11161 if (key.length === 1) {
11162 return withoutSuffix ? wordKey[0] : wordKey[1];
11163 } else {
11164 return number + ' ' + translator$1.correctGrammaticalCase(number, wordKey);
11165 }
11166 }
11167 };
11168
11169 hooks.defineLocale('sr-cyrl', {
11170 months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),
11171 monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
11172 monthsParseExact: true,
11173 weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
11174 weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
11175 weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
11176 weekdaysParseExact : true,
11177 longDateFormat: {
11178 LT: 'H:mm',
11179 LTS : 'H:mm:ss',
11180 L: 'DD.MM.YYYY',
11181 LL: 'D. MMMM YYYY',
11182 LLL: 'D. MMMM YYYY H:mm',
11183 LLLL: 'dddd, D. MMMM YYYY H:mm'
11184 },
11185 calendar: {
11186 sameDay: '[данас у] LT',
11187 nextDay: '[сутра у] LT',
11188 nextWeek: function () {
11189 switch (this.day()) {
11190 case 0:
11191 return '[у] [недељу] [у] LT';
11192 case 3:
11193 return '[у] [среду] [у] LT';
11194 case 6:
11195 return '[у] [суботу] [у] LT';
11196 case 1:
11197 case 2:
11198 case 4:
11199 case 5:
11200 return '[у] dddd [у] LT';
11201 }
11202 },
11203 lastDay : '[јуче у] LT',
11204 lastWeek : function () {
11205 var lastWeekDays = [
11206 '[прошле] [недеље] [у] LT',
11207 '[прошлог] [понедељка] [у] LT',
11208 '[прошлог] [уторка] [у] LT',
11209 '[прошле] [среде] [у] LT',
11210 '[прошлог] [четвртка] [у] LT',
11211 '[прошлог] [петка] [у] LT',
11212 '[прошле] [суботе] [у] LT'
11213 ];
11214 return lastWeekDays[this.day()];
11215 },
11216 sameElse : 'L'
11217 },
11218 relativeTime : {
11219 future : 'за %s',
11220 past : 'пре %s',
11221 s : 'неколико секунди',
11222 m : translator$1.translate,
11223 mm : translator$1.translate,
11224 h : translator$1.translate,
11225 hh : translator$1.translate,
11226 d : 'дан',
11227 dd : translator$1.translate,
11228 M : 'месец',
11229 MM : translator$1.translate,
11230 y : 'годину',
11231 yy : translator$1.translate
11232 },
11233 ordinalParse: /\d{1,2}\./,
11234 ordinal : '%d.',
11235 week : {
11236 dow : 1, // Monday is the first day of the week.
11237 doy : 7 // The week that contains Jan 1st is the first week of the year.
11238 }
11239 });
11240
11241 //! moment.js locale configuration
11242 //! locale : Serbian [sr]
11243 //! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
11244
11245 var translator$2 = {
11246 words: { //Different grammatical cases
11247 m: ['jedan minut', 'jedne minute'],
11248 mm: ['minut', 'minute', 'minuta'],
11249 h: ['jedan sat', 'jednog sata'],
11250 hh: ['sat', 'sata', 'sati'],
11251 dd: ['dan', 'dana', 'dana'],
11252 MM: ['mesec', 'meseca', 'meseci'],
11253 yy: ['godina', 'godine', 'godina']
11254 },
11255 correctGrammaticalCase: function (number, wordKey) {
11256 return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
11257 },
11258 translate: function (number, withoutSuffix, key) {
11259 var wordKey = translator$2.words[key];
11260 if (key.length === 1) {
11261 return withoutSuffix ? wordKey[0] : wordKey[1];
11262 } else {
11263 return number + ' ' + translator$2.correctGrammaticalCase(number, wordKey);
11264 }
11265 }
11266 };
11267
11268 hooks.defineLocale('sr', {
11269 months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
11270 monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
11271 monthsParseExact: true,
11272 weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),
11273 weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
11274 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
11275 weekdaysParseExact : true,
11276 longDateFormat: {
11277 LT: 'H:mm',
11278 LTS : 'H:mm:ss',
11279 L: 'DD.MM.YYYY',
11280 LL: 'D. MMMM YYYY',
11281 LLL: 'D. MMMM YYYY H:mm',
11282 LLLL: 'dddd, D. MMMM YYYY H:mm'
11283 },
11284 calendar: {
11285 sameDay: '[danas u] LT',
11286 nextDay: '[sutra u] LT',
11287 nextWeek: function () {
11288 switch (this.day()) {
11289 case 0:
11290 return '[u] [nedelju] [u] LT';
11291 case 3:
11292 return '[u] [sredu] [u] LT';
11293 case 6:
11294 return '[u] [subotu] [u] LT';
11295 case 1:
11296 case 2:
11297 case 4:
11298 case 5:
11299 return '[u] dddd [u] LT';
11300 }
11301 },
11302 lastDay : '[juče u] LT',
11303 lastWeek : function () {
11304 var lastWeekDays = [
11305 '[prošle] [nedelje] [u] LT',
11306 '[prošlog] [ponedeljka] [u] LT',
11307 '[prošlog] [utorka] [u] LT',
11308 '[prošle] [srede] [u] LT',
11309 '[prošlog] [četvrtka] [u] LT',
11310 '[prošlog] [petka] [u] LT',
11311 '[prošle] [subote] [u] LT'
11312 ];
11313 return lastWeekDays[this.day()];
11314 },
11315 sameElse : 'L'
11316 },
11317 relativeTime : {
11318 future : 'za %s',
11319 past : 'pre %s',
11320 s : 'nekoliko sekundi',
11321 m : translator$2.translate,
11322 mm : translator$2.translate,
11323 h : translator$2.translate,
11324 hh : translator$2.translate,
11325 d : 'dan',
11326 dd : translator$2.translate,
11327 M : 'mesec',
11328 MM : translator$2.translate,
11329 y : 'godinu',
11330 yy : translator$2.translate
11331 },
11332 ordinalParse: /\d{1,2}\./,
11333 ordinal : '%d.',
11334 week : {
11335 dow : 1, // Monday is the first day of the week.
11336 doy : 7 // The week that contains Jan 1st is the first week of the year.
11337 }
11338 });
11339
11340 //! moment.js locale configuration
11341 //! locale : siSwati [ss]
11342 //! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies
11343
11344
11345 hooks.defineLocale('ss', {
11346 months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'),
11347 monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
11348 weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),
11349 weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
11350 weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
11351 weekdaysParseExact : true,
11352 longDateFormat : {
11353 LT : 'h:mm A',
11354 LTS : 'h:mm:ss A',
11355 L : 'DD/MM/YYYY',
11356 LL : 'D MMMM YYYY',
11357 LLL : 'D MMMM YYYY h:mm A',
11358 LLLL : 'dddd, D MMMM YYYY h:mm A'
11359 },
11360 calendar : {
11361 sameDay : '[Namuhla nga] LT',
11362 nextDay : '[Kusasa nga] LT',
11363 nextWeek : 'dddd [nga] LT',
11364 lastDay : '[Itolo nga] LT',
11365 lastWeek : 'dddd [leliphelile] [nga] LT',
11366 sameElse : 'L'
11367 },
11368 relativeTime : {
11369 future : 'nga %s',
11370 past : 'wenteka nga %s',
11371 s : 'emizuzwana lomcane',
11372 m : 'umzuzu',
11373 mm : '%d emizuzu',
11374 h : 'lihora',
11375 hh : '%d emahora',
11376 d : 'lilanga',
11377 dd : '%d emalanga',
11378 M : 'inyanga',
11379 MM : '%d tinyanga',
11380 y : 'umnyaka',
11381 yy : '%d iminyaka'
11382 },
11383 meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
11384 meridiem : function (hours, minutes, isLower) {
11385 if (hours < 11) {
11386 return 'ekuseni';
11387 } else if (hours < 15) {
11388 return 'emini';
11389 } else if (hours < 19) {
11390 return 'entsambama';
11391 } else {
11392 return 'ebusuku';
11393 }
11394 },
11395 meridiemHour : function (hour, meridiem) {
11396 if (hour === 12) {
11397 hour = 0;
11398 }
11399 if (meridiem === 'ekuseni') {
11400 return hour;
11401 } else if (meridiem === 'emini') {
11402 return hour >= 11 ? hour : hour + 12;
11403 } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
11404 if (hour === 0) {
11405 return 0;
11406 }
11407 return hour + 12;
11408 }
11409 },
11410 ordinalParse: /\d{1,2}/,
11411 ordinal : '%d',
11412 week : {
11413 dow : 1, // Monday is the first day of the week.
11414 doy : 4 // The week that contains Jan 4th is the first week of the year.
11415 }
11416 });
11417
11418 //! moment.js locale configuration
11419 //! locale : Swedish [sv]
11420 //! author : Jens Alm : https://github.com/ulmus
11421
11422 hooks.defineLocale('sv', {
11423 months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
11424 monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
11425 weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
11426 weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
11427 weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),
11428 longDateFormat : {
11429 LT : 'HH:mm',
11430 LTS : 'HH:mm:ss',
11431 L : 'YYYY-MM-DD',
11432 LL : 'D MMMM YYYY',
11433 LLL : 'D MMMM YYYY [kl.] HH:mm',
11434 LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',
11435 lll : 'D MMM YYYY HH:mm',
11436 llll : 'ddd D MMM YYYY HH:mm'
11437 },
11438 calendar : {
11439 sameDay: '[Idag] LT',
11440 nextDay: '[Imorgon] LT',
11441 lastDay: '[Igår] LT',
11442 nextWeek: '[På] dddd LT',
11443 lastWeek: '[I] dddd[s] LT',
11444 sameElse: 'L'
11445 },
11446 relativeTime : {
11447 future : 'om %s',
11448 past : 'för %s sedan',
11449 s : 'några sekunder',
11450 m : 'en minut',
11451 mm : '%d minuter',
11452 h : 'en timme',
11453 hh : '%d timmar',
11454 d : 'en dag',
11455 dd : '%d dagar',
11456 M : 'en månad',
11457 MM : '%d månader',
11458 y : 'ett år',
11459 yy : '%d år'
11460 },
11461 ordinalParse: /\d{1,2}(e|a)/,
11462 ordinal : function (number) {
11463 var b = number % 10,
11464 output = (~~(number % 100 / 10) === 1) ? 'e' :
11465 (b === 1) ? 'a' :
11466 (b === 2) ? 'a' :
11467 (b === 3) ? 'e' : 'e';
11468 return number + output;
11469 },
11470 week : {
11471 dow : 1, // Monday is the first day of the week.
11472 doy : 4 // The week that contains Jan 4th is the first week of the year.
11473 }
11474 });
11475
11476 //! moment.js locale configuration
11477 //! locale : Swahili [sw]
11478 //! author : Fahad Kassim : https://github.com/fadsel
11479
11480 hooks.defineLocale('sw', {
11481 months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),
11482 monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
11483 weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),
11484 weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
11485 weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
11486 weekdaysParseExact : true,
11487 longDateFormat : {
11488 LT : 'HH:mm',
11489 LTS : 'HH:mm:ss',
11490 L : 'DD.MM.YYYY',
11491 LL : 'D MMMM YYYY',
11492 LLL : 'D MMMM YYYY HH:mm',
11493 LLLL : 'dddd, D MMMM YYYY HH:mm'
11494 },
11495 calendar : {
11496 sameDay : '[leo saa] LT',
11497 nextDay : '[kesho saa] LT',
11498 nextWeek : '[wiki ijayo] dddd [saat] LT',
11499 lastDay : '[jana] LT',
11500 lastWeek : '[wiki iliyopita] dddd [saat] LT',
11501 sameElse : 'L'
11502 },
11503 relativeTime : {
11504 future : '%s baadaye',
11505 past : 'tokea %s',
11506 s : 'hivi punde',
11507 m : 'dakika moja',
11508 mm : 'dakika %d',
11509 h : 'saa limoja',
11510 hh : 'masaa %d',
11511 d : 'siku moja',
11512 dd : 'masiku %d',
11513 M : 'mwezi mmoja',
11514 MM : 'miezi %d',
11515 y : 'mwaka mmoja',
11516 yy : 'miaka %d'
11517 },
11518 week : {
11519 dow : 1, // Monday is the first day of the week.
11520 doy : 7 // The week that contains Jan 1st is the first week of the year.
11521 }
11522 });
11523
11524 //! moment.js locale configuration
11525 //! locale : Tamil [ta]
11526 //! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
11527
11528 var symbolMap$11 = {
11529 '1': '௧',
11530 '2': '௨',
11531 '3': '௩',
11532 '4': '௪',
11533 '5': '௫',
11534 '6': '௬',
11535 '7': '௭',
11536 '8': '௮',
11537 '9': '௯',
11538 '0': '௦'
11539 };
11540 var numberMap$10 = {
11541 '௧': '1',
11542 '௨': '2',
11543 '௩': '3',
11544 '௪': '4',
11545 '௫': '5',
11546 '௬': '6',
11547 '௭': '7',
11548 '௮': '8',
11549 '௯': '9',
11550 '௦': '0'
11551 };
11552
11553 hooks.defineLocale('ta', {
11554 months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
11555 monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
11556 weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
11557 weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),
11558 weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
11559 longDateFormat : {
11560 LT : 'HH:mm',
11561 LTS : 'HH:mm:ss',
11562 L : 'DD/MM/YYYY',
11563 LL : 'D MMMM YYYY',
11564 LLL : 'D MMMM YYYY, HH:mm',
11565 LLLL : 'dddd, D MMMM YYYY, HH:mm'
11566 },
11567 calendar : {
11568 sameDay : '[இன்று] LT',
11569 nextDay : '[நாளை] LT',
11570 nextWeek : 'dddd, LT',
11571 lastDay : '[நேற்று] LT',
11572 lastWeek : '[கடந்த வாரம்] dddd, LT',
11573 sameElse : 'L'
11574 },
11575 relativeTime : {
11576 future : '%s இல்',
11577 past : '%s முன்',
11578 s : 'ஒரு சில விநாடிகள்',
11579 m : 'ஒரு நிமிடம்',
11580 mm : '%d நிமிடங்கள்',
11581 h : 'ஒரு மணி நேரம்',
11582 hh : '%d மணி நேரம்',
11583 d : 'ஒரு நாள்',
11584 dd : '%d நாட்கள்',
11585 M : 'ஒரு மாதம்',
11586 MM : '%d மாதங்கள்',
11587 y : 'ஒரு வருடம்',
11588 yy : '%d ஆண்டுகள்'
11589 },
11590 ordinalParse: /\d{1,2}வது/,
11591 ordinal : function (number) {
11592 return number + 'வது';
11593 },
11594 preparse: function (string) {
11595 return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
11596 return numberMap$10[match];
11597 });
11598 },
11599 postformat: function (string) {
11600 return string.replace(/\d/g, function (match) {
11601 return symbolMap$11[match];
11602 });
11603 },
11604 // refer http://ta.wikipedia.org/s/1er1
11605 meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
11606 meridiem : function (hour, minute, isLower) {
11607 if (hour < 2) {
11608 return ' யாமம்';
11609 } else if (hour < 6) {
11610 return ' வைகறை'; // வைகறை
11611 } else if (hour < 10) {
11612 return ' காலை'; // காலை
11613 } else if (hour < 14) {
11614 return ' நண்பகல்'; // நண்பகல்
11615 } else if (hour < 18) {
11616 return ' எற்பாடு'; // எற்பாடு
11617 } else if (hour < 22) {
11618 return ' மாலை'; // மாலை
11619 } else {
11620 return ' யாமம்';
11621 }
11622 },
11623 meridiemHour : function (hour, meridiem) {
11624 if (hour === 12) {
11625 hour = 0;
11626 }
11627 if (meridiem === 'யாமம்') {
11628 return hour < 2 ? hour : hour + 12;
11629 } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
11630 return hour;
11631 } else if (meridiem === 'நண்பகல்') {
11632 return hour >= 10 ? hour : hour + 12;
11633 } else {
11634 return hour + 12;
11635 }
11636 },
11637 week : {
11638 dow : 0, // Sunday is the first day of the week.
11639 doy : 6 // The week that contains Jan 1st is the first week of the year.
11640 }
11641 });
11642
11643 //! moment.js locale configuration
11644 //! locale : Telugu [te]
11645 //! author : Krishna Chaitanya Thota : https://github.com/kcthota
11646
11647 hooks.defineLocale('te', {
11648 months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),
11649 monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),
11650 monthsParseExact : true,
11651 weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),
11652 weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
11653 weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
11654 longDateFormat : {
11655 LT : 'A h:mm',
11656 LTS : 'A h:mm:ss',
11657 L : 'DD/MM/YYYY',
11658 LL : 'D MMMM YYYY',
11659 LLL : 'D MMMM YYYY, A h:mm',
11660 LLLL : 'dddd, D MMMM YYYY, A h:mm'
11661 },
11662 calendar : {
11663 sameDay : '[నేడు] LT',
11664 nextDay : '[రేపు] LT',
11665 nextWeek : 'dddd, LT',
11666 lastDay : '[నిన్న] LT',
11667 lastWeek : '[గత] dddd, LT',
11668 sameElse : 'L'
11669 },
11670 relativeTime : {
11671 future : '%s లో',
11672 past : '%s క్రితం',
11673 s : 'కొన్ని క్షణాలు',
11674 m : 'ఒక నిమిషం',
11675 mm : '%d నిమిషాలు',
11676 h : 'ఒక గంట',
11677 hh : '%d గంటలు',
11678 d : 'ఒక రోజు',
11679 dd : '%d రోజులు',
11680 M : 'ఒక నెల',
11681 MM : '%d నెలలు',
11682 y : 'ఒక సంవత్సరం',
11683 yy : '%d సంవత్సరాలు'
11684 },
11685 ordinalParse : /\d{1,2}వ/,
11686 ordinal : '%dవ',
11687 meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
11688 meridiemHour : function (hour, meridiem) {
11689 if (hour === 12) {
11690 hour = 0;
11691 }
11692 if (meridiem === 'రాత్రి') {
11693 return hour < 4 ? hour : hour + 12;
11694 } else if (meridiem === 'ఉదయం') {
11695 return hour;
11696 } else if (meridiem === 'మధ్యాహ్నం') {
11697 return hour >= 10 ? hour : hour + 12;
11698 } else if (meridiem === 'సాయంత్రం') {
11699 return hour + 12;
11700 }
11701 },
11702 meridiem : function (hour, minute, isLower) {
11703 if (hour < 4) {
11704 return 'రాత్రి';
11705 } else if (hour < 10) {
11706 return 'ఉదయం';
11707 } else if (hour < 17) {
11708 return 'మధ్యాహ్నం';
11709 } else if (hour < 20) {
11710 return 'సాయంత్రం';
11711 } else {
11712 return 'రాత్రి';
11713 }
11714 },
11715 week : {
11716 dow : 0, // Sunday is the first day of the week.
11717 doy : 6 // The week that contains Jan 1st is the first week of the year.
11718 }
11719 });
11720
11721 //! moment.js locale configuration
11722 //! locale : Tetun Dili (East Timor) [tet]
11723 //! author : Joshua Brooks : https://github.com/joshbrooks
11724 //! author : Onorio De J. Afonso : https://github.com/marobo
11725
11726 hooks.defineLocale('tet', {
11727 months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),
11728 monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez'.split('_'),
11729 weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu'.split('_'),
11730 weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sext_Sab'.split('_'),
11731 weekdaysMin : 'Do_Seg_Te_Ku_Ki_Sex_Sa'.split('_'),
11732 longDateFormat : {
11733 LT : 'HH:mm',
11734 LTS : 'HH:mm:ss',
11735 L : 'DD/MM/YYYY',
11736 LL : 'D MMMM YYYY',
11737 LLL : 'D MMMM YYYY HH:mm',
11738 LLLL : 'dddd, D MMMM YYYY HH:mm'
11739 },
11740 calendar : {
11741 sameDay: '[Ohin iha] LT',
11742 nextDay: '[Aban iha] LT',
11743 nextWeek: 'dddd [iha] LT',
11744 lastDay: '[Horiseik iha] LT',
11745 lastWeek: 'dddd [semana kotuk] [iha] LT',
11746 sameElse: 'L'
11747 },
11748 relativeTime : {
11749 future : 'iha %s',
11750 past : '%s liuba',
11751 s : 'minutu balun',
11752 m : 'minutu ida',
11753 mm : 'minutus %d',
11754 h : 'horas ida',
11755 hh : 'horas %d',
11756 d : 'loron ida',
11757 dd : 'loron %d',
11758 M : 'fulan ida',
11759 MM : 'fulan %d',
11760 y : 'tinan ida',
11761 yy : 'tinan %d'
11762 },
11763 ordinalParse: /\d{1,2}(st|nd|rd|th)/,
11764 ordinal : function (number) {
11765 var b = number % 10,
11766 output = (~~(number % 100 / 10) === 1) ? 'th' :
11767 (b === 1) ? 'st' :
11768 (b === 2) ? 'nd' :
11769 (b === 3) ? 'rd' : 'th';
11770 return number + output;
11771 },
11772 week : {
11773 dow : 1, // Monday is the first day of the week.
11774 doy : 4 // The week that contains Jan 4th is the first week of the year.
11775 }
11776 });
11777
11778 //! moment.js locale configuration
11779 //! locale : Thai [th]
11780 //! author : Kridsada Thanabulpong : https://github.com/sirn
11781
11782 hooks.defineLocale('th', {
11783 months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
11784 monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),
11785 monthsParseExact: true,
11786 weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
11787 weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
11788 weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
11789 weekdaysParseExact : true,
11790 longDateFormat : {
11791 LT : 'H:mm',
11792 LTS : 'H:mm:ss',
11793 L : 'YYYY/MM/DD',
11794 LL : 'D MMMM YYYY',
11795 LLL : 'D MMMM YYYY เวลา H:mm',
11796 LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'
11797 },
11798 meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
11799 isPM: function (input) {
11800 return input === 'หลังเที่ยง';
11801 },
11802 meridiem : function (hour, minute, isLower) {
11803 if (hour < 12) {
11804 return 'ก่อนเที่ยง';
11805 } else {
11806 return 'หลังเที่ยง';
11807 }
11808 },
11809 calendar : {
11810 sameDay : '[วันนี้ เวลา] LT',
11811 nextDay : '[พรุ่งนี้ เวลา] LT',
11812 nextWeek : 'dddd[หน้า เวลา] LT',
11813 lastDay : '[เมื่อวานนี้ เวลา] LT',
11814 lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',
11815 sameElse : 'L'
11816 },
11817 relativeTime : {
11818 future : 'อีก %s',
11819 past : '%sที่แล้ว',
11820 s : 'ไม่กี่วินาที',
11821 m : '1 นาที',
11822 mm : '%d นาที',
11823 h : '1 ชั่วโมง',
11824 hh : '%d ชั่วโมง',
11825 d : '1 วัน',
11826 dd : '%d วัน',
11827 M : '1 เดือน',
11828 MM : '%d เดือน',
11829 y : '1 ปี',
11830 yy : '%d ปี'
11831 }
11832 });
11833
11834 //! moment.js locale configuration
11835 //! locale : Tagalog (Philippines) [tl-ph]
11836 //! author : Dan Hagman : https://github.com/hagmandan
11837
11838 hooks.defineLocale('tl-ph', {
11839 months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
11840 monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
11841 weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
11842 weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
11843 weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
11844 longDateFormat : {
11845 LT : 'HH:mm',
11846 LTS : 'HH:mm:ss',
11847 L : 'MM/D/YYYY',
11848 LL : 'MMMM D, YYYY',
11849 LLL : 'MMMM D, YYYY HH:mm',
11850 LLLL : 'dddd, MMMM DD, YYYY HH:mm'
11851 },
11852 calendar : {
11853 sameDay: 'LT [ngayong araw]',
11854 nextDay: '[Bukas ng] LT',
11855 nextWeek: 'LT [sa susunod na] dddd',
11856 lastDay: 'LT [kahapon]',
11857 lastWeek: 'LT [noong nakaraang] dddd',
11858 sameElse: 'L'
11859 },
11860 relativeTime : {
11861 future : 'sa loob ng %s',
11862 past : '%s ang nakalipas',
11863 s : 'ilang segundo',
11864 m : 'isang minuto',
11865 mm : '%d minuto',
11866 h : 'isang oras',
11867 hh : '%d oras',
11868 d : 'isang araw',
11869 dd : '%d araw',
11870 M : 'isang buwan',
11871 MM : '%d buwan',
11872 y : 'isang taon',
11873 yy : '%d taon'
11874 },
11875 ordinalParse: /\d{1,2}/,
11876 ordinal : function (number) {
11877 return number;
11878 },
11879 week : {
11880 dow : 1, // Monday is the first day of the week.
11881 doy : 4 // The week that contains Jan 4th is the first week of the year.
11882 }
11883 });
11884
11885 //! moment.js locale configuration
11886 //! locale : Klingon [tlh]
11887 //! author : Dominika Kruk : https://github.com/amaranthrose
11888
11889 var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
11890
11891 function translateFuture(output) {
11892 var time = output;
11893 time = (output.indexOf('jaj') !== -1) ?
11894 time.slice(0, -3) + 'leS' :
11895 (output.indexOf('jar') !== -1) ?
11896 time.slice(0, -3) + 'waQ' :
11897 (output.indexOf('DIS') !== -1) ?
11898 time.slice(0, -3) + 'nem' :
11899 time + ' pIq';
11900 return time;
11901 }
11902
11903 function translatePast(output) {
11904 var time = output;
11905 time = (output.indexOf('jaj') !== -1) ?
11906 time.slice(0, -3) + 'Hu’' :
11907 (output.indexOf('jar') !== -1) ?
11908 time.slice(0, -3) + 'wen' :
11909 (output.indexOf('DIS') !== -1) ?
11910 time.slice(0, -3) + 'ben' :
11911 time + ' ret';
11912 return time;
11913 }
11914
11915 function translate$9(number, withoutSuffix, string, isFuture) {
11916 var numberNoun = numberAsNoun(number);
11917 switch (string) {
11918 case 'mm':
11919 return numberNoun + ' tup';
11920 case 'hh':
11921 return numberNoun + ' rep';
11922 case 'dd':
11923 return numberNoun + ' jaj';
11924 case 'MM':
11925 return numberNoun + ' jar';
11926 case 'yy':
11927 return numberNoun + ' DIS';
11928 }
11929 }
11930
11931 function numberAsNoun(number) {
11932 var hundred = Math.floor((number % 1000) / 100),
11933 ten = Math.floor((number % 100) / 10),
11934 one = number % 10,
11935 word = '';
11936 if (hundred > 0) {
11937 word += numbersNouns[hundred] + 'vatlh';
11938 }
11939 if (ten > 0) {
11940 word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';
11941 }
11942 if (one > 0) {
11943 word += ((word !== '') ? ' ' : '') + numbersNouns[one];
11944 }
11945 return (word === '') ? 'pagh' : word;
11946 }
11947
11948 hooks.defineLocale('tlh', {
11949 months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),
11950 monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),
11951 monthsParseExact : true,
11952 weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
11953 weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
11954 weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
11955 longDateFormat : {
11956 LT : 'HH:mm',
11957 LTS : 'HH:mm:ss',
11958 L : 'DD.MM.YYYY',
11959 LL : 'D MMMM YYYY',
11960 LLL : 'D MMMM YYYY HH:mm',
11961 LLLL : 'dddd, D MMMM YYYY HH:mm'
11962 },
11963 calendar : {
11964 sameDay: '[DaHjaj] LT',
11965 nextDay: '[wa’leS] LT',
11966 nextWeek: 'LLL',
11967 lastDay: '[wa’Hu’] LT',
11968 lastWeek: 'LLL',
11969 sameElse: 'L'
11970 },
11971 relativeTime : {
11972 future : translateFuture,
11973 past : translatePast,
11974 s : 'puS lup',
11975 m : 'wa’ tup',
11976 mm : translate$9,
11977 h : 'wa’ rep',
11978 hh : translate$9,
11979 d : 'wa’ jaj',
11980 dd : translate$9,
11981 M : 'wa’ jar',
11982 MM : translate$9,
11983 y : 'wa’ DIS',
11984 yy : translate$9
11985 },
11986 ordinalParse: /\d{1,2}\./,
11987 ordinal : '%d.',
11988 week : {
11989 dow : 1, // Monday is the first day of the week.
11990 doy : 4 // The week that contains Jan 4th is the first week of the year.
11991 }
11992 });
11993
11994 //! moment.js locale configuration
11995 //! locale : Turkish [tr]
11996 //! authors : Erhan Gundogan : https://github.com/erhangundogan,
11997 //! Burak Yiğit Kaya: https://github.com/BYK
11998
11999 var suffixes$3 = {
12000 1: '\'inci',
12001 5: '\'inci',
12002 8: '\'inci',
12003 70: '\'inci',
12004 80: '\'inci',
12005 2: '\'nci',
12006 7: '\'nci',
12007 20: '\'nci',
12008 50: '\'nci',
12009 3: '\'üncü',
12010 4: '\'üncü',
12011 100: '\'üncü',
12012 6: '\'ncı',
12013 9: '\'uncu',
12014 10: '\'uncu',
12015 30: '\'uncu',
12016 60: '\'ıncı',
12017 90: '\'ıncı'
12018 };
12019
12020 hooks.defineLocale('tr', {
12021 months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
12022 monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
12023 weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
12024 weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
12025 weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
12026 longDateFormat : {
12027 LT : 'HH:mm',
12028 LTS : 'HH:mm:ss',
12029 L : 'DD.MM.YYYY',
12030 LL : 'D MMMM YYYY',
12031 LLL : 'D MMMM YYYY HH:mm',
12032 LLLL : 'dddd, D MMMM YYYY HH:mm'
12033 },
12034 calendar : {
12035 sameDay : '[bugün saat] LT',
12036 nextDay : '[yarın saat] LT',
12037 nextWeek : '[haftaya] dddd [saat] LT',
12038 lastDay : '[dün] LT',
12039 lastWeek : '[geçen hafta] dddd [saat] LT',
12040 sameElse : 'L'
12041 },
12042 relativeTime : {
12043 future : '%s sonra',
12044 past : '%s önce',
12045 s : 'birkaç saniye',
12046 m : 'bir dakika',
12047 mm : '%d dakika',
12048 h : 'bir saat',
12049 hh : '%d saat',
12050 d : 'bir gün',
12051 dd : '%d gün',
12052 M : 'bir ay',
12053 MM : '%d ay',
12054 y : 'bir yıl',
12055 yy : '%d yıl'
12056 },
12057 ordinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,
12058 ordinal : function (number) {
12059 if (number === 0) { // special case for zero
12060 return number + '\'ıncı';
12061 }
12062 var a = number % 10,
12063 b = number % 100 - a,
12064 c = number >= 100 ? 100 : null;
12065 return number + (suffixes$3[a] || suffixes$3[b] || suffixes$3[c]);
12066 },
12067 week : {
12068 dow : 1, // Monday is the first day of the week.
12069 doy : 7 // The week that contains Jan 1st is the first week of the year.
12070 }
12071 });
12072
12073 //! moment.js locale configuration
12074 //! locale : Talossan [tzl]
12075 //! author : Robin van der Vliet : https://github.com/robin0van0der0v
12076 //! author : Iustì Canun
12077
12078 // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
12079 // This is currently too difficult (maybe even impossible) to add.
12080 hooks.defineLocale('tzl', {
12081 months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),
12082 monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
12083 weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
12084 weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
12085 weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
12086 longDateFormat : {
12087 LT : 'HH.mm',
12088 LTS : 'HH.mm.ss',
12089 L : 'DD.MM.YYYY',
12090 LL : 'D. MMMM [dallas] YYYY',
12091 LLL : 'D. MMMM [dallas] YYYY HH.mm',
12092 LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'
12093 },
12094 meridiemParse: /d\'o|d\'a/i,
12095 isPM : function (input) {
12096 return 'd\'o' === input.toLowerCase();
12097 },
12098 meridiem : function (hours, minutes, isLower) {
12099 if (hours > 11) {
12100 return isLower ? 'd\'o' : 'D\'O';
12101 } else {
12102 return isLower ? 'd\'a' : 'D\'A';
12103 }
12104 },
12105 calendar : {
12106 sameDay : '[oxhi à] LT',
12107 nextDay : '[demà à] LT',
12108 nextWeek : 'dddd [à] LT',
12109 lastDay : '[ieiri à] LT',
12110 lastWeek : '[sür el] dddd [lasteu à] LT',
12111 sameElse : 'L'
12112 },
12113 relativeTime : {
12114 future : 'osprei %s',
12115 past : 'ja%s',
12116 s : processRelativeTime$5,
12117 m : processRelativeTime$5,
12118 mm : processRelativeTime$5,
12119 h : processRelativeTime$5,
12120 hh : processRelativeTime$5,
12121 d : processRelativeTime$5,
12122 dd : processRelativeTime$5,
12123 M : processRelativeTime$5,
12124 MM : processRelativeTime$5,
12125 y : processRelativeTime$5,
12126 yy : processRelativeTime$5
12127 },
12128 ordinalParse: /\d{1,2}\./,
12129 ordinal : '%d.',
12130 week : {
12131 dow : 1, // Monday is the first day of the week.
12132 doy : 4 // The week that contains Jan 4th is the first week of the year.
12133 }
12134 });
12135
12136 function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
12137 var format = {
12138 's': ['viensas secunds', '\'iensas secunds'],
12139 'm': ['\'n míut', '\'iens míut'],
12140 'mm': [number + ' míuts', '' + number + ' míuts'],
12141 'h': ['\'n þora', '\'iensa þora'],
12142 'hh': [number + ' þoras', '' + number + ' þoras'],
12143 'd': ['\'n ziua', '\'iensa ziua'],
12144 'dd': [number + ' ziuas', '' + number + ' ziuas'],
12145 'M': ['\'n mes', '\'iens mes'],
12146 'MM': [number + ' mesen', '' + number + ' mesen'],
12147 'y': ['\'n ar', '\'iens ar'],
12148 'yy': [number + ' ars', '' + number + ' ars']
12149 };
12150 return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);
12151 }
12152
12153 //! moment.js locale configuration
12154 //! locale : Central Atlas Tamazight Latin [tzm-latn]
12155 //! author : Abdel Said : https://github.com/abdelsaid
12156
12157 hooks.defineLocale('tzm-latn', {
12158 months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
12159 monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
12160 weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
12161 weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
12162 weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
12163 longDateFormat : {
12164 LT : 'HH:mm',
12165 LTS : 'HH:mm:ss',
12166 L : 'DD/MM/YYYY',
12167 LL : 'D MMMM YYYY',
12168 LLL : 'D MMMM YYYY HH:mm',
12169 LLLL : 'dddd D MMMM YYYY HH:mm'
12170 },
12171 calendar : {
12172 sameDay: '[asdkh g] LT',
12173 nextDay: '[aska g] LT',
12174 nextWeek: 'dddd [g] LT',
12175 lastDay: '[assant g] LT',
12176 lastWeek: 'dddd [g] LT',
12177 sameElse: 'L'
12178 },
12179 relativeTime : {
12180 future : 'dadkh s yan %s',
12181 past : 'yan %s',
12182 s : 'imik',
12183 m : 'minuḍ',
12184 mm : '%d minuḍ',
12185 h : 'saɛa',
12186 hh : '%d tassaɛin',
12187 d : 'ass',
12188 dd : '%d ossan',
12189 M : 'ayowr',
12190 MM : '%d iyyirn',
12191 y : 'asgas',
12192 yy : '%d isgasn'
12193 },
12194 week : {
12195 dow : 6, // Saturday is the first day of the week.
12196 doy : 12 // The week that contains Jan 1st is the first week of the year.
12197 }
12198 });
12199
12200 //! moment.js locale configuration
12201 //! locale : Central Atlas Tamazight [tzm]
12202 //! author : Abdel Said : https://github.com/abdelsaid
12203
12204 hooks.defineLocale('tzm', {
12205 months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
12206 monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
12207 weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
12208 weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
12209 weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
12210 longDateFormat : {
12211 LT : 'HH:mm',
12212 LTS: 'HH:mm:ss',
12213 L : 'DD/MM/YYYY',
12214 LL : 'D MMMM YYYY',
12215 LLL : 'D MMMM YYYY HH:mm',
12216 LLLL : 'dddd D MMMM YYYY HH:mm'
12217 },
12218 calendar : {
12219 sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
12220 nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
12221 nextWeek: 'dddd [ⴴ] LT',
12222 lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
12223 lastWeek: 'dddd [ⴴ] LT',
12224 sameElse: 'L'
12225 },
12226 relativeTime : {
12227 future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
12228 past : 'ⵢⴰⵏ %s',
12229 s : 'ⵉⵎⵉⴽ',
12230 m : 'ⵎⵉⵏⵓⴺ',
12231 mm : '%d ⵎⵉⵏⵓⴺ',
12232 h : 'ⵙⴰⵄⴰ',
12233 hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
12234 d : 'ⴰⵙⵙ',
12235 dd : '%d oⵙⵙⴰⵏ',
12236 M : 'ⴰⵢoⵓⵔ',
12237 MM : '%d ⵉⵢⵢⵉⵔⵏ',
12238 y : 'ⴰⵙⴳⴰⵙ',
12239 yy : '%d ⵉⵙⴳⴰⵙⵏ'
12240 },
12241 week : {
12242 dow : 6, // Saturday is the first day of the week.
12243 doy : 12 // The week that contains Jan 1st is the first week of the year.
12244 }
12245 });
12246
12247 //! moment.js locale configuration
12248 //! locale : Ukrainian [uk]
12249 //! author : zemlanin : https://github.com/zemlanin
12250 //! Author : Menelion Elensúle : https://github.com/Oire
12251
12252 function plural$6(word, num) {
12253 var forms = word.split('_');
12254 return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
12255 }
12256 function relativeTimeWithPlural$4(number, withoutSuffix, key) {
12257 var format = {
12258 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
12259 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
12260 'dd': 'день_дні_днів',
12261 'MM': 'місяць_місяці_місяців',
12262 'yy': 'рік_роки_років'
12263 };
12264 if (key === 'm') {
12265 return withoutSuffix ? 'хвилина' : 'хвилину';
12266 }
12267 else if (key === 'h') {
12268 return withoutSuffix ? 'година' : 'годину';
12269 }
12270 else {
12271 return number + ' ' + plural$6(format[key], +number);
12272 }
12273 }
12274 function weekdaysCaseReplace(m, format) {
12275 var weekdays = {
12276 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
12277 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
12278 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
12279 },
12280 nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
12281 'accusative' :
12282 ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ?
12283 'genitive' :
12284 'nominative');
12285 return weekdays[nounCase][m.day()];
12286 }
12287 function processHoursFunction(str) {
12288 return function () {
12289 return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
12290 };
12291 }
12292
12293 hooks.defineLocale('uk', {
12294 months : {
12295 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),
12296 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')
12297 },
12298 monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
12299 weekdays : weekdaysCaseReplace,
12300 weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
12301 weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
12302 longDateFormat : {
12303 LT : 'HH:mm',
12304 LTS : 'HH:mm:ss',
12305 L : 'DD.MM.YYYY',
12306 LL : 'D MMMM YYYY р.',
12307 LLL : 'D MMMM YYYY р., HH:mm',
12308 LLLL : 'dddd, D MMMM YYYY р., HH:mm'
12309 },
12310 calendar : {
12311 sameDay: processHoursFunction('[Сьогодні '),
12312 nextDay: processHoursFunction('[Завтра '),
12313 lastDay: processHoursFunction('[Вчора '),
12314 nextWeek: processHoursFunction('[У] dddd ['),
12315 lastWeek: function () {
12316 switch (this.day()) {
12317 case 0:
12318 case 3:
12319 case 5:
12320 case 6:
12321 return processHoursFunction('[Минулої] dddd [').call(this);
12322 case 1:
12323 case 2:
12324 case 4:
12325 return processHoursFunction('[Минулого] dddd [').call(this);
12326 }
12327 },
12328 sameElse: 'L'
12329 },
12330 relativeTime : {
12331 future : 'за %s',
12332 past : '%s тому',
12333 s : 'декілька секунд',
12334 m : relativeTimeWithPlural$4,
12335 mm : relativeTimeWithPlural$4,
12336 h : 'годину',
12337 hh : relativeTimeWithPlural$4,
12338 d : 'день',
12339 dd : relativeTimeWithPlural$4,
12340 M : 'місяць',
12341 MM : relativeTimeWithPlural$4,
12342 y : 'рік',
12343 yy : relativeTimeWithPlural$4
12344 },
12345 // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
12346 meridiemParse: /ночі|ранку|дня|вечора/,
12347 isPM: function (input) {
12348 return /^(дня|вечора)$/.test(input);
12349 },
12350 meridiem : function (hour, minute, isLower) {
12351 if (hour < 4) {
12352 return 'ночі';
12353 } else if (hour < 12) {
12354 return 'ранку';
12355 } else if (hour < 17) {
12356 return 'дня';
12357 } else {
12358 return 'вечора';
12359 }
12360 },
12361 ordinalParse: /\d{1,2}-(й|го)/,
12362 ordinal: function (number, period) {
12363 switch (period) {
12364 case 'M':
12365 case 'd':
12366 case 'DDD':
12367 case 'w':
12368 case 'W':
12369 return number + '-й';
12370 case 'D':
12371 return number + '-го';
12372 default:
12373 return number;
12374 }
12375 },
12376 week : {
12377 dow : 1, // Monday is the first day of the week.
12378 doy : 7 // The week that contains Jan 1st is the first week of the year.
12379 }
12380 });
12381
12382 //! moment.js locale configuration
12383 //! locale : Uzbek [uz]
12384 //! author : Sardor Muminov : https://github.com/muminoff
12385
12386 hooks.defineLocale('uz', {
12387 months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
12388 monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
12389 weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
12390 weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
12391 weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
12392 longDateFormat : {
12393 LT : 'HH:mm',
12394 LTS : 'HH:mm:ss',
12395 L : 'DD/MM/YYYY',
12396 LL : 'D MMMM YYYY',
12397 LLL : 'D MMMM YYYY HH:mm',
12398 LLLL : 'D MMMM YYYY, dddd HH:mm'
12399 },
12400 calendar : {
12401 sameDay : '[Бугун соат] LT [да]',
12402 nextDay : '[Эртага] LT [да]',
12403 nextWeek : 'dddd [куни соат] LT [да]',
12404 lastDay : '[Кеча соат] LT [да]',
12405 lastWeek : '[Утган] dddd [куни соат] LT [да]',
12406 sameElse : 'L'
12407 },
12408 relativeTime : {
12409 future : 'Якин %s ичида',
12410 past : 'Бир неча %s олдин',
12411 s : 'фурсат',
12412 m : 'бир дакика',
12413 mm : '%d дакика',
12414 h : 'бир соат',
12415 hh : '%d соат',
12416 d : 'бир кун',
12417 dd : '%d кун',
12418 M : 'бир ой',
12419 MM : '%d ой',
12420 y : 'бир йил',
12421 yy : '%d йил'
12422 },
12423 week : {
12424 dow : 1, // Monday is the first day of the week.
12425 doy : 7 // The week that contains Jan 4th is the first week of the year.
12426 }
12427 });
12428
12429 //! moment.js locale configuration
12430 //! locale : Vietnamese [vi]
12431 //! author : Bang Nguyen : https://github.com/bangnk
12432
12433 hooks.defineLocale('vi', {
12434 months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),
12435 monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),
12436 monthsParseExact : true,
12437 weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),
12438 weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
12439 weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
12440 weekdaysParseExact : true,
12441 meridiemParse: /sa|ch/i,
12442 isPM : function (input) {
12443 return /^ch$/i.test(input);
12444 },
12445 meridiem : function (hours, minutes, isLower) {
12446 if (hours < 12) {
12447 return isLower ? 'sa' : 'SA';
12448 } else {
12449 return isLower ? 'ch' : 'CH';
12450 }
12451 },
12452 longDateFormat : {
12453 LT : 'HH:mm',
12454 LTS : 'HH:mm:ss',
12455 L : 'DD/MM/YYYY',
12456 LL : 'D MMMM [năm] YYYY',
12457 LLL : 'D MMMM [năm] YYYY HH:mm',
12458 LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',
12459 l : 'DD/M/YYYY',
12460 ll : 'D MMM YYYY',
12461 lll : 'D MMM YYYY HH:mm',
12462 llll : 'ddd, D MMM YYYY HH:mm'
12463 },
12464 calendar : {
12465 sameDay: '[Hôm nay lúc] LT',
12466 nextDay: '[Ngày mai lúc] LT',
12467 nextWeek: 'dddd [tuần tới lúc] LT',
12468 lastDay: '[Hôm qua lúc] LT',
12469 lastWeek: 'dddd [tuần rồi lúc] LT',
12470 sameElse: 'L'
12471 },
12472 relativeTime : {
12473 future : '%s tới',
12474 past : '%s trước',
12475 s : 'vài giây',
12476 m : 'một phút',
12477 mm : '%d phút',
12478 h : 'một giờ',
12479 hh : '%d giờ',
12480 d : 'một ngày',
12481 dd : '%d ngày',
12482 M : 'một tháng',
12483 MM : '%d tháng',
12484 y : 'một năm',
12485 yy : '%d năm'
12486 },
12487 ordinalParse: /\d{1,2}/,
12488 ordinal : function (number) {
12489 return number;
12490 },
12491 week : {
12492 dow : 1, // Monday is the first day of the week.
12493 doy : 4 // The week that contains Jan 4th is the first week of the year.
12494 }
12495 });
12496
12497 //! moment.js locale configuration
12498 //! locale : Pseudo [x-pseudo]
12499 //! author : Andrew Hood : https://github.com/andrewhood125
12500
12501 hooks.defineLocale('x-pseudo', {
12502 months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),
12503 monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),
12504 monthsParseExact : true,
12505 weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),
12506 weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
12507 weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
12508 weekdaysParseExact : true,
12509 longDateFormat : {
12510 LT : 'HH:mm',
12511 L : 'DD/MM/YYYY',
12512 LL : 'D MMMM YYYY',
12513 LLL : 'D MMMM YYYY HH:mm',
12514 LLLL : 'dddd, D MMMM YYYY HH:mm'
12515 },
12516 calendar : {
12517 sameDay : '[T~ódá~ý át] LT',
12518 nextDay : '[T~ómó~rró~w át] LT',
12519 nextWeek : 'dddd [át] LT',
12520 lastDay : '[Ý~ést~érdá~ý át] LT',
12521 lastWeek : '[L~ást] dddd [át] LT',
12522 sameElse : 'L'
12523 },
12524 relativeTime : {
12525 future : 'í~ñ %s',
12526 past : '%s á~gó',
12527 s : 'á ~féw ~sécó~ñds',
12528 m : 'á ~míñ~úté',
12529 mm : '%d m~íñú~tés',
12530 h : 'á~ñ hó~úr',
12531 hh : '%d h~óúrs',
12532 d : 'á ~dáý',
12533 dd : '%d d~áýs',
12534 M : 'á ~móñ~th',
12535 MM : '%d m~óñt~hs',
12536 y : 'á ~ýéár',
12537 yy : '%d ý~éárs'
12538 },
12539 ordinalParse: /\d{1,2}(th|st|nd|rd)/,
12540 ordinal : function (number) {
12541 var b = number % 10,
12542 output = (~~(number % 100 / 10) === 1) ? 'th' :
12543 (b === 1) ? 'st' :
12544 (b === 2) ? 'nd' :
12545 (b === 3) ? 'rd' : 'th';
12546 return number + output;
12547 },
12548 week : {
12549 dow : 1, // Monday is the first day of the week.
12550 doy : 4 // The week that contains Jan 4th is the first week of the year.
12551 }
12552 });
12553
12554 //! moment.js locale configuration
12555 //! locale : Yoruba Nigeria [yo]
12556 //! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
12557
12558 hooks.defineLocale('yo', {
12559 months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),
12560 monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
12561 weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
12562 weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
12563 weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
12564 longDateFormat : {
12565 LT : 'h:mm A',
12566 LTS : 'h:mm:ss A',
12567 L : 'DD/MM/YYYY',
12568 LL : 'D MMMM YYYY',
12569 LLL : 'D MMMM YYYY h:mm A',
12570 LLLL : 'dddd, D MMMM YYYY h:mm A'
12571 },
12572 calendar : {
12573 sameDay : '[Ònì ni] LT',
12574 nextDay : '[Ọ̀la ni] LT',
12575 nextWeek : 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT',
12576 lastDay : '[Àna ni] LT',
12577 lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
12578 sameElse : 'L'
12579 },
12580 relativeTime : {
12581 future : 'ní %s',
12582 past : '%s kọjá',
12583 s : 'ìsẹjú aayá die',
12584 m : 'ìsẹjú kan',
12585 mm : 'ìsẹjú %d',
12586 h : 'wákati kan',
12587 hh : 'wákati %d',
12588 d : 'ọjọ́ kan',
12589 dd : 'ọjọ́ %d',
12590 M : 'osù kan',
12591 MM : 'osù %d',
12592 y : 'ọdún kan',
12593 yy : 'ọdún %d'
12594 },
12595 ordinalParse : /ọjọ́\s\d{1,2}/,
12596 ordinal : 'ọjọ́ %d',
12597 week : {
12598 dow : 1, // Monday is the first day of the week.
12599 doy : 4 // The week that contains Jan 4th is the first week of the year.
12600 }
12601 });
12602
12603 //! moment.js locale configuration
12604 //! locale : Chinese (China) [zh-cn]
12605 //! author : suupic : https://github.com/suupic
12606 //! author : Zeno Zeng : https://github.com/zenozeng
12607
12608 hooks.defineLocale('zh-cn', {
12609 months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
12610 monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
12611 weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
12612 weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
12613 weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
12614 longDateFormat : {
12615 LT : 'Ah点mm分',
12616 LTS : 'Ah点m分s秒',
12617 L : 'YYYY-MM-DD',
12618 LL : 'YYYY年MMMD日',
12619 LLL : 'YYYY年MMMD日Ah点mm分',
12620 LLLL : 'YYYY年MMMD日ddddAh点mm分',
12621 l : 'YYYY-MM-DD',
12622 ll : 'YYYY年MMMD日',
12623 lll : 'YYYY年MMMD日Ah点mm分',
12624 llll : 'YYYY年MMMD日ddddAh点mm分'
12625 },
12626 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
12627 meridiemHour: function (hour, meridiem) {
12628 if (hour === 12) {
12629 hour = 0;
12630 }
12631 if (meridiem === '凌晨' || meridiem === '早上' ||
12632 meridiem === '上午') {
12633 return hour;
12634 } else if (meridiem === '下午' || meridiem === '晚上') {
12635 return hour + 12;
12636 } else {
12637 // '中午'
12638 return hour >= 11 ? hour : hour + 12;
12639 }
12640 },
12641 meridiem : function (hour, minute, isLower) {
12642 var hm = hour * 100 + minute;
12643 if (hm < 600) {
12644 return '凌晨';
12645 } else if (hm < 900) {
12646 return '早上';
12647 } else if (hm < 1130) {
12648 return '上午';
12649 } else if (hm < 1230) {
12650 return '中午';
12651 } else if (hm < 1800) {
12652 return '下午';
12653 } else {
12654 return '晚上';
12655 }
12656 },
12657 calendar : {
12658 sameDay : function () {
12659 return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT';
12660 },
12661 nextDay : function () {
12662 return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT';
12663 },
12664 lastDay : function () {
12665 return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT';
12666 },
12667 nextWeek : function () {
12668 var startOfWeek, prefix;
12669 startOfWeek = hooks().startOf('week');
12670 prefix = this.diff(startOfWeek, 'days') >= 7 ? '[下]' : '[本]';
12671 return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
12672 },
12673 lastWeek : function () {
12674 var startOfWeek, prefix;
12675 startOfWeek = hooks().startOf('week');
12676 prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]';
12677 return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
12678 },
12679 sameElse : 'LL'
12680 },
12681 ordinalParse: /\d{1,2}(日|月|周)/,
12682 ordinal : function (number, period) {
12683 switch (period) {
12684 case 'd':
12685 case 'D':
12686 case 'DDD':
12687 return number + '日';
12688 case 'M':
12689 return number + '月';
12690 case 'w':
12691 case 'W':
12692 return number + '周';
12693 default:
12694 return number;
12695 }
12696 },
12697 relativeTime : {
12698 future : '%s内',
12699 past : '%s前',
12700 s : '几秒',
12701 m : '1 分钟',
12702 mm : '%d 分钟',
12703 h : '1 小时',
12704 hh : '%d 小时',
12705 d : '1 天',
12706 dd : '%d 天',
12707 M : '1 个月',
12708 MM : '%d 个月',
12709 y : '1 年',
12710 yy : '%d 年'
12711 },
12712 week : {
12713 // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
12714 dow : 1, // Monday is the first day of the week.
12715 doy : 4 // The week that contains Jan 4th is the first week of the year.
12716 }
12717 });
12718
12719 //! moment.js locale configuration
12720 //! locale : Chinese (Hong Kong) [zh-hk]
12721 //! author : Ben : https://github.com/ben-lin
12722 //! author : Chris Lam : https://github.com/hehachris
12723 //! author : Konstantin : https://github.com/skfd
12724
12725 hooks.defineLocale('zh-hk', {
12726 months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
12727 monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
12728 weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
12729 weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
12730 weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
12731 longDateFormat : {
12732 LT : 'Ah點mm分',
12733 LTS : 'Ah點m分s秒',
12734 L : 'YYYY年MMMD日',
12735 LL : 'YYYY年MMMD日',
12736 LLL : 'YYYY年MMMD日Ah點mm分',
12737 LLLL : 'YYYY年MMMD日ddddAh點mm分',
12738 l : 'YYYY年MMMD日',
12739 ll : 'YYYY年MMMD日',
12740 lll : 'YYYY年MMMD日Ah點mm分',
12741 llll : 'YYYY年MMMD日ddddAh點mm分'
12742 },
12743 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
12744 meridiemHour : function (hour, meridiem) {
12745 if (hour === 12) {
12746 hour = 0;
12747 }
12748 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
12749 return hour;
12750 } else if (meridiem === '中午') {
12751 return hour >= 11 ? hour : hour + 12;
12752 } else if (meridiem === '下午' || meridiem === '晚上') {
12753 return hour + 12;
12754 }
12755 },
12756 meridiem : function (hour, minute, isLower) {
12757 var hm = hour * 100 + minute;
12758 if (hm < 600) {
12759 return '凌晨';
12760 } else if (hm < 900) {
12761 return '早上';
12762 } else if (hm < 1130) {
12763 return '上午';
12764 } else if (hm < 1230) {
12765 return '中午';
12766 } else if (hm < 1800) {
12767 return '下午';
12768 } else {
12769 return '晚上';
12770 }
12771 },
12772 calendar : {
12773 sameDay : '[今天]LT',
12774 nextDay : '[明天]LT',
12775 nextWeek : '[下]ddddLT',
12776 lastDay : '[昨天]LT',
12777 lastWeek : '[上]ddddLT',
12778 sameElse : 'L'
12779 },
12780 ordinalParse: /\d{1,2}(日|月|週)/,
12781 ordinal : function (number, period) {
12782 switch (period) {
12783 case 'd' :
12784 case 'D' :
12785 case 'DDD' :
12786 return number + '日';
12787 case 'M' :
12788 return number + '月';
12789 case 'w' :
12790 case 'W' :
12791 return number + '週';
12792 default :
12793 return number;
12794 }
12795 },
12796 relativeTime : {
12797 future : '%s內',
12798 past : '%s前',
12799 s : '幾秒',
12800 m : '1 分鐘',
12801 mm : '%d 分鐘',
12802 h : '1 小時',
12803 hh : '%d 小時',
12804 d : '1 天',
12805 dd : '%d 天',
12806 M : '1 個月',
12807 MM : '%d 個月',
12808 y : '1 年',
12809 yy : '%d 年'
12810 }
12811 });
12812
12813 //! moment.js locale configuration
12814 //! locale : Chinese (Taiwan) [zh-tw]
12815 //! author : Ben : https://github.com/ben-lin
12816 //! author : Chris Lam : https://github.com/hehachris
12817
12818 hooks.defineLocale('zh-tw', {
12819 months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
12820 monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
12821 weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
12822 weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
12823 weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
12824 longDateFormat : {
12825 LT : 'Ah點mm分',
12826 LTS : 'Ah點m分s秒',
12827 L : 'YYYY年MMMD日',
12828 LL : 'YYYY年MMMD日',
12829 LLL : 'YYYY年MMMD日Ah點mm分',
12830 LLLL : 'YYYY年MMMD日ddddAh點mm分',
12831 l : 'YYYY年MMMD日',
12832 ll : 'YYYY年MMMD日',
12833 lll : 'YYYY年MMMD日Ah點mm分',
12834 llll : 'YYYY年MMMD日ddddAh點mm分'
12835 },
12836 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
12837 meridiemHour : function (hour, meridiem) {
12838 if (hour === 12) {
12839 hour = 0;
12840 }
12841 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
12842 return hour;
12843 } else if (meridiem === '中午') {
12844 return hour >= 11 ? hour : hour + 12;
12845 } else if (meridiem === '下午' || meridiem === '晚上') {
12846 return hour + 12;
12847 }
12848 },
12849 meridiem : function (hour, minute, isLower) {
12850 var hm = hour * 100 + minute;
12851 if (hm < 600) {
12852 return '凌晨';
12853 } else if (hm < 900) {
12854 return '早上';
12855 } else if (hm < 1130) {
12856 return '上午';
12857 } else if (hm < 1230) {
12858 return '中午';
12859 } else if (hm < 1800) {
12860 return '下午';
12861 } else {
12862 return '晚上';
12863 }
12864 },
12865 calendar : {
12866 sameDay : '[今天]LT',
12867 nextDay : '[明天]LT',
12868 nextWeek : '[下]ddddLT',
12869 lastDay : '[昨天]LT',
12870 lastWeek : '[上]ddddLT',
12871 sameElse : 'L'
12872 },
12873 ordinalParse: /\d{1,2}(日|月|週)/,
12874 ordinal : function (number, period) {
12875 switch (period) {
12876 case 'd' :
12877 case 'D' :
12878 case 'DDD' :
12879 return number + '日';
12880 case 'M' :
12881 return number + '月';
12882 case 'w' :
12883 case 'W' :
12884 return number + '週';
12885 default :
12886 return number;
12887 }
12888 },
12889 relativeTime : {
12890 future : '%s內',
12891 past : '%s前',
12892 s : '幾秒',
12893 m : '1 分鐘',
12894 mm : '%d 分鐘',
12895 h : '1 小時',
12896 hh : '%d 小時',
12897 d : '1 天',
12898 dd : '%d 天',
12899 M : '1 個月',
12900 MM : '%d 個月',
12901 y : '1 年',
12902 yy : '%d 年'
12903 }
12904 });
12905
12906 hooks.locale('en');
12907
12908 return hooks;
12909
12910 })));