{"version":3,"sources":["Shared/Static/js/lib/moment.js"],"names":["global","factory","exports","module","define","amd","moment","this","hookCallback","some","hooks","apply","arguments","isArray","input","Array","Object","prototype","toString","call","isObject","hasOwnProp","a","b","hasOwnProperty","isObjectEmpty","obj","getOwnPropertyNames","length","k","isUndefined","isNumber","isDate","Date","map","arr","fn","i","res","push","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","m","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","defaultParsingFlags","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","undefined","bigHour","isFrozen","createInvalid","NaN","fun","t","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","key","args","slice","join","Error","stack","keys","deprecations","deprecateSimple","name","isFunction","Function","mergeConfigs","parentConfig","childConfig","Locale","set","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","callback","func","localeData","removeFormattingTokens","match","replace","formatMoment","expandFormat","array","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","makeGetSet","keepTime","set$1","get","month","date","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","RegExp","s","regexEscape","matched","p1","p2","p3","p4","unescapeFormat","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","indexOf","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","n","x","mod","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","y","parseTwoDigitYear","parseInt","getSetYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","concat","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","d","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","day","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","getSetHour","globalLocale","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","h","hh","dd","w","ww","M","MM","yy","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","loadLocale","oldLocale","_abbr","require","getSetGlobalLocale","e","values","data","getLocale","defineLocale","abbr","_config","parentLocale","forEach","names","j","next","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","string","exec","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","configFromRFC2822","parsedArray","preprocessRFC2822","weekdayStr","parsedInput","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","getUTCMinutes","defaults","c","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","now","_useUTC","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","currentDateArray","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ms","setFullYear","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","second","millisecond","configFromObject","configFromInput","isUTC","add","createFromConfig","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","parseIso","base","isBefore","positiveMomentsDifference","momentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","isString","String","isMomentInput","arrayTest","dataTypeTest","filter","item","isNumberOrStringArray","objectTest","propertyTest","properties","isMomentInputObject","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","proto","preParsePostFormat","time","formats","isCalendarSpec","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","toArray","toObject","toDate","toISOString","keepOffset","inspect","prefix","suffix","zone","isLocal","Symbol","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","source","_eras","isFormat","_monthsShort","monthName","_monthsParseExact","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","charAt","isLower","Infinity","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","assign","posNegDuration","relativeTime$1","toIsoString","version","setHookCallback","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS"],"mappings":"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","file":"moment.js","sourcesContent":["//! moment.js\r\n//! version : 2.29.1\r\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\r\n//! license : MIT\r\n//! momentjs.com\r\n\r\n; (function (global, factory) {\r\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n\t\ttypeof define === 'function' && define.amd ? define(factory) :\r\n\t\t\tglobal.moment = factory()\r\n}(this, (function () {\r\n\t'use strict';\r\n\r\n\tvar hookCallback;\r\n\r\n\tfunction hooks() {\r\n\t\treturn hookCallback.apply(null, arguments);\r\n\t}\r\n\r\n\t// This is done to register the method called with moment()\r\n\t// without creating circular dependencies.\r\n\tfunction setHookCallback(callback) {\r\n\t\thookCallback = callback;\r\n\t}\r\n\r\n\tfunction isArray(input) {\r\n\t\treturn (\r\n\t\t\tinput instanceof Array ||\r\n\t\t\tObject.prototype.toString.call(input) === '[object Array]'\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isObject(input) {\r\n\t\t// IE8 will treat undefined and null as object if it wasn't for\r\n\t\t// input != null\r\n\t\treturn (\r\n\t\t\tinput != null &&\r\n\t\t\tObject.prototype.toString.call(input) === '[object Object]'\r\n\t\t);\r\n\t}\r\n\r\n\tfunction hasOwnProp(a, b) {\r\n\t\treturn Object.prototype.hasOwnProperty.call(a, b);\r\n\t}\r\n\r\n\tfunction isObjectEmpty(obj) {\r\n\t\tif (Object.getOwnPropertyNames) {\r\n\t\t\treturn Object.getOwnPropertyNames(obj).length === 0;\r\n\t\t} else {\r\n\t\t\tvar k;\r\n\t\t\tfor (k in obj) {\r\n\t\t\t\tif (hasOwnProp(obj, k)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction isUndefined(input) {\r\n\t\treturn input === void 0;\r\n\t}\r\n\r\n\tfunction isNumber(input) {\r\n\t\treturn (\r\n\t\t\ttypeof input === 'number' ||\r\n\t\t\tObject.prototype.toString.call(input) === '[object Number]'\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isDate(input) {\r\n\t\treturn (\r\n\t\t\tinput instanceof Date ||\r\n\t\t\tObject.prototype.toString.call(input) === '[object Date]'\r\n\t\t);\r\n\t}\r\n\r\n\tfunction map(arr, fn) {\r\n\t\tvar res = [],\r\n\t\t\ti;\r\n\t\tfor (i = 0; i < arr.length; ++i) {\r\n\t\t\tres.push(fn(arr[i], i));\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\tfunction extend(a, b) {\r\n\t\tfor (var i in b) {\r\n\t\t\tif (hasOwnProp(b, i)) {\r\n\t\t\t\ta[i] = b[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (hasOwnProp(b, 'toString')) {\r\n\t\t\ta.toString = b.toString;\r\n\t\t}\r\n\r\n\t\tif (hasOwnProp(b, 'valueOf')) {\r\n\t\t\ta.valueOf = b.valueOf;\r\n\t\t}\r\n\r\n\t\treturn a;\r\n\t}\r\n\r\n\tfunction createUTC(input, format, locale, strict) {\r\n\t\treturn createLocalOrUTC(input, format, locale, strict, true).utc();\r\n\t}\r\n\r\n\tfunction defaultParsingFlags() {\r\n\t\t// We need to deep clone this object.\r\n\t\treturn {\r\n\t\t\tempty: false,\r\n\t\t\tunusedTokens: [],\r\n\t\t\tunusedInput: [],\r\n\t\t\toverflow: -2,\r\n\t\t\tcharsLeftOver: 0,\r\n\t\t\tnullInput: false,\r\n\t\t\tinvalidEra: null,\r\n\t\t\tinvalidMonth: null,\r\n\t\t\tinvalidFormat: false,\r\n\t\t\tuserInvalidated: false,\r\n\t\t\tiso: false,\r\n\t\t\tparsedDateParts: [],\r\n\t\t\tera: null,\r\n\t\t\tmeridiem: null,\r\n\t\t\trfc2822: false,\r\n\t\t\tweekdayMismatch: false,\r\n\t\t};\r\n\t}\r\n\r\n\tfunction getParsingFlags(m) {\r\n\t\tif (m._pf == null) {\r\n\t\t\tm._pf = defaultParsingFlags();\r\n\t\t}\r\n\t\treturn m._pf;\r\n\t}\r\n\r\n\tvar some;\r\n\tif (Array.prototype.some) {\r\n\t\tsome = Array.prototype.some;\r\n\t} else {\r\n\t\tsome = function (fun) {\r\n\t\t\tvar t = Object(this),\r\n\t\t\t\tlen = t.length >>> 0,\r\n\t\t\t\ti;\r\n\r\n\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\tif (i in t && fun.call(this, t[i], i, t)) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t};\r\n\t}\r\n\r\n\tfunction isValid(m) {\r\n\t\tif (m._isValid == null) {\r\n\t\t\tvar flags = getParsingFlags(m),\r\n\t\t\t\tparsedParts = some.call(flags.parsedDateParts, function (i) {\r\n\t\t\t\t\treturn i != null;\r\n\t\t\t\t}),\r\n\t\t\t\tisNowValid =\r\n\t\t\t\t\t!isNaN(m._d.getTime()) &&\r\n\t\t\t\t\tflags.overflow < 0 &&\r\n\t\t\t\t\t!flags.empty &&\r\n\t\t\t\t\t!flags.invalidEra &&\r\n\t\t\t\t\t!flags.invalidMonth &&\r\n\t\t\t\t\t!flags.invalidWeekday &&\r\n\t\t\t\t\t!flags.weekdayMismatch &&\r\n\t\t\t\t\t!flags.nullInput &&\r\n\t\t\t\t\t!flags.invalidFormat &&\r\n\t\t\t\t\t!flags.userInvalidated &&\r\n\t\t\t\t\t(!flags.meridiem || (flags.meridiem && parsedParts));\r\n\r\n\t\t\tif (m._strict) {\r\n\t\t\t\tisNowValid =\r\n\t\t\t\t\tisNowValid &&\r\n\t\t\t\t\tflags.charsLeftOver === 0 &&\r\n\t\t\t\t\tflags.unusedTokens.length === 0 &&\r\n\t\t\t\t\tflags.bigHour === undefined;\r\n\t\t\t}\r\n\r\n\t\t\tif (Object.isFrozen == null || !Object.isFrozen(m)) {\r\n\t\t\t\tm._isValid = isNowValid;\r\n\t\t\t} else {\r\n\t\t\t\treturn isNowValid;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn m._isValid;\r\n\t}\r\n\r\n\tfunction createInvalid(flags) {\r\n\t\tvar m = createUTC(NaN);\r\n\t\tif (flags != null) {\r\n\t\t\textend(getParsingFlags(m), flags);\r\n\t\t} else {\r\n\t\t\tgetParsingFlags(m).userInvalidated = true;\r\n\t\t}\r\n\r\n\t\treturn m;\r\n\t}\r\n\r\n\t// Plugins that add properties should also add the key here (null value),\r\n\t// so we can properly clone ourselves.\r\n\tvar momentProperties = (hooks.momentProperties = []),\r\n\t\tupdateInProgress = false;\r\n\r\n\tfunction copyConfig(to, from) {\r\n\t\tvar i, prop, val;\r\n\r\n\t\tif (!isUndefined(from._isAMomentObject)) {\r\n\t\t\tto._isAMomentObject = from._isAMomentObject;\r\n\t\t}\r\n\t\tif (!isUndefined(from._i)) {\r\n\t\t\tto._i = from._i;\r\n\t\t}\r\n\t\tif (!isUndefined(from._f)) {\r\n\t\t\tto._f = from._f;\r\n\t\t}\r\n\t\tif (!isUndefined(from._l)) {\r\n\t\t\tto._l = from._l;\r\n\t\t}\r\n\t\tif (!isUndefined(from._strict)) {\r\n\t\t\tto._strict = from._strict;\r\n\t\t}\r\n\t\tif (!isUndefined(from._tzm)) {\r\n\t\t\tto._tzm = from._tzm;\r\n\t\t}\r\n\t\tif (!isUndefined(from._isUTC)) {\r\n\t\t\tto._isUTC = from._isUTC;\r\n\t\t}\r\n\t\tif (!isUndefined(from._offset)) {\r\n\t\t\tto._offset = from._offset;\r\n\t\t}\r\n\t\tif (!isUndefined(from._pf)) {\r\n\t\t\tto._pf = getParsingFlags(from);\r\n\t\t}\r\n\t\tif (!isUndefined(from._locale)) {\r\n\t\t\tto._locale = from._locale;\r\n\t\t}\r\n\r\n\t\tif (momentProperties.length > 0) {\r\n\t\t\tfor (i = 0; i < momentProperties.length; i++) {\r\n\t\t\t\tprop = momentProperties[i];\r\n\t\t\t\tval = from[prop];\r\n\t\t\t\tif (!isUndefined(val)) {\r\n\t\t\t\t\tto[prop] = val;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn to;\r\n\t}\r\n\r\n\t// Moment prototype object\r\n\tfunction Moment(config) {\r\n\t\tcopyConfig(this, config);\r\n\t\tthis._d = new Date(config._d != null ? config._d.getTime() : NaN);\r\n\t\tif (!this.isValid()) {\r\n\t\t\tthis._d = new Date(NaN);\r\n\t\t}\r\n\t\t// Prevent infinite loop in case updateOffset creates new moment\r\n\t\t// objects.\r\n\t\tif (updateInProgress === false) {\r\n\t\t\tupdateInProgress = true;\r\n\t\t\thooks.updateOffset(this);\r\n\t\t\tupdateInProgress = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction isMoment(obj) {\r\n\t\treturn (\r\n\t\t\tobj instanceof Moment || (obj != null && obj._isAMomentObject != null)\r\n\t\t);\r\n\t}\r\n\r\n\tfunction warn(msg) {\r\n\t\tif (\r\n\t\t\thooks.suppressDeprecationWarnings === false &&\r\n\t\t\ttypeof console !== 'undefined' &&\r\n\t\t\tconsole.warn\r\n\t\t) {\r\n\t\t\tconsole.warn('Deprecation warning: ' + msg);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction deprecate(msg, fn) {\r\n\t\tvar firstTime = true;\r\n\r\n\t\treturn extend(function () {\r\n\t\t\tif (hooks.deprecationHandler != null) {\r\n\t\t\t\thooks.deprecationHandler(null, msg);\r\n\t\t\t}\r\n\t\t\tif (firstTime) {\r\n\t\t\t\tvar args = [],\r\n\t\t\t\t\targ,\r\n\t\t\t\t\ti,\r\n\t\t\t\t\tkey;\r\n\t\t\t\tfor (i = 0; i < arguments.length; i++) {\r\n\t\t\t\t\targ = '';\r\n\t\t\t\t\tif (typeof arguments[i] === 'object') {\r\n\t\t\t\t\t\targ += '\\n[' + i + '] ';\r\n\t\t\t\t\t\tfor (key in arguments[0]) {\r\n\t\t\t\t\t\t\tif (hasOwnProp(arguments[0], key)) {\r\n\t\t\t\t\t\t\t\targ += key + ': ' + arguments[0][key] + ', ';\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\targ = arg.slice(0, -2); // Remove trailing comma and space\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\targ = arguments[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t\targs.push(arg);\r\n\t\t\t\t}\r\n\t\t\t\twarn(\r\n\t\t\t\t\tmsg +\r\n\t\t\t\t\t'\\nArguments: ' +\r\n\t\t\t\t\tArray.prototype.slice.call(args).join('') +\r\n\t\t\t\t\t'\\n' +\r\n\t\t\t\t\tnew Error().stack\r\n\t\t\t\t);\r\n\t\t\t\tfirstTime = false;\r\n\t\t\t}\r\n\t\t\treturn fn.apply(this, arguments);\r\n\t\t}, fn);\r\n\t}\r\n\r\n\tvar deprecations = {};\r\n\r\n\tfunction deprecateSimple(name, msg) {\r\n\t\tif (hooks.deprecationHandler != null) {\r\n\t\t\thooks.deprecationHandler(name, msg);\r\n\t\t}\r\n\t\tif (!deprecations[name]) {\r\n\t\t\twarn(msg);\r\n\t\t\tdeprecations[name] = true;\r\n\t\t}\r\n\t}\r\n\r\n\thooks.suppressDeprecationWarnings = false;\r\n\thooks.deprecationHandler = null;\r\n\r\n\tfunction isFunction(input) {\r\n\t\treturn (\r\n\t\t\t(typeof Function !== 'undefined' && input instanceof Function) ||\r\n\t\t\tObject.prototype.toString.call(input) === '[object Function]'\r\n\t\t);\r\n\t}\r\n\r\n\tfunction set(config) {\r\n\t\tvar prop, i;\r\n\t\tfor (i in config) {\r\n\t\t\tif (hasOwnProp(config, i)) {\r\n\t\t\t\tprop = config[i];\r\n\t\t\t\tif (isFunction(prop)) {\r\n\t\t\t\t\tthis[i] = prop;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis['_' + i] = prop;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._config = config;\r\n\t\t// Lenient ordinal parsing accepts just a number in addition to\r\n\t\t// number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\r\n\t\t// TODO: Remove \"ordinalParse\" fallback in next major release.\r\n\t\tthis._dayOfMonthOrdinalParseLenient = new RegExp(\r\n\t\t\t(this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\r\n\t\t\t'|' +\r\n\t\t\t/\\d{1,2}/.source\r\n\t\t);\r\n\t}\r\n\r\n\tfunction mergeConfigs(parentConfig, childConfig) {\r\n\t\tvar res = extend({}, parentConfig),\r\n\t\t\tprop;\r\n\t\tfor (prop in childConfig) {\r\n\t\t\tif (hasOwnProp(childConfig, prop)) {\r\n\t\t\t\tif (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\r\n\t\t\t\t\tres[prop] = {};\r\n\t\t\t\t\textend(res[prop], parentConfig[prop]);\r\n\t\t\t\t\textend(res[prop], childConfig[prop]);\r\n\t\t\t\t} else if (childConfig[prop] != null) {\r\n\t\t\t\t\tres[prop] = childConfig[prop];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdelete res[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (prop in parentConfig) {\r\n\t\t\tif (\r\n\t\t\t\thasOwnProp(parentConfig, prop) &&\r\n\t\t\t\t!hasOwnProp(childConfig, prop) &&\r\n\t\t\t\tisObject(parentConfig[prop])\r\n\t\t\t) {\r\n\t\t\t\t// make sure changes to properties don't modify parent config\r\n\t\t\t\tres[prop] = extend({}, res[prop]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\tfunction Locale(config) {\r\n\t\tif (config != null) {\r\n\t\t\tthis.set(config);\r\n\t\t}\r\n\t}\r\n\r\n\tvar keys;\r\n\r\n\tif (Object.keys) {\r\n\t\tkeys = Object.keys;\r\n\t} else {\r\n\t\tkeys = function (obj) {\r\n\t\t\tvar i,\r\n\t\t\t\tres = [];\r\n\t\t\tfor (i in obj) {\r\n\t\t\t\tif (hasOwnProp(obj, i)) {\r\n\t\t\t\t\tres.push(i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t};\r\n\t}\r\n\r\n\tvar defaultCalendar = {\r\n\t\tsameDay: '[Today at] LT',\r\n\t\tnextDay: '[Tomorrow at] LT',\r\n\t\tnextWeek: 'dddd [at] LT',\r\n\t\tlastDay: '[Yesterday at] LT',\r\n\t\tlastWeek: '[Last] dddd [at] LT',\r\n\t\tsameElse: 'L',\r\n\t};\r\n\r\n\tfunction calendar(key, mom, now) {\r\n\t\tvar output = this._calendar[key] || this._calendar['sameElse'];\r\n\t\treturn isFunction(output) ? output.call(mom, now) : output;\r\n\t}\r\n\r\n\tfunction zeroFill(number, targetLength, forceSign) {\r\n\t\tvar absNumber = '' + Math.abs(number),\r\n\t\t\tzerosToFill = targetLength - absNumber.length,\r\n\t\t\tsign = number >= 0;\r\n\t\treturn (\r\n\t\t\t(sign ? (forceSign ? '+' : '') : '-') +\r\n\t\t\tMath.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\r\n\t\t\tabsNumber\r\n\t\t);\r\n\t}\r\n\r\n\tvar formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\r\n\t\tlocalFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\r\n\t\tformatFunctions = {},\r\n\t\tformatTokenFunctions = {};\r\n\r\n\t// token: 'M'\r\n\t// padded: ['MM', 2]\r\n\t// ordinal: 'Mo'\r\n\t// callback: function () { this.month() + 1 }\r\n\tfunction addFormatToken(token, padded, ordinal, callback) {\r\n\t\tvar func = callback;\r\n\t\tif (typeof callback === 'string') {\r\n\t\t\tfunc = function () {\r\n\t\t\t\treturn this[callback]();\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (token) {\r\n\t\t\tformatTokenFunctions[token] = func;\r\n\t\t}\r\n\t\tif (padded) {\r\n\t\t\tformatTokenFunctions[padded[0]] = function () {\r\n\t\t\t\treturn zeroFill(func.apply(this, arguments), padded[1], padded[2]);\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (ordinal) {\r\n\t\t\tformatTokenFunctions[ordinal] = function () {\r\n\t\t\t\treturn this.localeData().ordinal(\r\n\t\t\t\t\tfunc.apply(this, arguments),\r\n\t\t\t\t\ttoken\r\n\t\t\t\t);\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tfunction removeFormattingTokens(input) {\r\n\t\tif (input.match(/\\[[\\s\\S]/)) {\r\n\t\t\treturn input.replace(/^\\[|\\]$/g, '');\r\n\t\t}\r\n\t\treturn input.replace(/\\\\/g, '');\r\n\t}\r\n\r\n\tfunction makeFormatFunction(format) {\r\n\t\tvar array = format.match(formattingTokens),\r\n\t\t\ti,\r\n\t\t\tlength;\r\n\r\n\t\tfor (i = 0, length = array.length; i < length; i++) {\r\n\t\t\tif (formatTokenFunctions[array[i]]) {\r\n\t\t\t\tarray[i] = formatTokenFunctions[array[i]];\r\n\t\t\t} else {\r\n\t\t\t\tarray[i] = removeFormattingTokens(array[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn function (mom) {\r\n\t\t\tvar output = '',\r\n\t\t\t\ti;\r\n\t\t\tfor (i = 0; i < length; i++) {\r\n\t\t\t\toutput += isFunction(array[i])\r\n\t\t\t\t\t? array[i].call(mom, format)\r\n\t\t\t\t\t: array[i];\r\n\t\t\t}\r\n\t\t\treturn output;\r\n\t\t};\r\n\t}\r\n\r\n\t// format date using native date object\r\n\tfunction formatMoment(m, format) {\r\n\t\tif (!m.isValid()) {\r\n\t\t\treturn m.localeData().invalidDate();\r\n\t\t}\r\n\r\n\t\tformat = expandFormat(format, m.localeData());\r\n\t\tformatFunctions[format] =\r\n\t\t\tformatFunctions[format] || makeFormatFunction(format);\r\n\r\n\t\treturn formatFunctions[format](m);\r\n\t}\r\n\r\n\tfunction expandFormat(format, locale) {\r\n\t\tvar i = 5;\r\n\r\n\t\tfunction replaceLongDateFormatTokens(input) {\r\n\t\t\treturn locale.longDateFormat(input) || input;\r\n\t\t}\r\n\r\n\t\tlocalFormattingTokens.lastIndex = 0;\r\n\t\twhile (i >= 0 && localFormattingTokens.test(format)) {\r\n\t\t\tformat = format.replace(\r\n\t\t\t\tlocalFormattingTokens,\r\n\t\t\t\treplaceLongDateFormatTokens\r\n\t\t\t);\r\n\t\t\tlocalFormattingTokens.lastIndex = 0;\r\n\t\t\ti -= 1;\r\n\t\t}\r\n\r\n\t\treturn format;\r\n\t}\r\n\r\n\tvar defaultLongDateFormat = {\r\n\t\tLTS: 'h:mm:ss A',\r\n\t\tLT: 'h:mm A',\r\n\t\tL: 'MM/DD/YYYY',\r\n\t\tLL: 'MMMM D, YYYY',\r\n\t\tLLL: 'MMMM D, YYYY h:mm A',\r\n\t\tLLLL: 'dddd, MMMM D, YYYY h:mm A',\r\n\t};\r\n\r\n\tfunction longDateFormat(key) {\r\n\t\tvar format = this._longDateFormat[key],\r\n\t\t\tformatUpper = this._longDateFormat[key.toUpperCase()];\r\n\r\n\t\tif (format || !formatUpper) {\r\n\t\t\treturn format;\r\n\t\t}\r\n\r\n\t\tthis._longDateFormat[key] = formatUpper\r\n\t\t\t.match(formattingTokens)\r\n\t\t\t.map(function (tok) {\r\n\t\t\t\tif (\r\n\t\t\t\t\ttok === 'MMMM' ||\r\n\t\t\t\t\ttok === 'MM' ||\r\n\t\t\t\t\ttok === 'DD' ||\r\n\t\t\t\t\ttok === 'dddd'\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn tok.slice(1);\r\n\t\t\t\t}\r\n\t\t\t\treturn tok;\r\n\t\t\t})\r\n\t\t\t.join('');\r\n\r\n\t\treturn this._longDateFormat[key];\r\n\t}\r\n\r\n\tvar defaultInvalidDate = 'Invalid date';\r\n\r\n\tfunction invalidDate() {\r\n\t\treturn this._invalidDate;\r\n\t}\r\n\r\n\tvar defaultOrdinal = '%d',\r\n\t\tdefaultDayOfMonthOrdinalParse = /\\d{1,2}/;\r\n\r\n\tfunction ordinal(number) {\r\n\t\treturn this._ordinal.replace('%d', number);\r\n\t}\r\n\r\n\tvar defaultRelativeTime = {\r\n\t\tfuture: 'in %s',\r\n\t\tpast: '%s ago',\r\n\t\ts: 'a few seconds',\r\n\t\tss: '%d seconds',\r\n\t\tm: 'a minute',\r\n\t\tmm: '%d minutes',\r\n\t\th: 'an hour',\r\n\t\thh: '%d hours',\r\n\t\td: 'a day',\r\n\t\tdd: '%d days',\r\n\t\tw: 'a week',\r\n\t\tww: '%d weeks',\r\n\t\tM: 'a month',\r\n\t\tMM: '%d months',\r\n\t\ty: 'a year',\r\n\t\tyy: '%d years',\r\n\t};\r\n\r\n\tfunction relativeTime(number, withoutSuffix, string, isFuture) {\r\n\t\tvar output = this._relativeTime[string];\r\n\t\treturn isFunction(output)\r\n\t\t\t? output(number, withoutSuffix, string, isFuture)\r\n\t\t\t: output.replace(/%d/i, number);\r\n\t}\r\n\r\n\tfunction pastFuture(diff, output) {\r\n\t\tvar format = this._relativeTime[diff > 0 ? 'future' : 'past'];\r\n\t\treturn isFunction(format) ? format(output) : format.replace(/%s/i, output);\r\n\t}\r\n\r\n\tvar aliases = {};\r\n\r\n\tfunction addUnitAlias(unit, shorthand) {\r\n\t\tvar lowerCase = unit.toLowerCase();\r\n\t\taliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\r\n\t}\r\n\r\n\tfunction normalizeUnits(units) {\r\n\t\treturn typeof units === 'string'\r\n\t\t\t? aliases[units] || aliases[units.toLowerCase()]\r\n\t\t\t: undefined;\r\n\t}\r\n\r\n\tfunction normalizeObjectUnits(inputObject) {\r\n\t\tvar normalizedInput = {},\r\n\t\t\tnormalizedProp,\r\n\t\t\tprop;\r\n\r\n\t\tfor (prop in inputObject) {\r\n\t\t\tif (hasOwnProp(inputObject, prop)) {\r\n\t\t\t\tnormalizedProp = normalizeUnits(prop);\r\n\t\t\t\tif (normalizedProp) {\r\n\t\t\t\t\tnormalizedInput[normalizedProp] = inputObject[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn normalizedInput;\r\n\t}\r\n\r\n\tvar priorities = {};\r\n\r\n\tfunction addUnitPriority(unit, priority) {\r\n\t\tpriorities[unit] = priority;\r\n\t}\r\n\r\n\tfunction getPrioritizedUnits(unitsObj) {\r\n\t\tvar units = [],\r\n\t\t\tu;\r\n\t\tfor (u in unitsObj) {\r\n\t\t\tif (hasOwnProp(unitsObj, u)) {\r\n\t\t\t\tunits.push({ unit: u, priority: priorities[u] });\r\n\t\t\t}\r\n\t\t}\r\n\t\tunits.sort(function (a, b) {\r\n\t\t\treturn a.priority - b.priority;\r\n\t\t});\r\n\t\treturn units;\r\n\t}\r\n\r\n\tfunction isLeapYear(year) {\r\n\t\treturn (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n\t}\r\n\r\n\tfunction absFloor(number) {\r\n\t\tif (number < 0) {\r\n\t\t\t// -0 -> 0\r\n\t\t\treturn Math.ceil(number) || 0;\r\n\t\t} else {\r\n\t\t\treturn Math.floor(number);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction toInt(argumentForCoercion) {\r\n\t\tvar coercedNumber = +argumentForCoercion,\r\n\t\t\tvalue = 0;\r\n\r\n\t\tif (coercedNumber !== 0 && isFinite(coercedNumber)) {\r\n\t\t\tvalue = absFloor(coercedNumber);\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tfunction makeGetSet(unit, keepTime) {\r\n\t\treturn function (value) {\r\n\t\t\tif (value != null) {\r\n\t\t\t\tset$1(this, unit, value);\r\n\t\t\t\thooks.updateOffset(this, keepTime);\r\n\t\t\t\treturn this;\r\n\t\t\t} else {\r\n\t\t\t\treturn get(this, unit);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tfunction get(mom, unit) {\r\n\t\treturn mom.isValid()\r\n\t\t\t? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\r\n\t\t\t: NaN;\r\n\t}\r\n\r\n\tfunction set$1(mom, unit, value) {\r\n\t\tif (mom.isValid() && !isNaN(value)) {\r\n\t\t\tif (\r\n\t\t\t\tunit === 'FullYear' &&\r\n\t\t\t\tisLeapYear(mom.year()) &&\r\n\t\t\t\tmom.month() === 1 &&\r\n\t\t\t\tmom.date() === 29\r\n\t\t\t) {\r\n\t\t\t\tvalue = toInt(value);\r\n\t\t\t\tmom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\r\n\t\t\t\t\tvalue,\r\n\t\t\t\t\tmom.month(),\r\n\t\t\t\t\tdaysInMonth(value, mom.month())\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tmom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// MOMENTS\r\n\r\n\tfunction stringGet(units) {\r\n\t\tunits = normalizeUnits(units);\r\n\t\tif (isFunction(this[units])) {\r\n\t\t\treturn this[units]();\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n\tfunction stringSet(units, value) {\r\n\t\tif (typeof units === 'object') {\r\n\t\t\tunits = normalizeObjectUnits(units);\r\n\t\t\tvar prioritized = getPrioritizedUnits(units),\r\n\t\t\t\ti;\r\n\t\t\tfor (i = 0; i < prioritized.length; i++) {\r\n\t\t\t\tthis[prioritized[i].unit](units[prioritized[i].unit]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tunits = normalizeUnits(units);\r\n\t\t\tif (isFunction(this[units])) {\r\n\t\t\t\treturn this[units](value);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n\tvar match1 = /\\d/, // 0 - 9\r\n\t\tmatch2 = /\\d\\d/, // 00 - 99\r\n\t\tmatch3 = /\\d{3}/, // 000 - 999\r\n\t\tmatch4 = /\\d{4}/, // 0000 - 9999\r\n\t\tmatch6 = /[+-]?\\d{6}/, // -999999 - 999999\r\n\t\tmatch1to2 = /\\d\\d?/, // 0 - 99\r\n\t\tmatch3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\r\n\t\tmatch5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\r\n\t\tmatch1to3 = /\\d{1,3}/, // 0 - 999\r\n\t\tmatch1to4 = /\\d{1,4}/, // 0 - 9999\r\n\t\tmatch1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\r\n\t\tmatchUnsigned = /\\d+/, // 0 - inf\r\n\t\tmatchSigned = /[+-]?\\d+/, // -inf - inf\r\n\t\tmatchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\r\n\t\tmatchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\r\n\t\tmatchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\r\n\t\t// any word (or two) characters or numbers including two/three word month in arabic.\r\n\t\t// includes scottish gaelic two word and hyphenated months\r\n\t\tmatchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\r\n\t\tregexes;\r\n\r\n\tregexes = {};\r\n\r\n\tfunction addRegexToken(token, regex, strictRegex) {\r\n\t\tregexes[token] = isFunction(regex)\r\n\t\t\t? regex\r\n\t\t\t: function (isStrict, localeData) {\r\n\t\t\t\treturn isStrict && strictRegex ? strictRegex : regex;\r\n\t\t\t};\r\n\t}\r\n\r\n\tfunction getParseRegexForToken(token, config) {\r\n\t\tif (!hasOwnProp(regexes, token)) {\r\n\t\t\treturn new RegExp(unescapeFormat(token));\r\n\t\t}\r\n\r\n\t\treturn regexes[token](config._strict, config._locale);\r\n\t}\r\n\r\n\t// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\r\n\tfunction unescapeFormat(s) {\r\n\t\treturn regexEscape(\r\n\t\t\ts\r\n\t\t\t\t.replace('\\\\', '')\r\n\t\t\t\t.replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\r\n\t\t\t\t\tmatched,\r\n\t\t\t\t\tp1,\r\n\t\t\t\t\tp2,\r\n\t\t\t\t\tp3,\r\n\t\t\t\t\tp4\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn p1 || p2 || p3 || p4;\r\n\t\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tfunction regexEscape(s) {\r\n\t\treturn s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n\t}\r\n\r\n\tvar tokens = {};\r\n\r\n\tfunction addParseToken(token, callback) {\r\n\t\tvar i,\r\n\t\t\tfunc = callback;\r\n\t\tif (typeof token === 'string') {\r\n\t\t\ttoken = [token];\r\n\t\t}\r\n\t\tif (isNumber(callback)) {\r\n\t\t\tfunc = function (input, array) {\r\n\t\t\t\tarray[callback] = toInt(input);\r\n\t\t\t};\r\n\t\t}\r\n\t\tfor (i = 0; i < token.length; i++) {\r\n\t\t\ttokens[token[i]] = func;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction addWeekParseToken(token, callback) {\r\n\t\taddParseToken(token, function (input, array, config, token) {\r\n\t\t\tconfig._w = config._w || {};\r\n\t\t\tcallback(input, config._w, config, token);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction addTimeToArrayFromToken(token, input, config) {\r\n\t\tif (input != null && hasOwnProp(tokens, token)) {\r\n\t\t\ttokens[token](input, config._a, config, token);\r\n\t\t}\r\n\t}\r\n\r\n\tvar YEAR = 0,\r\n\t\tMONTH = 1,\r\n\t\tDATE = 2,\r\n\t\tHOUR = 3,\r\n\t\tMINUTE = 4,\r\n\t\tSECOND = 5,\r\n\t\tMILLISECOND = 6,\r\n\t\tWEEK = 7,\r\n\t\tWEEKDAY = 8;\r\n\r\n\tfunction mod(n, x) {\r\n\t\treturn ((n % x) + x) % x;\r\n\t}\r\n\r\n\tvar indexOf;\r\n\r\n\tif (Array.prototype.indexOf) {\r\n\t\tindexOf = Array.prototype.indexOf;\r\n\t} else {\r\n\t\tindexOf = function (o) {\r\n\t\t\t// I know\r\n\t\t\tvar i;\r\n\t\t\tfor (i = 0; i < this.length; ++i) {\r\n\t\t\t\tif (this[i] === o) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn -1;\r\n\t\t};\r\n\t}\r\n\r\n\tfunction daysInMonth(year, month) {\r\n\t\tif (isNaN(year) || isNaN(month)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\tvar modMonth = mod(month, 12);\r\n\t\tyear += (month - modMonth) / 12;\r\n\t\treturn modMonth === 1\r\n\t\t\t? isLeapYear(year)\r\n\t\t\t\t? 29\r\n\t\t\t\t: 28\r\n\t\t\t: 31 - ((modMonth % 7) % 2);\r\n\t}\r\n\r\n\t// FORMATTING\r\n\r\n\taddFormatToken('M', ['MM', 2], 'Mo', function () {\r\n\t\treturn this.month() + 1;\r\n\t});\r\n\r\n\taddFormatToken('MMM', 0, 0, function (format) {\r\n\t\treturn this.localeData().monthsShort(this, format);\r\n\t});\r\n\r\n\taddFormatToken('MMMM', 0, 0, function (format) {\r\n\t\treturn this.localeData().months(this, format);\r\n\t});\r\n\r\n\t// ALIASES\r\n\r\n\taddUnitAlias('month', 'M');\r\n\r\n\t// PRIORITY\r\n\r\n\taddUnitPriority('month', 8);\r\n\r\n\t// PARSING\r\n\r\n\taddRegexToken('M', match1to2);\r\n\taddRegexToken('MM', match1to2, match2);\r\n\taddRegexToken('MMM', function (isStrict, locale) {\r\n\t\treturn locale.monthsShortRegex(isStrict);\r\n\t});\r\n\taddRegexToken('MMMM', function (isStrict, locale) {\r\n\t\treturn locale.monthsRegex(isStrict);\r\n\t});\r\n\r\n\taddParseToken(['M', 'MM'], function (input, array) {\r\n\t\tarray[MONTH] = toInt(input) - 1;\r\n\t});\r\n\r\n\taddParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\r\n\t\tvar month = config._locale.monthsParse(input, token, config._strict);\r\n\t\t// if we didn't find a month name, mark the date as invalid.\r\n\t\tif (month != null) {\r\n\t\t\tarray[MONTH] = month;\r\n\t\t} else {\r\n\t\t\tgetParsingFlags(config).invalidMonth = input;\r\n\t\t}\r\n\t});\r\n\r\n\t// LOCALES\r\n\r\n\tvar defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\r\n\t\t'_'\r\n\t),\r\n\t\tdefaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\r\n\t\t\t'_'\r\n\t\t),\r\n\t\tMONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\r\n\t\tdefaultMonthsShortRegex = matchWord,\r\n\t\tdefaultMonthsRegex = matchWord;\r\n\r\n\tfunction localeMonths(m, format) {\r\n\t\tif (!m) {\r\n\t\t\treturn isArray(this._months)\r\n\t\t\t\t? this._months\r\n\t\t\t\t: this._months['standalone'];\r\n\t\t}\r\n\t\treturn isArray(this._months)\r\n\t\t\t? this._months[m.month()]\r\n\t\t\t: this._months[\r\n\t\t\t(this._months.isFormat || MONTHS_IN_FORMAT).test(format)\r\n\t\t\t\t? 'format'\r\n\t\t\t\t: 'standalone'\r\n\t\t\t][m.month()];\r\n\t}\r\n\r\n\tfunction localeMonthsShort(m, format) {\r\n\t\tif (!m) {\r\n\t\t\treturn isArray(this._monthsShort)\r\n\t\t\t\t? this._monthsShort\r\n\t\t\t\t: this._monthsShort['standalone'];\r\n\t\t}\r\n\t\treturn isArray(this._monthsShort)\r\n\t\t\t? this._monthsShort[m.month()]\r\n\t\t\t: this._monthsShort[\r\n\t\t\tMONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\r\n\t\t\t][m.month()];\r\n\t}\r\n\r\n\tfunction handleStrictParse(monthName, format, strict) {\r\n\t\tvar i,\r\n\t\t\tii,\r\n\t\t\tmom,\r\n\t\t\tllc = monthName.toLocaleLowerCase();\r\n\t\tif (!this._monthsParse) {\r\n\t\t\t// this is not used\r\n\t\t\tthis._monthsParse = [];\r\n\t\t\tthis._longMonthsParse = [];\r\n\t\t\tthis._shortMonthsParse = [];\r\n\t\t\tfor (i = 0; i < 12; ++i) {\r\n\t\t\t\tmom = createUTC([2000, i]);\r\n\t\t\t\tthis._shortMonthsParse[i] = this.monthsShort(\r\n\t\t\t\t\tmom,\r\n\t\t\t\t\t''\r\n\t\t\t\t).toLocaleLowerCase();\r\n\t\t\t\tthis._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (strict) {\r\n\t\t\tif (format === 'MMM') {\r\n\t\t\t\tii = indexOf.call(this._shortMonthsParse, llc);\r\n\t\t\t\treturn ii !== -1 ? ii : null;\r\n\t\t\t} else {\r\n\t\t\t\tii = indexOf.call(this._longMonthsParse, llc);\r\n\t\t\t\treturn ii !== -1 ? ii : null;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (format === 'MMM') {\r\n\t\t\t\tii = indexOf.call(this._shortMonthsParse, llc);\r\n\t\t\t\tif (ii !== -1) {\r\n\t\t\t\t\treturn ii;\r\n\t\t\t\t}\r\n\t\t\t\tii = indexOf.call(this._longMonthsParse, llc);\r\n\t\t\t\treturn ii !== -1 ? ii : null;\r\n\t\t\t} else {\r\n\t\t\t\tii = indexOf.call(this._longMonthsParse, llc);\r\n\t\t\t\tif (ii !== -1) {\r\n\t\t\t\t\treturn ii;\r\n\t\t\t\t}\r\n\t\t\t\tii = indexOf.call(this._shortMonthsParse, llc);\r\n\t\t\t\treturn ii !== -1 ? ii : null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction localeMonthsParse(monthName, format, strict) {\r\n\t\tvar i, mom, regex;\r\n\r\n\t\tif (this._monthsParseExact) {\r\n\t\t\treturn handleStrictParse.call(this, monthName, format, strict);\r\n\t\t}\r\n\r\n\t\tif (!this._monthsParse) {\r\n\t\t\tthis._monthsParse = [];\r\n\t\t\tthis._longMonthsParse = [];\r\n\t\t\tthis._shortMonthsParse = [];\r\n\t\t}\r\n\r\n\t\t// TODO: add sorting\r\n\t\t// Sorting makes sure if one month (or abbr) is a prefix of another\r\n\t\t// see sorting in computeMonthsParse\r\n\t\tfor (i = 0; i < 12; i++) {\r\n\t\t\t// make the regex if we don't have it already\r\n\t\t\tmom = createUTC([2000, i]);\r\n\t\t\tif (strict && !this._longMonthsParse[i]) {\r\n\t\t\t\tthis._longMonthsParse[i] = new RegExp(\r\n\t\t\t\t\t'^' + this.months(mom, '').replace('.', '') + '$',\r\n\t\t\t\t\t'i'\r\n\t\t\t\t);\r\n\t\t\t\tthis._shortMonthsParse[i] = new RegExp(\r\n\t\t\t\t\t'^' + this.monthsShort(mom, '').replace('.', '') + '$',\r\n\t\t\t\t\t'i'\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif (!strict && !this._monthsParse[i]) {\r\n\t\t\t\tregex =\r\n\t\t\t\t\t'^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\r\n\t\t\t\tthis._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\r\n\t\t\t}\r\n\t\t\t// test the regex\r\n\t\t\tif (\r\n\t\t\t\tstrict &&\r\n\t\t\t\tformat === 'MMMM' &&\r\n\t\t\t\tthis._longMonthsParse[i].test(monthName)\r\n\t\t\t) {\r\n\t\t\t\treturn i;\r\n\t\t\t} else if (\r\n\t\t\t\tstrict &&\r\n\t\t\t\tformat === 'MMM' &&\r\n\t\t\t\tthis._shortMonthsParse[i].test(monthName)\r\n\t\t\t) {\r\n\t\t\t\treturn i;\r\n\t\t\t} else if (!strict && this._monthsParse[i].test(monthName)) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// MOMENTS\r\n\r\n\tfunction setMonth(mom, value) {\r\n\t\tvar dayOfMonth;\r\n\r\n\t\tif (!mom.isValid()) {\r\n\t\t\t// No op\r\n\t\t\treturn mom;\r\n\t\t}\r\n\r\n\t\tif (typeof value === 'string') {\r\n\t\t\tif (/^\\d+$/.test(value)) {\r\n\t\t\t\tvalue = toInt(value);\r\n\t\t\t} else {\r\n\t\t\t\tvalue = mom.localeData().monthsParse(value);\r\n\t\t\t\t// TODO: Another silent failure?\r\n\t\t\t\tif (!isNumber(value)) {\r\n\t\t\t\t\treturn mom;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\r\n\t\tmom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\r\n\t\treturn mom;\r\n\t}\r\n\r\n\tfunction getSetMonth(value) {\r\n\t\tif (value != null) {\r\n\t\t\tsetMonth(this, value);\r\n\t\t\thooks.updateOffset(this, true);\r\n\t\t\treturn this;\r\n\t\t} else {\r\n\t\t\treturn get(this, 'Month');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getDaysInMonth() {\r\n\t\treturn daysInMonth(this.year(), this.month());\r\n\t}\r\n\r\n\tfunction monthsShortRegex(isStrict) {\r\n\t\tif (this._monthsParseExact) {\r\n\t\t\tif (!hasOwnProp(this, '_monthsRegex')) {\r\n\t\t\t\tcomputeMonthsParse.call(this);\r\n\t\t\t}\r\n\t\t\tif (isStrict) {\r\n\t\t\t\treturn this._monthsShortStrictRegex;\r\n\t\t\t} else {\r\n\t\t\t\treturn this._monthsShortRegex;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (!hasOwnProp(this, '_monthsShortRegex')) {\r\n\t\t\t\tthis._monthsShortRegex = defaultMonthsShortRegex;\r\n\t\t\t}\r\n\t\t\treturn this._monthsShortStrictRegex && isStrict\r\n\t\t\t\t? this._monthsShortStrictRegex\r\n\t\t\t\t: this._monthsShortRegex;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction monthsRegex(isStrict) {\r\n\t\tif (this._monthsParseExact) {\r\n\t\t\tif (!hasOwnProp(this, '_monthsRegex')) {\r\n\t\t\t\tcomputeMonthsParse.call(this);\r\n\t\t\t}\r\n\t\t\tif (isStrict) {\r\n\t\t\t\treturn this._monthsStrictRegex;\r\n\t\t\t} else {\r\n\t\t\t\treturn this._monthsRegex;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (!hasOwnProp(this, '_monthsRegex')) {\r\n\t\t\t\tthis._monthsRegex = defaultMonthsRegex;\r\n\t\t\t}\r\n\t\t\treturn this._monthsStrictRegex && isStrict\r\n\t\t\t\t? this._monthsStrictRegex\r\n\t\t\t\t: this._monthsRegex;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction computeMonthsParse() {\r\n\t\tfunction cmpLenRev(a, b) {\r\n\t\t\treturn b.length - a.length;\r\n\t\t}\r\n\r\n\t\tvar shortPieces = [],\r\n\t\t\tlongPieces = [],\r\n\t\t\tmixedPieces = [],\r\n\t\t\ti,\r\n\t\t\tmom;\r\n\t\tfor (i = 0; i < 12; i++) {\r\n\t\t\t// make the regex if we don't have it already\r\n\t\t\tmom = createUTC([2000, i]);\r\n\t\t\tshortPieces.push(this.monthsShort(mom, ''));\r\n\t\t\tlongPieces.push(this.months(mom, ''));\r\n\t\t\tmixedPieces.push(this.months(mom, ''));\r\n\t\t\tmixedPieces.push(this.monthsShort(mom, ''));\r\n\t\t}\r\n\t\t// Sorting makes sure if one month (or abbr) is a prefix of another it\r\n\t\t// will match the longer piece.\r\n\t\tshortPieces.sort(cmpLenRev);\r\n\t\tlongPieces.sort(cmpLenRev);\r\n\t\tmixedPieces.sort(cmpLenRev);\r\n\t\tfor (i = 0; i < 12; i++) {\r\n\t\t\tshortPieces[i] = regexEscape(shortPieces[i]);\r\n\t\t\tlongPieces[i] = regexEscape(longPieces[i]);\r\n\t\t}\r\n\t\tfor (i = 0; i < 24; i++) {\r\n\t\t\tmixedPieces[i] = regexEscape(mixedPieces[i]);\r\n\t\t}\r\n\r\n\t\tthis._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\r\n\t\tthis._monthsShortRegex = this._monthsRegex;\r\n\t\tthis._monthsStrictRegex = new RegExp(\r\n\t\t\t'^(' + longPieces.join('|') + ')',\r\n\t\t\t'i'\r\n\t\t);\r\n\t\tthis._monthsShortStrictRegex = new RegExp(\r\n\t\t\t'^(' + shortPieces.join('|') + ')',\r\n\t\t\t'i'\r\n\t\t);\r\n\t}\r\n\r\n\t// FORMATTING\r\n\r\n\taddFormatToken('Y', 0, 0, function () {\r\n\t\tvar y = this.year();\r\n\t\treturn y <= 9999 ? zeroFill(y, 4) : '+' + y;\r\n\t});\r\n\r\n\taddFormatToken(0, ['YY', 2], 0, function () {\r\n\t\treturn this.year() % 100;\r\n\t});\r\n\r\n\taddFormatToken(0, ['YYYY', 4], 0, 'year');\r\n\taddFormatToken(0, ['YYYYY', 5], 0, 'year');\r\n\taddFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\r\n\r\n\t// ALIASES\r\n\r\n\taddUnitAlias('year', 'y');\r\n\r\n\t// PRIORITIES\r\n\r\n\taddUnitPriority('year', 1);\r\n\r\n\t// PARSING\r\n\r\n\taddRegexToken('Y', matchSigned);\r\n\taddRegexToken('YY', match1to2, match2);\r\n\taddRegexToken('YYYY', match1to4, match4);\r\n\taddRegexToken('YYYYY', match1to6, match6);\r\n\taddRegexToken('YYYYYY', match1to6, match6);\r\n\r\n\taddParseToken(['YYYYY', 'YYYYYY'], YEAR);\r\n\taddParseToken('YYYY', function (input, array) {\r\n\t\tarray[YEAR] =\r\n\t\t\tinput.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\r\n\t});\r\n\taddParseToken('YY', function (input, array) {\r\n\t\tarray[YEAR] = hooks.parseTwoDigitYear(input);\r\n\t});\r\n\taddParseToken('Y', function (input, array) {\r\n\t\tarray[YEAR] = parseInt(input, 10);\r\n\t});\r\n\r\n\t// HELPERS\r\n\r\n\tfunction daysInYear(year) {\r\n\t\treturn isLeapYear(year) ? 366 : 365;\r\n\t}\r\n\r\n\t// HOOKS\r\n\r\n\thooks.parseTwoDigitYear = function (input) {\r\n\t\treturn toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\r\n\t};\r\n\r\n\t// MOMENTS\r\n\r\n\tvar getSetYear = makeGetSet('FullYear', true);\r\n\r\n\tfunction getIsLeapYear() {\r\n\t\treturn isLeapYear(this.year());\r\n\t}\r\n\r\n\tfunction createDate(y, m, d, h, M, s, ms) {\r\n\t\t// can't just apply() to create a date:\r\n\t\t// https://stackoverflow.com/q/181348\r\n\t\tvar date;\r\n\t\t// the date constructor remaps years 0-99 to 1900-1999\r\n\t\tif (y < 100 && y >= 0) {\r\n\t\t\t// preserve leap years using a full 400 year cycle, then reset\r\n\t\t\tdate = new Date(y + 400, m, d, h, M, s, ms);\r\n\t\t\tif (isFinite(date.getFullYear())) {\r\n\t\t\t\tdate.setFullYear(y);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tdate = new Date(y, m, d, h, M, s, ms);\r\n\t\t}\r\n\r\n\t\treturn date;\r\n\t}\r\n\r\n\tfunction createUTCDate(y) {\r\n\t\tvar date, args;\r\n\t\t// the Date.UTC function remaps years 0-99 to 1900-1999\r\n\t\tif (y < 100 && y >= 0) {\r\n\t\t\targs = Array.prototype.slice.call(arguments);\r\n\t\t\t// preserve leap years using a full 400 year cycle, then reset\r\n\t\t\targs[0] = y + 400;\r\n\t\t\tdate = new Date(Date.UTC.apply(null, args));\r\n\t\t\tif (isFinite(date.getUTCFullYear())) {\r\n\t\t\t\tdate.setUTCFullYear(y);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tdate = new Date(Date.UTC.apply(null, arguments));\r\n\t\t}\r\n\r\n\t\treturn date;\r\n\t}\r\n\r\n\t// start-of-first-week - start-of-year\r\n\tfunction firstWeekOffset(year, dow, doy) {\r\n\t\tvar // first-week day -- which january is always in the first week (4 for iso, 1 for other)\r\n\t\t\tfwd = 7 + dow - doy,\r\n\t\t\t// first-week day local weekday -- which local weekday is fwd\r\n\t\t\tfwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\r\n\r\n\t\treturn -fwdlw + fwd - 1;\r\n\t}\r\n\r\n\t// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\r\n\tfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\r\n\t\tvar localWeekday = (7 + weekday - dow) % 7,\r\n\t\t\tweekOffset = firstWeekOffset(year, dow, doy),\r\n\t\t\tdayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\r\n\t\t\tresYear,\r\n\t\t\tresDayOfYear;\r\n\r\n\t\tif (dayOfYear <= 0) {\r\n\t\t\tresYear = year - 1;\r\n\t\t\tresDayOfYear = daysInYear(resYear) + dayOfYear;\r\n\t\t} else if (dayOfYear > daysInYear(year)) {\r\n\t\t\tresYear = year + 1;\r\n\t\t\tresDayOfYear = dayOfYear - daysInYear(year);\r\n\t\t} else {\r\n\t\t\tresYear = year;\r\n\t\t\tresDayOfYear = dayOfYear;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tyear: resYear,\r\n\t\t\tdayOfYear: resDayOfYear,\r\n\t\t};\r\n\t}\r\n\r\n\tfunction weekOfYear(mom, dow, doy) {\r\n\t\tvar weekOffset = firstWeekOffset(mom.year(), dow, doy),\r\n\t\t\tweek = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\r\n\t\t\tresWeek,\r\n\t\t\tresYear;\r\n\r\n\t\tif (week < 1) {\r\n\t\t\tresYear = mom.year() - 1;\r\n\t\t\tresWeek = week + weeksInYear(resYear, dow, doy);\r\n\t\t} else if (week > weeksInYear(mom.year(), dow, doy)) {\r\n\t\t\tresWeek = week - weeksInYear(mom.year(), dow, doy);\r\n\t\t\tresYear = mom.year() + 1;\r\n\t\t} else {\r\n\t\t\tresYear = mom.year();\r\n\t\t\tresWeek = week;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tweek: resWeek,\r\n\t\t\tyear: resYear,\r\n\t\t};\r\n\t}\r\n\r\n\tfunction weeksInYear(year, dow, doy) {\r\n\t\tvar weekOffset = firstWeekOffset(year, dow, doy),\r\n\t\t\tweekOffsetNext = firstWeekOffset(year + 1, dow, doy);\r\n\t\treturn (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\r\n\t}\r\n\r\n\t// FORMATTING\r\n\r\n\taddFormatToken('w', ['ww', 2], 'wo', 'week');\r\n\taddFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\r\n\r\n\t// ALIASES\r\n\r\n\taddUnitAlias('week', 'w');\r\n\taddUnitAlias('isoWeek', 'W');\r\n\r\n\t// PRIORITIES\r\n\r\n\taddUnitPriority('week', 5);\r\n\taddUnitPriority('isoWeek', 5);\r\n\r\n\t// PARSING\r\n\r\n\taddRegexToken('w', match1to2);\r\n\taddRegexToken('ww', match1to2, match2);\r\n\taddRegexToken('W', match1to2);\r\n\taddRegexToken('WW', match1to2, match2);\r\n\r\n\taddWeekParseToken(['w', 'ww', 'W', 'WW'], function (\r\n\t\tinput,\r\n\t\tweek,\r\n\t\tconfig,\r\n\t\ttoken\r\n\t) {\r\n\t\tweek[token.substr(0, 1)] = toInt(input);\r\n\t});\r\n\r\n\t// HELPERS\r\n\r\n\t// LOCALES\r\n\r\n\tfunction localeWeek(mom) {\r\n\t\treturn weekOfYear(mom, this._week.dow, this._week.doy).week;\r\n\t}\r\n\r\n\tvar defaultLocaleWeek = {\r\n\t\tdow: 0, // Sunday is the first day of the week.\r\n\t\tdoy: 6, // The week that contains Jan 6th is the first week of the year.\r\n\t};\r\n\r\n\tfunction localeFirstDayOfWeek() {\r\n\t\treturn this._week.dow;\r\n\t}\r\n\r\n\tfunction localeFirstDayOfYear() {\r\n\t\treturn this._week.doy;\r\n\t}\r\n\r\n\t// MOMENTS\r\n\r\n\tfunction getSetWeek(input) {\r\n\t\tvar week = this.localeData().week(this);\r\n\t\treturn input == null ? week : this.add((input - week) * 7, 'd');\r\n\t}\r\n\r\n\tfunction getSetISOWeek(input) {\r\n\t\tvar week = weekOfYear(this, 1, 4).week;\r\n\t\treturn input == null ? week : this.add((input - week) * 7, 'd');\r\n\t}\r\n\r\n\t// FORMATTING\r\n\r\n\taddFormatToken('d', 0, 'do', 'day');\r\n\r\n\taddFormatToken('dd', 0, 0, function (format) {\r\n\t\treturn this.localeData().weekdaysMin(this, format);\r\n\t});\r\n\r\n\taddFormatToken('ddd', 0, 0, function (format) {\r\n\t\treturn this.localeData().weekdaysShort(this, format);\r\n\t});\r\n\r\n\taddFormatToken('dddd', 0, 0, function (format) {\r\n\t\treturn this.localeData().weekdays(this, format);\r\n\t});\r\n\r\n\taddFormatToken('e', 0, 0, 'weekday');\r\n\taddFormatToken('E', 0, 0, 'isoWeekday');\r\n\r\n\t// ALIASES\r\n\r\n\taddUnitAlias('day', 'd');\r\n\taddUnitAlias('weekday', 'e');\r\n\taddUnitAlias('isoWeekday', 'E');\r\n\r\n\t// PRIORITY\r\n\taddUnitPriority('day', 11);\r\n\taddUnitPriority('weekday', 11);\r\n\taddUnitPriority('isoWeekday', 11);\r\n\r\n\t// PARSING\r\n\r\n\taddRegexToken('d', match1to2);\r\n\taddRegexToken('e', match1to2);\r\n\taddRegexToken('E', match1to2);\r\n\taddRegexToken('dd', function (isStrict, locale) {\r\n\t\treturn locale.weekdaysMinRegex(isStrict);\r\n\t});\r\n\taddRegexToken('ddd', function (isStrict, locale) {\r\n\t\treturn locale.weekdaysShortRegex(isStrict);\r\n\t});\r\n\taddRegexToken('dddd', function (isStrict, locale) {\r\n\t\treturn locale.weekdaysRegex(isStrict);\r\n\t});\r\n\r\n\taddWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\r\n\t\tvar weekday = config._locale.weekdaysParse(input, token, config._strict);\r\n\t\t// if we didn't get a weekday name, mark the date as invalid\r\n\t\tif (weekday != null) {\r\n\t\t\tweek.d = weekday;\r\n\t\t} else {\r\n\t\t\tgetParsingFlags(config).invalidWeekday = input;\r\n\t\t}\r\n\t});\r\n\r\n\taddWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\r\n\t\tweek[token] = toInt(input);\r\n\t});\r\n\r\n\t// HELPERS\r\n\r\n\tfunction parseWeekday(input, locale) {\r\n\t\tif (typeof input !== 'string') {\r\n\t\t\treturn input;\r\n\t\t}\r\n\r\n\t\tif (!isNaN(input)) {\r\n\t\t\treturn parseInt(input, 10);\r\n\t\t}\r\n\r\n\t\tinput = locale.weekdaysParse(input);\r\n\t\tif (typeof input === 'number') {\r\n\t\t\treturn input;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction parseIsoWeekday(input, locale) {\r\n\t\tif (typeof input === 'string') {\r\n\t\t\treturn locale.weekdaysParse(input) % 7 || 7;\r\n\t\t}\r\n\t\treturn isNaN(input) ? null : input;\r\n\t}\r\n\r\n\t// LOCALES\r\n\tfunction shiftWeekdays(ws, n) {\r\n\t\treturn ws.slice(n, 7).concat(ws.slice(0, n));\r\n\t}\r\n\r\n\tvar defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\r\n\t\t'_'\r\n\t),\r\n\t\tdefaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\r\n\t\tdefaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\r\n\t\tdefaultWeekdaysRegex = matchWord,\r\n\t\tdefaultWeekdaysShortRegex = matchWord,\r\n\t\tdefaultWeekdaysMinRegex = matchWord;\r\n\r\n\tfunction localeWeekdays(m, format) {\r\n\t\tvar weekdays = isArray(this._weekdays)\r\n\t\t\t? this._weekdays\r\n\t\t\t: this._weekdays[\r\n\t\t\tm && m !== true && this._weekdays.isFormat.test(format)\r\n\t\t\t\t? 'format'\r\n\t\t\t\t: 'standalone'\r\n\t\t\t];\r\n\t\treturn m === true\r\n\t\t\t? shiftWeekdays(weekdays, this._week.dow)\r\n\t\t\t: m\r\n\t\t\t\t? weekdays[m.day()]\r\n\t\t\t\t: weekdays;\r\n\t}\r\n\r\n\tfunction localeWeekdaysShort(m) {\r\n\t\treturn m === true\r\n\t\t\t? shiftWeekdays(this._weekdaysShort, this._week.dow)\r\n\t\t\t: m\r\n\t\t\t\t? this._weekdaysShort[m.day()]\r\n\t\t\t\t: this._weekdaysShort;\r\n\t}\r\n\r\n\tfunction localeWeekdaysMin(m) {\r\n\t\treturn m === true\r\n\t\t\t? shiftWeekdays(this._weekdaysMin, this._week.dow)\r\n\t\t\t: m\r\n\t\t\t\t? this._weekdaysMin[m.day()]\r\n\t\t\t\t: this._weekdaysMin;\r\n\t}\r\n\r\n\tfunction handleStrictParse$1(weekdayName, format, strict) {\r\n\t\tvar i,\r\n\t\t\tii,\r\n\t\t\tmom,\r\n\t\t\tllc = weekdayName.toLocaleLowerCase();\r\n\t\tif (!this._weekdaysParse) {\r\n\t\t\tthis._weekdaysParse = [];\r\n\t\t\tthis._shortWeekdaysParse = [];\r\n\t\t\tthis._minWeekdaysParse = [];\r\n\r\n\t\t\tfor (i = 0; i < 7; ++i) {\r\n\t\t\t\tmom = createUTC([2000, 1]).day(i);\r\n\t\t\t\tthis._minWeekdaysParse[i] = this.weekdaysMin(\r\n\t\t\t\t\tmom,\r\n\t\t\t\t\t''\r\n\t\t\t\t).toLocaleLowerCase();\r\n\t\t\t\tthis._shortWeekdaysParse[i] = this.weekdaysShort(\r\n\t\t\t\t\tmom,\r\n\t\t\t\t\t''\r\n\t\t\t\t).toLocaleLowerCase();\r\n\t\t\t\tthis._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (strict) {\r\n\t\t\tif (format === 'dddd') {\r\n\t\t\t\tii = indexOf.call(this._weekdaysParse, llc);\r\n\t\t\t\treturn ii !== -1 ? ii : null;\r\n\t\t\t} else if (format === 'ddd') {\r\n\t\t\t\tii = indexOf.call(this._shortWeekdaysParse, llc);\r\n\t\t\t\treturn ii !== -1 ? ii : null;\r\n\t\t\t} else {\r\n\t\t\t\tii = indexOf.call(this._minWeekdaysParse, llc);\r\n\t\t\t\treturn ii !== -1 ? ii : null;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (format === 'dddd') {\r\n\t\t\t\tii = indexOf.call(this._weekdaysParse, llc);\r\n\t\t\t\tif (ii !== -1) {\r\n\t\t\t\t\treturn ii;\r\n\t\t\t\t}\r\n\t\t\t\tii = indexOf.call(this._shortWeekdaysParse, llc);\r\n\t\t\t\tif (ii !== -1) {\r\n\t\t\t\t\treturn ii;\r\n\t\t\t\t}\r\n\t\t\t\tii = indexOf.call(this._minWeekdaysParse, llc);\r\n\t\t\t\treturn ii !== -1 ? ii : null;\r\n\t\t\t} else if (format === 'ddd') {\r\n\t\t\t\tii = indexOf.call(this._shortWeekdaysParse, llc);\r\n\t\t\t\tif (ii !== -1) {\r\n\t\t\t\t\treturn ii;\r\n\t\t\t\t}\r\n\t\t\t\tii = indexOf.call(this._weekdaysParse, llc);\r\n\t\t\t\tif (ii !== -1) {\r\n\t\t\t\t\treturn ii;\r\n\t\t\t\t}\r\n\t\t\t\tii = indexOf.call(this._minWeekdaysParse, llc);\r\n\t\t\t\treturn ii !== -1 ? ii : null;\r\n\t\t\t} else {\r\n\t\t\t\tii = indexOf.call(this._minWeekdaysParse, llc);\r\n\t\t\t\tif (ii !== -1) {\r\n\t\t\t\t\treturn ii;\r\n\t\t\t\t}\r\n\t\t\t\tii = indexOf.call(this._weekdaysParse, llc);\r\n\t\t\t\tif (ii !== -1) {\r\n\t\t\t\t\treturn ii;\r\n\t\t\t\t}\r\n\t\t\t\tii = indexOf.call(this._shortWeekdaysParse, llc);\r\n\t\t\t\treturn ii !== -1 ? ii : null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction localeWeekdaysParse(weekdayName, format, strict) {\r\n\t\tvar i, mom, regex;\r\n\r\n\t\tif (this._weekdaysParseExact) {\r\n\t\t\treturn handleStrictParse$1.call(this, weekdayName, format, strict);\r\n\t\t}\r\n\r\n\t\tif (!this._weekdaysParse) {\r\n\t\t\tthis._weekdaysParse = [];\r\n\t\t\tthis._minWeekdaysParse = [];\r\n\t\t\tthis._shortWeekdaysParse = [];\r\n\t\t\tthis._fullWeekdaysParse = [];\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < 7; i++) {\r\n\t\t\t// make the regex if we don't have it already\r\n\r\n\t\t\tmom = createUTC([2000, 1]).day(i);\r\n\t\t\tif (strict && !this._fullWeekdaysParse[i]) {\r\n\t\t\t\tthis._fullWeekdaysParse[i] = new RegExp(\r\n\t\t\t\t\t'^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\r\n\t\t\t\t\t'i'\r\n\t\t\t\t);\r\n\t\t\t\tthis._shortWeekdaysParse[i] = new RegExp(\r\n\t\t\t\t\t'^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\r\n\t\t\t\t\t'i'\r\n\t\t\t\t);\r\n\t\t\t\tthis._minWeekdaysParse[i] = new RegExp(\r\n\t\t\t\t\t'^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\r\n\t\t\t\t\t'i'\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif (!this._weekdaysParse[i]) {\r\n\t\t\t\tregex =\r\n\t\t\t\t\t'^' +\r\n\t\t\t\t\tthis.weekdays(mom, '') +\r\n\t\t\t\t\t'|^' +\r\n\t\t\t\t\tthis.weekdaysShort(mom, '') +\r\n\t\t\t\t\t'|^' +\r\n\t\t\t\t\tthis.weekdaysMin(mom, '');\r\n\t\t\t\tthis._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\r\n\t\t\t}\r\n\t\t\t// test the regex\r\n\t\t\tif (\r\n\t\t\t\tstrict &&\r\n\t\t\t\tformat === 'dddd' &&\r\n\t\t\t\tthis._fullWeekdaysParse[i].test(weekdayName)\r\n\t\t\t) {\r\n\t\t\t\treturn i;\r\n\t\t\t} else if (\r\n\t\t\t\tstrict &&\r\n\t\t\t\tformat === 'ddd' &&\r\n\t\t\t\tthis._shortWeekdaysParse[i].test(weekdayName)\r\n\t\t\t) {\r\n\t\t\t\treturn i;\r\n\t\t\t} else if (\r\n\t\t\t\tstrict &&\r\n\t\t\t\tformat === 'dd' &&\r\n\t\t\t\tthis._minWeekdaysParse[i].test(weekdayName)\r\n\t\t\t) {\r\n\t\t\t\treturn i;\r\n\t\t\t} else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// MOMENTS\r\n\r\n\tfunction getSetDayOfWeek(input) {\r\n\t\tif (!this.isValid()) {\r\n\t\t\treturn input != null ? this : NaN;\r\n\t\t}\r\n\t\tvar day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\r\n\t\tif (input != null) {\r\n\t\t\tinput = parseWeekday(input, this.localeData());\r\n\t\t\treturn this.add(input - day, 'd');\r\n\t\t} else {\r\n\t\t\treturn day;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getSetLocaleDayOfWeek(input) {\r\n\t\tif (!this.isValid()) {\r\n\t\t\treturn input != null ? this : NaN;\r\n\t\t}\r\n\t\tvar weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\r\n\t\treturn input == null ? weekday : this.add(input - weekday, 'd');\r\n\t}\r\n\r\n\tfunction getSetISODayOfWeek(input) {\r\n\t\tif (!this.isValid()) {\r\n\t\t\treturn input != null ? this : NaN;\r\n\t\t}\r\n\r\n\t\t// behaves the same as moment#day except\r\n\t\t// as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\r\n\t\t// as a setter, sunday should belong to the previous week.\r\n\r\n\t\tif (input != null) {\r\n\t\t\tvar weekday = parseIsoWeekday(input, this.localeData());\r\n\t\t\treturn this.day(this.day() % 7 ? weekday : weekday - 7);\r\n\t\t} else {\r\n\t\t\treturn this.day() || 7;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction weekdaysRegex(isStrict) {\r\n\t\tif (this._weekdaysParseExact) {\r\n\t\t\tif (!hasOwnProp(this, '_weekdaysRegex')) {\r\n\t\t\t\tcomputeWeekdaysParse.call(this);\r\n\t\t\t}\r\n\t\t\tif (isStrict) {\r\n\t\t\t\treturn this._weekdaysStrictRegex;\r\n\t\t\t} else {\r\n\t\t\t\treturn this._weekdaysRegex;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (!hasOwnProp(this, '_weekdaysRegex')) {\r\n\t\t\t\tthis._weekdaysRegex = defaultWeekdaysRegex;\r\n\t\t\t}\r\n\t\t\treturn this._weekdaysStrictRegex && isStrict\r\n\t\t\t\t? this._weekdaysStrictRegex\r\n\t\t\t\t: this._weekdaysRegex;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction weekdaysShortRegex(isStrict) {\r\n\t\tif (this._weekdaysParseExact) {\r\n\t\t\tif (!hasOwnProp(this, '_weekdaysRegex')) {\r\n\t\t\t\tcomputeWeekdaysParse.call(this);\r\n\t\t\t}\r\n\t\t\tif (isStrict) {\r\n\t\t\t\treturn this._weekdaysShortStrictRegex;\r\n\t\t\t} else {\r\n\t\t\t\treturn this._weekdaysShortRegex;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (!hasOwnProp(this, '_weekdaysShortRegex')) {\r\n\t\t\t\tthis._weekdaysShortRegex = defaultWeekdaysShortRegex;\r\n\t\t\t}\r\n\t\t\treturn this._weekdaysShortStrictRegex && isStrict\r\n\t\t\t\t? this._weekdaysShortStrictRegex\r\n\t\t\t\t: this._weekdaysShortRegex;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction weekdaysMinRegex(isStrict) {\r\n\t\tif (this._weekdaysParseExact) {\r\n\t\t\tif (!hasOwnProp(this, '_weekdaysRegex')) {\r\n\t\t\t\tcomputeWeekdaysParse.call(this);\r\n\t\t\t}\r\n\t\t\tif (isStrict) {\r\n\t\t\t\treturn this._weekdaysMinStrictRegex;\r\n\t\t\t} else {\r\n\t\t\t\treturn this._weekdaysMinRegex;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (!hasOwnProp(this, '_weekdaysMinRegex')) {\r\n\t\t\t\tthis._weekdaysMinRegex = defaultWeekdaysMinRegex;\r\n\t\t\t}\r\n\t\t\treturn this._weekdaysMinStrictRegex && isStrict\r\n\t\t\t\t? this._weekdaysMinStrictRegex\r\n\t\t\t\t: this._weekdaysMinRegex;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction computeWeekdaysParse() {\r\n\t\tfunction cmpLenRev(a, b) {\r\n\t\t\treturn b.length - a.length;\r\n\t\t}\r\n\r\n\t\tvar minPieces = [],\r\n\t\t\tshortPieces = [],\r\n\t\t\tlongPieces = [],\r\n\t\t\tmixedPieces = [],\r\n\t\t\ti,\r\n\t\t\tmom,\r\n\t\t\tminp,\r\n\t\t\tshortp,\r\n\t\t\tlongp;\r\n\t\tfor (i = 0; i < 7; i++) {\r\n\t\t\t// make the regex if we don't have it already\r\n\t\t\tmom = createUTC([2000, 1]).day(i);\r\n\t\t\tminp = regexEscape(this.weekdaysMin(mom, ''));\r\n\t\t\tshortp = regexEscape(this.weekdaysShort(mom, ''));\r\n\t\t\tlongp = regexEscape(this.weekdays(mom, ''));\r\n\t\t\tminPieces.push(minp);\r\n\t\t\tshortPieces.push(shortp);\r\n\t\t\tlongPieces.push(longp);\r\n\t\t\tmixedPieces.push(minp);\r\n\t\t\tmixedPieces.push(shortp);\r\n\t\t\tmixedPieces.push(longp);\r\n\t\t}\r\n\t\t// Sorting makes sure if one weekday (or abbr) is a prefix of another it\r\n\t\t// will match the longer piece.\r\n\t\tminPieces.sort(cmpLenRev);\r\n\t\tshortPieces.sort(cmpLenRev);\r\n\t\tlongPieces.sort(cmpLenRev);\r\n\t\tmixedPieces.sort(cmpLenRev);\r\n\r\n\t\tthis._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\r\n\t\tthis._weekdaysShortRegex = this._weekdaysRegex;\r\n\t\tthis._weekdaysMinRegex = this._weekdaysRegex;\r\n\r\n\t\tthis._weekdaysStrictRegex = new RegExp(\r\n\t\t\t'^(' + longPieces.join('|') + ')',\r\n\t\t\t'i'\r\n\t\t);\r\n\t\tthis._weekdaysShortStrictRegex = new RegExp(\r\n\t\t\t'^(' + shortPieces.join('|') + ')',\r\n\t\t\t'i'\r\n\t\t);\r\n\t\tthis._weekdaysMinStrictRegex = new RegExp(\r\n\t\t\t'^(' + minPieces.join('|') + ')',\r\n\t\t\t'i'\r\n\t\t);\r\n\t}\r\n\r\n\t// FORMATTING\r\n\r\n\tfunction hFormat() {\r\n\t\treturn this.hours() % 12 || 12;\r\n\t}\r\n\r\n\tfunction kFormat() {\r\n\t\treturn this.hours() || 24;\r\n\t}\r\n\r\n\taddFormatToken('H', ['HH', 2], 0, 'hour');\r\n\taddFormatToken('h', ['hh', 2], 0, hFormat);\r\n\taddFormatToken('k', ['kk', 2], 0, kFormat);\r\n\r\n\taddFormatToken('hmm', 0, 0, function () {\r\n\t\treturn '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\r\n\t});\r\n\r\n\taddFormatToken('hmmss', 0, 0, function () {\r\n\t\treturn (\r\n\t\t\t'' +\r\n\t\t\thFormat.apply(this) +\r\n\t\t\tzeroFill(this.minutes(), 2) +\r\n\t\t\tzeroFill(this.seconds(), 2)\r\n\t\t);\r\n\t});\r\n\r\n\taddFormatToken('Hmm', 0, 0, function () {\r\n\t\treturn '' + this.hours() + zeroFill(this.minutes(), 2);\r\n\t});\r\n\r\n\taddFormatToken('Hmmss', 0, 0, function () {\r\n\t\treturn (\r\n\t\t\t'' +\r\n\t\t\tthis.hours() +\r\n\t\t\tzeroFill(this.minutes(), 2) +\r\n\t\t\tzeroFill(this.seconds(), 2)\r\n\t\t);\r\n\t});\r\n\r\n\tfunction meridiem(token, lowercase) {\r\n\t\taddFormatToken(token, 0, 0, function () {\r\n\t\t\treturn this.localeData().meridiem(\r\n\t\t\t\tthis.hours(),\r\n\t\t\t\tthis.minutes(),\r\n\t\t\t\tlowercase\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tmeridiem('a', true);\r\n\tmeridiem('A', false);\r\n\r\n\t// ALIASES\r\n\r\n\taddUnitAlias('hour', 'h');\r\n\r\n\t// PRIORITY\r\n\taddUnitPriority('hour', 13);\r\n\r\n\t// PARSING\r\n\r\n\tfunction matchMeridiem(isStrict, locale) {\r\n\t\treturn locale._meridiemParse;\r\n\t}\r\n\r\n\taddRegexToken('a', matchMeridiem);\r\n\taddRegexToken('A', matchMeridiem);\r\n\taddRegexToken('H', match1to2);\r\n\taddRegexToken('h', match1to2);\r\n\taddRegexToken('k', match1to2);\r\n\taddRegexToken('HH', match1to2, match2);\r\n\taddRegexToken('hh', match1to2, match2);\r\n\taddRegexToken('kk', match1to2, match2);\r\n\r\n\taddRegexToken('hmm', match3to4);\r\n\taddRegexToken('hmmss', match5to6);\r\n\taddRegexToken('Hmm', match3to4);\r\n\taddRegexToken('Hmmss', match5to6);\r\n\r\n\taddParseToken(['H', 'HH'], HOUR);\r\n\taddParseToken(['k', 'kk'], function (input, array, config) {\r\n\t\tvar kInput = toInt(input);\r\n\t\tarray[HOUR] = kInput === 24 ? 0 : kInput;\r\n\t});\r\n\taddParseToken(['a', 'A'], function (input, array, config) {\r\n\t\tconfig._isPm = config._locale.isPM(input);\r\n\t\tconfig._meridiem = input;\r\n\t});\r\n\taddParseToken(['h', 'hh'], function (input, array, config) {\r\n\t\tarray[HOUR] = toInt(input);\r\n\t\tgetParsingFlags(config).bigHour = true;\r\n\t});\r\n\taddParseToken('hmm', function (input, array, config) {\r\n\t\tvar pos = input.length - 2;\r\n\t\tarray[HOUR] = toInt(input.substr(0, pos));\r\n\t\tarray[MINUTE] = toInt(input.substr(pos));\r\n\t\tgetParsingFlags(config).bigHour = true;\r\n\t});\r\n\taddParseToken('hmmss', function (input, array, config) {\r\n\t\tvar pos1 = input.length - 4,\r\n\t\t\tpos2 = input.length - 2;\r\n\t\tarray[HOUR] = toInt(input.substr(0, pos1));\r\n\t\tarray[MINUTE] = toInt(input.substr(pos1, 2));\r\n\t\tarray[SECOND] = toInt(input.substr(pos2));\r\n\t\tgetParsingFlags(config).bigHour = true;\r\n\t});\r\n\taddParseToken('Hmm', function (input, array, config) {\r\n\t\tvar pos = input.length - 2;\r\n\t\tarray[HOUR] = toInt(input.substr(0, pos));\r\n\t\tarray[MINUTE] = toInt(input.substr(pos));\r\n\t});\r\n\taddParseToken('Hmmss', function (input, array, config) {\r\n\t\tvar pos1 = input.length - 4,\r\n\t\t\tpos2 = input.length - 2;\r\n\t\tarray[HOUR] = toInt(input.substr(0, pos1));\r\n\t\tarray[MINUTE] = toInt(input.substr(pos1, 2));\r\n\t\tarray[SECOND] = toInt(input.substr(pos2));\r\n\t});\r\n\r\n\t// LOCALES\r\n\r\n\tfunction localeIsPM(input) {\r\n\t\t// IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\r\n\t\t// Using charAt should be more compatible.\r\n\t\treturn (input + '').toLowerCase().charAt(0) === 'p';\r\n\t}\r\n\r\n\tvar defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\r\n\t\t// Setting the hour should keep the time, because the user explicitly\r\n\t\t// specified which hour they want. So trying to maintain the same hour (in\r\n\t\t// a new timezone) makes sense. Adding/subtracting hours does not follow\r\n\t\t// this rule.\r\n\t\tgetSetHour = makeGetSet('Hours', true);\r\n\r\n\tfunction localeMeridiem(hours, minutes, isLower) {\r\n\t\tif (hours > 11) {\r\n\t\t\treturn isLower ? 'pm' : 'PM';\r\n\t\t} else {\r\n\t\t\treturn isLower ? 'am' : 'AM';\r\n\t\t}\r\n\t}\r\n\r\n\tvar baseConfig = {\r\n\t\tcalendar: defaultCalendar,\r\n\t\tlongDateFormat: defaultLongDateFormat,\r\n\t\tinvalidDate: defaultInvalidDate,\r\n\t\tordinal: defaultOrdinal,\r\n\t\tdayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\r\n\t\trelativeTime: defaultRelativeTime,\r\n\r\n\t\tmonths: defaultLocaleMonths,\r\n\t\tmonthsShort: defaultLocaleMonthsShort,\r\n\r\n\t\tweek: defaultLocaleWeek,\r\n\r\n\t\tweekdays: defaultLocaleWeekdays,\r\n\t\tweekdaysMin: defaultLocaleWeekdaysMin,\r\n\t\tweekdaysShort: defaultLocaleWeekdaysShort,\r\n\r\n\t\tmeridiemParse: defaultLocaleMeridiemParse,\r\n\t};\r\n\r\n\t// internal storage for locale config files\r\n\tvar locales = {},\r\n\t\tlocaleFamilies = {},\r\n\t\tglobalLocale;\r\n\r\n\tfunction commonPrefix(arr1, arr2) {\r\n\t\tvar i,\r\n\t\t\tminl = Math.min(arr1.length, arr2.length);\r\n\t\tfor (i = 0; i < minl; i += 1) {\r\n\t\t\tif (arr1[i] !== arr2[i]) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn minl;\r\n\t}\r\n\r\n\tfunction normalizeLocale(key) {\r\n\t\treturn key ? key.toLowerCase().replace('_', '-') : key;\r\n\t}\r\n\r\n\t// pick the locale from the array\r\n\t// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\r\n\t// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\r\n\tfunction chooseLocale(names) {\r\n\t\tvar i = 0,\r\n\t\t\tj,\r\n\t\t\tnext,\r\n\t\t\tlocale,\r\n\t\t\tsplit;\r\n\r\n\t\twhile (i < names.length) {\r\n\t\t\tsplit = normalizeLocale(names[i]).split('-');\r\n\t\t\tj = split.length;\r\n\t\t\tnext = normalizeLocale(names[i + 1]);\r\n\t\t\tnext = next ? next.split('-') : null;\r\n\t\t\twhile (j > 0) {\r\n\t\t\t\tlocale = loadLocale(split.slice(0, j).join('-'));\r\n\t\t\t\tif (locale) {\r\n\t\t\t\t\treturn locale;\r\n\t\t\t\t}\r\n\t\t\t\tif (\r\n\t\t\t\t\tnext &&\r\n\t\t\t\t\tnext.length >= j &&\r\n\t\t\t\t\tcommonPrefix(split, next) >= j - 1\r\n\t\t\t\t) {\r\n\t\t\t\t\t//the next array item is better than a shallower substring of this one\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tj--;\r\n\t\t\t}\r\n\t\t\ti++;\r\n\t\t}\r\n\t\treturn globalLocale;\r\n\t}\r\n\r\n\tfunction loadLocale(name) {\r\n\t\tvar oldLocale = null,\r\n\t\t\taliasedRequire;\r\n\t\t// TODO: Find a better way to register and load all the locales in Node\r\n\t\tif (\r\n\t\t\tlocales[name] === undefined &&\r\n\t\t\ttypeof module !== 'undefined' &&\r\n\t\t\tmodule &&\r\n\t\t\tmodule.exports\r\n\t\t) {\r\n\t\t\ttry {\r\n\t\t\t\toldLocale = globalLocale._abbr;\r\n\t\t\t\taliasedRequire = require;\r\n\t\t\t\taliasedRequire('./locale/' + name);\r\n\t\t\t\tgetSetGlobalLocale(oldLocale);\r\n\t\t\t} catch (e) {\r\n\t\t\t\t// mark as not found to avoid repeating expensive file require call causing high CPU\r\n\t\t\t\t// when trying to find en-US, en_US, en-us for every format call\r\n\t\t\t\tlocales[name] = null; // null means not found\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn locales[name];\r\n\t}\r\n\r\n\t// This function will load locale and then set the global locale. If\r\n\t// no arguments are passed in, it will simply return the current global\r\n\t// locale key.\r\n\tfunction getSetGlobalLocale(key, values) {\r\n\t\tvar data;\r\n\t\tif (key) {\r\n\t\t\tif (isUndefined(values)) {\r\n\t\t\t\tdata = getLocale(key);\r\n\t\t\t} else {\r\n\t\t\t\tdata = defineLocale(key, values);\r\n\t\t\t}\r\n\r\n\t\t\tif (data) {\r\n\t\t\t\t// moment.duration._locale = moment._locale = data;\r\n\t\t\t\tglobalLocale = data;\r\n\t\t\t} else {\r\n\t\t\t\tif (typeof console !== 'undefined' && console.warn) {\r\n\t\t\t\t\t//warn user if arguments are passed but the locale could not be set\r\n\t\t\t\t\tconsole.warn(\r\n\t\t\t\t\t\t'Locale ' + key + ' not found. Did you forget to load it?'\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn globalLocale._abbr;\r\n\t}\r\n\r\n\tfunction defineLocale(name, config) {\r\n\t\tif (config !== null) {\r\n\t\t\tvar locale,\r\n\t\t\t\tparentConfig = baseConfig;\r\n\t\t\tconfig.abbr = name;\r\n\t\t\tif (locales[name] != null) {\r\n\t\t\t\tdeprecateSimple(\r\n\t\t\t\t\t'defineLocaleOverride',\r\n\t\t\t\t\t'use moment.updateLocale(localeName, config) to change ' +\r\n\t\t\t\t\t'an existing locale. moment.defineLocale(localeName, ' +\r\n\t\t\t\t\t'config) should only be used for creating a new locale ' +\r\n\t\t\t\t\t'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\r\n\t\t\t\t);\r\n\t\t\t\tparentConfig = locales[name]._config;\r\n\t\t\t} else if (config.parentLocale != null) {\r\n\t\t\t\tif (locales[config.parentLocale] != null) {\r\n\t\t\t\t\tparentConfig = locales[config.parentLocale]._config;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlocale = loadLocale(config.parentLocale);\r\n\t\t\t\t\tif (locale != null) {\r\n\t\t\t\t\t\tparentConfig = locale._config;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (!localeFamilies[config.parentLocale]) {\r\n\t\t\t\t\t\t\tlocaleFamilies[config.parentLocale] = [];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlocaleFamilies[config.parentLocale].push({\r\n\t\t\t\t\t\t\tname: name,\r\n\t\t\t\t\t\t\tconfig: config,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlocales[name] = new Locale(mergeConfigs(parentConfig, config));\r\n\r\n\t\t\tif (localeFamilies[name]) {\r\n\t\t\t\tlocaleFamilies[name].forEach(function (x) {\r\n\t\t\t\t\tdefineLocale(x.name, x.config);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// backwards compat for now: also set the locale\r\n\t\t\t// make sure we set the locale AFTER all child locales have been\r\n\t\t\t// created, so we won't end up with the child locale set.\r\n\t\t\tgetSetGlobalLocale(name);\r\n\r\n\t\t\treturn locales[name];\r\n\t\t} else {\r\n\t\t\t// useful for testing\r\n\t\t\tdelete locales[name];\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction updateLocale(name, config) {\r\n\t\tif (config != null) {\r\n\t\t\tvar locale,\r\n\t\t\t\ttmpLocale,\r\n\t\t\t\tparentConfig = baseConfig;\r\n\r\n\t\t\tif (locales[name] != null && locales[name].parentLocale != null) {\r\n\t\t\t\t// Update existing child locale in-place to avoid memory-leaks\r\n\t\t\t\tlocales[name].set(mergeConfigs(locales[name]._config, config));\r\n\t\t\t} else {\r\n\t\t\t\t// MERGE\r\n\t\t\t\ttmpLocale = loadLocale(name);\r\n\t\t\t\tif (tmpLocale != null) {\r\n\t\t\t\t\tparentConfig = tmpLocale._config;\r\n\t\t\t\t}\r\n\t\t\t\tconfig = mergeConfigs(parentConfig, config);\r\n\t\t\t\tif (tmpLocale == null) {\r\n\t\t\t\t\t// updateLocale is called for creating a new locale\r\n\t\t\t\t\t// Set abbr so it will have a name (getters return\r\n\t\t\t\t\t// undefined otherwise).\r\n\t\t\t\t\tconfig.abbr = name;\r\n\t\t\t\t}\r\n\t\t\t\tlocale = new Locale(config);\r\n\t\t\t\tlocale.parentLocale = locales[name];\r\n\t\t\t\tlocales[name] = locale;\r\n\t\t\t}\r\n\r\n\t\t\t// backwards compat for now: also set the locale\r\n\t\t\tgetSetGlobalLocale(name);\r\n\t\t} else {\r\n\t\t\t// pass null for config to unupdate, useful for tests\r\n\t\t\tif (locales[name] != null) {\r\n\t\t\t\tif (locales[name].parentLocale != null) {\r\n\t\t\t\t\tlocales[name] = locales[name].parentLocale;\r\n\t\t\t\t\tif (name === getSetGlobalLocale()) {\r\n\t\t\t\t\t\tgetSetGlobalLocale(name);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (locales[name] != null) {\r\n\t\t\t\t\tdelete locales[name];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn locales[name];\r\n\t}\r\n\r\n\t// returns locale data\r\n\tfunction getLocale(key) {\r\n\t\tvar locale;\r\n\r\n\t\tif (key && key._locale && key._locale._abbr) {\r\n\t\t\tkey = key._locale._abbr;\r\n\t\t}\r\n\r\n\t\tif (!key) {\r\n\t\t\treturn globalLocale;\r\n\t\t}\r\n\r\n\t\tif (!isArray(key)) {\r\n\t\t\t//short-circuit everything else\r\n\t\t\tlocale = loadLocale(key);\r\n\t\t\tif (locale) {\r\n\t\t\t\treturn locale;\r\n\t\t\t}\r\n\t\t\tkey = [key];\r\n\t\t}\r\n\r\n\t\treturn chooseLocale(key);\r\n\t}\r\n\r\n\tfunction listLocales() {\r\n\t\treturn keys(locales);\r\n\t}\r\n\r\n\tfunction checkOverflow(m) {\r\n\t\tvar overflow,\r\n\t\t\ta = m._a;\r\n\r\n\t\tif (a && getParsingFlags(m).overflow === -2) {\r\n\t\t\toverflow =\r\n\t\t\t\ta[MONTH] < 0 || a[MONTH] > 11\r\n\t\t\t\t\t? MONTH\r\n\t\t\t\t\t: a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\r\n\t\t\t\t\t\t? DATE\r\n\t\t\t\t\t\t: a[HOUR] < 0 ||\r\n\t\t\t\t\t\t\ta[HOUR] > 24 ||\r\n\t\t\t\t\t\t\t(a[HOUR] === 24 &&\r\n\t\t\t\t\t\t\t\t(a[MINUTE] !== 0 ||\r\n\t\t\t\t\t\t\t\t\ta[SECOND] !== 0 ||\r\n\t\t\t\t\t\t\t\t\ta[MILLISECOND] !== 0))\r\n\t\t\t\t\t\t\t? HOUR\r\n\t\t\t\t\t\t\t: a[MINUTE] < 0 || a[MINUTE] > 59\r\n\t\t\t\t\t\t\t\t? MINUTE\r\n\t\t\t\t\t\t\t\t: a[SECOND] < 0 || a[SECOND] > 59\r\n\t\t\t\t\t\t\t\t\t? SECOND\r\n\t\t\t\t\t\t\t\t\t: a[MILLISECOND] < 0 || a[MILLISECOND] > 999\r\n\t\t\t\t\t\t\t\t\t\t? MILLISECOND\r\n\t\t\t\t\t\t\t\t\t\t: -1;\r\n\r\n\t\t\tif (\r\n\t\t\t\tgetParsingFlags(m)._overflowDayOfYear &&\r\n\t\t\t\t(overflow < YEAR || overflow > DATE)\r\n\t\t\t) {\r\n\t\t\t\toverflow = DATE;\r\n\t\t\t}\r\n\t\t\tif (getParsingFlags(m)._overflowWeeks && overflow === -1) {\r\n\t\t\t\toverflow = WEEK;\r\n\t\t\t}\r\n\t\t\tif (getParsingFlags(m)._overflowWeekday && overflow === -1) {\r\n\t\t\t\toverflow = WEEKDAY;\r\n\t\t\t}\r\n\r\n\t\t\tgetParsingFlags(m).overflow = overflow;\r\n\t\t}\r\n\r\n\t\treturn m;\r\n\t}\r\n\r\n\t// iso 8601 regex\r\n\t// 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)\r\n\tvar 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)?)?$/,\r\n\t\tbasicIsoRegex = /^\\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)?)?$/,\r\n\t\ttzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\r\n\t\tisoDates = [\r\n\t\t\t['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\r\n\t\t\t['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\r\n\t\t\t['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\r\n\t\t\t['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\r\n\t\t\t['YYYY-DDD', /\\d{4}-\\d{3}/],\r\n\t\t\t['YYYY-MM', /\\d{4}-\\d\\d/, false],\r\n\t\t\t['YYYYYYMMDD', /[+-]\\d{10}/],\r\n\t\t\t['YYYYMMDD', /\\d{8}/],\r\n\t\t\t['GGGG[W]WWE', /\\d{4}W\\d{3}/],\r\n\t\t\t['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\r\n\t\t\t['YYYYDDD', /\\d{7}/],\r\n\t\t\t['YYYYMM', /\\d{6}/, false],\r\n\t\t\t['YYYY', /\\d{4}/, false],\r\n\t\t],\r\n\t\t// iso time formats and regexes\r\n\t\tisoTimes = [\r\n\t\t\t['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\r\n\t\t\t['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\r\n\t\t\t['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\r\n\t\t\t['HH:mm', /\\d\\d:\\d\\d/],\r\n\t\t\t['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\r\n\t\t\t['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\r\n\t\t\t['HHmmss', /\\d\\d\\d\\d\\d\\d/],\r\n\t\t\t['HHmm', /\\d\\d\\d\\d/],\r\n\t\t\t['HH', /\\d\\d/],\r\n\t\t],\r\n\t\taspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\r\n\t\t// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\r\n\t\trfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\r\n\t\tobsOffsets = {\r\n\t\t\tUT: 0,\r\n\t\t\tGMT: 0,\r\n\t\t\tEDT: -4 * 60,\r\n\t\t\tEST: -5 * 60,\r\n\t\t\tCDT: -5 * 60,\r\n\t\t\tCST: -6 * 60,\r\n\t\t\tMDT: -6 * 60,\r\n\t\t\tMST: -7 * 60,\r\n\t\t\tPDT: -7 * 60,\r\n\t\t\tPST: -8 * 60,\r\n\t\t};\r\n\r\n\t// date from iso format\r\n\tfunction configFromISO(config) {\r\n\t\tvar i,\r\n\t\t\tl,\r\n\t\t\tstring = config._i,\r\n\t\t\tmatch = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\r\n\t\t\tallowTime,\r\n\t\t\tdateFormat,\r\n\t\t\ttimeFormat,\r\n\t\t\ttzFormat;\r\n\r\n\t\tif (match) {\r\n\t\t\tgetParsingFlags(config).iso = true;\r\n\r\n\t\t\tfor (i = 0, l = isoDates.length; i < l; i++) {\r\n\t\t\t\tif (isoDates[i][1].exec(match[1])) {\r\n\t\t\t\t\tdateFormat = isoDates[i][0];\r\n\t\t\t\t\tallowTime = isoDates[i][2] !== false;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (dateFormat == null) {\r\n\t\t\t\tconfig._isValid = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (match[3]) {\r\n\t\t\t\tfor (i = 0, l = isoTimes.length; i < l; i++) {\r\n\t\t\t\t\tif (isoTimes[i][1].exec(match[3])) {\r\n\t\t\t\t\t\t// match[2] should be 'T' or space\r\n\t\t\t\t\t\ttimeFormat = (match[2] || ' ') + isoTimes[i][0];\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (timeFormat == null) {\r\n\t\t\t\t\tconfig._isValid = false;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!allowTime && timeFormat != null) {\r\n\t\t\t\tconfig._isValid = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (match[4]) {\r\n\t\t\t\tif (tzRegex.exec(match[4])) {\r\n\t\t\t\t\ttzFormat = 'Z';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconfig._isValid = false;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tconfig._f = dateFormat + (timeFormat || '') + (tzFormat || '');\r\n\t\t\tconfigFromStringAndFormat(config);\r\n\t\t} else {\r\n\t\t\tconfig._isValid = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction extractFromRFC2822Strings(\r\n\t\tyearStr,\r\n\t\tmonthStr,\r\n\t\tdayStr,\r\n\t\thourStr,\r\n\t\tminuteStr,\r\n\t\tsecondStr\r\n\t) {\r\n\t\tvar result = [\r\n\t\t\tuntruncateYear(yearStr),\r\n\t\t\tdefaultLocaleMonthsShort.indexOf(monthStr),\r\n\t\t\tparseInt(dayStr, 10),\r\n\t\t\tparseInt(hourStr, 10),\r\n\t\t\tparseInt(minuteStr, 10),\r\n\t\t];\r\n\r\n\t\tif (secondStr) {\r\n\t\t\tresult.push(parseInt(secondStr, 10));\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction untruncateYear(yearStr) {\r\n\t\tvar year = parseInt(yearStr, 10);\r\n\t\tif (year <= 49) {\r\n\t\t\treturn 2000 + year;\r\n\t\t} else if (year <= 999) {\r\n\t\t\treturn 1900 + year;\r\n\t\t}\r\n\t\treturn year;\r\n\t}\r\n\r\n\tfunction preprocessRFC2822(s) {\r\n\t\t// Remove comments and folding whitespace and replace multiple-spaces with a single space\r\n\t\treturn s\r\n\t\t\t.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\r\n\t\t\t.replace(/(\\s\\s+)/g, ' ')\r\n\t\t\t.replace(/^\\s\\s*/, '')\r\n\t\t\t.replace(/\\s\\s*$/, '');\r\n\t}\r\n\r\n\tfunction checkWeekday(weekdayStr, parsedInput, config) {\r\n\t\tif (weekdayStr) {\r\n\t\t\t// TODO: Replace the vanilla JS Date object with an independent day-of-week check.\r\n\t\t\tvar weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\r\n\t\t\t\tweekdayActual = new Date(\r\n\t\t\t\t\tparsedInput[0],\r\n\t\t\t\t\tparsedInput[1],\r\n\t\t\t\t\tparsedInput[2]\r\n\t\t\t\t).getDay();\r\n\t\t\tif (weekdayProvided !== weekdayActual) {\r\n\t\t\t\tgetParsingFlags(config).weekdayMismatch = true;\r\n\t\t\t\tconfig._isValid = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tfunction calculateOffset(obsOffset, militaryOffset, numOffset) {\r\n\t\tif (obsOffset) {\r\n\t\t\treturn obsOffsets[obsOffset];\r\n\t\t} else if (militaryOffset) {\r\n\t\t\t// the only allowed military tz is Z\r\n\t\t\treturn 0;\r\n\t\t} else {\r\n\t\t\tvar hm = parseInt(numOffset, 10),\r\n\t\t\t\tm = hm % 100,\r\n\t\t\t\th = (hm - m) / 100;\r\n\t\t\treturn h * 60 + m;\r\n\t\t}\r\n\t}\r\n\r\n\t// date and time from ref 2822 format\r\n\tfunction configFromRFC2822(config) {\r\n\t\tvar match = rfc2822.exec(preprocessRFC2822(config._i)),\r\n\t\t\tparsedArray;\r\n\t\tif (match) {\r\n\t\t\tparsedArray = extractFromRFC2822Strings(\r\n\t\t\t\tmatch[4],\r\n\t\t\t\tmatch[3],\r\n\t\t\t\tmatch[2],\r\n\t\t\t\tmatch[5],\r\n\t\t\t\tmatch[6],\r\n\t\t\t\tmatch[7]\r\n\t\t\t);\r\n\t\t\tif (!checkWeekday(match[1], parsedArray, config)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconfig._a = parsedArray;\r\n\t\t\tconfig._tzm = calculateOffset(match[8], match[9], match[10]);\r\n\r\n\t\t\tconfig._d = createUTCDate.apply(null, config._a);\r\n\t\t\tconfig._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\r\n\r\n\t\t\tgetParsingFlags(config).rfc2822 = true;\r\n\t\t} else {\r\n\t\t\tconfig._isValid = false;\r\n\t\t}\r\n\t}\r\n\r\n\t// date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\r\n\tfunction configFromString(config) {\r\n\t\tvar matched = aspNetJsonRegex.exec(config._i);\r\n\t\tif (matched !== null) {\r\n\t\t\tconfig._d = new Date(+matched[1]);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconfigFromISO(config);\r\n\t\tif (config._isValid === false) {\r\n\t\t\tdelete config._isValid;\r\n\t\t} else {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconfigFromRFC2822(config);\r\n\t\tif (config._isValid === false) {\r\n\t\t\tdelete config._isValid;\r\n\t\t} else {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (config._strict) {\r\n\t\t\tconfig._isValid = false;\r\n\t\t} else {\r\n\t\t\t// Final attempt, use Input Fallback\r\n\t\t\thooks.createFromInputFallback(config);\r\n\t\t}\r\n\t}\r\n\r\n\thooks.createFromInputFallback = deprecate(\r\n\t\t'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\r\n\t\t'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\r\n\t\t'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\r\n\t\tfunction (config) {\r\n\t\t\tconfig._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\r\n\t\t}\r\n\t);\r\n\r\n\t// Pick the first defined of two or three arguments.\r\n\tfunction defaults(a, b, c) {\r\n\t\tif (a != null) {\r\n\t\t\treturn a;\r\n\t\t}\r\n\t\tif (b != null) {\r\n\t\t\treturn b;\r\n\t\t}\r\n\t\treturn c;\r\n\t}\r\n\r\n\tfunction currentDateArray(config) {\r\n\t\t// hooks is actually the exported moment object\r\n\t\tvar nowValue = new Date(hooks.now());\r\n\t\tif (config._useUTC) {\r\n\t\t\treturn [\r\n\t\t\t\tnowValue.getUTCFullYear(),\r\n\t\t\t\tnowValue.getUTCMonth(),\r\n\t\t\t\tnowValue.getUTCDate(),\r\n\t\t\t];\r\n\t\t}\r\n\t\treturn [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\r\n\t}\r\n\r\n\t// convert an array to a date.\r\n\t// the array should mirror the parameters below\r\n\t// note: all values past the year are optional and will default to the lowest possible value.\r\n\t// [year, month, day , hour, minute, second, millisecond]\r\n\tfunction configFromArray(config) {\r\n\t\tvar i,\r\n\t\t\tdate,\r\n\t\t\tinput = [],\r\n\t\t\tcurrentDate,\r\n\t\t\texpectedWeekday,\r\n\t\t\tyearToUse;\r\n\r\n\t\tif (config._d) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcurrentDate = currentDateArray(config);\r\n\r\n\t\t//compute day of the year from weeks and weekdays\r\n\t\tif (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\r\n\t\t\tdayOfYearFromWeekInfo(config);\r\n\t\t}\r\n\r\n\t\t//if the day of the year is set, figure out what it is\r\n\t\tif (config._dayOfYear != null) {\r\n\t\t\tyearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\r\n\r\n\t\t\tif (\r\n\t\t\t\tconfig._dayOfYear > daysInYear(yearToUse) ||\r\n\t\t\t\tconfig._dayOfYear === 0\r\n\t\t\t) {\r\n\t\t\t\tgetParsingFlags(config)._overflowDayOfYear = true;\r\n\t\t\t}\r\n\r\n\t\t\tdate = createUTCDate(yearToUse, 0, config._dayOfYear);\r\n\t\t\tconfig._a[MONTH] = date.getUTCMonth();\r\n\t\t\tconfig._a[DATE] = date.getUTCDate();\r\n\t\t}\r\n\r\n\t\t// Default to current date.\r\n\t\t// * if no year, month, day of month are given, default to today\r\n\t\t// * if day of month is given, default month and year\r\n\t\t// * if month is given, default only year\r\n\t\t// * if year is given, don't default anything\r\n\t\tfor (i = 0; i < 3 && config._a[i] == null; ++i) {\r\n\t\t\tconfig._a[i] = input[i] = currentDate[i];\r\n\t\t}\r\n\r\n\t\t// Zero out whatever was not defaulted, including time\r\n\t\tfor (; i < 7; i++) {\r\n\t\t\tconfig._a[i] = input[i] =\r\n\t\t\t\tconfig._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\r\n\t\t}\r\n\r\n\t\t// Check for 24:00:00.000\r\n\t\tif (\r\n\t\t\tconfig._a[HOUR] === 24 &&\r\n\t\t\tconfig._a[MINUTE] === 0 &&\r\n\t\t\tconfig._a[SECOND] === 0 &&\r\n\t\t\tconfig._a[MILLISECOND] === 0\r\n\t\t) {\r\n\t\t\tconfig._nextDay = true;\r\n\t\t\tconfig._a[HOUR] = 0;\r\n\t\t}\r\n\r\n\t\tconfig._d = (config._useUTC ? createUTCDate : createDate).apply(\r\n\t\t\tnull,\r\n\t\t\tinput\r\n\t\t);\r\n\t\texpectedWeekday = config._useUTC\r\n\t\t\t? config._d.getUTCDay()\r\n\t\t\t: config._d.getDay();\r\n\r\n\t\t// Apply timezone offset from input. The actual utcOffset can be changed\r\n\t\t// with parseZone.\r\n\t\tif (config._tzm != null) {\r\n\t\t\tconfig._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\r\n\t\t}\r\n\r\n\t\tif (config._nextDay) {\r\n\t\t\tconfig._a[HOUR] = 24;\r\n\t\t}\r\n\r\n\t\t// check for mismatching day of week\r\n\t\tif (\r\n\t\t\tconfig._w &&\r\n\t\t\ttypeof config._w.d !== 'undefined' &&\r\n\t\t\tconfig._w.d !== expectedWeekday\r\n\t\t) {\r\n\t\t\tgetParsingFlags(config).weekdayMismatch = true;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction dayOfYearFromWeekInfo(config) {\r\n\t\tvar w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\r\n\r\n\t\tw = config._w;\r\n\t\tif (w.GG != null || w.W != null || w.E != null) {\r\n\t\t\tdow = 1;\r\n\t\t\tdoy = 4;\r\n\r\n\t\t\t// TODO: We need to take the current isoWeekYear, but that depends on\r\n\t\t\t// how we interpret now (local, utc, fixed offset). So create\r\n\t\t\t// a now version of current config (take local/utc/offset flags, and\r\n\t\t\t// create now).\r\n\t\t\tweekYear = defaults(\r\n\t\t\t\tw.GG,\r\n\t\t\t\tconfig._a[YEAR],\r\n\t\t\t\tweekOfYear(createLocal(), 1, 4).year\r\n\t\t\t);\r\n\t\t\tweek = defaults(w.W, 1);\r\n\t\t\tweekday = defaults(w.E, 1);\r\n\t\t\tif (weekday < 1 || weekday > 7) {\r\n\t\t\t\tweekdayOverflow = true;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tdow = config._locale._week.dow;\r\n\t\t\tdoy = config._locale._week.doy;\r\n\r\n\t\t\tcurWeek = weekOfYear(createLocal(), dow, doy);\r\n\r\n\t\t\tweekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\r\n\r\n\t\t\t// Default to current week.\r\n\t\t\tweek = defaults(w.w, curWeek.week);\r\n\r\n\t\t\tif (w.d != null) {\r\n\t\t\t\t// weekday -- low day numbers are considered next week\r\n\t\t\t\tweekday = w.d;\r\n\t\t\t\tif (weekday < 0 || weekday > 6) {\r\n\t\t\t\t\tweekdayOverflow = true;\r\n\t\t\t\t}\r\n\t\t\t} else if (w.e != null) {\r\n\t\t\t\t// local weekday -- counting starts from beginning of week\r\n\t\t\t\tweekday = w.e + dow;\r\n\t\t\t\tif (w.e < 0 || w.e > 6) {\r\n\t\t\t\t\tweekdayOverflow = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// default to beginning of week\r\n\t\t\t\tweekday = dow;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\r\n\t\t\tgetParsingFlags(config)._overflowWeeks = true;\r\n\t\t} else if (weekdayOverflow != null) {\r\n\t\t\tgetParsingFlags(config)._overflowWeekday = true;\r\n\t\t} else {\r\n\t\t\ttemp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\r\n\t\t\tconfig._a[YEAR] = temp.year;\r\n\t\t\tconfig._dayOfYear = temp.dayOfYear;\r\n\t\t}\r\n\t}\r\n\r\n\t// constant that refers to the ISO standard\r\n\thooks.ISO_8601 = function () { };\r\n\r\n\t// constant that refers to the RFC 2822 form\r\n\thooks.RFC_2822 = function () { };\r\n\r\n\t// date from string and format string\r\n\tfunction configFromStringAndFormat(config) {\r\n\t\t// TODO: Move this to another part of the creation flow to prevent circular deps\r\n\t\tif (config._f === hooks.ISO_8601) {\r\n\t\t\tconfigFromISO(config);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (config._f === hooks.RFC_2822) {\r\n\t\t\tconfigFromRFC2822(config);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconfig._a = [];\r\n\t\tgetParsingFlags(config).empty = true;\r\n\r\n\t\t// This array is used to make a Date, either with `new Date` or `Date.UTC`\r\n\t\tvar string = '' + config._i,\r\n\t\t\ti,\r\n\t\t\tparsedInput,\r\n\t\t\ttokens,\r\n\t\t\ttoken,\r\n\t\t\tskipped,\r\n\t\t\tstringLength = string.length,\r\n\t\t\ttotalParsedInputLength = 0,\r\n\t\t\tera;\r\n\r\n\t\ttokens =\r\n\t\t\texpandFormat(config._f, config._locale).match(formattingTokens) || [];\r\n\r\n\t\tfor (i = 0; i < tokens.length; i++) {\r\n\t\t\ttoken = tokens[i];\r\n\t\t\tparsedInput = (string.match(getParseRegexForToken(token, config)) ||\r\n\t\t\t\t[])[0];\r\n\t\t\tif (parsedInput) {\r\n\t\t\t\tskipped = string.substr(0, string.indexOf(parsedInput));\r\n\t\t\t\tif (skipped.length > 0) {\r\n\t\t\t\t\tgetParsingFlags(config).unusedInput.push(skipped);\r\n\t\t\t\t}\r\n\t\t\t\tstring = string.slice(\r\n\t\t\t\t\tstring.indexOf(parsedInput) + parsedInput.length\r\n\t\t\t\t);\r\n\t\t\t\ttotalParsedInputLength += parsedInput.length;\r\n\t\t\t}\r\n\t\t\t// don't parse if it's not a known token\r\n\t\t\tif (formatTokenFunctions[token]) {\r\n\t\t\t\tif (parsedInput) {\r\n\t\t\t\t\tgetParsingFlags(config).empty = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tgetParsingFlags(config).unusedTokens.push(token);\r\n\t\t\t\t}\r\n\t\t\t\taddTimeToArrayFromToken(token, parsedInput, config);\r\n\t\t\t} else if (config._strict && !parsedInput) {\r\n\t\t\t\tgetParsingFlags(config).unusedTokens.push(token);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// add remaining unparsed input length to the string\r\n\t\tgetParsingFlags(config).charsLeftOver =\r\n\t\t\tstringLength - totalParsedInputLength;\r\n\t\tif (string.length > 0) {\r\n\t\t\tgetParsingFlags(config).unusedInput.push(string);\r\n\t\t}\r\n\r\n\t\t// clear _12h flag if hour is <= 12\r\n\t\tif (\r\n\t\t\tconfig._a[HOUR] <= 12 &&\r\n\t\t\tgetParsingFlags(config).bigHour === true &&\r\n\t\t\tconfig._a[HOUR] > 0\r\n\t\t) {\r\n\t\t\tgetParsingFlags(config).bigHour = undefined;\r\n\t\t}\r\n\r\n\t\tgetParsingFlags(config).parsedDateParts = config._a.slice(0);\r\n\t\tgetParsingFlags(config).meridiem = config._meridiem;\r\n\t\t// handle meridiem\r\n\t\tconfig._a[HOUR] = meridiemFixWrap(\r\n\t\t\tconfig._locale,\r\n\t\t\tconfig._a[HOUR],\r\n\t\t\tconfig._meridiem\r\n\t\t);\r\n\r\n\t\t// handle era\r\n\t\tera = getParsingFlags(config).era;\r\n\t\tif (era !== null) {\r\n\t\t\tconfig._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\r\n\t\t}\r\n\r\n\t\tconfigFromArray(config);\r\n\t\tcheckOverflow(config);\r\n\t}\r\n\r\n\tfunction meridiemFixWrap(locale, hour, meridiem) {\r\n\t\tvar isPm;\r\n\r\n\t\tif (meridiem == null) {\r\n\t\t\t// nothing to do\r\n\t\t\treturn hour;\r\n\t\t}\r\n\t\tif (locale.meridiemHour != null) {\r\n\t\t\treturn locale.meridiemHour(hour, meridiem);\r\n\t\t} else if (locale.isPM != null) {\r\n\t\t\t// Fallback\r\n\t\t\tisPm = locale.isPM(meridiem);\r\n\t\t\tif (isPm && hour < 12) {\r\n\t\t\t\thour += 12;\r\n\t\t\t}\r\n\t\t\tif (!isPm && hour === 12) {\r\n\t\t\t\thour = 0;\r\n\t\t\t}\r\n\t\t\treturn hour;\r\n\t\t} else {\r\n\t\t\t// this is not supposed to happen\r\n\t\t\treturn hour;\r\n\t\t}\r\n\t}\r\n\r\n\t// date from string and array of format strings\r\n\tfunction configFromStringAndArray(config) {\r\n\t\tvar tempConfig,\r\n\t\t\tbestMoment,\r\n\t\t\tscoreToBeat,\r\n\t\t\ti,\r\n\t\t\tcurrentScore,\r\n\t\t\tvalidFormatFound,\r\n\t\t\tbestFormatIsValid = false;\r\n\r\n\t\tif (config._f.length === 0) {\r\n\t\t\tgetParsingFlags(config).invalidFormat = true;\r\n\t\t\tconfig._d = new Date(NaN);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < config._f.length; i++) {\r\n\t\t\tcurrentScore = 0;\r\n\t\t\tvalidFormatFound = false;\r\n\t\t\ttempConfig = copyConfig({}, config);\r\n\t\t\tif (config._useUTC != null) {\r\n\t\t\t\ttempConfig._useUTC = config._useUTC;\r\n\t\t\t}\r\n\t\t\ttempConfig._f = config._f[i];\r\n\t\t\tconfigFromStringAndFormat(tempConfig);\r\n\r\n\t\t\tif (isValid(tempConfig)) {\r\n\t\t\t\tvalidFormatFound = true;\r\n\t\t\t}\r\n\r\n\t\t\t// if there is any input that was not parsed add a penalty for that format\r\n\t\t\tcurrentScore += getParsingFlags(tempConfig).charsLeftOver;\r\n\r\n\t\t\t//or tokens\r\n\t\t\tcurrentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\r\n\r\n\t\t\tgetParsingFlags(tempConfig).score = currentScore;\r\n\r\n\t\t\tif (!bestFormatIsValid) {\r\n\t\t\t\tif (\r\n\t\t\t\t\tscoreToBeat == null ||\r\n\t\t\t\t\tcurrentScore < scoreToBeat ||\r\n\t\t\t\t\tvalidFormatFound\r\n\t\t\t\t) {\r\n\t\t\t\t\tscoreToBeat = currentScore;\r\n\t\t\t\t\tbestMoment = tempConfig;\r\n\t\t\t\t\tif (validFormatFound) {\r\n\t\t\t\t\t\tbestFormatIsValid = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (currentScore < scoreToBeat) {\r\n\t\t\t\t\tscoreToBeat = currentScore;\r\n\t\t\t\t\tbestMoment = tempConfig;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\textend(config, bestMoment || tempConfig);\r\n\t}\r\n\r\n\tfunction configFromObject(config) {\r\n\t\tif (config._d) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar i = normalizeObjectUnits(config._i),\r\n\t\t\tdayOrDate = i.day === undefined ? i.date : i.day;\r\n\t\tconfig._a = map(\r\n\t\t\t[i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\r\n\t\t\tfunction (obj) {\r\n\t\t\t\treturn obj && parseInt(obj, 10);\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tconfigFromArray(config);\r\n\t}\r\n\r\n\tfunction createFromConfig(config) {\r\n\t\tvar res = new Moment(checkOverflow(prepareConfig(config)));\r\n\t\tif (res._nextDay) {\r\n\t\t\t// Adding is smart enough around DST\r\n\t\t\tres.add(1, 'd');\r\n\t\t\tres._nextDay = undefined;\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\tfunction prepareConfig(config) {\r\n\t\tvar input = config._i,\r\n\t\t\tformat = config._f;\r\n\r\n\t\tconfig._locale = config._locale || getLocale(config._l);\r\n\r\n\t\tif (input === null || (format === undefined && input === '')) {\r\n\t\t\treturn createInvalid({ nullInput: true });\r\n\t\t}\r\n\r\n\t\tif (typeof input === 'string') {\r\n\t\t\tconfig._i = input = config._locale.preparse(input);\r\n\t\t}\r\n\r\n\t\tif (isMoment(input)) {\r\n\t\t\treturn new Moment(checkOverflow(input));\r\n\t\t} else if (isDate(input)) {\r\n\t\t\tconfig._d = input;\r\n\t\t} else if (isArray(format)) {\r\n\t\t\tconfigFromStringAndArray(config);\r\n\t\t} else if (format) {\r\n\t\t\tconfigFromStringAndFormat(config);\r\n\t\t} else {\r\n\t\t\tconfigFromInput(config);\r\n\t\t}\r\n\r\n\t\tif (!isValid(config)) {\r\n\t\t\tconfig._d = null;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\tfunction configFromInput(config) {\r\n\t\tvar input = config._i;\r\n\t\tif (isUndefined(input)) {\r\n\t\t\tconfig._d = new Date(hooks.now());\r\n\t\t} else if (isDate(input)) {\r\n\t\t\tconfig._d = new Date(input.valueOf());\r\n\t\t} else if (typeof input === 'string') {\r\n\t\t\tconfigFromString(config);\r\n\t\t} else if (isArray(input)) {\r\n\t\t\tconfig._a = map(input.slice(0), function (obj) {\r\n\t\t\t\treturn parseInt(obj, 10);\r\n\t\t\t});\r\n\t\t\tconfigFromArray(config);\r\n\t\t} else if (isObject(input)) {\r\n\t\t\tconfigFromObject(config);\r\n\t\t} else if (isNumber(input)) {\r\n\t\t\t// from milliseconds\r\n\t\t\tconfig._d = new Date(input);\r\n\t\t} else {\r\n\t\t\thooks.createFromInputFallback(config);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction createLocalOrUTC(input, format, locale, strict, isUTC) {\r\n\t\tvar c = {};\r\n\r\n\t\tif (format === true || format === false) {\r\n\t\t\tstrict = format;\r\n\t\t\tformat = undefined;\r\n\t\t}\r\n\r\n\t\tif (locale === true || locale === false) {\r\n\t\t\tstrict = locale;\r\n\t\t\tlocale = undefined;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\t(isObject(input) && isObjectEmpty(input)) ||\r\n\t\t\t(isArray(input) && input.length === 0)\r\n\t\t) {\r\n\t\t\tinput = undefined;\r\n\t\t}\r\n\t\t// object construction must be done this way.\r\n\t\t// https://github.com/moment/moment/issues/1423\r\n\t\tc._isAMomentObject = true;\r\n\t\tc._useUTC = c._isUTC = isUTC;\r\n\t\tc._l = locale;\r\n\t\tc._i = input;\r\n\t\tc._f = format;\r\n\t\tc._strict = strict;\r\n\r\n\t\treturn createFromConfig(c);\r\n\t}\r\n\r\n\tfunction createLocal(input, format, locale, strict) {\r\n\t\treturn createLocalOrUTC(input, format, locale, strict, false);\r\n\t}\r\n\r\n\tvar prototypeMin = deprecate(\r\n\t\t'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\r\n\t\tfunction () {\r\n\t\t\tvar other = createLocal.apply(null, arguments);\r\n\t\t\tif (this.isValid() && other.isValid()) {\r\n\t\t\t\treturn other < this ? this : other;\r\n\t\t\t} else {\r\n\t\t\t\treturn createInvalid();\r\n\t\t\t}\r\n\t\t}\r\n\t),\r\n\t\tprototypeMax = deprecate(\r\n\t\t\t'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\r\n\t\t\tfunction () {\r\n\t\t\t\tvar other = createLocal.apply(null, arguments);\r\n\t\t\t\tif (this.isValid() && other.isValid()) {\r\n\t\t\t\t\treturn other > this ? this : other;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn createInvalid();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t// Pick a moment m from moments so that m[fn](other) is true for all\r\n\t// other. This relies on the function fn to be transitive.\r\n\t//\r\n\t// moments should either be an array of moment objects or an array, whose\r\n\t// first element is an array of moment objects.\r\n\tfunction pickBy(fn, moments) {\r\n\t\tvar res, i;\r\n\t\tif (moments.length === 1 && isArray(moments[0])) {\r\n\t\t\tmoments = moments[0];\r\n\t\t}\r\n\t\tif (!moments.length) {\r\n\t\t\treturn createLocal();\r\n\t\t}\r\n\t\tres = moments[0];\r\n\t\tfor (i = 1; i < moments.length; ++i) {\r\n\t\t\tif (!moments[i].isValid() || moments[i][fn](res)) {\r\n\t\t\t\tres = moments[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\t// TODO: Use [].sort instead?\r\n\tfunction min() {\r\n\t\tvar args = [].slice.call(arguments, 0);\r\n\r\n\t\treturn pickBy('isBefore', args);\r\n\t}\r\n\r\n\tfunction max() {\r\n\t\tvar args = [].slice.call(arguments, 0);\r\n\r\n\t\treturn pickBy('isAfter', args);\r\n\t}\r\n\r\n\tvar now = function () {\r\n\t\treturn Date.now ? Date.now() : +new Date();\r\n\t};\r\n\r\n\tvar ordering = [\r\n\t\t'year',\r\n\t\t'quarter',\r\n\t\t'month',\r\n\t\t'week',\r\n\t\t'day',\r\n\t\t'hour',\r\n\t\t'minute',\r\n\t\t'second',\r\n\t\t'millisecond',\r\n\t];\r\n\r\n\tfunction isDurationValid(m) {\r\n\t\tvar key,\r\n\t\t\tunitHasDecimal = false,\r\n\t\t\ti;\r\n\t\tfor (key in m) {\r\n\t\t\tif (\r\n\t\t\t\thasOwnProp(m, key) &&\r\n\t\t\t\t!(\r\n\t\t\t\t\tindexOf.call(ordering, key) !== -1 &&\r\n\t\t\t\t\t(m[key] == null || !isNaN(m[key]))\r\n\t\t\t\t)\r\n\t\t\t) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < ordering.length; ++i) {\r\n\t\t\tif (m[ordering[i]]) {\r\n\t\t\t\tif (unitHasDecimal) {\r\n\t\t\t\t\treturn false; // only allow non-integers for smallest unit\r\n\t\t\t\t}\r\n\t\t\t\tif (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\r\n\t\t\t\t\tunitHasDecimal = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tfunction isValid$1() {\r\n\t\treturn this._isValid;\r\n\t}\r\n\r\n\tfunction createInvalid$1() {\r\n\t\treturn createDuration(NaN);\r\n\t}\r\n\r\n\tfunction Duration(duration) {\r\n\t\tvar normalizedInput = normalizeObjectUnits(duration),\r\n\t\t\tyears = normalizedInput.year || 0,\r\n\t\t\tquarters = normalizedInput.quarter || 0,\r\n\t\t\tmonths = normalizedInput.month || 0,\r\n\t\t\tweeks = normalizedInput.week || normalizedInput.isoWeek || 0,\r\n\t\t\tdays = normalizedInput.day || 0,\r\n\t\t\thours = normalizedInput.hour || 0,\r\n\t\t\tminutes = normalizedInput.minute || 0,\r\n\t\t\tseconds = normalizedInput.second || 0,\r\n\t\t\tmilliseconds = normalizedInput.millisecond || 0;\r\n\r\n\t\tthis._isValid = isDurationValid(normalizedInput);\r\n\r\n\t\t// representation for dateAddRemove\r\n\t\tthis._milliseconds =\r\n\t\t\t+milliseconds +\r\n\t\t\tseconds * 1e3 + // 1000\r\n\t\t\tminutes * 6e4 + // 1000 * 60\r\n\t\t\thours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\r\n\t\t// Because of dateAddRemove treats 24 hours as different from a\r\n\t\t// day when working around DST, we need to store them separately\r\n\t\tthis._days = +days + weeks * 7;\r\n\t\t// It is impossible to translate months into days without knowing\r\n\t\t// which months you are are talking about, so we have to store\r\n\t\t// it separately.\r\n\t\tthis._months = +months + quarters * 3 + years * 12;\r\n\r\n\t\tthis._data = {};\r\n\r\n\t\tthis._locale = getLocale();\r\n\r\n\t\tthis._bubble();\r\n\t}\r\n\r\n\tfunction isDuration(obj) {\r\n\t\treturn obj instanceof Duration;\r\n\t}\r\n\r\n\tfunction absRound(number) {\r\n\t\tif (number < 0) {\r\n\t\t\treturn Math.round(-1 * number) * -1;\r\n\t\t} else {\r\n\t\t\treturn Math.round(number);\r\n\t\t}\r\n\t}\r\n\r\n\t// compare two arrays, return the number of differences\r\n\tfunction compareArrays(array1, array2, dontConvert) {\r\n\t\tvar len = Math.min(array1.length, array2.length),\r\n\t\t\tlengthDiff = Math.abs(array1.length - array2.length),\r\n\t\t\tdiffs = 0,\r\n\t\t\ti;\r\n\t\tfor (i = 0; i < len; i++) {\r\n\t\t\tif (\r\n\t\t\t\t(dontConvert && array1[i] !== array2[i]) ||\r\n\t\t\t\t(!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\r\n\t\t\t) {\r\n\t\t\t\tdiffs++;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn diffs + lengthDiff;\r\n\t}\r\n\r\n\t// FORMATTING\r\n\r\n\tfunction offset(token, separator) {\r\n\t\taddFormatToken(token, 0, 0, function () {\r\n\t\t\tvar offset = this.utcOffset(),\r\n\t\t\t\tsign = '+';\r\n\t\t\tif (offset < 0) {\r\n\t\t\t\toffset = -offset;\r\n\t\t\t\tsign = '-';\r\n\t\t\t}\r\n\t\t\treturn (\r\n\t\t\t\tsign +\r\n\t\t\t\tzeroFill(~~(offset / 60), 2) +\r\n\t\t\t\tseparator +\r\n\t\t\t\tzeroFill(~~offset % 60, 2)\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\toffset('Z', ':');\r\n\toffset('ZZ', '');\r\n\r\n\t// PARSING\r\n\r\n\taddRegexToken('Z', matchShortOffset);\r\n\taddRegexToken('ZZ', matchShortOffset);\r\n\taddParseToken(['Z', 'ZZ'], function (input, array, config) {\r\n\t\tconfig._useUTC = true;\r\n\t\tconfig._tzm = offsetFromString(matchShortOffset, input);\r\n\t});\r\n\r\n\t// HELPERS\r\n\r\n\t// timezone chunker\r\n\t// '+10:00' > ['10', '00']\r\n\t// '-1530' > ['-15', '30']\r\n\tvar chunkOffset = /([\\+\\-]|\\d\\d)/gi;\r\n\r\n\tfunction offsetFromString(matcher, string) {\r\n\t\tvar matches = (string || '').match(matcher),\r\n\t\t\tchunk,\r\n\t\t\tparts,\r\n\t\t\tminutes;\r\n\r\n\t\tif (matches === null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tchunk = matches[matches.length - 1] || [];\r\n\t\tparts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\r\n\t\tminutes = +(parts[1] * 60) + toInt(parts[2]);\r\n\r\n\t\treturn minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\r\n\t}\r\n\r\n\t// Return a moment from input, that is local/utc/zone equivalent to model.\r\n\tfunction cloneWithOffset(input, model) {\r\n\t\tvar res, diff;\r\n\t\tif (model._isUTC) {\r\n\t\t\tres = model.clone();\r\n\t\t\tdiff =\r\n\t\t\t\t(isMoment(input) || isDate(input)\r\n\t\t\t\t\t? input.valueOf()\r\n\t\t\t\t\t: createLocal(input).valueOf()) - res.valueOf();\r\n\t\t\t// Use low-level api, because this fn is low-level api.\r\n\t\t\tres._d.setTime(res._d.valueOf() + diff);\r\n\t\t\thooks.updateOffset(res, false);\r\n\t\t\treturn res;\r\n\t\t} else {\r\n\t\t\treturn createLocal(input).local();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getDateOffset(m) {\r\n\t\t// On Firefox.24 Date#getTimezoneOffset returns a floating point.\r\n\t\t// https://github.com/moment/moment/pull/1871\r\n\t\treturn -Math.round(m._d.getTimezoneOffset());\r\n\t}\r\n\r\n\t// HOOKS\r\n\r\n\t// This function will be called whenever a moment is mutated.\r\n\t// It is intended to keep the offset in sync with the timezone.\r\n\thooks.updateOffset = function () { };\r\n\r\n\t// MOMENTS\r\n\r\n\t// keepLocalTime = true means only change the timezone, without\r\n\t// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\r\n\t// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\r\n\t// +0200, so we adjust the time as needed, to be valid.\r\n\t//\r\n\t// Keeping the time actually adds/subtracts (one hour)\r\n\t// from the actual represented time. That is why we call updateOffset\r\n\t// a second time. In case it wants us to change the offset again\r\n\t// _changeInProgress == true case, then we have to adjust, because\r\n\t// there is no such time in the given timezone.\r\n\tfunction getSetOffset(input, keepLocalTime, keepMinutes) {\r\n\t\tvar offset = this._offset || 0,\r\n\t\t\tlocalAdjust;\r\n\t\tif (!this.isValid()) {\r\n\t\t\treturn input != null ? this : NaN;\r\n\t\t}\r\n\t\tif (input != null) {\r\n\t\t\tif (typeof input === 'string') {\r\n\t\t\t\tinput = offsetFromString(matchShortOffset, input);\r\n\t\t\t\tif (input === null) {\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t}\r\n\t\t\t} else if (Math.abs(input) < 16 && !keepMinutes) {\r\n\t\t\t\tinput = input * 60;\r\n\t\t\t}\r\n\t\t\tif (!this._isUTC && keepLocalTime) {\r\n\t\t\t\tlocalAdjust = getDateOffset(this);\r\n\t\t\t}\r\n\t\t\tthis._offset = input;\r\n\t\t\tthis._isUTC = true;\r\n\t\t\tif (localAdjust != null) {\r\n\t\t\t\tthis.add(localAdjust, 'm');\r\n\t\t\t}\r\n\t\t\tif (offset !== input) {\r\n\t\t\t\tif (!keepLocalTime || this._changeInProgress) {\r\n\t\t\t\t\taddSubtract(\r\n\t\t\t\t\t\tthis,\r\n\t\t\t\t\t\tcreateDuration(input - offset, 'm'),\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tfalse\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (!this._changeInProgress) {\r\n\t\t\t\t\tthis._changeInProgress = true;\r\n\t\t\t\t\thooks.updateOffset(this, true);\r\n\t\t\t\t\tthis._changeInProgress = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t} else {\r\n\t\t\treturn this._isUTC ? offset : getDateOffset(this);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getSetZone(input, keepLocalTime) {\r\n\t\tif (input != null) {\r\n\t\t\tif (typeof input !== 'string') {\r\n\t\t\t\tinput = -input;\r\n\t\t\t}\r\n\r\n\t\t\tthis.utcOffset(input, keepLocalTime);\r\n\r\n\t\t\treturn this;\r\n\t\t} else {\r\n\t\t\treturn -this.utcOffset();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setOffsetToUTC(keepLocalTime) {\r\n\t\treturn this.utcOffset(0, keepLocalTime);\r\n\t}\r\n\r\n\tfunction setOffsetToLocal(keepLocalTime) {\r\n\t\tif (this._isUTC) {\r\n\t\t\tthis.utcOffset(0, keepLocalTime);\r\n\t\t\tthis._isUTC = false;\r\n\r\n\t\t\tif (keepLocalTime) {\r\n\t\t\t\tthis.subtract(getDateOffset(this), 'm');\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n\tfunction setOffsetToParsedOffset() {\r\n\t\tif (this._tzm != null) {\r\n\t\t\tthis.utcOffset(this._tzm, false, true);\r\n\t\t} else if (typeof this._i === 'string') {\r\n\t\t\tvar tZone = offsetFromString(matchOffset, this._i);\r\n\t\t\tif (tZone != null) {\r\n\t\t\t\tthis.utcOffset(tZone);\r\n\t\t\t} else {\r\n\t\t\t\tthis.utcOffset(0, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n\tfunction hasAlignedHourOffset(input) {\r\n\t\tif (!this.isValid()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tinput = input ? createLocal(input).utcOffset() : 0;\r\n\r\n\t\treturn (this.utcOffset() - input) % 60 === 0;\r\n\t}\r\n\r\n\tfunction isDaylightSavingTime() {\r\n\t\treturn (\r\n\t\t\tthis.utcOffset() > this.clone().month(0).utcOffset() ||\r\n\t\t\tthis.utcOffset() > this.clone().month(5).utcOffset()\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isDaylightSavingTimeShifted() {\r\n\t\tif (!isUndefined(this._isDSTShifted)) {\r\n\t\t\treturn this._isDSTShifted;\r\n\t\t}\r\n\r\n\t\tvar c = {},\r\n\t\t\tother;\r\n\r\n\t\tcopyConfig(c, this);\r\n\t\tc = prepareConfig(c);\r\n\r\n\t\tif (c._a) {\r\n\t\t\tother = c._isUTC ? createUTC(c._a) : createLocal(c._a);\r\n\t\t\tthis._isDSTShifted =\r\n\t\t\t\tthis.isValid() && compareArrays(c._a, other.toArray()) > 0;\r\n\t\t} else {\r\n\t\t\tthis._isDSTShifted = false;\r\n\t\t}\r\n\r\n\t\treturn this._isDSTShifted;\r\n\t}\r\n\r\n\tfunction isLocal() {\r\n\t\treturn this.isValid() ? !this._isUTC : false;\r\n\t}\r\n\r\n\tfunction isUtcOffset() {\r\n\t\treturn this.isValid() ? this._isUTC : false;\r\n\t}\r\n\r\n\tfunction isUtc() {\r\n\t\treturn this.isValid() ? this._isUTC && this._offset === 0 : false;\r\n\t}\r\n\r\n\t// ASP.NET json date format regex\r\n\tvar aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\r\n\t\t// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\r\n\t\t// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\r\n\t\t// and further modified to allow for strings containing both week and day\r\n\t\tisoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\r\n\r\n\tfunction createDuration(input, key) {\r\n\t\tvar duration = input,\r\n\t\t\t// matching against regexp is expensive, do it on demand\r\n\t\t\tmatch = null,\r\n\t\t\tsign,\r\n\t\t\tret,\r\n\t\t\tdiffRes;\r\n\r\n\t\tif (isDuration(input)) {\r\n\t\t\tduration = {\r\n\t\t\t\tms: input._milliseconds,\r\n\t\t\t\td: input._days,\r\n\t\t\t\tM: input._months,\r\n\t\t\t};\r\n\t\t} else if (isNumber(input) || !isNaN(+input)) {\r\n\t\t\tduration = {};\r\n\t\t\tif (key) {\r\n\t\t\t\tduration[key] = +input;\r\n\t\t\t} else {\r\n\t\t\t\tduration.milliseconds = +input;\r\n\t\t\t}\r\n\t\t} else if ((match = aspNetRegex.exec(input))) {\r\n\t\t\tsign = match[1] === '-' ? -1 : 1;\r\n\t\t\tduration = {\r\n\t\t\t\ty: 0,\r\n\t\t\t\td: toInt(match[DATE]) * sign,\r\n\t\t\t\th: toInt(match[HOUR]) * sign,\r\n\t\t\t\tm: toInt(match[MINUTE]) * sign,\r\n\t\t\t\ts: toInt(match[SECOND]) * sign,\r\n\t\t\t\tms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\r\n\t\t\t};\r\n\t\t} else if ((match = isoRegex.exec(input))) {\r\n\t\t\tsign = match[1] === '-' ? -1 : 1;\r\n\t\t\tduration = {\r\n\t\t\t\ty: parseIso(match[2], sign),\r\n\t\t\t\tM: parseIso(match[3], sign),\r\n\t\t\t\tw: parseIso(match[4], sign),\r\n\t\t\t\td: parseIso(match[5], sign),\r\n\t\t\t\th: parseIso(match[6], sign),\r\n\t\t\t\tm: parseIso(match[7], sign),\r\n\t\t\t\ts: parseIso(match[8], sign),\r\n\t\t\t};\r\n\t\t} else if (duration == null) {\r\n\t\t\t// checks for null or undefined\r\n\t\t\tduration = {};\r\n\t\t} else if (\r\n\t\t\ttypeof duration === 'object' &&\r\n\t\t\t('from' in duration || 'to' in duration)\r\n\t\t) {\r\n\t\t\tdiffRes = momentsDifference(\r\n\t\t\t\tcreateLocal(duration.from),\r\n\t\t\t\tcreateLocal(duration.to)\r\n\t\t\t);\r\n\r\n\t\t\tduration = {};\r\n\t\t\tduration.ms = diffRes.milliseconds;\r\n\t\t\tduration.M = diffRes.months;\r\n\t\t}\r\n\r\n\t\tret = new Duration(duration);\r\n\r\n\t\tif (isDuration(input) && hasOwnProp(input, '_locale')) {\r\n\t\t\tret._locale = input._locale;\r\n\t\t}\r\n\r\n\t\tif (isDuration(input) && hasOwnProp(input, '_isValid')) {\r\n\t\t\tret._isValid = input._isValid;\r\n\t\t}\r\n\r\n\t\treturn ret;\r\n\t}\r\n\r\n\tcreateDuration.fn = Duration.prototype;\r\n\tcreateDuration.invalid = createInvalid$1;\r\n\r\n\tfunction parseIso(inp, sign) {\r\n\t\t// We'd normally use ~~inp for this, but unfortunately it also\r\n\t\t// converts floats to ints.\r\n\t\t// inp may be undefined, so careful calling replace on it.\r\n\t\tvar res = inp && parseFloat(inp.replace(',', '.'));\r\n\t\t// apply sign while we're at it\r\n\t\treturn (isNaN(res) ? 0 : res) * sign;\r\n\t}\r\n\r\n\tfunction positiveMomentsDifference(base, other) {\r\n\t\tvar res = {};\r\n\r\n\t\tres.months =\r\n\t\t\tother.month() - base.month() + (other.year() - base.year()) * 12;\r\n\t\tif (base.clone().add(res.months, 'M').isAfter(other)) {\r\n\t\t\t--res.months;\r\n\t\t}\r\n\r\n\t\tres.milliseconds = +other - +base.clone().add(res.months, 'M');\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\tfunction momentsDifference(base, other) {\r\n\t\tvar res;\r\n\t\tif (!(base.isValid() && other.isValid())) {\r\n\t\t\treturn { milliseconds: 0, months: 0 };\r\n\t\t}\r\n\r\n\t\tother = cloneWithOffset(other, base);\r\n\t\tif (base.isBefore(other)) {\r\n\t\t\tres = positiveMomentsDifference(base, other);\r\n\t\t} else {\r\n\t\t\tres = positiveMomentsDifference(other, base);\r\n\t\t\tres.milliseconds = -res.milliseconds;\r\n\t\t\tres.months = -res.months;\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\t// TODO: remove 'name' arg after deprecation is removed\r\n\tfunction createAdder(direction, name) {\r\n\t\treturn function (val, period) {\r\n\t\t\tvar dur, tmp;\r\n\t\t\t//invert the arguments, but complain about it\r\n\t\t\tif (period !== null && !isNaN(+period)) {\r\n\t\t\t\tdeprecateSimple(\r\n\t\t\t\t\tname,\r\n\t\t\t\t\t'moment().' +\r\n\t\t\t\t\tname +\r\n\t\t\t\t\t'(period, number) is deprecated. Please use moment().' +\r\n\t\t\t\t\tname +\r\n\t\t\t\t\t'(number, period). ' +\r\n\t\t\t\t\t'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\r\n\t\t\t\t);\r\n\t\t\t\ttmp = val;\r\n\t\t\t\tval = period;\r\n\t\t\t\tperiod = tmp;\r\n\t\t\t}\r\n\r\n\t\t\tdur = createDuration(val, period);\r\n\t\t\taddSubtract(this, dur, direction);\r\n\t\t\treturn this;\r\n\t\t};\r\n\t}\r\n\r\n\tfunction addSubtract(mom, duration, isAdding, updateOffset) {\r\n\t\tvar milliseconds = duration._milliseconds,\r\n\t\t\tdays = absRound(duration._days),\r\n\t\t\tmonths = absRound(duration._months);\r\n\r\n\t\tif (!mom.isValid()) {\r\n\t\t\t// No op\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tupdateOffset = updateOffset == null ? true : updateOffset;\r\n\r\n\t\tif (months) {\r\n\t\t\tsetMonth(mom, get(mom, 'Month') + months * isAdding);\r\n\t\t}\r\n\t\tif (days) {\r\n\t\t\tset$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\r\n\t\t}\r\n\t\tif (milliseconds) {\r\n\t\t\tmom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\r\n\t\t}\r\n\t\tif (updateOffset) {\r\n\t\t\thooks.updateOffset(mom, days || months);\r\n\t\t}\r\n\t}\r\n\r\n\tvar add = createAdder(1, 'add'),\r\n\t\tsubtract = createAdder(-1, 'subtract');\r\n\r\n\tfunction isString(input) {\r\n\t\treturn typeof input === 'string' || input instanceof String;\r\n\t}\r\n\r\n\t// type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\r\n\tfunction isMomentInput(input) {\r\n\t\treturn (\r\n\t\t\tisMoment(input) ||\r\n\t\t\tisDate(input) ||\r\n\t\t\tisString(input) ||\r\n\t\t\tisNumber(input) ||\r\n\t\t\tisNumberOrStringArray(input) ||\r\n\t\t\tisMomentInputObject(input) ||\r\n\t\t\tinput === null ||\r\n\t\t\tinput === undefined\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isMomentInputObject(input) {\r\n\t\tvar objectTest = isObject(input) && !isObjectEmpty(input),\r\n\t\t\tpropertyTest = false,\r\n\t\t\tproperties = [\r\n\t\t\t\t'years',\r\n\t\t\t\t'year',\r\n\t\t\t\t'y',\r\n\t\t\t\t'months',\r\n\t\t\t\t'month',\r\n\t\t\t\t'M',\r\n\t\t\t\t'days',\r\n\t\t\t\t'day',\r\n\t\t\t\t'd',\r\n\t\t\t\t'dates',\r\n\t\t\t\t'date',\r\n\t\t\t\t'D',\r\n\t\t\t\t'hours',\r\n\t\t\t\t'hour',\r\n\t\t\t\t'h',\r\n\t\t\t\t'minutes',\r\n\t\t\t\t'minute',\r\n\t\t\t\t'm',\r\n\t\t\t\t'seconds',\r\n\t\t\t\t'second',\r\n\t\t\t\t's',\r\n\t\t\t\t'milliseconds',\r\n\t\t\t\t'millisecond',\r\n\t\t\t\t'ms',\r\n\t\t\t],\r\n\t\t\ti,\r\n\t\t\tproperty;\r\n\r\n\t\tfor (i = 0; i < properties.length; i += 1) {\r\n\t\t\tproperty = properties[i];\r\n\t\t\tpropertyTest = propertyTest || hasOwnProp(input, property);\r\n\t\t}\r\n\r\n\t\treturn objectTest && propertyTest;\r\n\t}\r\n\r\n\tfunction isNumberOrStringArray(input) {\r\n\t\tvar arrayTest = isArray(input),\r\n\t\t\tdataTypeTest = false;\r\n\t\tif (arrayTest) {\r\n\t\t\tdataTypeTest =\r\n\t\t\t\tinput.filter(function (item) {\r\n\t\t\t\t\treturn !isNumber(item) && isString(input);\r\n\t\t\t\t}).length === 0;\r\n\t\t}\r\n\t\treturn arrayTest && dataTypeTest;\r\n\t}\r\n\r\n\tfunction isCalendarSpec(input) {\r\n\t\tvar objectTest = isObject(input) && !isObjectEmpty(input),\r\n\t\t\tpropertyTest = false,\r\n\t\t\tproperties = [\r\n\t\t\t\t'sameDay',\r\n\t\t\t\t'nextDay',\r\n\t\t\t\t'lastDay',\r\n\t\t\t\t'nextWeek',\r\n\t\t\t\t'lastWeek',\r\n\t\t\t\t'sameElse',\r\n\t\t\t],\r\n\t\t\ti,\r\n\t\t\tproperty;\r\n\r\n\t\tfor (i = 0; i < properties.length; i += 1) {\r\n\t\t\tproperty = properties[i];\r\n\t\t\tpropertyTest = propertyTest || hasOwnProp(input, property);\r\n\t\t}\r\n\r\n\t\treturn objectTest && propertyTest;\r\n\t}\r\n\r\n\tfunction getCalendarFormat(myMoment, now) {\r\n\t\tvar diff = myMoment.diff(now, 'days', true);\r\n\t\treturn diff < -6\r\n\t\t\t? 'sameElse'\r\n\t\t\t: diff < -1\r\n\t\t\t\t? 'lastWeek'\r\n\t\t\t\t: diff < 0\r\n\t\t\t\t\t? 'lastDay'\r\n\t\t\t\t\t: diff < 1\r\n\t\t\t\t\t\t? 'sameDay'\r\n\t\t\t\t\t\t: diff < 2\r\n\t\t\t\t\t\t\t? 'nextDay'\r\n\t\t\t\t\t\t\t: diff < 7\r\n\t\t\t\t\t\t\t\t? 'nextWeek'\r\n\t\t\t\t\t\t\t\t: 'sameElse';\r\n\t}\r\n\r\n\tfunction calendar$1(time, formats) {\r\n\t\t// Support for single parameter, formats only overload to the calendar function\r\n\t\tif (arguments.length === 1) {\r\n\t\t\tif (!arguments[0]) {\r\n\t\t\t\ttime = undefined;\r\n\t\t\t\tformats = undefined;\r\n\t\t\t} else if (isMomentInput(arguments[0])) {\r\n\t\t\t\ttime = arguments[0];\r\n\t\t\t\tformats = undefined;\r\n\t\t\t} else if (isCalendarSpec(arguments[0])) {\r\n\t\t\t\tformats = arguments[0];\r\n\t\t\t\ttime = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t\t// We want to compare the start of today, vs this.\r\n\t\t// Getting start-of-today depends on whether we're local/utc/offset or not.\r\n\t\tvar now = time || createLocal(),\r\n\t\t\tsod = cloneWithOffset(now, this).startOf('day'),\r\n\t\t\tformat = hooks.calendarFormat(this, sod) || 'sameElse',\r\n\t\t\toutput =\r\n\t\t\t\tformats &&\r\n\t\t\t\t(isFunction(formats[format])\r\n\t\t\t\t\t? formats[format].call(this, now)\r\n\t\t\t\t\t: formats[format]);\r\n\r\n\t\treturn this.format(\r\n\t\t\toutput || this.localeData().calendar(format, this, createLocal(now))\r\n\t\t);\r\n\t}\r\n\r\n\tfunction clone() {\r\n\t\treturn new Moment(this);\r\n\t}\r\n\r\n\tfunction isAfter(input, units) {\r\n\t\tvar localInput = isMoment(input) ? input : createLocal(input);\r\n\t\tif (!(this.isValid() && localInput.isValid())) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tunits = normalizeUnits(units) || 'millisecond';\r\n\t\tif (units === 'millisecond') {\r\n\t\t\treturn this.valueOf() > localInput.valueOf();\r\n\t\t} else {\r\n\t\t\treturn localInput.valueOf() < this.clone().startOf(units).valueOf();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction isBefore(input, units) {\r\n\t\tvar localInput = isMoment(input) ? input : createLocal(input);\r\n\t\tif (!(this.isValid() && localInput.isValid())) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tunits = normalizeUnits(units) || 'millisecond';\r\n\t\tif (units === 'millisecond') {\r\n\t\t\treturn this.valueOf() < localInput.valueOf();\r\n\t\t} else {\r\n\t\t\treturn this.clone().endOf(units).valueOf() < localInput.valueOf();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction isBetween(from, to, units, inclusivity) {\r\n\t\tvar localFrom = isMoment(from) ? from : createLocal(from),\r\n\t\t\tlocalTo = isMoment(to) ? to : createLocal(to);\r\n\t\tif (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tinclusivity = inclusivity || '()';\r\n\t\treturn (\r\n\t\t\t(inclusivity[0] === '('\r\n\t\t\t\t? this.isAfter(localFrom, units)\r\n\t\t\t\t: !this.isBefore(localFrom, units)) &&\r\n\t\t\t(inclusivity[1] === ')'\r\n\t\t\t\t? this.isBefore(localTo, units)\r\n\t\t\t\t: !this.isAfter(localTo, units))\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isSame(input, units) {\r\n\t\tvar localInput = isMoment(input) ? input : createLocal(input),\r\n\t\t\tinputMs;\r\n\t\tif (!(this.isValid() && localInput.isValid())) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tunits = normalizeUnits(units) || 'millisecond';\r\n\t\tif (units === 'millisecond') {\r\n\t\t\treturn this.valueOf() === localInput.valueOf();\r\n\t\t} else {\r\n\t\t\tinputMs = localInput.valueOf();\r\n\t\t\treturn (\r\n\t\t\t\tthis.clone().startOf(units).valueOf() <= inputMs &&\r\n\t\t\t\tinputMs <= this.clone().endOf(units).valueOf()\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction isSameOrAfter(input, units) {\r\n\t\treturn this.isSame(input, units) || this.isAfter(input, units);\r\n\t}\r\n\r\n\tfunction isSameOrBefore(input, units) {\r\n\t\treturn this.isSame(input, units) || this.isBefore(input, units);\r\n\t}\r\n\r\n\tfunction diff(input, units, asFloat) {\r\n\t\tvar that, zoneDelta, output;\r\n\r\n\t\tif (!this.isValid()) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\tthat = cloneWithOffset(input, this);\r\n\r\n\t\tif (!that.isValid()) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\tzoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\r\n\r\n\t\tunits = normalizeUnits(units);\r\n\r\n\t\tswitch (units) {\r\n\t\t\tcase 'year':\r\n\t\t\t\toutput = monthDiff(this, that) / 12;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'month':\r\n\t\t\t\toutput = monthDiff(this, that);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'quarter':\r\n\t\t\t\toutput = monthDiff(this, that) / 3;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'second':\r\n\t\t\t\toutput = (this - that) / 1e3;\r\n\t\t\t\tbreak; // 1000\r\n\t\t\tcase 'minute':\r\n\t\t\t\toutput = (this - that) / 6e4;\r\n\t\t\t\tbreak; // 1000 * 60\r\n\t\t\tcase 'hour':\r\n\t\t\t\toutput = (this - that) / 36e5;\r\n\t\t\t\tbreak; // 1000 * 60 * 60\r\n\t\t\tcase 'day':\r\n\t\t\t\toutput = (this - that - zoneDelta) / 864e5;\r\n\t\t\t\tbreak; // 1000 * 60 * 60 * 24, negate dst\r\n\t\t\tcase 'week':\r\n\t\t\t\toutput = (this - that - zoneDelta) / 6048e5;\r\n\t\t\t\tbreak; // 1000 * 60 * 60 * 24 * 7, negate dst\r\n\t\t\tdefault:\r\n\t\t\t\toutput = this - that;\r\n\t\t}\r\n\r\n\t\treturn asFloat ? output : absFloor(output);\r\n\t}\r\n\r\n\tfunction monthDiff(a, b) {\r\n\t\tif (a.date() < b.date()) {\r\n\t\t\t// end-of-month calculations work correct when the start month has more\r\n\t\t\t// days than the end month.\r\n\t\t\treturn -monthDiff(b, a);\r\n\t\t}\r\n\t\t// difference in months\r\n\t\tvar wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\r\n\t\t\t// b is in (anchor - 1 month, anchor + 1 month)\r\n\t\t\tanchor = a.clone().add(wholeMonthDiff, 'months'),\r\n\t\t\tanchor2,\r\n\t\t\tadjust;\r\n\r\n\t\tif (b - anchor < 0) {\r\n\t\t\tanchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\r\n\t\t\t// linear across the month\r\n\t\t\tadjust = (b - anchor) / (anchor - anchor2);\r\n\t\t} else {\r\n\t\t\tanchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\r\n\t\t\t// linear across the month\r\n\t\t\tadjust = (b - anchor) / (anchor2 - anchor);\r\n\t\t}\r\n\r\n\t\t//check for negative zero, return zero if negative zero\r\n\t\treturn -(wholeMonthDiff + adjust) || 0;\r\n\t}\r\n\r\n\thooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\r\n\thooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\r\n\r\n\tfunction toString() {\r\n\t\treturn this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\r\n\t}\r\n\r\n\tfunction toISOString(keepOffset) {\r\n\t\tif (!this.isValid()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tvar utc = keepOffset !== true,\r\n\t\t\tm = utc ? this.clone().utc() : this;\r\n\t\tif (m.year() < 0 || m.year() > 9999) {\r\n\t\t\treturn formatMoment(\r\n\t\t\t\tm,\r\n\t\t\t\tutc\r\n\t\t\t\t\t? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\r\n\t\t\t\t\t: 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\r\n\t\t\t);\r\n\t\t}\r\n\t\tif (isFunction(Date.prototype.toISOString)) {\r\n\t\t\t// native implementation is ~50x faster, use it when we can\r\n\t\t\tif (utc) {\r\n\t\t\t\treturn this.toDate().toISOString();\r\n\t\t\t} else {\r\n\t\t\t\treturn new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\r\n\t\t\t\t\t.toISOString()\r\n\t\t\t\t\t.replace('Z', formatMoment(m, 'Z'));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn formatMoment(\r\n\t\t\tm,\r\n\t\t\tutc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\r\n\t\t);\r\n\t}\r\n\r\n /**\r\n * Return a human readable representation of a moment that can\r\n * also be evaluated to get a new moment which is the same\r\n *\r\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\r\n */\r\n\tfunction inspect() {\r\n\t\tif (!this.isValid()) {\r\n\t\t\treturn 'moment.invalid(/* ' + this._i + ' */)';\r\n\t\t}\r\n\t\tvar func = 'moment',\r\n\t\t\tzone = '',\r\n\t\t\tprefix,\r\n\t\t\tyear,\r\n\t\t\tdatetime,\r\n\t\t\tsuffix;\r\n\t\tif (!this.isLocal()) {\r\n\t\t\tfunc = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\r\n\t\t\tzone = 'Z';\r\n\t\t}\r\n\t\tprefix = '[' + func + '(\"]';\r\n\t\tyear = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\r\n\t\tdatetime = '-MM-DD[T]HH:mm:ss.SSS';\r\n\t\tsuffix = zone + '[\")]';\r\n\r\n\t\treturn this.format(prefix + year + datetime + suffix);\r\n\t}\r\n\r\n\tfunction format(inputString) {\r\n\t\tif (!inputString) {\r\n\t\t\tinputString = this.isUtc()\r\n\t\t\t\t? hooks.defaultFormatUtc\r\n\t\t\t\t: hooks.defaultFormat;\r\n\t\t}\r\n\t\tvar output = formatMoment(this, inputString);\r\n\t\treturn this.localeData().postformat(output);\r\n\t}\r\n\r\n\tfunction from(time, withoutSuffix) {\r\n\t\tif (\r\n\t\t\tthis.isValid() &&\r\n\t\t\t((isMoment(time) && time.isValid()) || createLocal(time).isValid())\r\n\t\t) {\r\n\t\t\treturn createDuration({ to: this, from: time })\r\n\t\t\t\t.locale(this.locale())\r\n\t\t\t\t.humanize(!withoutSuffix);\r\n\t\t} else {\r\n\t\t\treturn this.localeData().invalidDate();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fromNow(withoutSuffix) {\r\n\t\treturn this.from(createLocal(), withoutSuffix);\r\n\t}\r\n\r\n\tfunction to(time, withoutSuffix) {\r\n\t\tif (\r\n\t\t\tthis.isValid() &&\r\n\t\t\t((isMoment(time) && time.isValid()) || createLocal(time).isValid())\r\n\t\t) {\r\n\t\t\treturn createDuration({ from: this, to: time })\r\n\t\t\t\t.locale(this.locale())\r\n\t\t\t\t.humanize(!withoutSuffix);\r\n\t\t} else {\r\n\t\t\treturn this.localeData().invalidDate();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction toNow(withoutSuffix) {\r\n\t\treturn this.to(createLocal(), withoutSuffix);\r\n\t}\r\n\r\n\t// If passed a locale key, it will set the locale for this\r\n\t// instance. Otherwise, it will return the locale configuration\r\n\t// variables for this instance.\r\n\tfunction locale(key) {\r\n\t\tvar newLocaleData;\r\n\r\n\t\tif (key === undefined) {\r\n\t\t\treturn this._locale._abbr;\r\n\t\t} else {\r\n\t\t\tnewLocaleData = getLocale(key);\r\n\t\t\tif (newLocaleData != null) {\r\n\t\t\t\tthis._locale = newLocaleData;\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\tvar lang = deprecate(\r\n\t\t'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\r\n\t\tfunction (key) {\r\n\t\t\tif (key === undefined) {\r\n\t\t\t\treturn this.localeData();\r\n\t\t\t} else {\r\n\t\t\t\treturn this.locale(key);\r\n\t\t\t}\r\n\t\t}\r\n\t);\r\n\r\n\tfunction localeData() {\r\n\t\treturn this._locale;\r\n\t}\r\n\r\n\tvar MS_PER_SECOND = 1000,\r\n\t\tMS_PER_MINUTE = 60 * MS_PER_SECOND,\r\n\t\tMS_PER_HOUR = 60 * MS_PER_MINUTE,\r\n\t\tMS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\r\n\r\n\t// actual modulo - handles negative numbers (for dates before 1970):\r\n\tfunction mod$1(dividend, divisor) {\r\n\t\treturn ((dividend % divisor) + divisor) % divisor;\r\n\t}\r\n\r\n\tfunction localStartOfDate(y, m, d) {\r\n\t\t// the date constructor remaps years 0-99 to 1900-1999\r\n\t\tif (y < 100 && y >= 0) {\r\n\t\t\t// preserve leap years using a full 400 year cycle, then reset\r\n\t\t\treturn new Date(y + 400, m, d) - MS_PER_400_YEARS;\r\n\t\t} else {\r\n\t\t\treturn new Date(y, m, d).valueOf();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction utcStartOfDate(y, m, d) {\r\n\t\t// Date.UTC remaps years 0-99 to 1900-1999\r\n\t\tif (y < 100 && y >= 0) {\r\n\t\t\t// preserve leap years using a full 400 year cycle, then reset\r\n\t\t\treturn Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\r\n\t\t} else {\r\n\t\t\treturn Date.UTC(y, m, d);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction startOf(units) {\r\n\t\tvar time, startOfDate;\r\n\t\tunits = normalizeUnits(units);\r\n\t\tif (units === undefined || units === 'millisecond' || !this.isValid()) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tstartOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\r\n\r\n\t\tswitch (units) {\r\n\t\t\tcase 'year':\r\n\t\t\t\ttime = startOfDate(this.year(), 0, 1);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'quarter':\r\n\t\t\t\ttime = startOfDate(\r\n\t\t\t\t\tthis.year(),\r\n\t\t\t\t\tthis.month() - (this.month() % 3),\r\n\t\t\t\t\t1\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'month':\r\n\t\t\t\ttime = startOfDate(this.year(), this.month(), 1);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'week':\r\n\t\t\t\ttime = startOfDate(\r\n\t\t\t\t\tthis.year(),\r\n\t\t\t\t\tthis.month(),\r\n\t\t\t\t\tthis.date() - this.weekday()\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'isoWeek':\r\n\t\t\t\ttime = startOfDate(\r\n\t\t\t\t\tthis.year(),\r\n\t\t\t\t\tthis.month(),\r\n\t\t\t\t\tthis.date() - (this.isoWeekday() - 1)\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'day':\r\n\t\t\tcase 'date':\r\n\t\t\t\ttime = startOfDate(this.year(), this.month(), this.date());\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'hour':\r\n\t\t\t\ttime = this._d.valueOf();\r\n\t\t\t\ttime -= mod$1(\r\n\t\t\t\t\ttime + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\r\n\t\t\t\t\tMS_PER_HOUR\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'minute':\r\n\t\t\t\ttime = this._d.valueOf();\r\n\t\t\t\ttime -= mod$1(time, MS_PER_MINUTE);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'second':\r\n\t\t\t\ttime = this._d.valueOf();\r\n\t\t\t\ttime -= mod$1(time, MS_PER_SECOND);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._d.setTime(time);\r\n\t\thooks.updateOffset(this, true);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tfunction endOf(units) {\r\n\t\tvar time, startOfDate;\r\n\t\tunits = normalizeUnits(units);\r\n\t\tif (units === undefined || units === 'millisecond' || !this.isValid()) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tstartOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\r\n\r\n\t\tswitch (units) {\r\n\t\t\tcase 'year':\r\n\t\t\t\ttime = startOfDate(this.year() + 1, 0, 1) - 1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'quarter':\r\n\t\t\t\ttime =\r\n\t\t\t\t\tstartOfDate(\r\n\t\t\t\t\t\tthis.year(),\r\n\t\t\t\t\t\tthis.month() - (this.month() % 3) + 3,\r\n\t\t\t\t\t\t1\r\n\t\t\t\t\t) - 1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'month':\r\n\t\t\t\ttime = startOfDate(this.year(), this.month() + 1, 1) - 1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'week':\r\n\t\t\t\ttime =\r\n\t\t\t\t\tstartOfDate(\r\n\t\t\t\t\t\tthis.year(),\r\n\t\t\t\t\t\tthis.month(),\r\n\t\t\t\t\t\tthis.date() - this.weekday() + 7\r\n\t\t\t\t\t) - 1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'isoWeek':\r\n\t\t\t\ttime =\r\n\t\t\t\t\tstartOfDate(\r\n\t\t\t\t\t\tthis.year(),\r\n\t\t\t\t\t\tthis.month(),\r\n\t\t\t\t\t\tthis.date() - (this.isoWeekday() - 1) + 7\r\n\t\t\t\t\t) - 1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'day':\r\n\t\t\tcase 'date':\r\n\t\t\t\ttime = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'hour':\r\n\t\t\t\ttime = this._d.valueOf();\r\n\t\t\t\ttime +=\r\n\t\t\t\t\tMS_PER_HOUR -\r\n\t\t\t\t\tmod$1(\r\n\t\t\t\t\t\ttime + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\r\n\t\t\t\t\t\tMS_PER_HOUR\r\n\t\t\t\t\t) -\r\n\t\t\t\t\t1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'minute':\r\n\t\t\t\ttime = this._d.valueOf();\r\n\t\t\t\ttime += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'second':\r\n\t\t\t\ttime = this._d.valueOf();\r\n\t\t\t\ttime += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._d.setTime(time);\r\n\t\thooks.updateOffset(this, true);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tfunction valueOf() {\r\n\t\treturn this._d.valueOf() - (this._offset || 0) * 60000;\r\n\t}\r\n\r\n\tfunction unix() {\r\n\t\treturn Math.floor(this.valueOf() / 1000);\r\n\t}\r\n\r\n\tfunction toDate() {\r\n\t\treturn new Date(this.valueOf());\r\n\t}\r\n\r\n\tfunction toArray() {\r\n\t\tvar m = this;\r\n\t\treturn [\r\n\t\t\tm.year(),\r\n\t\t\tm.month(),\r\n\t\t\tm.date(),\r\n\t\t\tm.hour(),\r\n\t\t\tm.minute(),\r\n\t\t\tm.second(),\r\n\t\t\tm.millisecond(),\r\n\t\t];\r\n\t}\r\n\r\n\tfunction toObject() {\r\n\t\tvar m = this;\r\n\t\treturn {\r\n\t\t\tyears: m.year(),\r\n\t\t\tmonths: m.month(),\r\n\t\t\tdate: m.date(),\r\n\t\t\thours: m.hours(),\r\n\t\t\tminutes: m.minutes(),\r\n\t\t\tseconds: m.seconds(),\r\n\t\t\tmilliseconds: m.milliseconds(),\r\n\t\t};\r\n\t}\r\n\r\n\tfunction toJSON() {\r\n\t\t// new Date(NaN).toJSON() === null\r\n\t\treturn this.isValid() ? this.toISOString() : null;\r\n\t}\r\n\r\n\tfunction isValid$2() {\r\n\t\treturn isValid(this);\r\n\t}\r\n\r\n\tfunction parsingFlags() {\r\n\t\treturn extend({}, getParsingFlags(this));\r\n\t}\r\n\r\n\tfunction invalidAt() {\r\n\t\treturn getParsingFlags(this).overflow;\r\n\t}\r\n\r\n\tfunction creationData() {\r\n\t\treturn {\r\n\t\t\tinput: this._i,\r\n\t\t\tformat: this._f,\r\n\t\t\tlocale: this._locale,\r\n\t\t\tisUTC: this._isUTC,\r\n\t\t\tstrict: this._strict,\r\n\t\t};\r\n\t}\r\n\r\n\taddFormatToken('N', 0, 0, 'eraAbbr');\r\n\taddFormatToken('NN', 0, 0, 'eraAbbr');\r\n\taddFormatToken('NNN', 0, 0, 'eraAbbr');\r\n\taddFormatToken('NNNN', 0, 0, 'eraName');\r\n\taddFormatToken('NNNNN', 0, 0, 'eraNarrow');\r\n\r\n\taddFormatToken('y', ['y', 1], 'yo', 'eraYear');\r\n\taddFormatToken('y', ['yy', 2], 0, 'eraYear');\r\n\taddFormatToken('y', ['yyy', 3], 0, 'eraYear');\r\n\taddFormatToken('y', ['yyyy', 4], 0, 'eraYear');\r\n\r\n\taddRegexToken('N', matchEraAbbr);\r\n\taddRegexToken('NN', matchEraAbbr);\r\n\taddRegexToken('NNN', matchEraAbbr);\r\n\taddRegexToken('NNNN', matchEraName);\r\n\taddRegexToken('NNNNN', matchEraNarrow);\r\n\r\n\taddParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\r\n\t\tinput,\r\n\t\tarray,\r\n\t\tconfig,\r\n\t\ttoken\r\n\t) {\r\n\t\tvar era = config._locale.erasParse(input, token, config._strict);\r\n\t\tif (era) {\r\n\t\t\tgetParsingFlags(config).era = era;\r\n\t\t} else {\r\n\t\t\tgetParsingFlags(config).invalidEra = input;\r\n\t\t}\r\n\t});\r\n\r\n\taddRegexToken('y', matchUnsigned);\r\n\taddRegexToken('yy', matchUnsigned);\r\n\taddRegexToken('yyy', matchUnsigned);\r\n\taddRegexToken('yyyy', matchUnsigned);\r\n\taddRegexToken('yo', matchEraYearOrdinal);\r\n\r\n\taddParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\r\n\taddParseToken(['yo'], function (input, array, config, token) {\r\n\t\tvar match;\r\n\t\tif (config._locale._eraYearOrdinalRegex) {\r\n\t\t\tmatch = input.match(config._locale._eraYearOrdinalRegex);\r\n\t\t}\r\n\r\n\t\tif (config._locale.eraYearOrdinalParse) {\r\n\t\t\tarray[YEAR] = config._locale.eraYearOrdinalParse(input, match);\r\n\t\t} else {\r\n\t\t\tarray[YEAR] = parseInt(input, 10);\r\n\t\t}\r\n\t});\r\n\r\n\tfunction localeEras(m, format) {\r\n\t\tvar i,\r\n\t\t\tl,\r\n\t\t\tdate,\r\n\t\t\teras = this._eras || getLocale('en')._eras;\r\n\t\tfor (i = 0, l = eras.length; i < l; ++i) {\r\n\t\t\tswitch (typeof eras[i].since) {\r\n\t\t\t\tcase 'string':\r\n\t\t\t\t\t// truncate time\r\n\t\t\t\t\tdate = hooks(eras[i].since).startOf('day');\r\n\t\t\t\t\teras[i].since = date.valueOf();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tswitch (typeof eras[i].until) {\r\n\t\t\t\tcase 'undefined':\r\n\t\t\t\t\teras[i].until = +Infinity;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'string':\r\n\t\t\t\t\t// truncate time\r\n\t\t\t\t\tdate = hooks(eras[i].until).startOf('day').valueOf();\r\n\t\t\t\t\teras[i].until = date.valueOf();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn eras;\r\n\t}\r\n\r\n\tfunction localeErasParse(eraName, format, strict) {\r\n\t\tvar i,\r\n\t\t\tl,\r\n\t\t\teras = this.eras(),\r\n\t\t\tname,\r\n\t\t\tabbr,\r\n\t\t\tnarrow;\r\n\t\teraName = eraName.toUpperCase();\r\n\r\n\t\tfor (i = 0, l = eras.length; i < l; ++i) {\r\n\t\t\tname = eras[i].name.toUpperCase();\r\n\t\t\tabbr = eras[i].abbr.toUpperCase();\r\n\t\t\tnarrow = eras[i].narrow.toUpperCase();\r\n\r\n\t\t\tif (strict) {\r\n\t\t\t\tswitch (format) {\r\n\t\t\t\t\tcase 'N':\r\n\t\t\t\t\tcase 'NN':\r\n\t\t\t\t\tcase 'NNN':\r\n\t\t\t\t\t\tif (abbr === eraName) {\r\n\t\t\t\t\t\t\treturn eras[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'NNNN':\r\n\t\t\t\t\t\tif (name === eraName) {\r\n\t\t\t\t\t\t\treturn eras[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'NNNNN':\r\n\t\t\t\t\t\tif (narrow === eraName) {\r\n\t\t\t\t\t\t\treturn eras[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t} else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\r\n\t\t\t\treturn eras[i];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction localeErasConvertYear(era, year) {\r\n\t\tvar dir = era.since <= era.until ? +1 : -1;\r\n\t\tif (year === undefined) {\r\n\t\t\treturn hooks(era.since).year();\r\n\t\t} else {\r\n\t\t\treturn hooks(era.since).year() + (year - era.offset) * dir;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getEraName() {\r\n\t\tvar i,\r\n\t\t\tl,\r\n\t\t\tval,\r\n\t\t\teras = this.localeData().eras();\r\n\t\tfor (i = 0, l = eras.length; i < l; ++i) {\r\n\t\t\t// truncate time\r\n\t\t\tval = this.clone().startOf('day').valueOf();\r\n\r\n\t\t\tif (eras[i].since <= val && val <= eras[i].until) {\r\n\t\t\t\treturn eras[i].name;\r\n\t\t\t}\r\n\t\t\tif (eras[i].until <= val && val <= eras[i].since) {\r\n\t\t\t\treturn eras[i].name;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn '';\r\n\t}\r\n\r\n\tfunction getEraNarrow() {\r\n\t\tvar i,\r\n\t\t\tl,\r\n\t\t\tval,\r\n\t\t\teras = this.localeData().eras();\r\n\t\tfor (i = 0, l = eras.length; i < l; ++i) {\r\n\t\t\t// truncate time\r\n\t\t\tval = this.clone().startOf('day').valueOf();\r\n\r\n\t\t\tif (eras[i].since <= val && val <= eras[i].until) {\r\n\t\t\t\treturn eras[i].narrow;\r\n\t\t\t}\r\n\t\t\tif (eras[i].until <= val && val <= eras[i].since) {\r\n\t\t\t\treturn eras[i].narrow;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn '';\r\n\t}\r\n\r\n\tfunction getEraAbbr() {\r\n\t\tvar i,\r\n\t\t\tl,\r\n\t\t\tval,\r\n\t\t\teras = this.localeData().eras();\r\n\t\tfor (i = 0, l = eras.length; i < l; ++i) {\r\n\t\t\t// truncate time\r\n\t\t\tval = this.clone().startOf('day').valueOf();\r\n\r\n\t\t\tif (eras[i].since <= val && val <= eras[i].until) {\r\n\t\t\t\treturn eras[i].abbr;\r\n\t\t\t}\r\n\t\t\tif (eras[i].until <= val && val <= eras[i].since) {\r\n\t\t\t\treturn eras[i].abbr;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn '';\r\n\t}\r\n\r\n\tfunction getEraYear() {\r\n\t\tvar i,\r\n\t\t\tl,\r\n\t\t\tdir,\r\n\t\t\tval,\r\n\t\t\teras = this.localeData().eras();\r\n\t\tfor (i = 0, l = eras.length; i < l; ++i) {\r\n\t\t\tdir = eras[i].since <= eras[i].until ? +1 : -1;\r\n\r\n\t\t\t// truncate time\r\n\t\t\tval = this.clone().startOf('day').valueOf();\r\n\r\n\t\t\tif (\r\n\t\t\t\t(eras[i].since <= val && val <= eras[i].until) ||\r\n\t\t\t\t(eras[i].until <= val && val <= eras[i].since)\r\n\t\t\t) {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t(this.year() - hooks(eras[i].since).year()) * dir +\r\n\t\t\t\t\teras[i].offset\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.year();\r\n\t}\r\n\r\n\tfunction erasNameRegex(isStrict) {\r\n\t\tif (!hasOwnProp(this, '_erasNameRegex')) {\r\n\t\t\tcomputeErasParse.call(this);\r\n\t\t}\r\n\t\treturn isStrict ? this._erasNameRegex : this._erasRegex;\r\n\t}\r\n\r\n\tfunction erasAbbrRegex(isStrict) {\r\n\t\tif (!hasOwnProp(this, '_erasAbbrRegex')) {\r\n\t\t\tcomputeErasParse.call(this);\r\n\t\t}\r\n\t\treturn isStrict ? this._erasAbbrRegex : this._erasRegex;\r\n\t}\r\n\r\n\tfunction erasNarrowRegex(isStrict) {\r\n\t\tif (!hasOwnProp(this, '_erasNarrowRegex')) {\r\n\t\t\tcomputeErasParse.call(this);\r\n\t\t}\r\n\t\treturn isStrict ? this._erasNarrowRegex : this._erasRegex;\r\n\t}\r\n\r\n\tfunction matchEraAbbr(isStrict, locale) {\r\n\t\treturn locale.erasAbbrRegex(isStrict);\r\n\t}\r\n\r\n\tfunction matchEraName(isStrict, locale) {\r\n\t\treturn locale.erasNameRegex(isStrict);\r\n\t}\r\n\r\n\tfunction matchEraNarrow(isStrict, locale) {\r\n\t\treturn locale.erasNarrowRegex(isStrict);\r\n\t}\r\n\r\n\tfunction matchEraYearOrdinal(isStrict, locale) {\r\n\t\treturn locale._eraYearOrdinalRegex || matchUnsigned;\r\n\t}\r\n\r\n\tfunction computeErasParse() {\r\n\t\tvar abbrPieces = [],\r\n\t\t\tnamePieces = [],\r\n\t\t\tnarrowPieces = [],\r\n\t\t\tmixedPieces = [],\r\n\t\t\ti,\r\n\t\t\tl,\r\n\t\t\teras = this.eras();\r\n\r\n\t\tfor (i = 0, l = eras.length; i < l; ++i) {\r\n\t\t\tnamePieces.push(regexEscape(eras[i].name));\r\n\t\t\tabbrPieces.push(regexEscape(eras[i].abbr));\r\n\t\t\tnarrowPieces.push(regexEscape(eras[i].narrow));\r\n\r\n\t\t\tmixedPieces.push(regexEscape(eras[i].name));\r\n\t\t\tmixedPieces.push(regexEscape(eras[i].abbr));\r\n\t\t\tmixedPieces.push(regexEscape(eras[i].narrow));\r\n\t\t}\r\n\r\n\t\tthis._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\r\n\t\tthis._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\r\n\t\tthis._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\r\n\t\tthis._erasNarrowRegex = new RegExp(\r\n\t\t\t'^(' + narrowPieces.join('|') + ')',\r\n\t\t\t'i'\r\n\t\t);\r\n\t}\r\n\r\n\t// FORMATTING\r\n\r\n\taddFormatToken(0, ['gg', 2], 0, function () {\r\n\t\treturn this.weekYear() % 100;\r\n\t});\r\n\r\n\taddFormatToken(0, ['GG', 2], 0, function () {\r\n\t\treturn this.isoWeekYear() % 100;\r\n\t});\r\n\r\n\tfunction addWeekYearFormatToken(token, getter) {\r\n\t\taddFormatToken(0, [token, token.length], 0, getter);\r\n\t}\r\n\r\n\taddWeekYearFormatToken('gggg', 'weekYear');\r\n\taddWeekYearFormatToken('ggggg', 'weekYear');\r\n\taddWeekYearFormatToken('GGGG', 'isoWeekYear');\r\n\taddWeekYearFormatToken('GGGGG', 'isoWeekYear');\r\n\r\n\t// ALIASES\r\n\r\n\taddUnitAlias('weekYear', 'gg');\r\n\taddUnitAlias('isoWeekYear', 'GG');\r\n\r\n\t// PRIORITY\r\n\r\n\taddUnitPriority('weekYear', 1);\r\n\taddUnitPriority('isoWeekYear', 1);\r\n\r\n\t// PARSING\r\n\r\n\taddRegexToken('G', matchSigned);\r\n\taddRegexToken('g', matchSigned);\r\n\taddRegexToken('GG', match1to2, match2);\r\n\taddRegexToken('gg', match1to2, match2);\r\n\taddRegexToken('GGGG', match1to4, match4);\r\n\taddRegexToken('gggg', match1to4, match4);\r\n\taddRegexToken('GGGGG', match1to6, match6);\r\n\taddRegexToken('ggggg', match1to6, match6);\r\n\r\n\taddWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\r\n\t\tinput,\r\n\t\tweek,\r\n\t\tconfig,\r\n\t\ttoken\r\n\t) {\r\n\t\tweek[token.substr(0, 2)] = toInt(input);\r\n\t});\r\n\r\n\taddWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\r\n\t\tweek[token] = hooks.parseTwoDigitYear(input);\r\n\t});\r\n\r\n\t// MOMENTS\r\n\r\n\tfunction getSetWeekYear(input) {\r\n\t\treturn getSetWeekYearHelper.call(\r\n\t\t\tthis,\r\n\t\t\tinput,\r\n\t\t\tthis.week(),\r\n\t\t\tthis.weekday(),\r\n\t\t\tthis.localeData()._week.dow,\r\n\t\t\tthis.localeData()._week.doy\r\n\t\t);\r\n\t}\r\n\r\n\tfunction getSetISOWeekYear(input) {\r\n\t\treturn getSetWeekYearHelper.call(\r\n\t\t\tthis,\r\n\t\t\tinput,\r\n\t\t\tthis.isoWeek(),\r\n\t\t\tthis.isoWeekday(),\r\n\t\t\t1,\r\n\t\t\t4\r\n\t\t);\r\n\t}\r\n\r\n\tfunction getISOWeeksInYear() {\r\n\t\treturn weeksInYear(this.year(), 1, 4);\r\n\t}\r\n\r\n\tfunction getISOWeeksInISOWeekYear() {\r\n\t\treturn weeksInYear(this.isoWeekYear(), 1, 4);\r\n\t}\r\n\r\n\tfunction getWeeksInYear() {\r\n\t\tvar weekInfo = this.localeData()._week;\r\n\t\treturn weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\r\n\t}\r\n\r\n\tfunction getWeeksInWeekYear() {\r\n\t\tvar weekInfo = this.localeData()._week;\r\n\t\treturn weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\r\n\t}\r\n\r\n\tfunction getSetWeekYearHelper(input, week, weekday, dow, doy) {\r\n\t\tvar weeksTarget;\r\n\t\tif (input == null) {\r\n\t\t\treturn weekOfYear(this, dow, doy).year;\r\n\t\t} else {\r\n\t\t\tweeksTarget = weeksInYear(input, dow, doy);\r\n\t\t\tif (week > weeksTarget) {\r\n\t\t\t\tweek = weeksTarget;\r\n\t\t\t}\r\n\t\t\treturn setWeekAll.call(this, input, week, weekday, dow, doy);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setWeekAll(weekYear, week, weekday, dow, doy) {\r\n\t\tvar dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\r\n\t\t\tdate = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\r\n\r\n\t\tthis.year(date.getUTCFullYear());\r\n\t\tthis.month(date.getUTCMonth());\r\n\t\tthis.date(date.getUTCDate());\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// FORMATTING\r\n\r\n\taddFormatToken('Q', 0, 'Qo', 'quarter');\r\n\r\n\t// ALIASES\r\n\r\n\taddUnitAlias('quarter', 'Q');\r\n\r\n\t// PRIORITY\r\n\r\n\taddUnitPriority('quarter', 7);\r\n\r\n\t// PARSING\r\n\r\n\taddRegexToken('Q', match1);\r\n\taddParseToken('Q', function (input, array) {\r\n\t\tarray[MONTH] = (toInt(input) - 1) * 3;\r\n\t});\r\n\r\n\t// MOMENTS\r\n\r\n\tfunction getSetQuarter(input) {\r\n\t\treturn input == null\r\n\t\t\t? Math.ceil((this.month() + 1) / 3)\r\n\t\t\t: this.month((input - 1) * 3 + (this.month() % 3));\r\n\t}\r\n\r\n\t// FORMATTING\r\n\r\n\taddFormatToken('D', ['DD', 2], 'Do', 'date');\r\n\r\n\t// ALIASES\r\n\r\n\taddUnitAlias('date', 'D');\r\n\r\n\t// PRIORITY\r\n\taddUnitPriority('date', 9);\r\n\r\n\t// PARSING\r\n\r\n\taddRegexToken('D', match1to2);\r\n\taddRegexToken('DD', match1to2, match2);\r\n\taddRegexToken('Do', function (isStrict, locale) {\r\n\t\t// TODO: Remove \"ordinalParse\" fallback in next major release.\r\n\t\treturn isStrict\r\n\t\t\t? locale._dayOfMonthOrdinalParse || locale._ordinalParse\r\n\t\t\t: locale._dayOfMonthOrdinalParseLenient;\r\n\t});\r\n\r\n\taddParseToken(['D', 'DD'], DATE);\r\n\taddParseToken('Do', function (input, array) {\r\n\t\tarray[DATE] = toInt(input.match(match1to2)[0]);\r\n\t});\r\n\r\n\t// MOMENTS\r\n\r\n\tvar getSetDayOfMonth = makeGetSet('Date', true);\r\n\r\n\t// FORMATTING\r\n\r\n\taddFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\r\n\r\n\t// ALIASES\r\n\r\n\taddUnitAlias('dayOfYear', 'DDD');\r\n\r\n\t// PRIORITY\r\n\taddUnitPriority('dayOfYear', 4);\r\n\r\n\t// PARSING\r\n\r\n\taddRegexToken('DDD', match1to3);\r\n\taddRegexToken('DDDD', match3);\r\n\taddParseToken(['DDD', 'DDDD'], function (input, array, config) {\r\n\t\tconfig._dayOfYear = toInt(input);\r\n\t});\r\n\r\n\t// HELPERS\r\n\r\n\t// MOMENTS\r\n\r\n\tfunction getSetDayOfYear(input) {\r\n\t\tvar dayOfYear =\r\n\t\t\tMath.round(\r\n\t\t\t\t(this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\r\n\t\t\t) + 1;\r\n\t\treturn input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\r\n\t}\r\n\r\n\t// FORMATTING\r\n\r\n\taddFormatToken('m', ['mm', 2], 0, 'minute');\r\n\r\n\t// ALIASES\r\n\r\n\taddUnitAlias('minute', 'm');\r\n\r\n\t// PRIORITY\r\n\r\n\taddUnitPriority('minute', 14);\r\n\r\n\t// PARSING\r\n\r\n\taddRegexToken('m', match1to2);\r\n\taddRegexToken('mm', match1to2, match2);\r\n\taddParseToken(['m', 'mm'], MINUTE);\r\n\r\n\t// MOMENTS\r\n\r\n\tvar getSetMinute = makeGetSet('Minutes', false);\r\n\r\n\t// FORMATTING\r\n\r\n\taddFormatToken('s', ['ss', 2], 0, 'second');\r\n\r\n\t// ALIASES\r\n\r\n\taddUnitAlias('second', 's');\r\n\r\n\t// PRIORITY\r\n\r\n\taddUnitPriority('second', 15);\r\n\r\n\t// PARSING\r\n\r\n\taddRegexToken('s', match1to2);\r\n\taddRegexToken('ss', match1to2, match2);\r\n\taddParseToken(['s', 'ss'], SECOND);\r\n\r\n\t// MOMENTS\r\n\r\n\tvar getSetSecond = makeGetSet('Seconds', false);\r\n\r\n\t// FORMATTING\r\n\r\n\taddFormatToken('S', 0, 0, function () {\r\n\t\treturn ~~(this.millisecond() / 100);\r\n\t});\r\n\r\n\taddFormatToken(0, ['SS', 2], 0, function () {\r\n\t\treturn ~~(this.millisecond() / 10);\r\n\t});\r\n\r\n\taddFormatToken(0, ['SSS', 3], 0, 'millisecond');\r\n\taddFormatToken(0, ['SSSS', 4], 0, function () {\r\n\t\treturn this.millisecond() * 10;\r\n\t});\r\n\taddFormatToken(0, ['SSSSS', 5], 0, function () {\r\n\t\treturn this.millisecond() * 100;\r\n\t});\r\n\taddFormatToken(0, ['SSSSSS', 6], 0, function () {\r\n\t\treturn this.millisecond() * 1000;\r\n\t});\r\n\taddFormatToken(0, ['SSSSSSS', 7], 0, function () {\r\n\t\treturn this.millisecond() * 10000;\r\n\t});\r\n\taddFormatToken(0, ['SSSSSSSS', 8], 0, function () {\r\n\t\treturn this.millisecond() * 100000;\r\n\t});\r\n\taddFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\r\n\t\treturn this.millisecond() * 1000000;\r\n\t});\r\n\r\n\t// ALIASES\r\n\r\n\taddUnitAlias('millisecond', 'ms');\r\n\r\n\t// PRIORITY\r\n\r\n\taddUnitPriority('millisecond', 16);\r\n\r\n\t// PARSING\r\n\r\n\taddRegexToken('S', match1to3, match1);\r\n\taddRegexToken('SS', match1to3, match2);\r\n\taddRegexToken('SSS', match1to3, match3);\r\n\r\n\tvar token, getSetMillisecond;\r\n\tfor (token = 'SSSS'; token.length <= 9; token += 'S') {\r\n\t\taddRegexToken(token, matchUnsigned);\r\n\t}\r\n\r\n\tfunction parseMs(input, array) {\r\n\t\tarray[MILLISECOND] = toInt(('0.' + input) * 1000);\r\n\t}\r\n\r\n\tfor (token = 'S'; token.length <= 9; token += 'S') {\r\n\t\taddParseToken(token, parseMs);\r\n\t}\r\n\r\n\tgetSetMillisecond = makeGetSet('Milliseconds', false);\r\n\r\n\t// FORMATTING\r\n\r\n\taddFormatToken('z', 0, 0, 'zoneAbbr');\r\n\taddFormatToken('zz', 0, 0, 'zoneName');\r\n\r\n\t// MOMENTS\r\n\r\n\tfunction getZoneAbbr() {\r\n\t\treturn this._isUTC ? 'UTC' : '';\r\n\t}\r\n\r\n\tfunction getZoneName() {\r\n\t\treturn this._isUTC ? 'Coordinated Universal Time' : '';\r\n\t}\r\n\r\n\tvar proto = Moment.prototype;\r\n\r\n\tproto.add = add;\r\n\tproto.calendar = calendar$1;\r\n\tproto.clone = clone;\r\n\tproto.diff = diff;\r\n\tproto.endOf = endOf;\r\n\tproto.format = format;\r\n\tproto.from = from;\r\n\tproto.fromNow = fromNow;\r\n\tproto.to = to;\r\n\tproto.toNow = toNow;\r\n\tproto.get = stringGet;\r\n\tproto.invalidAt = invalidAt;\r\n\tproto.isAfter = isAfter;\r\n\tproto.isBefore = isBefore;\r\n\tproto.isBetween = isBetween;\r\n\tproto.isSame = isSame;\r\n\tproto.isSameOrAfter = isSameOrAfter;\r\n\tproto.isSameOrBefore = isSameOrBefore;\r\n\tproto.isValid = isValid$2;\r\n\tproto.lang = lang;\r\n\tproto.locale = locale;\r\n\tproto.localeData = localeData;\r\n\tproto.max = prototypeMax;\r\n\tproto.min = prototypeMin;\r\n\tproto.parsingFlags = parsingFlags;\r\n\tproto.set = stringSet;\r\n\tproto.startOf = startOf;\r\n\tproto.subtract = subtract;\r\n\tproto.toArray = toArray;\r\n\tproto.toObject = toObject;\r\n\tproto.toDate = toDate;\r\n\tproto.toISOString = toISOString;\r\n\tproto.inspect = inspect;\r\n\tif (typeof Symbol !== 'undefined' && Symbol.for != null) {\r\n\t\tproto[Symbol.for('nodejs.util.inspect.custom')] = function () {\r\n\t\t\treturn 'Moment<' + this.format() + '>';\r\n\t\t};\r\n\t}\r\n\tproto.toJSON = toJSON;\r\n\tproto.toString = toString;\r\n\tproto.unix = unix;\r\n\tproto.valueOf = valueOf;\r\n\tproto.creationData = creationData;\r\n\tproto.eraName = getEraName;\r\n\tproto.eraNarrow = getEraNarrow;\r\n\tproto.eraAbbr = getEraAbbr;\r\n\tproto.eraYear = getEraYear;\r\n\tproto.year = getSetYear;\r\n\tproto.isLeapYear = getIsLeapYear;\r\n\tproto.weekYear = getSetWeekYear;\r\n\tproto.isoWeekYear = getSetISOWeekYear;\r\n\tproto.quarter = proto.quarters = getSetQuarter;\r\n\tproto.month = getSetMonth;\r\n\tproto.daysInMonth = getDaysInMonth;\r\n\tproto.week = proto.weeks = getSetWeek;\r\n\tproto.isoWeek = proto.isoWeeks = getSetISOWeek;\r\n\tproto.weeksInYear = getWeeksInYear;\r\n\tproto.weeksInWeekYear = getWeeksInWeekYear;\r\n\tproto.isoWeeksInYear = getISOWeeksInYear;\r\n\tproto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\r\n\tproto.date = getSetDayOfMonth;\r\n\tproto.day = proto.days = getSetDayOfWeek;\r\n\tproto.weekday = getSetLocaleDayOfWeek;\r\n\tproto.isoWeekday = getSetISODayOfWeek;\r\n\tproto.dayOfYear = getSetDayOfYear;\r\n\tproto.hour = proto.hours = getSetHour;\r\n\tproto.minute = proto.minutes = getSetMinute;\r\n\tproto.second = proto.seconds = getSetSecond;\r\n\tproto.millisecond = proto.milliseconds = getSetMillisecond;\r\n\tproto.utcOffset = getSetOffset;\r\n\tproto.utc = setOffsetToUTC;\r\n\tproto.local = setOffsetToLocal;\r\n\tproto.parseZone = setOffsetToParsedOffset;\r\n\tproto.hasAlignedHourOffset = hasAlignedHourOffset;\r\n\tproto.isDST = isDaylightSavingTime;\r\n\tproto.isLocal = isLocal;\r\n\tproto.isUtcOffset = isUtcOffset;\r\n\tproto.isUtc = isUtc;\r\n\tproto.isUTC = isUtc;\r\n\tproto.zoneAbbr = getZoneAbbr;\r\n\tproto.zoneName = getZoneName;\r\n\tproto.dates = deprecate(\r\n\t\t'dates accessor is deprecated. Use date instead.',\r\n\t\tgetSetDayOfMonth\r\n\t);\r\n\tproto.months = deprecate(\r\n\t\t'months accessor is deprecated. Use month instead',\r\n\t\tgetSetMonth\r\n\t);\r\n\tproto.years = deprecate(\r\n\t\t'years accessor is deprecated. Use year instead',\r\n\t\tgetSetYear\r\n\t);\r\n\tproto.zone = deprecate(\r\n\t\t'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\r\n\t\tgetSetZone\r\n\t);\r\n\tproto.isDSTShifted = deprecate(\r\n\t\t'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\r\n\t\tisDaylightSavingTimeShifted\r\n\t);\r\n\r\n\tfunction createUnix(input) {\r\n\t\treturn createLocal(input * 1000);\r\n\t}\r\n\r\n\tfunction createInZone() {\r\n\t\treturn createLocal.apply(null, arguments).parseZone();\r\n\t}\r\n\r\n\tfunction preParsePostFormat(string) {\r\n\t\treturn string;\r\n\t}\r\n\r\n\tvar proto$1 = Locale.prototype;\r\n\r\n\tproto$1.calendar = calendar;\r\n\tproto$1.longDateFormat = longDateFormat;\r\n\tproto$1.invalidDate = invalidDate;\r\n\tproto$1.ordinal = ordinal;\r\n\tproto$1.preparse = preParsePostFormat;\r\n\tproto$1.postformat = preParsePostFormat;\r\n\tproto$1.relativeTime = relativeTime;\r\n\tproto$1.pastFuture = pastFuture;\r\n\tproto$1.set = set;\r\n\tproto$1.eras = localeEras;\r\n\tproto$1.erasParse = localeErasParse;\r\n\tproto$1.erasConvertYear = localeErasConvertYear;\r\n\tproto$1.erasAbbrRegex = erasAbbrRegex;\r\n\tproto$1.erasNameRegex = erasNameRegex;\r\n\tproto$1.erasNarrowRegex = erasNarrowRegex;\r\n\r\n\tproto$1.months = localeMonths;\r\n\tproto$1.monthsShort = localeMonthsShort;\r\n\tproto$1.monthsParse = localeMonthsParse;\r\n\tproto$1.monthsRegex = monthsRegex;\r\n\tproto$1.monthsShortRegex = monthsShortRegex;\r\n\tproto$1.week = localeWeek;\r\n\tproto$1.firstDayOfYear = localeFirstDayOfYear;\r\n\tproto$1.firstDayOfWeek = localeFirstDayOfWeek;\r\n\r\n\tproto$1.weekdays = localeWeekdays;\r\n\tproto$1.weekdaysMin = localeWeekdaysMin;\r\n\tproto$1.weekdaysShort = localeWeekdaysShort;\r\n\tproto$1.weekdaysParse = localeWeekdaysParse;\r\n\r\n\tproto$1.weekdaysRegex = weekdaysRegex;\r\n\tproto$1.weekdaysShortRegex = weekdaysShortRegex;\r\n\tproto$1.weekdaysMinRegex = weekdaysMinRegex;\r\n\r\n\tproto$1.isPM = localeIsPM;\r\n\tproto$1.meridiem = localeMeridiem;\r\n\r\n\tfunction get$1(format, index, field, setter) {\r\n\t\tvar locale = getLocale(),\r\n\t\t\tutc = createUTC().set(setter, index);\r\n\t\treturn locale[field](utc, format);\r\n\t}\r\n\r\n\tfunction listMonthsImpl(format, index, field) {\r\n\t\tif (isNumber(format)) {\r\n\t\t\tindex = format;\r\n\t\t\tformat = undefined;\r\n\t\t}\r\n\r\n\t\tformat = format || '';\r\n\r\n\t\tif (index != null) {\r\n\t\t\treturn get$1(format, index, field, 'month');\r\n\t\t}\r\n\r\n\t\tvar i,\r\n\t\t\tout = [];\r\n\t\tfor (i = 0; i < 12; i++) {\r\n\t\t\tout[i] = get$1(format, i, field, 'month');\r\n\t\t}\r\n\t\treturn out;\r\n\t}\r\n\r\n\t// ()\r\n\t// (5)\r\n\t// (fmt, 5)\r\n\t// (fmt)\r\n\t// (true)\r\n\t// (true, 5)\r\n\t// (true, fmt, 5)\r\n\t// (true, fmt)\r\n\tfunction listWeekdaysImpl(localeSorted, format, index, field) {\r\n\t\tif (typeof localeSorted === 'boolean') {\r\n\t\t\tif (isNumber(format)) {\r\n\t\t\t\tindex = format;\r\n\t\t\t\tformat = undefined;\r\n\t\t\t}\r\n\r\n\t\t\tformat = format || '';\r\n\t\t} else {\r\n\t\t\tformat = localeSorted;\r\n\t\t\tindex = format;\r\n\t\t\tlocaleSorted = false;\r\n\r\n\t\t\tif (isNumber(format)) {\r\n\t\t\t\tindex = format;\r\n\t\t\t\tformat = undefined;\r\n\t\t\t}\r\n\r\n\t\t\tformat = format || '';\r\n\t\t}\r\n\r\n\t\tvar locale = getLocale(),\r\n\t\t\tshift = localeSorted ? locale._week.dow : 0,\r\n\t\t\ti,\r\n\t\t\tout = [];\r\n\r\n\t\tif (index != null) {\r\n\t\t\treturn get$1(format, (index + shift) % 7, field, 'day');\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < 7; i++) {\r\n\t\t\tout[i] = get$1(format, (i + shift) % 7, field, 'day');\r\n\t\t}\r\n\t\treturn out;\r\n\t}\r\n\r\n\tfunction listMonths(format, index) {\r\n\t\treturn listMonthsImpl(format, index, 'months');\r\n\t}\r\n\r\n\tfunction listMonthsShort(format, index) {\r\n\t\treturn listMonthsImpl(format, index, 'monthsShort');\r\n\t}\r\n\r\n\tfunction listWeekdays(localeSorted, format, index) {\r\n\t\treturn listWeekdaysImpl(localeSorted, format, index, 'weekdays');\r\n\t}\r\n\r\n\tfunction listWeekdaysShort(localeSorted, format, index) {\r\n\t\treturn listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\r\n\t}\r\n\r\n\tfunction listWeekdaysMin(localeSorted, format, index) {\r\n\t\treturn listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\r\n\t}\r\n\r\n\tgetSetGlobalLocale('en', {\r\n\t\teras: [\r\n\t\t\t{\r\n\t\t\t\tsince: '0001-01-01',\r\n\t\t\t\tuntil: +Infinity,\r\n\t\t\t\toffset: 1,\r\n\t\t\t\tname: 'Anno Domini',\r\n\t\t\t\tnarrow: 'AD',\r\n\t\t\t\tabbr: 'AD',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tsince: '0000-12-31',\r\n\t\t\t\tuntil: -Infinity,\r\n\t\t\t\toffset: 1,\r\n\t\t\t\tname: 'Before Christ',\r\n\t\t\t\tnarrow: 'BC',\r\n\t\t\t\tabbr: 'BC',\r\n\t\t\t},\r\n\t\t],\r\n\t\tdayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\r\n\t\tordinal: function (number) {\r\n\t\t\tvar b = number % 10,\r\n\t\t\t\toutput =\r\n\t\t\t\t\ttoInt((number % 100) / 10) === 1\r\n\t\t\t\t\t\t? 'th'\r\n\t\t\t\t\t\t: b === 1\r\n\t\t\t\t\t\t\t? 'st'\r\n\t\t\t\t\t\t\t: b === 2\r\n\t\t\t\t\t\t\t\t? 'nd'\r\n\t\t\t\t\t\t\t\t: b === 3\r\n\t\t\t\t\t\t\t\t\t? 'rd'\r\n\t\t\t\t\t\t\t\t\t: 'th';\r\n\t\t\treturn number + output;\r\n\t\t},\r\n\t});\r\n\r\n\t// Side effect imports\r\n\r\n\thooks.lang = deprecate(\r\n\t\t'moment.lang is deprecated. Use moment.locale instead.',\r\n\t\tgetSetGlobalLocale\r\n\t);\r\n\thooks.langData = deprecate(\r\n\t\t'moment.langData is deprecated. Use moment.localeData instead.',\r\n\t\tgetLocale\r\n\t);\r\n\r\n\tvar mathAbs = Math.abs;\r\n\r\n\tfunction abs() {\r\n\t\tvar data = this._data;\r\n\r\n\t\tthis._milliseconds = mathAbs(this._milliseconds);\r\n\t\tthis._days = mathAbs(this._days);\r\n\t\tthis._months = mathAbs(this._months);\r\n\r\n\t\tdata.milliseconds = mathAbs(data.milliseconds);\r\n\t\tdata.seconds = mathAbs(data.seconds);\r\n\t\tdata.minutes = mathAbs(data.minutes);\r\n\t\tdata.hours = mathAbs(data.hours);\r\n\t\tdata.months = mathAbs(data.months);\r\n\t\tdata.years = mathAbs(data.years);\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\tfunction addSubtract$1(duration, input, value, direction) {\r\n\t\tvar other = createDuration(input, value);\r\n\r\n\t\tduration._milliseconds += direction * other._milliseconds;\r\n\t\tduration._days += direction * other._days;\r\n\t\tduration._months += direction * other._months;\r\n\r\n\t\treturn duration._bubble();\r\n\t}\r\n\r\n\t// supports only 2.0-style add(1, 's') or add(duration)\r\n\tfunction add$1(input, value) {\r\n\t\treturn addSubtract$1(this, input, value, 1);\r\n\t}\r\n\r\n\t// supports only 2.0-style subtract(1, 's') or subtract(duration)\r\n\tfunction subtract$1(input, value) {\r\n\t\treturn addSubtract$1(this, input, value, -1);\r\n\t}\r\n\r\n\tfunction absCeil(number) {\r\n\t\tif (number < 0) {\r\n\t\t\treturn Math.floor(number);\r\n\t\t} else {\r\n\t\t\treturn Math.ceil(number);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction bubble() {\r\n\t\tvar milliseconds = this._milliseconds,\r\n\t\t\tdays = this._days,\r\n\t\t\tmonths = this._months,\r\n\t\t\tdata = this._data,\r\n\t\t\tseconds,\r\n\t\t\tminutes,\r\n\t\t\thours,\r\n\t\t\tyears,\r\n\t\t\tmonthsFromDays;\r\n\r\n\t\t// if we have a mix of positive and negative values, bubble down first\r\n\t\t// check: https://github.com/moment/moment/issues/2166\r\n\t\tif (\r\n\t\t\t!(\r\n\t\t\t\t(milliseconds >= 0 && days >= 0 && months >= 0) ||\r\n\t\t\t\t(milliseconds <= 0 && days <= 0 && months <= 0)\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\tmilliseconds += absCeil(monthsToDays(months) + days) * 864e5;\r\n\t\t\tdays = 0;\r\n\t\t\tmonths = 0;\r\n\t\t}\r\n\r\n\t\t// The following code bubbles up values, see the tests for\r\n\t\t// examples of what that means.\r\n\t\tdata.milliseconds = milliseconds % 1000;\r\n\r\n\t\tseconds = absFloor(milliseconds / 1000);\r\n\t\tdata.seconds = seconds % 60;\r\n\r\n\t\tminutes = absFloor(seconds / 60);\r\n\t\tdata.minutes = minutes % 60;\r\n\r\n\t\thours = absFloor(minutes / 60);\r\n\t\tdata.hours = hours % 24;\r\n\r\n\t\tdays += absFloor(hours / 24);\r\n\r\n\t\t// convert days to months\r\n\t\tmonthsFromDays = absFloor(daysToMonths(days));\r\n\t\tmonths += monthsFromDays;\r\n\t\tdays -= absCeil(monthsToDays(monthsFromDays));\r\n\r\n\t\t// 12 months -> 1 year\r\n\t\tyears = absFloor(months / 12);\r\n\t\tmonths %= 12;\r\n\r\n\t\tdata.days = days;\r\n\t\tdata.months = months;\r\n\t\tdata.years = years;\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\tfunction daysToMonths(days) {\r\n\t\t// 400 years have 146097 days (taking into account leap year rules)\r\n\t\t// 400 years have 12 months === 4800\r\n\t\treturn (days * 4800) / 146097;\r\n\t}\r\n\r\n\tfunction monthsToDays(months) {\r\n\t\t// the reverse of daysToMonths\r\n\t\treturn (months * 146097) / 4800;\r\n\t}\r\n\r\n\tfunction as(units) {\r\n\t\tif (!this.isValid()) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\tvar days,\r\n\t\t\tmonths,\r\n\t\t\tmilliseconds = this._milliseconds;\r\n\r\n\t\tunits = normalizeUnits(units);\r\n\r\n\t\tif (units === 'month' || units === 'quarter' || units === 'year') {\r\n\t\t\tdays = this._days + milliseconds / 864e5;\r\n\t\t\tmonths = this._months + daysToMonths(days);\r\n\t\t\tswitch (units) {\r\n\t\t\t\tcase 'month':\r\n\t\t\t\t\treturn months;\r\n\t\t\t\tcase 'quarter':\r\n\t\t\t\t\treturn months / 3;\r\n\t\t\t\tcase 'year':\r\n\t\t\t\t\treturn months / 12;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// handle milliseconds separately because of floating point math errors (issue #1867)\r\n\t\t\tdays = this._days + Math.round(monthsToDays(this._months));\r\n\t\t\tswitch (units) {\r\n\t\t\t\tcase 'week':\r\n\t\t\t\t\treturn days / 7 + milliseconds / 6048e5;\r\n\t\t\t\tcase 'day':\r\n\t\t\t\t\treturn days + milliseconds / 864e5;\r\n\t\t\t\tcase 'hour':\r\n\t\t\t\t\treturn days * 24 + milliseconds / 36e5;\r\n\t\t\t\tcase 'minute':\r\n\t\t\t\t\treturn days * 1440 + milliseconds / 6e4;\r\n\t\t\t\tcase 'second':\r\n\t\t\t\t\treturn days * 86400 + milliseconds / 1000;\r\n\t\t\t\t// Math.floor prevents floating point math errors here\r\n\t\t\t\tcase 'millisecond':\r\n\t\t\t\t\treturn Math.floor(days * 864e5) + milliseconds;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthrow new Error('Unknown unit ' + units);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// TODO: Use this.as('ms')?\r\n\tfunction valueOf$1() {\r\n\t\tif (!this.isValid()) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\treturn (\r\n\t\t\tthis._milliseconds +\r\n\t\t\tthis._days * 864e5 +\r\n\t\t\t(this._months % 12) * 2592e6 +\r\n\t\t\ttoInt(this._months / 12) * 31536e6\r\n\t\t);\r\n\t}\r\n\r\n\tfunction makeAs(alias) {\r\n\t\treturn function () {\r\n\t\t\treturn this.as(alias);\r\n\t\t};\r\n\t}\r\n\r\n\tvar asMilliseconds = makeAs('ms'),\r\n\t\tasSeconds = makeAs('s'),\r\n\t\tasMinutes = makeAs('m'),\r\n\t\tasHours = makeAs('h'),\r\n\t\tasDays = makeAs('d'),\r\n\t\tasWeeks = makeAs('w'),\r\n\t\tasMonths = makeAs('M'),\r\n\t\tasQuarters = makeAs('Q'),\r\n\t\tasYears = makeAs('y');\r\n\r\n\tfunction clone$1() {\r\n\t\treturn createDuration(this);\r\n\t}\r\n\r\n\tfunction get$2(units) {\r\n\t\tunits = normalizeUnits(units);\r\n\t\treturn this.isValid() ? this[units + 's']() : NaN;\r\n\t}\r\n\r\n\tfunction makeGetter(name) {\r\n\t\treturn function () {\r\n\t\t\treturn this.isValid() ? this._data[name] : NaN;\r\n\t\t};\r\n\t}\r\n\r\n\tvar milliseconds = makeGetter('milliseconds'),\r\n\t\tseconds = makeGetter('seconds'),\r\n\t\tminutes = makeGetter('minutes'),\r\n\t\thours = makeGetter('hours'),\r\n\t\tdays = makeGetter('days'),\r\n\t\tmonths = makeGetter('months'),\r\n\t\tyears = makeGetter('years');\r\n\r\n\tfunction weeks() {\r\n\t\treturn absFloor(this.days() / 7);\r\n\t}\r\n\r\n\tvar round = Math.round,\r\n\t\tthresholds = {\r\n\t\t\tss: 44, // a few seconds to seconds\r\n\t\t\ts: 45, // seconds to minute\r\n\t\t\tm: 45, // minutes to hour\r\n\t\t\th: 22, // hours to day\r\n\t\t\td: 26, // days to month/week\r\n\t\t\tw: null, // weeks to month\r\n\t\t\tM: 11, // months to year\r\n\t\t};\r\n\r\n\t// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\r\n\tfunction substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\r\n\t\treturn locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\r\n\t}\r\n\r\n\tfunction relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\r\n\t\tvar duration = createDuration(posNegDuration).abs(),\r\n\t\t\tseconds = round(duration.as('s')),\r\n\t\t\tminutes = round(duration.as('m')),\r\n\t\t\thours = round(duration.as('h')),\r\n\t\t\tdays = round(duration.as('d')),\r\n\t\t\tmonths = round(duration.as('M')),\r\n\t\t\tweeks = round(duration.as('w')),\r\n\t\t\tyears = round(duration.as('y')),\r\n\t\t\ta =\r\n\t\t\t\t(seconds <= thresholds.ss && ['s', seconds]) ||\r\n\t\t\t\t(seconds < thresholds.s && ['ss', seconds]) ||\r\n\t\t\t\t(minutes <= 1 && ['m']) ||\r\n\t\t\t\t(minutes < thresholds.m && ['mm', minutes]) ||\r\n\t\t\t\t(hours <= 1 && ['h']) ||\r\n\t\t\t\t(hours < thresholds.h && ['hh', hours]) ||\r\n\t\t\t\t(days <= 1 && ['d']) ||\r\n\t\t\t\t(days < thresholds.d && ['dd', days]);\r\n\r\n\t\tif (thresholds.w != null) {\r\n\t\t\ta =\r\n\t\t\t\ta ||\r\n\t\t\t\t(weeks <= 1 && ['w']) ||\r\n\t\t\t\t(weeks < thresholds.w && ['ww', weeks]);\r\n\t\t}\r\n\t\ta = a ||\r\n\t\t\t(months <= 1 && ['M']) ||\r\n\t\t\t(months < thresholds.M && ['MM', months]) ||\r\n\t\t\t(years <= 1 && ['y']) || ['yy', years];\r\n\r\n\t\ta[2] = withoutSuffix;\r\n\t\ta[3] = +posNegDuration > 0;\r\n\t\ta[4] = locale;\r\n\t\treturn substituteTimeAgo.apply(null, a);\r\n\t}\r\n\r\n\t// This function allows you to set the rounding function for relative time strings\r\n\tfunction getSetRelativeTimeRounding(roundingFunction) {\r\n\t\tif (roundingFunction === undefined) {\r\n\t\t\treturn round;\r\n\t\t}\r\n\t\tif (typeof roundingFunction === 'function') {\r\n\t\t\tround = roundingFunction;\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// This function allows you to set a threshold for relative time strings\r\n\tfunction getSetRelativeTimeThreshold(threshold, limit) {\r\n\t\tif (thresholds[threshold] === undefined) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (limit === undefined) {\r\n\t\t\treturn thresholds[threshold];\r\n\t\t}\r\n\t\tthresholds[threshold] = limit;\r\n\t\tif (threshold === 's') {\r\n\t\t\tthresholds.ss = limit - 1;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tfunction humanize(argWithSuffix, argThresholds) {\r\n\t\tif (!this.isValid()) {\r\n\t\t\treturn this.localeData().invalidDate();\r\n\t\t}\r\n\r\n\t\tvar withSuffix = false,\r\n\t\t\tth = thresholds,\r\n\t\t\tlocale,\r\n\t\t\toutput;\r\n\r\n\t\tif (typeof argWithSuffix === 'object') {\r\n\t\t\targThresholds = argWithSuffix;\r\n\t\t\targWithSuffix = false;\r\n\t\t}\r\n\t\tif (typeof argWithSuffix === 'boolean') {\r\n\t\t\twithSuffix = argWithSuffix;\r\n\t\t}\r\n\t\tif (typeof argThresholds === 'object') {\r\n\t\t\tth = Object.assign({}, thresholds, argThresholds);\r\n\t\t\tif (argThresholds.s != null && argThresholds.ss == null) {\r\n\t\t\t\tth.ss = argThresholds.s - 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlocale = this.localeData();\r\n\t\toutput = relativeTime$1(this, !withSuffix, th, locale);\r\n\r\n\t\tif (withSuffix) {\r\n\t\t\toutput = locale.pastFuture(+this, output);\r\n\t\t}\r\n\r\n\t\treturn locale.postformat(output);\r\n\t}\r\n\r\n\tvar abs$1 = Math.abs;\r\n\r\n\tfunction sign(x) {\r\n\t\treturn (x > 0) - (x < 0) || +x;\r\n\t}\r\n\r\n\tfunction toISOString$1() {\r\n\t\t// for ISO strings we do not use the normal bubbling rules:\r\n\t\t// * milliseconds bubble up until they become hours\r\n\t\t// * days do not bubble at all\r\n\t\t// * months bubble up until they become years\r\n\t\t// This is because there is no context-free conversion between hours and days\r\n\t\t// (think of clock changes)\r\n\t\t// and also not between days and months (28-31 days per month)\r\n\t\tif (!this.isValid()) {\r\n\t\t\treturn this.localeData().invalidDate();\r\n\t\t}\r\n\r\n\t\tvar seconds = abs$1(this._milliseconds) / 1000,\r\n\t\t\tdays = abs$1(this._days),\r\n\t\t\tmonths = abs$1(this._months),\r\n\t\t\tminutes,\r\n\t\t\thours,\r\n\t\t\tyears,\r\n\t\t\ts,\r\n\t\t\ttotal = this.asSeconds(),\r\n\t\t\ttotalSign,\r\n\t\t\tymSign,\r\n\t\t\tdaysSign,\r\n\t\t\thmsSign;\r\n\r\n\t\tif (!total) {\r\n\t\t\t// this is the same as C#'s (Noda) and python (isodate)...\r\n\t\t\t// but not other JS (goog.date)\r\n\t\t\treturn 'P0D';\r\n\t\t}\r\n\r\n\t\t// 3600 seconds -> 60 minutes -> 1 hour\r\n\t\tminutes = absFloor(seconds / 60);\r\n\t\thours = absFloor(minutes / 60);\r\n\t\tseconds %= 60;\r\n\t\tminutes %= 60;\r\n\r\n\t\t// 12 months -> 1 year\r\n\t\tyears = absFloor(months / 12);\r\n\t\tmonths %= 12;\r\n\r\n\t\t// inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\r\n\t\ts = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\r\n\r\n\t\ttotalSign = total < 0 ? '-' : '';\r\n\t\tymSign = sign(this._months) !== sign(total) ? '-' : '';\r\n\t\tdaysSign = sign(this._days) !== sign(total) ? '-' : '';\r\n\t\thmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\r\n\r\n\t\treturn (\r\n\t\t\ttotalSign +\r\n\t\t\t'P' +\r\n\t\t\t(years ? ymSign + years + 'Y' : '') +\r\n\t\t\t(months ? ymSign + months + 'M' : '') +\r\n\t\t\t(days ? daysSign + days + 'D' : '') +\r\n\t\t\t(hours || minutes || seconds ? 'T' : '') +\r\n\t\t\t(hours ? hmsSign + hours + 'H' : '') +\r\n\t\t\t(minutes ? hmsSign + minutes + 'M' : '') +\r\n\t\t\t(seconds ? hmsSign + s + 'S' : '')\r\n\t\t);\r\n\t}\r\n\r\n\tvar proto$2 = Duration.prototype;\r\n\r\n\tproto$2.isValid = isValid$1;\r\n\tproto$2.abs = abs;\r\n\tproto$2.add = add$1;\r\n\tproto$2.subtract = subtract$1;\r\n\tproto$2.as = as;\r\n\tproto$2.asMilliseconds = asMilliseconds;\r\n\tproto$2.asSeconds = asSeconds;\r\n\tproto$2.asMinutes = asMinutes;\r\n\tproto$2.asHours = asHours;\r\n\tproto$2.asDays = asDays;\r\n\tproto$2.asWeeks = asWeeks;\r\n\tproto$2.asMonths = asMonths;\r\n\tproto$2.asQuarters = asQuarters;\r\n\tproto$2.asYears = asYears;\r\n\tproto$2.valueOf = valueOf$1;\r\n\tproto$2._bubble = bubble;\r\n\tproto$2.clone = clone$1;\r\n\tproto$2.get = get$2;\r\n\tproto$2.milliseconds = milliseconds;\r\n\tproto$2.seconds = seconds;\r\n\tproto$2.minutes = minutes;\r\n\tproto$2.hours = hours;\r\n\tproto$2.days = days;\r\n\tproto$2.weeks = weeks;\r\n\tproto$2.months = months;\r\n\tproto$2.years = years;\r\n\tproto$2.humanize = humanize;\r\n\tproto$2.toISOString = toISOString$1;\r\n\tproto$2.toString = toISOString$1;\r\n\tproto$2.toJSON = toISOString$1;\r\n\tproto$2.locale = locale;\r\n\tproto$2.localeData = localeData;\r\n\r\n\tproto$2.toIsoString = deprecate(\r\n\t\t'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\r\n\t\ttoISOString$1\r\n\t);\r\n\tproto$2.lang = lang;\r\n\r\n\t// FORMATTING\r\n\r\n\taddFormatToken('X', 0, 0, 'unix');\r\n\taddFormatToken('x', 0, 0, 'valueOf');\r\n\r\n\t// PARSING\r\n\r\n\taddRegexToken('x', matchSigned);\r\n\taddRegexToken('X', matchTimestamp);\r\n\taddParseToken('X', function (input, array, config) {\r\n\t\tconfig._d = new Date(parseFloat(input) * 1000);\r\n\t});\r\n\taddParseToken('x', function (input, array, config) {\r\n\t\tconfig._d = new Date(toInt(input));\r\n\t});\r\n\r\n\t//! moment.js\r\n\r\n\thooks.version = '2.29.1';\r\n\r\n\tsetHookCallback(createLocal);\r\n\r\n\thooks.fn = proto;\r\n\thooks.min = min;\r\n\thooks.max = max;\r\n\thooks.now = now;\r\n\thooks.utc = createUTC;\r\n\thooks.unix = createUnix;\r\n\thooks.months = listMonths;\r\n\thooks.isDate = isDate;\r\n\thooks.locale = getSetGlobalLocale;\r\n\thooks.invalid = createInvalid;\r\n\thooks.duration = createDuration;\r\n\thooks.isMoment = isMoment;\r\n\thooks.weekdays = listWeekdays;\r\n\thooks.parseZone = createInZone;\r\n\thooks.localeData = getLocale;\r\n\thooks.isDuration = isDuration;\r\n\thooks.monthsShort = listMonthsShort;\r\n\thooks.weekdaysMin = listWeekdaysMin;\r\n\thooks.defineLocale = defineLocale;\r\n\thooks.updateLocale = updateLocale;\r\n\thooks.locales = listLocales;\r\n\thooks.weekdaysShort = listWeekdaysShort;\r\n\thooks.normalizeUnits = normalizeUnits;\r\n\thooks.relativeTimeRounding = getSetRelativeTimeRounding;\r\n\thooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\r\n\thooks.calendarFormat = getCalendarFormat;\r\n\thooks.prototype = proto;\r\n\r\n\t// currently HTML5 input type only supports 24-hour formats\r\n\thooks.HTML5_FMT = {\r\n\t\tDATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \r\n\t\tDATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \r\n\t\tDATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \r\n\t\tDATE: 'YYYY-MM-DD', // \r\n\t\tTIME: 'HH:mm', // \r\n\t\tTIME_SECONDS: 'HH:mm:ss', // \r\n\t\tTIME_MS: 'HH:mm:ss.SSS', // \r\n\t\tWEEK: 'GGGG-[W]WW', // \r\n\t\tMONTH: 'YYYY-MM', // \r\n\t};\r\n\r\n\treturn hooks;\r\n\r\n})));\r\n"]}